mirror of
https://github.com/Redocly/redoc.git
synced 2024-11-24 17:43:45 +03:00
1 line
6.4 MiB
1 line
6.4 MiB
{"version":3,"sources":["browser-update.js","zone.min.js","Reflect.ts","polyfill.min.js","../jspm_packages/npm/scrollparent@0.1.0/scrollparent.js","../jspm_packages/npm/scrollparent@0.1.0.js","../.tmp/lib/components/ApiInfo/api-info.js","../.tmp/lib/components/ApiLogo/api-logo.js","../.tmp/lib/components/ParamsList/params-list.js","../.tmp/lib/components/RequestSamples/request-samples.js","../.tmp/lib/components/Method/method.js","../.tmp/lib/components/MethodsList/methods-list.js","../.tmp/lib/common/components/StickySidebar/sticky-sidebar.js","../.tmp/lib/components/Redoc/redoc.js","../.tmp/lib/components/JsonSchema/json-schema-lazy.js","../.tmp/lib/common/components/Zippy/zippy.js","../.tmp/lib/components/ResponsesList/responses-list.js","../.tmp/lib/common/components/Tabs/tabs.js","../.tmp/lib/utils/helpers.js","../.tmp/lib/components/ResponsesSamples/responses-samples.js","../jspm_packages/npm/json-schema-instantiator@0.3.0/src/instantiator.js","../jspm_packages/npm/json-schema-instantiator@0.3.0/index.js","../jspm_packages/npm/json-schema-instantiator@0.3.0.js","../.tmp/lib/utils/JsonFormatterPipe.js","../.tmp/lib/components/SchemaSample/schema-sample.js","../jspm_packages/npm/core-js@1.2.6/library/modules/core.is-iterable.js","../jspm_packages/npm/core-js@1.2.6/library/fn/is-iterable.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/is-iterable.js","../jspm_packages/npm/babel-runtime@5.8.34/helpers/sliced-to-array.js","../.tmp/lib/events.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/angular_entrypoint.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/dom/events/key_events.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/dom/events/hammer_common.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/dom/events/hammer_gestures.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/browser/generic_browser_adapter.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/browser/browser_adapter.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/browser/testability.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/profile/wtf_init.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/dom/events/dom_events.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/dom/debug/by.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/animate/css_animation_options.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/animate/animation.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/animate/css_animation_builder.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/facade/math.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/animate/browser_details.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/animate/animation_builder.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/dom/shared_styles_host.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/dom/events/event_manager.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/dom/dom_tokens.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/dom/util.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/dom/dom_renderer.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/debug/debug_renderer.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/dom/debug/ng_probe.js","../jspm_packages/npm/angular2@2.0.0-beta.12/platform/common_dom.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/browser/title.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/facade/browser.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/browser/tools/common_tools.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/browser/tools/tools.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/browser_common.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/change_definition_factory.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/transform/template_compiler/change_detector_codegen.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/change_detector_compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/shadow_css.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/style_compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/view_compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/source_module.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/proto_view_compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/template_ast.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/template_parser.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/style_url_resolver.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/html_ast.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/html_lexer.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/parse_util.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/html_parser.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/template_preparser.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/template_normalizer.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/selector.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/directive_metadata.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/directive_lifecycle_reflector.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/interfaces.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/runtime_metadata.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/util.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/template_compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/runtime_compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/dom/dom_adapter.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/html_tags.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/schema/element_schema_registry.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/schema/dom_element_schema_registry.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/url_resolver.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.12/compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/compiler/xhr.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/platform/browser/xhr_impl.js","../jspm_packages/npm/angular2@2.0.0-beta.12/platform/browser.js","../.tmp/lib/options.js","../.tmp/lib/components/SideMenu/side-menu.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.array.from.js","../jspm_packages/npm/core-js@1.2.6/library/fn/array/from.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/array/from.js","../jspm_packages/npm/babel-runtime@5.8.34/helpers/to-consumable-array.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.same-value.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.species-constructor.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.invoke.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.html.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.dom-create.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.task.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.microtask.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iter-detect.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.promise.js","../jspm_packages/npm/core-js@1.2.6/library/fn/promise.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/promise.js","../jspm_packages/npm/core-js@1.2.6/library/modules/core.get-iterator.js","../jspm_packages/npm/core-js@1.2.6/library/fn/get-iterator.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/get-iterator.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.map.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es7.map.to-json.js","../jspm_packages/npm/core-js@1.2.6/library/fn/map.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/map.js","../jspm_packages/npm/z-schema@3.16.1/src/Polyfills.js","../jspm_packages/npm/z-schema@3.16.1/src/SchemaCache.js","../jspm_packages/npm/z-schema@3.16.1/src/SchemaCompilation.js","../jspm_packages/npm/validator@4.5.0/validator.js","../jspm_packages/npm/validator@4.5.0.js","../jspm_packages/npm/z-schema@3.16.1/src/FormatValidators.js","../jspm_packages/npm/z-schema@3.16.1/src/JsonValidation.js","../jspm_packages/npm/lodash._baseget@3.7.2/index.js","../jspm_packages/npm/lodash._baseget@3.7.2.js","../jspm_packages/npm/lodash.isarray@3.0.4/index.js","../jspm_packages/npm/lodash.isarray@3.0.4.js","../jspm_packages/npm/lodash._topath@3.8.1/index.js","../jspm_packages/npm/lodash._topath@3.8.1.js","../jspm_packages/npm/lodash.get@3.7.0/index.js","../jspm_packages/npm/lodash.get@3.7.0.js","../jspm_packages/npm/z-schema@3.16.1/src/Errors.js","../jspm_packages/npm/z-schema@3.16.1/src/Report.js","../jspm_packages/npm/z-schema@3.16.1/src/SchemaValidation.js","../jspm_packages/npm/z-schema@3.16.1/src/Utils.js","../jspm_packages/npm/z-schema@3.16.1/src/schemas/schema.json","../jspm_packages/npm/z-schema@3.16.1/src/schemas/hyper-schema.json","../jspm_packages/npm/z-schema@3.16.1/src/ZSchema.js","../jspm_packages/npm/z-schema@3.16.1.js","../jspm_packages/npm/swagger-schema-official@2.0.0-bab6bed/schema.json","../jspm_packages/npm/swagger-parser@3.4.0/lib/validate-schema.js","../jspm_packages/npm/swagger-methods@1.0.0/lib/index.js","../jspm_packages/npm/swagger-methods@1.0.0.js","../jspm_packages/npm/swagger-parser@3.4.0/lib/validate-spec.js","../jspm_packages/npm/swagger-parser@3.4.0/lib/util.js","../jspm_packages/npm/swagger-parser@3.4.0/lib/options.js","../jspm_packages/npm/swagger-parser@3.4.0/lib/promise.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/options.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/refs.js","../jspm_packages/github/jspm/nodelibs-fs@0.1.2/index.js","../jspm_packages/github/jspm/nodelibs-fs@0.1.2.js","../jspm_packages/npm/readable-stream@1.1.13/readable.js","../jspm_packages/npm/readable-stream@1.1.13/writable.js","../jspm_packages/npm/readable-stream@1.1.13/duplex.js","../jspm_packages/npm/readable-stream@1.1.13/transform.js","../jspm_packages/npm/isarray@0.0.1/index.js","../jspm_packages/npm/isarray@0.0.1.js","../jspm_packages/npm/events@1.0.2/events.js","../jspm_packages/npm/events@1.0.2.js","../jspm_packages/github/jspm/nodelibs-events@0.1.1/index.js","../jspm_packages/github/jspm/nodelibs-events@0.1.1.js","../jspm_packages/npm/string_decoder@0.10.31/index.js","../jspm_packages/npm/string_decoder@0.10.31.js","../jspm_packages/npm/readable-stream@1.1.13/lib/_stream_readable.js","../jspm_packages/npm/readable-stream@1.1.13/lib/_stream_writable.js","../jspm_packages/npm/readable-stream@1.1.13/lib/_stream_duplex.js","../jspm_packages/npm/readable-stream@1.1.13/lib/_stream_transform.js","../jspm_packages/npm/core-util-is@1.0.2/lib/util.js","../jspm_packages/npm/core-util-is@1.0.2.js","../jspm_packages/npm/readable-stream@1.1.13/lib/_stream_passthrough.js","../jspm_packages/npm/readable-stream@1.1.13/passthrough.js","../jspm_packages/npm/stream-browserify@1.0.0/index.js","../jspm_packages/npm/stream-browserify@1.0.0.js","../jspm_packages/github/jspm/nodelibs-stream@0.1.0/index.js","../jspm_packages/github/jspm/nodelibs-stream@0.1.0.js","../jspm_packages/github/jspm/nodelibs-http@1.7.1/lib/response.js","../jspm_packages/npm/Base64@0.2.1/base64.js","../jspm_packages/npm/Base64@0.2.1.js","../jspm_packages/github/jspm/nodelibs-http@1.7.1/lib/request.js","../jspm_packages/github/jspm/nodelibs-http@1.7.1/index.js","../jspm_packages/github/jspm/nodelibs-http@1.7.1.js","../jspm_packages/npm/https-browserify@0.0.0/index.js","../jspm_packages/npm/https-browserify@0.0.0.js","../jspm_packages/github/jspm/nodelibs-https@0.1.0/index.js","../jspm_packages/github/jspm/nodelibs-https@0.1.0.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/download.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/parse.js","../jspm_packages/npm/es6-promise@3.1.2/dist/es6-promise.js","../jspm_packages/npm/es6-promise@3.1.2.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/promise.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/read.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/resolve.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/bundle.js","../jspm_packages/npm/call-me-maybe@1.0.1/index.js","../jspm_packages/npm/call-me-maybe@1.0.1.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/mark.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/loader.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/dumper.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/schema.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/str.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/seq.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/map.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/schema/failsafe.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/null.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/bool.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/int.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/common.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/float.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/schema/json.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/schema/core.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/timestamp.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/merge.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/binary.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/omap.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/pairs.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/set.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/schema/default_safe.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/js/undefined.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/js/regexp.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/type/js/function.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/schema/default_full.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml/exception.js","../jspm_packages/npm/js-yaml@3.5.2/lib/js-yaml.js","../jspm_packages/npm/js-yaml@3.5.2/index.js","../jspm_packages/npm/js-yaml@3.5.2.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/yaml.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/index.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/ref.js","../jspm_packages/npm/base64-js@0.0.8/lib/b64.js","../jspm_packages/npm/base64-js@0.0.8.js","../jspm_packages/npm/ieee754@1.1.6/index.js","../jspm_packages/npm/ieee754@1.1.6.js","../jspm_packages/npm/isarray@1.0.0/index.js","../jspm_packages/npm/isarray@1.0.0.js","../jspm_packages/npm/buffer@3.6.0/index.js","../jspm_packages/npm/buffer@3.6.0.js","../jspm_packages/github/jspm/nodelibs-buffer@0.1.0/index.js","../jspm_packages/github/jspm/nodelibs-buffer@0.1.0.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/pointer.js","../jspm_packages/npm/ms@0.7.1/index.js","../jspm_packages/npm/ms@0.7.1.js","../jspm_packages/npm/debug@2.2.0/debug.js","../jspm_packages/npm/debug@2.2.0/browser.js","../jspm_packages/npm/debug@2.2.0.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/path.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/util.js","../jspm_packages/npm/util@0.10.3/support/isBufferBrowser.js","../jspm_packages/npm/inherits@2.0.1/inherits_browser.js","../jspm_packages/npm/inherits@2.0.1.js","../jspm_packages/npm/util@0.10.3/util.js","../jspm_packages/npm/util@0.10.3.js","../jspm_packages/github/jspm/nodelibs-util@0.1.0/index.js","../jspm_packages/github/jspm/nodelibs-util@0.1.0.js","../jspm_packages/npm/ono@2.0.1/lib/index.js","../jspm_packages/npm/ono@2.0.1.js","../jspm_packages/npm/process@0.11.2/browser.js","../jspm_packages/npm/process@0.11.2.js","../jspm_packages/github/jspm/nodelibs-process@0.1.2/index.js","../jspm_packages/github/jspm/nodelibs-process@0.1.2.js","../jspm_packages/npm/punycode@1.3.2/punycode.js","../jspm_packages/npm/punycode@1.3.2.js","../jspm_packages/npm/querystring@0.2.0/decode.js","../jspm_packages/npm/querystring@0.2.0/encode.js","../jspm_packages/npm/querystring@0.2.0/index.js","../jspm_packages/npm/querystring@0.2.0.js","../jspm_packages/npm/url@0.10.3/url.js","../jspm_packages/npm/url@0.10.3.js","../jspm_packages/github/jspm/nodelibs-url@0.1.0/index.js","../jspm_packages/github/jspm/nodelibs-url@0.1.0.js","../jspm_packages/npm/json-schema-ref-parser@2.2.0/lib/dereference.js","../jspm_packages/npm/swagger-parser@3.4.0/lib/index.js","../jspm_packages/npm/swagger-parser@3.4.0.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.object.to-string.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.string-at.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.string.iterator.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.add-to-unscopables.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.array.iterator.js","../jspm_packages/npm/core-js@1.2.6/library/modules/web.dom.iterable.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.library.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iter-create.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iter-define.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iter-step.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.set-species.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.collection-strong.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.property-desc.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.hide.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.redefine.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.redefine-all.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.strict-new.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.has.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.set-to-string-tag.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.descriptors.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.collection.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.set.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iter-call.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.is-array-iter.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.to-integer.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.to-length.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iterators.js","../jspm_packages/npm/core-js@1.2.6/library/modules/core.get-iterator-method.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.for-of.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.shared.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.uid.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.wks.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.classof.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.collection-to-json.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es7.set.to-json.js","../jspm_packages/npm/core-js@1.2.6/library/fn/set.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/set.js","../.tmp/lib/utils/swagger-defs.js","../.tmp/lib/utils/SchemaManager.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.object.keys.js","../jspm_packages/npm/core-js@1.2.6/library/fn/object/keys.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/object/keys.js","../jspm_packages/npm/prismjs@1.3.0/prism.js","../jspm_packages/npm/prismjs@1.3.0.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-actionscript.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-c.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-cpp.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-csharp.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-php.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-coffeescript.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-go.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-haskell.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-java.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-lua.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-matlab.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-perl.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-python.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-r.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-ruby.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-bash.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-swift.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-objectivec.js","../jspm_packages/npm/prismjs@1.3.0/components/prism-scala.js","../jspm_packages/npm/marked@0.3.5/lib/marked.js","../jspm_packages/npm/marked@0.3.5.js","../.tmp/lib/utils/pipes.js","../.tmp/lib/components/base.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/pipes/async_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/pipes/uppercase_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/pipes/lowercase_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/pipes/json_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/pipes/slice_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/pipes/date_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/facade/intl.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/pipes/number_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/pipes/replace_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/pipes/i18n_plural_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/pipes/invalid_pipe_argument_exception.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/pipes/i18n_select_pipe.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/pipes/common_pipes.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/pipes.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/ng_control_name.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/ng_form_control.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/ng_model.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/ng_control_group.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/ng_form_model.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/control_container.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/normalize_validator.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/shared.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/ng_form.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/default_value_accessor.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/checkbox_value_accessor.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/number_value_accessor.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/ng_control_status.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/select_control_value_accessor.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/validators.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/validators.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/model.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/form_builder.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/control_value_accessor.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/abstract_control_directive.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/ng_control.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms/directives/radio_control_value_accessor.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/forms.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/directives/observable_list_diff.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/directives/ng_class.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/directives/ng_for.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/directives/ng_if.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/directives/ng_style.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/util.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/prod_mode.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/facade/facade.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/application_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/zone.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/render.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/debug/debug_node.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/platform_directives_and_pipes.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/console.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/zone/ng_zone_impl.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/zone/ng_zone.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/testability/testability.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/platform_common_providers.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/resolved_metadata_cache.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/view_resolver.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/directive_resolver.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/metadata/view.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/metadata.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/pipe_resolver.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/compiler.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/metadata/di.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/element_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/view_container_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/template_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/metadata/directives.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/differs/iterable_differs.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/differs/default_iterable_differ.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/differs/keyvalue_differs.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/differs/default_keyvalue_differ.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/parser/lexer.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/parser/parser.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/interfaces.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/codegen_name_util.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/codegen_logic_util.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/codegen_facade.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/parser/ast.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/event_binding.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/coalesce.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/proto_change_detector.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/change_detection_jit_generator.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/jit_proto_change_detector.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/exceptions.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/parser/locals.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/abstract_change_detector.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/proto_record.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/dynamic_change_detector.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/change_detector_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/pipe_lifecycle_reflector.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/binding_record.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/constants.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/directive_record.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/change_detection_util.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/change_detection.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/facade/promise.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/subject/SubjectSubscription.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/util/throwError.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/util/ObjectUnsubscribedError.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/Subject.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/observable/PromiseObservable.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/operator/toPromise.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/symbol/observable.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/util/isArray.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/util/isObject.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/util/isFunction.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/util/tryCatch.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/util/errorObject.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/Subscription.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/Observer.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/Subscriber.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/util/root.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/symbol/rxSubscriber.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/util/toSubscriber.js","../jspm_packages/npm/rxjs@5.0.0-beta.3/Observable.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/facade/async.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/query_list.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/pipes/pipe_provider.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/element.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/view_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/change_detection/pipes.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/pipes/pipes.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/render/util.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/view.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/render/api.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/profile/wtf_impl.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/profile/profile.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/util/decorators.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/di/decorators.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/di/injector.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/di/metadata.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/di/provider.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/di/forward_ref.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/di/key.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/di/exceptions.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/di/opaque_token.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/di.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/application_tokens.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/view_type.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/view_manager.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/linker/dynamic_component_loader.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/application_common_providers.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/reflection/reflector.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/facade/base_wrapped_exception.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/facade/exception_handler.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/facade/exceptions.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/reflection/reflection_capabilities.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/core/reflection/reflection.js","../jspm_packages/npm/angular2@2.0.0-beta.12/core.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/facade/lang.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/facade/collection.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/directives/ng_switch.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/directives/ng_plural.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/directives/core_directives.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/directives.js","../jspm_packages/npm/angular2@2.0.0-beta.12/src/common/common_directives.js","../jspm_packages/npm/angular2@2.0.0-beta.12/common.js","../jspm_packages/github/Robdel12/DropKick@2.1.7/lib/dropkick.js","../jspm_packages/github/Robdel12/DropKick@2.1.7.js","../.tmp/lib/common/components/DropDown/dropdown.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.to-iobject.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.object-sap.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.object.get-own-property-descriptor.js","../jspm_packages/npm/core-js@1.2.6/library/fn/object/get-own-property-descriptor.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/object/get-own-property-descriptor.js","../jspm_packages/npm/babel-runtime@5.8.34/helpers/get.js","../jspm_packages/npm/core-js@1.2.6/library/fn/object/create.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/object/create.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.is-object.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.an-object.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.set-proto.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.object.set-prototype-of.js","../jspm_packages/npm/core-js@1.2.6/library/fn/object/set-prototype-of.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/object/set-prototype-of.js","../jspm_packages/npm/babel-runtime@5.8.34/helpers/inherits.js","../jspm_packages/npm/core-js@1.2.6/library/fn/object/define-property.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/object/define-property.js","../jspm_packages/npm/babel-runtime@5.8.34/helpers/create-class.js","../jspm_packages/npm/babel-runtime@5.8.34/helpers/class-call-check.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.global.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.a-function.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.ctx.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.export.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.defined.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.to-object.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.cof.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.iobject.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.fails.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.object-assign.js","../jspm_packages/npm/core-js@1.2.6/library/modules/es6.object.assign.js","../jspm_packages/npm/core-js@1.2.6/library/modules/$.core.js","../jspm_packages/npm/core-js@1.2.6/library/fn/object/assign.js","../jspm_packages/npm/babel-runtime@5.8.34/core-js/object/assign.js","../jspm_packages/npm/foreach@2.0.5/index.js","../jspm_packages/npm/foreach@2.0.5.js","../jspm_packages/npm/json-pointer@0.3.0/index.js","../jspm_packages/npm/json-pointer@0.3.0.js","../.tmp/lib/utils/JsonPointer.js","../.tmp/lib/components/JsonSchema/json-schema.js","../.tmp/lib/components/index.js","../.tmp/lib/index.js"],"names":["Reflect","Reflect.decorate","Reflect.metadata","Reflect.metadata.decorator","Reflect.defineMetadata","Reflect.hasMetadata","Reflect.hasOwnMetadata","Reflect.getMetadata","Reflect.getOwnMetadata","Reflect.getMetadataKeys","Reflect.getOwnMetadataKeys","Reflect.deleteMetadata","Reflect.DecorateConstructor","Reflect.DecoratePropertyWithDescriptor","Reflect.DecoratePropertyWithoutDescriptor","Reflect.GetOrCreateMetadataMap","Reflect.OrdinaryHasMetadata","Reflect.OrdinaryHasOwnMetadata","Reflect.OrdinaryGetMetadata","Reflect.OrdinaryGetOwnMetadata","Reflect.OrdinaryDefineOwnMetadata","Reflect.OrdinaryMetadataKeys","Reflect.OrdinaryOwnMetadataKeys","Reflect.IsUndefined","Reflect.IsArray","Reflect.IsObject","Reflect.IsConstructor","Reflect.IsSymbol","Reflect.ToPropertyKey","Reflect.GetPrototypeOf","Reflect.CreateMapPolyfill","Reflect.CreateMapPolyfill.Map","Reflect.CreateMapPolyfill.size","Reflect.CreateMapPolyfill.has","Reflect.CreateMapPolyfill.get","Reflect.CreateMapPolyfill.set","Reflect.CreateMapPolyfill.delete","Reflect.CreateMapPolyfill.clear","Reflect.CreateMapPolyfill.forEach","Reflect.CreateMapPolyfill._find","Reflect.CreateSetPolyfill","Reflect.CreateSetPolyfill.Set","Reflect.CreateSetPolyfill.size","Reflect.CreateSetPolyfill.has","Reflect.CreateSetPolyfill.add","Reflect.CreateSetPolyfill.delete","Reflect.CreateSetPolyfill.clear","Reflect.CreateSetPolyfill.forEach","Reflect.CreateWeakMapPolyfill","Reflect.CreateWeakMapPolyfill.WeakMap","Reflect.CreateWeakMapPolyfill.has","Reflect.CreateWeakMapPolyfill.get","Reflect.CreateWeakMapPolyfill.set","Reflect.CreateWeakMapPolyfill.delete","Reflect.CreateWeakMapPolyfill.clear","Reflect.CreateWeakMapPolyfill.FillRandomBytes","Reflect.CreateWeakMapPolyfill.GenRandomBytes","Reflect.CreateWeakMapPolyfill.CreateUUID","Reflect.CreateWeakMapPolyfill.CreateUniqueKey","Reflect.CreateWeakMapPolyfill.GetOrCreateWeakMapTable","$__System","registerDynamic","$__require","exports","module","global","this","__define","define","undefined","parents","node","ps","parentNode","concat","style","prop","getComputedStyle","getPropertyValue","overflow","scroll","test","scrollParent","HTMLElement","i","length","window","Scrollparent","ApiInfo","SchemaManager","RedocComponent","BaseComponent","_BaseComponent","schemaMgr","optionsMgr","_get","Object","getPrototypeOf","_ApiInfo","prototype","call","data","componentSchema","info","specUrl","options","metadata","OptionsManager","selector","styles","template","ApiLogo","_ApiLogo","logoInfo","imgUrl","url","bgColor","backgroundColor","safePush","obj","item","push","ParamsList","_ParamsList","paramsList","getMethodParams","pointer","map","paramData","propPointer","_pointer","JsonSchema","injectPropertyData","name","paramsMap","orderParams","body","bodyParam","noParams","_Object$keys","paramsPlaces","placeHint","path","query","formData","header","params","forEach","place","res","param","directives","JsonSchemaLazy","RequestSamples","Tabs","Tab","PrismPipe","redocEvents","ViewChildren","QueryList","ChangeDetectorRef","ChangeDetectionStrategy","tabs","changeDetector","_RequestSamples","changes","subscribe","_","_this","first","subscribeForEvents","lang","samplesLanguageChanged","next","sampleLang","_this2","selectyByTitle","markForCheck","bodySchemaPtr","JsonPointer","join","samples","SchemaSample","inputs","pipes","changeDetection","OnPush","Method","_Method","apiUrl","httpMethod","baseName","methodInfo","tags","filterMainTags","findBodyParam","operationId","methodAnchor","encodeURIComponent","tag","tagsMap","getTagsMap","filter","pathParams","find","ResponsesList","ResponsesSamples","MethodsList","EncodeURIComponentPipe","_MethodsList","menuStructure","buildMenuTree","_Array$from","entries","entry","_entry","description","_entry$1","methods","method","StickySidebar","Directive","ElementRef","BrowserDomAdapter","elementRef","dom","$element","nativeElement","setStyle","cancelScrollBinding","onAndCancel","updatePosition","scrollY","scrollYOffset","$redocEl","offsetTop","stick","unstick","offsetParent","bind","unbind","pageYOffset","scrollTop","_modeLocked","Redoc","provide","enableProdMode","bootstrap","_Redoc","element","parseOptions","$scrollParent","detectScollParent","elem","addClass","redocEl","setTimeout","removeClass","providers","useValue","appRef","dispose","showLoadingAnimation","instance","load","then","debugMode","hideLoadingAnimation","bootstrapped","console","log","error","specUrlAttributeName","hasAttribute","getAttribute","init","el","elClone","parent","nextSibling","parentElement","nextElementSibling","cloneNode","innerHTML","insertBefore","SideMenu","Default","insertAfter","newNode","referenceNode","cache","Component","CORE_DIRECTIVES","DynamicComponentLoader","dcl","schema","byPointer","$ref","disableLazySchemas","loaded","loadNextToLocation","compRef","initComponent","hostView","changeDetectorRef","detectChanges","normalizePointer","location","querySelector","skipReadOnly","auto","loadCached","Zippy","EventEmitter","type","visible","empty","open","close","events","isNumeric","n","isNaN","parseFloat","isFinite","statusCodeType","_ResponsesList","responses","respCode","resp","ref","code","headers","k","respInfo","extendable","change","tab","notify","arguments","active","tabTitle","prevActive","newActive","addTab","statusCode","Error","hasExample","response","examples","_ResponsesSamples","isPrimitive","typesInstantiator","instantiatePrimitive","val","instantiate","visit","properties","property","hasOwnProperty","allOf","len","minItems","items","string","number","integer","null","boolean","object","htmlEncode","t","toString","replace","decorateWithSpan","value","className","valueToHTML","valueType","output","constructor","Array","level","arrayToHTML","objectToHTML","json","collapsed","COLLAPSE_LEVEL","hasContents","key","keys","jsonToHTML","JsonFormatter","Pipe","isBlank","_SchemaSample","base","sample","dereference","SchemaSampler","addEventListener","event","target","getElementsByClassName","classList","contains","remove","add","classof","ITERATOR","Iterators","isIterable","it","O","default","__esModule","_getIterator","_isIterable","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","done","err","isArray","TypeError","bootsrEmmiter","langChanged","__decorate","decorators","desc","d","c","r","getOwnPropertyDescriptor","decorate","defineProperty","__metadata","v","lang_1","AngularEntrypoint","CONST","String","__extends","b","__","p","create","dom_adapter_1","collection_1","event_manager_1","di_1","modifierKeys","modifierKeyGetters","alt","altKey","control","ctrlKey","meta","metaKey","shift","shiftKey","KeyEventsPlugin","_super","supports","eventName","isPresent","parseEventName","handler","parsedEvent","outsideHandler","eventCallback","StringMapWrapper","get","manager","getZone","runOutsideAngular","DOM","parts","toLowerCase","split","domEventName","StringWrapper","equals","_normalizeKey","pop","fullKey","modifierName","ListWrapper","result","set","getEventFullKey","getEventKey","modifierGetter","zone","run","keyName","Injectable","EventManagerPlugin","_eventNames","pan","panstart","panmove","panend","pancancel","panleft","panright","panup","pandown","pinch","pinchstart","pinchmove","pinchend","pinchcancel","pinchin","pinchout","press","pressup","rotate","rotatestart","rotatemove","rotateend","rotatecancel","swipe","swipeleft","swiperight","swipeup","swipedown","tap","HammerGesturesPluginCommon","hammer_common_1","exceptions_1","HammerGesturesPlugin","apply","BaseException","mc","Hammer","enable","callback","eventObj","on","off","xhr_impl_1","GenericBrowserDomAdapter","_animationPrefix","_transitionEnd","createElement","defaultDoc","getStyle","domPrefixes","transEndEventNames","WebkitTransition","MozTransition","OTransition","transition","e","getXHR","XHRImpl","getDistributedNodes","resolveAndSetHref","baseUrl","href","supportsDOMEvents","supportsNativeShadowDOM","isFunction","createShadowRoot","getAnimationPrefix","getTransitionEnd","supportsAnimation","DomAdapter","getBaseElementHref","baseElement","document","relativePath","urlParsingNode","setAttribute","pathname","charAt","generic_browser_adapter_1","_attrToPropMap","class","innerHtml","readonly","tabindex","DOM_KEY_LOCATION_NUMPAD","_keyMap","\b","\t","","\u001b","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","_chromeNumKeyPadMap","A","B","C","D","E","F","G","H","I","J","K","M","N","`","","parse","templateHtml","makeCurrent","setRootDomAdapter","hasProperty","setProperty","getProperty","invoke","methodName","args","logError","logGroup","group","logGroupEnd","groupEnd","enumerable","configurable","querySelectorAll","evt","listener","removeEventListener","dispatchEvent","createMouseEvent","eventType","createEvent","initEvent","preventDefault","returnValue","isPrevented","defaultPrevented","getInnerHTML","getOuterHTML","outerHTML","nodeName","nodeValue","content","firstChild","childNodes","childNodesAsList","createFixedSize","clearNodes","removeChild","appendChild","replaceChild","newChild","oldChild","insertAllBefore","nodes","setInnerHTML","getText","textContent","setText","getValue","setValue","getChecked","checked","setChecked","createComment","text","createTemplate","html","tagName","doc","createElementNS","ns","createTextNode","createScriptTag","attrName","attrValue","createStyleElement","css","getShadowRoot","shadowRoot","getHost","host","clone","getElementsByTagName","slice","hasClass","styleName","styleValue","removeStyle","stylename","hasStyle","attributeMap","Map","elAttrs","attributes","attrib","attribute","hasAttributeNS","getAttributeNS","setAttributeNS","removeAttribute","removeAttributeNS","templateAwareRoot","isTemplateElement","createHtmlDocument","implementation","createHTMLDocument","getBoundingClientRect","top","bottom","left","right","width","height","getTitle","title","setTitle","newTitle","elementMatches","matches","msMatchesSelector","webkitMatchesSelector","isTextNode","nodeType","Node","TEXT_NODE","isCommentNode","COMMENT_NODE","isElementNode","ELEMENT_NODE","hasShadowRoot","isShadowRoot","DocumentFragment","importIntoDoc","toImport","importNode","adoptNode","getHref","keyIdentifier","startsWith","fromCharCode","parseInt","substring","getGlobalEventTarget","getHistory","history","getLocation","getBaseHref","resetBaseElement","getUserAgent","navigator","userAgent","setData","getData","setGlobalVar","setValueOnPath","requestAnimationFrame","cancelAnimationFrame","id","performanceNow","performance","now","DateWrapper","toMillis","core_1","PublicTestability","testability","_testability","isStable","whenStable","findBindings","using","provider","exactMatch","findProviders","BrowserGetTestability","setTestabilityGetter","addToWindow","registry","getAngularTestability","findInAncestors","findTestabilityInTree","getAllAngularTestabilities","testabilities","getAllTestabilities","getAllAngularRootElements","getAllRootElements","whenAllStable","count","didWork","decrement","didWork_","frameworkStabilizers","createGrowableSize","getTestability","wtfInit","DomEventsPlugin","addGlobalEventListener","By","all","debugElement","directive","providerTokens","indexOf","CssAnimationOptions","classesToAdd","classesToRemove","animationClasses","math_1","util_1","Animation","browserDetails","callbacks","eventClearFunctions","completed","_stringPrefix","startTime","setup","wait","timestamp","start","delay","computedDelay","duration","computedDuration","raf","fromStyles","applyStyles","transitionDuration","transitionDelay","addClasses","removeClasses","toStyles","computedStyles","Math","max","parseDurationString","addEvents","dashCaseKey","camelCaseToDashCase","classes","totalTime","handleAnimationEvent","handleAnimationCompleted","elapsedTime","round","elapsedTimeIncludesDelay","stopPropagation","fn","onComplete","maxValue","NumberWrapper","stripLetters","ms","floor","str","replaceAll","RegExpWrapper","css_animation_options_1","animation_1","CssAnimationBuilder","addAnimationClass","setDuration","setDelay","setStyles","from","to","setFromStyles","setToStyles","NaN","BrowserDetails","doesElapsedTimeIncludesDelay","div","elapsed","frames","queue","RafQueue","cancel","_raf","currentFrameId","_nextFrame","css_animation_builder_1","browser_details_1","AnimationBuilder","__param","paramIndex","decorator","dom_tokens_1","SharedStylesHost","_styles","_stylesSet","Set","addStyles","additions","SetWrapper","has","onStylesAdded","getAllStyles","DomSharedStylesHost","_hostNodes","head","_addStylesToHost","addHost","hostNode","removeHost","Inject","DOCUMENT","ng_zone_1","EVENT_MANAGER_PLUGINS","CONST_EXPR","OpaqueToken","EventManager","plugins","_zone","_plugins","reversed","plugin","_findPluginFor","NgZone","input","replaceAllMapped","CAMEL_CASE_REGEXP","m","dashCaseToCamelCase","DASH_CASE_REGEXP","toUpperCase","moveNodesAfterSibling","sibling","appendNodes","decoratePreventDefault","eventHandler","allowDefaultBehavior","_shimContentAttribute","componentShortId","CONTENT_ATTR","COMPONENT_REGEX","_shimHostAttribute","HOST_ATTR","_flattenStyles","compId","splitNamespace","match","firstMatch","NS_PREFIX_RE","animation_builder_1","shared_styles_host_1","metadata_1","NAMESPACE_URIS","xlink","svg","TEMPLATE_COMMENT_TEXT","TEMPLATE_BINDINGS_EXP","DomRootRenderer","eventManager","sharedStylesHost","animate","_registeredComponents","renderComponent","componentProto","renderer","DomRenderer","DomRootRenderer_","_document","_eventManager","_rootRenderer","encapsulation","ViewEncapsulation","Native","Emulated","_contentAttr","_hostAttr","selectRootElement","nsAndName","createViewRoot","hostElement","nodesParent","createTemplateAnchor","comment","createText","projectNodes","attachViewAfter","viewRootNodes","animateNodeEnter","detachView","animateNodeLeave","destroyView","viewAllNodes","listen","renderElement","listenGlobal","setElementProperty","propertyName","propertyValue","setElementAttribute","attributeName","attributeValue","attrNs","setBindingDebugInfo","dashCasedPropertyName","existingBindings","parsedBindings","Json","stringify","setElementDebugInfo","setElementClass","isAdd","setElementStyle","invokeElementMethod","renderNode","COMPONENT_VARIABLE","debug_node_1","DebugDomRootRenderer","_delegate","DebugDomRenderer","componentType","nativeEl","debugEl","DebugElement","indexDebugNode","getDebugNode","DebugNode","debugParent","addChild","debugNode","debugViewRootNodes","rootNode","insertChildrenAfter","removeDebugNodeFromIndex","listeners","EventListener","setDebugInfo","inspectNativeElement","_createConditionalRootRenderer","rootRenderer","assertionsEnabled","_createRootRenderer","INSPECT_GLOBAL_NAME","CORE_TOKENS_GLOBAL_NAME","CORE_TOKENS","debug_renderer_1","dom_renderer_1","ApplicationRef","ELEMENT_PROBE_PROVIDERS","Provider","RootRenderer","useFactory","deps","ELEMENT_PROBE_PROVIDERS_PROD_MODE","__export","dom_events_1","Title","win","gc","Event","MouseEvent","KeyboardEvent","EventTarget","History","Location","application_ref_1","browser_1","AngularTools","profiler","AngularProfiler","injector","timeChangeDetection","config","record","profileName","isProfilerAvailable","profile","numTicks","tick","end","profileEnd","msPerTick","toFixed","enableDebugTools","context","ng","common_tools_1","disableDebugTools","_exceptionHandler","ExceptionHandler","IS_DART","initDomAdapter","browser_adapter_1","wtf_init_1","testability_2","common_1","testability_1","key_events_1","hammer_gestures_1","shared_styles_host_2","common_dom_1","dom_tokens_2","title_1","common_dom_2","browser_adapter_2","tools_1","BROWSER_PROVIDERS","PLATFORM_COMMON_PROVIDERS","PLATFORM_INITIALIZER","multi","BROWSER_APP_COMMON_PROVIDERS","APPLICATION_COMMON_PROVIDERS","FORM_PROVIDERS","PLATFORM_PIPES","COMMON_PIPES","PLATFORM_DIRECTIVES","COMMON_DIRECTIVES","useClass","useExisting","Testability","createChangeDetectorDefinitions","componentStrategy","genConfig","parsedTemplate","pvVisitors","visitor","ProtoViewVisitor","template_ast_1","templateVisitAll","createChangeDefinitions","pvVariableNames","_collectNestedProtoViewsVariableNames","pvVisitor","viewIndex","change_detection_1","ChangeDetectorDefinition","strategy","bindingRecords","eventRecords","directiveRecords","nestedPvVariableNames","pv","parentVariableNames","variableNames","reflection_1","interfaces_1","allVisitors","nodeCount","boundElementCount","visitEmbeddedTemplate","ast","outputs","childVisitor","vars","children","visitElement","isBound","exportAsVars","visitNgContent","visitVariable","visitEvent","directiveRecord","bindingRecord","BindingRecord","createForHostEvent","fullName","createForEvent","visitElementProperty","boundElementIndex","dirIndex","directiveIndex","PropertyBindingType","Property","createForHostProperty","createForElementProperty","Attribute","createForHostAttribute","createForElementAttribute","Class","createForHostClass","createForElementClass","Style","createForHostStyle","unit","createForElementStyle","visitAttr","visitBoundText","nodeIndex","createForTextNode","visitText","visitDirective","directiveIndexAsNumber","DirectiveIndex","directiveMetadata","outputsArray","dirProperty","DirectiveRecord","callAfterContentInit","lifecycleHooks","LifecycleHooks","AfterContentInit","callAfterContentChecked","AfterContentChecked","callAfterViewInit","AfterViewInit","callAfterViewChecked","AfterViewChecked","callOnChanges","OnChanges","callDoCheck","DoCheck","callOnInit","OnInit","callOnDestroy","OnDestroy","createDirectiveOnChanges","createDirectiveOnInit","createDirectiveDoCheck","hostProperties","hostEvents","visitDirectiveProperty","setter","reflector","directiveName","createForDirective","Codegen","moduleAlias","generate","typeName","changeDetectorTypeName","def","source_module_1","change_detection_jit_generator_1","abstract_change_detector_1","change_detection_util_1","constants_1","change_definition_factory_1","change_detector_codegen_1","ABSTRACT_CHANGE_DETECTOR","UTIL","CHANGE_DETECTOR_STATE","CHANGE_DETECTION_JIT_IMPORTS","AbstractChangeDetector","ChangeDetectionUtil","ChangeDetectorState","ABSTRACT_CHANGE_DETECTOR_MODULE","moduleRef","MODULE_SUFFIX","UTIL_MODULE","PREGEN_PROTO_CHANGE_DETECTOR_MODULE","CONSTANTS_MODULE","ChangeDetectionCompiler","_genConfig","compileComponentRuntime","changeDetectorDefinitions","definition","_createChangeDetectorFactory","proto","DynamicProtoChangeDetector","compileComponentCodeGen","factories","index","sourceParts","codegen","sourcePart","typeRef","isHost","moduleUrl","ChangeDetectorJITGenerator","generateSource","SourceExpressions","ChangeDetectorGenConfig","stripComments","_commentRe","processRules","ruleCallback","inputWithEscapedBlocks","escapeBlocks","nextBlockIndex","escapedString","_ruleRe","suffix","contentPrefix","BLOCK_PLACEHOLDER","blocks","rule","CssRule","inputParts","_curlyRe","resultParts","escapedBlocks","bracketCount","currentBlockParts","partIndex","part","CLOSE_CURLY","OPEN_CURLY","StringWithEscapedBlocks","ShadowCss","strictStyling","shimCssText","cssText","hostSelector","_insertDirectives","_scopeCssText","_insertPolyfillDirectivesInCssText","_insertPolyfillRulesInCssText","_cssContentNextSelectorRe","_cssContentRuleRe","scopeSelector","unscoped","_extractUnscopedRulesFromCssText","_insertPolyfillHostInCssText","_convertColonHost","_convertColonHostContext","_convertShadowDOMSelectors","_scopeSelectors","trim","matcher","_cssContentUnscopedRuleRe","RegExpMatcherWrapper","_convertColonRule","_cssColonHostRe","_colonHostPartReplacer","_cssColonHostContextRe","_colonHostContextPartReplacer","regExp","partReplacer","_polyfillHostNoCombinator","_polyfillHost","_shadowDOMSelectorsRe","_scopeSelector","strict","deepParts","_shadowDeepSelectors","shallowPart","_selectorNeedsScoping","_applyStrictSelectorScope","_applySelectorScope","re","_makeScopeMatcher","lre","rre","_selectorReSuffix","_applySimpleSelectorScope","_polyfillHostRe","replaceBy","isRe","splits","scoped","sep","_colonHostContextRe","_polyfillHostContext","_colonHostRe","_parenSuffix","view_1","xhr_1","async_1","shadow_css_1","url_resolver_1","style_url_resolver_1","StyleCompiler","_xhr","_urlResolver","_styleCache","_shadowCss","styleAbsUrls","styleUrls","_loadStyles","shim","_styleCodeGen","compileStylesheetCodeGen","stylesheetUrl","styleWithImports","extractStyleUrls","_styleModule","clearCache","clear","plainStyles","absUrls","encapsulate","promises","absUrl","cacheKey","PromiseWrapper","nestedStyles","plainStyle","_shimIfNeeded","arrayPrefix","styleExpressions","escapeSingleQuoteString","_createModuleUrl","expressionSource","SourceExpression","expression","moduleSource","declarations","codeGenExportVariable","SourceModule","XHR","UrlResolver","codeGenEventHandler","view","codeGenValueFn","escapeValue","codeGenViewFactoryName","component","embeddedTemplateIndex","codeGenViewEncapsulation","proto_view_compiler_1","METADATA_MODULE_REF","view_type_1","element_1","view_2","VIEW_JIT_IMPORTS","AppView","AppElement","flattenNestedViewRenderNodes","checkSlotCount","ViewCompiler","protoViews","changeDetectorFactories","componentViewFactory","viewFactory","RuntimeViewFactory","createViewFactory","changeDetectorFactoryExpressions","CodeGenViewFactory","targetStatements","viewFactoryExpression","stmt","statement","changeDetectorExpressions","_nextVarId","_nextVar","prefix","_nextRenderVar","_nextAppVar","_nextDisposableVar","varName","Statement","Expression","parentRenderNode","rootSelector","valueExpr","createGlobalEventListener","appView","eventAst","disposableVar","eventHandlerExpr","createElementEventListener","createAppElement","appProtoEl","parentAppEl","embeddedViewFactory","appVar","varValue","APP_EL_MODULE_REF","createAndSetComponentView","viewManager","appEl","contentNodesByNgContentIndex","codeGenContentNodes","codeGenFlatArray","getProjectedNodes","projectableNodes","ngContentIndex","appendProjectedNodes","APP_VIEW_MODULE_REF","asts","compileProtoView","isHostView","isComponentView","ViewBuilderVisitor","ParentElement","appProtoView","protoView","viewFactoryName","changeDetectorFactory","expressions","factoryArgs","initRendererStmts","rendererExpr","renderCompTypeVar","stylesVar","CONST_VAR","codeGenFnHeader","ngContentSelectors","renderStmts","appStmts","rootNodesOrAppElements","codeGenArray","renderNodes","appDisposables","appElements","triggerEventHandlers","flattenedContentNodes","flattenArray","ViewType","COMPONENT","renderComponentType","parentRenderer","containerEl","dynamicallyCreatedProviders","rootInjector","createRenderComponentType","addContentNode","nodeExpr","factory","elementCount","_addRenderNode","_getParentRenderNode","_visitText","nodesExpression","getComponent","elementIndex","protoEl","protoElements","renderEvents","disposable","attrNameAndValues","newParent","ctx","MODULE_REGEXP","sourceWithModuleRefs","getSourceWithoutImports","getSourceWithImports","moduleAliases","imports","newSource","alias","SourceWithImports","source","visitAndReturnContext","mapToKeyValueArray","entryArray","sort","entry1","entry2","compare","keyValueArray","mergeAttributeValue","attrValue1","attrValue2","CLASS_ATTR","STYLE_ATTR","keyValueArrayToStringMap","stringMap","codeGenDirectivesArray","directiveType","codeGenTypesArray","types","codeGenViewType","VIEW_TYPE_MODULE_REF","getViewType","EMBEDDED","HOST","PROTO_VIEW_JIT_IMPORTS","AppProtoView","AppProtoElement","IMPLICIT_TEMPLATE_VAR","ProtoViewCompiler","compileProtoViewRuntime","metadataCache","protoViewFactory","RuntimeProtoViewFactory","allProtoViews","createCompileProtoView","CompileProtoViews","compileProtoViewCodeGen","resolvedMetadataCacheExpr","CodeGenProtoViewFactory","allStatements","CompileProtoView","CompileProtoElement","variableNameAndValues","ProtoViewFactory","templateVariableBindings","targetProtoViews","builder","ProtoViewBuilderVisitor","viewType","createAppProtoView","cpv","_nextProtoViewVar","protoViewVarName","viewTypeExpr","pipesExpr","pipeMeta","codeGenStringMap","createAppProtoElement","runtime","templateVars","attrs","dirMeta","_readAttrNameAndValues","attrAsts","directiveMeta","hostAttributes","prevValue","varAst","forEachWithIndex","directiveAst","DirectiveContext","renderEventArray","_addProtoElement","nestedProtoView","compileProtoEl","targetDirectives","hostEventTargetAndNames","targetVariableNameAndValues","eventTargetAndNames","astResult","TextAst","sourceSpan","BoundTextAst","AttrAst","BoundElementPropertyAst","BoundEventAst","VariableAst","ElementAst","isComponent","EmbeddedTemplateAst","BoundDirectivePropertyAst","templateName","DirectiveAst","NgContentAst","splitClasses","classAttrValue","createElementCssSelector","elementName","matchableAttrs","cssSelector","selector_1","CssSelector","elNameNoNs","html_tags_1","splitNsName","setElement","attrNameNoNs","addAttribute","addClassName","lang_2","html_parser_1","parse_util_1","ast_1","element_schema_registry_1","template_preparser_1","html_ast_1","BIND_NAME_REGEXP","TEMPLATE_ELEMENT","TEMPLATE_ATTR","TEMPLATE_ATTR_PREFIX","PROPERTY_PARTS_SEPARATOR","ATTRIBUTE_PREFIX","CLASS_PREFIX","STYLE_PREFIX","TEXT_CSS_SELECTOR","TEMPLATE_TRANSFORMS","TemplateParseError","message","span","ParseError","TemplateParser","_exprParser","_schemaRegistry","_htmlParser","transforms","templateUrl","parseVisitor","TemplateParseVisitor","htmlAstWithErrors","htmlVisitAll","rootNodes","EMPTY_COMPONENT","errors","errorString","transform","Optional","Parser","ElementSchemaRegistry","HtmlParser","directivesIndex","ngContentCount","selectorMatcher","SelectorMatcher","addSelectables","pipesByName","pipe","_reportError","_parseInterpolation","sourceInfo","parseInterpolation","_checkPipes","wrapLiteralPrimitive","_parseAction","parseAction","_parseBinding","parseBinding","_parseTemplateBindings","bindings","parseTemplateBindings","binding","collector","PipeCollector","pipeName","findNgContentIndex","expr","contex","visitComment","preparsedElement","preparseElement","PreparsedElementType","SCRIPT","STYLE","STYLESHEET","isStyleUrlResolvable","hrefAttr","elementOrDirectiveProps","templateElementOrDirectiveProps","templateMatchableAttrs","hasInlineTemplates","attr","hasBinding","_parseAttr","hasTemplateBinding","_parseInlineTemplateBinding","parsedElement","lcElName","elementCssSelector","_createDirectiveAsts","_parseDirectives","elementProps","_createElementPropertyAsts","nonBindable","NON_BINDABLE_VISITOR","elementNgContentIndex","NG_CONTENT","_assertAllEventsPublishedByDirectives","_assertNoComponentsNorElementBindingsOnTemplate","_assertOnlyOneComponent","elementExportAsVars","templateCssSelector","templateDirectives","templateElementProps","targetMatchableAttrs","targetProps","targetVars","templateBindingsSource","keyIsVar","_parsePropertyAst","_parseLiteralAttr","targetEvents","_normalizeAttributeName","bindParts","_parseProperty","identifier","_parseVariable","_parseEvent","_parseAssignmentEvent","_parsePropertyInterpolation","BoundElementOrDirectiveProperty","splitAtColon","dir1","dir2","dir1Comp","dir2Comp","props","possibleExportAsVars","matchedVariables","directiveAsts","directiveProperties","_createDirectiveHostPropertyAsts","_createDirectiveHostEventAsts","hostListeners","_createDirectivePropertyAsts","exportAs","hostProps","targetPropertyAsts","propName","exprAst","_createElementPropertyAst","targetEventAsts","boundProps","targetBoundDirectiveProps","boundPropsByName","boundProp","isLiteral","elProp","dirProp","boundElementProps","boundDirectivePropsIndex","bindingType","boundPropertyName","getMappedPropName","nsSeparatorIdx","name_1","mergeNsAndName","_findComponentDirectiveNames","componentTypeNames","allDirectiveEvents","NonBindableVisitor","attrAst","ngContentIndexMatcher","wildcardNgContentIndex","ngContentIndices","visitPipe","exp","visitAll","RecursiveAstVisitor","schemeMatch","_urlWithSchemaRe","resolver","foundUrls","modifiedCssText","_cssImportRe","resolve","StyleWithImports","HtmlTextAst","HtmlAttrAst","HtmlElementAst","HtmlCommentAst","tokenizeHtml","sourceContent","sourceUrl","_HtmlTokenizer","ParseSourceFile","tokenize","unexpectedCharacterErrorMsg","charCode","char","$EOF","unknownEntityErrorMsg","entitySrc","isNotWhitespace","isWhitespace","$TAB","$SPACE","$NBSP","isNameEnd","$GT","$SLASH","$SQ","$DQ","$EQ","isPrefixEnd","$a","$z","$A","$Z","$0","$9","isDigitEntityEnd","$SEMICOLON","isAsciiHexDigit","isNamedEntityEnd","isAsciiLetter","isTextEnd","$LT","$f","$F","compareCharCodeCaseInsensitive","code1","code2","toUpperCaseCharCode","mergeTextTokens","srcTokens","lastDstToken","dstTokens","token","HtmlTokenType","TEXT","HtmlToken","HtmlTokenError","errorMsg","tokenType","HtmlTokenizeResult","tokens","$LF","$CR","$BANG","$HASH","$AMPERSAND","$MINUS","$COLON","$LBRACKET","$RBRACKET","$X","$x","CR_OR_CRLF_REGEXP","ControlFlowError","file","peek","line","column","_advance","_processCarriageReturns","_getLocation","_attemptCharCode","_consumeCdata","_consumeComment","_consumeDocType","_consumeTagClose","_consumeTagOpen","_consumeText","_beginToken","EOF","_endToken","ParseLocation","_getSpan","ParseSourceSpan","currentTokenStart","currentTokenType","_createError","msg","charCodeAt","_attemptCharCodeCaseInsensitive","_requireCharCode","_attemptStr","chars","_attemptStrCaseInsensitive","_requireStr","_attemptCharCodeUntilFn","predicate","_requireCharCodeUntilFn","offset","_attemptUntilChar","_readChar","decodeEntities","_decodeEntity","startPosition","_savePosition","_restorePosition","NAMED_ENTITIES","isHex","numberStart","strNum","entity","_consumeRawText","firstCharOfEnd","attemptEndRest","tagCloseStart","textStart","ESCAPABLE_RAW_TEXT","RAW_TEXT","COMMENT_START","textToken","COMMENT_END","CDATA_START","CDATA_END","DOC_TYPE","_consumePrefixAndName","nameOrPrefixStart","nameStart","lowercaseTagName","savedPos","_consumeTagOpenStart","_consumeAttributeName","_consumeAttributeValue","_consumeTagOpenEnd","contentTokenType","getHtmlTagDefinition","contentType","HtmlTagContentType","_consumeRawTextWithTagClose","TAG_CLOSE","TAG_OPEN_START","ATTR_NAME","prefixAndName","ATTR_VALUE","quoteChar","valueStart","TAG_OPEN_END_VOID","TAG_OPEN_END","position","nbTokens","col","ctxStart","ctxEnd","ctxLen","ctxLines","getElementFullName","localName","implicitNamespacePrefix","getNsPrefix","html_lexer_1","HtmlTreeError","HtmlParseTreeResult","tokensAndErrors","treeAndErrors","TreeBuilder","build","elementStack","_consumeStartTag","_consumeEndTag","_closeVoidElement","prev","_advanceIf","startToken","_addToParent","parent_1","_getParentElement","ignoreFirstLf","last","isVoid","startTagToken","_consumeAttr","selfClosing","_pushElement","_popElement","parentEl","isClosedByChild","tagDef","requireExtraParent","parentToAdd","endTagToken","stackIndex","splice","closedByParent","valueToken","selectAttr","relAttr","lcAttrName","NG_CONTENT_SELECT_ATTR","LINK_STYLE_HREF_ATTR","LINK_STYLE_REL_ATTR","NG_NON_BINDABLE_ATTR","normalizeNgContentSelect","OTHER","NG_CONTENT_ELEMENT","STYLE_ELEMENT","SCRIPT_ELEMENT","LINK_ELEMENT","LINK_STYLE_REL_VALUE","PreparsedElement","directive_metadata_1","TemplateNormalizer","normalizeTemplate","normalizeLoadedTemplate","sourceAbsUrl","templateContent","templateMeta","templateAbsUrl","rootNodesAndErrors","TemplatePreparseVisitor","allStyles","allStyleAbsUrls","allResolvedStyles","styleUrl","None","CompileTemplateMetadata","ngNonBindableStackCount","child","_EMPTY_ATTR_VALUE","_SELECTOR_REGEXP","classNames","notSelectors","results","_addResult","cssSel","isEmpty","current","inNot","isElementSelector","getMatchingElementTemplate","classAttr","notSelector","_elementMap","_elementPartialMap","_classMap","_classPartialMap","_attrValueMap","_attrValuePartialMap","_listContexts","createNotMatcher","notMatcher","cssSelectors","callbackCtxt","listContext","SelectorListContext","_addSelectable","selectable","SelectorContext","isTerminal","_addTerminal","_addPartial","terminalMap","terminalValuesMap","parttialMap","partialValuesMap","terminalList","matchedCallback","alreadyMatched","_matchTerminal","_matchPartial","selectables","starSelectables","finalize","nestedSelector","selectors","cbContext","createHostComponentMeta","componentSelector","CompileDirectiveMetadata","CompileTypeMetadata","dynamicLoadable","viewProviders","queries","viewQueries","arrayFromJson","o","objFromJson","arrayToJson","objToJson","isString","toJson","HOST_REG_EXP","CompileMetadataWithIdentifier","fromJson","_COMPILE_METADATA_FROM_JSON","unimplemented","CompileMetadataWithType","CompileIdentifierMetadata","_a","_b","constConstructor","CompileDiDependencyMetadata","isAttribute","isSelf","isSkipSelf","isOptional","viewQuery","normalizeBool","CompileQueryMetadata","CompileProviderMetadata","CompileFactoryMetadata","diDeps","normalizeBlank","descendants","VIEW_ENCAPSULATION_VALUES","serializeEnum","inputsMap","bindConfig","outputsMap","CHANGE_DETECTION_STRATEGY_VALUES","hookValue","LIFECYCLE_HOOKS_VALUES","hook","CompilePipeMetadata","pure","Type","Identifier","hasLifecycleHook","lcInterface","ngAfterContentInit","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","ngOnChanges","ngDoCheck","ngOnDestroy","ngOnInit","flattenDirectives","platformDirectives","flattenPipes","platformPipes","tree","out","resolveForwardRef","isValidType","calcModuleUrl","cmpMetadata","moduleId","scheme","getUrlScheme","importUri","cpl","md","directive_resolver_1","pipe_resolver_1","view_resolver_1","directive_lifecycle_reflector_1","di_2","platform_directives_and_pipes_1","RuntimeMetadataResolver","_directiveResolver","_pipeResolver","_viewResolver","_platformDirectives","_platformPipes","_directiveCache","_pipeCache","getDirectiveMetadata","changeDetectionStrategy","ComponentMetadata","cmpMeta","viewMeta","getPipeMetadata","pipeType","getViewDirectivesMetadata","getViewPipesMetadata","DirectiveResolver","PipeResolver","ViewResolver","escapeString","SINGLE_QUOTE_ESCAPE_STRING_RE","escapeDoubleQuoteString","DOUBLE_QUOTE_ESCAPE_STRING_RE","codeGenConstConstructorCall","fnName","codeGenToString","defaultValues","values","isFirstArrayEntry","concatFn","codeGenKeyValue","keyValue","addAll","assertComponent","templateModuleUrl","urlWithoutSuffix","codeGenHostViewFactoryName","codeGenComponentViewFactoryName","nestedCompType","mergeStringMaps","maps","removeDuplicates","hasMatch","filterPipes","allPipes","PipeVisitor","change_detector_compiler_1","style_compiler_1","view_compiler_1","template_parser_1","template_normalizer_1","runtime_metadata_1","resolved_metadata_cache_1","METADATA_CACHE_MODULE_REF","TemplateCompiler","_runtimeMetadataResolver","_templateNormalizer","_templateParser","_styleCompiler","_cdCompiler","_protoViewCompiler","_viewCompiler","_resolvedMetadataCache","_hostCacheKeys","_compiledTemplateCache","_compiledTemplateDone","normalizeDirectiveMetadata","normalizedTemplate","compileHostComponentRuntime","compMeta","hostCacheKey","hostMeta","_compileComponentRuntime","compiledTemplate","HostViewFactory","compileTemplatesCodeGen","components","componentWithDirs","_compileComponentCodeGen","constructionKeyword","compiledTemplateExpr","viewDirectives","compilingComponentsPath","uniqViewDirectives","uniqViewPipes","CompiledTemplate","stylesAndNormalizedViewDirMetas","normalizedViewDirMetas","childPromises","usedDirectives","DirectiveCollector","findUsedDirectives","_compileNestedComponentRuntime","filteredPipes","_createViewFactoryRuntime","childComponentDir","parentCompilingComponentsPath","childCacheKey","childViewDirectives","childViewPipes","childIsRecursive","useJit","_getNestedComponentViewFactory","viewFactoryExpr","_createViewFactoryCodeGen","resolvedMetadataCache","declarationsWithoutImports","evalExpression","targetDeclarations","uniqueDirectives","uniqPipes","styleExpr","changeDetectorsExprs","protoViewExprs","ResolvedMetadataCache","NormalizedComponentWithViewDirectives","compiler_1","view_ref_1","template_compiler_1","RuntimeCompiler","Compiler","RuntimeCompiler_","_templateCompiler","compileInHost","hostViewFactory","HostViewFactoryRef_","Compiler_","adapter","TAG_DEFINITIONS","DEFAULT_TAG_DEFINITION","Aacute","aacute","Acirc","acirc","acute","AElig","aelig","Agrave","agrave","alefsym","Alpha","alpha","amp","and","ang","apos","Aring","aring","asymp","Atilde","atilde","Auml","auml","bdquo","Beta","beta","brvbar","bull","cap","Ccedil","ccedil","cedil","cent","Chi","chi","circ","clubs","cong","copy","crarr","cup","curren","dagger","Dagger","darr","dArr","deg","Delta","delta","diams","divide","Eacute","eacute","Ecirc","ecirc","Egrave","egrave","emsp","ensp","Epsilon","epsilon","equiv","Eta","eta","ETH","eth","Euml","euml","euro","exist","fnof","forall","frac12","frac14","frac34","frasl","Gamma","gamma","ge","gt","harr","hArr","hearts","hellip","Iacute","iacute","Icirc","icirc","iexcl","Igrave","igrave","image","infin","int","Iota","iota","iquest","isin","Iuml","iuml","Kappa","kappa","Lambda","lambda","laquo","larr","lArr","lceil","ldquo","le","lfloor","lowast","loz","lrm","lsaquo","lsquo","lt","macr","mdash","micro","middot","minus","Mu","mu","nabla","nbsp","ndash","ne","ni","not","notin","nsub","Ntilde","ntilde","Nu","nu","Oacute","oacute","Ocirc","ocirc","OElig","oelig","Ograve","ograve","oline","Omega","omega","Omicron","omicron","oplus","or","ordf","ordm","Oslash","oslash","Otilde","otilde","otimes","Ouml","ouml","para","permil","perp","Phi","phi","Pi","pi","piv","plusmn","pound","prime","Prime","prod","Psi","psi","quot","radic","rang","raquo","rarr","rArr","rceil","rdquo","real","reg","rfloor","Rho","rho","rlm","rsaquo","rsquo","sbquo","Scaron","scaron","sdot","sect","shy","Sigma","sigma","sigmaf","sim","spades","sub","sube","sum","sup","sup1","sup2","sup3","supe","szlig","Tau","tau","there4","Theta","theta","thetasym","thinsp","THORN","thorn","tilde","times","trade","Uacute","uacute","uarr","uArr","Ucirc","ucirc","Ugrave","ugrave","uml","upsih","Upsilon","upsilon","Uuml","uuml","weierp","Xi","xi","Yacute","yacute","yen","yuml","Yuml","Zeta","zeta","zwj","zwnj","HtmlTagDefinition","closedByChildren","requiredParents","PARSABLE_DATA","currentParent","lcParent","area","embed","link","img","hr","br","track","wbr","thead","tbody","tfoot","tr","td","th","math","li","dt","dd","rb","rt","rtc","rp","optgroup","option","pre","listing","script","textarea","DomElementSchemaRegistry","_protoElements","_getProtoElement","elm","mappedPropName","attrToPropMap","createWithoutPackagePrefix","_split","_ComponentIndex","Scheme","_buildFromEncodedParts","opt_scheme","opt_userInfo","opt_domain","opt_port","opt_path","opt_queryData","opt_fragment","uri","_splitRe","_removeDotSegments","leadingSlash","trailingSlash","segments","up","pos","segment","unshift","_joinAndCanonicalizePath","Path","UserInfo","Domain","Port","QueryData","Fragment","_resolveUrl","encodeURI","baseParts","lastIndexOf","application_tokens_1","DEFAULT_PACKAGE_URL_PROVIDER","PACKAGE_ROOT_URL","packagePrefix","_packagePrefix","stripRight","resolvedUrl","_createChangeDetectorGenConfig","runtime_compiler_1","template_parser_2","template_compiler_2","runtime_compiler_2","dom_element_schema_registry_1","change_detection_2","COMPILER_PROVIDERS","Lexer","promise_1","completer","xhr","XMLHttpRequest","responseType","onload","responseText","status","reject","onerror","send","promise","appComponentType","customProviders","reflectionCapabilities","reflection_capabilities_1","ReflectionCapabilities","appProviders","BROWSER_APP_PROVIDERS","platform","browser_common_2","application","angular_entrypoint_1","browser_common_1","compiler_2","defaults","OPTION_NAMES","redocDebugMode","_Set","_options","parsedOpts","attributesMap","$1","_normalizeOptions","numberOffset","offsetHeight","opts","_Object$assign","CHANGE","INVIEW_POSITION","NEXT","BACK","INITIAL","ABOVE","BELLOW","INVIEW","_SideMenu","bindEvents","activeCatIdx","activeMethodIdx","prevOffsetY","hashScroll","activeCatCaption","activeItemCaption","hash","$el","substr","namespace","ptr","decodeURIComponent","getMethodElByOperId","getMethodElByPtr","scrollTo","mobileNavOffset","$mobileNav","clientHeight","_cancel","scrollHandler","idx","methodIdx","mobileMode","toggleMobileNav","activate","scrollToActive","subjRect","getCurrentMethodEl","catIdx","menu","activeMethodPtr","currentItem","summary","catCount","catLength","resMethodIdx","resCatIdx","prevCatIdx","_calcActiveIndexes","_calcActiveIndexes22","isScrolledDown","stable","$activeMethodHost","elementInViewPos","getElementInViewPos","changeActive","$overflowParent","$resourcesNav","viewportHeight","innerHeight","$export","toObject","isArrayIter","toLength","getIterFn","S","iter","arrayLike","step","iterator","$$","$$len","mapfn","mapping","iterFn","arr2","is","x","y","anObject","aFunction","SPECIES","that","un","documentElement","isObject","process","defer","channel","port","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","counter","ONREADYSTATECHANGE","listner","Function","nextTick","port2","port1","onmessage","postMessage","importScripts","macrotask","Observer","MutationObserver","WebKitMutationObserver","Promise","isNode","flush","domain","exit","enter","toggle","observe","characterData","task","SAFE_CLOSING","riter","exec","skipClosing","safe","Wrapper","$","LIBRARY","strictNew","forOf","setProto","same","speciesConstructor","asap","PROMISE","P","testResolve","USE_NATIVE","P2","self","works","thenableThenGotten","setDesc","sameConstructor","a","getConstructor","isThenable","PromiseCapability","$$resolve","$$reject","perform","isReject","chain","ok","s","reaction","fail","h","isUnhandled","emit","onunhandledrejection","reason","$reject","$resolve","wrapper","executor","onFulfilled","onRejected","catch","W","capability","iterable","abrupt","remaining","each","alreadyCalled","race","getIterator","strong","getEntry","toJSON","Number","Infinity","decodeJSONPointer","getRemotePath","io","getQueryPath","findId","Report","SchemaCompilation","SchemaValidation","Utils","cacheSchemaByUri","remotePath","removeFromCacheByUri","checkCacheForUri","getSchema","report","getSchemaByReference","getSchemaByUri","referenceCache","cloneDeep","root","queryPath","compileRemote","remoteReport","compileSchema","validateSchema","remoteReportIsValid","isValid","addError","lim","mergeReference","scope","isAbsoluteUri","toRemove","joinedScope","isScopeAbsolute","isScopeRelative","isRelativeUri","isRefRelative","collectReferences","__$refResolved","$schema","__$schemaResolved","SchemaCache","compileArrayOfSchemasLoop","mainReport","compiledCount","compileArrayOfSchemas","lastLoopCompiled","compiled","sch","__$missingReferences","idx2","refObj","commonErrorMessage","loadedSchema","__$compiled","isRoot","rootSchema","isValidExceptReferences","refs","schemaReader","getSchemaReader","subreport","hasNotValid","hasError","isAbsolute","isDownloaded","ignoreUnresolvableRemotes","ignoreUnresolvableReferences","amd","petal","validator","getTimezoneOffset","timezone","sign","hours","minutes","iso8601Parts","iso8601","merge","currencyRegex","symbol","require_symbol","negative","whole_dollar_amount_without_sep","whole_dollar_amount_with_sep","thousands_separator","valid_whole_dollar_amounts","whole_dollar_amount","decimal_amount","decimal_separator","pattern","allow_negatives","parens_for_negatives","negative_sign_after_digits","negative_sign_before_digits","allow_negative_sign_placeholder","allow_space_after_symbol","allow_space_after_digits","symbol_after_digits","RegExp","version","emailUserPart","quotedEmailUser","emailUserUtf8Part","quotedEmailUserUtf8","displayName","creditCard","isbn10Maybe","isbn13Maybe","macAddress","ipv4Maybe","ipv6Block","uuid","3","4","5","alphanumeric","numeric","float","hexadecimal","decimal","hexcolor","ascii","multibyte","fullWidth","halfWidth","surrogatePair","base64","phones","zh-CN","zh-TW","en-ZA","en-AU","en-HK","fr-FR","pt-PT","el-GR","en-GB","en-US","en-ZM","ru-RU","nb-NO","nn-NO","vi-VN","en-NZ","en-IN","extend","toDate","date","Date","toFloat","toInt","radix","toBoolean","comparison","modifiers","default_email_options","allow_display_name","allow_utf8_local_part","require_tld","isEmail","display_email","user","lower_domain","isByteLength","isFQDN","user_parts","default_url_options","protocols","require_protocol","require_valid_protocol","allow_underscores","allow_trailing_dot","allow_protocol_relative_urls","isURL","protocol","auth","hostname","port_str","isIP","host_whitelist","host_blacklist","isMACAddress","foundOmissionBlock","foundIPv4TransitionBlock","expectedNumberOfBlocks","default_fqdn_options","tld","isBoolean","isAlpha","isAlphanumeric","isDecimal","isHexadecimal","isHexColor","isLowercase","isUppercase","isInt","min","isFloat","isDivisibleBy","num","isNull","isLength","surrogatePairs","isUUID","isDate","normalizedDate","timezoneOffset","timezoneDifference","getTime","dayOrYear","dayOrYearMatches","year","day","getDate","digitString","getFullYear","isAfter","original","isBefore","isIn","array","isWhitelisted","isCreditCard","sanitized","digit","tmpNum","shouldDouble","isISIN","checksumStr","character","isISBN","checksum","factor","isMobilePhone","locale","default_currency_options","isCurrency","isJSON","JSON","isMultibyte","isAscii","isFullWidth","isHalfWidth","isVariableWidth","isSurrogatePair","isBase64","isMongoId","isISO8601","ltrim","rtrim","escape","stripLow","keep_new_lines","blacklist","whitelist","default_normalize_email_options","lowercase","remove_dots","remove_extension","normalizeEmail","email","FormatValidators","date-time","dateTime","valid","labels","host-name","ipv4","ipv6","regex","strictUris","strict-uri","JsonValidators","multipleOf","whatIs","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","ucs2decode","minLength","additionalItems","maxItems","uniqueItems","isUniqueArray","maxProperties","keysCount","minProperties","required","requiredPropertyName","additionalProperties","patternProperties","pp","difference","idx3","assumeAdditional","dependencies","dependencyName","dependencyDefinition","validate","enum","areEqual","validateResult","breakOnFirstError","anyOf","subReports","passed","subReport","oneOf","passes","maxErrors","definitions","format","formatValidatorFn","addAsyncTask","ignoreUnknownFormats","recurseArray","recurseObject","regexString","maxRefs","jsonType","baseGet","pathKey","isObjectLike","getNative","isNative","MAX_SAFE_INTEGER","objToString","funcTag","reIsNative","fnToString","reIsHostCtor","arrayTag","objectProto","nativeIsArray","baseToString","toPath","rePropName","quote","reEscapeChar","defaultValue","INVALID_TYPE","INVALID_FORMAT","ENUM_MISMATCH","ANY_OF_MISSING","ONE_OF_MISSING","ONE_OF_MULTIPLE","NOT_PASSED","ARRAY_LENGTH_SHORT","ARRAY_LENGTH_LONG","ARRAY_UNIQUE","ARRAY_ADDITIONAL_ITEMS","MULTIPLE_OF","MINIMUM","MINIMUM_EXCLUSIVE","MAXIMUM","MAXIMUM_EXCLUSIVE","OBJECT_PROPERTIES_MINIMUM","OBJECT_PROPERTIES_MAXIMUM","OBJECT_MISSING_REQUIRED_PROPERTY","OBJECT_ADDITIONAL_PROPERTIES","OBJECT_DEPENDENCY_KEY","MIN_LENGTH","MAX_LENGTH","PATTERN","KEYWORD_TYPE_EXPECTED","KEYWORD_UNDEFINED_STRICT","KEYWORD_UNEXPECTED","KEYWORD_MUST_BE","KEYWORD_DEPENDENCY","KEYWORD_PATTERN","KEYWORD_VALUE_TYPE","UNKNOWN_FORMAT","CUSTOM_MODE_FORCE_PROPERTIES","REF_UNRESOLVED","UNRESOLVABLE_REFERENCE","SCHEMA_NOT_REACHABLE","SCHEMA_TYPE_EXPECTED","SCHEMA_NOT_AN_OBJECT","ASYNC_TIMEOUT","PARENT_SCHEMA_VALIDATION_FAILED","REMOTE_NOT_VALID","parentOrOptions","reportOptions","parentReport","asyncTasks","Errors","asyncTaskResultProcessFn","processAsyncTasks","timeout","finish","respond","asyncTaskResult","timedOut","tasksCount","validationTimeout","getPath","reportPathAsArray","getSchemaId","errorCode","schemaDescription","errorMessage","schemaId","inner","JsonValidation","SchemaValidators","forceAdditional","forceProperties","schemaKey","schemaDependency","primitiveTypes","primitiveTypeStr","noEmptyStrings","noEmptyArrays","forceItems","forceMinItems","forceMaxItems","forceMinLength","forceMaxLength","validateArrayOfSchemas","__$validated","hasParentSchema","noTypeless","schemas","noExtraKeywords","pedanticCheck","tmpSchema","what","json1","json2","keys1","keys2","indexes","j","l","bigSet","subSet","src","cidx","visited","cloned","extra","schemaArray","positiveInteger","positiveIntegerDefault0","simpleTypes","stringArray","links","fragmentResolution","media","binaryEncoding","pathStart","linkDescription","rel","targetSchema","mediaType","encType","ZSchema","setRemoteReference","Draft4Schema","Draft4HyperSchema","defaultOptions","strictMode","asyncTimeout","lastReport","foundError","schemaName","validated","schemaPath","getLastError","details","getLastErrors","getMissingReferences","reference","getMissingRemoteReferences","missingReferences","missingRemoteReferences","remoteReference","getResolvedSchema","cleanup","typeOf","___$visited","setSchemaReader","registerFormat","formatName","validatorFunction","unregisterFormat","getRegisteredFormats","getDefaultOptions","^x-","swagger","basePath","schemes","consumes","produces","paths","parameters","security","securityDefinitions","externalDocs","termsOfService","contact","license","^/","parameterDefinitions","responseDefinitions","mimeType","operation","deprecated","pathItem","put","post","delete","patch","^([0-9]{3})$|^(default)$","responseValue","collectionFormat","vendorExtension","bodyParameter","in","headerParameterSubSchema","queryParameterSubSchema","allowEmptyValue","formDataParameterSubSchema","pathParameterSubSchema","nonBodyParameter","parameter","discriminator","readOnly","xml","example","fileSchema","primitivesItems","securityRequirement","wrapped","basicAuthenticationSecurity","apiKeySecurity","oauth2ImplicitSecurity","flow","scopes","authorizationUrl","oauth2PasswordSecurity","tokenUrl","oauth2ApplicationSecurity","oauth2AccessCodeSecurity","oauth2Scopes","mediaTypeList","parametersList","schemesList","collectionFormatWithMulti","jsonReference","api","util","debug","swaggerSchema","formatZSchemaError","ono","syntax","initializeZSchema","indent","validateSpec","pathName","pathId","validatePath","swaggerMethods","operationName","validateParameters","responseName","responseId","validateResponse","operationParams","checkForDuplicates","reduce","combinedParams","duplicate","some","validateBodyParameters","validatePathParameters","validateParameterTypes","bodyParams","formParams","placeholders","swaggerParamRegExp","validTypes","parameterId","schemaTypes","outer","headerName","headerId","inherits","ParserOptions","spec","$RefParserOptions","Buffer","allow","yaml","unknown","$refs","internal","external","circular","fs","http","https","redirects","withCredentials","dest","topKeys","topKey","srcChild","childKeys","childKey","srcChildValue","$Refs","_basePath","_$refs","getPaths","pathType","encoded","decoded","urlToLocalPath","Options","isExpired","_get$Ref","expire","exists","_resolve","withoutHash","stripHash","_nodeRequire","readFileSync","address","onreadystatechange","readyState","Stream","Readable","Writable","Duplex","Transform","PassThrough","_events","_maxListeners","arg","isNumber","isUndefined","defaultMaxListeners","setMaxListeners","er","addListener","newListener","warned","trace","once","g","removeListener","fired","list","removeAllListeners","ret","listenerCount","emitter","assertEncoding","encoding","isBufferEncoding","passThroughWrite","buffer","utf16DetectIncompleteChar","charReceived","charLength","base64DetectIncompleteChar","isEncoding","StringDecoder","surrogateSize","detectIncompleteChar","write","charBuffer","charStr","available","size","cr","buf","enc","ReadableState","stream","hwm","highWaterMark","defaultHwm","objectMode","pipesCount","flowing","ended","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","readableObjectMode","defaultEncoding","ranOut","awaitDrain","readingMore","decoder","_readableState","readable","readableAddChunk","state","chunk","addToFront","chunkInvalid","isNullOrUndefined","onEofChunk","read","emitReadable","maybeReadMore","needMoreData","roundUpToNextPowerOf2","MAX_HWM","howMuchToRead","isBuffer","emitReadable_","maybeReadMore_","pipeOnDrain","EE","resume","resumeScheduled","resume_","fromList","stringMode","cpy","endReadable","xs","f","debuglog","setEncoding","nOrig","doRead","_read","pipeOpts","onunpipe","onend","onclose","onfinish","ondrain","ondata","_writableState","needDrain","pause","unpipe","doEnd","stdout","stderr","endFn","dests","ev","wrap","paused","_fromList","WriteReq","cb","WritableState","writableObjectMode","ending","finished","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writecb","writelen","pendingcb","prefinished","errorEmitted","writable","writeAfterEnd","validChunk","decodeChunk","writeOrBuffer","doWrite","writev","_writev","_write","onwriteError","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","finishMaybe","cbs","prefinish","need","endWritable","cork","uncork","allowHalfOpen","objectKeys","TransformState","afterTransform","needTransform","transforming","writechunk","ts","_transformState","rs","_flush","ws","_transform","writeencoding","objectToString","isSymbol","isRegExp","isError","didOnEnd","destroy","_isStdio","parseHeaders","lines","getAllResponseHeaders","Response","capable","streaming","status2","getResponse","respType","responseBlob","getHeader","handle","_emitData","respBody","Uint8Array","byteLength","InvalidCharacterError","btoa","block","atob","bs","bc","Base64","Request","_headers","isSafeRequestHeader","setHeader","__aborted","removeHeader","abort","setRequestHeader","isXHR2Compatible","unsafeHeaders","Blob","ArrayBuffer","FormData","request","req","xhrHttp","Agent","defaultMaxSockets","ActiveXObject","axs","ax","ax_","STATUS_CODES",100,101,102,200,201,202,203,204,205,206,207,300,301,302,303,304,305,307,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,422,423,424,425,426,428,429,431,500,501,502,503,504,505,506,507,509,510,511,"download","u","redirectTo","parsed","YAML","ext","extname","lib$es6$promise$utils$$objectOrFunction","lib$es6$promise$utils$$isFunction","lib$es6$promise$asap$$setScheduler","scheduleFn","lib$es6$promise$asap$$customSchedulerFn","lib$es6$promise$asap$$setAsap","asapFn","lib$es6$promise$asap$$asap","lib$es6$promise$asap$$useNextTick","lib$es6$promise$asap$$flush","lib$es6$promise$asap$$useVertxTimer","lib$es6$promise$asap$$vertxNext","lib$es6$promise$asap$$useMutationObserver","iterations","observer","lib$es6$promise$asap$$BrowserMutationObserver","lib$es6$promise$asap$$useMessageChannel","lib$es6$promise$asap$$useSetTimeout","lib$es6$promise$asap$$len","lib$es6$promise$asap$$queue","lib$es6$promise$asap$$attemptVertx","vertx","runOnLoop","runOnContext","lib$es6$promise$then$$then","onFulfillment","onRejection","_state","lib$es6$promise$$internal$$FULFILLED","lib$es6$promise$$internal$$REJECTED","lib$es6$promise$$internal$$noop","_result","lib$es6$promise$$internal$$invokeCallback","lib$es6$promise$$internal$$subscribe","lib$es6$promise$promise$resolve$$resolve","Constructor","lib$es6$promise$$internal$$resolve","lib$es6$promise$$internal$$selfFulfillment","lib$es6$promise$$internal$$cannotReturnOwn","lib$es6$promise$$internal$$getThen","lib$es6$promise$$internal$$GET_THEN_ERROR","lib$es6$promise$$internal$$tryThen","fulfillmentHandler","rejectionHandler","lib$es6$promise$$internal$$handleForeignThenable","thenable","sealed","lib$es6$promise$$internal$$fulfill","lib$es6$promise$$internal$$reject","_label","lib$es6$promise$$internal$$handleOwnThenable","lib$es6$promise$$internal$$handleMaybeThenable","maybeThenable","lib$es6$promise$then$$default","lib$es6$promise$promise$resolve$$default","lib$es6$promise$$internal$$publishRejection","_onerror","lib$es6$promise$$internal$$publish","lib$es6$promise$$internal$$PENDING","_subscribers","subscribers","settled","detail","lib$es6$promise$$internal$$ErrorObject","lib$es6$promise$$internal$$tryCatch","lib$es6$promise$$internal$$TRY_CATCH_ERROR","succeeded","failed","hasCallback","lib$es6$promise$$internal$$initializePromise","lib$es6$promise$promise$all$$all","lib$es6$promise$enumerator$$default","lib$es6$promise$promise$race$$race","lib$es6$promise$utils$$isArray","lib$es6$promise$promise$reject$$reject","lib$es6$promise$promise$$needsResolver","lib$es6$promise$promise$$needsNew","lib$es6$promise$promise$$Promise","_id","lib$es6$promise$promise$$counter","lib$es6$promise$enumerator$$Enumerator","_instanceConstructor","_input","_remaining","_enumerate","_validationError","lib$es6$promise$polyfill$$polyfill","local","cast","lib$es6$promise$promise$$default","lib$es6$promise$utils$$_isArray","lib$es6$promise$asap$$scheduleFlush","lib$es6$promise$asap$$browserWindow","lib$es6$promise$asap$$browserGlobal","lib$es6$promise$asap$$isNode","lib$es6$promise$asap$$isWorker","Uint8ClampedArray","lib$es6$promise$promise$all$$default","lib$es6$promise$promise$race$$default","lib$es6$promise$promise$reject$$default","_setScheduler","_setAsap","_asap","_eachEntry","_settledAt","_willSettleAt","enumerator","lib$es6$promise$polyfill$$default","lib$es6$promise$umd$$ES6Promise","polyfill","cached","$Ref","read$Ref","read$RefFile","read$RefUrl","browser","isUrl","readFile","parser","crawl","keyPath","Pointer","isExternal$Ref","resolve$Ref","resolvedPath","bundle","inventory","remap","pathFromRoot","defs","keyPathFromRoot","is$Ref","inventory$Ref","$refParent","$refKey","$refPath","depth","getHash","extended","Mark","common","getSnippet","tail","snippet","repeat","compact","where","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","State","filename","DEFAULT_FULL_SCHEMA","onWarning","legacy","implicitTypes","compiledImplicit","typeMap","compiledTypeMap","lineStart","lineIndent","documents","generateError","YAMLException","throwError","throwWarning","captureSegment","checkJson","_position","_length","_character","PATTERN_NON_PRINTABLE","mergeMappings","destination","overridableKeys","sourceKeys","quantity","_hasOwnProperty","storeMappingPair","keyTag","keyNode","valueNode","readLineBreak","ch","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readPlainScalar","nodeIndent","withinFlowCollection","preceding","following","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","kind","readSingleQuotedScalar","readDoubleQuotedScalar","hexLength","hexResult","tmp","simpleEscapeCheck","simpleEscapeMap","readFlowCollection","terminator","isPair","isExplicitPair","isMapping","readNext","_tag","_anchor","anchor","anchorMap","composeNode","CONTEXT_FLOW_IN","readBlockScalar","folding","chomping","CHOMPING_CLIP","detectedIndent","textIndent","emptyLines","atMoreIndented","CHOMPING_KEEP","CHOMPING_STRIP","readBlockSequence","detected","CONTEXT_BLOCK_IN","readBlockMapping","flowIndent","allowCompact","atExplicitKey","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_OUT","readTagProperty","tagHandle","isVerbatim","isNamed","PATTERN_TAG_HANDLE","PATTERN_FLOW_INDICATORS","PATTERN_TAG_URI","tagMap","readAnchorProperty","readAlias","parentIndent","nodeContext","allowToSeek","allowBlockStyles","allowBlockScalars","allowBlockCollections","typeIndex","typeQuantity","blockIndent","indentStatus","atNewLine","hasContent","construct","readDocument","directiveArgs","documentStart","hasDirectives","checkLineBreaks","directiveHandlers","PATTERN_NON_ASCII_LINE_BREAKS","loadDocuments","loadAll","safeLoadAll","DEFAULT_SAFE_SCHEMA","safeLoad","major","minor","TAG","compileStyleMap","styleAliases","encodeHex","skipInvalid","flowLevel","isNothing","styleMap","sortKeys","lineWidth","noRefs","explicitTypes","compiledExplicit","duplicates","usedDuplicates","indentString","spaces","ind","generateNextLine","testImplicitResolving","StringBuilder","checkpoint","writeScalar","iskey","simple","spaceWrap","folded","literal","single","double","sawLineFeed","linePosition","longestLine","escapeSeq","hexEsc","previous","lineLength","modifier","trailingLineBreaks","dump","DEPRECATED_BOOLEANS_SYNTAX","CHAR_SPACE","CHAR_MINUS","CHAR_QUESTION","CHAR_COMMERCIAL_AT","CHAR_GRAVE_ACCENT","simpleChar","CHAR_SINGLE_QUOTE","ESCAPE_SEQUENCES","needsHexEscape","CHAR_LINE_FEED","CHAR_DOUBLE_QUOTE","takeUpTo","escapeChar","fold","newLine","trailing","foldLine","foldEnd","foldRe","prevMatch","foldStart","CHAR_TAB","CHAR_CARRIAGE_RETURN","CHAR_COMMA","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_LEFT_CURLY_BRACKET","CHAR_RIGHT_CURLY_BRACKET","CHAR_SHARP","CHAR_AMPERSAND","CHAR_ASTERISK","CHAR_EXCLAMATION","CHAR_VERTICAL_LINE","CHAR_GREATER_THAN","CHAR_PERCENT","CHAR_COLON","writeFlowSequence","writeNode","writeBlockSequence","writeFlowMapping","objectKey","objectValue","pairBuffer","objectKeyList","writeBlockMapping","explicitPair","detectType","explicit","typeList","instanceOf","represent","defaultStyle","_toString","duplicateIndex","objectOrArray","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","safeDump","esc","compileList","exclude","include","includedSchema","currentType","previousType","previousIndex","compileMap","collectType","Schema","implicit","loadKind","DEFAULT","toArray","every","resolveYamlNull","constructYamlNull","canonical","uppercase","camelcase","resolveYamlBoolean","constructYamlBoolean","isHexCode","isOctCode","isDecCode","resolveYamlInteger","hasDigits","constructYamlInteger","digits","isInteger","isNegativeZero","binary","octal","subject","sequence","cycle","NEGATIVE_INFINITY","resolveYamlFloat","YAML_FLOAT_PATTERN","constructYamlFloat","POSITIVE_INFINITY","representYamlFloat","SCIENTIFIC_WITHOUT_DOT","resolveYamlTimestamp","YAML_TIMESTAMP_REGEXP","constructYamlTimestamp","month","hour","minute","second","tz_hour","tz_minute","fraction","UTC","setTime","representYamlTimestamp","toISOString","resolveYamlMerge","resolveYamlBinary","bitlen","BASE64_MAP","constructYamlBinary","tailbits","bits","NodeBuffer","representYamlBinary","isBinary","resolveYamlOmap","pair","pairKey","pairHasKey","constructYamlOmap","resolveYamlPairs","constructYamlPairs","resolveYamlSet","constructYamlSet","resolveJavascriptUndefined","constructJavascriptUndefined","representJavascriptUndefined","resolveJavascriptRegExp","regexp","constructJavascriptRegExp","representJavascriptRegExp","multiline","ignoreCase","compileStyleAliases","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","resolveJavascriptFunction","esprima","range","constructJavascriptFunction","representJavascriptFunction","_require","mark","captureStackTrace","stack","loader","dumper","FAILSAFE_SCHEMA","JSON_SCHEMA","CORE_SCHEMA","MINIMAL_SCHEMA","SAFE_SCHEMA","DEFAULT_SCHEMA","scan","compose","addConstructor","reviver","replacer","space","$RefParser","normalizeArgs","maybe","me","localPathToUrl","cwd","expires","cacheDuration","isAllowed$Ref","lookup","decode","elt","PLUS","PLUS_URL_SAFE","SLASH","SLASH_URL_SAFE","NUMBER","UPPER","LOWER","b64ToByteArray","b64","L","placeHolders","Arr","uint8ToBase64","uint8","encode","tripletToBase64","temp","extraBytes","toByteArray","fromByteArray","base64js","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","pow","abs","LN2","typedArraySupport","Bar","foo","subarray","kMaxLength","TYPED_ARRAY_SUPPORT","fromNumber","fromString","fromObject","allocate","fromBuffer","fromArray","fromTypedArray","fromArrayBuffer","fromArrayLike","fromJsonObject","_augment","__proto__","_isBuffer","fromPool","poolSize","rootParent","RangeError","SlowBuffer","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","binarySlice","base64Slice","utf16leSlice","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","binaryWrite","base64Write","ucs2Write","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","codePoints","MAX_ARGUMENTS_LENGTH","toHex","bytes","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","ieee754","writeDouble","base64clean","stringtrim","INVALID_BASE64_RE","units","leadSurrogate","byteArray","hi","lo","dst","INSPECT_MAX_BYTES","inspect","byteOffset","arrayIndexOf","foundIndex","readUInt8","writeUInt8","swap","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","_set","fill","toArrayBuffer","BP","toLocaleString","resolveIf$Ref","resolved","slashes","tildes","escapedSlash","escapedTilde","decodeURI","short","long","plural","ceil","selectColor","colors","prevColor","disabled","enabled","curr","prevTime","diff","useColors","color","coerce","formatter","formatters","formatArgs","logFn","namespaces","save","skips","names","disable","humanize","firebug","exception","table","lastC","storage","removeItem","localstorage","localStorage","chrome","isWindows","forwardSlashPattern","protocolPattern","urlEncodePatterns","urlDecodePatterns","keepFileProtocol","isFileUrl","hashIndex","lastDot","resolvedValue","merged","ctor","superCtor","super_","TempCtor","seen","stylize","stylizeNoColor","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","arrayToHash","recurseTimes","primitive","formatPrimitive","visibleKeys","getOwnPropertyNames","formatError","braces","toUTCString","formatArray","formatProperty","reduceToSingleString","numLinesEst","cur","ar","pad","time","getHours","getMinutes","getSeconds","months","getMonth","formatRegExp","deprecate","throwDeprecation","traceDeprecation","noDeprecation","debugEnviron","debugs","env","NODE_DEBUG","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","origin","Klass","formattedMessage","newError","extendError","extendToJSON","targetError","sourceError","errorToJSON","omitVendorSpecificProperties","vendorSpecificErrorProperties","eval","EvalError","ReferenceError","SyntaxError","URIError","cleanUpNextTick","draining","currentQueue","queueIndex","drainQueue","clearTimeout","Item","fun","noop","argv","versions","chdir","dir","umask","mapDomain","regexSeparators","ucs2encode","stringFromCharCode","basicToDigit","digitToBasic","flag","adapt","numPoints","firstTime","damp","baseMinusTMin","tMax","skew","basic","oldi","w","baseMinusT","inputLength","initialN","bias","initialBias","delimiter","maxInt","tMin","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toASCII","regexNonASCII","freeExports","freeModule","freeGlobal","punycode","not-basic","invalid-input","ucs2","qs","eq","maxKeys","kstr","vstr","stringifyPrimitive","ks","Url","search","urlParse","parseQueryString","slashesDenoteHost","urlFormat","urlResolve","relative","urlResolveObject","resolveObject","portPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","ftp","gopher","http:","https:","ftp:","gopher:","file:","querystring","rest","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","domainArray","newOut","ae","qm","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isCircular","dereferenced","dereference$Ref","foundCircularReference","directCircular","dereferencedValue","SwaggerParser","apiParam","supportedSwaggerVersions","circular$RefOption","toInteger","defined","TO_STRING","$at","iterated","_t","point","addToUnscopables","toIObject","_k","Arguments","NodeList","HTMLCollection","descriptor","setToStringTag","IteratorPrototype","NAME","redefine","hide","$iterCreate","getProto","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","Base","IS_SET","FORCED","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","core","DESCRIPTORS","KEY","redefineAll","$iterDefine","ID","$has","setSpecies","isExtensible","SIZE","fastKey","_f","IS_MAP","ADDER","_l","callbackfn","setStrong","bitmap","createDesc","stat","fails","IS_WEAK","_c","IS_ADDER","ArrayProto","getIteratorMethod","SHARED","store","px","random","uid","Symbol","cof","ARG","T","callee","_instance","_schema","_Promise","endsWith","methodPtr","resolveRefs","injectPointers","dirName","pathParamsPtr","methodParamsPtr","methodParams","_step","_iterator","_iteratorNormalCompletion","x-traitTag","tag2MethodMapping","_Map","definedTags","_step2","_iterator2","_iteratorNormalCompletion2","_step3","_iterator3","_iteratorNormalCompletion3","_step4","_iterator4","_iteratorNormalCompletion4","methodPointer","compile","methodSummary","_step5","_iterator5","_iteratorNormalCompletion5","tagDetails","defPointer","globalDefs","_step6","_iterator6","_iteratorNormalCompletion6","defName","subTypes","findIndex","subType","$keys","_self","WorkerGlobalScope","Prism","Token","languages","redef","inside","before","insert","grammar","newToken","DFS","highlightAll","async","elements","highlightElement","language","hooks","Worker","worker","highlightedCode","immediateClose","highlight","strarr","tokenloop","patterns","lookbehind","lookbehindLength","lastIndex","after","aliases","markup","prolog","doctype","cdata","punctuation","attr-value","attr-name","mathml","atrule","important","function","style-attr","clike","class-name","keyword","operator","template-string","interpolation","interpolation-punctuation","js","fileHighlight","Extensions","py","ps1","psm1","extension","statusText","actionscript","macro","constant","cpp","csharp","preprocessor","php","shell-comment","variable","package","tokenStack","backupCode","coffeescript","class-member","multiline-comment","block-regex","inline-javascript","multiline-string","go","builtin","haskell","import_statement","hvariable","java","lua","matlab","perl","filehandle","vstring","python","triple-quoted-string","percent-operator","ellipsis","ruby","insideString","bash","shebang","swift","objectivec","scala","marked","rules","normal","gfm","tables","InlineLexer","inline","Renderer","breaks","pedantic","unescape","opt","pending","lex","escaped","silent","newline","fences","heading","nptable","lheading","blockquote","paragraph","bullet","lexer","bq","loose","align","cells","ordered","smartLists","sanitize","sanitizer","autolink","reflink","nolink","em","del","_inside","_href","mangle","inLink","outputLink","codespan","smartypants","langPrefix","raw","headerPrefix","xhtml","listitem","tablerow","tablecell","flags","prot","reverse","tok","parseText","row","cell","setOptions","inlineLexer","InvalidPipeArgumentException","KeysPipe","ValuesPipe","JsonPointerEscapePipe","MarkedPipe","langMap","_BaseException","c++","c#","objective-c","shell","viml","safeConcat","snapshot","commonInputs","JsonPipe","AsyncPipe","componentDecorator","Detached","prepareModel","dereferencedCache","resolvedRef","warn","into","subSchema","omitParent","errMessage","_into$required","_toConsumableArray","traverse","invalid_pipe_argument_exception_1","ObservableStrategy","createSubscription","updateLatestValue","ObservableWrapper","subscription","onDestroy","PromiseStrategy","_promiseStrategy","_observableStrategy","_ref","_latestValue","_latestReturnedValue","_subscription","_obj","_strategy","_dispose","_subscribe","WrappedValue","_selectStrategy","_updateLatestValue","isPromise","isObservable","UpperCasePipe","LowerCasePipe","SlicePipe","intl_1","defaultLocale","DatePipe","fromMillis","_ALIASES","DateFormatter","medium","fullDate","longDate","mediumDate","shortDate","mediumTime","shortTime","digitCondition","nameCondition","extractComponents","era","weekday","hour12","timeZoneName","NumberFormatStyle","NumberFormatter","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","currency","currencyAsSymbol","intlOptions","Currency","currencyDisplay","Intl","NumberFormat","dateFormatterCache","DateTimeFormat","_re","NumberPipe","_format","minInt","minFraction","maxFraction","parseIntAutoRadix","DecimalPipe","Decimal","PercentPipe","Percent","CurrencyPipe","currencyCode","symbolDisplay","ReplacePipe","_supportedInput","replacement","_supportedPattern","_supportedReplacement","rgxPattern","interpolationExp","I18nPluralPipe","valueStr","pluralMap","isStringMap","I18nSelectPipe","async_pipe_1","uppercase_pipe_1","lowercase_pipe_1","json_pipe_1","slice_pipe_1","date_pipe_1","number_pipe_1","replace_pipe_1","i18n_plural_pipe_1","i18n_select_pipe_1","common_pipes_1","control_container_1","ng_control_1","control_value_accessor_1","shared_1","validators_1","controlNameBinding","NgControl","forwardRef","NgControlName","_parent","_validators","_asyncValidators","valueAccessors","update","_added","valueAccessor","selectValueAccessor","formDirective","addControl","isPropertyUpdated","viewModel","model","updateModel","removeControl","viewToModelUpdate","newValue","callEmit","controlPath","composeValidators","composeAsyncValidators","getControl","Host","SkipSelf","Self","NG_VALIDATORS","NG_ASYNC_VALIDATORS","NG_VALUE_ACCESSOR","ControlContainer","formControlBinding","NgFormControl","_isControlChanged","setUpControl","form","updateValueAndValidity","emitEvent","updateValue","model_1","NgModel","_control","Control","controlGroupProvider","NgControlGroup","addControlGroup","removeControlGroup","getControlGroup","formDirectiveProvider","NgFormModel","ngSubmit","Validators","asyncValidator","composeAsync","onlySelf","_updateDomValue","ctrl","setUpControlGroup","onSubmit","writeValue","(submit)","abstract_control_directive_1","AbstractControlDirective","normalizeValidator","normalizeAsyncValidator","_throwError","registerOnChange","emitModelToViewChange","markAsDirty","registerOnTouched","markAsTouched","validators","normalize_validator_1","isFirstChange","looseIdentical","defaultAccessor","builtinAccessor","customAccessor","hasConstructor","default_value_accessor_1","DefaultValueAccessor","checkbox_value_accessor_1","CheckboxControlValueAccessor","number_value_accessor_1","NumberValueAccessor","select_control_value_accessor_1","SelectControlValueAccessor","radio_control_value_accessor_1","RadioControlValueAccessor","NgForm","asyncValidators","ControlGroup","controls","scheduleMicrotask","container","_findContainer","DEFAULT_VALUE_ACCESSOR","_renderer","_elementRef","onChange","onTouched","normalizedValue","(input)","(blur)","CHECKBOX_VALUE_ACCESSOR","(change)","NUMBER_VALUE_ACCESSOR","NgControlStatus","cd","_cd","untouched","touched","pristine","dirty","[class.ng-untouched]","[class.ng-touched]","[class.ng-pristine]","[class.ng-dirty]","[class.ng-valid]","[class.ng-invalid]","SELECT_VALUE_ACCESSOR","NgSelectOption","_updateValueWhenListOfOptionsChanges","Query","ng_control_name_1","ng_form_control_1","ng_model_1","ng_control_group_1","ng_form_model_1","ng_form_1","ng_control_status_1","ng_control_name_2","ng_form_control_2","ng_model_2","ng_control_group_2","ng_form_model_2","ng_form_2","default_value_accessor_2","checkbox_value_accessor_2","radio_control_value_accessor_2","RadioButtonState","number_value_accessor_2","ng_control_status_2","select_control_value_accessor_2","validators_2","RequiredValidator","MinLengthValidator","MaxLengthValidator","PatternValidator","FORM_DIRECTIVES","_convertToPromise","toPromise","_executeValidators","_executeAsyncValidators","_mergeErrors","arrayOfErrors","minlength","requiredLength","actualLength","maxlength","requiredPattern","actualValue","nullValidator","presentValidators","REQUIRED_VALIDATOR","MIN_LENGTH_VALIDATOR","_validator","MAX_LENGTH_VALIDATOR","PATTERN_VALIDATOR","isControl","AbstractControl","_find","ControlArray","at","toObservable","fromPromise","VALID","INVALID","PENDING","_pristine","_touched","_value","_status","_errors","_valueChanges","_statusChanges","markAsPending","setParent","_updateValue","_runValidator","_calculateStatus","_runAsyncValidator","_cancelExistingSubscription","obs","_asyncValidationSubscription","setErrors","_updateControlsErrors","getError","_initObservables","_anyControlsHaveStatus","_onChange","optionals","_optionals","_setParentForControls","controlName","_included","_reduceValue","_reduceChildren","acc","initValue","removeAt","modelModule","FormBuilder","controlsConfig","_reduceControls","_createControl","controlConfig","RADIO_VALUE_ACCESSOR","RadioControlRegistry","_accessors","accessor","indexToRemove","select","fireUncheck","_registry","_injector","_fn","Input","Injector","directives_1","form_builder_1","form_builder_2","FORM_BINDINGS","__require","__exports","__module","_retrieveGlobal","prepareGlobal","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_initialClasses","_applyInitialClasses","_applyClasses","_rawClass","_cleanupClasses","_iterableDiffer","_keyValueDiffer","isListLikeIterable","_applyIterableChanges","_applyKeyValueChanges","rawClassVal","forEachAddedItem","_toggleClass","forEachChangedItem","forEachRemovedItem","previousValue","isCleanup","expVal","IterableDiffers","KeyValueDiffers","NgFor","_viewContainer","_templateRef","_cdr","_ngForOf","_differ","_ngForTrackBy","_applyChanges","recordViewTuples","removedRecord","RecordViewTuple","forEachMovedItem","movedRecord","insertTuples","_bulkRemove","addedRecord","_bulkInsert","_perViewChange","ilen","viewRef","setLocal","forEachIdentityChange","currentIndex","tuples","movedTuples","tuple","detach","createEmbeddedView","ViewContainerRef","TemplateRef","NgIf","_prevCondition","newCondition","NgStyle","_differs","_rawStyle","_setStyle","decorators_1","WrappedException","exception_handler_1","_componentProviders","APP_COMPONENT","APP_COMPONENT_REF_PROMISE","dynamicComponentLoader","loadAsRoot","_unloadComponent","componentRef","getOptional","TestabilityRegistry","registerApplication","dynamic_component_loader_1","createNgZone","enableLongStackTrace","lockMode","_platform","_platformProviders","_createPlatform","disposePlatform","resolveAndCreate","PlatformRef_","_runPlatformInitializers","inits","_runAppInitializers","APP_INITIALIZER","retVal","console_1","profile_1","PlatformRef","_applications","_disposeListeners","registerDisposeListener","app","_initApp","asyncApplication","bindingFn","additionalProviders","exceptionHandler","resolveAndCreateChild","onError","stackTrace","print","ApplicationRef_","_applicationDisposed","_bootstrapListeners","_rootComponents","_rootComponentTypes","_changeDetectorRefs","_runningTick","_enforceNoNewChanges","onMicrotaskEmpty","registerBootstrapListener","registerChangeDetector","unregisterChangeDetector","componentProviders","compRefToken","_loadComponent","tickResult","Console","appChangeDetector","internalElement","parentView","_tickScope","detector","checkNoChanges","wtfLeave","wtfCreateScope","NgZoneError","api_1","RenderComponentType","view_manager_1","AppViewManager","query_list_1","element_ref_1","template_ref_1","EmbeddedViewRef","HostViewRef","ViewRef","HostViewFactoryRef","view_container_ref_1","dynamic_component_loader_2","ComponentRef","asNativeElements","debugEls","_queryElementChildren","_queryNodeChildren","nativeNode","_nativeNodeToDebugNode","getAllDebugNodes","MapWrapper","locals","componentInstance","inject","getLocal","childIndex","newChildren","siblingIndex","previousChildren","nextChildren","queryAll","queryAllNodes","triggerEventHandler","NgZoneImpl","onEnter","onLeave","setMicrotask","setMacrotask","Zone","fork","isAngularZone","onInvokeTask","delegate","applyThis","applyArgs","invokeTask","onInvoke","onHasTask","hasTaskState","hasTask","microTask","macroTask","onHandleError","handleError","isInAngularZone","runInner","runGuarded","runOuter","ng_zone_impl_1","ng_zone_impl_2","_hasPendingMicrotasks","_hasPendingMacrotasks","_isStable","_nesting","_onUnstable","_onMicrotaskEmpty","_onStable","_onErrorEvents","_zoneImpl","_checkStable","hasMicrotasks","hasMacrotasks","assertInAngularZone","assertNotInAngularZone","getter","_testabilityGetter","_ngZone","_pendingCount","_isZoneStable","_didWork","_callbacks","_watchAngularEvents","onUnstable","onStable","scheduleMicroTask","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","hasPendingMacrotasks","getPendingRequestCount","_NoopGetTestability","_reflector","Reflector","pipe_provider_1","getResolvedDirectiveMetadata","DirectiveProvider","createFromType","getResolvedPipeMetadata","PipeProvider","CODEGEN_RESOLVED_METADATA_CACHE","CODEGEN_DIRECTIVE_RESOLVER","CODEGEN_PIPE_RESOLVER","_cache","annotations","ViewMetadata","_throwMixingViewAndComponent","_isDirectiveMetadata","DirectiveMetadata","typeMetadata","propertyMetadata","propMetadata","_mergeWithPropertyMetadata","dm","InputMetadata","bindingPropertyName","OutputMetadata","HostBindingMetadata","hostPropertyName","HostListenerMetadata","ContentChildrenMetadata","ViewChildrenMetadata","ContentChildMetadata","ViewChildMetadata","_merge","mergedOutputs","mergedInputs","mergedHost","mergedQueries","QueryMetadata","ViewQueryMetadata","AttributeMetadata","PipeMetadata","directives_2","makeDecorator","View","makeParamDecorator","ContentChildren","makePropDecorator","ContentChild","ViewChild","ViewQuery","Output","HostBinding","HostListener","_isPipeMetadata","metas","annotation","isHostViewFactory","metadatas","DependencyMetadata","_selector","ElementRef_","_appElement","ViewContainerRef_","_element","nestedViews","views","templateRef","vm","createEmbeddedViewInContainer","createHostView","hostViewFactoryRef","createHostViewInContainer","attachViewInContainer","internalView","destroyViewInContainer","detachViewInContainer","TemplateRef_","ExpressionChangedAfterItHasBeenCheckedException","ChangeDetectionError","SimpleChange","CollectionChangeRecord","KeyValueChangeRecord","_inputs","_properties","_outputs","_providers","_bindings","InjectableMetadata","viewBindings","_viewProviders","_viewBindings","_pure","copied","SkipSelfMetadata","OptionalMetadata","DefaultIterableDifferFactory","cdRef","trackByFn","DefaultIterableDiffer","trackByIdentity","_trackByFn","_collection","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","forEachItem","_next","forEachPreviousItem","_nextPrevious","_nextAdded","_nextMoved","_nextRemoved","_nextIdentityChange","collection","check","_reset","itemTrackBy","mayBeDirty","isImmutable","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","_truncate","iterateListLike","isDirty","nextRecord","previousRecord","_prev","_remove","_moveAfter","_reinsertAfter","_addAfter","reinsertRecord","_addToMoves","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","toIndex","moves","removals","identityChanges","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","afterIndex","getMapKey","recordList","kv","DefaultKeyValueDifferFactory","isJsObject","DefaultKeyValueDiffer","_records","_mapHead","_previousMapHead","_changesHead","_changesTail","_nextChanged","createFromPairs","records","oldSeqRecord","lastOldSeqRecord","lastNewSeqRecord","seqChanged","_forEach","newSeqRecord","_addToChanges","_removeFromSeq","_addToAdditions","_isInRemovals","_removeFromRemovals","lastRecord","rec","newCharacterToken","TokenType","Character","newIdentifierToken","newKeywordToken","Keyword","newOperatorToken","Operator","newStringToken","newNumberToken","isIdentifierStart","$_","isIdentifier","scanner","_Scanner","advance","isIdentifierPart","isDigit","isExponentStart","$e","$E","isExponentSign","$PLUS","$n","$FF","$r","$t","$v","$VTAB","scanToken","numValue","strValue","isCharacter","isOperator","operater","isKeyword","isKeywordVar","isKeywordNull","isKeywordUndefined","isKeywordTrue","isKeywordFalse","toNumber","$PERCENT","$LPAREN","$RPAREN","$STAR","$COMMA","$PERIOD","$QUESTION","$BACKSLASH","$CARET","$u","$LBRACE","$BAR","$RBRACE","ScannerError","scanIdentifier","scanNumber","scanCharacter","scanString","scanOperator","scanComplexOperator","one","twoCode","two","threeCode","three","KEYWORDS","marker","StringJoiner","unescapedCode","hex","unescaped","createFromList","lexer_1","_implicitReceiver","ImplicitReceiver","INTERPOLATION_REGEXP","ParseException","errLocation","ctxLocation","_lexer","providedReflector","_checkNoInterpolation","_ParseAST","parseChain","ASTWithSource","_parseBindingAst","parseSimpleBinding","SimpleExpressionChecker","_parseQuote","prefixSeparatorIndex","uninterpretedExpression","Quote","strings","_findInterpolationErrorColumn","Interpolation","LiteralPrimitive","partInErrIdx","optionalCharacter","optionalKeywordVar","peekKeywordVar","expectCharacter","optionalOperator","op","expectOperator","expectIdentifierOrKeyword","expectIdentifierOrKeywordOrString","exprs","parsePipe","EmptyExpr","Chain","parseExpression","BindingPipe","parseConditional","inputIndex","parseLogicalOr","yes","no","Conditional","parseLogicalAnd","Binary","parseEquality","parseRelational","parseAdditive","parseMultiplicative","parsePrefix","PrefixNot","parseCallChain","parsePrimary","parseAccessMemberOrMethodCall","KeyedWrite","KeyedRead","parseCallArguments","FunctionCall","parseExpressionList","LiteralArray","parseLiteralMap","literalValue","LiteralMap","receiver","isSafe","SafeMethodCall","MethodCall","PropertyWrite","PropertyRead","SafePropertyRead","positionals","parseBlockContent","expectTemplateBindingKey","operatorFound","TemplateBinding","visitImplicitReceiver","visitInterpolation","visitLiteralPrimitive","visitPropertyRead","visitPropertyWrite","visitSafePropertyRead","visitMethodCall","visitSafeMethodCall","visitFunctionCall","visitLiteralArray","visitLiteralMap","visitBinary","visitPrefixNot","visitConditional","visitKeyedRead","visitKeyedWrite","visitChain","visitQuote","DebugContext","componentElement","genDebugInfo","logBindingUpdate","sanitizeName","_whiteSpaceRegExp","_STATE_ACCESSOR","_PROP_BINDING_INDEX","_DIRECTIVES_ACCESSOR","_DISPATCHER_ACCESSOR","_LOCALS_ACCESSOR","_MODE_ACCESSOR","_PIPES_ACCESSOR","_PROTOS_ACCESSOR","CONTEXT_ACCESSOR","CONTEXT_INDEX","_FIELD_PREFIX","CodegenNameUtil","_eventBindings","_directiveRecords","_utilName","_sanitizedEventNames","_sanitizedNames","iLen","ebIndex","eb","_addFieldPrefix","getDispatcherName","getPipesAccessorName","getProtosName","getDirectivesAccessorName","getLocalsAccessorName","getStateName","getModeName","getPropertyBindingIndex","getLocalName","getEventLocalName","getChangeName","genInitLocals","assignments","getFieldCount","getFieldName","argumentToPureFunction","changeName","assignmentsCode","genInitEventLocals","getPreventDefaultAccesor","getAllFieldNames","fieldList","kLen","shouldBeChecked","isPipeRecord","getPipeName","selfIndex","jLen","dRec","getDirectiveName","isDefaultChangeDetection","getDetectorName","genDehydrateFields","fields","genPipeOnDestroy","codegen_facade_1","proto_record_1","CodegenLogicUtil","_names","_changeDetectorStateName","genPropertyBindingEvalValue","protoRec","_genEvalValue","genEventBindingEvalValue","eventRecord","localsAccessor","rhs","contextIndex","argString","mode","RecordType","Const","codify","funcOrValue","SafeProperty","Local","rawString","InvokeMethod","SafeMethodInvoke","InvokeClosure","PrimitiveOp","CollectionLiteral","Interpolate","_genInterpolation","genPropertyBindingTargets","propertyBindingTargets","genDirectiveIndices","iVals","fixedArgs","combineGeneratedStrings","genHydrateDirectives","outputCount","dirVarName","_genReadDirective","_genEventHandler","statementStart","genDirectivesOnDestroy","genHydrateDetectors","genContentLifecycleCallbacks","genViewLifecycleCallbacks","vals","AST","condition","trueExp","falseExp","AstTransformer","EventBinding","elIndex","coalesce","srcRecords","dstRecords","excludedIdxs","indexMap","skipDepth","skipSources","protoIndex","skipRecord","_cloneAndUpdateIndexes","isSkipRecord","_mayBeAddRecord","_optimizeSkips","isConditionalSkipRecord","SkipRecords","SkipRecordsIf","SkipRecordsIfNot","excluded","_findFirstMatch","lastInBinding","_createSelfRecord","referencedBySelf","rr","DirectiveLifecycle","_haveSameDirIndex","_srcToDstSelfIndex","ProtoRecord","lastInDirective","propertyBindingIndex","srcIdx","dstIdx","di1","ei1","di2","ei2","createPropertyRecords","recordBuilder","ProtoRecordBuilder","coalesce_1","createEventRecords","varNames","_ConvertAstIntoProtoRecords","implicitReceiver","directive_record_1","event_binding_1","_arrayFn","arrayFn0","arrayFn1","arrayFn2","arrayFn3","arrayFn4","arrayFn5","arrayFn6","arrayFn7","arrayFn8","arrayFn9","_mapPrimitiveName","stringifiedKeys","_operationToPrimitiveName","_operationToFunction","operation_add","operation_subtract","operation_multiply","operation_divide","operation_remainder","operation_equals","operation_not_equals","operation_identical","operation_not_identical","operation_less_then","operation_greater_then","operation_less_or_equals_then","operation_greater_or_equals_then","_interpolationFn","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","a1","a2","a3","a4","a5","a6","a7","a8","a9","dynamic_change_detector_1","_definition","_propertyBindingRecords","_eventBindingRecords","_propertyBindingTargets","_directiveIndices","DynamicChangeDetector","bindingIndex","oldLast","numberOfRecordsBefore","_appendRecords","newLast","_setArgumentToPureFunction","startIndex","isPureFunction","recordIndex","isDirectiveLifecycle","lifecycleEvent","append","_bindingRecord","_variableNames","_bindingIndex","_visitAll","_addRecord","primitiveName","mapFn","branchEnd","cond","operation_negate","startOfFalseBranch","endOfFalseBranch","whenTrue","skip","whenFalse","keyedAccess","codegen_name_util_1","codegen_logic_util_1","proto_change_detector_1","IS_CHANGED_LOCAL","CHANGES_LOCAL","changeDetectionUtilVarName","abstractChangeDetectorVarName","changeDetectorStateVarName","propertyBindingRecords","eventBindingRecords","eventBindings","_logic","factorySource","_genAllRecords","_maybeGenHandleEventInternal","_maybeGenAfterContentLifecycleCallbacks","_maybeGenAfterViewLifecycleCallbacks","_maybeGenHydrateDirectives","_maybeGenDehydrateDirectives","_genPropertyBindingTargets","_genDirectiveIndices","targets","indices","handlers","_genEventBinding","codes","_endOfBlockIdxs","_genConditionalSkip","isUnconditionalSkipRecord","_genUnconditionalSkip","_genEventBindingEval","_genEndOfSkipBlock","evalRecord","markPath","_genMarkPathToRootAsCheckOnce","prevDefault","_genUpdatePreventDefault","destroyPipesCode","destroyDirectivesCode","dehydrateFieldsCode","hydrateDirectivesCode","hydrateDetectorsCode","notifications","directiveNotifications","isLifeCycleRecord","_genDirectiveLifecycle","_genPipeCheck","_genReferenceCheck","_maybeFirstInBinding","_maybeGenLastInDirective","maybeNegate","endOfBlock","_genOnCheck","_genOnInit","_genOnChange","oldValue","contexOrArgCheck","_genThrowOnChangeCheck","_genChangeMarker","_genUpdateDirectiveOrElement","_genAddToChanges","genCode","isUsedByOtherRecord","notifyDebug","isDirective","directiveProperty","protoByIndex","firstInBinding","_genNotifyOnPushDetectors","JitProtoChangeDetector","_factory","_createFactory","isSupported","currValue","originalException","originalStack","DehydratedException","EventEvaluationError","EventEvaluationErrorContext","Locals","clearLocalValues","clearValues","change_detector_ref_1","locals_1","_scope_check","_Context","numberOfPropertyProtoRecords","bindingTargets","directiveIndices","contentChildren","viewChildren","NeverChecked","ChangeDetectorRef_","addContentChild","removeContentChild","addViewChild","removeViewChild","handleEvent","hydrated","throwDehydratedError","handleEventInternal","markPathToRootAsCheckOnce","dispatcher","getDebugContext","runDetectChanges","throwOnChange","Checked","Errored","detectChangesInRecords","_detectChangesContentChildren","afterContentLifecycleCallbacks","_detectChangesInViewChildren","afterViewLifecycleCallbacks","CheckOnce","CheckedBefore","detectChangesInRecordsInternal","hydrate","changeDetectionMode","hydrateDirectives","dehydrate","dehydrateDirectives","_unsubscribeFromOutputs","destroyPipes","destroyRecursive","notifyOnDestroy","notifyAfterContentChecked","afterContentLifecycleCallbacksInternal","notifyAfterViewChecked","afterViewLifecycleCallbacksInternal","markAsCheckOnce","outputSubscriptions","getDirectiveFor","getDetectorFor","notifyDispatcher","notifyOnBinding","_currentBinding","addChange","simpleChange","throwOnChangeError","localPipes","prevContexts","_matchingEventBindings","_processEventBinding","protoIdx","_computeSkipLength","_markPathAsCheckOnce","_calculateCurrValue","_writeSelf","_readContext","_getDetectorFor","_createEventHandler","_getDirectiveFor","_destroyPipes","_destroyDirectives","uninitialized","callPipeOnDestroy","protos","isChanged","_firstInBinding","_check","_updateDirectiveOrElement","_addChange","dirs","_pipeCheck","_referenceCheck","_pureFuncAndArgsDidNotChange","_setChanged","_readSelf","detectedChange","devModeEqual","looseNotIdentical","_readArgs","FunctionWrapper","selectedPipe","_pipeFor","_argsOrContextChanged","unwrapValue","storedPipe","_readPipe","_writePipe","_argsChanged","reattach","CheckAlways","implementsOnDestroy","DIRECTIVE_LIFECYCLE","BINDING","DIRECTIVE","ELEMENT_PROPERTY","ELEMENT_ATTRIBUTE","ELEMENT_CLASS","ELEMENT_STYLE","EVENT","HOST_EVENT","BindingTarget","isElementProperty","isElementAttribute","isElementClass","isElementStyle","isDefaultChangeDetectionStrategy","CHANGE_DETECTOR_STATE_VALUES","_simpleChange","pipe_lifecycle_reflector_1","binding_record_1","_wrappedValues","_wrappedIndex","trueVal","falseVal","buildMap","isValueBlank","bindingTarget","areIterablesEqual","iterable_differs_1","default_iterable_differ_1","keyvalue_differs_1","default_keyvalue_differ_1","default_keyvalue_differ_2","default_iterable_differ_2","parser_1","jit_proto_change_detector_1","iterable_differs_2","keyvalue_differs_2","keyValDiff","iterableDiff","defaultIterableDiffers","defaultKeyValueDiffers","PromiseCompleter","rej","catchError","success","rejection","computation","Subscription_1","SubjectSubscription","isUnsubscribed","unsubscribe","observers","subscriberIndex","Subscription","ObjectUnsubscribedError","Observable_1","Subscriber_1","SubjectSubscription_1","rxSubscriber_1","throwError_1","ObjectUnsubscribedError_1","Subject","isStopped","hasErrored","dispatching","hasCompleted","lift","subscriber","errorValue","complete","throwIfUnsubscribed","_unsubscribe","_error","_complete","asObservable","observable","SubjectObservable","_finalNext","_finalError","_finalComplete","$$rxSubscriber","Subscriber","Observable","dispatchNext","dispatchError","root_1","PromiseObservable","scheduler","_isScalar","schedule","PromiseCtor","Rx","$$observable","tryCatcher","tryCatchTarget","errorObject_1","errorObject","tryCatch","isArray_1","isObject_1","isFunction_1","tryCatch_1","hasErrors","_subscriptions","trial","UnsubscriptionError","EMPTY","subscriptions","subscriptionIndex","Observer_1","destinationOrNext","syncErrorValue","syncErrorThrown","syncErrorThrowable","SafeSubscriber","observerOrNext","_context","__tryOrSetError","__tryOrUnsub","objectTypes","toSubscriber","nextOrObserver","observable_1","toSubscriber_1","Subject_1","PromiseObservable_1","toPromise_1","Subject_2","TimerWrapper","millis","setInterval","clearInterval","onNext","hasSubscribers","callNext","callError","callComplete","isAsync","_isAsync","generatorOrNext","schedulerFn","errorFn","completeFn","_results","_emitter","getSymbolIterator","reset","notifyOnChanges","provider_1","resolvedFactories","multiBinding","resolveProvider","multiProvider","ResolvedProvider_","setProvidersVisibility","visibility","_staticKeys","injector_1","provider_2","element_ref_2","view_container_ref_2","StaticKeys","templateRefId","Key","viewContainerId","changeDetectorRefId","elementRefId","rendererId","DirectiveDependency","optional","lowerBoundVisibility","upperBoundVisibility","queryDecorator","_verify","createFrom","_attributeName","_query","Dependency","ResolvedFactory","rf","resolvedProviders","resolvedViewProviders","fieldName","QueryMetadataWithSetter","firstProviderIsComponent","pwvs","protoQueryRefs","directiveVariableBindings","protoInjector","ProtoInjector","directiveTypes","componentDirProvider","mergedProvidersMap","providerVisibilityMap","dirProvider","ProviderWithVisibility","Visibility","PublicAndPrivate","Public","mergeResolvedProviders","Private","queryIdx","ProtoQueryRef","getProviderAtIndex","InjectorWithHostBoundary","hostInjectorBoundary","componentView","parentInjector","isBoundary","_queryStrategy","_buildQueryStrategy","_debugContext","injectorStrategy","internalStrategy","InjectorInlineStrategy","ElementDirectiveInlineStrategy","ElementDirectiveDynamicStrategy","getViewParentInjector","parentViewType","containerAppElement","imperativelyCreatedProviders","hostBoundary","imperativeProvidersWithVisibility","attachComponentView","hasVariableBinding","vb","getVariableBinding","getDirectiveAtIndex","getElementRef","hasDirective","getInjector","getViewContainerRef","getTemplateRef","getDependency","dep","dirDep","_buildAttribute","findQuery","_ComponentViewChangeDetectorRef","NoProviderError","UNDEFINED","addDirectivesMatchingQuery","_emptyQueryStrategy","InlineQueryStrategy","NUMBER_OF_SUPPORTED_QUERIES","DynamicQueryStrategy","getAt","updateViewQueries","updateContentQueries","traverseAndSetQueriesAsDirty","inj","_setQueriesAsDirty","setContentQueriesAsDirty","setViewQueriesAsDirty","_EmptyQueryStrategy","ei","protoRefs","query0","QueryRef","query1","query2","isViewQuery","protoQueryRef","_ei","protoStrategy","resetConstructionCounter","provider0","keyId0","obj0","instantiateProvider","visibility0","provider1","keyId1","obj1","visibility1","provider2","keyId2","obj2","visibility2","provider3","keyId3","obj3","visibility3","provider4","keyId4","obj4","visibility4","provider5","keyId5","obj5","visibility5","provider6","keyId6","obj6","visibility6","provider7","keyId7","obj7","visibility7","provider8","keyId8","obj8","visibility8","provider9","keyId9","obj9","visibility9","isComponentKey","keyIds","objs","visibilities","ist","originator","_update","usesPropertySyntax","aggregator","nestedView","_visitView","_visit","startIdx","curInj","_visitInjector","_visitViewContainerViews","isVarBindingQuery","_aggregateVariableBinding","_aggregateDirective","varBindings","ViewRef_","_view","flatRootNodes","variableName","hasLocal","destroyed","_hostViewFactory","SelectedPipe","ProtoPipes","fromProviders","Pipes","_config","instantiateResolved","_localsToStringMap","toStringMap","_flattenNestedViewRenderNodes","findLastRenderNode","lastNode","componentName","expectedSlotCount","givenSlotCount","pipes_1","interfaces_2","pipes_2","REFLECT_PREFIX","EMPTY_CONTEXT","injectorWithHostBoundary","protoPipes","allNodes","disposables","localsMap","numberOfProviders","RenderDebugInfo","parentLocals","onViewCreated","onViewDestroyed","contextName","appElement","boundPipes","detectWTF","wtf","createScope","signature","leave","leaveScope","startTimeRange","rangeType","action","beginTimeRange","endTimeRange","noopScope","arg0","arg1","impl","wtfEnabled","wtfStartTimeRange","wtfEndTimeRange","extractAnnotation","applyParams","fnOrArray","annoLength","paramsAnnotations","ii","paramAnnotations","defineMetadata","clsDef","_nextClassId","annotationCls","chainFn","DecoratorFactory","objOrType","annotationInstance","chainAnnotation","TypeDecorator","cls","getOwnMetadata","ParamDecoratorFactory","ParamDecorator","unusedKey","getMetadata","annotationsForParam","decoratorCls","PropDecoratorFactory","decoratorInstance","InjectMetadata","SelfMetadata","HostMetadata","canSee","_mapProviders","_proto","exceptions_2","key_1","_MAX_CONSTRUCTION_COUNTER","ProtoInjectorInlineStrategy","protoEI","bwv","getKeyId","OutOfBoundsError","createInjectorStrategy","ProtoInjectorDynamicStrategy","protoInj","InjectorDynamicStrategy","fromResolvedProviders","bd","_constructionCounter","_new","getObjByKeyId","keyId","getObjAtIndex","getMaxNumberOfObjects","_isHostBoundary","_depProvider","resolveProviders","fromResolvedBindings","debugContext","_getByKey","createChildFromResolved","resolveAndInstantiate","_instantiateProvider","CyclicDependencyError","_instantiate","resolvedFactory","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","d10","d11","d12","d13","d14","d15","d16","d17","d18","d19","_getByDependency","AbstractProviderError","InstantiationError","addKey","providerVisibility","INJECTOR_KEY","_getByKeySelf","_getByKeyHost","_getByKeyDefault","_throwOrNull","_getPrivateDependency","ProviderBuilder","resolveFactory","factoryFn","resolvedDeps","forward_ref_1","_dependenciesFor","aliasInstance","fromKey","_constructDependencies","_EMPTY_LIST","normalized","_normalizeProviders","normalizedProvidersMap","existing","MixingMultiProvidersWithRegularProvidersError","resolvedProvider","InvalidProviderError","factoryFunction","_extractToken","typeOrFunc","NoAnnotationError","depProps","_createDependency","paramMetadata","_multi","Binding","toClass","toValue","toAlias","toFactory","isType","aliasToken","forwardRefFn","__forward_ref__","_globalKeyRegistry","numberOfKeys","KeyRegistry","_allKeys","newKey","findFirstClosedCycle","constructResolvingPath","tokenStrs","constructResolvingMessage","injectors","_genMessage","_desc","opaque_token_1","_appIdRandomProviderFactory","_randomChar","APP_ID","APP_ID_RANDOM_PROVIDER","AppViewManager_","_appId","_nextCompTypeId","_createRootHostViewScope","_destroyRootHostViewScope","_createEmbeddedViewInContainerScope","_createHostViewInContainerScope","_destroyViewInContainerScope","_attachViewInContainerScope","_detachViewInContainerScope","getViewContainer","getHostElement","hostViewRef","getNamedElementInComponentView","hostLocation","compAppEl","createRootHostView","overrideSelector","internalHostViewFactory","destroyRootHostView","viewContainerLocation","contextEl","_attachViewToContainer","viewContainerLocation_","_detachViewInContainer","viewRef_","vcAppElement","refNode","prevView","refRenderNode","ComponentRef_","DynamicComponentLoader_","_compiler","_viewManager","onDispose","hostProtoViewRef","newLocation","loadIntoLocation","anchorName","viewContainer","view_manager_2","_mergeMaps","ReflectionInfo","interfaces","_injectableInfo","_getters","_setters","_methods","_usedKeys","isReflectionEnabled","trackUsage","listUnusedKeys","allTypes","registerFunction","func","funcInfo","registerType","typeInfo","registerGetters","getters","registerSetters","setters","registerMethods","_containsReflectionInfo","_getReflectionInfo","BaseWrappedException","base_wrapped_exception_1","_ArrayLogger","_logger","_rethrowException","exceptionToString","_findOriginalException","_findOriginalStack","_findContext","_extractMessage","_longStackTrace","wrapperMessage","makeTypeError","exception_handler_2","_wrapperMessage","_originalException","_originalStack","_wrapperStack","reflect","_reflect","a10","a11","a12","a13","a14","a15","a16","a17","a18","a19","a20","_zipTypesAndAnnotations","paramTypes","functionBody","reflector_1","reflector_2","getTypeNameForDebugging","_devMode","_global","valueOf","overriddenName","newLineIndex","deserializeEnum","resolveEnumToken","enumValue","_symbolIterator","fnBody","fnArgNames","fnArgValues","argName","bitWiseOr","bitWiseAnd","globalScope","assert","s2","stripLeft","charVal","NumberParseError","fractionDigits","equal","regExpStr","posArgs","seconds","milliseconds","fromISOString","comparator","iterator1","iterator2","item1","item2","createMapFromPairs","pairs","createMapFromMap","_clearValues","keyIterator","_arrayFromMap","getValues","createFromStringMap","m1","m2","k1","k2","createImmutable","seal","removeAll","compareFn","solution","candidate","candidateValue","isSealed","createSetFromList","lst","_WHEN_DEFAULT","SwitchView","_viewContainerRef","NgSwitch","_useDefault","_valueViews","_activeViews","_emptyAllActiveViews","_activateViews","_switchValue","_onWhenValueChanged","oldWhen","newWhen","_deregisterView","_registerView","activeContainers","NgSwitchWhen","ngSwitch","_switch","NgSwitchDefault","sswitch","ng_switch_1","_CATEGORY_DEFAULT","NgLocalization","NgPluralCase","NgPlural","_localization","_caseViews","cases","_updateView","pluralCase","_formatValue","_clearViews","_getCategoryView","_activateView","_activeView","category","getPluralCategory","categoryView","_isValueView","_stripValue","ng_class_1","ng_for_1","ng_if_1","ng_style_1","ng_plural_1","core_directives_1","forms_1","jQuery","require","Dropkick","_docListener","isMobile","isIframe","isIE","appVersion","sel","dk","getElementById","settings","initialize","bubble","classname","toggleClass","box","docElem","offsetLeft","scrollLeft","pageXOffset","clientTop","clientLeft","closest","ancestor","deferred","data-value","role","aria-selected","cacheID","lastChild","selected","dkOption","selectedIndex","multiple","selectedOptions","_changeListener","mobile","onDocClick","isOpen","dropHeight","above","below","direction","dkTop","dkBottom","dkOptsList","display","_scrollTo","disabledClass","combobox","CustomEvent","bubbles","selectOne","tIndex","sIndex","cScore","tScore","focus","defaultSelected","refresh","_keyHandler","_searchOptions","_highlight","selection","firstIndex","getSelection","collapseToStart","lastSelected","down","keyCode","keyChar","which","waitToReset","searchTimeout","searchString","optPos","optTop","optBottom","dkOpts","idpre","selOpt","optList","addOption","optgroupList","label","aria-live","aria-owns","tId","dropkick","DropDown","inst","DropKick","firstElementChild","autoWidth","IObject","$getOwnPropertyDescriptor","getDesc","_Object$getOwnPropertyDescriptor","_x","_x2","_x3","_again","setPrototypeOf","buggy","_Object$create","_Object$setPrototypeOf","subClass","superClass","_Object$defineProperty","defineProperties","protoProps","staticProps","__g","PROTOTYPE","own","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","$Object","isEnum","propertyIsEnumerable","setDescs","getKeys","getNames","getSymbols","getOwnPropertySymbols","assign","__e","hasOwn","refTokens","nextTok","finalToken","dict","descend","walk","_JsonPointerLib","JsonPointerLib","_origParse","baseTokens","resTokens","runInjectors","injectTo","propertySchema","propertyPointer","injName","_JsonSchema","subClassIdx","derived","derivedEmtpy","_isArray","unwrapArray","joinAllOf","isTrivial","prepareObjectPropertiesData","initDerived","enumArr","enumOrder","enumItem","selectDerived","requiredMap","discriminatorFieldIdx","childFor","isDiscriminator","discrProp","_name","general","_displayType","_displayFormat","findDerivedDefinitions","noType","_displayTypeHint","simpleType","_range","REDOC_COMPONENTS","autoInit"],"mappings":"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mCA,MAAcA,EAAEA,SAA2BA;QAC1EU,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;YACpBA,MAAMA,IAAIA,SAASA,EAAEA,CAACA;QAC1BA,CAACA;QACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,CAACA,WAAWA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;YAC/BA,SAASA,GAAGA,aAAaA,CAACA,SAASA,CAACA,CAACA;QACzCA,CAACA;QAEDA,MAAMA,CAACA,uBAAuBA,CAACA,MAAMA,EAAEA,SAASA,CAACA,CAACA;IACtDA,CAACA;IATeV,0BAAkBA,qBASjCA,CAAAA;IAkDDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAiCIA;IACJA,wBAA+BA,WAAgBA,EAAEA,MAAcA,EAAEA,SAA2BA;QACxFW,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;YACpBA,MAAMA,IAAIA,SAASA,EAAEA,CAACA;QAC1BA,CAACA;QACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,CAACA,WAAWA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;YAC/BA,SAASA,GAAGA,aAAaA,CAACA,SAASA,CAACA,CAACA;QACzCA,CAACA;QAEDA,4GAA4GA;QAC5GA,IAAIA,WAAWA,GAAGA,sBAAsBA,CAACA,MAAMA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,KAAKA,CAACA,CAACA;QAC9EA,EAAEA,CAACA,CAACA,WAAWA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA;YAC3BA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEDA,EAAEA,CAACA,CAACA,CAACA,WAAWA,CAACA,MAAMA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA;YACnCA,MAAMA,CAACA,KAAKA,CAACA;QACjBA,CAACA;QAEDA,EAAEA,CAACA,CAACA,WAAWA,CAACA,IAAIA,GAAGA,CAACA,CAACA,CAACA,CAACA;YACvBA,MAAMA,CAACA,IAAIA,C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ACA;QAChCA,CAACA;QACDD,GAAGA,CAACA,SAASA,GAAGA;YACZA,IAAIA,IAAIA;gBACJE,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA;YAC7BA,CAACA;YACDF,GAAGA,YAACA,GAAQA;gBACRG,EAAEA,CAACA,CAACA,GAAGA,KAAKA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACtBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;gBACDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,GAAGA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;oBACvBA,IAAIA,CAACA,MAAMA,GAAGA,GAAGA,CAACA;oBAClBA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;gBACDA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YACDH,GAAGA,YAACA,GAAQA;gBACRI,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,GAAGA,CAACA,CAACA;gBAC5BA,EAAEA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA,CAACA;oBACbA,IAAIA,CAACA,MAAMA,GAAGA,GAAGA,CAACA;oBAClBA,MAAMA,CAACA,IAAIA,CAACA,OAAOA,CAACA,KAAKA,CAACA,CAACA;gBAC/BA,CAACA;gBACDA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YACDJ,GAAGA,YAACA,GAAQA,EAAEA,KAAUA;gBACpBK,IAAIA,CAACA,MAAMA,CAACA,GAAGA,CAACA,CAACA;gBACjBA,IAAIA,CAACA,KAAKA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA;gBACrBA,IAAIA,CAACA,OAAOA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;gBACzBA,IAAIA,CAACA,MAAMA,GAAGA,GAAGA,CAACA;gBAClBA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YACDL,MAAMA,YAACA,GAAQA;gBACXM,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,GAAGA,CAACA,CAACA;gBAC5BA,EAAEA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA,CAACA;oBACbA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,CAACA,OAAOA,CAACA,MAAMA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA;oBAC9BA,IAAIA,CAACA,MAAMA,GAAGA,aAAaA,CAACA;oBAC5BA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;gBACDA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YACDN,KAAKA;gBACDO,IAAIA,CAACA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,CAACA;gBACtBA,IAAIA,CAACA,OAAOA,CAACA,MAAMA,GAAGA,CAACA,CAACA;gBACxBA,IAAIA,CAACA,MAAMA,GAAGA,aAAaA,CAACA;YAChCA,CAACA;YACDP,OAAOA,YAACA,QAA4DA,EAAEA,OAAaA;gBAC/EQ,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,IAAIA,EAAEA,EAAEA,CAACA,EAAEA,CAACA;oBAC5BA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACxBA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,CAACA,MAAMA,GAAGA,GAAGA,CAACA;oBAClBA,QAAQA,CAACA,IAAIA,CAACA,IAAIA,EAAEA,KAAKA,EAAEA,GAAGA,EAAEA,IAAIA,CAACA,CAACA;gBAC1CA,CAACA;YACLA,CAACA;YACDR,KAAKA,YAACA,GAAQA;gBACVS,IAAMA,IAAIA,GAAGA,IAAIA,CAACA,KAAKA,CAACA;gBACxBA,IAAMA,IAAIA,GAAGA,IAAIA,CAACA,MAAMA,CAACA;gBACzBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,IAAIA,EAAEA,EAAEA,CAACA,EAAEA,CAACA;oBAC5BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA,KAAKA,GAAGA,CAACA,CAACA,CAACA;wBAClBA,MAAMA,CAACA,CAACA,CAACA;oBACbA,CAACA;gBACLA,CAACA;gBACDA,MAAMA,CAACA,CAACA,CAACA,CAACA;YACdA,CAACA;SACJT,CAACA;QACFA,MAAMA,CAAMA,GAAGA,CAACA;IACpBA,CAACA;IAED9B,iBAAiBA;IACjBA;QACIwC,IAAMA,aAAaA,GAAGA,EAAEA,CAACA;QACzBA;YACIC,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,IAAIA,EAAYA,CAACA;QACrCA,CAACA;QACDD,GAAGA,CAACA,SAASA,GAAGA;YACZA,IAAIA,IAAIA;gBACJE,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,MAAMA,CAACA;YAC5BA,CAACA;YACDF,GAAGA,YAACA,KAAUA;gBACVG,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,KAAKA,CAACA,CAACA;YAChCA,CAACA;YACDH,GAAGA,YAACA,KAAUA;gBACVI,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,KAAKA,EAAEA,KAAKA,CAACA,CAACA;gBAC5BA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YACDJ,MAAMA,YAACA,KAAUA;gBACbK,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA;YACnCA,CAACA;YACDL,KAAKA;gBACDM,IAAIA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,CAACA;YACtBA,CAACA;YACDN,OAAOA,YAACA,QAAuDA,EAAEA,OAAaA;gBAC1EO,IAAIA,CAACA,IAAIA,CAACA,OAAOA,CAACA,QAAQA,EAAEA,OAAOA,CAACA,CAACA;YACzCA,CAACA;SACJP,CAACA;QACFA,MAAMA,CAAMA,GAAGA,CAACA;IACpBA,CAACA;IAEDxC,qBAAqBA;IACrBA;QACIgD,IAAMA,SAASA,G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KAAA,IACAC,KAAA,IACAC,QAAA,IACAC,QAAA,IACAC,MAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,MAAA,IACAC,KAAA,IACAC,OAAA,IACAC,OAAA,IACAC,OAAA,IACAC,OAAA,IACAC,MAAA,IACAC,MAAA,IACAC,MAAA,IACAC,GAAA,IACAC,GAAA,IACAC,KAAA,IACAC,KAAA,IACAC,OAAA,IACAC,OAAA,IACAC,OAAA,IACAC,OAAA,IACAC,MAAA,IACAC,MAAA,IACAC,MAAA,IACAC,OAAA,IACAC,OAAA,IACAC,MAAA,IACAC,MAAA,IACAC,MAAA,IACAC,KAAA,IACAC,KAAA,IACAC,OAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,MAAA,IACAC,MAAA,IACAC,OAAA,IACAC,OAAA,IACA7sE,KAAA,IACA8sE,MAAA,IACAC,KAAA,IACAC,KAAA,IACAC,MAAA,IACAC,MAAA,IACAC,GAAA,IACAC,OAAA,IACAC,OAAA,IACAC,IAAA,IACAC,IAAA,IACAC,OAAA,IACAC,MAAA,IACAC,GAAA,IACAC,KAAA,IACAC,MAAA,IACAC,MAAA,IACAC,OAAA,IACAC,MAAA,IACAC,GAAA,IACAC,GAAA,IACAC,MAAA,IACAC,KAAA,IACAC,MAAA,IACAC,GAAA,IACAC,GAAA,IACAC,IAAA,IACAC,MAAA,IACAC,KAAA,IACAC,OAAA,IACAC,OAAA,IACAC,GAAA,IACAC,GAAA,IACAC,OAAA,IACAC,OAAA,IACAC,MAAA,IACAC,MAAA,IACAC,MAAA,IACAC,MAAA,IACAC,OAAA,IACAC,OAAA,IACAC,MAAA,IACAC,MAAA,IACAC,MAAA,IACAC,QAAA,IACAC,QAAA,IACAC,MAAA,IACAC,GAAA,IACAC,KAAA,IACAC,KAAA,IACAC,OAAA,IACAC,OAAA,IACAC,OAAA,IACAC,OAAA,IACAC,OAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,OAAA,IACAC,KAAA,IACAC,IAAA,IACAC,IAAA,IAC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AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAU;AAEd;AACI;AACA;AACI;IACJ;AAAA;AAEI;AACA;IACJ;AACA;EACJ;AACA;AAzDA;AACI;AAAa;AAyDgqG;AC1DjrG;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;AAEI;AACI;AAAY;AAEZ;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AAEI;AACA;AACA;AACA;AAAqC;AAAuB;UAAmB;QAAI;AACnF;AACA;AAAqB;QAA6B;MACtD;IACJ;AACA;AAIA;EACJ;AACA;AApDA;AACI;AAAa;AAoD40H;ACrD71H;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AAIA;AACI;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACI;QACJ;AAEI;AACA;AACI;AACI;AACA;YACJ;AAAA;AACJ;AACJ;AAEI;AACA;AACA;AACA;AAA0B;AAE9B;AACI;AACI;UACJ;AAAA;MAER;AAEI;AACA;MACJ;AAAA;AACJ;AAC0D;IAA2B;AACrF;AAAyE;IAAiC;AAC1G;AACI;IACJ;AACA;AAAqE;IAAa;AAClF;AACI;IACJ;AACA;AACI;IACJ;AACA;AAAoE;IAAyE;AAC7I;AACI;IACJ;AACA;EACJ;AACA;AAtEA;AACI;AAAa;AAsEo8O;ACvEr9O;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;A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J;MACJ;AAEI;MACJ;AAAA;AAEJ;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACI;AACI;QACJ;AAAA;AAGA;AACI;QACJ;AAAA;AACJ;AACJ;AACJ;AAEI;AACI;IACJ;AAAA;AACJ;AAEI;AACI;AACA;AAEI;MACJ;AAAA;EAER;AAAA;AAEA;AACA;AACA;AACA;AACI;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;AACI;AACA;AACI;MACJ;AAEI;AACA;MACJ;AAAA;AACJ;EAEJ;AAAA;AAEA;AACI;AACI;IACJ;AAAA;AAEA;EACJ;AAAA;AA/TI;AAAa;AAgU4mkC;ACjU7nkC;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACI;AACI;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AACA;AAAqE;IAAmD;AACxH;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;AAAgC;QAAuD;MAC3F;AAAA;IAEJ;AACA;AACI;AACA;AACI;AACA;AACI;AACA;AAA4C;UAAqE;AACjH;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;AACI;AACA;AACI;QACJ;AAAA;AAEJ;IACJ;AACA;AACI;AAAuC;MAAwE;AAC/G;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACI;MACJ;AAAA;IAEJ;AAKA;AACI;IACJ;AAIA;AACI;AACA;AACA;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AAAmE;IAAiD;AACpH;EACJ;AACA;AAnIA;AACI;AAAa;AAmI4piB;ACpI7qiB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AAAsC;AAAyC;AAAsB;AACrG;AACA;AAMA;AACI;EACJ;AAAA;AAEA;AACI;AACI;IACJ;AAAA;EAEJ;AAAA;AAEI;AACA;AACA;EACJ;AAAA;AAK6C;AAA4C;AAAqC;AAE9H;AAAwG;AAAiC;AAAqC;AAtC9K;AACI;AAAa;AAsCwsI;ACvCztI;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAgC;AAAiB;AACtE;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA1BA;AACI;AAAa;AA0B4qD;AC3B7rD;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AASb;AACI;AACA;AAKyC;IAAqC;AAK9E;AAAiD;IAAsC;AACvF;EACJ;AACA;AA1BA;AACI;AAAa;AA0BgvD;AC3BjwD;;AAAA;AACI;AAAmB;AACnB;AADJ;AAIA;AACA;AACA;AACA;AACA;AAA0C;EAAuB;AAAkB;EAAa;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAjBA;AACI;AAAa;AAiB46D;AClB77D;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AAKA;AACI;AACI;IACJ;AAAA;EAEJ;AACA;AAKA;AACI;AACI;IACJ;AAAA;AAkBI;AACA;AAEA;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACI;AACA;MACJ;AAAA;AAEA;AAKI;MACJ;AAAA;AAEA;AACA;IACJ;AACA;EACJ;AACA;AArEA;AACI;AAAa;AAqEwpM;ACtEzqM;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AAYA;AACI;EACJ;AAAA;AAKA;AACI;EACJ;AAAA;AAzBA;AACI;AAAa;AA0BwuD;AC3BzvD;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AAEqD;AAA0B;AAAU;AAEzF;AAGI;EACJ;AAAA;AAEI;EACJ;AAAA;AAS+C;AAAiC;AAAU;AACtC;AAAsC;AAAU;AACnD;AAA+B;AAAO;AACxC;AAAuB;AAAO;AACd;AAAwC;AAAU;AAClD;AAAwC;AAAU;AAClD;AAAkD;AAAU;AAW3H;AACI;AACA;AACA;EACJ;AAAA;AAlFA;AACI;AAAa;AAmFgnR;ACpFjoR;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;EACJ;AAAA;AAEA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACA;AACA;AACI;MACJ;AAAA;AAIA;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACA;AACI;MACJ;AAAA;AAEA;IACJ;AACA;AAAsE;IAAa;AACnF;AACI;AACA;IACJ;AACA;AACI;AAGA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACI;MAIJ;AAEI;MAIJ;AAEI;MAIJ;AAEI;MAIJ;AAAA;AAEA;IACJ;AACA;AAAiE;IAAa;AAC9E;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AAAiG;MAAoD;AACrJ;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAoB;AAExB;AACA;AACA;AACA;AACI;MACJ;AAAA;AAEI;MACJ;AAAA;AAEI;MACJ;AAAA;AAEA;AACA;AACA;IACJ;AACA;AAGI;AACA;AACA;IACJ;AACA;EACJ;AACA;AACI;AACA;AACI;AACA;IACJ;EACJ;AAAA;AAEI;AACA;AACI;AACA;IACJ;AACA;EACJ;AAAA;AAvKI;AAAa;AAwK4oxB;ACzK7pxB;;AAAA;AACI;AAAmB;AACnB;AADJ;AAKA;AACI;AACA;AAEI;IACJ;AACA;AAA2C;IAA+B;AAC1E;EACJ;AACA;AAfA;AACI;AAAa;AAeglD;AChBjmD;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AAAqD;AAEzD;AACA;AACA;AACA;AACA;AACI;AACI;IACJ;AAAA;AAEI;AACA;AACA;AACI;MACJ;IACJ;AACA;AACI;AACA;AAAqB;MAA4B;IACrD;AACA;AACI;AACA;AACA;AACA;AACI;AACA;AAIA;AACI;AACA;AACA;AAGA;AACA;AACA;QACJ;AAEI;AACA;AACA;QACJ;AAAA;AAEA;MACJ;AACA;IACJ;AACA;AAIA;EACJ;AACA;AArFA;AACI;AAAa;AAqF4iU;ACtF7jU;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AA6HA;AACI;AACI;IACJ;AAAA;AAUI;AAA+B;MAAmB;AAAA;AAElD;AACA;IACJ;AACA;AACI;AACA;IACJ;AAeA;AAEI;AAAgG;MAAmB;IACvH;AAgBA;AAEI;AACI;AACA;AACA;AACA;MACJ;IACJ;AASA;AACI;AACA;AACA;AACA;AACA;AACA;AACI;MACJ;AAAA;AAEA;IACJ;AAgBA;AAEI;AAAY;AACZ;AACA;AACI;AACA;AACA;AACA;MACJ;AAAA;IAEJ;AAQA;AACI;IACJ;AAgBA;AACI;IACJ;AACA;AAEI;AACI;AACI;AAA6B;AAC7B;AACI;AACA;AACI;AAAK;AAET;UACJ;AAAA;QAEJ;AAEI;QACJ;AAAA;IAER;AACA;AACI;AACI;MACJ;AAEI;MACJ;AAAA;AAEJ;AACI;IACJ;AAKA;AACI;AACI;MACJ;AAAA;IAEJ;AAEA;AACI;AACA;AACI;AACA;AACA;AACI;QAEJ;AAEI;QACJ;AAAA;MAEJ;IACJ;AACA;AACI;AAAY;AACZ;AACI;AACA;AACA;AACA;AACI;QAGJ;AAAA;MAGJ;AAAA;IAEJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AACA;AAEI;IACJ;AAEA;AACI;AACI;AACA;AACA;MACJ;AAEI;MACJ;AAAA;AAIJ;AACI;AACA;AAA0F;MAAa;AACvG;AAAmC;AAAmB;AACtD;AACI;AACA;AACA;AAEI;AACA;AAEI;AACA;AACA;AACI;YACJ;AAAA;AACJ;QAEJ;MAEJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;IACJ;AACA;EACJ;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AAA+E;IAAW;EAC9F;AAAA;AAEA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACA;MACJ;AAAA;AAEA;IACJ;EACJ;AAAA;AAEA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEI;MACJ;AAEI;AACI;AACA;AACA;QACJ;AAAA;MAEJ;AAAA;AAEI;MACJ;AAAA;AACJ;AAEI;AACA;IACJ;AAAA;EAEJ;AAAA;AAjfI;AAAa;AAkfgw3C;ACnfjx3C;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IAIJ;AACA;AAAmD;IAA0B;AAC7E;AACI;AACA;AACI;AACA;AACA;AACI;AACI;AACA;UACJ;AACA;QACJ;AAAA;MAEJ;AACA;AACI;AAAqD;QAAqD;AAC1G;AAAyC;QAA4B;AACrE;MACJ;IACJ;AACA;AACI;AACA;AACA;AAA+D;MAA8E;AAC7I;AACI;AACA;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AAIA;EACJ;AACA;AA/FA;AACI;AAAa;AA+F4wZ;AChG7xZ;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AAAsC;AAE1C;AACI;AACA;AAEI;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AAAmF;MAAuB;IAC9G;AACA;AAIA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AAA4D;IAAgC;AAC5F;AAAyD;IAA6B;AACtF;AACI;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACI;MACJ;AAEI;MAEJ;AAAA;AAEA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;MACJ;AAEI;AAC8D;QAAuC;MACzG;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;MACJ;AAAA;AACyxB;MAAuB;AAAgE;MAAuB;AACv4B;AACA;IACJ;AACA;EACJ;AACA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AACI;AACA;AACI;MACJ;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;AAAgF;MAAkF;IACtK;AACA;AACI;AAAqE;MAAkF;IAC3J;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACI;MACJ;AAEI;AACA;AACI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AAA+B;QAAqB;AAAA;AACN;QAAoC;AAAA;AACnD;QAAqB;AAAA;AAEpD;AACA;AACI;AACI;UACJ;AAAA;QAEJ;AAEI;QACJ;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;MACJ;IACJ;AACA;EACJ;AACA;AACI;AACI;AACA;AACA;AACA;AACI;AAEA;AACI;QACJ;AAAA;AAGA;MACJ;AAAA;AACJ;AAEI;IACJ;AACA;EACJ;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACI;AACI;QACJ;AAAA;AAGA;MACJ;AAAA;AAEJ;AACI;IAIJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;AACI;QACJ;AAAA;AAGA;AACI;QACJ;AAEI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACI;QACJ;AAEI;QACJ;AAAA;MAEJ;AACA;AACI;AACA;AACA;MACJ;AAAA;AAEA;AACI;AACA;MACJ;AAAA;AAEA;AACA;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AAAmE;IAAa;AAChF;AAA+D;IAAa;AAC5E;AAAoE;IAAa;AACjF;AAAgE;IAAa;AAC7E;AAAgF;IAAa;AAC7F;AAA8E;IAAa;AAC3F;EACJ;AACA;AACI;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;AACI;IACJ;AAEI;IACJ;AAAA;AACJ;AA9YI;AAAa;AA+Y4nrE;AChZ7orE;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACI;EACJ;AAAA;AAKA;AACI;AACI;AACA;IACJ;AAAA;AAEI;AAAqG;MAAW;IACpH;AACA;AACI;AACA;AACA;AACA;AACI;AACA;AACA;AACI;AACI;UACJ;AAEI;AACA;UACJ;AAAA;QAEJ;AAAA;MAEJ;AACA;IACJ;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AAIA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AArEA;AACI;AAAa;AAqEw/K;ACtEzgL;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAqD;AAAqC;AAA8C;AAA+B;AAKvK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AAEI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AAAiE;MAAuB;IAC5F;AACA;AAIA;EACJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;EACJ;AAAA;AAEI;AACI;IACJ;AAAA;AAEI;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;EACJ;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AACI;AACA;AACA;AAC2D;MAAsB;AAEjF;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AACA;EACJ;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AAA+E;MAA8B;AAC7G;AACA;IACJ;AACA;AACI;AACA;AAA0H;MAA6B;IAC3J;AACA;EACJ;AACA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACI;AACI;AACA;QACJ;MACJ;AACA;IACJ;AACA;AAA6E;IAAa;AAC1F;AAAwE;IAAa;AACrF;AAA6E;IAAa;AAC1F;AACI;AACA;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACI;AAA6C;QAAiD;MAClG;AAAA;AAEA;AACA;AACI;MACJ;AACA;AACA;AAA8C;MAAwC;AACtF;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACI;MACJ;AACA;AACA;AAAgE;MAAsF;AACtJ;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;MAEJ;AAAA;AAEA;IACJ;AACA;AAAwE;IAAa;AACrF;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;AAA6C;MAAgE;AAC7G;IACJ;AACA;AACI;AACA;IACJ;AACA;AAAqF;IAAa;AAClG;AAAmF;IAAa;AAChG;EACJ;AACA;AACI;AACA;AAAqE;IAAgC;AAGrG;AACI;IACJ;AACA;AACA;AAAsC;IAA0C;AAChF;EACJ;AAAA;AAEI;AACI;IACJ;AAEI;IACJ;AAAA;AACJ;AAEI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;EAEJ;AAAA;AAEI;AAA4D;IAAoC;AAChG;EACJ;AAAA;AAEI;AACA;EACJ;AAAA;AAEI;AACI;IACJ;AAEI;IACJ;AAAA;AACJ;AAEI;EACJ;AAAA;AAEI;AACI;IACJ;AAEI;IACJ;AAEI;IACJ;AAAA;AACJ;AAxTI;AAAa;AAyT403C;AC1T713C;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AAIb;AACI;AACI;AACA;AACA;IACJ;AAAA;AACwD;IAAyC;AACjG;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;IACJ;AAAA;AACwD;IAAyC;AACjG;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AACI;AACI;AACI;QACJ;AAEI;QACJ;AAAA;AAEJ;AACA;AAAiB;AAErB;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AAIA;AACI;IAEJ;AAIA;AACI;IAGJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AAIA;AAII;AAIA;AAIA;AAIA;EACJ;AACA;AAIA;AACI;AAA0B;IAAgB;AAAA;AAE1C;AACI;AACA;AACI;MACJ;AAAA;AAEJ;EACJ;AAAA;AAnPA;AACI;AAAa;AAoPg4mB;ACrPj5mB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACI;AAAgC;IAAoC;EACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AACI;AACA;AACI;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACA;AACA;AACA;AACI;AACA;MACJ;AAAA;AAEI;AAA+C;QAA6D;MAChH;AAAA;IAEJ;AACA;AAMA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;MACJ;AACA;AACA;AAAgC;MAA+C;IACnF;AAAA;AAEI;IACJ;AACA;AACI;AACA;AACI;AACA;AACA;MACJ;AAEI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACA;AACA;MACJ;AAEI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACA;AACA;MACJ;AAEI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACI;AACA;AACI;AACI;UACJ;AAAA;AAEJ;MACJ;AAEI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACA;AACA;AACI;AACI;UACJ;AAAA;MAER;AAAA;AAEJ;AACI;AACA;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AAEJ;AACI;IACJ;AACA;AAAwE;IAAa;AACrF;AACI;AACA;AACA;AACA;AAKI;MACJ;AAAA;AAKI;MACJ;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AAEI;AACA;QACJ;AAAA;AAEI;QACJ;AAAA;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;QACJ;AAAA;MAGJ;AAEI;AACA;AACA;MACJ;AAEI;AACA;AAA0D;QAAkC;AAC5F;MAEJ;AAAA;AAEI;AACA;AACA;AACA;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACI;MACJ;AAEI;AACA;MACJ;AAAA;AAEI;AACA;AACI;AACA;AACI;AACA;UACJ;AAEI;UACJ;AAEI;AACA;UACJ;AAAA;AACJ;MAEJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACI;QACJ;AAEI;AACA;QACJ;AAEI;QACJ;AAEI;AACA;QACJ;AAEI;AACA;QACJ;AAEI;QACJ;AAEI;QACJ;AAAA;AAGA;MACJ;AAAA;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;AACI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACI;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;IACJ;AACA;AACI;IACJ;AACA;AAEI;AACA;AACA;AACA;AACA;AACA;IAGJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACA;AAA2E;MAA4B;AAIvG;AACI;AACA;AACA;AACI;QACJ;AAEI;QACJ;AAEI;QACJ;AAAA;AAEJ;IACJ;AACA;AACI;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AAEI;AACA;UACJ;AAAA;AAEJ;MACJ;AACA;AACI;AACI;QACJ;AAAA;AAEJ;IACJ;AACA;AACI;AACA;AACI;AACI;AACA;QACJ;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACI;QACJ;MACJ;AAAA;AAEJ;AACI;AACI;AACA;AACI;AACA;AAEI;UACJ;AAAA;AAEJ;AACI;AAEA;AACI;UACJ;AAAA;MAER;AAAA;AAEJ;AACI;AACA;AACA;AACA;AACI;AACI;QACJ;MACJ;AACA;AACI;AACI;QACJ;AAAA;AAEJ;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACI;QACJ;AAAA;AAGA;AACI;AACA;AACA;AACI;AACA;AACA;UACJ;AAAA;QAEJ;AAEI;AACA;QACJ;AAEI;AACA;AACA;QACJ;AAEI;AACA;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;AACA;AACI;AACA;AACI;QACJ;AAAA;AAEJ;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACI;MACJ;AAAA;AAEI;MACJ;IACJ;AACA;AACI;AACA;AACA;AACI;AAA6F;QAAmC;MACpI;AACA;AACI;AACI;QACJ;AAAA;IAER;AACA;EACJ;AACA;AACI;AACA;AAEI;AACA;AAMI;MACJ;AAAA;AAC2D;MAAsC;AACjG;AACA;AACA;AACA;IACJ;AACA;AAAsE;IAAa;AACnF;AACI;IACJ;AACA;AACI;AACA;IACJ;AACA;EACJ;AACA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACI;EACJ;AAAA;AAEA;AACI;AACI;AACA;IACJ;AAAA;AAEI;AACI;MACJ;AAAA;AAEA;AACA;AACA;AACI;AACA;AACI;QACJ;AAEI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;AACA;AAAiF;MAAuC;AACxH;AACA;AACI;MACJ;AAAA;IAEJ;AACA;EACJ;AACA;AACI;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AAAuC;QAA4C;MACvF;AAAA;AACJ;EAEJ;AAAA;AAEA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;AACA;AACA;AACA;IACJ;AACA;EACJ;AACA;AA9pBA;AACI;AAAa;AA8pB481F;AC/pB791F;;AAAA;AACI;AAAmB;AACnB;AADJ;AAGA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AAAY;AAEhB;EACJ;AAAA;AAMA;AACI;AACA;AACI;AACA;AAEI;MACJ;AAAA;AAEA;IACJ;AACA;EACJ;AAAA;AAEA;AAGA;AAzCA;AACI;AAAa;AAyCo/I;AC1CrgJ;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACI;AACI;AACA;IACJ;AAAA;AAC4D;IAAyC;AACrG;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAC4D;IAAyC;AACrG;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;AAC+D;IAA4C;AAC3G;EACJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;AAC+D;IAA4C;AAC3G;EACJ;AACA;AACA;AACI;AAA0B;IAAgB;AAAA;AAE1C;AACI;AACA;AACI;MACJ;AAAA;AAEJ;EACJ;AAAA;AApDA;AACI;AAAa;AAqDwvK;ACtDzwK;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;EACJ;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;AACI;IACJ;AAAA;EAEJ;AAEA;AACI;AACI;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAMI;IACJ;AACA;AACI;AACI;AACA;AACI;AACI;AACI;AACI;cACJ;AAEI;cACJ;AAEI;cACJ;AAAA;AAGA;YACJ;AAEI;YACJ;AAAA;AAGA;UACJ;AAAA;AAGA;AACI;UACJ;AAEI;UACJ;AAAA;AACJ;AACJ;AAEA;AACA;IACJ;AACA;AACI;IACJ;AACA;AACI;AACI;MACJ;AAAA;AAEI;MACJ;AAAA;IAEJ;AACA;AACI;AAAwB;MAAc;AAAA;AAElC;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AAAsB;MAAY;AAAA;AAE9B;MACJ;AAAA;AAEA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACI;MACJ;AAAA;AAEI;AACA;MACJ;AAEI;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AACI;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACI;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEJ;AACI;AACI;AACI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;AACI;AACI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEJ;AACI;AACI;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACI;MACJ;AAAA;AAEJ;AACI;AACI;MACJ;AAAA;AAEJ;AACI;AACI;MACJ;AAEI;AACA;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACI;AACA;AACA;AACA;AACI;QACJ;AAAA;AAEA;AACA;AACI;AACA;QACJ;AAEI;AACA;QACJ;AAAA;AAGA;AACA;AACA;AACI;AACA;QACJ;AAAA;AAEA;AACA;AACA;AACI;QACJ;AAAA;MAEJ;AAAA;AAEJ;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACI;QACJ;AAAA;AAEI;QACJ;AAAA;AAEI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;AACA;AACA;AACA;AACA;AAAkE;MAAgC;AAClG;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AAAqE;MAAgC;AACrG;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACI;MACJ;AAAA;AAEA;AACI;AACA;AACA;MACJ;AAEI;MACJ;AAAA;AAEA;AACA;IACJ;AACA;AACI;AACA;AACA;AACI;AACI;QACJ;AAAA;AAEA;AACA;AACA;AACA;AACI;AACA;AACA;AACI;AACA;UACJ;AAAA;QAEJ;AAAA;MAEJ;AAEI;AAEI;AAEA;AACA;AACA;QACJ;AAAA;MAEJ;AAAA;AAEA;AACI;MACJ;AAEI;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACI;AAAY;AAEhB;AACI;AAAY;AAEhB;AACI;AAAY;MAEpB;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACI;AACA;AACA;AACA;AACI;QACJ;AAAA;AAEA;MACJ;AAEI;AACA;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AAEA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AAEI;MACJ;AAAA;AAEJ;EACJ;AACA;AACI;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;EAEJ;AAAA;AAEI;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;EACJ;AAAA;A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CI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;EACJ;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;AAEI;IACJ;AACA;AACI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;EACJ;AACA;AACA;AACI;AACI;AAAkC;AAAsB;AAAgB;AAA0B;AAAoB;AACtH;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;AACA;AACA;AAAyC;IAEjD;AACA;AACI;AAEI;AACA;AACA;AACA;AACA;AAAwC;IAEhD;AACA;AACI;AAAmB;MAAa;AAChC;AACA;AAAiB;AAErB;EACJ;AACA;AACA;AACI;AACI;AAAkC;AAA8B;AAAoB;AAAoB;AAA4B;AAA4B;AAAkB;AAA0B;AAC5M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAA6B;IAErC;AACA;AACI;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAA4B;IAEpC;AACA;EACJ;AACA;AACA;AACI;AACI;AAAsB;AAAwB;AAAwB;AAA8B;AAA4B;AAAgB;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;AAAoE;IAE5E;AACA;AACI;AAEI;AACA;AAAmC;IAE3C;AACA;EACJ;AACA;AACA;AACI;AACI;AAA0B;AAAgB;AAA0B;AAAwC;AAC5G;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAAmB;MAAa;AAChC;AACA;AAAiB;AAErB;AAAwD;IAAa;AACrE;EACJ;AACA;AAIA;AACI;AACI;AAAkC;AAAsB;AAAgB;AAA0B;AAAoB;AAAoB;AAAwC;AAClL;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;AACA;AACA;AACA;AACA;AAA0E;IAElF;AACA;AACI;AAAmB;MAAa;AAChC;AACA;AAAiB;AAErB;AACI;AAAmB;MAAa;AAChC;AACA;AAAiB;AAErB;AACI;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AAAiC;IAEzC;AACA;EACJ;AACA;AACA;AACI;AACI;AAAkC;AAA0B;AAA8B;AAAkB;AAC5G;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;AACA;AACA;AAAiC;IAEzC;AACA;AACI;AAEI;AACA;AACA;AACA;AAAgC;IAExC;AACA;EACJ;AACA;AAIA;AACI;AACI;AAAkC;AAAkC;AAAwB;AAA8B;AAAoB;AAA0B;AACxK;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AAGA;AACA;AACA;AACA;AACA;AAA6C;IAErD;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AAA4C;IAEpD;AACA;EACJ;AACA;AAIA;AACI;AACI;AAAkC;AAAgB;AAA8B;AAAsC;AAAwB;AAAwB;AAAsC;AAAoB;AAAsB;AAAkC;AAAoC;AAAoC;AAAoC;AAA0B;AAAkC;AAAsB;AAA8B;AACpf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAAkC;AAAgB;AAA8B;AAAsC;AAAwB;AAAwB;AAAsC;AAAoB;AAAsB;AAAgB;AAAoC;AAA0B;AAAkC;AAAsB;AAA8B;AAC1Z;AACA;AACA;AACA;AACI;AACI;AACA;AACI;UACJ;AAEI;UACJ;AAEI;UACJ;AAAA;MAER;AAAA;AAEA;AACI;AAGI;AACA;QACJ;MACJ;AAAA;AAEA;AACI;AAGI;AACA;QACJ;MACJ;AAAA;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAiB;IAEzB;AACA;AACI;AAAmB;MAAkB;AACrC;AACA;AAAiB;AAErB;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAkE;QAAuD;AACzH;AAEA;AAA4E;IAEpF;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAA4D;QAAmC;AAC/F;AACA;AAAuC;IAE/C;AACA;EACJ;AACA;AAIA;AACI;AACA;AACI;AACI;AACA;AACA;AACA;AAAW;AAEf;AAAwC;AAAoB;AAAiB;AAAY;AAAe;AAAqB;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAc;EAEtB;AAAA;AAEA;AACI;AACI;AAAkC;AAAgB;AAAgB;AAClE;AACA;AACA;IACJ;AAAA;AAEI;AAAmB;MAAkB;AACrC;AACA;AAAiB;AAErB;AACI;AACI;AACA;AACA;AAAiB;IAEzB;AACA;AACI;AACI;AACA;AACA;AACA;AAAgB;IAExB;AACA;EACJ;AACA;AACA;AACI;AACA;AACA;AACA;AAA+C;AAEnD;AACI;AAA2D;IAA2B;EAC1F;AAAA;AAEI;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;EACJ;AAAA;AA5eI;AAAa;AA6eg7rD;AC9ej8rD;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACI;AACI;AAAY;AAEhB;AACI;AACI;AAAiC;AAEjC;AAAoC;AAEpC;AAA8B;AAE9B;AAAiC;AAEjC;AAA0B;AAE1B;AAAwB;AAExB;AAA0B;AAE1B;AAAuB;AAEvB;AADG;EAGf;AAAA;AA5BA;AACI;AAAa;AA6Bo8F;AC9Br9F;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACJ;AACA;AAIA;AAhBA;AACI;AAAa;AAyB40nB;AC1B71nB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACI;AAAgC;IAAoC;EACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AAA4B;AAEhC;QACJ;AAAA;AAEI;AACA;AACA;AACA;AACA;AAAoC;AAAuC;AAAsB;AAAqB;AACtH;AACA;AACA;AACA;AACA;AACA;AAA6E;UAA8E;AAAC;AAEhK;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACI;AACA;AACA;AACI;AAAoC;AAAkC;AAAsB;AAAgB;AAC5G;AACA;AAAkB;AAEtB;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;AACI;AACI;QACJ;AAAA;AACJ;AACwC;MAAyC;IACrF;AACA;AACI;AACA;AACA;AACA;AACI;AACI;QACJ;AAAA;AACJ;AACmC;MAAoC;IAC3E;AACA;AAQA;EACJ;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;AAEI;IACJ;AAAA;EAEJ;AAAA;AAEI;AACA;AACI;IACJ;AAAA;AAEI;IACJ;AAAA;EAEJ;AAAA;AAEI;AACI;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AACJ;AACJ;AAEI;EACJ;AAAA;AAEI;AACA;AACI;AACA;IAEJ;AAEI;IACJ;AAAA;AACJ;AAtKI;AAAa;AAuKo1jB;ACxKr2jB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AAAsF;IAAiC;EAC3H;AAAA;AAEA;AACI;AAAqF;IAA2B;EACpH;AAAA;AAEA;AACI;AACI;IACJ;AAAA;EAEJ;AAAA;AAEA;AACI;AACI;IACJ;AAAA;EAEJ;AAAA;AAEA;AACI;AACI;AACI;MACJ;AAEI;MACJ;AAEI;MACJ;AAEI;MACJ;AAAA;EAER;AAAA;AAEI;AACI;IACJ;AAEI;IACJ;AAAA;AACJ;AAEA;AACI;AACI;IACJ;AAEI;IACJ;AAAA;AACJ;AAEA;AACI;AAAyB;IAAa;AAAA;AAElC;IACJ;AAEI;IACJ;AAAA;AACJ;AAEA;AACI;AAAyB;IAAa;AAAA;AAElC;IACJ;AAEI;IACJ;AAAA;AACJ;AAEA;AACI;AACI;IACJ;AAGI;IACJ;AAAA;AACJ;AAEA;AACI;AACA;AACI;IACJ;AAEI;IACJ;AAAA;AACJ;AAEA;AACI;AACI;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;AAA0B;MAAiB;AAAA;AAE3C;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;IACJ;AAEI;IACJ;AAEI;IACJ;AAEI;IACJ;AAAA;AACJ;AAEA;AACI;EACJ;AAAA;AAEA;AACI;AACA;AACA;AACA;AACI;AACA;AACI;AACA;MACJ;AAEI;AACI;QACJ;AAAA;AAEA;MACJ;AAAA;AACJ;AAEA;EACJ;AAAA;AAEA;AACI;EACJ;AAAA;AAEA;AACI;EACJ;AAAA;AAEI;AACI;IACJ;AAAA;AACJ;AAEA;AACI;AACI;AACI;AACA;AACI;QACJ;AAEI;QACJ;AAAA;AACJ;AACJ;EAEJ;AAAA;AA5LA;AACI;AAAa;AA6L4of;AC9L7pf;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAEI;MACJ;AAAA;AAE0C;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAA2B;MAC3B;IACR;AACA;AACI;AACA;AACA;AACI;AACA;AACA;AACA;AACA;MACJ;AAAA;AAGI;MACJ;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEA;AACI;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;QACJ;AAAA;AAEJ;AACA;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AAC6H;QAAkD;AAE3K;AACA;AACA;AACA;AACA;AACA;AAAyD;UAAgG;AACzJ;AAEI;AACA;AACA;UACJ;QACJ;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEI;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACA;AACA;AAA0J;QAAuD;MACrN;AAEI;AACA;AACA;AAAa;AAAe;AAAkB;AAAmD;AACjG;AACI;AACA;AACI;UACJ;AAAA;AAEJ;AAAoC;QAAyD;AAC7F;AACA;MACJ;AAAA;AAEJ;AACI;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AAIA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;IACJ;AAAA;AAC2D;IAAgC;AAC3F;EACJ;AACA;AACI;AACI;IACJ;AAAA;AACJ;AAEI;AACA;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;EACJ;AAAA;AAEI;AACA;AAA8B;AAAmE;MAAqB;IAAI;AAC1H;EACJ;AAAA;AAEI;AACA;AACI;AAAyC;MACA;AAEzC;AACI;MACJ;AAAA;AAEJ;EACJ;AAAA;AAEI;AACI;AACA;IACJ;AAAA;AAEI;AACA;AACA;IACJ;AACA;AAAwE;IAAa;AACrF;AAAmE;IAAa;AAChF;AAAwE;IAAa;AACrF;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AAAmE;IAAa;AAChF;AAA6E;IAAa;AAC1F;AACI;AACI;MACJ;AAAA;AAEA;IACJ;AACA;AACI;IACJ;AACA;AAAgF;IAAa;AAC7F;AAA8E;IAAa;AAC3F;EACJ;AACA;AACI;AACA;AACA;AAA6C;IAA4E;EAC7H;AAAA;AAEI;AACI;IACJ;AAAA;AAEI;AACA;IACJ;AACA;AAA4D;IAAa;AACzE;AAAiE;IAAa;AAC9E;AACI;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AAA4D;IAAa;AACzE;AAAsE;IAAa;AACnF;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;EACJ;AA3VA;AACI;AAAa;AA2VgjmD;AC5VjkmD;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;AACuC;MAA4D;IACvG;AACA;AACI;AACA;IACJ;AACA;AAIA;EACJ;AACA;AAhDA;AACI;AAAa;AAgDgyF;ACjDjzF;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACI;AACI;IACJ;AAAA;AACJ;AAMA;AACI;AACA;AAMI;AAAmB;MAA4B;AAC/C;AAAwB;MAA6B;AACrD;AACA;AAAiB;AAErB;AACA;AACA;EACJ;AACA;AA/BA;AACI;AAAa;AA+BggS;AChCjhS;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AAKb;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAe;AAEnB;AACI;AACA;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;AAAkC;AAAwC;AAAsC;AAAsD;AAA8B;AAAoC;AAAoB;AAC5P;AACA;AACA;AACI;AAA8C;QAA+C;MACjG;AAAA;AAEA;AACA;AACI;AACA;AACA;AAA6C;QAA8C;MAC/F;AAAA;AAEA;AACA;IACJ;AAAA;AAEI;AACI;MACJ;AAAA;AAEI;MACJ;AAAA;AAEA;IACJ;AACA;AACI;IACJ;AACA;EACJ;AACA;AAGA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AA4BA;AAAmB;AAEvB;AACA;AAAiC;AAAsC;AAAmB;AAC1F;AAAiC;AAA6B;AAAmB;AACjF;AACI;AACA;AACA;AAAmB;AAEvB;AAA8B;AAAgC;AAAmB;AACjF;AAA8B;AAAgC;AAAmB;AACjF;AAA+B;AAA+B;AAAW;AACzE;AACA;AACA;AAA8B;AAA0B;AAAmB;AAC3E;AACA;AAA8B;AAAgC;AAAmB;AACjF;AAA8B;AAA6C;AAAmB;AAC9F;AAA8B;AAA6C;AAAmB;AAC9F;AAA+B;AAAuC;AAAmB;AACzF;AAA8B;AAA6C;AAAmB;AAC9F;AAAoC;AAAgC;AAAmB;AACvF;AAAkC;AAA0C;AAAmB;AAC/F;AACA;AACA;AACA;AACA;AACA;AAAoC;AAAoD;AAAkB;AAAG;AAEjH;AACA;AACI;AACA;EACJ;AAAA;AAEA;AACA;AACI;AACI;IACJ;AAAA;AAEA;EACJ;AAAA;AAEA;AACI;EACJ;AAAA;AAEA;AACI;EACJ;AAAA;AAhZA;AACI;AAAa;AAiZ4lgC;AClZ7mgC;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AACA;AAC6E;IAAa;AAC1F;AAA0E;IAAiB;AAC3F;EACJ;AACA;AATA;AACI;AAAa;AASwgC;ACVzhC;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AAAyC;AAAyC;AAAkC;AACpH;AACI;AACA;AACI;AACA;IACJ;AAAA;AAEI;AACA;AACI;AACA;AAGA;MACJ;AAAA;IAEJ;AACA;AACI;AAGI;MACJ;AAEI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;IACJ;AACA;AAIA;EACJ;AACA;AA7DA;AACI;AAAa;AA6Dw8J;AC9Dz9J;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACI;AAAgC;IAAoC;EACxE;AACA;AACA;AACA;AACA;AAIA;AACI;EACJ;AAAA;AAKA;AAYA;AACI;AACI;AAAgC;MAAsB;AAAA;AAElD;MACJ;AAAA;AACJ;AAcI;AACA;AACI;MACJ;AAAA;AAEI;MACJ;AAAA;IAEJ;AACA;AAKA;EACJ;AACA;AAIA;AACI;AACA;EACJ;AAAA;AAqBA;AACI;AACA;AACI;IACJ;AAAA;AAEI;AACA;AACI;MACJ;AAAA;AAEA;AACI;MACJ;AAAA;AACJ;AAEI;IACJ;AAAA;AAEI;IACJ;AAAA;AAEI;IACJ;AAAA;EAEJ;AAAA;AAoFA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;EACJ;AAgBA;AACI;EACJ;AAAA;AASI;AACI;AAAU;AAEd;AACA;AACA;AACA;AACA;AACI;AACA;AACI;AACA;AACI;AAAK;AAEL;AACI;UACJ;AAEI;UACJ;AAAA;AACK;AAEL;AADG;IAGf;AAAA;AAEI;AACI;MACJ;AAAA;AAEI;AAAa;AACrB;EAEJ;AAAA;AAQI;AACA;AACA;AACA;EACJ;AAAA;AAQI;AACA;AACA;AACI;IACJ;AAEI;IACJ;AAAA;AAEI;AACI;MACJ;AAAA;AACJ;AAEI;IACJ;AAAA;AAEA;AACI;AAAU;AAEd;AACA;AACA;EACJ;AAAA;AApUI;AAAa;AAqUg8vB;ACtUj9vB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAgC;AAAiB;AACtE;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;EACJ;AAAA;AAiBoE;AAA4C;AAAO;AA1DvH;AACI;AAAa;AAiE43L;AClE74L;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAgC;AAAiB;AACtE;AAOA;AACA;AAZA;AACI;AAAa;AAYgnB;ACbjoB;;AAAA;AACI;AAAmB;AACnB;AADJ;AAMA;AACI;AACA;AACqC;IAAa;AAClD;EACJ;AACA;AAbA;AACI;AAAa;AAagyB;ACdjzB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;AAEI;AACA;AACA;AACA;AACA;AAGI;AAEA;AAIA;AACI;QACJ;AAAA;AAEI;QACJ;AAEI;QACJ;AAAA;AAEJ;AAA4B;MAAiD;AAC7E;AACA;IACJ;AACA;EACJ;AACA;AA7CA;AACI;AAAa;AA6Co4H;AC9Cr5H;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAyEA;AACI;AACA;AACA;EACJ;AAAA;AAvGA;AACI;AAAa;AAwGgpP;;yHCnG7pP,QAAQ,EAMR,YAAY,EAGK,cAAc;;;;;;;;;;;;;;sBAb3B,UAAU;oBAAE,QAAQ;kBAEpB,MAAM;;6BADN,iBAAiB;;;AAHzB,kBAAY,CAAC;;AAMT,cAAQ,GAAG;AACb,qBAAa,EAAE,CAAC;AAChB,0BAAkB,EAAE,KAAK;AACzB,iBAAS,EAAE,MAAM,CAAC,cAAc;OACjC;AAEG,kBAAY,GAAG,SAAQ,CAAC,eAAe,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;;AAGzD,oBAAc;AACtB,iBADQ,cAAc,GACnB;;;AACZ,cAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,cAAI,CAAC,GAAG,GAAG,IAAI,iBAAiB,EAAE,CAAC;SACpC;;qBAJkB,cAAc;;iBAcrB,sBAAC,EAAE,EAAE;AACf,gBAAI,UAAU,YAAA,CAAC;AACf,gBAAI,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAC9C,sBAAU,GAAG,EAAE,CAAC;AAChB,wBAAW,aAAa,CAAC,IAAI,EAAE,CAAC;;aAE7B,GAAG,CAAC,UAAA,CAAC;qBAAK;AACT,wBAAQ,EAAE,CAAC;AACX,oBAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAG,UAAC,CAAC,EAAE,EAAE;yBAAK,EAAE,CAAC,WAAW,EAAE;iBAAA,CAAC;eACrD;aAAC,CACH,CACA,MAAM,CAAC,UAAA,MAAM;qBAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;aAAA,CAAC,CAC/C,OAAO,CAAC,UAAA,MAAM,EAAI;AACjB,wBAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aAC9D,CAAC,CAAC;;AAEL,gBAAI,CAAC,OAAO,GAAG,UAAU,CAAC;AAC1B,gBAAI,CAAC,iBAAiB,EAAE,CAAC;WAC1B;;;iBAEgB,6BAAG;;;;AAElB,gBAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC5C,kBAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;;;AAEzC,sBAAI,YAAY,GAAG,UAAU,CAAC,MAAK,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC3D,wBAAK,OAAO,CAAC,aAAa,GAAG;2BAAM,YAAY;mBAAA,CAAC;;eACjD,MAAM;;;AAEL,sBAAI,EAAE,GAAG,MAAK,QAAQ,CAAC,aAAa,CAAC;AACrC,sBAAI,EAAE,EAAE,YAAY,IAAI,CAAA,AAAC,EAAE;AACzB,sBAAE,GAAG,MAAK,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;mBACzB;AACD,sBAAI,CAAC,EAAE,EAAE;AACP,0BAAK,QAAQ,CAAC,aAAa,GAAG;6BAAM,CAAC;qBAAA,CAAC;mBACvC,MAAM;AACL,0BAAK,QAAQ,CAAC,aAAa,GAAG;6BAAM,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY;qBAAA,CAAC;mBACpE;;eACF;aACF;;AAED,gBAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC;WACzF;;;eAlDU,eAAG;AACZ,mBAAO,IAAI,CAAC,QAAQ,CAAC;WACtB;eAEU,aAAC,IAAI,EAAE;AAChB,gBAAI,CAAC,QAAQ,GAAG,eAAc,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;WACpD;;;8BAZkB,cAAc;AAAd,sBAAc,GADlC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAClC,cAAc,KAAd,cAAc;eAAd,cAAc;;;yBAAd,cAAc;;;;;2PCJ7B,MAAM,EAMN,eAAe,EAuCA,QAAQ;;;;0BAjDrB,cAAc;yBAAE,aAAa;yBAAE,aAAa;;;;;;;;;;uBAC5C,WAAW;;6BANX,iBAAiB;mCAAE,uBAAuB;sBAAE,UAAU;;oBACtD,QAAQ;;;;;;;;6BACR,iBAAiB;;mBACjB,MAAM;;;AALd,kBAAY,CAAC;;AAWP,YAAM,GAAG;AACb,YAAI,EAAG,CAAC;AACR,YAAI,EAAG,CAAC,CAAC;AACT,eAAO,EAAG,CAAC;OACZ;AAEK,qBAAe,GAAG;AACtB,aAAK,EAAG,CAAC;AACT,cAAM,EAAE,CAAC,CAAC;AACV,cAAM,EAAE,CAAC;OACV;;AAmCoB,cAAQ;kBAAR,QAAQ;;AAChB,iBADQ,QAAQ,CACf,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,iBAAiB,EAAE,UAAU,EAAE;;;;;AACrE,2FAAM,SAAS,EAAE;AACjB,cAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC;AACzC,cAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC;AACxC,cAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,cAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AAClC,cAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAChD,cAAI,CAAC,UAAU,EAAE,CAAC;AAClB,cAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACtB,cAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;AAC1B,cAAI,CAAC,WAAW,GAAG,IAAI,CAAC;;AAExB,qBAAW,CAAC,YAAY,CAAC,SAAS,CAAC;mBAAM,MAAK,UAAU,EAAE;WAAA,CAAC,CAAC;;AAE5D,cAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC3B,cAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;SAC7B;;qBAjBkB,QAAQ;;iBAmBpB,mBAAG;AACR,mBAAO,AAAC,IAAI,CAAC,aAAa,CAAC,WAAW,IAAI,IAAI,GAAI,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;WACjH;;;iBAES,oBAAC,GAAG,EAAE;AACd,gBAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;AACvC,gBAAI,CAAC,IAAI,EAAE,OAAO;;AAElB,gBAAI,GAAG,YAAA,CAAC;AACR,gBAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,gBAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,gBAAI,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAChE,gBAAI,SAAS,KAAK,WAAW,EAAE;AAC7B,iBAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;aACrC,MAAM,IAAI,SAAS,KAAK,KAAK,EAAE;AAC9B,kBAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,iBAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7B,iBAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;aACvC;;AAED,gBAAI,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5B,gBAAI,GAAG,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;WAC/B;;;iBAES,sBAAG;;;AACX,gBAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;;;AAGlC,gBAAI,CAAC,aAAa,GAAG,YAAM;AACzB,kBAAI,eAAe,GAAG,OAAK,UAAU,CAAC,YAAY,CAAC;AACnD,qBAAO,OAAK,OAAO,CAAC,aAAa,EAAE,GAAG,eAAe,CAAC;aACvD,CAAC;AACF,gBAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,gBAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAM;AAAE,qBAAK,aAAa,EAAE,CAAC;aAAE,CAAC,CAAC;AAC1G,gBAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,EAAG,UAAA,GAAG;qBAAI,OAAK,UAAU,CAAC,GAAG,CAAC;aAAA,CAAC,CAAC;WAC9F;;;iBAEM,mBAAG;AACR,gBAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AACtB,gBAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;WACrB;;;iBAEgB,2BAAC,GAAG,EAAE,SAAS,EAAE;AAChC,gBAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,kBAAI,CAAC,eAAe,EAAE,CAAC;aACxB;AACD,gBAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC9B,gBAAI,CAAC,cAAc,EAAE,CAAC;WACvB;;;iBAEO,kBAAC,GAAG,EAAE;;AAEZ,gBAAI,QAAQ,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;AAC3C,gBAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACtE,gBAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AAC/B,kBAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;aACxC,MAAM;AACL,kBAAI,CAAC,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC;aACvC;WACF;;;iBAEa,0BAAG;AACf,gBAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;WAC1C;;;iBAEO,kBAAC,MAAM,EAAE,SAAS,EAAE;AAC1B,gBAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE1B,gBAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC3B,gBAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;;AAE5B,gBAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;AACvC,gBAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;AAC1C,kBAAI,IAAI,CAAC,eAAe,IAAI,CAAC,EAAE;AAC7B,oBAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;eACtE;aACH;;AAEA,gBAAI,CAAC,YAAY,GAAG,MAAM,CAAC;AAC3B,gBAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AACjC,gBAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;AAC3B,gBAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;AAC1C,gBAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,gBAAI,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,IAAK,SAAS,GAAG,CAAC,CAAC,AAAC,EAAE;AACnD,kBAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClD,yBAAW,CAAC,MAAM,GAAG,IAAI,CAAC;AAC1B,kBAAI,CAAC,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC;AAC3C,kBAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,OAAO,CAAC;aAC9C;WACF;;;iBAEiB,4BAAC,MAAM,EAAE;AACzB,gBAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,gBAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,gBAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;;AAEvD,gBAAI,YAAY,GAAG,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;AACjD,gBAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;;AAElC,gBAAI,YAAY,GAAG,SAAS,GAAG,CAAC,EAAE;AAChC,uBAAS,EAAE,CAAC;AACZ,0BAAY,GAAG,CAAC,CAAC,CAAC;aACnB;AACD,gBAAI,YAAY,GAAG,CAAC,CAAC,EAAE;AACrB,kBAAI,UAAU,GAAG,EAAE,SAAS,CAAC;AAC7B,uBAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACzD,0BAAY,GAAG,SAAS,GAAG,CAAC,CAAC;aAC9B;AACD,gBAAI,SAAS,GAAG,QAAQ,GAAG,CAAC,EAAE;AAC5B,uBAAS,GAAG,QAAQ,GAAG,CAAC,CAAC;AACzB,0BAAY,GAAG,SAAS,GAAG,CAAC,CAAC;aAC9B;AACD,gBAAI,SAAS,GAAG,CAAC,EAAE;AACjB,uBAAS,GAAG,CAAC,CAAC;AACd,0BAAY,GAAG,CAAC,CAAC;aAClB;;AAED,mBAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;WAClC;;;iBAEW,wBAAa;gBAAZ,MAAM,yDAAG,CAAC;;sCACK,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;;;;gBAApD,MAAM;gBAAE,SAAS;;AACtB,gBAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACjC,mBAAQ,SAAS,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,CAAE;WAC1C;;;iBAEe,0BAAC,GAAG,EAAE,GAAG,EAAE;AACzB,gBAAI,QAAQ,GAAG,GAAG,kBAAgB,GAAG,gBAAW,GAAG,qBAAgB,GAAG,OAAI,CAAC;AAC3E,mBAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;WACzC;;;iBAEkB,6BAAC,WAAW,EAAE;AAC/B,gBAAI,QAAQ,uBAAoB,WAAW,OAAI,CAAC;AAChD,mBAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;WACzC;;;iBAEiB,8BAAG;AACnB,mBAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;WAC5F;;;;;iBAGkB,6BAAC,GAAG,EAAE;AACvB,gBAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE;AACtE,qBAAO,eAAe,CAAC,KAAK,CAAC;aAC9B;;AAED,gBAAI,GAAG,CAAC,qBAAqB,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AAC9D,qBAAO,eAAe,CAAC,MAAM,CAAC;aAC/B;AACD,mBAAO,eAAe,CAAC,MAAM,CAAC;WAC/B;;;iBAEY,yBAAG;AACd,gBAAI,cAAc,GAAI,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,AAAC,CAAC;AAC7D,gBAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAClC,gBAAI,MAAM,GAAG,KAAK,CAAC;AACnB,mBAAM,CAAC,MAAM,EAAE;AACb,kBAAI,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAClD,kBAAI,CAAC,iBAAiB,EAAE,OAAO;AAC/B,kBAAI,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AACnE,kBAAG,cAAc,IAAI,gBAAgB,KAAK,eAAe,CAAC,MAAM,EAAE;AAChE,sBAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,yBAAS;eACV;AACD,kBAAG,CAAC,cAAc,IAAI,gBAAgB,KAAK,eAAe,CAAC,KAAK,EAAG;AACjE,sBAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,yBAAS;eACV;AACD,oBAAM,GAAG,IAAI,CAAC;aACf;AACD,gBAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;WACrC;;;iBAEW,wBAAG;AACb,gBAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACf,gBAAI,CAAC,IAAI,CAAC,IAAI,GAAG,YAAW,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CACvE,UAAA,EAAE;qBAAK,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC;aAAC,CAC9E,CAAC;WACH;;;iBAES,sBAAG;AACX,mBAAO,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC;WACzC;;;iBAEc,2BAAG;AAChB,gBAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACnB,gBAAI,eAAe,GAAG,AAAC,IAAI,CAAC,aAAa,KAAK,MAAM,GAAI,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;AACnG,gBAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE;AAC9C,iBAAG,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC9C,iBAAG,CAAC,WAAW,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;aAChD,MAAM;AACL,kBAAI,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;AACvF,kBAAI,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AAC7E,iBAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AACtD,iBAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;aAC3D;WACF;;;iBAEG,gBAAG;AACL,gBAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACvE,gBAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC7E,gBAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;WACnC;;;wBA7NkB,QAAQ;AAAR,gBAAQ,GAF5B,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,CAAC,EAC5D,CAAC,iBAAiB,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CACzC,QAAQ,KAAR,QAAQ;AAAR,gBAAQ,GAjC5B,cAAc,CAAC;AACd,kBAAQ,EAAE,WAAW;AACrB,kBAAQ,07BAuBP;AACD,gBAAM,EAAE,k4EAEN;AACF,yBAAe,EAAE,uBAAuB,CAAC,OAAO;SACjD,CAAC,CAGmB,QAAQ,KAAR,QAAQ;eAAR,QAAQ;SAAS,aAAa;;yBAA9B,QAAQ;;;;ACxD7B;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;EACF;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AAAoD;AAEpD;AACE;QACF;AAAA;AAEA;AACA;AACE;QACF;AAAA;AACF;AAEA;IACF;AAtCF;AACI;AAAa;AAsCjB;ACvCA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAAqD;AAAe;AADvF;AACI;AAAa;AAAyE;ACD1F;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;AACI;AACF;AAAgB;IAEpB;AACE;IACF;AAAA;AAEF;AAbA;AACI;AAAa;AAajB;ACdA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;EACF;AAHA;AACI;AAAa;AAEhB;ACHD;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;AACI;AACJ;EACF;AARA;AACI;AAAa;AAQjB;ACTA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;AAAQ;AACyB;AACzB;AACkC;AAClC;AAC2C;AAC3C;AACoD;AACpD;AAC6D;AACrE;EACJ;AAfA;AACI;AAAa;AAchB;ACfD;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;EACF;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;AACA;AACA;MACF;AAAA;AAEF;AACE;IACF;AACA;AACE;AACE;AACI;AACJ;AACE;AAAyB;AAEzB;QACF;AACA;AACA;MACF;AACA;AACE;MACF;AACA;AACE;AACE;QACF;MACF;AACE;AACA;AACA;AACA;MACF;AACE;AACE;QACF;AACA;MACF;AACE;AACE;AACE;AACA;UACF;QACF;MACF;AACE;AACE;QACF;MACF;AAAA;AACF;AAEE;AACA;AAAe;EAEnB;AA1EA;AACI;AAAa;AA0EjB;AC3EA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACI;AACA;AACJ;AACE;AACA;MACF;AAAA;AAEE;AACA;AACA;AACE;AAAc;AAEhB;AACE;AAAa;MAEjB;AAAA;AAEA;AACE;AAAc;AAElB;AACE;AACE;MACF;IACF;AACE;AACI;AACJ;AACA;AACE;MACF;IACF;AACE;AACE;MACF;IACF;AACE;AACE;MACF;IACF;AAAA;AAEE;AACE;AACA;AACA;AAA+B;AAEjC;AACE;AAAgB;AAEhB;AACA;MACF;AAAA;IAEF;EACF;AAnEA;AACI;AAAa;AAmEjB;ACpEA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;AACA;AACE;IACF;AACA;AACE;IACF;EACF;AAAa;AAEX;AACE;AAAY;AAEd;AACE;AACI;AACJ;AACE;MACF;AACA;AACE;MACF;AACA;IACF;AAAa;EAEf;AA5BA;AACI;AAAa;AA4BjB;AC7BA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;AAAyB;IAE7B;AACA;AACE;AACA;AACE;AACA;AACA;MACF;AAAA;AAEE;AACA;AACA;AACA;AACE;QACF;AAAA;AAEE;AACA;AACI;YACF;AACF;QACF;AAAA;AAEA;MACF;AAAA;IAEF;AACA;AACE;AACE;AAAW;IAEf;AACA;AACE;AACA;IACF;AACA;AACE;AACA;IACF;AACA;AACE;AACI;AACJ;AACE;AACE;AAA0C;AAE5C;MACF;AACA;IACF;AACA;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;AAAM;AAER;AACA;AACE;AACI;AACA;AACJ;AACE;AACI;AACA;AACA;AACA;AACJ;AACE;AACE;AACE;AAAe;AAEjB;AACE;cACF;AACE;cACF;AACE;AAAe;AAEjB;AAAa;AAEf;UACF;AAAA;AAEF;AACE;AAAe;AAEjB;AACA;AACE;AACE;AACI;AACA;AACJ;AACE;AACE;cACF;AACE;AACE;AACA;AAAY;cAEhB;AACE;cACF;AAAA;AACF;UAEF;AAAK;IAEX;AACA;AACE;AACI;AACA;AACA;AACJ;AACE;AAAY;AAEZ;AACA;AACE;AAAY;AAChB;IAEF;AACA;AACE;AACA;AACE;AAAM;AAER;AACA;AACA;AACA;AACA;IACF;AACA;AACE;AACI;AACJ;AACE;AAAM;AAER;AACA;AACE;AACE;AAAmD;AAEnD;AACE;AACE;AACA;AAAO;AAET;AACE;YACF;AACE;YACF;AAAA;QAEJ;AACE;AACA;AACA;QACF;AAAA;AAEA;AACE;AACA;AAAO;MAEX;AAAA;AAEF;AACE;AACE;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAO;AAET;AACE;QACF;AACE;QACF;AAAA;AAEF;AACE;AACE;AACI;AACA;AACJ;AACA;AACA;AACA;AACE;AAAuB;AAEvB;AAAqB;QAEzB;AACA;AACE;QACF;AAAA;IAEJ;AAAA;AAEA;AACA;AACA;AACA;AACI;AACI;AACJ;AACA;MACF;AACF;AACI;AACE;AAAQ;AAEN;AACJ;AACA;MACF;AACF;AACE;IACF;AACE;AACE;AACI;AACA;AACA;AACA;AACJ;AACE;AACA;AACI;AACJ;AACE;AACE;AACA;AACE;AACE;AAAM;AAER;AACA;cACF;YACF;;AAEA;AAAgB;AAEpB;AACE;AAAoB;MAExB;AACA;AACE;AACI;AACA;AACJ;AACE;AACE;UACF;QACF;AACA;AACE;AAAoB;MAExB;AAAA;EAEJ;AAhTA;AACI;AAAa;AAgTjB;ACjTA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AALA;AACI;AAAa;AAKjB;ACNA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAAkD;AAAe;AADpF;AACI;AAAa;AAAsE;ACDvF;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;AACA;AACE;AAAyC;EAE7C;AARA;AACI;AAAa;AAQjB;ACTA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAAuD;AAAe;AADzF;AACI;AAAa;AAA2E;ACD5F;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;IACF;EACF;AACE;AACE;AACA;IACF;AACA;AACE;IACF;AAAA;AAdF;AACI;AAAa;AAejB;AChBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AAFA;AACI;AAAa;AAEjB;ACHA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AACA;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAA8C;AAAe;AADhF;AACI;AAAa;AAAkE;ACDnF;AAAA;AACI;AAAmB;AACnB;AADJ;AAGA;AACI;AAEI;AACI;MACJ;AAAA;AAGI;MACJ;AAAA;IAGJ;EACJ;AAAA;AAhBI;AAAa;AAiBjB;AClBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AACE;MACF;IACF;AAAA;AAEE;AACA;IACF;AAAA;AAEE;AACA;AACA;IACF;AAAA;AAEE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACE;QACF;AAAA;AACF;AAEI;AACJ;AACE;AACA;AACE;AACA;AACE;UACF;AAAA;AACF;AAEA;AACA;AACA;AACE;AACA;AACE;UACF;AAAA;AAEA;AACE;UACF;AAAA;AACF;AACF;AACF;AAEE;AACA;AACE;MACF;AAAA;AAEF;AACE;AACA;AACE;MACF;AAAA;AAEF;AACE;AACA;IACF;AACA;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACE;AACE;QACF;AAAA;AACF;AAEA;AACA;IACF;AACA;AACE;AACI;AACA;AACJ;AACE;AACA;AACE;AACA;AACA;AACE;UACF;AAAA;AAEA;AACE;UACF;AAAA;AAEA;AACE;UACF;AAAA;AACF;AACF;AAEE;AACA;AACI;AACF;AACA;AACE;UACF;AACE;UACF;AAAA;AACF;AACF;IAEF;AACA;EACF;AAnIA;AACI;AAAa;AAmIjB;ACpIA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACE;AACE;IACF;AAAA;AAEI;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;MACF;AAAA;AAEA;IACF;AACE;AACA;AACE;MACF;AAAA;AACF;AAEA;AACA;EACF;AAAA;AAEE;AACA;AACA;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;AACE;AACA;AACA;AACA;AAAkB;IAEtB;AAAA;AAEE;AACE;AACA;AACA;AACA;AAAkB;IAEtB;AAAA;AAEA;AACE;AACA;AACE;AACA;AACA;MACF;AAAA;AAEA;AACA;AACA;AACE;AACE;QACF;AAAA;AAEA;AACA;MACF;AAAA;AACF;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACJ;AACE;AACA;AACA;AACE;MACF;AAAA;IAEF;AAAA;EAEF;AACA;AACE;AACA;AACE;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACI;AACJ;AACE;AACA;AACE;AACE;QACF;AAAA;AACF;AAEA;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AACA;AACA;AACE;AACA;YACF;AAAA;AACF;AAEE;UACF;AAAA;AACF;AACF;AAEF;EACF;AACA;AACE;AACA;AACE;AACA;AACE;AACA;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;AACA;IACF;AAAA;AAEA;AACA;AACI;AACJ;AACE;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AACA;AACA;AACE;YACF;AACE;YACF;AAAA;AACF;AACF;AACF;AAEE;AACA;AACA;AACA;AACA;AACE;QACF;AAAA;AAEE;AACA;AACA;AACA;AACE;AACA;UACF;AAAA;AACF;AACF;IAEF;AAAA;AAEA;AACE;IACF;AACE;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;EAEF;AA1NA;AACI;AAAa;AA0NjB;AC3NA;AAAA;AACI;AAAmB;AACnB;AADJ;AAwBA;AACI;AACI;IACJ;AACI;IACJ;AACI;IACJ;AACI;IACJ;AAAA;AAGA;AAEA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AACI;AAEJ;AAEA;AACI;AAEJ;AACI;AACA;AACA;AACA;AAAqE;AAGzE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AAEJ;AACI;AACA;AACA;AAEJ;AAEA;AAEA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAgC;AAIlC;AAEA;AACI;AACI;AACA;AACA;MACJ;IACJ;AAIA;AACI;AACI;AAEI;QACJ;AAAA;MAEJ;AAAA;AAGJ;AACI;AACI;MACJ;AACI;MACJ;AAAA;IAEJ;AAEA;AACI;AACI;MACJ;AAAA;AAEA;IACJ;AAEA;AACI;IACJ;AAEA;AACI;IACJ;AAEA;AACI;AACI;MACJ;AAAA;IAEJ;AAEA;AACI;IACJ;AAEA;AACI;IACJ;AAEA;AACI;AACI;MACJ;AAAA;IAEJ;AAEA;AACI;AACA;AACA;AAAgB;AAGpB;AACI;AAEA;AACI;AACA;AACI;QACJ;AAAA;AACJ;AAGI;AACA;AAEJ;AACA;AACI;MACJ;AAAA;AAII;MACJ;AAAA;AAGI;MACJ;AAAA;AAGI;AACA;MAGJ;AAAA;AAKA;AACA;AACI;AACI;QACJ;AAAA;AACJ;IAGJ;AAEA;AACI;AACA;AACA;AACA;AACA;AACA;A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;AACF;AAEF;AACA;AACE;AACE;MACF;AAAA;AAEE;AACE;QACF;AAAA;AAEA;AACE;QACF;AAAA;AACF;AAEF;AACA;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEE;AACE;QACF;AAAA;AACF;AAEF;AACA;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEE;AACA;AACE;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEA;AACE;AACA;AACE;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AACI;AACJ;AACE;AACE;YACF;AAAA;AACF;AACF;AAEE;AACA;AACE;AACE;AACA;AACE;cACF;AAAA;AACF;AACF;AAEE;UACF;AAAA;AACF;AACF;AAEF;AACE;AACE;MACF;AAAA;AAEI;AACJ;AACE;AACA;AACE;AACA;AACE;UACF;AACE;AACA;AACE;AACA;AACE;cACF;AAAA;AACF;AACF;AACF;AACF;AAEF;AACE;AACI;AACJ;AACE;AACE;AACA;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEF;AACE;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;AAEF;AACE;AACI;AACA;AACJ;AACE;AACA;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACI;AACA;AACJ;AACE;AACA;AACA;AACE;QACF;AAAA;AACF;AAEE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACA;AACE;MACF;AAAA;AAEF;AACA;AACE;AACA;AACE;AACE;AACE;AACE;YACF;AAAA;QAEJ;AACE;AACE;UACF;AAAA;AACF;AAEA;MACF;AAAA;AACF;AAEF;AACE;AACA;AACE;AACE;AACE;AACA;AACA;QACF;AACE;AACE;AACA;AACA;UACF;AAAA;AACF;AACF;AAEA;AACE;AACA;AACA;MACF;AAAA;AACF;AAEF;AACE;AACA;AACE;IACF;AAAA;AAEA;AACA;AACI;AACJ;AACE;AACI;AACJ;AACA;AACE;MACF;AAAA;AAEA;AACE;AACA;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEA;AACE;AACA;AACA;MACF;AAAA;AACF;AAEF;AACE;AACA;AACA;AACE;AACA;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;AACA;IACF;AAAA;AAEE;AACA;AACE;AACE;AACA;QACF;AACE;QACF;AACE;AACA;QACF;AAAA;MAEF;AAAA;AAEE;MACF;AAAA;AACF;AAEA;AACE;AACE;AACE;AACA;AACE;UACF;AAAA;AACF;AAEA;AACE;AACA;AACE;UACF;AAAA;AACF;AACF;AACF;AAEA;AACE;AACE;AACA;AACE;QACF;AAAA;AACF;AACF;AAEE;AACE;MACF;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;EAEF;AA/ZA;AACI;AAAa;AA+ZjB;AChaA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEI;AACJ;AACE;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AAEE;AACA;IACF;AAAA;EAEF;AAxBA;AACI;AAAa;AAwBjB;ACzBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD0C;ACA3D;AAAA;AACI;AAAmB;AACnB;AAQJ;AACI;AAGJ;AASA;AACE;EACF;AAAA;AAMA;AAGA;AAMA;AAGA;AAMA;AAMA;AAUA;AACE;AACA;EACF;AAAA;AAYE;EACF;AAAA;AAmBE;EACF;AAkBA;AAIE;EACF;AAAA;AAyBE;AACA;EACF;AAAA;AAmBE;AACE;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AAjLA;AACI;AAAa;AAmLjB;ACpLA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADyC;ACA1D;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACE;IACF;AAAA;AAEE;AACE;MACF;AAAA;AAEA;AACE;MACF;AACA;IACF;AAAA;EAEF;AAnBA;AACI;AAAa;AAmBjB;ACpBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADyC;ACA1D;AAAA;AACI;AAAmB;AACnB;AAMJ;AACI;AA0BJ;AACE;AACA;EACF;AAAA;AAtCA;AACI;AAAa;AAwCjB;ACzCA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADqC;ACAtD;;AAAA;AACI;AAAmB;AACnB;AACJ;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAA0F;AAzD9F;AACI;AAAa;AA2DjB;AC5DA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;IACF;AAAA;AAEE;AACE;MACF;AAAA;IAEF;AACA;AACE;IACF;AACA;AACE;AACI;AACA;AACA;AACA;AACJ;AACE;AACE;AACI;AACJ;QACF;MACF;AAAA;AAEE;AACE;AACE;UACF;AAAA;AAEA;AACE;UACF;AAAA;MAEJ;AAAA;AAEE;AACA;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEE;AACE;AACA;AACA;QACF;AAAA;IAEJ;AACA;AACE;AACA;AACE;MACF;AAAA;AAEA;AACE;AACE;AACE;UACF;AAAA;QAEF;MACF;AAAA;IAEF;AACA;AACE;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEA;AACE;AACA;AACE;QACF;AAAA;MAEF;AAAA;IAEF;AACA;AACE;AACA;AACE;AACE;AACA;AACA;AACE;AACE;YACF;AAAA;AACF;AAEE;UACF;AAAA;AACF;AACF;IAEF;AACA;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACI;AACJ;AACE;AACA;AACA;MACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AAA2B;AAE7B;AACE;MACF;AAAA;AAEE;AACE;QACF;AAAA;AAEA;AACA;AACE;AACI;AACJ;AACE;UACF;AAAA;AACF;AAEE;QACF;AAAA;AACF;IAEF;AACA;EACF;AAnKA;AACI;AAAa;AAmKjB;ACpKA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACJ;AACE;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEF;AACE;AACA;AACE;MACF;AACE;AACA;AACA;MACF;AAAA;AAEF;AACE;AACA;AACE;AACA;AACA;MACF;AACE;AACA;AACE;AACA;AACA;AACA;AACA;QACF;AAAA;AAEA;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AACE;AACA;AACE;AACE;UACF;AAAA;AACF;AAEE;QACF;AAAA;AACF;AAEF;AACE;AACA;AACE;MACF;AACE;AACA;AACA;MACF;AAAA;AAEF;AACE;AACE;AACA;MACF;AAAA;AAEI;AACJ;AACE;AACI;AACJ;AACA;AACA;AACA;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;AACA;MACF;AAAA;AAEI;AACJ;AACE;AACI;AACJ;AACE;QACF;AACE;QACF;AAAA;AAEA;AACA;AACA;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;AACI;AACJ;AACE;AACI;AACA;AACJ;AACE;AACA;AACA;AACA;AACA;UACF;AACE;AACA;AACE;YACF;AAAA;AAEE;AACE;cACF;AAAA;AACF;AAEE;YACF;AAAA;AAEA;UACF;AAAA;AACF;AACF;AAEF;AACE;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACI;AACA;AACJ;AACE;AACA;AACE;AACE;UACF;AAAA;AACF;AAEE;QACF;AAAA;AAEA;AACE;QACF;AAAA;AAEA;MACF;AAAA;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;AACE;UACF;AAAA;AACF;AACF;AAEF;AACE;AACE;MACF;AACE;MACF;AACE;AACA;AACE;AACA;AACA;AACA;AACA;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AACE;MACF;AACE;AACA;AACE;AACA;AACA;AACA;AACA;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AACE;MACF;AACE;AACA;AACE;AACA;AACA;AACA;AACA;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AACE;AACA;AACA;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;AACI;AACJ;AACE;AACI;AACJ;AACA;AACA;AACA;AACA;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AACE;AACE;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEF;AAAuB;AAEzB;AACE;AACA;AACE;IACF;AAAA;EAEF;AACA;AACE;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;AACE;AACA;AACA;AACE;QACF;AAAA;AAEA;AACE;QACF;AAAA;AACF;AACF;AAEE;AACE;AACA;AACE;QACF;AAAA;AAEE;QACF;AAAA;AAEE;QACF;AAAA;AAEE;AACE;UACF;AAAA;MAEJ;AAAA;AAEE;MACF;AAAA;AACF;AAEI;AACJ;AACE;AACA;AACE;MACF;AAAA;AAEE;MACF;AACE;AACE;QACF;AAAA;AACF;AACF;AAEE;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;QACF;AAAA;MAEF;AAAA;AAEE;AACA;AACA;MACF;AAAA;AACF;AAEA;AACE;IACF;AAAA;EAEF;AAphBA;AACI;AAAa;AAohBjB;ACrhBA;;AAAA;AACI;AAAmB;AACnB;AACJ;AACI;EACJ;AAEA;AAEI;EACJ;AAEA;AAEI;AAEA;AACI;AACI;MACJ;AAAA;AAEI;MACJ;AAAA;IAEJ;AAAA;AAGI;AACI;AACI;QACJ;AACI;QACJ;AAAA;AACJ;AAEI;MACJ;AAAA;IAEJ;AAAA;EAIJ;AAEA;AAQI;AACI;IACJ;AAAA;AAEO;AAGP;AAEI;AACI;MACJ;AAAA;AAGA;AACI;AACI;QACJ;AAAA;AACJ;IAEJ;AAAA;AAKI;AACA;AACA;AACI;MACJ;AAAA;AAGA;AACI;AACI;QACJ;AAAA;AACJ;IAEJ;AAAA;EAGJ;AAEA;AACI;AAAO;AAAG;AACV;AACI;AACI;AACI;AAAe;UAAoB;AAAA;QAEvC;AAAA;AACJ;AACJ;EAEJ;AAEA;AACI;AACI;AACJ;AACI;AACI;MACJ;AAAA;AACJ;EAEJ;AAGA;AACI;AAAkC;IAAe;AAAA;AACF;IAAY;AAAA;AAClD;AACT;AACI;AACA;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACA;AACA;AACI;AACA;MACJ;AAAA;AACJ;EAEJ;AAEA;AACI;AAAkB;AAClB;AACI;AAA+C;MAAY;AAAA;AAClD;AAAK;AAEd;AACA;AAAmB;MAAqB;AAAA;AAGxC;AACI;AACA;AACA;AACA;AACI;QACJ;AAAA;AAEA;AACA;AACA;AACA;AACA;AACI;AACA;QACJ;AAAA;AACJ;IAEJ;AAAA;EAEJ;AAoBA;AACI;AACI;AACA;AACA;AACA;AACJ;AACI;AACA;AAEI;AACA;AACI;QACJ;AAGI;AACA;QACJ;AAAA;AAEA;MACJ;AAAA;AACJ;EAEJ;AAxNA;AACI;AAAa;AAyNjB;AC1NA;AAAA;AACI;AAAmB;AACnB;AAFJ;AACI;AACA;AACA;AACA;AACI;AACI;AACA;AACA;AAAuB;AAE3B;AACI;AACA;AAAW;AAEf;AAGA;AAGA;AACI;AACA;AACA;AACA;AAAkB;AACtB;AAEJ;AACA;AACI;AACI;AACA;AAAc;AAElB;AACI;AACA;AAAc;AAElB;AAGA;AAGA;AACA;AACI;AACA;AACA;AAAuB;AAE3B;AAGA;AACI;AACA;AAAe;AAEnB;AAGA;AACI;AACA;AAAe;AAEnB;AACA;AACA;AACI;AACA;AAAgB;AAEpB;AACI;AAIA;AAAY;AAEhB;AACI;AAIA;AAAY;AAEhB;AACA;AACA;AACI;AACA;AAAe;AAEnB;AACA;AACA;AACA;AACI;AAIA;AAAY;AAEhB;AACI;AACA;AACA;AAAY;AAEhB;AACI;AACA;AACA;AAAY;AAEhB;AACI;AACA;AACA;AAAY;AAEhB;AACI;AACA;AAKA;AAEJ;AACI;AACA;AACA;AAAkB;AAEtB;AAIY;AACA;AACA;AACA;AAAkB;AAI9B;AACA;AACA;AACA;AACA;AAAqB;AAEzB;AACI;AACA;AAAgC;AAEpC;AAAY;AArJhB;AACI;AAAa;AAsJjB;ACvJA;AAAA;AACI;AAAmB;AACnB;AAFJ;AACI;AACA;AACA;AACA;AAKA;AACI;AAUA;AAUA;AAYA;AAUA;AAKA;AAKA;AAKA;AAGA;AAGA;AAGA;AAIA;AACI;AACA;AAEA;AAEJ;AAGA;AACI;AACA;AACI;AACI;AACA;AAAe;AAEnB;AACI;AACA;AAAe;AACnB;AACJ;AAEJ;AACI;AACA;AACA;AAAc;AAClB;AAEJ;AACI;AACI;AACA;AAEA;AAEJ;AACI;AACA;AACA;AACA;AACI;AACI;AACA;AAAe;AAEnB;AACI;AACA;AAAe;AAEnB;AACI;AACA;AAAe;AAEnB;AACI;AACA;AAAU;AAEd;AACI;AACA;AAAe;AAEnB;AACI;AACA;AAAe;AAEnB;AACI;AACA;AACA;AAA4B;AAEhC;AACI;AACA;AAAU;AACd;AACJ;AACJ;AACJ;AA3JJ;AACI;AAAa;AA6JjB;AC9JA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAA0B;AAE5B;AACE;AACA;AACA;AACA;AACA;AACE;AACI;AACA;AACJ;AACE;AACA;AACE;UACF;AAAA;AACF;AAEA;AACA;AACE;AACA;AACE;UACF;AAAA;AACF;MAEF;AACE;MACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACA;IACF;AACA;AACE;AACE;MACF;AAAA;AAEA;AACA;AACA;AACE;MACF;AAAA;AAEA;IACF;AACA;AACE;AACE;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;AACA;AACE;AACE;UACF;AACA;QACF;AAAA;MAEF;AAAA;AAEA;AACA;AACE;AACA;AACA;AACE;QACF;AAAA;AAEA;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEE;AACA;AACA;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEE;AACA;MACF;AACE;MACF;AAAA;AAEA;IACF;AACA;AACE;AACE;MACF;AAAA;AAEA;AACA;AACA;AACA;IACF;AACA;AACE;IACF;AACA;AACE;AACA;AACI;AACJ;AACE;AACA;AACE;AACA;AACE;UACF;AAAA;AACF;AAEE;QACF;AAAA;AACF;IAEF;AACA;AACE;AACI;AACA;AACJ;AACE;AACA;AACE;QACF;AAAA;AACF;IAEF;AACA;AACE;AACE;MACF;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACA;AACA;AACA;AACE;AACI;AACJ;AACE;QACF;AAAA;AAEE;QACF;AAAA;AAEA;AACA;AACE;AACA;AACA;AACA;AACA;AACE;AACE;YACF;AAAA;AACF;AACF;AAEE;AACE;AACE;YACF;AACE;YACF;AAAA;AACF;AACF;AAEF;AACA;AACE;MACF;AACA;AACA;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;EACF;AAxRA;AACI;AAAa;AAwRjB;ACzRA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD6C;ACA9D;AAAA;AACI;AAAmB;AACnB;AAFJ;AACE;AACA;AACA;AACA;AACA;AAKA;AACA;AAKA;AACE;AACE;AACA;AAGA;AAAqD;AAEvD;AAGA;AACE;AACA;AACA;AAAuE;AAEzE;AACE;AACA;AACA;AAA0D;AAE5D;AAGA;AACE;AACA;AAAoC;AAEtC;AACE;AACA;AAAoC;AAEtC;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AACE;AACA;AAGA;AAAkB;AAEpB;AAEA;AAEF;AACE;AACE;AACA;AACA;AAIA;AACA;AAKA;AACE;AACE;AACA;AAAsD;AAExD;AACE;AACA;AAAqD;AAEvD;AACE;AACA;AAA0H;AAE5H;AACE;AACA;AAAiD;AAEnD;AAGA;AAEA;AACF;AAEF;AACE;AACA;AACA;AACA;AACE;AACE;AACA;AAAwE;AAE1E;AACE;AACA;AACA;AAAc;AAEhB;AACE;AACA;AACA;AAAgB;AAClB;AAEF;AAIA;AAEF;AACE;AACA;AAGA;AACA;AACE;AACE;AACA;AAA+F;AAEjG;AACE;AACA;AACA;AAAc;AAChB;AAEF;AAIA;AAEF;AACE;AACA;AACA;AACE;AAGA;AAEA;AAEF;AAA4B;AAE9B;AACE;AACA;AAGA;AAAuG;AAEzG;AACE;AACA;AAGA;AAA+D;AAEjE;AACE;AACA;AAGA;AAA+D;AAEjE;AACE;AACA;AACA;AACA;AAGA;AACE;AAGA;AACE;AACA;AAAc;AAChB;AAEF;AAIA;AAEF;AACE;AACA;AAA2B;AAE7B;AACE;AACA;AAAkD;AAEpD;AACE;AACA;AAGA;AACA;AAKA;AACE;AACE;AACA;AAGA;AAAkB;AAEpB;AACE;AACA;AAAiD;AAEnD;AACE;AACA;AAA2F;AAE7F;AAGA;AACE;AACA;AAAqD;AAEvD;AACE;AACA;AAAoC;AAEtC;AACE;AACA;AAAoC;AAEtC;AAGA;AAGA;AAGA;AACE;AACA;AAAe;AAEjB;AAEA;AACF;AAEF;AACE;AACA;AACA;AAKA;AACE;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAEA;AACF;AAEF;AACE;AACA;AACA;AACA;AACA;AACE;AAGA;AAEA;AAEF;AACE;AACA;AACA;AAIA;AACF;AAEF;AAUA;AACE;AACA;AAGA;AACE;AAGA;AAUA;AAGA;AAEA;AAEF;AACA;AAIA;AAEF;AACE;AACA;AAEA;AAEF;AACE;AACA;AACA;AAGA;AACE;AACE;AACA;AAMA;AAEF;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAEA;AAEF;AAIA;AAEF;AACE;AACA;AACA;AAAsB;AAExB;AACE;AACA;AAKA;AAKA;AACE;AACE;AACA;AAA+H;AAEjI;AACE;AACA;AAA0C;AAE5C;AACE;AACA;AACA;AAEA;AAEF;AACE;AACA;AACA;AAAe;AAEjB;AAEA;AAEF;AAA4B;AAE9B;AACE;AACA;AAKA;AACE;AACE;AACA;AACA;AAAe;AAEjB;AACE;AACA;AACA;AAEA;AAEF;AACE;AACA;AAA+H;AAEjI;AACE;AACA;AAA0C;AAE5C;AACE;AACA;AAMA;AAEF;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAEA;AACF;AAEF;AACE;AACA;AAKA;AACE;AACE;AACA;AACA;AAAe;AAEjB;AACE;AACA;AACA;AAEA;AAEF;AACE;AACA;AAA+H;AAEjI;AACE;AACA;AAA0C;AAE5C;AACE;AACA;AACA;AAA+E;AAEjF;AACE;AACA;AAMA;AAEF;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAEA;AACF;AAEF;AACE;AACA;AAKA;AACE;AACE;AACA;AACA;AAAe;AAEjB;AACE;AACA;AACA;AAEA;AAEF;AACE;AACA;AAA+H;AAEjI;AACE;AACA;AAA0C;AAE5C;AACE;AACA;AACA;AAA+E;AAEjF;AACE;AACA;AAOA;AAEF;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAEA;AACF;AAEF;AACE;AACA;AAKA;AAGA;AACE;AACE;AACA;AAGA;AAAiF;AAEnF;AACE;AACA;AACA;AAEA;AAEF;AACE;AACA;AAA+H;AAEjI;AACE;AACA;AAA0C;AAE5C;AACE;AACA;AAMA;AAEF;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAEA;AACF;AAEF;AACE;AACA;AAKA;AAaA;AAEF;AAUA;AACE;AACA;AACA;AAKA;AACE;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AACE;AAQA;AAAY;AAEd;AAGA;AACE;AAKI;AACA;AACA;AAEA;AAGJ;AAAY;AAEd;AACE;AACA;AACA;AAEA;AAEF;AACE;AACA;AAGA;AAAY;AAEd;AAGA;AACE;AACA;AAAe;AAEjB;AAGA;AAGA;AAAY;AAEd;AAA4B;AAE9B;AACE;AACA;AACA;AAKA;AAGA;AACE;AAGA;AAGA;AAGA;AAGA;AAGA;AACE;AACA;AAEA;AAEF;AACE;AACA;AAAe;AAEjB;AAGA;AAAY;AAEd;AAA4B;AAE9B;AACE;AACA;AACA;AACE;AACE;AACA;AAMA;AAEF;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAEA;AAEF;AAIA;AAEF;AACE;AACA;AAGA;AAAkB;AAEpB;AACE;AACA;AACE;AACA;AAGA;AAAkB;AACpB;AAEF;AACE;AACA;AACA;AACE;AAGA;AAGA;AAGA;AACE;AACA;AAAe;AAEjB;AACE;AACA;AAAe;AACjB;AAEF;AAIA;AAEF;AACE;AACA;AACA;AAGA;AACE;AAGA;AAGA;AAEA;AAEF;AAIA;AAEF;AACE;AACA;AAqBA;AAEF;AACE;AACA;AACA;AAGA;AACE;AACE;AACA;AAEA;AAEF;AAEA;AAEF;AAIA;AAEF;AACE;AACA;AACA;AAKA;AACE;AACE;AACA;AAEA;AAEF;AAGA;AACE;AACA;AAGA;AAEF;AAEA;AAEF;AAIA;AAEF;AACE;AACA;AACA;AAKA;AACE;AACE;AACA;AAEA;AAEF;AACE;AACA;AAEA;AAEF;AAGA;AACE;AACA;AAAc;AAEhB;AAEA;AAEF;AAIA;AAEF;AACE;AACA;AACA;AAKA;AACE;AACE;AACA;AAEA;AAEF;AACE;AACA;AAEA;AAEF;AAGA;AACE;AACA;AAAc;AAEhB;AAEA;AAEF;AAIA;AAEF;AACE;AACA;AACA;AAKA;AACE;AACE;AACA;AAEA;AAEF;AACE;AACA;AAEA;AAEF;AAGA;AACE;AACA;AAAc;AAEhB;AAEA;AAEF;AAIA;AAEF;AACE;AACA;AACA;AAMA;AACE;AACE;AACA;AAEA;AAEF;AACE;AACA;AAEA;AAEF;AAGA;AACE;AACA;AAAc;AAEhB;AACE;AACA;AAAc;AAEhB;AAEA;AAEF;AAIA;AAEF;AACE;AACA;AAEA;AAEF;AACE;AACA;AAGA;AAAkB;AAEpB;AACE;AACA;AACA;AACA;AAUA;AAAkB;AAEpB;AACE;AACA;AACA;AACE;AACA;AAKA;AAEF;AAAkB;AAEpB;AACE;AACA;AAMA;AAAe;AAEjB;AACE;AACA;AAOA;AAAe;AAEjB;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AACE;AACA;AAGA;AACA;AAIA;AACF;AACF;AArjDF;AACI;AAAa;AAqjDjB;ACtjDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACJ;AACA;AACA;AACE;AACA;AACA;AACE;IACF;AACE;AACA;AACA;IACF;AAAA;AACF;AAEE;AACE;AACA;AACA;AACA;AAAsB;EAE1B;AAAA;AAEE;AACA;AACA;AACE;AACA;AACE;MACF;AAAA;AAEF;EACF;AAAA;AApCI;AAAa;AAqCjB;ACtCA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADiD;ACAlE;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACJ;AACA;AACE;AACA;AACA;AACE;AACA;AACA;AACE;MACF;AAAA;AAEF;EACF;AAAA;AAEE;AACE;AACA;AACA;AACE;AACA;AACA;AACE;AACA;AACA;QACF;MACF;AAAA;EAEJ;AAAA;AAEE;AACA;AACA;AACE;IACF;AACE;IACF;AAAA;AAEE;IACF;AACE;IACF;AAAA;AAEE;AACE;MACF;AACA;AACE;MACF;AAAA;IAEF;AACA;AACA;AACA;EACF;AAAA;AAEE;AACE;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACE;IACF;AAAA;AACF;AAEE;AACA;AACE;AACE;AACE;QACF;AAAA;AACF;AACF;AAEE;IACF;AACE;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;IAEF;AACA;AACE;IACF;AAAA;AACF;AAEE;AACE;AACA;AACI;AACJ;AACE;AACE;AACA;AACA;AAAK;AAEL;AACA;AACA;AAAK;AAEL;AACA;AAFK;AAIT;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;EAEJ;AAAA;AAEE;AACE;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;AACF;AACF;AAEE;AACE;IACF;AAAA;AAEA;AACE;AACA;AACA;IACF;AACA;AACE;AACA;AACE;MACF;AAAA;AACF;AACF;AAEE;AACE;IACF;AAAA;AAEE;IACF;AAAA;AACF;AAhKI;AAAa;AAiKjB;AClKA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACJ;AACA;AACA;AACA;AAPA;AACI;AAAa;AAOjB;ACRA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACJ;AACA;AACE;AACE;AACA;AAAS;AAEX;EACF;AAAA;AAXA;AACI;AAAa;AAYjB;ACbA;;AAAA;AACI;AAAmB;AACnB;AAEJ;AAJA;AACI;AAAa;AAIjB;ACLA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACE;AACE;AACA;AACA;AACA;AAAY;AAEd;AACE;AACA;AACA;AAAa;AAEf;AACE;AACA;AACA;AAAY;AAEd;AACE;AACA;AACA;AACA;AAAqB;AAEvB;IACF;AAAA;AAEE;AACE;AACA;AACE;AACA;AACA;AACE;UACF;AACE;AACA;AACE;AACA;AACA;AACE;cACF;AAAA;AACF;AACF;AACF;AACF;AACF;AAjDF;AACI;AAAa;AAkDjB;ACnDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACJ;AACA;AACE;AACA;AACA;EACF;AAAA;AAEE;AACA;AACE;IACF;EACF;AACA;AACE;AACA;AACA;AACE;AACA;IACF;EACF;AACA;AACA;AACE;AACA;EACF;AACA;AACE;AACA;AACE;IACF;AAAA;AAEF;AACE;AACE;AACA;IACF;AACE;IACF;AAAA;AAEF;AACE;EACF;AACA;AACE;AACA;AACA;AACA;AACE;IACF;AAAA;AAEA;EACF;AACA;AACE;AACA;AACA;AACA;AACE;IACF;AAAA;AAEA;EACF;AACA;AACE;AACA;AACA;EACF;AACA;AACE;AACA;AACA;AACE;AACE;MACF;IACF;AAAA;AAEE;AACE;AACA;AAAmF;IAEvF;EACF;AAAA;AAtFI;AAAa;AAuFjB;ACxFA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;EACF;AAGE;AACE;AACA;AACA;AACA;AACE;AACE;AACA;AACE;UACF;AAEE;AAAyB;AAC7B;AAEF;AACA;IACF;EAEF;AAAA;AAvBI;AAAa;AAwBjB;ACzBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD8C;ACA/D;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AACI;AAAa;AAOjB;ACRA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;EACF;AAHA;AACI;AAAa;AAGjB;ACJA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADqC;ACAtD;AAAA;AACI;AAAmB;AACnB;AAmBJ;AACE;AACA;EACF;AAAA;AAIA;AAEA;AACA;AAIA;AAIA;AACE;AACE;AAA8C;AAEhD;EACF;AAEA;AACE;AAAQ;AAAS;AAAK;AAAM;AAAG;AAE/B;AACE;AAAiB;AAIjB;AAEE;AACA;AACE;QACF;AAAA;MAEF;AAAA;AACF;AAIA;AACE;AAAY;AAGZ;AAEE;AACE;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAGL;AACA;AACA;AACE;AAA0B;AAJvB;IAOX;AACE;AACA;AACA;AACE;AAA0B;AAG5B;AACA;AACE;AAA8B;AAClC;EAGF;AAEA;AACE;AAEA;AACE;AAA8C;AAG9C;AAAiB;AAKjB;AAEuC;AAIvC;OACG;AAEH;;AAGA;AAAmD;AAInD;AACA;AACE;MACF;AACE;MACF;AAAA;AAGE;AACA;AAIA;AAEE;QACF;AAAA;AACF;AACF;EAGF;AAEA;AAEA;AACE;AACE;AAA8C;AAIhD;AACE;AAEA;AACE;AACA;MACF;AAAA;AACF;AAGA;AAEA;EACF;AAGA;AACE;AAAU;AAAU;AAAQ;AAE5B;AACE;AAA8C;AAG9C;AAAW;AAGb;AACA;AAEA;AAEE;AACA;AACE;AAA2C;AAG7C;AACE;AAEE;AACA;QACF;AAAA;AACF;AAGE;AAAW;AAGX;AACA;MACF;AACE;MACF;AAAA;AAGE;AAA2C;AAC/C;EAGF;AAEA;AACE;AAAS;AAET;AACE;AAAW;AAIX;AACE;SACG;AACH;AAAyB;IAE7B;AAAA;AAIE;AACE;AAA8B;AAAQ;MAExC;AAAA;AAEA;AACA;IACF;AAAA;AAIA;AACE;IACF;AAEE;AACE;AAA0D;AAC9D;AAGA;EACF;AAEA;AACE;AACA;AACE;OACG;AACH;;AAEA;AAAgC;EAEpC;AAEA;AACE;AACA;AACE;OACG;AACH;;AAEA;AAAkC;EAEtC;AAEA;AACE;EACF;AAAA;AAGE;EACF;AAAA;AAGE;EACF;AAAA;AAGE;EACF;AAAA;AA3SI;AAAa;AA4SjB;AC7SA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADqC;ACAtD;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAuE;ACDxF;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADkD;ACAnE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAW;AAEX;AADK;IAGX;AACA;AACE;AACE;MACF;AAAA;AACF;AAEE;AACA;AACA;AACE;AACE;AACA;AAAK;AAEP;AACE;AACA;AACA;AAAK;AAEL;AACA;AACA;AAAK;AAEL;AACA;AAFK;AAIT;AACA;AACA;IACF;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACE;QACF;AAAA;AAEA;AACA;AACA;AACE;AACA;AACA;QACF;AAAA;AAEA;AACE;QACF;AAAA;MAEF;AAAA;AAEA;AACA;AACE;AACA;MACF;AAAA;AAEA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;MACF;AAAA;IAEF;AACA;AACE;AACA;AACE;AACA;AACE;AACA;QACF;AAAA;AAEE;AACA;QACF;AAAA;AAEE;AACA;QACF;AAAA;AACF;IAEF;AACA;AACE;AACA;AACE;AAAwB;AAExB;AACA;AACA;AACA;MACF;AAAA;IAEF;AACA;AACE;IACF;AAAA;AAEE;AACA;IACF;AAAA;AAEE;AACA;IACF;AAAA;AArIF;AACI;AAAa;AAsIjB;ACvIA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD8C;ACA/D;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AAAC;AAEH;AACA;AACA;AACA;AACA;AACE;IACF;AACE;IACF;AAAA;AAEA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAiE;AAEnE;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AAAuD;AAEzD;MACF;AAAA;AACF;AAEE;AACA;AACE;AAA4B;AAE9B;AACA;IACF;AAAA;AAEE;AACA;AACE;AACA;AACE;AACA;QACF;AAAA;AACF;IAEF;AACA;AACE;AACA;IACF;AACA;AACE;AACA;AACE;MACF;AACE;AACA;AACE;AAAyB;AAE3B;AACE;AACA;QACF;AACE;AACA;QACF;AACE;AACE;AAAkC;AAElC;AAAqB;AAErB;AACA;UACF;AACE;AACA;AACE;;AAEA;AAAwB;AAExB;AAAoB;AACxB;QAEF;AAAA;AAEA;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AAEE;AACE;AAAuD;AAEzD;AACA;IACF;AACA;AACA;AACE;AACE;MACF;AACE;AACA;AACE;AAAW;MAEf;AAAA;IAEF;AAAA;AAEE;AACE;AAAQ;AAER;AAAsB;AAEtB;AACE;;AAEA;AAAmB;AACvB;AAEE;AAAQ;AAER;AAA8C;AAE9C;AACE;AACA;QACF;AACE;AAAmB;AACvB;IAEF;AAAA;AAEE;AACA;AACA;AACA;AACE;AAA6B;AAE7B;AACA;AACE;;AAEA;AAAkB;MAEtB;AAAA;AAEA;AACE;AACE;AAAiB;MAErB;AAAA;AAEA;AACA;AACE;AACA;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEE;AACA;AACA;AACA;AACE;AAAyB;AAE3B;MACF;AAAA;AAEE;AAA+B;AAEjC;AACE;;AAEA;AAAU;AAEV;AACA;MACF;AAAA;AAEA;AACE;AAAyB;AAEzB;AAAiB;AAEjB;AAAsB;IAE1B;AACA;AACE;AACA;AACE;MACF;AAAA;IAEF;AAAA;AAEE;AACE;AACA;AACE;AACA;QACF;AAAA;AACF;AAEA;IACF;AAAA;AAEE;AACA;AACA;AACE;AACA;AACA;AACE;AACE;UACF;;AAEA;AAAqB;AACzB;AACF;AAEE;AACA;AACA;IACF;AAAA;AAEE;AACE;AACA;AACE;QACF;MACF;AAAA;AACF;AAEE;AACA;AACE;AACA;AACA;AACE;;AAEA;AAAkB;AACtB;IAEF;AAAA;AAEE;IACF;AACA;AACE;AACA;AACA;AACE;AACE;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAFK;AAIT;AACA;AACA;AACA;AACA;AACE;;AAEA;AAAsB;AAExB;AACE;AACA;AACE;QACF;AAAA;AACF;AAEE;AACA;MACF;AAAA;AAEA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAS;AACb;AAEA;AACE;AACA;AACA;AACE;AACA;AACA;QACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACE;AAAsB;AAC1B;AAEE;SACG;AACH;;AAEA;AAAkD;AAElD;AACA;MACF;AAAA;AAEA;AACE;AACA;AACA;MACF;AAAA;AAEA;AACE;AACA;MACF;AAAA;AAEA;AACE;AACA;MACF;AAAA;IAEF;AACA;AACE;AACE;AACA;AACA;AACE;AAAkB;AAElB;AACA;QACF;AAAA;IAEJ;AAAA;AAEE;AACA;AACE;AAAW;AAEX;AACE;AAAW;AAEX;AAAkB;AAEpB;AACA;AACA;AACE;AAAyB;MAE7B;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACE;AAA6B;MAEjC;AAAA;AAEA;AACE;AAAW;AAEb;AACA;AACE;AAA4B;AAE9B;IACF;AACA;AACE;AACA;AACE;MACF;AAAA;AAEE;AACA;AACE;AACA;AACA;AACA;AACE;AACA;AACE;AACA;YACF;UACF;AACE;UACF;AAAA;AACF;AACF;IAEF;AACA;AACA;AACE;AACA;AACE;AACA;AACA;AACE;AACA;QACF;AAAA;MAEF;AAAA;IAEF;AACA;AACE;AACE;AACA;AACE;QACF;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACE;AAAc;AAClB;AAEE;AACA;AACE;AACA;AACA;MACF;AAAA;IAEF;AACA;AACE;AACA;AACA;AACE;AACE;QACF;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AAAgB;AACpB;MAEF;AACA;AACE;AACA;AACE;AAAkC;AAElC;AAAM;AAER;AACE;AACA;QACF;AAAA;AAEF;AACE;AACE;AACE;AACE;YACF;UACF;QACF;AAAA;AACF;AAEA;AACE;MACF;AACA;AACE;AACA;AACE;AACA;QACF;AAAA;AAEF;IACF;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AAAW;AAEX;SACG;AACH;SACG;AACH;AACE;;AAEA;AAAiC;MAErC;AACE;AACE;AACA;AACA;QACF;AACE;QACF;AACE;AACE;;AAEA;AAAmB;AAErB;AACI;AACF;AACA;AACA;AACE;;AAEA;AAAwB;AAExB;;AAEA;AAAY;UAEhB;AAAA;AACF;AACF;IAEF;AAAA;AAEE;AACA;AACE;AAAyD;AAEzD;AACA;AACE;AACE;AACA;AACA;UACF;AAAA;MAEJ;AAAA;AACF;AAEE;AACI;AACF;MACF;AAAA;AACF;AAEE;AACI;AACF;AACE;AAAQ;AACZ;IAEF;AAAA;AA7mBF;AACI;AAAa;AA8mBjB;AC/mBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;IACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AAAiE;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;MACF;AACA;AACA;AACA;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACE;AAA4B;AAE9B;AACA;IACF;AAAA;AAEE;IACF;AACA;AACE;AACA;AACA;AACE;MACF;IACF;AAAA;AAEE;AACA;AACE;AACA;AACA;AACE;QACF;AACA;MACF;AAAA;IAEF;AAAA;AAEE;AACA;AACA;AACE;AACA;MACF;AAAA;AAEE;SACG;AACH;AAAgC;AAEhC;AAAkB;AAElB;SACG;AACH;AACA;MACF;AAAA;IAEF;AACA;AACE;AACA;IACF;AACA;AACE;AACA;AACE;AACA;AACE;AAAwB;AAC5B;AAEF;AACE;AACE;MACF;AAAA;IAEF;AAAA;AAEE;AACA;AACE;AAAmB;AAErB;AACA;AACA;AACE;AAAsB;AAEtB;;AAEA;AAAuD;IAE3D;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;;AAEA;AAA6C;IAEjD;AAAA;AAEE;AACE;AACE;AACA;QACF;SACG;AACH;AACA;MACF;AAAA;AAEA;IACF;AAAA;AAEE;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;SACG;AACH;AACA;AACE;QACF;AAAA;AAEE;AACE;UACF;QACF;AACE;QACF;AAAA;AACF;AACF;AAEE;AACE;AAA2B;AAE7B;AACA;IACF;AAAA;AAEE;AACE;AACA;MACF;AAAA;AACF;AAEE;AACA;AACE;AACA;AACE;AAAkC;AAEpC;AACE;AACE;AACA;UACF;AAAA;AAEF;MACF;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;UACF;AAAA;AACF;AAEE;;AAEA;AAAuB;AAC3B;IAEF;AAAA;AAEE;IACF;AACA;AACA;AACE;AACA;AACE;AACA;AACA;MACF;AACE;AACA;MACF;AAAA;AAEE;AAA2B;AAE3B;AACA;MACF;AAAA;AAEE;AAA4B;AAEhC;AACE;IACF;AAAA;AAEE;AACE;AACA;MACF;AAAA;AACF;AAEE;AACA;AACE;AACE;AACA;AACA;QACF;AACE;AAAwB;AAC5B;IAEF;AAAA;AAEE;AACA;AACA;AACE;AACE;;AAEA;AAAyB;AAC7B;IAEF;AAAA;AA1RF;AACI;AAAa;AA2RjB;AC5RA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;AACA;AACE;AAAc;IAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AAAqD;AAEzD;AACE;AACE;AAA0B;AAE5B;AACA;AACE;AAAqB;AAErB;AAAqB;AAEvB;AACE;AAA0B;IAE9B;AAAA;AAEE;AACE;AAAM;IAEV;AAAA;AAEE;AACI;AACF;MACF;AAAA;AACF;AA1CF;AACI;AAAa;AA2CjB;AC5CA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AACA;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACA;AACA;AACE;AAAuE;AAEzE;AACA;AACE;AAAiB;AAEjB;AAAM;AAER;AACA;AACE;MACF;AAAA;AACF;AAEE;AACE;AAA6B;AAE/B;AACA;AACA;AACA;AACA;AACE;AACE;AACE;UACF;;AAEA;AAAY;IAElB;AAAA;AAEE;AACA;IACF;AACA;AACE;IACF;AACA;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACE;AAA4B;AAChC;AAEF;AACE;AACA;AACE;AACA;MACF;AACE;MACF;AAAA;AAEF;AACE;AACE;AAA+B;AAEjC;AACA;AACE;AAA6D;AAE7D;AAAiE;IAErE;AAAA;AAxFF;AACI;AAAa;AAyFjB;AC1FA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACE;AACE;MACF;AAAA;IAEF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACA;AACE;IACF;AAAA;AAhEF;AACI;AAAa;AAiEjB;AClEA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD6C;ACA9D;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AAA+B;EAEnC;AAAA;AAEE;EACF;AAbA;AACI;AAAa;AAajB;ACdA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;AACA;AACE;AACE;AACE;QACF;AAAA;AACF;AACF;AAEA;AACE;AACE;MACF;AAAA;AACF;AAEA;AACE;AACA;IACF;AAAA;AAEA;AACE;AACE;AAAM;AAER;IACF;AAAA;AAEE;AACE;AAAM;AAER;AACE;AAAc;AAClB;AAEE;AACA;AACE;MACF;AAAA;AACF;AAEA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACF;AAAA;AAEA;AACA;AACA;AACA;EACF;AAxEA;AACI;AAAa;AAwEjB;ACzEA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD+C;ACAhE;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAkF;ACDnG;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADkD;ACAnE;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACE;AACA;EACF;AACA;AACA;AACE;AACA;AAAY;AAEd;AACE;AACA;AACA;AACE;AACA;AACE;AAAQ;AAEV;AACE;AACI;AACJ;AACE;AACE;UACF;AACE;UACF;AAAA;AAEA;QACF;AAAA;AAEA;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACA;AACE;AAAuC;AAEvC;AAAmB;EAEvB;AACA;AACE;EACF;AACA;AACE;AACE;AACE;AACA;MACF;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;AACE;AACA;AACA;QACF;AAAA;AACa;AAEb;MACF;AACE;MACF;AAAA;AAEA;AACE;AACA;MACF;AAAA;AAEA;AACE;MACF;AACE;AAAgB;IAEpB;AAAA;AAEF;AACE;AACA;AACE;AACA;AACA;IACF;AAAA;AAEE;AACA;IACF;AAAA;AAEF;AACE;EACF;AApGA;AACI;AAAa;AAoGjB;ACrGA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AAAC;AAEC;AACA;AAEA;AACE;IACF;AAAA;AAEA;AAIA;AAEE;AAEa;AAAU;AAAS;AAAa;AAQ3C;AACA;AACE;QACF;AAAA;MAEF;AAAA;IAEF;AAIA;AAEE;AACA;AACE;MACF;AAAA;AAGc;AAAI;AAAQ;AAAS;AAUjC;MACF;AAAA;IAEF;EAEF;AA7DA;AACI;AAAa;AA6DjB;AC9DA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADqC;ACAtD;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAa;AAEX;AACE;MACF;AAAa;AAEf;AACE;IACF;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AAAQ;AAEV;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;AACE;AAAM;IAEV;EACF;AACA;AACA;AACE;EACF;AACA;AACE;EACF;AACA;AACE;EACF;AACA;AACE;EACF;AACA;AACE;AACA;AACA;EACF;AACA;AACE;AACE;AAAiB;AAEnB;AACE;AACA;AACA;AACE;AACE;QACF;AAAA;AAEA;AAAqC;AACzC;AAEE;IACF;AACE;IACF;AACE;AACA;AACE;MACF;AAAA;IAEF;AACE;AACA;AACE;MACF;AAAA;AAEA;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;IAEF;AACE;IACF;AACE;AACA;AACE;MACF;AAAA;IAEF;AAAA;AAEF;AACA;AACE;AACE;AAAY;EAEhB;AACA;AACE;AACA;AACE;AAAc;EAElB;AACA;AACE;EACF;AACA;AACE;AACE;AAAoB;AAEpB;AACE;AAAQ;AACZ;EAEF;AACA;AACE;AACE;AAAW;AAEX;AAAW;AAEX;AAAW;AAxJf;AACI;AAAa;AAyJjB;AC1JA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;EACF;AACE;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AAAA;AAEE;AAAW;AAEX;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEE;AACE;QACF;AAAA;MAEF;AAAA;AAEE;AAAoD;AAEtD;AACE;AAAsB;IAE1B;AACA;AACE;AACA;AACA;AACA;IACF;AACA;AACA;AACA;AACE;AACE;MACF;AACE;MACF;AACE;AACA;AACE;AACE;AACA;AACE;AACE;AACA;AACA;cACF;AACE;cACF;AAAA;UAEJ;AAAa;AACf;MAEF;AACE;MACF;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAqC;EAEzC;AAAA;AAtII;AAAa;AAuIjB;ACxIA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADmD;ACApE;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACE;AACE;AAAsB;AAC1B;AAEA;AACE;AACE;AAAW;AAEb;EACF;AAbA;AACI;AAAa;AAajB;ACdA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD8C;ACA/D;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAgF;ACDjG;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADiD;ACAlE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACE;AACA;AACA;AACA;AACE;AACE;UACF;AACE;AACE;YACF;AACE;YACF;AACE;AACA;AACA;YACF;AAAA;AAEA;UACF;AACE;UACF;AAAA;AAEA;QACF;MACF;IACF;AAAA;AAEE;AACE;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AAA4C;AAE9C;AACE;QACF;AAAA;AAEE;QACF;AACA;AACA;AACE;AACA;AACE;UACF;AACA;AACA;AACE;UACF;QACF;MACF;IACF;AAAA;AApEF;AACI;AAAa;AAqEjB;ACtEA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACA;AACJ;AACA;AACE;AACA;AACE;AACE;AACA;AACA;QACF;AACE;AACA;AACA;QACF;AACE;QACF;AAAA;AAEA;AACA;AACE;AACA;QACF;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AArCF;AACI;AAAa;AAsCjB;ACvCA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACE;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;AACE;QACF;MACF;AACE;MACF;AAAA;AAEA;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACE;AACE;UACF;AACE;UACF;AAAA;AACF;AAEF;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACA;AACA;AACA;AACA;AACE;AACE;QACF;MACF;AAAA;AAEE;AACE;QACF;MACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;QACF;MACF;AAAA;AAEE;AACA;AACA;AACE;QACF;MACF;AAAA;AAEE;AACE;QACF;MACF;AAAA;AAEA;AACE;AACE;AACA;AACA;AACA;AACA;QACF;AAAA;MAEF;AAAA;AAEE;AACE;AACA;AACA;AACA;QACF;AACE;QACF;AAAA;AACF;AAEA;AACE;MACF;AACE;MACF;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;AAEE;AACA;AACA;AACE;QACF;AAAA;AAEA;AACA;AACE;AACA;AACE;UACF;QACF;AACE;QACF;AAAA;MAEF;AAAA;AAEA;AACE;AACA;AACE;QACF;AAAA;AAEA;AACA;MACF;AAAA;AAEA;AAA4C;AAE5C;AACA;AACA;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACE;QACF;AACE;AACA;QACF;AAAA;AACF;AAEE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;AACE;AACA;AACE;AACE;YACF;AAAA;AAEA;AACE;YACF;AACE;YACF;AAAA;AAEA;AACE;YACF;AAAA;AAEA;UACF;AACA;AACE;AACA;UACF;AAAA;MAEJ;AAAA;AAEE;AACE;QACF;AACE;QACF;AACE;AACE;UACF;AACE;UACF;QACF;AAAA;AACF;AAEE;AACE;QACF;AACE;AACE;UACF;AACE;UACF;AACE;UACF;AACE;UACF;AAAA;AACF;AACF;AAEE;AACE;QACF;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;AACE;QACF;AAAA;MAEF;AAAA;AAEE;AACE;QACF;AAAA;AAEA;AACA;AACE;QACF;AAAA;AACF;AAEE;AACE;QACF;AAAA;AAEA;AACA;MACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACE;QACF;AAAA;AACF;AAEE;AACA;AACA;AACE;QACF;AAAA;AAEI;AACA;AACJ;AACE;AACA;AACA;AACE;UACF;AACE;UACF;AAAA;AACF;MAEF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;AACE;QACF;AACE;AACA;QACF;AAAA;AACF;AAEE;AACI;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;AACA;AACA;UACF;AACE;UACF;AAAA;AAEE;AACA;UACF;AAAA;AAEA;AACA;QACF;AAAA;AAEE;QACF;AACE;QACF;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;AACE;AACE;UACF;AACE;UACF;QACF;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEA;AACE;AACA;AACA;AACE;AACA;QACF;AAAA;AAEA;AACE;QACF;AAAA;AAEE;QACF;AAAA;AAEE;QACF;AAAA;MAEF;AAAA;AAEA;AACE;AACA;AACA;AACA;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;AACA;AACA;AACA;AACA;AACE;AACA;QACF;AAAA;AACF;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACE;QACF;AAAA;AAEF;AACA;AACE;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACE;UACF;AACE;AACA;AACA;AACE;YACF;AAAA;AACF;AAEA;QACF;AAAA;AACF;AAEE;MACF;AACA;AACE;AACA;AACA;AACE;QACF;AAAA;AAEF;AACE;AACA;AACA;AACE;AACA;AACE;UACF;AACE;AACA;UACF;AACE;AACA;AACA;UACF;AACE;AACE;YACF;UACF;AAAA;AAEA;QACF;AAAA;AAEF;AACE;AACA;AACE;AACA;AACE;UACF;AACE;UACF;AAAA;AACF;AAEE;QACF;AAAA;AAEF;AACE;AACA;AACE;QACF;AACE;QACF;MACF;AACA;AACE;AACA;AACE;QACF;AACE;QACF;AACE;AACE;UACF;AACE;UACF;AAAA;AACF;AAEA;AACE;QACF;AAAA;MAEF;AAAA;AAEA;AACE;AACA;AAA4C;AAE9C;AACE;AACE;QACF;MACF;AACE;MACF;AACE;MACF;AAAA;IAEF;EACF;AArgBA;AACI;AAAa;AAqgBjB;ACtgBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADoD;ACArE;;AAAA;AACI;AAAmB;AACnB;AAEJ;AAJA;AACI;AAAa;AAIjB;ACLA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACE;AACA;AACA;AACA;AACE;AACA;AACE;AACA;AAAW;QAEf;AAAA;AAEA;MACF;AACE;MACF;AAAA;AACF;AAEE;AACE;AACA;AACE;AACE;AACA;AACA;AACE;AACA;AAAY;UAEhB;QACF;AACE;QACF;AAAA;AAEA;MACF;AAAA;AACF;AAEE;AACE;MACF;AAAA;AAEA;AACE;AACA;AACE;QACF;AACE;QACF;AAAA;AAEA;AACE;AACE;AACE;YACF;AACE;YACF;AAAA;QAEJ;AACE;QACF;AAAA;IAEJ;AAAA;AAEE;AACA;AACE;MACF;AAAA;AAEE;AACA;MACF;AACE;AACA;MACF;AAAA;AACF;AAvFF;AACI;AAAa;AAwFjB;ACzFA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACE;AACE;MACF;AAAA;AAEA;AACA;IACF;AACE;IACF;AAAA;AACF;AAEE;AACA;AACE;AACE;AACA;AACA;AACE;AACA;QACF;AACE;QACF;AAAA;IAEJ;AAAA;EAEF;AAAA;AAEE;AACA;AACA;AACE;AACE;AACA;AACA;MACF;AAAA;EAEJ;AAAA;AA9CI;AAAa;AA+CjB;AChDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACJ;AACA;AACE;AACA;AACA;AACA;EACF;AAAA;AAEE;AACE;AACA;AACA;AACE;MACF;AAAA;AAEE;AACA;AACA;AACA;AACE;AACE;UACF;AACE;UACF;AAAA;AAEA;QACF;AAAA;IAEJ;AAAA;AACF;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAiB;AAEnB;EACF;AAAA;AAEE;AACE;AACE;MACF;AACE;MACF;AACE;MACF;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;AAEF;AACI;AACA;AACJ;AACE;AACA;AACE;MACF;AACE;AACA;AACA;AACA;AACA;AACE;QACF;AAAA;AAEA;MACF;AAAA;IAEF;EACF;AAAA;AA/FI;AAAa;AAgGjB;ACjGA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;IACF;AACA;AACE;AACE;AACE;AACE;UACF;QACF;AACE;AACE;UACF;QACF;AACA;MACF;AACE;MACF;AAAA;EAEJ;AAtBA;AACI;AAAa;AAsBjB;ACvBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD2C;ACA5D;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACA;AACA;AACA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEA;AACA;AACA;AACA;AACE;AACA;AACE;AACA;AACA;MACF;AAAA;AACF;AAEA;AACA;AACE;AACA;AACE;AACA;AACA;MACF;AAAA;AACF;AAEA;EACF;AACA;AACE;AACI;AACJ;AACE;IACF;AAAA;AAEA;AACE;AACA;AACE;MACF;AAAA;AACF;EAEF;AACA;AA3DA;AACI;AAAa;AA2DjB;AC5DA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;EAEF;AAAA;AAEE;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACE;IACF;AAAA;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;AACE;IACF;AAAA;EAEF;AAAA;AAEA;AACA;AACE;AACA;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACE;IACF;AAAA;AACF;AAEE;AACE;AACI;AACA;AACJ;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEF;AACE;AACI;AACJ;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;IAEF;AAAA;AAEF;AACE;AACI;AACA;AACA;AACJ;AACE;AACA;AACE;AACE;AACA;AACE;UACF;AAAA;AACF;AAEA;MACF;AAAA;IAEF;AAAA;AACF;AAEE;AACI;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEA;AACE;AACA;AACE;AACA;MACF;AAAA;AACF;AACF;AAEE;AACI;AACJ;AACA;AACE;IACF;AAAA;AAEE;AACE;AACE;QACF;AAAA;AAEA;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEA;IACF;AAAA;EAEF;AAAA;AAEE;AACA;AACA;AACE;IACF;AACE;AACA;AACE;MACF;AAAA;AAEA;IACF;AAAA;AAEA;EACF;AAAA;AAEE;AACI;AACJ;AACE;AACE;MACF;AAAA;AAEE;AACE;QACF;MACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;AACA;QACF;AAAA;AAEA;MACF;AAAA;AACF;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACJ;AACA;AACE;AACA;AACA;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACE;IACF;AACE;IACF;AAAA;AACF;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;IACF;AAAA;AAEE;AACA;AACE;MACF;AAAA;AACF;AAEA;AACA;AACA;AACA;AACE;AACE;AACA;AACE;QACF;AAAA;AAEA;AACA;AACE;QACF;AAAA;AAEA;MACF;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACA;QACF;AACE;AACA;AACA;AACA;AACA;QACF;AAAA;AACF;AAEE;AACA;AACA;AACA;MACF;AAAA;AAEE;MACF;AAAA;IAEF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACA;EACF;AAAA;AAEE;AACI;AACA;AACJ;AACA;AACE;IACF;AAAA;AAEA;AACA;AACA;AACA;AACE;AACE;AACA;AACA;AACE;AACA;QACF;AACE;QACF;AAAA;AAEA;AACA;AACA;MACF;AACE;MACF;AACE;AACA;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;IACF;AAAA;AAEA;AACA;AACA;AACA;AACE;AACE;AACA;AACA;MACF;AACE;AACA;AACA;AACE;QACF;AACE;AACA;QACF;AACE;AACA;AACA;AACE;AACA;AACE;YACF;AACE;YACF;AAAA;AACF;AAEA;QACF;AACE;QACF;AAAA;MAEF;AACE;AACA;AACA;MACF;AACE;MACF;AACE;AACA;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACA;AACA;IACF;AACE;AACA;AACA;IACF;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;MACF;AACE;MACF;AAAA;AAEA;AACA;AACE;AACA;AACE;AACA;AACA;QACF;AAAA;AACF;AAEA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;MACF;AAAA;AAEE;MACF;AACE;MACF;AACE;MACF;AAAA;AAEA;AACA;AACE;AACA;MACF;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;IACF;AACE;IACF;AACE;IACF;AAAA;AAEA;AACA;AACE;AACA;AACE;AACE;QACF;AACE;QACF;AAAA;AAEA;AACE;QACF;AACE;AACA;QACF;AACE;QACF;AAAA;AAEA;MACF;AAAA;AACF;AAEE;AACE;MACF;AACA;AACE;AACE;QACF;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACE;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEE;AACE;QACF;AACE;AACE;UACF;AAAA;AACF;MAEF;AAAA;AAEE;AACE;AACA;QACF;AACE;AACA;QACF;AACE;AACE;UACF;AAAA;AAEA;QACF;AAAA;AAEA;MACF;AACE;MACF;AAAA;AAEA;AACA;AACA;AACE;MACF;AAAA;IAEF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEA;AACE;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEA;AACA;AACE;AACE;AACA;AACA;QACF;AAAA;AACF;AAEA;AACA;AACA;AACA;AACA;AACE;MACF;AACE;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;AACA;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEA;AACE;AACA;AACA;AACE;AACE;AACE;AACA;UACF;AAAA;AAEA;AACA;QACF;AACE;AACA;QACF;AACE;QACF;AAAA;AAEA;MACF;AACE;AACE;AACA;AACE;UACF;AAAA;AAEE;AACA;AACE;YACF;AAAA;AAEE;AACA;YACF;AAAA;AAEA;AACA;AACA;AACA;UACF;AACE;UACF;AACE;AACA;AACA;UACF;AAAA;AAEA;QACF;AACE;AACA;AACA;QACF;AAAA;AAEA;MACF;AAAA;AAEE;AACE;AACE;UACF;AACE;UACF;AAAA;AACF;AAEE;AACA;QACF;AAAA;AAEA;MACF;AAAA;AAEE;MACF;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEE;AACA;AACA;AACA;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;AACA;IACF;AACE;AACA;AACA;IACF;AACE;IACF;AAAA;AAEA;AACE;AACE;MACF;AACA;AACE;AACA;MACF;AACE;MACF;AAAA;AAEA;AACE;AACE;AACE;AACA;AACE;YACF;AAAA;AAEA;UACF;AACE;UACF;AAAA;AACF;MAEF;AAAA;AAEA;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEE;IACF;AACE;IACF;AACE;IACF;AACE;IACF;AACE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACJ;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;EACF;AAAA;AAEE;AACI;AACA;AACJ;AACA;AACE;IACF;AAAA;AAEA;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AACA;AACE;QACF;AACE;QACF;AACE;QACF;AAAA;AACF;AACF;AAEE;AACE;AACE;AACA;AACA;AACE;UACF;AACE;UACF;AACE;UACF;AAAA;AAEA;QACF;AAAA;AACF;AACF;AAEE;IACF;AAAA;AAEE;AACE;MACF;AACE;MACF;AAAA;AAEA;AACE;AACE;QACF;AACE;AACE;UACF;AACE;AACA;AACE;YACF;AAAA;AAEA;AACA;AACE;YACF;AAAA;AACF;AAEE;UACF;AAAA;AACF;AAEA;MACF;AAAA;AACF;AAEE;AACE;AACE;AACA;AACE;AACA;AACA;AACE;YACF;AAAA;UAEF;AAAA;AACF;AAEA;AACA;AACE;QACF;AAAA;AAEE;QACF;AACE;AACA;AACE;UACF;AAAA;AACF;AAEA;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACJ;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACE;MACF;AAAA;AAEA;AACA;AACA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEE;AACE;QACF;AAAA;AAEE;AACE;UACF;AACA;QACF;AAAA;AAEE;QACF;AAAA;AAEA;AACE;QACF;AAAA;MAEF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AACE;MACF;AAAA;AACF;AAEA;AACE;AACA;IACF;AACE;IACF;AAAA;AAEA;AACA;AACE;IACF;AAAA;AAEA;AACE;AACE;AACA;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AACE;IACF;AAAA;AACF;AAEE;AACA;AACA;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AACF;AAEA;AACA;AACE;AACA;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACJ;AACE;IACF;AAAA;AACF;AAEE;AACA;AACE;IACF;AACE;IACF;AAAA;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEA;AACA;AACA;AAhoCA;AACI;AAAa;AAgoCjB;ACjoCA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACI;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEA;AACA;AACE;AACA;AACA;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;IAEF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACJ;AACA;AACE;AACA;IACF;AACE;AACA;IACF;AACE;AACA;IACF;AACE;IACF;AAAA;EAEF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;AACA;MACF;AACE;AACA;MACF;AAAA;AAEE;MACF;AAAA;IAEF;AAAA;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;AACI;AACA;AACJ;AACE;AACA;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACA;AACA;EACF;AAAA;AAEE;AACA;AACE;AACA;AACA;AACA;IACF;AAAA;AAEA;AACA;EACF;AACA;AACE;AACI;AACJ;AACA;AACA;AACA;AACA;EACF;AACA;AACE;AACE;IACF;AAAA;AAEF;AACE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;IACF;AAAA;AAEE;AACA;IACF;AAAA;AAEA;AACA;AACA;AACE;IACF;AAAA;AAEE;AACE;MACF;AAAA;AAEA;IACF;AACE;AACA;IACF;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;IACF;AAAA;AAEE;IACF;AACE;IACF;AAAA;AAEE;AACA;AACE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEE;AACA;MACF;AACE;AACA;AACA;AACE;AACA;AACE;AACA;UACF;AAAA;AACF;AAEE;AACA;AACA;AACE;UACF;AAAA;AACF;AACF;AAEE;MACF;AAAA;AAEA;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;AAEE;MACF;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AACE;IACF;AACE;AACA;IACF;AACE;AACE;MACF;AAAA;IAEF;AACE;AACA;IACF;AACE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEE;AACA;AACE;AACE;QACF;AAAA;AAEA;MACF;AACE;AACE;QACF;AAAA;AAEA;MACF;AAAA;AACF;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACE;IACF;AAAA;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;AACE;QACF;AACE;QACF;AAAA;AAEE;QACF;AAAA;AAEA;AACA;MACF;AAAA;AAEA;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AACE;IACF;AAAA;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACI;AACA;AACA;AACJ;AACE;AACE;AACE;QACF;AAAA;MAEF;AAAA;AACF;AAEA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACJ;AACE;AACE;AACE;QACF;AAAA;MAEF;AAAA;AACF;AAEA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEA;IACF;AAAA;AAEA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;IACF;AACE;IACF;AACE;IACF;AAAA;AAEE;AACA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEA;AACE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AACE;MACF;AAAA;AAEA;IACF;AAAA;AAEA;EACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACA;AACE;AACA;AACE;AACA;AACE;UACF;AACE;UACF;AACE;UACF;AAAA;QAEF;AAAA;MAEF;AAAA;AACF;EAEF;AAAA;AAEE;AACA;AACA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEI;AACA;AACJ;AACE;AACA;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AACE;AACE;MACF;AAAA;AAEE;AACE;AACA;AACE;UACF;AAAA;AAEA;AACA;AACE;UACF;AAAA;AACF;AAEA;AACE;AACA;AACE;UACF;AAAA;AAEA;AACA;AACE;UACF;AAAA;AACF;AAEA;AACE;QACF;AAAA;AAEA;AACE;QACF;AAAA;MAEF;AAAA;AAEE;MACF;AAAA;AACF;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACJ;AACA;AACE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACJ;AACE;AACA;AACE;AACE;QACF;AAAA;AAEA;AACA;AACE;AACE;UACF;AAAA;AAEA;AACA;AACE;UACF;AAAA;AACF;AACF;AACF;AACF;AAEE;AACA;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;EACF;AAAA;AAEA;AA1pBA;AACI;AAAa;AA0pBjB;AC3pBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACE;AACA;AACE;IACF;AACA;AACE;AACE;AACE;QACF;AAAA;AAEF;IACF;AACA;AACE;IACF;EACF;AAAA;AAEE;AACI;AACA;AACJ;AACE;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACA;AACA;AACA;AACE;AACE;MACF;AAAA;AAEF;AACA;AACA;EACF;AAAA;AAEA;AACE;AACI;AACJ;AACE;AACE;AACA;AACA;AAAK;AAEL;AACA;AACA;AAAK;AAEL;AADK;AAGT;AACA;AACA;AACE;IACF;AACE;IACF;AAAA;AAEE;IACF;AACE;IACF;AAAA;AAEE;AACA;AAAc;EAElB;AACA;AAhFA;AACI;AAAa;AAgFjB;ACjFA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACE;IACF;AAAA;AAPF;AACI;AAAa;AAQjB;ACTA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACE;IACF;AAAA;AAPF;AACI;AAAa;AAQjB;ACTA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACE;IACF;AAAA;AAPF;AACI;AAAa;AAQjB;ACTA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;IACF;AAAA;AAEA;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AACA;AACE;MACF;AACA;AACE;MACF;AACA;AACE;MACF;AAAA;AAEF;AAAwB;AAnC1B;AACI;AAAa;AAoCjB;ACrCA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;IACF;AAAA;AAEA;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AACA;AACE;MACF;AACA;AACE;MACF;AAAA;AAEF;AAAwB;AAhC1B;AACI;AAAa;AAiCjB;AClCA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACE;IACF;AAAA;AAEI;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEE;AACE;MACF;AAAA;AAEA;AACE;AACA;AACE;AACA;AACE;UACF;AAAA;AAEE;UACF;AAAA;QAEF;AAAA;MAEF;AAAA;AAEE;AACA;AACE;AACA;AACE;UACF;AAAA;AAEE;UACF;AAAA;QAEF;AAAA;MAEF;AAAA;AAEE;AACA;AACE;QACF;AAAA;AAEE;QACF;AAAA;MAEF;AAAA;IAEF;AAAA;AAEE;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEA;AACE;AACE;MACF;AAAA;AAEA;IACF;AAAA;AAEE;IACF;AAAA;AAEE;AACE;MACF;AAAA;AAEE;MACF;AAAA;IAEF;AAAA;AAEE;AACE;MACF;AACA;AACA;AACA;AACE;AACA;MACF;AACA;IACF;AAAA;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AACA;AACE;MACF;AACA;AACE;MACF;AACA;AACE;MACF;AAAA;AAEF;AACA;AACE;AACA;AACA;AACA;AAAuB;AACzB;AArKF;AACI;AAAa;AAsKjB;ACvKA;;AAAA;AACI;AAAmB;AACnB;AAEJ;AACE;EACF;AAAA;AAIE;EACF;AAAA;AAIE;AACE;IACF;AACE;IACF;AAAA;EAEF;AAAA;AAIE;AAAW;AAAQ;AAAK;AAExB;AACE;AAEA;AACE;AACA;MACF;AAAA;AACF;EAGF;AAAA;AAIE;AAAiB;AAEjB;AACE;IACF;AAAA;EAGF;AAAA;AAIE;EACF;AAAA;AAIA;AACA;AACA;AACA;AACA;AA7DA;AACI;AAAa;AA6DjB;AC9DA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACE;AACE;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACJ;AACA;AACA;AACA;AACE;IACF;AAAA;AAEE;IACF;AACE;IACF;AACE;AACE;MACF;AACA;AACA;AACA;AACE;AACA;MACF;AACA;IACF;AAAA;EAEF;AAAA;AAEA;AACE;AACA;AACE;AACE;AACE;AAAa;AAEb;AAAa;AAEb;AAAa;IAEnB;AACE;AACE;AACE;AAAa;AAEb;AAAa;AAEb;AAAa;IAEnB;AACE;AACE;AACE;AAAc;AAEd;AAAc;AAEd;AAAc;IAEpB;AACE;IACF;AAAA;AAEA;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AAAwB;AAxF1B;AACI;AAAa;AAyFjB;AC1FA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AAA6G;AAL/G;AACI;AAAa;AAMjB;ACPA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;IACF;AAAA;AAEA;AACA;AACA;AACE;IACF;AAAA;AAEA;AACA;AACA;AACE;AACA;AACE;MACF;AAAA;IAEF;AAAA;AAEE;AACA;AACA;AACA;AACE;MACF;AAAA;AACF;AAEA;AACE;IACF;AAAA;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AAAgC;AApElC;AACI;AAAa;AAqEjB;ACtEA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;EACF;AAAA;AAEE;AACA;AAAwB;AAR1B;AACI;AAAa;AASjB;ACVA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACA;AACA;AACE;AACE;MACF;AAAA;AAEI;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;QACF;AAAA;AAEE;QACF;AAAA;MAEF;AAAA;IAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACE;AACA;AACA;QACF;AAAA;MAEF;AAAA;AAEA;AACE;AACA;AACA;MACF;AACE;AACA;MACF;AACE;MACF;AAAA;AAEE;MACF;AAAA;IAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACJ;AACE;AACE;AACA;AACA;AACA;QACF;AAAA;MAEF;AAAA;AAEA;AACE;AACA;AACA;AACA;MACF;AACE;AACA;AACA;AACA;MACF;AACE;AACA;AACA;AACA;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AAA6B;EAEjC;AAxGA;AACI;AAAa;AAwGjB;ACzGA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACE;AACE;IACF;AAAA;AAEI;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACA;AACE;MACF;AAAA;AAEE;AACE;AACE;UACF;AACE;UACF;AAAA;AACF;AACF;AAEE;MACF;AAAA;AAEE;MACF;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AAA2B;AAhD7B;AACI;AAAa;AAiDjB;AClDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;IACF;AAAA;AAEI;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACA;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;IAEF;AAAA;EAEF;AAAA;AAEE;AACE;IACF;AAAA;AAEI;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;AACA;AACA;IACF;AAAA;EAEF;AAAA;AAEE;AACA;AACA;AAA4B;AAjD9B;AACI;AAAa;AAkDjB;ACnDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;IACF;AAAA;AAEI;AACJ;AACE;AACE;AACE;QACF;AAAA;AACF;AACF;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AAA0B;AAzB5B;AACI;AAAa;AA0BjB;AC3BA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACA;AAA+G;AANjH;AACI;AAAa;AAOjB;ACRA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AAAsC;AApBxC;AACI;AAAa;AAqBjB;ACtBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEI;AACA;AACJ;AACE;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AACE;IACF;AAAA;AACF;AAEE;AACI;AACA;AACJ;AACE;AACE;MACF;AAAA;IAEF;AAAA;EAEF;AAAA;AAEE;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;EAEF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AAAmC;AAhErC;AACI;AAAa;AAiEjB;AClEA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACE;AACA;AACE;AACE;AACE;QACF;MACF;IACF;AAAA;EAEF;AAAA;AAEE;AACA;AACE;AACE;MACF;AAAA;AAEF;AACA;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE;IACF;AAAA;AACF;AAvCA;AACI;AAAa;AAwCjB;ACzCA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;EACF;AACE;AACE;IACF;AAAA;AACF;AAEA;AACE;AACE;IACF;AAAA;AAEE;AACI;AACJ;AACE;MACF;AAAA;IAEF;AACE;IACF;AAAA;AACF;AAEE;AACI;AACA;AACA;AACJ;AACE;IACF;AAAA;AAEE;IACF;AACA;AACA;EACF;AAAA;AAEE;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACA;AACA;AACA;AACA;AAAqC;AApDvC;AACI;AAAa;AAqDjB;ACtDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AAAwG;AAL1G;AACI;AAAa;AAMjB;ACPA;;AAAA;AACI;AAAmB;AACnB;AAEJ;AAEE;AAGA;AAEE;IACF;AAEE;IACF;AAAA;AAGA;AACA;AACA;EACF;AAAA;AAKA;AAGA;AACE;AAEA;AAEA;AACE;IACF;AAAA;EAGF;AAGA;AA1CA;AACI;AAAa;AA0CjB;AC3CA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;IACF;EACF;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7BA;AACI;AAAa;AA6BjB;AC9BA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADkC;ACAnD;;AAAA;AACI;AAAmB;AACnB;AACJ;AACI;AAKJ;AAQE;AACE;AACE;MACF;AAEE;AACE;QACF;AAGE;QACF;AAAA;AACF;AAWF;AACE;AACE;AACA;MACF;AAEE;AACE;QACF;AAGE;QACF;AAAA;AACF;AACF;AAtDF;AACI;AAAa;AAuDjB;ACxDA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACA;AACE;AACA;IACF;AAAA;AAEE;AACA;IACF;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACA;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEA;AACA;AACA;AACA;AACE;AACA;AACE;QACF;AACE;AACA;QACF;AAAA;AAEA;MACF;IACF;AACA;AACE;AACA;IACF;AACA;AACE;AACA;AACA;AACE;MACF;AACE;MACF;AACE;MACF;IACF;AACA;AACE;AACA;IACF;AACA;AACE;AACA;AACA;AACE;AACA;MACF;AACE;MACF;IACF;AACA;AACE;AACA;IACF;AACA;AACE;AACA;AACA;AACE;AACA;MACF;AACE;MACF;IACF;AACA;AACE;AACI;AACJ;AACE;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACA;AACA;AAAiB;IAErB;AAAA;AAhHF;AACI;AAAa;AAiHjB;AClHA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADwD;ACAzE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACI;AACJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;IACF;AAAA;AAEE;IACF;AACA;AACE;IACF;AACA;AACE;AACA;AACA;AACE;AACA;MACF;AAAA;AAEF;AACE;AACE;AACA;MACF;AACE;MACF;AAAA;AAEF;AACE;IACF;AACA;AACE;AACA;IACF;AACA;AACE;AACA;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;AACE;AACE;AACE;UACF;AAAA;AAEA;QACF;AAAA;AACF;EAEJ;AAjEA;AACI;AAAa;AAiEjB;AClEA;AAAA;AACI;AAAmB;AACnB;AADJ;AAEA;AAAC;AACA;AAEC;AAID;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACC;AACA;AAEC;AAAQ;AAGR;AAAQ;AAER;AAAQ;AAER;AAA6B;AAE7B;AAAkB;AAElB;AAAuB;AACzB;AAGC;AAAO;AAAG;AAAG;AAAK;AAAc;AAEhC;AACC;MACD;AAAA;AAQA;AAGA;AAGA;AAEA;AAEA;AACC;MACD;AAAA;AAGC;AACA;AACA;AACA;MACD;AAAA;AAGC;AACA;MACD;AACC;AACA;AACA;MACD;AAAA;IAGD;AAAA;AAGC;AACC;AACA;AACA;AAAM;AAEP;AACC;MACD;AAAA;AAGC;MACD;AAAA;AAIC;AACA;MACD;AAAA;AAIC;AACC;AACA;AACA;A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AAe;AAAkC;EAEnD;AAEA;AACE;AAAe;AAAkC;EAEnD;AAEA;AACE;AAAe;AAAkC;EAEnD;AAEA;AACE;AAAe;AAAkC;EAEnD;AAEA;AACE;AAA2B;AAAsD;AACjD;AAA6C;AAC9C;AAAyC;AAC1E;AAGE;AACA;AACA;AACA;AAAe;AAAwE;AAGvF;AACA;AACA;AACE;IACF;AAAA;EAGF;AAEA;AACE;AACA;AACA;AACA;AAAe;AAAwE;AAGvF;AACA;AACA;AACE;IACF;AAAA;EAGF;AAEA;AACE;AACA;AACA;AAAe;AAAwC;AACtB;AAAwB;AAEzD;EACF;AAEA;AACE;AAAe;AAAyB;AACxB;AACd;IAEF;AAAA;AACF;AAGE;AACA;AACA;AAAe;AAA0C;AAEvD;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AACA;AACA;AAAe;AAA0C;AAEvD;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AAAe;AAA6B;AAC5B;AACd;IACF;AAAA;AACF;AAGE;AACA;AACA;AAAe;AAA8C;AAE3D;AACA;AACA;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AACA;AACA;AAAe;AAA8C;AAE3D;AACA;AACA;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AACA;AACA;AACE;AAEA;IACF;AAAA;AAGA;AACA;AACA;AACA;AACE;IACF;AAAA;EAGF;AAEA;AACE;AACA;AACA;AACE;AAEA;IACF;AAAA;AAGA;AACA;AACA;AACA;AACE;IACF;AAAA;EAGF;AAEA;AACE;AACA;AACA;AAAe;AAA4C;AAC1B;AAAwB;AAC1C;AAAuB;AAEtC;EACF;AAEA;AACE;AACA;AACA;AAAe;AAAgD;AAE7D;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AACA;AACA;AAAe;AAAgD;AAE7D;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AACA;AACA;AAAe;AAAwD;AAErE;AACA;AACA;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AACA;AACA;AAAe;AAAwD;AACxD;AAA6B;AAE1C;AACA;AACA;AACA;IACF;AACE;IACF;AAAA;EAEF;AAEA;AACE;AAAgC;AAA6C;AAC9C;AAAyC;AACxD;AAAyC;AAC3D;AAGE;AACE;IACF;AAAA;AAEA;EACF;AAAA;AAGE;EACF;AAEA;AACE;EACF;AAEA;AACE;AACE;IACF;AAAA;AAEA;EACF;AAAA;AAGE;EACF;AAEA;AACE;EACF;AAGA;AACE;AAAY;AAAQ;AACG;AAAgB;AACL;AAA0B;AAC1C;AAAc;AACJ;AAAU;AAGnB;AAAO;AACoB;AAAO;AAInD;IACF;AAAA;AACuC;AAAgD;AAC1E;AAA8C;AAGpC;AAAgB;AAErC;IACF;AAAA;AAGA;AAEA;AAEE;AACE;MACF;AAAA;AAGA;AACE;MACF;AAAA;AAEA;IACF;AAAA;EAGF;AAGA;AACE;AAAY;AAAQ;AACR;AAAQ;AACV;AAAgB;AAET;AAAkC;AAGhC;AAAK;AACD;AAAK;AAEW;AAA0C;AAC/C;AAAwC;AAG1E;AACE;AACE;MACF;AAAA;AAEA;AACA;AACA;AACE;MACF;AAAA;AACF;EAGF;AAMA;AACE;AACE;AACE;MACF;AACE;AACA;AAAgB;AACd;QACF;AAAA;MAEF;AAAA;AAEA;IACF;AAAA;AAMF;AAKA;AACE;AACA;AAGA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;EACF;AAEA;AAEA;AAEE;AAEA;AAAoB;AAAQ;AAG1B;IACF;AAAA;EAEF;AAAA;AAGE;AAAc;AAAgB;EAEhC;AAAA;AAGE;AAAY;AAA0B;EAExC;AAAA;AAGE;AACA;AACA;AACA;AACA;AAEA;AACE;AAGA;AAEE;AAEE;AAEE;AAAuB;AAA2B;UAEpD;AAEE;AAAuB;AAA2B;UAEpD;AAAA;AAKA;QACF;AAAA;AAIE;AAAuB;AAA2B;AAElD;QACF;AAAA;MAIF;AAEE;AAAuB;AAA2B;AACpD;AAKA;AACE;AAAsB;AAAI;MAE5B;AACE;AAAsB;AAAI;MAK5B;AACE;AAAsB;AAAI;MAM5B;AACE;AAAsB;AAAI;MAO5B;AACE;MACF;AAAA;AACF;EAGF;AAAA;AAGE;AACA;AAEE;IACF;AAAA;EAEF;AAAA;AAGE;AAAO;AAAI;AACX;AACA;AACE;AAAsB;AAAI;AAG1B;AACA;AACA;AACA;IACF;AAAA;EAGF;AAAA;AAGE;EACF;AAAA;AAGE;AACE;AAAqD;AAAI;IAE3D;AAAA;EAEF;AAAA;AA1gDI;AAAa;AA2gDjB;AC5gDA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADoC;ACArD;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAuE;ACDxF;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADkD;ACAnE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACA;AACE;AACE;QACF;AAAA;AAEA;AACE;QACF;AACE;QACF;AAAA;AACF;AAEA;IACF;AACA;AACE;AACA;AACA;AACE;AACA;MACF;AAAA;AAEA;AACE;AACA;AACA;AACE;QACF;AACE;QACF;AAAA;AACF;AAEA;AACA;AACA;IACF;AACA;AACE;AACA;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEE;MACF;AAAA;IAEF;AACA;AACE;AACE;MACF;AAAA;AAEA;AACE;AACA;MACF;AAAA;IAEF;AACA;AACE;AACE;AACA;AACE;QACF;AACE;AACA;AACE;AACA;AACA;UACF;AACE;UACF;AAAA;QAEF;AAAA;AACF;AACF;AAEE;AACE;AACE;QACF;AACE;QACF;AAAA;AAEA;MACF;AAAA;IAEF;AAAA;AA/GF;AACI;AAAa;AAgHjB;ACjHA;AAAA;AACI;AAAmB;AACnB;AAEJ;AACA;AACA;AACA;AACA;AAeA;AACE;AACA;AAA4B;AAAiB;EAI/C;AAUA;AACE;AACA;AAAwB;AAAM;AAE9B;AAAY;AAAM;AAElB;AACA;AACE;AACA;AACA;AACA;AACA;AACE;AAAY;AAEd;AACA;AACE;AAAY;AAEd;AACA;AACA;AACA;AACE;AAAY;AAEd;AACA;AACA;AACA;AACE;AAAY;AAEd;AACA;AACA;AACA;AACE;AAAY;AAEd;AACA;AACA;AACA;AACE;AAAQ;EAEd;AAAA;AAWE;AAAa;AAA+B;AAC/B;AAA+B;AAC/B;AAA+B;AAC/B;AAA+B;EAE9C;AAAA;AAWE;EAKF;AAAA;AAOE;AAAY;AAAM;AACA;AAAsC;EAE1D;AAAA;AA3HI;AAAa;AA4HjB;AC7HA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD6B;ACA9C;AAAA;AACI;AAAmB;AACnB;AAMJ;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AAQA;AAMA;AAMA;AASA;AACE;EACF;AAAA;AAaE;AACA;AAIA;AAEE;AAGA;AACA;AACA;AACA;AACA;AACA;AAGA;AAA4B;AAAoC;AACtB;AAA0B;AAIpE;AAEA;AAEE;MACF;AAAA;AAIA;AAEE;AAAoB;AAAY;AAEhC;AACA;AACE;AACA;AAGA;AACA;QACF;AAAA;MAEF;AAEA;AACE;MACF;AAAA;AAEA;IACF;AAAA;AAGA;AAEA;AAEA;EACF;AAAA;AAWE;AAEA;AACA;AAEA;AACE;AAAe;AAAQ;AAEvB;AACE;MACF;AACE;MACF;AAAA;AACF;AACF;AASE;EACF;AAAA;AAWE;AAAO;AACP;AACE;AACE;MACF;AAAA;AACF;AAEE;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAWE;AAA0B;AAA+B;EAE3D;AAAA;AAnMI;AAAa;AAoMjB;ACrMA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;EACF;AAAA;AAEE;EACF;AACA;AACE;AACA;AACA;AACA;AACE;AAAW;AAEb;AACA;AACA;AACA;AACE;AACE;AAAM;AAER;AACE;MACF;AAAA;AAEF;AACA;EACF;AAAA;AAEE;EACF;AAAA;AAEE;AACE;AACE;MACF;AACE;MACF;AAAA;AACW;AACf;AAEE;AACA;AACE;IACF;AAAa;EAEf;AAAA;AAEA;AACE;AACE;IACF;AAAa;AACf;AA3DI;AAAa;AA4DjB;AC7DA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADqC;ACAtD;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACI;AACA;AACJ;AACA;AACA;AACE;IACF;AACA;AACE;AACA;AACE;AACA;MACF;AAAA;IAEF;AACA;AACE;AACE;AACE;QACF;AAAA;MAEF;AAAA;IAEF;AACA;AACE;AACA;AACE;MACF;AAAA;AAEA;AACE;AACA;AACA;AACE;QACF;AAAA;AAEE;QACF;AACE;AACA;QACF;AAAA;AACF;AAEE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACE;MACF;AAAA;IAEF;EACF;AAzEA;AACI;AAAa;AAyEjB;AC1EA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACJ;AACA;AACA;AACE;AACE;AACA;AACE;AACE;QACF;AAAA;AAEF;AACE;AACE;QACF;AAAA;AAEF;IACF;AACE;IACF;AAAA;AAtBF;AACI;AAAa;AAuBjB;ACxBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;EAIF;AANA;AACI;AAAa;AAKjB;ACNA;AAAA;AACI;AAAmB;AACnB;AADJ;AAEE;AACE;AACA;AAEI;AACA;AACA;AACA;AAAiB;IAGvB;EACF;AAEE;AACE;AACA;AACA;AACA;AACA;IACF;EACF;AAAA;AAtBI;AAAa;AAuBjB;ACxBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADiD;ACAlE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACA;AACE;AACE;AACA;AACE;QACF;AAAA;MAEF;AAAA;AAEA;AACA;AACA;AACE;AACE;AAAU;AAEV;AAAQ;AAER;AACE;AAAwB;AAExB;AAAwB;AAExB;AACE;YACF;AACE;YACF;AAAA;AAEA;AADK;MAGX;AACA;AACE;AACE;QACF;AACE;QACF;AAAA;AACF;IAEF;AACA;AACE;AACE;AACE;QACF;MACF;AAAA;AAEE;MACF;AAAA;AAEA;AACE;AACE;AACE;UACF;AACE;UACF;AACE;UACF;AAAA;QAEF;AAAA;MAEF;AAAA;IAEF;AACA;AACA;AACA;AACE;AACE;AAA2C;AAE7C;AACE;AACE;AACA;AACE;AACA;UACF;QACF;AACE;QACF;AAAA;AACF;IAEF;AACA;AACE;AACE;AACA;AAAsB;AAExB;AACE;AAAwB;AAExB;AAAyB;AAEzB;MACF;AACE;MACF;AAAA;AAEE;AAAsB;AAEtB;AAAa;AAEb;AAAkB;AAElB;AAAwB;AAExB;AAA8B;IAElC;AAAA;AAEA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAiB;AAEnB;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAc;AAEhB;AACE;AACA;AACE;MACF;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEE;AACA;AACE;MACF;AACA;IACF;AAAA;AAEE;AACE;AACA;AACE;QACF;AAAA;MAEF;AAAA;AAEA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACE;AACA;QACF;AAAA;AAEE;QACF;AAAA;AAEE;QACF;AAAA;AAEE;QACF;AAAA;AACF;AAEI;AACA;AACJ;AACE;AACA;MACF;AAAA;AAEE;AACA;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;MACF;AAAA;AAEE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEA;AACA;AACE;MACF;AACE;AACE;QACF;MACF;AAAA;AAEA;IACF;AAAA;AAEE;AACE;AAA4C;AAE5C;AACA;MACF;AAAA;AAEE;AAAwC;AAExC;AAAyC;AAEzC;AAAkC;AACtC;AAEE;IACF;AAAA;AAEE;AACA;AACI;AACF;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;AACE;QACF;AAAA;AAEF;IACF;AAAA;AAEE;AACI;AACA;AACJ;AACA;AACE;AACE;QACF;AACE;QACF;AAAA;AAEA;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEE;AACE;AACE;UACF;AACE;UACF;AAAA;AAEE;AACE;AACE;cACF;YACF;AACE;AACE;cACF;YACF;AAAA;AACF;AAEA;QACF;AAAA;AACF;AAEE;AACE;QACF;AAAA;AAEA;AACE;AACA;QACF;AACE;AACA;QACF;AAAA;AACF;IAEF;AAAA;AAEE;AACA;AACE;AACA;AACE;AAAa;MAEjB;AACA;AACE;MACF;AAAA;IAEF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACE;IACF;AAAA;AAEA;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEA;AACE;AACA;AACA;IACF;AAAA;AAEE;IACF;AACA;AACA;AACE;AACE;AAAa;AAEf;AACA;AACE;MACF;AAAA;IAEF;AACA;AACE;IACF;AAAA;AAtaF;AACI;AAAa;AAuajB;ACxaA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADkC;ACAnD;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAmE;ACDpF;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADgD;ACAjE;;AAAA;AACI;AAAmB;AACnB;AAMJ;AACI;AACA;AAKJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AAQE;AACE;AAAsB;AACtB;AAEA;AACE;AACA;MACF;AAEE;MACF;AAEE;MACF;AAAA;AAGE;AACA;MACF;AAAA;AAIE;MACF;AAAA;AAOA;AACA;AACA;AAEA;IACF;EACF;AAAA;AASE;AACE;AACA;AACE;MACF;AAAA;IAGF;AAAA;AACF;AAQE;AAGA;EACF;AAAA;AAUE;AACE;AACA;AACE;AAGA;AACE;QACF;AAAA;AAGE;QACF;AAGA;AACF;AACF;AACF;AAUE;AAGA;AAGA;AAEA;AACE;AACA;AACA;AACE;MACF;AAAA;AACF;EAGF;AAAA;AA9JI;AAAa;AA+JjB;AChKA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADqC;ACAtD;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACA;AAEA;AACI;AACA;AACI;IACJ;AACI;IACJ;AAAA;AAEI;IACJ;AAAA;AACJ;AAGI;AACI;IACJ;AAAA;AAEA;AAEA;AACA;AACI;AACA;AACA;AACI;AACI;QACJ;AAAA;AACJ;AAEA;IACJ;AAAA;AAEA;AACA;EACJ;AAAA;AAGI;AACA;AACI;AACI;MACJ;AAAA;AACJ;AAEA;AACI;IACJ;AAAA;AAIJ;AACI;AACA;EACJ;AAAA;AAEI;EACJ;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAiB;AAGjB;AACA;AACA;AACA;AACA;AACA;AAEA;AACI;EACJ;AAEA;AAA4B;EAAW;AACvC;AACI;EACJ;AACA;AAA6B;EAAU;AA1FvC;AACI;AAAa;AA0FjB;AC3FA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADwC;ACAzD;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADkD;ACAnE;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADmD;ACApE;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACE;MACF;AAAA;AAEI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AAA+B;AAEjC;AACA;AACA;AACA;AACJ;AACE;MACF;AAAA;AAEE;AACA;AACA;AACE;QACF;AAAA;MAEF;AAAA;AAEE;AACA;AACA;AACE;AACA;QACF;AAAA;AAEA;AACA;AACA;MACF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACJ;AACE;AACA;AACE;AACA;AACE;YACF;AACE;AACA;YACF;AAAA;AAEA;UACF;AAAA;AACF;MAEF;AAAA;AAEE;AACE;AACA;AACE;AACA;AACA;UACF;AAAA;AAEA;QACF;MACF;AAAA;AAEE;AACE;QACF;AAAA;AAEE;QACF;AAAA;AAEE;QACF;AAAA;MAEF;AAAA;AAEE;MACF;AAAA;AAEE;AACA;AACA;AACA;AACE;QACF;AAAA;MAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;QACF;AAAA;AAEE;AACE;UACF;AAAA;QAEF;AAAA;AAEE;AACE;AACE;YACF;AAAA;AAEA;AACE;YACF;AAAA;AAEA;AACA;AACE;YACF;AAAA;AAEA;AACE;YACF;AAAA;UAEF;AAAA;AAEA;AACA;AACE;UACF;AAAA;AAEA;AACA;QACF;AAAA;MAEF;AAAA;AAEE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACE;UACF;AAAA;AACF;AAEA;AACE;QACF;AAAA;AAEE;AACE;AACA;AACE;YACF;AAAA;AACF;AAEA;AACE;UACF;AAAA;AAEA;AACA;AACE;AACA;AACE;YACF;AAAA;AAEE;AACE;AACA;AACE;gBACF;AAAA;AAEA;AACA;AACA;cACF;AAAA;AAEA;AACA;AACA;YACF;AAAA;AACF;AAEA;QACF;AAAA;MAEF;AAAA;AAEE;AACE;QACF;MACF;AAAA;AAEE;AACE;QACF;MACF;AAAA;AAEE;AACA;AACE;AACA;AAAmB;AAErB;AACA;AACA;AACA;AAAqB;AAEvB;AACE;AACE;QACF;MACF;AACE;AACE;QACF;AACE;AACE;UACF;AAAA;AACF;AAEA;MACF;AAAA;EAEJ;AAxRA;AACI;AAAa;AAwRjB;ACzRA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADyC;ACA1D;;AAAA;AACI;AAAmB;AACnB;AAwBJ;AACE;EACF;AAAA;AAGE;AACA;AACA;AAEA;AACE;IACF;AAAA;AAGA;AAEA;AACA;AACE;IACF;AAAA;AAIA;AACE;IACF;AAAA;AAGE;AACI;AACA;AAAM;AAAM;AAAG;AAEnB;AACE;AACA;MACF;AACE;AACA;MACF;AAAA;AAGA;AAEA;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;AACF;EAGF;AA/EA;AACI;AAAa;AA+EjB;AChFA;;AAAA;AACI;AAAmB;AACnB;AAqBJ;AACE;AACE;AACE;AAAQ;AAGR;AAA2B;AAG3B;AAA2B;AAG3B;AADK;EAGX;AAEA;AACE;AACA;AACA;AACE;IACF;AAAA;AAGE;AACE;AACA;AACE;AACE;UACF;QACF;AACE;QACF;AAAA;IAGJ;AAAA;AAEW;AAAS;EAGtB;AA/DA;AACI;AAAa;AA+DjB;AChEA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADsC;ACAvD;AAAA;AACI;AAAmB;AACnB;AAmBJ;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACF;AAAA;AAOI;AAIA;AAGA;AAGA;AAKA;AACA;AACA;AACA;AACA;AAEA;AACE;AACA;AAAkB;AAGpB;AACE;AACA;AAAkB;AAGpB;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAY;AAEd;AAEJ;AACE;AAAgD;AAAU;AAG1D;AACA;EACF;AAAA;AAGE;AACE;IACF;AAAA;AAMA;AAEA;AACA;AACE;AACA;AACA;AACA;IACF;AAAA;AAOE;AACA;AACE;AACA;MACF;AAAA;AACF;AAqBE;AACA;AACE;AACA;AACE;AAAa;AACjB;AAIU;AACV;AAEE;MACF;AAGE;MACF;AAAA;AAKE;AACA;AACA;MACF;AAAA;AAIA;AACE;AACA;AACE;AAAa;AACjB;AAGE;AAAqB;AAGvB;AAGA;AAIA;AAIA;AAIA;AACE;AACA;AAAgB;AACd;AACA;AAAW;AAAQ;AAEjB;AACA;AAAgB;AACd;AAIE;cACF;AACE;cACF;AAAA;AACF;AAGE;AACA;AACA;AACA;AACE;AACA;cACF;AAAA;AAEE;cACF;AAAA;AAEA;YACF;AAAA;AACF;AACF;AACF;AAGE;MACF;AAEE;MACF;AAAA;AAOE;AACA;AACA;AACE;AACA;QAEF;AAAA;MAEF;AAAA;AAGA;AACA;AACA;AAIA;AACE;AACA;AACE;QACF;AAAA;AACF;AACF;AASE;AAAgB;AACd;AACA;AACA;AACE;QACF;AAAA;MAEF;AAAA;AACF;AAKA;AAEE;AACA;IACF;AAAA;AAEA;AACE;AACA;AACA;AACE;MACF;AAAA;IAEF;AAEE;AACA;IACF;AAAA;AACU;AAAoB;AAG5B;IACF;AAAA;AAIE;AACA;AACA;IACF;AAAA;AAIA;EACF;AAGA;AAKE;AAAmB;AAAmB;AACX;AAAqC;EAElE;AAAA;AAGE;AACA;AACE;AACA;AACA;IACF;AAAA;AAGI;AACA;AACA;AACA;AAEJ;AACE;IACF;AACE;AAGA;AACE;MACF;AAAA;AACF;AAKE;IACF;AAAA;AAIA;AAA6C;AAAe;AAM1D;AACA;AAA4C;AAAyB;AAErE;IACF;AAAA;AAEoC;AAAiB;AACb;AAAqB;AAG3D;IACF;AACA;AAEA;EACF;AAEA;AACE;EACF;AAAA;AAGE;EACF;AAEA;AACE;AAAa;AAAe;EAE9B;AAAA;AAGE;AACE;AACA;AACA;IACF;AAAA;AAGA;AACE;IACF;AAIA;AAGA;AACE;AACA;IACF;AAAA;AAKE;AACE;AACE;AAAuB;AAI3B;AAEE;MACF;AAAA;AAGA;IACF;AAAA;AAWE;AACE;AACE;QACF;AACA;AACA;MACF;AAAA;AAGA;AACE;AACA;AAA4D;AAAA;AACxC;AAAkB;AACd;AAAsB;AACvB;AAAmB;AAClB;AAAmB;MAE7C;AACE;MACF;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACE;AACA;AACA;MACF;AAAA;AAEA;AACA;IACF;AAAA;AAGI;AAIA;AAEA;AACA;AACA;AACA;AAOJ;AACE;AACA;AACA;AACE;AAAuB;;AAClB;AAA4B;AACnC;AAEA;AACE;AACA;AACA;AACE;AAAuB;;AAClB;AAA8B;AACrC;MAEF;AAAA;IAEF;AAAA;AAIE;AAEA;AAEA;AACA;AACA;IAEF;AAGE;AAAc;AAAY;AAE1B;AACA;AACA;IACF;AAIE;AACE;AAIA;AAEA;AACE;AACA;QACF;AAAA;AACF;AAEA;AAEA;AACE;MAEF;AAAA;AAEA;IACF;AAAA;AAKE;AAEA;AACE;MACF;AACE;MACF;AAAA;AAEA;IACF;AAAA;AAMA;AAMA;AACA;AACE;AACA;AACE;MACF;AACE;AACA;MACF;AACE;AACA;MACF;AAAA;AACF;AAIE;AACE;MACF;AAAA;AACF;AAIE;IACF;AAAA;AAGE;IACF;AAAA;AAMA;AACE;AAKA;AAEA;AACE;AACA;MACF;AAAA;AACF;AAIA;AACE;IACF;AAAA;AAGE;AACA;IACF;AACE;IACF;AAAA;AAIE;IAEF;AAAA;AAEA;AACA;AACA;EACF;AAEA;AACE;AACA;AACA;AACE;AACA;AACE;MACF;AAAA;IAEF;AAAA;AACU;AAAoB;AAGhC;AACE;EACF;AAAA;AAGE;EACF;AAAA;AAGE;EACF;AAAA;AAEE;EACF;AAAA;AAjsBI;AAAa;AAksBjB;ACnsBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADgC;ACAjD;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAiE;ACDlF;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AAD+C;ACAhE;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACJ;AACA;AACE;AACA;AACA;EACF;AAAA;AAEE;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACA;QACF;AACE;AACE;UACF;AACE;UACF;AAAA;AACF;MAEF;AACA;IACF;AAAA;EAEF;AAAA;AAEE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;IACF;AAAA;AAEE;AACA;AAAuB;EAE3B;AAAA;AAEE;AACA;AACE;IACF;AAAA;EAEF;AAAA;AAlEI;AAAa;AAmEjB;ACpEA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACA;AACE;EACF;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACA;AACE;IACF;AAAA;AAEF;AACE;AACE;AACA;IACF;AAAA;AAEA;AACA;AACE;AACA;AACE;MACF;AACE;MACF;AACE;MACF;AACE;MACF;AAAA;IAEF;AACE;IACF;EACF;AACA;AACE;AACA;EACF;AACA;AACE;AACE;AACA;IACF;AAAA;AAEA;AACA;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AACE;UACF;AACE;UACF;AAAA;AACF;AACF;AAEE;MACF;AAAA;IAEF;AACE;IACF;EACF;AAnFA;AACI;AAAa;AAmFjB;ACpFA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADgD;ACAjE;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;AACE;AACI;AACA;AACA;AACA;AACJ;AACE;AAAiC;AAEnC;IACF;EACF;AAfA;AACI;AAAa;AAejB;AChBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;EACF;AACE;AACI;AACA;AACJ;AACE;AACE;AACA;AAAS;AACV;AAEH;AACA;AACE;AACA;AAAU;EAEd;AArBA;AACI;AAAa;AAqBjB;ACtBA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAyB;ACD1C;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACJ;AACE;AACA;AACA;EACF;AACE;AACI;AACA;AACJ;AACE;AACA;IACF;AAAA;AAEE;AAAqB;AAErB;AAAwB;EAE5B;AACA;AACA;AACA;AACA;AA3BA;AACI;AAAa;AA2BjB;AC5BA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AAHA;AACI;AAAa;AAGjB;ACJA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAI;ACDrB;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACJ;AACE;EACF;AACA;AACE;AACA;EACF;AAZA;AACI;AAAa;AAYjB;ACbA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;EACF;AACA;AACE;AACA;AACE;AACE;AAAkB;AAElB;AACE;AACE;UACF;AAAC;AAED;AACE;UACF;AAAC;AAEL;AACE;MACF;IACF;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACA;AACA;AACE;AAA6C;AAE7C;AACA;AACE;QACF;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEA;AACA;AACE;AACE;AACA;AACA;AAAqD;AAEvD;AACE;AACE;AACE;AAAkC;AACtC;AAEA;AAAqE;AACzE;EAEF;AA9EA;AACI;AAAa;AA8EjB;AC/EA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AAAQ;AAAc;AAAW;EACnC;AAHA;AACI;AAAa;AAEhB;ACHD;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACJ;AACE;AACA;AACE;AACE;AACA;AACE;QACF;AAAA;AACA;AAdN;AACI;AAAa;AAejB;AChBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACE;AAA4E;AAE5E;AACE;AAAU;AAEV;AAAU;IAEd;AAAA;EAEF;AACA;AACE;AACI;AACJ;AACE;AAAqB;AAErB;AACE;AAAY;AAChB;AAEF;AACE;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AAA0C;AAE9C;AACE;AACE;AACI;AACA;AACF;AACA;AACE;AAA+B;UAEnC;AAAA;AAEA;QACF;AACA;AACE;AACI;AACJ;AACE;AACI;AACJ;AACA;AACA;AACE;AAAa;AAEb;AAAa;AAEb;AAAc;AAEd;AAAc;UAElB;AAAA;QAEF;AACA;AACE;AACI;AACJ;AACE;AACA;AACE;AAAe;AACnB;AAEF;AACE;QACF;AAAA;AAEF;AACE;AACI;UACF;AAAG;IAET;AACA;AACE;AACI;AACA;AACJ;AACE;MACF;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AAAO;AAET;AACE;AAAe;AAEf;AAAc;AAEhB;AACE;AAAsB;AAC1B;IAEF;AACA;AACA;AACE;AACE;AACA;AACA;MACF;AACE;AACI;AACA;AACJ;AACE;AAAe;AAEf;AACA;QACF;AAAA;AAEE;AAAuB;AAEvB;AAAuB;MAE3B;AACA;IACF;AAAA;AAxJF;AACI;AAAa;AAyJjB;AC1JA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACE;AACA;AACA;AACA;AAAkB;EAEtB;AARA;AACI;AAAa;AAOhB;ACRD;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;EACF;AACE;AACA;EACF;AARA;AACI;AAAa;AAQjB;ACTA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AACjB;ACFA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACE;AAA+B;EAEnC;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AAAgC;AAAmD;EAErF;AAJA;AACI;AAAa;AAGhB;ACJD;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;EACF;AAJA;AACI;AAAa;AAGhB;ACJD;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;AACE;AACE;AACA;AAAS;AACT;AATN;AACI;AAAa;AAUjB;ACXA;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AACI;MACF;EACJ;AALA;AACI;AAAa;AAKjB;ACNA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AACI;AACA;AACA;AACA;AACJ;AACE;IACF;AACE;AACA;IACF;AACE;AACE;AACA;AACA;AACE;AAA8C;AAElD;AACE;AACA;AACE;AACE;AACE;AAAuC;AAEzC;UACF;AAAE;AAEN;AACE;AACI;UACF;AAAG;AACT;AAEA;AACA;AACA;AACE;AAAiC;EAErC;AApDA;AACI;AAAa;AAoDjB;ACrDA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;IACF;EACF;AACI;IACF;AATF;AACI;AAAa;AASjB;ACVA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACE;IACF;AACE;AACA;AACE;AAA4B;IAEhC;AAAA;AAVF;AACI;AAAa;AAWjB;ACZA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;EACF;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;EACF;AALA;AACI;AAAa;AAIhB;ACLD;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;EACF;AALA;AACI;AAAa;AAKjB;ACNA;AAAA;AACI;AAAmB;AACnB;AADJ;AADA;AACI;AAAa;AAAE;ACDnB;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;AACE;AAAiE;AANrE;AACI;AAAa;AAOjB;ACRA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACA;AACA;AACA;AACJ;AACE;AACI;AACA;AACA;AACA;AACA;AACJ;AACE;AAA+C;AAE/C;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAvBJ;AACI;AAAa;AAwBjB;ACzBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;EACF;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;EACF;AALA;AACI;AAAa;AAIhB;ACLD;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AA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AACA;QACD;AAAA;AAGD;AACC;AACA;MACD;AAEA;AACC;AAEA;AAEA;AAEA;AACC;AACC;UACD;AAAA;QAGD;AAAA;AAGC;AACC;UACD;AAAA;AAGA;AAEA;AACC;AACC;AACA;AACA;AACA;AAED;AAEA;AAEC;AAEA;AAEC;cACD;AAAA;AAGC;cACD;AAAA;AAIA;AAEA;AACC;AACC;gBACD;AAAA;AAGC;AACA;AACA;AACA;AACA;AAED;AAEA;AACC;gBACD;AAAA;AAIA;AAEA;AACC;gBACD;AAAA;cAGD;AAAA;AACD;AACD;AACD;MAGD;AAEA;AACC;AAEA;AACC;AAEA;AAEA;QACD;AAEA;AACC;AAEA;AACC;UACD;AAAA;AAEc;AACb;UACD;AAAA;AACD;AACD;AAGD;AACC;AACA;AACA;IACD;AAEA;AACC;AACC;MACD;AAAA;AAGC;AACC;QACD;MACD;AAAA;AAGC;AACA;AACA;AACA;AACA;AACA;AACA;AAAa;AAGd;AACC;MACD;AAAA;AAGC;AACA;MACD;AAAA;AAIA;AAEA;AACC;MACD;AAAA;IAID;AAEA;AACC;AAEC;MACD;AAAA;AAGC;AACI;AACA;AACA;AAEJ;AACA;AACC;QACD;AAAA;AAGD;IACD;AAAA;AAKA;AAEA;AACC;AAEA;AACC;MACD;AAAA;AACD;EAIA;AAEA;AACC;EACD;AAAA;AAIC;EACD;AAAA;AAQC;AACA;AACA;AACA;AACA;AACC;AACA;AACC;AACC;AACA;AACC;AACA;AAA0B;AAC3B;AAED;AACC;AACA;AAEA;AAED;AACA;AACC;AACA;AAEA;AACD;AAED;AAED;AAA4B;AAI7B;AAEC;AACC;IACD;AAAA;AAGD;AACA;AACA;AACA;AAOA;AACC;AACA;AACC;AACA;AAGA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AAAwB;AAGzB;AAEA;AACC;AAEE;AACA;AACA;AACA;AAAoB;AAItB;AAEE;AACA;AACC;AACC;AACA;AAAwC;AAEzC;AACA;AACC;AACA;AAA0B;AAC3B;AAED;AAAoB;EAGvB;AAAA;AAOC;AAEE;AACA;AAAe;AAGf;AACA;AAAe;AAGjB;AACA;AACC;AACA;AACA;AAEA;AAED;AACA;AACA;AACA;AACA;AACA;AAA6B;AAQ9B;AACC;AACA;AAEA;AAAkE;AAGnE;AAEE;AACA;AAAe;AAIjB;AAEE;AACA;AACC;AACC;AACA;AACC;AACC;AACA;AAAmB;AAEpB;AAA+B;AAChC;AAED;AAAkB;AACnB;AAIF;AACC;AAEE;AACA;AACA;AACA;AAA2B;EAG9B;AAAA;AAQA;AACC;AACC;IACD;AAAA;AAIC;AACC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAmB;AAGpB;AACC;AACC;AAEA;AAAc;AACd;AACA;AACC;UACD;AAAA;AAGC;UACD;AAAA;AAGC;AACA;UACD;AAAA;AAGA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACC;AAEC;AACC;AAEA;cACD;AAEC;cACD;AAEC;cACD;AAAA;AACD;AAGD;QACD;MACD;AAAA;AAID;EAED;AAnsBA;AACI;AAAa;AAmsBjB;ACpsBA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADqC;ACAtD;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AACA;AAAsE;AAEvE;AAEA;AACC;AAEE;AACA;AACA;AAEA;EAGH;AAAA;AAjBI;AAAa;AAiBjB;AClBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AACA;AACA;AAA8D;AAG/D;AACC;AAGC;AACA;AACA;AACA;AAEC;AACC;AACA;AAAe;AAGhB;AACC;AACA;AACA;AAAe;AAChB;AACD;AAGD;AAA0G;AAG3G;AACA;AAlCA;AACI;AAAa;AAkCjB;ACnCA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AACA;AACA;AAAwJ;AAGzJ;AAEE;AACA;AAAe;AAXjB;AACI;AAAa;AAYf;ACbF;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AACA;AAIA;AAA0C;AAG3C;AAEE;AACA;AACA;AACA;AAGE;AACA;AACA;AAAe;AAEjB;AAvBF;AACI;AAAa;AAyBjB;AC1BA;AAAA;AACI;AAAmB;AACnB;AADJ;AAcA;AACC;AACA;AACA;AACC;AACA;AAAe;AAChB;AAKD;AAEE;AACA;AACA;AAAe;AAIjB;AACC;AACA;AACA;AACC;AACA;AACA;AAEA;AACD;AAID;AAEE;AACA;AAAe;AAKjB;AAIC;AACC;AACC;MACD;AAAA;AAIA;AACA;AACC;AAEA;MACD;IACD;AAGA;AACC;AACC;AACA;MACD;AAAA;AAID;AACC;AACC;MACD;AAAA;AAEgB;AAEf;MACD;AAAA;IAGD;AAGA;AACC;AACC;MACD;AAAA;AAID;AACC;AACC;AACA;AAA6B;AAE9B;AAA6B;EAE/B;AAAA;AA9GI;AAAa;AA+GjB;AChHA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AAGA;AACI;AACC;AACA;AAAgB;AAGrB;AACC;AACA;AAOE;AACA;AAEA;AAGF;AACA;AACC;AACA;AAAgB;AACjB;AAGD;AACC;AACC;AACA;AAAe;AAIhB;AACC;AACA;AACA;AACC;AACA;AAA6B;AAC9B;AACD;AAGD;AACC;AACC;AACA;AACC;AACC;AACA;AAAmB;AAEpB;AAA+B;AAChC;AAID;AAEE;AACA;AAAc;AAGd;AACA;AACA;AAEA;AAEF;AAID;EAKA;AApFA;AACI;AAAa;AAmFR;ACpFT;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AACA;AACA;AACA;AACA;AACA;AAAkC;AAEnC;AAVA;AACI;AAAa;AAUjB;ACXA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AACC;AACA;AAAe;AAEhB;AACA;AACA;AACA;AAIC;AACA;AAEA;AAGD;AAEA;AAMA;AAEA;AACA;AACA;AAA8B;AAhC/B;AACI;AAAa;AAiCjB;AClCA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AACA;AACA;AACC;AACA;AAAe;AAChB;AARD;AACI;AAAa;AAQf;ACTF;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AAEA;AACA;AACA;AACA;AACA;AAIE;AACA;AAAe;AAGjB;AAAmC;AAjBpC;AACI;AAAa;AAiBhB;AClBD;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AAEC;AACA;AAKA;AACA;AACA;AACA;AACA;AAAoC;AAdrC;AACI;AAAa;AAchB;ACfD;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AAGE;AACA;AAAe;AAGf;AACA;AAAe;AAIjB;AA0BA;AAuBE;AACA;AAAe;AAKf;AACA;AAAe;AAKf;AACA;AAAe;AAKf;AACA;AAAe;AAKf;AACA;AAAe;AAKf;AACA;AAAe;AAWjB;AAeA;AAEC;AACA;AAAc;AAEf;AAEC;AACA;AAAc;AAEf;AACC;AACA;AAEA;AAED;AACA;AACA;AACA;AAA4B;AA5I7B;AACI;AAAa;AA6IjB;AC9IA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AACC;AACA;AAAc;AAEf;AACC;AACA;AAAe;AAEhB;AACA;AACC;AACA;AAAe;AAEhB;AACC;AACA;AAAe;AAEhB;AACA;AACA;AACA;AACA;AAA8B;AAxB/B;AACI;AAAa;AAyBjB;AC1BA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AACA;AACA;AAGC;AACA;AAAgB;AAEjB;AACA;AACA;AAIA;AACA;AACA;AAA4B;AAnB7B;AACI;AAAa;AAmBhB;ACpBD;AAAA;AACI;AAAmB;AACnB;AADJ;AAOA;AACC;AACC;AACA;AAAqQ;AAGtQ;AACC;AACA;AACC;AACC;AACA;AAAW;AAEZ;AAA2C;AAC5C;AAGD;AACC;AAEE;AACA;AAEA;AAGA;AACA;AAEA;AAIA;AACA;AAEA;AAGA;AACA;AAEA;AAGA;AACA;AAEA;AAGA;AACA;AAAe;AAGjB;AACA;AAA6C;AAG9C;AACC;AACA;AAA4C;AAG7C;AAEE;AACA;AAEA;AAGA;AACA;AAEA;AAIA;AACA;AAEA;AAGA;AACA;AAEA;AAGA;AACA;AAEA;AAGA;AACA;AAEA;EAGH;AA/GA;AACI;AAAa;AA8GR;AC/GT;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AAIG;AACA;AAEC;AACE;AACA;AAAe;AAIjB;AAEA;AAEA;AAA6B;AAC9B;AAIA;AACA;AAEA;AAMH;AACC;AACC;AACA;AAAiB;AAElB;AACC;AACA;AAAe;AAEhB;AAGE;AACA;AACA;AAAmB;AAGnB;AACA;AAAmB;AAGrB;AAEA;AACC;AACA;AAAe;AAEhB;AACC;AACA;AAAe;AAEhB;AACC;AACA;AAAe;AAEhB;AACA;AAA4C;AAG7C;AACA;AACA;AACA;AACA;AACA;EACD;AA/EA;AACI;AAAa;AA8ER;AC/ET;AAAA;AACI;AAAmB;AACnB;AADJ;AAEA;AACC;AACC;AACA;AAEE;AACA;AAEE;AACA;AAAgB;AAGlB;AAEF;AAED;AACA;AACA;AACA;AACA;AAA2iB;AAE5iB;AAzBA;AACI;AAAa;AAwB4F;ACzB7G;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AACA;AACA;AAAkE;AALnE;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACC;AACA;AACA;AACA;AACA;AAAwB;AAEzB;AACA;AAVA;AACI;AAAa;AAUjB;;;;;ACXA;AAAA;AACI;AAAmB;AACnB;AADJ;AAOA;AAAC;AAMD;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAc;AAGhB;AACA;AACA;AAIA;AAMA;AAIA;AAKA;AAOA;AAaA;AAMA;AACE;AACA;AACA;AAA+C;AAGjD;AAUA;AACE;AACA;AAAiE;AAOnE;AACE;AACA;AACA;AACA;AAEA;AACE;AACE;QACF;AACE;QACF;AAAA;AACF;AACF;AAYA;AACE;AACA;IACF;AAMA;AACE;AAMA;IACF;AAMA;AACE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEJ;AAEE;AACE;AACA;AACE;UAGF;AAAA;AACF;AAIE;AACA;AACA;AACE;AACA;AAEM;AAER;QACF;AAAA;AAIE;AACA;AACE;AACA;AACA;AAAiB;AAEnB;QACF;AAAA;AAIE;AACA;AACE;AACA;AACA;AAAW;AAEb;QACF;AAAA;AAIE;AAEA;AACE;AACA;AACA;AACA;AAA2C;AAG7C;AACE;AACE;YACF;AACE;YACF;AACE;YACF;AACE;YACF;AAAA;AACF;AAGE;UACF;AAAA;AAIA;QACF;AAAA;AAIE;AACA;AACE;AACA;AACA;AAAW;AAEb;QACF;AAAA;AAIE;AACA;AAGA;QACF;AAAA;AAIE;AAEA;AAIA;AAKA;AAEA;AAIA;QACF;AAAA;AAIE;AACA;AAEA;AACE;AACA;AAAuB;AAIzB;AAEA;AACA;AACA;AAEA;AACE;AAIA;AACA;AAIA;AACE;AACA;YAGF;AAAA;AAKE;AACA;AACE;AACA;cACF;AAAA;AACF;AAMA;AACE;AACA;AAAY;AAAY;AAC1B;AASA;AAEA;UAGF;AAAA;AAMA;QACF;AAAA;AAIE;AACA;AACE;AAGA;AAEA;AAAW;AAEb;QACF;AAAA;AAIE;AACA;AACE;AACA;AAAY;AAEd;QACF;AAAA;AAIE;AAEA;AACE;AACA;AACA;AACA;AAAsD;AAGxD;AACE;AACE;YACF;AACE;YACF;AACE;YACF;AACE;YACF;AAAA;AACF;AAGE;UAGF;AAAA;AAIA;QACF;AAAA;AAIE;AACA;AACE;AACA;AAES;AAEX;QACF;AAAA;AAKE;AACA;AACE;AACA;AAAW;AAEb;QACF;AAAA;AAGE;QAEF;AAAA;AACF;IAGF;AAMA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAyC;AAG3C;AACA;AAEA;AAKA;AAQA;AAMA;AACE;AACA;AAA6D;AAO/D;AACE;AACA;AACA;AACA;AAGG;AAOL;AACE;AACA;AAA4C;AAO9C;AACE;AACA;AACA;AACA;AACA;AAEA;AACE;MAEF;AAAA;AAGE;AACE;QACF;AACE;QACF;AAAA;AAEA;MACF;AAAA;AACF;AAYA;AACE;AACA;IACF;AAMA;AACE;AACI;AACA;AACA;AACA;AAEJ;AAEE;AACE;AACA;AACA;QACF;AAAA;AAIE;AACA;AACE;AAGA;UACF;AACE;AACA;UACF;AAAA;AAEA;QACF;AAAA;AAIE;AACA;AACA;AACA;AACA;QACF;AAAA;AAIE;AACE;UACF;AACE;UACF;AAAA;AAEA;AAKA;QACF;AAAA;AAIE;AACA;AACA;AACE;AACA;AAAY;AAEd;AACA;QACF;AAAA;AAKE;AACA;AACA;AACA;AACE;AACA;AACA;UACF;AAAA;AAEA;AACA;AACA;QACF;AAAA;AAIE;AACA;AACA;QACF;AAAA;AAIE;AACA;AACA;QACF;AAAA;AAIE;AACA;AACA;QACF;AAAA;AAIE;AACA;AACA;QACF;AAAA;AAIE;AACA;AACA;QACF;AAAA;AAIE;AACA;AACA;QACF;AAAA;AAGE;QAEF;AAAA;AACF;IAGF;AAMA;AACE;AACI;AAEJ;IAGF;AAMA;AACE;AAA+B;AAAW;IAgB5C;AAMA;AACE;AAA0B;AAAW;AAEjC;AACA;AACA;AAEJ;AACE;AACA;AACE;QACF;AAAA;MAEF;AAAA;IAGF;AAMA;AACE;IACF;AAAA;AAGE;AACE;AACA;AACE;AACA;QACF;AAAA;AACF;AAGE;MAGF;AAAA;IAQF;AAEA;AACE;IACF;AAEA;AACE;IACF;AAEA;AACE;IAUF;AAEA;AACE;IACF;AAEA;AACE;AACA;IACF;AAEA;AACE;IACF;AAEA;AACE;IACF;AAEA;AACE;IAQF;AAEA;AACE;IACF;AAEA;AACE;AACA;AAGA;IACF;AAGA;AACE;IACF;AAEA;AACE;IACF;AAEA;AACE;IACF;AAEA;AACE;IACF;AAEA;AACE;IACF;AAEA;AACE;AACE;AACE;QAGF;AACE;QACF;AAAA;AAEE;QACF;AAAA;AACF;AAEA;AACE;MACF;AAAA;AAEA;IACF;AAEA;AACE;AACA;AACE;MACF;AAAA;AAEA;IACF;AAEA;AACE;IACF;AAMA;AACE;AACA;AACA;AACA;AACA;AACA;IACF;AAAA;AAOE;AACA;IACF;AAMA;AACE;AACA;AAEA;AACA;AACE;MACF;AAAA;IAGF;AAMA;AACE;IACF;AAMA;AACE;IACF;AAMA;AACE;AAEA;AACE;MACF;AAAA;IAGF;AAMA;AACE;AACE;AAAc;AACZ;UACF;AAAA;AACW;AACT;UACF;AAAA;AACgB;AACd;UAIF;AAAA;AACa;AACX;UAGF;AAAA;AACc;AACZ;AACI;AACA;AACA;AACA;AACA;AACA;AAGJ;AACA;AACE;AAAU;AAAc;AAAyB;AACjD;AAEI;AAAc;AAAyB;YAE7C;AAAA;AAGA;AACE;AAEA;AACA;AACE;AAEI;AAAe;AAAyB;cAE9C;AAAA;YAGF;AAAA;UAEF;AAAA;AACyB;AACvB;AAEA;AACE;YACF;AAAA;UAGF;AAAA;AACmB;AACjB;AACI;AAEJ;AACE;YACF;AAAA;UAGF;AAAA;AACwB;AACtB;AAEA;AACE;YAGF;AAAA;UAGF;AAAA;AACyB;AACvB;AAEA;AACE;YACF;AAAA;UAGF;AAAA;AACa;AACX;AAGA;UACF;AAAA;AACkB;AAChB;UACF;AAAA;AACa;AACX;UACF;AAAA;IAEJ;AAMA;AACE;IAMF;AAAA;AAGE;AACE;AACA;AAAmB;AAAU;AAE3B;QAGF;AAAA;MAEF;IACF;AAAA;AAGE;AACA;AACA;AACE;AAAW;AAA6B;AAExC;AACA;AACA;MACF;IACF;AAAA;AAEiB;AAGjB;AACE;AACI;AACA;AAEJ;AACE;AACA;AACE;AACE;UACF;AAAA;AACF;AACF;IAGF;AAAA;AAQE;AACE;AACE;AACA;QACF;AAAA;AAIA;AACI;AACA;AACA;AAEJ;AACE;QACF;AACE;QACF;AAAA;AAIA;AACE;AACE;AACA;UACF;AAAA;AAIA;AACE;UACF;AACE;UACF;AAAA;AAIA;QAGF;AAEA;AACE;QACF;AAAA;AAIA;AAAc;AAAa;AAGzB;AACE;AACE;YACF;AAAA;AAEE;AAAS;AAAgB;AAEvB;cACF;AAAA;AAEA;AACA;YACF;UACF;QACF;AAAA;MAGF;AAAA;AAEE;AAAS;AAAqC;MAEhD;AACE;AACA;AACE;QAGF;AAAA;MAEF;AAAA;AACF;AAQE;AACA;IACF;AAEA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAW;AAOb;AACA;AAEA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACE;IACF;AACE;AAAoB;MAAe;IACrC;AACE;IACF;AAAA;AAGE;EACF;AAtwCA;AACI;AAAa;AAswCjB;ACvwCA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADyC;;mJCgDpD,4BAA4B,EAOrB,QAA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jI;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AAOA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;AACI;AAAmB;MAAqC;AACxD;AACA;AAAiB;AAErB;EACJ;AACA;AAlCA;AACI;AAAa;AAkCw8D;ACnCz9D;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AAA+G;AAA6C;IAAkC;AAAI;AAAU;AAI5M;AACI;AACI;IACJ;AAAA;AAEI;IACJ;AACA;AACI;AACA;AACI;AACI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;AACI;AACI;QACJ;AAAA;IAER;AACA;AAIA;EACJ;AACA;AAIA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AAmBA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACA;IACJ;AACA;AAAgE;IAA6B;AAC7F;AACI;AACA;AACI;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACI;AACA;MACJ;IACJ;AACA;AAAgE;IAA0D;AAC1H;AAAwE;IAAqB;AAC7F;AAIA;AAEQ;AACA;AAAQ;AAA0B;AAAsB;AACxD;AAAgC;AAIxC;EACJ;AACA;AA3HA;AACI;AAAa;AA2HwoU;AC5HzpU;;AAAA;AACI;AAAmB;AACnB;AADJ;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;AAMA;AAjFA;AACI;AAAa;A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CA;AANA;AACI;AAAa;AAM4b;ACP7c;;AAAA;AACI;AAAmB;AACnB;AADJ;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA3BA;AACI;AAAa;AA2Bo8D;AC5Br9D;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;AAEA;EACJ;AACA;AACA;AACI;AACI;AACA;AACI;MACJ;AAEI;MACJ;AAAA;AAEA;IACJ;AAAA;AAEI;AACA;AACA;AACA;IACJ;AACA;AAAgD;IAAiC;AACjF;AAAiD;IAA8B;AAC/E;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACA;MACJ;AAAA;AAEJ;AACI;AACA;AACI;AACA;AACA;AAEA;AACI;AACA;AACI;UACJ;AAAA;QAEJ;AAAA;AACJ;AAEJ;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACI;AACA;AACI;AACI;UACJ;AAAA;AAEJ;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AACI;AACI;QACJ;AAAA;IAER;AACA;EACJ;AACA;AACA;AACI;AAAoC;IAAyB;EACjE;AAAA;AAEA;AACI;AACI;AACI;AACI;QACJ;AAAA;MAEJ;AAAA;EAER;AAAA;AAEI;AACI;AACI;AACI;QACJ;AAAA;AAEI;QACJ;AAAA;IAER;AAAA;AACJ;AAGA;AACI;EACJ;AAAA;AAEA;AACI;EACJ;AAAA;AAEA;AACI;EACJ;AAAA;AAEA;AACI;EACJ;AAAA;AA9JA;AACI;AAAa;AA+Jwue;AChKzve;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AAyBA;AAwBA;AApDA;AACI;AAAa;AAoDgpF;ACrDjqF;;A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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAa;AAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AAAa;AAAU;AAAU;AAAU;AAAU;AAAU;AAAU;AAAU;AACnF;AACA;AACA;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AACgD;IAAqB;AACrE;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IAEJ;AACA;AACI;AAAwB;AAAsB;AAAkB;AAEhE;AACI;AACI;AACA;QACJ;AAEI;QACJ;AAAA;AACJ;AAEA;AACA;AACI;MACJ;AAAA;AAGI;AAA4B;AAE5B;AAA6B;AAEjC;AACI;AACI;AACA;AAA8F;AAElG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AAAsC;AAE1C;AACI;AAAwB;AAE5B;AACA;AACA;AACA;AACA;AACA;AACI;AAAwE;AAExE;AAAiE;AAErE;AACI;AAAiG;AAErG;AACI;AAAmH;AAEnH;AAAoE;AAEpE;AAA8D;AAE9D;AACI;AAAc;AACK;AAE/B;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AAYA;AACI;AACA;AACA;AACI;AACA;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACI;AAAc;AAElB;AACI;MACJ;AAEI;MACJ;AAAA;AAEJ;AACI;AACA;AACA;AACI;AAGI;QACJ;AAEI;AACA;AACI;AAAc;AAEd;AAAkC;QAE1C;AAEI;QACJ;AAAA;MAEJ;AAAA;AAGA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACI;AAAkC;AAEtC;AACA;AACA;AAEI;AACA;AACI;YACJ;AAEI;YACJ;AAAA;AAEI;YACJ;AAAA;AAGA;AACA;UACJ;AAAA;AAEA;QACJ;AAEI;QACJ;AAEI;QACJ;AAAA;AACJ;AAEA;AAEA;AACA;AACI;AACA;MACJ;AAAA;IAEJ;AACA;AACI;AACA;IACJ;AACA;EACJ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AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACI;AACA;AAC2C;IAAa;AACxD;AAAuC;IAAc;AACrD;EACJ;AACA;AAcA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AAC6C;IAAiC;AAC9E;AAAyC;IAAgB;AACzD;EACJ;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;AAIA;EACJ;AACA;AACA;AACI;AACA;AACI;IACJ;AAAA;AACwD;IAA4C;AACpG;EACJ;AACA;AAIA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAC6C;IAAiC;AAC9E;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AACmD;IAAuC;AAC1F;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AACoD;IAAwC;AAC5F;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AACqD;IAAyC;AAC9F;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AACwD;IAA4C;AACpG;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AACiD;IAAqC;AACtF;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AACkD;IAAsC;AACxF;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AACmD;IAAgC;AACnF;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AACwD;IAA4C;AACpG;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AACoD;IAAwC;AAC5F;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AACkD;IAAsC;AACxF;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AACqD;IAAyC;AAC9F;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AAC8C;IAAkC;AAChF;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AACiD;IAAqC;AACtF;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AACkD;IAAsC;AACxF;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AACsD;IAA0C;AAChG;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AACoD;IAAwC;AAC5F;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AACqD;IAAgC;AACrF;AAAiD;IAA6C;AAC9F;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;AAEI;AACA;AACA;IACJ;AACA;AAA4D;IAAuC;AACnG;AACI;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AAAuE;IAAa;AACpF;AAAoE;IAAuC;AAC3G;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AACA;AAAmE;IAAuC;AAC1G;AAAiE;IAAkC;AACnG;AAAuE;IAAa;AACpF;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AAA8B;MAAyB;AACvD;IACJ;AACA;AAA4D;IAAa;AACzE;EACJ;AACA;AACA;AACI;AACA;AACkE;IAAY;AAC9E;AACI;IACJ;AACA;AAAkE;IAAwC;AAC1G;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AAA2D;IAAkD;AAC7G;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA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ACI;AACA;AACA;AACA;AACI;MACJ;AAAA;AAEA;AACI;MACJ;AAAA;AAEJ;AACI;AACA;IACJ;AACA;AACA;AACI;AACA;IACJ;AACA;AAEA;AACI;AACA;AACI;MACJ;AAAA;AAGJ;AACI;AACA;AACI;MACJ;AAAA;AAEJ;AAAiE;IAA2D;AAC5H;AACI;AACA;AACI;AACI;AAAsD;MAE9D;AAAA;AAEJ;AACI;AACI;AACI;AACA;QACJ;AAAA;AACJ;AAEJ;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;AACI;MACJ;AAAA;AAEA;IACJ;AACA;AACI;AACA;AACI;AACA;AAEA;MACJ;AAII;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;AAA4E;IAAoD;AAChI;AACI;IACJ;AACA;EACJ;AACA;AArPA;AACI;AAAa;AAqPwn9B;ACtPzo9B;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;AAA0D;IAAqD;AAC/G;AACI;IAEJ;AACA;AAAmD;IAAsC;AACzF;AACI;IACJ;AACA;AAAgE;IAA6C;AAC7G;AACI;IACJ;AACA;AAAwD;IAAoD;AAC5G;EACJ;AACA;AA7DA;AACI;AAAa;AA6DwpM;AC9DzqM;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACA;AAEI;AACA;AACI;QACJ;AAAA;AAEJ;IACJ;AAEA;AACI;AACA;AACA;AACI;AACA;AACI;QACJ;AAEI;AACI;UACJ;AAAA;AAEA;AACI;UACJ;AAEI;UACJ;AAAA;AACJ;AACJ;IAEJ;AACA;AACI;AACI;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;IAEJ;AAEA;AACI;AACI;AACA;MACJ;AAAA;AAGJ;AACI;AAAkD;MAA4D;IAClH;AACA;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACI;AACI;AACA;AACA;AACA;UACJ;QACJ;AAAA;AACJ;AAEJ;AACI;AACA;AAA0B;MAA+D;IAC7F;AACA;AACI;AACI;AACA;MACJ;AAAA;AAEA;AACA;AACA;AACA;IACJ;AAEA;AACI;AACI;AACI;QACJ;AAAA;AACJ;AAGJ;AACI;AACI;AACA;AACI;QACJ;AAAA;AACJ;AAEJ;AAA+D;IAA6B;AAC5F;AACI;AACA;AACA;AACA;AACI;AACA;AACA;AACA;AACI;QACJ;AAAA;AAEI;AACI;UACJ;AAGI;UACJ;AAEI;UACJ;AAAA;AAGA;QACJ;AAEI;AACA;AACI;AACA;AACA;UACJ;AAAA;AACJ;AAEI;AACA;AACI;UACJ;AAAA;QAEJ;AAAA;AACJ;AAGJ;AACI;AACA;IACJ;AACA;AACI;AACA;AACI;AACA;AACI;QACJ;AAAA;AAEI;QACJ;AAAA;AACJ;AAEJ;AACI;AACA;AACI;AACA;AACI;QACJ;AAAA;AAEI;QACJ;AAAA;AACJ;AAGJ;AACI;AACI;MACJ;AAEI;AACA;MACJ;AAAA;AAEI;MACJ;AAAA;AAGJ;AACI;AACI;MACJ;AAEI;MACJ;AAAA;AAGJ;AACI;IACJ;AAEA;AACI;IACJ;AAEA;AACI;AACI;MACJ;AAEI;MACJ;AAAA;AAGJ;AACI;AACI;AACA;MACJ;AAAA;AAEA;AACI;AACA;AAGA;AACI;AACI;AACA;AACI;AAA6C;AAEjD;AACA;UACJ;AAEI;AACA;AACA;UACJ;AAAA;AAGA;AACA;QACJ;AAAA;AAGA;AACA;AACA;MACJ;AAAA;AAEJ;AACI;AACI;AACI;AAAuC;AAEvC;AAAwB;AAExB;AACA;AAAiC;AAEjC;AACA;AAAkE;AAElE;AACA;AACA;AACA;AAAY;AAEZ;AACA;AACA;AACA;AACA;AAAY;AAEZ;AAA6B;AAE7B;AACA;AACA;AAAuC;AAEvC;AACA;AACI;UACJ;AAAA;AAEA;AAAuC;AAEvC;AACA;AAA4C;AAE5C;AACA;AAA4B;AAE5B;AAAoG;AAExG;AACA;AACI;AAAqF;AAErF;AADG;IAGf;AACA;AACI;AACA;AACA;AACI;AACA;AACA;AACI;AACA;AAGA;AACI;AACA;AACI;AACA;AACI;AAA6C;AAEjD;AACA;YACJ;AAEI;AACA;AACA;YACJ;AAAA;AAGA;AACA;UACJ;AAAA;AAGA;AACA;AACA;QACJ;AAAA;AACJ;AAEJ;AACI;AACA;AACI;AAAiB;AAErB;AACA;IACJ;AACA;AACI;AACI;MACJ;AAAA;IAEJ;AACA;AAAuE;IAAgC;AACvG;AAA+E;IAAiC;AAChH;AAA+D;IAAyC;AACxG;AAAuE;IAA0C;AACjH;AACI;AACI;AAAqC;AAE7C;AACI;IACJ;AACA;AACI;AACA;AACI;AACI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACA;AACI;MACJ;AAAA;IAEJ;AACA;EACJ;AACA;AA7aA;AACI;AAAa;AA6awqqD;AC9azrqD;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACI;AACA;EAEJ;AACA;AACA;AACI;AACA;AACI;AACA;IACJ;AAAA;AAC0D;IAAsC;AAChG;AAAoD;IAA8D;AAClH;AAA2D;IAA0B;AACrF;AAA4D;IAA2B;AACvF;AACI;AACA;IACJ;AACA;EACJ;AACA;AA9BA;AACI;AAAa;AA8B4xT;AC/B7yT;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;EACJ;AAAA;AAJA;AACI;AAAa;AAKgnB;ACNjoB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AACoD;IAAgC;AACpF;AAA0D;IAAuC;AACjG;AAA2D;IAAwC;AACnG;AAAuD;IAAoC;AAC3F;AAAuD;IAAoC;AAC3F;AAAmD;IAAgC;AACnF;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAC6D;IAA0C;AACvG;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;IACJ;AACA;AACI;AACA;AACA;IACJ;AACA;EACJ;AACA;AA5GA;AACI;AAAa;AA4GwmlB;AC7GznlB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AAIb;AAKI;AAKA;AAMA;EACJ;AACA;AAKA;AAKI;AAKA;AAKA;AAKA;AAIA;AAIA;EACJ;AACA;AAIA;AAWA;AAKA;AACI;EAEJ;AAAA;AAlFA;AACI;AAAa;AAmFghK;ACpFjiK;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACI;AACI;AACA;IACJ;AAAA;AAEI;AAAmB;MAAsD;AACzE;AACA;AAAiB;AAErB;EACJ;AACA;AACA;AACI;AACI;AAAkC;AAAoC;AAAgD;AAAsD;AAA0C;AAAgD;AAAkC;AAA8B;AAA4B;AAAkC;AAAsC;AAC1a;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;IACJ;AACA;EACJ;AACA;AArCA;AACI;AAAa;AAqCwgK;ACtCzhK;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AAmBA;AACI;AACI;IACJ;AAAA;AAEI;AACA;AACA;IACJ;AACA;EACJ;AACA;AACA;AAOA;AAIA;AACI;AACI;AACA;IACJ;AAAA;AAIqD;IAAiE;AACtH;EACJ;AACA;AACA;AACI;EACJ;AAAA;AAGI;AACA;AAC6C;IAAW;AACxD;AAA+C;IAAa;AAC5D;AAAmD;IAAiB;AACpE;AAAuD;IAAqB;AAC5E;AAA2D;IAAyB;AACpF;AAA+D;IAA6B;AAC5F;AAAmE;IAAiC;AACpG;AAAuE;IAAqC;AAC5G;AACI;IACJ;AACA;AACI;IACJ;AACA;AAA0D;IAAe;AACzE;AAA6D;IAAqB;AAClF;AAAkE;IAAqB;AACvF;AAAkE;IAAqB;AACvF;AAAgE;IAAqB;AACrF;AAAmE;IAAqB;AACxF;AAAgE;IAAsB;AACtF;AAAoE;IAAsB;AAC1F;AAAmE;IAAuB;AAC1F;AAAuE;IAAuB;AAC9F;AAAmE;IAAqB;AACxF;AAAsE;IAAqB;AAC3F;AAA6E;IAAsB;AACnG;AAAgF;IAAsB;AACtG;AAAgE;IAAkC;AAClG;AACI;AACI;AACA;AACI;QACJ;AAAA;MAEJ;AAAA;AAEI;AACI;AAAqB;UAAW;AAAC;AAEjC;AAAuB;UAAuB;AAAC;AAE/C;AAA2B;UAA2B;AAAC;AAEvD;AAA+B;UAA+B;AAAC;AAE/D;AAAmC;UAAmC;AAAC;AAEvE;AAAuC;UAAuC;AAAC;AAE/E;AAA2C;UAA2C;AAAC;AAEvF;AAA+C;UAA+C;AAAC;AAE/F;AAAmD;UAAmD;AAAC;AAEvG;AACI;UACJ;AAAC;AAED;AADG;IAGf;AACA;AAAyD;IAAqB;AAC9E;AACI;AACI;MACJ;AAEI;MACJ;AAAA;AAEJ;AACI;IAEJ;AACA;AACI;IACJ;AACA;AAAsD;IAA8B;AACpF;AAA2C;IAAkD;AAC7F;AACI;IAGJ;AACA;AACI;AACI;MACJ;AAAA;AAEJ;AACI;IACJ;AACA;AACI;IACJ;AACA;AAA0D;IAAqC;AAC/F;AACI;AACI;MACJ;AAGI;MACJ;AAEI;MACJ;AAAA;AAEJ;AACA;EACJ;AACA;AAvLA;AACI;AAAa;AAuLw7wB;ACxLz8wB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAIA;AACA;AACA;AAnEA;AACI;AAAa;AAmEg1K;ACpEj2K;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AACI;AACA;AACI;AACA;MACJ;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACA;AAC0C;IAA6B;AACvE;AAA4C;IAA4B;AAGxE;AACI;IACJ;AACA;AACI;AACI;AAA0B;IAElC;AACA;AACI;IACJ;AACA;AACI;AACI;AACI;QACJ;AAEI;QACJ;AAAA;IAER;AACA;AACI;IACJ;AACA;AAA4C;IAA+B;AAC3E;AAAyC;IAA+B;AACxE;EACJ;AACA;AAhDA;AACI;AAAa;AAgDomK;ACjDrnK;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACE;AACE;AACE;AAAW;AAEb;IACF;AAAA;EAEF;AACA;AACA;AACE;AACA;AACE;AACA;AACA;AACA;IACF;AAAA;AAEE;AACE;MACF;AAAA;AAEA;AACA;AACA;AACA;AACE;MACF;AAAA;AAEA;AACE;MACF;AAAA;AAEF;EACF;AACA;AAtCA;AACI;AAAa;AAsCjB;ACvCA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AAAyB;EAAS;AAAA;AAFlC;AACI;AAAa;AAGoB;ACJrC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AAKA;AACI;AACA;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AAnBA;AACI;AAAa;AAmBiC;ACpBlD;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACE;AACE;AACE;AAAW;AAEb;IACF;AAAA;EAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACF;AAAA;AAEE;AACA;AACA;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;AACE;MACF;AACE;AACE;QACF;AACE;QACF;AACE;QACF;AAAA;AAEA;AACA;AACA;MACF;AAAA;AAEF;AACE;AACA;AACA;AACA;IACF;AACA;AACE;AACA;AACE;MACF;AAAA;AAEA;AACA;AACA;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACA;AACE;MACF;AAAA;AAEA;AACA;AACA;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACE;MACF;AAAA;AAEA;AACA;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;IACF;AACA;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACA;AACA;AACA;AACE;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;AAEA;IACF;AACA;AACE;AACE;MACF;AACE;MACF;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACE;AACA;AACE;QACF;AAAA;AACF;AAEA;IACF;AACA;AACE;AACE;MACF;AAAA;AAEF;AACE;IACF;AACA;AACE;IACF;AACA;EACF;AACA;AACA;AACE;AACA;AACE;AACA;IACF;AAAA;EAEF;AA9LA;AACI;AAAa;AA8LjB;AC/LA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACE;AACE;AACE;AAAW;AAEb;IACF;AAAA;EAEF;AACA;AACA;AACA;AACE;AACA;AACE;AACE;MACF;AAAA;AAEA;AACA;IACF;AAAA;AAEE;AACE;MACF;AAAA;IAEF;AACA;AACE;AACA;AACA;AACA;AACE;AACE;AACE;AACA;UACF;AAAA;AAEA;AACE;AACA;AACA;AACE;AACA;YACF;AAAA;AAEA;AACE;YACF;AAAA;AAEA;AACE;YACF;UACF;QACF;AAAA;AAEA;AACE;AACE;AACE;AACA;AAAqB;UAEzB;AAAA;AAEA;AACE;AACA;AACA;AACE;AACE;AACA;AAAqB;YAEzB;AAAA;AAEA;AACE;AACE;AACA;AAAqB;YAEzB;AAAA;AAEA;AACE;YACF;UACF;QACF;AAAA;AACF;AAEF;EACF;AACA;AACA;AACE;AACI;AACJ;AACE;AACA;IACF;AAAA;AACF;AAEE;AACI;AACJ;AACE;IACF;AAAA;AACF;AA1GI;AAAa;AA2GjB;AC5GA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACE;AACE;MACF;AACE;MACF;AAAA;AACF;AAEE;IACF;AAAA;AAEE;AACA;AACE;MACF;AACE;MACF;AACE;MACF;IACF;EACF;AAAA;AAzBA;AACI;AAAa;AA0BjB;AC3BA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;AACE;MACF;AACE;MACF;AAAA;IAEF;AAAA;AAEA;EACF;AAAA;AAdI;AAAa;AAejB;AChBA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AAAmD;EAA0C;AAF7F;AACI;AAAa;AAEiB;ACHlC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;EACJ;AAAA;AAJA;AACI;AAAa;AAKkB;ACNnC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;EACJ;AAAA;AAJA;AACI;AAAa;AAKoB;ACNrC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;IACF;AACE;AACA;IACF;AAAA;AACF;AAEE;AACA;EACF;AAAA;AAEA;AAjBA;AACI;AAAa;AAiBjB;AClBA;;AAAA;AACI;AAAmB;AACnB;AACJ;AAHA;AACI;AAAa;AAGqB;ACJtC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACE;AACE;AACE;AAAW;AAEb;IACF;AAAA;EAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AACA;AACE;MACF;AAAA;AACF;AAEE;AACA;AACA;AACE;MACF;AAAA;AAEA;AACI;AACA;AACJ;AACA;AACE;AACA;AACE;AACA;QACF;AAAA;AACF;AAEE;AACA;AACA;AACE;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACE;cACF;AACE;cACF;AAAA;AACF;AACF;AACF;AACF;AAEE;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEA;AACE;AACE;AAAoC;AAEpC;AACE;UACF;AACE;UACF;AACE;UACF;AAAA;AACK;AAEL;AADK;IAGX;AACA;AACE;AACE;MACF;AAAA;AAEA;AACE;AACA;AACE;QACF;AAAA;AACF;AAEF;AACE;AACA;IACF;AACA;EACF;AACA;AACA;AACE;AACA;AACE;AACA;AACA;IACF;AAAA;EAEF;AACA;AAlHA;AACI;AAAa;AAkHjB;ACnHA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AAAwB;IAAW;AACnC;AAAwB;AAN5B;AACI;AAAa;AAOkB;ACRnC;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACE;AACE;AACE;AAAW;AAEb;IACF;AAAA;EAEF;AACA;AACA;AACA;AACA;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACE;AACE;AACA;AAAK;AAEL;AACE;AACA;UACF;AAAA;AAEE;AACE;YACF;AACE;AACA;YACF;AAAA;UAEF;AAAA;AAEA;AACA;AACA;AAHK;IAKX;AAAA;AAEE;AACA;AACA;IACF;AACA;AACE;AACE;MACF;AAAA;AAEF;AACE;AACE;AACA;MACF;AAAA;AAEF;AACE;AACE;AACA;MACF;AAAA;AAEF;AACE;AACE;MACF;AAAA;AAEA;IACF;AACA;AACE;IACF;AACA;AACE;AACA;IACF;AACA;AACE;AACA;IACF;AACA;AACE;IACF;AACA;EACF;AACA;AACA;AACE;AACA;AACE;AACA;AACA;AACA;AACA;AACE;MACF;AACE;AACA;AACA;AACA;MACF;AAAA;AAEA;AACA;AACA;IACF;AAAA;AAEE;AACE;AACA;AACE;QACF;AACE;QACF;AAAA;AACF;AAEF;AACE;AACE;AACA;AACE;AACE;AACA;UACF;AACE;AACA;UACF;AAAA;AAEA;AACA;QACF;AACE;AACA;AACA;QACF;AAAA;AACF;AAEF;AACE;AACE;AACA;AACE;AACE;AACA;UACF;AACE;AACA;UACF;AAAA;AAEA;QACF;AAAA;AACF;AAEF;AACE;AACE;MACF;AACE;AACA;MACF;AAAA;AAEF;AACE;AACE;MACF;AACE;AACA;AACA;MACF;AAAA;IAEF;AACA;AACE;AACA;AACA;AACA;IACF;AACA;EACF;AAzLA;AACI;AAAa;AAyLjB;AC1LA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACI;AACA;AACA;AACA;AACA;AACA;AAAiB;AAErB;AAEA;AACA;AACA;AACA;AACI;EACJ;AAAA;AAhBI;AAAa;AAiBc;AClB/B;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AAJA;AACI;AAAa;AAIjB;ACLA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;AACE;MACF;AACE;MACF;AAAA;AACF;EAEF;AAAA;AAbA;AACI;AAAa;AAcjB;ACfA;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACA;AACE;AACE;AACA;AACE;MACF;AAAA;AACF;AAEE;AACA;AACA;AACA;IACF;AACA;AACE;AACA;AACA;AACE;MACF;AACE;MACF;AAAA;AAEE;AACA;AACE;QACF;AAAA;AACF;IAEF;AACA;AACE;AACA;AACE;AACE;QACF;AACE;QACF;AAAA;AACF;AAEE;MACF;AAAA;AAEE;AACE;AACE;AACE;YACF;AACE;AACA;YACF;AAAA;AAEA;UACF;AAAA;MAEJ;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;AACE;IACF;AACA;EACF;AACA;AAxEA;AACI;AAAa;AAwEjB;ACzEA;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AAEI;IACJ;AACA;AAA4C;IAAgC;AAC5E;AACI;IACJ;AACA;AAA6C;IAAiC;AAC9E;EACJ;AACA;AACA;AACI;AACA;AAGI;AAA6B;MAA8B;AAAA;AAE3D;AACA;AAA2B;AAAc;AAAgB;AAAmB;IAChF;AACA;AAAkD;IAAwB;AAI1E;AAAoD;IAAiC;AACrF;AAAsD;IAA4B;AAIlF;AAAyD;IAAqB;AAC9E;AAAyD;IAAqB;AAC9E;AAA0D;IAAsB;AAChF;AAAsD;IAAoB;AAC1E;AACI;IACJ;AACA;AAA+C;IAAwC;AACvF;EACJ;AACA;AAwCA;AACI;AAKA;AACI;AAA0B;MAAgB;AAAA;AAE1C;IACJ;AAAA;AACiD;IAAyC;AAI1F;AAAiD;IAAyC;AAC1F;AACI;AACA;AAA+B;MAAa;AAC5C;AAA+B;MAAa;AAC5C;AACI;AAAiD;AAAyB;UAAoC;QAAI;AAC3F;QAA6B;AACpD;AACI;AAA2C;AAAyB;YAAmC;UAAI;AACtF;UAA4B;QACrD;AAAA;AAEI;AAA2C;AAAyB;YAAmC;UAAI;AACzF;UAA4B;QAClD;AAAA;AAGA;AAAiD;AAAyB;UAA+B;QAAI;AACtF;QAAwB;AAC/C;AACI;AACqC;AAAyB;YAAmB;UAAI;AAAqB;UAAY;QAC1H;AAAA;AAEI;AACkC;AAAyB;YAAmB;UAAI;AAAkB;UAAY;QACpH;AAAA;AACJ;IAEJ;AACA;EACJ;AACA;AArJA;AACI;AAAa;AAqJwkc;ACtJzlc;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AAyBA;AACI;AACI;AACA;IACJ;AAAA;AAEI;AAAmB;MAAsB;AACzC;AACA;AAAiB;AAErB;AACI;AAAmB;MAA6B;AAChD;AACA;AAAiB;AAErB;AACI;AAAmB;MAAsD;AACzE;AACA;AAAiB;AAErB;AACI;AAAmB;MAAqD;AACxE;AACA;AAAiB;AAKrB;AAA0C;IAA8B;AAIxE;AAA6C;IAAiC;AAI9E;AAAmD;IAAuC;AAI1F;AAA8C;IAA2B;AAIzE;AAA4C;IAAsD;AAClG;AAAgE;IAAoD;AACpH;AAA6C;IAAiC;AAI9E;AAA6C;IAAqB;AAElE;AAAoD;IAA0B;AAC9E;EACJ;AACA;AApFA;AACI;AAAa;AAoFwmM;ACrFznM;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACI;AACA;AACI;AACA;AACA;IACJ;AAAA;AAEI;AACA;AACA;IACJ;AACA;EACJ;AACA;AAvBA;AACI;AAAa;AAuB45E;ACxB76E;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AACI;AAA8B;IAEtC;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;IACJ;AAAA;AAGI;AACA;AACI;AAAO;AAEP;AAAO;AAEP;AAA0H;AAElI;AACI;IACJ;AAEA;AACI;AAAuC;MAA4C;AACnF;IACJ;AAEA;AACI;AAAsC;MAAwC;IAClF;AACA;EACJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AAAA;AAEI;AAAmB;MAA6B;AAChD;AACA;AAAiB;AAErB;AACI;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACI;AACI;AACA;QACJ;MACJ;AAAA;AAII;AACI;QACJ;AAAA;AAEJ;IACJ;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AACA;AACI;AACI;IACJ;AAAA;AACJ;AAEI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACI;MACJ;AAEI;AACA;MACJ;AAAA;AACJ;AAEI;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;AACI;QACJ;AAEI;AACI;AACA;UACJ;AAAA;AACJ;AAEI;AACA;QACJ;AAAA;AAEI;AACA;QACJ;AAAA;AACJ;AAGI;AACA;MACJ;AAAA;AAEI;MACJ;AACA;IACJ;AACA;AAAkE;IAAqD;AACvH;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;EAEJ;AACA;AACI;AACI;AACA;IACJ;AAAA;EAEJ;AACA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D;IAA0C;AACzG;AAAwD;IAA0C;AAClG;AACI;AAAmB;MAA6B;AAChD;AACA;AAAiB;AAErB;EACJ;AACA;AACA;AACI;AACA;EAEJ;AACA;AACA;AACI;AACI;IACJ;AAAA;AAEI;AAAmB;MAA8B;AACjD;AACA;AAAiB;AAErB;EACJ;AACA;AAxKA;AACI;AAAa;AAwK4iR;ACzK7jR;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AACI;AACA;IACJ;AAAA;EAEJ;AACA;AATA;AACI;AAAa;AAS4xB;ACV7yB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACI;AAKI;AACA;IACJ;AAAA;AAEI;AACA;AAAiC;MAA2B;AAC5D;IACJ;AACA;AACI;AACA;AACI;AAAwE;IAEhF;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;AAEA;IACJ;AAAA;AAEI;AACA;AACI;AAAa;AAEjB;AACA;AACA;AACI;MACJ;AAAA;IAEJ;AACA;EACJ;AACA;AAlDA;AACI;AAAa;AAkD41J;ACnD72J;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACI;AAAsF;IAAiC;EAC3H;AAAA;AAEA;AACI;AAAqF;IAA2B;EACpH;AAAA;AAXA;AACI;AAAa;AAYgwD;ACbjxD;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACI;AACI;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACI;AACA;AACA;AAAK;AAEL;AACA;AACA;AAAK;AAEL;AACA;AACA;AAAK;AAEb;AACA;IACJ;AAAA;AAEI;AACA;AACA;AACA;AACA;AACA;AAAwG;MAAmC;AAC3I;AACI;AACA;AACA;AACI;AACI;UACJ;AAAA;AACJ;A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EA;AACI;AACI;AACA;AACI;MACJ;AAAA;AAEA;AACA;AACI;MACJ;AAEI;AACI;AACA;AACA;AACA;AACA;QACJ;MACJ;AAAA;AACJ;AAEA;EACJ;AAAA;AA7PA;AACI;AAAa;AA8PgmvB;AC/PjnvB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AAIA;AAIA;AAIA;AAIA;AAIA;AAIA;AA3BA;AACI;AAAa;AA2B4tG;AC5B7uG;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAIA;AAII;AAIA;AAIA;EACJ;AACA;AACA;AACI;EAEJ;AAAA;AAEI;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;AACA;MACJ;AAAA;AAEI;AACA;AACA;MACJ;AAAA;AAEI;AACA;AACA;MACJ;AAAA;AAEI;AACA;AACA;MACJ;AAAA;AAEI;AACA;AACA;MACJ;AAAA;AAEI;AACA;AACA;MACJ;AAAA;AAEI;AACA;AACA;MACJ;AAAA;AAEI;AACA;AACA;MACJ;AAAA;AAEI;AACA;AACA;MACJ;AAAA;AAEI;AACA;AACA;MACJ;AAAA;AACJ;AAEI;AACI;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;AAErB;AAAqB;IAE7B;AACA;AACI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AACI;AACA;AACA;MACJ;AAAA;AACJ;AAEI;AACI;MACJ;AAAA;IAEJ;AACA;AACI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;IAGJ;AAAA;AAEI;AAAsC;MAAyD;AAC/F;IACJ;AACA;AACI;IACJ;AACA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;AACA;AACA;AA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;AACI;AAAgC;IAAoC;EACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACI;AACA;EAEJ;AACA;AACA;AACI;AACA;AACI;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;IACJ;AAAA;AAEI;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;IAEJ;AACA;AACI;AACA;AACA;AACI;MACJ;AAAA;AAEI;AACA;AACI;QACJ;AAAA;AACJ;IAEJ;AACA;AACI;IACJ;AACA;AACI;AAAmC;MAAyB;AAAA;AAE5D;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AAEA;AACA;AACA;AACA;AACA;AACA;IACJ;AACA;AACI;AACA;AACA;AACA;IACJ;AAEA;AACI;AACA;AACA;AACA;IACJ;AAEA;AACI;AACA;AACA;IACJ;AAEA;AAEA;AAEA;AACI;IACJ;AACA;AACI;AACI;MACJ;AAAA;AAEA;AACI;AACA;MACJ;AAAA;AAEA;AACA;AACI;AACA;MAGJ;AAEI;MACJ;AAAA;AAEI;AACA;MACJ;AAAA;AAIA;IACJ;AACA;AACI;AACA;AACI;MACJ;AAAA;AAEA;AAGA;AACA;IACJ;AACA;AAKA;EACJ;AACA;AApMA;AACI;AAAa;AAoMgl/B;ACrMjm/B;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAyB;AAAW;AACrC;IAAsB;AAAA;EAE1C;AACA;AACI;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACA;AACA;AACA;AAQA;AACI;AACA;AAKI;AACI;MACJ;AACA;AACA;AAAiB;AAErB;AAQI;AAAmB;MAAsB;AACzC;AACA;AAAiB;AAErB;EACJ;AACA;AACA;AACI;AAIA;AACI;AACA;AACA;AACA;AACA;AACA;IACJ;AAAA;AASI;AAAmB;MAA2B;AAC9C;AACA;AAAiB;AAErB;AAAgD;IAAiB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AACuB;AAA4B;AAAuB;AAI1E;EACJ;AACA;AAOA;AACI;AACI;IACJ;AAAA;AAMA;EACJ;AACA;AAjOA;AACI;AAAa;AAiO40gB;AClO71gB;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAA0B;AAAiG;AAC3H;AAA2E;;AACtE;AAAiD;AAAuB;AAAoE;EAErJ;AACA;AACI;AAA2E;AAA6B;AAE5G;AACI;AAAgC;IAAoC;EACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACI;AACA;EAEJ;AACA;AAwDA;AACI;AACI;AACA;IACJ;AAAA;AAMA;EACJ;AACA;AACA;AACI;AACI;AACA;AACA;IACJ;AAAA;AAEI;AACI;AACA;MACJ;AACA;AACA;AAAiB;AAErB;AACI;AACA;AACI;MACJ;AACA;IACJ;AAEA;AACI;AACA;AACA;AACI;AAA+C;IAEvD;AAEA;AACI;AACI;AAA0B;AAGlC;AACI;AACI;AAAM;AAEV;IACJ;AAEA;AACI;AACA;AACA;IACJ;AAEA;AAA0D;IAAoC;AAE9F;AACI;IACJ;AAEA;AAAoD;IAA8D;AAClH;AAIA;AAKA;AAIA;EACJ;AACA;AAnKA;AACI;AAAa;AAmKwvV;ACpKzwV;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AAyCA;AAjDA;AACI;AAAa;AA2Dg+F;AC5Dj/F;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAgC;AAAiB;AACtE;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA5BA;AACI;AAAa;AA4B44C;AC7B75C;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACb;AACA;AA4CA;AAhDA;AACI;AAAa;AAgDg/E;ACjDjgF;;AAAA;AACI;AAAmB;AACnB;AADJ;AACa;AACT;AAAiB;AAAgC;AAAiB;AACtE;AAEA;AACA;AACA;AARA;AACI;AAAa;AAQgkB;ACTjlB;AACA;AACE;AADF;AAQA;AACE;AAEA;AAIE;AACE;QACF;AAAe;MAGjB;AAEE;MACF;AAAA;AAKF;AAIE;AACA;AAgCA;AACE;AAAO;AAGP;AACE;YACF;AAAA;AAGE;YACF;AAAA;AAIE;AAEA;AACE;AACA;cACF;AAAA;AACF;AAGE;AACA;YACF;AAAA;AAGE;YACF;AAAA;AAGF;AACA;AAGA;AAUE;AAUA;AASA;AASA;AAgBA;AAKA;AAAW;AAIb;AAEE;AACE;AACA;YACF;AAEA;AACE;AACE;cACF;AAAA;AAGF;AACE;AACA;YACF;AAEA;AACE;AACA;YACF;AAGA;AACE;AACE;AAAgB;AAA2B;AAA4B;AAAE;AAG3E;YACF;AAGA;AACE;AAA4C;AAAQ;AAAM;AACxD;AACA;AACA;AAEA;AACE;AACA;AAA+C;YAErD;AAGA;AACE;AAAY;AAAQ;AAAM;AAE1B;AACE;AACA;AACA;cACF;AAAA;YAGF;AAGA;AACE;AACE;AAA4B;gBAAc;AAAA;cAE5C;AAAA;YAEF;AAGA;AACE;AAAO;AAEP;AAAgB;cAAY;AAAA;AAG1B;AACE;AACE;kBACF;AACE;kBACF;AAAA;AACF;AACF;YAGF;AAEA;AACE;AACE;AACE;AAEF;AACE;gBACF;cACF;YACF;AAAA;AAMJ;AACA;AAIA;AAkBE;AACE;AAAU;AAAQ;AAElB;AACE;AACA;AACA;UACF;AAAA;AAGE;AACE;AACA;AACA;AACA;AACA;AACA;AAAmF;AAGrF;AACA;AAEA;AACE;AACA;YACF;AAAA;AAIA;AACE;YACF;AAAA;AAGE;YACF;AACE;YACF;AAAA;AAIA;AACA;AAEA;AACE;YACF;AAAA;AACF;AAgBF;AACE;AACA;QACF;AAcA;AACE;AACA;AACA;AACA;AACA;AACA;QACF;AAWA;AACE;AACE;AAGF;AACA;AACA;AACA;AAeA;AAaA;AAaA;AAaA;AAaA;AAaA;AAaA;AAaA;AAGA;AACA;AAGA;AAGA;AAGA;AACE;AACA;UACF;AAAA;AAME;AACA;AAGA;AACA;AACA;AAEA;AACE;YACF;AAAA;AAGE;AACE;cACF;AAAA;AACF;AAGE;AAEA;AACE;cACF;AAAA;YAGF;AAAA;AACF;QAGF;AAaA;AACE;AACE;AAEF;AACE;UACF;AAAA;AAGE;UACF;AAAA;AAGA;AACA;AACA;AAEA;QACF;AAaA;AACE;AAAgB;AAAO;AAAO;AAAW;AAAO;AAC9C;AACA;AAEF;AACE;UACF;AACE;UACF;AAAA;AAIA;AAAsC;UAAc;AAAA;AAGpD;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;QACF;AA0BA;AACE;AAEA;AACE;AACA;AACA;AACA;UACF;AAAA;AAGE;UACF;AAAA;AAGE;UACF;AAAA;QAGF;AAoBA;AACE;AAAO;AAAO;AAAQ;AACpB;AAEF;AACE;UACF;AAAA;AAGE;AACE;AACE;cACF;AAAA;AACF;AACF;AAKE;UACF;AAAA;AAGE;AACA;AAEA;AACE;AACA;AAEA;AACE;AACA;cACF;AACE;AACA;AACA;cACF;AAAA;AAEA;AAEA;AACE;AACA;cACF;AAAA;AAGA;AAEA;AACA;AACA;AAEA;AACA;YACF;AAAA;AAGA;AAEA;AACE;YACF;AAAA;UAGF;AAAA;AAmBF;AACE;AACA;AACA;QACF;AAmBA;AACE;AAAO;AAAQ;AAAK;AAAQ;AAAQ;AAAQ;AAAQ;AAClD;AACA;AAEF;AAAkB;UAAqB;AAAA;AAIvC;AAEA;AAEA;AACE;AAGA;AACE;AACA;AAEA;AACE;AACE;AACA;gBACF;AACE;gBACF;AAAA;AAGA;cACF;AAAA;AAGE;AAAe;AAAsB;AAAW;AAAG;cACrD;AAAA;AAIA;YACF;AAAA;AACF;AAIE;AACE;YACF;AACE;AACA;YACF;UACF;AAAA;QAGF;AAeA;AACE;AACE;UACF;AAAA;AAoBF;AACE;AACE;AAEF;AAEA;AACE;AACA;AACA;AACA;AACE;YACF;AAAA;AACF;AAGE;UACF;AAAA;AAiBF;AACE;QACF;AAaA;AACE;AACA;AACA;AACA;QACF;AAQA;AACE;AAAuB;UAAQ;AAAA;AAG/B;AACE;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;AAEL;AACA;AAAK;QAET;AAOA;AACE;AAAe;AAAO;AAAY;AAChC;AAEF;AACE;UACF;AAAA;AAGE;AACA;AAA2C;YAAuB;AAAA;AAElE;AACE;AACA;AAAkC;AAA2B;AAG3D;AACA;AACA;AAEA;AAA+C;AAAkB;AACd;AAAsB;AAIzE;AACE;AAAkC;kBAAwB;AAAA;AAE1D;AAAkC;kBAAwB;AAAA;AAC5D;AAEA;cACF;AACE;AACA;cACF;AAAA;AACF;AACF;AAOF;AACE;AAAO;AAEP;AACE;AACE;YACF;AAAA;AAGA;UACF;AAAA;AAOF;AACE;AAAkB;AAChB;AACA;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AAAO;AAGX;AACA;AACE;AAAM;AAGN;AACA;AAEA;AACE;AACA;AACE;AACE;AACA;kBACF;AAAA;AACF;AACF;AAIA;AACE;cACF;AACE;cACF;AAAA;AAGE;AACA;AACA;cACF;AAAA;AACK;AAEL;AACE;AACA;AACA;cACF;AAAA;AAGF;AACE;AACE;AACE;gBACF;AAAA;AACF;AAGA;AACE;AACA;cACF;AAAA;AACK;QAET;AAMA;AACE;AACE;AACA;AAEA;AACE;AACE;gBACF;AAAA;AAGE;gBACF;cACF;AAEF;AACE;UACF;AAAA;AAIA;AACA;AAEA;AACE;AACE;YACF;AAAA;AACF;AAOF;AACE;AAAY;AAAQ;AAClB;AAEF;AAEE;UACF;AAAA;AAGE;UACF;AAAA;AAGA;AACA;AAEA;AACE;AACA;UACF;AACE;UACF;AAAA;AACF;AAaF;AACE;AAAY;AAAS;AACnB;AAEA;AACE;AACA;AACA;AAAW;AAGb;AACE;AAAY;AAAU;AAAc;AAClC;AAEF;AACA;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AAAgE;AAGlE;AAEA;AACE;AACA;kBACF;AAAA;AAGE;AACA;AACA;kBACF;AAAA;AAGA;AAAK;AAEL;AAEA;AACE;AACE;AACA;AAAsB;kBAE1B;AAAA;AAMA;AAA6E;AAAA;AAG7E;AACA;AAAK;YAET;AAEF;AAIA;AACE;AACA;AACA;AAAgB;AAGlB;AACA;AACA;AAEA;AACE;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AAAiB;AAEnB;QACF;AACE;AACA;QACF;AAAA;AAE0E;AAAA;AAG1E;MACF;AASA;AACE;AAAS;AAET;AACE;QACF;AAAA;AAGE;QACF;AAAA;AAGE;AACE;UACF;AAAA;AACF;AAKF;AACE;AACE;AACA;AACE;AACE;YACF;AACE;YACF;AAAA;QAEJ;MACF;AAAA;IAIA;GAjzCoB;AAClB;AACF;AAgzCA;ACpzCA;AAAA;AACI;AAAmB;AACnB;AAFJ;AAAA;AACI;AAAa;AADyD;;;;qGCqB7D,QAAQ;;;;;;qBAnBb,SAAS;wBAAE,YAAY;sBAAE,UAAU;;2BACnC,eAAe;;;;;;;AAHvB,kBAAY,CAAC;;AAqBA,cAAQ;AACR,iBADA,QAAQ,CACP,IAAI,EAAE;;;AAChB,cAAI,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AACjC,cAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;SAChC;;qBAJU,QAAQ;;iBAMD,8BAAG;AACnB,gBAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;WAC1E;;;iBAEO,kBAAC,KAAK,EAAE;AACd,gBAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;WACzB;;;iBAEM,mBAAG;AACR,gBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;WACrB;;;wBAhBU,QAAQ;AAAR,gBAAQ,GADpB,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAClC,QAAQ,KAAR,QAAQ;AAAR,gBAAQ,GAdpB,SAAS,CAAC;AACT,kBAAQ,EAAE,UAAU;AACpB,gBAAM,EAAE,CAAC,QAAQ,CAAC;AAClB,kBAAQ,6GAIP;AACD,oBAAU,EAAE,CAAC,eAAe,CAAC;AAC7B,gBAAM,EAAE,o+BAEN;SACH,CAAC,CAEW,QAAQ,KAAR,QAAQ;eAAR,QAAQ;;;;;;;ACrBrB;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACJ;AACE;EACF;AALA;AACI;AAAa;AAKjB;ACNA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;AACI;AACJ;AACA;AACE;IACF;EACF;AAXA;AACI;AAAa;AAWjB;ACZA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACE;IACF;EACF;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACA;AACE;EACF;AALA;AACI;AAAa;AAKjB;ACNA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAA6E;AAAe;AAD/G;AACI;AAAa;AAAiG;ACDlH;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACA;AACE;AACI;AACA;AACJ;AACA;AACE;AAA2B;AAE7B;AACE;AACA;AACE;QACF;AACE;AACA;AACA;AACA;AACA;AACA;QACF;AAAA;AAEA;MACF;AACE;AACA;AACE;QACF;AAAA;MAEF;AAAA;AACF;AAEF;AApCA;AACI;AAAa;AAoCjB;ACrCA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;EACF;AAJA;AACI;AAAa;AAIjB;ACLA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAAwD;AAAe;AAD1F;AACI;AAAa;AAA4E;ACD7F;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;EACF;AAHA;AACI;AAAa;AAEhB;ACHD;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACE;AAA0C;EAE9C;AANA;AACI;AAAa;AAMjB;ACPA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACJ;AACE;AACA;AACE;AAAoD;AAExD;AACE;AACE;AACE;AACA;AACA;MACF;AACE;MACF;AAAA;AAEE;AACA;AACE;;AAEA;AAAa;MAEjB;IACF;AACA;AAAW;AA3Bb;AACI;AAAa;AA4BjB;AC7BA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AAFA;AACI;AAAa;AAEjB;ACHA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AAFA;AACI;AAAa;AAEjB;ACHA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAAkE;AAAe;AADpG;AACI;AAAa;AAAsF;ACDvG;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACA;AACE;AACE;IACF;AAAA;AAEI;AACA;AACA;AACA;AAAiB;AAErB;AACE;AAAuG;AAE3G;AAjBA;AACI;AAAa;AAiBjB;AClBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;EACF;AAJA;AACI;AAAa;AAIjB;ACLA;AAAA;AACI;AAAmB;AACnB;AADJ;AAAmB;AAAiE;AAAe;AADnG;AACI;AAAa;AAAqF;ACDtG;;AAAA;AACI;AAAmB;AACnB;AAAJ;AACA;AACE;AACE;AACE;AACA;AACA;AACA;AACE;AAA0B;MAE9B;AAAA;AACF;AAEE;AACE;AAAmD;AAEnD;AAA0C;IAE9C;EACF;AACA;AAtBA;AACI;AAAa;AAsBjB;ACvBA;;AAAA;AACI;AAAmB;AACnB;AACJ;AACE;AACE;IACF;AAAA;AAGF;AATA;AACI;AAAa;AAQQ;ACTzB;AAAA;AACI;AAAmB;AACnB;AADJ;AAEA;AAA0B;AAAY;AAFlC;AAAa;AAEqD;ACHtE;AAAA;AACI;AAAmB;AACnB;AADJ;AACE;AAA2B;AAA2C;EAExE;AAJA;AACI;AAAa;AAGhB;ACJD;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACA;AACE;AAAS;AAET;AACE;AACE;QACF;AAAC;AAED;AACE;QACF;AAAC;AAED;AACE;QACF;AAAC;AAEL;AACE;IACF;EACF;AAvBA;AACI;AAAa;AAuBjB;ACxBA;AAAA;AACI;AAAmB;AACnB;AADJ;AACI;AACA;AACA;AACJ;AACE;AACI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACJ;AACE;AAAa;AAEb;AACA;AACE;AAAQ;AAEV;AACE;AACE;QACF;AACA;AACA;MACF;AACA;AACE;AAA4D;AAChE;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AAzCA;AACI;AAAa;AAyCjB;AC1CA;AAAA;AACI;AAAmB;AACnB;AADJ;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAqB;AAZvB;AACI;AAAa;AAYhB;ACbD;AAAA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","file":"dist/redoc.min.js","sourcesContent":["/*eslint no-unused-vars: 0*/\n/*eslint strict: 0*/\nvar $buoop = { vs: {i:9, f:25, o:12.1, s:7}, c:2 };\nfunction $buo_f(){\n var e = document.createElement('script');\n e.src = '//browser-update.org/update.min.js';\n document.body.appendChild(e);\n}\ntry {document.addEventListener('DOMContentLoaded', $buo_f, false);}\ncatch(e){window.attachEvent('onload', $buo_f);}\n","!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p=\"\",t(0)}([function(e,exports,t){(function(e){\"use strict\";function n(e,t,n,r){function o(t){var n=t.data;return n.args[0]=t.invoke,n.handleId=i.apply(e,n.args),t}function a(e){return c(e.data.handleId)}t+=r,n+=r;var i=s.patchMethod(e,t,function(n){return function(i,s){if(\"function\"==typeof s[0]){var c=Zone.current,u={handleId:null,isPeriodic:\"Interval\"==r,delay:\"Timeout\"==r||\"Interval\"==r?s[1]||0:null,args:s};return c.scheduleMacroTask(t,s[0],u,o,a)}return n.apply(e,s)}}),c=s.patchMethod(e,n,function(t){return function(n,r){var o=r[0];o&&\"string\"==typeof o.type?o.cancelFn&&o.zone.cancelTask(o):t.apply(e,r)}})}t(1);var r=t(2),o=t(4),a=t(5),i=t(6),s=t(3),c=\"set\",u=\"clear\",l=[\"alert\",\"prompt\",\"confirm\"],p=\"undefined\"==typeof window?e:window;n(p,c,u,\"Timeout\"),n(p,c,u,\"Interval\"),n(p,c,u,\"Immediate\"),n(p,\"request\",\"cancelMacroTask\",\"AnimationFrame\"),n(p,\"mozRequest\",\"mozCancel\",\"AnimationFrame\"),n(p,\"webkitRequest\",\"webkitCancel\",\"AnimationFrame\");for(var h=0;h<l.length;h++){var f=l[h];s.patchMethod(p,f,function(e,t,n){return function(t,r){return Zone.current.run(e,p,r,n)}})}r.eventTargetPatch(p),i.propertyDescriptorPatch(p),s.patchClass(\"MutationObserver\"),s.patchClass(\"WebKitMutationObserver\"),s.patchClass(\"FileReader\"),o.propertyPatch(),a.registerElementPatch(p),p.navigator&&p.navigator.geolocation&&s.patchPrototype(p.navigator.geolocation,[\"getCurrentPosition\",\"watchPosition\"])}).call(exports,function(){return this}())},function(e,exports){(function(e){(function(e){function t(e){return\"__zone_symbol__\"+e}function n(){D||T||0!=b.length||(e[y]?e[y].resolve(0)[g](a):e[k](a,0))}function r(e){n(),b.push(e)}function o(e){var t=e&&e.rejection;t&&console.error(\"Unhandled Promise rejection:\",t instanceof Error?t.message:t,\"; Zone:\",e.zone.name,\"; Task:\",e.task&&e.task.source,\"; Value:\",t),console.error(e)}function a(){if(!_){for(_=!0;b.length;){var e=b;b=[];for(var t=0;t<e.length;t++){var n=e[t];try{n.zone.runTask(n,null,null)}catch(r){o(r)}}}for(;w.length;){var a=w;w=[];for(var t=0;t<a.length;t++){var i=a[t];try{i.zone.runGuarded(function(){throw i})}catch(r){o(r)}}}_=!1,D=!1}}function i(e){return e&&e.then}function s(e){return e}function c(e){return I.reject(e)}function u(e,t){return function(n){l(e,t,n)}}function l(e,t,r){if(e[S]===O)if(r instanceof I&&r[S]!==O)p(r),l(e,r[S],r[E]);else if(i(r))r.then(u(e,t),u(e,!1));else{e[S]=t;var o=e[E];e[E]=r;for(var a=0;a<o.length;)h(e,o[a++],o[a++],o[a++],o[a++]);if(0==o.length&&t==Z){e[S]=C;try{throw new Error(\"Uncaught (in promise): \"+r)}catch(s){var c=s;c.rejection=r,c.promise=e,c.zone=f.current,c.task=f.currentTask,w.push(c),n()}}}return e}function p(e){if(e[S]===C){e[S]=Z;for(var t=0;t<w.length;t++)if(e===w[t].promise){w.splice(t,1);break}}}function h(e,t,n,r,o){p(e);var a=e[S]?r||s:o||c;t.scheduleMicroTask(P,function(){try{l(n,!0,t.run(a,null,[e[E]]))}catch(r){l(n,!1,r)}})}var f=function(){function e(e,t){this._properties=null,this._parent=e,this._name=t?t.name||\"unnamed\":\"<root>\",this._properties=t&&t.properties||{},this._zoneDelegate=new d(this,this._parent&&this._parent._zoneDelegate,t)}return Object.defineProperty(e,\"current\",{get:function(){return m},enumerable:!0,configurable:!0}),Object.defineProperty(e,\"currentTask\",{get:function(){return T},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"parent\",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"name\",{get:function(){return this._name},enumerable:!0,configurable:!0}),e.prototype.get=function(e){for(var t=this;t;){if(t._properties.hasOwnProperty(e))return t._properties[e];t=t._parent}},e.prototype.fork=function(e){if(!e)throw new Error(\"ZoneSpec required!\");return this._zoneDelegate.fork(this,e)},e.prototype.wrap=function(e,t){if(\"function\"!=typeof e)throw new Error(\"Expecting function got: \"+e);var e=this._zoneDelegate.intercept(this,e,t),n=this;return function(){return n.runGuarded(e,this,arguments,t)}},e.prototype.run=function(e,t,n,r){void 0===t&&(t=null),void 0===n&&(n=null),void 0===r&&(r=null);var o=m;m=this;try{return this._zoneDelegate.invoke(this,e,t,n,r)}finally{m=o}},e.prototype.runGuarded=function(e,t,n,r){void 0===t&&(t=null),void 0===n&&(n=null),void 0===r&&(r=null);var o=m;m=this;try{try{return this._zoneDelegate.invoke(this,e,t,n,r)}catch(a){if(this._zoneDelegate.handleError(this,a))throw a}}finally{m=o}},e.prototype.runTask=function(e,t,n){if(e.zone!=this)throw new Error(\"A task can only be run in the zone which created it! (Creation: \"+e.zone.name+\"; Execution: \"+this.name+\")\");var r=T;T=e;var o=m;m=this;try{try{return this._zoneDelegate.invokeTask(this,e,t,n)}catch(a){if(this._zoneDelegate.handleError(this,a))throw a}}finally{\"macroTask\"==e.type&&e.data&&!e.data.isPeriodic&&(e.cancelFn=null),m=o,T=r}},e.prototype.scheduleMicroTask=function(e,t,n,r){return this._zoneDelegate.scheduleTask(this,new v(\"microTask\",this,e,t,n,r,null))},e.prototype.scheduleMacroTask=function(e,t,n,r,o){return this._zoneDelegate.scheduleTask(this,new v(\"macroTask\",this,e,t,n,r,o))},e.prototype.scheduleEventTask=function(e,t,n,r,o){return this._zoneDelegate.scheduleTask(this,new v(\"eventTask\",this,e,t,n,r,o))},e.prototype.cancelTask=function(e){var t=this._zoneDelegate.cancelTask(this,e);return e.cancelFn=null,t},e.__symbol__=t,e}(),d=function(){function e(e,t,n){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=e,this._parentDelegate=t,this._forkZS=n&&(n&&n.onFork?n:t._forkZS),this._forkDlgt=n&&(n.onFork?t:t._forkDlgt),this._interceptZS=n&&(n.onIntercept?n:t._interceptZS),this._interceptDlgt=n&&(n.onIntercept?t:t._interceptDlgt),this._invokeZS=n&&(n.onInvoke?n:t._invokeZS),this._invokeDlgt=n&&(n.onInvoke?t:t._invokeDlgt),this._handleErrorZS=n&&(n.onHandleError?n:t._handleErrorZS),this._handleErrorDlgt=n&&(n.onHandleError?t:t._handleErrorDlgt),this._scheduleTaskZS=n&&(n.onScheduleTask?n:t._scheduleTaskZS),this._scheduleTaskDlgt=n&&(n.onScheduleTask?t:t._scheduleTaskDlgt),this._invokeTaskZS=n&&(n.onInvokeTask?n:t._invokeTaskZS),this._invokeTaskDlgt=n&&(n.onInvokeTask?t:t._invokeTaskDlgt),this._cancelTaskZS=n&&(n.onCancelTask?n:t._cancelTaskZS),this._cancelTaskDlgt=n&&(n.onCancelTask?t:t._cancelTaskDlgt),this._hasTaskZS=n&&(n.onHasTask?n:t._hasTaskZS),this._hasTaskDlgt=n&&(n.onHasTask?t:t._hasTaskDlgt)}return e.prototype.fork=function(e,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,e,t):new f(e,t)},e.prototype.intercept=function(e,t,n){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this.zone,e,t,n):t},e.prototype.invoke=function(e,t,n,r,o){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this.zone,e,t,n,r,o):t.apply(n,r)},e.prototype.handleError=function(e,t){return this._handleErrorZS?this._handleErrorZS.onHandleError(this._handleErrorDlgt,this.zone,e,t):!0},e.prototype.scheduleTask=function(e,t){try{if(this._scheduleTaskZS)return this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this.zone,e,t);if(t.scheduleFn)t.scheduleFn(t);else{if(\"microTask\"!=t.type)throw new Error(\"Task is missing scheduleFn.\");r(t)}return t}finally{e==this.zone&&this._updateTaskCount(t.type,1)}},e.prototype.invokeTask=function(e,t,n,r){try{return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this.zone,e,t,n,r):t.callback.apply(n,r)}finally{e!=this.zone||\"eventTask\"==t.type||t.data&&t.data.isPeriodic||this._updateTaskCount(t.type,-1)}},e.prototype.cancelTask=function(e,t){var n;if(this._cancelTaskZS)n=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this.zone,e,t);else{if(!t.cancelFn)throw new Error(\"Task does not support cancellation, or is already canceled.\");n=t.cancelFn(t)}return e==this.zone&&this._updateTaskCount(t.type,-1),n},e.prototype.hasTask=function(e,t){return this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this.zone,e,t)},e.prototype._updateTaskCount=function(e,t){var n=this._taskCounts,r=n[e],o=n[e]=r+t;if(0>o)throw new Error(\"More tasks executed then were scheduled.\");if(0==r||0==o){var a={microTask:n.microTask>0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:e};try{this.hasTask(this.zone,a)}finally{this._parentDelegate&&this._parentDelegate._updateTaskCount(e,t)}}},e}(),v=function(){function e(e,t,n,r,o,i,s){this.type=e,this.zone=t,this.source=n,this.data=o,this.scheduleFn=i,this.cancelFn=s,this.callback=r;var c=this;this.invoke=function(){try{return t.runTask(c,this,arguments)}finally{a()}}}return e}(),k=t(\"setTimeout\"),y=t(\"Promise\"),g=t(\"then\"),m=new f(null,null),T=null,b=[],_=!1,w=[],D=!1,S=t(\"state\"),E=t(\"value\"),P=\"Promise.then\",O=null,z=!0,Z=!1,C=0,I=function(){function e(e){var t=this;t[S]=O,t[E]=[];try{e&&e(u(t,z),u(t,Z))}catch(n){l(t,!1,n)}}return e.resolve=function(e){return l(new this(null),z,e)},e.reject=function(e){return l(new this(null),Z,e)},e.race=function(e){function t(e){a&&(a=r(e))}function n(e){a&&(a=o(e))}for(var r,o,a=new this(function(e,t){r=e,o=t}),s=0,c=e;s<c.length;s++){var u=c[s];i(u)||(u=this.resolve(u)),u.then(t,n)}return a},e.all=function(e){function t(e){o&&r(e),o=null}for(var n,r,o=new this(function(e,t){n=e,r=t}),a=[],s=0,c=0,u=e;c<u.length;c++){var l=u[c];i(l)||(l=this.resolve(l)),l.then(function(e){return function(t){a[e]=t,s--,o&&!s&&n(a)}}(s),t),s++}return s||n(a),o},e.prototype.then=function(t,n){var r=new e(null),o=f.current;return this[S]==O?this[E].push(o,r,t,n):h(this,o,r,t,n),r},e.prototype[\"catch\"]=function(e){return this.then(null,e)},e}(),M=e[t(\"Promise\")]=e.Promise;if(e.Promise=I,M){var j=M.prototype,F=j[t(\"then\")]=j.then;j.then=function(e,t){var n=this;return new I(function(e,t){F.call(n,e,t)}).then(e,t)}}return e.Zone=f})(\"undefined\"==typeof window?e:window)}).call(exports,function(){return this}())},function(e,exports,t){\"use strict\";function n(e){var t=[],n=e.wtf;n?t=o.split(\",\").map(function(e){return\"HTML\"+e+\"Element\"}).concat(a):e[i]?t.push(i):t=a;for(var s=0;s<t.length;s++){var c=e[t[s]];r.patchEventTargetMethods(c&&c.prototype)}}var r=t(3),o=\"Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video\",a=\"ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex\".split(\",\"),i=\"EventTarget\";exports.eventTargetPatch=n},function(e,exports){(function(e){\"use strict\";function t(e,t){for(var n=e.length-1;n>=0;n--)\"function\"==typeof e[n]&&(e[n]=Zone.current.wrap(e[n],t+\"_\"+n));return e}function n(e,n){for(var r=e.constructor.name,o=0;o<n.length;o++){var a=n[o],i=e[a];i&&(e[a]=function(e){return function(){return e.apply(this,t(arguments,r+\".\"+a))}}(i))}}function r(e,t){var n=Object.getOwnPropertyDescriptor(e,t)||{enumerable:!0,configurable:!0};delete n.writable,delete n.value;var r=t.substr(2),o=\"_\"+t;n.set=function(e){if(this[o]&&this.removeEventListener(r,this[o]),\"function\"==typeof e){var t=function(t){var n;n=e.apply(this,arguments),void 0==n||n||t.preventDefault()};this[o]=t,this.addEventListener(r,t,!1)}else this[o]=null},n.get=function(){return this[o]},Object.defineProperty(e,t,n)}function o(e,t){var n=[];for(var o in e)\"on\"==o.substr(0,2)&&n.push(o);for(var a=0;a<n.length;a++)r(e,n[a]);if(t)for(var i=0;i<t.length;i++)r(e,\"on\"+t[i])}function a(e,t,n,r,o){var a=e[k];if(a)for(var i=0;i<a.length;i++){var s=a[i],c=s.data;if(c.handler===t&&c.useCapturing===r&&c.eventName===n)return o&&a.splice(i,1),s}return null}function i(e,t){var n=e[k];n||(n=e[k]=[]),n.push(t)}function s(e){var t=e.data;return i(t.target,e),t.target[m](t.eventName,e.invoke,t.useCapturing)}function c(e){var t=e.data;a(t.target,e.invoke,t.eventName,t.useCapturing,!0),t.target[T](t.eventName,e.invoke,t.useCapturing)}function u(e,t){var n=t[0],r=t[1],o=t[2]||!1,i=e||v,u=null;if(\"function\"==typeof r?u=r:r&&r.handleEvent&&(u=function(e){return r.handleEvent(e)}),!u||r&&\"[object FunctionWrapper]\"===r.toString())return i[m](n,r,o);var l=a(i,r,n,o,!1);if(l)return i[m](n,l.invoke,o);var p=Zone.current,h=i.constructor.name+\".addEventListener:\"+n,f={target:i,eventName:n,name:n,useCapturing:o,handler:r};p.scheduleEventTask(h,u,f,s,c)}function l(e,t){var n=t[0],r=t[1],o=t[2]||!1,i=e||v,s=a(i,r,n,o,!0);s?s.zone.cancelTask(s):i[T](n,r,o)}function p(e){return e&&e.addEventListener?(d(e,y,function(){return u}),d(e,g,function(){return l}),!0):!1}function h(e){var n=v[e];if(n){v[e]=function(){var r=t(arguments,e);switch(r.length){case 0:this[b]=new n;break;case 1:this[b]=new n(r[0]);break;case 2:this[b]=new n(r[0],r[1]);break;case 3:this[b]=new n(r[0],r[1],r[2]);break;case 4:this[b]=new n(r[0],r[1],r[2],r[3]);break;default:throw new Error(\"Arg list too long.\")}};var r,o=new n(function(){});for(r in o)!function(t){\"function\"==typeof o[t]?v[e].prototype[t]=function(){return this[b][t].apply(this[b],arguments)}:Object.defineProperty(v[e].prototype,t,{set:function(n){\"function\"==typeof n?this[b][t]=Zone.current.wrap(n,e+\".\"+t):this[b][t]=n},get:function(){return this[b][t]}})}(r);for(r in n)\"prototype\"!==r&&n.hasOwnProperty(r)&&(v[e][r]=n[r])}}function f(e,t){try{return Function(\"f\",\"return function \"+e+\"(){return f(this, arguments)}\")(t)}catch(n){return function(){return t(this,arguments)}}}function d(e,t,n){for(var r=e;r&&!r.hasOwnProperty(t);)r=Object.getPrototypeOf(r);!r&&e[t]&&(r=e);var o,a=exports.zoneSymbol(t);return r&&!(o=r[a])&&(o=r[a]=r[t],r[t]=f(t,n(o,a,t))),o}exports.zoneSymbol=Zone.__symbol__;var v=\"undefined\"==typeof window?e:window;exports.bindArguments=t,exports.patchPrototype=n,exports.isWebWorker=\"undefined\"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,exports.isNode=\"undefined\"!=typeof process&&\"[object process]\"==={}.toString.call(process),exports.isBrowser=!exports.isNode&&!exports.isWebWorker&&!(!window||!window.HTMLElement),exports.patchProperty=r,exports.patchOnProperties=o;var k=exports.zoneSymbol(\"eventTasks\"),y=\"addEventListener\",g=\"removeEventListener\",m=exports.zoneSymbol(y),T=exports.zoneSymbol(g);exports.patchEventTargetMethods=p;var b=exports.zoneSymbol(\"originalInstance\");exports.patchClass=h,exports.createNamedFn=f,exports.patchMethod=d}).call(exports,function(){return this}())},function(e,exports,t){\"use strict\";function n(){Object.defineProperty=function(e,t,n){if(o(e,t))throw new TypeError(\"Cannot assign to read only property '\"+t+\"' of \"+e);return\"prototype\"!==t&&(n=a(e,t,n)),s(e,t,n)},Object.defineProperties=function(e,t){return Object.keys(t).forEach(function(n){Object.defineProperty(e,n,t[n])}),e},Object.create=function(e,t){return\"object\"==typeof t&&Object.keys(t).forEach(function(n){t[n]=a(e,n,t[n])}),u(e,t)},Object.getOwnPropertyDescriptor=function(e,t){var n=c(e,t);return o(e,t)&&(n.configurable=!1),n}}function r(e,t,n){return n=a(e,t,n),s(e,t,n)}function o(e,t){return e&&e[l]&&e[l][t]}function a(e,t,n){return n.configurable=!0,n.configurable||(e[l]||s(e,l,{writable:!0,value:{}}),e[l][t]=!0),n}var i=t(3),s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,u=Object.create,l=i.zoneSymbol(\"unconfigurables\");exports.propertyPatch=n,exports._redefineProperty=r},function(e,exports,t){\"use strict\";function n(e){if(o.isBrowser&&\"registerElement\"in e.document){var t=document.registerElement,n=[\"createdCallback\",\"attachedCallback\",\"detachedCallback\",\"attributeChangedCallback\"];document.registerElement=function(e,o){return o&&o.prototype&&n.forEach(function(e){var t=\"Document.registerElement::\"+e;if(o.prototype.hasOwnProperty(e)){var n=Object.getOwnPropertyDescriptor(o.prototype,e);n&&n.value?(n.value=Zone.current.wrap(n.value,t),r._redefineProperty(o.prototype,e,n)):o.prototype[e]=Zone.current.wrap(o.prototype[e],t)}else o.prototype[e]&&(o.prototype[e]=Zone.current.wrap(o.prototype[e],t))}),t.apply(document,[e,o])}}}var r=t(4),o=t(3);exports.registerElementPatch=n},function(e,exports,t){\"use strict\";function n(e){if(!i.isNode){var t=\"undefined\"!=typeof WebSocket;r()?(i.isBrowser&&i.patchOnProperties(HTMLElement.prototype,s),i.patchOnProperties(XMLHttpRequest.prototype,null),\"undefined\"!=typeof IDBIndex&&(i.patchOnProperties(IDBIndex.prototype,null),i.patchOnProperties(IDBRequest.prototype,null),i.patchOnProperties(IDBOpenDBRequest.prototype,null),i.patchOnProperties(IDBDatabase.prototype,null),i.patchOnProperties(IDBTransaction.prototype,null),i.patchOnProperties(IDBCursor.prototype,null)),t&&i.patchOnProperties(WebSocket.prototype,null)):(o(),i.patchClass(\"XMLHttpRequest\"),t&&a.apply(e))}}function r(){if(i.isBrowser&&!Object.getOwnPropertyDescriptor(HTMLElement.prototype,\"onclick\")&&\"undefined\"!=typeof Element){var e=Object.getOwnPropertyDescriptor(Element.prototype,\"onclick\");if(e&&!e.configurable)return!1}Object.defineProperty(XMLHttpRequest.prototype,\"onreadystatechange\",{get:function(){return!0}});var t=new XMLHttpRequest,n=!!t.onreadystatechange;return Object.defineProperty(XMLHttpRequest.prototype,\"onreadystatechange\",{}),n}function o(){for(var e=0;e<s.length;e++){var t=s[e],n=\"on\"+t;document.addEventListener(t,function(e){for(var t,r=e.target,o=r.constructor.name+\".\"+n;r;)r[n]&&!r[n][c]&&(t=Zone.current.wrap(r[n],o),t[c]=r[n],r[n]=t),r=r.parentElement},!0)}}var a=t(7),i=t(3),s=\"copy cut paste abort blur focus canplay canplaythrough change click contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop durationchange emptied ended input invalid keydown keypress keyup load loadeddata loadedmetadata loadstart message mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup pause play playing progress ratechange reset scroll seeked seeking select show stalled submit suspend timeupdate volumechange waiting mozfullscreenchange mozfullscreenerror mozpointerlockchange mozpointerlockerror error webglcontextrestored webglcontextlost webglcontextcreationerror\".split(\" \");exports.propertyDescriptorPatch=n;var c=i.zoneSymbol(\"unbound\")},function(e,exports,t){(function(e){\"use strict\";function n(t){var n=t.WebSocket;t.EventTarget||r.patchEventTargetMethods(n.prototype),t.WebSocket=function(e,t){var o,a=arguments.length>1?new n(e,t):new n(e),i=Object.getOwnPropertyDescriptor(a,\"onmessage\");return i&&i.configurable===!1?(o=Object.create(a),[\"addEventListener\",\"removeEventListener\",\"send\",\"close\"].forEach(function(e){o[e]=function(){return a[e].apply(a,arguments)}})):o=a,r.patchOnProperties(o,[\"close\",\"error\",\"message\",\"open\"]),o},e.WebSocket.prototype=Object.create(n.prototype,{constructor:{value:WebSocket}})}var r=t(3);exports.apply=n}).call(exports,function(){return this}())}]);","/*! *****************************************************************************\r\nCopyright (C) Microsoft. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use \r\nthis file except in compliance with the License. You may obtain a copy of the \r\nLicense at http://www.apache.org/licenses/LICENSE-2.0 \r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, \r\nMERCHANTABLITY OR NON-INFRINGEMENT. \r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\nnamespace Reflect {\r\n \"use strict\";\r\n\r\n interface Map<K, V> {\r\n clear(): void;\r\n delete(key:K): boolean;\r\n forEach(callbackfn:(value:V, index:K, map:Map<K, V>) => void, thisArg?:any): void;\r\n get(key:K): V;\r\n has(key:K): boolean;\r\n set(key:K, value?:V): Map<K, V>;\r\n size: number;\r\n }\r\n interface MapConstructor {\r\n new (): Map<any, any>;\r\n new <K, V>(): Map<K, V>;\r\n prototype: Map<any, any>;\r\n }\r\n\r\n interface WeakMap<K, V> {\r\n clear(): void;\r\n delete(key: K): boolean;\r\n get(key: K): V;\r\n has(key: K): boolean;\r\n set(key: K, value?: V): WeakMap<K, V>;\r\n }\r\n\r\n interface WeakMapConstructor {\r\n new (): WeakMap<any, any>;\r\n new <K, V>(): WeakMap<K, V>;\r\n prototype: WeakMap<any, any>;\r\n }\r\n\r\n interface Set<T> {\r\n add(value: T): Set<T>;\r\n clear(): void;\r\n delete(value: T): boolean;\r\n forEach(callbackfn: (value: T, index: T, set: Set<T>) => void, thisArg?: any): void;\r\n has(value: T): boolean;\r\n size: number;\r\n }\r\n\r\n interface SetConstructor {\r\n new (): Set<any>;\r\n new <T>(): Set<T>;\r\n prototype: Set<any>;\r\n }\r\n\r\n\r\n declare var Set: SetConstructor;\r\n declare var WeakMap: WeakMapConstructor;\r\n declare var Map:MapConstructor;\r\n declare var global: any;\r\n declare var WorkerGlobalScope: any;\r\n declare var module: any;\r\n declare var crypto: Crypto;\r\n declare var msCrypto: Crypto;\r\n declare var require: Function;\r\n\r\n // Load global or shim versions of Map, Set, and WeakMap\r\n const functionPrototype = Object.getPrototypeOf(Function);\r\n const _Map: typeof Map = typeof Map === \"function\" ? Map : CreateMapPolyfill();\r\n const _Set: typeof Set = typeof Set === \"function\" ? Set : CreateSetPolyfill();\r\n const _WeakMap: typeof WeakMap = typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\r\n \r\n // [[Metadata]] internal slot\r\n const __Metadata__ = new _WeakMap<Object, Map<string | symbol, Map<any, any>>>();\r\n\r\n /**\r\n * Applies a set of decorators to a target object.\r\n * @param decorators An array of decorators.\r\n * @param target The target object.\r\n * @returns The result of applying the provided decorators.\r\n * @remarks Decorators are applied in reverse order of their positions in the array.\r\n * @example\r\n *\r\n * class C { }\r\n *\r\n * // constructor\r\n * C = Reflect.decorate(decoratorsArray, C);\r\n *\r\n */\r\n export function decorate(decorators: ClassDecorator[], target: Function): Function;\r\n\r\n /**\r\n * Applies a set of decorators to a property of a target object.\r\n * @param decorators An array of decorators.\r\n * @param target The target object.\r\n * @param targetKey The property key to decorate.\r\n * @param descriptor A property descriptor \r\n * @remarks Decorators are applied in reverse order.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n * \r\n * static staticMethod() { }\r\n * method() { }\r\n * }\r\n *\r\n * // property (on constructor)\r\n * Reflect.decorate(decoratorsArray, C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * Reflect.decorate(decoratorsArray, C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * Object.defineProperty(C, \"staticMethod\", \r\n * Reflect.decorate(decoratorsArray, C, \"staticMethod\", \r\n * Object.getOwnPropertyDescriptor(C, \"staticMethod\")));\r\n *\r\n * // method (on prototype)\r\n * Object.defineProperty(C.prototype, \"method\", \r\n * Reflect.decorate(decoratorsArray, C.prototype, \"method\", \r\n * Object.getOwnPropertyDescriptor(C.prototype, \"method\")));\r\n *\r\n */\r\n export function decorate(decorators: (PropertyDecorator | MethodDecorator)[], target: Object, targetKey: string | symbol, descriptor?: PropertyDescriptor): PropertyDescriptor;\r\n\r\n /**\r\n * Applies a set of decorators to a property of a target object.\r\n * @param decorators An array of decorators.\r\n * @param target The target object.\r\n * @param targetKey (Optional) The property key to decorate.\r\n * @param targetDescriptor (Optional) The property descriptor for the target key\r\n * @remarks Decorators are applied in reverse order.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * C = Reflect.decorate(decoratorsArray, C);\r\n *\r\n * // property (on constructor)\r\n * Reflect.decorate(decoratorsArray, C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * Reflect.decorate(decoratorsArray, C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * Object.defineProperty(C, \"staticMethod\", \r\n * Reflect.decorate(decoratorsArray, C, \"staticMethod\", \r\n * Object.getOwnPropertyDescriptor(C, \"staticMethod\")));\r\n *\r\n * // method (on prototype)\r\n * Object.defineProperty(C.prototype, \"method\", \r\n * Reflect.decorate(decoratorsArray, C.prototype, \"method\", \r\n * Object.getOwnPropertyDescriptor(C.prototype, \"method\")));\r\n *\r\n */\r\n export function decorate(decorators: (ClassDecorator | MethodDecorator | PropertyDecorator)[], target: Object, targetKey?: string | symbol, targetDescriptor?: PropertyDescriptor): any {\r\n if (!IsUndefined(targetDescriptor)) {\r\n if (!IsArray(decorators)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (IsUndefined(targetKey)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsObject(targetDescriptor)) {\r\n throw new TypeError();\r\n }\r\n\r\n targetKey = ToPropertyKey(targetKey);\r\n return DecoratePropertyWithDescriptor(<MethodDecorator[]>decorators, target, targetKey, targetDescriptor);\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n if (!IsArray(decorators)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n\r\n targetKey = ToPropertyKey(targetKey);\r\n return DecoratePropertyWithoutDescriptor(<PropertyDecorator[]>decorators, target, targetKey);\r\n }\r\n else {\r\n if (!IsArray(decorators)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsConstructor(target)) {\r\n throw new TypeError();\r\n }\r\n\r\n return DecorateConstructor(<ClassDecorator[]>decorators, <Function>target);\r\n }\r\n }\r\n\r\n /**\r\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\r\n * @param metadataKey The key for the metadata entry.\r\n * @param metadataValue The value for the metadata entry.\r\n * @returns A decorator function.\r\n * @remarks \r\n * If `metadataKey` is already defined for the target and target key, the \r\n * metadataValue for that key will be overwritten.\r\n * @example\r\n *\r\n * // constructor\r\n * @Reflect.metadata(key, value)\r\n * class C {\r\n * }\r\n *\r\n * // property (on constructor, TypeScript only)\r\n * class C {\r\n * @Reflect.metadata(key, value)\r\n * static staticProperty;\r\n * }\r\n *\r\n * // property (on prototype, TypeScript only)\r\n * class C {\r\n * @Reflect.metadata(key, value)\r\n * property;\r\n * }\r\n *\r\n * // method (on constructor)\r\n * class C {\r\n * @Reflect.metadata(key, value)\r\n * static staticMethod() { }\r\n * }\r\n *\r\n * // method (on prototype)\r\n * class C {\r\n * @Reflect.metadata(key, value)\r\n * method() { }\r\n * }\r\n *\r\n */\r\n export function metadata(metadataKey: any, metadataValue: any) {\r\n function decorator(target: Function): void;\r\n function decorator(target: Object, targetKey: string | symbol): void;\r\n function decorator(target: Object, targetKey?: string | symbol): void {\r\n if (!IsUndefined(targetKey)) {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n\r\n targetKey = ToPropertyKey(targetKey);\r\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, targetKey);\r\n }\r\n else {\r\n if (!IsConstructor(target)) {\r\n throw new TypeError();\r\n }\r\n\r\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, /*targetKey*/ undefined);\r\n }\r\n }\r\n\r\n return decorator;\r\n }\r\n \r\n /**\r\n * Define a unique metadata entry on the target.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param metadataValue A value that contains attached metadata.\r\n * @param target The target object on which to define metadata.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * Reflect.defineMetadata(\"custom:annotation\", options, C);\r\n *\r\n * // decorator factory as metadata-producing annotation.\r\n * function MyAnnotation(options): ClassDecorator {\r\n * return target => Reflect.defineMetadata(\"custom:annotation\", options, target);\r\n * }\r\n *\r\n */\r\n export function defineMetadata(metadataKey: any, metadataValue: any, target: Object): void;\r\n\r\n /**\r\n * Define a unique metadata entry on the target.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param metadataValue A value that contains attached metadata.\r\n * @param target The target object on which to define metadata.\r\n * @param targetKey The property key for the target.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * Reflect.defineMetadata(\"custom:annotation\", Number, C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * Reflect.defineMetadata(\"custom:annotation\", Number, C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * Reflect.defineMetadata(\"custom:annotation\", Number, C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * Reflect.defineMetadata(\"custom:annotation\", Number, C.prototype, \"method\");\r\n *\r\n * // decorator factory as metadata-producing annotation.\r\n * function MyAnnotation(options): PropertyDecorator {\r\n * return (target, key) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\r\n * }\r\n *\r\n */\r\n export function defineMetadata(metadataKey: any, metadataValue: any, target: Object, targetKey: string | symbol): void;\r\n\r\n /**\r\n * Define a unique metadata entry on the target.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param metadataValue A value that contains attached metadata.\r\n * @param target The target object on which to define metadata.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * Reflect.defineMetadata(\"custom:annotation\", options, C);\r\n *\r\n * // property (on constructor)\r\n * Reflect.defineMetadata(\"custom:annotation\", options, C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * Reflect.defineMetadata(\"custom:annotation\", options, C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * Reflect.defineMetadata(\"custom:annotation\", options, C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * Reflect.defineMetadata(\"custom:annotation\", options, C.prototype, \"method\");\r\n *\r\n * // decorator factory as metadata-producing annotation.\r\n * function MyAnnotation(options): Decorator {\r\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\r\n * }\r\n *\r\n */\r\n export function defineMetadata(metadataKey: any, metadataValue: any, target: Object, targetKey?: string | symbol): void {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, targetKey);\r\n }\r\n \r\n /**\r\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C);\r\n *\r\n */\r\n export function hasMetadata(metadataKey: any, target: Object): boolean;\r\n\r\n /**\r\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function hasMetadata(metadataKey: any, target: Object, targetKey: string | symbol): boolean;\r\n\r\n /**\r\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.hasMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function hasMetadata(metadataKey: any, target: Object, targetKey?: string | symbol): boolean {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryHasMetadata(metadataKey, target, targetKey);\r\n }\r\n\r\n /**\r\n * Gets a value indicating whether the target object has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C);\r\n *\r\n */\r\n export function hasOwnMetadata(metadataKey: any, target: Object): boolean;\r\n\r\n /**\r\n * Gets a value indicating whether the target object has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function hasOwnMetadata(metadataKey: any, target: Object, targetKey: string | symbol): boolean;\r\n\r\n /**\r\n * Gets a value indicating whether the target object has the provided metadata key defined.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function hasOwnMetadata(metadataKey: any, target: Object, targetKey?: string | symbol): boolean {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryHasOwnMetadata(metadataKey, target, targetKey);\r\n }\r\n\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getMetadata(\"custom:annotation\", C);\r\n *\r\n */\r\n export function getMetadata(metadataKey: any, target: Object): any;\r\n\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function getMetadata(metadataKey: any, target: Object, targetKey: string | symbol): any;\r\n\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getMetadata(\"custom:annotation\", C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function getMetadata(metadataKey: any, target: Object, targetKey?: string | symbol): any {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryGetMetadata(metadataKey, target, targetKey);\r\n }\r\n\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C);\r\n *\r\n */\r\n export function getOwnMetadata(metadataKey: any, target: Object): any;\r\n\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function getOwnMetadata(metadataKey: any, target: Object, targetKey: string | symbol): any;\r\n\r\n /**\r\n * Gets the metadata value for the provided metadata key on the target object.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getOwnMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function getOwnMetadata(metadataKey: any, target: Object, targetKey?: string | symbol): any {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryGetOwnMetadata(metadataKey, target, targetKey);\r\n }\r\n\r\n /**\r\n * Gets the metadata keys defined on the target object or its prototype chain.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getMetadataKeys(C);\r\n *\r\n */\r\n export function getMetadataKeys(target: Object): any[];\r\n\r\n /**\r\n * Gets the metadata keys defined on the target object or its prototype chain.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getMetadataKeys(C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getMetadataKeys(C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getMetadataKeys(C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getMetadataKeys(C.prototype, \"method\");\r\n *\r\n */\r\n export function getMetadataKeys(target: Object, targetKey: string | symbol): any[];\r\n\r\n /**\r\n * Gets the metadata keys defined on the target object or its prototype chain.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getMetadataKeys(C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getMetadataKeys(C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getMetadataKeys(C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getMetadataKeys(C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getMetadataKeys(C.prototype, \"method\");\r\n *\r\n */\r\n export function getMetadataKeys(target: Object, targetKey?: string | symbol): any[] {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryMetadataKeys(target, targetKey);\r\n }\r\n\r\n /**\r\n * Gets the unique metadata keys defined on the target object.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getOwnMetadataKeys(C);\r\n *\r\n */\r\n export function getOwnMetadataKeys(target: Object): any[];\r\n\r\n /**\r\n * Gets the unique metadata keys defined on the target object.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getOwnMetadataKeys(C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getOwnMetadataKeys(C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getOwnMetadataKeys(C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getOwnMetadataKeys(C.prototype, \"method\");\r\n *\r\n */\r\n export function getOwnMetadataKeys(target: Object, targetKey: string | symbol): any[];\r\n\r\n /**\r\n * Gets the unique metadata keys defined on the target object.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns An array of unique metadata keys.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.getOwnMetadataKeys(C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.getOwnMetadataKeys(C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.getOwnMetadataKeys(C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.getOwnMetadataKeys(C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.getOwnMetadataKeys(C.prototype, \"method\");\r\n *\r\n */\r\n export function getOwnMetadataKeys(target: Object, targetKey?: string | symbol): any[] {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n return OrdinaryOwnMetadataKeys(target, targetKey);\r\n }\r\n\r\n /**\r\n * Deletes the metadata entry from the target object with the provided key.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\r\n * @example\r\n *\r\n * class C {\r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C);\r\n *\r\n */\r\n export function deleteMetadata(metadataKey: any, target: Object): boolean;\r\n\r\n /**\r\n * Deletes the metadata entry from the target object with the provided key.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey The property key for the target.\r\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function deleteMetadata(metadataKey: any, target: Object, targetKey: string | symbol): boolean;\r\n\r\n /**\r\n * Deletes the metadata entry from the target object with the provided key.\r\n * @param metadataKey A key used to store and retrieve metadata.\r\n * @param target The target object on which the metadata is defined.\r\n * @param targetKey (Optional) The property key for the target.\r\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\r\n * @example\r\n *\r\n * class C {\r\n * // property declarations are not part of ES6, though they are valid in TypeScript:\r\n * // static staticProperty; \r\n * // property;\r\n *\r\n * constructor(p) { }\r\n * static staticMethod(p) { }\r\n * method(p) { } \r\n * }\r\n *\r\n * // constructor\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C);\r\n *\r\n * // property (on constructor)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C, \"staticProperty\");\r\n *\r\n * // property (on prototype)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C.prototype, \"property\");\r\n *\r\n * // method (on constructor)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C, \"staticMethod\");\r\n *\r\n * // method (on prototype)\r\n * result = Reflect.deleteMetadata(\"custom:annotation\", C.prototype, \"method\");\r\n *\r\n */\r\n export function deleteMetadata(metadataKey: any, target: Object, targetKey?: string | symbol): boolean {\r\n if (!IsObject(target)) {\r\n throw new TypeError();\r\n }\r\n else if (!IsUndefined(targetKey)) {\r\n targetKey = ToPropertyKey(targetKey);\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#deletemetadata-metadatakey-p-\r\n let metadataMap = GetOrCreateMetadataMap(target, targetKey, /*create*/ false);\r\n if (IsUndefined(metadataMap)) {\r\n return false;\r\n }\r\n\r\n if (!metadataMap.delete(metadataKey)) {\r\n return false;\r\n }\r\n\r\n if (metadataMap.size > 0) {\r\n return true;\r\n }\r\n\r\n let targetMetadata = __Metadata__.get(target);\r\n targetMetadata.delete(targetKey);\r\n if (targetMetadata.size > 0) {\r\n return true;\r\n }\r\n\r\n __Metadata__.delete(target);\r\n return true;\r\n }\r\n\r\n function DecorateConstructor(decorators: ClassDecorator[], target: Function): Function {\r\n for (let i = decorators.length - 1; i >= 0; --i) {\r\n let decorator = decorators[i];\r\n let decorated = decorator(target);\r\n if (!IsUndefined(decorated)) {\r\n if (!IsConstructor(decorated)) {\r\n throw new TypeError();\r\n }\r\n target = <Function>decorated;\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n function DecoratePropertyWithDescriptor(decorators: MethodDecorator[], target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor {\r\n for (let i = decorators.length - 1; i >= 0; --i) {\r\n let decorator = decorators[i];\r\n let decorated = decorator(target, propertyKey, descriptor);\r\n if (!IsUndefined(decorated)) {\r\n if (!IsObject(decorated)) {\r\n throw new TypeError();\r\n }\r\n descriptor = <PropertyDescriptor>decorated;\r\n }\r\n }\r\n return descriptor;\r\n }\r\n\r\n function DecoratePropertyWithoutDescriptor(decorators: PropertyDecorator[], target: Object, propertyKey: string | symbol): void {\r\n for (let i = decorators.length - 1; i >= 0; --i) {\r\n let decorator = decorators[i];\r\n decorator(target, propertyKey);\r\n }\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#getorcreatemetadatamap--o-p-create-\r\n function GetOrCreateMetadataMap(target: Object, targetKey: string | symbol, create: boolean): Map<any, any> {\r\n let targetMetadata = __Metadata__.get(target);\r\n if (!targetMetadata) {\r\n if (!create) {\r\n return undefined;\r\n }\r\n targetMetadata = new _Map<string | symbol, Map<any, any>>();\r\n __Metadata__.set(target, targetMetadata);\r\n }\r\n\r\n let keyMetadata = targetMetadata.get(targetKey);\r\n if (!keyMetadata) {\r\n if (!create) {\r\n return undefined;\r\n }\r\n keyMetadata = new _Map<any, any>();\r\n targetMetadata.set(targetKey, keyMetadata);\r\n }\r\n\r\n return keyMetadata;\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinaryhasmetadata--metadatakey-o-p-\r\n function OrdinaryHasMetadata(MetadataKey: any, O: Object, P: string | symbol): boolean {\r\n let hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\r\n if (hasOwn) {\r\n return true;\r\n }\r\n\r\n let parent = GetPrototypeOf(O);\r\n if (parent !== null) {\r\n return OrdinaryHasMetadata(MetadataKey, parent, P);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinaryhasownmetadata--metadatakey-o-p-\r\n function OrdinaryHasOwnMetadata(MetadataKey: any, O: Object, P: string | symbol): boolean {\r\n let metadataMap = GetOrCreateMetadataMap(O, P, /*create*/ false);\r\n if (metadataMap === undefined) {\r\n return false;\r\n }\r\n\r\n return Boolean(metadataMap.has(MetadataKey));\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinarygetmetadata--metadatakey-o-p-\r\n function OrdinaryGetMetadata(MetadataKey: any, O: Object, P: string | symbol): any {\r\n let hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\r\n if (hasOwn) {\r\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\r\n }\r\n\r\n let parent = GetPrototypeOf(O);\r\n if (parent !== null) {\r\n return OrdinaryGetMetadata(MetadataKey, parent, P);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinarygetownmetadata--metadatakey-o-p-\r\n function OrdinaryGetOwnMetadata(MetadataKey: any, O: Object, P: string | symbol): any {\r\n let metadataMap = GetOrCreateMetadataMap(O, P, /*create*/ false);\r\n if (metadataMap === undefined) {\r\n return undefined;\r\n }\r\n\r\n return metadataMap.get(MetadataKey);\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinarydefineownmetadata--metadatakey-metadatavalue-o-p-\r\n function OrdinaryDefineOwnMetadata(MetadataKey: any, MetadataValue: any, O: Object, P: string | symbol): void {\r\n let metadataMap = GetOrCreateMetadataMap(O, P, /*create*/ true);\r\n metadataMap.set(MetadataKey, MetadataValue);\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinarymetadatakeys--o-p-\r\n function OrdinaryMetadataKeys(O: Object, P: string | symbol): any[] {\r\n let ownKeys = OrdinaryOwnMetadataKeys(O, P);\r\n let parent = GetPrototypeOf(O);\r\n if (parent === null) {\r\n return ownKeys;\r\n }\r\n\r\n let parentKeys = OrdinaryMetadataKeys(parent, P);\r\n if (parentKeys.length <= 0) {\r\n return ownKeys;\r\n }\r\n if (ownKeys.length <= 0) {\r\n return parentKeys;\r\n }\r\n\r\n let set = new _Set<any>();\r\n let keys: any[] = [];\r\n\r\n for (let key of ownKeys) {\r\n let hasKey = set.has(key);\r\n if (!hasKey) {\r\n set.add(key);\r\n keys.push(key);\r\n }\r\n }\r\n\r\n for (let key of parentKeys) {\r\n let hasKey = set.has(key);\r\n if (!hasKey) {\r\n set.add(key);\r\n keys.push(key);\r\n }\r\n }\r\n\r\n return keys;\r\n }\r\n\r\n // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinaryownmetadatakeys--o-p-\r\n function OrdinaryOwnMetadataKeys(target: Object, targetKey: string | symbol): any[] {\r\n let metadataMap = GetOrCreateMetadataMap(target, targetKey, /*create*/ false);\r\n let keys: any[] = [];\r\n if (metadataMap) {\r\n metadataMap.forEach((_, key) => keys.push(key));\r\n }\r\n\r\n return keys;\r\n }\r\n\r\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-language-types-undefined-type\r\n function IsUndefined(x: any): boolean {\r\n return x === undefined;\r\n }\r\n\r\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isarray\r\n function IsArray(x: any): boolean {\r\n return Array.isArray(x);\r\n }\r\n\r\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object-type\r\n function IsObject(x: any): boolean {\r\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\r\n }\r\n\r\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isconstructor\r\n function IsConstructor(x: any): boolean {\r\n return typeof x === \"function\";\r\n }\r\n\r\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-language-types-symbol-type\r\n function IsSymbol(x: any): boolean {\r\n return typeof x === \"symbol\";\r\n }\r\n\r\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-topropertykey\r\n function ToPropertyKey(value: any): string | symbol {\r\n if (IsSymbol(value)) {\r\n return <symbol>value;\r\n }\r\n return String(value);\r\n }\r\n\r\n function GetPrototypeOf(O: any): Object {\r\n let proto = Object.getPrototypeOf(O);\r\n if (typeof O !== \"function\" || O === functionPrototype) {\r\n return proto;\r\n }\r\n\r\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard. \r\n // Try to determine the superclass constructor. Compatible implementations\r\n // must either set __proto__ on a subclass constructor to the superclass constructor,\r\n // or ensure each class has a valid `constructor` property on its prototype that\r\n // points back to the constructor.\r\n\r\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\r\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\r\n if (proto !== functionPrototype) {\r\n return proto;\r\n }\r\n\r\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\r\n let prototype = O.prototype;\r\n let prototypeProto = Object.getPrototypeOf(prototype);\r\n if (prototypeProto == null || prototypeProto === Object.prototype) {\r\n return proto;\r\n }\r\n\r\n // if the constructor was not a function, then we cannot determine the heritage.\r\n let constructor = prototypeProto.constructor;\r\n if (typeof constructor !== \"function\") {\r\n return proto;\r\n }\r\n\r\n // if we have some kind of self-reference, then we cannot determine the heritage.\r\n if (constructor === O) {\r\n return proto;\r\n }\r\n\r\n // we have a pretty good guess at the heritage.\r\n return constructor;\r\n }\r\n\r\n // naive Map shim\r\n function CreateMapPolyfill() {\r\n const cacheSentinel = {};\r\n function Map() {\r\n this._keys = [];\r\n this._values = [];\r\n this._cache = cacheSentinel;\r\n }\r\n Map.prototype = {\r\n get size() {\r\n return this._keys.length;\r\n },\r\n has(key: any): boolean {\r\n if (key === this._cache) {\r\n return true;\r\n }\r\n if (this._find(key) >= 0) {\r\n this._cache = key;\r\n return true;\r\n }\r\n return false;\r\n },\r\n get(key: any): any {\r\n let index = this._find(key);\r\n if (index >= 0) {\r\n this._cache = key;\r\n return this._values[index];\r\n }\r\n return undefined;\r\n },\r\n set(key: any, value: any): Map<any, any> {\r\n this.delete(key);\r\n this._keys.push(key);\r\n this._values.push(value);\r\n this._cache = key;\r\n return this;\r\n },\r\n delete(key: any): boolean {\r\n let index = this._find(key);\r\n if (index >= 0) {\r\n this._keys.splice(index, 1);\r\n this._values.splice(index, 1);\r\n this._cache = cacheSentinel;\r\n return true;\r\n }\r\n return false;\r\n },\r\n clear(): void {\r\n this._keys.length = 0;\r\n this._values.length = 0;\r\n this._cache = cacheSentinel;\r\n },\r\n forEach(callback: (value: any, key: any, map: Map<any, any>) => void, thisArg?: any): void {\r\n let size = this.size;\r\n for (let i = 0; i < size; ++i) {\r\n let key = this._keys[i];\r\n let value = this._values[i];\r\n this._cache = key;\r\n callback.call(this, value, key, this);\r\n }\r\n },\r\n _find(key: any): number {\r\n const keys = this._keys;\r\n const size = keys.length;\r\n for (let i = 0; i < size; ++i) {\r\n if (keys[i] === key) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n };\r\n return <any>Map;\r\n }\r\n\r\n // naive Set shim\r\n function CreateSetPolyfill() {\r\n const cacheSentinel = {};\r\n function Set() {\r\n this._map = new _Map<any, any>();\r\n }\r\n Set.prototype = {\r\n get size() {\r\n return this._map.length;\r\n },\r\n has(value: any): boolean {\r\n return this._map.has(value);\r\n },\r\n add(value: any): Set<any> {\r\n this._map.set(value, value);\r\n return this;\r\n },\r\n delete(value: any): boolean {\r\n return this._map.delete(value);\r\n },\r\n clear(): void {\r\n this._map.clear();\r\n },\r\n forEach(callback: (value: any, key: any, set: Set<any>) => void, thisArg?: any): void {\r\n this._map.forEach(callback, thisArg);\r\n }\r\n };\r\n return <any>Set;\r\n }\r\n\r\n // naive WeakMap shim\r\n function CreateWeakMapPolyfill() {\r\n const UUID_SIZE = 16;\r\n const isNode = typeof global !== \"undefined\" && Object.prototype.toString.call(global.process) === '[object process]';\r\n const nodeCrypto = isNode && require(\"crypto\");\r\n const hasOwn = Object.prototype.hasOwnProperty;\r\n const keys: { [key: string]: boolean; } = {};\r\n const rootKey = CreateUniqueKey();\r\n\r\n function WeakMap() {\r\n this._key = CreateUniqueKey();\r\n }\r\n WeakMap.prototype = {\r\n has(target: Object): boolean {\r\n let table = GetOrCreateWeakMapTable(target, /*create*/ false);\r\n if (table) {\r\n return this._key in table;\r\n }\r\n return false;\r\n },\r\n get(target: Object): any {\r\n let table = GetOrCreateWeakMapTable(target, /*create*/ false);\r\n if (table) {\r\n return table[this._key];\r\n }\r\n return undefined;\r\n },\r\n set(target: Object, value: any): WeakMap<any, any> {\r\n let table = GetOrCreateWeakMapTable(target, /*create*/ true);\r\n table[this._key] = value;\r\n return this;\r\n },\r\n delete(target: Object): boolean {\r\n let table = GetOrCreateWeakMapTable(target, /*create*/ false);\r\n if (table && this._key in table) {\r\n return delete table[this._key];\r\n }\r\n return false;\r\n },\r\n clear(): void {\r\n // NOTE: not a real clear, just makes the previous data unreachable\r\n this._key = CreateUniqueKey();\r\n }\r\n }\r\n\r\n function FillRandomBytes(buffer: BufferLike, size: number): void {\r\n for (var i = 0; i < size; ++i) {\r\n buffer[i] = Math.random() * 255 | 0;\r\n }\r\n }\r\n\r\n function GenRandomBytes(size: number): BufferLike {\r\n if (nodeCrypto) {\r\n let data = nodeCrypto.randomBytes(size);\r\n return data;\r\n }\r\n else if (typeof Uint8Array === \"function\") {\r\n let data = new Uint8Array(size);\r\n if (typeof crypto !== \"undefined\") {\r\n crypto.getRandomValues(<Uint8Array>data);\r\n }\r\n else if (typeof msCrypto !== \"undefined\") {\r\n msCrypto.getRandomValues(<Uint8Array>data);\r\n }\r\n else {\r\n FillRandomBytes(data, size);\r\n }\r\n return data;\r\n }\r\n else {\r\n let data = new Array(size);\r\n FillRandomBytes(data, size);\r\n return data;\r\n }\r\n }\r\n\r\n function CreateUUID() {\r\n let data = GenRandomBytes(UUID_SIZE);\r\n\r\n // mark as random - RFC 4122 § 4.4\r\n data[6] = data[6] & 0x4f | 0x40;\r\n data[8] = data[8] & 0xbf | 0x80;\r\n\r\n let result = \"\";\r\n for (let offset = 0; offset < UUID_SIZE; ++offset) {\r\n let byte = data[offset];\r\n if (offset === 4 || offset === 6 || offset === 8) {\r\n result += \"-\";\r\n }\r\n if (byte < 16) {\r\n result += \"0\";\r\n }\r\n result += byte.toString(16).toLowerCase();\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function CreateUniqueKey(): string {\r\n let key: string;\r\n do {\r\n key = \"@@WeakMap@@\" + CreateUUID();\r\n }\r\n while (hasOwn.call(keys, key));\r\n keys[key] = true;\r\n return key;\r\n }\r\n\r\n function GetOrCreateWeakMapTable(target: Object, create: boolean): { [key: string]: any; } {\r\n if (!hasOwn.call(target, rootKey)) {\r\n if (!create) {\r\n return undefined;\r\n }\r\n Object.defineProperty(target, rootKey, { value: Object.create(null) });\r\n }\r\n return (<any>target)[rootKey];\r\n }\r\n\r\n return <any>WeakMap;\r\n }\r\n\r\n interface BufferLike {\r\n [offset: number]: number;\r\n length: number;\r\n }\r\n\r\n\r\n // hook global Reflect\r\n (function(__global: any) {\r\n if (typeof __global.Reflect !== \"undefined\") {\r\n if (__global.Reflect !== Reflect) {\r\n for (var p in Reflect) {\r\n __global.Reflect[p] = (<any>Reflect)[p];\r\n }\r\n }\r\n }\r\n else {\r\n __global.Reflect = Reflect;\r\n }\r\n })(\r\n typeof window !== \"undefined\" ? window :\r\n typeof WorkerGlobalScope !== \"undefined\" ? self :\r\n typeof global !== \"undefined\" ? global :\r\n Function(\"return this;\")());\r\n}","!function e(t,n,r){function s(i,u){if(!n[i]){if(!t[i]){var c=\"function\"==typeof require&&require;if(!u&&c)return c(i,!0);if(o)return o(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var f=n[i]={exports:{}};t[i][0].call(f.exports,function(n){var e=t[i][1][n];return s(e?e:n)},f,f.exports,e,t,n,r)}return n[i].exports}for(var o=\"function\"==typeof require&&require,i=0;i<r.length;i++)s(r[i]);return s}({1:[function(t,n,e){(function(n){\"use strict\";if(t(189),t(2),n._babelPolyfill)throw new Error(\"only one instance of babel-polyfill is allowed\");n._babelPolyfill=!0}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{189:189,2:2}],2:[function(t,n,e){n.exports=t(190)},{190:190}],3:[function(t,n,e){n.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},{}],4:[function(t,n,e){var r=t(84)(\"unscopables\"),o=Array.prototype;void 0==o[r]&&t(32)(o,r,{}),n.exports=function(t){o[r][t]=!0}},{32:32,84:84}],5:[function(t,n,e){var r=t(39);n.exports=function(t){if(!r(t))throw TypeError(t+\" is not an object!\");return t}},{39:39}],6:[function(t,n,e){\"use strict\";var r=t(81),o=t(77),i=t(80);n.exports=[].copyWithin||function copyWithin(t,n){var e=r(this),u=i(e.length),c=o(t,u),a=o(n,u),s=arguments,f=s.length>2?s[2]:void 0,l=Math.min((void 0===f?u:o(f,u))-a,u-c),h=1;for(c>a&&a+l>c&&(h=-1,a+=l-1,c+=l-1);l-- >0;)a in e?e[c]=e[a]:delete e[c],c+=h,a+=h;return e}},{77:77,80:80,81:81}],7:[function(t,n,e){\"use strict\";var r=t(81),o=t(77),i=t(80);n.exports=[].fill||function fill(t){for(var n=r(this),e=i(n.length),u=arguments,c=u.length,a=o(c>1?u[1]:void 0,e),s=c>2?u[2]:void 0,f=void 0===s?e:o(s,e);f>a;)n[a++]=t;return n}},{77:77,80:80,81:81}],8:[function(t,n,e){var r=t(79),o=t(80),i=t(77);n.exports=function(t){return function(n,e,u){var c,a=r(n),s=o(a.length),f=i(u,s);if(t&&e!=e){for(;s>f;)if(c=a[f++],c!=c)return!0}else for(;s>f;f++)if((t||f in a)&&a[f]===e)return t||f;return!t&&-1}}},{77:77,79:79,80:80}],9:[function(t,n,e){var r=t(18),o=t(35),i=t(81),u=t(80),c=t(10);n.exports=function(t){var n=1==t,e=2==t,a=3==t,s=4==t,f=6==t,l=5==t||f;return function(h,p,v){for(var g,y,d=i(h),m=o(d),x=r(p,v,3),S=u(m.length),w=0,b=n?c(h,S):e?c(h,0):void 0;S>w;w++)if((l||w in m)&&(g=m[w],y=x(g,w,d),t))if(n)b[w]=y;else if(y)switch(t){case 3:return!0;case 5:return g;case 6:return w;case 2:b.push(g)}else if(s)return!1;return f?-1:a||s?s:b}}},{10:10,18:18,35:35,80:80,81:81}],10:[function(t,n,e){var r=t(39),o=t(37),i=t(84)(\"species\");n.exports=function(t,n){var e;return o(t)&&(e=t.constructor,\"function\"!=typeof e||e!==Array&&!o(e.prototype)||(e=void 0),r(e)&&(e=e[i],null===e&&(e=void 0))),new(void 0===e?Array:e)(n)}},{37:37,39:39,84:84}],11:[function(t,n,e){var r=t(12),o=t(84)(\"toStringTag\"),i=\"Arguments\"==r(function(){return arguments}());n.exports=function(t){var n,e,u;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(e=(n=Object(t))[o])?e:i?r(n):\"Object\"==(u=r(n))&&\"function\"==typeof n.callee?\"Arguments\":u}},{12:12,84:84}],12:[function(t,n,e){var r={}.toString;n.exports=function(t){return r.call(t).slice(8,-1)}},{}],13:[function(t,n,e){\"use strict\";var r=t(47),o=t(32),i=t(61),u=t(18),c=t(70),a=t(19),s=t(28),f=t(43),l=t(45),h=t(83)(\"id\"),p=t(31),v=t(39),g=t(66),y=t(20),d=Object.isExtensible||v,m=y?\"_s\":\"size\",x=0,S=function(t,n){if(!v(t))return\"symbol\"==typeof t?t:(\"string\"==typeof t?\"S\":\"P\")+t;if(!p(t,h)){if(!d(t))return\"F\";if(!n)return\"E\";o(t,h,++x)}return\"O\"+t[h]},w=function(t,n){var e,r=S(n);if(\"F\"!==r)return t._i[r];for(e=t._f;e;e=e.n)if(e.k==n)return e};n.exports={getConstructor:function(t,n,e,o){var f=t(function(t,i){c(t,f,n),t._i=r.create(null),t._f=void 0,t._l=void 0,t[m]=0,void 0!=i&&s(i,e,t[o],t)});return i(f.prototype,{clear:function clear(){for(var t=this,n=t._i,e=t._f;e;e=e.n)e.r=!0,e.p&&(e.p=e.p.n=void 0),delete n[e.i];t._f=t._l=void 0,t[m]=0},\"delete\":function(t){var n=this,e=w(n,t);if(e){var r=e.n,o=e.p;delete n._i[e.i],e.r=!0,o&&(o.n=r),r&&(r.p=o),n._f==e&&(n._f=r),n._l==e&&(n._l=o),n[m]--}return!!e},forEach:function forEach(t){for(var n,e=u(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(e(n.v,n.k,this);n&&n.r;)n=n.p},has:function has(t){return!!w(this,t)}}),y&&r.setDesc(f.prototype,\"size\",{get:function(){return a(this[m])}}),f},def:function(t,n,e){var r,o,i=w(t,n);return i?i.v=e:(t._l=i={i:o=S(n,!0),k:n,v:e,p:r=t._l,n:void 0,r:!1},t._f||(t._f=i),r&&(r.n=i),t[m]++,\"F\"!==o&&(t._i[o]=i)),t},getEntry:w,setStrong:function(t,n,e){f(t,n,function(t,n){this._t=t,this._k=n,this._l=void 0},function(){for(var t=this,n=t._k,e=t._l;e&&e.r;)e=e.p;return t._t&&(t._l=e=e?e.n:t._t._f)?\"keys\"==n?l(0,e.k):\"values\"==n?l(0,e.v):l(0,[e.k,e.v]):(t._t=void 0,l(1))},e?\"entries\":\"values\",!e,!0),g(n)}}},{18:18,19:19,20:20,28:28,31:31,32:32,39:39,43:43,45:45,47:47,61:61,66:66,70:70,83:83}],14:[function(t,n,e){var r=t(28),o=t(11);n.exports=function(t){return function toJSON(){if(o(this)!=t)throw TypeError(t+\"#toJSON isn't generic\");var n=[];return r(this,!1,n.push,n),n}}},{11:11,28:28}],15:[function(t,n,e){\"use strict\";var r=t(32),o=t(61),i=t(5),u=t(39),c=t(70),a=t(28),s=t(9),f=t(31),l=t(83)(\"weak\"),h=Object.isExtensible||u,p=s(5),v=s(6),g=0,y=function(t){return t._l||(t._l=new d)},d=function(){this.a=[]},m=function(t,n){return p(t.a,function(t){return t[0]===n})};d.prototype={get:function(t){var n=m(this,t);return n?n[1]:void 0},has:function(t){return!!m(this,t)},set:function(t,n){var e=m(this,t);e?e[1]=n:this.a.push([t,n])},\"delete\":function(t){var n=v(this.a,function(n){return n[0]===t});return~n&&this.a.splice(n,1),!!~n}},n.exports={getConstructor:function(t,n,e,r){var i=t(function(t,o){c(t,i,n),t._i=g++,t._l=void 0,void 0!=o&&a(o,e,t[r],t)});return o(i.prototype,{\"delete\":function(t){return u(t)?h(t)?f(t,l)&&f(t[l],this._i)&&delete t[l][this._i]:y(this)[\"delete\"](t):!1},has:function has(t){return u(t)?h(t)?f(t,l)&&f(t[l],this._i):y(this).has(t):!1}}),i},def:function(t,n,e){return h(i(n))?(f(n,l)||r(n,l,{}),n[l][t._i]=e):y(t).set(n,e),t},frozenStore:y,WEAK:l}},{28:28,31:31,32:32,39:39,5:5,61:61,70:70,83:83,9:9}],16:[function(t,n,e){\"use strict\";var r=t(30),o=t(23),i=t(62),u=t(61),c=t(28),a=t(70),s=t(39),f=t(25),l=t(44),h=t(67);n.exports=function(t,n,e,p,v,g){var y=r[t],d=y,m=v?\"set\":\"add\",x=d&&d.prototype,S={},w=function(t){var n=x[t];i(x,t,\"delete\"==t?function(t){return g&&!s(t)?!1:n.call(this,0===t?0:t)}:\"has\"==t?function has(t){return g&&!s(t)?!1:n.call(this,0===t?0:t)}:\"get\"==t?function get(t){return g&&!s(t)?void 0:n.call(this,0===t?0:t)}:\"add\"==t?function add(t){return n.call(this,0===t?0:t),this}:function set(t,e){return n.call(this,0===t?0:t,e),this})};if(\"function\"==typeof d&&(g||x.forEach&&!f(function(){(new d).entries().next()}))){var b,E=new d,O=E[m](g?{}:-0,1)!=E,P=f(function(){E.has(1)}),_=l(function(t){new d(t)});_||(d=n(function(n,e){a(n,d,t);var r=new y;return void 0!=e&&c(e,v,r[m],r),r}),d.prototype=x,x.constructor=d),g||E.forEach(function(t,n){b=1/n===-(1/0)}),(P||b)&&(w(\"delete\"),w(\"has\"),v&&w(\"get\")),(b||O)&&w(m),g&&x.clear&&delete x.clear}else d=p.getConstructor(n,t,v,m),u(d.prototype,e);return h(d,t),S[t]=d,o(o.G+o.W+o.F*(d!=y),S),g||p.setStrong(d,t,v),d}},{23:23,25:25,28:28,30:30,39:39,44:44,61:61,62:62,67:67,70:70}],17:[function(t,n,e){var r=n.exports={version:\"1.2.6\"};\"number\"==typeof __e&&(__e=r)},{}],18:[function(t,n,e){var r=t(3);n.exports=function(t,n,e){if(r(t),void 0===n)return t;switch(e){case 1:return function(e){return t.call(n,e)};case 2:return function(e,r){return t.call(n,e,r)};case 3:return function(e,r,o){return t.call(n,e,r,o)}}return function(){return t.apply(n,arguments)}}},{3:3}],19:[function(t,n,e){n.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},{}],20:[function(t,n,e){n.exports=!t(25)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},{25:25}],21:[function(t,n,e){var r=t(39),o=t(30).document,i=r(o)&&r(o.createElement);n.exports=function(t){return i?o.createElement(t):{}}},{30:30,39:39}],22:[function(t,n,e){var r=t(47);n.exports=function(t){var n=r.getKeys(t),e=r.getSymbols;if(e)for(var o,i=e(t),u=r.isEnum,c=0;i.length>c;)u.call(t,o=i[c++])&&n.push(o);return n}},{47:47}],23:[function(t,n,e){var r=t(30),o=t(17),i=t(32),u=t(62),c=t(18),a=\"prototype\",s=function(t,n,e){var f,l,h,p,v=t&s.F,g=t&s.G,y=t&s.S,d=t&s.P,m=t&s.B,x=g?r:y?r[n]||(r[n]={}):(r[n]||{})[a],S=g?o:o[n]||(o[n]={}),w=S[a]||(S[a]={});g&&(e=n);for(f in e)l=!v&&x&&f in x,h=(l?x:e)[f],p=m&&l?c(h,r):d&&\"function\"==typeof h?c(Function.call,h):h,x&&!l&&u(x,f,h),S[f]!=h&&i(S,f,p),d&&w[f]!=h&&(w[f]=h)};r.core=o,s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,n.exports=s},{17:17,18:18,30:30,32:32,62:62}],24:[function(t,n,e){var r=t(84)(\"match\");n.exports=function(t){var n=/./;try{\"/./\"[t](n)}catch(e){try{return n[r]=!1,!\"/./\"[t](n)}catch(o){}}return!0}},{84:84}],25:[function(t,n,e){n.exports=function(t){try{return!!t()}catch(n){return!0}}},{}],26:[function(t,n,e){\"use strict\";var r=t(32),o=t(62),i=t(25),u=t(19),c=t(84);n.exports=function(t,n,e){var a=c(t),s=\"\"[t];i(function(){var n={};return n[a]=function(){return 7},7!=\"\"[t](n)})&&(o(String.prototype,t,e(u,a,s)),r(RegExp.prototype,a,2==n?function(t,n){return s.call(t,this,n)}:function(t){return s.call(t,this)}))}},{19:19,25:25,32:32,62:62,84:84}],27:[function(t,n,e){\"use strict\";var r=t(5);n.exports=function(){var t=r(this),n=\"\";return t.global&&(n+=\"g\"),t.ignoreCase&&(n+=\"i\"),t.multiline&&(n+=\"m\"),t.unicode&&(n+=\"u\"),t.sticky&&(n+=\"y\"),n}},{5:5}],28:[function(t,n,e){var r=t(18),o=t(41),i=t(36),u=t(5),c=t(80),a=t(85);n.exports=function(t,n,e,s){var f,l,h,p=a(t),v=r(e,s,n?2:1),g=0;if(\"function\"!=typeof p)throw TypeError(t+\" is not iterable!\");if(i(p))for(f=c(t.length);f>g;g++)n?v(u(l=t[g])[0],l[1]):v(t[g]);else for(h=p.call(t);!(l=h.next()).done;)o(h,v,l.value,n)}},{18:18,36:36,41:41,5:5,80:80,85:85}],29:[function(t,n,e){var r=t(79),o=t(47).getNames,i={}.toString,u=\"object\"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return o(t)}catch(n){return u.slice()}};n.exports.get=function getOwnPropertyNames(t){return u&&\"[object Window]\"==i.call(t)?c(t):o(r(t))}},{47:47,79:79}],30:[function(t,n,e){var r=n.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=r)},{}],31:[function(t,n,e){var r={}.hasOwnProperty;n.exports=function(t,n){return r.call(t,n)}},{}],32:[function(t,n,e){var r=t(47),o=t(60);n.exports=t(20)?function(t,n,e){return r.setDesc(t,n,o(1,e))}:function(t,n,e){return t[n]=e,t}},{20:20,47:47,60:60}],33:[function(t,n,e){n.exports=t(30).document&&document.documentElement},{30:30}],34:[function(t,n,e){n.exports=function(t,n,e){var r=void 0===e;switch(n.length){case 0:return r?t():t.call(e);case 1:return r?t(n[0]):t.call(e,n[0]);case 2:return r?t(n[0],n[1]):t.call(e,n[0],n[1]);case 3:return r?t(n[0],n[1],n[2]):t.call(e,n[0],n[1],n[2]);case 4:return r?t(n[0],n[1],n[2],n[3]):t.call(e,n[0],n[1],n[2],n[3])}return t.apply(e,n)}},{}],35:[function(t,n,e){var r=t(12);n.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==r(t)?t.split(\"\"):Object(t)}},{12:12}],36:[function(t,n,e){var r=t(46),o=t(84)(\"iterator\"),i=Array.prototype;n.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},{46:46,84:84}],37:[function(t,n,e){var r=t(12);n.exports=Array.isArray||function(t){return\"Array\"==r(t)}},{12:12}],38:[function(t,n,e){var r=t(39),o=Math.floor;n.exports=function isInteger(t){return!r(t)&&isFinite(t)&&o(t)===t}},{39:39}],39:[function(t,n,e){n.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},{}],40:[function(t,n,e){var r=t(39),o=t(12),i=t(84)(\"match\");n.exports=function(t){var n;return r(t)&&(void 0!==(n=t[i])?!!n:\"RegExp\"==o(t))}},{12:12,39:39,84:84}],41:[function(t,n,e){var r=t(5);n.exports=function(t,n,e,o){try{return o?n(r(e)[0],e[1]):n(e)}catch(i){var u=t[\"return\"];throw void 0!==u&&r(u.call(t)),i}}},{5:5}],42:[function(t,n,e){\"use strict\";var r=t(47),o=t(60),i=t(67),u={};t(32)(u,t(84)(\"iterator\"),function(){return this}),n.exports=function(t,n,e){t.prototype=r.create(u,{next:o(1,e)}),i(t,n+\" Iterator\")}},{32:32,47:47,60:60,67:67,84:84}],43:[function(t,n,e){\"use strict\";var r=t(49),o=t(23),i=t(62),u=t(32),c=t(31),a=t(46),s=t(42),f=t(67),l=t(47).getProto,h=t(84)(\"iterator\"),p=!([].keys&&\"next\"in[].keys()),v=\"@@iterator\",g=\"keys\",y=\"values\",d=function(){return this};n.exports=function(t,n,e,m,x,S,w){s(e,n,m);var b,E,O=function(t){if(!p&&t in F)return F[t];switch(t){case g:return function keys(){return new e(this,t)};case y:return function values(){return new e(this,t)}}return function entries(){return new e(this,t)}},P=n+\" Iterator\",_=x==y,M=!1,F=t.prototype,A=F[h]||F[v]||x&&F[x],j=A||O(x);if(A){var N=l(j.call(new t));f(N,P,!0),!r&&c(F,v)&&u(N,h,d),_&&A.name!==y&&(M=!0,j=function values(){return A.call(this)})}if(r&&!w||!p&&!M&&F[h]||u(F,h,j),a[n]=j,a[P]=d,x)if(b={values:_?j:O(y),keys:S?j:O(g),entries:_?O(\"entries\"):j},w)for(E in b)E in F||i(F,E,b[E]);else o(o.P+o.F*(p||M),n,b);return b}},{23:23,31:31,32:32,42:42,46:46,47:47,49:49,62:62,67:67,84:84}],44:[function(t,n,e){var r=t(84)(\"iterator\"),o=!1;try{var i=[7][r]();i[\"return\"]=function(){o=!0},Array.from(i,function(){throw 2})}catch(u){}n.exports=function(t,n){if(!n&&!o)return!1;var e=!1;try{var i=[7],u=i[r]();u.next=function(){e=!0},i[r]=function(){return u},t(i)}catch(c){}return e}},{84:84}],45:[function(t,n,e){n.exports=function(t,n){return{value:n,done:!!t}}},{}],46:[function(t,n,e){n.exports={}},{}],47:[function(t,n,e){var r=Object;n.exports={create:r.create,getProto:r.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:r.getOwnPropertyDescriptor,setDesc:r.defineProperty,setDescs:r.defineProperties,getKeys:r.keys,getNames:r.getOwnPropertyNames,getSymbols:r.getOwnPropertySymbols,each:[].forEach}},{}],48:[function(t,n,e){var r=t(47),o=t(79);n.exports=function(t,n){for(var e,i=o(t),u=r.getKeys(i),c=u.length,a=0;c>a;)if(i[e=u[a++]]===n)return e}},{47:47,79:79}],49:[function(t,n,e){n.exports=!1},{}],50:[function(t,n,e){n.exports=Math.expm1||function expm1(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}},{}],51:[function(t,n,e){n.exports=Math.log1p||function log1p(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],52:[function(t,n,e){n.exports=Math.sign||function sign(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],53:[function(t,n,e){var r,o,i,u=t(30),c=t(76).set,a=u.MutationObserver||u.WebKitMutationObserver,s=u.process,f=u.Promise,l=\"process\"==t(12)(s),h=function(){var t,n,e;for(l&&(t=s.domain)&&(s.domain=null,t.exit());r;)n=r.domain,e=r.fn,n&&n.enter(),e(),n&&n.exit(),r=r.next;o=void 0,t&&t.enter()};if(l)i=function(){s.nextTick(h)};else if(a){var p=1,v=document.createTextNode(\"\");new a(h).observe(v,{characterData:!0}),i=function(){v.data=p=-p}}else i=f&&f.resolve?function(){f.resolve().then(h)}:function(){c.call(u,h)};n.exports=function asap(t){var n={fn:t,next:void 0,domain:l&&s.domain};o&&(o.next=n),r||(r=n,i()),o=n}},{12:12,30:30,76:76}],54:[function(t,n,e){var r=t(47),o=t(81),i=t(35);n.exports=t(25)(function(){var t=Object.assign,n={},e={},r=Symbol(),o=\"abcdefghijklmnopqrst\";return n[r]=7,o.split(\"\").forEach(function(t){e[t]=t}),7!=t({},n)[r]||Object.keys(t({},e)).join(\"\")!=o})?function assign(t,n){for(var e=o(t),u=arguments,c=u.length,a=1,s=r.getKeys,f=r.getSymbols,l=r.isEnum;c>a;)for(var h,p=i(u[a++]),v=f?s(p).concat(f(p)):s(p),g=v.length,y=0;g>y;)l.call(p,h=v[y++])&&(e[h]=p[h]);return e}:Object.assign},{25:25,35:35,47:47,81:81}],55:[function(t,n,e){var r=t(23),o=t(17),i=t(25);n.exports=function(t,n){var e=(o.Object||{})[t]||Object[t],u={};u[t]=n(e),r(r.S+r.F*i(function(){e(1)}),\"Object\",u)}},{17:17,23:23,25:25}],56:[function(t,n,e){var r=t(47),o=t(79),i=r.isEnum;n.exports=function(t){return function(n){for(var e,u=o(n),c=r.getKeys(u),a=c.length,s=0,f=[];a>s;)i.call(u,e=c[s++])&&f.push(t?[e,u[e]]:u[e]);return f}}},{47:47,79:79}],57:[function(t,n,e){var r=t(47),o=t(5),i=t(30).Reflect;n.exports=i&&i.ownKeys||function ownKeys(t){var n=r.getNames(o(t)),e=r.getSymbols;return e?n.concat(e(t)):n}},{30:30,47:47,5:5}],58:[function(t,n,e){\"use strict\";var r=t(59),o=t(34),i=t(3);n.exports=function(){for(var t=i(this),n=arguments.length,e=Array(n),u=0,c=r._,a=!1;n>u;)(e[u]=arguments[u++])===c&&(a=!0);return function(){var r,i=this,u=arguments,s=u.length,f=0,l=0;if(!a&&!s)return o(t,e,i);if(r=e.slice(),a)for(;n>f;f++)r[f]===c&&(r[f]=u[l++]);for(;s>l;)r.push(u[l++]);return o(t,r,i)}}},{3:3,34:34,59:59}],59:[function(t,n,e){n.exports=t(30)},{30:30}],60:[function(t,n,e){n.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},{}],61:[function(t,n,e){var r=t(62);n.exports=function(t,n){for(var e in n)r(t,e,n[e]);return t}},{62:62}],62:[function(t,n,e){var r=t(30),o=t(32),i=t(83)(\"src\"),u=\"toString\",c=Function[u],a=(\"\"+c).split(u);t(17).inspectSource=function(t){return c.call(t)},(n.exports=function(t,n,e,u){\"function\"==typeof e&&(e.hasOwnProperty(i)||o(e,i,t[n]?\"\"+t[n]:a.join(String(n))),e.hasOwnProperty(\"name\")||o(e,\"name\",n)),t===r?t[n]=e:(u||delete t[n],o(t,n,e))})(Function.prototype,u,function toString(){return\"function\"==typeof this&&this[i]||c.call(this)})},{17:17,30:30,32:32,83:83}],63:[function(t,n,e){n.exports=function(t,n){var e=n===Object(n)?function(t){return n[t]}:n;return function(n){return String(n).replace(t,e)}}},{}],64:[function(t,n,e){n.exports=Object.is||function is(t,n){return t===n?0!==t||1/t===1/n:t!=t&&n!=n}},{}],65:[function(t,n,e){var r=t(47).getDesc,o=t(39),i=t(5),u=function(t,n){if(i(t),!o(n)&&null!==n)throw TypeError(n+\": can't set as prototype!\")};n.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(n,e,o){try{o=t(18)(Function.call,r(Object.prototype,\"__proto__\").set,2),o(n,[]),e=!(n instanceof Array)}catch(i){e=!0}return function setPrototypeOf(t,n){return u(t,n),e?t.__proto__=n:o(t,n),t}}({},!1):void 0),check:u}},{18:18,39:39,47:47,5:5}],66:[function(t,n,e){\"use strict\";var r=t(30),o=t(47),i=t(20),u=t(84)(\"species\");n.exports=function(t){var n=r[t];i&&n&&!n[u]&&o.setDesc(n,u,{configurable:!0,get:function(){return this}})}},{20:20,30:30,47:47,84:84}],67:[function(t,n,e){var r=t(47).setDesc,o=t(31),i=t(84)(\"toStringTag\");n.exports=function(t,n,e){t&&!o(t=e?t:t.prototype,i)&&r(t,i,{configurable:!0,value:n})}},{31:31,47:47,84:84}],68:[function(t,n,e){var r=t(30),o=\"__core-js_shared__\",i=r[o]||(r[o]={});n.exports=function(t){return i[t]||(i[t]={})}},{30:30}],69:[function(t,n,e){var r=t(5),o=t(3),i=t(84)(\"species\");n.exports=function(t,n){var e,u=r(t).constructor;return void 0===u||void 0==(e=r(u)[i])?n:o(e)}},{3:3,5:5,84:84}],70:[function(t,n,e){n.exports=function(t,n,e){if(!(t instanceof n))throw TypeError(e+\": use the 'new' operator!\");return t}},{}],71:[function(t,n,e){var r=t(78),o=t(19);n.exports=function(t){return function(n,e){var i,u,c=String(o(n)),a=r(e),s=c.length;return 0>a||a>=s?t?\"\":void 0:(i=c.charCodeAt(a),55296>i||i>56319||a+1===s||(u=c.charCodeAt(a+1))<56320||u>57343?t?c.charAt(a):i:t?c.slice(a,a+2):(i-55296<<10)+(u-56320)+65536)}}},{19:19,78:78}],72:[function(t,n,e){var r=t(40),o=t(19);n.exports=function(t,n,e){if(r(n))throw TypeError(\"String#\"+e+\" doesn't accept regex!\");return String(o(t))}},{19:19,40:40}],73:[function(t,n,e){var r=t(80),o=t(74),i=t(19);n.exports=function(t,n,e,u){var c=String(i(t)),a=c.length,s=void 0===e?\" \":String(e),f=r(n);if(a>=f)return c;\"\"==s&&(s=\" \");var l=f-a,h=o.call(s,Math.ceil(l/s.length));return h.length>l&&(h=h.slice(0,l)),u?h+c:c+h}},{19:19,74:74,80:80}],74:[function(t,n,e){\"use strict\";var r=t(78),o=t(19);n.exports=function repeat(t){var n=String(o(this)),e=\"\",i=r(t);if(0>i||i==1/0)throw RangeError(\"Count can't be negative\");for(;i>0;(i>>>=1)&&(n+=n))1&i&&(e+=n);return e}},{19:19,78:78}],75:[function(t,n,e){var r=t(23),o=t(19),i=t(25),u=\"\t\\n\\x0B\\f\\r \\u2028\\u2029\\ufeff\",c=\"[\"+u+\"]\",a=\"
\",s=RegExp(\"^\"+c+c+\"*\"),f=RegExp(c+c+\"*$\"),l=function(t,n){var e={};e[t]=n(h),r(r.P+r.F*i(function(){return!!u[t]()||a[t]()!=a}),\"String\",e)},h=l.trim=function(t,n){return t=String(o(t)),1&n&&(t=t.replace(s,\"\")),2&n&&(t=t.replace(f,\"\")),t};n.exports=l},{19:19,23:23,25:25}],76:[function(t,n,e){var r,o,i,u=t(18),c=t(34),a=t(33),s=t(21),f=t(30),l=f.process,h=f.setImmediate,p=f.clearImmediate,v=f.MessageChannel,g=0,y={},d=\"onreadystatechange\",m=function(){var t=+this;if(y.hasOwnProperty(t)){var n=y[t];delete y[t],n()}},x=function(t){m.call(t.data)};h&&p||(h=function setImmediate(t){for(var n=[],e=1;arguments.length>e;)n.push(arguments[e++]);return y[++g]=function(){c(\"function\"==typeof t?t:Function(t),n)},r(g),g},p=function clearImmediate(t){delete y[t]},\"process\"==t(12)(l)?r=function(t){l.nextTick(u(m,t,1))}:v?(o=new v,i=o.port2,o.port1.onmessage=x,r=u(i.postMessage,i,1)):f.addEventListener&&\"function\"==typeof postMessage&&!f.importScripts?(r=function(t){f.postMessage(t+\"\",\"*\")},f.addEventListener(\"message\",x,!1)):r=d in s(\"script\")?function(t){a.appendChild(s(\"script\"))[d]=function(){a.removeChild(this),m.call(t)}}:function(t){setTimeout(u(m,t,1),0)}),n.exports={set:h,clear:p}},{12:12,18:18,21:21,30:30,33:33,34:34}],77:[function(t,n,e){var r=t(78),o=Math.max,i=Math.min;n.exports=function(t,n){return t=r(t),0>t?o(t+n,0):i(t,n)}},{78:78}],78:[function(t,n,e){var r=Math.ceil,o=Math.floor;n.exports=function(t){return isNaN(t=+t)?0:(t>0?o:r)(t)}},{}],79:[function(t,n,e){var r=t(35),o=t(19);n.exports=function(t){return r(o(t))}},{19:19,35:35}],80:[function(t,n,e){var r=t(78),o=Math.min;n.exports=function(t){return t>0?o(r(t),9007199254740991):0}},{78:78}],81:[function(t,n,e){var r=t(19);n.exports=function(t){return Object(r(t))}},{19:19}],82:[function(t,n,e){var r=t(39);n.exports=function(t,n){if(!r(t))return t;var e,o;if(n&&\"function\"==typeof(e=t.toString)&&!r(o=e.call(t)))return o;if(\"function\"==typeof(e=t.valueOf)&&!r(o=e.call(t)))return o;if(!n&&\"function\"==typeof(e=t.toString)&&!r(o=e.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},{39:39}],83:[function(t,n,e){var r=0,o=Math.random();n.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++r+o).toString(36))}},{}],84:[function(t,n,e){var r=t(68)(\"wks\"),o=t(83),i=t(30).Symbol;n.exports=function(t){return r[t]||(r[t]=i&&i[t]||(i||o)(\"Symbol.\"+t))}},{30:30,68:68,83:83}],85:[function(t,n,e){var r=t(11),o=t(84)(\"iterator\"),i=t(46);n.exports=t(17).getIteratorMethod=function(t){return void 0!=t?t[o]||t[\"@@iterator\"]||i[r(t)]:void 0}},{11:11,17:17,46:46,84:84}],86:[function(t,n,e){\"use strict\";var r,o=t(47),i=t(23),u=t(20),c=t(60),a=t(33),s=t(21),f=t(31),l=t(12),h=t(34),p=t(25),v=t(5),g=t(3),y=t(39),d=t(81),m=t(79),x=t(78),S=t(77),w=t(80),b=t(35),E=t(83)(\"__proto__\"),O=t(9),P=t(8)(!1),_=Object.prototype,M=Array.prototype,F=M.slice,A=M.join,j=o.setDesc,N=o.getDesc,I=o.setDescs,k={};u||(r=!p(function(){return 7!=j(s(\"div\"),\"a\",{get:function(){return 7}}).a}),o.setDesc=function(t,n,e){if(r)try{return j(t,n,e)}catch(o){}if(\"get\"in e||\"set\"in e)throw TypeError(\"Accessors not supported!\");return\"value\"in e&&(v(t)[n]=e.value),t},o.getDesc=function(t,n){if(r)try{return N(t,n)}catch(e){}return f(t,n)?c(!_.propertyIsEnumerable.call(t,n),t[n]):void 0},o.setDescs=I=function(t,n){v(t);for(var e,r=o.getKeys(n),i=r.length,u=0;i>u;)o.setDesc(t,e=r[u++],n[e]);return t}),i(i.S+i.F*!u,\"Object\",{getOwnPropertyDescriptor:o.getDesc,defineProperty:o.setDesc,defineProperties:I});var D=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\"),T=D.concat(\"length\",\"prototype\"),L=D.length,R=function(){var t,n=s(\"iframe\"),e=L,r=\">\";for(n.style.display=\"none\",a.appendChild(n),n.src=\"javascript:\",t=n.contentWindow.document,t.open(),t.write(\"<script>document.F=Object</script\"+r),t.close(),R=t.F;e--;)delete R.prototype[D[e]];return R()},C=function(t,n){return function(e){var r,o=m(e),i=0,u=[];for(r in o)r!=E&&f(o,r)&&u.push(r);for(;n>i;)f(o,r=t[i++])&&(~P(u,r)||u.push(r));return u}},G=function(){};i(i.S,\"Object\",{getPrototypeOf:o.getProto=o.getProto||function(t){return t=d(t),f(t,E)?t[E]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?_:null},getOwnPropertyNames:o.getNames=o.getNames||C(T,T.length,!0),create:o.create=o.create||function(t,n){var e;return null!==t?(G.prototype=v(t),e=new G,G.prototype=null,e[E]=t):e=R(),void 0===n?e:I(e,n)},keys:o.getKeys=o.getKeys||C(D,L,!1)});var W=function(t,n,e){if(!(n in k)){for(var r=[],o=0;n>o;o++)r[o]=\"a[\"+o+\"]\";k[n]=Function(\"F,a\",\"return new F(\"+r.join(\",\")+\")\")}return k[n](t,e)};i(i.P,\"Function\",{bind:function bind(t){var n=g(this),e=F.call(arguments,1),r=function(){var o=e.concat(F.call(arguments));return this instanceof r?W(n,o.length,o):h(n,o,t)};return y(n.prototype)&&(r.prototype=n.prototype),r}}),i(i.P+i.F*p(function(){a&&F.call(a)}),\"Array\",{slice:function(t,n){var e=w(this.length),r=l(this);if(n=void 0===n?e:n,\"Array\"==r)return F.call(this,t,n);for(var o=S(t,e),i=S(n,e),u=w(i-o),c=Array(u),a=0;u>a;a++)c[a]=\"String\"==r?this.charAt(o+a):this[o+a];return c}}),i(i.P+i.F*(b!=Object),\"Array\",{join:function join(t){return A.call(b(this),void 0===t?\",\":t)}}),i(i.S,\"Array\",{isArray:t(37)});var z=function(t){return function(n,e){g(n);var r=b(this),o=w(r.length),i=t?o-1:0,u=t?-1:1;if(arguments.length<2)for(;;){if(i in r){e=r[i],i+=u;break}if(i+=u,t?0>i:i>=o)throw TypeError(\"Reduce of empty array with no initial value\")}for(;t?i>=0:o>i;i+=u)i in r&&(e=n(e,r[i],i,this));return e}},K=function(t){return function(n){return t(this,n,arguments[1])}};i(i.P,\"Array\",{forEach:o.each=o.each||K(O(0)),map:K(O(1)),filter:K(O(2)),some:K(O(3)),every:K(O(4)),reduce:z(!1),reduceRight:z(!0),indexOf:K(P),lastIndexOf:function(t,n){var e=m(this),r=w(e.length),o=r-1;for(arguments.length>1&&(o=Math.min(o,x(n))),0>o&&(o=w(r+o));o>=0;o--)if(o in e&&e[o]===t)return o;return-1}}),i(i.S,\"Date\",{now:function(){return+new Date}});var U=function(t){return t>9?t:\"0\"+t};i(i.P+i.F*(p(function(){return\"0385-07-25T07:06:39.999Z\"!=new Date(-5e13-1).toISOString()})||!p(function(){new Date(NaN).toISOString()})),\"Date\",{toISOString:function toISOString(){if(!isFinite(this))throw RangeError(\"Invalid time value\");var t=this,n=t.getUTCFullYear(),e=t.getUTCMilliseconds(),r=0>n?\"-\":n>9999?\"+\":\"\";return r+(\"00000\"+Math.abs(n)).slice(r?-6:-4)+\"-\"+U(t.getUTCMonth()+1)+\"-\"+U(t.getUTCDate())+\"T\"+U(t.getUTCHours())+\":\"+U(t.getUTCMinutes())+\":\"+U(t.getUTCSeconds())+\".\"+(e>99?e:\"0\"+U(e))+\"Z\"}})},{12:12,20:20,21:21,23:23,25:25,3:3,31:31,33:33,34:34,35:35,37:37,39:39,47:47,5:5,60:60,77:77,78:78,79:79,8:8,80:80,81:81,83:83,9:9}],87:[function(t,n,e){var r=t(23);r(r.P,\"Array\",{copyWithin:t(6)}),t(4)(\"copyWithin\")},{23:23,4:4,6:6}],88:[function(t,n,e){var r=t(23);r(r.P,\"Array\",{fill:t(7)}),t(4)(\"fill\")},{23:23,4:4,7:7}],89:[function(t,n,e){\"use strict\";var r=t(23),o=t(9)(6),i=\"findIndex\",u=!0;i in[]&&Array(1)[i](function(){u=!1}),r(r.P+r.F*u,\"Array\",{findIndex:function findIndex(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),t(4)(i)},{23:23,4:4,9:9}],90:[function(t,n,e){\"use strict\";var r=t(23),o=t(9)(5),i=\"find\",u=!0;i in[]&&Array(1)[i](function(){u=!1}),r(r.P+r.F*u,\"Array\",{find:function find(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),t(4)(i)},{23:23,4:4,9:9}],91:[function(t,n,e){\"use strict\";var r=t(18),o=t(23),i=t(81),u=t(41),c=t(36),a=t(80),s=t(85);o(o.S+o.F*!t(44)(function(t){Array.from(t)}),\"Array\",{from:function from(t){var n,e,o,f,l=i(t),h=\"function\"==typeof this?this:Array,p=arguments,v=p.length,g=v>1?p[1]:void 0,y=void 0!==g,d=0,m=s(l);if(y&&(g=r(g,v>2?p[2]:void 0,2)),void 0==m||h==Array&&c(m))for(n=a(l.length),e=new h(n);n>d;d++)e[d]=y?g(l[d],d):l[d];else for(f=m.call(l),e=new h;!(o=f.next()).done;d++)e[d]=y?u(f,g,[o.value,d],!0):o.value;return e.length=d,e}})},{18:18,23:23,36:36,41:41,44:44,80:80,81:81,85:85}],92:[function(t,n,e){\"use strict\";var r=t(4),o=t(45),i=t(46),u=t(79);n.exports=t(43)(Array,\"Array\",function(t,n){this._t=u(t),this._i=0,this._k=n},function(){var t=this._t,n=this._k,e=this._i++;return!t||e>=t.length?(this._t=void 0,o(1)):\"keys\"==n?o(0,e):\"values\"==n?o(0,t[e]):o(0,[e,t[e]])},\"values\"),i.Arguments=i.Array,r(\"keys\"),r(\"values\"),r(\"entries\")},{4:4,43:43,45:45,46:46,79:79}],93:[function(t,n,e){\"use strict\";var r=t(23);r(r.S+r.F*t(25)(function(){function F(){}return!(Array.of.call(F)instanceof F)}),\"Array\",{of:function of(){for(var t=0,n=arguments,e=n.length,r=new(\"function\"==typeof this?this:Array)(e);e>t;)r[t]=n[t++];return r.length=e,r}})},{23:23,25:25}],94:[function(t,n,e){t(66)(\"Array\")},{66:66}],95:[function(t,n,e){\"use strict\";var r=t(47),o=t(39),i=t(84)(\"hasInstance\"),u=Function.prototype;i in u||r.setDesc(u,i,{value:function(t){if(\"function\"!=typeof this||!o(t))return!1;if(!o(this.prototype))return t instanceof this;for(;t=r.getProto(t);)if(this.prototype===t)return!0;return!1}})},{39:39,47:47,84:84}],96:[function(t,n,e){var r=t(47).setDesc,o=t(60),i=t(31),u=Function.prototype,c=/^\\s*function ([^ (]*)/,a=\"name\";a in u||t(20)&&r(u,a,{configurable:!0,get:function(){var t=(\"\"+this).match(c),n=t?t[1]:\"\";return i(this,a)||r(this,a,o(5,n)),n}})},{20:20,31:31,47:47,60:60}],97:[function(t,n,e){\"use strict\";var r=t(13);t(16)(\"Map\",function(t){return function Map(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function get(t){var n=r.getEntry(this,t);return n&&n.v},set:function set(t,n){return r.def(this,0===t?0:t,n)}},r,!0)},{13:13,16:16}],98:[function(t,n,e){var r=t(23),o=t(51),i=Math.sqrt,u=Math.acosh;r(r.S+r.F*!(u&&710==Math.floor(u(Number.MAX_VALUE))),\"Math\",{acosh:function acosh(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:o(t-1+i(t-1)*i(t+1))}})},{23:23,51:51}],99:[function(t,n,e){function asinh(t){return isFinite(t=+t)&&0!=t?0>t?-asinh(-t):Math.log(t+Math.sqrt(t*t+1)):t}var r=t(23);r(r.S,\"Math\",{asinh:asinh})},{23:23}],100:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{atanh:function atanh(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},{23:23}],101:[function(t,n,e){var r=t(23),o=t(52);r(r.S,\"Math\",{cbrt:function cbrt(t){return o(t=+t)*Math.pow(Math.abs(t),1/3)}})},{23:23,52:52}],102:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{clz32:function clz32(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},{23:23}],103:[function(t,n,e){var r=t(23),o=Math.exp;r(r.S,\"Math\",{cosh:function cosh(t){return(o(t=+t)+o(-t))/2}})},{23:23}],104:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{expm1:t(50)})},{23:23,50:50}],105:[function(t,n,e){var r=t(23),o=t(52),i=Math.pow,u=i(2,-52),c=i(2,-23),a=i(2,127)*(2-c),s=i(2,-126),f=function(t){return t+1/u-1/u};r(r.S,\"Math\",{fround:function fround(t){var n,e,r=Math.abs(t),i=o(t);return s>r?i*f(r/s/c)*s*c:(n=(1+c/u)*r,e=n-(n-r),e>a||e!=e?i*(1/0):i*e)}})},{23:23,52:52}],106:[function(t,n,e){var r=t(23),o=Math.abs;r(r.S,\"Math\",{hypot:function hypot(t,n){for(var e,r,i=0,u=0,c=arguments,a=c.length,s=0;a>u;)e=o(c[u++]),e>s?(r=s/e,i=i*r*r+1,s=e):e>0?(r=e/s,i+=r*r):i+=e;return s===1/0?1/0:s*Math.sqrt(i)}})},{23:23}],107:[function(t,n,e){var r=t(23),o=Math.imul;r(r.S+r.F*t(25)(function(){return-5!=o(4294967295,5)||2!=o.length}),\"Math\",{imul:function imul(t,n){var e=65535,r=+t,o=+n,i=e&r,u=e&o;return 0|i*u+((e&r>>>16)*u+i*(e&o>>>16)<<16>>>0)}})},{23:23,25:25}],108:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{log10:function log10(t){return Math.log(t)/Math.LN10}})},{23:23}],109:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{log1p:t(51)})},{23:23,51:51}],110:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{log2:function log2(t){return Math.log(t)/Math.LN2}})},{23:23}],111:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{sign:t(52)})},{23:23,52:52}],112:[function(t,n,e){var r=t(23),o=t(50),i=Math.exp;r(r.S+r.F*t(25)(function(){return-2e-17!=!Math.sinh(-2e-17)}),\"Math\",{sinh:function sinh(t){return Math.abs(t=+t)<1?(o(t)-o(-t))/2:(i(t-1)-i(-t-1))*(Math.E/2)}})},{23:23,25:25,50:50}],113:[function(t,n,e){var r=t(23),o=t(50),i=Math.exp;r(r.S,\"Math\",{\ntanh:function tanh(t){var n=o(t=+t),e=o(-t);return n==1/0?1:e==1/0?-1:(n-e)/(i(t)+i(-t))}})},{23:23,50:50}],114:[function(t,n,e){var r=t(23);r(r.S,\"Math\",{trunc:function trunc(t){return(t>0?Math.floor:Math.ceil)(t)}})},{23:23}],115:[function(t,n,e){\"use strict\";var r=t(47),o=t(30),i=t(31),u=t(12),c=t(82),a=t(25),s=t(75).trim,f=\"Number\",l=o[f],h=l,p=l.prototype,v=u(r.create(p))==f,g=\"trim\"in String.prototype,y=function(t){var n=c(t,!1);if(\"string\"==typeof n&&n.length>2){n=g?n.trim():s(n,3);var e,r,o,i=n.charCodeAt(0);if(43===i||45===i){if(e=n.charCodeAt(2),88===e||120===e)return NaN}else if(48===i){switch(n.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+n}for(var u,a=n.slice(2),f=0,l=a.length;l>f;f++)if(u=a.charCodeAt(f),48>u||u>o)return NaN;return parseInt(a,r)}}return+n};l(\" 0o1\")&&l(\"0b1\")&&!l(\"+0x1\")||(l=function Number(t){var n=arguments.length<1?0:t,e=this;return e instanceof l&&(v?a(function(){p.valueOf.call(e)}):u(e)!=f)?new h(y(n)):y(n)},r.each.call(t(20)?r.getNames(h):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger\".split(\",\"),function(t){i(h,t)&&!i(l,t)&&r.setDesc(l,t,r.getDesc(h,t))}),l.prototype=p,p.constructor=l,t(62)(o,f,l))},{12:12,20:20,25:25,30:30,31:31,47:47,62:62,75:75,82:82}],116:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{EPSILON:Math.pow(2,-52)})},{23:23}],117:[function(t,n,e){var r=t(23),o=t(30).isFinite;r(r.S,\"Number\",{isFinite:function isFinite(t){return\"number\"==typeof t&&o(t)}})},{23:23,30:30}],118:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{isInteger:t(38)})},{23:23,38:38}],119:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{isNaN:function isNaN(t){return t!=t}})},{23:23}],120:[function(t,n,e){var r=t(23),o=t(38),i=Math.abs;r(r.S,\"Number\",{isSafeInteger:function isSafeInteger(t){return o(t)&&i(t)<=9007199254740991}})},{23:23,38:38}],121:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{MAX_SAFE_INTEGER:9007199254740991})},{23:23}],122:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{MIN_SAFE_INTEGER:-9007199254740991})},{23:23}],123:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{parseFloat:parseFloat})},{23:23}],124:[function(t,n,e){var r=t(23);r(r.S,\"Number\",{parseInt:parseInt})},{23:23}],125:[function(t,n,e){var r=t(23);r(r.S+r.F,\"Object\",{assign:t(54)})},{23:23,54:54}],126:[function(t,n,e){var r=t(39);t(55)(\"freeze\",function(t){return function freeze(n){return t&&r(n)?t(n):n}})},{39:39,55:55}],127:[function(t,n,e){var r=t(79);t(55)(\"getOwnPropertyDescriptor\",function(t){return function getOwnPropertyDescriptor(n,e){return t(r(n),e)}})},{55:55,79:79}],128:[function(t,n,e){t(55)(\"getOwnPropertyNames\",function(){return t(29).get})},{29:29,55:55}],129:[function(t,n,e){var r=t(81);t(55)(\"getPrototypeOf\",function(t){return function getPrototypeOf(n){return t(r(n))}})},{55:55,81:81}],130:[function(t,n,e){var r=t(39);t(55)(\"isExtensible\",function(t){return function isExtensible(n){return r(n)?t?t(n):!0:!1}})},{39:39,55:55}],131:[function(t,n,e){var r=t(39);t(55)(\"isFrozen\",function(t){return function isFrozen(n){return r(n)?t?t(n):!1:!0}})},{39:39,55:55}],132:[function(t,n,e){var r=t(39);t(55)(\"isSealed\",function(t){return function isSealed(n){return r(n)?t?t(n):!1:!0}})},{39:39,55:55}],133:[function(t,n,e){var r=t(23);r(r.S,\"Object\",{is:t(64)})},{23:23,64:64}],134:[function(t,n,e){var r=t(81);t(55)(\"keys\",function(t){return function keys(n){return t(r(n))}})},{55:55,81:81}],135:[function(t,n,e){var r=t(39);t(55)(\"preventExtensions\",function(t){return function preventExtensions(n){return t&&r(n)?t(n):n}})},{39:39,55:55}],136:[function(t,n,e){var r=t(39);t(55)(\"seal\",function(t){return function seal(n){return t&&r(n)?t(n):n}})},{39:39,55:55}],137:[function(t,n,e){var r=t(23);r(r.S,\"Object\",{setPrototypeOf:t(65).set})},{23:23,65:65}],138:[function(t,n,e){\"use strict\";var r=t(11),o={};o[t(84)(\"toStringTag\")]=\"z\",o+\"\"!=\"[object z]\"&&t(62)(Object.prototype,\"toString\",function toString(){return\"[object \"+r(this)+\"]\"},!0)},{11:11,62:62,84:84}],139:[function(t,n,e){\"use strict\";var r,o=t(47),i=t(49),u=t(30),c=t(18),a=t(11),s=t(23),f=t(39),l=t(5),h=t(3),p=t(70),v=t(28),g=t(65).set,y=t(64),d=t(84)(\"species\"),m=t(69),x=t(53),S=\"Promise\",w=u.process,b=\"process\"==a(w),E=u[S],O=function(t){var n=new E(function(){});return t&&(n.constructor=Object),E.resolve(n)===n},P=function(){function P2(t){var n=new E(t);return g(n,P2.prototype),n}var n=!1;try{if(n=E&&E.resolve&&O(),g(P2,E),P2.prototype=o.create(E.prototype,{constructor:{value:P2}}),P2.resolve(5).then(function(){})instanceof P2||(n=!1),n&&t(20)){var e=!1;E.resolve(o.setDesc({},\"then\",{get:function(){e=!0}})),n=e}}catch(r){n=!1}return n}(),_=function(t,n){return i&&t===E&&n===r?!0:y(t,n)},M=function(t){var n=l(t)[d];return void 0!=n?n:t},F=function(t){var n;return f(t)&&\"function\"==typeof(n=t.then)?n:!1},A=function(t){var n,e;this.promise=new t(function(t,r){if(void 0!==n||void 0!==e)throw TypeError(\"Bad Promise constructor\");n=t,e=r}),this.resolve=h(n),this.reject=h(e)},j=function(t){try{t()}catch(n){return{error:n}}},N=function(t,n){if(!t.n){t.n=!0;var e=t.c;x(function(){for(var r=t.v,o=1==t.s,i=0,c=function(n){var e,i,u=o?n.ok:n.fail,c=n.resolve,a=n.reject;try{u?(o||(t.h=!0),e=u===!0?r:u(r),e===n.promise?a(TypeError(\"Promise-chain cycle\")):(i=F(e))?i.call(e,c,a):c(e)):a(r)}catch(s){a(s)}};e.length>i;)c(e[i++]);e.length=0,t.n=!1,n&&setTimeout(function(){var n,e,o=t.p;I(o)&&(b?w.emit(\"unhandledRejection\",r,o):(n=u.onunhandledrejection)?n({promise:o,reason:r}):(e=u.console)&&e.error&&e.error(\"Unhandled promise rejection\",r)),t.a=void 0},1)})}},I=function(t){var n,e=t._d,r=e.a||e.c,o=0;if(e.h)return!1;for(;r.length>o;)if(n=r[o++],n.fail||!I(n.promise))return!1;return!0},k=function(t){var n=this;n.d||(n.d=!0,n=n.r||n,n.v=t,n.s=2,n.a=n.c.slice(),N(n,!0))},D=function(t){var n,e=this;if(!e.d){e.d=!0,e=e.r||e;try{if(e.p===t)throw TypeError(\"Promise can't be resolved itself\");(n=F(t))?x(function(){var r={r:e,d:!1};try{n.call(t,c(D,r,1),c(k,r,1))}catch(o){k.call(r,o)}}):(e.v=t,e.s=1,N(e,!1))}catch(r){k.call({r:e,d:!1},r)}}};P||(E=function Promise(t){h(t);var n=this._d={p:p(this,E,S),c:[],a:void 0,s:0,d:!1,v:void 0,h:!1,n:!1};try{t(c(D,n,1),c(k,n,1))}catch(e){k.call(n,e)}},t(61)(E.prototype,{then:function then(t,n){var e=new A(m(this,E)),r=e.promise,o=this._d;return e.ok=\"function\"==typeof t?t:!0,e.fail=\"function\"==typeof n&&n,o.c.push(e),o.a&&o.a.push(e),o.s&&N(o,!1),r},\"catch\":function(t){return this.then(void 0,t)}})),s(s.G+s.W+s.F*!P,{Promise:E}),t(67)(E,S),t(66)(S),r=t(17)[S],s(s.S+s.F*!P,S,{reject:function reject(t){var n=new A(this),e=n.reject;return e(t),n.promise}}),s(s.S+s.F*(!P||O(!0)),S,{resolve:function resolve(t){if(t instanceof E&&_(t.constructor,this))return t;var n=new A(this),e=n.resolve;return e(t),n.promise}}),s(s.S+s.F*!(P&&t(44)(function(t){E.all(t)[\"catch\"](function(){})})),S,{all:function all(t){var n=M(this),e=new A(n),r=e.resolve,i=e.reject,u=[],c=j(function(){v(t,!1,u.push,u);var e=u.length,c=Array(e);e?o.each.call(u,function(t,o){var u=!1;n.resolve(t).then(function(t){u||(u=!0,c[o]=t,--e||r(c))},i)}):r(c)});return c&&i(c.error),e.promise},race:function race(t){var n=M(this),e=new A(n),r=e.reject,o=j(function(){v(t,!1,function(t){n.resolve(t).then(e.resolve,r)})});return o&&r(o.error),e.promise}})},{11:11,17:17,18:18,20:20,23:23,28:28,3:3,30:30,39:39,44:44,47:47,49:49,5:5,53:53,61:61,64:64,65:65,66:66,67:67,69:69,70:70,84:84}],140:[function(t,n,e){var r=t(23),o=Function.apply;r(r.S,\"Reflect\",{apply:function apply(t,n,e){return o.call(t,n,e)}})},{23:23}],141:[function(t,n,e){var r=t(47),o=t(23),i=t(3),u=t(5),c=t(39),a=Function.bind||t(17).Function.prototype.bind;o(o.S+o.F*t(25)(function(){function F(){}return!(Reflect.construct(function(){},[],F)instanceof F)}),\"Reflect\",{construct:function construct(t,n){i(t);var e=arguments.length<3?t:i(arguments[2]);if(t==e){if(void 0!=n)switch(u(n).length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3])}var o=[null];return o.push.apply(o,n),new(a.apply(t,o))}var s=e.prototype,f=r.create(c(s)?s:Object.prototype),l=Function.apply.call(t,f,n);return c(l)?l:f}})},{17:17,23:23,25:25,3:3,39:39,47:47,5:5}],142:[function(t,n,e){var r=t(47),o=t(23),i=t(5);o(o.S+o.F*t(25)(function(){Reflect.defineProperty(r.setDesc({},1,{value:1}),1,{value:2})}),\"Reflect\",{defineProperty:function defineProperty(t,n,e){i(t);try{return r.setDesc(t,n,e),!0}catch(o){return!1}}})},{23:23,25:25,47:47,5:5}],143:[function(t,n,e){var r=t(23),o=t(47).getDesc,i=t(5);r(r.S,\"Reflect\",{deleteProperty:function deleteProperty(t,n){var e=o(i(t),n);return e&&!e.configurable?!1:delete t[n]}})},{23:23,47:47,5:5}],144:[function(t,n,e){\"use strict\";var r=t(23),o=t(5),i=function(t){this._t=o(t),this._i=0;var n,e=this._k=[];for(n in t)e.push(n)};t(42)(i,\"Object\",function(){var t,n=this,e=n._k;do if(n._i>=e.length)return{value:void 0,done:!0};while(!((t=e[n._i++])in n._t));return{value:t,done:!1}}),r(r.S,\"Reflect\",{enumerate:function enumerate(t){return new i(t)}})},{23:23,42:42,5:5}],145:[function(t,n,e){var r=t(47),o=t(23),i=t(5);o(o.S,\"Reflect\",{getOwnPropertyDescriptor:function getOwnPropertyDescriptor(t,n){return r.getDesc(i(t),n)}})},{23:23,47:47,5:5}],146:[function(t,n,e){var r=t(23),o=t(47).getProto,i=t(5);r(r.S,\"Reflect\",{getPrototypeOf:function getPrototypeOf(t){return o(i(t))}})},{23:23,47:47,5:5}],147:[function(t,n,e){function get(t,n){var e,i,a=arguments.length<3?t:arguments[2];return c(t)===a?t[n]:(e=r.getDesc(t,n))?o(e,\"value\")?e.value:void 0!==e.get?e.get.call(a):void 0:u(i=r.getProto(t))?get(i,n,a):void 0}var r=t(47),o=t(31),i=t(23),u=t(39),c=t(5);i(i.S,\"Reflect\",{get:get})},{23:23,31:31,39:39,47:47,5:5}],148:[function(t,n,e){var r=t(23);r(r.S,\"Reflect\",{has:function has(t,n){return n in t}})},{23:23}],149:[function(t,n,e){var r=t(23),o=t(5),i=Object.isExtensible;r(r.S,\"Reflect\",{isExtensible:function isExtensible(t){return o(t),i?i(t):!0}})},{23:23,5:5}],150:[function(t,n,e){var r=t(23);r(r.S,\"Reflect\",{ownKeys:t(57)})},{23:23,57:57}],151:[function(t,n,e){var r=t(23),o=t(5),i=Object.preventExtensions;r(r.S,\"Reflect\",{preventExtensions:function preventExtensions(t){o(t);try{return i&&i(t),!0}catch(n){return!1}}})},{23:23,5:5}],152:[function(t,n,e){var r=t(23),o=t(65);o&&r(r.S,\"Reflect\",{setPrototypeOf:function setPrototypeOf(t,n){o.check(t,n);try{return o.set(t,n),!0}catch(e){return!1}}})},{23:23,65:65}],153:[function(t,n,e){function set(t,n,e){var i,s,f=arguments.length<4?t:arguments[3],l=r.getDesc(c(t),n);if(!l){if(a(s=r.getProto(t)))return set(s,n,e,f);l=u(0)}return o(l,\"value\")?l.writable!==!1&&a(f)?(i=r.getDesc(f,n)||u(0),i.value=e,r.setDesc(f,n,i),!0):!1:void 0===l.set?!1:(l.set.call(f,e),!0)}var r=t(47),o=t(31),i=t(23),u=t(60),c=t(5),a=t(39);i(i.S,\"Reflect\",{set:set})},{23:23,31:31,39:39,47:47,5:5,60:60}],154:[function(t,n,e){var r=t(47),o=t(30),i=t(40),u=t(27),c=o.RegExp,a=c,s=c.prototype,f=/a/g,l=/a/g,h=new c(f)!==f;!t(20)||h&&!t(25)(function(){return l[t(84)(\"match\")]=!1,c(f)!=f||c(l)==l||\"/a/i\"!=c(f,\"i\")})||(c=function RegExp(t,n){var e=i(t),r=void 0===n;return this instanceof c||!e||t.constructor!==c||!r?h?new a(e&&!r?t.source:t,n):a((e=t instanceof c)?t.source:t,e&&r?u.call(t):n):t},r.each.call(r.getNames(a),function(t){t in c||r.setDesc(c,t,{configurable:!0,get:function(){return a[t]},set:function(n){a[t]=n}})}),s.constructor=c,c.prototype=s,t(62)(o,\"RegExp\",c)),t(66)(\"RegExp\")},{20:20,25:25,27:27,30:30,40:40,47:47,62:62,66:66,84:84}],155:[function(t,n,e){var r=t(47);t(20)&&\"g\"!=/./g.flags&&r.setDesc(RegExp.prototype,\"flags\",{configurable:!0,get:t(27)})},{20:20,27:27,47:47}],156:[function(t,n,e){t(26)(\"match\",1,function(t,n){return function match(e){\"use strict\";var r=t(this),o=void 0==e?void 0:e[n];return void 0!==o?o.call(e,r):new RegExp(e)[n](String(r))}})},{26:26}],157:[function(t,n,e){t(26)(\"replace\",2,function(t,n,e){return function replace(r,o){\"use strict\";var i=t(this),u=void 0==r?void 0:r[n];return void 0!==u?u.call(r,i,o):e.call(String(i),r,o)}})},{26:26}],158:[function(t,n,e){t(26)(\"search\",1,function(t,n){return function search(e){\"use strict\";var r=t(this),o=void 0==e?void 0:e[n];return void 0!==o?o.call(e,r):new RegExp(e)[n](String(r))}})},{26:26}],159:[function(t,n,e){t(26)(\"split\",2,function(t,n,e){return function split(r,o){\"use strict\";var i=t(this),u=void 0==r?void 0:r[n];return void 0!==u?u.call(r,i,o):e.call(String(i),r,o)}})},{26:26}],160:[function(t,n,e){\"use strict\";var r=t(13);t(16)(\"Set\",function(t){return function Set(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function add(t){return r.def(this,t=0===t?0:t,t)}},r)},{13:13,16:16}],161:[function(t,n,e){\"use strict\";var r=t(23),o=t(71)(!1);r(r.P,\"String\",{codePointAt:function codePointAt(t){return o(this,t)}})},{23:23,71:71}],162:[function(t,n,e){\"use strict\";var r=t(23),o=t(80),i=t(72),u=\"endsWith\",c=\"\"[u];r(r.P+r.F*t(24)(u),\"String\",{endsWith:function endsWith(t){var n=i(this,t,u),e=arguments,r=e.length>1?e[1]:void 0,a=o(n.length),s=void 0===r?a:Math.min(o(r),a),f=String(t);return c?c.call(n,f,s):n.slice(s-f.length,s)===f}})},{23:23,24:24,72:72,80:80}],163:[function(t,n,e){var r=t(23),o=t(77),i=String.fromCharCode,u=String.fromCodePoint;r(r.S+r.F*(!!u&&1!=u.length),\"String\",{fromCodePoint:function fromCodePoint(t){for(var n,e=[],r=arguments,u=r.length,c=0;u>c;){if(n=+r[c++],o(n,1114111)!==n)throw RangeError(n+\" is not a valid code point\");e.push(65536>n?i(n):i(((n-=65536)>>10)+55296,n%1024+56320))}return e.join(\"\")}})},{23:23,77:77}],164:[function(t,n,e){\"use strict\";var r=t(23),o=t(72),i=\"includes\";r(r.P+r.F*t(24)(i),\"String\",{includes:function includes(t){return!!~o(this,t,i).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},{23:23,24:24,72:72}],165:[function(t,n,e){\"use strict\";var r=t(71)(!0);t(43)(String,\"String\",function(t){this._t=String(t),this._i=0},function(){var t,n=this._t,e=this._i;return e>=n.length?{value:void 0,done:!0}:(t=r(n,e),this._i+=t.length,{value:t,done:!1})})},{43:43,71:71}],166:[function(t,n,e){var r=t(23),o=t(79),i=t(80);r(r.S,\"String\",{raw:function raw(t){for(var n=o(t.raw),e=i(n.length),r=arguments,u=r.length,c=[],a=0;e>a;)c.push(String(n[a++])),u>a&&c.push(String(r[a]));return c.join(\"\")}})},{23:23,79:79,80:80}],167:[function(t,n,e){var r=t(23);r(r.P,\"String\",{repeat:t(74)})},{23:23,74:74}],168:[function(t,n,e){\"use strict\";var r=t(23),o=t(80),i=t(72),u=\"startsWith\",c=\"\"[u];r(r.P+r.F*t(24)(u),\"String\",{startsWith:function startsWith(t){var n=i(this,t,u),e=arguments,r=o(Math.min(e.length>1?e[1]:void 0,n.length)),a=String(t);return c?c.call(n,a,r):n.slice(r,r+a.length)===a}})},{23:23,24:24,72:72,80:80}],169:[function(t,n,e){\"use strict\";t(75)(\"trim\",function(t){return function trim(){return t(this,3)}})},{75:75}],170:[function(t,n,e){\"use strict\";var r=t(47),o=t(30),i=t(31),u=t(20),c=t(23),a=t(62),s=t(25),f=t(68),l=t(67),h=t(83),p=t(84),v=t(48),g=t(29),y=t(22),d=t(37),m=t(5),x=t(79),S=t(60),w=r.getDesc,b=r.setDesc,E=r.create,O=g.get,P=o.Symbol,_=o.JSON,M=_&&_.stringify,F=!1,A=p(\"_hidden\"),j=r.isEnum,N=f(\"symbol-registry\"),I=f(\"symbols\"),k=\"function\"==typeof P,D=Object.prototype,T=u&&s(function(){return 7!=E(b({},\"a\",{get:function(){return b(this,\"a\",{value:7}).a}})).a})?function(t,n,e){var r=w(D,n);r&&delete D[n],b(t,n,e),r&&t!==D&&b(D,n,r)}:b,L=function(t){var n=I[t]=E(P.prototype);return n._k=t,u&&F&&T(D,t,{configurable:!0,set:function(n){i(this,A)&&i(this[A],t)&&(this[A][t]=!1),T(this,t,S(1,n))}}),n},R=function(t){return\"symbol\"==typeof t},C=function defineProperty(t,n,e){return e&&i(I,n)?(e.enumerable?(i(t,A)&&t[A][n]&&(t[A][n]=!1),e=E(e,{enumerable:S(0,!1)})):(i(t,A)||b(t,A,S(1,{})),t[A][n]=!0),T(t,n,e)):b(t,n,e)},G=function defineProperties(t,n){m(t);for(var e,r=y(n=x(n)),o=0,i=r.length;i>o;)C(t,e=r[o++],n[e]);return t},W=function create(t,n){return void 0===n?E(t):G(E(t),n)},z=function propertyIsEnumerable(t){var n=j.call(this,t);return n||!i(this,t)||!i(I,t)||i(this,A)&&this[A][t]?n:!0},K=function getOwnPropertyDescriptor(t,n){var e=w(t=x(t),n);return!e||!i(I,n)||i(t,A)&&t[A][n]||(e.enumerable=!0),e},U=function getOwnPropertyNames(t){for(var n,e=O(x(t)),r=[],o=0;e.length>o;)i(I,n=e[o++])||n==A||r.push(n);return r},q=function getOwnPropertySymbols(t){for(var n,e=O(x(t)),r=[],o=0;e.length>o;)i(I,n=e[o++])&&r.push(I[n]);return r},J=function stringify(t){if(void 0!==t&&!R(t)){for(var n,e,r=[t],o=1,i=arguments;i.length>o;)r.push(i[o++]);return n=r[1],\"function\"==typeof n&&(e=n),(e||!d(n))&&(n=function(t,n){return e&&(n=e.call(this,t,n)),R(n)?void 0:n}),r[1]=n,M.apply(_,r)}},B=s(function(){var t=P();return\"[null]\"!=M([t])||\"{}\"!=M({a:t})||\"{}\"!=M(Object(t))});k||(P=function Symbol(){if(R(this))throw TypeError(\"Symbol is not a constructor\");return L(h(arguments.length>0?arguments[0]:void 0))},a(P.prototype,\"toString\",function toString(){return this._k}),R=function(t){return t instanceof P},r.create=W,r.isEnum=z,r.getDesc=K,r.setDesc=C,r.setDescs=G,r.getNames=g.get=U,r.getSymbols=q,u&&!t(49)&&a(D,\"propertyIsEnumerable\",z,!0));var V={\"for\":function(t){return i(N,t+=\"\")?N[t]:N[t]=P(t)},keyFor:function keyFor(t){return v(N,t)},useSetter:function(){F=!0},useSimple:function(){F=!1}};r.each.call(\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),function(t){var n=p(t);V[t]=k?n:L(n)}),F=!0,c(c.G+c.W,{Symbol:P}),c(c.S,\"Symbol\",V),c(c.S+c.F*!k,\"Object\",{create:W,defineProperty:C,defineProperties:G,getOwnPropertyDescriptor:K,getOwnPropertyNames:U,getOwnPropertySymbols:q}),_&&c(c.S+c.F*(!k||B),\"JSON\",{stringify:J}),l(P,\"Symbol\"),l(Math,\"Math\",!0),l(o.JSON,\"JSON\",!0)},{20:20,22:22,23:23,25:25,29:29,30:30,31:31,37:37,47:47,48:48,49:49,5:5,60:60,62:62,67:67,68:68,79:79,83:83,84:84}],171:[function(t,n,e){\"use strict\";var r=t(47),o=t(62),i=t(15),u=t(39),c=t(31),a=i.frozenStore,s=i.WEAK,f=Object.isExtensible||u,l={},h=t(16)(\"WeakMap\",function(t){return function WeakMap(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function get(t){if(u(t)){if(!f(t))return a(this).get(t);if(c(t,s))return t[s][this._i]}},set:function set(t,n){return i.def(this,t,n)}},i,!0,!0);7!=(new h).set((Object.freeze||Object)(l),7).get(l)&&r.each.call([\"delete\",\"has\",\"get\",\"set\"],function(t){var n=h.prototype,e=n[t];o(n,t,function(n,r){if(u(n)&&!f(n)){var o=a(this)[t](n,r);return\"set\"==t?this:o}return e.call(this,n,r)})})},{15:15,16:16,31:31,39:39,47:47,62:62}],172:[function(t,n,e){\"use strict\";var r=t(15);t(16)(\"WeakSet\",function(t){return function WeakSet(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function add(t){return r.def(this,t,!0)}},r,!1,!0)},{15:15,16:16}],173:[function(t,n,e){\"use strict\";var r=t(23),o=t(8)(!0);r(r.P,\"Array\",{includes:function includes(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),t(4)(\"includes\")},{23:23,4:4,8:8}],174:[function(t,n,e){var r=t(23);r(r.P,\"Map\",{toJSON:t(14)(\"Map\")})},{14:14,23:23}],175:[function(t,n,e){var r=t(23),o=t(56)(!0);r(r.S,\"Object\",{entries:function entries(t){return o(t)}})},{23:23,56:56}],176:[function(t,n,e){var r=t(47),o=t(23),i=t(57),u=t(79),c=t(60);o(o.S,\"Object\",{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(t){for(var n,e,o=u(t),a=r.setDesc,s=r.getDesc,f=i(o),l={},h=0;f.length>h;)e=s(o,n=f[h++]),n in l?a(l,n,c(0,e)):l[n]=e;return l}})},{23:23,47:47,57:57,60:60,79:79}],177:[function(t,n,e){var r=t(23),o=t(56)(!1);r(r.S,\"Object\",{values:function values(t){return o(t)}})},{23:23,56:56}],178:[function(t,n,e){var r=t(23),o=t(63)(/[\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\");r(r.S,\"RegExp\",{escape:function escape(t){return o(t)}})},{23:23,63:63}],179:[function(t,n,e){var r=t(23);r(r.P,\"Set\",{toJSON:t(14)(\"Set\")})},{14:14,23:23}],180:[function(t,n,e){\"use strict\";var r=t(23),o=t(71)(!0);r(r.P,\"String\",{at:function at(t){return o(this,t)}})},{23:23,71:71}],181:[function(t,n,e){\"use strict\";var r=t(23),o=t(73);r(r.P,\"String\",{padLeft:function padLeft(t){return o(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},{23:23,73:73}],182:[function(t,n,e){\"use strict\";var r=t(23),o=t(73);r(r.P,\"String\",{padRight:function padRight(t){return o(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},{23:23,73:73}],183:[function(t,n,e){\"use strict\";t(75)(\"trimLeft\",function(t){return function trimLeft(){return t(this,1)}})},{75:75}],184:[function(t,n,e){\"use strict\";t(75)(\"trimRight\",function(t){return function trimRight(){return t(this,2)}})},{75:75}],185:[function(t,n,e){var r=t(47),o=t(23),i=t(18),u=t(17).Array||Array,c={},a=function(t,n){r.each.call(t.split(\",\"),function(t){void 0==n&&t in u?c[t]=u[t]:t in[]&&(c[t]=i(Function.call,[][t],n))})};a(\"pop,reverse,shift,keys,values,entries\",1),a(\"indexOf,every,some,forEach,map,filter,find,findIndex,includes\",3),a(\"join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill\"),o(o.S,\"Array\",c)},{17:17,18:18,23:23,47:47}],186:[function(t,n,e){t(92);var r=t(30),o=t(32),i=t(46),u=t(84)(\"iterator\"),c=r.NodeList,a=r.HTMLCollection,s=c&&c.prototype,f=a&&a.prototype,l=i.NodeList=i.HTMLCollection=i.Array;s&&!s[u]&&o(s,u,l),f&&!f[u]&&o(f,u,l)},{30:30,32:32,46:46,84:84,92:92}],187:[function(t,n,e){var r=t(23),o=t(76);r(r.G+r.B,{setImmediate:o.set,clearImmediate:o.clear})},{23:23,76:76}],188:[function(t,n,e){var r=t(30),o=t(23),i=t(34),u=t(58),c=r.navigator,a=!!c&&/MSIE .\\./.test(c.userAgent),s=function(t){return a?function(n,e){return t(i(u,[].slice.call(arguments,2),\"function\"==typeof n?n:Function(n)),e)}:t};o(o.G+o.B+o.F*a,{setTimeout:s(r.setTimeout),setInterval:s(r.setInterval)})},{23:23,30:30,34:34,58:58}],189:[function(t,n,e){t(86),t(170),t(125),t(133),t(137),t(138),t(126),t(136),t(135),t(131),t(132),t(130),t(127),t(129),t(134),t(128),t(96),t(95),t(115),t(116),t(117),t(118),t(119),t(120),t(121),t(122),t(123),t(124),t(98),t(99),t(100),t(101),t(102),t(103),t(104),t(105),t(106),t(107),t(108),t(109),t(110),t(111),t(112),t(113),t(114),t(163),t(166),t(169),t(165),t(161),t(162),t(164),t(167),t(168),t(91),t(93),t(92),t(94),t(87),t(88),t(90),t(89),t(154),t(155),t(156),t(157),t(158),t(159),t(139),t(97),t(160),t(171),t(172),t(140),t(141),t(142),t(143),t(144),t(147),t(145),t(146),t(148),t(149),t(150),t(151),t(153),t(152),t(173),t(180),t(181),t(182),t(183),t(184),t(178),t(176),t(177),t(175),t(174),t(179),t(185),t(188),t(187),t(186),n.exports=t(17)},{100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,128:128,129:129,130:130,131:131,132:132,133:133,134:134,135:135,136:136,137:137,138:138,139:139,140:140,141:141,142:142,143:143,144:144,145:145,146:146,147:147,148:148,149:149,150:150,151:151,152:152,153:153,154:154,155:155,156:156,157:157,158:158,159:159,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,17:17,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,188:188,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99}],190:[function(t,n,e){(function(t){!function(t){\"use strict\";function wrap(t,n,e,r){var o=Object.create((n||Generator).prototype),i=new Context(r||[]);return o._invoke=makeInvokeMethod(t,e,i),o}function tryCatch(t,n,e){try{return{type:\"normal\",arg:t.call(n,e)}}catch(r){return{type:\"throw\",arg:r}}}function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}function defineIteratorMethods(t){[\"next\",\"throw\",\"return\"].forEach(function(n){t[n]=function(t){return this._invoke(n,t)}})}function AwaitArgument(t){this.arg=t}function AsyncIterator(t){function invoke(n,o){var i=t[n](o),u=i.value;return u instanceof AwaitArgument?Promise.resolve(u.arg).then(e,r):Promise.resolve(u).then(function(t){return i.value=t,i})}function enqueue(t,e){function callInvokeWithMethodAndArg(){return invoke(t,e)}return n=n?n.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):new Promise(function(t){t(callInvokeWithMethodAndArg())})}\"object\"==typeof process&&process.domain&&(invoke=process.domain.bind(invoke));var n,e=invoke.bind(t,\"next\"),r=invoke.bind(t,\"throw\");invoke.bind(t,\"return\");this._invoke=enqueue}function makeInvokeMethod(t,n,r){var o=c;return function invoke(i,u){if(o===s)throw new Error(\"Generator is already running\");if(o===f){if(\"throw\"===i)throw u;return doneResult()}for(;;){var h=r.delegate;if(h){if(\"return\"===i||\"throw\"===i&&h.iterator[i]===e){r.delegate=null;var p=h.iterator[\"return\"];if(p){var v=tryCatch(p,h.iterator,u);if(\"throw\"===v.type){i=\"throw\",u=v.arg;continue}}if(\"return\"===i)continue}var v=tryCatch(h.iterator[i],h.iterator,u);if(\"throw\"===v.type){r.delegate=null,i=\"throw\",u=v.arg;continue}i=\"next\",u=e;var g=v.arg;if(!g.done)return o=a,g;r[h.resultName]=g.value,r.next=h.nextLoc,r.delegate=null}if(\"next\"===i)r._sent=u,o===a?r.sent=u:r.sent=e;else if(\"throw\"===i){if(o===c)throw o=f,u;r.dispatchException(u)&&(i=\"next\",u=e)}else\"return\"===i&&r.abrupt(\"return\",u);o=s;var v=tryCatch(t,n,r);if(\"normal\"===v.type){o=r.done?f:a;var g={value:v.arg,done:r.done};if(v.arg!==l)return g;r.delegate&&\"next\"===i&&(u=e)}else\"throw\"===v.type&&(o=f,i=\"throw\",u=v.arg)}}}function pushTryEntry(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function resetTryEntry(t){var n=t.completion||{};n.type=\"normal\",delete n.arg,t.completion=n}function Context(t){this.tryEntries=[{tryLoc:\"root\"}],t.forEach(pushTryEntry,this),this.reset(!0)}function values(t){if(t){var n=t[o];if(n)return n.call(t);if(\"function\"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,u=function next(){for(;++i<t.length;)if(r.call(t,i))return next.value=t[i],next.done=!1,next;return next.value=e,next.done=!0,next};return u.next=u}}return{next:doneResult}}function doneResult(){return{value:e,done:!0}}var e,r=Object.prototype.hasOwnProperty,o=\"function\"==typeof Symbol&&Symbol.iterator||\"@@iterator\",i=\"object\"==typeof n,u=t.regeneratorRuntime;if(u)return void(i&&(n.exports=u));u=t.regeneratorRuntime=i?n.exports:{},u.wrap=wrap;var c=\"suspendedStart\",a=\"suspendedYield\",s=\"executing\",f=\"completed\",l={},h=GeneratorFunctionPrototype.prototype=Generator.prototype;GeneratorFunction.prototype=h.constructor=GeneratorFunctionPrototype,GeneratorFunctionPrototype.constructor=GeneratorFunction,GeneratorFunction.displayName=\"GeneratorFunction\",u.isGeneratorFunction=function(t){var n=\"function\"==typeof t&&t.constructor;return n?n===GeneratorFunction||\"GeneratorFunction\"===(n.displayName||n.name):!1},u.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,GeneratorFunctionPrototype):t.__proto__=GeneratorFunctionPrototype,t.prototype=Object.create(h),t},u.awrap=function(t){return new AwaitArgument(t)},defineIteratorMethods(AsyncIterator.prototype),u.async=function(t,n,e,r){var o=new AsyncIterator(wrap(t,n,e,r));return u.isGeneratorFunction(n)?o:o.next().then(function(t){return t.done?t.value:o.next()})},defineIteratorMethods(h),h[o]=function(){return this},h.toString=function(){return\"[object Generator]\"},u.keys=function(t){var n=[];for(var e in t)n.push(e);return n.reverse(),function next(){for(;n.length;){var e=n.pop();if(e in t)return next.value=e,next.done=!1,next}return next.done=!0,next}},u.values=values,Context.prototype={constructor:Context,reset:function(t){if(this.prev=0,this.next=0,this.sent=e,this.done=!1,this.delegate=null,this.tryEntries.forEach(resetTryEntry),!t)for(var n in this)\"t\"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0],n=t.completion;if(\"throw\"===n.type)throw n.arg;return this.rval},dispatchException:function(t){function handle(e,r){return i.type=\"throw\",i.arg=t,n.next=e,!!r}if(this.done)throw t;for(var n=this,e=this.tryEntries.length-1;e>=0;--e){var o=this.tryEntries[e],i=o.completion;if(\"root\"===o.tryLoc)return handle(\"end\");if(o.tryLoc<=this.prev){var u=r.call(o,\"catchLoc\"),c=r.call(o,\"finallyLoc\");if(u&&c){if(this.prev<o.catchLoc)return handle(o.catchLoc,!0);if(this.prev<o.finallyLoc)return handle(o.finallyLoc)}else if(u){if(this.prev<o.catchLoc)return handle(o.catchLoc,!0)}else{if(!c)throw new Error(\"try statement without catch or finally\");if(this.prev<o.finallyLoc)return handle(o.finallyLoc)}}}},abrupt:function(t,n){for(var e=this.tryEntries.length-1;e>=0;--e){var o=this.tryEntries[e];if(o.tryLoc<=this.prev&&r.call(o,\"finallyLoc\")&&this.prev<o.finallyLoc){var i=o;break}}i&&(\"break\"===t||\"continue\"===t)&&i.tryLoc<=n&&n<=i.finallyLoc&&(i=null);var u=i?i.completion:{};return u.type=t,u.arg=n,i?this.next=i.finallyLoc:this.complete(u),l},complete:function(t,n){if(\"throw\"===t.type)throw t.arg;\"break\"===t.type||\"continue\"===t.type?this.next=t.arg:\"return\"===t.type?(this.rval=t.arg,this.next=\"end\"):\"normal\"===t.type&&n&&(this.next=n)},finish:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var e=this.tryEntries[n];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),resetTryEntry(e),l}},\"catch\":function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var e=this.tryEntries[n];if(e.tryLoc===t){var r=e.completion;if(\"throw\"===r.type){var o=r.arg;resetTryEntry(e)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(t,n,e){return this.delegate={iterator:values(t),resultName:n,nextLoc:e},l}}}(\"object\"==typeof t?t:\"object\"==typeof window?window:\"object\"==typeof self?self:this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[1]);\n","/* */ \n;(function () {\n var parents = function (node, ps) {\n if (node.parentNode === null) { return ps; }\n\n return parents(node.parentNode, ps.concat([node]));\n };\n\n var style = function (node, prop) {\n return getComputedStyle(node, null).getPropertyValue(prop);\n };\n\n var overflow = function (node) {\n return style(node, \"overflow\") + style(node, \"overflow-y\") + style(node, \"overflow-x\");\n };\n\n var scroll = function (node) {\n return (/(auto|scroll)/).test(overflow(node));\n };\n\n var scrollParent = function (node) {\n if (!(node instanceof HTMLElement)) {\n return ;\n }\n\n var ps = parents(node.parentNode, []);\n\n for (var i = 0; i < ps.length; i += 1) {\n if (scroll(ps[i])) {\n return ps[i];\n }\n }\n\n return window;\n };\n\n // If common js is defined use it.\n if (typeof module === \"object\" && module !== null) {\n module.exports = scrollParent;\n } else {\n window.Scrollparent = scrollParent;\n }\n})();\n","module.exports = require(\"npm:scrollparent@0.1.0/scrollparent.js\");","'use strict';\n\nimport {SchemaManager, RedocComponent, BaseComponent} from '../base';\nimport OptionsManager from '../../options';\n\n@RedocComponent({\n selector: 'api-info',\n styles: [`\n .api-info-header{font-weight:normal}:host>div{width:60%}a.openapi-button{padding:3px 8px 4px 8px;color:#0033a0;border:1px solid #0033a0;margin-left:0.5em;font-weight:normal}\n `],\n template: `\n <div>\n <h1 class=\"api-info-header\">{{data.title}} ({{data.version}})</h1>\n <p *ngIf=\"data.description\" innerHtml=\"{{data.description | marked}}\"> </p>\n <p>\n <!-- TODO: create separate components for contact and license ? -->\n <span *ngIf=\"data.contact\"> Contact:\n <a *ngIf=\"data.contact.url\" href=\"{{data.contact.url}}\">\n {{data.contact.name || data.contact.url}}</a>\n <a *ngIf=\"data.contact.email\" href=\"mailto:{{data.contact.email}}\">\n {{data.contact.email}}</a>\n </span>\n <span *ngIf=\"data.license\"> License:\n <a *ngIf=\"data.license.url\" href=\"{{data.license.url}}\"> {{data.license.name}} </a>\n <span *ngIf=\"!data.license.url\"> {{data.license.name}} </span>\n </span>\n </p>\n <p>\n Download OpenAPI (fka Swagger) specification:\n <a class=\"openapi-button\" target=\"_blank\" attr.href='{{specUrl}}'> Download </a>\n </p>\n </div>\n `\n})\n@Reflect.metadata('parameters', [[SchemaManager], [OptionsManager]])\nexport default class ApiInfo extends BaseComponent {\n constructor(schemaMgr, optionsMgr) {\n super(schemaMgr);\n this.optionsMgr = optionsMgr;\n }\n\n prepareModel() {\n this.data = this.componentSchema.info;\n this.specUrl = this.optionsMgr.options.specUrl;\n }\n}\n","'use strict';\n\nimport {RedocComponent, BaseComponent} from '../base';\n\n@RedocComponent({\n selector: 'api-logo',\n styles: [`\n img{max-height:150px;width:auto;display:inline-block;max-width:100%;box-sizing:border-box}\n `],\n template: `\n <img *ngIf=\"data.imgUrl\" [attr.src]=\"data.imgUrl\" [ngStyle]=\"{'background-color': data.bgColor}\">\n `\n})\nexport default class ApiLogo extends BaseComponent {\n constructor(schemaMgr) {\n super(schemaMgr);\n }\n\n prepareModel() {\n this.data = {};\n let logoInfo = this.componentSchema.info['x-logo'];\n if (!logoInfo) return;\n this.data.imgUrl = logoInfo.url;\n this.data.bgColor = logoInfo.backgroundColor || 'transparent';\n }\n}\n","'use strict';\n\nimport {RedocComponent, BaseComponent} from '../base';\nimport JsonSchema from '../JsonSchema/json-schema';\nimport JsonSchemaLazy from '../JsonSchema/json-schema-lazy';\n\nfunction safePush(obj, prop, item) {\n if (!obj[prop]) obj[prop] = [];\n obj[prop].push(item);\n}\n\n@RedocComponent({\n selector: 'params-list',\n template: `\n <h5 class=\"param-list-header\" *ngIf=\"data.params.length\"> Parameters </h5>\n <template ngFor [ngForOf]=\"data.params\" #paramType=\"$implicit\">\n <header class=\"paramType\">\n {{paramType.place}} Parameters\n <span class=\"hint--top-right hint--large\" [attr.data-hint]=\"paramType.placeHint\">?</span>\n </header>\n <br>\n <div class=\"params-wrap\">\n <div *ngFor=\"#param of paramType.params\" class=\"param\">\n <div class=\"param-name\">\n <span class=\"param-name-content\"> {{param.name}} </span>\n </div>\n <div class=\"param-info\">\n <div>\n <span class=\"param-type {{param.type}}\" [ngClass]=\"{'with-hint': param._displayTypeHint}\"\n title=\"{{param._displayTypeHint}}\"> {{param._displayType}} {{param._displayFormat}}</span>\n <span *ngIf=\"param.required\" class=\"param-required\">Required</span>\n <div *ngIf=\"param.enum\" class=\"param-enum\">\n <span *ngFor=\"#enumItem of param.enum\" class=\"enum-value {{enumItem.type}}\"> {{enumItem.val | json}} </span>\n </div>\n </div>\n <div class=\"param-description\" innerHtml=\"{{param.description | marked}}\"></div>\n </div>\n </div>\n </div>\n </template>\n\n <div *ngIf=\"data.bodyParam\">\n <h5 class=\"param-list-header\" *ngIf=\"data.bodyParam\"> Request Body </h5>\n\n <div class=\"body-param-description\" innerHtml=\"{{data.bodyParam.description | marked}}\"></div>\n <div>\n <br>\n <json-schema-lazy [skipReadOnly]=\"true\" [auto]=\"true\" pointer=\"{{data.bodyParam.pointer}}/schema\">\n </json-schema-lazy>\n </div>\n </div>\n `,\n styles: [`\n .param-list-header{border-bottom:1px solid rgba(38,50,56,0.3);padding:0.2em 0;margin:3.5em 0 .8em 0;color:rgba(38,50,56,0.5);font-weight:normal;text-transform:uppercase}.param-name{font-size:0.929em;padding:10px 0 10px 0;font-weight:400;box-sizing:border-box;line-height:20px;border-left:1px solid rgba(0,51,160,0.5);white-space:nowrap;position:relative;vertical-align:top}.param-name-content{padding-right:25px;display:inline-block;font-family:Montserrat,sans-serif}.param-info{padding:10px 0;box-sizing:border-box;border-bottom:1px solid #ccc;width:75%}.param-range{color:rgba(0,51,160,0.7);position:relative;top:1px;padding:0 4px;border-radius:2px;background-color:rgba(0,51,160,0.1);margin-left:6px}.param-description{font-size:13px}.param-required{color:red;font-weight:bold;font-size:12px;line-height:20px;vertical-align:middle}.param-type{color:#263238;font-size:0.929em;line-height:20px;vertical-align:middle;font-weight:normal}.param-type.array:before{content:\"Array of \";color:#263238;font-weight:300}.param-type{color:rgba(38,50,56,0.4)}.param-type.with-hint{display:inline-block;margin-bottom:0.4em;border-bottom:1px dotted rgba(38,50,56,0.4);padding:0;cursor:help}.param-type-trivial{margin:10px 10px 0;display:inline-block}.param-name>span:before{content:\"\";display:inline-block;width:1px;height:7px;background-color:#0033a0;margin:0 10px;vertical-align:middle}.param-name>span:after{content:\"\";position:absolute;border-top:1px solid rgba(0,51,160,0.5);width:10px;left:0;top:21px}.param:first-of-type>.param-name:before{content:\"\";display:block;position:absolute;left:-1px;top:0;border-left:2px solid #fff;height:21px}.param:last-of-type>.param-name,.param.last>.param-name{position:relative}.param:last-of-type>.param-name:after,.param.last>.param-name:after{content:\"\";display:block;position:absolute;left:-2px;border-left:2px solid #fff;top:22px;background-color:white;bottom:0}.param-wrap:last-of-type>.param-schema{border-left-color:transparent}.param-schema .param-wrap:first-of-type .param-name:before{display:none !important}.param-schema.last>td{border-left:0}.param-enum{color:#263238;font-size:13px}.param-enum:before{content:\"Values: {\"}.param-enum:after{content:\"}\"}.param-enum>.enum-value:after{content:\", \"}.param-enum>.enum-value:last-of-type:after{content:none}header.paramType{margin:10px 0;text-transform:capitalize}.params-wrap{display:table;width:100%}.param-name{display:table-cell;vertical-align:top}.param-info{display:table-cell;width:100%}.param{display:table-row}.param:last-of-type>.param-name{border-left:0}.param:last-of-type>.param-name:after{content:\"\";display:block;position:absolute;left:0;border-left:1px solid rgba(0,51,160,0.5);height:21px;background-color:white;top:0}.param:first-of-type .param-name:after{content:\"\";display:block;position:absolute;left:-1px;border-left:2px solid #fff;height:20px;background-color:white;top:0}[data-hint]{width:1.2em;text-align:center;border-radius:50%;vertical-align:middle;color:#999;line-height:1.2;text-transform:none;cursor:help;border:1px solid #999;margin-left:0.5em}@media (max-width: 520px){[data-hint]{float:right}[data-hint]:after{margin-left:12px;transform:translateX(-100%) translateY(-8px);-moz-transform:translateX(-100%) translateY(-8px);-webkit-transform:translateX(-100%) translateY(-8px)}}\n `],\n directives: [JsonSchema, JsonSchemaLazy]\n})\nexport default class ParamsList extends BaseComponent {\n constructor(schemaMgr) {\n super(schemaMgr);\n }\n\n prepareModel() {\n this.data = {};\n let paramsList = this.schemaMgr.getMethodParams(this.pointer, true);\n\n paramsList = paramsList.map((paramData) => {\n let propPointer = paramData._pointer;\n if (paramData.in === 'body') return paramData;\n return JsonSchema.injectPropertyData(paramData, paramData.name, propPointer);\n });\n\n let paramsMap = this.orderParams(paramsList);\n\n if (paramsMap.body && paramsMap.body.length) {\n let bodyParam = paramsMap.body[0];\n bodyParam.pointer = bodyParam._pointer;\n this.data.bodyParam = bodyParam;\n paramsMap.body = undefined;\n }\n\n this.data.noParams = !(Object.keys(paramsMap).length || this.data.bodyParam);\n\n let paramsPlaces = ['path', 'query', 'formData', 'header', 'body'];\n let placeHint = {\n path: `Used together with Path Templating, where the parameter value is actually part\n of the operation's URL. This does not include the host or base path of the API.\n For example, in /items/{itemId}, the path parameter is itemId`,\n query: `Parameters that are appended to the URL.\n For example, in /items?id=###, the query parameter is id`,\n formData: `Parameters that are submitted through a form.\n application/x-www-form-urlencoded, multipart/form-data or both are usually\n used as the content type of the request`,\n header: 'Custom headers that are expected as part of the request'\n };\n let params = [];\n paramsPlaces.forEach(place => {\n if (paramsMap[place] && paramsMap[place].length) {\n params.push({place: place, placeHint: placeHint[place], params: paramsMap[place]});\n }\n });\n this.data.params = params;\n }\n\n orderParams(params) {\n let res = {};\n params.forEach((param) => safePush(res, param.in, param));\n return res;\n }\n}\n","'use strict';\n\nimport {ViewChildren, QueryList, ChangeDetectorRef, ChangeDetectionStrategy} from 'angular2/core';\n\nimport {RedocComponent, BaseComponent, SchemaManager} from '../base';\nimport JsonPointer from '../../utils/JsonPointer';\nimport {Tabs, Tab} from '../../common/components/Tabs/tabs';\nimport SchemaSample from '../SchemaSample/schema-sample';\nimport {PrismPipe} from '../../utils/pipes';\nimport {redocEvents} from '../../events';\n\n@RedocComponent({\n selector: 'request-samples',\n template: `\n <header *ngIf=\"data.bodySchemaPtr || data.samples.length\"> Request samples </header>\n <schema-sample *ngIf=\"!data.samples.length\" [pointer]=\"data.bodySchemaPtr\"> </schema-sample>\n <tabs *ngIf=\"data.samples.length\" (change)=changeLangNotify($event)>\n <tab tabTitle=\"JSON\">\n <schema-sample [pointer]=\"data.bodySchemaPtr\"> </schema-sample>\n </tab>\n <tab *ngFor=\"#sample of data.samples\" [tabTitle]=\"sample.lang\">\n <pre innerHtml=\"{{sample.source | prism:sample.lang}}\"></pre>\n </tab>\n </tabs>\n `,\n styles: [`\n header{font-family:Montserrat;font-size:0.929em;text-transform:uppercase;margin:0;color:#9fb4be;text-transform:uppercase;font-weight:normal}:host>tabs>ul li{font-family:Montserrat;font-size:.9em;border-radius:2px;margin:2px 0;padding:3px 10px 2px 10px;line-height:1.25;color:#9fb4be}:host>tabs>ul li:hover{background-color:rgba(255,255,255,0.1);color:#ffffff}:host>tabs>ul li.active{background-color:#ffffff;color:#263238}:host tabs ul{padding-top:10px}pre{overflow-x:auto;word-break:break-all;word-wrap:break-word;white-space:pre-wrap}\n `],\n directives: [SchemaSample, Tabs, Tab],\n inputs: ['bodySchemaPtr'],\n pipes: [PrismPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n@Reflect.metadata('parameters', [[SchemaManager], [new ViewChildren(Tabs), QueryList], [ChangeDetectorRef]])\nexport default class RequestSamples extends BaseComponent {\n constructor(schemaMgr, tabs, changeDetector) {\n super(schemaMgr);\n tabs.changes.subscribe(_ => {\n this.tabs = tabs.first;\n this.subscribeForEvents(_);\n });\n this.changeDetector = changeDetector;\n }\n\n changeLangNotify(lang) {\n redocEvents.samplesLanguageChanged.next(lang);\n }\n\n subscribeForEvents() {\n if (!this.tabs) return;\n redocEvents.samplesLanguageChanged.subscribe((sampleLang) => {\n this.tabs.selectyByTitle(sampleLang);\n this.changeDetector.markForCheck();\n });\n }\n\n prepareModel() {\n this.data = {};\n this.data.bodySchemaPtr = JsonPointer.join(this.bodySchemaPtr, 'schema');\n this.data.samples = this.componentSchema['x-code-samples'] || [];\n }\n}\n","'use strict';\n\nimport {JsonPointer} from '../../utils/JsonPointer';\nimport {RedocComponent, BaseComponent} from '../base';\n\nimport ParamsList from '../ParamsList/params-list';\nimport ResponsesList from '../ResponsesList/responses-list';\nimport ResponsesSamples from '../ResponsesSamples/responses-samples';\nimport SchemaSample from '../SchemaSample/schema-sample';\nimport RequestSamples from '../RequestSamples/request-samples';\n\n@RedocComponent({\n selector: 'method',\n template: `\n <div class=\"method\">\n <div class=\"method-content\">\n <h2 class=\"method-header sharable-header\">\n <a class=\"share-link\" href=\"#{{data.methodAnchor}}\"></a>{{data.methodInfo.summary}}\n </h2>\n <div class=\"method-tags\" *ngIf=\"data.methodInfo.tags.length\">\n <a *ngFor=\"#tag of data.methodInfo.tags\" attr.href=\"#{{tag}}\"> {{tag}} </a>\n </div>\n <p *ngIf=\"data.methodInfo.description\" class=\"method-description\"\n innerHtml=\"{{data.methodInfo.description | marked}}\">\n </p>\n <params-list pointer=\"{{pointer}}/parameters\"> </params-list>\n <responses-list pointer=\"{{pointer}}/responses\"> </responses-list>\n </div>\n <div class=\"method-samples\">\n <h5>Definition</h5>\n <span class=\"method-endpoint\">\n <h5 class=\"http-method\" [ngClass]=\"data.httpMethod\">{{data.httpMethod}}</h5>\n <span class=\"api-url\">{{data.apiUrl}}</span> <span class=\"path\">{{data.path}}</span>\n </span>\n <div *ngIf=\"data.bodyParam\">\n <br>\n <request-samples [pointer]=\"pointer\" [bodySchemaPtr]=\"data.bodyParam._pointer\">\n </request-samples>\n </div>\n <div>\n <br>\n <responses-samples pointer=\"{{pointer}}/responses\"> </responses-samples>\n </div>\n </div>\n <div>\n `,\n styles: [`\n .share-link{cursor:pointer;margin-left:-15px;padding:0;line-height:1;width:15px;display:inline-block}.share-link:before{content:\"\";width:15px;height:15px;background-size:contain;background-image:url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBmaWxsPSIjMDEwMTAxIiBkPSJNNDU5LjcgMjMzLjRsLTkwLjUgOTAuNWMtNTAgNTAtMTMxIDUwLTE4MSAwIC03LjktNy44LTE0LTE2LjctMTkuNC0yNS44bDQyLjEtNDIuMWMyLTIgNC41LTMuMiA2LjgtNC41IDIuOSA5LjkgOCAxOS4zIDE1LjggMjcuMiAyNSAyNSA2NS42IDI0LjkgOTAuNSAwbDkwLjUtOTAuNWMyNS0yNSAyNS02NS42IDAtOTAuNSAtMjQuOS0yNS02NS41LTI1LTkwLjUgMGwtMzIuMiAzMi4yYy0yNi4xLTEwLjItNTQuMi0xMi45LTgxLjYtOC45bDY4LjYtNjguNmM1MC01MCAxMzEtNTAgMTgxIDBDNTA5LjYgMTAyLjMgNTA5LjYgMTgzLjQgNDU5LjcgMjMzLjR6TTIyMC4zIDM4Mi4ybC0zMi4yIDMyLjJjLTI1IDI0LjktNjUuNiAyNC45LTkwLjUgMCAtMjUtMjUtMjUtNjUuNiAwLTkwLjVsOTAuNS05MC41YzI1LTI1IDY1LjUtMjUgOTAuNSAwIDcuOCA3LjggMTIuOSAxNy4yIDE1LjggMjcuMSAyLjQtMS40IDQuOC0yLjUgNi44LTQuNWw0Mi4xLTQyYy01LjQtOS4yLTExLjYtMTgtMTkuNC0yNS44IC01MC01MC0xMzEtNTAtMTgxIDBsLTkwLjUgOTAuNWMtNTAgNTAtNTAgMTMxIDAgMTgxIDUwIDUwIDEzMSA1MCAxODEgMGw2OC42LTY4LjZDMjc0LjYgMzk1LjEgMjQ2LjQgMzkyLjMgMjIwLjMgMzgyLjJ6Ii8+PC9zdmc+Cg==\");opacity:0.5;visibility:hidden;display:inline-block;vertical-align:middle}.sharable-header{color:#263238}.sharable-header:hover .share-link:before,.share-link:hover:before{visibility:visible}:host{padding-bottom:100px;display:block;border-bottom:1px solid rgba(127,127,127,0.25)}responses-list,params-list{display:block}.method-header{margin-bottom:.9em}.method-endpoint{margin:0 0 2em 0;padding:10px 20px;border-radius:4px;background-color:#222d32;display:block;font-weight:300}.method-endpoint>h5{padding-top:1px;padding-bottom:0;margin:0;font-size:.8em;color:#263238;vertical-align:middle;display:inline-block;border-radius:2px}.api-url{color:rgba(255,255,255,0.8);margin-left:10px;margin-top:2px;position:relative;top:1px;font-family:Montserrat,sans-serif;font-size:0.929em !important}.path{font-family:Montserrat,sans-serif;position:relative;top:1px;color:#ffffff;font-size:0.929em !important}.method-tags{margin-top:20px}.method-tags a{font-size:16px;color:#999;display:inline-block;padding:0 0.5em;text-decoration:none}.method-tags a:before{content:'#';margin-right:-0.4em}.method-tags a:first-of-type{padding:0}.method-content,.method-samples{display:block;box-sizing:border-box;float:left}.method-content{width:60%;padding:40px}.method-samples{color:#fafbfc;width:40%;padding:40px;background:#263238}responses-samples{display:block}.method-samples header,.method-samples>h5{color:#9fb4be;text-transform:uppercase}.method-samples>h5{margin-bottom:8px}.method-samples schema-sample{display:block}.method:after{content:\"\";display:table;clear:both}.method-description{padding:6px 0 10px 0;margin:0}.http-method{color:#263238;background:#ffffff;padding:3px 10px;text-transform:uppercase}@media (max-width: 1100px){.methods:before{display:none}.method-samples,.method-content{width:100%}.method-samples{margin-top:2em}:host{padding-bottom:0}}\n `],\n directives: [ParamsList, ResponsesList, ResponsesSamples, SchemaSample, RequestSamples],\n inputs: ['tag']\n})\nexport default class Method extends BaseComponent {\n constructor(schemaMgr) {\n super(schemaMgr);\n }\n\n prepareModel() {\n this.data = {};\n this.data.apiUrl = this.schemaMgr.apiUrl;\n this.data.httpMethod = JsonPointer.baseName(this.pointer);\n this.data.path = JsonPointer.baseName(this.pointer, 2);\n this.data.methodInfo = this.componentSchema;\n this.data.methodInfo.tags = this.filterMainTags(this.data.methodInfo.tags);\n this.data.bodyParam = this.findBodyParam();\n if (this.componentSchema.operationId) {\n this.data.methodAnchor = 'operation/' + encodeURIComponent(this.componentSchema.operationId);\n } else {\n this.data.methodAnchor = 'tag/' + encodeURIComponent(this.tag + this.pointer);\n }\n }\n\n filterMainTags(tags) {\n var tagsMap = this.schemaMgr.getTagsMap();\n if (!tags) return [];\n return tags.filter(tag => tagsMap[tag] && tagsMap[tag]['x-traitTag']);\n }\n\n findBodyParam() {\n let pathParams = this.schemaMgr.getMethodParams(this.pointer, true);\n let bodyParam = pathParams.find(param => param.in === 'body');\n return bodyParam;\n }\n}\n","'use strict';\n\nimport {RedocComponent, BaseComponent} from '../base';\nimport Method from '../Method/method';\nimport {EncodeURIComponentPipe} from '../../utils/pipes';\n\n@RedocComponent({\n selector: 'methods-list',\n template: `\n <div class=\"methods\">\n <div class=\"tag\" *ngFor=\"#tag of data.tags\">\n <div class=\"tag-info\" [attr.tag]=\"tag.name\">\n <h1 class=\"sharable-header\"> <a class=\"share-link\" href=\"#tag/{{tag.name | encodeURIComponent}}\"></a>{{tag.name}} </h1>\n <p *ngIf=\"tag.description\" innerHtml=\"{{ tag.description | marked }}\"> </p>\n </div>\n <method *ngFor=\"#method of tag.methods\" [pointer]=\"method.pointer\" [attr.pointer]=\"method.pointer\"\n [attr.tag]=\"method.tag\" [tag]=\"method.tag\" [attr.operation-id]=\"method.operationId\"></method>\n </div>\n </div>\n `,\n styles: [`\n .share-link{cursor:pointer;margin-left:-15px;padding:0;line-height:1;width:15px;display:inline-block}.share-link:before{content:\"\";width:15px;height:15px;background-size:contain;background-image:url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBmaWxsPSIjMDEwMTAxIiBkPSJNNDU5LjcgMjMzLjRsLTkwLjUgOTAuNWMtNTAgNTAtMTMxIDUwLTE4MSAwIC03LjktNy44LTE0LTE2LjctMTkuNC0yNS44bDQyLjEtNDIuMWMyLTIgNC41LTMuMiA2LjgtNC41IDIuOSA5LjkgOCAxOS4zIDE1LjggMjcuMiAyNSAyNSA2NS42IDI0LjkgOTAuNSAwbDkwLjUtOTAuNWMyNS0yNSAyNS02NS42IDAtOTAuNSAtMjQuOS0yNS02NS41LTI1LTkwLjUgMGwtMzIuMiAzMi4yYy0yNi4xLTEwLjItNTQuMi0xMi45LTgxLjYtOC45bDY4LjYtNjguNmM1MC01MCAxMzEtNTAgMTgxIDBDNTA5LjYgMTAyLjMgNTA5LjYgMTgzLjQgNDU5LjcgMjMzLjR6TTIyMC4zIDM4Mi4ybC0zMi4yIDMyLjJjLTI1IDI0LjktNjUuNiAyNC45LTkwLjUgMCAtMjUtMjUtMjUtNjUuNiAwLTkwLjVsOTAuNS05MC41YzI1LTI1IDY1LjUtMjUgOTAuNSAwIDcuOCA3LjggMTIuOSAxNy4yIDE1LjggMjcuMSAyLjQtMS40IDQuOC0yLjUgNi44LTQuNWw0Mi4xLTQyYy01LjQtOS4yLTExLjYtMTgtMTkuNC0yNS44IC01MC01MC0xMzEtNTAtMTgxIDBsLTkwLjUgOTAuNWMtNTAgNTAtNTAgMTMxIDAgMTgxIDUwIDUwIDEzMSA1MCAxODEgMGw2OC42LTY4LjZDMjc0LjYgMzk1LjEgMjQ2LjQgMzkyLjMgMjIwLjMgMzgyLjJ6Ii8+PC9zdmc+Cg==\");opacity:0.5;visibility:hidden;display:inline-block;vertical-align:middle}.sharable-header{color:#263238}.sharable-header:hover .share-link:before,.share-link:hover:before{visibility:visible}.tag-info{padding:40px;box-sizing:border-box;background-color:white;width:60%}@media (max-width: 1100px){.tag-info{width:100%}}.tag-info:after,.tag-info:before{content:\"\";display:table}.tag-info h1{color:#0033a0;text-transform:capitalize;font-weight:normal}.methods{display:block;position:relative}\n `],\n directives: [Method],\n pipes: [EncodeURIComponentPipe]\n})\nexport default class MethodsList extends BaseComponent {\n\n constructor(schemaMgr) {\n super(schemaMgr);\n }\n\n prepareModel() {\n this.data = {};\n // follow SwaggerUI behavior for cases when one method has more than one tag:\n // duplicate methods\n\n let menuStructure = this.schemaMgr.buildMenuTree();\n let tags = Array.from(menuStructure.entries())\n .map((entry) => {\n let [tag, {description, methods}] = entry;\n // inject tag name into method info\n methods = methods || [];\n methods.forEach(method => {\n method.tag = tag;\n });\n return {\n name: tag,\n description: description,\n methods: methods\n };\n });\n this.data.tags = tags;\n // TODO: check $ref field\n }\n}\n","'use strict';\n\nimport {Directive, ElementRef} from 'angular2/core';\nimport {BrowserDomAdapter} from 'angular2/platform/browser';\n\n@Directive({\n selector: '[sticky-sidebar]',\n inputs: ['scrollParent', 'scrollYOffset']\n})\n@Reflect.metadata('parameters', [[ElementRef], [BrowserDomAdapter]])\nexport default class StickySidebar {\n constructor(elementRef, dom) {\n this.$element = elementRef.nativeElement;\n this.dom = dom;\n\n // initial styling\n this.dom.setStyle(this.$element, 'position', 'absolute');\n this.dom.setStyle(this.$element, 'top', '0');\n this.dom.setStyle(this.$element, 'bottom', '0');\n this.dom.setStyle(this.$element, 'max-height', '100%');\n }\n\n bind() {\n this.cancelScrollBinding = this.dom.onAndCancel(this.scrollParent, 'scroll', () => { this.updatePosition(); });\n this.updatePosition();\n }\n\n unbind() {\n this.cancelScrollBinding && this.cancelScrollBinding();\n }\n\n updatePosition() {\n if ( this.scrollY + this.scrollYOffset() >= this.$redocEl.offsetTop) {\n this.stick();\n } else {\n this.unstick();\n }\n }\n\n stick() {\n this.dom.setStyle(this.$element, 'position', 'fixed');\n this.dom.setStyle(this.$element, 'top', this.scrollYOffset() + 'px');\n }\n\n unstick() {\n this.dom.setStyle(this.$element, 'position', 'absolute');\n this.dom.setStyle(this.$element, 'top', 0);\n }\n\n get scrollY() {\n return (this.scrollParent.pageYOffset != null) ? this.scrollParent.pageYOffset : this.scrollParent.scrollTop;\n }\n\n ngOnInit() {\n // FIXME use more reliable code\n this.$redocEl = this.$element.offsetParent;\n this.bind();\n }\n\n ngOnDestroy() {\n this.unbind();\n }\n}\n","'use strict';\n\nimport {ChangeDetectionStrategy, provide, enableProdMode} from 'angular2/core';\nimport {ElementRef} from 'angular2/core';\nimport {BrowserDomAdapter, bootstrap} from 'angular2/platform/browser';\nimport detectScollParent from 'scrollparent';\nimport {RedocComponent, BaseComponent} from '../base';\nimport SchemaManager from '../../utils/SchemaManager';\n\nimport ApiInfo from '../ApiInfo/api-info';\nimport ApiLogo from '../ApiLogo/api-logo';\nimport MethodsList from '../MethodsList/methods-list';\nimport SideMenu from '../SideMenu/side-menu';\nimport StickySidebar from '../../common/components/StickySidebar/sticky-sidebar';\nimport OptionsManager from '../../options';\nimport {redocEvents} from '../../events';\n\nimport './redoc-loading-styles.css!css';\n\nvar dom = new BrowserDomAdapter();\nvar _modeLocked = false;\n\n@RedocComponent({\n selector: 'redoc',\n providers: [\n SchemaManager,\n BrowserDomAdapter\n ],\n template: `\n <div class=\"redoc-wrap\">\n <div class=\"menu-content\" sticky-sidebar [scrollParent]=\"options.$scrollParent\" [scrollYOffset]=\"options.scrollYOffset\">\n <api-logo> </api-logo>\n <side-menu> </side-menu>\n </div>\n <div id=\"api-content\">\n <api-info> </api-info>\n <methods-list> </methods-list>\n <footer>\n <div class=\"powered-by-badge\">\n <a href=\"https://github.com/Rebilly/ReDoc\" title=\"Swagger-generated API Reference Documentation\" target=\"_blank\">\n Powered by <strong>ReDoc</strong>\n </a>\n </div>\n </footer>\n </div>\n </div>\n `,\n styles: [`\n :host{display:block;box-sizing:border-box;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent;-ms-tap-highlight-color:transparent;-o-tap-highlight-color:transparent;tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased;-webkit-osx-font-smoothing:grayscale;-moz-osx-font-smoothing:grayscale;osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-webkit-text-shadow:1px 1px 1px rgba(0,0,0,0.004);-ms-text-shadow:1px 1px 1px rgba(0,0,0,0.004);text-shadow:1px 1px 1px rgba(0,0,0,0.004);text-rendering:optimizeSpeed !important;font-smooth:always;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}.redoc-wrap{position:relative;font-family:Roboto,sans-serif;font-size:14px;line-height:1.55em;color:#263238}side-menu{display:block;box-sizing:border-box}methods-list{display:block;overflow:hidden}api-info,.side-bar{display:block;padding:10px 0}api-info{padding:40px}api-logo{display:block;text-align:center}@media (max-width: 1000px){api-logo{display:none}}[sticky-sidebar]{width:260px;background-color:#FAFAFA;overflow-y:auto;overflow-x:hidden}@media (max-width: 1000px){[sticky-sidebar]{z-index:1;width:100%;bottom:auto !important}}#api-content{margin-left:260px;position:relative}@media (max-width: 1000px){#api-content{padding-top:3em;margin-left:0}}#api-content:before{content:\"\";background:#263238;height:100%;width:40%;top:0;right:0;position:absolute;z-index:-1}@media (max-width: 1100px){#api-content:before{display:none}}:host h1{margin-top:0;font-family:Montserrat,sans-serif;color:#0033a0;font-weight:400}:host h2{margin-top:0;font-family:Montserrat,sans-serif;color:#0033a0;font-weight:400}:host h3{margin-top:0;font-family:Montserrat,sans-serif;color:#0033a0;font-weight:400}:host h4{margin-top:0;font-family:Montserrat,sans-serif;color:#0033a0;font-weight:400}:host h5{margin-top:0;font-family:Montserrat,sans-serif;color:#0033a0;font-weight:400}:host h1{font-size:1.85714em}:host h2{font-size:1.57143em}:host h3{font-size:1.28571em}:host h4{font-size:1.14286em}:host h5{font-size:0.929em}:host p{font-family:Roboto,sans-serif;font-weight:300;margin:0;margin-bottom:1em;line-height:1.55em}:host a{text-decoration:none;color:#0033a0}:host p>code{color:#e53935;border:1px solid rgba(38,50,56,0.1)}footer{text-align:right;padding:10px;font-size:15px;background-color:white}footer strong{font-size:18px;color:#0033a0}:host .redoc-markdown-block pre{font-family:Courier, monospace;white-space:pre-wrap;background-color:rgba(38,50,56,0.04);padding:12px 14px 15px 14px;overflow-x:auto;line-height:normal;border-radius:2px;border:1px solid rgba(38,50,56,0.1)}:host .redoc-markdown-block pre code{background-color:transparent}:host .redoc-markdown-block pre code:before,:host .redoc-markdown-block pre code:after{content:none}:host .redoc-markdown-block code{font-family:Courier, monospace;background-color:rgba(38,50,56,0.04);padding:0.1em 0 0.2em 0;font-size:1em;border-radius:2px}:host .redoc-markdown-block code:before,:host .redoc-markdown-block code:after{letter-spacing:-0.2em;content:\"\\\\00a0\"}:host .redoc-markdown-block p:last-of-type{margin-bottom:0}:host .redoc-markdown-block blockquote{margin:0;margin-bottom:1em;padding:0 15px;color:#777;border-left:4px solid #ddd}:host .redoc-markdown-block img{max-width:100%;box-sizing:content-box}:host .redoc-markdown-block ul,:host .redoc-markdown-block ol{padding-left:2em;margin:0;margin-bottom:1em}:host .redoc-markdown-block table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all;border-collapse:collapse;border-spacing:0;margin-top:0.5em;margin-bottom:0.5em}:host .redoc-markdown-block table tr{background-color:#fff;border-top:1px solid #ccc}:host .redoc-markdown-block table tr:nth-child(2n){background-color:#f8f8f8}:host .redoc-markdown-block table th,:host .redoc-markdown-block table td{padding:6px 13px;border:1px solid #ddd}:host .redoc-markdown-block table th{text-align:left;font-weight:bold}\n `],\n directives: [ApiInfo, ApiLogo, MethodsList, SideMenu, StickySidebar],\n changeDetection: ChangeDetectionStrategy.Default\n})\n@Reflect.metadata('parameters', [\n [SchemaManager], [OptionsManager], [ElementRef]])\nexport default class Redoc extends BaseComponent {\n constructor(schemaMgr, optionsMgr, elementRef) {\n super(schemaMgr);\n this.element = elementRef.nativeElement;\n //parse options (top level component doesn't support inputs)\n optionsMgr.parseOptions( this.element );\n optionsMgr.options.$scrollParent = detectScollParent( this.element );\n this.options = optionsMgr.options;\n }\n\n static showLoadingAnimation() {\n let elem = dom.query('redoc');\n dom.addClass(elem, 'loading');\n }\n\n static hideLoadingAnimation() {\n let redocEl = dom.query('redoc');\n dom.addClass(redocEl, 'loading-remove');\n setTimeout(() => {\n dom.removeClass(redocEl, 'loading-remove');\n dom.removeClass(redocEl, 'loading');\n }, 400);\n }\n\n static init(specUrl, options) {\n var optionsMgr = new OptionsManager();\n optionsMgr.options = options;\n optionsMgr.options.specUrl = optionsMgr.options.specUrl || specUrl;\n var providers = [\n provide(OptionsManager, {useValue: optionsMgr})\n ];\n\n if (Redoc.appRef) {\n Redoc.dispose();\n }\n Redoc.showLoadingAnimation();\n return SchemaManager.instance().load(specUrl)\n .then(() => {\n if (!_modeLocked && !optionsMgr.options.debugMode) {\n enableProdMode();\n _modeLocked = true;\n }\n return bootstrap(Redoc, providers);\n })\n .then(\n (appRef) => {\n Redoc.hideLoadingAnimation();\n Redoc.appRef = appRef;\n // setTimeout to allow cached elements to init\n setTimeout(() => redocEvents.bootstrapped.next());\n console.log('ReDoc bootstrapped!');\n },\n error => {\n console.log(error);\n throw error;\n }\n );\n }\n\n static autoInit() {\n const specUrlAttributeName = 'spec-url';\n let redocEl = dom.query('redoc');\n if (!redocEl) return;\n if (dom.hasAttribute(redocEl, specUrlAttributeName)) {\n let url = dom.getAttribute(redocEl, specUrlAttributeName);\n Redoc.init(url);\n }\n }\n\n static dispose() {\n let el = dom.query('redoc');\n let elClone;\n let parent;\n let nextSibling;\n if (el) {\n parent = el.parentElement;\n nextSibling = el.nextElementSibling;\n }\n\n elClone = el.cloneNode(false);\n\n if (Redoc.appRef) {\n Redoc.appRef.dispose();\n Redoc.appRef = null;\n\n // Redoc dispose removes host element, so need to restore it\n elClone.innerHTML = 'Loading...';\n parent && parent.insertBefore(elClone, nextSibling);\n }\n }\n}\n","'use strict';\n\nimport {Component, ElementRef} from 'angular2/core';\nimport {CORE_DIRECTIVES} from 'angular2/common';\nimport {DynamicComponentLoader} from 'angular2/src/core/linker/dynamic_component_loader';\n\nimport JsonSchema from './json-schema';\nimport OptionsManager from '../../options';\nimport SchemaManager from '../../utils/SchemaManager';\n\n\nvar cache = {};\n\n\n@Component({\n selector: 'json-schema-lazy',\n inputs: ['pointer', 'auto', 'skipReadOnly'],\n template: '',\n directives: [CORE_DIRECTIVES]\n})\n@Reflect.metadata('parameters', [[SchemaManager], [ElementRef], [DynamicComponentLoader], [OptionsManager]])\nexport default class JsonSchemaLazy {\n\n constructor(schemaMgr, elementRef, dcl, optionsMgr) {\n this.elementRef = elementRef;\n this.dcl = dcl;\n this.optionsMgr = optionsMgr;\n this.schemaMgr = schemaMgr;\n }\n\n normalizePointer() {\n let schema = this.schemaMgr.byPointer(this.pointer);\n return schema && schema.$ref || this.pointer;\n }\n\n load() {\n if (this.optionsMgr.options.disableLazySchemas) return;\n if (this.loaded) return;\n if (this.pointer) {\n this.dcl.loadNextToLocation(JsonSchema, this.elementRef).then((compRef) => {\n this.initComponent(compRef);\n // trigger change detection\n compRef.hostView.changeDetectorRef.detectChanges();\n });\n }\n this.loaded = true;\n }\n\n // cache JsonSchema view\n loadCached() {\n this.pointer = this.normalizePointer(this.pointer);\n if (cache[this.pointer]) {\n cache[this.pointer].then((compRef) => {\n setTimeout( ()=> {\n let $element = compRef.location.nativeElement;\n\n // skip caching view with tabs inside (discriminator) as it needs attached controller\n // FIXME: get rid of dependency on selector\n if ($element.querySelector('.discriminator-wrap')) {\n this.dcl.loadNextToLocation(JsonSchema, this.elementRef).then((compRef) => {\n this.initComponent(compRef);\n compRef.hostView.changeDetectorRef.markForCheck();\n });\n return;\n }\n insertAfter($element.cloneNode(true), this.elementRef.nativeElement);\n } );\n });\n } else {\n cache[this.pointer] = this.dcl.loadNextToLocation(JsonSchema, this.elementRef).then((compRef) => {\n this.initComponent(compRef);\n compRef.hostView.changeDetectorRef.markForCheck();\n return compRef;\n });\n }\n }\n\n initComponent(compRef) {\n compRef.instance.pointer = this.pointer;\n compRef.instance.skipReadOnly = this.skipReadOnly;\n }\n\n ngAfterViewInit() {\n if (!this.auto) return;\n this.loadCached();\n }\n\n ngOnDestroy() {\n // clear cache\n cache = {};\n }\n}\n\nfunction insertAfter(newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n}\n","'use strict';\n\nimport {Component, EventEmitter} from 'angular2/core';\nimport {CORE_DIRECTIVES} from 'angular2/common';\n\n@Component({\n selector: 'zippy',\n events: ['open', 'close'],\n inputs: ['title', 'visible', 'type', 'empty'],\n template: `\n <div class=\"zippy zippy-{{type}}\" [ngClass]=\"{'zippy-empty': empty}\">\n <div class=\"zippy-title\" (click)=\"toggle()\">\n <span class=\"zippy-indicator\">{{ visible ? '▾' : '▸' }}</span>\n {{title}}\n </div>\n <div class=\"zippy-content\" [ngClass]=\"{'zippy-hidden': !visible}\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n styles: [`\n .zippy-title{padding:10px;border-radius:2px;margin:2px 0;line-height:1.5em;background-color:#f2f2f2;cursor:pointer}.zippy-success>.zippy-title{color:#00aa13;background-color:rgba(0,170,19,0.08)}.zippy-error>.zippy-title{color:#e53935;background-color:rgba(229,57,53,0.06)}.zippy-redirect>.zippy-title{color:#263238;background-color:rgba(38,50,56,0.08)}.zippy-info>.zippy-title{color:#0033a0;background-color:rgba(0,51,160,0.08)}span.zippy-indicator{font-size:1.2em;margin-right:0.2em;position:relative;top:0}.zippy-content{padding:15px 0}.zippy-empty .zippy-title{cursor:default}.zippy-empty .zippy-indicator{display:none}.zippy-empty .zippy-content{display:none}.zippy-hidden{overflow:hidden;visibility:hidden;height:0;padding:0}\n `],\n directives: [CORE_DIRECTIVES]\n})\nexport default class Zippy {\n\n constructor() {\n this.type = 'general';\n this.visible = false;\n this.empty = false;\n this.open = new EventEmitter();\n this.close = new EventEmitter();\n }\n\n toggle() {\n this.visible = !this.visible;\n if (this.empty) return;\n (this.visible) ? this.open.next() : this.close.next();\n }\n}\n","'use strict';\n\nimport {RedocComponent, BaseComponent, SchemaManager} from '../base';\nimport JsonPointer from '../../utils/JsonPointer';\nimport JsonSchema from '../JsonSchema/json-schema';\nimport JsonSchemaLazy from '../JsonSchema/json-schema-lazy';\nimport Zippy from '../../common/components/Zippy/zippy';\nimport {statusCodeType} from '../../utils/helpers';\nimport OptionsManager from '../../options';\n\nfunction isNumeric(n) {\n return (!isNaN(parseFloat(n)) && isFinite(n));\n}\n\n@RedocComponent({\n selector: 'responses-list',\n template: `\n <h2 class=\"responses-list-header\" *ngIf=\"data.responses.length\"> Responses </h2>\n <zippy *ngFor=\"#response of data.responses\" title=\"{{response.code}} {{response.description}}\"\n [type]=\"response.type\" [empty]=\"response.empty\" (open)=\"lazySchema.load()\">\n <div *ngIf=\"response.headers\" class=\"response-headers\">\n <header>\n Headers\n </header>\n <div class=\"header\" *ngFor=\"#header of response.headers\">\n <div class=\"header-name\"> {{header.name}} </div>\n <div class=\"header-type\"> {{header.type}} </div>\n <div class=\"header-description\" innerHtml=\"{{header.description | marked}}\"> </div>\n </div>\n </div>\n <json-schema *ngIf=\"response.schema && options.disableLazySchemas\" class=\"schema type\" pointer=\"{{response.pointer}}/schema\">\n </json-schema>\n <json-schema-lazy #lazySchema pointer=\"{{response.schema ? response.pointer + '/schema' : null}}\">\n </json-schema-lazy>\n </zippy>\n `,\n styles: [`\n .responses-list-header{font-size:18px;padding:0.2em 0;margin:3em 0 1.1em 0;color:#253137;font-weight:normal}:host .zippy-title{font-family:Montserrat,sans-serif}.header-name{font-weight:bold;display:inline-block}.header-type{display:inline-block;font-weight:bold;color:#999}header{font-size:14px;font-weight:bold;text-transform:uppercase;margin-bottom:15px}.header{margin-bottom:10px}\n `],\n directives: [JsonSchema, Zippy, JsonSchemaLazy]\n})\n@Reflect.metadata('parameters', [[SchemaManager], [OptionsManager]])\nexport default class ResponsesList extends BaseComponent {\n constructor(schemaMgr, optionsMgr) {\n super(schemaMgr);\n this.options = optionsMgr.options;\n }\n\n prepareModel() {\n this.data = {};\n this.data.responses = [];\n\n let responses = this.componentSchema;\n if (!responses) return;\n\n responses = Object.keys(responses).filter(respCode => {\n // only response-codes and \"default\"\n return ( isNumeric(respCode) || (respCode === 'default'));\n }).map(respCode => {\n let resp = responses[respCode];\n resp.pointer = JsonPointer.join(this.pointer, respCode);\n if (resp.$ref) {\n let ref = resp.$ref;\n resp = this.schemaMgr.byPointer(resp.$ref);\n resp.pointer = ref;\n }\n\n resp.empty = !resp.schema;\n resp.code = respCode;\n resp.type = statusCodeType(resp.code);\n if (resp.headers) {\n resp.headers = Object.keys(resp.headers).map((k) => {\n let respInfo = resp.headers[k];\n respInfo.name = k;\n return respInfo;\n });\n resp.empty = false;\n }\n resp.extendable = resp.headers || resp.length;\n return resp;\n });\n this.data.responses = responses;\n }\n}\n","'use strict';\n\nimport {Component, EventEmitter} from 'angular2/core';\nimport {CORE_DIRECTIVES} from 'angular2/common';\n\n@Component({\n selector: 'tabs',\n events: ['change'],\n template: `\n <ul>\n <li *ngFor=\"#tab of tabs\" [ngClass]=\"{active: tab.active}\" (click)=\"selectTab(tab)\"\n class=\"tab-{{tab.tabStatus}}\">{{tab.tabTitle}}</li>\n </ul>\n <ng-content></ng-content>\n `,\n directives: [CORE_DIRECTIVES],\n styles: [`\n ul{display:block;margin:0;padding:0}li{list-style:none;display:inline-block;cursor:pointer}.tab-success:before,.tab-error:before,.tab-redirect:before,.tab-info:before{content:\"\";display:inline-block;position:relative;top:-2px;height:4px;width:4px;border-radius:50%;margin-right:0.5em}.tab-success:before{box-shadow:0 0 3px 0 #00aa13;background-color:#00aa13}.tab-error:before{box-shadow:0 0 3px 0 #e53935;background-color:#e53935}.tab-redirect:before{box-shadow:0 0 3px 0 #f1c400;background-color:#f1c400}.tab-info:before{box-shadow:0 0 3px 0 #0033a0;background-color:#0033a0}\n `]\n})\nexport class Tabs {\n constructor() {\n this.tabs = [];\n this.change = new EventEmitter();\n }\n\n selectTab(tab, notify = true) {\n if (tab.active) return;\n this.tabs.forEach((tab) => {\n tab.active = false;\n });\n tab.active = true;\n notify && this.change.next(tab.tabTitle);\n }\n\n selectyByTitle(tabTitle, notify = false) {\n let prevActive;\n let newActive;\n this.tabs.forEach((tab) => {\n if (tab.active) prevActive = tab;\n tab.active = false;\n if (tab.tabTitle === tabTitle) {\n newActive = tab;\n }\n });\n if (newActive) {\n newActive.active = true;\n } else {\n prevActive.active = true;\n }\n notify && this.change.next(tabTitle);\n }\n\n addTab(tab) {\n if (this.tabs.length === 0) {\n tab.active = true;\n }\n this.tabs.push(tab);\n }\n}\n\n@Component({\n selector: 'tab',\n inputs: ['tabTitle', 'tabStatus'],\n template: `\n <div class=\"tab-wrap\" [ngClass]=\"{ 'active': active }\">\n <ng-content></ng-content>\n </div>\n `,\n directives: [CORE_DIRECTIVES],\n styles: [`\n .tab-wrap {\n display: none;\n }\n\n .tab-wrap.active {\n display: block;\n }`\n ]\n})\n@Reflect.metadata('parameters', [ [Tabs] ])\nexport class Tab {\n constructor(tabs) {\n this.active = false;\n tabs.addTab(this);\n }\n}\n","'use strict';\n\nexport function statusCodeType(statusCode) {\n if (statusCode < 100 || statusCode > 599) {\n throw new Error('invalid HTTP code');\n }\n let res = 'success';\n if (statusCode >= 300 && statusCode < 400) {\n res = 'redirect';\n } else if (statusCode >= 400) {\n res = 'error';\n } else if (statusCode < 200) {\n res = 'info';\n }\n return res;\n}\n","'use strict';\n\nimport {RedocComponent, BaseComponent} from '../base';\nimport JsonPointer from '../../utils/JsonPointer';\nimport {Tabs, Tab} from '../../common/components/Tabs/tabs';\nimport SchemaSample from '../SchemaSample/schema-sample';\nimport {statusCodeType} from '../../utils/helpers';\n\n\nfunction isNumeric(n) {\n return (!isNaN(parseFloat(n)) && isFinite(n));\n}\n\nfunction hasExample(response) {\n return ((response.examples && response.examples['application/json']) ||\n response.schema);\n}\n\n@RedocComponent({\n selector: 'responses-samples',\n template: `\n <header *ngIf=\"data.responses.length\"> Response samples </header>\n <tabs *ngIf=\"data.responses.length\">\n <tab *ngFor=\"#response of data.responses\" tabTitle=\"{{response.code}} {{response.description}}\"\n [tabStatus]=\"response.type\">\n <schema-sample [pointer]=\"response.pointer\"></schema-sample>\n </tab>\n </tabs>\n `,\n styles: [`\n tab,tabs{display:block}schema-sample{display:block}header{font-family:Montserrat;font-size:0.929em;text-transform:uppercase;margin:0;color:#9fb4be;text-transform:uppercase;font-weight:normal}:host>tabs>ul li{font-family:Montserrat;font-size:0.929em;border-radius:2px;margin:2px 0;padding:2px 8px 3px 8px;color:#9fb4be;line-height:1.25}:host>tabs>ul li:hover{color:#ffffff;background-color:rgba(255,255,255,0.1)}:host>tabs>ul li.active{background-color:white;color:#263238}:host tabs ul{padding-top:10px}\n `],\n directives: [SchemaSample, Tabs, Tab]\n})\nexport default class ResponsesSamples extends BaseComponent {\n constructor(schemaMgr) {\n super(schemaMgr);\n }\n\n prepareModel() {\n this.data = {};\n this.data.responses = [];\n\n let responses = this.componentSchema;\n if (!responses) return;\n\n responses = Object.keys(responses).filter(respCode => {\n // only response-codes and \"default\"\n return ( isNumeric(respCode) || (respCode === 'default'));\n }).map(respCode => {\n let resp = responses[respCode];\n resp.pointer = JsonPointer.join(this.pointer, respCode);\n if (resp.$ref) {\n let ref = resp.$ref;\n resp = this.schemaMgr.byPointer(resp.$ref);\n resp.pointer = ref;\n }\n\n resp.code = respCode;\n resp.type = statusCodeType(resp.code);\n return resp;\n })\n .filter(response => hasExample(response));\n this.data.responses = responses;\n }\n}\n","/* */ \n'use strict';\n\n// The JSON Object that defines the default values of certain types.\nvar typesInstantiator = {\n 'string': '',\n 'number': 0,\n 'integer': 0,\n 'null': null,\n 'boolean': false, // Always stay positive?\n 'object': { }\n};\n\n/**\n * Checks whether a variable is a primitive.\n * @param obj - an object.\n * @returns {boolean}\n */\nfunction isPrimitive(obj) {\n var type = obj.type;\n\n return typesInstantiator[type] !== undefined;\n}\n\n/**\n * Instantiate a primitive.\n * @param val - The object that represents the primitive.\n * @returns {*}\n */\nfunction instantiatePrimitive(val) {\n var type = val.type;\n\n // Support for default values in the JSON Schema.\n if (val.default) {\n return val.default;\n }\n\n return typesInstantiator[type];\n}\n\n/**\n * The main function.\n * Calls sub-objects recursively, depth first, using the sub-function 'visit'.\n * @param schema - The schema to instantiate.\n * @returns {*}\n */\nfunction instantiate(schema) {\n\n /**\n * Visits each sub-object using recursion.\n * If it reaches a primitive, instantiate it.\n * @param obj - The object that represents the schema.\n * @param name - The name of the current object.\n * @param data - The instance data that represents the current object.\n */\n function visit(obj, name, data) {\n if (!obj) {\n return;\n }\n var i;\n var type = obj.type;\n // We want non-primitives objects (primitive === object w/o properties).\n if (type === 'object' && obj.properties) {\n data[name] = data[name] || { };\n\n // Visit each property.\n for (var property in obj.properties) {\n if (obj.properties.hasOwnProperty(property)) {\n visit(obj.properties[property], property, data[name]);\n }\n }\n } else if (obj.allOf) {\n for (i = 0; i < obj.allOf.length; i++) {\n visit(obj.allOf[i], name, data);\n }\n } else if (type === 'array') {\n data[name] = [];\n var len = 1;\n if (obj.minItems || obj.minItems === 0) {\n len = obj.minItems;\n }\n\n // Instantiate 'len' items.\n for (i = 0; i < len; i++) {\n visit(obj.items, i, data[name]);\n }\n\n } else if (isPrimitive(obj)) {\n data[name] = instantiatePrimitive(obj);\n }\n }\n\n var data = {};\n visit(schema, 'kek', data);\n return data['kek'];\n}\n\n// If we're using Node.js, export the module.\nif (typeof module !== 'undefined') {\n module.exports = {\n instantiate: instantiate\n };\n}\n","/* */ \nmodule.exports = require('./src/instantiator');\n","module.exports = require(\"npm:json-schema-instantiator@0.3.0/index.js\");","'use strict';\nimport {Pipe} from 'angular2/core';\nimport {isBlank} from 'angular2/src/facade/lang';\n\nvar level = 1;\nconst COLLAPSE_LEVEL = 2;\n\n@Pipe({ name: 'jsonFormatter' })\nexport class JsonFormatter {\n transform(value) {\n if (isBlank(value)) return value;\n return jsonToHTML(value);\n }\n}\n\nfunction htmlEncode(t) {\n return t != null ? t.toString().replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>') : '';\n}\n\nfunction decorateWithSpan(value, className) {\n return '<span class=\"' + className + '\">' + htmlEncode(value) + '</span>';\n}\n\nfunction valueToHTML(value) {\n var valueType = typeof value, output = '';\n if (value == null) {\n output += decorateWithSpan('null', 'type-null');\n }\n else if (value && value.constructor === Array) {\n level++;\n output += arrayToHTML(value);\n level--;\n }\n else if (valueType === 'object') {\n level++;\n output += objectToHTML(value);\n level--;\n }\n else if (valueType === 'number') {\n output += decorateWithSpan(value, 'type-number');\n }\n else if (valueType === 'string') {\n if (/^(http|https):\\/\\/[^\\\\s]+$/.test(value)) {\n output += decorateWithSpan('\"', 'type-string') + '<a href=\"' + value + '\">' + htmlEncode(value) + '</a>' + decorateWithSpan('\"', 'type-string');\n } else {\n output += decorateWithSpan('\"' + value + '\"', 'type-string');\n }\n } else if (valueType === 'boolean') {\n output += decorateWithSpan(value, 'type-boolean');\n }\n\n return output;\n}\n\nfunction arrayToHTML(json) {\n var collapsed = level > COLLAPSE_LEVEL ? 'collapsed' : '';\n var i, length;\n var output = '<div class=\"collapser\"></div>[<span class=\"ellipsis\"></span><ul class=\"array collapsible\">';\n var hasContents = false;\n for (i = 0, length = json.length; i < length; i++) {\n hasContents = true;\n output += '<li><div class=\"hoverable ' + collapsed + '\">';\n output += valueToHTML(json[i]);\n if (i < length - 1) {\n output += ',';\n }\n output += '</div></li>';\n }\n output += '</ul>]';\n if (!hasContents) {\n output = '[ ]';\n }\n return output;\n}\n\nfunction objectToHTML(json) {\n var collapsed = level > COLLAPSE_LEVEL ? 'collapsed' : '';\n var i, key, length, keys = Object.keys(json);\n var output = '<div class=\"collapser\"></div>{<span class=\"ellipsis\"></span><ul class=\"obj collapsible\">';\n var hasContents = false;\n for (i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n hasContents = true;\n output += '<li><div class=\"hoverable ' + collapsed + '\">';\n output += '<span class=\"property\">' + htmlEncode(key) + '</span>: ';\n output += valueToHTML(json[key]);\n if (i < length - 1) {\n output += ',';\n }\n output += '</div></li>';\n }\n output += '</ul>}';\n if (!hasContents) {\n output = '{ }';\n }\n return output;\n}\n\nfunction jsonToHTML(json) {\n level = 1;\n var output = '';\n output += '<div class=\"redoc-json\">';\n output += valueToHTML(json);\n output += '</div>';\n return output;\n}\n","'use strict';\n\nimport {ElementRef} from 'angular2/core';\n\nimport SchemaSampler from 'json-schema-instantiator';\n\nimport {JsonFormatter} from '../../utils/JsonFormatterPipe';\nimport {RedocComponent, BaseComponent, SchemaManager} from '../base';\n\n@RedocComponent({\n selector: 'schema-sample',\n template: `\n <div class=\"snippet\">\n <!-- in case sample is not available for some reason -->\n <pre *ngIf=\"data.sample == null\"> Sample unavailable </pre>\n <pre innerHtml=\"{{data.sample | jsonFormatter}}\"></pre>\n </div>\n `,\n pipes: [JsonFormatter],\n styles: [`\n pre{background-color:transparent;padding:0}:host .type-null{color:gray}:host .type-boolean{color:firebrick}:host .type-number{color:#4A8BB3}:host .type-string{color:#66B16E}:host .callback-function{color:gray}:host .collapser:after{content:\"-\";cursor:pointer}:host .collapsed>.collapser:after{content:\"+\";cursor:pointer}:host .ellipsis:after{content:\" … \"}:host .collapsible{margin-left:2em}:host .hoverable{padding-top:1px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-radius:2px}:host .hovered{background-color:#ebeef9}:host .collapser{padding-right:6px;padding-left:6px}:host .redoc-json{padding:20px;border-radius:4px;background-color:#222d32;margin-bottom:36px}:host ul,:host .redoc-json ul{list-style-type:none;padding:0px;margin:0px 0px 0px 26px}:host li{position:relative}:host .hoverable{transition:background-color .2s ease-out 0s;-webkit-transition:background-color .2s ease-out 0s;display:inline-block}:host .hovered{transition-delay:.2s;-webkit-transition-delay:.2s}:host .selected{outline-style:solid;outline-width:1px;outline-style:dotted}:host .collapsed>.collapsible{display:none}:host .ellipsis{display:none}:host .collapsed>.ellipsis{display:inherit}:host .collapser{position:absolute;top:1px;left:-1.5em;cursor:default;user-select:none;-webkit-user-select:none}\n `]\n})\n@Reflect.metadata('parameters', [[SchemaManager], [ElementRef]])\nexport default class SchemaSample extends BaseComponent {\n constructor(schemaMgr, elementRef) {\n super(schemaMgr);\n this.element = elementRef.nativeElement;\n }\n\n init() {\n this.data = {};\n\n let base = {};\n let sample;\n\n // got pointer not directly to the schema but e.g. to response obj\n if (this.componentSchema.schema) {\n base = this.componentSchema;\n this.componentSchema = this.componentSchema.schema;\n }\n\n if (base.examples && base.examples['application/json']) {\n sample = base.examples['application/json'];\n } else {\n this.dereference(this.componentSchema);\n sample = SchemaSampler.instantiate(this.componentSchema);\n }\n\n this.data.sample = sample;\n\n\n this.element.addEventListener('click', (event) => {\n var collapsed, target = event.target;\n if (event.target.className === 'collapser') {\n collapsed = target.parentNode.getElementsByClassName('collapsible')[0];\n if (collapsed.parentNode.classList.contains('collapsed')) {\n collapsed.parentNode.classList.remove('collapsed');\n } else {\n collapsed.parentNode.classList.add('collapsed');\n }\n }\n });\n }\n}\n","/* */ \nvar classof = require('./$.classof'),\n ITERATOR = require('./$.wks')('iterator'),\n Iterators = require('./$.iterators');\nmodule.exports = require('./$.core').isIterable = function(it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined || '@@iterator' in O || Iterators.hasOwnProperty(classof(O));\n};\n","/* */ \nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","/* */ \n\"use strict\";\nvar _getIterator = require('../core-js/get-iterator')[\"default\"];\nvar _isIterable = require('../core-js/is-iterable')[\"default\"];\nexports[\"default\"] = (function() {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = _getIterator(arr),\n _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i)\n break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"])\n _i[\"return\"]();\n } finally {\n if (_d)\n throw _e;\n }\n }\n return _arr;\n }\n return function(arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (_isIterable(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n})();\nexports.__esModule = true;\n","'use strict';\n\nimport {EventEmitter} from 'angular2/core';\n\nvar bootsrEmmiter = new EventEmitter();\nvar langChanged = new EventEmitter();\nexport var redocEvents = {\n bootstrapped: bootsrEmmiter,\n samplesLanguageChanged: langChanged\n};\n","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Marks a function or method as an Angular 2 entrypoint. Only necessary in Dart code.\r\n *\r\n * The optional `name` parameter will be reflected in logs when the entry point is processed.\r\n *\r\n * See [the wiki][] for detailed documentation.\r\n * [the wiki]: https://github.com/angular/angular/wiki/Angular-2-Dart-Transformer#entry_points\r\n *\r\n * ## Example\r\n *\r\n * ```\r\n * @AngularEntrypoint(\"name-for-debug\")\r\n * void main() {\r\n * bootstrap(MyComponent);\r\n * }\r\n * ```\r\n */\r\nvar AngularEntrypoint = (function () {\r\n function AngularEntrypoint(name) {\r\n this.name = name;\r\n }\r\n AngularEntrypoint = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String])\r\n ], AngularEntrypoint);\r\n return AngularEntrypoint;\r\n})();\r\nexports.AngularEntrypoint = AngularEntrypoint;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhcl9lbnRyeXBvaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvYW5ndWxhcl9lbnRyeXBvaW50LnRzIl0sIm5hbWVzIjpbIkFuZ3VsYXJFbnRyeXBvaW50IiwiQW5ndWxhckVudHJ5cG9pbnQuY29uc3RydWN0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHFCQUFvQiwwQkFBMEIsQ0FBQyxDQUFBO0FBRS9DOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0g7SUFFRUEsMkJBQW1CQSxJQUFhQTtRQUFiQyxTQUFJQSxHQUFKQSxJQUFJQSxDQUFTQTtJQUFHQSxDQUFDQTtJQUZ0Q0Q7UUFBQ0EsWUFBS0EsRUFBRUE7OzBCQUdQQTtJQUFEQSx3QkFBQ0E7QUFBREEsQ0FBQ0EsQUFIRCxJQUdDO0FBRlkseUJBQWlCLG9CQUU3QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBNYXJrcyBhIGZ1bmN0aW9uIG9yIG1ldGhvZCBhcyBhbiBBbmd1bGFyIDIgZW50cnlwb2ludC4gT25seSBuZWNlc3NhcnkgaW4gRGFydCBjb2RlLlxuICpcbiAqIFRoZSBvcHRpb25hbCBgbmFtZWAgcGFyYW1ldGVyIHdpbGwgYmUgcmVmbGVjdGVkIGluIGxvZ3Mgd2hlbiB0aGUgZW50cnkgcG9pbnQgaXMgcHJvY2Vzc2VkLlxuICpcbiAqIFNlZSBbdGhlIHdpa2ldW10gZm9yIGRldGFpbGVkIGRvY3VtZW50YXRpb24uXG4gKiBbdGhlIHdpa2ldOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL3dpa2kvQW5ndWxhci0yLURhcnQtVHJhbnNmb3JtZXIjZW50cnlfcG9pbnRzXG4gKlxuICogIyMgRXhhbXBsZVxuICpcbiAqIGBgYFxuICogQEFuZ3VsYXJFbnRyeXBvaW50KFwibmFtZS1mb3ItZGVidWdcIilcbiAqIHZvaWQgbWFpbigpIHtcbiAqICAgYm9vdHN0cmFwKE15Q29tcG9uZW50KTtcbiAqIH1cbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJFbnRyeXBvaW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIG5hbWU/OiBTdHJpbmcpIHt9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar event_manager_1 = require('./event_manager');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar modifierKeys = ['alt', 'control', 'meta', 'shift'];\r\nvar modifierKeyGetters = {\r\n 'alt': function (event) { return event.altKey; },\r\n 'control': function (event) { return event.ctrlKey; },\r\n 'meta': function (event) { return event.metaKey; },\r\n 'shift': function (event) { return event.shiftKey; }\r\n};\r\nvar KeyEventsPlugin = (function (_super) {\r\n __extends(KeyEventsPlugin, _super);\r\n function KeyEventsPlugin() {\r\n _super.call(this);\r\n }\r\n KeyEventsPlugin.prototype.supports = function (eventName) {\r\n return lang_1.isPresent(KeyEventsPlugin.parseEventName(eventName));\r\n };\r\n KeyEventsPlugin.prototype.addEventListener = function (element, eventName, handler) {\r\n var parsedEvent = KeyEventsPlugin.parseEventName(eventName);\r\n var outsideHandler = KeyEventsPlugin.eventCallback(element, collection_1.StringMapWrapper.get(parsedEvent, 'fullKey'), handler, this.manager.getZone());\r\n return this.manager.getZone().runOutsideAngular(function () {\r\n return dom_adapter_1.DOM.onAndCancel(element, collection_1.StringMapWrapper.get(parsedEvent, 'domEventName'), outsideHandler);\r\n });\r\n };\r\n KeyEventsPlugin.parseEventName = function (eventName) {\r\n var parts = eventName.toLowerCase().split('.');\r\n var domEventName = parts.shift();\r\n if ((parts.length === 0) ||\r\n !(lang_1.StringWrapper.equals(domEventName, 'keydown') ||\r\n lang_1.StringWrapper.equals(domEventName, 'keyup'))) {\r\n return null;\r\n }\r\n var key = KeyEventsPlugin._normalizeKey(parts.pop());\r\n var fullKey = '';\r\n modifierKeys.forEach(function (modifierName) {\r\n if (collection_1.ListWrapper.contains(parts, modifierName)) {\r\n collection_1.ListWrapper.remove(parts, modifierName);\r\n fullKey += modifierName + '.';\r\n }\r\n });\r\n fullKey += key;\r\n if (parts.length != 0 || key.length === 0) {\r\n // returning null instead of throwing to let another plugin process the event\r\n return null;\r\n }\r\n var result = collection_1.StringMapWrapper.create();\r\n collection_1.StringMapWrapper.set(result, 'domEventName', domEventName);\r\n collection_1.StringMapWrapper.set(result, 'fullKey', fullKey);\r\n return result;\r\n };\r\n KeyEventsPlugin.getEventFullKey = function (event) {\r\n var fullKey = '';\r\n var key = dom_adapter_1.DOM.getEventKey(event);\r\n key = key.toLowerCase();\r\n if (lang_1.StringWrapper.equals(key, ' ')) {\r\n key = 'space'; // for readability\r\n }\r\n else if (lang_1.StringWrapper.equals(key, '.')) {\r\n key = 'dot'; // because '.' is used as a separator in event names\r\n }\r\n modifierKeys.forEach(function (modifierName) {\r\n if (modifierName != key) {\r\n var modifierGetter = collection_1.StringMapWrapper.get(modifierKeyGetters, modifierName);\r\n if (modifierGetter(event)) {\r\n fullKey += modifierName + '.';\r\n }\r\n }\r\n });\r\n fullKey += key;\r\n return fullKey;\r\n };\r\n KeyEventsPlugin.eventCallback = function (element, fullKey, handler, zone) {\r\n return function (event) {\r\n if (lang_1.StringWrapper.equals(KeyEventsPlugin.getEventFullKey(event), fullKey)) {\r\n zone.run(function () { return handler(event); });\r\n }\r\n };\r\n };\r\n /** @internal */\r\n KeyEventsPlugin._normalizeKey = function (keyName) {\r\n // TODO: switch to a StringMap if the mapping grows too much\r\n switch (keyName) {\r\n case 'esc':\r\n return 'escape';\r\n default:\r\n return keyName;\r\n }\r\n };\r\n KeyEventsPlugin = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], KeyEventsPlugin);\r\n return KeyEventsPlugin;\r\n})(event_manager_1.EventManagerPlugin);\r\nexports.KeyEventsPlugin = KeyEventsPlugin;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5X2V2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZXZlbnRzL2tleV9ldmVudHMudHMiXSwibmFtZXMiOlsiS2V5RXZlbnRzUGx1Z2luIiwiS2V5RXZlbnRzUGx1Z2luLmNvbnN0cnVjdG9yIiwiS2V5RXZlbnRzUGx1Z2luLnN1cHBvcnRzIiwiS2V5RXZlbnRzUGx1Z2luLmFkZEV2ZW50TGlzdGVuZXIiLCJLZXlFdmVudHNQbHVnaW4ucGFyc2VFdmVudE5hbWUiLCJLZXlFdmVudHNQbHVnaW4uZ2V0RXZlbnRGdWxsS2V5IiwiS2V5RXZlbnRzUGx1Z2luLmV2ZW50Q2FsbGJhY2siLCJLZXlFdmVudHNQbHVnaW4uX25vcm1hbGl6ZUtleSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0QkFBa0IsdUNBQXVDLENBQUMsQ0FBQTtBQUMxRCxxQkFNTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLDJCQUE0QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdFLDhCQUFpQyxpQkFBaUIsQ0FBQyxDQUFBO0FBRW5ELG1CQUF5QixzQkFBc0IsQ0FBQyxDQUFBO0FBRWhELElBQUksWUFBWSxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdkQsSUFBSSxrQkFBa0IsR0FBdUQ7SUFDM0UsS0FBSyxFQUFFLFVBQUMsS0FBb0IsSUFBSyxPQUFBLEtBQUssQ0FBQyxNQUFNLEVBQVosQ0FBWTtJQUM3QyxTQUFTLEVBQUUsVUFBQyxLQUFvQixJQUFLLE9BQUEsS0FBSyxDQUFDLE9BQU8sRUFBYixDQUFhO0lBQ2xELE1BQU0sRUFBRSxVQUFDLEtBQW9CLElBQUssT0FBQSxLQUFLLENBQUMsT0FBTyxFQUFiLENBQWE7SUFDL0MsT0FBTyxFQUFFLFVBQUMsS0FBb0IsSUFBSyxPQUFBLEtBQUssQ0FBQyxRQUFRLEVBQWQsQ0FBYztDQUNsRCxDQUFDO0FBRUY7SUFD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dUJBQWUsa0JBMEYzQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET019IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX2FkYXB0ZXInO1xuaW1wb3J0IHtcbiAgaXNQcmVzZW50LFxuICBpc0JsYW5rLFxuICBTdHJpbmdXcmFwcGVyLFxuICBSZWdFeHBXcmFwcGVyLFxuICBOdW1iZXJXcmFwcGVyXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1N0cmluZ01hcFdyYXBwZXIsIExpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtFdmVudE1hbmFnZXJQbHVnaW59IGZyb20gJy4vZXZlbnRfbWFuYWdlcic7XG5pbXBvcnQge05nWm9uZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvem9uZS9uZ196b25lJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuXG52YXIgbW9kaWZpZXJLZXlzID0gWydhbHQnLCAnY29udHJvbCcsICdtZXRhJywgJ3NoaWZ0J107XG52YXIgbW9kaWZpZXJLZXlHZXR0ZXJzOiB7W2tleTogc3RyaW5nXTogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBib29sZWFufSA9IHtcbiAgJ2FsdCc6IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gZXZlbnQuYWx0S2V5LFxuICAnY29udHJvbCc6IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gZXZlbnQuY3RybEtleSxcbiAgJ21ldGEnOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGV2ZW50Lm1ldGFLZXksXG4gICdzaGlmdCc6IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gZXZlbnQuc2hpZnRLZXlcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBLZXlFdmVudHNQbHVnaW4gZXh0ZW5kcyBFdmVudE1hbmFnZXJQbHVnaW4ge1xuICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgfVxuXG4gIHN1cHBvcnRzKGV2ZW50TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUHJlc2VudChLZXlFdmVudHNQbHVnaW4ucGFyc2VFdmVudE5hbWUoZXZlbnROYW1lKSk7XG4gIH1cblxuICBhZGRFdmVudExpc3RlbmVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgaGFuZGxlcjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgdmFyIHBhcnNlZEV2ZW50ID0gS2V5RXZlbnRzUGx1Z2luLnBhcnNlRXZlbnROYW1lKGV2ZW50TmFtZSk7XG5cbiAgICB2YXIgb3V0c2lkZUhhbmRsZXIgPSBLZXlFdmVudHNQbHVnaW4uZXZlbnRDYWxsYmFjayhcbiAgICAgICAgZWxlbWVudCwgU3RyaW5nTWFwV3JhcHBlci5nZXQocGFyc2VkRXZlbnQsICdmdWxsS2V5JyksIGhhbmRsZXIsIHRoaXMubWFuYWdlci5nZXRab25lKCkpO1xuXG4gICAgcmV0dXJuIHRoaXMubWFuYWdlci5nZXRab25lKCkucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgcmV0dXJuIERPTS5vbkFuZENhbmNlbChlbGVtZW50LCBTdHJpbmdNYXBXcmFwcGVyLmdldChwYXJzZWRFdmVudCwgJ2RvbUV2ZW50TmFtZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRzaWRlSGFuZGxlcik7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcGFyc2VFdmVudE5hbWUoZXZlbnROYW1lOiBzdHJpbmcpOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSB7XG4gICAgdmFyIHBhcnRzOiBzdHJpbmdbXSA9IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCcuJyk7XG5cbiAgICB2YXIgZG9tRXZlbnROYW1lID0gcGFydHMuc2hpZnQoKTtcbiAgICBpZiAoKHBhcnRzLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgICAgIShTdHJpbmdXcmFwcGVyLmVxdWFscyhkb21FdmVudE5hbWUsICdrZXlkb3duJykgfHxcbiAgICAgICAgICBTdHJpbmdXcmFwcGVyLmVxdWFscyhkb21FdmVudE5hbWUsICdrZXl1cCcpKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGtleSA9IEtleUV2ZW50c1BsdWdpbi5fbm9ybWFsaXplS2V5KHBhcnRzLnBvcCgpKTtcblxuICAgIHZhciBmdWxsS2V5ID0gJyc7XG4gICAgbW9kaWZpZXJLZXlzLmZvckVhY2gobW9kaWZpZXJOYW1lID0+IHtcbiAgICAgIGlmIChMaXN0V3JhcHBlci5jb250YWlucyhwYXJ0cywgbW9kaWZpZXJOYW1lKSkge1xuICAgICAgICBMaXN0V3JhcHBlci5yZW1vdmUocGFydHMsIG1vZGlmaWVyTmFtZSk7XG4gICAgICAgIGZ1bGxLZXkgKz0gbW9kaWZpZXJOYW1lICsgJy4nO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bGxLZXkgKz0ga2V5O1xuXG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPSAwIHx8IGtleS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIHJldHVybmluZyBudWxsIGluc3RlYWQgb2YgdGhyb3dpbmcgdG8gbGV0IGFub3RoZXIgcGx1Z2luIHByb2Nlc3MgdGhlIGV2ZW50XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IFN0cmluZ01hcFdyYXBwZXIuY3JlYXRlKCk7XG4gICAgU3RyaW5nTWFwV3JhcHBlci5zZXQocmVzdWx0LCAnZG9tRXZlbnROYW1lJywgZG9tRXZlbnROYW1lKTtcbiAgICBTdHJpbmdNYXBXcmFwcGVyLnNldChyZXN1bHQsICdmdWxsS2V5JywgZnVsbEtleSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRFdmVudEZ1bGxLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBzdHJpbmcge1xuICAgIHZhciBmdWxsS2V5ID0gJyc7XG4gICAgdmFyIGtleSA9IERPTS5nZXRFdmVudEtleShldmVudCk7XG4gICAga2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKFN0cmluZ1dyYXBwZXIuZXF1YWxzKGtleSwgJyAnKSkge1xuICAgICAga2V5ID0gJ3NwYWNlJzsgIC8vIGZvciByZWFkYWJpbGl0eVxuICAgIH0gZWxzZSBpZiAoU3RyaW5nV3JhcHBlci5lcXVhbHMoa2V5LCAnLicpKSB7XG4gICAgICBrZXkgPSAnZG90JzsgIC8vIGJlY2F1c2UgJy4nIGlzIHVzZWQgYXMgYSBzZXBhcmF0b3IgaW4gZXZlbnQgbmFtZXNcbiAgICB9XG4gICAgbW9kaWZpZXJLZXlzLmZvckVhY2gobW9kaWZpZXJOYW1lID0+IHtcbiAgICAgIGlmIChtb2RpZmllck5hbWUgIT0ga2V5KSB7XG4gICAgICAgIHZhciBtb2RpZmllckdldHRlciA9IFN0cmluZ01hcFdyYXBwZXIuZ2V0KG1vZGlmaWVyS2V5R2V0dGVycywgbW9kaWZpZXJOYW1lKTtcbiAgICAgICAgaWYgKG1vZGlmaWVyR2V0dGVyKGV2ZW50KSkge1xuICAgICAgICAgIGZ1bGxLZXkgKz0gbW9kaWZpZXJOYW1lICsgJy4nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgZnVsbEtleSArPSBrZXk7XG4gICAgcmV0dXJuIGZ1bGxLZXk7XG4gIH1cblxuICBzdGF0aWMgZXZlbnRDYWxsYmFjayhlbGVtZW50OiBIVE1MRWxlbWVudCwgZnVsbEtleTogYW55LCBoYW5kbGVyOiBGdW5jdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgem9uZTogTmdab25lKTogRnVuY3Rpb24ge1xuICAgIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChTdHJpbmdXcmFwcGVyLmVxdWFscyhLZXlFdmVudHNQbHVnaW4uZ2V0RXZlbnRGdWxsS2V5KGV2ZW50KSwgZnVsbEtleSkpIHtcbiAgICAgICAgem9uZS5ydW4oKCkgPT4gaGFuZGxlcihldmVudCkpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHN0YXRpYyBfbm9ybWFsaXplS2V5KGtleU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gVE9ETzogc3dpdGNoIHRvIGEgU3RyaW5nTWFwIGlmIHRoZSBtYXBwaW5nIGdyb3dzIHRvbyBtdWNoXG4gICAgc3dpdGNoIChrZXlOYW1lKSB7XG4gICAgICBjYXNlICdlc2MnOlxuICAgICAgICByZXR1cm4gJ2VzY2FwZSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4ga2V5TmFtZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar event_manager_1 = require('./event_manager');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar _eventNames = {\r\n // pan\r\n 'pan': true,\r\n 'panstart': true,\r\n 'panmove': true,\r\n 'panend': true,\r\n 'pancancel': true,\r\n 'panleft': true,\r\n 'panright': true,\r\n 'panup': true,\r\n 'pandown': true,\r\n // pinch\r\n 'pinch': true,\r\n 'pinchstart': true,\r\n 'pinchmove': true,\r\n 'pinchend': true,\r\n 'pinchcancel': true,\r\n 'pinchin': true,\r\n 'pinchout': true,\r\n // press\r\n 'press': true,\r\n 'pressup': true,\r\n // rotate\r\n 'rotate': true,\r\n 'rotatestart': true,\r\n 'rotatemove': true,\r\n 'rotateend': true,\r\n 'rotatecancel': true,\r\n // swipe\r\n 'swipe': true,\r\n 'swipeleft': true,\r\n 'swiperight': true,\r\n 'swipeup': true,\r\n 'swipedown': true,\r\n // tap\r\n 'tap': true,\r\n};\r\nvar HammerGesturesPluginCommon = (function (_super) {\r\n __extends(HammerGesturesPluginCommon, _super);\r\n function HammerGesturesPluginCommon() {\r\n _super.call(this);\r\n }\r\n HammerGesturesPluginCommon.prototype.supports = function (eventName) {\r\n eventName = eventName.toLowerCase();\r\n return collection_1.StringMapWrapper.contains(_eventNames, eventName);\r\n };\r\n return HammerGesturesPluginCommon;\r\n})(event_manager_1.EventManagerPlugin);\r\nexports.HammerGesturesPluginCommon = HammerGesturesPluginCommon;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFtbWVyX2NvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZXZlbnRzL2hhbW1lcl9jb21tb24udHMiXSwibmFtZXMiOlsiSGFtbWVyR2VzdHVyZXNQbHVnaW5Db21tb24iLCJIYW1tZXJHZXN0dXJlc1BsdWdpbkNvbW1vbi5jb25zdHJ1Y3RvciIsIkhhbW1lckdlc3R1cmVzUGx1Z2luQ29tbW9uLnN1cHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhCQUFpQyxpQkFBaUIsQ0FBQyxDQUFBO0FBQ25ELDJCQUErQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRWhFLElBQUksV0FBVyxHQUFHO0lBQ2hCLE1BQU07SUFDTixLQUFLLEVBQUUsSUFBSTtJQUNYLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFNBQVMsRUFBRSxJQUFJO0lBQ2YsUUFBUSxFQUFFLElBQUk7SUFDZCxXQUFXLEVBQUUsSUFBSTtJQUNqQixTQUFTLEVBQUUsSUFBSTtJQUNmLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLE9BQU8sRUFBRSxJQUFJO0lBQ2IsU0FBUyxFQUFFLElBQUk7SUFDZixRQUFRO0lBQ1IsT0FBTyxFQUFFLElBQUk7SUFDYixZQUFZLEVBQUUsSUFBSTtJQUNsQixXQUFXLEVBQUUsSUFBSTtJQUNqQixVQUFVLEVBQUUsSUFBSTtJQUNoQixhQUFhLEVBQUUsSUFBSTtJQUNuQixTQUFTLEVBQUUsSUFBSTtJQUNmLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFFBQVE7SUFDUixPQUFPLEVBQUUsSUFBSTtJQUNiLFNBQVMsRUFBRSxJQUFJO0lBQ2YsU0FBUztJQUNULFFBQVEsRUFBRSxJQUFJO0lBQ2QsYUFBYSxFQUFFLElBQUk7SUFDbkIsWUFBWSxFQUFFLElBQUk7SUFDbEIsV0FBVyxFQUFFLElBQUk7SUFDakIsY0FBYyxFQUFFLElBQUk7SUFDcEIsUUFBUTtJQUNSLE9BQU8sRUFBRSxJQUFJO0lBQ2IsV0FBVyxFQUFFLElBQUk7SUFDakIsWUFBWSxFQUFFLElBQUk7SUFDbEIsU0FBUyxFQUFFLElBQUk7SUFDZixXQUFXLEVBQUUsSUFBSTtJQUNqQixNQUFNO0lBQ04sS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBR0Y7SUFBZ0RBLDhDQUFrQkE7SUFDaEVBO1FBQWdCQyxpQkFBT0EsQ0FBQ0E7SUFBQ0EsQ0FBQ0E7SUFFMUJELDZDQUFRQSxHQUFSQSxVQUFTQSxTQUFpQkE7UUFDeEJFLFNBQVNBLEdBQUdBLFNBQVNBLENBQUNBLFdBQVdBLEVBQUVBLENBQUNBO1FBQ3BDQSxNQUFNQSxDQUFDQSw2QkFBZ0JBLENBQUNBLFFBQVFBLENBQUNBLFdBQVdBLEVBQUVBLFNBQVNBLENBQUNBLENBQUNBO0lBQzNEQSxDQUFDQTtJQUNIRixpQ0FBQ0E7QUFBREEsQ0FBQ0EsQUFQRCxFQUFnRCxrQ0FBa0IsRUFPakU7QUFQWSxrQ0FBMEIsNkJBT3RDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50TWFuYWdlclBsdWdpbn0gZnJvbSAnLi9ldmVudF9tYW5hZ2VyJztcbmltcG9ydCB7U3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxudmFyIF9ldmVudE5hbWVzID0ge1xuICAvLyBwYW5cbiAgJ3Bhbic6IHRydWUsXG4gICdwYW5zdGFydCc6IHRydWUsXG4gICdwYW5tb3ZlJzogdHJ1ZSxcbiAgJ3BhbmVuZCc6IHRydWUsXG4gICdwYW5jYW5jZWwnOiB0cnVlLFxuICAncGFubGVmdCc6IHRydWUsXG4gICdwYW5yaWdodCc6IHRydWUsXG4gICdwYW51cCc6IHRydWUsXG4gICdwYW5kb3duJzogdHJ1ZSxcbiAgLy8gcGluY2hcbiAgJ3BpbmNoJzogdHJ1ZSxcbiAgJ3BpbmNoc3RhcnQnOiB0cnVlLFxuICAncGluY2htb3ZlJzogdHJ1ZSxcbiAgJ3BpbmNoZW5kJzogdHJ1ZSxcbiAgJ3BpbmNoY2FuY2VsJzogdHJ1ZSxcbiAgJ3BpbmNoaW4nOiB0cnVlLFxuICAncGluY2hvdXQnOiB0cnVlLFxuICAvLyBwcmVzc1xuICAncHJlc3MnOiB0cnVlLFxuICAncHJlc3N1cCc6IHRydWUsXG4gIC8vIHJvdGF0ZVxuICAncm90YXRlJzogdHJ1ZSxcbiAgJ3JvdGF0ZXN0YXJ0JzogdHJ1ZSxcbiAgJ3JvdGF0ZW1vdmUnOiB0cnVlLFxuICAncm90YXRlZW5kJzogdHJ1ZSxcbiAgJ3JvdGF0ZWNhbmNlbCc6IHRydWUsXG4gIC8vIHN3aXBlXG4gICdzd2lwZSc6IHRydWUsXG4gICdzd2lwZWxlZnQnOiB0cnVlLFxuICAnc3dpcGVyaWdodCc6IHRydWUsXG4gICdzd2lwZXVwJzogdHJ1ZSxcbiAgJ3N3aXBlZG93bic6IHRydWUsXG4gIC8vIHRhcFxuICAndGFwJzogdHJ1ZSxcbn07XG5cblxuZXhwb3J0IGNsYXNzIEhhbW1lckdlc3R1cmVzUGx1Z2luQ29tbW9uIGV4dGVuZHMgRXZlbnRNYW5hZ2VyUGx1Z2luIHtcbiAgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IH1cblxuICBzdXBwb3J0cyhldmVudE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBTdHJpbmdNYXBXcmFwcGVyLmNvbnRhaW5zKF9ldmVudE5hbWVzLCBldmVudE5hbWUpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar hammer_common_1 = require('./hammer_common');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar HammerGesturesPlugin = (function (_super) {\r\n __extends(HammerGesturesPlugin, _super);\r\n function HammerGesturesPlugin() {\r\n _super.apply(this, arguments);\r\n }\r\n HammerGesturesPlugin.prototype.supports = function (eventName) {\r\n if (!_super.prototype.supports.call(this, eventName))\r\n return false;\r\n if (!lang_1.isPresent(window['Hammer'])) {\r\n throw new exceptions_1.BaseException(\"Hammer.js is not loaded, can not bind \" + eventName + \" event\");\r\n }\r\n return true;\r\n };\r\n HammerGesturesPlugin.prototype.addEventListener = function (element, eventName, handler) {\r\n var zone = this.manager.getZone();\r\n eventName = eventName.toLowerCase();\r\n return zone.runOutsideAngular(function () {\r\n // Creating the manager bind events, must be done outside of angular\r\n var mc = new Hammer(element);\r\n mc.get('pinch').set({ enable: true });\r\n mc.get('rotate').set({ enable: true });\r\n var callback = function (eventObj) { zone.run(function () { handler(eventObj); }); };\r\n mc.on(eventName, callback);\r\n return function () { mc.off(eventName, callback); };\r\n });\r\n };\r\n HammerGesturesPlugin = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], HammerGesturesPlugin);\r\n return HammerGesturesPlugin;\r\n})(hammer_common_1.HammerGesturesPluginCommon);\r\nexports.HammerGesturesPlugin = HammerGesturesPlugin;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFtbWVyX2dlc3R1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9ldmVudHMvaGFtbWVyX2dlc3R1cmVzLnRzIl0sIm5hbWVzIjpbIkhhbW1lckdlc3R1cmVzUGx1Z2luIiwiSGFtbWVyR2VzdHVyZXNQbHVnaW4uY29uc3RydWN0b3IiLCJIYW1tZXJHZXN0dXJlc1BsdWdpbi5zdXBwb3J0cyIsIkhhbW1lckdlc3R1cmVzUGx1Z2luLmFkZEV2ZW50TGlzdGVuZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOEJBQXlDLGlCQUFpQixDQUFDLENBQUE7QUFDM0QscUJBQXdCLDBCQUEwQixDQUFDLENBQUE7QUFDbkQsMkJBQThDLGdDQUFnQyxDQUFDLENBQUE7QUFDL0UsbUJBQXlCLHNCQUFzQixDQUFDLENBQUE7QUFFaEQ7SUFDMENBLHdDQUEwQkE7SUFEcEVBO1FBQzBDQyw4QkFBMEJBO0lBeUJwRUEsQ0FBQ0E7SUF4QkNELHVDQUFRQSxHQUFSQSxVQUFTQSxTQUFpQkE7UUFDeEJFLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLGdCQUFLQSxDQUFDQSxRQUFRQSxZQUFDQSxTQUFTQSxDQUFDQSxDQUFDQTtZQUFDQSxNQUFNQSxDQUFDQSxLQUFLQSxDQUFDQTtRQUU3Q0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLE1BQU1BLENBQUNBLFFBQVFBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ2pDQSxNQUFNQSxJQUFJQSwwQkFBYUEsQ0FBQ0EsMkNBQXlDQSxTQUFTQSxXQUFRQSxDQUFDQSxDQUFDQTtRQUN0RkEsQ0FBQ0E7UUFFREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7SUFDZEEsQ0FBQ0E7SUFFREYsK0NBQWdCQSxHQUFoQkEsVUFBaUJBLE9BQW9CQSxFQUFFQSxTQUFpQkEsRUFBRUEsT0FBaUJBO1FBQ3pFRyxJQUFJQSxJQUFJQSxHQUFHQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxPQUFPQSxFQUFFQSxDQUFDQTtRQUNsQ0EsU0FBU0EsR0FBR0EsU0FBU0EsQ0FBQ0EsV0FBV0EsRUFBRUEsQ0FBQ0E7UUFFcENBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLGlCQUFpQkEsQ0FBQ0E7WUFDNUIsb0VBQW9FO1lBQ3BFLElBQUksRUFBRSxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDcEMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUNyQyxJQUFJLFFBQVEsR0FBRyxVQUFTLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkYsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLGNBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDQSxDQUFDQTtJQUNMQSxDQUFDQTtJQXpCSEg7UUFBQ0EsZUFBVUEsRUFBRUE7OzZCQTBCWkE7SUFBREEsMkJBQUNBO0FBQURBLENBQUNBLEFBMUJELEVBQzBDLDBDQUEwQixFQXlCbkU7QUF6QlksNEJBQW9CLHVCQXlCaEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SGFtbWVyR2VzdHVyZXNQbHVnaW5Db21tb259IGZyb20gJy4vaGFtbWVyX2NvbW1vbic7XG5pbXBvcnQge2lzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbiwgV3JhcHBlZEV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSGFtbWVyR2VzdHVyZXNQbHVnaW4gZXh0ZW5kcyBIYW1tZXJHZXN0dXJlc1BsdWdpbkNvbW1vbiB7XG4gIHN1cHBvcnRzKGV2ZW50TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFzdXBlci5zdXBwb3J0cyhldmVudE5hbWUpKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAoIWlzUHJlc2VudCh3aW5kb3dbJ0hhbW1lciddKSkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYEhhbW1lci5qcyBpcyBub3QgbG9hZGVkLCBjYW4gbm90IGJpbmQgJHtldmVudE5hbWV9IGV2ZW50YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhZGRFdmVudExpc3RlbmVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgaGFuZGxlcjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgdmFyIHpvbmUgPSB0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpO1xuICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoZnVuY3Rpb24oKSB7XG4gICAgICAvLyBDcmVhdGluZyB0aGUgbWFuYWdlciBiaW5kIGV2ZW50cywgbXVzdCBiZSBkb25lIG91dHNpZGUgb2YgYW5ndWxhclxuICAgICAgdmFyIG1jID0gbmV3IEhhbW1lcihlbGVtZW50KTtcbiAgICAgIG1jLmdldCgncGluY2gnKS5zZXQoe2VuYWJsZTogdHJ1ZX0pO1xuICAgICAgbWMuZ2V0KCdyb3RhdGUnKS5zZXQoe2VuYWJsZTogdHJ1ZX0pO1xuICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24oZXZlbnRPYmopIHsgem9uZS5ydW4oZnVuY3Rpb24oKSB7IGhhbmRsZXIoZXZlbnRPYmopOyB9KTsgfTtcbiAgICAgIG1jLm9uKGV2ZW50TmFtZSwgY2FsbGJhY2spO1xuICAgICAgcmV0dXJuICgpID0+IHsgbWMub2ZmKGV2ZW50TmFtZSwgY2FsbGJhY2spOyB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar xhr_impl_1 = require('angular2/src/platform/browser/xhr_impl');\r\n/**\r\n * Provides DOM operations in any browser environment.\r\n */\r\nvar GenericBrowserDomAdapter = (function (_super) {\r\n __extends(GenericBrowserDomAdapter, _super);\r\n function GenericBrowserDomAdapter() {\r\n var _this = this;\r\n _super.call(this);\r\n this._animationPrefix = null;\r\n this._transitionEnd = null;\r\n try {\r\n var element = this.createElement('div', this.defaultDoc());\r\n if (lang_1.isPresent(this.getStyle(element, 'animationName'))) {\r\n this._animationPrefix = '';\r\n }\r\n else {\r\n var domPrefixes = ['Webkit', 'Moz', 'O', 'ms'];\r\n for (var i = 0; i < domPrefixes.length; i++) {\r\n if (lang_1.isPresent(this.getStyle(element, domPrefixes[i] + 'AnimationName'))) {\r\n this._animationPrefix = '-' + domPrefixes[i].toLowerCase() + '-';\r\n break;\r\n }\r\n }\r\n }\r\n var transEndEventNames = {\r\n WebkitTransition: 'webkitTransitionEnd',\r\n MozTransition: 'transitionend',\r\n OTransition: 'oTransitionEnd otransitionend',\r\n transition: 'transitionend'\r\n };\r\n collection_1.StringMapWrapper.forEach(transEndEventNames, function (value, key) {\r\n if (lang_1.isPresent(_this.getStyle(element, key))) {\r\n _this._transitionEnd = value;\r\n }\r\n });\r\n }\r\n catch (e) {\r\n this._animationPrefix = null;\r\n this._transitionEnd = null;\r\n }\r\n }\r\n GenericBrowserDomAdapter.prototype.getXHR = function () { return xhr_impl_1.XHRImpl; };\r\n GenericBrowserDomAdapter.prototype.getDistributedNodes = function (el) { return el.getDistributedNodes(); };\r\n GenericBrowserDomAdapter.prototype.resolveAndSetHref = function (el, baseUrl, href) {\r\n el.href = href == null ? baseUrl : baseUrl + '/../' + href;\r\n };\r\n GenericBrowserDomAdapter.prototype.supportsDOMEvents = function () { return true; };\r\n GenericBrowserDomAdapter.prototype.supportsNativeShadowDOM = function () {\r\n return lang_1.isFunction(this.defaultDoc().body.createShadowRoot);\r\n };\r\n GenericBrowserDomAdapter.prototype.getAnimationPrefix = function () {\r\n return lang_1.isPresent(this._animationPrefix) ? this._animationPrefix : \"\";\r\n };\r\n GenericBrowserDomAdapter.prototype.getTransitionEnd = function () { return lang_1.isPresent(this._transitionEnd) ? this._transitionEnd : \"\"; };\r\n GenericBrowserDomAdapter.prototype.supportsAnimation = function () {\r\n return lang_1.isPresent(this._animationPrefix) && lang_1.isPresent(this._transitionEnd);\r\n };\r\n return GenericBrowserDomAdapter;\r\n})(dom_adapter_1.DomAdapter);\r\nexports.GenericBrowserDomAdapter = GenericBrowserDomAdapter;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpY19icm93c2VyX2FkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci9nZW5lcmljX2Jyb3dzZXJfYWRhcHRlci50cyJdLCJuYW1lcyI6WyJHZW5lcmljQnJvd3NlckRvbUFkYXB0ZXIiLCJHZW5lcmljQnJvd3NlckRvbUFkYXB0ZXIuY29uc3RydWN0b3IiLCJHZW5lcmljQnJvd3NlckRvbUFkYXB0ZXIuZ2V0WEhSIiwiR2VuZXJpY0Jyb3dzZXJEb21BZGFwdGVyLmdldERpc3RyaWJ1dGVkTm9kZXMiLCJHZW5lcmljQnJvd3NlckRvbUFkYXB0ZXIucmVzb2x2ZUFuZFNldEhyZWYiLCJHZW5lcmljQnJvd3NlckRvbUFkYXB0ZXIuc3VwcG9ydHNET01FdmVudHMiLCJHZW5lcmljQnJvd3NlckRvbUFkYXB0ZXIuc3VwcG9ydHNOYXRpdmVTaGFkb3dET00iLCJHZW5lcmljQnJvd3NlckRvbUFkYXB0ZXIuZ2V0QW5pbWF0aW9uUHJlZml4IiwiR2VuZXJpY0Jyb3dzZXJEb21BZGFwdGVyLmdldFRyYW5zaXRpb25FbmQiLCJHZW5lcmljQnJvd3NlckRvbUFkYXB0ZXIuc3VwcG9ydHNBbmltYXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkJBQTRDLGdDQUFnQyxDQUFDLENBQUE7QUFDN0UscUJBQTBDLDBCQUEwQixDQUFDLENBQUE7QUFDckUsNEJBQXlCLHVDQUF1QyxDQUFDLENBQUE7QUFDakUseUJBQXNCLHdDQUF3QyxDQUFDLENBQUE7QUFHL0Q7O0dBRUc7QUFDSDtJQUF1REEsNENBQVVBO0lBRy9EQTtRQUhGQyxpQkFtRENBO1FBL0NHQSxpQkFBT0EsQ0FBQ0E7UUFIRkEscUJBQWdCQSxHQUFXQSxJQUFJQSxDQUFDQTtRQUNoQ0EsbUJBQWNBLEdBQVdBLElBQUlBLENBQUNBO1FBR3BDQSxJQUFJQSxDQUFDQTtZQUNIQSxJQUFJQSxPQUFPQSxHQUFHQSxJQUFJQSxDQUFDQSxhQUFhQSxDQUFDQSxLQUFLQSxFQUFFQSxJQUFJQSxDQUFDQSxVQUFVQSxFQUFFQSxDQUFDQSxDQUFDQTtZQUMzREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLE9BQU9BLEVBQUVBLGVBQWVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUN2REEsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxHQUFHQSxFQUFFQSxDQUFDQTtZQUM3QkEsQ0FBQ0E7WUFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7Z0JBQ05BLElBQUlBLFdBQVdBLEdBQUdBLENBQUNBLFFBQVFBLEVBQUVBLEtBQUtBLEVBQUVBLEdBQUdBLEVBQUVBLElBQUlBLENBQUNBLENBQUNBO2dCQUMvQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsV0FBV0EsQ0FBQ0EsTUFBTUEsRUFBRUEsQ0FBQ0EsRUFBRUEsRUFBRUEsQ0FBQ0E7b0JBQzVDQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsT0FBT0EsRUFBRUEsV0FBV0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsZUFBZUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7d0JBQ3hFQSxJQUFJQSxDQUFDQSxnQkFBZ0JBLEdBQUdBLEdBQUdBLEdBQUdBLFdBQVdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFdBQVdBLEVBQUVBLEdBQUdBLEdBQUdBLENBQUNBO3dCQUNqRUEsS0FBS0EsQ0FBQ0E7b0JBQ1JBLENBQUNBO2dCQUNIQSxDQUFDQTtZQUNIQSxDQUFDQTtZQUNEQSxJQUFJQSxrQkFBa0JBLEdBQTRCQTtnQkFDaERBLGdCQUFnQkEsRUFBRUEscUJBQXFCQTtnQkFDdkNBLGFBQWFBLEVBQUVBLGVBQWVBO2dCQUM5QkEsV0FBV0EsRUFBRUEsK0JBQStCQTtnQkFDNUNBLFVBQVVBLEVBQUVBLGVBQWVBO2FBQzVCQSxDQUFDQTtZQUNGQSw2QkFBZ0JBLENBQUNBLE9BQU9BLENBQUNBLGtCQUFrQkEsRUFBRUEsVUFBQ0EsS0FBYUEsRUFBRUEsR0FBV0E7Z0JBQ3RFQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsS0FBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsT0FBT0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7b0JBQzNDQSxLQUFJQSxDQUFDQSxjQUFjQSxHQUFHQSxLQUFLQSxDQUFDQTtnQkFDOUJBLENBQUNBO1lBQ0hBLENBQUNBLENBQUNBLENBQUNBO1FBQ0xBLENBQUVBO1FBQUFBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ1hBLElBQUlBLENBQUNBLGdCQUFnQkEsR0FBR0EsSUFBSUEsQ0FBQ0E7WUFDN0JBLElBQUlBLENBQUNBLGNBQWNBLEdBQUdBLElBQUlBLENBQUNBO1FBQzdCQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUVERCx5Q0FBTUEsR0FBTkEsY0FBaUJFLE1BQU1BLENBQUNBLGtCQUFPQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNsQ0Ysc0RBQW1CQSxHQUFuQkEsVUFBb0JBLEVBQWVBLElBQVlHLE1BQU1BLENBQU9BLEVBQUdBLENBQUNBLG1CQUFtQkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDeEZILG9EQUFpQkEsR0FBakJBLFVBQWtCQSxFQUFxQkEsRUFBRUEsT0FBZUEsRUFBRUEsSUFBWUE7UUFDcEVJLEVBQUVBLENBQUNBLElBQUlBLEdBQUdBLElBQUlBLElBQUlBLElBQUlBLEdBQUdBLE9BQU9BLEdBQUdBLE9BQU9BLEdBQUdBLE1BQU1BLEdBQUdBLElBQUlBLENBQUNBO0lBQzdEQSxDQUFDQTtJQUNESixvREFBaUJBLEdBQWpCQSxjQUErQkssTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDN0NMLDBEQUF1QkEsR0FBdkJBO1FBQ0VNLE1BQU1BLENBQUNBLGlCQUFVQSxDQUFPQSxJQUFJQSxDQUFDQSxVQUFVQSxFQUFFQSxDQUFDQSxJQUFLQSxDQUFDQSxnQkFBZ0JBLENBQUNBLENBQUNBO0lBQ3BFQSxDQUFDQTtJQUNETixxREFBa0JBLEdBQWxCQTtRQUNFTyxNQUFNQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQSxnQkFBZ0JBLEdBQUdBLEVBQUVBLENBQUNBO0lBQ3ZFQSxDQUFDQTtJQUNEUCxtREFBZ0JBLEdBQWhCQSxjQUE2QlEsTUFBTUEsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLGNBQWNBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLGNBQWNBLEdBQUdBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO0lBQ2hHUixvREFBaUJBLEdBQWpCQTtRQUNFUyxNQUFNQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxJQUFJQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsQ0FBQ0E7SUFDNUVBLENBQUNBO0lBQ0hULCtCQUFDQTtBQUFEQSxDQUFDQSxBQW5ERCxFQUF1RCx3QkFBVSxFQW1EaEU7QUFuRHFCLGdDQUF3QiwyQkFtRDdDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpc3RXcmFwcGVyLCBTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtpc1ByZXNlbnQsIGlzRnVuY3Rpb24sIFR5cGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0RvbUFkYXB0ZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX2FkYXB0ZXInO1xuaW1wb3J0IHtYSFJJbXBsfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci94aHJfaW1wbCc7XG5cblxuLyoqXG4gKiBQcm92aWRlcyBET00gb3BlcmF0aW9ucyBpbiBhbnkgYnJvd3NlciBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdlbmVyaWNCcm93c2VyRG9tQWRhcHRlciBleHRlbmRzIERvbUFkYXB0ZXIge1xuICBwcml2YXRlIF9hbmltYXRpb25QcmVmaXg6IHN0cmluZyA9IG51bGw7XG4gIHByaXZhdGUgX3RyYW5zaXRpb25FbmQ6IHN0cmluZyA9IG51bGw7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5jcmVhdGVFbGVtZW50KCdkaXYnLCB0aGlzLmRlZmF1bHREb2MoKSk7XG4gICAgICBpZiAoaXNQcmVzZW50KHRoaXMuZ2V0U3R5bGUoZWxlbWVudCwgJ2FuaW1hdGlvbk5hbWUnKSkpIHtcbiAgICAgICAgdGhpcy5fYW5pbWF0aW9uUHJlZml4ID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZG9tUHJlZml4ZXMgPSBbJ1dlYmtpdCcsICdNb3onLCAnTycsICdtcyddO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRvbVByZWZpeGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGlzUHJlc2VudCh0aGlzLmdldFN0eWxlKGVsZW1lbnQsIGRvbVByZWZpeGVzW2ldICsgJ0FuaW1hdGlvbk5hbWUnKSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2FuaW1hdGlvblByZWZpeCA9ICctJyArIGRvbVByZWZpeGVzW2ldLnRvTG93ZXJDYXNlKCkgKyAnLSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciB0cmFuc0VuZEV2ZW50TmFtZXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge1xuICAgICAgICBXZWJraXRUcmFuc2l0aW9uOiAnd2Via2l0VHJhbnNpdGlvbkVuZCcsXG4gICAgICAgIE1velRyYW5zaXRpb246ICd0cmFuc2l0aW9uZW5kJyxcbiAgICAgICAgT1RyYW5zaXRpb246ICdvVHJhbnNpdGlvbkVuZCBvdHJhbnNpdGlvbmVuZCcsXG4gICAgICAgIHRyYW5zaXRpb246ICd0cmFuc2l0aW9uZW5kJ1xuICAgICAgfTtcbiAgICAgIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaCh0cmFuc0VuZEV2ZW50TmFtZXMsICh2YWx1ZTogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoaXNQcmVzZW50KHRoaXMuZ2V0U3R5bGUoZWxlbWVudCwga2V5KSkpIHtcbiAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uRW5kID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2FuaW1hdGlvblByZWZpeCA9IG51bGw7XG4gICAgICB0aGlzLl90cmFuc2l0aW9uRW5kID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXRYSFIoKTogVHlwZSB7IHJldHVybiBYSFJJbXBsOyB9XG4gIGdldERpc3RyaWJ1dGVkTm9kZXMoZWw6IEhUTUxFbGVtZW50KTogTm9kZVtdIHsgcmV0dXJuICg8YW55PmVsKS5nZXREaXN0cmlidXRlZE5vZGVzKCk7IH1cbiAgcmVzb2x2ZUFuZFNldEhyZWYoZWw6IEhUTUxBbmNob3JFbGVtZW50LCBiYXNlVXJsOiBzdHJpbmcsIGhyZWY6IHN0cmluZykge1xuICAgIGVsLmhyZWYgPSBocmVmID09IG51bGwgPyBiYXNlVXJsIDogYmFzZVVybCArICcvLi4vJyArIGhyZWY7XG4gIH1cbiAgc3VwcG9ydHNET01FdmVudHMoKTogYm9vbGVhbiB7IHJldHVybiB0cnVlOyB9XG4gIHN1cHBvcnRzTmF0aXZlU2hhZG93RE9NKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKCg8YW55PnRoaXMuZGVmYXVsdERvYygpLmJvZHkpLmNyZWF0ZVNoYWRvd1Jvb3QpO1xuICB9XG4gIGdldEFuaW1hdGlvblByZWZpeCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBpc1ByZXNlbnQodGhpcy5fYW5pbWF0aW9uUHJlZml4KSA/IHRoaXMuX2FuaW1hdGlvblByZWZpeCA6IFwiXCI7XG4gIH1cbiAgZ2V0VHJhbnNpdGlvbkVuZCgpOiBzdHJpbmcgeyByZXR1cm4gaXNQcmVzZW50KHRoaXMuX3RyYW5zaXRpb25FbmQpID8gdGhpcy5fdHJhbnNpdGlvbkVuZCA6IFwiXCI7IH1cbiAgc3VwcG9ydHNBbmltYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLl9hbmltYXRpb25QcmVmaXgpICYmIGlzUHJlc2VudCh0aGlzLl90cmFuc2l0aW9uRW5kKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar generic_browser_adapter_1 = require('./generic_browser_adapter');\r\nvar _attrToPropMap = {\r\n 'class': 'className',\r\n 'innerHtml': 'innerHTML',\r\n 'readonly': 'readOnly',\r\n 'tabindex': 'tabIndex'\r\n};\r\nvar DOM_KEY_LOCATION_NUMPAD = 3;\r\n// Map to convert some key or keyIdentifier values to what will be returned by getEventKey\r\nvar _keyMap = {\r\n // The following values are here for cross-browser compatibility and to match the W3C standard\r\n // cf http://www.w3.org/TR/DOM-Level-3-Events-key/\r\n '\\b': 'Backspace',\r\n '\\t': 'Tab',\r\n '\\x7F': 'Delete',\r\n '\\x1B': 'Escape',\r\n 'Del': 'Delete',\r\n 'Esc': 'Escape',\r\n 'Left': 'ArrowLeft',\r\n 'Right': 'ArrowRight',\r\n 'Up': 'ArrowUp',\r\n 'Down': 'ArrowDown',\r\n 'Menu': 'ContextMenu',\r\n 'Scroll': 'ScrollLock',\r\n 'Win': 'OS'\r\n};\r\n// There is a bug in Chrome for numeric keypad keys:\r\n// https://code.google.com/p/chromium/issues/detail?id=155654\r\n// 1, 2, 3 ... are reported as A, B, C ...\r\nvar _chromeNumKeyPadMap = {\r\n 'A': '1',\r\n 'B': '2',\r\n 'C': '3',\r\n 'D': '4',\r\n 'E': '5',\r\n 'F': '6',\r\n 'G': '7',\r\n 'H': '8',\r\n 'I': '9',\r\n 'J': '*',\r\n 'K': '+',\r\n 'M': '-',\r\n 'N': '.',\r\n 'O': '/',\r\n '\\x60': '0',\r\n '\\x90': 'NumLock'\r\n};\r\n/**\r\n * A `DomAdapter` powered by full browser DOM APIs.\r\n */\r\n/* tslint:disable:requireParameterType */\r\nvar BrowserDomAdapter = (function (_super) {\r\n __extends(BrowserDomAdapter, _super);\r\n function BrowserDomAdapter() {\r\n _super.apply(this, arguments);\r\n }\r\n BrowserDomAdapter.prototype.parse = function (templateHtml) { throw new Error(\"parse not implemented\"); };\r\n BrowserDomAdapter.makeCurrent = function () { dom_adapter_1.setRootDomAdapter(new BrowserDomAdapter()); };\r\n BrowserDomAdapter.prototype.hasProperty = function (element, name) { return name in element; };\r\n BrowserDomAdapter.prototype.setProperty = function (el, name, value) { el[name] = value; };\r\n BrowserDomAdapter.prototype.getProperty = function (el, name) { return el[name]; };\r\n BrowserDomAdapter.prototype.invoke = function (el, methodName, args) {\r\n el[methodName].apply(el, args);\r\n };\r\n // TODO(tbosch): move this into a separate environment class once we have it\r\n BrowserDomAdapter.prototype.logError = function (error) {\r\n if (window.console.error) {\r\n window.console.error(error);\r\n }\r\n else {\r\n window.console.log(error);\r\n }\r\n };\r\n BrowserDomAdapter.prototype.log = function (error) { window.console.log(error); };\r\n BrowserDomAdapter.prototype.logGroup = function (error) {\r\n if (window.console.group) {\r\n window.console.group(error);\r\n this.logError(error);\r\n }\r\n else {\r\n window.console.log(error);\r\n }\r\n };\r\n BrowserDomAdapter.prototype.logGroupEnd = function () {\r\n if (window.console.groupEnd) {\r\n window.console.groupEnd();\r\n }\r\n };\r\n Object.defineProperty(BrowserDomAdapter.prototype, \"attrToPropMap\", {\r\n get: function () { return _attrToPropMap; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n BrowserDomAdapter.prototype.query = function (selector) { return document.querySelector(selector); };\r\n BrowserDomAdapter.prototype.querySelector = function (el, selector) { return el.querySelector(selector); };\r\n BrowserDomAdapter.prototype.querySelectorAll = function (el, selector) { return el.querySelectorAll(selector); };\r\n BrowserDomAdapter.prototype.on = function (el, evt, listener) { el.addEventListener(evt, listener, false); };\r\n BrowserDomAdapter.prototype.onAndCancel = function (el, evt, listener) {\r\n el.addEventListener(evt, listener, false);\r\n // Needed to follow Dart's subscription semantic, until fix of\r\n // https://code.google.com/p/dart/issues/detail?id=17406\r\n return function () { el.removeEventListener(evt, listener, false); };\r\n };\r\n BrowserDomAdapter.prototype.dispatchEvent = function (el, evt) { el.dispatchEvent(evt); };\r\n BrowserDomAdapter.prototype.createMouseEvent = function (eventType) {\r\n var evt = document.createEvent('MouseEvent');\r\n evt.initEvent(eventType, true, true);\r\n return evt;\r\n };\r\n BrowserDomAdapter.prototype.createEvent = function (eventType) {\r\n var evt = document.createEvent('Event');\r\n evt.initEvent(eventType, true, true);\r\n return evt;\r\n };\r\n BrowserDomAdapter.prototype.preventDefault = function (evt) {\r\n evt.preventDefault();\r\n evt.returnValue = false;\r\n };\r\n BrowserDomAdapter.prototype.isPrevented = function (evt) {\r\n return evt.defaultPrevented || lang_1.isPresent(evt.returnValue) && !evt.returnValue;\r\n };\r\n BrowserDomAdapter.prototype.getInnerHTML = function (el) { return el.innerHTML; };\r\n BrowserDomAdapter.prototype.getOuterHTML = function (el) { return el.outerHTML; };\r\n BrowserDomAdapter.prototype.nodeName = function (node) { return node.nodeName; };\r\n BrowserDomAdapter.prototype.nodeValue = function (node) { return node.nodeValue; };\r\n BrowserDomAdapter.prototype.type = function (node) { return node.type; };\r\n BrowserDomAdapter.prototype.content = function (node) {\r\n if (this.hasProperty(node, \"content\")) {\r\n return node.content;\r\n }\r\n else {\r\n return node;\r\n }\r\n };\r\n BrowserDomAdapter.prototype.firstChild = function (el) { return el.firstChild; };\r\n BrowserDomAdapter.prototype.nextSibling = function (el) { return el.nextSibling; };\r\n BrowserDomAdapter.prototype.parentElement = function (el) { return el.parentNode; };\r\n BrowserDomAdapter.prototype.childNodes = function (el) { return el.childNodes; };\r\n BrowserDomAdapter.prototype.childNodesAsList = function (el) {\r\n var childNodes = el.childNodes;\r\n var res = collection_1.ListWrapper.createFixedSize(childNodes.length);\r\n for (var i = 0; i < childNodes.length; i++) {\r\n res[i] = childNodes[i];\r\n }\r\n return res;\r\n };\r\n BrowserDomAdapter.prototype.clearNodes = function (el) {\r\n while (el.firstChild) {\r\n el.removeChild(el.firstChild);\r\n }\r\n };\r\n BrowserDomAdapter.prototype.appendChild = function (el, node) { el.appendChild(node); };\r\n BrowserDomAdapter.prototype.removeChild = function (el, node) { el.removeChild(node); };\r\n BrowserDomAdapter.prototype.replaceChild = function (el, newChild, oldChild) { el.replaceChild(newChild, oldChild); };\r\n BrowserDomAdapter.prototype.remove = function (node) {\r\n if (node.parentNode) {\r\n node.parentNode.removeChild(node);\r\n }\r\n return node;\r\n };\r\n BrowserDomAdapter.prototype.insertBefore = function (el, node) { el.parentNode.insertBefore(node, el); };\r\n BrowserDomAdapter.prototype.insertAllBefore = function (el, nodes) { nodes.forEach(function (n) { return el.parentNode.insertBefore(n, el); }); };\r\n BrowserDomAdapter.prototype.insertAfter = function (el, node) { el.parentNode.insertBefore(node, el.nextSibling); };\r\n BrowserDomAdapter.prototype.setInnerHTML = function (el, value) { el.innerHTML = value; };\r\n BrowserDomAdapter.prototype.getText = function (el) { return el.textContent; };\r\n // TODO(vicb): removed Element type because it does not support StyleElement\r\n BrowserDomAdapter.prototype.setText = function (el, value) { el.textContent = value; };\r\n BrowserDomAdapter.prototype.getValue = function (el) { return el.value; };\r\n BrowserDomAdapter.prototype.setValue = function (el, value) { el.value = value; };\r\n BrowserDomAdapter.prototype.getChecked = function (el) { return el.checked; };\r\n BrowserDomAdapter.prototype.setChecked = function (el, value) { el.checked = value; };\r\n BrowserDomAdapter.prototype.createComment = function (text) { return document.createComment(text); };\r\n BrowserDomAdapter.prototype.createTemplate = function (html) {\r\n var t = document.createElement('template');\r\n t.innerHTML = html;\r\n return t;\r\n };\r\n BrowserDomAdapter.prototype.createElement = function (tagName, doc) {\r\n if (doc === void 0) { doc = document; }\r\n return doc.createElement(tagName);\r\n };\r\n BrowserDomAdapter.prototype.createElementNS = function (ns, tagName, doc) {\r\n if (doc === void 0) { doc = document; }\r\n return doc.createElementNS(ns, tagName);\r\n };\r\n BrowserDomAdapter.prototype.createTextNode = function (text, doc) {\r\n if (doc === void 0) { doc = document; }\r\n return doc.createTextNode(text);\r\n };\r\n BrowserDomAdapter.prototype.createScriptTag = function (attrName, attrValue, doc) {\r\n if (doc === void 0) { doc = document; }\r\n var el = doc.createElement('SCRIPT');\r\n el.setAttribute(attrName, attrValue);\r\n return el;\r\n };\r\n BrowserDomAdapter.prototype.createStyleElement = function (css, doc) {\r\n if (doc === void 0) { doc = document; }\r\n var style = doc.createElement('style');\r\n this.appendChild(style, this.createTextNode(css));\r\n return style;\r\n };\r\n BrowserDomAdapter.prototype.createShadowRoot = function (el) { return el.createShadowRoot(); };\r\n BrowserDomAdapter.prototype.getShadowRoot = function (el) { return el.shadowRoot; };\r\n BrowserDomAdapter.prototype.getHost = function (el) { return el.host; };\r\n BrowserDomAdapter.prototype.clone = function (node) { return node.cloneNode(true); };\r\n BrowserDomAdapter.prototype.getElementsByClassName = function (element, name) {\r\n return element.getElementsByClassName(name);\r\n };\r\n BrowserDomAdapter.prototype.getElementsByTagName = function (element, name) {\r\n return element.getElementsByTagName(name);\r\n };\r\n BrowserDomAdapter.prototype.classList = function (element) { return Array.prototype.slice.call(element.classList, 0); };\r\n BrowserDomAdapter.prototype.addClass = function (element, className) { element.classList.add(className); };\r\n BrowserDomAdapter.prototype.removeClass = function (element, className) { element.classList.remove(className); };\r\n BrowserDomAdapter.prototype.hasClass = function (element, className) { return element.classList.contains(className); };\r\n BrowserDomAdapter.prototype.setStyle = function (element, styleName, styleValue) {\r\n element.style[styleName] = styleValue;\r\n };\r\n BrowserDomAdapter.prototype.removeStyle = function (element, stylename) { element.style[stylename] = null; };\r\n BrowserDomAdapter.prototype.getStyle = function (element, stylename) { return element.style[stylename]; };\r\n BrowserDomAdapter.prototype.hasStyle = function (element, styleName, styleValue) {\r\n if (styleValue === void 0) { styleValue = null; }\r\n var value = this.getStyle(element, styleName) || '';\r\n return styleValue ? value == styleValue : value.length > 0;\r\n };\r\n BrowserDomAdapter.prototype.tagName = function (element) { return element.tagName; };\r\n BrowserDomAdapter.prototype.attributeMap = function (element) {\r\n var res = new Map();\r\n var elAttrs = element.attributes;\r\n for (var i = 0; i < elAttrs.length; i++) {\r\n var attrib = elAttrs[i];\r\n res.set(attrib.name, attrib.value);\r\n }\r\n return res;\r\n };\r\n BrowserDomAdapter.prototype.hasAttribute = function (element, attribute) { return element.hasAttribute(attribute); };\r\n BrowserDomAdapter.prototype.hasAttributeNS = function (element, ns, attribute) {\r\n return element.hasAttributeNS(ns, attribute);\r\n };\r\n BrowserDomAdapter.prototype.getAttribute = function (element, attribute) { return element.getAttribute(attribute); };\r\n BrowserDomAdapter.prototype.getAttributeNS = function (element, ns, name) {\r\n return element.getAttributeNS(ns, name);\r\n };\r\n BrowserDomAdapter.prototype.setAttribute = function (element, name, value) { element.setAttribute(name, value); };\r\n BrowserDomAdapter.prototype.setAttributeNS = function (element, ns, name, value) {\r\n element.setAttributeNS(ns, name, value);\r\n };\r\n BrowserDomAdapter.prototype.removeAttribute = function (element, attribute) { element.removeAttribute(attribute); };\r\n BrowserDomAdapter.prototype.removeAttributeNS = function (element, ns, name) { element.removeAttributeNS(ns, name); };\r\n BrowserDomAdapter.prototype.templateAwareRoot = function (el) { return this.isTemplateElement(el) ? this.content(el) : el; };\r\n BrowserDomAdapter.prototype.createHtmlDocument = function () {\r\n return document.implementation.createHTMLDocument('fakeTitle');\r\n };\r\n BrowserDomAdapter.prototype.defaultDoc = function () { return document; };\r\n BrowserDomAdapter.prototype.getBoundingClientRect = function (el) {\r\n try {\r\n return el.getBoundingClientRect();\r\n }\r\n catch (e) {\r\n return { top: 0, bottom: 0, left: 0, right: 0, width: 0, height: 0 };\r\n }\r\n };\r\n BrowserDomAdapter.prototype.getTitle = function () { return document.title; };\r\n BrowserDomAdapter.prototype.setTitle = function (newTitle) { document.title = newTitle || ''; };\r\n BrowserDomAdapter.prototype.elementMatches = function (n, selector) {\r\n var matches = false;\r\n if (n instanceof HTMLElement) {\r\n if (n.matches) {\r\n matches = n.matches(selector);\r\n }\r\n else if (n.msMatchesSelector) {\r\n matches = n.msMatchesSelector(selector);\r\n }\r\n else if (n.webkitMatchesSelector) {\r\n matches = n.webkitMatchesSelector(selector);\r\n }\r\n }\r\n return matches;\r\n };\r\n BrowserDomAdapter.prototype.isTemplateElement = function (el) {\r\n return el instanceof HTMLElement && el.nodeName == \"TEMPLATE\";\r\n };\r\n BrowserDomAdapter.prototype.isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; };\r\n BrowserDomAdapter.prototype.isCommentNode = function (node) { return node.nodeType === Node.COMMENT_NODE; };\r\n BrowserDomAdapter.prototype.isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; };\r\n BrowserDomAdapter.prototype.hasShadowRoot = function (node) { return node instanceof HTMLElement && lang_1.isPresent(node.shadowRoot); };\r\n BrowserDomAdapter.prototype.isShadowRoot = function (node) { return node instanceof DocumentFragment; };\r\n BrowserDomAdapter.prototype.importIntoDoc = function (node) {\r\n var toImport = node;\r\n if (this.isTemplateElement(node)) {\r\n toImport = this.content(node);\r\n }\r\n return document.importNode(toImport, true);\r\n };\r\n BrowserDomAdapter.prototype.adoptNode = function (node) { return document.adoptNode(node); };\r\n BrowserDomAdapter.prototype.getHref = function (el) { return el.href; };\r\n BrowserDomAdapter.prototype.getEventKey = function (event) {\r\n var key = event.key;\r\n if (lang_1.isBlank(key)) {\r\n key = event.keyIdentifier;\r\n // keyIdentifier is defined in the old draft of DOM Level 3 Events implemented by Chrome and\r\n // Safari\r\n // cf\r\n // http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221/events.html#Events-KeyboardEvents-Interfaces\r\n if (lang_1.isBlank(key)) {\r\n return 'Unidentified';\r\n }\r\n if (key.startsWith('U+')) {\r\n key = String.fromCharCode(parseInt(key.substring(2), 16));\r\n if (event.location === DOM_KEY_LOCATION_NUMPAD && _chromeNumKeyPadMap.hasOwnProperty(key)) {\r\n // There is a bug in Chrome for numeric keypad keys:\r\n // https://code.google.com/p/chromium/issues/detail?id=155654\r\n // 1, 2, 3 ... are reported as A, B, C ...\r\n key = _chromeNumKeyPadMap[key];\r\n }\r\n }\r\n }\r\n if (_keyMap.hasOwnProperty(key)) {\r\n key = _keyMap[key];\r\n }\r\n return key;\r\n };\r\n BrowserDomAdapter.prototype.getGlobalEventTarget = function (target) {\r\n if (target == \"window\") {\r\n return window;\r\n }\r\n else if (target == \"document\") {\r\n return document;\r\n }\r\n else if (target == \"body\") {\r\n return document.body;\r\n }\r\n };\r\n BrowserDomAdapter.prototype.getHistory = function () { return window.history; };\r\n BrowserDomAdapter.prototype.getLocation = function () { return window.location; };\r\n BrowserDomAdapter.prototype.getBaseHref = function () {\r\n var href = getBaseElementHref();\r\n if (lang_1.isBlank(href)) {\r\n return null;\r\n }\r\n return relativePath(href);\r\n };\r\n BrowserDomAdapter.prototype.resetBaseElement = function () { baseElement = null; };\r\n BrowserDomAdapter.prototype.getUserAgent = function () { return window.navigator.userAgent; };\r\n BrowserDomAdapter.prototype.setData = function (element, name, value) {\r\n this.setAttribute(element, 'data-' + name, value);\r\n };\r\n BrowserDomAdapter.prototype.getData = function (element, name) { return this.getAttribute(element, 'data-' + name); };\r\n BrowserDomAdapter.prototype.getComputedStyle = function (element) { return getComputedStyle(element); };\r\n // TODO(tbosch): move this into a separate environment class once we have it\r\n BrowserDomAdapter.prototype.setGlobalVar = function (path, value) { lang_1.setValueOnPath(lang_1.global, path, value); };\r\n BrowserDomAdapter.prototype.requestAnimationFrame = function (callback) { return window.requestAnimationFrame(callback); };\r\n BrowserDomAdapter.prototype.cancelAnimationFrame = function (id) { window.cancelAnimationFrame(id); };\r\n BrowserDomAdapter.prototype.performanceNow = function () {\r\n // performance.now() is not available in all browsers, see\r\n // http://caniuse.com/#search=performance.now\r\n if (lang_1.isPresent(window.performance) && lang_1.isPresent(window.performance.now)) {\r\n return window.performance.now();\r\n }\r\n else {\r\n return lang_1.DateWrapper.toMillis(lang_1.DateWrapper.now());\r\n }\r\n };\r\n return BrowserDomAdapter;\r\n})(generic_browser_adapter_1.GenericBrowserDomAdapter);\r\nexports.BrowserDomAdapter = BrowserDomAdapter;\r\nvar baseElement = null;\r\nfunction getBaseElementHref() {\r\n if (lang_1.isBlank(baseElement)) {\r\n baseElement = document.querySelector('base');\r\n if (lang_1.isBlank(baseElement)) {\r\n return null;\r\n }\r\n }\r\n return baseElement.getAttribute('href');\r\n}\r\n// based on urlUtils.js in AngularJS 1\r\nvar urlParsingNode = null;\r\nfunction relativePath(url) {\r\n if (lang_1.isBlank(urlParsingNode)) {\r\n urlParsingNode = document.createElement(\"a\");\r\n }\r\n urlParsingNode.setAttribute('href', url);\r\n return (urlParsingNode.pathname.charAt(0) === '/') ? urlParsingNode.pathname :\r\n '/' + urlParsingNode.pathname;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlcl9hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2Jyb3dzZXIvYnJvd3Nlcl9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbIkJyb3dzZXJEb21BZGFwdGVyIiwiQnJvd3NlckRvbUFkYXB0ZXIuY29uc3RydWN0b3IiLCJCcm93c2VyRG9tQWRhcHRlci5wYXJzZSIsIkJyb3dzZXJEb21BZGFwdGVyLm1ha2VDdXJyZW50IiwiQnJvd3NlckRvbUFkYXB0ZXIuaGFzUHJvcGVydHkiLCJCcm93c2VyRG9tQWRhcHRlci5zZXRQcm9wZXJ0eSIsIkJyb3dzZXJEb21BZGFwdGVyLmdldFByb3BlcnR5IiwiQnJvd3NlckRvbUFkYXB0ZXIuaW52b2tlIiwiQnJvd3NlckRvbUFkYXB0ZXIubG9nRXJyb3IiLCJCcm93c2VyRG9tQWRhcHRlci5sb2ciLCJCcm93c2VyRG9tQWRhcHRlci5sb2dHcm91cCIsIkJyb3dzZXJEb21BZGFwdGVyLmxvZ0dyb3VwRW5kIiwiQnJvd3NlckRvbUFkYXB0ZXIuYXR0clRvUHJvcE1hcCIsIkJyb3dzZXJEb21BZGFwdGVyLnF1ZXJ5IiwiQnJvd3NlckRvbUFkYXB0ZXIucXVlcnlTZWxlY3RvciIsIkJyb3dzZXJEb21BZGFwdGVyLnF1ZXJ5U2VsZWN0b3JBbGwiLCJCcm93c2VyRG9tQWRhcHRlci5vbiIsIkJyb3dzZXJEb21BZGFwdGVyLm9uQW5kQ2FuY2VsIiwiQnJvd3NlckRvbUFkYXB0ZXIuZGlzcGF0Y2hFdmVudCIsIkJyb3dzZXJEb21BZGFwdGVyLmNyZWF0ZU1vdXNlRXZlbnQiLCJCcm93c2VyRG9tQWRhcHRlci5jcmVhdGVFdmVudCIsIkJyb3dzZXJEb21BZGFwdGVyLnByZXZlbnREZWZhdWx0IiwiQnJvd3NlckRvbUFkYXB0ZXIuaXNQcmV2ZW50ZWQiLCJCcm93c2VyRG9tQWRhcHRlci5nZXRJbm5lckhUTUwiLCJCcm93c2VyRG9tQWRhcHRlci5nZXRPdXRlckhUTUwiLCJCcm93c2VyRG9tQWRhcHRlci5ub2RlTmFtZSIsIkJyb3dzZXJEb21BZGFwdGVyLm5vZGVWYWx1ZSIsIkJyb3dzZXJEb21BZGFwdGVyLnR5cGUiLCJCcm93c2VyRG9tQWRhcHRlci5jb250ZW50IiwiQnJvd3NlckRvbUFkYXB0ZXIuZmlyc3RDaGlsZCIsIkJyb3dzZXJEb21BZGFwdGVyLm5leHRTaWJsaW5nIiwiQnJvd3NlckRvbUFkYXB0ZXIucGFyZW50RWxlbWVudCIsIkJyb3dzZXJEb21BZGFwdGVyLmNoaWxkTm9kZXMiLCJCcm93c2VyRG9tQWRhcHRlci5jaGlsZE5vZGVzQXNMaXN0IiwiQnJvd3NlckRvbUFkYXB0ZXIuY2xlYXJOb2RlcyIsIkJyb3dzZXJEb21BZGFwdGVyLmFwcGVuZENoaWxkIiwiQnJvd3NlckRvbUFkYXB0ZXIucmVtb3ZlQ2hpbGQiLCJCcm93c2VyRG9tQWRhcHRlci5yZXBsYWNlQ2hpbGQiLCJCcm93c2VyRG9tQWRhcHRlci5yZW1vdmUiLCJCcm93c2VyRG9tQWRhcHRlci5pbnNlcnRCZWZvcmUiLCJCcm93c2VyRG9tQWRhcHRlci5pbnNlcnRBbGxCZWZvcmUiLCJCcm93c2VyRG9tQWRhcHRlci5pbnNlcnRBZnRlciIsIkJyb3dzZXJEb21BZGFwdGVyLnNldElubmVySFRNTCIsIkJyb3dzZXJEb21BZGFwdGVyLmdldFRleHQiLCJCcm93c2VyRG9tQWRhcHRlci5zZXRUZXh0IiwiQnJvd3NlckRvbUFkYXB0ZXIuZ2V0VmFsdWUiLCJCcm93c2VyRG9tQWRhcHRlci5zZXRWYWx1ZSIsIkJyb3dzZXJEb21BZGFwdGVyLmdldENoZWNrZWQiLCJCcm93c2VyRG9tQWRhcHRlci5zZXRDaGVja2VkIiwiQnJvd3NlckRvbUFkYXB0ZXIuY3JlYXRlQ29tbWVudCIsIkJyb3dzZXJEb21BZGFwdGVyLmNyZWF0ZVRlbXBsYXRlIiwiQnJvd3NlckRvbUFkYXB0ZXIuY3JlYXRlRWxlbWVudCIsIkJyb3dzZXJEb21BZGFwdGVyLmNyZWF0ZUVsZW1lbnROUyIsIkJyb3dzZXJEb21BZGFwdGVyLmNyZWF0ZVRleHROb2RlIiwiQnJvd3NlckRvbUFkYXB0ZXIuY3JlYXRlU2NyaXB0VGFnIiwiQnJvd3NlckRvbUFkYXB0ZXIuY3JlYXRlU3R5bGVFbGVtZW50IiwiQnJvd3NlckRvbUFkYXB0ZXIuY3JlYXRlU2hhZG93Um9vdCIsIkJyb3dzZXJEb21BZGFwdGVyLmdldFNoYWRvd1Jvb3QiLCJCcm93c2VyRG9tQWRhcHRlci5nZXRIb3N0IiwiQnJvd3NlckRvbUFkYXB0ZXIuY2xvbmUiLCJCcm93c2VyRG9tQWRhcHRlci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiQnJvd3NlckRvbUFkYXB0ZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJCcm93c2VyRG9tQWRhcHRlci5jbGFzc0xpc3QiLCJCcm93c2VyRG9tQWRhcHRlci5hZGRDbGFzcyIsIkJyb3dzZXJEb21BZGFwdGVyLnJlbW92ZUNsYXNzIiwiQnJvd3NlckRvbUFkYXB0ZXIuaGFzQ2xhc3MiLCJCcm93c2VyRG9tQWRhcHRlci5zZXRTdHlsZSIsIkJyb3dzZXJEb21BZGFwdGVyLnJlbW92ZVN0eWxlIiwiQnJvd3NlckRvbUFkYXB0ZXIuZ2V0U3R5bGUiLCJCcm93c2VyRG9tQWRhcHRlci5oYXNTdHlsZSIsIkJyb3dzZXJEb21BZGFwdGVyLnRhZ05hbWUiLCJCcm93c2VyRG9tQWRhcHRlci5hdHRyaWJ1dGVNYXAiLCJCcm93c2VyRG9tQWRhcHRlci5oYXNBdHRyaWJ1dGUiLCJCcm93c2VyRG9tQWRhcHRlci5oYXNBdHRyaWJ1dGVOUyIsIkJyb3dzZXJEb21BZGFwdGVyLmdldEF0dHJpYnV0ZSIsIkJyb3dzZXJEb21BZGFwdGVyLmdldEF0dHJpYnV0ZU5TIiwiQnJvd3NlckRvbUFkYXB0ZXIuc2V0QXR0cmlidXRlIiwiQnJvd3NlckRvbUFkYXB0ZXIuc2V0QXR0cmlidXRlTlMiLCJCcm93c2VyRG9tQWRhcHRlci5yZW1vdmVBdHRyaWJ1dGUiLCJCcm93c2VyRG9tQWRhcHRlci5yZW1vdmVBdHRyaWJ1dGVOUyIsIkJyb3dzZXJEb21BZGFwdGVyLnRlbXBsYXRlQXdhcmVSb290IiwiQnJvd3NlckRvbUFkYXB0ZXIuY3JlYXRlSHRtbERvY3VtZW50IiwiQnJvd3NlckRvbUFkYXB0ZXIuZGVmYXVsdERvYyIsIkJyb3dzZXJEb21BZGFwdGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIkJyb3dzZXJEb21BZGFwdGVyLmdldFRpdGxlIiwiQnJvd3NlckRvbUFkYXB0ZXIuc2V0VGl0bGUiLCJCcm93c2VyRG9tQWRhcHRlci5lbGVtZW50TWF0Y2hlcyIsIkJyb3dzZXJEb21BZGFwdGVyLmlzVGVtcGxhdGVFbGVtZW50IiwiQnJvd3NlckRvbUFkYXB0ZXIuaXNUZXh0Tm9kZSIsIkJyb3dzZXJEb21BZGFwdGVyLmlzQ29tbWVudE5vZGUiLCJCcm93c2VyRG9tQWRhcHRlci5pc0VsZW1lbnROb2RlIiwiQnJvd3NlckRvbUFkYXB0ZXIuaGFzU2hhZG93Um9vdCIsIkJyb3dzZXJEb21BZGFwdGVyLmlzU2hhZG93Um9vdCIsIkJyb3dzZXJEb21BZGFwdGVyLmltcG9ydEludG9Eb2MiLCJCcm93c2VyRG9tQWRhcHRlci5hZG9wdE5vZGUiLCJCcm93c2VyRG9tQWRhcHRlci5nZXRIcmVmIiwiQnJvd3NlckRvbUFkYXB0ZXIuZ2V0RXZlbnRLZXkiLCJCcm93c2VyRG9tQWRhcHRlci5nZXRHbG9iYWxFdmVudFRhcmdldCIsIkJyb3dzZXJEb21BZGFwdGVyLmdldEhpc3RvcnkiLCJCcm93c2VyRG9tQWRhcHRlci5nZXRMb2NhdGlvbiIsIkJyb3dzZXJEb21BZGFwdGVyLmdldEJhc2VIcmVmIiwiQnJvd3NlckRvbUFkYXB0ZXIucmVzZXRCYXNlRWxlbWVudCIsIkJyb3dzZXJEb21BZGFwdGVyLmdldFVzZXJBZ2VudCIsIkJyb3dzZXJEb21BZGFwdGVyLnNldERhdGEiLCJCcm93c2VyRG9tQWRhcHRlci5nZXREYXRhIiwiQnJvd3NlckRvbUFkYXB0ZXIuZ2V0Q29tcHV0ZWRTdHlsZSIsIkJyb3dzZXJEb21BZGFwdGVyLnNldEdsb2JhbFZhciIsIkJyb3dzZXJEb21BZGFwdGVyLnJlcXVlc3RBbmltYXRpb25GcmFtZSIsIkJyb3dzZXJEb21BZGFwdGVyLmNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiQnJvd3NlckRvbUFkYXB0ZXIucGVyZm9ybWFuY2VOb3ciLCJnZXRCYXNlRWxlbWVudEhyZWYiLCJyZWxhdGl2ZVBhdGgiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkJBQXNDLGdDQUFnQyxDQUFDLENBQUE7QUFDdkUscUJBQXNFLDBCQUEwQixDQUFDLENBQUE7QUFDakcsNEJBQWdDLHVDQUF1QyxDQUFDLENBQUE7QUFDeEUsd0NBQXVDLDJCQUEyQixDQUFDLENBQUE7QUFFbkUsSUFBSSxjQUFjLEdBQUc7SUFDbkIsT0FBTyxFQUFFLFdBQVc7SUFDcEIsV0FBVyxFQUFFLFdBQVc7SUFDeEIsVUFBVSxFQUFFLFVBQVU7SUFDdEIsVUFBVSxFQUFFLFVBQVU7Q0FDdkIsQ0FBQztBQUVGLElBQU0sdUJBQXVCLEdBQUcsQ0FBQyxDQUFDO0FBRWxDLDBGQUEwRjtBQUMxRixJQUFJLE9BQU8sR0FBRztJQUNaLDhGQUE4RjtJQUM5RixrREFBa0Q7SUFDbEQsSUFBSSxFQUFFLFdBQVc7SUFDakIsSUFBSSxFQUFFLEtBQUs7SUFDWCxNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsUUFBUTtJQUNmLEtBQUssRUFBRSxRQUFRO0lBQ2YsTUFBTSxFQUFFLFdBQVc7SUFDbkIsT0FBTyxFQUFFLFlBQVk7SUFDckIsSUFBSSxFQUFFLFNBQVM7SUFDZixNQUFNLEVBQUUsV0FBVztJQUNuQixNQUFNLEVBQUUsYUFBYTtJQUNyQixRQUFRLEVBQUUsWUFBWTtJQUN0QixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixvREFBb0Q7QUFDcEQsNkRBQTZEO0FBQzdELDBDQUEwQztBQUMxQyxJQUFJLG1CQUFtQixHQUFHO0lBQ3hCLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lB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QSxZQUFZQSxDQUFDQSxNQUFNQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQTtJQUN6Q0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsY0FBY0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsS0FBS0EsR0FBR0EsQ0FBQ0EsR0FBR0EsY0FBY0EsQ0FBQ0EsUUFBUUE7UUFDdkJBLEdBQUdBLEdBQUdBLGNBQWNBLENBQUNBLFFBQVFBLENBQUNBO0FBQ3JGQSxDQUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWFwV3JhcHBlciwgTGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge2lzQmxhbmssIGlzUHJlc2VudCwgZ2xvYmFsLCBzZXRWYWx1ZU9uUGF0aCwgRGF0ZVdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge3NldFJvb3REb21BZGFwdGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyJztcbmltcG9ydCB7R2VuZXJpY0Jyb3dzZXJEb21BZGFwdGVyfSBmcm9tICcuL2dlbmVyaWNfYnJvd3Nlcl9hZGFwdGVyJztcblxudmFyIF9hdHRyVG9Qcm9wTWFwID0ge1xuICAnY2xhc3MnOiAnY2xhc3NOYW1lJyxcbiAgJ2lubmVySHRtbCc6ICdpbm5lckhUTUwnLFxuICAncmVhZG9ubHknOiAncmVhZE9ubHknLFxuICAndGFiaW5kZXgnOiAndGFiSW5kZXgnXG59O1xuXG5jb25zdCBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCA9IDM7XG5cbi8vIE1hcCB0byBjb252ZXJ0IHNvbWUga2V5IG9yIGtleUlkZW50aWZpZXIgdmFsdWVzIHRvIHdoYXQgd2lsbCBiZSByZXR1cm5lZCBieSBnZXRFdmVudEtleVxudmFyIF9rZXlNYXAgPSB7XG4gIC8vIFRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSBoZXJlIGZvciBjcm9zcy1icm93c2VyIGNvbXBhdGliaWxpdHkgYW5kIHRvIG1hdGNoIHRoZSBXM0Mgc3RhbmRhcmRcbiAgLy8gY2YgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLWtleS9cbiAgJ1xcYic6ICdCYWNrc3BhY2UnLFxuICAnXFx0JzogJ1RhYicsXG4gICdcXHg3Ric6ICdEZWxldGUnLFxuICAnXFx4MUInOiAnRXNjYXBlJyxcbiAgJ0RlbCc6ICdEZWxldGUnLFxuICAnRXNjJzogJ0VzY2FwZScsXG4gICdMZWZ0JzogJ0Fycm93TGVmdCcsXG4gICdSaWdodCc6ICdBcnJvd1JpZ2h0JyxcbiAgJ1VwJzogJ0Fycm93VXAnLFxuICAnRG93bic6ICdBcnJvd0Rvd24nLFxuICAnTWVudSc6ICdDb250ZXh0TWVudScsXG4gICdTY3JvbGwnOiAnU2Nyb2xsTG9jaycsXG4gICdXaW4nOiAnT1MnXG59O1xuXG4vLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDaHJvbWUgZm9yIG51bWVyaWMga2V5cGFkIGtleXM6XG4vLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTU1NjU0XG4vLyAxLCAyLCAzIC4uLiBhcmUgcmVwb3J0ZWQgYXMgQSwgQiwgQyAuLi5cbnZhciBfY2hyb21lTnVtS2V5UGFkTWFwID0ge1xuICAnQSc6ICcxJyxcbiAgJ0InOiAnMicsXG4gICdDJzogJzMnLFxuICAnRCc6ICc0JyxcbiAgJ0UnOiAnNScsXG4gICdGJzogJzYnLFxuICAnRyc6ICc3JyxcbiAgJ0gnOiAnOCcsXG4gICdJJzogJzknLFxuICAnSic6ICcqJyxcbiAgJ0snOiAnKycsXG4gICdNJzogJy0nLFxuICAnTic6ICcuJyxcbiAgJ08nOiAnLycsXG4gICdcXHg2MCc6ICcwJyxcbiAgJ1xceDkwJzogJ051bUxvY2snXG59O1xuXG4vKipcbiAqIEEgYERvbUFkYXB0ZXJgIHBvd2VyZWQgYnkgZnVsbCBicm93c2VyIERPTSBBUElzLlxuICovXG4vKiB0c2xpbnQ6ZGlzYWJsZTpyZXF1aXJlUGFyYW1ldGVyVHlwZSAqL1xuZXhwb3J0IGNsYXNzIEJyb3dzZXJEb21BZGFwdGVyIGV4dGVuZHMgR2VuZXJpY0Jyb3dzZXJEb21BZGFwdGVyIHtcbiAgcGFyc2UodGVtcGxhdGVIdG1sOiBzdHJpbmcpIHsgdGhyb3cgbmV3IEVycm9yKFwicGFyc2Ugbm90IGltcGxlbWVudGVkXCIpOyB9XG4gIHN0YXRpYyBtYWtlQ3VycmVudCgpIHsgc2V0Um9vdERvbUFkYXB0ZXIobmV3IEJyb3dzZXJEb21BZGFwdGVyKCkpOyB9XG4gIGhhc1Byb3BlcnR5KGVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gbmFtZSBpbiBlbGVtZW50OyB9XG4gIHNldFByb3BlcnR5KGVsOiAvKmVsZW1lbnQqLyBhbnksIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkgeyBlbFtuYW1lXSA9IHZhbHVlOyB9XG4gIGdldFByb3BlcnR5KGVsOiAvKmVsZW1lbnQqLyBhbnksIG5hbWU6IHN0cmluZyk6IGFueSB7IHJldHVybiBlbFtuYW1lXTsgfVxuICBpbnZva2UoZWw6IC8qZWxlbWVudCovIGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSk6IGFueSB7XG4gICAgZWxbbWV0aG9kTmFtZV0uYXBwbHkoZWwsIGFyZ3MpO1xuICB9XG5cbiAgLy8gVE9ETyh0Ym9zY2gpOiBtb3ZlIHRoaXMgaW50byBhIHNlcGFyYXRlIGVudmlyb25tZW50IGNsYXNzIG9uY2Ugd2UgaGF2ZSBpdFxuICBsb2dFcnJvcihlcnJvcikge1xuICAgIGlmICh3aW5kb3cuY29uc29sZS5lcnJvcikge1xuICAgICAgd2luZG93LmNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cuY29uc29sZS5sb2coZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGxvZyhlcnJvcikgeyB3aW5kb3cuY29uc29sZS5sb2coZXJyb3IpOyB9XG5cbiAgbG9nR3JvdXAoZXJyb3IpIHtcbiAgICBpZiAod2luZG93LmNvbnNvbGUuZ3JvdXApIHtcbiAgICAgIHdpbmRvdy5jb25zb2xlLmdyb3VwKGVycm9yKTtcbiAgICAgIHRoaXMubG9nRXJyb3IoZXJyb3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cuY29uc29sZS5sb2coZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGxvZ0dyb3VwRW5kKCkge1xuICAgIGlmICh3aW5kb3cuY29uc29sZS5ncm91cEVuZCkge1xuICAgICAgd2luZG93LmNvbnNvbGUuZ3JvdXBFbmQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgYXR0clRvUHJvcE1hcCgpOiBhbnkgeyByZXR1cm4gX2F0dHJUb1Byb3BNYXA7IH1cblxuICBxdWVyeShzZWxlY3Rvcjogc3RyaW5nKTogYW55IHsgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOyB9XG4gIHF1ZXJ5U2VsZWN0b3IoZWwsIHNlbGVjdG9yOiBzdHJpbmcpOiBIVE1MRWxlbWVudCB7IHJldHVybiBlbC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsgfVxuICBxdWVyeVNlbGVjdG9yQWxsKGVsLCBzZWxlY3Rvcjogc3RyaW5nKTogYW55W10geyByZXR1cm4gZWwucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7IH1cbiAgb24oZWwsIGV2dCwgbGlzdGVuZXIpIHsgZWwuYWRkRXZlbnRMaXN0ZW5lcihldnQsIGxpc3RlbmVyLCBmYWxzZSk7IH1cbiAgb25BbmRDYW5jZWwoZWwsIGV2dCwgbGlzdGVuZXIpOiBGdW5jdGlvbiB7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldnQsIGxpc3RlbmVyLCBmYWxzZSk7XG4gICAgLy8gTmVlZGVkIHRvIGZvbGxvdyBEYXJ0J3Mgc3Vic2NyaXB0aW9uIHNlbWFudGljLCB1bnRpbCBmaXggb2ZcbiAgICAvLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2RhcnQvaXNzdWVzL2RldGFpbD9pZD0xNzQwNlxuICAgIHJldHVybiAoKSA9PiB7IGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZ0LCBsaXN0ZW5lciwgZmFsc2UpOyB9O1xuICB9XG4gIGRpc3BhdGNoRXZlbnQoZWwsIGV2dCkgeyBlbC5kaXNwYXRjaEV2ZW50KGV2dCk7IH1cbiAgY3JlYXRlTW91c2VFdmVudChldmVudFR5cGU6IHN0cmluZyk6IE1vdXNlRXZlbnQge1xuICAgIHZhciBldnQ6IE1vdXNlRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpO1xuICAgIGV2dC5pbml0RXZlbnQoZXZlbnRUeXBlLCB0cnVlLCB0cnVlKTtcbiAgICByZXR1cm4gZXZ0O1xuICB9XG4gIGNyZWF0ZUV2ZW50KGV2ZW50VHlwZSk6IEV2ZW50IHtcbiAgICB2YXIgZXZ0OiBFdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgIGV2dC5pbml0RXZlbnQoZXZlbnRUeXBlLCB0cnVlLCB0cnVlKTtcbiAgICByZXR1cm4gZXZ0O1xuICB9XG4gIHByZXZlbnREZWZhdWx0KGV2dDogRXZlbnQpIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQucmV0dXJuVmFsdWUgPSBmYWxzZTtcbiAgfVxuICBpc1ByZXZlbnRlZChldnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGV2dC5kZWZhdWx0UHJldmVudGVkIHx8IGlzUHJlc2VudChldnQucmV0dXJuVmFsdWUpICYmICFldnQucmV0dXJuVmFsdWU7XG4gIH1cbiAgZ2V0SW5uZXJIVE1MKGVsKTogc3RyaW5nIHsgcmV0dXJuIGVsLmlubmVySFRNTDsgfVxuICBnZXRPdXRlckhUTUwoZWwpOiBzdHJpbmcgeyByZXR1cm4gZWwub3V0ZXJIVE1MOyB9XG4gIG5vZGVOYW1lKG5vZGU6IE5vZGUpOiBzdHJpbmcgeyByZXR1cm4gbm9kZS5ub2RlTmFtZTsgfVxuICBub2RlVmFsdWUobm9kZTogTm9kZSk6IHN0cmluZyB7IHJldHVybiBub2RlLm5vZGVWYWx1ZTsgfVxuICB0eXBlKG5vZGU6IEhUTUxJbnB1dEVsZW1lbnQpOiBzdHJpbmcgeyByZXR1cm4gbm9kZS50eXBlOyB9XG4gIGNvbnRlbnQobm9kZTogTm9kZSk6IE5vZGUge1xuICAgIGlmICh0aGlzLmhhc1Byb3BlcnR5KG5vZGUsIFwiY29udGVudFwiKSkge1xuICAgICAgcmV0dXJuICg8YW55Pm5vZGUpLmNvbnRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgfVxuICBmaXJzdENoaWxkKGVsKTogTm9kZSB7IHJldHVybiBlbC5maXJzdENoaWxkOyB9XG4gIG5leHRTaWJsaW5nKGVsKTogTm9kZSB7IHJldHVybiBlbC5uZXh0U2libGluZzsgfVxuICBwYXJlbnRFbGVtZW50KGVsKTogTm9kZSB7IHJldHVybiBlbC5wYXJlbnROb2RlOyB9XG4gIGNoaWxkTm9kZXMoZWwpOiBOb2RlW10geyByZXR1cm4gZWwuY2hpbGROb2RlczsgfVxuICBjaGlsZE5vZGVzQXNMaXN0KGVsKTogYW55W10ge1xuICAgIHZhciBjaGlsZE5vZGVzID0gZWwuY2hpbGROb2RlcztcbiAgICB2YXIgcmVzID0gTGlzdFdyYXBwZXIuY3JlYXRlRml4ZWRTaXplKGNoaWxkTm9kZXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc1tpXSA9IGNoaWxkTm9kZXNbaV07XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cbiAgY2xlYXJOb2RlcyhlbCkge1xuICAgIHdoaWxlIChlbC5maXJzdENoaWxkKSB7XG4gICAgICBlbC5yZW1vdmVDaGlsZChlbC5maXJzdENoaWxkKTtcbiAgICB9XG4gIH1cbiAgYXBwZW5kQ2hpbGQoZWwsIG5vZGUpIHsgZWwuYXBwZW5kQ2hpbGQobm9kZSk7IH1cbiAgcmVtb3ZlQ2hpbGQoZWwsIG5vZGUpIHsgZWwucmVtb3ZlQ2hpbGQobm9kZSk7IH1cbiAgcmVwbGFjZUNoaWxkKGVsOiBOb2RlLCBuZXdDaGlsZCwgb2xkQ2hpbGQpIHsgZWwucmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCk7IH1cbiAgcmVtb3ZlKG5vZGUpOiBOb2RlIHtcbiAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xuICB9XG4gIGluc2VydEJlZm9yZShlbCwgbm9kZSkgeyBlbC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCBlbCk7IH1cbiAgaW5zZXJ0QWxsQmVmb3JlKGVsLCBub2RlcykgeyBub2Rlcy5mb3JFYWNoKG4gPT4gZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobiwgZWwpKTsgfVxuICBpbnNlcnRBZnRlcihlbCwgbm9kZSkgeyBlbC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCBlbC5uZXh0U2libGluZyk7IH1cbiAgc2V0SW5uZXJIVE1MKGVsLCB2YWx1ZSkgeyBlbC5pbm5lckhUTUwgPSB2YWx1ZTsgfVxuICBnZXRUZXh0KGVsKTogc3RyaW5nIHsgcmV0dXJuIGVsLnRleHRDb250ZW50OyB9XG4gIC8vIFRPRE8odmljYik6IHJlbW92ZWQgRWxlbWVudCB0eXBlIGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCBTdHlsZUVsZW1lbnRcbiAgc2V0VGV4dChlbCwgdmFsdWU6IHN0cmluZykgeyBlbC50ZXh0Q29udGVudCA9IHZhbHVlOyB9XG4gIGdldFZhbHVlKGVsKTogc3RyaW5nIHsgcmV0dXJuIGVsLnZhbHVlOyB9XG4gIHNldFZhbHVlKGVsLCB2YWx1ZTogc3RyaW5nKSB7IGVsLnZhbHVlID0gdmFsdWU7IH1cbiAgZ2V0Q2hlY2tlZChlbCk6IGJvb2xlYW4geyByZXR1cm4gZWwuY2hlY2tlZDsgfVxuICBzZXRDaGVja2VkKGVsLCB2YWx1ZTogYm9vbGVhbikgeyBlbC5jaGVja2VkID0gdmFsdWU7IH1cbiAgY3JlYXRlQ29tbWVudCh0ZXh0OiBzdHJpbmcpOiBDb21tZW50IHsgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQodGV4dCk7IH1cbiAgY3JlYXRlVGVtcGxhdGUoaHRtbCk6IEhUTUxFbGVtZW50IHtcbiAgICB2YXIgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7XG4gICAgdC5pbm5lckhUTUwgPSBodG1sO1xuICAgIHJldHVybiB0O1xuICB9XG4gIGNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgZG9jID0gZG9jdW1lbnQpOiBIVE1MRWxlbWVudCB7IHJldHVybiBkb2MuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTsgfVxuICBjcmVhdGVFbGVtZW50TlMobnMsIHRhZ05hbWUsIGRvYyA9IGRvY3VtZW50KTogRWxlbWVudCB7IHJldHVybiBkb2MuY3JlYXRlRWxlbWVudE5TKG5zLCB0YWdOYW1lKTsgfVxuICBjcmVhdGVUZXh0Tm9kZSh0ZXh0OiBzdHJpbmcsIGRvYyA9IGRvY3VtZW50KTogVGV4dCB7IHJldHVybiBkb2MuY3JlYXRlVGV4dE5vZGUodGV4dCk7IH1cbiAgY3JlYXRlU2NyaXB0VGFnKGF0dHJOYW1lOiBzdHJpbmcsIGF0dHJWYWx1ZTogc3RyaW5nLCBkb2MgPSBkb2N1bWVudCk6IEhUTUxTY3JpcHRFbGVtZW50IHtcbiAgICB2YXIgZWwgPSA8SFRNTFNjcmlwdEVsZW1lbnQ+ZG9jLmNyZWF0ZUVsZW1lbnQoJ1NDUklQVCcpO1xuICAgIGVsLnNldEF0dHJpYnV0ZShhdHRyTmFtZSwgYXR0clZhbHVlKTtcbiAgICByZXR1cm4gZWw7XG4gIH1cbiAgY3JlYXRlU3R5bGVFbGVtZW50KGNzczogc3RyaW5nLCBkb2MgPSBkb2N1bWVudCk6IEhUTUxTdHlsZUVsZW1lbnQge1xuICAgIHZhciBzdHlsZSA9IDxIVE1MU3R5bGVFbGVtZW50PmRvYy5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIHRoaXMuYXBwZW5kQ2hpbGQoc3R5bGUsIHRoaXMuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9XG4gIGNyZWF0ZVNoYWRvd1Jvb3QoZWw6IEhUTUxFbGVtZW50KTogRG9jdW1lbnRGcmFnbWVudCB7IHJldHVybiAoPGFueT5lbCkuY3JlYXRlU2hhZG93Um9vdCgpOyB9XG4gIGdldFNoYWRvd1Jvb3QoZWw6IEhUTUxFbGVtZW50KTogRG9jdW1lbnRGcmFnbWVudCB7IHJldHVybiAoPGFueT5lbCkuc2hhZG93Um9vdDsgfVxuICBnZXRIb3N0KGVsOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHsgcmV0dXJuICg8YW55PmVsKS5ob3N0OyB9XG4gIGNsb25lKG5vZGU6IE5vZGUpOiBOb2RlIHsgcmV0dXJuIG5vZGUuY2xvbmVOb2RlKHRydWUpOyB9XG4gIGdldEVsZW1lbnRzQnlDbGFzc05hbWUoZWxlbWVudCwgbmFtZTogc3RyaW5nKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShuYW1lKTtcbiAgfVxuICBnZXRFbGVtZW50c0J5VGFnTmFtZShlbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBIVE1MRWxlbWVudFtdIHtcbiAgICByZXR1cm4gZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShuYW1lKTtcbiAgfVxuICBjbGFzc0xpc3QoZWxlbWVudCk6IGFueVtdIHsgcmV0dXJuIDxhbnlbXT5BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlbGVtZW50LmNsYXNzTGlzdCwgMCk7IH1cbiAgYWRkQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lOiBzdHJpbmcpIHsgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7IH1cbiAgcmVtb3ZlQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lOiBzdHJpbmcpIHsgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7IH1cbiAgaGFzQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSk7IH1cbiAgc2V0U3R5bGUoZWxlbWVudCwgc3R5bGVOYW1lOiBzdHJpbmcsIHN0eWxlVmFsdWU6IHN0cmluZykge1xuICAgIGVsZW1lbnQuc3R5bGVbc3R5bGVOYW1lXSA9IHN0eWxlVmFsdWU7XG4gIH1cbiAgcmVtb3ZlU3R5bGUoZWxlbWVudCwgc3R5bGVuYW1lOiBzdHJpbmcpIHsgZWxlbWVudC5zdHlsZVtzdHlsZW5hbWVdID0gbnVsbDsgfVxuICBnZXRTdHlsZShlbGVtZW50LCBzdHlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7IHJldHVybiBlbGVtZW50LnN0eWxlW3N0eWxlbmFtZV07IH1cbiAgaGFzU3R5bGUoZWxlbWVudCwgc3R5bGVOYW1lOiBzdHJpbmcsIHN0eWxlVmFsdWU6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLmdldFN0eWxlKGVsZW1lbnQsIHN0eWxlTmFtZSkgfHwgJyc7XG4gICAgcmV0dXJuIHN0eWxlVmFsdWUgPyB2YWx1ZSA9PSBzdHlsZVZhbHVlIDogdmFsdWUubGVuZ3RoID4gMDtcbiAgfVxuICB0YWdOYW1lKGVsZW1lbnQpOiBzdHJpbmcgeyByZXR1cm4gZWxlbWVudC50YWdOYW1lOyB9XG4gIGF0dHJpYnV0ZU1hcChlbGVtZW50KTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgdmFyIHJlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgdmFyIGVsQXR0cnMgPSBlbGVtZW50LmF0dHJpYnV0ZXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbEF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYXR0cmliID0gZWxBdHRyc1tpXTtcbiAgICAgIHJlcy5zZXQoYXR0cmliLm5hbWUsIGF0dHJpYi52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cbiAgaGFzQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyaWJ1dGUpOyB9XG4gIGhhc0F0dHJpYnV0ZU5TKGVsZW1lbnQsIG5zOiBzdHJpbmcsIGF0dHJpYnV0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlTlMobnMsIGF0dHJpYnV0ZSk7XG4gIH1cbiAgZ2V0QXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZTogc3RyaW5nKTogc3RyaW5nIHsgcmV0dXJuIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSk7IH1cbiAgZ2V0QXR0cmlidXRlTlMoZWxlbWVudCwgbnM6IHN0cmluZywgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZWxlbWVudC5nZXRBdHRyaWJ1dGVOUyhucywgbmFtZSk7XG4gIH1cbiAgc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykgeyBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7IH1cbiAgc2V0QXR0cmlidXRlTlMoZWxlbWVudCwgbnM6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhucywgbmFtZSwgdmFsdWUpO1xuICB9XG4gIHJlbW92ZUF0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGU6IHN0cmluZykgeyBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOyB9XG4gIHJlbW92ZUF0dHJpYnV0ZU5TKGVsZW1lbnQsIG5zOiBzdHJpbmcsIG5hbWU6IHN0cmluZykgeyBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZU5TKG5zLCBuYW1lKTsgfVxuICB0ZW1wbGF0ZUF3YXJlUm9vdChlbCk6IGFueSB7IHJldHVybiB0aGlzLmlzVGVtcGxhdGVFbGVtZW50KGVsKSA/IHRoaXMuY29udGVudChlbCkgOiBlbDsgfVxuICBjcmVhdGVIdG1sRG9jdW1lbnQoKTogSFRNTERvY3VtZW50IHtcbiAgICByZXR1cm4gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCdmYWtlVGl0bGUnKTtcbiAgfVxuICBkZWZhdWx0RG9jKCk6IEhUTUxEb2N1bWVudCB7IHJldHVybiBkb2N1bWVudDsgfVxuICBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWwpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHt0b3A6IDAsIGJvdHRvbTogMCwgbGVmdDogMCwgcmlnaHQ6IDAsIHdpZHRoOiAwLCBoZWlnaHQ6IDB9O1xuICAgIH1cbiAgfVxuICBnZXRUaXRsZSgpOiBzdHJpbmcgeyByZXR1cm4gZG9jdW1lbnQudGl0bGU7IH1cbiAgc2V0VGl0bGUobmV3VGl0bGU6IHN0cmluZykgeyBkb2N1bWVudC50aXRsZSA9IG5ld1RpdGxlIHx8ICcnOyB9XG4gIGVsZW1lbnRNYXRjaGVzKG4sIHNlbGVjdG9yOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB2YXIgbWF0Y2hlcyA9IGZhbHNlO1xuICAgIGlmIChuIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIGlmIChuLm1hdGNoZXMpIHtcbiAgICAgICAgbWF0Y2hlcyA9IG4ubWF0Y2hlcyhzZWxlY3Rvcik7XG4gICAgICB9IGVsc2UgaWYgKG4ubXNNYXRjaGVzU2VsZWN0b3IpIHtcbiAgICAgICAgbWF0Y2hlcyA9IG4ubXNNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgfSBlbHNlIGlmIChuLndlYmtpdE1hdGNoZXNTZWxlY3Rvcikge1xuICAgICAgICBtYXRjaGVzID0gbi53ZWJraXRNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuICBpc1RlbXBsYXRlRWxlbWVudChlbDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGVsIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgZWwubm9kZU5hbWUgPT0gXCJURU1QTEFURVwiO1xuICB9XG4gIGlzVGV4dE5vZGUobm9kZTogTm9kZSk6IGJvb2xlYW4geyByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREU7IH1cbiAgaXNDb21tZW50Tm9kZShub2RlOiBOb2RlKTogYm9vbGVhbiB7IHJldHVybiBub2RlLm5vZGVUeXBlID09PSBOb2RlLkNPTU1FTlRfTk9ERTsgfVxuICBpc0VsZW1lbnROb2RlKG5vZGU6IE5vZGUpOiBib29sZWFuIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFOyB9XG4gIGhhc1NoYWRvd1Jvb3Qobm9kZSk6IGJvb2xlYW4geyByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGlzUHJlc2VudChub2RlLnNoYWRvd1Jvb3QpOyB9XG4gIGlzU2hhZG93Um9vdChub2RlKTogYm9vbGVhbiB7IHJldHVybiBub2RlIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudDsgfVxuICBpbXBvcnRJbnRvRG9jKG5vZGU6IE5vZGUpOiBhbnkge1xuICAgIHZhciB0b0ltcG9ydCA9IG5vZGU7XG4gICAgaWYgKHRoaXMuaXNUZW1wbGF0ZUVsZW1lbnQobm9kZSkpIHtcbiAgICAgIHRvSW1wb3J0ID0gdGhpcy5jb250ZW50KG5vZGUpO1xuICAgIH1cbiAgICByZXR1cm4gZG9jdW1lbnQuaW1wb3J0Tm9kZSh0b0ltcG9ydCwgdHJ1ZSk7XG4gIH1cbiAgYWRvcHROb2RlKG5vZGU6IE5vZGUpOiBhbnkgeyByZXR1cm4gZG9jdW1lbnQuYWRvcHROb2RlKG5vZGUpOyB9XG4gIGdldEhyZWYoZWw6IEVsZW1lbnQpOiBzdHJpbmcgeyByZXR1cm4gKDxhbnk+ZWwpLmhyZWY7IH1cbiAgZ2V0RXZlbnRLZXkoZXZlbnQpOiBzdHJpbmcge1xuICAgIHZhciBrZXkgPSBldmVudC5rZXk7XG4gICAgaWYgKGlzQmxhbmsoa2V5KSkge1xuICAgICAga2V5ID0gZXZlbnQua2V5SWRlbnRpZmllcjtcbiAgICAgIC8vIGtleUlkZW50aWZpZXIgaXMgZGVmaW5lZCBpbiB0aGUgb2xkIGRyYWZ0IG9mIERPTSBMZXZlbCAzIEV2ZW50cyBpbXBsZW1lbnRlZCBieSBDaHJvbWUgYW5kXG4gICAgICAvLyBTYWZhcmlcbiAgICAgIC8vIGNmXG4gICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA3L1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDA3MTIyMS9ldmVudHMuaHRtbCNFdmVudHMtS2V5Ym9hcmRFdmVudHMtSW50ZXJmYWNlc1xuICAgICAgaWYgKGlzQmxhbmsoa2V5KSkge1xuICAgICAgICByZXR1cm4gJ1VuaWRlbnRpZmllZCc7XG4gICAgICB9XG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ1UrJykpIHtcbiAgICAgICAga2V5ID0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChrZXkuc3Vic3RyaW5nKDIpLCAxNikpO1xuICAgICAgICBpZiAoZXZlbnQubG9jYXRpb24gPT09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEICYmIF9jaHJvbWVOdW1LZXlQYWRNYXAuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENocm9tZSBmb3IgbnVtZXJpYyBrZXlwYWQga2V5czpcbiAgICAgICAgICAvLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTU1NjU0XG4gICAgICAgICAgLy8gMSwgMiwgMyAuLi4gYXJlIHJlcG9ydGVkIGFzIEEsIEIsIEMgLi4uXG4gICAgICAgICAga2V5ID0gX2Nocm9tZU51bUtleVBhZE1hcFtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChfa2V5TWFwLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGtleSA9IF9rZXlNYXBba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuICBnZXRHbG9iYWxFdmVudFRhcmdldCh0YXJnZXQ6IHN0cmluZyk6IEV2ZW50VGFyZ2V0IHtcbiAgICBpZiAodGFyZ2V0ID09IFwid2luZG93XCIpIHtcbiAgICAgIHJldHVybiB3aW5kb3c7XG4gICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gXCJkb2N1bWVudFwiKSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQ7XG4gICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gXCJib2R5XCIpIHtcbiAgICAgIHJldHVybiBkb2N1bWVudC5ib2R5O1xuICAgIH1cbiAgfVxuICBnZXRIaXN0b3J5KCk6IEhpc3RvcnkgeyByZXR1cm4gd2luZG93Lmhpc3Rvcnk7IH1cbiAgZ2V0TG9jYXRpb24oKTogTG9jYXRpb24geyByZXR1cm4gd2luZG93LmxvY2F0aW9uOyB9XG4gIGdldEJhc2VIcmVmKCk6IHN0cmluZyB7XG4gICAgdmFyIGhyZWYgPSBnZXRCYXNlRWxlbWVudEhyZWYoKTtcbiAgICBpZiAoaXNCbGFuayhocmVmKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiByZWxhdGl2ZVBhdGgoaHJlZik7XG4gIH1cbiAgcmVzZXRCYXNlRWxlbWVudCgpOiB2b2lkIHsgYmFzZUVsZW1lbnQgPSBudWxsOyB9XG4gIGdldFVzZXJBZ2VudCgpOiBzdHJpbmcgeyByZXR1cm4gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7IH1cbiAgc2V0RGF0YShlbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZShlbGVtZW50LCAnZGF0YS0nICsgbmFtZSwgdmFsdWUpO1xuICB9XG4gIGdldERhdGEoZWxlbWVudCwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZ2V0QXR0cmlidXRlKGVsZW1lbnQsICdkYXRhLScgKyBuYW1lKTsgfVxuICBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpOiBhbnkgeyByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTsgfVxuICAvLyBUT0RPKHRib3NjaCk6IG1vdmUgdGhpcyBpbnRvIGEgc2VwYXJhdGUgZW52aXJvbm1lbnQgY2xhc3Mgb25jZSB3ZSBoYXZlIGl0XG4gIHNldEdsb2JhbFZhcihwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHsgc2V0VmFsdWVPblBhdGgoZ2xvYmFsLCBwYXRoLCB2YWx1ZSk7IH1cbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrKTogbnVtYmVyIHsgcmV0dXJuIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spOyB9XG4gIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkOiBudW1iZXIpIHsgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKTsgfVxuICBwZXJmb3JtYW5jZU5vdygpOiBudW1iZXIge1xuICAgIC8vIHBlcmZvcm1hbmNlLm5vdygpIGlzIG5vdCBhdmFpbGFibGUgaW4gYWxsIGJyb3dzZXJzLCBzZWVcbiAgICAvLyBodHRwOi8vY2FuaXVzZS5jb20vI3NlYXJjaD1wZXJmb3JtYW5jZS5ub3dcbiAgICBpZiAoaXNQcmVzZW50KHdpbmRvdy5wZXJmb3JtYW5jZSkgJiYgaXNQcmVzZW50KHdpbmRvdy5wZXJmb3JtYW5jZS5ub3cpKSB7XG4gICAgICByZXR1cm4gd2luZG93LnBlcmZvcm1hbmNlLm5vdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRGF0ZVdyYXBwZXIudG9NaWxsaXMoRGF0ZVdyYXBwZXIubm93KCkpO1xuICAgIH1cbiAgfVxufVxuXG5cbnZhciBiYXNlRWxlbWVudCA9IG51bGw7XG5mdW5jdGlvbiBnZXRCYXNlRWxlbWVudEhyZWYoKTogc3RyaW5nIHtcbiAgaWYgKGlzQmxhbmsoYmFzZUVsZW1lbnQpKSB7XG4gICAgYmFzZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiYXNlJyk7XG4gICAgaWYgKGlzQmxhbmsoYmFzZUVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJhc2VFbGVtZW50LmdldEF0dHJpYnV0ZSgnaHJlZicpO1xufVxuXG4vLyBiYXNlZCBvbiB1cmxVdGlscy5qcyBpbiBBbmd1bGFySlMgMVxudmFyIHVybFBhcnNpbmdOb2RlID0gbnVsbDtcbmZ1bmN0aW9uIHJlbGF0aXZlUGF0aCh1cmwpOiBzdHJpbmcge1xuICBpZiAoaXNCbGFuayh1cmxQYXJzaW5nTm9kZSkpIHtcbiAgICB1cmxQYXJzaW5nTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICB9XG4gIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gIHJldHVybiAodXJsUGFyc2luZ05vZGUucGF0aG5hbWUuY2hhckF0KDApID09PSAnLycpID8gdXJsUGFyc2luZ05vZGUucGF0aG5hbWUgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJyArIHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar core_1 = require('angular2/core');\r\nvar PublicTestability = (function () {\r\n function PublicTestability(testability) {\r\n this._testability = testability;\r\n }\r\n PublicTestability.prototype.isStable = function () { return this._testability.isStable(); };\r\n PublicTestability.prototype.whenStable = function (callback) { this._testability.whenStable(callback); };\r\n PublicTestability.prototype.findBindings = function (using, provider, exactMatch) {\r\n return this.findProviders(using, provider, exactMatch);\r\n };\r\n PublicTestability.prototype.findProviders = function (using, provider, exactMatch) {\r\n return this._testability.findBindings(using, provider, exactMatch);\r\n };\r\n return PublicTestability;\r\n})();\r\nvar BrowserGetTestability = (function () {\r\n function BrowserGetTestability() {\r\n }\r\n BrowserGetTestability.init = function () { core_1.setTestabilityGetter(new BrowserGetTestability()); };\r\n BrowserGetTestability.prototype.addToWindow = function (registry) {\r\n lang_1.global.getAngularTestability = function (elem, findInAncestors) {\r\n if (findInAncestors === void 0) { findInAncestors = true; }\r\n var testability = registry.findTestabilityInTree(elem, findInAncestors);\r\n if (testability == null) {\r\n throw new Error('Could not find testability for element.');\r\n }\r\n return new PublicTestability(testability);\r\n };\r\n lang_1.global.getAllAngularTestabilities = function () {\r\n var testabilities = registry.getAllTestabilities();\r\n return testabilities.map(function (testability) { return new PublicTestability(testability); });\r\n };\r\n lang_1.global.getAllAngularRootElements = function () { return registry.getAllRootElements(); };\r\n var whenAllStable = function (callback) {\r\n var testabilities = lang_1.global.getAllAngularTestabilities();\r\n var count = testabilities.length;\r\n var didWork = false;\r\n var decrement = function (didWork_) {\r\n didWork = didWork || didWork_;\r\n count--;\r\n if (count == 0) {\r\n callback(didWork);\r\n }\r\n };\r\n testabilities.forEach(function (testability) { testability.whenStable(decrement); });\r\n };\r\n if (!lang_1.global.frameworkStabilizers) {\r\n lang_1.global.frameworkStabilizers = collection_1.ListWrapper.createGrowableSize(0);\r\n }\r\n lang_1.global.frameworkStabilizers.push(whenAllStable);\r\n };\r\n BrowserGetTestability.prototype.findTestabilityInTree = function (registry, elem, findInAncestors) {\r\n if (elem == null) {\r\n return null;\r\n }\r\n var t = registry.getTestability(elem);\r\n if (lang_1.isPresent(t)) {\r\n return t;\r\n }\r\n else if (!findInAncestors) {\r\n return null;\r\n }\r\n if (dom_adapter_1.DOM.isShadowRoot(elem)) {\r\n return this.findTestabilityInTree(registry, dom_adapter_1.DOM.getHost(elem), true);\r\n }\r\n return this.findTestabilityInTree(registry, dom_adapter_1.DOM.parentElement(elem), true);\r\n };\r\n return BrowserGetTestability;\r\n})();\r\nexports.BrowserGetTestability = BrowserGetTestability;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGFiaWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci90ZXN0YWJpbGl0eS50cyJdLCJuYW1lcyI6WyJQdWJsaWNUZXN0YWJpbGl0eSIsIlB1YmxpY1Rlc3RhYmlsaXR5LmNvbnN0cnVjdG9yIiwiUHVibGljVGVzdGFiaWxpdHkuaXNTdGFibGUiLCJQdWJsaWNUZXN0YWJpbGl0eS53aGVuU3RhYmxlIiwiUHVibGljVGVzdGFiaWxpdHkuZmluZEJpbmRpbmdzIiwiUHVibGljVGVzdGFiaWxpdHkuZmluZFByb3ZpZGVycyIsIkJyb3dzZXJHZXRUZXN0YWJpbGl0eSIsIkJyb3dzZXJHZXRUZXN0YWJpbGl0eS5jb25zdHJ1Y3RvciIsIkJyb3dzZXJHZXRUZXN0YWJpbGl0eS5pbml0IiwiQnJvd3NlckdldFRlc3RhYmlsaXR5LmFkZFRvV2luZG93IiwiQnJvd3NlckdldFRlc3RhYmlsaXR5LmZpbmRUZXN0YWJpbGl0eUluVHJlZSJdLCJtYXBwaW5ncyI6IkFBQUEsMkJBQTJDLGdDQUFnQyxDQUFDLENBQUE7QUFDNUUscUJBQW1ELDBCQUEwQixDQUFDLENBQUE7QUFJOUUsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFFMUQscUJBTU8sZUFBZSxDQUFDLENBQUE7QUFFdkI7SUFJRUEsMkJBQVlBLFdBQXdCQTtRQUFJQyxJQUFJQSxDQUFDQSxZQUFZQSxHQUFHQSxXQUFXQSxDQUFDQTtJQUFDQSxDQUFDQTtJQUUxRUQsb0NBQVFBLEdBQVJBLGNBQXNCRSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxZQUFZQSxDQUFDQSxRQUFRQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUU1REYsc0NBQVVBLEdBQVZBLFVBQVdBLFFBQWtCQSxJQUFJRyxJQUFJQSxDQUFDQSxZQUFZQSxDQUFDQSxVQUFVQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUUxRUgsd0NBQVlBLEdBQVpBLFVB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QUNBO0lBQzdFQSxDQUFDQTtJQUNISiw0QkFBQ0E7QUFBREEsQ0FBQ0EsQUF2REQsSUF1REM7QUF2RFksNkJBQXFCLHdCQXVEakMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWFwLCBNYXBXcmFwcGVyLCBMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7Q09OU1QsIENPTlNUX0VYUFIsIGdsb2JhbCwgaXNQcmVzZW50fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtQcm9taXNlV3JhcHBlciwgT2JzZXJ2YWJsZVdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYXN5bmMnO1xuXG5pbXBvcnQge0RPTX0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fYWRhcHRlcic7XG5cbmltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIFRlc3RhYmlsaXR5UmVnaXN0cnksXG4gIFRlc3RhYmlsaXR5LFxuICBHZXRUZXN0YWJpbGl0eSxcbiAgc2V0VGVzdGFiaWxpdHlHZXR0ZXJcbn0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5cbmNsYXNzIFB1YmxpY1Rlc3RhYmlsaXR5IHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfdGVzdGFiaWxpdHk6IFRlc3RhYmlsaXR5O1xuXG4gIGNvbnN0cnVjdG9yKHRlc3RhYmlsaXR5OiBUZXN0YWJpbGl0eSkgeyB0aGlzLl90ZXN0YWJpbGl0eSA9IHRlc3RhYmlsaXR5OyB9XG5cbiAgaXNTdGFibGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl90ZXN0YWJpbGl0eS5pc1N0YWJsZSgpOyB9XG5cbiAgd2hlblN0YWJsZShjYWxsYmFjazogRnVuY3Rpb24pIHsgdGhpcy5fdGVzdGFiaWxpdHkud2hlblN0YWJsZShjYWxsYmFjayk7IH1cblxuICBmaW5kQmluZGluZ3ModXNpbmc6IGFueSwgcHJvdmlkZXI6IHN0cmluZywgZXhhY3RNYXRjaDogYm9vbGVhbik6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5maW5kUHJvdmlkZXJzKHVzaW5nLCBwcm92aWRlciwgZXhhY3RNYXRjaCk7XG4gIH1cblxuICBmaW5kUHJvdmlkZXJzKHVzaW5nOiBhbnksIHByb3ZpZGVyOiBzdHJpbmcsIGV4YWN0TWF0Y2g6IGJvb2xlYW4pOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Rlc3RhYmlsaXR5LmZpbmRCaW5kaW5ncyh1c2luZywgcHJvdmlkZXIsIGV4YWN0TWF0Y2gpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCcm93c2VyR2V0VGVzdGFiaWxpdHkgaW1wbGVtZW50cyBHZXRUZXN0YWJpbGl0eSB7XG4gIHN0YXRpYyBpbml0KCkgeyBzZXRUZXN0YWJpbGl0eUdldHRlcihuZXcgQnJvd3NlckdldFRlc3RhYmlsaXR5KCkpOyB9XG5cbiAgYWRkVG9XaW5kb3cocmVnaXN0cnk6IFRlc3RhYmlsaXR5UmVnaXN0cnkpOiB2b2lkIHtcbiAgICBnbG9iYWwuZ2V0QW5ndWxhclRlc3RhYmlsaXR5ID0gKGVsZW06IGFueSwgZmluZEluQW5jZXN0b3JzOiBib29sZWFuID0gdHJ1ZSkgPT4ge1xuICAgICAgdmFyIHRlc3RhYmlsaXR5ID0gcmVnaXN0cnkuZmluZFRlc3RhYmlsaXR5SW5UcmVlKGVsZW0sIGZpbmRJbkFuY2VzdG9ycyk7XG4gICAgICBpZiAodGVzdGFiaWxpdHkgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHRlc3RhYmlsaXR5IGZvciBlbGVtZW50LicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBQdWJsaWNUZXN0YWJpbGl0eSh0ZXN0YWJpbGl0eSk7XG4gICAgfTtcblxuICAgIGdsb2JhbC5nZXRBbGxBbmd1bGFyVGVzdGFiaWxpdGllcyA9ICgpID0+IHtcbiAgICAgIHZhciB0ZXN0YWJpbGl0aWVzID0gcmVnaXN0cnkuZ2V0QWxsVGVzdGFiaWxpdGllcygpO1xuICAgICAgcmV0dXJuIHRlc3RhYmlsaXRpZXMubWFwKCh0ZXN0YWJpbGl0eSkgPT4geyByZXR1cm4gbmV3IFB1YmxpY1Rlc3RhYmlsaXR5KHRlc3RhYmlsaXR5KTsgfSk7XG4gICAgfTtcblxuICAgIGdsb2JhbC5nZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzID0gKCkgPT4gcmVnaXN0cnkuZ2V0QWxsUm9vdEVsZW1lbnRzKCk7XG5cbiAgICB2YXIgd2hlbkFsbFN0YWJsZSA9IChjYWxsYmFjaykgPT4ge1xuICAgICAgdmFyIHRlc3RhYmlsaXRpZXMgPSBnbG9iYWwuZ2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXMoKTtcbiAgICAgIHZhciBjb3VudCA9IHRlc3RhYmlsaXRpZXMubGVuZ3RoO1xuICAgICAgdmFyIGRpZFdvcmsgPSBmYWxzZTtcbiAgICAgIHZhciBkZWNyZW1lbnQgPSBmdW5jdGlvbihkaWRXb3JrXykge1xuICAgICAgICBkaWRXb3JrID0gZGlkV29yayB8fCBkaWRXb3JrXztcbiAgICAgICAgY291bnQtLTtcbiAgICAgICAgaWYgKGNvdW50ID09IDApIHtcbiAgICAgICAgICBjYWxsYmFjayhkaWRXb3JrKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRlc3RhYmlsaXRpZXMuZm9yRWFjaChmdW5jdGlvbih0ZXN0YWJpbGl0eSkgeyB0ZXN0YWJpbGl0eS53aGVuU3RhYmxlKGRlY3JlbWVudCk7IH0pO1xuICAgIH07XG5cbiAgICBpZiAoIWdsb2JhbC5mcmFtZXdvcmtTdGFiaWxpemVycykge1xuICAgICAgZ2xvYmFsLmZyYW1ld29ya1N0YWJpbGl6ZXJzID0gTGlzdFdyYXBwZXIuY3JlYXRlR3Jvd2FibGVTaXplKDApO1xuICAgIH1cbiAgICBnbG9iYWwuZnJhbWV3b3JrU3RhYmlsaXplcnMucHVzaCh3aGVuQWxsU3RhYmxlKTtcbiAgfVxuXG4gIGZpbmRUZXN0YWJpbGl0eUluVHJlZShyZWdpc3RyeTogVGVzdGFiaWxpdHlSZWdpc3RyeSwgZWxlbTogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmluZEluQW5jZXN0b3JzOiBib29sZWFuKTogVGVzdGFiaWxpdHkge1xuICAgIGlmIChlbGVtID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgdCA9IHJlZ2lzdHJ5LmdldFRlc3RhYmlsaXR5KGVsZW0pO1xuICAgIGlmIChpc1ByZXNlbnQodCkpIHtcbiAgICAgIHJldHVybiB0O1xuICAgIH0gZWxzZSBpZiAoIWZpbmRJbkFuY2VzdG9ycykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChET00uaXNTaGFkb3dSb290KGVsZW0pKSB7XG4gICAgICByZXR1cm4gdGhpcy5maW5kVGVzdGFiaWxpdHlJblRyZWUocmVnaXN0cnksIERPTS5nZXRIb3N0KGVsZW0pLCB0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHJlZ2lzdHJ5LCBET00ucGFyZW50RWxlbWVudChlbGVtKSwgdHJ1ZSk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';/**\r\n * This is here because DART requires it. It is noop in JS.\r\n */\r\nfunction wtfInit() { }\r\nexports.wtfInit = wtfInit;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3RmX2luaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9wcm9maWxlL3d0Zl9pbml0LnRzIl0sIm5hbWVzIjpbInd0ZkluaXQiXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gscUJBQTJCQSxDQUFDQTtBQUFaLGVBQU8sVUFBSyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGlzIGhlcmUgYmVjYXVzZSBEQVJUIHJlcXVpcmVzIGl0LiBJdCBpcyBub29wIGluIEpTLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3RmSW5pdCgpIHt9XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar core_1 = require('angular2/core');\r\nvar event_manager_1 = require('./event_manager');\r\nvar DomEventsPlugin = (function (_super) {\r\n __extends(DomEventsPlugin, _super);\r\n function DomEventsPlugin() {\r\n _super.apply(this, arguments);\r\n }\r\n // This plugin should come last in the list of plugins, because it accepts all\r\n // events.\r\n DomEventsPlugin.prototype.supports = function (eventName) { return true; };\r\n DomEventsPlugin.prototype.addEventListener = function (element, eventName, handler) {\r\n var zone = this.manager.getZone();\r\n var outsideHandler = function (event) { return zone.run(function () { return handler(event); }); };\r\n return this.manager.getZone().runOutsideAngular(function () { return dom_adapter_1.DOM.onAndCancel(element, eventName, outsideHandler); });\r\n };\r\n DomEventsPlugin.prototype.addGlobalEventListener = function (target, eventName, handler) {\r\n var element = dom_adapter_1.DOM.getGlobalEventTarget(target);\r\n var zone = this.manager.getZone();\r\n var outsideHandler = function (event) { return zone.run(function () { return handler(event); }); };\r\n return this.manager.getZone().runOutsideAngular(function () { return dom_adapter_1.DOM.onAndCancel(element, eventName, outsideHandler); });\r\n };\r\n DomEventsPlugin = __decorate([\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], DomEventsPlugin);\r\n return DomEventsPlugin;\r\n})(event_manager_1.EventManagerPlugin);\r\nexports.DomEventsPlugin = DomEventsPlugin;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tX2V2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZXZlbnRzL2RvbV9ldmVudHMudHMiXSwibmFtZXMiOlsiRG9tRXZlbnRzUGx1Z2luIiwiRG9tRXZlbnRzUGx1Z2luLmNvbnN0cnVjdG9yIiwiRG9tRXZlbnRzUGx1Z2luLnN1cHBvcnRzIiwiRG9tRXZlbnRzUGx1Z2luLmFkZEV2ZW50TGlzdGVuZXIiLCJEb21FdmVudHNQbHVnaW4uYWRkR2xvYmFsRXZlbnRMaXN0ZW5lciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0QkFBa0IsdUNBQXVDLENBQUMsQ0FBQTtBQUMxRCxxQkFBeUIsZUFBZSxDQUFDLENBQUE7QUFDekMsOEJBQStDLGlCQUFpQixDQUFDLENBQUE7QUFFakU7SUFDcUNBLG1DQUFrQkE7SUFEdkRBO1FBQ3FDQyw4QkFBa0JBO0lBbUJ2REEsQ0FBQ0E7SUFsQkNELDhFQUE4RUE7SUFDOUVBLFVBQVVBO0lBQ1ZBLGtDQUFRQSxHQUFSQSxVQUFTQSxTQUFpQkEsSUFBYUUsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFckRGLDBDQUFnQkEsR0FBaEJBLFVBQWlCQSxPQUFvQkEsRUFBRUEsU0FBaUJBLEVBQUVBLE9BQWlCQTtRQUN6RUcsSUFBSUEsSUFBSUEsR0FBR0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0E7UUFDbENBLElBQUlBLGNBQWNBLEdBQUdBLFVBQUNBLEtBQUtBLElBQUtBLE9BQUFBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLGNBQU1BLE9BQUFBLE9BQU9BLENBQUNBLEtBQUtBLENBQUNBLEVBQWRBLENBQWNBLENBQUNBLEVBQTlCQSxDQUE4QkEsQ0FBQ0E7UUFDL0RBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLE9BQU9BLEVBQUVBLENBQUNBLGlCQUFpQkEsQ0FDM0NBLGNBQU1BLE9BQUFBLGlCQUFHQSxDQUFDQSxXQUFXQSxDQUFDQSxPQUFPQSxFQUFFQSxTQUFTQSxFQUFFQSxjQUFjQSxDQUFDQSxFQUFuREEsQ0FBbURBLENBQUNBLENBQUNBO0lBQ2pFQSxDQUFDQTtJQUVESCxnREFBc0JBLEdBQXRCQSxVQUF1QkEsTUFBY0EsRUFBRUEsU0FBaUJBLEVBQUVBLE9BQWlCQTtRQUN6RUksSUFBSUEsT0FBT0EsR0FBR0EsaUJBQUdBLENBQUNBLG9CQUFvQkEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0E7UUFDL0NBLElBQUlBLElBQUlBLEdBQUdBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLE9BQU9BLEVBQUVBLENBQUNBO1FBQ2xDQSxJQUFJQSxjQUFjQSxHQUFHQSxVQUFDQSxLQUFLQSxJQUFLQSxPQUFBQSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQSxjQUFNQSxPQUFBQSxPQUFPQSxDQUFDQSxLQUFLQSxDQUFDQSxFQUFkQSxDQUFjQSxDQUFDQSxFQUE5QkEsQ0FBOEJBLENBQUNBO1FBQy9EQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxPQUFPQSxFQUFFQSxDQUFDQSxpQkFBaUJBLENBQzNDQSxjQUFNQSxPQUFBQSxpQkFBR0EsQ0FBQ0EsV0FBV0EsQ0FBQ0EsT0FBT0EsRUFBRUEsU0FBU0EsRUFBRUEsY0FBY0EsQ0FBQ0EsRUFBbkRBLENBQW1EQSxDQUFDQSxDQUFDQTtJQUNqRUEsQ0FBQ0E7SUFuQkhKO1FBQUNBLGlCQUFVQSxFQUFFQTs7d0JBb0JaQTtJQUFEQSxzQkFBQ0E7QUFBREEsQ0FBQ0EsQUFwQkQsRUFDcUMsa0NBQWtCLEVBbUJ0RDtBQW5CWSx1QkFBZSxrQkFtQjNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RPTX0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fYWRhcHRlcic7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtFdmVudE1hbmFnZXJQbHVnaW4sIEV2ZW50TWFuYWdlcn0gZnJvbSAnLi9ldmVudF9tYW5hZ2VyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERvbUV2ZW50c1BsdWdpbiBleHRlbmRzIEV2ZW50TWFuYWdlclBsdWdpbiB7XG4gIC8vIFRoaXMgcGx1Z2luIHNob3VsZCBjb21lIGxhc3QgaW4gdGhlIGxpc3Qgb2YgcGx1Z2lucywgYmVjYXVzZSBpdCBhY2NlcHRzIGFsbFxuICAvLyBldmVudHMuXG4gIHN1cHBvcnRzKGV2ZW50TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0cnVlOyB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcihlbGVtZW50OiBIVE1MRWxlbWVudCwgZXZlbnROYW1lOiBzdHJpbmcsIGhhbmRsZXI6IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgIHZhciB6b25lID0gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKTtcbiAgICB2YXIgb3V0c2lkZUhhbmRsZXIgPSAoZXZlbnQpID0+IHpvbmUucnVuKCgpID0+IGhhbmRsZXIoZXZlbnQpKTtcbiAgICByZXR1cm4gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKS5ydW5PdXRzaWRlQW5ndWxhcihcbiAgICAgICAgKCkgPT4gRE9NLm9uQW5kQ2FuY2VsKGVsZW1lbnQsIGV2ZW50TmFtZSwgb3V0c2lkZUhhbmRsZXIpKTtcbiAgfVxuXG4gIGFkZEdsb2JhbEV2ZW50TGlzdGVuZXIodGFyZ2V0OiBzdHJpbmcsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICB2YXIgZWxlbWVudCA9IERPTS5nZXRHbG9iYWxFdmVudFRhcmdldCh0YXJnZXQpO1xuICAgIHZhciB6b25lID0gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKTtcbiAgICB2YXIgb3V0c2lkZUhhbmRsZXIgPSAoZXZlbnQpID0+IHpvbmUucnVuKCgpID0+IGhhbmRsZXIoZXZlbnQpKTtcbiAgICByZXR1cm4gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKS5ydW5PdXRzaWRlQW5ndWxhcihcbiAgICAgICAgKCkgPT4gRE9NLm9uQW5kQ2FuY2VsKGVsZW1lbnQsIGV2ZW50TmFtZSwgb3V0c2lkZUhhbmRsZXIpKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\n/**\r\n * Predicates for use with {@link DebugElement}'s query functions.\r\n */\r\nvar By = (function () {\r\n function By() {\r\n }\r\n /**\r\n * Match all elements.\r\n *\r\n * ## Example\r\n *\r\n * {@example platform/dom/debug/ts/by/by.ts region='by_all'}\r\n */\r\n By.all = function () { return function (debugElement) { return true; }; };\r\n /**\r\n * Match elements by the given CSS selector.\r\n *\r\n * ## Example\r\n *\r\n * {@example platform/dom/debug/ts/by/by.ts region='by_css'}\r\n */\r\n By.css = function (selector) {\r\n return function (debugElement) {\r\n return lang_1.isPresent(debugElement.nativeElement) ?\r\n dom_adapter_1.DOM.elementMatches(debugElement.nativeElement, selector) :\r\n false;\r\n };\r\n };\r\n /**\r\n * Match elements that have the given directive present.\r\n *\r\n * ## Example\r\n *\r\n * {@example platform/dom/debug/ts/by/by.ts region='by_directive'}\r\n */\r\n By.directive = function (type) {\r\n return function (debugElement) { return debugElement.providerTokens.indexOf(type) !== -1; };\r\n };\r\n return By;\r\n})();\r\nexports.By = By;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RlYnVnL2J5LnRzIl0sIm5hbWVzIjpbIkJ5IiwiQnkuY29uc3RydWN0b3IiLCJCeS5hbGwiLCJCeS5jc3MiLCJCeS5kaXJlY3RpdmUiXSwibWFwcGluZ3MiOiJBQUFBLHFCQUF1QywwQkFBMEIsQ0FBQyxDQUFBO0FBRWxFLDRCQUFrQix1Q0FBdUMsQ0FBQyxDQUFBO0FBRzFEOztHQUVHO0FBQ0g7SUFBQUE7SUFtQ0FDLENBQUNBO0lBbENDRDs7Ozs7O09BTUdBO0lBQ0lBLE1BQUdBLEdBQVZBLGNBQXdDRSxNQUFNQSxDQUFDQSxVQUFDQSxZQUFZQSxJQUFLQSxPQUFBQSxJQUFJQSxFQUFKQSxDQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUV4RUY7Ozs7OztPQU1HQTtJQUNJQSxNQUFHQSxHQUFWQSxVQUFXQSxRQUFnQkE7UUFDekJHLE1BQU1BLENBQUNBLFVBQUNBLFlBQVlBO1lBQ2xCQSxNQUFNQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsWUFBWUEsQ0FBQ0EsYUFBYUEsQ0FBQ0E7Z0JBQ2pDQSxpQkFBR0EsQ0FBQ0EsY0FBY0EsQ0FBQ0EsWUFBWUEsQ0FBQ0EsYUFBYUEsRUFBRUEsUUFBUUEsQ0FBQ0E7Z0JBQ3hEQSxLQUFLQSxDQUFDQTtRQUNuQkEsQ0FBQ0EsQ0FBQ0E7SUFDSkEsQ0FBQ0E7SUFFREg7Ozs7OztPQU1HQTtJQUNJQSxZQUFTQSxHQUFoQkEsVUFBaUJBLElBQVVBO1FBQ3pCSSxNQUFNQSxDQUFDQSxVQUFDQSxZQUFZQSxJQUFPQSxNQUFNQSxDQUFDQSxZQUFZQSxDQUFDQSxjQUFjQSxDQUFDQSxPQUFPQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUN4RkEsQ0FBQ0E7SUFDSEosU0FBQ0E7QUFBREEsQ0FBQ0EsQUFuQ0QsSUFtQ0M7QUFuQ1ksVUFBRSxLQW1DZCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlLCBpc1ByZXNlbnQsIGlzQmxhbmt9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1ByZWRpY2F0ZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7RE9NfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyJztcbmltcG9ydCB7RGVidWdFbGVtZW50fSBmcm9tICdhbmd1bGFyMi9jb3JlJztcblxuLyoqXG4gKiBQcmVkaWNhdGVzIGZvciB1c2Ugd2l0aCB7QGxpbmsgRGVidWdFbGVtZW50fSdzIHF1ZXJ5IGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEJ5IHtcbiAgLyoqXG4gICAqIE1hdGNoIGFsbCBlbGVtZW50cy5cbiAgICpcbiAgICogIyMgRXhhbXBsZVxuICAgKlxuICAgKiB7QGV4YW1wbGUgcGxhdGZvcm0vZG9tL2RlYnVnL3RzL2J5L2J5LnRzIHJlZ2lvbj0nYnlfYWxsJ31cbiAgICovXG4gIHN0YXRpYyBhbGwoKTogUHJlZGljYXRlPERlYnVnRWxlbWVudD4geyByZXR1cm4gKGRlYnVnRWxlbWVudCkgPT4gdHJ1ZTsgfVxuXG4gIC8qKlxuICAgKiBNYXRjaCBlbGVtZW50cyBieSB0aGUgZ2l2ZW4gQ1NTIHNlbGVjdG9yLlxuICAgKlxuICAgKiAjIyBFeGFtcGxlXG4gICAqXG4gICAqIHtAZXhhbXBsZSBwbGF0Zm9ybS9kb20vZGVidWcvdHMvYnkvYnkudHMgcmVnaW9uPSdieV9jc3MnfVxuICAgKi9cbiAgc3RhdGljIGNzcyhzZWxlY3Rvcjogc3RyaW5nKTogUHJlZGljYXRlPERlYnVnRWxlbWVudD4ge1xuICAgIHJldHVybiAoZGVidWdFbGVtZW50KSA9PiB7XG4gICAgICByZXR1cm4gaXNQcmVzZW50KGRlYnVnRWxlbWVudC5uYXRpdmVFbGVtZW50KSA/XG4gICAgICAgICAgICAgICAgIERPTS5lbGVtZW50TWF0Y2hlcyhkZWJ1Z0VsZW1lbnQubmF0aXZlRWxlbWVudCwgc2VsZWN0b3IpIDpcbiAgICAgICAgICAgICAgICAgZmFsc2U7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaCBlbGVtZW50cyB0aGF0IGhhdmUgdGhlIGdpdmVuIGRpcmVjdGl2ZSBwcmVzZW50LlxuICAgKlxuICAgKiAjIyBFeGFtcGxlXG4gICAqXG4gICAqIHtAZXhhbXBsZSBwbGF0Zm9ybS9kb20vZGVidWcvdHMvYnkvYnkudHMgcmVnaW9uPSdieV9kaXJlY3RpdmUnfVxuICAgKi9cbiAgc3RhdGljIGRpcmVjdGl2ZSh0eXBlOiBUeXBlKTogUHJlZGljYXRlPERlYnVnRWxlbWVudD4ge1xuICAgIHJldHVybiAoZGVidWdFbGVtZW50KSA9PiB7IHJldHVybiBkZWJ1Z0VsZW1lbnQucHJvdmlkZXJUb2tlbnMuaW5kZXhPZih0eXBlKSAhPT0gLTE7IH07XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var CssAnimationOptions = (function () {\r\n function CssAnimationOptions() {\r\n /** classes to be added to the element */\r\n this.classesToAdd = [];\r\n /** classes to be removed from the element */\r\n this.classesToRemove = [];\r\n /** classes to be added for the duration of the animation */\r\n this.animationClasses = [];\r\n }\r\n return CssAnimationOptions;\r\n})();\r\nexports.CssAnimationOptions = CssAnimationOptions;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzX2FuaW1hdGlvbl9vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2FuaW1hdGUvY3NzX2FuaW1hdGlvbl9vcHRpb25zLnRzIl0sIm5hbWVzIjpbIkNzc0FuaW1hdGlvbk9wdGlvbnMiLCJDc3NBbmltYXRpb25PcHRpb25zLmNvbnN0cnVjdG9yIl0sIm1hcHBpbmdzIjoiQUFBQTtJQUFBQTtRQU9FQyx5Q0FBeUNBO1FBQ3pDQSxpQkFBWUEsR0FBYUEsRUFBRUEsQ0FBQ0E7UUFFNUJBLDZDQUE2Q0E7UUFDN0NBLG9CQUFlQSxHQUFhQSxFQUFFQSxDQUFDQTtRQUUvQkEsNERBQTREQTtRQUM1REEscUJBQWdCQSxHQUFhQSxFQUFFQSxDQUFDQTtJQU9sQ0EsQ0FBQ0E7SUFBREQsMEJBQUNBO0FBQURBLENBQUNBLEFBckJELElBcUJDO0FBckJZLDJCQUFtQixzQkFxQi9CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ3NzQW5pbWF0aW9uT3B0aW9ucyB7XG4gIC8qKiBpbml0aWFsIHN0eWxlcyBmb3IgdGhlIGVsZW1lbnQgKi9cbiAgZnJvbVN0eWxlczoge1trZXk6IHN0cmluZ106IGFueX07XG5cbiAgLyoqIGRlc3RpbmF0aW9uIHN0eWxlcyBmb3IgdGhlIGVsZW1lbnQgKi9cbiAgdG9TdHlsZXM6IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuXG4gIC8qKiBjbGFzc2VzIHRvIGJlIGFkZGVkIHRvIHRoZSBlbGVtZW50ICovXG4gIGNsYXNzZXNUb0FkZDogc3RyaW5nW10gPSBbXTtcblxuICAvKiogY2xhc3NlcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIGVsZW1lbnQgKi9cbiAgY2xhc3Nlc1RvUmVtb3ZlOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBjbGFzc2VzIHRvIGJlIGFkZGVkIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGFuaW1hdGlvbiAqL1xuICBhbmltYXRpb25DbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBvdmVycmlkZSB0aGUgZHVyYXRpb24gb2YgdGhlIGFuaW1hdGlvbiAoaW4gbWlsbGlzZWNvbmRzKSAqL1xuICBkdXJhdGlvbjogbnVtYmVyO1xuXG4gIC8qKiBvdmVycmlkZSB0aGUgdHJhbnNpdGlvbiBkZWxheSAoaW4gbWlsbGlzZWNvbmRzKSAqL1xuICBkZWxheTogbnVtYmVyO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar math_1 = require('angular2/src/facade/math');\r\nvar util_1 = require('angular2/src/platform/dom/util');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar Animation = (function () {\r\n /**\r\n * Stores the start time and starts the animation\r\n * @param element\r\n * @param data\r\n * @param browserDetails\r\n */\r\n function Animation(element, data, browserDetails) {\r\n var _this = this;\r\n this.element = element;\r\n this.data = data;\r\n this.browserDetails = browserDetails;\r\n /** functions to be called upon completion */\r\n this.callbacks = [];\r\n /** functions for removing event listeners */\r\n this.eventClearFunctions = [];\r\n /** flag used to track whether or not the animation has finished */\r\n this.completed = false;\r\n this._stringPrefix = '';\r\n this.startTime = lang_1.DateWrapper.toMillis(lang_1.DateWrapper.now());\r\n this._stringPrefix = dom_adapter_1.DOM.getAnimationPrefix();\r\n this.setup();\r\n this.wait(function (timestamp) { return _this.start(); });\r\n }\r\n Object.defineProperty(Animation.prototype, \"totalTime\", {\r\n /** total amount of time that the animation should take including delay */\r\n get: function () {\r\n var delay = this.computedDelay != null ? this.computedDelay : 0;\r\n var duration = this.computedDuration != null ? this.computedDuration : 0;\r\n return delay + duration;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Animation.prototype.wait = function (callback) {\r\n // Firefox requires 2 frames for some reason\r\n this.browserDetails.raf(callback, 2);\r\n };\r\n /**\r\n * Sets up the initial styles before the animation is started\r\n */\r\n Animation.prototype.setup = function () {\r\n if (this.data.fromStyles != null)\r\n this.applyStyles(this.data.fromStyles);\r\n if (this.data.duration != null)\r\n this.applyStyles({ 'transitionDuration': this.data.duration.toString() + 'ms' });\r\n if (this.data.delay != null)\r\n this.applyStyles({ 'transitionDelay': this.data.delay.toString() + 'ms' });\r\n };\r\n /**\r\n * After the initial setup has occurred, this method adds the animation styles\r\n */\r\n Animation.prototype.start = function () {\r\n this.addClasses(this.data.classesToAdd);\r\n this.addClasses(this.data.animationClasses);\r\n this.removeClasses(this.data.classesToRemove);\r\n if (this.data.toStyles != null)\r\n this.applyStyles(this.data.toStyles);\r\n var computedStyles = dom_adapter_1.DOM.getComputedStyle(this.element);\r\n this.computedDelay =\r\n math_1.Math.max(this.parseDurationString(computedStyles.getPropertyValue(this._stringPrefix + 'transition-delay')), this.parseDurationString(this.element.style.getPropertyValue(this._stringPrefix + 'transition-delay')));\r\n this.computedDuration = math_1.Math.max(this.parseDurationString(computedStyles.getPropertyValue(this._stringPrefix + 'transition-duration')), this.parseDurationString(this.element.style.getPropertyValue(this._stringPrefix + 'transition-duration')));\r\n this.addEvents();\r\n };\r\n /**\r\n * Applies the provided styles to the element\r\n * @param styles\r\n */\r\n Animation.prototype.applyStyles = function (styles) {\r\n var _this = this;\r\n collection_1.StringMapWrapper.forEach(styles, function (value, key) {\r\n var dashCaseKey = util_1.camelCaseToDashCase(key);\r\n if (lang_1.isPresent(dom_adapter_1.DOM.getStyle(_this.element, dashCaseKey))) {\r\n dom_adapter_1.DOM.setStyle(_this.element, dashCaseKey, value.toString());\r\n }\r\n else {\r\n dom_adapter_1.DOM.setStyle(_this.element, _this._stringPrefix + dashCaseKey, value.toString());\r\n }\r\n });\r\n };\r\n /**\r\n * Adds the provided classes to the element\r\n * @param classes\r\n */\r\n Animation.prototype.addClasses = function (classes) {\r\n for (var i = 0, len = classes.length; i < len; i++)\r\n dom_adapter_1.DOM.addClass(this.element, classes[i]);\r\n };\r\n /**\r\n * Removes the provided classes from the element\r\n * @param classes\r\n */\r\n Animation.prototype.removeClasses = function (classes) {\r\n for (var i = 0, len = classes.length; i < len; i++)\r\n dom_adapter_1.DOM.removeClass(this.element, classes[i]);\r\n };\r\n /**\r\n * Adds events to track when animations have finished\r\n */\r\n Animation.prototype.addEvents = function () {\r\n var _this = this;\r\n if (this.totalTime > 0) {\r\n this.eventClearFunctions.push(dom_adapter_1.DOM.onAndCancel(this.element, dom_adapter_1.DOM.getTransitionEnd(), function (event) { return _this.handleAnimationEvent(event); }));\r\n }\r\n else {\r\n this.handleAnimationCompleted();\r\n }\r\n };\r\n Animation.prototype.handleAnimationEvent = function (event) {\r\n var elapsedTime = math_1.Math.round(event.elapsedTime * 1000);\r\n if (!this.browserDetails.elapsedTimeIncludesDelay)\r\n elapsedTime += this.computedDelay;\r\n event.stopPropagation();\r\n if (elapsedTime >= this.totalTime)\r\n this.handleAnimationCompleted();\r\n };\r\n /**\r\n * Runs all animation callbacks and removes temporary classes\r\n */\r\n Animation.prototype.handleAnimationCompleted = function () {\r\n this.removeClasses(this.data.animationClasses);\r\n this.callbacks.forEach(function (callback) { return callback(); });\r\n this.callbacks = [];\r\n this.eventClearFunctions.forEach(function (fn) { return fn(); });\r\n this.eventClearFunctions = [];\r\n this.completed = true;\r\n };\r\n /**\r\n * Adds animation callbacks to be called upon completion\r\n * @param callback\r\n * @returns {Animation}\r\n */\r\n Animation.prototype.onComplete = function (callback) {\r\n if (this.completed) {\r\n callback();\r\n }\r\n else {\r\n this.callbacks.push(callback);\r\n }\r\n return this;\r\n };\r\n /**\r\n * Converts the duration string to the number of milliseconds\r\n * @param duration\r\n * @returns {number}\r\n */\r\n Animation.prototype.parseDurationString = function (duration) {\r\n var maxValue = 0;\r\n // duration must have at least 2 characters to be valid. (number + type)\r\n if (duration == null || duration.length < 2) {\r\n return maxValue;\r\n }\r\n else if (duration.substring(duration.length - 2) == 'ms') {\r\n var value = lang_1.NumberWrapper.parseInt(this.stripLetters(duration), 10);\r\n if (value > maxValue)\r\n maxValue = value;\r\n }\r\n else if (duration.substring(duration.length - 1) == 's') {\r\n var ms = lang_1.NumberWrapper.parseFloat(this.stripLetters(duration)) * 1000;\r\n var value = math_1.Math.floor(ms);\r\n if (value > maxValue)\r\n maxValue = value;\r\n }\r\n return maxValue;\r\n };\r\n /**\r\n * Strips the letters from the duration string\r\n * @param str\r\n * @returns {string}\r\n */\r\n Animation.prototype.stripLetters = function (str) {\r\n return lang_1.StringWrapper.replaceAll(str, lang_1.RegExpWrapper.create('[^0-9]+$', ''), '');\r\n };\r\n return Animation;\r\n})();\r\nexports.Animation = Animation;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2FuaW1hdGUvYW5pbWF0aW9uLnRzIl0sIm5hbWVzIjpbIkFuaW1hdGlvbiIsIkFuaW1hdGlvbi5jb25zdHJ1Y3RvciIsIkFuaW1hdGlvbi50b3RhbFRpbWUiLCJBbmltYXRpb24ud2FpdCIsIkFuaW1hdGlvbi5zZXR1cCIsIkFuaW1hdGlvbi5zdGFydCIsIkFuaW1hdGlvbi5hcHBseVN0eWxlcyIsIkFuaW1hdGlvbi5hZGRDbGFzc2VzIiwiQW5pbWF0aW9uLnJlbW92ZUNsYXNzZXMiLCJBbmltYXRpb24uYWRkRXZlbnRzIiwiQW5pbWF0aW9uLmhhbmRsZUFuaW1hdGlvbkV2ZW50IiwiQW5pbWF0aW9uLmhhbmRsZUFuaW1hdGlvbkNvbXBsZXRlZCIsIkFuaW1hdGlvbi5vbkNvbXBsZXRlIiwiQW5pbWF0aW9uLnBhcnNlRHVyYXRpb25TdHJpbmciLCJBbmltYXRpb24uc3RyaXBMZXR0ZXJzIl0sIm1hcHBpbmdzIjoiQUFBQSxxQkFNTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLHFCQUFtQiwwQkFBMEIsQ0FBQyxDQUFBO0FBQzlDLHFCQUFrQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ25FLDJCQUErQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ2hFLDRCQUFrQix1Q0FBdUMsQ0FBQyxDQUFBO0FBSzFEO0lBNEJFQTs7Ozs7T0FLR0E7SUFDSEEsbUJBQW1CQSxPQUFvQkEsRUFBU0EsSUFBeUJBLEVBQ3REQSxjQUE4QkE7UUFuQ25EQyxpQkF3TENBO1FBdEpvQkEsWUFBT0EsR0FBUEEsT0FBT0EsQ0FBYUE7UUFBU0EsU0FBSUEsR0FBSkEsSUFBSUEsQ0FBcUJBO1FBQ3REQSxtQkFBY0EsR0FBZEEsY0FBY0EsQ0FBZ0JBO1FBbENqREEsNkNBQTZDQTtRQUM3Q0EsY0FBU0EsR0FBZUEsRUFBRUEsQ0FBQ0E7UUFXM0JBLDZDQUE2Q0E7UUFDN0NBLHdCQUFtQkEsR0FBZUEsRUFBRUEsQ0FB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QUN4RUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsUUFBUUEsSUFBSUEsSUFBSUEsSUFBSUEsUUFBUUEsQ0FBQ0EsTUFBTUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDNUNBLE1BQU1BLENBQUNBLFFBQVFBLENBQUNBO1FBQ2xCQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQSxTQUFTQSxDQUFDQSxRQUFRQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQSxJQUFJQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUMzREEsSUFBSUEsS0FBS0EsR0FBR0Esb0JBQWFBLENBQUNBLFFBQVFBLENBQUNBLElBQUlBLENBQUNBLFlBQVlBLENBQUNBLFFBQVFBLENBQUNBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBO1lBQ3BFQSxFQUFFQSxDQUFDQSxDQUFDQSxLQUFLQSxHQUFHQSxRQUFRQSxDQUFDQTtnQkFBQ0EsUUFBUUEsR0FBR0EsS0FBS0EsQ0FBQ0E7UUFDekNBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLFFBQVFBLENBQUNBLFNBQVNBLENBQUNBLFFBQVFBLENBQUNBLE1BQU1BLEdBQUdBLENBQUNBLENBQUNBLElBQUlBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBO1lBQzFEQSxJQUFJQSxFQUFFQSxHQUFHQSxvQkFBYUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0E7WUFDdEVBLElBQUlBLEtBQUtBLEdBQUdBLFdBQUlBLENBQUNBLEtBQUtBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBO1lBQzNCQSxFQUFFQSxDQUFDQSxDQUFDQSxLQUFLQSxHQUFHQSxRQUFRQSxDQUFDQTtnQkFBQ0EsUUFBUUEsR0FBR0EsS0FBS0EsQ0FBQ0E7UUFDekNBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLFFBQVFBLENBQUNBO0lBQ2xCQSxDQUFDQTtJQUVEYjs7OztPQUlHQTtJQUNIQSxnQ0FBWUEsR0FBWkEsVUFBYUEsR0FBV0E7UUFDdEJjLE1BQU1BLENBQUNBLG9CQUFhQSxDQUFDQSxVQUFVQSxDQUFDQSxHQUFHQSxFQUFFQSxvQkFBYUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsVUFBVUEsRUFBRUEsRUFBRUEsQ0FBQ0EsRUFBRUEsRUFBRUEsQ0FBQ0EsQ0FBQ0E7SUFDakZBLENBQUNBO0lBQ0hkLGdCQUFDQTtBQUFEQSxDQUFDQSxBQXhMRCxJQXdMQztBQXhMWSxpQkFBUyxZQXdMckIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERhdGVXcmFwcGVyLFxuICBTdHJpbmdXcmFwcGVyLFxuICBSZWdFeHBXcmFwcGVyLFxuICBOdW1iZXJXcmFwcGVyLFxuICBpc1ByZXNlbnRcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7TWF0aH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9tYXRoJztcbmltcG9ydCB7Y2FtZWxDYXNlVG9EYXNoQ2FzZX0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS91dGlsJztcbmltcG9ydCB7U3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7RE9NfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyJztcblxuaW1wb3J0IHtCcm93c2VyRGV0YWlsc30gZnJvbSAnLi9icm93c2VyX2RldGFpbHMnO1xuaW1wb3J0IHtDc3NBbmltYXRpb25PcHRpb25zfSBmcm9tICcuL2Nzc19hbmltYXRpb25fb3B0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBBbmltYXRpb24ge1xuICAvKiogZnVuY3Rpb25zIHRvIGJlIGNhbGxlZCB1cG9uIGNvbXBsZXRpb24gKi9cbiAgY2FsbGJhY2tzOiBGdW5jdGlvbltdID0gW107XG5cbiAgLyoqIHRoZSBkdXJhdGlvbiAobXMpIG9mIHRoZSBhbmltYXRpb24gKHdoZXRoZXIgZnJvbSBDU1Mgb3IgbWFudWFsbHkgc2V0KSAqL1xuICBjb21wdXRlZER1cmF0aW9uOiBudW1iZXI7XG5cbiAgLyoqIHRoZSBhbmltYXRpb24gZGVsYXkgKG1zKSAod2hldGhlciBmcm9tIENTUyBvciBtYW51YWxseSBzZXQpICovXG4gIGNvbXB1dGVkRGVsYXk6IG51bWJlcjtcblxuICAvKiogdGltZXN0YW1wIG9mIHdoZW4gdGhlIGFuaW1hdGlvbiBzdGFydGVkICovXG4gIHN0YXJ0VGltZTogbnVtYmVyO1xuXG4gIC8qKiBmdW5jdGlvbnMgZm9yIHJlbW92aW5nIGV2ZW50IGxpc3RlbmVycyAqL1xuICBldmVudENsZWFyRnVuY3Rpb25zOiBGdW5jdGlvbltdID0gW107XG5cbiAgLyoqIGZsYWcgdXNlZCB0byB0cmFjayB3aGV0aGVyIG9yIG5vdCB0aGUgYW5pbWF0aW9uIGhhcyBmaW5pc2hlZCAqL1xuICBjb21wbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9zdHJpbmdQcmVmaXg6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiB0b3RhbCBhbW91bnQgb2YgdGltZSB0aGF0IHRoZSBhbmltYXRpb24gc2hvdWxkIHRha2UgaW5jbHVkaW5nIGRlbGF5ICovXG4gIGdldCB0b3RhbFRpbWUoKTogbnVtYmVyIHtcbiAgICBsZXQgZGVsYXkgPSB0aGlzLmNvbXB1dGVkRGVsYXkgIT0gbnVsbCA/IHRoaXMuY29tcHV0ZWREZWxheSA6IDA7XG4gICAgbGV0IGR1cmF0aW9uID0gdGhpcy5jb21wdXRlZER1cmF0aW9uICE9IG51bGwgPyB0aGlzLmNvbXB1dGVkRHVyYXRpb24gOiAwO1xuICAgIHJldHVybiBkZWxheSArIGR1cmF0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgc3RhcnQgdGltZSBhbmQgc3RhcnRzIHRoZSBhbmltYXRpb25cbiAgICogQHBhcmFtIGVsZW1lbnRcbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHBhcmFtIGJyb3dzZXJEZXRhaWxzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudDogSFRNTEVsZW1lbnQsIHB1YmxpYyBkYXRhOiBDc3NBbmltYXRpb25PcHRpb25zLFxuICAgICAgICAgICAgICBwdWJsaWMgYnJvd3NlckRldGFpbHM6IEJyb3dzZXJEZXRhaWxzKSB7XG4gICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlV3JhcHBlci50b01pbGxpcyhEYXRlV3JhcHBlci5ub3coKSk7XG4gICAgdGhpcy5fc3RyaW5nUHJlZml4ID0gRE9NLmdldEFuaW1hdGlvblByZWZpeCgpO1xuICAgIHRoaXMuc2V0dXAoKTtcbiAgICB0aGlzLndhaXQoKHRpbWVzdGFtcDogYW55KSA9PiB0aGlzLnN0YXJ0KCkpO1xuICB9XG5cbiAgd2FpdChjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAvLyBGaXJlZm94IHJlcXVpcmVzIDIgZnJhbWVzIGZvciBzb21lIHJlYXNvblxuICAgIHRoaXMuYnJvd3NlckRldGFpbHMucmFmKGNhbGxiYWNrLCAyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIHRoZSBpbml0aWFsIHN0eWxlcyBiZWZvcmUgdGhlIGFuaW1hdGlvbiBpcyBzdGFydGVkXG4gICAqL1xuICBzZXR1cCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhLmZyb21TdHlsZXMgIT0gbnVsbCkgdGhpcy5hcHBseVN0eWxlcyh0aGlzLmRhdGEuZnJvbVN0eWxlcyk7XG4gICAgaWYgKHRoaXMuZGF0YS5kdXJhdGlvbiAhPSBudWxsKVxuICAgICAgdGhpcy5hcHBseVN0eWxlcyh7J3RyYW5zaXRpb25EdXJhdGlvbic6IHRoaXMuZGF0YS5kdXJhdGlvbi50b1N0cmluZygpICsgJ21zJ30pO1xuICAgIGlmICh0aGlzLmRhdGEuZGVsYXkgIT0gbnVsbClcbiAgICAgIHRoaXMuYXBwbHlTdHlsZXMoeyd0cmFuc2l0aW9uRGVsYXknOiB0aGlzLmRhdGEuZGVsYXkudG9TdHJpbmcoKSArICdtcyd9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciB0aGUgaW5pdGlhbCBzZXR1cCBoYXMgb2NjdXJyZWQsIHRoaXMgbWV0aG9kIGFkZHMgdGhlIGFuaW1hdGlvbiBzdHlsZXNcbiAgICovXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkQ2xhc3Nlcyh0aGlzLmRhdGEuY2xhc3Nlc1RvQWRkKTtcbiAgICB0aGlzLmFkZENsYXNzZXModGhpcy5kYXRhLmFuaW1hdGlvbkNsYXNzZXMpO1xuICAgIHRoaXMucmVtb3ZlQ2xhc3Nlcyh0aGlzLmRhdGEuY2xhc3Nlc1RvUmVtb3ZlKTtcbiAgICBpZiAodGhpcy5kYXRhLnRvU3R5bGVzICE9IG51bGwpIHRoaXMuYXBwbHlTdHlsZXModGhpcy5kYXRhLnRvU3R5bGVzKTtcbiAgICB2YXIgY29tcHV0ZWRTdHlsZXMgPSBET00uZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMuY29tcHV0ZWREZWxheSA9XG4gICAgICAgIE1hdGgubWF4KHRoaXMucGFyc2VEdXJhdGlvblN0cmluZyhcbiAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkU3R5bGVzLmdldFByb3BlcnR5VmFsdWUodGhpcy5fc3RyaW5nUHJlZml4ICsgJ3RyYW5zaXRpb24tZGVsYXknKSksXG4gICAgICAgICAgICAgICAgIHRoaXMucGFyc2VEdXJhdGlvblN0cmluZyhcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHRoaXMuX3N0cmluZ1ByZWZpeCArICd0cmFuc2l0aW9uLWRlbGF5JykpKTtcbiAgICB0aGlzLmNvbXB1dGVkRHVyYXRpb24gPSBNYXRoLm1heCh0aGlzLnBhcnNlRHVyYXRpb25TdHJpbmcoY29tcHV0ZWRTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RyaW5nUHJlZml4ICsgJ3RyYW5zaXRpb24tZHVyYXRpb24nKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJzZUR1cmF0aW9uU3RyaW5nKHRoaXMuZWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdHJpbmdQcmVmaXggKyAndHJhbnNpdGlvbi1kdXJhdGlvbicpKSk7XG4gICAgdGhpcy5hZGRFdmVudHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBwcm92aWRlZCBzdHlsZXMgdG8gdGhlIGVsZW1lbnRcbiAgICogQHBhcmFtIHN0eWxlc1xuICAgKi9cbiAgYXBwbHlTdHlsZXMoc3R5bGVzOiB7W2tleTogc3RyaW5nXTogYW55fSk6IHZvaWQge1xuICAgIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChzdHlsZXMsICh2YWx1ZTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgdmFyIGRhc2hDYXNlS2V5ID0gY2FtZWxDYXNlVG9EYXNoQ2FzZShrZXkpO1xuICAgICAgaWYgKGlzUHJlc2VudChET00uZ2V0U3R5bGUodGhpcy5lbGVtZW50LCBkYXNoQ2FzZUtleSkpKSB7XG4gICAgICAgIERPTS5zZXRTdHlsZSh0aGlzLmVsZW1lbnQsIGRhc2hDYXNlS2V5LCB2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIERPTS5zZXRTdHlsZSh0aGlzLmVsZW1lbnQsIHRoaXMuX3N0cmluZ1ByZWZpeCArIGRhc2hDYXNlS2V5LCB2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBwcm92aWRlZCBjbGFzc2VzIHRvIHRoZSBlbGVtZW50XG4gICAqIEBwYXJhbSBjbGFzc2VzXG4gICAqL1xuICBhZGRDbGFzc2VzKGNsYXNzZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGNsYXNzZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIERPTS5hZGRDbGFzcyh0aGlzLmVsZW1lbnQsIGNsYXNzZXNbaV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIHByb3ZpZGVkIGNsYXNzZXMgZnJvbSB0aGUgZWxlbWVudFxuICAgKiBAcGFyYW0gY2xhc3Nlc1xuICAgKi9cbiAgcmVtb3ZlQ2xhc3NlcyhjbGFzc2VzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBjbGFzc2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSBET00ucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50LCBjbGFzc2VzW2ldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGV2ZW50cyB0byB0cmFjayB3aGVuIGFuaW1hdGlvbnMgaGF2ZSBmaW5pc2hlZFxuICAgKi9cbiAgYWRkRXZlbnRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvdGFsVGltZSA+IDApIHtcbiAgICAgIHRoaXMuZXZlbnRDbGVhckZ1bmN0aW9ucy5wdXNoKERPTS5vbkFuZENhbmNlbChcbiAgICAgICAgICB0aGlzLmVsZW1lbnQsIERPTS5nZXRUcmFuc2l0aW9uRW5kKCksIChldmVudDogYW55KSA9PiB0aGlzLmhhbmRsZUFuaW1hdGlvbkV2ZW50KGV2ZW50KSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZUFuaW1hdGlvbkNvbXBsZXRlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUFuaW1hdGlvbkV2ZW50KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBsZXQgZWxhcHNlZFRpbWUgPSBNYXRoLnJvdW5kKGV2ZW50LmVsYXBzZWRUaW1lICogMTAwMCk7XG4gICAgaWYgKCF0aGlzLmJyb3dzZXJEZXRhaWxzLmVsYXBzZWRUaW1lSW5jbHVkZXNEZWxheSkgZWxhcHNlZFRpbWUgKz0gdGhpcy5jb21wdXRlZERlbGF5O1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmIChlbGFwc2VkVGltZSA+PSB0aGlzLnRvdGFsVGltZSkgdGhpcy5oYW5kbGVBbmltYXRpb25Db21wbGV0ZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFsbCBhbmltYXRpb24gY2FsbGJhY2tzIGFuZCByZW1vdmVzIHRlbXBvcmFyeSBjbGFzc2VzXG4gICAqL1xuICBoYW5kbGVBbmltYXRpb25Db21wbGV0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVDbGFzc2VzKHRoaXMuZGF0YS5hbmltYXRpb25DbGFzc2VzKTtcbiAgICB0aGlzLmNhbGxiYWNrcy5mb3JFYWNoKGNhbGxiYWNrID0+IGNhbGxiYWNrKCkpO1xuICAgIHRoaXMuY2FsbGJhY2tzID0gW107XG4gICAgdGhpcy5ldmVudENsZWFyRnVuY3Rpb25zLmZvckVhY2goZm4gPT4gZm4oKSk7XG4gICAgdGhpcy5ldmVudENsZWFyRnVuY3Rpb25zID0gW107XG4gICAgdGhpcy5jb21wbGV0ZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW5pbWF0aW9uIGNhbGxiYWNrcyB0byBiZSBjYWxsZWQgdXBvbiBjb21wbGV0aW9uXG4gICAqIEBwYXJhbSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyB7QW5pbWF0aW9ufVxuICAgKi9cbiAgb25Db21wbGV0ZShjYWxsYmFjazogRnVuY3Rpb24pOiBBbmltYXRpb24ge1xuICAgIGlmICh0aGlzLmNvbXBsZXRlZCkge1xuICAgICAgY2FsbGJhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBkdXJhdGlvbiBzdHJpbmcgdG8gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHNcbiAgICogQHBhcmFtIGR1cmF0aW9uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBwYXJzZUR1cmF0aW9uU3RyaW5nKGR1cmF0aW9uOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHZhciBtYXhWYWx1ZSA9IDA7XG4gICAgLy8gZHVyYXRpb24gbXVzdCBoYXZlIGF0IGxlYXN0IDIgY2hhcmFjdGVycyB0byBiZSB2YWxpZC4gKG51bWJlciArIHR5cGUpXG4gICAgaWYgKGR1cmF0aW9uID09IG51bGwgfHwgZHVyYXRpb24ubGVuZ3RoIDwgMikge1xuICAgICAgcmV0dXJuIG1heFZhbHVlO1xuICAgIH0gZWxzZSBpZiAoZHVyYXRpb24uc3Vic3RyaW5nKGR1cmF0aW9uLmxlbmd0aCAtIDIpID09ICdtcycpIHtcbiAgICAgIGxldCB2YWx1ZSA9IE51bWJlcldyYXBwZXIucGFyc2VJbnQodGhpcy5zdHJpcExldHRlcnMoZHVyYXRpb24pLCAxMCk7XG4gICAgICBpZiAodmFsdWUgPiBtYXhWYWx1ZSkgbWF4VmFsdWUgPSB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGR1cmF0aW9uLnN1YnN0cmluZyhkdXJhdGlvbi5sZW5ndGggLSAxKSA9PSAncycpIHtcbiAgICAgIGxldCBtcyA9IE51bWJlcldyYXBwZXIucGFyc2VGbG9hdCh0aGlzLnN0cmlwTGV0dGVycyhkdXJhdGlvbikpICogMTAwMDtcbiAgICAgIGxldCB2YWx1ZSA9IE1hdGguZmxvb3IobXMpO1xuICAgICAgaWYgKHZhbHVlID4gbWF4VmFsdWUpIG1heFZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBtYXhWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJpcHMgdGhlIGxldHRlcnMgZnJvbSB0aGUgZHVyYXRpb24gc3RyaW5nXG4gICAqIEBwYXJhbSBzdHJcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIHN0cmlwTGV0dGVycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbChzdHIsIFJlZ0V4cFdyYXBwZXIuY3JlYXRlKCdbXjAtOV0rJCcsICcnKSwgJycpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var css_animation_options_1 = require('./css_animation_options');\r\nvar animation_1 = require('./animation');\r\nvar CssAnimationBuilder = (function () {\r\n /**\r\n * Accepts public properties for CssAnimationBuilder\r\n */\r\n function CssAnimationBuilder(browserDetails) {\r\n this.browserDetails = browserDetails;\r\n /** @type {CssAnimationOptions} */\r\n this.data = new css_animation_options_1.CssAnimationOptions();\r\n }\r\n /**\r\n * Adds a temporary class that will be removed at the end of the animation\r\n * @param className\r\n */\r\n CssAnimationBuilder.prototype.addAnimationClass = function (className) {\r\n this.data.animationClasses.push(className);\r\n return this;\r\n };\r\n /**\r\n * Adds a class that will remain on the element after the animation has finished\r\n * @param className\r\n */\r\n CssAnimationBuilder.prototype.addClass = function (className) {\r\n this.data.classesToAdd.push(className);\r\n return this;\r\n };\r\n /**\r\n * Removes a class from the element\r\n * @param className\r\n */\r\n CssAnimationBuilder.prototype.removeClass = function (className) {\r\n this.data.classesToRemove.push(className);\r\n return this;\r\n };\r\n /**\r\n * Sets the animation duration (and overrides any defined through CSS)\r\n * @param duration\r\n */\r\n CssAnimationBuilder.prototype.setDuration = function (duration) {\r\n this.data.duration = duration;\r\n return this;\r\n };\r\n /**\r\n * Sets the animation delay (and overrides any defined through CSS)\r\n * @param delay\r\n */\r\n CssAnimationBuilder.prototype.setDelay = function (delay) {\r\n this.data.delay = delay;\r\n return this;\r\n };\r\n /**\r\n * Sets styles for both the initial state and the destination state\r\n * @param from\r\n * @param to\r\n */\r\n CssAnimationBuilder.prototype.setStyles = function (from, to) {\r\n return this.setFromStyles(from).setToStyles(to);\r\n };\r\n /**\r\n * Sets the initial styles for the animation\r\n * @param from\r\n */\r\n CssAnimationBuilder.prototype.setFromStyles = function (from) {\r\n this.data.fromStyles = from;\r\n return this;\r\n };\r\n /**\r\n * Sets the destination styles for the animation\r\n * @param to\r\n */\r\n CssAnimationBuilder.prototype.setToStyles = function (to) {\r\n this.data.toStyles = to;\r\n return this;\r\n };\r\n /**\r\n * Starts the animation and returns a promise\r\n * @param element\r\n */\r\n CssAnimationBuilder.prototype.start = function (element) {\r\n return new animation_1.Animation(element, this.data, this.browserDetails);\r\n };\r\n return CssAnimationBuilder;\r\n})();\r\nexports.CssAnimationBuilder = CssAnimationBuilder;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzX2FuaW1hdGlvbl9idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2FuaW1hdGUvY3NzX2FuaW1hdGlvbl9idWlsZGVyLnRzIl0sIm5hbWVzIjpbIkNzc0FuaW1hdGlvbkJ1aWxkZXIiLCJDc3NBbmltYXRpb25CdWlsZGVyLmNvbnN0cnVjdG9yIiwiQ3NzQW5pbWF0aW9uQnVpbGRlci5hZGRBbmltYXRpb25DbGFzcyIsIkNzc0FuaW1hdGlvbkJ1aWxkZXIuYWRkQ2xhc3MiLCJDc3NBbmltYXRpb25CdWlsZGVyLnJlbW92ZUNsYXNzIiwiQ3NzQW5pbWF0aW9uQnVpbGRlci5zZXREdXJhdGlvbiIsIkNzc0FuaW1hdGlvbkJ1aWxkZXIuc2V0RGVsYXkiLCJDc3NBbmltYXRpb25CdWlsZGVyLnNldFN0eWxlcyIsIkNzc0FuaW1hdGlvbkJ1aWxkZXIuc2V0RnJvbVN0eWxlcyIsIkNzc0FuaW1hdGlvbkJ1aWxkZXIuc2V0VG9TdHlsZXMiLCJDc3NBbmltYXRpb25CdWlsZGVyLnN0YXJ0Il0sIm1hcHBpbmdzIjoiQUFBQSxzQ0FBa0MseUJBQXlCLENBQUMsQ0FBQTtBQUM1RCwwQkFBd0IsYUFBYSxDQUFDLENBQUE7QUFHdEM7SUFJRUE7O09BRUdBO0lBQ0hBLDZCQUFtQkEsY0FBOEJBO1FBQTlCQyxtQkFBY0EsR0FBZEEsY0FBY0EsQ0FBZ0JBO1FBTmpEQSxrQ0FBa0NBO1FBQ2xDQSxTQUFJQSxHQUF3QkEsSUFBSUEsMkNBQW1CQSxFQUFFQSxDQUFDQTtJQUtGQSxDQUFDQTtJQUVyREQ7OztPQUdHQTtJQUNIQSwrQ0FBaUJBLEdBQWpCQSxVQUFrQkEsU0FBaUJBO1FBQ2pDRSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxnQkFBZ0JBLENBQUNBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBO1FBQzNDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNkQSxDQUFDQTtJQUVERjs7O09BR0dBO0lBQ0hBLHNDQUFRQSxHQUFSQSxVQUFTQSxTQUFpQkE7UUFDeEJHLElBQUlBLENBQUNBLElBQUlBLENBQUNBLFlBQVlBLENBQUNBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBO1FBQ3ZDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNkQSxDQUFDQTtJQUVESDs7O09BR0dBO0lBQ0hBLHlDQUFXQSxHQUFYQSxVQUFZQSxTQUFpQkE7UUFDM0JJLElBQUlBLENBQUNBLElBQUlBLENBQUNBLGVBQWVBLENBQUNBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBO1FBQzFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNkQSxDQUFDQTtJQUVESjs7O09BR0dBO0lBQ0hBLHlDQUFXQSxHQUFYQSxVQUFZQSxRQUFnQkE7UUFDMUJLLElBQUlBLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLEdBQUdBLFFBQVFBLENBQUNBO1FBQzlCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNkQSxDQUFDQTtJQUVETDs7O09BR0dBO0lBQ0hBLHNDQUFRQSxHQUFSQSxVQUFTQSxLQUFhQTtRQUNwQk0sSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsR0FBR0EsS0FBS0EsQ0FBQ0E7UUFDeEJBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBO0lBQ2RBLENBQUNBO0lBRUROOzs7O09BSUdBO0lBQ0hBLHVDQUFTQSxHQUFUQSxVQUFVQSxJQUEwQkEsRUFBRUEsRUFBd0JBO1FBQzVETyxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxhQUFhQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQTtJQUNsREEsQ0FBQ0E7SUFFRFA7OztPQUdHQTtJQUNIQSwyQ0FBYUEsR0FBYkEsVUFBY0EsSUFBMEJBO1FBQ3RDUSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFVQSxHQUFHQSxJQUFJQSxDQUFDQTtRQUM1QkEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7SUFDZEEsQ0FBQ0E7SUFFRFI7OztPQUdHQTtJQUNIQSx5Q0FBV0EsR0FBWEEsVUFBWUEsRUFBd0JBO1FBQ2xDUyxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxRQUFRQSxHQUFHQSxFQUFFQSxDQUFDQTtRQUN4QkEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7SUFDZEEsQ0FBQ0E7SUFFRFQ7OztPQUdHQTtJQUNIQSxtQ0FBS0EsR0FBTEEsVUFBTUEsT0FBb0JBO1FBQ3hCVSxNQUFNQSxDQUFDQSxJQUFJQSxxQkFBU0EsQ0FBQ0EsT0FBT0EsRUFBRUEsSUFBSUEsQ0FBQ0EsSUFBSUEsRUFBRUEsSUFBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsQ0FBQ0E7SUFDaEVBLENBQUNBO0lBQ0hWLDBCQUFDQTtBQUFEQSxDQUFDQSxBQXhGRCxJQXdGQztBQXhGWSwyQkFBbUIsc0JBd0YvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDc3NBbmltYXRpb25PcHRpb25zfSBmcm9tICcuL2Nzc19hbmltYXRpb25fb3B0aW9ucyc7XG5pbXBvcnQge0FuaW1hdGlvbn0gZnJvbSAnLi9hbmltYXRpb24nO1xuaW1wb3J0IHtCcm93c2VyRGV0YWlsc30gZnJvbSAnLi9icm93c2VyX2RldGFpbHMnO1xuXG5leHBvcnQgY2xhc3MgQ3NzQW5pbWF0aW9uQnVpbGRlciB7XG4gIC8qKiBAdHlwZSB7Q3NzQW5pbWF0aW9uT3B0aW9uc30gKi9cbiAgZGF0YTogQ3NzQW5pbWF0aW9uT3B0aW9ucyA9IG5ldyBDc3NBbmltYXRpb25PcHRpb25zKCk7XG5cbiAgLyoqXG4gICAqIEFjY2VwdHMgcHVibGljIHByb3BlcnRpZXMgZm9yIENzc0FuaW1hdGlvbkJ1aWxkZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBicm93c2VyRGV0YWlsczogQnJvd3NlckRldGFpbHMpIHt9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0ZW1wb3JhcnkgY2xhc3MgdGhhdCB3aWxsIGJlIHJlbW92ZWQgYXQgdGhlIGVuZCBvZiB0aGUgYW5pbWF0aW9uXG4gICAqIEBwYXJhbSBjbGFzc05hbWVcbiAgICovXG4gIGFkZEFuaW1hdGlvbkNsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogQ3NzQW5pbWF0aW9uQnVpbGRlciB7XG4gICAgdGhpcy5kYXRhLmFuaW1hdGlvbkNsYXNzZXMucHVzaChjbGFzc05hbWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjbGFzcyB0aGF0IHdpbGwgcmVtYWluIG9uIHRoZSBlbGVtZW50IGFmdGVyIHRoZSBhbmltYXRpb24gaGFzIGZpbmlzaGVkXG4gICAqIEBwYXJhbSBjbGFzc05hbWVcbiAgICovXG4gIGFkZENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogQ3NzQW5pbWF0aW9uQnVpbGRlciB7XG4gICAgdGhpcy5kYXRhLmNsYXNzZXNUb0FkZC5wdXNoKGNsYXNzTmFtZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGNsYXNzIGZyb20gdGhlIGVsZW1lbnRcbiAgICogQHBhcmFtIGNsYXNzTmFtZVxuICAgKi9cbiAgcmVtb3ZlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBDc3NBbmltYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLmRhdGEuY2xhc3Nlc1RvUmVtb3ZlLnB1c2goY2xhc3NOYW1lKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbmltYXRpb24gZHVyYXRpb24gKGFuZCBvdmVycmlkZXMgYW55IGRlZmluZWQgdGhyb3VnaCBDU1MpXG4gICAqIEBwYXJhbSBkdXJhdGlvblxuICAgKi9cbiAgc2V0RHVyYXRpb24oZHVyYXRpb246IG51bWJlcik6IENzc0FuaW1hdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMuZGF0YS5kdXJhdGlvbiA9IGR1cmF0aW9uO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFuaW1hdGlvbiBkZWxheSAoYW5kIG92ZXJyaWRlcyBhbnkgZGVmaW5lZCB0aHJvdWdoIENTUylcbiAgICogQHBhcmFtIGRlbGF5XG4gICAqL1xuICBzZXREZWxheShkZWxheTogbnVtYmVyKTogQ3NzQW5pbWF0aW9uQnVpbGRlciB7XG4gICAgdGhpcy5kYXRhLmRlbGF5ID0gZGVsYXk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBzdHlsZXMgZm9yIGJvdGggdGhlIGluaXRpYWwgc3RhdGUgYW5kIHRoZSBkZXN0aW5hdGlvbiBzdGF0ZVxuICAgKiBAcGFyYW0gZnJvbVxuICAgKiBAcGFyYW0gdG9cbiAgICovXG4gIHNldFN0eWxlcyhmcm9tOiB7W2tleTogc3RyaW5nXTogYW55fSwgdG86IHtba2V5OiBzdHJpbmddOiBhbnl9KTogQ3NzQW5pbWF0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0RnJvbVN0eWxlcyhmcm9tKS5zZXRUb1N0eWxlcyh0byk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaW5pdGlhbCBzdHlsZXMgZm9yIHRoZSBhbmltYXRpb25cbiAgICogQHBhcmFtIGZyb21cbiAgICovXG4gIHNldEZyb21TdHlsZXMoZnJvbToge1trZXk6IHN0cmluZ106IGFueX0pOiBDc3NBbmltYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLmRhdGEuZnJvbVN0eWxlcyA9IGZyb207XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZGVzdGluYXRpb24gc3R5bGVzIGZvciB0aGUgYW5pbWF0aW9uXG4gICAqIEBwYXJhbSB0b1xuICAgKi9cbiAgc2V0VG9TdHlsZXModG86IHtba2V5OiBzdHJpbmddOiBhbnl9KTogQ3NzQW5pbWF0aW9uQnVpbGRlciB7XG4gICAgdGhpcy5kYXRhLnRvU3R5bGVzID0gdG87XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSBhbmltYXRpb24gYW5kIHJldHVybnMgYSBwcm9taXNlXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqL1xuICBzdGFydChlbGVtZW50OiBIVE1MRWxlbWVudCk6IEFuaW1hdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBBbmltYXRpb24oZWxlbWVudCwgdGhpcy5kYXRhLCB0aGlzLmJyb3dzZXJEZXRhaWxzKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nexports.Math = lang_1.global.Math;\r\nexports.NaN = typeof exports.NaN;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9mYWNhZGUvbWF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUIsMEJBQTBCLENBQUMsQ0FBQTtBQUVyQyxZQUFJLEdBQUcsYUFBTSxDQUFDLElBQUksQ0FBQztBQUNuQixXQUFHLEdBQUcsT0FBTyxXQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dsb2JhbH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuZXhwb3J0IHZhciBNYXRoID0gZ2xvYmFsLk1hdGg7XG5leHBvcnQgdmFyIE5hTiA9IHR5cGVvZiBOYU47XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar math_1 = require('angular2/src/facade/math');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar BrowserDetails = (function () {\r\n function BrowserDetails() {\r\n this.elapsedTimeIncludesDelay = false;\r\n this.doesElapsedTimeIncludesDelay();\r\n }\r\n /**\r\n * Determines if `event.elapsedTime` includes transition delay in the current browser. At this\r\n * time, Chrome and Opera seem to be the only browsers that include this.\r\n */\r\n BrowserDetails.prototype.doesElapsedTimeIncludesDelay = function () {\r\n var _this = this;\r\n var div = dom_adapter_1.DOM.createElement('div');\r\n dom_adapter_1.DOM.setAttribute(div, 'style', \"position: absolute; top: -9999px; left: -9999px; width: 1px;\\n height: 1px; transition: all 1ms linear 1ms;\");\r\n // Firefox requires that we wait for 2 frames for some reason\r\n this.raf(function (timestamp) {\r\n dom_adapter_1.DOM.on(div, 'transitionend', function (event) {\r\n var elapsed = math_1.Math.round(event.elapsedTime * 1000);\r\n _this.elapsedTimeIncludesDelay = elapsed == 2;\r\n dom_adapter_1.DOM.remove(div);\r\n });\r\n dom_adapter_1.DOM.setStyle(div, 'width', '2px');\r\n }, 2);\r\n };\r\n BrowserDetails.prototype.raf = function (callback, frames) {\r\n if (frames === void 0) { frames = 1; }\r\n var queue = new RafQueue(callback, frames);\r\n return function () { return queue.cancel(); };\r\n };\r\n BrowserDetails = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], BrowserDetails);\r\n return BrowserDetails;\r\n})();\r\nexports.BrowserDetails = BrowserDetails;\r\nvar RafQueue = (function () {\r\n function RafQueue(callback, frames) {\r\n this.callback = callback;\r\n this.frames = frames;\r\n this._raf();\r\n }\r\n RafQueue.prototype._raf = function () {\r\n var _this = this;\r\n this.currentFrameId =\r\n dom_adapter_1.DOM.requestAnimationFrame(function (timestamp) { return _this._nextFrame(timestamp); });\r\n };\r\n RafQueue.prototype._nextFrame = function (timestamp) {\r\n this.frames--;\r\n if (this.frames > 0) {\r\n this._raf();\r\n }\r\n else {\r\n this.callback(timestamp);\r\n }\r\n };\r\n RafQueue.prototype.cancel = function () {\r\n dom_adapter_1.DOM.cancelAnimationFrame(this.currentFrameId);\r\n this.currentFrameId = null;\r\n };\r\n return RafQueue;\r\n})();\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlcl9kZXRhaWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2FuaW1hdGUvYnJvd3Nlcl9kZXRhaWxzLnRzIl0sIm5hbWVzIjpbIkJyb3dzZXJEZXRhaWxzIiwiQnJvd3NlckRldGFpbHMuY29uc3RydWN0b3IiLCJCcm93c2VyRGV0YWlscy5kb2VzRWxhcHNlZFRpbWVJbmNsdWRlc0RlbGF5IiwiQnJvd3NlckRldGFpbHMucmFmIiwiUmFmUXVldWUiLCJSYWZRdWV1ZS5jb25zdHJ1Y3RvciIsIlJhZlF1ZXVlLl9yYWYiLCJSYWZRdWV1ZS5fbmV4dEZyYW1lIiwiUmFmUXVldWUuY2FuY2VsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxtQkFBeUIsc0JBQXNCLENBQUMsQ0FBQTtBQUNoRCxxQkFBbUIsMEJBQTBCLENBQUMsQ0FBQTtBQUM5Qyw0QkFBa0IsdUNBQXVDLENBQUMsQ0FBQTtBQUUxRDtJQUlFQTtRQUZBQyw2QkFBd0JBLEdBQUdBLEtBQUtBLENBQUNBO1FBRWpCQSxJQUFJQSxDQUFDQSw0QkFBNEJBLEVBQUVBLENBQUNBO0lBQUNBLENBQUNBO0lBRXRERDs7O09BR0dBO0lBQ0hBLHFEQUE0QkEsR0FBNUJBO1FBQUFFLGlCQWFDQTtRQVpDQSxJQUFJQSxHQUFHQSxHQUFHQSxpQkFBR0EsQ0FBQ0EsYUFBYUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0E7UUFDbkNBLGlCQUFHQSxDQUFDQSxZQUFZQSxDQUFDQSxHQUFHQSxFQUFFQSxPQUFPQSxFQUFFQSxrSEFDZ0JBLENBQUNBLENBQUNBO1FBQ2pEQSw2REFBNkRBO1FBQzdEQSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQSxVQUFDQSxTQUFjQTtZQUN0QkEsaUJBQUdBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLEVBQUVBLGVBQWVBLEVBQUVBLFVBQUNBLEtBQVVBO2dCQUN0Q0EsSUFBSUEsT0FBT0EsR0FBR0EsV0FBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsV0FBV0EsR0FBR0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7Z0JBQ25EQSxLQUFJQSxDQUFDQSx3QkFBd0JBLEdBQUdBLE9BQU9BLElBQUlBLENBQUNBLENBQUNBO2dCQUM3Q0EsaUJBQUdBLENBQUNBLE1BQU1BLENBQUNBLEdBQUdBLENBQUNBLENBQUNBO1lBQ2xCQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNIQSxpQkFBR0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsR0FBR0EsRUFBRUEsT0FBT0EsRUFBRUEsS0FBS0EsQ0FBQ0EsQ0FBQ0E7UUFDcENBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO0lBQ1JBLENBQUNBO0lBRURGLDRCQUFHQSxHQUFIQSxVQUFJQSxRQUFrQkEsRUFBRUEsTUFBa0JBO1FBQWxCRyxzQkFBa0JBLEdBQWxCQSxVQUFrQkE7UUFDeENBLElBQUlBLEtBQUtBLEdBQWFBLElBQUlBLFFBQVFBLENBQUNBLFFBQVFBLEVBQUVBLE1BQU1BLENBQUNBLENBQUNBO1FBQ3JEQSxNQUFNQSxDQUFDQSxjQUFNQSxPQUFBQSxLQUFLQSxDQUFDQSxNQUFNQSxFQUFFQSxFQUFkQSxDQUFjQSxDQUFDQTtJQUM5QkEsQ0FBQ0E7SUE1QkhIO1FBQUNBLGVBQVVBLEVBQUVBOzt1QkE2QlpBO0lBQURBLHFCQUFDQTtBQUFEQSxDQUFDQSxBQTdCRCxJQTZCQztBQTVCWSxzQkFBYyxpQkE0QjFCLENBQUE7QUFFRDtJQUVFSSxrQkFBbUJBLFFBQWtCQSxFQUFTQSxNQUFjQTtRQUF6Q0MsYUFBUUEsR0FBUkEsUUFBUUEsQ0FBVUE7UUFBU0EsV0FBTUEsR0FBTkEsTUFBTUEsQ0FBUUE7UUFBSUEsSUFBSUEsQ0FBQ0EsSUFBSUEsRUFBRUEsQ0FBQ0E7SUFBQ0EsQ0FBQ0E7SUFDdEVELHVCQUFJQSxHQUFaQTtRQUFBRSxpQkFHQ0E7UUFGQ0EsSUFBSUEsQ0FBQ0EsY0FBY0E7WUFDZkEsaUJBQUdBLENBQUNBLHFCQUFxQkEsQ0FBQ0EsVUFBQ0EsU0FBaUJBLElBQUtBLE9BQUFBLEtBQUlBLENBQUNBLFVBQVVBLENBQUNBLFNBQVNBLENBQUNBLEVBQTFCQSxDQUEwQkEsQ0FBQ0EsQ0FBQ0E7SUFDbkZBLENBQUNBO0lBQ09GLDZCQUFVQSxHQUFsQkEsVUFBbUJBLFNBQWlCQTtRQUNsQ0csSUFBSUEsQ0FBQ0EsTUFBTUEsRUFBRUEsQ0FBQ0E7UUFDZEEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDcEJBLElBQUlBLENBQUNBLElBQUlBLEVBQUVBLENBQUNBO1FBQ2RBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ05BLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBO1FBQzNCQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUNESCx5QkFBTUEsR0FBTkE7UUFDRUksaUJBQUdBLENBQUNBLG9CQUFvQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsQ0FBQ0E7UUFDOUNBLElBQUlBLENBQUNBLGNBQWNBLEdBQUdBLElBQUlBLENBQUNBO0lBQzdCQSxDQUFDQTtJQUNISixlQUFDQTtBQUFEQSxDQUFDQSxBQW5CRCxJQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtNYXRofSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL21hdGgnO1xuaW1wb3J0IHtET019IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX2FkYXB0ZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQnJvd3NlckRldGFpbHMge1xuICBlbGFwc2VkVGltZUluY2x1ZGVzRGVsYXkgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5kb2VzRWxhcHNlZFRpbWVJbmNsdWRlc0RlbGF5KCk7IH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBgZXZlbnQuZWxhcHNlZFRpbWVgIGluY2x1ZGVzIHRyYW5zaXRpb24gZGVsYXkgaW4gdGhlIGN1cnJlbnQgYnJvd3Nlci4gIEF0IHRoaXNcbiAgICogdGltZSwgQ2hyb21lIGFuZCBPcGVyYSBzZWVtIHRvIGJlIHRoZSBvbmx5IGJyb3dzZXJzIHRoYXQgaW5jbHVkZSB0aGlzLlxuICAgKi9cbiAgZG9lc0VsYXBzZWRUaW1lSW5jbHVkZXNEZWxheSgpOiB2b2lkIHtcbiAgICB2YXIgZGl2ID0gRE9NLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIERPTS5zZXRBdHRyaWJ1dGUoZGl2LCAnc3R5bGUnLCBgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IC05OTk5cHg7IGxlZnQ6IC05OTk5cHg7IHdpZHRoOiAxcHg7XG4gICAgICBoZWlnaHQ6IDFweDsgdHJhbnNpdGlvbjogYWxsIDFtcyBsaW5lYXIgMW1zO2ApO1xuICAgIC8vIEZpcmVmb3ggcmVxdWlyZXMgdGhhdCB3ZSB3YWl0IGZvciAyIGZyYW1lcyBmb3Igc29tZSByZWFzb25cbiAgICB0aGlzLnJhZigodGltZXN0YW1wOiBhbnkpID0+IHtcbiAgICAgIERPTS5vbihkaXYsICd0cmFuc2l0aW9uZW5kJywgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgdmFyIGVsYXBzZWQgPSBNYXRoLnJvdW5kKGV2ZW50LmVsYXBzZWRUaW1lICogMTAwMCk7XG4gICAgICAgIHRoaXMuZWxhcHNlZFRpbWVJbmNsdWRlc0RlbGF5ID0gZWxhcHNlZCA9PSAyO1xuICAgICAgICBET00ucmVtb3ZlKGRpdik7XG4gICAgICB9KTtcbiAgICAgIERPTS5zZXRTdHlsZShkaXYsICd3aWR0aCcsICcycHgnKTtcbiAgICB9LCAyKTtcbiAgfVxuXG4gIHJhZihjYWxsYmFjazogRnVuY3Rpb24sIGZyYW1lczogbnVtYmVyID0gMSk6IEZ1bmN0aW9uIHtcbiAgICB2YXIgcXVldWU6IFJhZlF1ZXVlID0gbmV3IFJhZlF1ZXVlKGNhbGxiYWNrLCBmcmFtZXMpO1xuICAgIHJldHVybiAoKSA9PiBxdWV1ZS5jYW5jZWwoKTtcbiAgfVxufVxuXG5jbGFzcyBSYWZRdWV1ZSB7XG4gIGN1cnJlbnRGcmFtZUlkOiBudW1iZXI7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjYWxsYmFjazogRnVuY3Rpb24sIHB1YmxpYyBmcmFtZXM6IG51bWJlcikgeyB0aGlzLl9yYWYoKTsgfVxuICBwcml2YXRlIF9yYWYoKSB7XG4gICAgdGhpcy5jdXJyZW50RnJhbWVJZCA9XG4gICAgICAgIERPTS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKHRpbWVzdGFtcDogbnVtYmVyKSA9PiB0aGlzLl9uZXh0RnJhbWUodGltZXN0YW1wKSk7XG4gIH1cbiAgcHJpdmF0ZSBfbmV4dEZyYW1lKHRpbWVzdGFtcDogbnVtYmVyKSB7XG4gICAgdGhpcy5mcmFtZXMtLTtcbiAgICBpZiAodGhpcy5mcmFtZXMgPiAwKSB7XG4gICAgICB0aGlzLl9yYWYoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYWxsYmFjayh0aW1lc3RhbXApO1xuICAgIH1cbiAgfVxuICBjYW5jZWwoKSB7XG4gICAgRE9NLmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuY3VycmVudEZyYW1lSWQpO1xuICAgIHRoaXMuY3VycmVudEZyYW1lSWQgPSBudWxsO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar css_animation_builder_1 = require('./css_animation_builder');\r\nvar browser_details_1 = require('./browser_details');\r\nvar AnimationBuilder = (function () {\r\n /**\r\n * Used for DI\r\n * @param browserDetails\r\n */\r\n function AnimationBuilder(browserDetails) {\r\n this.browserDetails = browserDetails;\r\n }\r\n /**\r\n * Creates a new CSS Animation\r\n * @returns {CssAnimationBuilder}\r\n */\r\n AnimationBuilder.prototype.css = function () { return new css_animation_builder_1.CssAnimationBuilder(this.browserDetails); };\r\n AnimationBuilder = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [browser_details_1.BrowserDetails])\r\n ], AnimationBuilder);\r\n return AnimationBuilder;\r\n})();\r\nexports.AnimationBuilder = AnimationBuilder;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uX2J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvYW5pbWF0ZS9hbmltYXRpb25fYnVpbGRlci50cyJdLCJuYW1lcyI6WyJBbmltYXRpb25CdWlsZGVyIiwiQW5pbWF0aW9uQnVpbGRlci5jb25zdHJ1Y3RvciIsIkFuaW1hdGlvbkJ1aWxkZXIuY3NzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxtQkFBeUIsc0JBQXNCLENBQUMsQ0FBQTtBQUVoRCxzQ0FBa0MseUJBQXlCLENBQUMsQ0FBQTtBQUM1RCxnQ0FBNkIsbUJBQW1CLENBQUMsQ0FBQTtBQUVqRDtJQUVFQTs7O09BR0dBO0lBQ0hBLDBCQUFtQkEsY0FBOEJBO1FBQTlCQyxtQkFBY0EsR0FBZEEsY0FBY0EsQ0FBZ0JBO0lBQUdBLENBQUNBO0lBRXJERDs7O09BR0dBO0lBQ0hBLDhCQUFHQSxHQUFIQSxjQUE2QkUsTUFBTUEsQ0FBQ0EsSUFBSUEsMkNBQW1CQSxDQUFDQSxJQUFJQSxDQUFDQSxjQUFjQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQVpyRkY7UUFBQ0EsZUFBVUEsRUFBRUE7O3lCQWFaQTtJQUFEQSx1QkFBQ0E7QUFBREEsQ0FBQ0EsQUFiRCxJQWFDO0FBWlksd0JBQWdCLG1CQVk1QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5cbmltcG9ydCB7Q3NzQW5pbWF0aW9uQnVpbGRlcn0gZnJvbSAnLi9jc3NfYW5pbWF0aW9uX2J1aWxkZXInO1xuaW1wb3J0IHtCcm93c2VyRGV0YWlsc30gZnJvbSAnLi9icm93c2VyX2RldGFpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQW5pbWF0aW9uQnVpbGRlciB7XG4gIC8qKlxuICAgKiBVc2VkIGZvciBESVxuICAgKiBAcGFyYW0gYnJvd3NlckRldGFpbHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBicm93c2VyRGV0YWlsczogQnJvd3NlckRldGFpbHMpIHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQ1NTIEFuaW1hdGlvblxuICAgKiBAcmV0dXJucyB7Q3NzQW5pbWF0aW9uQnVpbGRlcn1cbiAgICovXG4gIGNzcygpOiBDc3NBbmltYXRpb25CdWlsZGVyIHsgcmV0dXJuIG5ldyBDc3NBbmltYXRpb25CdWlsZGVyKHRoaXMuYnJvd3NlckRldGFpbHMpOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar dom_tokens_1 = require('./dom_tokens');\r\nvar SharedStylesHost = (function () {\r\n function SharedStylesHost() {\r\n /** @internal */\r\n this._styles = [];\r\n /** @internal */\r\n this._stylesSet = new Set();\r\n }\r\n SharedStylesHost.prototype.addStyles = function (styles) {\r\n var _this = this;\r\n var additions = [];\r\n styles.forEach(function (style) {\r\n if (!collection_1.SetWrapper.has(_this._stylesSet, style)) {\r\n _this._stylesSet.add(style);\r\n _this._styles.push(style);\r\n additions.push(style);\r\n }\r\n });\r\n this.onStylesAdded(additions);\r\n };\r\n SharedStylesHost.prototype.onStylesAdded = function (additions) { };\r\n SharedStylesHost.prototype.getAllStyles = function () { return this._styles; };\r\n SharedStylesHost = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], SharedStylesHost);\r\n return SharedStylesHost;\r\n})();\r\nexports.SharedStylesHost = SharedStylesHost;\r\nvar DomSharedStylesHost = (function (_super) {\r\n __extends(DomSharedStylesHost, _super);\r\n function DomSharedStylesHost(doc) {\r\n _super.call(this);\r\n this._hostNodes = new Set();\r\n this._hostNodes.add(doc.head);\r\n }\r\n /** @internal */\r\n DomSharedStylesHost.prototype._addStylesToHost = function (styles, host) {\r\n for (var i = 0; i < styles.length; i++) {\r\n var style = styles[i];\r\n dom_adapter_1.DOM.appendChild(host, dom_adapter_1.DOM.createStyleElement(style));\r\n }\r\n };\r\n DomSharedStylesHost.prototype.addHost = function (hostNode) {\r\n this._addStylesToHost(this._styles, hostNode);\r\n this._hostNodes.add(hostNode);\r\n };\r\n DomSharedStylesHost.prototype.removeHost = function (hostNode) { collection_1.SetWrapper.delete(this._hostNodes, hostNode); };\r\n DomSharedStylesHost.prototype.onStylesAdded = function (additions) {\r\n var _this = this;\r\n this._hostNodes.forEach(function (hostNode) { _this._addStylesToHost(additions, hostNode); });\r\n };\r\n DomSharedStylesHost = __decorate([\r\n di_1.Injectable(),\r\n __param(0, di_1.Inject(dom_tokens_1.DOCUMENT)), \r\n __metadata('design:paramtypes', [Object])\r\n ], DomSharedStylesHost);\r\n return DomSharedStylesHost;\r\n})(SharedStylesHost);\r\nexports.DomSharedStylesHost = DomSharedStylesHost;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkX3N0eWxlc19ob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9zaGFyZWRfc3R5bGVzX2hvc3QudHMiXSwibmFtZXMiOlsiU2hhcmVkU3R5bGVzSG9zdCIsIlNoYXJlZFN0eWxlc0hvc3QuY29uc3RydWN0b3IiLCJTaGFyZWRTdHlsZXNIb3N0LmFkZFN0eWxlcyIsIlNoYXJlZFN0eWxlc0hvc3Qub25TdHlsZXNBZGRlZCIsIlNoYXJlZFN0eWxlc0hvc3QuZ2V0QWxsU3R5bGVzIiwiRG9tU2hhcmVkU3R5bGVzSG9zdCIsIkRvbVNoYXJlZFN0eWxlc0hvc3QuY29uc3RydWN0b3IiLCJEb21TaGFyZWRTdHlsZXNIb3N0Ll9hZGRTdHlsZXNUb0hvc3QiLCJEb21TaGFyZWRTdHlsZXNIb3N0LmFkZEhvc3QiLCJEb21TaGFyZWRTdHlsZXNIb3N0LnJlbW92ZUhvc3QiLCJEb21TaGFyZWRTdHlsZXNIb3N0Lm9uU3R5bGVzQWRkZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFDMUQsbUJBQWlDLHNCQUFzQixDQUFDLENBQUE7QUFDeEQsMkJBQXlCLGdDQUFnQyxDQUFDLENBQUE7QUFDMUQsMkJBQXVCLGNBQWMsQ0FBQyxDQUFBO0FBRXRDO0lBT0VBO1FBTEFDLGdCQUFnQkE7UUFDaEJBLFlBQU9BLEdBQWFBLEVBQUVBLENBQUNBO1FBQ3ZCQSxnQkFBZ0JBO1FBQ2hCQSxlQUFVQSxHQUFHQSxJQUFJQSxHQUFHQSxFQUFVQSxDQUFDQTtJQUVoQkEsQ0FBQ0E7SUFFaEJELG9DQUFTQSxHQUFUQSxVQUFVQSxNQUFnQkE7UUFBMUJFLGlCQVVDQTtRQVRDQSxJQUFJQSxTQUFTQSxHQUFHQSxFQUFFQSxDQUFDQTtRQUNuQkEsTUFBTUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsVUFBQUEsS0FBS0E7WUFDbEJBLEVBQUVBLENBQUNBLENBQUNBLENBQUNB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ZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fYWRhcHRlcic7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtTZXRXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnLi9kb21fdG9rZW5zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNoYXJlZFN0eWxlc0hvc3Qge1xuICAvKiogQGludGVybmFsICovXG4gIF9zdHlsZXM6IHN0cmluZ1tdID0gW107XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3N0eWxlc1NldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBhZGRTdHlsZXMoc3R5bGVzOiBzdHJpbmdbXSkge1xuICAgIHZhciBhZGRpdGlvbnMgPSBbXTtcbiAgICBzdHlsZXMuZm9yRWFjaChzdHlsZSA9PiB7XG4gICAgICBpZiAoIVNldFdyYXBwZXIuaGFzKHRoaXMuX3N0eWxlc1NldCwgc3R5bGUpKSB7XG4gICAgICAgIHRoaXMuX3N0eWxlc1NldC5hZGQoc3R5bGUpO1xuICAgICAgICB0aGlzLl9zdHlsZXMucHVzaChzdHlsZSk7XG4gICAgICAgIGFkZGl0aW9ucy5wdXNoKHN0eWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9uU3R5bGVzQWRkZWQoYWRkaXRpb25zKTtcbiAgfVxuXG4gIG9uU3R5bGVzQWRkZWQoYWRkaXRpb25zOiBzdHJpbmdbXSkge31cblxuICBnZXRBbGxTdHlsZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5fc3R5bGVzOyB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEb21TaGFyZWRTdHlsZXNIb3N0IGV4dGVuZHMgU2hhcmVkU3R5bGVzSG9zdCB7XG4gIHByaXZhdGUgX2hvc3ROb2RlcyA9IG5ldyBTZXQ8Tm9kZT4oKTtcbiAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgZG9jOiBhbnkpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2hvc3ROb2Rlcy5hZGQoZG9jLmhlYWQpO1xuICB9XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FkZFN0eWxlc1RvSG9zdChzdHlsZXM6IHN0cmluZ1tdLCBob3N0OiBOb2RlKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzdHlsZSA9IHN0eWxlc1tpXTtcbiAgICAgIERPTS5hcHBlbmRDaGlsZChob3N0LCBET00uY3JlYXRlU3R5bGVFbGVtZW50KHN0eWxlKSk7XG4gICAgfVxuICB9XG4gIGFkZEhvc3QoaG9zdE5vZGU6IE5vZGUpIHtcbiAgICB0aGlzLl9hZGRTdHlsZXNUb0hvc3QodGhpcy5fc3R5bGVzLCBob3N0Tm9kZSk7XG4gICAgdGhpcy5faG9zdE5vZGVzLmFkZChob3N0Tm9kZSk7XG4gIH1cbiAgcmVtb3ZlSG9zdChob3N0Tm9kZTogTm9kZSkgeyBTZXRXcmFwcGVyLmRlbGV0ZSh0aGlzLl9ob3N0Tm9kZXMsIGhvc3ROb2RlKTsgfVxuXG4gIG9uU3R5bGVzQWRkZWQoYWRkaXRpb25zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2hvc3ROb2Rlcy5mb3JFYWNoKChob3N0Tm9kZSkgPT4geyB0aGlzLl9hZGRTdHlsZXNUb0hvc3QoYWRkaXRpb25zLCBob3N0Tm9kZSk7IH0pO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar ng_zone_1 = require('angular2/src/core/zone/ng_zone');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nexports.EVENT_MANAGER_PLUGINS = lang_1.CONST_EXPR(new di_1.OpaqueToken(\"EventManagerPlugins\"));\r\nvar EventManager = (function () {\r\n function EventManager(plugins, _zone) {\r\n var _this = this;\r\n this._zone = _zone;\r\n plugins.forEach(function (p) { return p.manager = _this; });\r\n this._plugins = collection_1.ListWrapper.reversed(plugins);\r\n }\r\n EventManager.prototype.addEventListener = function (element, eventName, handler) {\r\n var plugin = this._findPluginFor(eventName);\r\n return plugin.addEventListener(element, eventName, handler);\r\n };\r\n EventManager.prototype.addGlobalEventListener = function (target, eventName, handler) {\r\n var plugin = this._findPluginFor(eventName);\r\n return plugin.addGlobalEventListener(target, eventName, handler);\r\n };\r\n EventManager.prototype.getZone = function () { return this._zone; };\r\n /** @internal */\r\n EventManager.prototype._findPluginFor = function (eventName) {\r\n var plugins = this._plugins;\r\n for (var i = 0; i < plugins.length; i++) {\r\n var plugin = plugins[i];\r\n if (plugin.supports(eventName)) {\r\n return plugin;\r\n }\r\n }\r\n throw new exceptions_1.BaseException(\"No event manager plugin found for event \" + eventName);\r\n };\r\n EventManager = __decorate([\r\n di_1.Injectable(),\r\n __param(0, di_1.Inject(exports.EVENT_MANAGER_PLUGINS)), \r\n __metadata('design:paramtypes', [Array, ng_zone_1.NgZone])\r\n ], EventManager);\r\n return EventManager;\r\n})();\r\nexports.EventManager = EventManager;\r\nvar EventManagerPlugin = (function () {\r\n function EventManagerPlugin() {\r\n }\r\n // That is equivalent to having supporting $event.target\r\n EventManagerPlugin.prototype.supports = function (eventName) { return false; };\r\n EventManagerPlugin.prototype.addEventListener = function (element, eventName, handler) {\r\n throw \"not implemented\";\r\n };\r\n EventManagerPlugin.prototype.addGlobalEventListener = function (element, eventName, handler) {\r\n throw \"not implemented\";\r\n };\r\n return EventManagerPlugin;\r\n})();\r\nexports.EventManagerPlugin = EventManagerPlugin;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZXZlbnRzL2V2ZW50X21hbmFnZXIudHMiXSwibmFtZXMiOlsiRXZlbnRNYW5hZ2VyIiwiRXZlbnRNYW5hZ2VyLmNvbnN0cnVjdG9yIiwiRXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIiLCJFdmVudE1hbmFnZXIuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lciIsIkV2ZW50TWFuYWdlci5nZXRab25lIiwiRXZlbnRNYW5hZ2VyLl9maW5kUGx1Z2luRm9yIiwiRXZlbnRNYW5hZ2VyUGx1Z2luIiwiRXZlbnRNYW5hZ2VyUGx1Z2luLmNvbnN0cnVjdG9yIiwiRXZlbnRNYW5hZ2VyUGx1Z2luLnN1cHBvcnRzIiwiRXZlbnRNYW5hZ2VyUGx1Z2luLmFkZEV2ZW50TGlzdGVuZXIiLCJFdmVudE1hbmFnZXJQbHVnaW4uYWRkR2xvYmFsRXZlbnRMaXN0ZW5lciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEscUJBQXlCLDBCQUEwQixDQUFDLENBQUE7QUFDcEQsMkJBQThDLGdDQUFnQyxDQUFDLENBQUE7QUFDL0UsbUJBQThDLHNCQUFzQixDQUFDLENBQUE7QUFDckUsd0JBQXFCLGdDQUFnQyxDQUFDLENBQUE7QUFDdEQsMkJBQTBCLGdDQUFnQyxDQUFDLENBQUE7QUFFOUMsNkJBQXFCLEdBQzlCLGlCQUFVLENBQUMsSUFBSSxnQkFBVyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztBQUV2RDtJQUlFQSxzQkFBMkNBLE9BQTZCQSxFQUFVQSxLQUFhQTtRQUpqR0MsaUJBZ0NDQTtRQTVCbUZBLFVBQUtBLEdBQUxBLEtBQUtBLENBQVFBO1FBQzdGQSxPQUFPQSxDQUFDQSxPQUFPQSxDQUFDQSxVQUFBQSxDQUFDQSxJQUFJQSxPQUFBQSxDQUFDQSxDQUFDQSxPQUFPQSxHQUFHQSxLQUFJQSxFQUFoQkEsQ0FBZ0JBLENBQUNBLENBQUNBO1FBQ3ZDQSxJQUFJQSxDQUFDQSxRQUFRQSxHQUFHQSx3QkFBV0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0E7SUFDaERBLENBQUNBO0lBRURELHVDQUFnQkEsR0FBaEJBLFVBQWlCQSxPQUFvQkEsRUFBRUEsU0FBaUJBLEVBQUVBLE9BQWlCQTtRQUN6RUUsSUFBSUEsTUFBTUEsR0FBR0EsSUFBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0E7UUFDNUNBLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBLGdCQUFnQkEsQ0FBQ0EsT0FBT0EsRUFBRUEsU0FBU0EsRUFBRUEsT0FBT0EsQ0FBQ0EsQ0FBQ0E7SUFDOURBLENBQUNBO0lBRURGLDZDQUFzQkEsR0FBdEJBLFVBQXVCQSxNQUFjQSxFQUFFQSxTQUFpQkEsRUFBRUEsT0FBaUJBO1FBQ3pFRyxJQUFJQSxNQUFNQSxHQUFHQSxJQUFJQSxDQUFDQSxjQUFjQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQTtRQUM1Q0EsTUFBTUEsQ0FBQ0EsTUFBTUEsQ0FBQ0Esc0JBQXNCQSxDQUFDQSxNQUFNQSxFQUFFQSxTQUFTQSxFQUFFQSxPQUFPQSxDQUFDQSxDQUFDQTtJQUNuRUEsQ0FBQ0E7SUFFREgsOEJBQU9BLEdBQVBBLGNBQW9CSSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUV4Q0osZ0JBQWdCQTtJQUNoQkEscUNBQWNBLEdBQWRBLFVBQWVBLFNBQWlCQTtRQUM5QkssSUFBSUEsT0FBT0EsR0FBR0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0E7UUFDNUJBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLE9BQU9BLENBQUNBLE1BQU1BLEVBQUVBLENBQUNBLEVBQUVBLEVBQUVBLENBQUNBO1lBQ3hDQSxJQUFJQSxNQUFNQSxHQUFHQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN4QkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQy9CQSxNQUFNQSxDQUFDQSxNQUFNQSxDQUFDQTtZQUNoQkEsQ0FBQ0E7UUFDSEEsQ0FBQ0E7UUFDREEsTUFBTUEsSUFBSUEsMEJBQWFBLENBQUNBLDZDQUEyQ0EsU0FBV0EsQ0FBQ0EsQ0FBQ0E7SUFDbEZBLENBQUNBO0lBL0JITDtRQUFDQSxlQUFVQSxFQUFFQTtRQUlDQSxXQUFDQSxXQUFNQSxDQUFDQSw2QkFBcUJBLENBQUNBLENBQUFBOztxQkE0QjNDQTtJQUFEQSxtQkFBQ0E7QUFBREEsQ0FBQ0EsQUFoQ0QsSUFnQ0M7QUEvQlksb0JBQVksZUErQnhCLENBQUE7QUFFRDtJQUFBTTtJQWFBQyxDQUFDQTtJQVZDRCx3REFBd0RBO0lBQ3hEQSxxQ0FBUUEsR0FBUkEsVUFBU0EsU0FBaUJBLElBQWFFLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBO0lBRXRERiw2Q0FBZ0JBLEdBQWhCQSxVQUFpQkEsT0FBb0JBLEVBQUVBLFNBQWlCQSxFQUFFQSxPQUFpQkE7UUFDekVHLE1BQU1BLGlCQUFpQkEsQ0FBQ0E7SUFDMUJBLENBQUNBO0lBRURILG1EQUFzQkEsR0FBdEJBLFVBQXVCQSxPQUFlQSxFQUFFQSxTQUFpQkEsRUFBRUEsT0FBaUJBO1FBQzFFSSxNQUFNQSxpQkFBaUJBLENBQUNBO0lBQzFCQSxDQUFDQTtJQUNISix5QkFBQ0E7QUFBREEsQ0FBQ0EsQUFiRCxJQWFDO0FBYlksMEJBQWtCLHFCQWE5QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3QsIE9wYXF1ZVRva2VufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge05nWm9uZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvem9uZS9uZ196b25lJztcbmltcG9ydCB7TGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjb25zdCBFVkVOVF9NQU5BR0VSX1BMVUdJTlM6IE9wYXF1ZVRva2VuID1cbiAgICBDT05TVF9FWFBSKG5ldyBPcGFxdWVUb2tlbihcIkV2ZW50TWFuYWdlclBsdWdpbnNcIikpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXZlbnRNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBfcGx1Z2luczogRXZlbnRNYW5hZ2VyUGx1Z2luW107XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChFVkVOVF9NQU5BR0VSX1BMVUdJTlMpIHBsdWdpbnM6IEV2ZW50TWFuYWdlclBsdWdpbltdLCBwcml2YXRlIF96b25lOiBOZ1pvbmUpIHtcbiAgICBwbHVnaW5zLmZvckVhY2gocCA9PiBwLm1hbmFnZXIgPSB0aGlzKTtcbiAgICB0aGlzLl9wbHVnaW5zID0gTGlzdFdyYXBwZXIucmV2ZXJzZWQocGx1Z2lucyk7XG4gIH1cblxuICBhZGRFdmVudExpc3RlbmVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgaGFuZGxlcjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgdmFyIHBsdWdpbiA9IHRoaXMuX2ZpbmRQbHVnaW5Gb3IoZXZlbnROYW1lKTtcbiAgICByZXR1cm4gcGx1Z2luLmFkZEV2ZW50TGlzdGVuZXIoZWxlbWVudCwgZXZlbnROYW1lLCBoYW5kbGVyKTtcbiAgfVxuXG4gIGFkZEdsb2JhbEV2ZW50TGlzdGVuZXIodGFyZ2V0OiBzdHJpbmcsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICB2YXIgcGx1Z2luID0gdGhpcy5fZmluZFBsdWdpbkZvcihldmVudE5hbWUpO1xuICAgIHJldHVybiBwbHVnaW4uYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0YXJnZXQsIGV2ZW50TmFtZSwgaGFuZGxlcik7XG4gIH1cblxuICBnZXRab25lKCk6IE5nWm9uZSB7IHJldHVybiB0aGlzLl96b25lOyB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZmluZFBsdWdpbkZvcihldmVudE5hbWU6IHN0cmluZyk6IEV2ZW50TWFuYWdlclBsdWdpbiB7XG4gICAgdmFyIHBsdWdpbnMgPSB0aGlzLl9wbHVnaW5zO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGx1Z2lucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBsdWdpbiA9IHBsdWdpbnNbaV07XG4gICAgICBpZiAocGx1Z2luLnN1cHBvcnRzKGV2ZW50TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHBsdWdpbjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYE5vIGV2ZW50IG1hbmFnZXIgcGx1Z2luIGZvdW5kIGZvciBldmVudCAke2V2ZW50TmFtZX1gKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXZlbnRNYW5hZ2VyUGx1Z2luIHtcbiAgbWFuYWdlcjogRXZlbnRNYW5hZ2VyO1xuXG4gIC8vIFRoYXQgaXMgZXF1aXZhbGVudCB0byBoYXZpbmcgc3VwcG9ydGluZyAkZXZlbnQudGFyZ2V0XG4gIHN1cHBvcnRzKGV2ZW50TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXIoZWxlbWVudDogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICB0aHJvdyBcIm5vdCBpbXBsZW1lbnRlZFwiO1xuICB9XG5cbiAgYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcihlbGVtZW50OiBzdHJpbmcsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICB0aHJvdyBcIm5vdCBpbXBsZW1lbnRlZFwiO1xuICB9XG59Il19","/* */ \n\"format cjs\";\n'use strict';var di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\r\n *\r\n * Note: Document might not be available in the Application Context when Application and Rendering\r\n * Contexts are not the same (e.g. when running the application into a Web Worker).\r\n */\r\nexports.DOCUMENT = lang_1.CONST_EXPR(new di_1.OpaqueToken('DocumentToken'));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tX3Rva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX3Rva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBMEIsc0JBQXNCLENBQUMsQ0FBQTtBQUNqRCxxQkFBeUIsMEJBQTBCLENBQUMsQ0FBQTtBQUVwRDs7Ozs7R0FLRztBQUNVLGdCQUFRLEdBQWdCLGlCQUFVLENBQUMsSUFBSSxnQkFBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09wYXF1ZVRva2VufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge0NPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbi8qKlxuICogQSBESSBUb2tlbiByZXByZXNlbnRpbmcgdGhlIG1haW4gcmVuZGVyaW5nIGNvbnRleHQuIEluIGEgYnJvd3NlciB0aGlzIGlzIHRoZSBET00gRG9jdW1lbnQuXG4gKlxuICogTm90ZTogRG9jdW1lbnQgbWlnaHQgbm90IGJlIGF2YWlsYWJsZSBpbiB0aGUgQXBwbGljYXRpb24gQ29udGV4dCB3aGVuIEFwcGxpY2F0aW9uIGFuZCBSZW5kZXJpbmdcbiAqIENvbnRleHRzIGFyZSBub3QgdGhlIHNhbWUgKGUuZy4gd2hlbiBydW5uaW5nIHRoZSBhcHBsaWNhdGlvbiBpbnRvIGEgV2ViIFdvcmtlcikuXG4gKi9cbmV4cG9ydCBjb25zdCBET0NVTUVOVDogT3BhcXVlVG9rZW4gPSBDT05TVF9FWFBSKG5ldyBPcGFxdWVUb2tlbignRG9jdW1lbnRUb2tlbicpKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar CAMEL_CASE_REGEXP = /([A-Z])/g;\r\nvar DASH_CASE_REGEXP = /-([a-z])/g;\r\nfunction camelCaseToDashCase(input) {\r\n return lang_1.StringWrapper.replaceAllMapped(input, CAMEL_CASE_REGEXP, function (m) { return '-' + m[1].toLowerCase(); });\r\n}\r\nexports.camelCaseToDashCase = camelCaseToDashCase;\r\nfunction dashCaseToCamelCase(input) {\r\n return lang_1.StringWrapper.replaceAllMapped(input, DASH_CASE_REGEXP, function (m) { return m[1].toUpperCase(); });\r\n}\r\nexports.dashCaseToCamelCase = dashCaseToCamelCase;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vdXRpbC50cyJdLCJuYW1lcyI6WyJjYW1lbENhc2VUb0Rhc2hDYXNlIiwiZGFzaENhc2VUb0NhbWVsQ2FzZSJdLCJtYXBwaW5ncyI6IkFBQUEscUJBQTRCLDBCQUEwQixDQUFDLENBQUE7QUFFdkQsSUFBSSxpQkFBaUIsR0FBRyxVQUFVLENBQUM7QUFDbkMsSUFBSSxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7QUFHbkMsNkJBQW9DLEtBQWE7SUFDL0NBLE1BQU1BLENBQUNBLG9CQUFhQSxDQUFDQSxnQkFBZ0JBLENBQUNBLEtBQUtBLEVBQUVBLGlCQUFpQkEsRUFDeEJBLFVBQUNBLENBQUNBLElBQU9BLE1BQU1BLENBQUNBLEdBQUdBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFdBQVdBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0FBQ3JGQSxDQUFDQTtBQUhlLDJCQUFtQixzQkFHbEMsQ0FBQTtBQUVELDZCQUFvQyxLQUFhO0lBQy9DQyxNQUFNQSxDQUFDQSxvQkFBYUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxLQUFLQSxFQUFFQSxnQkFBZ0JBLEVBQ3ZCQSxVQUFDQSxDQUFDQSxJQUFPQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxXQUFXQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtBQUMvRUEsQ0FBQ0E7QUFIZSwyQkFBbUIsc0JBR2xDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1N0cmluZ1dyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbnZhciBDQU1FTF9DQVNFX1JFR0VYUCA9IC8oW0EtWl0pL2c7XG52YXIgREFTSF9DQVNFX1JFR0VYUCA9IC8tKFthLXpdKS9nO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBjYW1lbENhc2VUb0Rhc2hDYXNlKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsTWFwcGVkKGlucHV0LCBDQU1FTF9DQVNFX1JFR0VYUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSkgPT4geyByZXR1cm4gJy0nICsgbVsxXS50b0xvd2VyQ2FzZSgpOyB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhc2hDYXNlVG9DYW1lbENhc2UoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGxNYXBwZWQoaW5wdXQsIERBU0hfQ0FTRV9SRUdFWFAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0pID0+IHsgcmV0dXJuIG1bMV0udG9VcHBlckNhc2UoKTsgfSk7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar animation_builder_1 = require('angular2/src/animate/animation_builder');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar shared_styles_host_1 = require('./shared_styles_host');\r\nvar event_manager_1 = require('./events/event_manager');\r\nvar dom_tokens_1 = require('./dom_tokens');\r\nvar metadata_1 = require('angular2/src/core/metadata');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar util_1 = require('./util');\r\nvar NAMESPACE_URIS = lang_1.CONST_EXPR({ 'xlink': 'http://www.w3.org/1999/xlink', 'svg': 'http://www.w3.org/2000/svg' });\r\nvar TEMPLATE_COMMENT_TEXT = 'template bindings={}';\r\nvar TEMPLATE_BINDINGS_EXP = /^template bindings=(.*)$/g;\r\nvar DomRootRenderer = (function () {\r\n function DomRootRenderer(document, eventManager, sharedStylesHost, animate) {\r\n this.document = document;\r\n this.eventManager = eventManager;\r\n this.sharedStylesHost = sharedStylesHost;\r\n this.animate = animate;\r\n this._registeredComponents = new Map();\r\n }\r\n DomRootRenderer.prototype.renderComponent = function (componentProto) {\r\n var renderer = this._registeredComponents.get(componentProto.id);\r\n if (lang_1.isBlank(renderer)) {\r\n renderer = new DomRenderer(this, componentProto);\r\n this._registeredComponents.set(componentProto.id, renderer);\r\n }\r\n return renderer;\r\n };\r\n return DomRootRenderer;\r\n})();\r\nexports.DomRootRenderer = DomRootRenderer;\r\nvar DomRootRenderer_ = (function (_super) {\r\n __extends(DomRootRenderer_, _super);\r\n function DomRootRenderer_(_document, _eventManager, sharedStylesHost, animate) {\r\n _super.call(this, _document, _eventManager, sharedStylesHost, animate);\r\n }\r\n DomRootRenderer_ = __decorate([\r\n di_1.Injectable(),\r\n __param(0, di_1.Inject(dom_tokens_1.DOCUMENT)), \r\n __metadata('design:paramtypes', [Object, event_manager_1.EventManager, shared_styles_host_1.DomSharedStylesHost, animation_builder_1.AnimationBuilder])\r\n ], DomRootRenderer_);\r\n return DomRootRenderer_;\r\n})(DomRootRenderer);\r\nexports.DomRootRenderer_ = DomRootRenderer_;\r\nvar DomRenderer = (function () {\r\n function DomRenderer(_rootRenderer, componentProto) {\r\n this._rootRenderer = _rootRenderer;\r\n this.componentProto = componentProto;\r\n this._styles = _flattenStyles(componentProto.id, componentProto.styles, []);\r\n if (componentProto.encapsulation !== metadata_1.ViewEncapsulation.Native) {\r\n this._rootRenderer.sharedStylesHost.addStyles(this._styles);\r\n }\r\n if (this.componentProto.encapsulation === metadata_1.ViewEncapsulation.Emulated) {\r\n this._contentAttr = _shimContentAttribute(componentProto.id);\r\n this._hostAttr = _shimHostAttribute(componentProto.id);\r\n }\r\n else {\r\n this._contentAttr = null;\r\n this._hostAttr = null;\r\n }\r\n }\r\n DomRenderer.prototype.renderComponent = function (componentProto) {\r\n return this._rootRenderer.renderComponent(componentProto);\r\n };\r\n DomRenderer.prototype.selectRootElement = function (selector) {\r\n var el = dom_adapter_1.DOM.querySelector(this._rootRenderer.document, selector);\r\n if (lang_1.isBlank(el)) {\r\n throw new exceptions_1.BaseException(\"The selector \\\"\" + selector + \"\\\" did not match any elements\");\r\n }\r\n dom_adapter_1.DOM.clearNodes(el);\r\n return el;\r\n };\r\n DomRenderer.prototype.createElement = function (parent, name) {\r\n var nsAndName = splitNamespace(name);\r\n var el = lang_1.isPresent(nsAndName[0]) ?\r\n dom_adapter_1.DOM.createElementNS(NAMESPACE_URIS[nsAndName[0]], nsAndName[1]) :\r\n dom_adapter_1.DOM.createElement(nsAndName[1]);\r\n if (lang_1.isPresent(this._contentAttr)) {\r\n dom_adapter_1.DOM.setAttribute(el, this._contentAttr, '');\r\n }\r\n if (lang_1.isPresent(parent)) {\r\n dom_adapter_1.DOM.appendChild(parent, el);\r\n }\r\n return el;\r\n };\r\n DomRenderer.prototype.createViewRoot = function (hostElement) {\r\n var nodesParent;\r\n if (this.componentProto.encapsulation === metadata_1.ViewEncapsulation.Native) {\r\n nodesParent = dom_adapter_1.DOM.createShadowRoot(hostElement);\r\n this._rootRenderer.sharedStylesHost.addHost(nodesParent);\r\n for (var i = 0; i < this._styles.length; i++) {\r\n dom_adapter_1.DOM.appendChild(nodesParent, dom_adapter_1.DOM.createStyleElement(this._styles[i]));\r\n }\r\n }\r\n else {\r\n if (lang_1.isPresent(this._hostAttr)) {\r\n dom_adapter_1.DOM.setAttribute(hostElement, this._hostAttr, '');\r\n }\r\n nodesParent = hostElement;\r\n }\r\n return nodesParent;\r\n };\r\n DomRenderer.prototype.createTemplateAnchor = function (parentElement) {\r\n var comment = dom_adapter_1.DOM.createComment(TEMPLATE_COMMENT_TEXT);\r\n if (lang_1.isPresent(parentElement)) {\r\n dom_adapter_1.DOM.appendChild(parentElement, comment);\r\n }\r\n return comment;\r\n };\r\n DomRenderer.prototype.createText = function (parentElement, value) {\r\n var node = dom_adapter_1.DOM.createTextNode(value);\r\n if (lang_1.isPresent(parentElement)) {\r\n dom_adapter_1.DOM.appendChild(parentElement, node);\r\n }\r\n return node;\r\n };\r\n DomRenderer.prototype.projectNodes = function (parentElement, nodes) {\r\n if (lang_1.isBlank(parentElement))\r\n return;\r\n appendNodes(parentElement, nodes);\r\n };\r\n DomRenderer.prototype.attachViewAfter = function (node, viewRootNodes) {\r\n moveNodesAfterSibling(node, viewRootNodes);\r\n for (var i = 0; i < viewRootNodes.length; i++)\r\n this.animateNodeEnter(viewRootNodes[i]);\r\n };\r\n DomRenderer.prototype.detachView = function (viewRootNodes) {\r\n for (var i = 0; i < viewRootNodes.length; i++) {\r\n var node = viewRootNodes[i];\r\n dom_adapter_1.DOM.remove(node);\r\n this.animateNodeLeave(node);\r\n }\r\n };\r\n DomRenderer.prototype.destroyView = function (hostElement, viewAllNodes) {\r\n if (this.componentProto.encapsulation === metadata_1.ViewEncapsulation.Native && lang_1.isPresent(hostElement)) {\r\n this._rootRenderer.sharedStylesHost.removeHost(dom_adapter_1.DOM.getShadowRoot(hostElement));\r\n }\r\n };\r\n DomRenderer.prototype.listen = function (renderElement, name, callback) {\r\n return this._rootRenderer.eventManager.addEventListener(renderElement, name, decoratePreventDefault(callback));\r\n };\r\n DomRenderer.prototype.listenGlobal = function (target, name, callback) {\r\n return this._rootRenderer.eventManager.addGlobalEventListener(target, name, decoratePreventDefault(callback));\r\n };\r\n DomRenderer.prototype.setElementProperty = function (renderElement, propertyName, propertyValue) {\r\n dom_adapter_1.DOM.setProperty(renderElement, propertyName, propertyValue);\r\n };\r\n DomRenderer.prototype.setElementAttribute = function (renderElement, attributeName, attributeValue) {\r\n var attrNs;\r\n var nsAndName = splitNamespace(attributeName);\r\n if (lang_1.isPresent(nsAndName[0])) {\r\n attributeName = nsAndName[0] + ':' + nsAndName[1];\r\n attrNs = NAMESPACE_URIS[nsAndName[0]];\r\n }\r\n if (lang_1.isPresent(attributeValue)) {\r\n if (lang_1.isPresent(attrNs)) {\r\n dom_adapter_1.DOM.setAttributeNS(renderElement, attrNs, attributeName, attributeValue);\r\n }\r\n else {\r\n dom_adapter_1.DOM.setAttribute(renderElement, attributeName, attributeValue);\r\n }\r\n }\r\n else {\r\n if (lang_1.isPresent(attrNs)) {\r\n dom_adapter_1.DOM.removeAttributeNS(renderElement, attrNs, nsAndName[1]);\r\n }\r\n else {\r\n dom_adapter_1.DOM.removeAttribute(renderElement, attributeName);\r\n }\r\n }\r\n };\r\n DomRenderer.prototype.setBindingDebugInfo = function (renderElement, propertyName, propertyValue) {\r\n var dashCasedPropertyName = util_1.camelCaseToDashCase(propertyName);\r\n if (dom_adapter_1.DOM.isCommentNode(renderElement)) {\r\n var existingBindings = lang_1.RegExpWrapper.firstMatch(TEMPLATE_BINDINGS_EXP, lang_1.StringWrapper.replaceAll(dom_adapter_1.DOM.getText(renderElement), /\\n/g, ''));\r\n var parsedBindings = lang_1.Json.parse(existingBindings[1]);\r\n parsedBindings[dashCasedPropertyName] = propertyValue;\r\n dom_adapter_1.DOM.setText(renderElement, lang_1.StringWrapper.replace(TEMPLATE_COMMENT_TEXT, '{}', lang_1.Json.stringify(parsedBindings)));\r\n }\r\n else {\r\n this.setElementAttribute(renderElement, propertyName, propertyValue);\r\n }\r\n };\r\n DomRenderer.prototype.setElementDebugInfo = function (renderElement, info) { };\r\n DomRenderer.prototype.setElementClass = function (renderElement, className, isAdd) {\r\n if (isAdd) {\r\n dom_adapter_1.DOM.addClass(renderElement, className);\r\n }\r\n else {\r\n dom_adapter_1.DOM.removeClass(renderElement, className);\r\n }\r\n };\r\n DomRenderer.prototype.setElementStyle = function (renderElement, styleName, styleValue) {\r\n if (lang_1.isPresent(styleValue)) {\r\n dom_adapter_1.DOM.setStyle(renderElement, styleName, lang_1.stringify(styleValue));\r\n }\r\n else {\r\n dom_adapter_1.DOM.removeStyle(renderElement, styleName);\r\n }\r\n };\r\n DomRenderer.prototype.invokeElementMethod = function (renderElement, methodName, args) {\r\n dom_adapter_1.DOM.invoke(renderElement, methodName, args);\r\n };\r\n DomRenderer.prototype.setText = function (renderNode, text) { dom_adapter_1.DOM.setText(renderNode, text); };\r\n /**\r\n * Performs animations if necessary\r\n * @param node\r\n */\r\n DomRenderer.prototype.animateNodeEnter = function (node) {\r\n if (dom_adapter_1.DOM.isElementNode(node) && dom_adapter_1.DOM.hasClass(node, 'ng-animate')) {\r\n dom_adapter_1.DOM.addClass(node, 'ng-enter');\r\n this._rootRenderer.animate.css()\r\n .addAnimationClass('ng-enter-active')\r\n .start(node)\r\n .onComplete(function () { dom_adapter_1.DOM.removeClass(node, 'ng-enter'); });\r\n }\r\n };\r\n /**\r\n * If animations are necessary, performs animations then removes the element; otherwise, it just\r\n * removes the element.\r\n * @param node\r\n */\r\n DomRenderer.prototype.animateNodeLeave = function (node) {\r\n if (dom_adapter_1.DOM.isElementNode(node) && dom_adapter_1.DOM.hasClass(node, 'ng-animate')) {\r\n dom_adapter_1.DOM.addClass(node, 'ng-leave');\r\n this._rootRenderer.animate.css()\r\n .addAnimationClass('ng-leave-active')\r\n .start(node)\r\n .onComplete(function () {\r\n dom_adapter_1.DOM.removeClass(node, 'ng-leave');\r\n dom_adapter_1.DOM.remove(node);\r\n });\r\n }\r\n else {\r\n dom_adapter_1.DOM.remove(node);\r\n }\r\n };\r\n return DomRenderer;\r\n})();\r\nexports.DomRenderer = DomRenderer;\r\nfunction moveNodesAfterSibling(sibling, nodes) {\r\n var parent = dom_adapter_1.DOM.parentElement(sibling);\r\n if (nodes.length > 0 && lang_1.isPresent(parent)) {\r\n var nextSibling = dom_adapter_1.DOM.nextSibling(sibling);\r\n if (lang_1.isPresent(nextSibling)) {\r\n for (var i = 0; i < nodes.length; i++) {\r\n dom_adapter_1.DOM.insertBefore(nextSibling, nodes[i]);\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < nodes.length; i++) {\r\n dom_adapter_1.DOM.appendChild(parent, nodes[i]);\r\n }\r\n }\r\n }\r\n}\r\nfunction appendNodes(parent, nodes) {\r\n for (var i = 0; i < nodes.length; i++) {\r\n dom_adapter_1.DOM.appendChild(parent, nodes[i]);\r\n }\r\n}\r\nfunction decoratePreventDefault(eventHandler) {\r\n return function (event) {\r\n var allowDefaultBehavior = eventHandler(event);\r\n if (allowDefaultBehavior === false) {\r\n // TODO(tbosch): move preventDefault into event plugins...\r\n dom_adapter_1.DOM.preventDefault(event);\r\n }\r\n };\r\n}\r\nvar COMPONENT_REGEX = /%COMP%/g;\r\nexports.COMPONENT_VARIABLE = '%COMP%';\r\nexports.HOST_ATTR = \"_nghost-\" + exports.COMPONENT_VARIABLE;\r\nexports.CONTENT_ATTR = \"_ngcontent-\" + exports.COMPONENT_VARIABLE;\r\nfunction _shimContentAttribute(componentShortId) {\r\n return lang_1.StringWrapper.replaceAll(exports.CONTENT_ATTR, COMPONENT_REGEX, componentShortId);\r\n}\r\nfunction _shimHostAttribute(componentShortId) {\r\n return lang_1.StringWrapper.replaceAll(exports.HOST_ATTR, COMPONENT_REGEX, componentShortId);\r\n}\r\nfunction _flattenStyles(compId, styles, target) {\r\n for (var i = 0; i < styles.length; i++) {\r\n var style = styles[i];\r\n if (lang_1.isArray(style)) {\r\n _flattenStyles(compId, style, target);\r\n }\r\n else {\r\n style = lang_1.StringWrapper.replaceAll(style, COMPONENT_REGEX, compId);\r\n target.push(style);\r\n }\r\n }\r\n return target;\r\n}\r\nvar NS_PREFIX_RE = /^@([^:]+):(.+)/g;\r\nfunction splitNamespace(name) {\r\n if (name[0] != '@') {\r\n return [null, name];\r\n }\r\n var match = lang_1.RegExpWrapper.firstMatch(NS_PREFIX_RE, name);\r\n return [match[1], match[2]];\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tX3JlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fcmVuZGVyZXIudHMiXSwibmFtZXMiOlsiRG9tUm9vdFJlbmRlcmVyIiwiRG9tUm9vdFJlbmRlcmVyLmNvbnN0cnVjdG9yIiwiRG9tUm9vdFJlbmRlcmVyLnJlbmRlckNvbXBvbmVudCIsIkRvbVJvb3RSZW5kZXJlcl8iLCJEb21Sb290UmVuZGVyZXJfLmNvbnN0cnVjdG9yIiwiRG9tUmVuZGVyZXIiLCJEb21SZW5kZXJlci5jb25zdHJ1Y3RvciIsIkRvbVJlbmRlcmVyLnJlbmRlckNvbXBvbmVudCIsIkRvbVJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50IiwiRG9tUmVuZGVyZXIuY3JlYXRlRWxlbWVudCIsIkRvbVJlbmRlcmVyLmNyZWF0ZVZpZXdSb290IiwiRG9tUmVuZGVyZXIuY3JlYXRlVGVtcGxhdGVBbmNob3IiLCJEb21SZW5kZXJlci5jcmVhdGVUZXh0IiwiRG9tUmVuZGVyZXIucHJvamVjdE5vZGVzIiwiRG9tUmVuZGVyZXIuYXR0YWNoVmlld0FmdGVyIiwiRG9tUmVuZGVyZXIuZGV0YWNoVmlldyIsIkRvbVJlbmRlcmVyLmRlc3Ryb3lWaWV3IiwiRG9tUmVuZGVyZXIubGlzdGVuIiwiRG9tUmVuZGVyZXIubGlzdGVuR2xvYmFsIiwiRG9tUmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5IiwiRG9tUmVuZGVyZXIuc2V0RWxlbWVudEF0dHJpYnV0ZSIsIkRvbVJlbmRlcmVyLnNldEJpbmRpbmdEZWJ1Z0luZm8iLCJEb21SZW5kZXJlci5zZXRFbGVtZW50RGVidWdJbmZvIiwiRG9tUmVuZGVyZXIuc2V0RWxlbWVudENsYXNzIiwiRG9tUmVuZGVyZXIuc2V0RWxlbWVudFN0eWxlIiwiRG9tUmVuZGVyZXIuaW52b2tlRWxlbWVudE1ldGhvZCIsIkRvbVJlbmRlcmVyLnNldFRleHQiLCJEb21SZW5kZXJlci5hbmltYXRlTm9kZUVudGVyIiwiRG9tUmVuZGVyZXIuYW5pbWF0ZU5vZGVMZWF2ZSIsIm1vdmVOb2Rlc0FmdGVyU2libGluZyIsImFwcGVuZE5vZGVzIiwiZGVjb3JhdGVQcmV2ZW50RGVmYXVsdCIsIl9zaGltQ29udGVudEF0dHJpYnV0ZSIsIl9zaGltSG9zdEF0dHJpYnV0ZSIsIl9mbGF0dGVuU3R5bGVzIiwic3BsaXROYW1lc3BhY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUJBQThDLHNCQUFzQixDQUFDLENBQUE7QUFDckUsa0NBQStCLHdDQUF3QyxDQUFDLENBQUE7QUFDeEUscUJBU08sMEJBQTBCLENBQUMsQ0FBQTtBQUVsQywyQkFBOEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUMvRSxtQ0FBa0Msc0JBQXNCLENBQUMsQ0FBQTtBQVN6RCw4QkFBMkIsd0JBQXdCLENBQUMsQ0FBQTtBQUVwRCwyQkFBdUIsY0FBYyxDQUFDLENBQUE7QUFDdEMseUJBQWdDLDRCQUE0QixDQUFDLENBQUE7QUFDN0QsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFDMUQscUJBQWtDLFFBQVEsQ0FBQyxDQUFBO0FBRTNDLElBQU0sY0FBYyxHQUNoQixpQkFBVSxDQUFDLEVBQUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLEtBQUssRUFBRSw0QkFBNEIsRUFBQyxDQUFDLENBQUM7QUFDL0YsSUFBTSxxQkFBcUIsR0FBRyxzQkFBc0IsQ0FBQztBQUNyRCxJQUFJLHFCQUFxQixHQUFHLDJCQUEyQixDQUFDO0FBRXhEO0lBR0VBLHlCQUFtQkEsUUFBYUEsRUFBU0EsWUFBMEJBLEVBQ2hEQSxnQkFBcUNBLEVBQVNBLE9BQXlCQTtRQUR2RUMsYUFBUUEsR0FBUkEsUUFBUUEsQ0FBS0E7UUFBU0EsaUJBQVlBLEdBQVpBLFlBQVlBLENBQWNBO1FBQ2hEQSxxQkFBZ0JBLEdBQWhCQSxnQkFBZ0JBLENBQXFCQTtRQUFTQSxZQUFPQSxHQUFQQSxPQUFPQSxDQUFrQkE7UUFIbEZBLDBCQUFxQkEsR0FBNkJBLElBQUlBLEdBQUdBLEVB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QUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0FBQzlCQSxDQUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcGFxdWVUb2tlbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtBbmltYXRpb25CdWlsZGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvYW5pbWF0ZS9hbmltYXRpb25fYnVpbGRlcic7XG5pbXBvcnQge1xuICBpc1ByZXNlbnQsXG4gIGlzQmxhbmssXG4gIEpzb24sXG4gIFJlZ0V4cFdyYXBwZXIsXG4gIENPTlNUX0VYUFIsXG4gIHN0cmluZ2lmeSxcbiAgU3RyaW5nV3JhcHBlcixcbiAgaXNBcnJheVxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG5pbXBvcnQge0Jhc2VFeGNlcHRpb24sIFdyYXBwZWRFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge0RvbVNoYXJlZFN0eWxlc0hvc3R9IGZyb20gJy4vc2hhcmVkX3N0eWxlc19ob3N0JztcblxuaW1wb3J0IHtcbiAgUmVuZGVyZXIsXG4gIFJvb3RSZW5kZXJlcixcbiAgUmVuZGVyQ29tcG9uZW50VHlwZSxcbiAgUmVuZGVyRGVidWdJbmZvXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3JlbmRlci9hcGknO1xuXG5pbXBvcnQge0V2ZW50TWFuYWdlcn0gZnJvbSAnLi9ldmVudHMvZXZlbnRfbWFuYWdlcic7XG5cbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJy4vZG9tX3Rva2Vucyc7XG5pbXBvcnQge1ZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9tZXRhZGF0YSc7XG5pbXBvcnQge0RPTX0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fYWRhcHRlcic7XG5pbXBvcnQge2NhbWVsQ2FzZVRvRGFzaENhc2V9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IE5BTUVTUEFDRV9VUklTID1cbiAgICBDT05TVF9FWFBSKHsneGxpbmsnOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsICdzdmcnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnfSk7XG5jb25zdCBURU1QTEFURV9DT01NRU5UX1RFWFQgPSAndGVtcGxhdGUgYmluZGluZ3M9e30nO1xudmFyIFRFTVBMQVRFX0JJTkRJTkdTX0VYUCA9IC9edGVtcGxhdGUgYmluZGluZ3M9KC4qKSQvZztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERvbVJvb3RSZW5kZXJlciBpbXBsZW1lbnRzIFJvb3RSZW5kZXJlciB7XG4gIHByaXZhdGUgX3JlZ2lzdGVyZWRDb21wb25lbnRzOiBNYXA8c3RyaW5nLCBEb21SZW5kZXJlcj4gPSBuZXcgTWFwPHN0cmluZywgRG9tUmVuZGVyZXI+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRvY3VtZW50OiBhbnksIHB1YmxpYyBldmVudE1hbmFnZXI6IEV2ZW50TWFuYWdlcixcbiAgICAgICAgICAgICAgcHVibGljIHNoYXJlZFN0eWxlc0hvc3Q6IERvbVNoYXJlZFN0eWxlc0hvc3QsIHB1YmxpYyBhbmltYXRlOiBBbmltYXRpb25CdWlsZGVyKSB7fVxuXG4gIHJlbmRlckNvbXBvbmVudChjb21wb25lbnRQcm90bzogUmVuZGVyQ29tcG9uZW50VHlwZSk6IFJlbmRlcmVyIHtcbiAgICB2YXIgcmVuZGVyZXIgPSB0aGlzLl9yZWdpc3RlcmVkQ29tcG9uZW50cy5nZXQoY29tcG9uZW50UHJvdG8uaWQpO1xuICAgIGlmIChpc0JsYW5rKHJlbmRlcmVyKSkge1xuICAgICAgcmVuZGVyZXIgPSBuZXcgRG9tUmVuZGVyZXIodGhpcywgY29tcG9uZW50UHJvdG8pO1xuICAgICAgdGhpcy5fcmVnaXN0ZXJlZENvbXBvbmVudHMuc2V0KGNvbXBvbmVudFByb3RvLmlkLCByZW5kZXJlcik7XG4gICAgfVxuICAgIHJldHVybiByZW5kZXJlcjtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRG9tUm9vdFJlbmRlcmVyXyBleHRlbmRzIERvbVJvb3RSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIF9kb2N1bWVudDogYW55LCBfZXZlbnRNYW5hZ2VyOiBFdmVudE1hbmFnZXIsXG4gICAgICAgICAgICAgIHNoYXJlZFN0eWxlc0hvc3Q6IERvbVNoYXJlZFN0eWxlc0hvc3QsIGFuaW1hdGU6IEFuaW1hdGlvbkJ1aWxkZXIpIHtcbiAgICBzdXBlcihfZG9jdW1lbnQsIF9ldmVudE1hbmFnZXIsIHNoYXJlZFN0eWxlc0hvc3QsIGFuaW1hdGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEb21SZW5kZXJlciBpbXBsZW1lbnRzIFJlbmRlcmVyIHtcbiAgcHJpdmF0ZSBfY29udGVudEF0dHI6IHN0cmluZztcbiAgcHJpdmF0ZSBfaG9zdEF0dHI6IHN0cmluZztcbiAgcHJpdmF0ZSBfc3R5bGVzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb290UmVuZGVyZXI6IERvbVJvb3RSZW5kZXJlciwgcHJpdmF0ZSBjb21wb25lbnRQcm90bzogUmVuZGVyQ29tcG9uZW50VHlwZSkge1xuICAgIHRoaXMuX3N0eWxlcyA9IF9mbGF0dGVuU3R5bGVzKGNvbXBvbmVudFByb3RvLmlkLCBjb21wb25lbnRQcm90by5zdHlsZXMsIFtdKTtcbiAgICBpZiAoY29tcG9uZW50UHJvdG8uZW5jYXBzdWxhdGlvbiAhPT0gVmlld0VuY2Fwc3VsYXRpb24uTmF0aXZlKSB7XG4gICAgICB0aGlzLl9yb290UmVuZGVyZXIuc2hhcmVkU3R5bGVzSG9zdC5hZGRTdHlsZXModGhpcy5fc3R5bGVzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UHJvdG8uZW5jYXBzdWxhdGlvbiA9PT0gVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWQpIHtcbiAgICAgIHRoaXMuX2NvbnRlbnRBdHRyID0gX3NoaW1Db250ZW50QXR0cmlidXRlKGNvbXBvbmVudFByb3RvLmlkKTtcbiAgICAgIHRoaXMuX2hvc3RBdHRyID0gX3NoaW1Ib3N0QXR0cmlidXRlKGNvbXBvbmVudFByb3RvLmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY29udGVudEF0dHIgPSBudWxsO1xuICAgICAgdGhpcy5faG9zdEF0dHIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlckNvbXBvbmVudChjb21wb25lbnRQcm90bzogUmVuZGVyQ29tcG9uZW50VHlwZSk6IFJlbmRlcmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm9vdFJlbmRlcmVyLnJlbmRlckNvbXBvbmVudChjb21wb25lbnRQcm90byk7XG4gIH1cblxuICBzZWxlY3RSb290RWxlbWVudChzZWxlY3Rvcjogc3RyaW5nKTogRWxlbWVudCB7XG4gICAgdmFyIGVsID0gRE9NLnF1ZXJ5U2VsZWN0b3IodGhpcy5fcm9vdFJlbmRlcmVyLmRvY3VtZW50LCBzZWxlY3Rvcik7XG4gICAgaWYgKGlzQmxhbmsoZWwpKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgVGhlIHNlbGVjdG9yIFwiJHtzZWxlY3Rvcn1cIiBkaWQgbm90IG1hdGNoIGFueSBlbGVtZW50c2ApO1xuICAgIH1cbiAgICBET00uY2xlYXJOb2RlcyhlbCk7XG4gICAgcmV0dXJuIGVsO1xuICB9XG5cbiAgY3JlYXRlRWxlbWVudChwYXJlbnQ6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IE5vZGUge1xuICAgIHZhciBuc0FuZE5hbWUgPSBzcGxpdE5hbWVzcGFjZShuYW1lKTtcbiAgICB2YXIgZWwgPSBpc1ByZXNlbnQobnNBbmROYW1lWzBdKSA/XG4gICAgICAgICAgICAgICAgIERPTS5jcmVhdGVFbGVtZW50TlMoTkFNRVNQQUNFX1VSSVNbbnNBbmROYW1lWzBdXSwgbnNBbmROYW1lWzFdKSA6XG4gICAgICAgICAgICAgICAgIERPTS5jcmVhdGVFbGVtZW50KG5zQW5kTmFtZVsxXSk7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl9jb250ZW50QXR0cikpIHtcbiAgICAgIERPTS5zZXRBdHRyaWJ1dGUoZWwsIHRoaXMuX2NvbnRlbnRBdHRyLCAnJyk7XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQocGFyZW50KSkge1xuICAgICAgRE9NLmFwcGVuZENoaWxkKHBhcmVudCwgZWwpO1xuICAgIH1cbiAgICByZXR1cm4gZWw7XG4gIH1cblxuICBjcmVhdGVWaWV3Um9vdChob3N0RWxlbWVudDogYW55KTogYW55IHtcbiAgICB2YXIgbm9kZXNQYXJlbnQ7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UHJvdG8uZW5jYXBzdWxhdGlvbiA9PT0gVmlld0VuY2Fwc3VsYXRpb24uTmF0aXZlKSB7XG4gICAgICBub2Rlc1BhcmVudCA9IERPTS5jcmVhdGVTaGFkb3dSb290KGhvc3RFbGVtZW50KTtcbiAgICAgIHRoaXMuX3Jvb3RSZW5kZXJlci5zaGFyZWRTdHlsZXNIb3N0LmFkZEhvc3Qobm9kZXNQYXJlbnQpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgRE9NLmFwcGVuZENoaWxkKG5vZGVzUGFyZW50LCBET00uY3JlYXRlU3R5bGVFbGVtZW50KHRoaXMuX3N0eWxlc1tpXSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNQcmVzZW50KHRoaXMuX2hvc3RBdHRyKSkge1xuICAgICAgICBET00uc2V0QXR0cmlidXRlKGhvc3RFbGVtZW50LCB0aGlzLl9ob3N0QXR0ciwgJycpO1xuICAgICAgfVxuICAgICAgbm9kZXNQYXJlbnQgPSBob3N0RWxlbWVudDtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGVzUGFyZW50O1xuICB9XG5cbiAgY3JlYXRlVGVtcGxhdGVBbmNob3IocGFyZW50RWxlbWVudDogYW55KTogYW55IHtcbiAgICB2YXIgY29tbWVudCA9IERPTS5jcmVhdGVDb21tZW50KFRFTVBMQVRFX0NPTU1FTlRfVEVYVCk7XG4gICAgaWYgKGlzUHJlc2VudChwYXJlbnRFbGVtZW50KSkge1xuICAgICAgRE9NLmFwcGVuZENoaWxkKHBhcmVudEVsZW1lbnQsIGNvbW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gY29tbWVudDtcbiAgfVxuXG4gIGNyZWF0ZVRleHQocGFyZW50RWxlbWVudDogYW55LCB2YWx1ZTogc3RyaW5nKTogYW55IHtcbiAgICB2YXIgbm9kZSA9IERPTS5jcmVhdGVUZXh0Tm9kZSh2YWx1ZSk7XG4gICAgaWYgKGlzUHJlc2VudChwYXJlbnRFbGVtZW50KSkge1xuICAgICAgRE9NLmFwcGVuZENoaWxkKHBhcmVudEVsZW1lbnQsIG5vZGUpO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHByb2plY3ROb2RlcyhwYXJlbnRFbGVtZW50OiBhbnksIG5vZGVzOiBhbnlbXSkge1xuICAgIGlmIChpc0JsYW5rKHBhcmVudEVsZW1lbnQpKSByZXR1cm47XG4gICAgYXBwZW5kTm9kZXMocGFyZW50RWxlbWVudCwgbm9kZXMpO1xuICB9XG5cbiAgYXR0YWNoVmlld0FmdGVyKG5vZGU6IGFueSwgdmlld1Jvb3ROb2RlczogYW55W10pIHtcbiAgICBtb3ZlTm9kZXNBZnRlclNpYmxpbmcobm9kZSwgdmlld1Jvb3ROb2Rlcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aWV3Um9vdE5vZGVzLmxlbmd0aDsgaSsrKSB0aGlzLmFuaW1hdGVOb2RlRW50ZXIodmlld1Jvb3ROb2Rlc1tpXSk7XG4gIH1cblxuICBkZXRhY2hWaWV3KHZpZXdSb290Tm9kZXM6IGFueVtdKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aWV3Um9vdE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZSA9IHZpZXdSb290Tm9kZXNbaV07XG4gICAgICBET00ucmVtb3ZlKG5vZGUpO1xuICAgICAgdGhpcy5hbmltYXRlTm9kZUxlYXZlKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3lWaWV3KGhvc3RFbGVtZW50OiBhbnksIHZpZXdBbGxOb2RlczogYW55W10pIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRQcm90by5lbmNhcHN1bGF0aW9uID09PSBWaWV3RW5jYXBzdWxhdGlvbi5OYXRpdmUgJiYgaXNQcmVzZW50KGhvc3RFbGVtZW50KSkge1xuICAgICAgdGhpcy5fcm9vdFJlbmRlcmVyLnNoYXJlZFN0eWxlc0hvc3QucmVtb3ZlSG9zdChET00uZ2V0U2hhZG93Um9vdChob3N0RWxlbWVudCkpO1xuICAgIH1cbiAgfVxuXG4gIGxpc3RlbihyZW5kZXJFbGVtZW50OiBhbnksIG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9yb290UmVuZGVyZXIuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIocmVuZGVyRWxlbWVudCwgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29yYXRlUHJldmVudERlZmF1bHQoY2FsbGJhY2spKTtcbiAgfVxuXG4gIGxpc3Rlbkdsb2JhbCh0YXJnZXQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvb3RSZW5kZXJlci5ldmVudE1hbmFnZXIuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0YXJnZXQsIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvcmF0ZVByZXZlbnREZWZhdWx0KGNhbGxiYWNrKSk7XG4gIH1cblxuICBzZXRFbGVtZW50UHJvcGVydHkocmVuZGVyRWxlbWVudDogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZywgcHJvcGVydHlWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgRE9NLnNldFByb3BlcnR5KHJlbmRlckVsZW1lbnQsIHByb3BlcnR5TmFtZSwgcHJvcGVydHlWYWx1ZSk7XG4gIH1cblxuICBzZXRFbGVtZW50QXR0cmlidXRlKHJlbmRlckVsZW1lbnQ6IGFueSwgYXR0cmlidXRlTmFtZTogc3RyaW5nLCBhdHRyaWJ1dGVWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdmFyIGF0dHJOcztcbiAgICB2YXIgbnNBbmROYW1lID0gc3BsaXROYW1lc3BhY2UoYXR0cmlidXRlTmFtZSk7XG4gICAgaWYgKGlzUHJlc2VudChuc0FuZE5hbWVbMF0pKSB7XG4gICAgICBhdHRyaWJ1dGVOYW1lID0gbnNBbmROYW1lWzBdICsgJzonICsgbnNBbmROYW1lWzFdO1xuICAgICAgYXR0ck5zID0gTkFNRVNQQUNFX1VSSVNbbnNBbmROYW1lWzBdXTtcbiAgICB9XG4gICAgaWYgKGlzUHJlc2VudChhdHRyaWJ1dGVWYWx1ZSkpIHtcbiAgICAgIGlmIChpc1ByZXNlbnQoYXR0ck5zKSkge1xuICAgICAgICBET00uc2V0QXR0cmlidXRlTlMocmVuZGVyRWxlbWVudCwgYXR0ck5zLCBhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGVWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBET00uc2V0QXR0cmlidXRlKHJlbmRlckVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzUHJlc2VudChhdHRyTnMpKSB7XG4gICAgICAgIERPTS5yZW1vdmVBdHRyaWJ1dGVOUyhyZW5kZXJFbGVtZW50LCBhdHRyTnMsIG5zQW5kTmFtZVsxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBET00ucmVtb3ZlQXR0cmlidXRlKHJlbmRlckVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldEJpbmRpbmdEZWJ1Z0luZm8ocmVuZGVyRWxlbWVudDogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZywgcHJvcGVydHlWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdmFyIGRhc2hDYXNlZFByb3BlcnR5TmFtZSA9IGNhbWVsQ2FzZVRvRGFzaENhc2UocHJvcGVydHlOYW1lKTtcbiAgICBpZiAoRE9NLmlzQ29tbWVudE5vZGUocmVuZGVyRWxlbWVudCkpIHtcbiAgICAgIHZhciBleGlzdGluZ0JpbmRpbmdzID0gUmVnRXhwV3JhcHBlci5maXJzdE1hdGNoKFxuICAgICAgICAgIFRFTVBMQVRFX0JJTkRJTkdTX0VYUCwgU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsKERPTS5nZXRUZXh0KHJlbmRlckVsZW1lbnQpLCAvXFxuL2csICcnKSk7XG4gICAgICB2YXIgcGFyc2VkQmluZGluZ3MgPSBKc29uLnBhcnNlKGV4aXN0aW5nQmluZGluZ3NbMV0pO1xuICAgICAgcGFyc2VkQmluZGluZ3NbZGFzaENhc2VkUHJvcGVydHlOYW1lXSA9IHByb3BlcnR5VmFsdWU7XG4gICAgICBET00uc2V0VGV4dChyZW5kZXJFbGVtZW50LCBTdHJpbmdXcmFwcGVyLnJlcGxhY2UoVEVNUExBVEVfQ09NTUVOVF9URVhULCAne30nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpzb24uc3RyaW5naWZ5KHBhcnNlZEJpbmRpbmdzKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEVsZW1lbnRBdHRyaWJ1dGUocmVuZGVyRWxlbWVudCwgcHJvcGVydHlOYW1lLCBwcm9wZXJ0eVZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBzZXRFbGVtZW50RGVidWdJbmZvKHJlbmRlckVsZW1lbnQ6IGFueSwgaW5mbzogUmVuZGVyRGVidWdJbmZvKSB7fVxuXG4gIHNldEVsZW1lbnRDbGFzcyhyZW5kZXJFbGVtZW50OiBhbnksIGNsYXNzTmFtZTogc3RyaW5nLCBpc0FkZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0FkZCkge1xuICAgICAgRE9NLmFkZENsYXNzKHJlbmRlckVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERPTS5yZW1vdmVDbGFzcyhyZW5kZXJFbGVtZW50LCBjbGFzc05hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHNldEVsZW1lbnRTdHlsZShyZW5kZXJFbGVtZW50OiBhbnksIHN0eWxlTmFtZTogc3RyaW5nLCBzdHlsZVZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXNQcmVzZW50KHN0eWxlVmFsdWUpKSB7XG4gICAgICBET00uc2V0U3R5bGUocmVuZGVyRWxlbWVudCwgc3R5bGVOYW1lLCBzdHJpbmdpZnkoc3R5bGVWYWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBET00ucmVtb3ZlU3R5bGUocmVuZGVyRWxlbWVudCwgc3R5bGVOYW1lKTtcbiAgICB9XG4gIH1cblxuICBpbnZva2VFbGVtZW50TWV0aG9kKHJlbmRlckVsZW1lbnQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBhcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIERPTS5pbnZva2UocmVuZGVyRWxlbWVudCwgbWV0aG9kTmFtZSwgYXJncyk7XG4gIH1cblxuICBzZXRUZXh0KHJlbmRlck5vZGU6IGFueSwgdGV4dDogc3RyaW5nKTogdm9pZCB7IERPTS5zZXRUZXh0KHJlbmRlck5vZGUsIHRleHQpOyB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIGFuaW1hdGlvbnMgaWYgbmVjZXNzYXJ5XG4gICAqIEBwYXJhbSBub2RlXG4gICAqL1xuICBhbmltYXRlTm9kZUVudGVyKG5vZGU6IE5vZGUpIHtcbiAgICBpZiAoRE9NLmlzRWxlbWVudE5vZGUobm9kZSkgJiYgRE9NLmhhc0NsYXNzKG5vZGUsICduZy1hbmltYXRlJykpIHtcbiAgICAgIERPTS5hZGRDbGFzcyhub2RlLCAnbmctZW50ZXInKTtcbiAgICAgIHRoaXMuX3Jvb3RSZW5kZXJlci5hbmltYXRlLmNzcygpXG4gICAgICAgICAgLmFkZEFuaW1hdGlvbkNsYXNzKCduZy1lbnRlci1hY3RpdmUnKVxuICAgICAgICAgIC5zdGFydCg8SFRNTEVsZW1lbnQ+bm9kZSlcbiAgICAgICAgICAub25Db21wbGV0ZSgoKSA9PiB7IERPTS5yZW1vdmVDbGFzcyhub2RlLCAnbmctZW50ZXInKTsgfSk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogSWYgYW5pbWF0aW9ucyBhcmUgbmVjZXNzYXJ5LCBwZXJmb3JtcyBhbmltYXRpb25zIHRoZW4gcmVtb3ZlcyB0aGUgZWxlbWVudDsgb3RoZXJ3aXNlLCBpdCBqdXN0XG4gICAqIHJlbW92ZXMgdGhlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSBub2RlXG4gICAqL1xuICBhbmltYXRlTm9kZUxlYXZlKG5vZGU6IE5vZGUpIHtcbiAgICBpZiAoRE9NLmlzRWxlbWVudE5vZGUobm9kZSkgJiYgRE9NLmhhc0NsYXNzKG5vZGUsICduZy1hbmltYXRlJykpIHtcbiAgICAgIERPTS5hZGRDbGFzcyhub2RlLCAnbmctbGVhdmUnKTtcbiAgICAgIHRoaXMuX3Jvb3RSZW5kZXJlci5hbmltYXRlLmNzcygpXG4gICAgICAgICAgLmFkZEFuaW1hdGlvbkNsYXNzKCduZy1sZWF2ZS1hY3RpdmUnKVxuICAgICAgICAgIC5zdGFydCg8SFRNTEVsZW1lbnQ+bm9kZSlcbiAgICAgICAgICAub25Db21wbGV0ZSgoKSA9PiB7XG4gICAgICAgICAgICBET00ucmVtb3ZlQ2xhc3Mobm9kZSwgJ25nLWxlYXZlJyk7XG4gICAgICAgICAgICBET00ucmVtb3ZlKG5vZGUpO1xuICAgICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBET00ucmVtb3ZlKG5vZGUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtb3ZlTm9kZXNBZnRlclNpYmxpbmcoc2libGluZywgbm9kZXMpIHtcbiAgdmFyIHBhcmVudCA9IERPTS5wYXJlbnRFbGVtZW50KHNpYmxpbmcpO1xuICBpZiAobm9kZXMubGVuZ3RoID4gMCAmJiBpc1ByZXNlbnQocGFyZW50KSkge1xuICAgIHZhciBuZXh0U2libGluZyA9IERPTS5uZXh0U2libGluZyhzaWJsaW5nKTtcbiAgICBpZiAoaXNQcmVzZW50KG5leHRTaWJsaW5nKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBET00uaW5zZXJ0QmVmb3JlKG5leHRTaWJsaW5nLCBub2Rlc1tpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgRE9NLmFwcGVuZENoaWxkKHBhcmVudCwgbm9kZXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBlbmROb2RlcyhwYXJlbnQsIG5vZGVzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBET00uYXBwZW5kQ2hpbGQocGFyZW50LCBub2Rlc1tpXSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVjb3JhdGVQcmV2ZW50RGVmYXVsdChldmVudEhhbmRsZXI6IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICByZXR1cm4gKGV2ZW50KSA9PiB7XG4gICAgdmFyIGFsbG93RGVmYXVsdEJlaGF2aW9yID0gZXZlbnRIYW5kbGVyKGV2ZW50KTtcbiAgICBpZiAoYWxsb3dEZWZhdWx0QmVoYXZpb3IgPT09IGZhbHNlKSB7XG4gICAgICAvLyBUT0RPKHRib3NjaCk6IG1vdmUgcHJldmVudERlZmF1bHQgaW50byBldmVudCBwbHVnaW5zLi4uXG4gICAgICBET00ucHJldmVudERlZmF1bHQoZXZlbnQpO1xuICAgIH1cbiAgfTtcbn1cblxudmFyIENPTVBPTkVOVF9SRUdFWCA9IC8lQ09NUCUvZztcbmV4cG9ydCBjb25zdCBDT01QT05FTlRfVkFSSUFCTEUgPSAnJUNPTVAlJztcbmV4cG9ydCBjb25zdCBIT1NUX0FUVFIgPSBgX25naG9zdC0ke0NPTVBPTkVOVF9WQVJJQUJMRX1gO1xuZXhwb3J0IGNvbnN0IENPTlRFTlRfQVRUUiA9IGBfbmdjb250ZW50LSR7Q09NUE9ORU5UX1ZBUklBQkxFfWA7XG5cbmZ1bmN0aW9uIF9zaGltQ29udGVudEF0dHJpYnV0ZShjb21wb25lbnRTaG9ydElkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsKENPTlRFTlRfQVRUUiwgQ09NUE9ORU5UX1JFR0VYLCBjb21wb25lbnRTaG9ydElkKTtcbn1cblxuZnVuY3Rpb24gX3NoaW1Ib3N0QXR0cmlidXRlKGNvbXBvbmVudFNob3J0SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGwoSE9TVF9BVFRSLCBDT01QT05FTlRfUkVHRVgsIGNvbXBvbmVudFNob3J0SWQpO1xufVxuXG5mdW5jdGlvbiBfZmxhdHRlblN0eWxlcyhjb21wSWQ6IHN0cmluZywgc3R5bGVzOiBBcnJheTxhbnkgfCBhbnlbXT4sIHRhcmdldDogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHN0eWxlID0gc3R5bGVzW2ldO1xuICAgIGlmIChpc0FycmF5KHN0eWxlKSkge1xuICAgICAgX2ZsYXR0ZW5TdHlsZXMoY29tcElkLCBzdHlsZSwgdGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGUgPSBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGwoc3R5bGUsIENPTVBPTkVOVF9SRUdFWCwgY29tcElkKTtcbiAgICAgIHRhcmdldC5wdXNoKHN0eWxlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxudmFyIE5TX1BSRUZJWF9SRSA9IC9eQChbXjpdKyk6KC4rKS9nO1xuXG5mdW5jdGlvbiBzcGxpdE5hbWVzcGFjZShuYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGlmIChuYW1lWzBdICE9ICdAJykge1xuICAgIHJldHVybiBbbnVsbCwgbmFtZV07XG4gIH1cbiAgbGV0IG1hdGNoID0gUmVnRXhwV3JhcHBlci5maXJzdE1hdGNoKE5TX1BSRUZJWF9SRSwgbmFtZSk7XG4gIHJldHVybiBbbWF0Y2hbMV0sIG1hdGNoWzJdXTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar debug_node_1 = require('angular2/src/core/debug/debug_node');\r\nvar DebugDomRootRenderer = (function () {\r\n function DebugDomRootRenderer(_delegate) {\r\n this._delegate = _delegate;\r\n }\r\n DebugDomRootRenderer.prototype.renderComponent = function (componentProto) {\r\n return new DebugDomRenderer(this, this._delegate.renderComponent(componentProto));\r\n };\r\n return DebugDomRootRenderer;\r\n})();\r\nexports.DebugDomRootRenderer = DebugDomRootRenderer;\r\nvar DebugDomRenderer = (function () {\r\n function DebugDomRenderer(_rootRenderer, _delegate) {\r\n this._rootRenderer = _rootRenderer;\r\n this._delegate = _delegate;\r\n }\r\n DebugDomRenderer.prototype.renderComponent = function (componentType) {\r\n return this._rootRenderer.renderComponent(componentType);\r\n };\r\n DebugDomRenderer.prototype.selectRootElement = function (selector) {\r\n var nativeEl = this._delegate.selectRootElement(selector);\r\n var debugEl = new debug_node_1.DebugElement(nativeEl, null);\r\n debug_node_1.indexDebugNode(debugEl);\r\n return nativeEl;\r\n };\r\n DebugDomRenderer.prototype.createElement = function (parentElement, name) {\r\n var nativeEl = this._delegate.createElement(parentElement, name);\r\n var debugEl = new debug_node_1.DebugElement(nativeEl, debug_node_1.getDebugNode(parentElement));\r\n debugEl.name = name;\r\n debug_node_1.indexDebugNode(debugEl);\r\n return nativeEl;\r\n };\r\n DebugDomRenderer.prototype.createViewRoot = function (hostElement) { return this._delegate.createViewRoot(hostElement); };\r\n DebugDomRenderer.prototype.createTemplateAnchor = function (parentElement) {\r\n var comment = this._delegate.createTemplateAnchor(parentElement);\r\n var debugEl = new debug_node_1.DebugNode(comment, debug_node_1.getDebugNode(parentElement));\r\n debug_node_1.indexDebugNode(debugEl);\r\n return comment;\r\n };\r\n DebugDomRenderer.prototype.createText = function (parentElement, value) {\r\n var text = this._delegate.createText(parentElement, value);\r\n var debugEl = new debug_node_1.DebugNode(text, debug_node_1.getDebugNode(parentElement));\r\n debug_node_1.indexDebugNode(debugEl);\r\n return text;\r\n };\r\n DebugDomRenderer.prototype.projectNodes = function (parentElement, nodes) {\r\n var debugParent = debug_node_1.getDebugNode(parentElement);\r\n if (lang_1.isPresent(debugParent) && debugParent instanceof debug_node_1.DebugElement) {\r\n nodes.forEach(function (node) { debugParent.addChild(debug_node_1.getDebugNode(node)); });\r\n }\r\n return this._delegate.projectNodes(parentElement, nodes);\r\n };\r\n DebugDomRenderer.prototype.attachViewAfter = function (node, viewRootNodes) {\r\n var debugNode = debug_node_1.getDebugNode(node);\r\n if (lang_1.isPresent(debugNode)) {\r\n var debugParent = debugNode.parent;\r\n if (viewRootNodes.length > 0 && lang_1.isPresent(debugParent)) {\r\n var debugViewRootNodes = [];\r\n viewRootNodes.forEach(function (rootNode) { return debugViewRootNodes.push(debug_node_1.getDebugNode(rootNode)); });\r\n debugParent.insertChildrenAfter(debugNode, debugViewRootNodes);\r\n }\r\n }\r\n return this._delegate.attachViewAfter(node, viewRootNodes);\r\n };\r\n DebugDomRenderer.prototype.detachView = function (viewRootNodes) {\r\n viewRootNodes.forEach(function (node) {\r\n var debugNode = debug_node_1.getDebugNode(node);\r\n if (lang_1.isPresent(debugNode) && lang_1.isPresent(debugNode.parent)) {\r\n debugNode.parent.removeChild(debugNode);\r\n }\r\n });\r\n return this._delegate.detachView(viewRootNodes);\r\n };\r\n DebugDomRenderer.prototype.destroyView = function (hostElement, viewAllNodes) {\r\n viewAllNodes.forEach(function (node) { debug_node_1.removeDebugNodeFromIndex(debug_node_1.getDebugNode(node)); });\r\n return this._delegate.destroyView(hostElement, viewAllNodes);\r\n };\r\n DebugDomRenderer.prototype.listen = function (renderElement, name, callback) {\r\n var debugEl = debug_node_1.getDebugNode(renderElement);\r\n if (lang_1.isPresent(debugEl)) {\r\n debugEl.listeners.push(new debug_node_1.EventListener(name, callback));\r\n }\r\n return this._delegate.listen(renderElement, name, callback);\r\n };\r\n DebugDomRenderer.prototype.listenGlobal = function (target, name, callback) {\r\n return this._delegate.listenGlobal(target, name, callback);\r\n };\r\n DebugDomRenderer.prototype.setElementProperty = function (renderElement, propertyName, propertyValue) {\r\n var debugEl = debug_node_1.getDebugNode(renderElement);\r\n if (lang_1.isPresent(debugEl) && debugEl instanceof debug_node_1.DebugElement) {\r\n debugEl.properties.set(propertyName, propertyValue);\r\n }\r\n return this._delegate.setElementProperty(renderElement, propertyName, propertyValue);\r\n };\r\n DebugDomRenderer.prototype.setElementAttribute = function (renderElement, attributeName, attributeValue) {\r\n var debugEl = debug_node_1.getDebugNode(renderElement);\r\n if (lang_1.isPresent(debugEl) && debugEl instanceof debug_node_1.DebugElement) {\r\n debugEl.attributes.set(attributeName, attributeValue);\r\n }\r\n return this._delegate.setElementAttribute(renderElement, attributeName, attributeValue);\r\n };\r\n /**\r\n * Used only in debug mode to serialize property changes to comment nodes,\r\n * such as <template> placeholders.\r\n */\r\n DebugDomRenderer.prototype.setBindingDebugInfo = function (renderElement, propertyName, propertyValue) {\r\n return this._delegate.setBindingDebugInfo(renderElement, propertyName, propertyValue);\r\n };\r\n /**\r\n * Used only in development mode to set information needed by the DebugNode for this element.\r\n */\r\n DebugDomRenderer.prototype.setElementDebugInfo = function (renderElement, info) {\r\n var debugEl = debug_node_1.getDebugNode(renderElement);\r\n debugEl.setDebugInfo(info);\r\n return this._delegate.setElementDebugInfo(renderElement, info);\r\n };\r\n DebugDomRenderer.prototype.setElementClass = function (renderElement, className, isAdd) {\r\n return this._delegate.setElementClass(renderElement, className, isAdd);\r\n };\r\n DebugDomRenderer.prototype.setElementStyle = function (renderElement, styleName, styleValue) {\r\n return this._delegate.setElementStyle(renderElement, styleName, styleValue);\r\n };\r\n DebugDomRenderer.prototype.invokeElementMethod = function (renderElement, methodName, args) {\r\n return this._delegate.invokeElementMethod(renderElement, methodName, args);\r\n };\r\n DebugDomRenderer.prototype.setText = function (renderNode, text) { return this._delegate.setText(renderNode, text); };\r\n return DebugDomRenderer;\r\n})();\r\nexports.DebugDomRenderer = DebugDomRenderer;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWdfcmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9kZWJ1Zy9kZWJ1Z19yZW5kZXJlci50cyJdLCJuYW1lcyI6WyJEZWJ1Z0RvbVJvb3RSZW5kZXJlciIsIkRlYnVnRG9tUm9vdFJlbmRlcmVyLmNvbnN0cnVjdG9yIiwiRGVidWdEb21Sb290UmVuZGVyZXIucmVuZGVyQ29tcG9uZW50IiwiRGVidWdEb21SZW5kZXJlciIsIkRlYnVnRG9tUmVuZGVyZXIuY29uc3RydWN0b3IiLCJEZWJ1Z0RvbVJlbmRlcmVyLnJlbmRlckNvbXBvbmVudCIsIkRlYnVnRG9tUmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQiLCJEZWJ1Z0RvbVJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQiLCJEZWJ1Z0RvbVJlbmRlcmVyLmNyZWF0ZVZpZXdSb290IiwiRGVidWdEb21SZW5kZXJlci5jcmVhdGVUZW1wbGF0ZUFuY2hvciIsIkRlYnVnRG9tUmVuZGVyZXIuY3JlYXRlVGV4dCIsIkRlYnVnRG9tUmVuZGVyZXIucHJvamVjdE5vZGVzIiwiRGVidWdEb21SZW5kZXJlci5hdHRhY2hWaWV3QWZ0ZXIiLCJEZWJ1Z0RvbVJlbmRlcmVyLmRldGFjaFZpZXciLCJEZWJ1Z0RvbVJlbmRlcmVyLmRlc3Ryb3lWaWV3IiwiRGVidWdEb21SZW5kZXJlci5saXN0ZW4iLCJEZWJ1Z0RvbVJlbmRlcmVyLmxpc3Rlbkdsb2JhbCIsIkRlYnVnRG9tUmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5IiwiRGVidWdEb21SZW5kZXJlci5zZXRFbGVtZW50QXR0cmlidXRlIiwiRGVidWdEb21SZW5kZXJlci5zZXRCaW5kaW5nRGVidWdJbmZvIiwiRGVidWdEb21SZW5kZXJlci5zZXRFbGVtZW50RGVidWdJbmZvIiwiRGVidWdEb21SZW5kZXJlci5zZXRFbGVtZW50Q2xhc3MiLCJEZWJ1Z0RvbVJlbmRlcmVyLnNldEVsZW1lbnRTdHlsZSIsIkRlYnVnRG9tUmVu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O0lBQzdGckIsdUJBQUNBO0FBQURBLENBQUNBLEFBcElELElBb0lDO0FBcElZLHdCQUFnQixtQkFvSTVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7XG4gIFJlbmRlcmVyLFxuICBSb290UmVuZGVyZXIsXG4gIFJlbmRlckNvbXBvbmVudFR5cGUsXG4gIFJlbmRlckRlYnVnSW5mb1xufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZW5kZXIvYXBpJztcbmltcG9ydCB7XG4gIERlYnVnTm9kZSxcbiAgRGVidWdFbGVtZW50LFxuICBFdmVudExpc3RlbmVyLFxuICBnZXREZWJ1Z05vZGUsXG4gIGluZGV4RGVidWdOb2RlLFxuICByZW1vdmVEZWJ1Z05vZGVGcm9tSW5kZXhcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGVidWcvZGVidWdfbm9kZSc7XG5cbmV4cG9ydCBjbGFzcyBEZWJ1Z0RvbVJvb3RSZW5kZXJlciBpbXBsZW1lbnRzIFJvb3RSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RlbGVnYXRlOiBSb290UmVuZGVyZXIpIHt9XG5cbiAgcmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudFByb3RvOiBSZW5kZXJDb21wb25lbnRUeXBlKTogUmVuZGVyZXIge1xuICAgIHJldHVybiBuZXcgRGVidWdEb21SZW5kZXJlcih0aGlzLCB0aGlzLl9kZWxlZ2F0ZS5yZW5kZXJDb21wb25lbnQoY29tcG9uZW50UHJvdG8pKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGVidWdEb21SZW5kZXJlciBpbXBsZW1lbnRzIFJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcm9vdFJlbmRlcmVyOiBEZWJ1Z0RvbVJvb3RSZW5kZXJlciwgcHJpdmF0ZSBfZGVsZWdhdGU6IFJlbmRlcmVyKSB7fVxuXG4gIHJlbmRlckNvbXBvbmVudChjb21wb25lbnRUeXBlOiBSZW5kZXJDb21wb25lbnRUeXBlKTogUmVuZGVyZXIge1xuICAgIHJldHVybiB0aGlzLl9yb290UmVuZGVyZXIucmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudFR5cGUpO1xuICB9XG5cbiAgc2VsZWN0Um9vdEVsZW1lbnQoc2VsZWN0b3I6IHN0cmluZyk6IGFueSB7XG4gICAgdmFyIG5hdGl2ZUVsID0gdGhpcy5fZGVsZWdhdGUuc2VsZWN0Um9vdEVsZW1lbnQoc2VsZWN0b3IpO1xuICAgIHZhciBkZWJ1Z0VsID0gbmV3IERlYnVnRWxlbWVudChuYXRpdmVFbCwgbnVsbCk7XG4gICAgaW5kZXhEZWJ1Z05vZGUoZGVidWdFbCk7XG4gICAgcmV0dXJuIG5hdGl2ZUVsO1xuICB9XG5cbiAgY3JlYXRlRWxlbWVudChwYXJlbnRFbGVtZW50OiBhbnksIG5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgdmFyIG5hdGl2ZUVsID0gdGhpcy5fZGVsZWdhdGUuY3JlYXRlRWxlbWVudChwYXJlbnRFbGVtZW50LCBuYW1lKTtcbiAgICB2YXIgZGVidWdFbCA9IG5ldyBEZWJ1Z0VsZW1lbnQobmF0aXZlRWwsIGdldERlYnVnTm9kZShwYXJlbnRFbGVtZW50KSk7XG4gICAgZGVidWdFbC5uYW1lID0gbmFtZTtcbiAgICBpbmRleERlYnVnTm9kZShkZWJ1Z0VsKTtcbiAgICByZXR1cm4gbmF0aXZlRWw7XG4gIH1cblxuICBjcmVhdGVWaWV3Um9vdChob3N0RWxlbWVudDogYW55KTogYW55IHsgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmNyZWF0ZVZpZXdSb290KGhvc3RFbGVtZW50KTsgfVxuXG4gIGNyZWF0ZVRlbXBsYXRlQW5jaG9yKHBhcmVudEVsZW1lbnQ6IGFueSk6IGFueSB7XG4gICAgdmFyIGNvbW1lbnQgPSB0aGlzLl9kZWxlZ2F0ZS5jcmVhdGVUZW1wbGF0ZUFuY2hvcihwYXJlbnRFbGVtZW50KTtcbiAgICB2YXIgZGVidWdFbCA9IG5ldyBEZWJ1Z05vZGUoY29tbWVudCwgZ2V0RGVidWdOb2RlKHBhcmVudEVsZW1lbnQpKTtcbiAgICBpbmRleERlYnVnTm9kZShkZWJ1Z0VsKTtcbiAgICByZXR1cm4gY29tbWVudDtcbiAgfVxuXG4gIGNyZWF0ZVRleHQocGFyZW50RWxlbWVudDogYW55LCB2YWx1ZTogc3RyaW5nKTogYW55IHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuX2RlbGVnYXRlLmNyZWF0ZVRleHQocGFyZW50RWxlbWVudCwgdmFsdWUpO1xuICAgIHZhciBkZWJ1Z0VsID0gbmV3IERlYnVnTm9kZSh0ZXh0LCBnZXREZWJ1Z05vZGUocGFyZW50RWxlbWVudCkpO1xuICAgIGluZGV4RGVidWdOb2RlKGRlYnVnRWwpO1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgcHJvamVjdE5vZGVzKHBhcmVudEVsZW1lbnQ6IGFueSwgbm9kZXM6IGFueVtdKSB7XG4gICAgdmFyIGRlYnVnUGFyZW50ID0gZ2V0RGVidWdOb2RlKHBhcmVudEVsZW1lbnQpO1xuICAgIGlmIChpc1ByZXNlbnQoZGVidWdQYXJlbnQpICYmIGRlYnVnUGFyZW50IGluc3RhbmNlb2YgRGVidWdFbGVtZW50KSB7XG4gICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7IGRlYnVnUGFyZW50LmFkZENoaWxkKGdldERlYnVnTm9kZShub2RlKSk7IH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUucHJvamVjdE5vZGVzKHBhcmVudEVsZW1lbnQsIG5vZGVzKTtcbiAgfVxuXG4gIGF0dGFjaFZpZXdBZnRlcihub2RlOiBhbnksIHZpZXdSb290Tm9kZXM6IGFueVtdKSB7XG4gICAgdmFyIGRlYnVnTm9kZSA9IGdldERlYnVnTm9kZShub2RlKTtcbiAgICBpZiAoaXNQcmVzZW50KGRlYnVnTm9kZSkpIHtcbiAgICAgIHZhciBkZWJ1Z1BhcmVudCA9IGRlYnVnTm9kZS5wYXJlbnQ7XG4gICAgICBpZiAodmlld1Jvb3ROb2Rlcy5sZW5ndGggPiAwICYmIGlzUHJlc2VudChkZWJ1Z1BhcmVudCkpIHtcbiAgICAgICAgdmFyIGRlYnVnVmlld1Jvb3ROb2RlczogRGVidWdOb2RlW10gPSBbXTtcbiAgICAgICAgdmlld1Jvb3ROb2Rlcy5mb3JFYWNoKChyb290Tm9kZSkgPT4gZGVidWdWaWV3Um9vdE5vZGVzLnB1c2goZ2V0RGVidWdOb2RlKHJvb3ROb2RlKSkpO1xuICAgICAgICBkZWJ1Z1BhcmVudC5pbnNlcnRDaGlsZHJlbkFmdGVyKGRlYnVnTm9kZSwgZGVidWdWaWV3Um9vdE5vZGVzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmF0dGFjaFZpZXdBZnRlcihub2RlLCB2aWV3Um9vdE5vZGVzKTtcbiAgfVxuXG4gIGRldGFjaFZpZXcodmlld1Jvb3ROb2RlczogYW55W10pIHtcbiAgICB2aWV3Um9vdE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIHZhciBkZWJ1Z05vZGUgPSBnZXREZWJ1Z05vZGUobm9kZSk7XG4gICAgICBpZiAoaXNQcmVzZW50KGRlYnVnTm9kZSkgJiYgaXNQcmVzZW50KGRlYnVnTm9kZS5wYXJlbnQpKSB7XG4gICAgICAgIGRlYnVnTm9kZS5wYXJlbnQucmVtb3ZlQ2hpbGQoZGVidWdOb2RlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuZGV0YWNoVmlldyh2aWV3Um9vdE5vZGVzKTtcbiAgfVxuXG4gIGRlc3Ryb3lWaWV3KGhvc3RFbGVtZW50OiBhbnksIHZpZXdBbGxOb2RlczogYW55W10pIHtcbiAgICB2aWV3QWxsTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4geyByZW1vdmVEZWJ1Z05vZGVGcm9tSW5kZXgoZ2V0RGVidWdOb2RlKG5vZGUpKTsgfSk7XG4gICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmRlc3Ryb3lWaWV3KGhvc3RFbGVtZW50LCB2aWV3QWxsTm9kZXMpO1xuICB9XG5cbiAgbGlzdGVuKHJlbmRlckVsZW1lbnQ6IGFueSwgbmFtZTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICB2YXIgZGVidWdFbCA9IGdldERlYnVnTm9kZShyZW5kZXJFbGVtZW50KTtcbiAgICBpZiAoaXNQcmVzZW50KGRlYnVnRWwpKSB7XG4gICAgICBkZWJ1Z0VsLmxpc3RlbmVycy5wdXNoKG5ldyBFdmVudExpc3RlbmVyKG5hbWUsIGNhbGxiYWNrKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5saXN0ZW4ocmVuZGVyRWxlbWVudCwgbmFtZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgbGlzdGVuR2xvYmFsKHRhcmdldDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUubGlzdGVuR2xvYmFsKHRhcmdldCwgbmFtZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgc2V0RWxlbWVudFByb3BlcnR5KHJlbmRlckVsZW1lbnQ6IGFueSwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHByb3BlcnR5VmFsdWU6IGFueSkge1xuICAgIHZhciBkZWJ1Z0VsID0gZ2V0RGVidWdOb2RlKHJlbmRlckVsZW1lbnQpO1xuICAgIGlmIChpc1ByZXNlbnQoZGVidWdFbCkgJiYgZGVidWdFbCBpbnN0YW5jZW9mIERlYnVnRWxlbWVudCkge1xuICAgICAgZGVidWdFbC5wcm9wZXJ0aWVzLnNldChwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuc2V0RWxlbWVudFByb3BlcnR5KHJlbmRlckVsZW1lbnQsIHByb3BlcnR5TmFtZSwgcHJvcGVydHlWYWx1ZSk7XG4gIH1cblxuICBzZXRFbGVtZW50QXR0cmlidXRlKHJlbmRlckVsZW1lbnQ6IGFueSwgYXR0cmlidXRlTmFtZTogc3RyaW5nLCBhdHRyaWJ1dGVWYWx1ZTogc3RyaW5nKSB7XG4gICAgdmFyIGRlYnVnRWwgPSBnZXREZWJ1Z05vZGUocmVuZGVyRWxlbWVudCk7XG4gICAgaWYgKGlzUHJlc2VudChkZWJ1Z0VsKSAmJiBkZWJ1Z0VsIGluc3RhbmNlb2YgRGVidWdFbGVtZW50KSB7XG4gICAgICBkZWJ1Z0VsLmF0dHJpYnV0ZXMuc2V0KGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLnNldEVsZW1lbnRBdHRyaWJ1dGUocmVuZGVyRWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgb25seSBpbiBkZWJ1ZyBtb2RlIHRvIHNlcmlhbGl6ZSBwcm9wZXJ0eSBjaGFuZ2VzIHRvIGNvbW1lbnQgbm9kZXMsXG4gICAqIHN1Y2ggYXMgPHRlbXBsYXRlPiBwbGFjZWhvbGRlcnMuXG4gICAqL1xuICBzZXRCaW5kaW5nRGVidWdJbmZvKHJlbmRlckVsZW1lbnQ6IGFueSwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHByb3BlcnR5VmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5zZXRCaW5kaW5nRGVidWdJbmZvKHJlbmRlckVsZW1lbnQsIHByb3BlcnR5TmFtZSwgcHJvcGVydHlWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBvbmx5IGluIGRldmVsb3BtZW50IG1vZGUgdG8gc2V0IGluZm9ybWF0aW9uIG5lZWRlZCBieSB0aGUgRGVidWdOb2RlIGZvciB0aGlzIGVsZW1lbnQuXG4gICAqL1xuICBzZXRFbGVtZW50RGVidWdJbmZvKHJlbmRlckVsZW1lbnQ6IGFueSwgaW5mbzogUmVuZGVyRGVidWdJbmZvKSB7XG4gICAgdmFyIGRlYnVnRWwgPSBnZXREZWJ1Z05vZGUocmVuZGVyRWxlbWVudCk7XG4gICAgZGVidWdFbC5zZXREZWJ1Z0luZm8oaW5mbyk7XG4gICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLnNldEVsZW1lbnREZWJ1Z0luZm8ocmVuZGVyRWxlbWVudCwgaW5mbyk7XG4gIH1cblxuICBzZXRFbGVtZW50Q2xhc3MocmVuZGVyRWxlbWVudDogYW55LCBjbGFzc05hbWU6IHN0cmluZywgaXNBZGQ6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuc2V0RWxlbWVudENsYXNzKHJlbmRlckVsZW1lbnQsIGNsYXNzTmFtZSwgaXNBZGQpO1xuICB9XG5cbiAgc2V0RWxlbWVudFN0eWxlKHJlbmRlckVsZW1lbnQ6IGFueSwgc3R5bGVOYW1lOiBzdHJpbmcsIHN0eWxlVmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5zZXRFbGVtZW50U3R5bGUocmVuZGVyRWxlbWVudCwgc3R5bGVOYW1lLCBzdHlsZVZhbHVlKTtcbiAgfVxuXG4gIGludm9rZUVsZW1lbnRNZXRob2QocmVuZGVyRWxlbWVudDogYW55LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmludm9rZUVsZW1lbnRNZXRob2QocmVuZGVyRWxlbWVudCwgbWV0aG9kTmFtZSwgYXJncyk7XG4gIH1cblxuICBzZXRUZXh0KHJlbmRlck5vZGU6IGFueSwgdGV4dDogc3RyaW5nKSB7IHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5zZXRUZXh0KHJlbmRlck5vZGUsIHRleHQpOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar debug_node_1 = require('angular2/src/core/debug/debug_node');\r\nvar dom_renderer_1 = require('angular2/src/platform/dom/dom_renderer');\r\nvar core_1 = require('angular2/core');\r\nvar debug_renderer_1 = require('angular2/src/core/debug/debug_renderer');\r\nvar CORE_TOKENS = lang_1.CONST_EXPR({ 'ApplicationRef': core_1.ApplicationRef, 'NgZone': core_1.NgZone });\r\nvar INSPECT_GLOBAL_NAME = 'ng.probe';\r\nvar CORE_TOKENS_GLOBAL_NAME = 'ng.coreTokens';\r\n/**\r\n * Returns a {@link DebugElement} for the given native DOM element, or\r\n * null if the given native element does not have an Angular view associated\r\n * with it.\r\n */\r\nfunction inspectNativeElement(element) {\r\n return debug_node_1.getDebugNode(element);\r\n}\r\nexports.inspectNativeElement = inspectNativeElement;\r\nfunction _createConditionalRootRenderer(rootRenderer) {\r\n if (lang_1.assertionsEnabled()) {\r\n return _createRootRenderer(rootRenderer);\r\n }\r\n return rootRenderer;\r\n}\r\nfunction _createRootRenderer(rootRenderer) {\r\n dom_adapter_1.DOM.setGlobalVar(INSPECT_GLOBAL_NAME, inspectNativeElement);\r\n dom_adapter_1.DOM.setGlobalVar(CORE_TOKENS_GLOBAL_NAME, CORE_TOKENS);\r\n return new debug_renderer_1.DebugDomRootRenderer(rootRenderer);\r\n}\r\n/**\r\n * Providers which support debugging Angular applications (e.g. via `ng.probe`).\r\n */\r\nexports.ELEMENT_PROBE_PROVIDERS = lang_1.CONST_EXPR([\r\n new di_1.Provider(core_1.RootRenderer, { useFactory: _createConditionalRootRenderer, deps: [dom_renderer_1.DomRootRenderer] })\r\n]);\r\nexports.ELEMENT_PROBE_PROVIDERS_PROD_MODE = lang_1.CONST_EXPR([new di_1.Provider(core_1.RootRenderer, { useFactory: _createRootRenderer, deps: [dom_renderer_1.DomRootRenderer] })]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfcHJvYmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RlYnVnL25nX3Byb2JlLnRzIl0sIm5hbWVzIjpbImluc3BlY3ROYXRpdmVFbGVtZW50IiwiX2NyZWF0ZUNvbmRpdGlvbmFsUm9vdFJlbmRlcmVyIiwiX2NyZWF0ZVJvb3RSZW5kZXJlciJdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXVELDBCQUEwQixDQUFDLENBQUE7QUFDbEYsbUJBQTRDLHNCQUFzQixDQUFDLENBQUE7QUFDbkUsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFDMUQsMkJBQXNDLG9DQUFvQyxDQUFDLENBQUE7QUFDM0UsNkJBQThCLHdDQUF3QyxDQUFDLENBQUE7QUFDdkUscUJBQW1ELGVBQWUsQ0FBQyxDQUFBO0FBQ25FLCtCQUFtQyx3Q0FBd0MsQ0FBQyxDQUFBO0FBRTVFLElBQU0sV0FBVyxHQUFHLGlCQUFVLENBQUMsRUFBQyxnQkFBZ0IsRUFBRSxxQkFBYyxFQUFFLFFBQVEsRUFBRSxhQUFNLEVBQUMsQ0FBQyxDQUFDO0FBRXJGLElBQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDO0FBQ3ZDLElBQU0sdUJBQXVCLEdBQUcsZUFBZSxDQUFDO0FBRWhEOzs7O0dBSUc7QUFDSCw4QkFBcUMsT0FBTztJQUMxQ0EsTUFBTUEsQ0FBQ0EseUJBQVlBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBO0FBQy9CQSxDQUFDQTtBQUZlLDRCQUFvQix1QkFFbkMsQ0FBQTtBQUVELHdDQUF3QyxZQUFZO0lBQ2xEQyxFQUFFQSxDQUFDQSxDQUFDQSx3QkFBaUJBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO1FBQ3hCQSxNQUFNQSxDQUFDQSxtQkFBbUJBLENBQUNBLFlBQVlBLENBQUNBLENBQUNBO0lBQzNDQSxDQUFDQTtJQUNEQSxNQUFNQSxDQUFDQSxZQUFZQSxDQUFDQTtBQUN0QkEsQ0FBQ0E7QUFFRCw2QkFBNkIsWUFBWTtJQUN2Q0MsaUJBQUdBLENBQUNBLFlBQVlBLENBQUNBLG1CQUFtQkEsRUFBRUEsb0JBQW9CQSxDQUFDQSxDQUFDQTtJQUM1REEsaUJBQUdBLENBQUNBLFlBQVlBLENBQUNBLHVCQUF1QkEsRUFBRUEsV0FBV0EsQ0FBQ0EsQ0FBQ0E7SUFDdkRBLE1BQU1BLENBQUNBLElBQUlBLHFDQUFvQkEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsQ0FBQ0E7QUFDaERBLENBQUNBO0FBRUQ7O0dBRUc7QUFDVSwrQkFBdUIsR0FBVSxpQkFBVSxDQUFDO0lBQ3ZELElBQUksYUFBUSxDQUFDLG1CQUFZLEVBQ1osRUFBQyxVQUFVLEVBQUUsOEJBQThCLEVBQUUsSUFBSSxFQUFFLENBQUMsOEJBQWUsQ0FBQyxFQUFDLENBQUM7Q0FDcEYsQ0FBQyxDQUFDO0FBRVUseUNBQWlDLEdBQVUsaUJBQVUsQ0FDOUQsQ0FBQyxJQUFJLGFBQVEsQ0FBQyxtQkFBWSxFQUFFLEVBQUMsVUFBVSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDLDhCQUFlLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVF9FWFBSLCBhc3NlcnRpb25zRW5hYmxlZCwgaXNQcmVzZW50fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBwcm92aWRlLCBQcm92aWRlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtET019IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX2FkYXB0ZXInO1xuaW1wb3J0IHtEZWJ1Z05vZGUsIGdldERlYnVnTm9kZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGVidWcvZGVidWdfbm9kZSc7XG5pbXBvcnQge0RvbVJvb3RSZW5kZXJlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fcmVuZGVyZXInO1xuaW1wb3J0IHtSb290UmVuZGVyZXIsIE5nWm9uZSwgQXBwbGljYXRpb25SZWZ9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtEZWJ1Z0RvbVJvb3RSZW5kZXJlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGVidWcvZGVidWdfcmVuZGVyZXInO1xuXG5jb25zdCBDT1JFX1RPS0VOUyA9IENPTlNUX0VYUFIoeydBcHBsaWNhdGlvblJlZic6IEFwcGxpY2F0aW9uUmVmLCAnTmdab25lJzogTmdab25lfSk7XG5cbmNvbnN0IElOU1BFQ1RfR0xPQkFMX05BTUUgPSAnbmcucHJvYmUnO1xuY29uc3QgQ09SRV9UT0tFTlNfR0xPQkFMX05BTUUgPSAnbmcuY29yZVRva2Vucyc7XG5cbi8qKlxuICogUmV0dXJucyBhIHtAbGluayBEZWJ1Z0VsZW1lbnR9IGZvciB0aGUgZ2l2ZW4gbmF0aXZlIERPTSBlbGVtZW50LCBvclxuICogbnVsbCBpZiB0aGUgZ2l2ZW4gbmF0aXZlIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhbiBBbmd1bGFyIHZpZXcgYXNzb2NpYXRlZFxuICogd2l0aCBpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3ROYXRpdmVFbGVtZW50KGVsZW1lbnQpOiBEZWJ1Z05vZGUge1xuICByZXR1cm4gZ2V0RGVidWdOb2RlKGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBfY3JlYXRlQ29uZGl0aW9uYWxSb290UmVuZGVyZXIocm9vdFJlbmRlcmVyKSB7XG4gIGlmIChhc3NlcnRpb25zRW5hYmxlZCgpKSB7XG4gICAgcmV0dXJuIF9jcmVhdGVSb290UmVuZGVyZXIocm9vdFJlbmRlcmVyKTtcbiAgfVxuICByZXR1cm4gcm9vdFJlbmRlcmVyO1xufVxuXG5mdW5jdGlvbiBfY3JlYXRlUm9vdFJlbmRlcmVyKHJvb3RSZW5kZXJlcikge1xuICBET00uc2V0R2xvYmFsVmFyKElOU1BFQ1RfR0xPQkFMX05BTUUsIGluc3BlY3ROYXRpdmVFbGVtZW50KTtcbiAgRE9NLnNldEdsb2JhbFZhcihDT1JFX1RPS0VOU19HTE9CQUxfTkFNRSwgQ09SRV9UT0tFTlMpO1xuICByZXR1cm4gbmV3IERlYnVnRG9tUm9vdFJlbmRlcmVyKHJvb3RSZW5kZXJlcik7XG59XG5cbi8qKlxuICogUHJvdmlkZXJzIHdoaWNoIHN1cHBvcnQgZGVidWdnaW5nIEFuZ3VsYXIgYXBwbGljYXRpb25zIChlLmcuIHZpYSBgbmcucHJvYmVgKS5cbiAqL1xuZXhwb3J0IGNvbnN0IEVMRU1FTlRfUFJPQkVfUFJPVklERVJTOiBhbnlbXSA9IENPTlNUX0VYUFIoW1xuICBuZXcgUHJvdmlkZXIoUm9vdFJlbmRlcmVyLFxuICAgICAgICAgICAgICAge3VzZUZhY3Rvcnk6IF9jcmVhdGVDb25kaXRpb25hbFJvb3RSZW5kZXJlciwgZGVwczogW0RvbVJvb3RSZW5kZXJlcl19KVxuXSk7XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX1BST0JFX1BST1ZJREVSU19QUk9EX01PREU6IGFueVtdID0gQ09OU1RfRVhQUihcbiAgICBbbmV3IFByb3ZpZGVyKFJvb3RSZW5kZXJlciwge3VzZUZhY3Rvcnk6IF9jcmVhdGVSb290UmVuZGVyZXIsIGRlcHM6IFtEb21Sb290UmVuZGVyZXJdfSldKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';function __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n/**\r\n * This is a set of classes and objects that can be used both in the browser and on the server.\r\n */\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nexports.DOM = dom_adapter_1.DOM;\r\nexports.setRootDomAdapter = dom_adapter_1.setRootDomAdapter;\r\nexports.DomAdapter = dom_adapter_1.DomAdapter;\r\nvar dom_renderer_1 = require('angular2/src/platform/dom/dom_renderer');\r\nexports.DomRenderer = dom_renderer_1.DomRenderer;\r\nvar dom_tokens_1 = require('angular2/src/platform/dom/dom_tokens');\r\nexports.DOCUMENT = dom_tokens_1.DOCUMENT;\r\nvar shared_styles_host_1 = require('angular2/src/platform/dom/shared_styles_host');\r\nexports.SharedStylesHost = shared_styles_host_1.SharedStylesHost;\r\nexports.DomSharedStylesHost = shared_styles_host_1.DomSharedStylesHost;\r\nvar dom_events_1 = require('angular2/src/platform/dom/events/dom_events');\r\nexports.DomEventsPlugin = dom_events_1.DomEventsPlugin;\r\nvar event_manager_1 = require('angular2/src/platform/dom/events/event_manager');\r\nexports.EVENT_MANAGER_PLUGINS = event_manager_1.EVENT_MANAGER_PLUGINS;\r\nexports.EventManager = event_manager_1.EventManager;\r\nexports.EventManagerPlugin = event_manager_1.EventManagerPlugin;\r\n__export(require('angular2/src/platform/dom/debug/by'));\r\n__export(require('angular2/src/platform/dom/debug/ng_probe'));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uX2RvbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3BsYXRmb3JtL2NvbW1vbl9kb20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCw0QkFBaUQsdUNBQXVDLENBQUM7QUFBakYsZ0NBQUc7QUFBRSw0REFBaUI7QUFBRSw4Q0FBeUQ7QUFDekYsNkJBQTBCLHdDQUF3QyxDQUFDO0FBQTNELGlEQUEyRDtBQUNuRSwyQkFBdUIsc0NBQXNDLENBQUM7QUFBdEQseUNBQXNEO0FBQzlELG1DQUFvRCw4Q0FBOEMsQ0FBQztBQUEzRixpRUFBZ0I7QUFBRSx1RUFBeUU7QUFDbkcsMkJBQThCLDZDQUE2QyxDQUFDO0FBQXBFLHVEQUFvRTtBQUM1RSw4QkFJTyxnREFBZ0QsQ0FBQztBQUh0RCxzRUFBcUI7QUFDckIsb0RBQVk7QUFDWixnRUFDc0Q7QUFDeEQsaUJBQWMsb0NBQW9DLENBQUMsRUFBQTtBQUNuRCxpQkFBYywwQ0FBMEMsQ0FBQyxFQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGlzIGEgc2V0IG9mIGNsYXNzZXMgYW5kIG9iamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBib3RoIGluIHRoZSBicm93c2VyIGFuZCBvbiB0aGUgc2VydmVyLlxuICovXG5leHBvcnQge0RPTSwgc2V0Um9vdERvbUFkYXB0ZXIsIERvbUFkYXB0ZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX2FkYXB0ZXInO1xuZXhwb3J0IHtEb21SZW5kZXJlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fcmVuZGVyZXInO1xuZXhwb3J0IHtET0NVTUVOVH0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fdG9rZW5zJztcbmV4cG9ydCB7U2hhcmVkU3R5bGVzSG9zdCwgRG9tU2hhcmVkU3R5bGVzSG9zdH0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9zaGFyZWRfc3R5bGVzX2hvc3QnO1xuZXhwb3J0IHtEb21FdmVudHNQbHVnaW59IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZXZlbnRzL2RvbV9ldmVudHMnO1xuZXhwb3J0IHtcbiAgRVZFTlRfTUFOQUdFUl9QTFVHSU5TLFxuICBFdmVudE1hbmFnZXIsXG4gIEV2ZW50TWFuYWdlclBsdWdpblxufSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2V2ZW50cy9ldmVudF9tYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZGVidWcvYnknO1xuZXhwb3J0ICogZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kZWJ1Zy9uZ19wcm9iZSc7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\n/**\r\n * A service that can be used to get and set the title of a current HTML document.\r\n *\r\n * Since an Angular 2 application can't be bootstrapped on the entire HTML document (`<html>` tag)\r\n * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements\r\n * (representing the `<title>` tag). Instead, this service can be used to set and get the current\r\n * title value.\r\n */\r\nvar Title = (function () {\r\n function Title() {\r\n }\r\n /**\r\n * Get the title of the current HTML document.\r\n * @returns {string}\r\n */\r\n Title.prototype.getTitle = function () { return dom_adapter_1.DOM.getTitle(); };\r\n /**\r\n * Set the title of the current HTML document.\r\n * @param newTitle\r\n */\r\n Title.prototype.setTitle = function (newTitle) { dom_adapter_1.DOM.setTitle(newTitle); };\r\n return Title;\r\n})();\r\nexports.Title = Title;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci90aXRsZS50cyJdLCJuYW1lcyI6WyJUaXRsZSIsIlRpdGxlLmNvbnN0cnVjdG9yIiwiVGl0bGUuZ2V0VGl0bGUiLCJUaXRsZS5zZXRUaXRsZSJdLCJtYXBwaW5ncyI6IkFBQUEsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFFMUQ7Ozs7Ozs7R0FPRztBQUNIO0lBQUFBO0lBWUFDLENBQUNBO0lBWENEOzs7T0FHR0E7SUFDSEEsd0JBQVFBLEdBQVJBLGNBQXFCRSxNQUFNQSxDQUFDQSxpQkFBR0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFN0NGOzs7T0FHR0E7SUFDSEEsd0JBQVFBLEdBQVJBLFVBQVNBLFFBQWdCQSxJQUFJRyxpQkFBR0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDeERILFlBQUNBO0FBQURBLENBQUNBLEFBWkQsSUFZQztBQVpZLGFBQUssUUFZakIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RE9NfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyJztcblxuLyoqXG4gKiBBIHNlcnZpY2UgdGhhdCBjYW4gYmUgdXNlZCB0byBnZXQgYW5kIHNldCB0aGUgdGl0bGUgb2YgYSBjdXJyZW50IEhUTUwgZG9jdW1lbnQuXG4gKlxuICogU2luY2UgYW4gQW5ndWxhciAyIGFwcGxpY2F0aW9uIGNhbid0IGJlIGJvb3RzdHJhcHBlZCBvbiB0aGUgZW50aXJlIEhUTUwgZG9jdW1lbnQgKGA8aHRtbD5gIHRhZylcbiAqIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBiaW5kIHRvIHRoZSBgdGV4dGAgcHJvcGVydHkgb2YgdGhlIGBIVE1MVGl0bGVFbGVtZW50YCBlbGVtZW50c1xuICogKHJlcHJlc2VudGluZyB0aGUgYDx0aXRsZT5gIHRhZykuIEluc3RlYWQsIHRoaXMgc2VydmljZSBjYW4gYmUgdXNlZCB0byBzZXQgYW5kIGdldCB0aGUgY3VycmVudFxuICogdGl0bGUgdmFsdWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBUaXRsZSB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIHRpdGxlIG9mIHRoZSBjdXJyZW50IEhUTUwgZG9jdW1lbnQuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBnZXRUaXRsZSgpOiBzdHJpbmcgeyByZXR1cm4gRE9NLmdldFRpdGxlKCk7IH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0aXRsZSBvZiB0aGUgY3VycmVudCBIVE1MIGRvY3VtZW50LlxuICAgKiBAcGFyYW0gbmV3VGl0bGVcbiAgICovXG4gIHNldFRpdGxlKG5ld1RpdGxlOiBzdHJpbmcpIHsgRE9NLnNldFRpdGxlKG5ld1RpdGxlKTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';/**\r\n * JS version of browser APIs. This library can only run in the browser.\r\n */\r\nvar win = window;\r\nexports.window = win;\r\nexports.document = window.document;\r\nexports.location = window.location;\r\nexports.gc = window['gc'] ? function () { return window['gc'](); } : function () { return null; };\r\nexports.performance = window['performance'] ? window['performance'] : null;\r\nexports.Event = window['Event'];\r\nexports.MouseEvent = window['MouseEvent'];\r\nexports.KeyboardEvent = window['KeyboardEvent'];\r\nexports.EventTarget = window['EventTarget'];\r\nexports.History = window['History'];\r\nexports.Location = window['Location'];\r\nexports.EventListener = window['EventListener'];\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9mYWNhZGUvYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILElBQUksR0FBRyxHQUFHLE1BQU07QUFFRCxjQUFNLE9BRko7QUFHTixnQkFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDM0IsZ0JBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQzNCLFVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsY0FBTSxPQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFkLENBQWMsR0FBRyxjQUFNLE9BQUEsSUFBSSxFQUFKLENBQUksQ0FBQztBQUN0RCxtQkFBVyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ2pFLGFBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDeEIsa0JBQVUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDbEMscUJBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDeEMsbUJBQVcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDcEMsZUFBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM1QixnQkFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM5QixxQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSlMgdmVyc2lvbiBvZiBicm93c2VyIEFQSXMuIFRoaXMgbGlicmFyeSBjYW4gb25seSBydW4gaW4gdGhlIGJyb3dzZXIuXG4gKi9cbnZhciB3aW4gPSB3aW5kb3c7XG5cbmV4cG9ydCB7d2luIGFzIHdpbmRvd307XG5leHBvcnQgdmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50O1xuZXhwb3J0IHZhciBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjtcbmV4cG9ydCB2YXIgZ2MgPSB3aW5kb3dbJ2djJ10gPyAoKSA9PiB3aW5kb3dbJ2djJ10oKSA6ICgpID0+IG51bGw7XG5leHBvcnQgdmFyIHBlcmZvcm1hbmNlID0gd2luZG93WydwZXJmb3JtYW5jZSddID8gd2luZG93WydwZXJmb3JtYW5jZSddIDogbnVsbDtcbmV4cG9ydCBjb25zdCBFdmVudCA9IHdpbmRvd1snRXZlbnQnXTtcbmV4cG9ydCBjb25zdCBNb3VzZUV2ZW50ID0gd2luZG93WydNb3VzZUV2ZW50J107XG5leHBvcnQgY29uc3QgS2V5Ym9hcmRFdmVudCA9IHdpbmRvd1snS2V5Ym9hcmRFdmVudCddO1xuZXhwb3J0IGNvbnN0IEV2ZW50VGFyZ2V0ID0gd2luZG93WydFdmVudFRhcmdldCddO1xuZXhwb3J0IGNvbnN0IEhpc3RvcnkgPSB3aW5kb3dbJ0hpc3RvcnknXTtcbmV4cG9ydCBjb25zdCBMb2NhdGlvbiA9IHdpbmRvd1snTG9jYXRpb24nXTtcbmV4cG9ydCBjb25zdCBFdmVudExpc3RlbmVyID0gd2luZG93WydFdmVudExpc3RlbmVyJ107XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var application_ref_1 = require('angular2/src/core/application_ref');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar browser_1 = require('angular2/src/facade/browser');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\n/**\r\n * Entry point for all Angular debug tools. This object corresponds to the `ng`\r\n * global variable accessible in the dev console.\r\n */\r\nvar AngularTools = (function () {\r\n function AngularTools(ref) {\r\n this.profiler = new AngularProfiler(ref);\r\n }\r\n return AngularTools;\r\n})();\r\nexports.AngularTools = AngularTools;\r\n/**\r\n * Entry point for all Angular profiling-related debug tools. This object\r\n * corresponds to the `ng.profiler` in the dev console.\r\n */\r\nvar AngularProfiler = (function () {\r\n function AngularProfiler(ref) {\r\n this.appRef = ref.injector.get(application_ref_1.ApplicationRef);\r\n }\r\n /**\r\n * Exercises change detection in a loop and then prints the average amount of\r\n * time in milliseconds how long a single round of change detection takes for\r\n * the current state of the UI. It runs a minimum of 5 rounds for a minimum\r\n * of 500 milliseconds.\r\n *\r\n * Optionally, a user may pass a `config` parameter containing a map of\r\n * options. Supported options are:\r\n *\r\n * `record` (boolean) - causes the profiler to record a CPU profile while\r\n * it exercises the change detector. Example:\r\n *\r\n * ```\r\n * ng.profiler.timeChangeDetection({record: true})\r\n * ```\r\n */\r\n AngularProfiler.prototype.timeChangeDetection = function (config) {\r\n var record = lang_1.isPresent(config) && config['record'];\r\n var profileName = 'Change Detection';\r\n // Profiler is not available in Android browsers, nor in IE 9 without dev tools opened\r\n var isProfilerAvailable = lang_1.isPresent(browser_1.window.console.profile);\r\n if (record && isProfilerAvailable) {\r\n browser_1.window.console.profile(profileName);\r\n }\r\n var start = dom_adapter_1.DOM.performanceNow();\r\n var numTicks = 0;\r\n while (numTicks < 5 || (dom_adapter_1.DOM.performanceNow() - start) < 500) {\r\n this.appRef.tick();\r\n numTicks++;\r\n }\r\n var end = dom_adapter_1.DOM.performanceNow();\r\n if (record && isProfilerAvailable) {\r\n // need to cast to <any> because type checker thinks there's no argument\r\n // while in fact there is:\r\n //\r\n // https://developer.mozilla.org/en-US/docs/Web/API/Console/profileEnd\r\n browser_1.window.console.profileEnd(profileName);\r\n }\r\n var msPerTick = (end - start) / numTicks;\r\n browser_1.window.console.log(\"ran \" + numTicks + \" change detection cycles\");\r\n browser_1.window.console.log(lang_1.NumberWrapper.toFixed(msPerTick, 2) + \" ms per check\");\r\n };\r\n return AngularProfiler;\r\n})();\r\nexports.AngularProfiler = AngularProfiler;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uX3Rvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2Jyb3dzZXIvdG9vbHMvY29tbW9uX3Rvb2xzLnRzIl0sIm5hbWVzIjpbIkFuZ3VsYXJUb29scyIsIkFuZ3VsYXJUb29scy5jb25zdHJ1Y3RvciIsIkFuZ3VsYXJQcm9maWxlciIsIkFuZ3VsYXJQcm9maWxlci5jb25zdHJ1Y3RvciIsIkFuZ3VsYXJQcm9maWxlci50aW1lQ2hhbmdlRGV0ZWN0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQSxnQ0FBNkIsbUNBQW1DLENBQUMsQ0FBQTtBQUVqRSxxQkFBdUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNsRSx3QkFBcUIsNkJBQTZCLENBQUMsQ0FBQTtBQUNuRCw0QkFBa0IsdUNBQXVDLENBQUMsQ0FBQTtBQUUxRDs7O0dBR0c7QUFDSDtJQUdFQSxzQkFBWUEsR0FBaUJBO1FBQUlDLElBQUlBLENBQUNBLFFBQVFBLEdBQUdBLElBQUlBLGVBQWVBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBO0lBQUNBLENBQUNBO0lBQzlFRCxtQkFBQ0E7QUFBREEsQ0FBQ0EsQUFKRCxJQUlDO0FBSlksb0JBQVksZUFJeEIsQ0FBQTtBQUVEOzs7R0FHRztBQUNIO0lBR0VFLHlCQUFZQSxHQUFpQkE7UUFDM0JDLElBQUlBLENBQUNBLE1BQU1BLEdBQW1CQSxHQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxHQUFHQSxDQUFDQSxnQ0FBY0EsQ0FBQ0EsQ0FBQ0E7SUFDbEVBLENBQUNBO0lBRUREOzs7Ozs7Ozs7Ozs7Ozs7T0FlR0E7SUFDSEEsNkNBQW1CQSxHQUFuQkEsVUFBb0JBLE1BQVdBO1FBQzdCRSxJQUFJQSxNQUFNQSxHQUFHQSxnQkFBU0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsTUFBTUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0E7UUFDbkRBLElBQUlBLFdBQVdBLEdBQUdBLGtCQUFrQkEsQ0FBQ0E7UUFDckNBLHNGQUFzRkE7UUFDdEZBLElBQUlBLG1CQUFtQkEsR0FBR0EsZ0JBQVNBLENBQUNBLGdCQUFNQSxDQUFDQSxPQUFPQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQTtRQUM1REEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsSUFBSUEsbUJBQW1CQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNsQ0EsZ0JBQU1BLENBQUNBLE9BQU9BLENBQUNBLE9BQU9BLENBQUNBLFdBQVdBLENBQUNBLENBQUNBO1FBQ3RDQSxDQUFDQTtRQUNEQSxJQUFJQSxLQUFLQSxHQUFHQSxpQkFBR0EsQ0FBQ0EsY0FBY0EsRUFBRUEsQ0FBQ0E7UUFDakNBLElBQUlBLFFBQVFBLEdBQUdBLENBQUNBLENBQUNBO1FBQ2pCQSxPQUFPQSxRQUFRQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxpQkFBR0EsQ0FBQ0EsY0FBY0EsRUFBRUEsR0FBR0EsS0FBS0EsQ0FBQ0EsR0FBR0EsR0FBR0EsRUFBRUEsQ0FBQ0E7WUFDNURBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLEVBQUVBLENBQUNBO1lBQ25CQSxRQUFRQSxFQUFFQSxDQUFDQTtRQUNiQSxDQUFDQTtRQUNEQSxJQUFJQSxHQUFHQSxHQUFHQSxpQkFBR0EsQ0FBQ0EsY0FBY0EsRUFBRUEsQ0FBQ0E7UUFDL0JBLEVBQUVBLENBQUNBLENBQUNBLE1BQU1BLElBQUlBLG1CQUFtQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDbENBLHdFQUF3RUE7WUFDeEVBLDBCQUEwQkE7WUFDMUJBLEVBQUVBO1lBQ0ZBLHNFQUFzRUE7WUFDaEVBLGdCQUFNQSxDQUFDQSxPQUFPQSxDQUFDQSxVQUFXQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtRQUNoREEsQ0FBQ0E7UUFDREEsSUFBSUEsU0FBU0EsR0FBR0EsQ0FBQ0EsR0FBR0EsR0FBR0EsS0FBS0EsQ0FBQ0EsR0FBR0EsUUFBUUEsQ0FBQ0E7UUFDekNBLGdCQUFNQSxDQUFDQSxPQUFPQSxDQUFDQSxHQUFHQSxDQUFDQSxTQUFPQSxRQUFRQSw2QkFBMEJBLENBQUNBLENBQUNBO1FBQzlEQSxnQkFBTUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsR0FBR0EsQ0FBSUEsb0JBQWFBLENBQUNBLE9BQU9BLENBQUNBLFNBQVNBLEVBQUVBLENBQUNBLENBQUNBLGtCQUFlQSxDQUFDQSxDQUFDQTtJQUM1RUEsQ0FBQ0E7SUFDSEYsc0JBQUNBO0FBQURBLENBQUNBLEFBakRELElBaURDO0FBakRZLHVCQUFlLGtCQWlEM0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBwbGljYXRpb25SZWZ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2FwcGxpY2F0aW9uX3JlZic7XG5pbXBvcnQge0NvbXBvbmVudFJlZiwgQ29tcG9uZW50UmVmX30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL2R5bmFtaWNfY29tcG9uZW50X2xvYWRlcic7XG5pbXBvcnQge2lzUHJlc2VudCwgTnVtYmVyV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7d2luZG93fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2Jyb3dzZXInO1xuaW1wb3J0IHtET019IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX2FkYXB0ZXInO1xuXG4vKipcbiAqIEVudHJ5IHBvaW50IGZvciBhbGwgQW5ndWxhciBkZWJ1ZyB0b29scy4gVGhpcyBvYmplY3QgY29ycmVzcG9uZHMgdG8gdGhlIGBuZ2BcbiAqIGdsb2JhbCB2YXJpYWJsZSBhY2Nlc3NpYmxlIGluIHRoZSBkZXYgY29uc29sZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFuZ3VsYXJUb29scyB7XG4gIHByb2ZpbGVyOiBBbmd1bGFyUHJvZmlsZXI7XG5cbiAgY29uc3RydWN0b3IocmVmOiBDb21wb25lbnRSZWYpIHsgdGhpcy5wcm9maWxlciA9IG5ldyBBbmd1bGFyUHJvZmlsZXIocmVmKTsgfVxufVxuXG4vKipcbiAqIEVudHJ5IHBvaW50IGZvciBhbGwgQW5ndWxhciBwcm9maWxpbmctcmVsYXRlZCBkZWJ1ZyB0b29scy4gVGhpcyBvYmplY3RcbiAqIGNvcnJlc3BvbmRzIHRvIHRoZSBgbmcucHJvZmlsZXJgIGluIHRoZSBkZXYgY29uc29sZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFuZ3VsYXJQcm9maWxlciB7XG4gIGFwcFJlZjogQXBwbGljYXRpb25SZWY7XG5cbiAgY29uc3RydWN0b3IocmVmOiBDb21wb25lbnRSZWYpIHtcbiAgICB0aGlzLmFwcFJlZiA9ICg8Q29tcG9uZW50UmVmXz5yZWYpLmluamVjdG9yLmdldChBcHBsaWNhdGlvblJlZik7XG4gIH1cblxuICAvKipcbiAgICogRXhlcmNpc2VzIGNoYW5nZSBkZXRlY3Rpb24gaW4gYSBsb29wIGFuZCB0aGVuIHByaW50cyB0aGUgYXZlcmFnZSBhbW91bnQgb2ZcbiAgICogdGltZSBpbiBtaWxsaXNlY29uZHMgaG93IGxvbmcgYSBzaW5nbGUgcm91bmQgb2YgY2hhbmdlIGRldGVjdGlvbiB0YWtlcyBmb3JcbiAgICogdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIFVJLiBJdCBydW5zIGEgbWluaW11bSBvZiA1IHJvdW5kcyBmb3IgYSBtaW5pbXVtXG4gICAqIG9mIDUwMCBtaWxsaXNlY29uZHMuXG4gICAqXG4gICAqIE9wdGlvbmFsbHksIGEgdXNlciBtYXkgcGFzcyBhIGBjb25maWdgIHBhcmFtZXRlciBjb250YWluaW5nIGEgbWFwIG9mXG4gICAqIG9wdGlvbnMuIFN1cHBvcnRlZCBvcHRpb25zIGFyZTpcbiAgICpcbiAgICogYHJlY29yZGAgKGJvb2xlYW4pIC0gY2F1c2VzIHRoZSBwcm9maWxlciB0byByZWNvcmQgYSBDUFUgcHJvZmlsZSB3aGlsZVxuICAgKiBpdCBleGVyY2lzZXMgdGhlIGNoYW5nZSBkZXRlY3Rvci4gRXhhbXBsZTpcbiAgICpcbiAgICogYGBgXG4gICAqIG5nLnByb2ZpbGVyLnRpbWVDaGFuZ2VEZXRlY3Rpb24oe3JlY29yZDogdHJ1ZX0pXG4gICAqIGBgYFxuICAgKi9cbiAgdGltZUNoYW5nZURldGVjdGlvbihjb25maWc6IGFueSkge1xuICAgIHZhciByZWNvcmQgPSBpc1ByZXNlbnQoY29uZmlnKSAmJiBjb25maWdbJ3JlY29yZCddO1xuICAgIHZhciBwcm9maWxlTmFtZSA9ICdDaGFuZ2UgRGV0ZWN0aW9uJztcbiAgICAvLyBQcm9maWxlciBpcyBub3QgYXZhaWxhYmxlIGluIEFuZHJvaWQgYnJvd3NlcnMsIG5vciBpbiBJRSA5IHdpdGhvdXQgZGV2IHRvb2xzIG9wZW5lZFxuICAgIHZhciBpc1Byb2ZpbGVyQXZhaWxhYmxlID0gaXNQcmVzZW50KHdpbmRvdy5jb25zb2xlLnByb2ZpbGUpO1xuICAgIGlmIChyZWNvcmQgJiYgaXNQcm9maWxlckF2YWlsYWJsZSkge1xuICAgICAgd2luZG93LmNvbnNvbGUucHJvZmlsZShwcm9maWxlTmFtZSk7XG4gICAgfVxuICAgIHZhciBzdGFydCA9IERPTS5wZXJmb3JtYW5jZU5vdygpO1xuICAgIHZhciBudW1UaWNrcyA9IDA7XG4gICAgd2hpbGUgKG51bVRpY2tzIDwgNSB8fCAoRE9NLnBlcmZvcm1hbmNlTm93KCkgLSBzdGFydCkgPCA1MDApIHtcbiAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcbiAgICAgIG51bVRpY2tzKys7XG4gICAgfVxuICAgIHZhciBlbmQgPSBET00ucGVyZm9ybWFuY2VOb3coKTtcbiAgICBpZiAocmVjb3JkICYmIGlzUHJvZmlsZXJBdmFpbGFibGUpIHtcbiAgICAgIC8vIG5lZWQgdG8gY2FzdCB0byA8YW55PiBiZWNhdXNlIHR5cGUgY2hlY2tlciB0aGlua3MgdGhlcmUncyBubyBhcmd1bWVudFxuICAgICAgLy8gd2hpbGUgaW4gZmFjdCB0aGVyZSBpczpcbiAgICAgIC8vXG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ29uc29sZS9wcm9maWxlRW5kXG4gICAgICAoPGFueT53aW5kb3cuY29uc29sZS5wcm9maWxlRW5kKShwcm9maWxlTmFtZSk7XG4gICAgfVxuICAgIHZhciBtc1BlclRpY2sgPSAoZW5kIC0gc3RhcnQpIC8gbnVtVGlja3M7XG4gICAgd2luZG93LmNvbnNvbGUubG9nKGByYW4gJHtudW1UaWNrc30gY2hhbmdlIGRldGVjdGlvbiBjeWNsZXNgKTtcbiAgICB3aW5kb3cuY29uc29sZS5sb2coYCR7TnVtYmVyV3JhcHBlci50b0ZpeGVkKG1zUGVyVGljaywgMil9IG1zIHBlciBjaGVja2ApO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar common_tools_1 = require('./common_tools');\r\nvar context = lang_1.global;\r\n/**\r\n * Enabled Angular 2 debug tools that are accessible via your browser's\r\n * developer console.\r\n *\r\n * Usage:\r\n *\r\n * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)\r\n * 1. Type `ng.` (usually the console will show auto-complete suggestion)\r\n * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`\r\n * then hit Enter.\r\n */\r\nfunction enableDebugTools(ref) {\r\n context.ng = new common_tools_1.AngularTools(ref);\r\n}\r\nexports.enableDebugTools = enableDebugTools;\r\n/**\r\n * Disables Angular 2 tools.\r\n */\r\nfunction disableDebugTools() {\r\n delete context.ng;\r\n}\r\nexports.disableDebugTools = disableDebugTools;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci90b29scy90b29scy50cyJdLCJuYW1lcyI6WyJlbmFibGVEZWJ1Z1Rvb2xzIiwiZGlzYWJsZURlYnVnVG9vbHMiXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFxQiwwQkFBMEIsQ0FBQyxDQUFBO0FBRWhELDZCQUEyQixnQkFBZ0IsQ0FBQyxDQUFBO0FBRTVDLElBQUksT0FBTyxHQUFRLGFBQU0sQ0FBQztBQUUxQjs7Ozs7Ozs7OztHQVVHO0FBQ0gsMEJBQWlDLEdBQWlCO0lBQ2hEQSxPQUFPQSxDQUFDQSxFQUFFQSxHQUFHQSxJQUFJQSwyQkFBWUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0E7QUFDckNBLENBQUNBO0FBRmUsd0JBQWdCLG1CQUUvQixDQUFBO0FBRUQ7O0dBRUc7QUFDSDtJQUNFQyxPQUFPQSxPQUFPQSxDQUFDQSxFQUFFQSxDQUFDQTtBQUNwQkEsQ0FBQ0E7QUFGZSx5QkFBaUIsb0JBRWhDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dsb2JhbH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7Q29tcG9uZW50UmVmfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvZHluYW1pY19jb21wb25lbnRfbG9hZGVyJztcbmltcG9ydCB7QW5ndWxhclRvb2xzfSBmcm9tICcuL2NvbW1vbl90b29scyc7XG5cbnZhciBjb250ZXh0ID0gPGFueT5nbG9iYWw7XG5cbi8qKlxuICogRW5hYmxlZCBBbmd1bGFyIDIgZGVidWcgdG9vbHMgdGhhdCBhcmUgYWNjZXNzaWJsZSB2aWEgeW91ciBicm93c2VyJ3NcbiAqIGRldmVsb3BlciBjb25zb2xlLlxuICpcbiAqIFVzYWdlOlxuICpcbiAqIDEuIE9wZW4gZGV2ZWxvcGVyIGNvbnNvbGUgKGUuZy4gaW4gQ2hyb21lIEN0cmwgKyBTaGlmdCArIGopXG4gKiAxLiBUeXBlIGBuZy5gICh1c3VhbGx5IHRoZSBjb25zb2xlIHdpbGwgc2hvdyBhdXRvLWNvbXBsZXRlIHN1Z2dlc3Rpb24pXG4gKiAxLiBUcnkgdGhlIGNoYW5nZSBkZXRlY3Rpb24gcHJvZmlsZXIgYG5nLnByb2ZpbGVyLnRpbWVDaGFuZ2VEZXRlY3Rpb24oKWBcbiAqICAgIHRoZW4gaGl0IEVudGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlRGVidWdUb29scyhyZWY6IENvbXBvbmVudFJlZik6IHZvaWQge1xuICBjb250ZXh0Lm5nID0gbmV3IEFuZ3VsYXJUb29scyhyZWYpO1xufVxuXG4vKipcbiAqIERpc2FibGVzIEFuZ3VsYXIgMiB0b29scy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc2FibGVEZWJ1Z1Rvb2xzKCk6IHZvaWQge1xuICBkZWxldGUgY29udGV4dC5uZztcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar core_1 = require(\"angular2/core\");\r\nvar common_1 = require(\"angular2/common\");\r\nvar testability_1 = require('angular2/src/core/testability/testability');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar dom_events_1 = require('angular2/src/platform/dom/events/dom_events');\r\nvar key_events_1 = require('angular2/src/platform/dom/events/key_events');\r\nvar hammer_gestures_1 = require('angular2/src/platform/dom/events/hammer_gestures');\r\nvar dom_tokens_1 = require('angular2/src/platform/dom/dom_tokens');\r\nvar dom_renderer_1 = require('angular2/src/platform/dom/dom_renderer');\r\nvar shared_styles_host_1 = require('angular2/src/platform/dom/shared_styles_host');\r\nvar shared_styles_host_2 = require(\"angular2/src/platform/dom/shared_styles_host\");\r\nvar browser_details_1 = require(\"angular2/src/animate/browser_details\");\r\nvar animation_builder_1 = require(\"angular2/src/animate/animation_builder\");\r\nvar browser_adapter_1 = require('./browser/browser_adapter');\r\nvar testability_2 = require('angular2/src/platform/browser/testability');\r\nvar wtf_init_1 = require('angular2/src/core/profile/wtf_init');\r\nvar event_manager_1 = require(\"angular2/src/platform/dom/events/event_manager\");\r\nvar common_dom_1 = require('angular2/platform/common_dom');\r\nvar dom_tokens_2 = require('angular2/src/platform/dom/dom_tokens');\r\nexports.DOCUMENT = dom_tokens_2.DOCUMENT;\r\nvar title_1 = require('angular2/src/platform/browser/title');\r\nexports.Title = title_1.Title;\r\nvar common_dom_2 = require('angular2/platform/common_dom');\r\nexports.ELEMENT_PROBE_PROVIDERS = common_dom_2.ELEMENT_PROBE_PROVIDERS;\r\nexports.ELEMENT_PROBE_PROVIDERS_PROD_MODE = common_dom_2.ELEMENT_PROBE_PROVIDERS_PROD_MODE;\r\nexports.inspectNativeElement = common_dom_2.inspectNativeElement;\r\nexports.By = common_dom_2.By;\r\nvar browser_adapter_2 = require('./browser/browser_adapter');\r\nexports.BrowserDomAdapter = browser_adapter_2.BrowserDomAdapter;\r\nvar tools_1 = require('angular2/src/platform/browser/tools/tools');\r\nexports.enableDebugTools = tools_1.enableDebugTools;\r\nexports.disableDebugTools = tools_1.disableDebugTools;\r\n/**\r\n * A set of providers to initialize the Angular platform in a web browser.\r\n *\r\n * Used automatically by `bootstrap`, or can be passed to {@link platform}.\r\n */\r\nexports.BROWSER_PROVIDERS = lang_1.CONST_EXPR([\r\n core_1.PLATFORM_COMMON_PROVIDERS,\r\n new di_1.Provider(core_1.PLATFORM_INITIALIZER, { useValue: initDomAdapter, multi: true }),\r\n]);\r\nfunction _exceptionHandler() {\r\n // !IS_DART is required because we must rethrow exceptions in JS,\r\n // but must not rethrow exceptions in Dart\r\n return new core_1.ExceptionHandler(dom_adapter_1.DOM, !lang_1.IS_DART);\r\n}\r\nfunction _document() {\r\n return dom_adapter_1.DOM.defaultDoc();\r\n}\r\n/**\r\n * A set of providers to initialize an Angular application in a web browser.\r\n *\r\n * Used automatically by `bootstrap`, or can be passed to {@link PlatformRef.application}.\r\n */\r\nexports.BROWSER_APP_COMMON_PROVIDERS = lang_1.CONST_EXPR([\r\n core_1.APPLICATION_COMMON_PROVIDERS,\r\n common_1.FORM_PROVIDERS,\r\n new di_1.Provider(core_1.PLATFORM_PIPES, { useValue: common_1.COMMON_PIPES, multi: true }),\r\n new di_1.Provider(core_1.PLATFORM_DIRECTIVES, { useValue: common_1.COMMON_DIRECTIVES, multi: true }),\r\n new di_1.Provider(core_1.ExceptionHandler, { useFactory: _exceptionHandler, deps: [] }),\r\n new di_1.Provider(dom_tokens_1.DOCUMENT, { useFactory: _document, deps: [] }),\r\n new di_1.Provider(event_manager_1.EVENT_MANAGER_PLUGINS, { useClass: dom_events_1.DomEventsPlugin, multi: true }),\r\n new di_1.Provider(event_manager_1.EVENT_MANAGER_PLUGINS, { useClass: key_events_1.KeyEventsPlugin, multi: true }),\r\n new di_1.Provider(event_manager_1.EVENT_MANAGER_PLUGINS, { useClass: hammer_gestures_1.HammerGesturesPlugin, multi: true }),\r\n new di_1.Provider(dom_renderer_1.DomRootRenderer, { useClass: dom_renderer_1.DomRootRenderer_ }),\r\n new di_1.Provider(core_1.RootRenderer, { useExisting: dom_renderer_1.DomRootRenderer }),\r\n new di_1.Provider(shared_styles_host_2.SharedStylesHost, { useExisting: shared_styles_host_1.DomSharedStylesHost }),\r\n shared_styles_host_1.DomSharedStylesHost,\r\n testability_1.Testability,\r\n browser_details_1.BrowserDetails,\r\n animation_builder_1.AnimationBuilder,\r\n event_manager_1.EventManager,\r\n common_dom_1.ELEMENT_PROBE_PROVIDERS\r\n]);\r\nfunction initDomAdapter() {\r\n browser_adapter_1.BrowserDomAdapter.makeCurrent();\r\n wtf_init_1.wtfInit();\r\n testability_2.BrowserGetTestability.init();\r\n}\r\nexports.initDomAdapter = initDomAdapter;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlcl9jb21tb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlcl9jb21tb24udHMiXSwibmFtZXMiOlsiX2V4Y2VwdGlvbkhhbmRsZXIiLCJfZG9jdW1lbnQiLCJpbml0RG9tQWRhcHRlciJdLCJtYXBwaW5ncyI6IkFBQUEscUJBQWtDLDBCQUEwQixDQUFDLENBQUE7QUFDN0QsbUJBQXVELHNCQUFzQixDQUFDLENBQUE7QUFFOUUscUJBWU8sZUFBZSxDQUFDLENBQUE7QUFDdkIsdUJBQThELGlCQUFpQixDQUFDLENBQUE7QUFDaEYsNEJBQTBCLDJDQUEyQyxDQUFDLENBQUE7QUFDdEUsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFDMUQsMkJBQThCLDZDQUE2QyxDQUFDLENBQUE7QUFDNUUsMkJBQThCLDZDQUE2QyxDQUFDLENBQUE7QUFDNUUsZ0NBQW1DLGtEQUFrRCxDQUFDLENBQUE7QUFDdEYsMkJBQXVCLHNDQUFzQyxDQUFDLENBQUE7QUFDOUQsNkJBQWdELHdDQUF3QyxDQUFDLENBQUE7QUFDekYsbUNBQWtDLDhDQUE4QyxDQUFDLENBQUE7QUFDakYsbUNBQStCLDhDQUE4QyxDQUFDLENBQUE7QUFDOUUsZ0NBQTZCLHNDQUFzQyxDQUFDLENBQUE7QUFDcEUsa0NBQStCLHdDQUF3QyxDQUFDLENBQUE7QUFDeEUsZ0NBQWdDLDJCQUEyQixDQUFDLENBQUE7QUFDNUQsNEJBQW9DLDJDQUEyQyxDQUFDLENBQUE7QUFDaEYseUJBQXNCLG9DQUFvQyxDQUFDLENBQUE7QUFDM0QsOEJBQWtELGdEQUFnRCxDQUFDLENBQUE7QUFDbkcsMkJBQXNDLDhCQUE4QixDQUFDLENBQUE7QUFDckUsMkJBQXVCLHNDQUFzQyxDQUFDO0FBQXRELHlDQUFzRDtBQUM5RCxzQkFBb0IscUNBQXFDLENBQUM7QUFBbEQsOEJBQWtEO0FBQzFELDJCQUtPLDhCQUE4QixDQUFDO0FBSnBDLHVFQUF1QjtBQUN2QiwyRkFBaUM7QUFDakMsaUVBQW9CO0FBQ3BCLDZCQUNvQztBQUN0QyxnQ0FBZ0MsMkJBQTJCLENBQUM7QUFBcEQsZ0VBQW9EO0FBQzVELHNCQUFrRCwyQ0FBMkMsQ0FBQztBQUF0RixvREFBZ0I7QUFBRSxzREFBb0U7QUFFOUY7Ozs7R0FJRztBQUNVLHlCQUFpQixHQUEyQyxpQkFBVSxDQUFDO0lBQ2xGLGdDQUF5QjtJQUN6QixJQUFJLGFBQVEsQ0FBQywyQkFBb0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDO0NBQzVFLENBQUMsQ0FBQztBQUVIO0lBQ0VBLGlFQUFpRUE7SUFDakVBLDBDQUEwQ0E7SUFDMUNBLE1BQU1BLENBQUNBLElBQUlBLHVCQUFnQkEsQ0FBQ0EsaUJBQUdBLEVBQUVBLENBQUNBLGNBQU9BLENBQUNBLENBQUNBO0FBQzdDQSxDQUFDQTtBQUVEO0lBQ0VDLE1BQU1BLENBQUNBLGlCQUFHQSxDQUFDQSxVQUFVQSxFQUFFQSxDQUFDQTtBQUMxQkEsQ0FBQ0E7QUFFRDs7OztHQUlHO0FBQ1Usb0NBQTRCLEdBQTJDLGlCQUFVLENBQUM7SUFDN0YsbUNBQTRCO0lBQzVCLHVCQUFjO0lBQ2QsSUFBSSxhQUFRLENBQUMscUJBQWMsRUFBRSxFQUFDLFFBQVEsRUFBRSxxQkFBWSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUNuRSxJQUFJLGFBQVEsQ0FBQywwQkFBbUIsRUFBRSxFQUFDLFFBQVEsRUFBRSwwQkFBaUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDN0UsSUFBSSxhQUFRLENBQUMsdUJBQWdCLEVBQUUsRUFBQyxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQ3pFLElBQUksYUFBUSxDQUFDLHFCQUFRLEVBQUUsRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUN6RCxJQUFJLGFBQVEsQ0FBQyxxQ0FBcUIsRUFBRSxFQUFDLFFBQVEsRUFBRSw0QkFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUM3RSxJQUFJLGFBQVEsQ0FBQyxxQ0FBcUIsRUFBRSxFQUFDLFFBQVEsRUFBRSw0QkFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUM3RSxJQUFJLGFBQVEsQ0FBQyxxQ0FBcUIsRUFBRSxFQUFDLFFBQVEsRUFBRSxzQ0FBb0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDbEYsSUFBSSxhQUFRLENBQUMsOEJBQWUsRUFBRSxFQUFDLFFBQVEsRUFBRSwrQkFBZ0IsRUFBQyxDQUFDO0lBQzNELElBQUksYUFBUSxDQUFDLG1CQUFZLEVBQUUsRUFBQyxXQUFXLEVBQUUsOEJBQWUsRUFBQyxDQUFDO0lBQzFELElBQUksYUFBUSxDQUFDLHFDQUFnQixFQUFFLEVBQUMsV0FBVyxFQUFFLHdDQUFtQixFQUFDLENBQUM7SUFDbEUsd0NBQW1CO0lBQ25CLHlCQUFXO0lBQ1gsZ0NBQWM7SUFDZCxvQ0FBZ0I7SUFDaEIsNEJBQVk7SUFDWixvQ0FBdUI7Q0FDeEIsQ0FBQyxDQUFDO0FBRUg7SUFDRUMsbUNBQWlCQSxDQUFDQSxXQUFXQSxFQUFFQSxDQUFDQTtJQUNoQ0Esa0JBQU9BLEVBQUVBLENBQUNBO0lBQ1ZBLG1DQUFxQkEsQ0FBQ0EsSUFBSUEsRUFBRUEsQ0FBQ0E7QUFDL0JBLENBQUNBO0FBSmUsc0JBQWMsaUJBSTdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NPTlNUX0VYUFIsIElTX0RBUlR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge3Byb3ZpZGUsIFByb3ZpZGVyLCBJbmplY3RvciwgT3BhcXVlVG9rZW59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcblxuaW1wb3J0IHtcbiAgUExBVEZPUk1fSU5JVElBTElaRVIsXG4gIFBMQVRGT1JNX0RJUkVDVElWRVMsXG4gIFBMQVRGT1JNX1BJUEVTLFxuICBDb21wb25lbnRSZWYsXG4gIHBsYXRmb3JtLFxuICBFeGNlcHRpb25IYW5kbGVyLFxuICBSZWZsZWN0b3IsXG4gIFJvb3RSZW5kZXJlcixcbiAgcmVmbGVjdG9yLFxuICBBUFBMSUNBVElPTl9DT01NT05fUFJPVklERVJTLFxuICBQTEFURk9STV9DT01NT05fUFJPVklERVJTXG59IGZyb20gXCJhbmd1bGFyMi9jb3JlXCI7XG5pbXBvcnQge0NPTU1PTl9ESVJFQ1RJVkVTLCBDT01NT05fUElQRVMsIEZPUk1fUFJPVklERVJTfSBmcm9tIFwiYW5ndWxhcjIvY29tbW9uXCI7XG5pbXBvcnQge1Rlc3RhYmlsaXR5fSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS90ZXN0YWJpbGl0eS90ZXN0YWJpbGl0eSc7XG5pbXBvcnQge0RPTX0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fYWRhcHRlcic7XG5pbXBvcnQge0RvbUV2ZW50c1BsdWdpbn0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9ldmVudHMvZG9tX2V2ZW50cyc7XG5pbXBvcnQge0tleUV2ZW50c1BsdWdpbn0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9ldmVudHMva2V5X2V2ZW50cyc7XG5pbXBvcnQge0hhbW1lckdlc3R1cmVzUGx1Z2lufSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2V2ZW50cy9oYW1tZXJfZ2VzdHVyZXMnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2RvbS9kb21fdG9rZW5zJztcbmltcG9ydCB7RG9tUm9vdFJlbmRlcmVyLCBEb21Sb290UmVuZGVyZXJffSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9yZW5kZXJlcic7XG5pbXBvcnQge0RvbVNoYXJlZFN0eWxlc0hvc3R9IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vc2hhcmVkX3N0eWxlc19ob3N0JztcbmltcG9ydCB7U2hhcmVkU3R5bGVzSG9zdH0gZnJvbSBcImFuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vc2hhcmVkX3N0eWxlc19ob3N0XCI7XG5pbXBvcnQge0Jyb3dzZXJEZXRhaWxzfSBmcm9tIFwiYW5ndWxhcjIvc3JjL2FuaW1hdGUvYnJvd3Nlcl9kZXRhaWxzXCI7XG5pbXBvcnQge0FuaW1hdGlvbkJ1aWxkZXJ9IGZyb20gXCJhbmd1bGFyMi9zcmMvYW5pbWF0ZS9hbmltYXRpb25fYnVpbGRlclwiO1xuaW1wb3J0IHtCcm93c2VyRG9tQWRhcHRlcn0gZnJvbSAnLi9icm93c2VyL2Jyb3dzZXJfYWRhcHRlcic7XG5pbXBvcnQge0Jyb3dzZXJHZXRUZXN0YWJpbGl0eX0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2Jyb3dzZXIvdGVzdGFiaWxpdHknO1xuaW1wb3J0IHt3dGZJbml0fSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9wcm9maWxlL3d0Zl9pbml0JztcbmltcG9ydCB7RXZlbnRNYW5hZ2VyLCBFVkVOVF9NQU5BR0VSX1BMVUdJTlN9IGZyb20gXCJhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2V2ZW50cy9ldmVudF9tYW5hZ2VyXCI7XG5pbXBvcnQge0VMRU1FTlRfUFJPQkVfUFJPVklERVJTfSBmcm9tICdhbmd1bGFyMi9wbGF0Zm9ybS9jb21tb25fZG9tJztcbmV4cG9ydCB7RE9DVU1FTlR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9kb20vZG9tX3Rva2Vucyc7XG5leHBvcnQge1RpdGxlfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci90aXRsZSc7XG5leHBvcnQge1xuICBFTEVNRU5UX1BST0JFX1BST1ZJREVSUyxcbiAgRUxFTUVOVF9QUk9CRV9QUk9WSURFUlNfUFJPRF9NT0RFLFxuICBpbnNwZWN0TmF0aXZlRWxlbWVudCxcbiAgQnlcbn0gZnJvbSAnYW5ndWxhcjIvcGxhdGZvcm0vY29tbW9uX2RvbSc7XG5leHBvcnQge0Jyb3dzZXJEb21BZGFwdGVyfSBmcm9tICcuL2Jyb3dzZXIvYnJvd3Nlcl9hZGFwdGVyJztcbmV4cG9ydCB7ZW5hYmxlRGVidWdUb29scywgZGlzYWJsZURlYnVnVG9vbHN9IGZyb20gJ2FuZ3VsYXIyL3NyYy9wbGF0Zm9ybS9icm93c2VyL3Rvb2xzL3Rvb2xzJztcblxuLyoqXG4gKiBBIHNldCBvZiBwcm92aWRlcnMgdG8gaW5pdGlhbGl6ZSB0aGUgQW5ndWxhciBwbGF0Zm9ybSBpbiBhIHdlYiBicm93c2VyLlxuICpcbiAqIFVzZWQgYXV0b21hdGljYWxseSBieSBgYm9vdHN0cmFwYCwgb3IgY2FuIGJlIHBhc3NlZCB0byB7QGxpbmsgcGxhdGZvcm19LlxuICovXG5leHBvcnQgY29uc3QgQlJPV1NFUl9QUk9WSURFUlM6IEFycmF5PGFueSAvKlR5cGUgfCBQcm92aWRlciB8IGFueVtdKi8+ID0gQ09OU1RfRVhQUihbXG4gIFBMQVRGT1JNX0NPTU1PTl9QUk9WSURFUlMsXG4gIG5ldyBQcm92aWRlcihQTEFURk9STV9JTklUSUFMSVpFUiwge3VzZVZhbHVlOiBpbml0RG9tQWRhcHRlciwgbXVsdGk6IHRydWV9KSxcbl0pO1xuXG5mdW5jdGlvbiBfZXhjZXB0aW9uSGFuZGxlcigpOiBFeGNlcHRpb25IYW5kbGVyIHtcbiAgLy8gIUlTX0RBUlQgaXMgcmVxdWlyZWQgYmVjYXVzZSB3ZSBtdXN0IHJldGhyb3cgZXhjZXB0aW9ucyBpbiBKUyxcbiAgLy8gYnV0IG11c3Qgbm90IHJldGhyb3cgZXhjZXB0aW9ucyBpbiBEYXJ0XG4gIHJldHVybiBuZXcgRXhjZXB0aW9uSGFuZGxlcihET00sICFJU19EQVJUKTtcbn1cblxuZnVuY3Rpb24gX2RvY3VtZW50KCk6IGFueSB7XG4gIHJldHVybiBET00uZGVmYXVsdERvYygpO1xufVxuXG4vKipcbiAqIEEgc2V0IG9mIHByb3ZpZGVycyB0byBpbml0aWFsaXplIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24gaW4gYSB3ZWIgYnJvd3Nlci5cbiAqXG4gKiBVc2VkIGF1dG9tYXRpY2FsbHkgYnkgYGJvb3RzdHJhcGAsIG9yIGNhbiBiZSBwYXNzZWQgdG8ge0BsaW5rIFBsYXRmb3JtUmVmLmFwcGxpY2F0aW9ufS5cbiAqL1xuZXhwb3J0IGNvbnN0IEJST1dTRVJfQVBQX0NPTU1PTl9QUk9WSURFUlM6IEFycmF5PGFueSAvKlR5cGUgfCBQcm92aWRlciB8IGFueVtdKi8+ID0gQ09OU1RfRVhQUihbXG4gIEFQUExJQ0FUSU9OX0NPTU1PTl9QUk9WSURFUlMsXG4gIEZPUk1fUFJPVklERVJTLFxuICBuZXcgUHJvdmlkZXIoUExBVEZPUk1fUElQRVMsIHt1c2VWYWx1ZTogQ09NTU9OX1BJUEVTLCBtdWx0aTogdHJ1ZX0pLFxuICBuZXcgUHJvdmlkZXIoUExBVEZPUk1fRElSRUNUSVZFUywge3VzZVZhbHVlOiBDT01NT05fRElSRUNUSVZFUywgbXVsdGk6IHRydWV9KSxcbiAgbmV3IFByb3ZpZGVyKEV4Y2VwdGlvbkhhbmRsZXIsIHt1c2VGYWN0b3J5OiBfZXhjZXB0aW9uSGFuZGxlciwgZGVwczogW119KSxcbiAgbmV3IFByb3ZpZGVyKERPQ1VNRU5ULCB7dXNlRmFjdG9yeTogX2RvY3VtZW50LCBkZXBzOiBbXX0pLFxuICBuZXcgUHJvdmlkZXIoRVZFTlRfTUFOQUdFUl9QTFVHSU5TLCB7dXNlQ2xhc3M6IERvbUV2ZW50c1BsdWdpbiwgbXVsdGk6IHRydWV9KSxcbiAgbmV3IFByb3ZpZGVyKEVWRU5UX01BTkFHRVJfUExVR0lOUywge3VzZUNsYXNzOiBLZXlFdmVudHNQbHVnaW4sIG11bHRpOiB0cnVlfSksXG4gIG5ldyBQcm92aWRlcihFVkVOVF9NQU5BR0VSX1BMVUdJTlMsIHt1c2VDbGFzczogSGFtbWVyR2VzdHVyZXNQbHVnaW4sIG11bHRpOiB0cnVlfSksXG4gIG5ldyBQcm92aWRlcihEb21Sb290UmVuZGVyZXIsIHt1c2VDbGFzczogRG9tUm9vdFJlbmRlcmVyX30pLFxuICBuZXcgUHJvdmlkZXIoUm9vdFJlbmRlcmVyLCB7dXNlRXhpc3Rpbmc6IERvbVJvb3RSZW5kZXJlcn0pLFxuICBuZXcgUHJvdmlkZXIoU2hhcmVkU3R5bGVzSG9zdCwge3VzZUV4aXN0aW5nOiBEb21TaGFyZWRTdHlsZXNIb3N0fSksXG4gIERvbVNoYXJlZFN0eWxlc0hvc3QsXG4gIFRlc3RhYmlsaXR5LFxuICBCcm93c2VyRGV0YWlscyxcbiAgQW5pbWF0aW9uQnVpbGRlcixcbiAgRXZlbnRNYW5hZ2VyLFxuICBFTEVNRU5UX1BST0JFX1BST1ZJREVSU1xuXSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0RG9tQWRhcHRlcigpIHtcbiAgQnJvd3NlckRvbUFkYXB0ZXIubWFrZUN1cnJlbnQoKTtcbiAgd3RmSW5pdCgpO1xuICBCcm93c2VyR2V0VGVzdGFiaWxpdHkuaW5pdCgpO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar template_ast_1 = require('./template_ast');\r\nvar interfaces_1 = require('angular2/src/core/linker/interfaces');\r\nfunction createChangeDetectorDefinitions(componentType, componentStrategy, genConfig, parsedTemplate) {\r\n var pvVisitors = [];\r\n var visitor = new ProtoViewVisitor(null, pvVisitors, componentStrategy);\r\n template_ast_1.templateVisitAll(visitor, parsedTemplate);\r\n return createChangeDefinitions(pvVisitors, componentType, genConfig);\r\n}\r\nexports.createChangeDetectorDefinitions = createChangeDetectorDefinitions;\r\nvar ProtoViewVisitor = (function () {\r\n function ProtoViewVisitor(parent, allVisitors, strategy) {\r\n this.parent = parent;\r\n this.allVisitors = allVisitors;\r\n this.strategy = strategy;\r\n this.nodeCount = 0;\r\n this.boundElementCount = 0;\r\n this.variableNames = [];\r\n this.bindingRecords = [];\r\n this.eventRecords = [];\r\n this.directiveRecords = [];\r\n this.viewIndex = allVisitors.length;\r\n allVisitors.push(this);\r\n }\r\n ProtoViewVisitor.prototype.visitEmbeddedTemplate = function (ast, context) {\r\n this.nodeCount++;\r\n this.boundElementCount++;\r\n template_ast_1.templateVisitAll(this, ast.outputs);\r\n for (var i = 0; i < ast.directives.length; i++) {\r\n ast.directives[i].visit(this, i);\r\n }\r\n var childVisitor = new ProtoViewVisitor(this, this.allVisitors, change_detection_1.ChangeDetectionStrategy.Default);\r\n // Attention: variables present on an embedded template count towards\r\n // the embedded template and not the template anchor!\r\n template_ast_1.templateVisitAll(childVisitor, ast.vars);\r\n template_ast_1.templateVisitAll(childVisitor, ast.children);\r\n return null;\r\n };\r\n ProtoViewVisitor.prototype.visitElement = function (ast, context) {\r\n this.nodeCount++;\r\n if (ast.isBound()) {\r\n this.boundElementCount++;\r\n }\r\n template_ast_1.templateVisitAll(this, ast.inputs, null);\r\n template_ast_1.templateVisitAll(this, ast.outputs);\r\n template_ast_1.templateVisitAll(this, ast.exportAsVars);\r\n for (var i = 0; i < ast.directives.length; i++) {\r\n ast.directives[i].visit(this, i);\r\n }\r\n template_ast_1.templateVisitAll(this, ast.children);\r\n return null;\r\n };\r\n ProtoViewVisitor.prototype.visitNgContent = function (ast, context) { return null; };\r\n ProtoViewVisitor.prototype.visitVariable = function (ast, context) {\r\n this.variableNames.push(ast.name);\r\n return null;\r\n };\r\n ProtoViewVisitor.prototype.visitEvent = function (ast, directiveRecord) {\r\n var bindingRecord = lang_1.isPresent(directiveRecord) ?\r\n change_detection_1.BindingRecord.createForHostEvent(ast.handler, ast.fullName, directiveRecord) :\r\n change_detection_1.BindingRecord.createForEvent(ast.handler, ast.fullName, this.boundElementCount - 1);\r\n this.eventRecords.push(bindingRecord);\r\n return null;\r\n };\r\n ProtoViewVisitor.prototype.visitElementProperty = function (ast, directiveRecord) {\r\n var boundElementIndex = this.boundElementCount - 1;\r\n var dirIndex = lang_1.isPresent(directiveRecord) ? directiveRecord.directiveIndex : null;\r\n var bindingRecord;\r\n if (ast.type === template_ast_1.PropertyBindingType.Property) {\r\n bindingRecord =\r\n lang_1.isPresent(dirIndex) ?\r\n change_detection_1.BindingRecord.createForHostProperty(dirIndex, ast.value, ast.name) :\r\n change_detection_1.BindingRecord.createForElementProperty(ast.value, boundElementIndex, ast.name);\r\n }\r\n else if (ast.type === template_ast_1.PropertyBindingType.Attribute) {\r\n bindingRecord =\r\n lang_1.isPresent(dirIndex) ?\r\n change_detection_1.BindingRecord.createForHostAttribute(dirIndex, ast.value, ast.name) :\r\n change_detection_1.BindingRecord.createForElementAttribute(ast.value, boundElementIndex, ast.name);\r\n }\r\n else if (ast.type === template_ast_1.PropertyBindingType.Class) {\r\n bindingRecord =\r\n lang_1.isPresent(dirIndex) ?\r\n change_detection_1.BindingRecord.createForHostClass(dirIndex, ast.value, ast.name) :\r\n change_detection_1.BindingRecord.createForElementClass(ast.value, boundElementIndex, ast.name);\r\n }\r\n else if (ast.type === template_ast_1.PropertyBindingType.Style) {\r\n bindingRecord =\r\n lang_1.isPresent(dirIndex) ?\r\n change_detection_1.BindingRecord.createForHostStyle(dirIndex, ast.value, ast.name, ast.unit) :\r\n change_detection_1.BindingRecord.createForElementStyle(ast.value, boundElementIndex, ast.name, ast.unit);\r\n }\r\n this.bindingRecords.push(bindingRecord);\r\n return null;\r\n };\r\n ProtoViewVisitor.prototype.visitAttr = function (ast, context) { return null; };\r\n ProtoViewVisitor.prototype.visitBoundText = function (ast, context) {\r\n var nodeIndex = this.nodeCount++;\r\n this.bindingRecords.push(change_detection_1.BindingRecord.createForTextNode(ast.value, nodeIndex));\r\n return null;\r\n };\r\n ProtoViewVisitor.prototype.visitText = function (ast, context) {\r\n this.nodeCount++;\r\n return null;\r\n };\r\n ProtoViewVisitor.prototype.visitDirective = function (ast, directiveIndexAsNumber) {\r\n var directiveIndex = new change_detection_1.DirectiveIndex(this.boundElementCount - 1, directiveIndexAsNumber);\r\n var directiveMetadata = ast.directive;\r\n var outputsArray = [];\r\n collection_1.StringMapWrapper.forEach(ast.directive.outputs, function (eventName, dirProperty) { return outputsArray.push([dirProperty, eventName]); });\r\n var directiveRecord = new change_detection_1.DirectiveRecord({\r\n directiveIndex: directiveIndex,\r\n callAfterContentInit: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.AfterContentInit) !== -1,\r\n callAfterContentChecked: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.AfterContentChecked) !== -1,\r\n callAfterViewInit: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.AfterViewInit) !== -1,\r\n callAfterViewChecked: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.AfterViewChecked) !== -1,\r\n callOnChanges: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.OnChanges) !== -1,\r\n callDoCheck: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.DoCheck) !== -1,\r\n callOnInit: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.OnInit) !== -1,\r\n callOnDestroy: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.OnDestroy) !== -1,\r\n changeDetection: directiveMetadata.changeDetection,\r\n outputs: outputsArray\r\n });\r\n this.directiveRecords.push(directiveRecord);\r\n template_ast_1.templateVisitAll(this, ast.inputs, directiveRecord);\r\n var bindingRecords = this.bindingRecords;\r\n if (directiveRecord.callOnChanges) {\r\n bindingRecords.push(change_detection_1.BindingRecord.createDirectiveOnChanges(directiveRecord));\r\n }\r\n if (directiveRecord.callOnInit) {\r\n bindingRecords.push(change_detection_1.BindingRecord.createDirectiveOnInit(directiveRecord));\r\n }\r\n if (directiveRecord.callDoCheck) {\r\n bindingRecords.push(change_detection_1.BindingRecord.createDirectiveDoCheck(directiveRecord));\r\n }\r\n template_ast_1.templateVisitAll(this, ast.hostProperties, directiveRecord);\r\n template_ast_1.templateVisitAll(this, ast.hostEvents, directiveRecord);\r\n template_ast_1.templateVisitAll(this, ast.exportAsVars);\r\n return null;\r\n };\r\n ProtoViewVisitor.prototype.visitDirectiveProperty = function (ast, directiveRecord) {\r\n // TODO: these setters should eventually be created by change detection, to make\r\n // it monomorphic!\r\n var setter = reflection_1.reflector.setter(ast.directiveName);\r\n this.bindingRecords.push(change_detection_1.BindingRecord.createForDirective(ast.value, ast.directiveName, setter, directiveRecord));\r\n return null;\r\n };\r\n return ProtoViewVisitor;\r\n})();\r\nfunction createChangeDefinitions(pvVisitors, componentType, genConfig) {\r\n var pvVariableNames = _collectNestedProtoViewsVariableNames(pvVisitors);\r\n return pvVisitors.map(function (pvVisitor) {\r\n var id = componentType.name + \"_\" + pvVisitor.viewIndex;\r\n return new change_detection_1.ChangeDetectorDefinition(id, pvVisitor.strategy, pvVariableNames[pvVisitor.viewIndex], pvVisitor.bindingRecords, pvVisitor.eventRecords, pvVisitor.directiveRecords, genConfig);\r\n });\r\n}\r\nfunction _collectNestedProtoViewsVariableNames(pvVisitors) {\r\n var nestedPvVariableNames = collection_1.ListWrapper.createFixedSize(pvVisitors.length);\r\n pvVisitors.forEach(function (pv) {\r\n var parentVariableNames = lang_1.isPresent(pv.parent) ? nestedPvVariableNames[pv.parent.viewIndex] : [];\r\n nestedPvVariableNames[pv.viewIndex] = parentVariableNames.concat(pv.variableNames);\r\n });\r\n return nestedPvVariableNames;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RlZmluaXRpb25fZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21waWxlci9jaGFuZ2VfZGVmaW5pdGlvbl9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbImNyZWF0ZUNoYW5nZURldGVjdG9yRGVmaW5pdGlvbnMiLCJQcm90b1ZpZXdWaXNpdG9yIiwiUHJvdG9WaWV3VmlzaXRvci5jb25zdHJ1Y3RvciIsIlByb3RvVmlld1Zpc2l0b3IudmlzaXRFbWJlZGRlZFRlbXBsYXRlIiwiUHJvdG9WaWV3VmlzaXRvci52aXNpdEVsZW1lbnQiLCJQcm90b1ZpZXdWaXNpdG9yLnZpc2l0TmdDb250ZW50IiwiUHJvdG9WaWV3VmlzaXRvci52aXNpdFZhcmlhYmxlIiwiUHJvdG9WaWV3VmlzaXRvci52aXNpdEV2ZW50IiwiUHJvdG9WaWV3VmlzaXRvci52aXNpdEVsZW1lbnRQcm9wZXJ0eSIsIlByb3RvVmlld1Zpc2l0b3IudmlzaXRBdHRyIiwiUHJvdG9WaWV3VmlzaXRvci52aXNpdEJvdW5kVGV4dCIsIlByb3RvVmlld1Zpc2l0b3IudmlzaXRUZXh0IiwiUHJvdG9WaWV3VmlzaXRvci52aXNpdERpcmVjdGl2ZSIsIlByb3RvVmlld1Zpc2l0b3IudmlzaXREaXJlY3RpdmVQcm9wZXJ0eSIsImNyZWF0ZUNoYW5nZURlZmluaXRpb25zIiwiX2NvbGxlY3ROZXN0ZWRQcm90b1ZpZXdzVmFyaWFibGVOYW1lcyJdLCJtYXBwaW5ncyI6IkFBQUEsMkJBQTRDLGdDQUFnQyxDQUFDLENBQUE7QUFDN0UscUJBQWlDLDBCQUEwQixDQUFDLENBQUE7QUFDNUQsMkJBQXdCLHlDQUF5QyxDQUFDLENBQUE7QUFFbEUsaUNBUU8scURBQXFELENBQUMsQ0FBQTtBQUc3RCw2QkFnQk8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QiwyQkFBNkIscUNBQXFDLENBQUMsQ0FBQTtBQUVuRSx5Q0FDSSxhQUFrQyxFQUFFLGlCQUEwQyxFQUM5RSxTQUFr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QUFJQSwyQ0FBd0JBLENBQy9CQSxFQUFFQSxFQUFFQSxTQUFTQSxDQUFDQSxRQUFRQSxFQUFFQSxlQUFlQSxDQUFDQSxTQUFTQSxDQUFDQSxTQUFTQSxDQUFDQSxFQUFFQSxTQUFTQSxDQUFDQSxjQUFjQSxFQUN0RkEsU0FBU0EsQ0FBQ0EsWUFBWUEsRUFBRUEsU0FBU0EsQ0FBQ0EsZ0JBQWdCQSxFQUFFQSxTQUFTQSxDQUFDQSxDQUFDQTtJQUVyRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7QUFDTEEsQ0FBQ0E7QUFFRCwrQ0FBK0MsVUFBOEI7SUFDM0VDLElBQUlBLHFCQUFxQkEsR0FBZUEsd0JBQVdBLENBQUNBLGVBQWVBLENBQUNBLFVBQVVBLENBQUNBLE1BQU1BLENBQUNBLENBQUNBO0lBQ3ZGQSxVQUFVQSxDQUFDQSxPQUFPQSxDQUFDQSxVQUFDQSxFQUFFQTtRQUNwQkEsSUFBSUEsbUJBQW1CQSxHQUNuQkEsZ0JBQVNBLENBQUNBLEVBQUVBLENBQUNBLE1BQU1BLENBQUNBLEdBQUdBLHFCQUFxQkEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsR0FBR0EsRUFBRUEsQ0FBQ0E7UUFDM0VBLHFCQUFxQkEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsR0FBR0EsbUJBQW1CQSxDQUFDQSxNQUFNQSxDQUFDQSxFQUFFQSxDQUFDQSxhQUFhQSxDQUFDQSxDQUFDQTtJQUNyRkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDSEEsTUFBTUEsQ0FBQ0EscUJBQXFCQSxDQUFDQTtBQUMvQkEsQ0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpc3RXcmFwcGVyLCBTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtpc1ByZXNlbnQsIGlzQmxhbmt9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge3JlZmxlY3Rvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVmbGVjdGlvbi9yZWZsZWN0aW9uJztcblxuaW1wb3J0IHtcbiAgRGlyZWN0aXZlSW5kZXgsXG4gIEJpbmRpbmdSZWNvcmQsXG4gIERpcmVjdGl2ZVJlY29yZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yRGVmaW5pdGlvbixcbiAgQ2hhbmdlRGV0ZWN0b3JHZW5Db25maWcsXG4gIEFTVFdpdGhTb3VyY2Vcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uJztcblxuaW1wb3J0IHtDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsIENvbXBpbGVUeXBlTWV0YWRhdGF9IGZyb20gJy4vZGlyZWN0aXZlX21ldGFkYXRhJztcbmltcG9ydCB7XG4gIFRlbXBsYXRlQXN0LFxuICBFbGVtZW50QXN0LFxuICBCb3VuZFRleHRBc3QsXG4gIFByb3BlcnR5QmluZGluZ1R5cGUsXG4gIERpcmVjdGl2ZUFzdCxcbiAgVGVtcGxhdGVBc3RWaXNpdG9yLFxuICB0ZW1wbGF0ZVZpc2l0QWxsLFxuICBOZ0NvbnRlbnRBc3QsXG4gIEVtYmVkZGVkVGVtcGxhdGVBc3QsXG4gIFZhcmlhYmxlQXN0LFxuICBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCxcbiAgQm91bmRFdmVudEFzdCxcbiAgQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdCxcbiAgQXR0ckFzdCxcbiAgVGV4dEFzdFxufSBmcm9tICcuL3RlbXBsYXRlX2FzdCc7XG5pbXBvcnQge0xpZmVjeWNsZUhvb2tzfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGFuZ2VEZXRlY3RvckRlZmluaXRpb25zKFxuICAgIGNvbXBvbmVudFR5cGU6IENvbXBpbGVUeXBlTWV0YWRhdGEsIGNvbXBvbmVudFN0cmF0ZWd5OiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBnZW5Db25maWc6IENoYW5nZURldGVjdG9yR2VuQ29uZmlnLCBwYXJzZWRUZW1wbGF0ZTogVGVtcGxhdGVBc3RbXSk6IENoYW5nZURldGVjdG9yRGVmaW5pdGlvbltdIHtcbiAgdmFyIHB2VmlzaXRvcnMgPSBbXTtcbiAgdmFyIHZpc2l0b3IgPSBuZXcgUHJvdG9WaWV3VmlzaXRvcihudWxsLCBwdlZpc2l0b3JzLCBjb21wb25lbnRTdHJhdGVneSk7XG4gIHRlbXBsYXRlVmlzaXRBbGwodmlzaXRvciwgcGFyc2VkVGVtcGxhdGUpO1xuICByZXR1cm4gY3JlYXRlQ2hhbmdlRGVmaW5pdGlvbnMocHZWaXNpdG9ycywgY29tcG9uZW50VHlwZSwgZ2VuQ29uZmlnKTtcbn1cblxuY2xhc3MgUHJvdG9WaWV3VmlzaXRvciBpbXBsZW1lbnRzIFRlbXBsYXRlQXN0VmlzaXRvciB7XG4gIHZpZXdJbmRleDogbnVtYmVyO1xuICBub2RlQ291bnQ6IG51bWJlciA9IDA7XG4gIGJvdW5kRWxlbWVudENvdW50OiBudW1iZXIgPSAwO1xuICB2YXJpYWJsZU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICBiaW5kaW5nUmVjb3JkczogQmluZGluZ1JlY29yZFtdID0gW107XG4gIGV2ZW50UmVjb3JkczogQmluZGluZ1JlY29yZFtdID0gW107XG4gIGRpcmVjdGl2ZVJlY29yZHM6IERpcmVjdGl2ZVJlY29yZFtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBhcmVudDogUHJvdG9WaWV3VmlzaXRvciwgcHVibGljIGFsbFZpc2l0b3JzOiBQcm90b1ZpZXdWaXNpdG9yW10sXG4gICAgICAgICAgICAgIHB1YmxpYyBzdHJhdGVneTogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kpIHtcbiAgICB0aGlzLnZpZXdJbmRleCA9IGFsbFZpc2l0b3JzLmxlbmd0aDtcbiAgICBhbGxWaXNpdG9ycy5wdXNoKHRoaXMpO1xuICB9XG5cbiAgdmlzaXRFbWJlZGRlZFRlbXBsYXRlKGFzdDogRW1iZWRkZWRUZW1wbGF0ZUFzdCwgY29udGV4dDogYW55KTogYW55IHtcbiAgICB0aGlzLm5vZGVDb3VudCsrO1xuICAgIHRoaXMuYm91bmRFbGVtZW50Q291bnQrKztcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKHRoaXMsIGFzdC5vdXRwdXRzKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFzdC5kaXJlY3RpdmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhc3QuZGlyZWN0aXZlc1tpXS52aXNpdCh0aGlzLCBpKTtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRWaXNpdG9yID1cbiAgICAgICAgbmV3IFByb3RvVmlld1Zpc2l0b3IodGhpcywgdGhpcy5hbGxWaXNpdG9ycywgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCk7XG4gICAgLy8gQXR0ZW50aW9uOiB2YXJpYWJsZXMgcHJlc2VudCBvbiBhbiBlbWJlZGRlZCB0ZW1wbGF0ZSBjb3VudCB0b3dhcmRzXG4gICAgLy8gdGhlIGVtYmVkZGVkIHRlbXBsYXRlIGFuZCBub3QgdGhlIHRlbXBsYXRlIGFuY2hvciFcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKGNoaWxkVmlzaXRvciwgYXN0LnZhcnMpO1xuICAgIHRlbXBsYXRlVmlzaXRBbGwoY2hpbGRWaXNpdG9yLCBhc3QuY2hpbGRyZW4pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmlzaXRFbGVtZW50KGFzdDogRWxlbWVudEFzdCwgY29udGV4dDogYW55KTogYW55IHtcbiAgICB0aGlzLm5vZGVDb3VudCsrO1xuICAgIGlmIChhc3QuaXNCb3VuZCgpKSB7XG4gICAgICB0aGlzLmJvdW5kRWxlbWVudENvdW50Kys7XG4gICAgfVxuICAgIHRlbXBsYXRlVmlzaXRBbGwodGhpcywgYXN0LmlucHV0cywgbnVsbCk7XG4gICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3Qub3V0cHV0cyk7XG4gICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3QuZXhwb3J0QXNWYXJzKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFzdC5kaXJlY3RpdmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhc3QuZGlyZWN0aXZlc1tpXS52aXNpdCh0aGlzLCBpKTtcbiAgICB9XG4gICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3QuY2hpbGRyZW4pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmlzaXROZ0NvbnRlbnQoYXN0OiBOZ0NvbnRlbnRBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG5cbiAgdmlzaXRWYXJpYWJsZShhc3Q6IFZhcmlhYmxlQXN0LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHRoaXMudmFyaWFibGVOYW1lcy5wdXNoKGFzdC5uYW1lKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZpc2l0RXZlbnQoYXN0OiBCb3VuZEV2ZW50QXN0LCBkaXJlY3RpdmVSZWNvcmQ6IERpcmVjdGl2ZVJlY29yZCk6IGFueSB7XG4gICAgdmFyIGJpbmRpbmdSZWNvcmQgPVxuICAgICAgICBpc1ByZXNlbnQoZGlyZWN0aXZlUmVjb3JkKSA/XG4gICAgICAgICAgICBCaW5kaW5nUmVjb3JkLmNyZWF0ZUZvckhvc3RFdmVudChhc3QuaGFuZGxlciwgYXN0LmZ1bGxOYW1lLCBkaXJlY3RpdmVSZWNvcmQpIDpcbiAgICAgICAgICAgIEJpbmRpbmdSZWNvcmQuY3JlYXRlRm9yRXZlbnQoYXN0LmhhbmRsZXIsIGFzdC5mdWxsTmFtZSwgdGhpcy5ib3VuZEVsZW1lbnRDb3VudCAtIDEpO1xuICAgIHRoaXMuZXZlbnRSZWNvcmRzLnB1c2goYmluZGluZ1JlY29yZCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2aXNpdEVsZW1lbnRQcm9wZXJ0eShhc3Q6IEJvdW5kRWxlbWVudFByb3BlcnR5QXN0LCBkaXJlY3RpdmVSZWNvcmQ6IERpcmVjdGl2ZVJlY29yZCk6IGFueSB7XG4gICAgdmFyIGJvdW5kRWxlbWVudEluZGV4ID0gdGhpcy5ib3VuZEVsZW1lbnRDb3VudCAtIDE7XG4gICAgdmFyIGRpckluZGV4ID0gaXNQcmVzZW50KGRpcmVjdGl2ZVJlY29yZCkgPyBkaXJlY3RpdmVSZWNvcmQuZGlyZWN0aXZlSW5kZXggOiBudWxsO1xuICAgIHZhciBiaW5kaW5nUmVjb3JkO1xuICAgIGlmIChhc3QudHlwZSA9PT0gUHJvcGVydHlCaW5kaW5nVHlwZS5Qcm9wZXJ0eSkge1xuICAgICAgYmluZGluZ1JlY29yZCA9XG4gICAgICAgICAgaXNQcmVzZW50KGRpckluZGV4KSA/XG4gICAgICAgICAgICAgIEJpbmRpbmdSZWNvcmQuY3JlYXRlRm9ySG9zdFByb3BlcnR5KGRpckluZGV4LCBhc3QudmFsdWUsIGFzdC5uYW1lKSA6XG4gICAgICAgICAgICAgIEJpbmRpbmdSZWNvcmQuY3JlYXRlRm9yRWxlbWVudFByb3BlcnR5KGFzdC52YWx1ZSwgYm91bmRFbGVtZW50SW5kZXgsIGFzdC5uYW1lKTtcbiAgICB9IGVsc2UgaWYgKGFzdC50eXBlID09PSBQcm9wZXJ0eUJpbmRpbmdUeXBlLkF0dHJpYnV0ZSkge1xuICAgICAgYmluZGluZ1JlY29yZCA9XG4gICAgICAgICAgaXNQcmVzZW50KGRpckluZGV4KSA/XG4gICAgICAgICAgICAgIEJpbmRpbmdSZWNvcmQuY3JlYXRlRm9ySG9zdEF0dHJpYnV0ZShkaXJJbmRleCwgYXN0LnZhbHVlLCBhc3QubmFtZSkgOlxuICAgICAgICAgICAgICBCaW5kaW5nUmVjb3JkLmNyZWF0ZUZvckVsZW1lbnRBdHRyaWJ1dGUoYXN0LnZhbHVlLCBib3VuZEVsZW1lbnRJbmRleCwgYXN0Lm5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYXN0LnR5cGUgPT09IFByb3BlcnR5QmluZGluZ1R5cGUuQ2xhc3MpIHtcbiAgICAgIGJpbmRpbmdSZWNvcmQgPVxuICAgICAgICAgIGlzUHJlc2VudChkaXJJbmRleCkgP1xuICAgICAgICAgICAgICBCaW5kaW5nUmVjb3JkLmNyZWF0ZUZvckhvc3RDbGFzcyhkaXJJbmRleCwgYXN0LnZhbHVlLCBhc3QubmFtZSkgOlxuICAgICAgICAgICAgICBCaW5kaW5nUmVjb3JkLmNyZWF0ZUZvckVsZW1lbnRDbGFzcyhhc3QudmFsdWUsIGJvdW5kRWxlbWVudEluZGV4LCBhc3QubmFtZSk7XG4gICAgfSBlbHNlIGlmIChhc3QudHlwZSA9PT0gUHJvcGVydHlCaW5kaW5nVHlwZS5TdHlsZSkge1xuICAgICAgYmluZGluZ1JlY29yZCA9XG4gICAgICAgICAgaXNQcmVzZW50KGRpckluZGV4KSA/XG4gICAgICAgICAgICAgIEJpbmRpbmdSZWNvcmQuY3JlYXRlRm9ySG9zdFN0eWxlKGRpckluZGV4LCBhc3QudmFsdWUsIGFzdC5uYW1lLCBhc3QudW5pdCkgOlxuICAgICAgICAgICAgICBCaW5kaW5nUmVjb3JkLmNyZWF0ZUZvckVsZW1lbnRTdHlsZShhc3QudmFsdWUsIGJvdW5kRWxlbWVudEluZGV4LCBhc3QubmFtZSwgYXN0LnVuaXQpO1xuICAgIH1cbiAgICB0aGlzLmJpbmRpbmdSZWNvcmRzLnB1c2goYmluZGluZ1JlY29yZCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRBdHRyKGFzdDogQXR0ckFzdCwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cbiAgdmlzaXRCb3VuZFRleHQoYXN0OiBCb3VuZFRleHRBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgdmFyIG5vZGVJbmRleCA9IHRoaXMubm9kZUNvdW50Kys7XG4gICAgdGhpcy5iaW5kaW5nUmVjb3Jkcy5wdXNoKEJpbmRpbmdSZWNvcmQuY3JlYXRlRm9yVGV4dE5vZGUoYXN0LnZhbHVlLCBub2RlSW5kZXgpKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdFRleHQoYXN0OiBUZXh0QXN0LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHRoaXMubm9kZUNvdW50Kys7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXREaXJlY3RpdmUoYXN0OiBEaXJlY3RpdmVBc3QsIGRpcmVjdGl2ZUluZGV4QXNOdW1iZXI6IG51bWJlcik6IGFueSB7XG4gICAgdmFyIGRpcmVjdGl2ZUluZGV4ID0gbmV3IERpcmVjdGl2ZUluZGV4KHRoaXMuYm91bmRFbGVtZW50Q291bnQgLSAxLCBkaXJlY3RpdmVJbmRleEFzTnVtYmVyKTtcbiAgICB2YXIgZGlyZWN0aXZlTWV0YWRhdGEgPSBhc3QuZGlyZWN0aXZlO1xuICAgIHZhciBvdXRwdXRzQXJyYXkgPSBbXTtcbiAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2goXG4gICAgICAgIGFzdC5kaXJlY3RpdmUub3V0cHV0cyxcbiAgICAgICAgKGV2ZW50TmFtZTogc3RyaW5nLCBkaXJQcm9wZXJ0eTogc3RyaW5nKSA9PiBvdXRwdXRzQXJyYXkucHVzaChbZGlyUHJvcGVydHksIGV2ZW50TmFtZV0pKTtcbiAgICB2YXIgZGlyZWN0aXZlUmVjb3JkID0gbmV3IERpcmVjdGl2ZVJlY29yZCh7XG4gICAgICBkaXJlY3RpdmVJbmRleDogZGlyZWN0aXZlSW5kZXgsXG4gICAgICBjYWxsQWZ0ZXJDb250ZW50SW5pdDpcbiAgICAgICAgICBkaXJlY3RpdmVNZXRhZGF0YS5saWZlY3ljbGVIb29rcy5pbmRleE9mKExpZmVjeWNsZUhvb2tzLkFmdGVyQ29udGVudEluaXQpICE9PSAtMSxcbiAgICAgIGNhbGxBZnRlckNvbnRlbnRDaGVja2VkOlxuICAgICAgICAgIGRpcmVjdGl2ZU1ldGFkYXRhLmxpZmVjeWNsZUhvb2tzLmluZGV4T2YoTGlmZWN5Y2xlSG9va3MuQWZ0ZXJDb250ZW50Q2hlY2tlZCkgIT09IC0xLFxuICAgICAgY2FsbEFmdGVyVmlld0luaXQ6XG4gICAgICAgICAgZGlyZWN0aXZlTWV0YWRhdGEubGlmZWN5Y2xlSG9va3MuaW5kZXhPZihMaWZlY3ljbGVIb29rcy5BZnRlclZpZXdJbml0KSAhPT0gLTEsXG4gICAgICBjYWxsQWZ0ZXJWaWV3Q2hlY2tlZDpcbiAgICAgICAgICBkaXJlY3RpdmVNZXRhZGF0YS5saWZlY3ljbGVIb29rcy5pbmRleE9mKExpZmVjeWNsZUhvb2tzLkFmdGVyVmlld0NoZWNrZWQpICE9PSAtMSxcbiAgICAgIGNhbGxPbkNoYW5nZXM6IGRpcmVjdGl2ZU1ldGFkYXRhLmxpZmVjeWNsZUhvb2tzLmluZGV4T2YoTGlmZWN5Y2xlSG9va3MuT25DaGFuZ2VzKSAhPT0gLTEsXG4gICAgICBjYWxsRG9DaGVjazogZGlyZWN0aXZlTWV0YWRhdGEubGlmZWN5Y2xlSG9va3MuaW5kZXhPZihMaWZlY3ljbGVIb29rcy5Eb0NoZWNrKSAhPT0gLTEsXG4gICAgICBjYWxsT25Jbml0OiBkaXJlY3RpdmVNZXRhZGF0YS5saWZlY3ljbGVIb29rcy5pbmRleE9mKExpZmVjeWNsZUhvb2tzLk9uSW5pdCkgIT09IC0xLFxuICAgICAgY2FsbE9uRGVzdHJveTogZGlyZWN0aXZlTWV0YWRhdGEubGlmZWN5Y2xlSG9va3MuaW5kZXhPZihMaWZlY3ljbGVIb29rcy5PbkRlc3Ryb3kpICE9PSAtMSxcbiAgICAgIGNoYW5nZURldGVjdGlvbjogZGlyZWN0aXZlTWV0YWRhdGEuY2hhbmdlRGV0ZWN0aW9uLFxuICAgICAgb3V0cHV0czogb3V0cHV0c0FycmF5XG4gICAgfSk7XG4gICAgdGhpcy5kaXJlY3RpdmVSZWNvcmRzLnB1c2goZGlyZWN0aXZlUmVjb3JkKTtcblxuICAgIHRlbXBsYXRlVmlzaXRBbGwodGhpcywgYXN0LmlucHV0cywgZGlyZWN0aXZlUmVjb3JkKTtcbiAgICB2YXIgYmluZGluZ1JlY29yZHMgPSB0aGlzLmJpbmRpbmdSZWNvcmRzO1xuICAgIGlmIChkaXJlY3RpdmVSZWNvcmQuY2FsbE9uQ2hhbmdlcykge1xuICAgICAgYmluZGluZ1JlY29yZHMucHVzaChCaW5kaW5nUmVjb3JkLmNyZWF0ZURpcmVjdGl2ZU9uQ2hhbmdlcyhkaXJlY3RpdmVSZWNvcmQpKTtcbiAgICB9XG4gICAgaWYgKGRpcmVjdGl2ZVJlY29yZC5jYWxsT25Jbml0KSB7XG4gICAgICBiaW5kaW5nUmVjb3Jkcy5wdXNoKEJpbmRpbmdSZWNvcmQuY3JlYXRlRGlyZWN0aXZlT25Jbml0KGRpcmVjdGl2ZVJlY29yZCkpO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aXZlUmVjb3JkLmNhbGxEb0NoZWNrKSB7XG4gICAgICBiaW5kaW5nUmVjb3Jkcy5wdXNoKEJpbmRpbmdSZWNvcmQuY3JlYXRlRGlyZWN0aXZlRG9DaGVjayhkaXJlY3RpdmVSZWNvcmQpKTtcbiAgICB9XG4gICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3QuaG9zdFByb3BlcnRpZXMsIGRpcmVjdGl2ZVJlY29yZCk7XG4gICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3QuaG9zdEV2ZW50cywgZGlyZWN0aXZlUmVjb3JkKTtcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKHRoaXMsIGFzdC5leHBvcnRBc1ZhcnMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0RGlyZWN0aXZlUHJvcGVydHkoYXN0OiBCb3VuZERpcmVjdGl2ZVByb3BlcnR5QXN0LCBkaXJlY3RpdmVSZWNvcmQ6IERpcmVjdGl2ZVJlY29yZCk6IGFueSB7XG4gICAgLy8gVE9ETzogdGhlc2Ugc2V0dGVycyBzaG91bGQgZXZlbnR1YWxseSBiZSBjcmVhdGVkIGJ5IGNoYW5nZSBkZXRlY3Rpb24sIHRvIG1ha2VcbiAgICAvLyBpdCBtb25vbW9ycGhpYyFcbiAgICB2YXIgc2V0dGVyID0gcmVmbGVjdG9yLnNldHRlcihhc3QuZGlyZWN0aXZlTmFtZSk7XG4gICAgdGhpcy5iaW5kaW5nUmVjb3Jkcy5wdXNoKFxuICAgICAgICBCaW5kaW5nUmVjb3JkLmNyZWF0ZUZvckRpcmVjdGl2ZShhc3QudmFsdWUsIGFzdC5kaXJlY3RpdmVOYW1lLCBzZXR0ZXIsIGRpcmVjdGl2ZVJlY29yZCkpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cblxuZnVuY3Rpb24gY3JlYXRlQ2hhbmdlRGVmaW5pdGlvbnMocHZWaXNpdG9yczogUHJvdG9WaWV3VmlzaXRvcltdLCBjb21wb25lbnRUeXBlOiBDb21waWxlVHlwZU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuQ29uZmlnOiBDaGFuZ2VEZXRlY3RvckdlbkNvbmZpZyk6IENoYW5nZURldGVjdG9yRGVmaW5pdGlvbltdIHtcbiAgdmFyIHB2VmFyaWFibGVOYW1lcyA9IF9jb2xsZWN0TmVzdGVkUHJvdG9WaWV3c1ZhcmlhYmxlTmFtZXMocHZWaXNpdG9ycyk7XG4gIHJldHVybiBwdlZpc2l0b3JzLm1hcChwdlZpc2l0b3IgPT4ge1xuICAgIHZhciBpZCA9IGAke2NvbXBvbmVudFR5cGUubmFtZX1fJHtwdlZpc2l0b3Iudmlld0luZGV4fWA7XG4gICAgcmV0dXJuIG5ldyBDaGFuZ2VEZXRlY3RvckRlZmluaXRpb24oXG4gICAgICAgIGlkLCBwdlZpc2l0b3Iuc3RyYXRlZ3ksIHB2VmFyaWFibGVOYW1lc1twdlZpc2l0b3Iudmlld0luZGV4XSwgcHZWaXNpdG9yLmJpbmRpbmdSZWNvcmRzLFxuICAgICAgICBwdlZpc2l0b3IuZXZlbnRSZWNvcmRzLCBwdlZpc2l0b3IuZGlyZWN0aXZlUmVjb3JkcywgZ2VuQ29uZmlnKTtcblxuICB9KTtcbn1cblxuZnVuY3Rpb24gX2NvbGxlY3ROZXN0ZWRQcm90b1ZpZXdzVmFyaWFibGVOYW1lcyhwdlZpc2l0b3JzOiBQcm90b1ZpZXdWaXNpdG9yW10pOiBzdHJpbmdbXVtdIHtcbiAgdmFyIG5lc3RlZFB2VmFyaWFibGVOYW1lczogc3RyaW5nW11bXSA9IExpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZShwdlZpc2l0b3JzLmxlbmd0aCk7XG4gIHB2VmlzaXRvcnMuZm9yRWFjaCgocHYpID0+IHtcbiAgICB2YXIgcGFyZW50VmFyaWFibGVOYW1lczogc3RyaW5nW10gPVxuICAgICAgICBpc1ByZXNlbnQocHYucGFyZW50KSA/IG5lc3RlZFB2VmFyaWFibGVOYW1lc1twdi5wYXJlbnQudmlld0luZGV4XSA6IFtdO1xuICAgIG5lc3RlZFB2VmFyaWFibGVOYW1lc1twdi52aWV3SW5kZXhdID0gcGFyZW50VmFyaWFibGVOYW1lcy5jb25jYXQocHYudmFyaWFibGVOYW1lcyk7XG4gIH0pO1xuICByZXR1cm4gbmVzdGVkUHZWYXJpYWJsZU5hbWVzO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';// Note: This class is only here so that we can reference it from TypeScript code.\r\n// The actual implementation lives under modules_dart.\r\n// TODO(tbosch): Move the corresponding code into angular2/src/compiler once\r\n// the new compiler is done.\r\nvar Codegen = (function () {\r\n function Codegen(moduleAlias) {\r\n }\r\n Codegen.prototype.generate = function (typeName, changeDetectorTypeName, def) {\r\n throw \"Not implemented in JS\";\r\n };\r\n Codegen.prototype.toString = function () { throw \"Not implemented in JS\"; };\r\n return Codegen;\r\n})();\r\nexports.Codegen = Codegen;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RldGVjdG9yX2NvZGVnZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvdHJhbnNmb3JtL3RlbXBsYXRlX2NvbXBpbGVyL2NoYW5nZV9kZXRlY3Rvcl9jb2RlZ2VuLnRzIl0sIm5hbWVzIjpbIkNvZGVnZW4iLCJDb2RlZ2VuLmNvbnN0cnVjdG9yIiwiQ29kZWdlbi5nZW5lcmF0ZSIsIkNvZGVnZW4udG9TdHJpbmciXSwibWFwcGluZ3MiOiJBQUlBLGtGQUFrRjtBQUNsRixzREFBc0Q7QUFDdEQsNEVBQTRFO0FBQzVFLDRCQUE0QjtBQUM1QjtJQUNFQSxpQkFBWUEsV0FBbUJBO0lBQUdDLENBQUNBO0lBQ25DRCwwQkFBUUEsR0FBUkEsVUFBU0EsUUFBZ0JBLEVBQUVBLHNCQUE4QkEsRUFBRUEsR0FBNkJBO1FBQ3RGRSxNQUFNQSx1QkFBdUJBLENBQUNBO0lBQ2hDQSxDQUFDQTtJQUNERiwwQkFBUUEsR0FBUkEsY0FBcUJHLE1BQU1BLHVCQUF1QkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDdkRILGNBQUNBO0FBQURBLENBQUNBLEFBTkQsSUFNQztBQU5ZLGVBQU8sVUFNbkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yRGVmaW5pdGlvbixcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uJztcblxuLy8gTm90ZTogVGhpcyBjbGFzcyBpcyBvbmx5IGhlcmUgc28gdGhhdCB3ZSBjYW4gcmVmZXJlbmNlIGl0IGZyb20gVHlwZVNjcmlwdCBjb2RlLlxuLy8gVGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBsaXZlcyB1bmRlciBtb2R1bGVzX2RhcnQuXG4vLyBUT0RPKHRib3NjaCk6IE1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgY29kZSBpbnRvIGFuZ3VsYXIyL3NyYy9jb21waWxlciBvbmNlXG4vLyB0aGUgbmV3IGNvbXBpbGVyIGlzIGRvbmUuXG5leHBvcnQgY2xhc3MgQ29kZWdlbiB7XG4gIGNvbnN0cnVjdG9yKG1vZHVsZUFsaWFzOiBzdHJpbmcpIHt9XG4gIGdlbmVyYXRlKHR5cGVOYW1lOiBzdHJpbmcsIGNoYW5nZURldGVjdG9yVHlwZU5hbWU6IHN0cmluZywgZGVmOiBDaGFuZ2VEZXRlY3RvckRlZmluaXRpb24pOiB2b2lkIHtcbiAgICB0aHJvdyBcIk5vdCBpbXBsZW1lbnRlZCBpbiBKU1wiO1xuICB9XG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7IHRocm93IFwiTm90IGltcGxlbWVudGVkIGluIEpTXCI7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar source_module_1 = require('./source_module');\r\nvar change_detection_jit_generator_1 = require('angular2/src/core/change_detection/change_detection_jit_generator');\r\nvar abstract_change_detector_1 = require('angular2/src/core/change_detection/abstract_change_detector');\r\nvar change_detection_util_1 = require('angular2/src/core/change_detection/change_detection_util');\r\nvar constants_1 = require('angular2/src/core/change_detection/constants');\r\nvar change_definition_factory_1 = require('./change_definition_factory');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar change_detector_codegen_1 = require('angular2/src/transform/template_compiler/change_detector_codegen');\r\nvar util_1 = require('./util');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar ABSTRACT_CHANGE_DETECTOR = \"AbstractChangeDetector\";\r\nvar UTIL = \"ChangeDetectionUtil\";\r\nvar CHANGE_DETECTOR_STATE = \"ChangeDetectorState\";\r\nexports.CHANGE_DETECTION_JIT_IMPORTS = lang_1.CONST_EXPR({\r\n 'AbstractChangeDetector': abstract_change_detector_1.AbstractChangeDetector,\r\n 'ChangeDetectionUtil': change_detection_util_1.ChangeDetectionUtil,\r\n 'ChangeDetectorState': constants_1.ChangeDetectorState\r\n});\r\nvar ABSTRACT_CHANGE_DETECTOR_MODULE = source_module_1.moduleRef(\"package:angular2/src/core/change_detection/abstract_change_detector\" + util_1.MODULE_SUFFIX);\r\nvar UTIL_MODULE = source_module_1.moduleRef(\"package:angular2/src/core/change_detection/change_detection_util\" + util_1.MODULE_SUFFIX);\r\nvar PREGEN_PROTO_CHANGE_DETECTOR_MODULE = source_module_1.moduleRef(\"package:angular2/src/core/change_detection/pregen_proto_change_detector\" + util_1.MODULE_SUFFIX);\r\nvar CONSTANTS_MODULE = source_module_1.moduleRef(\"package:angular2/src/core/change_detection/constants\" + util_1.MODULE_SUFFIX);\r\nvar ChangeDetectionCompiler = (function () {\r\n function ChangeDetectionCompiler(_genConfig) {\r\n this._genConfig = _genConfig;\r\n }\r\n ChangeDetectionCompiler.prototype.compileComponentRuntime = function (componentType, strategy, parsedTemplate) {\r\n var _this = this;\r\n var changeDetectorDefinitions = change_definition_factory_1.createChangeDetectorDefinitions(componentType, strategy, this._genConfig, parsedTemplate);\r\n return changeDetectorDefinitions.map(function (definition) {\r\n return _this._createChangeDetectorFactory(definition);\r\n });\r\n };\r\n ChangeDetectionCompiler.prototype._createChangeDetectorFactory = function (definition) {\r\n var proto = new change_detection_1.DynamicProtoChangeDetector(definition);\r\n return function () { return proto.instantiate(); };\r\n };\r\n ChangeDetectionCompiler.prototype.compileComponentCodeGen = function (componentType, strategy, parsedTemplate) {\r\n var changeDetectorDefinitions = change_definition_factory_1.createChangeDetectorDefinitions(componentType, strategy, this._genConfig, parsedTemplate);\r\n var factories = [];\r\n var index = 0;\r\n var sourceParts = changeDetectorDefinitions.map(function (definition) {\r\n var codegen;\r\n var sourcePart;\r\n // TODO(tbosch): move the 2 code generators to the same place, one with .dart and one with .ts\r\n // suffix\r\n // and have the same API for calling them!\r\n if (lang_1.IS_DART) {\r\n codegen = new change_detector_codegen_1.Codegen(PREGEN_PROTO_CHANGE_DETECTOR_MODULE);\r\n var className = \"_\" + definition.id;\r\n var typeRef = (index === 0 && componentType.isHost) ?\r\n 'dynamic' :\r\n \"\" + source_module_1.moduleRef(componentType.moduleUrl) + componentType.name;\r\n codegen.generate(typeRef, className, definition);\r\n factories.push(className + \".newChangeDetector\");\r\n sourcePart = codegen.toString();\r\n }\r\n else {\r\n codegen = new change_detection_jit_generator_1.ChangeDetectorJITGenerator(definition, \"\" + UTIL_MODULE + UTIL, \"\" + ABSTRACT_CHANGE_DETECTOR_MODULE + ABSTRACT_CHANGE_DETECTOR, \"\" + CONSTANTS_MODULE + CHANGE_DETECTOR_STATE);\r\n factories.push(\"function() { return new \" + codegen.typeName + \"(); }\");\r\n sourcePart = codegen.generateSource();\r\n }\r\n index++;\r\n return sourcePart;\r\n });\r\n return new source_module_1.SourceExpressions(sourceParts, factories);\r\n };\r\n ChangeDetectionCompiler = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [change_detection_1.ChangeDetectorGenConfig])\r\n ], ChangeDetectionCompiler);\r\n return ChangeDetectionCompiler;\r\n})();\r\nexports.ChangeDetectionCompiler = ChangeDetectionCompiler;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RldGVjdG9yX2NvbXBpbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbXBpbGVyL2NoYW5nZV9kZXRlY3Rvcl9jb21waWxlci50cyJdLCJuYW1lcyI6WyJDaGFuZ2VEZXRlY3Rpb25Db21waWxlciIsIkNoYW5nZURldGVjdGlvbkNvbXBpbGVyLmNvbnN0cnVjdG9yIiwiQ2hhbmdlRGV0ZWN0aW9uQ29tcGlsZXIuY29tcGlsZUNvbXBvbmVudFJ1bnRpbWUiLCJDaGFuZ2VEZXRlY3Rpb25Db21waWxlci5fY3JlYXRlQ2hhbmdlRGV0ZWN0b3JGYWN0b3J5IiwiQ2hhbmdlRGV0ZWN0aW9uQ29tcGlsZXIuY29tcGlsZUNvbXBvbmVudENvZGVHZW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLDhCQUEyQyxpQkFBaUIsQ0FBQyxDQUFBO0FBQzdELCtDQUVPLG1FQUFtRSxDQUFDLENBQUE7QUFDM0UseUNBQXFDLDZEQUE2RCxDQUFDLENBQUE7QUFDbkcsc0NBQWtDLDBEQUEwRCxDQUFDLENBQUE7QUFDN0YsMEJBQWtDLDhDQUE4QyxDQUFDLENBQUE7QUFFakYsMENBQThDLDZCQUE2QixDQUFDLENBQUE7QUFDNUUscUJBQThDLDBCQUEwQixDQUFDLENBQUE7QUFFekUsaUNBS08scURBQXFELENBQUMsQ0FBQTtBQUc3RCx3Q0FBc0Isa0VBQWtFLENBQUMsQ0FBQTtBQUN6RixxQkFBNEIsUUFBUSxDQUFDLENBQUE7QUFDckMsbUJBQXlCLHNCQUFzQixDQUFDLENBQUE7QUFFaEQsSUFBTSx3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztBQUMxRCxJQUFNLElBQUksR0FBRyxxQkFBcUIsQ0FBQztBQUNuQyxJQUFNLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDO0FBRXZDLG9DQUE0QixHQUFHLGlCQUFVLENBQUM7SUFDckQsd0JBQXdCLEVBQUUsaURBQXNCO0lBQ2hELHFCQUFxQixFQUFFLDJDQUFtQjtJQUMxQyxxQkFBcUIs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T0FBT0EsR0FBR0EsSUFBSUEsMkRBQTBCQSxDQUNwQ0EsVUFBVUEsRUFBRUEsS0FBR0EsV0FBV0EsR0FBR0EsSUFBTUEsRUFDbkNBLEtBQUdBLCtCQUErQkEsR0FBR0Esd0JBQTBCQSxFQUMvREEsS0FBR0EsZ0JBQWdCQSxHQUFHQSxxQkFBdUJBLENBQUNBLENBQUNBO2dCQUNuREEsU0FBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsNkJBQTJCQSxPQUFPQSxDQUFDQSxRQUFRQSxVQUFPQSxDQUFDQSxDQUFDQTtnQkFDbkVBLFVBQVVBLEdBQUdBLE9BQU9BLENBQUNBLGNBQWNBLEVBQUVBLENBQUNBO1lBQ3hDQSxDQUFDQTtZQUNEQSxLQUFLQSxFQUFFQSxDQUFDQTtZQUNSQSxNQUFNQSxDQUFDQSxVQUFVQSxDQUFDQTtRQUNwQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDSEEsTUFBTUEsQ0FBQ0EsSUFBSUEsaUNBQWlCQSxDQUFDQSxXQUFXQSxFQUFFQSxTQUFTQSxDQUFDQSxDQUFDQTtJQUN2REEsQ0FBQ0E7SUFsREhKO1FBQUNBLGVBQVVBLEVBQUVBOztnQ0FtRFpBO0lBQURBLDhCQUFDQTtBQUFEQSxDQUFDQSxBQW5ERCxJQW1EQztBQWxEWSwrQkFBdUIsMEJBa0RuQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21waWxlVHlwZU1ldGFkYXRhfSBmcm9tICcuL2RpcmVjdGl2ZV9tZXRhZGF0YSc7XG5pbXBvcnQge1NvdXJjZUV4cHJlc3Npb25zLCBtb2R1bGVSZWZ9IGZyb20gJy4vc291cmNlX21vZHVsZSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvclxufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rpb25faml0X2dlbmVyYXRvcic7XG5pbXBvcnQge0Fic3RyYWN0Q2hhbmdlRGV0ZWN0b3J9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vYWJzdHJhY3RfY2hhbmdlX2RldGVjdG9yJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uVXRpbH0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uX3V0aWwnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclN0YXRlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7Y3JlYXRlQ2hhbmdlRGV0ZWN0b3JEZWZpbml0aW9uc30gZnJvbSAnLi9jaGFuZ2VfZGVmaW5pdGlvbl9mYWN0b3J5JztcbmltcG9ydCB7SVNfREFSVCwgaXNKc09iamVjdCwgQ09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JHZW5Db25maWcsXG4gIENoYW5nZURldGVjdG9yRGVmaW5pdGlvbixcbiAgRHluYW1pY1Byb3RvQ2hhbmdlRGV0ZWN0b3IsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5XG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vY2hhbmdlX2RldGVjdGlvbic7XG5cbmltcG9ydCB7VGVtcGxhdGVBc3R9IGZyb20gJy4vdGVtcGxhdGVfYXN0JztcbmltcG9ydCB7Q29kZWdlbn0gZnJvbSAnYW5ndWxhcjIvc3JjL3RyYW5zZm9ybS90ZW1wbGF0ZV9jb21waWxlci9jaGFuZ2VfZGV0ZWN0b3JfY29kZWdlbic7XG5pbXBvcnQge01PRFVMRV9TVUZGSVh9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcblxuY29uc3QgQUJTVFJBQ1RfQ0hBTkdFX0RFVEVDVE9SID0gXCJBYnN0cmFjdENoYW5nZURldGVjdG9yXCI7XG5jb25zdCBVVElMID0gXCJDaGFuZ2VEZXRlY3Rpb25VdGlsXCI7XG5jb25zdCBDSEFOR0VfREVURUNUT1JfU1RBVEUgPSBcIkNoYW5nZURldGVjdG9yU3RhdGVcIjtcblxuZXhwb3J0IGNvbnN0IENIQU5HRV9ERVRFQ1RJT05fSklUX0lNUE9SVFMgPSBDT05TVF9FWFBSKHtcbiAgJ0Fic3RyYWN0Q2hhbmdlRGV0ZWN0b3InOiBBYnN0cmFjdENoYW5nZURldGVjdG9yLFxuICAnQ2hhbmdlRGV0ZWN0aW9uVXRpbCc6IENoYW5nZURldGVjdGlvblV0aWwsXG4gICdDaGFuZ2VEZXRlY3RvclN0YXRlJzogQ2hhbmdlRGV0ZWN0b3JTdGF0ZVxufSk7XG5cbnZhciBBQlNUUkFDVF9DSEFOR0VfREVURUNUT1JfTU9EVUxFID0gbW9kdWxlUmVmKFxuICAgIGBwYWNrYWdlOmFuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vYWJzdHJhY3RfY2hhbmdlX2RldGVjdG9yJHtNT0RVTEVfU1VGRklYfWApO1xudmFyIFVUSUxfTU9EVUxFID1cbiAgICBtb2R1bGVSZWYoYHBhY2thZ2U6YW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uX3V0aWwke01PRFVMRV9TVUZGSVh9YCk7XG52YXIgUFJFR0VOX1BST1RPX0NIQU5HRV9ERVRFQ1RPUl9NT0RVTEUgPSBtb2R1bGVSZWYoXG4gICAgYHBhY2thZ2U6YW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9wcmVnZW5fcHJvdG9fY2hhbmdlX2RldGVjdG9yJHtNT0RVTEVfU1VGRklYfWApO1xudmFyIENPTlNUQU5UU19NT0RVTEUgPVxuICAgIG1vZHVsZVJlZihgcGFja2FnZTphbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NvbnN0YW50cyR7TU9EVUxFX1NVRkZJWH1gKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENoYW5nZURldGVjdGlvbkNvbXBpbGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZ2VuQ29uZmlnOiBDaGFuZ2VEZXRlY3RvckdlbkNvbmZpZykge31cblxuICBjb21waWxlQ29tcG9uZW50UnVudGltZShjb21wb25lbnRUeXBlOiBDb21waWxlVHlwZU1ldGFkYXRhLCBzdHJhdGVneTogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFRlbXBsYXRlOiBUZW1wbGF0ZUFzdFtdKTogRnVuY3Rpb25bXSB7XG4gICAgdmFyIGNoYW5nZURldGVjdG9yRGVmaW5pdGlvbnMgPVxuICAgICAgICBjcmVhdGVDaGFuZ2VEZXRlY3RvckRlZmluaXRpb25zKGNvbXBvbmVudFR5cGUsIHN0cmF0ZWd5LCB0aGlzLl9nZW5Db25maWcsIHBhcnNlZFRlbXBsYXRlKTtcbiAgICByZXR1cm4gY2hhbmdlRGV0ZWN0b3JEZWZpbml0aW9ucy5tYXAoZGVmaW5pdGlvbiA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ2hhbmdlRGV0ZWN0b3JGYWN0b3J5KGRlZmluaXRpb24pKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUNoYW5nZURldGVjdG9yRmFjdG9yeShkZWZpbml0aW9uOiBDaGFuZ2VEZXRlY3RvckRlZmluaXRpb24pOiBGdW5jdGlvbiB7XG4gICAgdmFyIHByb3RvID0gbmV3IER5bmFtaWNQcm90b0NoYW5nZURldGVjdG9yKGRlZmluaXRpb24pO1xuICAgIHJldHVybiAoKSA9PiBwcm90by5pbnN0YW50aWF0ZSgpO1xuICB9XG5cbiAgY29tcGlsZUNvbXBvbmVudENvZGVHZW4oY29tcG9uZW50VHlwZTogQ29tcGlsZVR5cGVNZXRhZGF0YSwgc3RyYXRlZ3k6IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRUZW1wbGF0ZTogVGVtcGxhdGVBc3RbXSk6IFNvdXJjZUV4cHJlc3Npb25zIHtcbiAgICB2YXIgY2hhbmdlRGV0ZWN0b3JEZWZpbml0aW9ucyA9XG4gICAgICAgIGNyZWF0ZUNoYW5nZURldGVjdG9yRGVmaW5pdGlvbnMoY29tcG9uZW50VHlwZSwgc3RyYXRlZ3ksIHRoaXMuX2dlbkNvbmZpZywgcGFyc2VkVGVtcGxhdGUpO1xuICAgIHZhciBmYWN0b3JpZXMgPSBbXTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBzb3VyY2VQYXJ0cyA9IGNoYW5nZURldGVjdG9yRGVmaW5pdGlvbnMubWFwKGRlZmluaXRpb24gPT4ge1xuICAgICAgdmFyIGNvZGVnZW46IGFueTtcbiAgICAgIHZhciBzb3VyY2VQYXJ0OiBzdHJpbmc7XG4gICAgICAvLyBUT0RPKHRib3NjaCk6IG1vdmUgdGhlIDIgY29kZSBnZW5lcmF0b3JzIHRvIHRoZSBzYW1lIHBsYWNlLCBvbmUgd2l0aCAuZGFydCBhbmQgb25lIHdpdGggLnRzXG4gICAgICAvLyBzdWZmaXhcbiAgICAgIC8vIGFuZCBoYXZlIHRoZSBzYW1lIEFQSSBmb3IgY2FsbGluZyB0aGVtIVxuICAgICAgaWYgKElTX0RBUlQpIHtcbiAgICAgICAgY29kZWdlbiA9IG5ldyBDb2RlZ2VuKFBSRUdFTl9QUk9UT19DSEFOR0VfREVURUNUT1JfTU9EVUxFKTtcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9IGBfJHtkZWZpbml0aW9uLmlkfWA7XG4gICAgICAgIHZhciB0eXBlUmVmID0gKGluZGV4ID09PSAwICYmIGNvbXBvbmVudFR5cGUuaXNIb3N0KSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICdkeW5hbWljJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke21vZHVsZVJlZihjb21wb25lbnRUeXBlLm1vZHVsZVVybCl9JHtjb21wb25lbnRUeXBlLm5hbWV9YDtcbiAgICAgICAgY29kZWdlbi5nZW5lcmF0ZSh0eXBlUmVmLCBjbGFzc05hbWUsIGRlZmluaXRpb24pO1xuICAgICAgICBmYWN0b3JpZXMucHVzaChgJHtjbGFzc05hbWV9Lm5ld0NoYW5nZURldGVjdG9yYCk7XG4gICAgICAgIHNvdXJjZVBhcnQgPSBjb2RlZ2VuLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2RlZ2VuID0gbmV3IENoYW5nZURldGVjdG9ySklUR2VuZXJhdG9yKFxuICAgICAgICAgICAgZGVmaW5pdGlvbiwgYCR7VVRJTF9NT0RVTEV9JHtVVElMfWAsXG4gICAgICAgICAgICBgJHtBQlNUUkFDVF9DSEFOR0VfREVURUNUT1JfTU9EVUxFfSR7QUJTVFJBQ1RfQ0hBTkdFX0RFVEVDVE9SfWAsXG4gICAgICAgICAgICBgJHtDT05TVEFOVFNfTU9EVUxFfSR7Q0hBTkdFX0RFVEVDVE9SX1NUQVRFfWApO1xuICAgICAgICBmYWN0b3JpZXMucHVzaChgZnVuY3Rpb24oKSB7IHJldHVybiBuZXcgJHtjb2RlZ2VuLnR5cGVOYW1lfSgpOyB9YCk7XG4gICAgICAgIHNvdXJjZVBhcnQgPSBjb2RlZ2VuLmdlbmVyYXRlU291cmNlKCk7XG4gICAgICB9XG4gICAgICBpbmRleCsrO1xuICAgICAgcmV0dXJuIHNvdXJjZVBhcnQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VFeHByZXNzaW9ucyhzb3VyY2VQYXJ0cywgZmFjdG9yaWVzKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * This file is a port of shadowCSS from webcomponents.js to TypeScript.\r\n *\r\n * Please make sure to keep to edits in sync with the source file.\r\n *\r\n * Source:\r\n * https://github.com/webcomponents/webcomponentsjs/blob/4efecd7e0e/src/ShadowCSS/ShadowCSS.js\r\n *\r\n * The original file level comment is reproduced below\r\n */\r\n/*\r\n This is a limited shim for ShadowDOM css styling.\r\n https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#styles\r\n\r\n The intention here is to support only the styling features which can be\r\n relatively simply implemented. The goal is to allow users to avoid the\r\n most obvious pitfalls and do so without compromising performance significantly.\r\n For ShadowDOM styling that's not covered here, a set of best practices\r\n can be provided that should allow users to accomplish more complex styling.\r\n\r\n The following is a list of specific ShadowDOM styling features and a brief\r\n discussion of the approach used to shim.\r\n\r\n Shimmed features:\r\n\r\n * :host, :host-context: ShadowDOM allows styling of the shadowRoot's host\r\n element using the :host rule. To shim this feature, the :host styles are\r\n reformatted and prefixed with a given scope name and promoted to a\r\n document level stylesheet.\r\n For example, given a scope name of .foo, a rule like this:\r\n\r\n :host {\r\n background: red;\r\n }\r\n }\r\n\r\n becomes:\r\n\r\n .foo {\r\n background: red;\r\n }\r\n\r\n * encapsultion: Styles defined within ShadowDOM, apply only to\r\n dom inside the ShadowDOM. Polymer uses one of two techniques to implement\r\n this feature.\r\n\r\n By default, rules are prefixed with the host element tag name\r\n as a descendant selector. This ensures styling does not leak out of the 'top'\r\n of the element's ShadowDOM. For example,\r\n\r\n div {\r\n font-weight: bold;\r\n }\r\n\r\n becomes:\r\n\r\n x-foo div {\r\n font-weight: bold;\r\n }\r\n\r\n becomes:\r\n\r\n\r\n Alternatively, if WebComponents.ShadowCSS.strictStyling is set to true then\r\n selectors are scoped by adding an attribute selector suffix to each\r\n simple selector that contains the host element tag name. Each element\r\n in the element's ShadowDOM template is also given the scope attribute.\r\n Thus, these rules match only elements that have the scope attribute.\r\n For example, given a scope name of x-foo, a rule like this:\r\n\r\n div {\r\n font-weight: bold;\r\n }\r\n\r\n becomes:\r\n\r\n div[x-foo] {\r\n font-weight: bold;\r\n }\r\n\r\n Note that elements that are dynamically added to a scope must have the scope\r\n selector added to them manually.\r\n\r\n * upper/lower bound encapsulation: Styles which are defined outside a\r\n shadowRoot should not cross the ShadowDOM boundary and should not apply\r\n inside a shadowRoot.\r\n\r\n This styling behavior is not emulated. Some possible ways to do this that\r\n were rejected due to complexity and/or performance concerns include: (1) reset\r\n every possible property for every possible selector for a given scope name;\r\n (2) re-implement css in javascript.\r\n\r\n As an alternative, users should make sure to use selectors\r\n specific to the scope in which they are working.\r\n\r\n * ::distributed: This behavior is not emulated. It's often not necessary\r\n to style the contents of a specific insertion point and instead, descendants\r\n of the host element can be styled selectively. Users can also create an\r\n extra node around an insertion point and style that node's contents\r\n via descendent selectors. For example, with a shadowRoot like this:\r\n\r\n <style>\r\n ::content(div) {\r\n background: red;\r\n }\r\n </style>\r\n <content></content>\r\n\r\n could become:\r\n\r\n <style>\r\n / *@polyfill .content-container div * /\r\n ::content(div) {\r\n background: red;\r\n }\r\n </style>\r\n <div class=\"content-container\">\r\n <content></content>\r\n </div>\r\n\r\n Note the use of @polyfill in the comment above a ShadowDOM specific style\r\n declaration. This is a directive to the styling shim to use the selector\r\n in comments in lieu of the next selector when running under polyfill.\r\n*/\r\nvar ShadowCss = (function () {\r\n function ShadowCss() {\r\n this.strictStyling = true;\r\n }\r\n /*\r\n * Shim some cssText with the given selector. Returns cssText that can\r\n * be included in the document via WebComponents.ShadowCSS.addCssToDocument(css).\r\n *\r\n * When strictStyling is true:\r\n * - selector is the attribute added to all elements inside the host,\r\n * - hostSelector is the attribute added to the host itself.\r\n */\r\n ShadowCss.prototype.shimCssText = function (cssText, selector, hostSelector) {\r\n if (hostSelector === void 0) { hostSelector = ''; }\r\n cssText = stripComments(cssText);\r\n cssText = this._insertDirectives(cssText);\r\n return this._scopeCssText(cssText, selector, hostSelector);\r\n };\r\n ShadowCss.prototype._insertDirectives = function (cssText) {\r\n cssText = this._insertPolyfillDirectivesInCssText(cssText);\r\n return this._insertPolyfillRulesInCssText(cssText);\r\n };\r\n /*\r\n * Process styles to convert native ShadowDOM rules that will trip\r\n * up the css parser; we rely on decorating the stylesheet with inert rules.\r\n *\r\n * For example, we convert this rule:\r\n *\r\n * polyfill-next-selector { content: ':host menu-item'; }\r\n * ::content menu-item {\r\n *\r\n * to this:\r\n *\r\n * scopeName menu-item {\r\n *\r\n **/\r\n ShadowCss.prototype._insertPolyfillDirectivesInCssText = function (cssText) {\r\n // Difference with webcomponents.js: does not handle comments\r\n return lang_1.StringWrapper.replaceAllMapped(cssText, _cssContentNextSelectorRe, function (m) { return m[1] + '{'; });\r\n };\r\n /*\r\n * Process styles to add rules which will only apply under the polyfill\r\n *\r\n * For example, we convert this rule:\r\n *\r\n * polyfill-rule {\r\n * content: ':host menu-item';\r\n * ...\r\n * }\r\n *\r\n * to this:\r\n *\r\n * scopeName menu-item {...}\r\n *\r\n **/\r\n ShadowCss.prototype._insertPolyfillRulesInCssText = function (cssText) {\r\n // Difference with webcomponents.js: does not handle comments\r\n return lang_1.StringWrapper.replaceAllMapped(cssText, _cssContentRuleRe, function (m) {\r\n var rule = m[0];\r\n rule = lang_1.StringWrapper.replace(rule, m[1], '');\r\n rule = lang_1.StringWrapper.replace(rule, m[2], '');\r\n return m[3] + rule;\r\n });\r\n };\r\n /* Ensure styles are scoped. Pseudo-scoping takes a rule like:\r\n *\r\n * .foo {... }\r\n *\r\n * and converts this to\r\n *\r\n * scopeName .foo { ... }\r\n */\r\n ShadowCss.prototype._scopeCssText = function (cssText, scopeSelector, hostSelector) {\r\n var unscoped = this._extractUnscopedRulesFromCssText(cssText);\r\n cssText = this._insertPolyfillHostInCssText(cssText);\r\n cssText = this._convertColonHost(cssText);\r\n cssText = this._convertColonHostContext(cssText);\r\n cssText = this._convertShadowDOMSelectors(cssText);\r\n if (lang_1.isPresent(scopeSelector)) {\r\n cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector);\r\n }\r\n cssText = cssText + '\\n' + unscoped;\r\n return cssText.trim();\r\n };\r\n /*\r\n * Process styles to add rules which will only apply under the polyfill\r\n * and do not process via CSSOM. (CSSOM is destructive to rules on rare\r\n * occasions, e.g. -webkit-calc on Safari.)\r\n * For example, we convert this rule:\r\n *\r\n * @polyfill-unscoped-rule {\r\n * content: 'menu-item';\r\n * ... }\r\n *\r\n * to this:\r\n *\r\n * menu-item {...}\r\n *\r\n **/\r\n ShadowCss.prototype._extractUnscopedRulesFromCssText = function (cssText) {\r\n // Difference with webcomponents.js: does not handle comments\r\n var r = '', m;\r\n var matcher = lang_1.RegExpWrapper.matcher(_cssContentUnscopedRuleRe, cssText);\r\n while (lang_1.isPresent(m = lang_1.RegExpMatcherWrapper.next(matcher))) {\r\n var rule = m[0];\r\n rule = lang_1.StringWrapper.replace(rule, m[2], '');\r\n rule = lang_1.StringWrapper.replace(rule, m[1], m[3]);\r\n r += rule + '\\n\\n';\r\n }\r\n return r;\r\n };\r\n /*\r\n * convert a rule like :host(.foo) > .bar { }\r\n *\r\n * to\r\n *\r\n * scopeName.foo > .bar\r\n */\r\n ShadowCss.prototype._convertColonHost = function (cssText) {\r\n return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer);\r\n };\r\n /*\r\n * convert a rule like :host-context(.foo) > .bar { }\r\n *\r\n * to\r\n *\r\n * scopeName.foo > .bar, .foo scopeName > .bar { }\r\n *\r\n * and\r\n *\r\n * :host-context(.foo:host) .bar { ... }\r\n *\r\n * to\r\n *\r\n * scopeName.foo .bar { ... }\r\n */\r\n ShadowCss.prototype._convertColonHostContext = function (cssText) {\r\n return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer);\r\n };\r\n ShadowCss.prototype._convertColonRule = function (cssText, regExp, partReplacer) {\r\n // p1 = :host, p2 = contents of (), p3 rest of rule\r\n return lang_1.StringWrapper.replaceAllMapped(cssText, regExp, function (m) {\r\n if (lang_1.isPresent(m[2])) {\r\n var parts = m[2].split(','), r = [];\r\n for (var i = 0; i < parts.length; i++) {\r\n var p = parts[i];\r\n if (lang_1.isBlank(p))\r\n break;\r\n p = p.trim();\r\n r.push(partReplacer(_polyfillHostNoCombinator, p, m[3]));\r\n }\r\n return r.join(',');\r\n }\r\n else {\r\n return _polyfillHostNoCombinator + m[3];\r\n }\r\n });\r\n };\r\n ShadowCss.prototype._colonHostContextPartReplacer = function (host, part, suffix) {\r\n if (lang_1.StringWrapper.contains(part, _polyfillHost)) {\r\n return this._colonHostPartReplacer(host, part, suffix);\r\n }\r\n else {\r\n return host + part + suffix + ', ' + part + ' ' + host + suffix;\r\n }\r\n };\r\n ShadowCss.prototype._colonHostPartReplacer = function (host, part, suffix) {\r\n return host + lang_1.StringWrapper.replace(part, _polyfillHost, '') + suffix;\r\n };\r\n /*\r\n * Convert combinators like ::shadow and pseudo-elements like ::content\r\n * by replacing with space.\r\n */\r\n ShadowCss.prototype._convertShadowDOMSelectors = function (cssText) {\r\n for (var i = 0; i < _shadowDOMSelectorsRe.length; i++) {\r\n cssText = lang_1.StringWrapper.replaceAll(cssText, _shadowDOMSelectorsRe[i], ' ');\r\n }\r\n return cssText;\r\n };\r\n // change a selector like 'div' to 'name div'\r\n ShadowCss.prototype._scopeSelectors = function (cssText, scopeSelector, hostSelector) {\r\n var _this = this;\r\n return processRules(cssText, function (rule) {\r\n var selector = rule.selector;\r\n var content = rule.content;\r\n if (rule.selector[0] != '@' || rule.selector.startsWith('@page')) {\r\n selector =\r\n _this._scopeSelector(rule.selector, scopeSelector, hostSelector, _this.strictStyling);\r\n }\r\n else if (rule.selector.startsWith('@media')) {\r\n content = _this._scopeSelectors(rule.content, scopeSelector, hostSelector);\r\n }\r\n return new CssRule(selector, content);\r\n });\r\n };\r\n ShadowCss.prototype._scopeSelector = function (selector, scopeSelector, hostSelector, strict) {\r\n var r = [], parts = selector.split(',');\r\n for (var i = 0; i < parts.length; i++) {\r\n var p = parts[i].trim();\r\n var deepParts = lang_1.StringWrapper.split(p, _shadowDeepSelectors);\r\n var shallowPart = deepParts[0];\r\n if (this._selectorNeedsScoping(shallowPart, scopeSelector)) {\r\n deepParts[0] = strict && !lang_1.StringWrapper.contains(shallowPart, _polyfillHostNoCombinator) ?\r\n this._applyStrictSelectorScope(shallowPart, scopeSelector) :\r\n this._applySelectorScope(shallowPart, scopeSelector, hostSelector);\r\n }\r\n // replace /deep/ with a space for child selectors\r\n r.push(deepParts.join(' '));\r\n }\r\n return r.join(', ');\r\n };\r\n ShadowCss.prototype._selectorNeedsScoping = function (selector, scopeSelector) {\r\n var re = this._makeScopeMatcher(scopeSelector);\r\n return !lang_1.isPresent(lang_1.RegExpWrapper.firstMatch(re, selector));\r\n };\r\n ShadowCss.prototype._makeScopeMatcher = function (scopeSelector) {\r\n var lre = /\\[/g;\r\n var rre = /\\]/g;\r\n scopeSelector = lang_1.StringWrapper.replaceAll(scopeSelector, lre, '\\\\[');\r\n scopeSelector = lang_1.StringWrapper.replaceAll(scopeSelector, rre, '\\\\]');\r\n return lang_1.RegExpWrapper.create('^(' + scopeSelector + ')' + _selectorReSuffix, 'm');\r\n };\r\n ShadowCss.prototype._applySelectorScope = function (selector, scopeSelector, hostSelector) {\r\n // Difference from webcomponentsjs: scopeSelector could not be an array\r\n return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector);\r\n };\r\n // scope via name and [is=name]\r\n ShadowCss.prototype._applySimpleSelectorScope = function (selector, scopeSelector, hostSelector) {\r\n if (lang_1.isPresent(lang_1.RegExpWrapper.firstMatch(_polyfillHostRe, selector))) {\r\n var replaceBy = this.strictStyling ? \"[\" + hostSelector + \"]\" : scopeSelector;\r\n selector = lang_1.StringWrapper.replace(selector, _polyfillHostNoCombinator, replaceBy);\r\n return lang_1.StringWrapper.replaceAll(selector, _polyfillHostRe, replaceBy + ' ');\r\n }\r\n else {\r\n return scopeSelector + ' ' + selector;\r\n }\r\n };\r\n // return a selector with [name] suffix on each simple selector\r\n // e.g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name] /** @internal */\r\n ShadowCss.prototype._applyStrictSelectorScope = function (selector, scopeSelector) {\r\n var isRe = /\\[is=([^\\]]*)\\]/g;\r\n scopeSelector = lang_1.StringWrapper.replaceAllMapped(scopeSelector, isRe, function (m) { return m[1]; });\r\n var splits = [' ', '>', '+', '~'], scoped = selector, attrName = '[' + scopeSelector + ']';\r\n for (var i = 0; i < splits.length; i++) {\r\n var sep = splits[i];\r\n var parts = scoped.split(sep);\r\n scoped = parts.map(function (p) {\r\n // remove :host since it should be unnecessary\r\n var t = lang_1.StringWrapper.replaceAll(p.trim(), _polyfillHostRe, '');\r\n if (t.length > 0 && !collection_1.ListWrapper.contains(splits, t) &&\r\n !lang_1.StringWrapper.contains(t, attrName)) {\r\n var re = /([^:]*)(:*)(.*)/g;\r\n var m = lang_1.RegExpWrapper.firstMatch(re, t);\r\n if (lang_1.isPresent(m)) {\r\n p = m[1] + attrName + m[2] + m[3];\r\n }\r\n }\r\n return p;\r\n })\r\n .join(sep);\r\n }\r\n return scoped;\r\n };\r\n ShadowCss.prototype._insertPolyfillHostInCssText = function (selector) {\r\n selector = lang_1.StringWrapper.replaceAll(selector, _colonHostContextRe, _polyfillHostContext);\r\n selector = lang_1.StringWrapper.replaceAll(selector, _colonHostRe, _polyfillHost);\r\n return selector;\r\n };\r\n return ShadowCss;\r\n})();\r\nexports.ShadowCss = ShadowCss;\r\nvar _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\\s]*?['\"](.*?)['\"][;\\s]*}([^{]*?){/gim;\r\nvar _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\\s]*['\"](.*?)['\"])[;\\s]*[^}]*}/gim;\r\nvar _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\\s]*['\"](.*?)['\"])[;\\s]*[^}]*}/gim;\r\nvar _polyfillHost = '-shadowcsshost';\r\n// note: :host-context pre-processed to -shadowcsshostcontext.\r\nvar _polyfillHostContext = '-shadowcsscontext';\r\nvar _parenSuffix = ')(?:\\\\((' +\r\n '(?:\\\\([^)(]*\\\\)|[^)(]*)+?' +\r\n ')\\\\))?([^,{]*)';\r\nvar _cssColonHostRe = lang_1.RegExpWrapper.create('(' + _polyfillHost + _parenSuffix, 'im');\r\nvar _cssColonHostContextRe = lang_1.RegExpWrapper.create('(' + _polyfillHostContext + _parenSuffix, 'im');\r\nvar _polyfillHostNoCombinator = _polyfillHost + '-no-combinator';\r\nvar _shadowDOMSelectorsRe = [\r\n /::shadow/g,\r\n /::content/g,\r\n // Deprecated selectors\r\n // TODO(vicb): see https://github.com/angular/clang-format/issues/16\r\n // clang-format off\r\n /\\/shadow-deep\\//g,\r\n /\\/shadow\\//g,\r\n];\r\nvar _shadowDeepSelectors = /(?:>>>)|(?:\\/deep\\/)/g;\r\nvar _selectorReSuffix = '([>\\\\s~+\\[.,{:][\\\\s\\\\S]*)?$';\r\nvar _polyfillHostRe = lang_1.RegExpWrapper.create(_polyfillHost, 'im');\r\nvar _colonHostRe = /:host/gim;\r\nvar _colonHostContextRe = /:host-context/gim;\r\nvar _commentRe = /\\/\\*[\\s\\S]*?\\*\\//g;\r\nfunction stripComments(input) {\r\n return lang_1.StringWrapper.replaceAllMapped(input, _commentRe, function (_) { return ''; });\r\n}\r\nvar _ruleRe = /(\\s*)([^;\\{\\}]+?)(\\s*)((?:{%BLOCK%}?\\s*;?)|(?:\\s*;))/g;\r\nvar _curlyRe = /([{}])/g;\r\nvar OPEN_CURLY = '{';\r\nvar CLOSE_CURLY = '}';\r\nvar BLOCK_PLACEHOLDER = '%BLOCK%';\r\nvar CssRule = (function () {\r\n function CssRule(selector, content) {\r\n this.selector = selector;\r\n this.content = content;\r\n }\r\n return CssRule;\r\n})();\r\nexports.CssRule = CssRule;\r\nfunction processRules(input, ruleCallback) {\r\n var inputWithEscapedBlocks = escapeBlocks(input);\r\n var nextBlockIndex = 0;\r\n return lang_1.StringWrapper.replaceAllMapped(inputWithEscapedBlocks.escapedString, _ruleRe, function (m) {\r\n var selector = m[2];\r\n var content = '';\r\n var suffix = m[4];\r\n var contentPrefix = '';\r\n if (lang_1.isPresent(m[4]) && m[4].startsWith('{' + BLOCK_PLACEHOLDER)) {\r\n content = inputWithEscapedBlocks.blocks[nextBlockIndex++];\r\n suffix = m[4].substring(BLOCK_PLACEHOLDER.length + 1);\r\n contentPrefix = '{';\r\n }\r\n var rule = ruleCallback(new CssRule(selector, content));\r\n return \"\" + m[1] + rule.selector + m[3] + contentPrefix + rule.content + suffix;\r\n });\r\n}\r\nexports.processRules = processRules;\r\nvar StringWithEscapedBlocks = (function () {\r\n function StringWithEscapedBlocks(escapedString, blocks) {\r\n this.escapedString = escapedString;\r\n this.blocks = blocks;\r\n }\r\n return StringWithEscapedBlocks;\r\n})();\r\nfunction escapeBlocks(input) {\r\n var inputParts = lang_1.StringWrapper.split(input, _curlyRe);\r\n var resultParts = [];\r\n var escapedBlocks = [];\r\n var bracketCount = 0;\r\n var currentBlockParts = [];\r\n for (var partIndex = 0; partIndex < inputParts.length; partIndex++) {\r\n var part = inputParts[partIndex];\r\n if (part == CLOSE_CURLY) {\r\n bracketCount--;\r\n }\r\n if (bracketCount > 0) {\r\n currentBlockParts.push(part);\r\n }\r\n else {\r\n if (currentBlockParts.length > 0) {\r\n escapedBlocks.push(currentBlockParts.join(''));\r\n resultParts.push(BLOCK_PLACEHOLDER);\r\n currentBlockParts = [];\r\n }\r\n resultParts.push(part);\r\n }\r\n if (part == OPEN_CURLY) {\r\n bracketCount++;\r\n }\r\n }\r\n if (currentBlockParts.length > 0) {\r\n escapedBlocks.push(currentBlockParts.join(''));\r\n resultParts.push(BLOCK_PLACEHOLDER);\r\n }\r\n return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks);\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZG93X2Nzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21waWxlci9zaGFkb3dfY3NzLnRzIl0sIm5hbWVzIjpbIlNoYWRvd0NzcyIsIlNoYWRvd0Nzcy5jb25zdHJ1Y3RvciIsIlNoYWRvd0Nzcy5zaGltQ3NzVGV4dCIsIlNoYWRvd0Nzcy5faW5zZXJ0RGlyZWN0aXZlcyIsIlNoYWRvd0Nzcy5faW5zZXJ0UG9seWZpbGxEaXJlY3RpdmVzSW5Dc3NUZXh0IiwiU2hhZG93Q3NzLl9pbnNlcnRQb2x5ZmlsbFJ1bGVzSW5Dc3NUZXh0IiwiU2hhZG93Q3NzLl9zY29wZUNzc1RleHQiLCJTaGFkb3dDc3MuX2V4dHJhY3RVbnNjb3BlZFJ1bGVzRnJvbUNzc1RleHQiLCJTaGFkb3dDc3MuX2NvbnZlcnRDb2xvbkhvc3QiLCJTaGFkb3dDc3MuX2NvbnZlcnRDb2xvbkhvc3RDb250ZXh0IiwiU2hhZG93Q3NzLl9jb252ZXJ0Q29sb25SdWxlIiwiU2hhZG93Q3NzLl9jb2xvbkhvc3RDb250ZXh0UGFydFJlcGxhY2VyIiwiU2hhZG93Q3NzLl9jb2xvbkhvc3RQYXJ0UmVwbGFjZXIiLCJTaGFkb3dDc3MuX2NvbnZlcnRTaGFkb3dET01TZWxlY3RvcnMiLCJTaGFkb3dDc3MuX3Njb3BlU2VsZWN0b3JzIiwiU2hhZG93Q3NzLl9zY29wZVNlbGVjdG9yIiwiU2hhZG93Q3NzLl9zZWxlY3Rvck5lZWRzU2NvcGluZyIsIlNoYWRvd0Nzcy5fbWFrZVNjb3BlTWF0Y2hlciIsIlNoYWRvd0Nzcy5fYXBwbHlTZWxlY3RvclNjb3BlIiwiU2hhZG93Q3NzLl9hcHBseVNpbXBsZVNlbGVjdG9yU2NvcGUiLCJTaGFkb3dDc3MuX2FwcGx5U3RyaWN0U2VsZWN0b3JTY29wZSIsIlNoYWRvd0Nzcy5faW5zZXJ0UG9seWZpbGxIb3N0SW5Dc3NUZXh0Iiwic3RyaXBDb21tZW50cyIsIkNzc1J1bGUiLCJDc3NSdWxlLmNvbnN0cnVjdG9yIiwicHJvY2Vzc1J1bGVzIiwiU3RyaW5nV2l0aEVzY2FwZWRCbG9ja3MiLCJTdHJpbmdXaXRoRXNjYXBlZEJsb2Nrcy5jb25zdHJ1Y3RvciIsImVzY2FwZUJsb2NrcyJdLCJtYXBwaW5ncyI6IkFBQUEsMkJBQTBCLGdDQUFnQyxDQUFDLENBQUE7QUFDM0QscUJBT08sMEJBQTBCLENBQUMsQ0FBQTtBQUVsQzs7Ozs7Ozs7O0dBU0c7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpSEU7QUFFRjtJQUdFQTtRQUZBQyxrQkFBYUEsR0FBWUEsSUFBSUEsQ0FBQ0E7SUFFZkEsQ0FBQ0E7SUFFaEJEOzs7Ozs7O01BT0VBO0lBQ0ZBLCtCQUFXQSxHQUFYQSxVQUFZQSxPQUFlQSxFQUFFQSxRQUFnQkEsRUFBRUEsWUFBeUJBO1FBQXpCRSw0QkFBeUJBLEdBQXpCQSxpQkFBeUJBO1FBQ3RFQSxPQUFPQSxHQUFHQSxhQUFhQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQTtRQUNqQ0EsT0FBT0EsR0FBR0EsSUFBSUEsQ0FBQ0EsaUJBQWlCQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQTtRQUMxQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsYUFBYUEsQ0FBQ0EsT0FBT0EsRUFBRUEsUUFBUUEsRUFBRUEsWUFBWUEsQ0FBQ0EsQ0FBQ0E7SUFDN0RBLENBQUNBO0lBRU9GLHFDQUFpQkEsR0FBekJBLFVBQTBCQSxPQUFlQTtRQUN2Q0csT0FBT0EsR0FBR0EsSUFBSUEsQ0FBQ0Esa0NBQWtDQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQTtRQUMzREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsNkJBQTZCQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQTtJQUNyREEsQ0FBQ0E7SUFFREg7Ozs7Ozs7Ozs7Ozs7T0FhR0E7SUFDS0Esc0RBQWtDQSxHQUExQ0EsVUFBMkNBLE9BQWVBO1FB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QkEsQ0FBQ0E7UUFDREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsSUFBSUEsVUFBVUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDdkJBLFlBQVlBLEVBQUVBLENBQUNBO1FBQ2pCQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxpQkFBaUJBLENBQUNBLE1BQU1BLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQ2pDQSxhQUFhQSxDQUFDQSxJQUFJQSxDQUFDQSxpQkFBaUJBLENBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO1FBQy9DQSxXQUFXQSxDQUFDQSxJQUFJQSxDQUFDQSxpQkFBaUJBLENBQUNBLENBQUNBO0lBQ3RDQSxDQUFDQTtJQUNEQSxNQUFNQSxDQUFDQSxJQUFJQSx1QkFBdUJBLENBQUNBLFdBQVdBLENBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLEVBQUVBLGFBQWFBLENBQUNBLENBQUNBO0FBQzFFQSxDQUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1xuICBTdHJpbmdXcmFwcGVyLFxuICBSZWdFeHAsXG4gIFJlZ0V4cFdyYXBwZXIsXG4gIFJlZ0V4cE1hdGNoZXJXcmFwcGVyLFxuICBpc1ByZXNlbnQsXG4gIGlzQmxhbmtcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBUaGlzIGZpbGUgaXMgYSBwb3J0IG9mIHNoYWRvd0NTUyBmcm9tIHdlYmNvbXBvbmVudHMuanMgdG8gVHlwZVNjcmlwdC5cbiAqXG4gKiBQbGVhc2UgbWFrZSBzdXJlIHRvIGtlZXAgdG8gZWRpdHMgaW4gc3luYyB3aXRoIHRoZSBzb3VyY2UgZmlsZS5cbiAqXG4gKiBTb3VyY2U6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vd2ViY29tcG9uZW50cy93ZWJjb21wb25lbnRzanMvYmxvYi80ZWZlY2Q3ZTBlL3NyYy9TaGFkb3dDU1MvU2hhZG93Q1NTLmpzXG4gKlxuICogVGhlIG9yaWdpbmFsIGZpbGUgbGV2ZWwgY29tbWVudCBpcyByZXByb2R1Y2VkIGJlbG93XG4gKi9cblxuLypcbiAgVGhpcyBpcyBhIGxpbWl0ZWQgc2hpbSBmb3IgU2hhZG93RE9NIGNzcyBzdHlsaW5nLlxuICBodHRwczovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwjc3R5bGVzXG5cbiAgVGhlIGludGVudGlvbiBoZXJlIGlzIHRvIHN1cHBvcnQgb25seSB0aGUgc3R5bGluZyBmZWF0dXJlcyB3aGljaCBjYW4gYmVcbiAgcmVsYXRpdmVseSBzaW1wbHkgaW1wbGVtZW50ZWQuIFRoZSBnb2FsIGlzIHRvIGFsbG93IHVzZXJzIHRvIGF2b2lkIHRoZVxuICBtb3N0IG9idmlvdXMgcGl0ZmFsbHMgYW5kIGRvIHNvIHdpdGhvdXQgY29tcHJvbWlzaW5nIHBlcmZvcm1hbmNlIHNpZ25pZmljYW50bHkuXG4gIEZvciBTaGFkb3dET00gc3R5bGluZyB0aGF0J3Mgbm90IGNvdmVyZWQgaGVyZSwgYSBzZXQgb2YgYmVzdCBwcmFjdGljZXNcbiAgY2FuIGJlIHByb3ZpZGVkIHRoYXQgc2hvdWxkIGFsbG93IHVzZXJzIHRvIGFjY29tcGxpc2ggbW9yZSBjb21wbGV4IHN0eWxpbmcuXG5cbiAgVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2Ygc3BlY2lmaWMgU2hhZG93RE9NIHN0eWxpbmcgZmVhdHVyZXMgYW5kIGEgYnJpZWZcbiAgZGlzY3Vzc2lvbiBvZiB0aGUgYXBwcm9hY2ggdXNlZCB0byBzaGltLlxuXG4gIFNoaW1tZWQgZmVhdHVyZXM6XG5cbiAgKiA6aG9zdCwgOmhvc3QtY29udGV4dDogU2hhZG93RE9NIGFsbG93cyBzdHlsaW5nIG9mIHRoZSBzaGFkb3dSb290J3MgaG9zdFxuICBlbGVtZW50IHVzaW5nIHRoZSA6aG9zdCBydWxlLiBUbyBzaGltIHRoaXMgZmVhdHVyZSwgdGhlIDpob3N0IHN0eWxlcyBhcmVcbiAgcmVmb3JtYXR0ZWQgYW5kIHByZWZpeGVkIHdpdGggYSBnaXZlbiBzY29wZSBuYW1lIGFuZCBwcm9tb3RlZCB0byBhXG4gIGRvY3VtZW50IGxldmVsIHN0eWxlc2hlZXQuXG4gIEZvciBleGFtcGxlLCBnaXZlbiBhIHNjb3BlIG5hbWUgb2YgLmZvbywgYSBydWxlIGxpa2UgdGhpczpcblxuICAgIDpob3N0IHtcbiAgICAgICAgYmFja2dyb3VuZDogcmVkO1xuICAgICAgfVxuICAgIH1cblxuICBiZWNvbWVzOlxuXG4gICAgLmZvbyB7XG4gICAgICBiYWNrZ3JvdW5kOiByZWQ7XG4gICAgfVxuXG4gICogZW5jYXBzdWx0aW9uOiBTdHlsZXMgZGVmaW5lZCB3aXRoaW4gU2hhZG93RE9NLCBhcHBseSBvbmx5IHRvXG4gIGRvbSBpbnNpZGUgdGhlIFNoYWRvd0RPTS4gUG9seW1lciB1c2VzIG9uZSBvZiB0d28gdGVjaG5pcXVlcyB0byBpbXBsZW1lbnRcbiAgdGhpcyBmZWF0dXJlLlxuXG4gIEJ5IGRlZmF1bHQsIHJ1bGVzIGFyZSBwcmVmaXhlZCB3aXRoIHRoZSBob3N0IGVsZW1lbnQgdGFnIG5hbWVcbiAgYXMgYSBkZXNjZW5kYW50IHNlbGVjdG9yLiBUaGlzIGVuc3VyZXMgc3R5bGluZyBkb2VzIG5vdCBsZWFrIG91dCBvZiB0aGUgJ3RvcCdcbiAgb2YgdGhlIGVsZW1lbnQncyBTaGFkb3dET00uIEZvciBleGFtcGxlLFxuXG4gIGRpdiB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbiAgYmVjb21lczpcblxuICB4LWZvbyBkaXYge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuXG4gIGJlY29tZXM6XG5cblxuICBBbHRlcm5hdGl2ZWx5LCBpZiBXZWJDb21wb25lbnRzLlNoYWRvd0NTUy5zdHJpY3RTdHlsaW5nIGlzIHNldCB0byB0cnVlIHRoZW5cbiAgc2VsZWN0b3JzIGFyZSBzY29wZWQgYnkgYWRkaW5nIGFuIGF0dHJpYnV0ZSBzZWxlY3RvciBzdWZmaXggdG8gZWFjaFxuICBzaW1wbGUgc2VsZWN0b3IgdGhhdCBjb250YWlucyB0aGUgaG9zdCBlbGVtZW50IHRhZyBuYW1lLiBFYWNoIGVsZW1lbnRcbiAgaW4gdGhlIGVsZW1lbnQncyBTaGFkb3dET00gdGVtcGxhdGUgaXMgYWxzbyBnaXZlbiB0aGUgc2NvcGUgYXR0cmlidXRlLlxuICBUaHVzLCB0aGVzZSBydWxlcyBtYXRjaCBvbmx5IGVsZW1lbnRzIHRoYXQgaGF2ZSB0aGUgc2NvcGUgYXR0cmlidXRlLlxuICBGb3IgZXhhbXBsZSwgZ2l2ZW4gYSBzY29wZSBuYW1lIG9mIHgtZm9vLCBhIHJ1bGUgbGlrZSB0aGlzOlxuXG4gICAgZGl2IHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cblxuICBiZWNvbWVzOlxuXG4gICAgZGl2W3gtZm9vXSB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbiAgTm90ZSB0aGF0IGVsZW1lbnRzIHRoYXQgYXJlIGR5bmFtaWNhbGx5IGFkZGVkIHRvIGEgc2NvcGUgbXVzdCBoYXZlIHRoZSBzY29wZVxuICBzZWxlY3RvciBhZGRlZCB0byB0aGVtIG1hbnVhbGx5LlxuXG4gICogdXBwZXIvbG93ZXIgYm91bmQgZW5jYXBzdWxhdGlvbjogU3R5bGVzIHdoaWNoIGFyZSBkZWZpbmVkIG91dHNpZGUgYVxuICBzaGFkb3dSb290IHNob3VsZCBub3QgY3Jvc3MgdGhlIFNoYWRvd0RPTSBib3VuZGFyeSBhbmQgc2hvdWxkIG5vdCBhcHBseVxuICBpbnNpZGUgYSBzaGFkb3dSb290LlxuXG4gIFRoaXMgc3R5bGluZyBiZWhhdmlvciBpcyBub3QgZW11bGF0ZWQuIFNvbWUgcG9zc2libGUgd2F5cyB0byBkbyB0aGlzIHRoYXRcbiAgd2VyZSByZWplY3RlZCBkdWUgdG8gY29tcGxleGl0eSBhbmQvb3IgcGVyZm9ybWFuY2UgY29uY2VybnMgaW5jbHVkZTogKDEpIHJlc2V0XG4gIGV2ZXJ5IHBvc3NpYmxlIHByb3BlcnR5IGZvciBldmVyeSBwb3NzaWJsZSBzZWxlY3RvciBmb3IgYSBnaXZlbiBzY29wZSBuYW1lO1xuICAoMikgcmUtaW1wbGVtZW50IGNzcyBpbiBqYXZhc2NyaXB0LlxuXG4gIEFzIGFuIGFsdGVybmF0aXZlLCB1c2VycyBzaG91bGQgbWFrZSBzdXJlIHRvIHVzZSBzZWxlY3RvcnNcbiAgc3BlY2lmaWMgdG8gdGhlIHNjb3BlIGluIHdoaWNoIHRoZXkgYXJlIHdvcmtpbmcuXG5cbiAgKiA6OmRpc3RyaWJ1dGVkOiBUaGlzIGJlaGF2aW9yIGlzIG5vdCBlbXVsYXRlZC4gSXQncyBvZnRlbiBub3QgbmVjZXNzYXJ5XG4gIHRvIHN0eWxlIHRoZSBjb250ZW50cyBvZiBhIHNwZWNpZmljIGluc2VydGlvbiBwb2ludCBhbmQgaW5zdGVhZCwgZGVzY2VuZGFudHNcbiAgb2YgdGhlIGhvc3QgZWxlbWVudCBjYW4gYmUgc3R5bGVkIHNlbGVjdGl2ZWx5LiBVc2VycyBjYW4gYWxzbyBjcmVhdGUgYW5cbiAgZXh0cmEgbm9kZSBhcm91bmQgYW4gaW5zZXJ0aW9uIHBvaW50IGFuZCBzdHlsZSB0aGF0IG5vZGUncyBjb250ZW50c1xuICB2aWEgZGVzY2VuZGVudCBzZWxlY3RvcnMuIEZvciBleGFtcGxlLCB3aXRoIGEgc2hhZG93Um9vdCBsaWtlIHRoaXM6XG5cbiAgICA8c3R5bGU+XG4gICAgICA6OmNvbnRlbnQoZGl2KSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJlZDtcbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICAgIDxjb250ZW50PjwvY29udGVudD5cblxuICBjb3VsZCBiZWNvbWU6XG5cbiAgICA8c3R5bGU+XG4gICAgICAvICpAcG9seWZpbGwgLmNvbnRlbnQtY29udGFpbmVyIGRpdiAqIC9cbiAgICAgIDo6Y29udGVudChkaXYpIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmVkO1xuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY29udGFpbmVyXCI+XG4gICAgICA8Y29udGVudD48L2NvbnRlbnQ+XG4gICAgPC9kaXY+XG5cbiAgTm90ZSB0aGUgdXNlIG9mIEBwb2x5ZmlsbCBpbiB0aGUgY29tbWVudCBhYm92ZSBhIFNoYWRvd0RPTSBzcGVjaWZpYyBzdHlsZVxuICBkZWNsYXJhdGlvbi4gVGhpcyBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgc3R5bGluZyBzaGltIHRvIHVzZSB0aGUgc2VsZWN0b3JcbiAgaW4gY29tbWVudHMgaW4gbGlldSBvZiB0aGUgbmV4dCBzZWxlY3RvciB3aGVuIHJ1bm5pbmcgdW5kZXIgcG9seWZpbGwuXG4qL1xuXG5leHBvcnQgY2xhc3MgU2hhZG93Q3NzIHtcbiAgc3RyaWN0U3R5bGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qXG4gICogU2hpbSBzb21lIGNzc1RleHQgd2l0aCB0aGUgZ2l2ZW4gc2VsZWN0b3IuIFJldHVybnMgY3NzVGV4dCB0aGF0IGNhblxuICAqIGJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudCB2aWEgV2ViQ29tcG9uZW50cy5TaGFkb3dDU1MuYWRkQ3NzVG9Eb2N1bWVudChjc3MpLlxuICAqXG4gICogV2hlbiBzdHJpY3RTdHlsaW5nIGlzIHRydWU6XG4gICogLSBzZWxlY3RvciBpcyB0aGUgYXR0cmlidXRlIGFkZGVkIHRvIGFsbCBlbGVtZW50cyBpbnNpZGUgdGhlIGhvc3QsXG4gICogLSBob3N0U2VsZWN0b3IgaXMgdGhlIGF0dHJpYnV0ZSBhZGRlZCB0byB0aGUgaG9zdCBpdHNlbGYuXG4gICovXG4gIHNoaW1Dc3NUZXh0KGNzc1RleHQ6IHN0cmluZywgc2VsZWN0b3I6IHN0cmluZywgaG9zdFNlbGVjdG9yOiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgY3NzVGV4dCA9IHN0cmlwQ29tbWVudHMoY3NzVGV4dCk7XG4gICAgY3NzVGV4dCA9IHRoaXMuX2luc2VydERpcmVjdGl2ZXMoY3NzVGV4dCk7XG4gICAgcmV0dXJuIHRoaXMuX3Njb3BlQ3NzVGV4dChjc3NUZXh0LCBzZWxlY3RvciwgaG9zdFNlbGVjdG9yKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luc2VydERpcmVjdGl2ZXMoY3NzVGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjc3NUZXh0ID0gdGhpcy5faW5zZXJ0UG9seWZpbGxEaXJlY3RpdmVzSW5Dc3NUZXh0KGNzc1RleHQpO1xuICAgIHJldHVybiB0aGlzLl9pbnNlcnRQb2x5ZmlsbFJ1bGVzSW5Dc3NUZXh0KGNzc1RleHQpO1xuICB9XG5cbiAgLypcbiAgICogUHJvY2VzcyBzdHlsZXMgdG8gY29udmVydCBuYXRpdmUgU2hhZG93RE9NIHJ1bGVzIHRoYXQgd2lsbCB0cmlwXG4gICAqIHVwIHRoZSBjc3MgcGFyc2VyOyB3ZSByZWx5IG9uIGRlY29yYXRpbmcgdGhlIHN0eWxlc2hlZXQgd2l0aCBpbmVydCBydWxlcy5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIHdlIGNvbnZlcnQgdGhpcyBydWxlOlxuICAgKlxuICAgKiBwb2x5ZmlsbC1uZXh0LXNlbGVjdG9yIHsgY29udGVudDogJzpob3N0IG1lbnUtaXRlbSc7IH1cbiAgICogOjpjb250ZW50IG1lbnUtaXRlbSB7XG4gICAqXG4gICAqIHRvIHRoaXM6XG4gICAqXG4gICAqIHNjb3BlTmFtZSBtZW51LWl0ZW0ge1xuICAgKlxuICAqKi9cbiAgcHJpdmF0ZSBfaW5zZXJ0UG9seWZpbGxEaXJlY3RpdmVzSW5Dc3NUZXh0KGNzc1RleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gRGlmZmVyZW5jZSB3aXRoIHdlYmNvbXBvbmVudHMuanM6IGRvZXMgbm90IGhhbmRsZSBjb21tZW50c1xuICAgIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGxNYXBwZWQoY3NzVGV4dCwgX2Nzc0NvbnRlbnROZXh0U2VsZWN0b3JSZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG1bMV0gKyAneyc7IH0pO1xuICB9XG5cbiAgLypcbiAgICogUHJvY2VzcyBzdHlsZXMgdG8gYWRkIHJ1bGVzIHdoaWNoIHdpbGwgb25seSBhcHBseSB1bmRlciB0aGUgcG9seWZpbGxcbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIHdlIGNvbnZlcnQgdGhpcyBydWxlOlxuICAgKlxuICAgKiBwb2x5ZmlsbC1ydWxlIHtcbiAgICogICBjb250ZW50OiAnOmhvc3QgbWVudS1pdGVtJztcbiAgICogLi4uXG4gICAqIH1cbiAgICpcbiAgICogdG8gdGhpczpcbiAgICpcbiAgICogc2NvcGVOYW1lIG1lbnUtaXRlbSB7Li4ufVxuICAgKlxuICAqKi9cbiAgcHJpdmF0ZSBfaW5zZXJ0UG9seWZpbGxSdWxlc0luQ3NzVGV4dChjc3NUZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIERpZmZlcmVuY2Ugd2l0aCB3ZWJjb21wb25lbnRzLmpzOiBkb2VzIG5vdCBoYW5kbGUgY29tbWVudHNcbiAgICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsTWFwcGVkKGNzc1RleHQsIF9jc3NDb250ZW50UnVsZVJlLCBmdW5jdGlvbihtKSB7XG4gICAgICB2YXIgcnVsZSA9IG1bMF07XG4gICAgICBydWxlID0gU3RyaW5nV3JhcHBlci5yZXBsYWNlKHJ1bGUsIG1bMV0sICcnKTtcbiAgICAgIHJ1bGUgPSBTdHJpbmdXcmFwcGVyLnJlcGxhY2UocnVsZSwgbVsyXSwgJycpO1xuICAgICAgcmV0dXJuIG1bM10gKyBydWxlO1xuICAgIH0pO1xuICB9XG5cbiAgLyogRW5zdXJlIHN0eWxlcyBhcmUgc2NvcGVkLiBQc2V1ZG8tc2NvcGluZyB0YWtlcyBhIHJ1bGUgbGlrZTpcbiAgICpcbiAgICogIC5mb28gey4uLiB9XG4gICAqXG4gICAqICBhbmQgY29udmVydHMgdGhpcyB0b1xuICAgKlxuICAgKiAgc2NvcGVOYW1lIC5mb28geyAuLi4gfVxuICAqL1xuICBwcml2YXRlIF9zY29wZUNzc1RleHQoY3NzVGV4dDogc3RyaW5nLCBzY29wZVNlbGVjdG9yOiBzdHJpbmcsIGhvc3RTZWxlY3Rvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB2YXIgdW5zY29wZWQgPSB0aGlzLl9leHRyYWN0VW5zY29wZWRSdWxlc0Zyb21Dc3NUZXh0KGNzc1RleHQpO1xuICAgIGNzc1RleHQgPSB0aGlzLl9pbnNlcnRQb2x5ZmlsbEhvc3RJbkNzc1RleHQoY3NzVGV4dCk7XG4gICAgY3NzVGV4dCA9IHRoaXMuX2NvbnZlcnRDb2xvbkhvc3QoY3NzVGV4dCk7XG4gICAgY3NzVGV4dCA9IHRoaXMuX2NvbnZlcnRDb2xvbkhvc3RDb250ZXh0KGNzc1RleHQpO1xuICAgIGNzc1RleHQgPSB0aGlzLl9jb252ZXJ0U2hhZG93RE9NU2VsZWN0b3JzKGNzc1RleHQpO1xuICAgIGlmIChpc1ByZXNlbnQoc2NvcGVTZWxlY3RvcikpIHtcbiAgICAgIGNzc1RleHQgPSB0aGlzLl9zY29wZVNlbGVjdG9ycyhjc3NUZXh0LCBzY29wZVNlbGVjdG9yLCBob3N0U2VsZWN0b3IpO1xuICAgIH1cbiAgICBjc3NUZXh0ID0gY3NzVGV4dCArICdcXG4nICsgdW5zY29wZWQ7XG4gICAgcmV0dXJuIGNzc1RleHQudHJpbSgpO1xuICB9XG5cbiAgLypcbiAgICogUHJvY2VzcyBzdHlsZXMgdG8gYWRkIHJ1bGVzIHdoaWNoIHdpbGwgb25seSBhcHBseSB1bmRlciB0aGUgcG9seWZpbGxcbiAgICogYW5kIGRvIG5vdCBwcm9jZXNzIHZpYSBDU1NPTS4gKENTU09NIGlzIGRlc3RydWN0aXZlIHRvIHJ1bGVzIG9uIHJhcmVcbiAgICogb2NjYXNpb25zLCBlLmcuIC13ZWJraXQtY2FsYyBvbiBTYWZhcmkuKVxuICAgKiBGb3IgZXhhbXBsZSwgd2UgY29udmVydCB0aGlzIHJ1bGU6XG4gICAqXG4gICAqIEBwb2x5ZmlsbC11bnNjb3BlZC1ydWxlIHtcbiAgICogICBjb250ZW50OiAnbWVudS1pdGVtJztcbiAgICogLi4uIH1cbiAgICpcbiAgICogdG8gdGhpczpcbiAgICpcbiAgICogbWVudS1pdGVtIHsuLi59XG4gICAqXG4gICoqL1xuICBwcml2YXRlIF9leHRyYWN0VW5zY29wZWRSdWxlc0Zyb21Dc3NUZXh0KGNzc1RleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gRGlmZmVyZW5jZSB3aXRoIHdlYmNvbXBvbmVudHMuanM6IGRvZXMgbm90IGhhbmRsZSBjb21tZW50c1xuICAgIHZhciByID0gJycsIG07XG4gICAgdmFyIG1hdGNoZXIgPSBSZWdFeHBXcmFwcGVyLm1hdGNoZXIoX2Nzc0NvbnRlbnRVbnNjb3BlZFJ1bGVSZSwgY3NzVGV4dCk7XG4gICAgd2hpbGUgKGlzUHJlc2VudChtID0gUmVnRXhwTWF0Y2hlcldyYXBwZXIubmV4dChtYXRjaGVyKSkpIHtcbiAgICAgIHZhciBydWxlID0gbVswXTtcbiAgICAgIHJ1bGUgPSBTdHJpbmdXcmFwcGVyLnJlcGxhY2UocnVsZSwgbVsyXSwgJycpO1xuICAgICAgcnVsZSA9IFN0cmluZ1dyYXBwZXIucmVwbGFjZShydWxlLCBtWzFdLCBtWzNdKTtcbiAgICAgIHIgKz0gcnVsZSArICdcXG5cXG4nO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIC8qXG4gICAqIGNvbnZlcnQgYSBydWxlIGxpa2UgOmhvc3QoLmZvbykgPiAuYmFyIHsgfVxuICAgKlxuICAgKiB0b1xuICAgKlxuICAgKiBzY29wZU5hbWUuZm9vID4gLmJhclxuICAqL1xuICBwcml2YXRlIF9jb252ZXJ0Q29sb25Ib3N0KGNzc1RleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRDb2xvblJ1bGUoY3NzVGV4dCwgX2Nzc0NvbG9uSG9zdFJlLCB0aGlzLl9jb2xvbkhvc3RQYXJ0UmVwbGFjZXIpO1xuICB9XG5cbiAgLypcbiAgICogY29udmVydCBhIHJ1bGUgbGlrZSA6aG9zdC1jb250ZXh0KC5mb28pID4gLmJhciB7IH1cbiAgICpcbiAgICogdG9cbiAgICpcbiAgICogc2NvcGVOYW1lLmZvbyA+IC5iYXIsIC5mb28gc2NvcGVOYW1lID4gLmJhciB7IH1cbiAgICpcbiAgICogYW5kXG4gICAqXG4gICAqIDpob3N0LWNvbnRleHQoLmZvbzpob3N0KSAuYmFyIHsgLi4uIH1cbiAgICpcbiAgICogdG9cbiAgICpcbiAgICogc2NvcGVOYW1lLmZvbyAuYmFyIHsgLi4uIH1cbiAgKi9cbiAgcHJpdmF0ZSBfY29udmVydENvbG9uSG9zdENvbnRleHQoY3NzVGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29udmVydENvbG9uUnVsZShjc3NUZXh0LCBfY3NzQ29sb25Ib3N0Q29udGV4dFJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbG9uSG9zdENvbnRleHRQYXJ0UmVwbGFjZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29udmVydENvbG9uUnVsZShjc3NUZXh0OiBzdHJpbmcsIHJlZ0V4cDogUmVnRXhwLCBwYXJ0UmVwbGFjZXI6IEZ1bmN0aW9uKTogc3RyaW5nIHtcbiAgICAvLyBwMSA9IDpob3N0LCBwMiA9IGNvbnRlbnRzIG9mICgpLCBwMyByZXN0IG9mIHJ1bGVcbiAgICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsTWFwcGVkKGNzc1RleHQsIHJlZ0V4cCwgZnVuY3Rpb24obSkge1xuICAgICAgaWYgKGlzUHJlc2VudChtWzJdKSkge1xuICAgICAgICB2YXIgcGFydHMgPSBtWzJdLnNwbGl0KCcsJyksIHIgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBwID0gcGFydHNbaV07XG4gICAgICAgICAgaWYgKGlzQmxhbmsocCkpIGJyZWFrO1xuICAgICAgICAgIHAgPSBwLnRyaW0oKTtcbiAgICAgICAgICByLnB1c2gocGFydFJlcGxhY2VyKF9wb2x5ZmlsbEhvc3ROb0NvbWJpbmF0b3IsIHAsIG1bM10pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gci5qb2luKCcsJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gX3BvbHlmaWxsSG9zdE5vQ29tYmluYXRvciArIG1bM107XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jb2xvbkhvc3RDb250ZXh0UGFydFJlcGxhY2VyKGhvc3Q6IHN0cmluZywgcGFydDogc3RyaW5nLCBzdWZmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKFN0cmluZ1dyYXBwZXIuY29udGFpbnMocGFydCwgX3BvbHlmaWxsSG9zdCkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jb2xvbkhvc3RQYXJ0UmVwbGFjZXIoaG9zdCwgcGFydCwgc3VmZml4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGhvc3QgKyBwYXJ0ICsgc3VmZml4ICsgJywgJyArIHBhcnQgKyAnICcgKyBob3N0ICsgc3VmZml4O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbG9uSG9zdFBhcnRSZXBsYWNlcihob3N0OiBzdHJpbmcsIHBhcnQ6IHN0cmluZywgc3VmZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBob3N0ICsgU3RyaW5nV3JhcHBlci5yZXBsYWNlKHBhcnQsIF9wb2x5ZmlsbEhvc3QsICcnKSArIHN1ZmZpeDtcbiAgfVxuXG4gIC8qXG4gICAqIENvbnZlcnQgY29tYmluYXRvcnMgbGlrZSA6OnNoYWRvdyBhbmQgcHNldWRvLWVsZW1lbnRzIGxpa2UgOjpjb250ZW50XG4gICAqIGJ5IHJlcGxhY2luZyB3aXRoIHNwYWNlLlxuICAqL1xuICBwcml2YXRlIF9jb252ZXJ0U2hhZG93RE9NU2VsZWN0b3JzKGNzc1RleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfc2hhZG93RE9NU2VsZWN0b3JzUmUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNzc1RleHQgPSBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGwoY3NzVGV4dCwgX3NoYWRvd0RPTVNlbGVjdG9yc1JlW2ldLCAnICcpO1xuICAgIH1cbiAgICByZXR1cm4gY3NzVGV4dDtcbiAgfVxuXG4gIC8vIGNoYW5nZSBhIHNlbGVjdG9yIGxpa2UgJ2RpdicgdG8gJ25hbWUgZGl2J1xuICBwcml2YXRlIF9zY29wZVNlbGVjdG9ycyhjc3NUZXh0OiBzdHJpbmcsIHNjb3BlU2VsZWN0b3I6IHN0cmluZywgaG9zdFNlbGVjdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwcm9jZXNzUnVsZXMoY3NzVGV4dCwgKHJ1bGU6IENzc1J1bGUpID0+IHtcbiAgICAgIHZhciBzZWxlY3RvciA9IHJ1bGUuc2VsZWN0b3I7XG4gICAgICB2YXIgY29udGVudCA9IHJ1bGUuY29udGVudDtcbiAgICAgIGlmIChydWxlLnNlbGVjdG9yWzBdICE9ICdAJyB8fCBydWxlLnNlbGVjdG9yLnN0YXJ0c1dpdGgoJ0BwYWdlJykpIHtcbiAgICAgICAgc2VsZWN0b3IgPVxuICAgICAgICAgICAgdGhpcy5fc2NvcGVTZWxlY3RvcihydWxlLnNlbGVjdG9yLCBzY29wZVNlbGVjdG9yLCBob3N0U2VsZWN0b3IsIHRoaXMuc3RyaWN0U3R5bGluZyk7XG4gICAgICB9IGVsc2UgaWYgKHJ1bGUuc2VsZWN0b3Iuc3RhcnRzV2l0aCgnQG1lZGlhJykpIHtcbiAgICAgICAgY29udGVudCA9IHRoaXMuX3Njb3BlU2VsZWN0b3JzKHJ1bGUuY29udGVudCwgc2NvcGVTZWxlY3RvciwgaG9zdFNlbGVjdG9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgQ3NzUnVsZShzZWxlY3RvciwgY29udGVudCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zY29wZVNlbGVjdG9yKHNlbGVjdG9yOiBzdHJpbmcsIHNjb3BlU2VsZWN0b3I6IHN0cmluZywgaG9zdFNlbGVjdG9yOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB2YXIgciA9IFtdLCBwYXJ0cyA9IHNlbGVjdG9yLnNwbGl0KCcsJyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHAgPSBwYXJ0c1tpXS50cmltKCk7XG4gICAgICB2YXIgZGVlcFBhcnRzID0gU3RyaW5nV3JhcHBlci5zcGxpdChwLCBfc2hhZG93RGVlcFNlbGVjdG9ycyk7XG4gICAgICB2YXIgc2hhbGxvd1BhcnQgPSBkZWVwUGFydHNbMF07XG4gICAgICBpZiAodGhpcy5fc2VsZWN0b3JOZWVkc1Njb3Bpbmcoc2hhbGxvd1BhcnQsIHNjb3BlU2VsZWN0b3IpKSB7XG4gICAgICAgIGRlZXBQYXJ0c1swXSA9IHN0cmljdCAmJiAhU3RyaW5nV3JhcHBlci5jb250YWlucyhzaGFsbG93UGFydCwgX3BvbHlmaWxsSG9zdE5vQ29tYmluYXRvcikgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlTdHJpY3RTZWxlY3RvclNjb3BlKHNoYWxsb3dQYXJ0LCBzY29wZVNlbGVjdG9yKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHBseVNlbGVjdG9yU2NvcGUoc2hhbGxvd1BhcnQsIHNjb3BlU2VsZWN0b3IsIGhvc3RTZWxlY3Rvcik7XG4gICAgICB9XG4gICAgICAvLyByZXBsYWNlIC9kZWVwLyB3aXRoIGEgc3BhY2UgZm9yIGNoaWxkIHNlbGVjdG9yc1xuICAgICAgci5wdXNoKGRlZXBQYXJ0cy5qb2luKCcgJykpO1xuICAgIH1cbiAgICByZXR1cm4gci5qb2luKCcsICcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0b3JOZWVkc1Njb3Bpbmcoc2VsZWN0b3I6IHN0cmluZywgc2NvcGVTZWxlY3Rvcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdmFyIHJlID0gdGhpcy5fbWFrZVNjb3BlTWF0Y2hlcihzY29wZVNlbGVjdG9yKTtcbiAgICByZXR1cm4gIWlzUHJlc2VudChSZWdFeHBXcmFwcGVyLmZpcnN0TWF0Y2gocmUsIHNlbGVjdG9yKSk7XG4gIH1cblxuICBwcml2YXRlIF9tYWtlU2NvcGVNYXRjaGVyKHNjb3BlU2VsZWN0b3I6IHN0cmluZyk6IFJlZ0V4cCB7XG4gICAgdmFyIGxyZSA9IC9cXFsvZztcbiAgICB2YXIgcnJlID0gL1xcXS9nO1xuICAgIHNjb3BlU2VsZWN0b3IgPSBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGwoc2NvcGVTZWxlY3RvciwgbHJlLCAnXFxcXFsnKTtcbiAgICBzY29wZVNlbGVjdG9yID0gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsKHNjb3BlU2VsZWN0b3IsIHJyZSwgJ1xcXFxdJyk7XG4gICAgcmV0dXJuIFJlZ0V4cFdyYXBwZXIuY3JlYXRlKCdeKCcgKyBzY29wZVNlbGVjdG9yICsgJyknICsgX3NlbGVjdG9yUmVTdWZmaXgsICdtJyk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseVNlbGVjdG9yU2NvcGUoc2VsZWN0b3I6IHN0cmluZywgc2NvcGVTZWxlY3Rvcjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdFNlbGVjdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIERpZmZlcmVuY2UgZnJvbSB3ZWJjb21wb25lbnRzanM6IHNjb3BlU2VsZWN0b3IgY291bGQgbm90IGJlIGFuIGFycmF5XG4gICAgcmV0dXJuIHRoaXMuX2FwcGx5U2ltcGxlU2VsZWN0b3JTY29wZShzZWxlY3Rvciwgc2NvcGVTZWxlY3RvciwgaG9zdFNlbGVjdG9yKTtcbiAgfVxuXG4gIC8vIHNjb3BlIHZpYSBuYW1lIGFuZCBbaXM9bmFtZV1cbiAgcHJpdmF0ZSBfYXBwbHlTaW1wbGVTZWxlY3RvclNjb3BlKHNlbGVjdG9yOiBzdHJpbmcsIHNjb3BlU2VsZWN0b3I6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RTZWxlY3Rvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoaXNQcmVzZW50KFJlZ0V4cFdyYXBwZXIuZmlyc3RNYXRjaChfcG9seWZpbGxIb3N0UmUsIHNlbGVjdG9yKSkpIHtcbiAgICAgIHZhciByZXBsYWNlQnkgPSB0aGlzLnN0cmljdFN0eWxpbmcgPyBgWyR7aG9zdFNlbGVjdG9yfV1gIDogc2NvcGVTZWxlY3RvcjtcbiAgICAgIHNlbGVjdG9yID0gU3RyaW5nV3JhcHBlci5yZXBsYWNlKHNlbGVjdG9yLCBfcG9seWZpbGxIb3N0Tm9Db21iaW5hdG9yLCByZXBsYWNlQnkpO1xuICAgICAgcmV0dXJuIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbChzZWxlY3RvciwgX3BvbHlmaWxsSG9zdFJlLCByZXBsYWNlQnkgKyAnICcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc2NvcGVTZWxlY3RvciArICcgJyArIHNlbGVjdG9yO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJldHVybiBhIHNlbGVjdG9yIHdpdGggW25hbWVdIHN1ZmZpeCBvbiBlYWNoIHNpbXBsZSBzZWxlY3RvclxuICAvLyBlLmcuIC5mb28uYmFyID4gLnpvdCBiZWNvbWVzIC5mb29bbmFtZV0uYmFyW25hbWVdID4gLnpvdFtuYW1lXSAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9hcHBseVN0cmljdFNlbGVjdG9yU2NvcGUoc2VsZWN0b3I6IHN0cmluZywgc2NvcGVTZWxlY3Rvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB2YXIgaXNSZSA9IC9cXFtpcz0oW15cXF1dKilcXF0vZztcbiAgICBzY29wZVNlbGVjdG9yID0gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsTWFwcGVkKHNjb3BlU2VsZWN0b3IsIGlzUmUsIChtKSA9PiBtWzFdKTtcbiAgICB2YXIgc3BsaXRzID0gWycgJywgJz4nLCAnKycsICd+J10sIHNjb3BlZCA9IHNlbGVjdG9yLCBhdHRyTmFtZSA9ICdbJyArIHNjb3BlU2VsZWN0b3IgKyAnXSc7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzcGxpdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZXAgPSBzcGxpdHNbaV07XG4gICAgICB2YXIgcGFydHMgPSBzY29wZWQuc3BsaXQoc2VwKTtcbiAgICAgIHNjb3BlZCA9IHBhcnRzLm1hcChwID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgOmhvc3Qgc2luY2UgaXQgc2hvdWxkIGJlIHVubmVjZXNzYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGwocC50cmltKCksIF9wb2x5ZmlsbEhvc3RSZSwgJycpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lmxlbmd0aCA+IDAgJiYgIUxpc3RXcmFwcGVyLmNvbnRhaW5zKHNwbGl0cywgdCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIVN0cmluZ1dyYXBwZXIuY29udGFpbnModCwgYXR0ck5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmUgPSAvKFteOl0qKSg6KikoLiopL2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IFJlZ0V4cFdyYXBwZXIuZmlyc3RNYXRjaChyZSwgdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcmVzZW50KG0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBtWzFdICsgYXR0ck5hbWUgKyBtWzJdICsgbVszXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgLmpvaW4oc2VwKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlZDtcbiAgfVxuXG4gIHByaXZhdGUgX2luc2VydFBvbHlmaWxsSG9zdEluQ3NzVGV4dChzZWxlY3Rvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzZWxlY3RvciA9IFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbChzZWxlY3RvciwgX2NvbG9uSG9zdENvbnRleHRSZSwgX3BvbHlmaWxsSG9zdENvbnRleHQpO1xuICAgIHNlbGVjdG9yID0gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsKHNlbGVjdG9yLCBfY29sb25Ib3N0UmUsIF9wb2x5ZmlsbEhvc3QpO1xuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxufVxudmFyIF9jc3NDb250ZW50TmV4dFNlbGVjdG9yUmUgPVxuICAgIC9wb2x5ZmlsbC1uZXh0LXNlbGVjdG9yW159XSpjb250ZW50OltcXHNdKj9bJ1wiXSguKj8pWydcIl1bO1xcc10qfShbXntdKj8pey9naW07XG52YXIgX2Nzc0NvbnRlbnRSdWxlUmUgPSAvKHBvbHlmaWxsLXJ1bGUpW159XSooY29udGVudDpbXFxzXSpbJ1wiXSguKj8pWydcIl0pWztcXHNdKltefV0qfS9naW07XG52YXIgX2Nzc0NvbnRlbnRVbnNjb3BlZFJ1bGVSZSA9XG4gICAgLyhwb2x5ZmlsbC11bnNjb3BlZC1ydWxlKVtefV0qKGNvbnRlbnQ6W1xcc10qWydcIl0oLio/KVsnXCJdKVs7XFxzXSpbXn1dKn0vZ2ltO1xudmFyIF9wb2x5ZmlsbEhvc3QgPSAnLXNoYWRvd2Nzc2hvc3QnO1xuLy8gbm90ZTogOmhvc3QtY29udGV4dCBwcmUtcHJvY2Vzc2VkIHRvIC1zaGFkb3djc3Nob3N0Y29udGV4dC5cbnZhciBfcG9seWZpbGxIb3N0Q29udGV4dCA9ICctc2hhZG93Y3NzY29udGV4dCc7XG52YXIgX3BhcmVuU3VmZml4ID0gJykoPzpcXFxcKCgnICtcbiAgICAgICAgICAgICAgICAgICAnKD86XFxcXChbXikoXSpcXFxcKXxbXikoXSopKz8nICtcbiAgICAgICAgICAgICAgICAgICAnKVxcXFwpKT8oW14se10qKSc7XG52YXIgX2Nzc0NvbG9uSG9zdFJlID0gUmVnRXhwV3JhcHBlci5jcmVhdGUoJygnICsgX3BvbHlmaWxsSG9zdCArIF9wYXJlblN1ZmZpeCwgJ2ltJyk7XG52YXIgX2Nzc0NvbG9uSG9zdENvbnRleHRSZSA9IFJlZ0V4cFdyYXBwZXIuY3JlYXRlKCcoJyArIF9wb2x5ZmlsbEhvc3RDb250ZXh0ICsgX3BhcmVuU3VmZml4LCAnaW0nKTtcbnZhciBfcG9seWZpbGxIb3N0Tm9Db21iaW5hdG9yID0gX3BvbHlmaWxsSG9zdCArICctbm8tY29tYmluYXRvcic7XG52YXIgX3NoYWRvd0RPTVNlbGVjdG9yc1JlID0gW1xuICAvOjpzaGFkb3cvZyxcbiAgLzo6Y29udGVudC9nLFxuICAvLyBEZXByZWNhdGVkIHNlbGVjdG9yc1xuICAvLyBUT0RPKHZpY2IpOiBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY2xhbmctZm9ybWF0L2lzc3Vlcy8xNlxuICAvLyBjbGFuZy1mb3JtYXQgb2ZmXG4gIC9cXC9zaGFkb3ctZGVlcFxcLy9nLCAgLy8gZm9ybWVyIC9kZWVwL1xuICAvXFwvc2hhZG93XFwvL2csICAgICAgIC8vIGZvcm1lciA6OnNoYWRvd1xuICAvLyBjbGFuZi1mb3JtYXQgb25cbl07XG52YXIgX3NoYWRvd0RlZXBTZWxlY3RvcnMgPSAvKD86Pj4+KXwoPzpcXC9kZWVwXFwvKS9nO1xudmFyIF9zZWxlY3RvclJlU3VmZml4ID0gJyhbPlxcXFxzfitcXFsuLHs6XVtcXFxcc1xcXFxTXSopPyQnO1xudmFyIF9wb2x5ZmlsbEhvc3RSZSA9IFJlZ0V4cFdyYXBwZXIuY3JlYXRlKF9wb2x5ZmlsbEhvc3QsICdpbScpO1xudmFyIF9jb2xvbkhvc3RSZSA9IC86aG9zdC9naW07XG52YXIgX2NvbG9uSG9zdENvbnRleHRSZSA9IC86aG9zdC1jb250ZXh0L2dpbTtcblxudmFyIF9jb21tZW50UmUgPSAvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nO1xuXG5mdW5jdGlvbiBzdHJpcENvbW1lbnRzKGlucHV0OnN0cmluZyk6c3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbE1hcHBlZChpbnB1dCwgX2NvbW1lbnRSZSwgKF8pID0+ICcnKTtcbn1cblxudmFyIF9ydWxlUmUgPSAvKFxccyopKFteO1xce1xcfV0rPykoXFxzKikoKD86eyVCTE9DSyV9P1xccyo7Pyl8KD86XFxzKjspKS9nO1xudmFyIF9jdXJseVJlID0gLyhbe31dKS9nO1xuY29uc3QgT1BFTl9DVVJMWSA9ICd7JztcbmNvbnN0IENMT1NFX0NVUkxZID0gJ30nO1xuY29uc3QgQkxPQ0tfUExBQ0VIT0xERVIgPSAnJUJMT0NLJSc7XG5cbmV4cG9ydCBjbGFzcyBDc3NSdWxlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHNlbGVjdG9yOnN0cmluZywgcHVibGljIGNvbnRlbnQ6c3RyaW5nKSB7fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc1J1bGVzKGlucHV0OnN0cmluZywgcnVsZUNhbGxiYWNrOkZ1bmN0aW9uKTpzdHJpbmcge1xuICB2YXIgaW5wdXRXaXRoRXNjYXBlZEJsb2NrcyA9IGVzY2FwZUJsb2NrcyhpbnB1dCk7XG4gIHZhciBuZXh0QmxvY2tJbmRleCA9IDA7XG4gIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGxNYXBwZWQoaW5wdXRXaXRoRXNjYXBlZEJsb2Nrcy5lc2NhcGVkU3RyaW5nLCBfcnVsZVJlLCBmdW5jdGlvbihtKSB7XG4gICAgdmFyIHNlbGVjdG9yID0gbVsyXTtcbiAgICB2YXIgY29udGVudCA9ICcnO1xuICAgIHZhciBzdWZmaXggPSBtWzRdO1xuICAgIHZhciBjb250ZW50UHJlZml4ID0gJyc7XG4gICAgaWYgKGlzUHJlc2VudChtWzRdKSAmJiBtWzRdLnN0YXJ0c1dpdGgoJ3snK0JMT0NLX1BMQUNFSE9MREVSKSkge1xuICAgICAgY29udGVudCA9IGlucHV0V2l0aEVzY2FwZWRCbG9ja3MuYmxvY2tzW25leHRCbG9ja0luZGV4KytdO1xuICAgICAgc3VmZml4ID0gbVs0XS5zdWJzdHJpbmcoQkxPQ0tfUExBQ0VIT0xERVIubGVuZ3RoKzEpO1xuICAgICAgY29udGVudFByZWZpeCA9ICd7JztcbiAgICB9XG4gICAgdmFyIHJ1bGUgPSBydWxlQ2FsbGJhY2sobmV3IENzc1J1bGUoc2VsZWN0b3IsIGNvbnRlbnQpKTtcbiAgICByZXR1cm4gYCR7bVsxXX0ke3J1bGUuc2VsZWN0b3J9JHttWzNdfSR7Y29udGVudFByZWZpeH0ke3J1bGUuY29udGVudH0ke3N1ZmZpeH1gO1xuICB9KTtcbn1cblxuY2xhc3MgU3RyaW5nV2l0aEVzY2FwZWRCbG9ja3Mge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZXNjYXBlZFN0cmluZzpzdHJpbmcsIHB1YmxpYyBibG9ja3M6c3RyaW5nW10pIHt9XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUJsb2NrcyhpbnB1dDpzdHJpbmcpOlN0cmluZ1dpdGhFc2NhcGVkQmxvY2tzIHtcbiAgdmFyIGlucHV0UGFydHMgPSBTdHJpbmdXcmFwcGVyLnNwbGl0KGlucHV0LCBfY3VybHlSZSk7XG4gIHZhciByZXN1bHRQYXJ0cyA9IFtdO1xuICB2YXIgZXNjYXBlZEJsb2NrcyA9IFtdO1xuICB2YXIgYnJhY2tldENvdW50ID0gMDtcbiAgdmFyIGN1cnJlbnRCbG9ja1BhcnRzID0gW107XG4gIGZvciAodmFyIHBhcnRJbmRleCA9IDA7IHBhcnRJbmRleDxpbnB1dFBhcnRzLmxlbmd0aDsgcGFydEluZGV4KyspIHtcbiAgICB2YXIgcGFydCA9IGlucHV0UGFydHNbcGFydEluZGV4XTtcbiAgICBpZiAocGFydCA9PSBDTE9TRV9DVVJMWSkge1xuICAgICAgYnJhY2tldENvdW50LS07XG4gICAgfVxuICAgIGlmIChicmFja2V0Q291bnQgPiAwKSB7XG4gICAgICBjdXJyZW50QmxvY2tQYXJ0cy5wdXNoKHBhcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY3VycmVudEJsb2NrUGFydHMubGVuZ3RoID4gMCkge1xuICAgICAgICBlc2NhcGVkQmxvY2tzLnB1c2goY3VycmVudEJsb2NrUGFydHMuam9pbignJykpO1xuICAgICAgICByZXN1bHRQYXJ0cy5wdXNoKEJMT0NLX1BMQUNFSE9MREVSKTtcbiAgICAgICAgY3VycmVudEJsb2NrUGFydHMgPSBbXTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdFBhcnRzLnB1c2gocGFydCk7XG4gICAgfVxuICAgIGlmIChwYXJ0ID09IE9QRU5fQ1VSTFkpIHtcbiAgICAgIGJyYWNrZXRDb3VudCsrO1xuICAgIH1cbiAgfVxuICBpZiAoY3VycmVudEJsb2NrUGFydHMubGVuZ3RoID4gMCkge1xuICAgIGVzY2FwZWRCbG9ja3MucHVzaChjdXJyZW50QmxvY2tQYXJ0cy5qb2luKCcnKSk7XG4gICAgcmVzdWx0UGFydHMucHVzaChCTE9DS19QTEFDRUhPTERFUik7XG4gIH1cbiAgcmV0dXJuIG5ldyBTdHJpbmdXaXRoRXNjYXBlZEJsb2NrcyhyZXN1bHRQYXJ0cy5qb2luKCcnKSwgZXNjYXBlZEJsb2Nrcyk7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar source_module_1 = require('./source_module');\r\nvar view_1 = require('angular2/src/core/metadata/view');\r\nvar xhr_1 = require('angular2/src/compiler/xhr');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar shadow_css_1 = require('angular2/src/compiler/shadow_css');\r\nvar url_resolver_1 = require('angular2/src/compiler/url_resolver');\r\nvar style_url_resolver_1 = require('./style_url_resolver');\r\nvar util_1 = require('./util');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar COMPONENT_VARIABLE = '%COMP%';\r\nvar HOST_ATTR = \"_nghost-\" + COMPONENT_VARIABLE;\r\nvar CONTENT_ATTR = \"_ngcontent-\" + COMPONENT_VARIABLE;\r\nvar StyleCompiler = (function () {\r\n function StyleCompiler(_xhr, _urlResolver) {\r\n this._xhr = _xhr;\r\n this._urlResolver = _urlResolver;\r\n this._styleCache = new Map();\r\n this._shadowCss = new shadow_css_1.ShadowCss();\r\n }\r\n StyleCompiler.prototype.compileComponentRuntime = function (template) {\r\n var styles = template.styles;\r\n var styleAbsUrls = template.styleUrls;\r\n return this._loadStyles(styles, styleAbsUrls, template.encapsulation === view_1.ViewEncapsulation.Emulated);\r\n };\r\n StyleCompiler.prototype.compileComponentCodeGen = function (template) {\r\n var shim = template.encapsulation === view_1.ViewEncapsulation.Emulated;\r\n return this._styleCodeGen(template.styles, template.styleUrls, shim);\r\n };\r\n StyleCompiler.prototype.compileStylesheetCodeGen = function (stylesheetUrl, cssText) {\r\n var styleWithImports = style_url_resolver_1.extractStyleUrls(this._urlResolver, stylesheetUrl, cssText);\r\n return [\r\n this._styleModule(stylesheetUrl, false, this._styleCodeGen([styleWithImports.style], styleWithImports.styleUrls, false)),\r\n this._styleModule(stylesheetUrl, true, this._styleCodeGen([styleWithImports.style], styleWithImports.styleUrls, true))\r\n ];\r\n };\r\n StyleCompiler.prototype.clearCache = function () { this._styleCache.clear(); };\r\n StyleCompiler.prototype._loadStyles = function (plainStyles, absUrls, encapsulate) {\r\n var _this = this;\r\n var promises = absUrls.map(function (absUrl) {\r\n var cacheKey = \"\" + absUrl + (encapsulate ? '.shim' : '');\r\n var result = _this._styleCache.get(cacheKey);\r\n if (lang_1.isBlank(result)) {\r\n result = _this._xhr.get(absUrl).then(function (style) {\r\n var styleWithImports = style_url_resolver_1.extractStyleUrls(_this._urlResolver, absUrl, style);\r\n return _this._loadStyles([styleWithImports.style], styleWithImports.styleUrls, encapsulate);\r\n });\r\n _this._styleCache.set(cacheKey, result);\r\n }\r\n return result;\r\n });\r\n return async_1.PromiseWrapper.all(promises).then(function (nestedStyles) {\r\n var result = plainStyles.map(function (plainStyle) { return _this._shimIfNeeded(plainStyle, encapsulate); });\r\n nestedStyles.forEach(function (styles) { return result.push(styles); });\r\n return result;\r\n });\r\n };\r\n StyleCompiler.prototype._styleCodeGen = function (plainStyles, absUrls, shim) {\r\n var _this = this;\r\n var arrayPrefix = lang_1.IS_DART ? \"const\" : '';\r\n var styleExpressions = plainStyles.map(function (plainStyle) { return util_1.escapeSingleQuoteString(_this._shimIfNeeded(plainStyle, shim)); });\r\n for (var i = 0; i < absUrls.length; i++) {\r\n var moduleUrl = this._createModuleUrl(absUrls[i], shim);\r\n styleExpressions.push(source_module_1.moduleRef(moduleUrl) + \"STYLES\");\r\n }\r\n var expressionSource = arrayPrefix + \" [\" + styleExpressions.join(',') + \"]\";\r\n return new source_module_1.SourceExpression([], expressionSource);\r\n };\r\n StyleCompiler.prototype._styleModule = function (stylesheetUrl, shim, expression) {\r\n var moduleSource = \"\\n \" + expression.declarations.join('\\n') + \"\\n \" + util_1.codeGenExportVariable('STYLES') + expression.expression + \";\\n \";\r\n return new source_module_1.SourceModule(this._createModuleUrl(stylesheetUrl, shim), moduleSource);\r\n };\r\n StyleCompiler.prototype._shimIfNeeded = function (style, shim) {\r\n return shim ? this._shadowCss.shimCssText(style, CONTENT_ATTR, HOST_ATTR) : style;\r\n };\r\n StyleCompiler.prototype._createModuleUrl = function (stylesheetUrl, shim) {\r\n return shim ? stylesheetUrl + \".shim\" + util_1.MODULE_SUFFIX : \"\" + stylesheetUrl + util_1.MODULE_SUFFIX;\r\n };\r\n StyleCompiler = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [xhr_1.XHR, url_resolver_1.UrlResolver])\r\n ], StyleCompiler);\r\n return StyleCompiler;\r\n})();\r\nexports.StyleCompiler = StyleCompiler;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVfY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tcGlsZXIvc3R5bGVfY29tcGlsZXIudHMiXSwibmFtZXMiOlsiU3R5bGVDb21waWxlciIsIlN0eWxlQ29tcGlsZXIuY29uc3RydWN0b3IiLCJTdHlsZUNvbXBpbGVyLmNvbXBpbGVDb21wb25lbnRSdW50aW1lIiwiU3R5bGVDb21waWxlci5jb21waWxlQ29tcG9uZW50Q29kZUdlbiIsIlN0eWxlQ29tcGlsZXIuY29tcGlsZVN0eWxlc2hlZXRDb2RlR2VuIiwiU3R5bGVDb21waWxlci5jbGVhckNhY2hlIiwiU3R5bGVDb21waWxlci5fbG9hZFN0eWxlcyIsIlN0eWxlQ29tcGlsZXIuX3N0eWxlQ29kZUdlbiIsIlN0eWxlQ29tcGlsZXIuX3N0eWxlTW9kdWxlIiwiU3R5bGVDb21waWxlci5fc2hpbUlmTmVlZGVkIiwiU3R5bGVDb21waWxlci5fY3JlYXRlTW9kdWxlVXJsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSw4QkFBd0QsaUJBQWlCLENBQUMsQ0FBQTtBQUMxRSxxQkFBZ0MsaUNBQWlDLENBQUMsQ0FBQTtBQUNsRSxvQkFBa0IsMkJBQTJCLENBQUMsQ0FBQTtBQUM5QyxxQkFBOEMsMEJBQTBCLENBQUMsQ0FBQTtBQUN6RSxzQkFBNkIsMkJBQTJCLENBQUMsQ0FBQTtBQUN6RCwyQkFBd0Isa0NBQWtDLENBQUMsQ0FBQTtBQUMzRCw2QkFBMEIsb0NBQW9DLENBQUMsQ0FBQTtBQUMvRCxtQ0FBK0Isc0JBQXNCLENBQUMsQ0FBQTtBQUN0RCxxQkFLTyxRQUFRLENBQUMsQ0FBQTtBQUNoQixtQkFBeUIsc0JBQXNCLENBQUMsQ0FBQTtBQUVoRCxJQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQztBQUNwQyxJQUFNLFNBQVMsR0FBRyxhQUFXLGtCQUFvQixDQUFDO0FBQ2xELElBQU0sWUFBWSxHQUFHLGdCQUFjLGtCQUFvQixDQUFDO0FBRXhEO0lBS0VB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QUNBLGdCQUFnQkEsQ0FBQ0EsYUFBYUEsRUFBRUEsSUFBSUEsQ0FBQ0EsRUFBRUEsWUFBWUEsQ0FBQ0EsQ0FBQ0E7SUFDcEZBLENBQUNBO0lBRU9SLHFDQUFhQSxHQUFyQkEsVUFBc0JBLEtBQWFBLEVBQUVBLElBQWFBO1FBQ2hEUyxNQUFNQSxDQUFDQSxJQUFJQSxHQUFHQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSxXQUFXQSxDQUFDQSxLQUFLQSxFQUFFQSxZQUFZQSxFQUFFQSxTQUFTQSxDQUFDQSxHQUFHQSxLQUFLQSxDQUFDQTtJQUNwRkEsQ0FBQ0E7SUFFT1Qsd0NBQWdCQSxHQUF4QkEsVUFBeUJBLGFBQXFCQSxFQUFFQSxJQUFhQTtRQUMzRFUsTUFBTUEsQ0FBQ0EsSUFBSUEsR0FBTUEsYUFBYUEsYUFBUUEsb0JBQWVBLEdBQUdBLEtBQUdBLGFBQWFBLEdBQUdBLG9CQUFlQSxDQUFDQTtJQUM3RkEsQ0FBQ0E7SUFuRkhWO1FBQUNBLGVBQVVBLEVBQUVBOztzQkFvRlpBO0lBQURBLG9CQUFDQTtBQUFEQSxDQUFDQSxBQXBGRCxJQW9GQztBQW5GWSxxQkFBYSxnQkFtRnpCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBpbGVUeXBlTWV0YWRhdGEsIENvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhfSBmcm9tICcuL2RpcmVjdGl2ZV9tZXRhZGF0YSc7XG5pbXBvcnQge1NvdXJjZU1vZHVsZSwgU291cmNlRXhwcmVzc2lvbiwgbW9kdWxlUmVmfSBmcm9tICcuL3NvdXJjZV9tb2R1bGUnO1xuaW1wb3J0IHtWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEvdmlldyc7XG5pbXBvcnQge1hIUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3hocic7XG5pbXBvcnQge0lTX0RBUlQsIFN0cmluZ1dyYXBwZXIsIGlzQmxhbmt9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1Byb21pc2VXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcbmltcG9ydCB7U2hhZG93Q3NzfSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvc2hhZG93X2Nzcyc7XG5pbXBvcnQge1VybFJlc29sdmVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvdXJsX3Jlc29sdmVyJztcbmltcG9ydCB7ZXh0cmFjdFN0eWxlVXJsc30gZnJvbSAnLi9zdHlsZV91cmxfcmVzb2x2ZXInO1xuaW1wb3J0IHtcbiAgZXNjYXBlU2luZ2xlUXVvdGVTdHJpbmcsXG4gIGNvZGVHZW5FeHBvcnRWYXJpYWJsZSxcbiAgY29kZUdlblRvU3RyaW5nLFxuICBNT0RVTEVfU1VGRklYXG59IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcblxuY29uc3QgQ09NUE9ORU5UX1ZBUklBQkxFID0gJyVDT01QJSc7XG5jb25zdCBIT1NUX0FUVFIgPSBgX25naG9zdC0ke0NPTVBPTkVOVF9WQVJJQUJMRX1gO1xuY29uc3QgQ09OVEVOVF9BVFRSID0gYF9uZ2NvbnRlbnQtJHtDT01QT05FTlRfVkFSSUFCTEV9YDtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN0eWxlQ29tcGlsZXIge1xuICBwcml2YXRlIF9zdHlsZUNhY2hlOiBNYXA8c3RyaW5nLCBQcm9taXNlPHN0cmluZ1tdPj4gPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxzdHJpbmdbXT4+KCk7XG4gIHByaXZhdGUgX3NoYWRvd0NzczogU2hhZG93Q3NzID0gbmV3IFNoYWRvd0NzcygpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3hocjogWEhSLCBwcml2YXRlIF91cmxSZXNvbHZlcjogVXJsUmVzb2x2ZXIpIHt9XG5cbiAgY29tcGlsZUNvbXBvbmVudFJ1bnRpbWUodGVtcGxhdGU6IENvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhKTogUHJvbWlzZTxBcnJheTxzdHJpbmcgfCBhbnlbXT4+IHtcbiAgICB2YXIgc3R5bGVzID0gdGVtcGxhdGUuc3R5bGVzO1xuICAgIHZhciBzdHlsZUFic1VybHMgPSB0ZW1wbGF0ZS5zdHlsZVVybHM7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRTdHlsZXMoc3R5bGVzLCBzdHlsZUFic1VybHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUuZW5jYXBzdWxhdGlvbiA9PT0gVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWQpO1xuICB9XG5cbiAgY29tcGlsZUNvbXBvbmVudENvZGVHZW4odGVtcGxhdGU6IENvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhKTogU291cmNlRXhwcmVzc2lvbiB7XG4gICAgdmFyIHNoaW0gPSB0ZW1wbGF0ZS5lbmNhcHN1bGF0aW9uID09PSBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZDtcbiAgICByZXR1cm4gdGhpcy5fc3R5bGVDb2RlR2VuKHRlbXBsYXRlLnN0eWxlcywgdGVtcGxhdGUuc3R5bGVVcmxzLCBzaGltKTtcbiAgfVxuXG4gIGNvbXBpbGVTdHlsZXNoZWV0Q29kZUdlbihzdHlsZXNoZWV0VXJsOiBzdHJpbmcsIGNzc1RleHQ6IHN0cmluZyk6IFNvdXJjZU1vZHVsZVtdIHtcbiAgICB2YXIgc3R5bGVXaXRoSW1wb3J0cyA9IGV4dHJhY3RTdHlsZVVybHModGhpcy5fdXJsUmVzb2x2ZXIsIHN0eWxlc2hlZXRVcmwsIGNzc1RleHQpO1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLl9zdHlsZU1vZHVsZShcbiAgICAgICAgICBzdHlsZXNoZWV0VXJsLCBmYWxzZSxcbiAgICAgICAgICB0aGlzLl9zdHlsZUNvZGVHZW4oW3N0eWxlV2l0aEltcG9ydHMuc3R5bGVdLCBzdHlsZVdpdGhJbXBvcnRzLnN0eWxlVXJscywgZmFsc2UpKSxcbiAgICAgIHRoaXMuX3N0eWxlTW9kdWxlKHN0eWxlc2hlZXRVcmwsIHRydWUsIHRoaXMuX3N0eWxlQ29kZUdlbihbc3R5bGVXaXRoSW1wb3J0cy5zdHlsZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVXaXRoSW1wb3J0cy5zdHlsZVVybHMsIHRydWUpKVxuICAgIF07XG4gIH1cblxuICBjbGVhckNhY2hlKCkgeyB0aGlzLl9zdHlsZUNhY2hlLmNsZWFyKCk7IH1cblxuICBwcml2YXRlIF9sb2FkU3R5bGVzKHBsYWluU3R5bGVzOiBzdHJpbmdbXSwgYWJzVXJsczogc3RyaW5nW10sXG4gICAgICAgICAgICAgICAgICAgICAgZW5jYXBzdWxhdGU6IGJvb2xlYW4pOiBQcm9taXNlPEFycmF5PHN0cmluZyB8IGFueVtdPj4ge1xuICAgIHZhciBwcm9taXNlczogUHJvbWlzZTxzdHJpbmdbXT5bXSA9IGFic1VybHMubWFwKChhYnNVcmw6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+ID0+IHtcbiAgICAgIHZhciBjYWNoZUtleSA9IGAke2Fic1VybH0ke2VuY2Fwc3VsYXRlID8gJy5zaGltJyA6ICcnfWA7XG4gICAgICB2YXIgcmVzdWx0OiBQcm9taXNlPHN0cmluZ1tdPiA9IHRoaXMuX3N0eWxlQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICAgIGlmIChpc0JsYW5rKHJlc3VsdCkpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5feGhyLmdldChhYnNVcmwpLnRoZW4oKHN0eWxlKSA9PiB7XG4gICAgICAgICAgdmFyIHN0eWxlV2l0aEltcG9ydHMgPSBleHRyYWN0U3R5bGVVcmxzKHRoaXMuX3VybFJlc29sdmVyLCBhYnNVcmwsIHN0eWxlKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fbG9hZFN0eWxlcyhbc3R5bGVXaXRoSW1wb3J0cy5zdHlsZV0sIHN0eWxlV2l0aEltcG9ydHMuc3R5bGVVcmxzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY2Fwc3VsYXRlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3N0eWxlQ2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgICByZXR1cm4gUHJvbWlzZVdyYXBwZXIuYWxsPHN0cmluZ1tdPihwcm9taXNlcykudGhlbigobmVzdGVkU3R5bGVzOiBzdHJpbmdbXVtdKSA9PiB7XG4gICAgICB2YXIgcmVzdWx0OiBBcnJheTxzdHJpbmcgfCBhbnlbXT4gPVxuICAgICAgICAgIHBsYWluU3R5bGVzLm1hcChwbGFpblN0eWxlID0+IHRoaXMuX3NoaW1JZk5lZWRlZChwbGFpblN0eWxlLCBlbmNhcHN1bGF0ZSkpO1xuICAgICAgbmVzdGVkU3R5bGVzLmZvckVhY2goc3R5bGVzID0+IHJlc3VsdC5wdXNoKHN0eWxlcykpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0eWxlQ29kZUdlbihwbGFpblN0eWxlczogc3RyaW5nW10sIGFic1VybHM6IHN0cmluZ1tdLCBzaGltOiBib29sZWFuKTogU291cmNlRXhwcmVzc2lvbiB7XG4gICAgdmFyIGFycmF5UHJlZml4ID0gSVNfREFSVCA/IGBjb25zdGAgOiAnJztcbiAgICB2YXIgc3R5bGVFeHByZXNzaW9ucyA9IHBsYWluU3R5bGVzLm1hcChcbiAgICAgICAgcGxhaW5TdHlsZSA9PiBlc2NhcGVTaW5nbGVRdW90ZVN0cmluZyh0aGlzLl9zaGltSWZOZWVkZWQocGxhaW5TdHlsZSwgc2hpbSkpKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWJzVXJscy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG1vZHVsZVVybCA9IHRoaXMuX2NyZWF0ZU1vZHVsZVVybChhYnNVcmxzW2ldLCBzaGltKTtcbiAgICAgIHN0eWxlRXhwcmVzc2lvbnMucHVzaChgJHttb2R1bGVSZWYobW9kdWxlVXJsKX1TVFlMRVNgKTtcbiAgICB9XG4gICAgdmFyIGV4cHJlc3Npb25Tb3VyY2UgPSBgJHthcnJheVByZWZpeH0gWyR7c3R5bGVFeHByZXNzaW9ucy5qb2luKCcsJyl9XWA7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VFeHByZXNzaW9uKFtdLCBleHByZXNzaW9uU291cmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0eWxlTW9kdWxlKHN0eWxlc2hlZXRVcmw6IHN0cmluZywgc2hpbTogYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogU291cmNlRXhwcmVzc2lvbik6IFNvdXJjZU1vZHVsZSB7XG4gICAgdmFyIG1vZHVsZVNvdXJjZSA9IGBcbiAgICAgICR7ZXhwcmVzc2lvbi5kZWNsYXJhdGlvbnMuam9pbignXFxuJyl9XG4gICAgICAke2NvZGVHZW5FeHBvcnRWYXJpYWJsZSgnU1RZTEVTJyl9JHtleHByZXNzaW9uLmV4cHJlc3Npb259O1xuICAgIGA7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VNb2R1bGUodGhpcy5fY3JlYXRlTW9kdWxlVXJsKHN0eWxlc2hlZXRVcmwsIHNoaW0pLCBtb2R1bGVTb3VyY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2hpbUlmTmVlZGVkKHN0eWxlOiBzdHJpbmcsIHNoaW06IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiBzaGltID8gdGhpcy5fc2hhZG93Q3NzLnNoaW1Dc3NUZXh0KHN0eWxlLCBDT05URU5UX0FUVFIsIEhPU1RfQVRUUikgOiBzdHlsZTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZU1vZHVsZVVybChzdHlsZXNoZWV0VXJsOiBzdHJpbmcsIHNoaW06IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiBzaGltID8gYCR7c3R5bGVzaGVldFVybH0uc2hpbSR7TU9EVUxFX1NVRkZJWH1gIDogYCR7c3R5bGVzaGVldFVybH0ke01PRFVMRV9TVUZGSVh9YDtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar template_ast_1 = require('./template_ast');\r\nvar source_module_1 = require('./source_module');\r\nvar view_1 = require('angular2/src/core/linker/view');\r\nvar view_type_1 = require('angular2/src/core/linker/view_type');\r\nvar element_1 = require('angular2/src/core/linker/element');\r\nvar view_2 = require('angular2/src/core/metadata/view');\r\nvar util_1 = require('./util');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar proto_view_compiler_1 = require('./proto_view_compiler');\r\nexports.VIEW_JIT_IMPORTS = lang_1.CONST_EXPR({\r\n 'AppView': view_1.AppView,\r\n 'AppElement': element_1.AppElement,\r\n 'flattenNestedViewRenderNodes': view_1.flattenNestedViewRenderNodes,\r\n 'checkSlotCount': view_1.checkSlotCount\r\n});\r\nvar ViewCompiler = (function () {\r\n function ViewCompiler() {\r\n }\r\n ViewCompiler.prototype.compileComponentRuntime = function (component, template, styles, protoViews, changeDetectorFactories, componentViewFactory) {\r\n var viewFactory = new RuntimeViewFactory(component, styles, protoViews, changeDetectorFactories, componentViewFactory);\r\n return viewFactory.createViewFactory(template, 0, []);\r\n };\r\n ViewCompiler.prototype.compileComponentCodeGen = function (component, template, styles, protoViews, changeDetectorFactoryExpressions, componentViewFactory) {\r\n var viewFactory = new CodeGenViewFactory(component, styles, protoViews, changeDetectorFactoryExpressions, componentViewFactory);\r\n var targetStatements = [];\r\n var viewFactoryExpression = viewFactory.createViewFactory(template, 0, targetStatements);\r\n return new source_module_1.SourceExpression(targetStatements.map(function (stmt) { return stmt.statement; }), viewFactoryExpression.expression);\r\n };\r\n ViewCompiler = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], ViewCompiler);\r\n return ViewCompiler;\r\n})();\r\nexports.ViewCompiler = ViewCompiler;\r\nvar CodeGenViewFactory = (function () {\r\n function CodeGenViewFactory(component, styles, protoViews, changeDetectorExpressions, componentViewFactory) {\r\n this.component = component;\r\n this.styles = styles;\r\n this.protoViews = protoViews;\r\n this.changeDetectorExpressions = changeDetectorExpressions;\r\n this.componentViewFactory = componentViewFactory;\r\n this._nextVarId = 0;\r\n }\r\n CodeGenViewFactory.prototype._nextVar = function (prefix) {\r\n return \"\" + prefix + this._nextVarId++ + \"_\" + this.component.type.name;\r\n };\r\n CodeGenViewFactory.prototype._nextRenderVar = function () { return this._nextVar('render'); };\r\n CodeGenViewFactory.prototype._nextAppVar = function () { return this._nextVar('app'); };\r\n CodeGenViewFactory.prototype._nextDisposableVar = function () {\r\n return \"disposable\" + this._nextVarId++ + \"_\" + this.component.type.name;\r\n };\r\n CodeGenViewFactory.prototype.createText = function (renderer, parent, text, targetStatements) {\r\n var varName = this._nextRenderVar();\r\n var statement = \"var \" + varName + \" = \" + renderer.expression + \".createText(\" + (lang_1.isPresent(parent) ? parent.expression : null) + \", \" + util_1.escapeSingleQuoteString(text) + \");\";\r\n targetStatements.push(new util_1.Statement(statement));\r\n return new util_1.Expression(varName);\r\n };\r\n CodeGenViewFactory.prototype.createElement = function (renderer, parentRenderNode, name, rootSelector, targetStatements) {\r\n var varName = this._nextRenderVar();\r\n var valueExpr;\r\n if (lang_1.isPresent(rootSelector)) {\r\n valueExpr = rootSelector.expression + \" == null ?\\n \" + renderer.expression + \".createElement(\" + (lang_1.isPresent(parentRenderNode) ? parentRenderNode.expression : null) + \", \" + util_1.escapeSingleQuoteString(name) + \") :\\n \" + renderer.expression + \".selectRootElement(\" + rootSelector.expression + \");\";\r\n }\r\n else {\r\n valueExpr =\r\n renderer.expression + \".createElement(\" + (lang_1.isPresent(parentRenderNode) ? parentRenderNode.expression : null) + \", \" + util_1.escapeSingleQuoteString(name) + \")\";\r\n }\r\n var statement = \"var \" + varName + \" = \" + valueExpr + \";\";\r\n targetStatements.push(new util_1.Statement(statement));\r\n return new util_1.Expression(varName);\r\n };\r\n CodeGenViewFactory.prototype.createTemplateAnchor = function (renderer, parentRenderNode, targetStatements) {\r\n var varName = this._nextRenderVar();\r\n var valueExpr = renderer.expression + \".createTemplateAnchor(\" + (lang_1.isPresent(parentRenderNode) ? parentRenderNode.expression : null) + \");\";\r\n targetStatements.push(new util_1.Statement(\"var \" + varName + \" = \" + valueExpr));\r\n return new util_1.Expression(varName);\r\n };\r\n CodeGenViewFactory.prototype.createGlobalEventListener = function (renderer, appView, boundElementIndex, eventAst, targetStatements) {\r\n var disposableVar = this._nextDisposableVar();\r\n var eventHandlerExpr = codeGenEventHandler(appView, boundElementIndex, eventAst.fullName);\r\n targetStatements.push(new util_1.Statement(\"var \" + disposableVar + \" = \" + renderer.expression + \".listenGlobal(\" + util_1.escapeValue(eventAst.target) + \", \" + util_1.escapeValue(eventAst.name) + \", \" + eventHandlerExpr + \");\"));\r\n return new util_1.Expression(disposableVar);\r\n };\r\n CodeGenViewFactory.prototype.createElementEventListener = function (renderer, appView, boundElementIndex, renderNode, eventAst, targetStatements) {\r\n var disposableVar = this._nextDisposableVar();\r\n var eventHandlerExpr = codeGenEventHandler(appView, boundElementIndex, eventAst.fullName);\r\n targetStatements.push(new util_1.Statement(\"var \" + disposableVar + \" = \" + renderer.expression + \".listen(\" + renderNode.expression + \", \" + util_1.escapeValue(eventAst.name) + \", \" + eventHandlerExpr + \");\"));\r\n return new util_1.Expression(disposableVar);\r\n };\r\n CodeGenViewFactory.prototype.setElementAttribute = function (renderer, renderNode, attrName, attrValue, targetStatements) {\r\n targetStatements.push(new util_1.Statement(renderer.expression + \".setElementAttribute(\" + renderNode.expression + \", \" + util_1.escapeSingleQuoteString(attrName) + \", \" + util_1.escapeSingleQuoteString(attrValue) + \");\"));\r\n };\r\n CodeGenViewFactory.prototype.createAppElement = function (appProtoEl, appView, renderNode, parentAppEl, embeddedViewFactory, targetStatements) {\r\n var appVar = this._nextAppVar();\r\n var varValue = \"new \" + proto_view_compiler_1.APP_EL_MODULE_REF + \"AppElement(\" + appProtoEl.expression + \", \" + appView.expression + \",\\n \" + (lang_1.isPresent(parentAppEl) ? parentAppEl.expression : null) + \", \" + renderNode.expression + \", \" + (lang_1.isPresent(embeddedViewFactory) ? embeddedViewFactory.expression : null) + \")\";\r\n targetStatements.push(new util_1.Statement(\"var \" + appVar + \" = \" + varValue + \";\"));\r\n return new util_1.Expression(appVar);\r\n };\r\n CodeGenViewFactory.prototype.createAndSetComponentView = function (renderer, viewManager, view, appEl, component, contentNodesByNgContentIndex, targetStatements) {\r\n var codeGenContentNodes;\r\n if (this.component.type.isHost) {\r\n codeGenContentNodes = view.expression + \".projectableNodes\";\r\n }\r\n else {\r\n codeGenContentNodes =\r\n \"[\" + contentNodesByNgContentIndex.map(function (nodes) { return util_1.codeGenFlatArray(nodes); }).join(',') + \"]\";\r\n }\r\n targetStatements.push(new util_1.Statement(this.componentViewFactory(component) + \"(\" + renderer.expression + \", \" + viewManager.expression + \", \" + appEl.expression + \", \" + codeGenContentNodes + \", null, null, null);\"));\r\n };\r\n CodeGenViewFactory.prototype.getProjectedNodes = function (projectableNodes, ngContentIndex) {\r\n return new util_1.Expression(projectableNodes.expression + \"[\" + ngContentIndex + \"]\", true);\r\n };\r\n CodeGenViewFactory.prototype.appendProjectedNodes = function (renderer, parent, nodes, targetStatements) {\r\n targetStatements.push(new util_1.Statement(renderer.expression + \".projectNodes(\" + parent.expression + \", \" + proto_view_compiler_1.APP_VIEW_MODULE_REF + \"flattenNestedViewRenderNodes(\" + nodes.expression + \"));\"));\r\n };\r\n CodeGenViewFactory.prototype.createViewFactory = function (asts, embeddedTemplateIndex, targetStatements) {\r\n var compileProtoView = this.protoViews[embeddedTemplateIndex];\r\n var isHostView = this.component.type.isHost;\r\n var isComponentView = embeddedTemplateIndex === 0 && !isHostView;\r\n var visitor = new ViewBuilderVisitor(new util_1.Expression('renderer'), new util_1.Expression('viewManager'), new util_1.Expression('projectableNodes'), isHostView ? new util_1.Expression('rootSelector') : null, new util_1.Expression('view'), compileProtoView, targetStatements, this);\r\n template_ast_1.templateVisitAll(visitor, asts, new ParentElement(isComponentView ? new util_1.Expression('parentRenderNode') : null, null, null));\r\n var appProtoView = compileProtoView.protoView.expression;\r\n var viewFactoryName = codeGenViewFactoryName(this.component, embeddedTemplateIndex);\r\n var changeDetectorFactory = this.changeDetectorExpressions.expressions[embeddedTemplateIndex];\r\n var factoryArgs = [\r\n 'parentRenderer',\r\n 'viewManager',\r\n 'containerEl',\r\n 'projectableNodes',\r\n 'rootSelector',\r\n 'dynamicallyCreatedProviders',\r\n 'rootInjector'\r\n ];\r\n var initRendererStmts = [];\r\n var rendererExpr = \"parentRenderer\";\r\n if (embeddedTemplateIndex === 0) {\r\n var renderCompTypeVar = this._nextVar('renderType');\r\n targetStatements.push(new util_1.Statement(\"var \" + renderCompTypeVar + \" = null;\"));\r\n var stylesVar = this._nextVar('styles');\r\n targetStatements.push(new util_1.Statement(util_1.CONST_VAR + \" \" + stylesVar + \" = \" + this.styles.expression + \";\"));\r\n var encapsulation = this.component.template.encapsulation;\r\n initRendererStmts.push(\"if (\" + renderCompTypeVar + \" == null) {\\n \" + renderCompTypeVar + \" = viewManager.createRenderComponentType(\" + codeGenViewEncapsulation(encapsulation) + \", \" + stylesVar + \");\\n }\");\r\n rendererExpr = \"parentRenderer.renderComponent(\" + renderCompTypeVar + \")\";\r\n }\r\n var statement = \"\\n\" + util_1.codeGenFnHeader(factoryArgs, viewFactoryName) + \"{\\n \" + initRendererStmts.join('\\n') + \"\\n var renderer = \" + rendererExpr + \";\\n var view = new \" + proto_view_compiler_1.APP_VIEW_MODULE_REF + \"AppView(\\n \" + appProtoView + \", renderer, viewManager,\\n projectableNodes,\\n containerEl,\\n dynamicallyCreatedProviders, rootInjector,\\n \" + changeDetectorFactory + \"()\\n );\\n \" + proto_view_compiler_1.APP_VIEW_MODULE_REF + \"checkSlotCount(\" + util_1.escapeValue(this.component.type.name) + \", \" + this.component.template.ngContentSelectors.length + \", projectableNodes);\\n \" + (isComponentView ? 'var parentRenderNode = renderer.createViewRoot(view.containerAppElement.nativeElement);' : '') + \"\\n \" + visitor.renderStmts.map(function (stmt) { return stmt.statement; }).join('\\n') + \"\\n \" + visitor.appStmts.map(function (stmt) { return stmt.statement; }).join('\\n') + \"\\n\\n view.init(\" + util_1.codeGenFlatArray(visitor.rootNodesOrAppElements) + \", \" + util_1.codeGenArray(visitor.renderNodes) + \", \" + util_1.codeGenArray(visitor.appDisposables) + \",\\n \" + util_1.codeGenArray(visitor.appElements) + \");\\n return view;\\n}\";\r\n targetStatements.push(new util_1.Statement(statement));\r\n return new util_1.Expression(viewFactoryName);\r\n };\r\n return CodeGenViewFactory;\r\n})();\r\nvar RuntimeViewFactory = (function () {\r\n function RuntimeViewFactory(component, styles, protoViews, changeDetectorFactories, componentViewFactory) {\r\n this.component = component;\r\n this.styles = styles;\r\n this.protoViews = protoViews;\r\n this.changeDetectorFactories = changeDetectorFactories;\r\n this.componentViewFactory = componentViewFactory;\r\n }\r\n RuntimeViewFactory.prototype.createText = function (renderer, parent, text, targetStatements) {\r\n return renderer.createText(parent, text);\r\n };\r\n RuntimeViewFactory.prototype.createElement = function (renderer, parent, name, rootSelector, targetStatements) {\r\n var el;\r\n if (lang_1.isPresent(rootSelector)) {\r\n el = renderer.selectRootElement(rootSelector);\r\n }\r\n else {\r\n el = renderer.createElement(parent, name);\r\n }\r\n return el;\r\n };\r\n RuntimeViewFactory.prototype.createTemplateAnchor = function (renderer, parent, targetStatements) {\r\n return renderer.createTemplateAnchor(parent);\r\n };\r\n RuntimeViewFactory.prototype.createGlobalEventListener = function (renderer, appView, boundElementIndex, eventAst, targetStatements) {\r\n return renderer.listenGlobal(eventAst.target, eventAst.name, function (event) { return appView.triggerEventHandlers(eventAst.fullName, event, boundElementIndex); });\r\n };\r\n RuntimeViewFactory.prototype.createElementEventListener = function (renderer, appView, boundElementIndex, renderNode, eventAst, targetStatements) {\r\n return renderer.listen(renderNode, eventAst.name, function (event) { return appView.triggerEventHandlers(eventAst.fullName, event, boundElementIndex); });\r\n };\r\n RuntimeViewFactory.prototype.setElementAttribute = function (renderer, renderNode, attrName, attrValue, targetStatements) {\r\n renderer.setElementAttribute(renderNode, attrName, attrValue);\r\n };\r\n RuntimeViewFactory.prototype.createAppElement = function (appProtoEl, appView, renderNode, parentAppEl, embeddedViewFactory, targetStatements) {\r\n return new element_1.AppElement(appProtoEl, appView, parentAppEl, renderNode, embeddedViewFactory);\r\n };\r\n RuntimeViewFactory.prototype.createAndSetComponentView = function (renderer, viewManager, appView, appEl, component, contentNodesByNgContentIndex, targetStatements) {\r\n var flattenedContentNodes;\r\n if (this.component.type.isHost) {\r\n flattenedContentNodes = appView.projectableNodes;\r\n }\r\n else {\r\n flattenedContentNodes = collection_1.ListWrapper.createFixedSize(contentNodesByNgContentIndex.length);\r\n for (var i = 0; i < contentNodesByNgContentIndex.length; i++) {\r\n flattenedContentNodes[i] = util_1.flattenArray(contentNodesByNgContentIndex[i], []);\r\n }\r\n }\r\n this.componentViewFactory(component)(renderer, viewManager, appEl, flattenedContentNodes);\r\n };\r\n RuntimeViewFactory.prototype.getProjectedNodes = function (projectableNodes, ngContentIndex) {\r\n return projectableNodes[ngContentIndex];\r\n };\r\n RuntimeViewFactory.prototype.appendProjectedNodes = function (renderer, parent, nodes, targetStatements) {\r\n renderer.projectNodes(parent, view_1.flattenNestedViewRenderNodes(nodes));\r\n };\r\n RuntimeViewFactory.prototype.createViewFactory = function (asts, embeddedTemplateIndex, targetStatements) {\r\n var _this = this;\r\n var compileProtoView = this.protoViews[embeddedTemplateIndex];\r\n var isComponentView = compileProtoView.protoView.type === view_type_1.ViewType.COMPONENT;\r\n var renderComponentType = null;\r\n return function (parentRenderer, viewManager, containerEl, projectableNodes, rootSelector, dynamicallyCreatedProviders, rootInjector) {\r\n if (rootSelector === void 0) { rootSelector = null; }\r\n if (dynamicallyCreatedProviders === void 0) { dynamicallyCreatedProviders = null; }\r\n if (rootInjector === void 0) { rootInjector = null; }\r\n view_1.checkSlotCount(_this.component.type.name, _this.component.template.ngContentSelectors.length, projectableNodes);\r\n var renderer;\r\n if (embeddedTemplateIndex === 0) {\r\n if (lang_1.isBlank(renderComponentType)) {\r\n renderComponentType = viewManager.createRenderComponentType(_this.component.template.encapsulation, _this.styles);\r\n }\r\n renderer = parentRenderer.renderComponent(renderComponentType);\r\n }\r\n else {\r\n renderer = parentRenderer;\r\n }\r\n var changeDetector = _this.changeDetectorFactories[embeddedTemplateIndex]();\r\n var view = new view_1.AppView(compileProtoView.protoView, renderer, viewManager, projectableNodes, containerEl, dynamicallyCreatedProviders, rootInjector, changeDetector);\r\n var visitor = new ViewBuilderVisitor(renderer, viewManager, projectableNodes, rootSelector, view, compileProtoView, [], _this);\r\n var parentRenderNode = isComponentView ? renderer.createViewRoot(containerEl.nativeElement) : null;\r\n template_ast_1.templateVisitAll(visitor, asts, new ParentElement(parentRenderNode, null, null));\r\n view.init(util_1.flattenArray(visitor.rootNodesOrAppElements, []), visitor.renderNodes, visitor.appDisposables, visitor.appElements);\r\n return view;\r\n };\r\n };\r\n return RuntimeViewFactory;\r\n})();\r\nvar ParentElement = (function () {\r\n function ParentElement(renderNode, appEl, component) {\r\n this.renderNode = renderNode;\r\n this.appEl = appEl;\r\n this.component = component;\r\n if (lang_1.isPresent(component)) {\r\n this.contentNodesByNgContentIndex =\r\n collection_1.ListWrapper.createFixedSize(component.template.ngContentSelectors.length);\r\n for (var i = 0; i < this.contentNodesByNgContentIndex.length; i++) {\r\n this.contentNodesByNgContentIndex[i] = [];\r\n }\r\n }\r\n else {\r\n this.contentNodesByNgContentIndex = null;\r\n }\r\n }\r\n ParentElement.prototype.addContentNode = function (ngContentIndex, nodeExpr) {\r\n this.contentNodesByNgContentIndex[ngContentIndex].push(nodeExpr);\r\n };\r\n return ParentElement;\r\n})();\r\nvar ViewBuilderVisitor = (function () {\r\n function ViewBuilderVisitor(renderer, viewManager, projectableNodes, rootSelector, view, protoView, targetStatements, factory) {\r\n this.renderer = renderer;\r\n this.viewManager = viewManager;\r\n this.projectableNodes = projectableNodes;\r\n this.rootSelector = rootSelector;\r\n this.view = view;\r\n this.protoView = protoView;\r\n this.targetStatements = targetStatements;\r\n this.factory = factory;\r\n this.renderStmts = [];\r\n this.renderNodes = [];\r\n this.appStmts = [];\r\n this.appElements = [];\r\n this.appDisposables = [];\r\n this.rootNodesOrAppElements = [];\r\n this.elementCount = 0;\r\n }\r\n ViewBuilderVisitor.prototype._addRenderNode = function (renderNode, appEl, ngContentIndex, parent) {\r\n this.renderNodes.push(renderNode);\r\n if (lang_1.isPresent(parent.component)) {\r\n if (lang_1.isPresent(ngContentIndex)) {\r\n parent.addContentNode(ngContentIndex, lang_1.isPresent(appEl) ? appEl : renderNode);\r\n }\r\n }\r\n else if (lang_1.isBlank(parent.renderNode)) {\r\n this.rootNodesOrAppElements.push(lang_1.isPresent(appEl) ? appEl : renderNode);\r\n }\r\n };\r\n ViewBuilderVisitor.prototype._getParentRenderNode = function (ngContentIndex, parent) {\r\n return lang_1.isPresent(parent.component) &&\r\n parent.component.template.encapsulation !== view_2.ViewEncapsulation.Native ?\r\n null :\r\n parent.renderNode;\r\n };\r\n ViewBuilderVisitor.prototype.visitBoundText = function (ast, parent) {\r\n return this._visitText('', ast.ngContentIndex, parent);\r\n };\r\n ViewBuilderVisitor.prototype.visitText = function (ast, parent) {\r\n return this._visitText(ast.value, ast.ngContentIndex, parent);\r\n };\r\n ViewBuilderVisitor.prototype._visitText = function (value, ngContentIndex, parent) {\r\n var renderNode = this.factory.createText(this.renderer, this._getParentRenderNode(ngContentIndex, parent), value, this.renderStmts);\r\n this._addRenderNode(renderNode, null, ngContentIndex, parent);\r\n return null;\r\n };\r\n ViewBuilderVisitor.prototype.visitNgContent = function (ast, parent) {\r\n var nodesExpression = this.factory.getProjectedNodes(this.projectableNodes, ast.index);\r\n if (lang_1.isPresent(parent.component)) {\r\n if (lang_1.isPresent(ast.ngContentIndex)) {\r\n parent.addContentNode(ast.ngContentIndex, nodesExpression);\r\n }\r\n }\r\n else {\r\n if (lang_1.isPresent(parent.renderNode)) {\r\n this.factory.appendProjectedNodes(this.renderer, parent.renderNode, nodesExpression, this.renderStmts);\r\n }\r\n else {\r\n this.rootNodesOrAppElements.push(nodesExpression);\r\n }\r\n }\r\n return null;\r\n };\r\n ViewBuilderVisitor.prototype.visitElement = function (ast, parent) {\r\n var _this = this;\r\n var renderNode = this.factory.createElement(this.renderer, this._getParentRenderNode(ast.ngContentIndex, parent), ast.name, this.rootSelector, this.renderStmts);\r\n var component = ast.getComponent();\r\n var elementIndex = this.elementCount++;\r\n var protoEl = this.protoView.protoElements[elementIndex];\r\n protoEl.renderEvents.forEach(function (eventAst) {\r\n var disposable;\r\n if (lang_1.isPresent(eventAst.target)) {\r\n disposable = _this.factory.createGlobalEventListener(_this.renderer, _this.view, protoEl.boundElementIndex, eventAst, _this.renderStmts);\r\n }\r\n else {\r\n disposable = _this.factory.createElementEventListener(_this.renderer, _this.view, protoEl.boundElementIndex, renderNode, eventAst, _this.renderStmts);\r\n }\r\n _this.appDisposables.push(disposable);\r\n });\r\n for (var i = 0; i < protoEl.attrNameAndValues.length; i++) {\r\n var attrName = protoEl.attrNameAndValues[i][0];\r\n var attrValue = protoEl.attrNameAndValues[i][1];\r\n this.factory.setElementAttribute(this.renderer, renderNode, attrName, attrValue, this.renderStmts);\r\n }\r\n var appEl = null;\r\n if (lang_1.isPresent(protoEl.appProtoEl)) {\r\n appEl = this.factory.createAppElement(protoEl.appProtoEl, this.view, renderNode, parent.appEl, null, this.appStmts);\r\n this.appElements.push(appEl);\r\n }\r\n this._addRenderNode(renderNode, appEl, ast.ngContentIndex, parent);\r\n var newParent = new ParentElement(renderNode, lang_1.isPresent(appEl) ? appEl : parent.appEl, component);\r\n template_ast_1.templateVisitAll(this, ast.children, newParent);\r\n if (lang_1.isPresent(appEl) && lang_1.isPresent(component)) {\r\n this.factory.createAndSetComponentView(this.renderer, this.viewManager, this.view, appEl, component, newParent.contentNodesByNgContentIndex, this.appStmts);\r\n }\r\n return null;\r\n };\r\n ViewBuilderVisitor.prototype.visitEmbeddedTemplate = function (ast, parent) {\r\n var renderNode = this.factory.createTemplateAnchor(this.renderer, this._getParentRenderNode(ast.ngContentIndex, parent), this.renderStmts);\r\n var elementIndex = this.elementCount++;\r\n var protoEl = this.protoView.protoElements[elementIndex];\r\n var embeddedViewFactory = this.factory.createViewFactory(ast.children, protoEl.embeddedTemplateIndex, this.targetStatements);\r\n var appEl = this.factory.createAppElement(protoEl.appProtoEl, this.view, renderNode, parent.appEl, embeddedViewFactory, this.appStmts);\r\n this._addRenderNode(renderNode, appEl, ast.ngContentIndex, parent);\r\n this.appElements.push(appEl);\r\n return null;\r\n };\r\n ViewBuilderVisitor.prototype.visitVariable = function (ast, ctx) { return null; };\r\n ViewBuilderVisitor.prototype.visitAttr = function (ast, ctx) { return null; };\r\n ViewBuilderVisitor.prototype.visitDirective = function (ast, ctx) { return null; };\r\n ViewBuilderVisitor.prototype.visitEvent = function (ast, ctx) { return null; };\r\n ViewBuilderVisitor.prototype.visitDirectiveProperty = function (ast, context) { return null; };\r\n ViewBuilderVisitor.prototype.visitElementProperty = function (ast, context) { return null; };\r\n return ViewBuilderVisitor;\r\n})();\r\nfunction codeGenEventHandler(view, boundElementIndex, eventName) {\r\n return util_1.codeGenValueFn(['event'], view.expression + \".triggerEventHandlers(\" + util_1.escapeValue(eventName) + \", event, \" + boundElementIndex + \")\");\r\n}\r\nfunction codeGenViewFactoryName(component, embeddedTemplateIndex) {\r\n return \"viewFactory_\" + component.type.name + embeddedTemplateIndex;\r\n}\r\nfunction codeGenViewEncapsulation(value) {\r\n if (lang_1.IS_DART) {\r\n return \"\" + proto_view_compiler_1.METADATA_MODULE_REF + value;\r\n }\r\n else {\r\n return \"\" + value;\r\n }\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld19jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21waWxlci92aWV3X2NvbXBpbGVyLnRzIl0sIm5hbWVzIjpbIlZpZXdDb21waWxlciIsIlZpZXdDb21waWxlci5jb25zdHJ1Y3RvciIsIlZpZXdDb21waWxlci5jb21waWxlQ29tcG9uZW50UnVudGltZSIsIlZpZXdDb21waWxlci5jb21waWxlQ29tcG9uZW50Q29kZUdlbiIsIkNvZGVHZW5WaWV3RmFjdG9yeSIsIkNvZGVHZW5WaWV3RmFjdG9yeS5jb25zdHJ1Y3RvciIsIkNvZGVHZW5WaWV3RmFjdG9yeS5fbmV4dFZhciIsIkNvZGVHZW5WaWV3RmFjdG9yeS5fbmV4dFJlbmRlclZhciIsIkNvZGVHZW5WaWV3RmFjdG9yeS5fbmV4dEFwcFZhciIsIkNvZGVHZW5WaWV3RmFjdG9yeS5fbmV4dERpc3Bvc2FibGVWYXIiLCJDb2RlR2VuVmlld0ZhY3RvcnkuY3JlYXRlVGV4dCIsIkNvZGVHZW5WaWV3RmFjdG9yeS5jcmVhdGVFbGVtZW50IiwiQ29kZUdlblZpZXdGYWN0b3J5LmNyZWF0ZVRlbXBsYXRlQW5jaG9yIiwiQ29kZUdlblZpZXdGYWN0b3J5LmNyZWF0ZUdsb2JhbEV2ZW50TGlzdGVuZXIiLCJDb2RlR2VuVmlld0ZhY3RvcnkuY3JlYXRlRWxlbWVudEV2ZW50TGlzdGVuZXIiLCJDb2RlR2VuVmlld0ZhY3Rvcnkuc2V0RWxlbWVudEF0dHJpYnV0ZSIsIkNvZGVHZW5WaWV3RmFjdG9yeS5jcmVhdGVBcHBFbGVtZW50IiwiQ29kZUdlblZpZXdGYWN0b3J5LmNyZWF0ZUFuZFNldENvbXBvbmVudFZpZXciLCJDb2RlR2VuVmlld0ZhY3RvcnkuZ2V0UHJvamVjdGVkTm9kZXMiLCJDb2RlR2VuVmlld0ZhY3RvcnkuYXBwZW5kUHJvamVjdGVkTm9kZXMiLCJDb2RlR2VuVmlld0ZhY3RvcnkuY3JlYXRlVmlld0ZhY3RvcnkiLCJSdW50aW1lVmlld0ZhY3RvcnkiLCJSdW50aW1lVmlld0ZhY3RvcnkuY29uc3RydWN0b3IiLCJSdW50aW1lVmlld0ZhY3RvcnkuY3JlYXRlVGV4dCIsIlJ1bnRpbWVWaWV3RmFjdG9yeS5jcmVhdGVFbGVtZW50IiwiUnVudGltZVZpZXdGYWN0b3J5LmNyZWF0ZVRlbXBsYXRlQW5jaG9yIiwiUnVudGltZVZpZXdGYWN0b3J5LmNyZWF0ZUdsb2JhbEV2ZW50TGlzdGVuZXIiLCJSdW50aW1lVmlld0ZhY3RvcnkuY3JlYXRlRWxlbWVudEV2ZW50TGlzdGVuZXIiLCJSdW50aW1lVmlld0ZhY3Rvcnkuc2V0RWxlbWVudEF0dHJpYnV0ZSIsIlJ1bnRpbWVWaWV3RmFjdG9yeS5jcmVhdGVBcHBFbGVtZW50IiwiUnVudGltZVZpZXdGYWN0b3J5LmNyZWF0ZUFuZFNldENvbXBvbmVudFZpZXciLCJSdW50aW1lVmlld0ZhY3RvcnkuZ2V0UHJvamVjdGVkTm9kZXMiLCJSdW50aW1lVmlld0ZhY3RvcnkuYXBwZW5kUHJvamVjdGVkTm9kZXMiLCJSdW50aW1lVmlld0ZhY3RvcnkuY3JlYXRlVmlld0ZhY3RvcnkiLCJQYXJlbnRFbGVtZW50IiwiUGFyZW50RWxlbWVudC5jb25zdHJ1Y3RvciIsIlBhcmVudEVsZW1lbnQuYWRkQ29udGVudE5vZGUiLCJWaWV3QnVpbGRlclZpc2l0b3IiLCJWaWV3QnVpbGRlclZpc2l0b3IuY29uc3RydWN0b3IiLCJWaWV3QnVpbGRlclZpc2l0b3IuX2FkZFJlbmRlck5vZGUiLCJWaWV3QnVpbGRlclZpc2l0b3IuX2dldFBhcmVudFJlbmRlck5vZGUiLCJWaWV3QnVpbGRlclZpc2l0b3IudmlzaXRCb3VuZFRleHQiLCJWaWV3QnVpbGRlclZpc2l0b3IudmlzaXRUZXh0IiwiVmlld0J1aWxkZXJWaXNpdG9yLl92aXNpdFRleHQiLCJWaWV3QnVpbGRlclZpc2l0b3IudmlzaXROZ0NvbnRlbnQiLCJWaWV3QnVpbGRlclZpc2l0b3IudmlzaXRFbGVtZW50IiwiVmlld0J1aWxkZXJWaXNpdG9yLnZpc2l0RW1iZWRkZWRUZW1wbGF0ZSIsIlZpZXdCdWlsZGVyVmlzaXRvci52aXNpdFZhcmlhYmxlIiwiVmlld0J1aWxkZXJWaXNpdG9yLnZpc2l0QXR0ciIsIlZpZXdCdWlsZGVyVmlzaXRvci52aXNpdERpcmVjdGl2ZSIsIlZpZXdCdWlsZGVyVmlzaXRvci52aXNpdEV2ZW50IiwiVmlld0J1aWxkZXJWaXNpdG9yLnZpc2l0RGlyZWN0aXZlUHJvcGVydHkiLCJWaWV3QnVpbGRlclZpc2l0b3IudmlzaXRFbGVtZW50UHJvcGVydHkiLCJjb2RlR2VuRXZlbnRIYW5kbGVyIiwiY29kZUdlblZpZXdGYWN0b3J5TmFtZSIsImNvZGVHZW5WaWV3RW5jYXBzdWxhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEscUJBUU8sMEJBQTBCLENBQUMsQ0FBQTtBQUNsQywyQkFBd0QsZ0NBQWdDLENBQUMsQ0FBQTtBQUN6Riw2QkFlTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBRXhCLDhCQUE2RCxpQkFBaUIsQ0FBQyxDQUFBO0FBQy9FLHFCQUtPLCtCQUErQixDQUFDLENBQUE7QUFDdkMsMEJBQXVCLG9DQUFvQyxDQUFDLENBQUE7QUFFNUQsd0JBQTBDLGtDQUFrQyxDQUFDLENBQUE7QUFFN0UscUJBQWdDLGlDQUFpQyxDQUFDLENBQUE7QUFDbEUscUJBYU8sUUFBUSxDQUFDLENBQUE7QUFDaEIsbUJBQXFELHNCQUFzQixDQUFDLENBQUE7QUFFNUUsb0NBTU8sdUJBQXVCLENBQUMsQ0FBQTtBQUVsQix3QkFBZ0IsR0FBRyxpQkFBVSxDQUFDO0lBQ3pDLFNBQVMsRUFBRSxjQUFPO0lBQ2xCLFlBQVksRUFBRSxvQkFBVTtJQUN4Qiw4QkFBOEIsRUFBRSxtQ0FBNEI7SUFDNUQsZ0JBQWdCLEVBQUUscUJBQWM7Q0FDakMsQ0FBQyxDQUFDO0FBR0g7SUFFRUE7SUFBZUMsQ0FBQ0E7SUFFaEJELDhDQUF1QkEsR0FBdkJBLFVBQXdCQSxTQUFtQ0EsRUFBRUEsUUFBdUJBLEVBQzVEQSxNQUE2QkEsRUFDN0JBLFVBQTZEQSxFQUM3REEsdUJBQW1DQSxFQUNuQ0Es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LElBQUlBLEdBQUdBLHFCQUF1QkEsQ0FBQ0E7QUFDdEVBLENBQUNBO0FBRUQsa0NBQWtDLEtBQXdCO0lBQ3hEQyxFQUFFQSxDQUFDQSxDQUFDQSxjQUFPQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNaQSxNQUFNQSxDQUFDQSxLQUFHQSx5Q0FBbUJBLEdBQUdBLEtBQU9BLENBQUNBO0lBQzFDQSxDQUFDQTtJQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNOQSxNQUFNQSxDQUFDQSxLQUFHQSxLQUFPQSxDQUFDQTtJQUNwQkEsQ0FBQ0E7QUFDSEEsQ0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc1ByZXNlbnQsXG4gIGlzQmxhbmssXG4gIFR5cGUsXG4gIGlzU3RyaW5nLFxuICBTdHJpbmdXcmFwcGVyLFxuICBJU19EQVJULFxuICBDT05TVF9FWFBSXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1NldFdyYXBwZXIsIFN0cmluZ01hcFdyYXBwZXIsIExpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtcbiAgVGVtcGxhdGVBc3QsXG4gIFRlbXBsYXRlQXN0VmlzaXRvcixcbiAgTmdDb250ZW50QXN0LFxuICBFbWJlZGRlZFRlbXBsYXRlQXN0LFxuICBFbGVtZW50QXN0LFxuICBWYXJpYWJsZUFzdCxcbiAgQm91bmRFdmVudEFzdCxcbiAgQm91bmRFbGVtZW50UHJvcGVydHlBc3QsXG4gIEF0dHJBc3QsXG4gIEJvdW5kVGV4dEFzdCxcbiAgVGV4dEFzdCxcbiAgRGlyZWN0aXZlQXN0LFxuICBCb3VuZERpcmVjdGl2ZVByb3BlcnR5QXN0LFxuICB0ZW1wbGF0ZVZpc2l0QWxsXG59IGZyb20gJy4vdGVtcGxhdGVfYXN0JztcbmltcG9ydCB7Q29tcGlsZVR5cGVNZXRhZGF0YSwgQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhfSBmcm9tICcuL2RpcmVjdGl2ZV9tZXRhZGF0YSc7XG5pbXBvcnQge1NvdXJjZUV4cHJlc3Npb25zLCBTb3VyY2VFeHByZXNzaW9uLCBtb2R1bGVSZWZ9IGZyb20gJy4vc291cmNlX21vZHVsZSc7XG5pbXBvcnQge1xuICBBcHBQcm90b1ZpZXcsXG4gIEFwcFZpZXcsXG4gIGZsYXR0ZW5OZXN0ZWRWaWV3UmVuZGVyTm9kZXMsXG4gIGNoZWNrU2xvdENvdW50XG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3JztcbmltcG9ydCB7Vmlld1R5cGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3X3R5cGUnO1xuaW1wb3J0IHtBcHBWaWV3TWFuYWdlcl99IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3X21hbmFnZXInO1xuaW1wb3J0IHtBcHBQcm90b0VsZW1lbnQsIEFwcEVsZW1lbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9lbGVtZW50JztcbmltcG9ydCB7UmVuZGVyZXIsIFBhcmVudFJlbmRlcmVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZW5kZXIvYXBpJztcbmltcG9ydCB7Vmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL3ZpZXcnO1xuaW1wb3J0IHtcbiAgZXNjYXBlU2luZ2xlUXVvdGVTdHJpbmcsXG4gIGNvZGVHZW5Db25zdENvbnN0cnVjdG9yQ2FsbCxcbiAgY29kZUdlblZhbHVlRm4sXG4gIGNvZGVHZW5GbkhlYWRlcixcbiAgTU9EVUxFX1NVRkZJWCxcbiAgU3RhdGVtZW50LFxuICBlc2NhcGVWYWx1ZSxcbiAgY29kZUdlbkFycmF5LFxuICBjb2RlR2VuRmxhdEFycmF5LFxuICBFeHByZXNzaW9uLFxuICBmbGF0dGVuQXJyYXksXG4gIENPTlNUX1ZBUlxufSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHtSZXNvbHZlZFByb3ZpZGVyLCBJbmplY3RhYmxlLCBJbmplY3Rvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuXG5pbXBvcnQge1xuICBBUFBfVklFV19NT0RVTEVfUkVGLFxuICBBUFBfRUxfTU9EVUxFX1JFRixcbiAgTUVUQURBVEFfTU9EVUxFX1JFRixcbiAgQ29tcGlsZVByb3RvVmlldyxcbiAgQ29tcGlsZVByb3RvRWxlbWVudFxufSBmcm9tICcuL3Byb3RvX3ZpZXdfY29tcGlsZXInO1xuXG5leHBvcnQgY29uc3QgVklFV19KSVRfSU1QT1JUUyA9IENPTlNUX0VYUFIoe1xuICAnQXBwVmlldyc6IEFwcFZpZXcsXG4gICdBcHBFbGVtZW50JzogQXBwRWxlbWVudCxcbiAgJ2ZsYXR0ZW5OZXN0ZWRWaWV3UmVuZGVyTm9kZXMnOiBmbGF0dGVuTmVzdGVkVmlld1JlbmRlck5vZGVzLFxuICAnY2hlY2tTbG90Q291bnQnOiBjaGVja1Nsb3RDb3VudFxufSk7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFZpZXdDb21waWxlciB7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBjb21waWxlQ29tcG9uZW50UnVudGltZShjb21wb25lbnQ6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSwgdGVtcGxhdGU6IFRlbXBsYXRlQXN0W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogQXJyYXk8c3RyaW5nIHwgYW55W10+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b1ZpZXdzOiBDb21waWxlUHJvdG9WaWV3PEFwcFByb3RvVmlldywgQXBwUHJvdG9FbGVtZW50PltdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3RvckZhY3RvcmllczogRnVuY3Rpb25bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Vmlld0ZhY3Rvcnk6IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgIHZhciB2aWV3RmFjdG9yeSA9IG5ldyBSdW50aW1lVmlld0ZhY3RvcnkoY29tcG9uZW50LCBzdHlsZXMsIHByb3RvVmlld3MsIGNoYW5nZURldGVjdG9yRmFjdG9yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Vmlld0ZhY3RvcnkpO1xuICAgIHJldHVybiB2aWV3RmFjdG9yeS5jcmVhdGVWaWV3RmFjdG9yeSh0ZW1wbGF0ZSwgMCwgW10pO1xuICB9XG5cbiAgY29tcGlsZUNvbXBvbmVudENvZGVHZW4oY29tcG9uZW50OiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsIHRlbXBsYXRlOiBUZW1wbGF0ZUFzdFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IFNvdXJjZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvVmlld3M6IENvbXBpbGVQcm90b1ZpZXc8RXhwcmVzc2lvbiwgRXhwcmVzc2lvbj5bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0b3JGYWN0b3J5RXhwcmVzc2lvbnM6IFNvdXJjZUV4cHJlc3Npb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRWaWV3RmFjdG9yeTogRnVuY3Rpb24pOiBTb3VyY2VFeHByZXNzaW9uIHtcbiAgICB2YXIgdmlld0ZhY3RvcnkgPSBuZXcgQ29kZUdlblZpZXdGYWN0b3J5KFxuICAgICAgICBjb21wb25lbnQsIHN0eWxlcywgcHJvdG9WaWV3cywgY2hhbmdlRGV0ZWN0b3JGYWN0b3J5RXhwcmVzc2lvbnMsIGNvbXBvbmVudFZpZXdGYWN0b3J5KTtcbiAgICB2YXIgdGFyZ2V0U3RhdGVtZW50czogU3RhdGVtZW50W10gPSBbXTtcbiAgICB2YXIgdmlld0ZhY3RvcnlFeHByZXNzaW9uID0gdmlld0ZhY3RvcnkuY3JlYXRlVmlld0ZhY3RvcnkodGVtcGxhdGUsIDAsIHRhcmdldFN0YXRlbWVudHMpO1xuICAgIHJldHVybiBuZXcgU291cmNlRXhwcmVzc2lvbih0YXJnZXRTdGF0ZW1lbnRzLm1hcChzdG10ID0+IHN0bXQuc3RhdGVtZW50KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0ZhY3RvcnlFeHByZXNzaW9uLmV4cHJlc3Npb24pO1xuICB9XG59XG5cbmludGVyZmFjZSBWaWV3RmFjdG9yeTxFWFBSRVNTSU9OLCBTVEFURU1FTlQ+IHtcbiAgY3JlYXRlVGV4dChyZW5kZXJlcjogRVhQUkVTU0lPTiwgcGFyZW50OiBFWFBSRVNTSU9OLCB0ZXh0OiBzdHJpbmcsXG4gICAgICAgICAgICAgdGFyZ2V0U3RhdGVtZW50czogU1RBVEVNRU5UW10pOiBFWFBSRVNTSU9OO1xuXG4gIGNyZWF0ZUVsZW1lbnQocmVuZGVyZXI6IEVYUFJFU1NJT04sIHBhcmVudDogRVhQUkVTU0lPTiwgbmFtZTogc3RyaW5nLCByb290U2VsZWN0b3I6IEVYUFJFU1NJT04sXG4gICAgICAgICAgICAgICAgdGFyZ2V0U3RhdGVtZW50czogU1RBVEVNRU5UW10pOiBFWFBSRVNTSU9OO1xuXG4gIGNyZWF0ZVRlbXBsYXRlQW5jaG9yKHJlbmRlcmVyOiBFWFBSRVNTSU9OLCBwYXJlbnQ6IEVYUFJFU1NJT04sXG4gICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YXRlbWVudHM6IFNUQVRFTUVOVFtdKTogRVhQUkVTU0lPTjtcblxuICBjcmVhdGVHbG9iYWxFdmVudExpc3RlbmVyKHJlbmRlcmVyOiBFWFBSRVNTSU9OLCB2aWV3OiBFWFBSRVNTSU9OLCBib3VuZEVsZW1lbnRJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50QXN0OiBCb3VuZEV2ZW50QXN0LCB0YXJnZXRTdGF0ZW1lbnRzOiBTVEFURU1FTlRbXSk6IEVYUFJFU1NJT047XG5cbiAgY3JlYXRlRWxlbWVudEV2ZW50TGlzdGVuZXIocmVuZGVyZXI6IEVYUFJFU1NJT04sIHZpZXc6IEVYUFJFU1NJT04sIGJvdW5kRWxlbWVudEluZGV4OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlck5vZGU6IEVYUFJFU1NJT04sIGV2ZW50QXN0OiBCb3VuZEV2ZW50QXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGF0ZW1lbnRzOiBTVEFURU1FTlRbXSk6IEVYUFJFU1NJT047XG5cbiAgc2V0RWxlbWVudEF0dHJpYnV0ZShyZW5kZXJlcjogRVhQUkVTU0lPTiwgcmVuZGVyTm9kZTogRVhQUkVTU0lPTiwgYXR0ck5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyVmFsdWU6IHN0cmluZywgdGFyZ2V0U3RhdGVtZW50czogU1RBVEVNRU5UW10pO1xuXG4gIGNyZWF0ZUFwcEVsZW1lbnQoYXBwUHJvdG9FbDogRVhQUkVTU0lPTiwgdmlldzogRVhQUkVTU0lPTiwgcmVuZGVyTm9kZTogRVhQUkVTU0lPTixcbiAgICAgICAgICAgICAgICAgICBwYXJlbnRBcHBFbDogRVhQUkVTU0lPTiwgZW1iZWRkZWRWaWV3RmFjdG9yeTogRVhQUkVTU0lPTixcbiAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGF0ZW1lbnRzOiBTVEFURU1FTlRbXSk6IEVYUFJFU1NJT047XG5cbiAgY3JlYXRlQW5kU2V0Q29tcG9uZW50VmlldyhyZW5kZXJlcjogRVhQUkVTU0lPTiwgdmlld01hbmFnZXI6IEVYUFJFU1NJT04sIHZpZXc6IEVYUFJFU1NJT04sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwRWw6IEVYUFJFU1NJT04sIGNvbXBvbmVudDogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnROb2Rlc0J5TmdDb250ZW50SW5kZXg6IEVYUFJFU1NJT05bXVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YXRlbWVudHM6IFNUQVRFTUVOVFtdKTtcblxuICBnZXRQcm9qZWN0ZWROb2Rlcyhwcm9qZWN0YWJsZU5vZGVzOiBFWFBSRVNTSU9OLCBuZ0NvbnRlbnRJbmRleDogbnVtYmVyKTogRVhQUkVTU0lPTjtcblxuICBhcHBlbmRQcm9qZWN0ZWROb2RlcyhyZW5kZXJlcjogRVhQUkVTU0lPTiwgcGFyZW50OiBFWFBSRVNTSU9OLCBub2RlczogRVhQUkVTU0lPTixcbiAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U3RhdGVtZW50czogU1RBVEVNRU5UW10pO1xuXG4gIGNyZWF0ZVZpZXdGYWN0b3J5KGFzdHM6IFRlbXBsYXRlQXN0W10sIGVtYmVkZGVkVGVtcGxhdGVJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGF0ZW1lbnRzOiBTVEFURU1FTlRbXSk6IEVYUFJFU1NJT047XG59XG5cbmNsYXNzIENvZGVHZW5WaWV3RmFjdG9yeSBpbXBsZW1lbnRzIFZpZXdGYWN0b3J5PEV4cHJlc3Npb24sIFN0YXRlbWVudD4ge1xuICBwcml2YXRlIF9uZXh0VmFySWQ6IG51bWJlciA9IDA7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb21wb25lbnQ6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSwgcHVibGljIHN0eWxlczogU291cmNlRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgcHVibGljIHByb3RvVmlld3M6IENvbXBpbGVQcm90b1ZpZXc8RXhwcmVzc2lvbiwgRXhwcmVzc2lvbj5bXSxcbiAgICAgICAgICAgICAgcHVibGljIGNoYW5nZURldGVjdG9yRXhwcmVzc2lvbnM6IFNvdXJjZUV4cHJlc3Npb25zLFxuICAgICAgICAgICAgICBwdWJsaWMgY29tcG9uZW50Vmlld0ZhY3Rvcnk6IEZ1bmN0aW9uKSB7fVxuXG4gIHByaXZhdGUgX25leHRWYXIocHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHt0aGlzLl9uZXh0VmFySWQrK31fJHt0aGlzLmNvbXBvbmVudC50eXBlLm5hbWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgX25leHRSZW5kZXJWYXIoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX25leHRWYXIoJ3JlbmRlcicpOyB9XG5cbiAgcHJpdmF0ZSBfbmV4dEFwcFZhcigpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fbmV4dFZhcignYXBwJyk7IH1cblxuICBwcml2YXRlIF9uZXh0RGlzcG9zYWJsZVZhcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgZGlzcG9zYWJsZSR7dGhpcy5fbmV4dFZhcklkKyt9XyR7dGhpcy5jb21wb25lbnQudHlwZS5uYW1lfWA7XG4gIH1cblxuICBjcmVhdGVUZXh0KHJlbmRlcmVyOiBFeHByZXNzaW9uLCBwYXJlbnQ6IEV4cHJlc3Npb24sIHRleHQ6IHN0cmluZyxcbiAgICAgICAgICAgICB0YXJnZXRTdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSk6IEV4cHJlc3Npb24ge1xuICAgIHZhciB2YXJOYW1lID0gdGhpcy5fbmV4dFJlbmRlclZhcigpO1xuICAgIHZhciBzdGF0ZW1lbnQgPVxuICAgICAgICBgdmFyICR7dmFyTmFtZX0gPSAke3JlbmRlcmVyLmV4cHJlc3Npb259LmNyZWF0ZVRleHQoJHtpc1ByZXNlbnQocGFyZW50KSA/IHBhcmVudC5leHByZXNzaW9uIDogbnVsbH0sICR7ZXNjYXBlU2luZ2xlUXVvdGVTdHJpbmcodGV4dCl9KTtgO1xuICAgIHRhcmdldFN0YXRlbWVudHMucHVzaChuZXcgU3RhdGVtZW50KHN0YXRlbWVudCkpO1xuICAgIHJldHVybiBuZXcgRXhwcmVzc2lvbih2YXJOYW1lKTtcbiAgfVxuXG4gIGNyZWF0ZUVsZW1lbnQocmVuZGVyZXI6IEV4cHJlc3Npb24sIHBhcmVudFJlbmRlck5vZGU6IEV4cHJlc3Npb24sIG5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICByb290U2VsZWN0b3I6IEV4cHJlc3Npb24sIHRhcmdldFN0YXRlbWVudHM6IFN0YXRlbWVudFtdKTogRXhwcmVzc2lvbiB7XG4gICAgdmFyIHZhck5hbWUgPSB0aGlzLl9uZXh0UmVuZGVyVmFyKCk7XG4gICAgdmFyIHZhbHVlRXhwcjtcbiAgICBpZiAoaXNQcmVzZW50KHJvb3RTZWxlY3RvcikpIHtcbiAgICAgIHZhbHVlRXhwciA9IGAke3Jvb3RTZWxlY3Rvci5leHByZXNzaW9ufSA9PSBudWxsID9cbiAgICAgICAgJHtyZW5kZXJlci5leHByZXNzaW9ufS5jcmVhdGVFbGVtZW50KCR7aXNQcmVzZW50KHBhcmVudFJlbmRlck5vZGUpID8gcGFyZW50UmVuZGVyTm9kZS5leHByZXNzaW9uIDogbnVsbH0sICR7ZXNjYXBlU2luZ2xlUXVvdGVTdHJpbmcobmFtZSl9KSA6XG4gICAgICAgICR7cmVuZGVyZXIuZXhwcmVzc2lvbn0uc2VsZWN0Um9vdEVsZW1lbnQoJHtyb290U2VsZWN0b3IuZXhwcmVzc2lvbn0pO2A7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlRXhwciA9XG4gICAgICAgICAgYCR7cmVuZGVyZXIuZXhwcmVzc2lvbn0uY3JlYXRlRWxlbWVudCgke2lzUHJlc2VudChwYXJlbnRSZW5kZXJOb2RlKSA/IHBhcmVudFJlbmRlck5vZGUuZXhwcmVzc2lvbiA6IG51bGx9LCAke2VzY2FwZVNpbmdsZVF1b3RlU3RyaW5nKG5hbWUpfSlgO1xuICAgIH1cbiAgICB2YXIgc3RhdGVtZW50ID0gYHZhciAke3Zhck5hbWV9ID0gJHt2YWx1ZUV4cHJ9O2A7XG4gICAgdGFyZ2V0U3RhdGVtZW50cy5wdXNoKG5ldyBTdGF0ZW1lbnQoc3RhdGVtZW50KSk7XG4gICAgcmV0dXJuIG5ldyBFeHByZXNzaW9uKHZhck5hbWUpO1xuICB9XG5cbiAgY3JlYXRlVGVtcGxhdGVBbmNob3IocmVuZGVyZXI6IEV4cHJlc3Npb24sIHBhcmVudFJlbmRlck5vZGU6IEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YXRlbWVudHM6IFN0YXRlbWVudFtdKTogRXhwcmVzc2lvbiB7XG4gICAgdmFyIHZhck5hbWUgPSB0aGlzLl9uZXh0UmVuZGVyVmFyKCk7XG4gICAgdmFyIHZhbHVlRXhwciA9XG4gICAgICAgIGAke3JlbmRlcmVyLmV4cHJlc3Npb259LmNyZWF0ZVRlbXBsYXRlQW5jaG9yKCR7aXNQcmVzZW50KHBhcmVudFJlbmRlck5vZGUpID8gcGFyZW50UmVuZGVyTm9kZS5leHByZXNzaW9uIDogbnVsbH0pO2A7XG4gICAgdGFyZ2V0U3RhdGVtZW50cy5wdXNoKG5ldyBTdGF0ZW1lbnQoYHZhciAke3Zhck5hbWV9ID0gJHt2YWx1ZUV4cHJ9YCkpO1xuICAgIHJldHVybiBuZXcgRXhwcmVzc2lvbih2YXJOYW1lKTtcbiAgfVxuXG4gIGNyZWF0ZUdsb2JhbEV2ZW50TGlzdGVuZXIocmVuZGVyZXI6IEV4cHJlc3Npb24sIGFwcFZpZXc6IEV4cHJlc3Npb24sIGJvdW5kRWxlbWVudEluZGV4OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBc3Q6IEJvdW5kRXZlbnRBc3QsIHRhcmdldFN0YXRlbWVudHM6IFN0YXRlbWVudFtdKTogRXhwcmVzc2lvbiB7XG4gICAgdmFyIGRpc3Bvc2FibGVWYXIgPSB0aGlzLl9uZXh0RGlzcG9zYWJsZVZhcigpO1xuICAgIHZhciBldmVudEhhbmRsZXJFeHByID0gY29kZUdlbkV2ZW50SGFuZGxlcihhcHBWaWV3LCBib3VuZEVsZW1lbnRJbmRleCwgZXZlbnRBc3QuZnVsbE5hbWUpO1xuICAgIHRhcmdldFN0YXRlbWVudHMucHVzaChuZXcgU3RhdGVtZW50KFxuICAgICAgICBgdmFyICR7ZGlzcG9zYWJsZVZhcn0gPSAke3JlbmRlcmVyLmV4cHJlc3Npb259Lmxpc3Rlbkdsb2JhbCgke2VzY2FwZVZhbHVlKGV2ZW50QXN0LnRhcmdldCl9LCAke2VzY2FwZVZhbHVlKGV2ZW50QXN0Lm5hbWUpfSwgJHtldmVudEhhbmRsZXJFeHByfSk7YCkpO1xuICAgIHJldHVybiBuZXcgRXhwcmVzc2lvbihkaXNwb3NhYmxlVmFyKTtcbiAgfVxuXG4gIGNyZWF0ZUVsZW1lbnRFdmVudExpc3RlbmVyKHJlbmRlcmVyOiBFeHByZXNzaW9uLCBhcHBWaWV3OiBFeHByZXNzaW9uLCBib3VuZEVsZW1lbnRJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJOb2RlOiBFeHByZXNzaW9uLCBldmVudEFzdDogQm91bmRFdmVudEFzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U3RhdGVtZW50czogU3RhdGVtZW50W10pIHtcbiAgICB2YXIgZGlzcG9zYWJsZVZhciA9IHRoaXMuX25leHREaXNwb3NhYmxlVmFyKCk7XG4gICAgdmFyIGV2ZW50SGFuZGxlckV4cHIgPSBjb2RlR2VuRXZlbnRIYW5kbGVyKGFwcFZpZXcsIGJvdW5kRWxlbWVudEluZGV4LCBldmVudEFzdC5mdWxsTmFtZSk7XG4gICAgdGFyZ2V0U3RhdGVtZW50cy5wdXNoKG5ldyBTdGF0ZW1lbnQoXG4gICAgICAgIGB2YXIgJHtkaXNwb3NhYmxlVmFyfSA9ICR7cmVuZGVyZXIuZXhwcmVzc2lvbn0ubGlzdGVuKCR7cmVuZGVyTm9kZS5leHByZXNzaW9ufSwgJHtlc2NhcGVWYWx1ZShldmVudEFzdC5uYW1lKX0sICR7ZXZlbnRIYW5kbGVyRXhwcn0pO2ApKTtcbiAgICByZXR1cm4gbmV3IEV4cHJlc3Npb24oZGlzcG9zYWJsZVZhcik7XG4gIH1cblxuICBzZXRFbGVtZW50QXR0cmlidXRlKHJlbmRlcmVyOiBFeHByZXNzaW9uLCByZW5kZXJOb2RlOiBFeHByZXNzaW9uLCBhdHRyTmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJWYWx1ZTogc3RyaW5nLCB0YXJnZXRTdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSkge1xuICAgIHRhcmdldFN0YXRlbWVudHMucHVzaChuZXcgU3RhdGVtZW50KFxuICAgICAgICBgJHtyZW5kZXJlci5leHByZXNzaW9ufS5zZXRFbGVtZW50QXR0cmlidXRlKCR7cmVuZGVyTm9kZS5leHByZXNzaW9ufSwgJHtlc2NhcGVTaW5nbGVRdW90ZVN0cmluZyhhdHRyTmFtZSl9LCAke2VzY2FwZVNpbmdsZVF1b3RlU3RyaW5nKGF0dHJWYWx1ZSl9KTtgKSk7XG4gIH1cblxuICBjcmVhdGVBcHBFbGVtZW50KGFwcFByb3RvRWw6IEV4cHJlc3Npb24sIGFwcFZpZXc6IEV4cHJlc3Npb24sIHJlbmRlck5vZGU6IEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgICAgcGFyZW50QXBwRWw6IEV4cHJlc3Npb24sIGVtYmVkZGVkVmlld0ZhY3Rvcnk6IEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgICAgdGFyZ2V0U3RhdGVtZW50czogU3RhdGVtZW50W10pOiBFeHByZXNzaW9uIHtcbiAgICB2YXIgYXBwVmFyID0gdGhpcy5fbmV4dEFwcFZhcigpO1xuICAgIHZhciB2YXJWYWx1ZSA9XG4gICAgICAgIGBuZXcgJHtBUFBfRUxfTU9EVUxFX1JFRn1BcHBFbGVtZW50KCR7YXBwUHJvdG9FbC5leHByZXNzaW9ufSwgJHthcHBWaWV3LmV4cHJlc3Npb259LFxuICAgICAgJHtpc1ByZXNlbnQocGFyZW50QXBwRWwpID8gcGFyZW50QXBwRWwuZXhwcmVzc2lvbiA6IG51bGx9LCAke3JlbmRlck5vZGUuZXhwcmVzc2lvbn0sICR7aXNQcmVzZW50KGVtYmVkZGVkVmlld0ZhY3RvcnkpID8gZW1iZWRkZWRWaWV3RmFjdG9yeS5leHByZXNzaW9uIDogbnVsbH0pYDtcbiAgICB0YXJnZXRTdGF0ZW1lbnRzLnB1c2gobmV3IFN0YXRlbWVudChgdmFyICR7YXBwVmFyfSA9ICR7dmFyVmFsdWV9O2ApKTtcbiAgICByZXR1cm4gbmV3IEV4cHJlc3Npb24oYXBwVmFyKTtcbiAgfVxuXG4gIGNyZWF0ZUFuZFNldENvbXBvbmVudFZpZXcocmVuZGVyZXI6IEV4cHJlc3Npb24sIHZpZXdNYW5hZ2VyOiBFeHByZXNzaW9uLCB2aWV3OiBFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcEVsOiBFeHByZXNzaW9uLCBjb21wb25lbnQ6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50Tm9kZXNCeU5nQ29udGVudEluZGV4OiBFeHByZXNzaW9uW11bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSkge1xuICAgIHZhciBjb2RlR2VuQ29udGVudE5vZGVzO1xuICAgIGlmICh0aGlzLmNvbXBvbmVudC50eXBlLmlzSG9zdCkge1xuICAgICAgY29kZUdlbkNvbnRlbnROb2RlcyA9IGAke3ZpZXcuZXhwcmVzc2lvbn0ucHJvamVjdGFibGVOb2Rlc2A7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvZGVHZW5Db250ZW50Tm9kZXMgPVxuICAgICAgICAgIGBbJHtjb250ZW50Tm9kZXNCeU5nQ29udGVudEluZGV4Lm1hcCggbm9kZXMgPT4gY29kZUdlbkZsYXRBcnJheShub2RlcykgKS5qb2luKCcsJyl9XWA7XG4gICAgfVxuICAgIHRhcmdldFN0YXRlbWVudHMucHVzaChuZXcgU3RhdGVtZW50KFxuICAgICAgICBgJHt0aGlzLmNvbXBvbmVudFZpZXdGYWN0b3J5KGNvbXBvbmVudCl9KCR7cmVuZGVyZXIuZXhwcmVzc2lvbn0sICR7dmlld01hbmFnZXIuZXhwcmVzc2lvbn0sICR7YXBwRWwuZXhwcmVzc2lvbn0sICR7Y29kZUdlbkNvbnRlbnROb2Rlc30sIG51bGwsIG51bGwsIG51bGwpO2ApKTtcbiAgfVxuXG4gIGdldFByb2plY3RlZE5vZGVzKHByb2plY3RhYmxlTm9kZXM6IEV4cHJlc3Npb24sIG5nQ29udGVudEluZGV4OiBudW1iZXIpOiBFeHByZXNzaW9uIHtcbiAgICByZXR1cm4gbmV3IEV4cHJlc3Npb24oYCR7cHJvamVjdGFibGVOb2Rlcy5leHByZXNzaW9ufVske25nQ29udGVudEluZGV4fV1gLCB0cnVlKTtcbiAgfVxuXG4gIGFwcGVuZFByb2plY3RlZE5vZGVzKHJlbmRlcmVyOiBFeHByZXNzaW9uLCBwYXJlbnQ6IEV4cHJlc3Npb24sIG5vZGVzOiBFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSkge1xuICAgIHRhcmdldFN0YXRlbWVudHMucHVzaChuZXcgU3RhdGVtZW50KFxuICAgICAgICBgJHtyZW5kZXJlci5leHByZXNzaW9ufS5wcm9qZWN0Tm9kZXMoJHtwYXJlbnQuZXhwcmVzc2lvbn0sICR7QVBQX1ZJRVdfTU9EVUxFX1JFRn1mbGF0dGVuTmVzdGVkVmlld1JlbmRlck5vZGVzKCR7bm9kZXMuZXhwcmVzc2lvbn0pKTtgKSk7XG4gIH1cblxuICBjcmVhdGVWaWV3RmFjdG9yeShhc3RzOiBUZW1wbGF0ZUFzdFtdLCBlbWJlZGRlZFRlbXBsYXRlSW5kZXg6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U3RhdGVtZW50czogU3RhdGVtZW50W10pOiBFeHByZXNzaW9uIHtcbiAgICB2YXIgY29tcGlsZVByb3RvVmlldyA9IHRoaXMucHJvdG9WaWV3c1tlbWJlZGRlZFRlbXBsYXRlSW5kZXhdO1xuICAgIHZhciBpc0hvc3RWaWV3ID0gdGhpcy5jb21wb25lbnQudHlwZS5pc0hvc3Q7XG4gICAgdmFyIGlzQ29tcG9uZW50VmlldyA9IGVtYmVkZGVkVGVtcGxhdGVJbmRleCA9PT0gMCAmJiAhaXNIb3N0VmlldztcbiAgICB2YXIgdmlzaXRvciA9IG5ldyBWaWV3QnVpbGRlclZpc2l0b3I8RXhwcmVzc2lvbiwgU3RhdGVtZW50PihcbiAgICAgICAgbmV3IEV4cHJlc3Npb24oJ3JlbmRlcmVyJyksIG5ldyBFeHByZXNzaW9uKCd2aWV3TWFuYWdlcicpLFxuICAgICAgICBuZXcgRXhwcmVzc2lvbigncHJvamVjdGFibGVOb2RlcycpLCBpc0hvc3RWaWV3ID8gbmV3IEV4cHJlc3Npb24oJ3Jvb3RTZWxlY3RvcicpIDogbnVsbCxcbiAgICAgICAgbmV3IEV4cHJlc3Npb24oJ3ZpZXcnKSwgY29tcGlsZVByb3RvVmlldywgdGFyZ2V0U3RhdGVtZW50cywgdGhpcyk7XG5cbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKFxuICAgICAgICB2aXNpdG9yLCBhc3RzLFxuICAgICAgICBuZXcgUGFyZW50RWxlbWVudChpc0NvbXBvbmVudFZpZXcgPyBuZXcgRXhwcmVzc2lvbigncGFyZW50UmVuZGVyTm9kZScpIDogbnVsbCwgbnVsbCwgbnVsbCkpO1xuXG4gICAgdmFyIGFwcFByb3RvVmlldyA9IGNvbXBpbGVQcm90b1ZpZXcucHJvdG9WaWV3LmV4cHJlc3Npb247XG4gICAgdmFyIHZpZXdGYWN0b3J5TmFtZSA9IGNvZGVHZW5WaWV3RmFjdG9yeU5hbWUodGhpcy5jb21wb25lbnQsIGVtYmVkZGVkVGVtcGxhdGVJbmRleCk7XG4gICAgdmFyIGNoYW5nZURldGVjdG9yRmFjdG9yeSA9IHRoaXMuY2hhbmdlRGV0ZWN0b3JFeHByZXNzaW9ucy5leHByZXNzaW9uc1tlbWJlZGRlZFRlbXBsYXRlSW5kZXhdO1xuICAgIHZhciBmYWN0b3J5QXJncyA9IFtcbiAgICAgICdwYXJlbnRSZW5kZXJlcicsXG4gICAgICAndmlld01hbmFnZXInLFxuICAgICAgJ2NvbnRhaW5lckVsJyxcbiAgICAgICdwcm9qZWN0YWJsZU5vZGVzJyxcbiAgICAgICdyb290U2VsZWN0b3InLFxuICAgICAgJ2R5bmFtaWNhbGx5Q3JlYXRlZFByb3ZpZGVycycsXG4gICAgICAncm9vdEluamVjdG9yJ1xuICAgIF07XG4gICAgdmFyIGluaXRSZW5kZXJlclN0bXRzID0gW107XG4gICAgdmFyIHJlbmRlcmVyRXhwciA9IGBwYXJlbnRSZW5kZXJlcmA7XG4gICAgaWYgKGVtYmVkZGVkVGVtcGxhdGVJbmRleCA9PT0gMCkge1xuICAgICAgdmFyIHJlbmRlckNvbXBUeXBlVmFyID0gdGhpcy5fbmV4dFZhcigncmVuZGVyVHlwZScpO1xuICAgICAgdGFyZ2V0U3RhdGVtZW50cy5wdXNoKG5ldyBTdGF0ZW1lbnQoYHZhciAke3JlbmRlckNvbXBUeXBlVmFyfSA9IG51bGw7YCkpO1xuICAgICAgdmFyIHN0eWxlc1ZhciA9IHRoaXMuX25leHRWYXIoJ3N0eWxlcycpO1xuICAgICAgdGFyZ2V0U3RhdGVtZW50cy5wdXNoKFxuICAgICAgICAgIG5ldyBTdGF0ZW1lbnQoYCR7Q09OU1RfVkFSfSAke3N0eWxlc1Zhcn0gPSAke3RoaXMuc3R5bGVzLmV4cHJlc3Npb259O2ApKTtcbiAgICAgIHZhciBlbmNhcHN1bGF0aW9uID0gdGhpcy5jb21wb25lbnQudGVtcGxhdGUuZW5jYXBzdWxhdGlvbjtcbiAgICAgIGluaXRSZW5kZXJlclN0bXRzLnB1c2goYGlmICgke3JlbmRlckNvbXBUeXBlVmFyfSA9PSBudWxsKSB7XG4gICAgICAgICR7cmVuZGVyQ29tcFR5cGVWYXJ9ID0gdmlld01hbmFnZXIuY3JlYXRlUmVuZGVyQ29tcG9uZW50VHlwZSgke2NvZGVHZW5WaWV3RW5jYXBzdWxhdGlvbihlbmNhcHN1bGF0aW9uKX0sICR7c3R5bGVzVmFyfSk7XG4gICAgICB9YCk7XG4gICAgICByZW5kZXJlckV4cHIgPSBgcGFyZW50UmVuZGVyZXIucmVuZGVyQ29tcG9uZW50KCR7cmVuZGVyQ29tcFR5cGVWYXJ9KWA7XG4gICAgfVxuICAgIHZhciBzdGF0ZW1lbnQgPSBgXG4ke2NvZGVHZW5GbkhlYWRlcihmYWN0b3J5QXJncywgdmlld0ZhY3RvcnlOYW1lKX17XG4gICR7aW5pdFJlbmRlcmVyU3RtdHMuam9pbignXFxuJyl9XG4gIHZhciByZW5kZXJlciA9ICR7cmVuZGVyZXJFeHByfTtcbiAgdmFyIHZpZXcgPSBuZXcgJHtBUFBfVklFV19NT0RVTEVfUkVGfUFwcFZpZXcoXG4gICAgJHthcHBQcm90b1ZpZXd9LCByZW5kZXJlciwgdmlld01hbmFnZXIsXG4gICAgcHJvamVjdGFibGVOb2RlcyxcbiAgICBjb250YWluZXJFbCxcbiAgICBkeW5hbWljYWxseUNyZWF0ZWRQcm92aWRlcnMsIHJvb3RJbmplY3RvcixcbiAgICAke2NoYW5nZURldGVjdG9yRmFjdG9yeX0oKVxuICApO1xuICAke0FQUF9WSUVXX01PRFVMRV9SRUZ9Y2hlY2tTbG90Q291bnQoJHtlc2NhcGVWYWx1ZSh0aGlzLmNvbXBvbmVudC50eXBlLm5hbWUpfSwgJHt0aGlzLmNvbXBvbmVudC50ZW1wbGF0ZS5uZ0NvbnRlbnRTZWxlY3RvcnMubGVuZ3RofSwgcHJvamVjdGFibGVOb2Rlcyk7XG4gICR7aXNDb21wb25lbnRWaWV3ID8gJ3ZhciBwYXJlbnRSZW5kZXJOb2RlID0gcmVuZGVyZXIuY3JlYXRlVmlld1Jvb3Qodmlldy5jb250YWluZXJBcHBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpOycgOiAnJ31cbiAgJHt2aXNpdG9yLnJlbmRlclN0bXRzLm1hcChzdG10ID0+IHN0bXQuc3RhdGVtZW50KS5qb2luKCdcXG4nKX1cbiAgJHt2aXNpdG9yLmFwcFN0bXRzLm1hcChzdG10ID0+IHN0bXQuc3RhdGVtZW50KS5qb2luKCdcXG4nKX1cblxuICB2aWV3LmluaXQoJHtjb2RlR2VuRmxhdEFycmF5KHZpc2l0b3Iucm9vdE5vZGVzT3JBcHBFbGVtZW50cyl9LCAke2NvZGVHZW5BcnJheSh2aXNpdG9yLnJlbmRlck5vZGVzKX0sICR7Y29kZUdlbkFycmF5KHZpc2l0b3IuYXBwRGlzcG9zYWJsZXMpfSxcbiAgICAgICAgICAgICR7Y29kZUdlbkFycmF5KHZpc2l0b3IuYXBwRWxlbWVudHMpfSk7XG4gIHJldHVybiB2aWV3O1xufWA7XG4gICAgdGFyZ2V0U3RhdGVtZW50cy5wdXNoKG5ldyBTdGF0ZW1lbnQoc3RhdGVtZW50KSk7XG4gICAgcmV0dXJuIG5ldyBFeHByZXNzaW9uKHZpZXdGYWN0b3J5TmFtZSk7XG4gIH1cbn1cblxuY2xhc3MgUnVudGltZVZpZXdGYWN0b3J5IGltcGxlbWVudHMgVmlld0ZhY3Rvcnk8YW55LCBhbnk+IHtcbiAgY29uc3RydWN0b3IocHVibGljIGNvbXBvbmVudDogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLCBwdWJsaWMgc3R5bGVzOiBBcnJheTxzdHJpbmcgfCBhbnlbXT4sXG4gICAgICAgICAgICAgIHB1YmxpYyBwcm90b1ZpZXdzOiBDb21waWxlUHJvdG9WaWV3PEFwcFByb3RvVmlldywgQXBwUHJvdG9FbGVtZW50PltdLFxuICAgICAgICAgICAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3JGYWN0b3JpZXM6IEZ1bmN0aW9uW10sIHB1YmxpYyBjb21wb25lbnRWaWV3RmFjdG9yeTogRnVuY3Rpb24pIHt9XG5cbiAgY3JlYXRlVGV4dChyZW5kZXJlcjogUmVuZGVyZXIsIHBhcmVudDogYW55LCB0ZXh0OiBzdHJpbmcsIHRhcmdldFN0YXRlbWVudHM6IGFueVtdKTogYW55IHtcbiAgICByZXR1cm4gcmVuZGVyZXIuY3JlYXRlVGV4dChwYXJlbnQsIHRleHQpO1xuICB9XG5cbiAgY3JlYXRlRWxlbWVudChyZW5kZXJlcjogUmVuZGVyZXIsIHBhcmVudDogYW55LCBuYW1lOiBzdHJpbmcsIHJvb3RTZWxlY3Rvcjogc3RyaW5nLFxuICAgICAgICAgICAgICAgIHRhcmdldFN0YXRlbWVudHM6IGFueVtdKTogYW55IHtcbiAgICB2YXIgZWw7XG4gICAgaWYgKGlzUHJlc2VudChyb290U2VsZWN0b3IpKSB7XG4gICAgICBlbCA9IHJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KHJvb3RTZWxlY3Rvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsID0gcmVuZGVyZXIuY3JlYXRlRWxlbWVudChwYXJlbnQsIG5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gZWw7XG4gIH1cblxuICBjcmVhdGVUZW1wbGF0ZUFuY2hvcihyZW5kZXJlcjogUmVuZGVyZXIsIHBhcmVudDogYW55LCB0YXJnZXRTdGF0ZW1lbnRzOiBhbnlbXSk6IGFueSB7XG4gICAgcmV0dXJuIHJlbmRlcmVyLmNyZWF0ZVRlbXBsYXRlQW5jaG9yKHBhcmVudCk7XG4gIH1cblxuICBjcmVhdGVHbG9iYWxFdmVudExpc3RlbmVyKHJlbmRlcmVyOiBSZW5kZXJlciwgYXBwVmlldzogQXBwVmlldywgYm91bmRFbGVtZW50SW5kZXg6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudEFzdDogQm91bmRFdmVudEFzdCwgdGFyZ2V0U3RhdGVtZW50czogYW55W10pOiBhbnkge1xuICAgIHJldHVybiByZW5kZXJlci5saXN0ZW5HbG9iYWwoXG4gICAgICAgIGV2ZW50QXN0LnRhcmdldCwgZXZlbnRBc3QubmFtZSxcbiAgICAgICAgKGV2ZW50KSA9PiBhcHBWaWV3LnRyaWdnZXJFdmVudEhhbmRsZXJzKGV2ZW50QXN0LmZ1bGxOYW1lLCBldmVudCwgYm91bmRFbGVtZW50SW5kZXgpKTtcbiAgfVxuXG4gIGNyZWF0ZUVsZW1lbnRFdmVudExpc3RlbmVyKHJlbmRlcmVyOiBSZW5kZXJlciwgYXBwVmlldzogQXBwVmlldywgYm91bmRFbGVtZW50SW5kZXg6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyTm9kZTogYW55LCBldmVudEFzdDogQm91bmRFdmVudEFzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U3RhdGVtZW50czogYW55W10pOiBhbnkge1xuICAgIHJldHVybiByZW5kZXJlci5saXN0ZW4oXG4gICAgICAgIHJlbmRlck5vZGUsIGV2ZW50QXN0Lm5hbWUsXG4gICAgICAgIChldmVudCkgPT4gYXBwVmlldy50cmlnZ2VyRXZlbnRIYW5kbGVycyhldmVudEFzdC5mdWxsTmFtZSwgZXZlbnQsIGJvdW5kRWxlbWVudEluZGV4KSk7XG4gIH1cblxuICBzZXRFbGVtZW50QXR0cmlidXRlKHJlbmRlcmVyOiBSZW5kZXJlciwgcmVuZGVyTm9kZTogYW55LCBhdHRyTmFtZTogc3RyaW5nLCBhdHRyVmFsdWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGF0ZW1lbnRzOiBhbnlbXSkge1xuICAgIHJlbmRlcmVyLnNldEVsZW1lbnRBdHRyaWJ1dGUocmVuZGVyTm9kZSwgYXR0ck5hbWUsIGF0dHJWYWx1ZSk7XG4gIH1cblxuICBjcmVhdGVBcHBFbGVtZW50KGFwcFByb3RvRWw6IEFwcFByb3RvRWxlbWVudCwgYXBwVmlldzogQXBwVmlldywgcmVuZGVyTm9kZTogYW55LFxuICAgICAgICAgICAgICAgICAgIHBhcmVudEFwcEVsOiBBcHBFbGVtZW50LCBlbWJlZGRlZFZpZXdGYWN0b3J5OiBGdW5jdGlvbixcbiAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGF0ZW1lbnRzOiBhbnlbXSk6IGFueSB7XG4gICAgcmV0dXJuIG5ldyBBcHBFbGVtZW50KGFwcFByb3RvRWwsIGFwcFZpZXcsIHBhcmVudEFwcEVsLCByZW5kZXJOb2RlLCBlbWJlZGRlZFZpZXdGYWN0b3J5KTtcbiAgfVxuXG4gIGNyZWF0ZUFuZFNldENvbXBvbmVudFZpZXcocmVuZGVyZXI6IFJlbmRlcmVyLCB2aWV3TWFuYWdlcjogQXBwVmlld01hbmFnZXJfLCBhcHBWaWV3OiBBcHBWaWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcEVsOiBBcHBFbGVtZW50LCBjb21wb25lbnQ6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50Tm9kZXNCeU5nQ29udGVudEluZGV4OiBBcnJheTxBcnJheTxhbnkgfCBhbnlbXT4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YXRlbWVudHM6IGFueVtdKSB7XG4gICAgdmFyIGZsYXR0ZW5lZENvbnRlbnROb2RlcztcbiAgICBpZiAodGhpcy5jb21wb25lbnQudHlwZS5pc0hvc3QpIHtcbiAgICAgIGZsYXR0ZW5lZENvbnRlbnROb2RlcyA9IGFwcFZpZXcucHJvamVjdGFibGVOb2RlcztcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhdHRlbmVkQ29udGVudE5vZGVzID0gTGlzdFdyYXBwZXIuY3JlYXRlRml4ZWRTaXplKGNvbnRlbnROb2Rlc0J5TmdDb250ZW50SW5kZXgubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29udGVudE5vZGVzQnlOZ0NvbnRlbnRJbmRleC5sZW5ndGg7IGkrKykge1xuICAgICAgICBmbGF0dGVuZWRDb250ZW50Tm9kZXNbaV0gPSBmbGF0dGVuQXJyYXkoY29udGVudE5vZGVzQnlOZ0NvbnRlbnRJbmRleFtpXSwgW10pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNvbXBvbmVudFZpZXdGYWN0b3J5KGNvbXBvbmVudCkocmVuZGVyZXIsIHZpZXdNYW5hZ2VyLCBhcHBFbCwgZmxhdHRlbmVkQ29udGVudE5vZGVzKTtcbiAgfVxuXG4gIGdldFByb2plY3RlZE5vZGVzKHByb2plY3RhYmxlTm9kZXM6IGFueVtdW10sIG5nQ29udGVudEluZGV4OiBudW1iZXIpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHByb2plY3RhYmxlTm9kZXNbbmdDb250ZW50SW5kZXhdO1xuICB9XG5cbiAgYXBwZW5kUHJvamVjdGVkTm9kZXMocmVuZGVyZXI6IFJlbmRlcmVyLCBwYXJlbnQ6IGFueSwgbm9kZXM6IGFueVtdLCB0YXJnZXRTdGF0ZW1lbnRzOiBhbnlbXSkge1xuICAgIHJlbmRlcmVyLnByb2plY3ROb2RlcyhwYXJlbnQsIGZsYXR0ZW5OZXN0ZWRWaWV3UmVuZGVyTm9kZXMobm9kZXMpKTtcbiAgfVxuXG4gIGNyZWF0ZVZpZXdGYWN0b3J5KGFzdHM6IFRlbXBsYXRlQXN0W10sIGVtYmVkZGVkVGVtcGxhdGVJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGF0ZW1lbnRzOiBhbnlbXSk6IEZ1bmN0aW9uIHtcbiAgICB2YXIgY29tcGlsZVByb3RvVmlldyA9IHRoaXMucHJvdG9WaWV3c1tlbWJlZGRlZFRlbXBsYXRlSW5kZXhdO1xuICAgIHZhciBpc0NvbXBvbmVudFZpZXcgPSBjb21waWxlUHJvdG9WaWV3LnByb3RvVmlldy50eXBlID09PSBWaWV3VHlwZS5DT01QT05FTlQ7XG4gICAgdmFyIHJlbmRlckNvbXBvbmVudFR5cGUgPSBudWxsO1xuICAgIHJldHVybiAocGFyZW50UmVuZGVyZXI6IFBhcmVudFJlbmRlcmVyLCB2aWV3TWFuYWdlcjogQXBwVmlld01hbmFnZXJfLCBjb250YWluZXJFbDogQXBwRWxlbWVudCxcbiAgICAgICAgICAgIHByb2plY3RhYmxlTm9kZXM6IGFueVtdW10sIHJvb3RTZWxlY3Rvcjogc3RyaW5nID0gbnVsbCxcbiAgICAgICAgICAgIGR5bmFtaWNhbGx5Q3JlYXRlZFByb3ZpZGVyczogUmVzb2x2ZWRQcm92aWRlcltdID0gbnVsbCxcbiAgICAgICAgICAgIHJvb3RJbmplY3RvcjogSW5qZWN0b3IgPSBudWxsKSA9PiB7XG4gICAgICBjaGVja1Nsb3RDb3VudCh0aGlzLmNvbXBvbmVudC50eXBlLm5hbWUsIHRoaXMuY29tcG9uZW50LnRlbXBsYXRlLm5nQ29udGVudFNlbGVjdG9ycy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICBwcm9qZWN0YWJsZU5vZGVzKTtcbiAgICAgIHZhciByZW5kZXJlcjtcbiAgICAgIGlmIChlbWJlZGRlZFRlbXBsYXRlSW5kZXggPT09IDApIHtcbiAgICAgICAgaWYgKGlzQmxhbmsocmVuZGVyQ29tcG9uZW50VHlwZSkpIHtcbiAgICAgICAgICByZW5kZXJDb21wb25lbnRUeXBlID0gdmlld01hbmFnZXIuY3JlYXRlUmVuZGVyQ29tcG9uZW50VHlwZShcbiAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnQudGVtcGxhdGUuZW5jYXBzdWxhdGlvbiwgdGhpcy5zdHlsZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlcmVyID0gcGFyZW50UmVuZGVyZXIucmVuZGVyQ29tcG9uZW50KHJlbmRlckNvbXBvbmVudFR5cGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVuZGVyZXIgPSA8UmVuZGVyZXI+cGFyZW50UmVuZGVyZXI7XG4gICAgICB9XG4gICAgICB2YXIgY2hhbmdlRGV0ZWN0b3IgPSB0aGlzLmNoYW5nZURldGVjdG9yRmFjdG9yaWVzW2VtYmVkZGVkVGVtcGxhdGVJbmRleF0oKTtcbiAgICAgIHZhciB2aWV3ID1cbiAgICAgICAgICBuZXcgQXBwVmlldyhjb21waWxlUHJvdG9WaWV3LnByb3RvVmlldywgcmVuZGVyZXIsIHZpZXdNYW5hZ2VyLCBwcm9qZWN0YWJsZU5vZGVzLFxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckVsLCBkeW5hbWljYWxseUNyZWF0ZWRQcm92aWRlcnMsIHJvb3RJbmplY3RvciwgY2hhbmdlRGV0ZWN0b3IpO1xuICAgICAgdmFyIHZpc2l0b3IgPSBuZXcgVmlld0J1aWxkZXJWaXNpdG9yPGFueSwgYW55PihcbiAgICAgICAgICByZW5kZXJlciwgdmlld01hbmFnZXIsIHByb2plY3RhYmxlTm9kZXMsIHJvb3RTZWxlY3RvciwgdmlldywgY29tcGlsZVByb3RvVmlldywgW10sIHRoaXMpO1xuICAgICAgdmFyIHBhcmVudFJlbmRlck5vZGUgPVxuICAgICAgICAgIGlzQ29tcG9uZW50VmlldyA/IHJlbmRlcmVyLmNyZWF0ZVZpZXdSb290KGNvbnRhaW5lckVsLm5hdGl2ZUVsZW1lbnQpIDogbnVsbDtcbiAgICAgIHRlbXBsYXRlVmlzaXRBbGwodmlzaXRvciwgYXN0cywgbmV3IFBhcmVudEVsZW1lbnQocGFyZW50UmVuZGVyTm9kZSwgbnVsbCwgbnVsbCkpO1xuICAgICAgdmlldy5pbml0KGZsYXR0ZW5BcnJheSh2aXNpdG9yLnJvb3ROb2Rlc09yQXBwRWxlbWVudHMsIFtdKSwgdmlzaXRvci5yZW5kZXJOb2RlcyxcbiAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcERpc3Bvc2FibGVzLCB2aXNpdG9yLmFwcEVsZW1lbnRzKTtcbiAgICAgIHJldHVybiB2aWV3O1xuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgUGFyZW50RWxlbWVudDxFWFBSRVNTSU9OPiB7XG4gIHB1YmxpYyBjb250ZW50Tm9kZXNCeU5nQ29udGVudEluZGV4OiBBcnJheTxFWFBSRVNTSU9OPltdO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZW5kZXJOb2RlOiBFWFBSRVNTSU9OLCBwdWJsaWMgYXBwRWw6IEVYUFJFU1NJT04sXG4gICAgICAgICAgICAgIHB1YmxpYyBjb21wb25lbnQ6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSkge1xuICAgIGlmIChpc1ByZXNlbnQoY29tcG9uZW50KSkge1xuICAgICAgdGhpcy5jb250ZW50Tm9kZXNCeU5nQ29udGVudEluZGV4ID1cbiAgICAgICAgICBMaXN0V3JhcHBlci5jcmVhdGVGaXhlZFNpemUoY29tcG9uZW50LnRlbXBsYXRlLm5nQ29udGVudFNlbGVjdG9ycy5sZW5ndGgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNvbnRlbnROb2Rlc0J5TmdDb250ZW50SW5kZXgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy5jb250ZW50Tm9kZXNCeU5nQ29udGVudEluZGV4W2ldID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udGVudE5vZGVzQnlOZ0NvbnRlbnRJbmRleCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYWRkQ29udGVudE5vZGUobmdDb250ZW50SW5kZXg6IG51bWJlciwgbm9kZUV4cHI6IEVYUFJFU1NJT04pIHtcbiAgICB0aGlzLmNvbnRlbnROb2Rlc0J5TmdDb250ZW50SW5kZXhbbmdDb250ZW50SW5kZXhdLnB1c2gobm9kZUV4cHIpO1xuICB9XG59XG5cbmNsYXNzIFZpZXdCdWlsZGVyVmlzaXRvcjxFWFBSRVNTSU9OLCBTVEFURU1FTlQ+IGltcGxlbWVudHMgVGVtcGxhdGVBc3RWaXNpdG9yIHtcbiAgcmVuZGVyU3RtdHM6IEFycmF5PFNUQVRFTUVOVD4gPSBbXTtcbiAgcmVuZGVyTm9kZXM6IEVYUFJFU1NJT05bXSA9IFtdO1xuICBhcHBTdG10czogQXJyYXk8U1RBVEVNRU5UPiA9IFtdO1xuICBhcHBFbGVtZW50czogRVhQUkVTU0lPTltdID0gW107XG4gIGFwcERpc3Bvc2FibGVzOiBFWFBSRVNTSU9OW10gPSBbXTtcblxuICByb290Tm9kZXNPckFwcEVsZW1lbnRzOiBFWFBSRVNTSU9OW10gPSBbXTtcblxuICBlbGVtZW50Q291bnQ6IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlbmRlcmVyOiBFWFBSRVNTSU9OLCBwdWJsaWMgdmlld01hbmFnZXI6IEVYUFJFU1NJT04sXG4gICAgICAgICAgICAgIHB1YmxpYyBwcm9qZWN0YWJsZU5vZGVzOiBFWFBSRVNTSU9OLCBwdWJsaWMgcm9vdFNlbGVjdG9yOiBFWFBSRVNTSU9OLFxuICAgICAgICAgICAgICBwdWJsaWMgdmlldzogRVhQUkVTU0lPTiwgcHVibGljIHByb3RvVmlldzogQ29tcGlsZVByb3RvVmlldzxFWFBSRVNTSU9OLCBFWFBSRVNTSU9OPixcbiAgICAgICAgICAgICAgcHVibGljIHRhcmdldFN0YXRlbWVudHM6IFNUQVRFTUVOVFtdLFxuICAgICAgICAgICAgICBwdWJsaWMgZmFjdG9yeTogVmlld0ZhY3Rvcnk8RVhQUkVTU0lPTiwgU1RBVEVNRU5UPikge31cblxuICBwcml2YXRlIF9hZGRSZW5kZXJOb2RlKHJlbmRlck5vZGU6IEVYUFJFU1NJT04sIGFwcEVsOiBFWFBSRVNTSU9OLCBuZ0NvbnRlbnRJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogUGFyZW50RWxlbWVudDxFWFBSRVNTSU9OPikge1xuICAgIHRoaXMucmVuZGVyTm9kZXMucHVzaChyZW5kZXJOb2RlKTtcbiAgICBpZiAoaXNQcmVzZW50KHBhcmVudC5jb21wb25lbnQpKSB7XG4gICAgICBpZiAoaXNQcmVzZW50KG5nQ29udGVudEluZGV4KSkge1xuICAgICAgICBwYXJlbnQuYWRkQ29udGVudE5vZGUobmdDb250ZW50SW5kZXgsIGlzUHJlc2VudChhcHBFbCkgPyBhcHBFbCA6IHJlbmRlck5vZGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNCbGFuayhwYXJlbnQucmVuZGVyTm9kZSkpIHtcbiAgICAgIHRoaXMucm9vdE5vZGVzT3JBcHBFbGVtZW50cy5wdXNoKGlzUHJlc2VudChhcHBFbCkgPyBhcHBFbCA6IHJlbmRlck5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFBhcmVudFJlbmRlck5vZGUobmdDb250ZW50SW5kZXg6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IFBhcmVudEVsZW1lbnQ8RVhQUkVTU0lPTj4pOiBFWFBSRVNTSU9OIHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHBhcmVudC5jb21wb25lbnQpICYmXG4gICAgICAgICAgICAgICAgICAgcGFyZW50LmNvbXBvbmVudC50ZW1wbGF0ZS5lbmNhcHN1bGF0aW9uICE9PSBWaWV3RW5jYXBzdWxhdGlvbi5OYXRpdmUgP1xuICAgICAgICAgICAgICAgbnVsbCA6XG4gICAgICAgICAgICAgICBwYXJlbnQucmVuZGVyTm9kZTtcbiAgfVxuXG4gIHZpc2l0Qm91bmRUZXh0KGFzdDogQm91bmRUZXh0QXN0LCBwYXJlbnQ6IFBhcmVudEVsZW1lbnQ8RVhQUkVTU0lPTj4pOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92aXNpdFRleHQoJycsIGFzdC5uZ0NvbnRlbnRJbmRleCwgcGFyZW50KTtcbiAgfVxuICB2aXNpdFRleHQoYXN0OiBUZXh0QXN0LCBwYXJlbnQ6IFBhcmVudEVsZW1lbnQ8RVhQUkVTU0lPTj4pOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92aXNpdFRleHQoYXN0LnZhbHVlLCBhc3QubmdDb250ZW50SW5kZXgsIHBhcmVudCk7XG4gIH1cbiAgcHJpdmF0ZSBfdmlzaXRUZXh0KHZhbHVlOiBzdHJpbmcsIG5nQ29udGVudEluZGV4OiBudW1iZXIsIHBhcmVudDogUGFyZW50RWxlbWVudDxFWFBSRVNTSU9OPikge1xuICAgIHZhciByZW5kZXJOb2RlID0gdGhpcy5mYWN0b3J5LmNyZWF0ZVRleHQoXG4gICAgICAgIHRoaXMucmVuZGVyZXIsIHRoaXMuX2dldFBhcmVudFJlbmRlck5vZGUobmdDb250ZW50SW5kZXgsIHBhcmVudCksIHZhbHVlLCB0aGlzLnJlbmRlclN0bXRzKTtcbiAgICB0aGlzLl9hZGRSZW5kZXJOb2RlKHJlbmRlck5vZGUsIG51bGwsIG5nQ29udGVudEluZGV4LCBwYXJlbnQpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmlzaXROZ0NvbnRlbnQoYXN0OiBOZ0NvbnRlbnRBc3QsIHBhcmVudDogUGFyZW50RWxlbWVudDxFWFBSRVNTSU9OPik6IGFueSB7XG4gICAgdmFyIG5vZGVzRXhwcmVzc2lvbiA9IHRoaXMuZmFjdG9yeS5nZXRQcm9qZWN0ZWROb2Rlcyh0aGlzLnByb2plY3RhYmxlTm9kZXMsIGFzdC5pbmRleCk7XG4gICAgaWYgKGlzUHJlc2VudChwYXJlbnQuY29tcG9uZW50KSkge1xuICAgICAgaWYgKGlzUHJlc2VudChhc3QubmdDb250ZW50SW5kZXgpKSB7XG4gICAgICAgIHBhcmVudC5hZGRDb250ZW50Tm9kZShhc3QubmdDb250ZW50SW5kZXgsIG5vZGVzRXhwcmVzc2lvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1ByZXNlbnQocGFyZW50LnJlbmRlck5vZGUpKSB7XG4gICAgICAgIHRoaXMuZmFjdG9yeS5hcHBlbmRQcm9qZWN0ZWROb2Rlcyh0aGlzLnJlbmRlcmVyLCBwYXJlbnQucmVuZGVyTm9kZSwgbm9kZXNFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJTdG10cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJvb3ROb2Rlc09yQXBwRWxlbWVudHMucHVzaChub2Rlc0V4cHJlc3Npb24pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZpc2l0RWxlbWVudChhc3Q6IEVsZW1lbnRBc3QsIHBhcmVudDogUGFyZW50RWxlbWVudDxFWFBSRVNTSU9OPik6IGFueSB7XG4gICAgdmFyIHJlbmRlck5vZGUgPSB0aGlzLmZhY3RvcnkuY3JlYXRlRWxlbWVudChcbiAgICAgICAgdGhpcy5yZW5kZXJlciwgdGhpcy5fZ2V0UGFyZW50UmVuZGVyTm9kZShhc3QubmdDb250ZW50SW5kZXgsIHBhcmVudCksIGFzdC5uYW1lLFxuICAgICAgICB0aGlzLnJvb3RTZWxlY3RvciwgdGhpcy5yZW5kZXJTdG10cyk7XG5cbiAgICB2YXIgY29tcG9uZW50ID0gYXN0LmdldENvbXBvbmVudCgpO1xuICAgIHZhciBlbGVtZW50SW5kZXggPSB0aGlzLmVsZW1lbnRDb3VudCsrO1xuICAgIHZhciBwcm90b0VsID0gdGhpcy5wcm90b1ZpZXcucHJvdG9FbGVtZW50c1tlbGVtZW50SW5kZXhdO1xuXG4gICAgcHJvdG9FbC5yZW5kZXJFdmVudHMuZm9yRWFjaCgoZXZlbnRBc3QpID0+IHtcbiAgICAgIHZhciBkaXNwb3NhYmxlO1xuICAgICAgaWYgKGlzUHJlc2VudChldmVudEFzdC50YXJnZXQpKSB7XG4gICAgICAgIGRpc3Bvc2FibGUgPSB0aGlzLmZhY3RvcnkuY3JlYXRlR2xvYmFsRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIsIHRoaXMudmlldywgcHJvdG9FbC5ib3VuZEVsZW1lbnRJbmRleCwgZXZlbnRBc3QsIHRoaXMucmVuZGVyU3RtdHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzcG9zYWJsZSA9IHRoaXMuZmFjdG9yeS5jcmVhdGVFbGVtZW50RXZlbnRMaXN0ZW5lcih0aGlzLnJlbmRlcmVyLCB0aGlzLnZpZXcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9FbC5ib3VuZEVsZW1lbnRJbmRleCwgcmVuZGVyTm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudEFzdCwgdGhpcy5yZW5kZXJTdG10cyk7XG4gICAgICB9XG4gICAgICB0aGlzLmFwcERpc3Bvc2FibGVzLnB1c2goZGlzcG9zYWJsZSk7XG4gICAgfSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm90b0VsLmF0dHJOYW1lQW5kVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYXR0ck5hbWUgPSBwcm90b0VsLmF0dHJOYW1lQW5kVmFsdWVzW2ldWzBdO1xuICAgICAgdmFyIGF0dHJWYWx1ZSA9IHByb3RvRWwuYXR0ck5hbWVBbmRWYWx1ZXNbaV1bMV07XG4gICAgICB0aGlzLmZhY3Rvcnkuc2V0RWxlbWVudEF0dHJpYnV0ZSh0aGlzLnJlbmRlcmVyLCByZW5kZXJOb2RlLCBhdHRyTmFtZSwgYXR0clZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJTdG10cyk7XG4gICAgfVxuICAgIHZhciBhcHBFbCA9IG51bGw7XG4gICAgaWYgKGlzUHJlc2VudChwcm90b0VsLmFwcFByb3RvRWwpKSB7XG4gICAgICBhcHBFbCA9IHRoaXMuZmFjdG9yeS5jcmVhdGVBcHBFbGVtZW50KHByb3RvRWwuYXBwUHJvdG9FbCwgdGhpcy52aWV3LCByZW5kZXJOb2RlLCBwYXJlbnQuYXBwRWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIHRoaXMuYXBwU3RtdHMpO1xuICAgICAgdGhpcy5hcHBFbGVtZW50cy5wdXNoKGFwcEVsKTtcbiAgICB9XG4gICAgdGhpcy5fYWRkUmVuZGVyTm9kZShyZW5kZXJOb2RlLCBhcHBFbCwgYXN0Lm5nQ29udGVudEluZGV4LCBwYXJlbnQpO1xuXG4gICAgdmFyIG5ld1BhcmVudCA9IG5ldyBQYXJlbnRFbGVtZW50PEVYUFJFU1NJT04+KFxuICAgICAgICByZW5kZXJOb2RlLCBpc1ByZXNlbnQoYXBwRWwpID8gYXBwRWwgOiBwYXJlbnQuYXBwRWwsIGNvbXBvbmVudCk7XG4gICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3QuY2hpbGRyZW4sIG5ld1BhcmVudCk7XG4gICAgaWYgKGlzUHJlc2VudChhcHBFbCkgJiYgaXNQcmVzZW50KGNvbXBvbmVudCkpIHtcbiAgICAgIHRoaXMuZmFjdG9yeS5jcmVhdGVBbmRTZXRDb21wb25lbnRWaWV3KHRoaXMucmVuZGVyZXIsIHRoaXMudmlld01hbmFnZXIsIHRoaXMudmlldywgYXBwRWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQsIG5ld1BhcmVudC5jb250ZW50Tm9kZXNCeU5nQ29udGVudEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBTdG10cyk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmlzaXRFbWJlZGRlZFRlbXBsYXRlKGFzdDogRW1iZWRkZWRUZW1wbGF0ZUFzdCwgcGFyZW50OiBQYXJlbnRFbGVtZW50PEVYUFJFU1NJT04+KTogYW55IHtcbiAgICB2YXIgcmVuZGVyTm9kZSA9IHRoaXMuZmFjdG9yeS5jcmVhdGVUZW1wbGF0ZUFuY2hvcihcbiAgICAgICAgdGhpcy5yZW5kZXJlciwgdGhpcy5fZ2V0UGFyZW50UmVuZGVyTm9kZShhc3QubmdDb250ZW50SW5kZXgsIHBhcmVudCksIHRoaXMucmVuZGVyU3RtdHMpO1xuXG4gICAgdmFyIGVsZW1lbnRJbmRleCA9IHRoaXMuZWxlbWVudENvdW50Kys7XG4gICAgdmFyIHByb3RvRWwgPSB0aGlzLnByb3RvVmlldy5wcm90b0VsZW1lbnRzW2VsZW1lbnRJbmRleF07XG4gICAgdmFyIGVtYmVkZGVkVmlld0ZhY3RvcnkgPSB0aGlzLmZhY3RvcnkuY3JlYXRlVmlld0ZhY3RvcnkoXG4gICAgICAgIGFzdC5jaGlsZHJlbiwgcHJvdG9FbC5lbWJlZGRlZFRlbXBsYXRlSW5kZXgsIHRoaXMudGFyZ2V0U3RhdGVtZW50cyk7XG5cbiAgICB2YXIgYXBwRWwgPSB0aGlzLmZhY3RvcnkuY3JlYXRlQXBwRWxlbWVudChwcm90b0VsLmFwcFByb3RvRWwsIHRoaXMudmlldywgcmVuZGVyTm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwRWwsIGVtYmVkZGVkVmlld0ZhY3RvcnksIHRoaXMuYXBwU3RtdHMpO1xuICAgIHRoaXMuX2FkZFJlbmRlck5vZGUocmVuZGVyTm9kZSwgYXBwRWwsIGFzdC5uZ0NvbnRlbnRJbmRleCwgcGFyZW50KTtcbiAgICB0aGlzLmFwcEVsZW1lbnRzLnB1c2goYXBwRWwpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmlzaXRWYXJpYWJsZShhc3Q6IFZhcmlhYmxlQXN0LCBjdHg6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0QXR0cihhc3Q6IEF0dHJBc3QsIGN0eDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cbiAgdmlzaXREaXJlY3RpdmUoYXN0OiBEaXJlY3RpdmVBc3QsIGN0eDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cbiAgdmlzaXRFdmVudChhc3Q6IEJvdW5kRXZlbnRBc3QsIGN0eDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cbiAgdmlzaXREaXJlY3RpdmVQcm9wZXJ0eShhc3Q6IEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0RWxlbWVudFByb3BlcnR5KGFzdDogQm91bmRFbGVtZW50UHJvcGVydHlBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG59XG5cblxuZnVuY3Rpb24gY29kZUdlbkV2ZW50SGFuZGxlcih2aWV3OiBFeHByZXNzaW9uLCBib3VuZEVsZW1lbnRJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjb2RlR2VuVmFsdWVGbihcbiAgICAgIFsnZXZlbnQnXSxcbiAgICAgIGAke3ZpZXcuZXhwcmVzc2lvbn0udHJpZ2dlckV2ZW50SGFuZGxlcnMoJHtlc2NhcGVWYWx1ZShldmVudE5hbWUpfSwgZXZlbnQsICR7Ym91bmRFbGVtZW50SW5kZXh9KWApO1xufVxuXG5mdW5jdGlvbiBjb2RlR2VuVmlld0ZhY3RvcnlOYW1lKGNvbXBvbmVudDogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZFRlbXBsYXRlSW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBgdmlld0ZhY3RvcnlfJHtjb21wb25lbnQudHlwZS5uYW1lfSR7ZW1iZWRkZWRUZW1wbGF0ZUluZGV4fWA7XG59XG5cbmZ1bmN0aW9uIGNvZGVHZW5WaWV3RW5jYXBzdWxhdGlvbih2YWx1ZTogVmlld0VuY2Fwc3VsYXRpb24pOiBzdHJpbmcge1xuICBpZiAoSVNfREFSVCkge1xuICAgIHJldHVybiBgJHtNRVRBREFUQV9NT0RVTEVfUkVGfSR7dmFsdWV9YDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYCR7dmFsdWV9YDtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar MODULE_REGEXP = /#MODULE\\[([^\\]]*)\\]/g;\r\nfunction moduleRef(moduleUrl) {\r\n return \"#MODULE[\" + moduleUrl + \"]\";\r\n}\r\nexports.moduleRef = moduleRef;\r\n/**\r\n * Represents generated source code with module references. Internal to the Angular compiler.\r\n */\r\nvar SourceModule = (function () {\r\n function SourceModule(moduleUrl, sourceWithModuleRefs) {\r\n this.moduleUrl = moduleUrl;\r\n this.sourceWithModuleRefs = sourceWithModuleRefs;\r\n }\r\n SourceModule.getSourceWithoutImports = function (sourceWithModuleRefs) {\r\n return lang_1.StringWrapper.replaceAllMapped(sourceWithModuleRefs, MODULE_REGEXP, function (match) { return ''; });\r\n };\r\n SourceModule.prototype.getSourceWithImports = function () {\r\n var _this = this;\r\n var moduleAliases = {};\r\n var imports = [];\r\n var newSource = lang_1.StringWrapper.replaceAllMapped(this.sourceWithModuleRefs, MODULE_REGEXP, function (match) {\r\n var moduleUrl = match[1];\r\n var alias = moduleAliases[moduleUrl];\r\n if (lang_1.isBlank(alias)) {\r\n if (moduleUrl == _this.moduleUrl) {\r\n alias = '';\r\n }\r\n else {\r\n alias = \"import\" + imports.length;\r\n imports.push([moduleUrl, alias]);\r\n }\r\n moduleAliases[moduleUrl] = alias;\r\n }\r\n return alias.length > 0 ? alias + \".\" : '';\r\n });\r\n return new SourceWithImports(newSource, imports);\r\n };\r\n return SourceModule;\r\n})();\r\nexports.SourceModule = SourceModule;\r\nvar SourceExpression = (function () {\r\n function SourceExpression(declarations, expression) {\r\n this.declarations = declarations;\r\n this.expression = expression;\r\n }\r\n return SourceExpression;\r\n})();\r\nexports.SourceExpression = SourceExpression;\r\nvar SourceExpressions = (function () {\r\n function SourceExpressions(declarations, expressions) {\r\n this.declarations = declarations;\r\n this.expressions = expressions;\r\n }\r\n return SourceExpressions;\r\n})();\r\nexports.SourceExpressions = SourceExpressions;\r\n/**\r\n * Represents generated source code with imports. Internal to the Angular compiler.\r\n */\r\nvar SourceWithImports = (function () {\r\n function SourceWithImports(source, imports) {\r\n this.source = source;\r\n this.imports = imports;\r\n }\r\n return SourceWithImports;\r\n})();\r\nexports.SourceWithImports = SourceWithImports;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlX21vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21waWxlci9zb3VyY2VfbW9kdWxlLnRzIl0sIm5hbWVzIjpbIm1vZHVsZVJlZiIsIlNvdXJjZU1vZHVsZSIsIlNvdXJjZU1vZHVsZS5jb25zdHJ1Y3RvciIsIlNvdXJjZU1vZHVsZS5nZXRTb3VyY2VXaXRob3V0SW1wb3J0cyIsIlNvdXJjZU1vZHVsZS5nZXRTb3VyY2VXaXRoSW1wb3J0cyIsIlNvdXJjZUV4cHJlc3Npb24iLCJTb3VyY2VFeHByZXNzaW9uLmNvbnN0cnVjdG9yIiwiU291cmNlRXhwcmVzc2lvbnMiLCJTb3VyY2VFeHByZXNzaW9ucy5jb25zdHJ1Y3RvciIsIlNvdXJjZVdpdGhJbXBvcnRzIiwiU291cmNlV2l0aEltcG9ydHMuY29uc3RydWN0b3IiXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFxQywwQkFBMEIsQ0FBQyxDQUFBO0FBRWhFLElBQUksYUFBYSxHQUFHLHNCQUFzQixDQUFDO0FBRTNDLG1CQUEwQixTQUFTO0lBQ2pDQSxNQUFNQSxDQUFDQSxhQUFXQSxTQUFTQSxNQUFHQSxDQUFDQTtBQUNqQ0EsQ0FBQ0E7QUFGZSxpQkFBUyxZQUV4QixDQUFBO0FBRUQ7O0dBRUc7QUFDSDtJQUtFQyxzQkFBbUJBLFNBQWlCQSxFQUFTQSxvQkFBNEJBO1FBQXREQyxjQUFTQSxHQUFUQSxTQUFTQSxDQUFRQTtRQUFTQSx5QkFBb0JBLEdBQXBCQSxvQkFBb0JBLENBQVFBO0lBQUdBLENBQUNBO0lBSnRFRCxvQ0FBdUJBLEdBQTlCQSxVQUErQkEsb0JBQTRCQTtRQUN6REUsTUFBTUEsQ0FBQ0Esb0JBQWFBLENBQUNBLGdCQUFnQkEsQ0FBQ0Esb0JBQW9CQSxFQUFFQSxhQUFhQSxFQUFFQSxVQUFDQSxLQUFLQSxJQUFLQSxPQUFBQSxFQUFFQSxFQUFGQSxDQUFFQSxDQUFDQSxDQUFDQTtJQUM1RkEsQ0FBQ0E7SUFJREYsMkNBQW9CQSxHQUFwQkE7UUFBQUcsaUJBbUJDQTtRQWxCQ0EsSUFBSUEsYUFBYUEsR0FBR0EsRUFBRUEsQ0FBQ0E7UUFDdkJBLElBQUlBLE9BQU9BLEdBQWVBLEVBQUVBLENBQUNBO1FBQzdCQSxJQUFJQSxTQUFTQSxHQUNUQSxvQkFBYUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxJQUFJQSxDQUFDQSxvQkFBb0JBLEVBQUVBLGFBQWFBLEVBQUVBLFVBQUNBLEtBQUtBO1lBQzdFQSxJQUFJQSxTQUFTQSxHQUFHQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN6QkEsSUFBSUEsS0FBS0EsR0FBR0EsYUFBYUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0E7WUFDckNBLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUNuQkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsU0FBU0EsSUFBSUEsS0FBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7b0JBQ2hDQSxLQUFLQSxHQUFHQSxFQUFFQSxDQUFDQTtnQkFDYkEsQ0FBQ0E7Z0JBQUNBLElBQUlBLENBQUNBLENBQUNBO29CQUNOQSxLQUFLQSxHQUFHQSxXQUFTQSxPQUFPQSxDQUFDQSxNQUFRQSxDQUFDQTtvQkFDbENBLE9BQU9BLENBQUNBLElBQUlBLENBQUNBLENBQUNBLFNBQVNBLEVBQUVBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBO2dCQUNuQ0EsQ0FBQ0E7Z0JBQ0RBLGFBQWFBLENBQUNBLFNBQVNBLENBQUNBLEdBQUdBLEtBQUtBLENBQUNBO1lBQ25DQSxDQUFDQTtZQUNEQSxNQUFNQSxDQUFDQSxLQUFLQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxHQUFNQSxLQUFLQSxNQUFHQSxHQUFHQSxFQUFFQSxDQUFDQTtRQUM3Q0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDUEEsTUFBTUEsQ0FBQ0EsSUFBSUEsaUJBQWlCQSxDQUFDQSxTQUFTQSxFQUFFQSxPQUFPQSxDQUFDQSxDQUFDQTtJQUNuREEsQ0FBQ0E7SUFDSEgsbUJBQUNBO0FBQURBLENBQUNBLEFBM0JELElBMkJDO0FBM0JZLG9CQUFZLGVBMkJ4QixDQUFBO0FBRUQ7SUFDRUksMEJBQW1CQSxZQUFzQkEsRUFBU0EsVUFBa0JBO1FBQWpEQyxpQkFBWUEsR0FBWkEsWUFBWUEsQ0FBVUE7UUFBU0EsZUFBVUEsR0FBVkEsVUFBVUEsQ0FBUUE7SUFBR0EsQ0FBQ0E7SUFDMUVELHVCQUFDQTtBQUFEQSxDQUFDQSxBQUZELElBRUM7QUFGWSx3QkFBZ0IsbUJBRTVCLENBQUE7QUFFRDtJQUNFRSwyQkFBbUJBLFlBQXNCQSxFQUFTQSxXQUFxQkE7UUFBcERDLGlCQUFZQSxHQUFaQSxZQUFZQSxDQUFVQTtRQUFTQSxnQkFBV0EsR0FBWEEsV0FBV0EsQ0FBVUE7SUFBR0EsQ0FBQ0E7SUFDN0VELHdCQUFDQTtBQUFEQSxDQUFDQSxBQUZELElBRUM7QUFGWSx5QkFBaUIsb0JBRTdCLENBQUE7QUFFRDs7R0FFRztBQUNIO0lBQ0VFLDJCQUFtQkEsTUFBY0EsRUFBU0EsT0FBbUJBO1FBQTFDQyxXQUFNQSxHQUFOQSxNQUFNQSxDQUFRQTtRQUFTQSxZQUFPQSxHQUFQQSxPQUFPQSxDQUFZQTtJQUFHQSxDQUFDQTtJQUNuRUQsd0JBQUNBO0FBQURBLENBQUNBLEFBRkQsSUFFQztBQUZZLHlCQUFpQixvQkFFN0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3RyaW5nV3JhcHBlciwgaXNCbGFua30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxudmFyIE1PRFVMRV9SRUdFWFAgPSAvI01PRFVMRVxcWyhbXlxcXV0qKVxcXS9nO1xuXG5leHBvcnQgZnVuY3Rpb24gbW9kdWxlUmVmKG1vZHVsZVVybCk6IHN0cmluZyB7XG4gIHJldHVybiBgI01PRFVMRVske21vZHVsZVVybH1dYDtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGdlbmVyYXRlZCBzb3VyY2UgY29kZSB3aXRoIG1vZHVsZSByZWZlcmVuY2VzLiBJbnRlcm5hbCB0byB0aGUgQW5ndWxhciBjb21waWxlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFNvdXJjZU1vZHVsZSB7XG4gIHN0YXRpYyBnZXRTb3VyY2VXaXRob3V0SW1wb3J0cyhzb3VyY2VXaXRoTW9kdWxlUmVmczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsTWFwcGVkKHNvdXJjZVdpdGhNb2R1bGVSZWZzLCBNT0RVTEVfUkVHRVhQLCAobWF0Y2gpID0+ICcnKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2R1bGVVcmw6IHN0cmluZywgcHVibGljIHNvdXJjZVdpdGhNb2R1bGVSZWZzOiBzdHJpbmcpIHt9XG5cbiAgZ2V0U291cmNlV2l0aEltcG9ydHMoKTogU291cmNlV2l0aEltcG9ydHMge1xuICAgIHZhciBtb2R1bGVBbGlhc2VzID0ge307XG4gICAgdmFyIGltcG9ydHM6IHN0cmluZ1tdW10gPSBbXTtcbiAgICB2YXIgbmV3U291cmNlID1cbiAgICAgICAgU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsTWFwcGVkKHRoaXMuc291cmNlV2l0aE1vZHVsZVJlZnMsIE1PRFVMRV9SRUdFWFAsIChtYXRjaCkgPT4ge1xuICAgICAgICAgIHZhciBtb2R1bGVVcmwgPSBtYXRjaFsxXTtcbiAgICAgICAgICB2YXIgYWxpYXMgPSBtb2R1bGVBbGlhc2VzW21vZHVsZVVybF07XG4gICAgICAgICAgaWYgKGlzQmxhbmsoYWxpYXMpKSB7XG4gICAgICAgICAgICBpZiAobW9kdWxlVXJsID09IHRoaXMubW9kdWxlVXJsKSB7XG4gICAgICAgICAgICAgIGFsaWFzID0gJyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBhbGlhcyA9IGBpbXBvcnQke2ltcG9ydHMubGVuZ3RofWA7XG4gICAgICAgICAgICAgIGltcG9ydHMucHVzaChbbW9kdWxlVXJsLCBhbGlhc10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbW9kdWxlQWxpYXNlc1ttb2R1bGVVcmxdID0gYWxpYXM7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBhbGlhcy5sZW5ndGggPiAwID8gYCR7YWxpYXN9LmAgOiAnJztcbiAgICAgICAgfSk7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VXaXRoSW1wb3J0cyhuZXdTb3VyY2UsIGltcG9ydHMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTb3VyY2VFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IocHVibGljIGRlY2xhcmF0aW9uczogc3RyaW5nW10sIHB1YmxpYyBleHByZXNzaW9uOiBzdHJpbmcpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBTb3VyY2VFeHByZXNzaW9ucyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkZWNsYXJhdGlvbnM6IHN0cmluZ1tdLCBwdWJsaWMgZXhwcmVzc2lvbnM6IHN0cmluZ1tdKSB7fVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgZ2VuZXJhdGVkIHNvdXJjZSBjb2RlIHdpdGggaW1wb3J0cy4gSW50ZXJuYWwgdG8gdGhlIEFuZ3VsYXIgY29tcGlsZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTb3VyY2VXaXRoSW1wb3J0cyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzb3VyY2U6IHN0cmluZywgcHVibGljIGltcG9ydHM6IHN0cmluZ1tdW10pIHt9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar template_ast_1 = require('./template_ast');\r\nvar source_module_1 = require('./source_module');\r\nvar view_1 = require('angular2/src/core/linker/view');\r\nvar view_type_1 = require('angular2/src/core/linker/view_type');\r\nvar element_1 = require('angular2/src/core/linker/element');\r\nvar util_1 = require('./util');\r\nvar di_1 = require('angular2/src/core/di');\r\nexports.PROTO_VIEW_JIT_IMPORTS = lang_1.CONST_EXPR({ 'AppProtoView': view_1.AppProtoView, 'AppProtoElement': element_1.AppProtoElement, 'ViewType': view_type_1.ViewType });\r\n// TODO: have a single file that reexports everything needed for\r\n// codegen explicitly\r\n// - helps understanding what codegen works against\r\n// - less imports in codegen code\r\nexports.APP_VIEW_MODULE_REF = source_module_1.moduleRef('package:angular2/src/core/linker/view' + util_1.MODULE_SUFFIX);\r\nexports.VIEW_TYPE_MODULE_REF = source_module_1.moduleRef('package:angular2/src/core/linker/view_type' + util_1.MODULE_SUFFIX);\r\nexports.APP_EL_MODULE_REF = source_module_1.moduleRef('package:angular2/src/core/linker/element' + util_1.MODULE_SUFFIX);\r\nexports.METADATA_MODULE_REF = source_module_1.moduleRef('package:angular2/src/core/metadata/view' + util_1.MODULE_SUFFIX);\r\nvar IMPLICIT_TEMPLATE_VAR = '\\$implicit';\r\nvar CLASS_ATTR = 'class';\r\nvar STYLE_ATTR = 'style';\r\nvar ProtoViewCompiler = (function () {\r\n function ProtoViewCompiler() {\r\n }\r\n ProtoViewCompiler.prototype.compileProtoViewRuntime = function (metadataCache, component, template, pipes) {\r\n var protoViewFactory = new RuntimeProtoViewFactory(metadataCache, component, pipes);\r\n var allProtoViews = [];\r\n protoViewFactory.createCompileProtoView(template, [], [], allProtoViews);\r\n return new CompileProtoViews([], allProtoViews);\r\n };\r\n ProtoViewCompiler.prototype.compileProtoViewCodeGen = function (resolvedMetadataCacheExpr, component, template, pipes) {\r\n var protoViewFactory = new CodeGenProtoViewFactory(resolvedMetadataCacheExpr, component, pipes);\r\n var allProtoViews = [];\r\n var allStatements = [];\r\n protoViewFactory.createCompileProtoView(template, [], allStatements, allProtoViews);\r\n return new CompileProtoViews(allStatements.map(function (stmt) { return stmt.statement; }), allProtoViews);\r\n };\r\n ProtoViewCompiler = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], ProtoViewCompiler);\r\n return ProtoViewCompiler;\r\n})();\r\nexports.ProtoViewCompiler = ProtoViewCompiler;\r\nvar CompileProtoViews = (function () {\r\n function CompileProtoViews(declarations, protoViews) {\r\n this.declarations = declarations;\r\n this.protoViews = protoViews;\r\n }\r\n return CompileProtoViews;\r\n})();\r\nexports.CompileProtoViews = CompileProtoViews;\r\nvar CompileProtoView = (function () {\r\n function CompileProtoView(embeddedTemplateIndex, protoElements, protoView) {\r\n this.embeddedTemplateIndex = embeddedTemplateIndex;\r\n this.protoElements = protoElements;\r\n this.protoView = protoView;\r\n }\r\n return CompileProtoView;\r\n})();\r\nexports.CompileProtoView = CompileProtoView;\r\nvar CompileProtoElement = (function () {\r\n function CompileProtoElement(boundElementIndex, attrNameAndValues, variableNameAndValues, renderEvents, directives, embeddedTemplateIndex, appProtoEl) {\r\n this.boundElementIndex = boundElementIndex;\r\n this.attrNameAndValues = attrNameAndValues;\r\n this.variableNameAndValues = variableNameAndValues;\r\n this.renderEvents = renderEvents;\r\n this.directives = directives;\r\n this.embeddedTemplateIndex = embeddedTemplateIndex;\r\n this.appProtoEl = appProtoEl;\r\n }\r\n return CompileProtoElement;\r\n})();\r\nexports.CompileProtoElement = CompileProtoElement;\r\nfunction visitAndReturnContext(visitor, asts, context) {\r\n template_ast_1.templateVisitAll(visitor, asts, context);\r\n return context;\r\n}\r\nvar ProtoViewFactory = (function () {\r\n function ProtoViewFactory(component) {\r\n this.component = component;\r\n }\r\n ProtoViewFactory.prototype.createCompileProtoView = function (template, templateVariableBindings, targetStatements, targetProtoViews) {\r\n var embeddedTemplateIndex = targetProtoViews.length;\r\n // Note: targetProtoViews needs to be in depth first order.\r\n // So we \"reserve\" a space here that we fill after the recursion is done\r\n targetProtoViews.push(null);\r\n var builder = new ProtoViewBuilderVisitor(this, targetStatements, targetProtoViews);\r\n template_ast_1.templateVisitAll(builder, template);\r\n var viewType = getViewType(this.component, embeddedTemplateIndex);\r\n var appProtoView = this.createAppProtoView(embeddedTemplateIndex, viewType, templateVariableBindings, targetStatements);\r\n var cpv = new CompileProtoView(embeddedTemplateIndex, builder.protoElements, appProtoView);\r\n targetProtoViews[embeddedTemplateIndex] = cpv;\r\n return cpv;\r\n };\r\n return ProtoViewFactory;\r\n})();\r\nvar CodeGenProtoViewFactory = (function (_super) {\r\n __extends(CodeGenProtoViewFactory, _super);\r\n function CodeGenProtoViewFactory(resolvedMetadataCacheExpr, component, pipes) {\r\n _super.call(this, component);\r\n this.resolvedMetadataCacheExpr = resolvedMetadataCacheExpr;\r\n this.pipes = pipes;\r\n this._nextVarId = 0;\r\n }\r\n CodeGenProtoViewFactory.prototype._nextProtoViewVar = function (embeddedTemplateIndex) {\r\n return \"appProtoView\" + this._nextVarId++ + \"_\" + this.component.type.name + embeddedTemplateIndex;\r\n };\r\n CodeGenProtoViewFactory.prototype.createAppProtoView = function (embeddedTemplateIndex, viewType, templateVariableBindings, targetStatements) {\r\n var protoViewVarName = this._nextProtoViewVar(embeddedTemplateIndex);\r\n var viewTypeExpr = codeGenViewType(viewType);\r\n var pipesExpr = embeddedTemplateIndex === 0 ?\r\n codeGenTypesArray(this.pipes.map(function (pipeMeta) { return pipeMeta.type; })) :\r\n null;\r\n var statement = \"var \" + protoViewVarName + \" = \" + exports.APP_VIEW_MODULE_REF + \"AppProtoView.create(\" + this.resolvedMetadataCacheExpr.expression + \", \" + viewTypeExpr + \", \" + pipesExpr + \", \" + util_1.codeGenStringMap(templateVariableBindings) + \");\";\r\n targetStatements.push(new util_1.Statement(statement));\r\n return new util_1.Expression(protoViewVarName);\r\n };\r\n CodeGenProtoViewFactory.prototype.createAppProtoElement = function (boundElementIndex, attrNameAndValues, variableNameAndValues, directives, targetStatements) {\r\n var varName = \"appProtoEl\" + this._nextVarId++ + \"_\" + this.component.type.name;\r\n var value = exports.APP_EL_MODULE_REF + \"AppProtoElement.create(\\n \" + this.resolvedMetadataCacheExpr.expression + \",\\n \" + boundElementIndex + \",\\n \" + util_1.codeGenStringMap(attrNameAndValues) + \",\\n \" + codeGenDirectivesArray(directives) + \",\\n \" + util_1.codeGenStringMap(variableNameAndValues) + \"\\n )\";\r\n var statement = \"var \" + varName + \" = \" + value + \";\";\r\n targetStatements.push(new util_1.Statement(statement));\r\n return new util_1.Expression(varName);\r\n };\r\n return CodeGenProtoViewFactory;\r\n})(ProtoViewFactory);\r\nvar RuntimeProtoViewFactory = (function (_super) {\r\n __extends(RuntimeProtoViewFactory, _super);\r\n function RuntimeProtoViewFactory(metadataCache, component, pipes) {\r\n _super.call(this, component);\r\n this.metadataCache = metadataCache;\r\n this.pipes = pipes;\r\n }\r\n RuntimeProtoViewFactory.prototype.createAppProtoView = function (embeddedTemplateIndex, viewType, templateVariableBindings, targetStatements) {\r\n var pipes = embeddedTemplateIndex === 0 ? this.pipes.map(function (pipeMeta) { return pipeMeta.type.runtime; }) : [];\r\n var templateVars = keyValueArrayToStringMap(templateVariableBindings);\r\n return view_1.AppProtoView.create(this.metadataCache, viewType, pipes, templateVars);\r\n };\r\n RuntimeProtoViewFactory.prototype.createAppProtoElement = function (boundElementIndex, attrNameAndValues, variableNameAndValues, directives, targetStatements) {\r\n var attrs = keyValueArrayToStringMap(attrNameAndValues);\r\n return element_1.AppProtoElement.create(this.metadataCache, boundElementIndex, attrs, directives.map(function (dirMeta) { return dirMeta.type.runtime; }), keyValueArrayToStringMap(variableNameAndValues));\r\n };\r\n return RuntimeProtoViewFactory;\r\n})(ProtoViewFactory);\r\nvar ProtoViewBuilderVisitor = (function () {\r\n function ProtoViewBuilderVisitor(factory, allStatements, allProtoViews) {\r\n this.factory = factory;\r\n this.allStatements = allStatements;\r\n this.allProtoViews = allProtoViews;\r\n this.protoElements = [];\r\n this.boundElementCount = 0;\r\n }\r\n ProtoViewBuilderVisitor.prototype._readAttrNameAndValues = function (directives, attrAsts) {\r\n var attrs = visitAndReturnContext(this, attrAsts, {});\r\n directives.forEach(function (directiveMeta) {\r\n collection_1.StringMapWrapper.forEach(directiveMeta.hostAttributes, function (value, name) {\r\n var prevValue = attrs[name];\r\n attrs[name] = lang_1.isPresent(prevValue) ? mergeAttributeValue(name, prevValue, value) : value;\r\n });\r\n });\r\n return mapToKeyValueArray(attrs);\r\n };\r\n ProtoViewBuilderVisitor.prototype.visitBoundText = function (ast, context) { return null; };\r\n ProtoViewBuilderVisitor.prototype.visitText = function (ast, context) { return null; };\r\n ProtoViewBuilderVisitor.prototype.visitNgContent = function (ast, context) { return null; };\r\n ProtoViewBuilderVisitor.prototype.visitElement = function (ast, context) {\r\n var _this = this;\r\n var boundElementIndex = null;\r\n if (ast.isBound()) {\r\n boundElementIndex = this.boundElementCount++;\r\n }\r\n var component = ast.getComponent();\r\n var variableNameAndValues = [];\r\n if (lang_1.isBlank(component)) {\r\n ast.exportAsVars.forEach(function (varAst) { variableNameAndValues.push([varAst.name, null]); });\r\n }\r\n var directives = [];\r\n var renderEvents = visitAndReturnContext(this, ast.outputs, new Map());\r\n collection_1.ListWrapper.forEachWithIndex(ast.directives, function (directiveAst, index) {\r\n directiveAst.visit(_this, new DirectiveContext(index, boundElementIndex, renderEvents, variableNameAndValues, directives));\r\n });\r\n var renderEventArray = [];\r\n renderEvents.forEach(function (eventAst, _) { return renderEventArray.push(eventAst); });\r\n var attrNameAndValues = this._readAttrNameAndValues(directives, ast.attrs);\r\n this._addProtoElement(ast.isBound(), boundElementIndex, attrNameAndValues, variableNameAndValues, renderEventArray, directives, null);\r\n template_ast_1.templateVisitAll(this, ast.children);\r\n return null;\r\n };\r\n ProtoViewBuilderVisitor.prototype.visitEmbeddedTemplate = function (ast, context) {\r\n var _this = this;\r\n var boundElementIndex = this.boundElementCount++;\r\n var directives = [];\r\n collection_1.ListWrapper.forEachWithIndex(ast.directives, function (directiveAst, index) {\r\n directiveAst.visit(_this, new DirectiveContext(index, boundElementIndex, new Map(), [], directives));\r\n });\r\n var attrNameAndValues = this._readAttrNameAndValues(directives, ast.attrs);\r\n var templateVariableBindings = ast.vars.map(function (varAst) { return [varAst.value.length > 0 ? varAst.value : IMPLICIT_TEMPLATE_VAR, varAst.name]; });\r\n var nestedProtoView = this.factory.createCompileProtoView(ast.children, templateVariableBindings, this.allStatements, this.allProtoViews);\r\n this._addProtoElement(true, boundElementIndex, attrNameAndValues, [], [], directives, nestedProtoView.embeddedTemplateIndex);\r\n return null;\r\n };\r\n ProtoViewBuilderVisitor.prototype._addProtoElement = function (isBound, boundElementIndex, attrNameAndValues, variableNameAndValues, renderEvents, directives, embeddedTemplateIndex) {\r\n var appProtoEl = null;\r\n if (isBound) {\r\n appProtoEl =\r\n this.factory.createAppProtoElement(boundElementIndex, attrNameAndValues, variableNameAndValues, directives, this.allStatements);\r\n }\r\n var compileProtoEl = new CompileProtoElement(boundElementIndex, attrNameAndValues, variableNameAndValues, renderEvents, directives, embeddedTemplateIndex, appProtoEl);\r\n this.protoElements.push(compileProtoEl);\r\n };\r\n ProtoViewBuilderVisitor.prototype.visitVariable = function (ast, ctx) { return null; };\r\n ProtoViewBuilderVisitor.prototype.visitAttr = function (ast, attrNameAndValues) {\r\n attrNameAndValues[ast.name] = ast.value;\r\n return null;\r\n };\r\n ProtoViewBuilderVisitor.prototype.visitDirective = function (ast, ctx) {\r\n ctx.targetDirectives.push(ast.directive);\r\n template_ast_1.templateVisitAll(this, ast.hostEvents, ctx.hostEventTargetAndNames);\r\n ast.exportAsVars.forEach(function (varAst) { ctx.targetVariableNameAndValues.push([varAst.name, ctx.index]); });\r\n return null;\r\n };\r\n ProtoViewBuilderVisitor.prototype.visitEvent = function (ast, eventTargetAndNames) {\r\n eventTargetAndNames.set(ast.fullName, ast);\r\n return null;\r\n };\r\n ProtoViewBuilderVisitor.prototype.visitDirectiveProperty = function (ast, context) { return null; };\r\n ProtoViewBuilderVisitor.prototype.visitElementProperty = function (ast, context) { return null; };\r\n return ProtoViewBuilderVisitor;\r\n})();\r\nfunction mapToKeyValueArray(data) {\r\n var entryArray = [];\r\n collection_1.StringMapWrapper.forEach(data, function (value, name) { entryArray.push([name, value]); });\r\n // We need to sort to get a defined output order\r\n // for tests and for caching generated artifacts...\r\n collection_1.ListWrapper.sort(entryArray, function (entry1, entry2) {\r\n return lang_1.StringWrapper.compare(entry1[0], entry2[0]);\r\n });\r\n var keyValueArray = [];\r\n entryArray.forEach(function (entry) { keyValueArray.push([entry[0], entry[1]]); });\r\n return keyValueArray;\r\n}\r\nfunction mergeAttributeValue(attrName, attrValue1, attrValue2) {\r\n if (attrName == CLASS_ATTR || attrName == STYLE_ATTR) {\r\n return attrValue1 + \" \" + attrValue2;\r\n }\r\n else {\r\n return attrValue2;\r\n }\r\n}\r\nvar DirectiveContext = (function () {\r\n function DirectiveContext(index, boundElementIndex, hostEventTargetAndNames, targetVariableNameAndValues, targetDirectives) {\r\n this.index = index;\r\n this.boundElementIndex = boundElementIndex;\r\n this.hostEventTargetAndNames = hostEventTargetAndNames;\r\n this.targetVariableNameAndValues = targetVariableNameAndValues;\r\n this.targetDirectives = targetDirectives;\r\n }\r\n return DirectiveContext;\r\n})();\r\nfunction keyValueArrayToStringMap(keyValueArray) {\r\n var stringMap = {};\r\n for (var i = 0; i < keyValueArray.length; i++) {\r\n var entry = keyValueArray[i];\r\n stringMap[entry[0]] = entry[1];\r\n }\r\n return stringMap;\r\n}\r\nfunction codeGenDirectivesArray(directives) {\r\n var expressions = directives.map(function (directiveType) { return typeRef(directiveType.type); });\r\n return \"[\" + expressions.join(',') + \"]\";\r\n}\r\nfunction codeGenTypesArray(types) {\r\n var expressions = types.map(typeRef);\r\n return \"[\" + expressions.join(',') + \"]\";\r\n}\r\nfunction codeGenViewType(value) {\r\n if (lang_1.IS_DART) {\r\n return \"\" + exports.VIEW_TYPE_MODULE_REF + value;\r\n }\r\n else {\r\n return \"\" + value;\r\n }\r\n}\r\nfunction typeRef(type) {\r\n return \"\" + source_module_1.moduleRef(type.moduleUrl) + type.name;\r\n}\r\nfunction getViewType(component, embeddedTemplateIndex) {\r\n if (embeddedTemplateIndex > 0) {\r\n return view_type_1.ViewType.EMBEDDED;\r\n }\r\n else if (component.type.isHost) {\r\n return view_type_1.ViewType.HOST;\r\n }\r\n else {\r\n return view_type_1.ViewType.COMPONENT;\r\n }\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9fdmlld19jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21waWxlci9wcm90b192aWV3X2NvbXBpbGVyLnRzIl0sIm5hbWVzIjpbIlByb3RvVmlld0NvbXBpbGVyIiwiUHJvdG9WaWV3Q29tcGlsZXIuY29uc3RydWN0b3IiLCJQcm90b1ZpZXdDb21waWxlci5jb21waWxlUHJvdG9WaWV3UnVudGltZSIsIlByb3RvVmlld0NvbXBpbGVyLmNvbXBpbGVQcm90b1ZpZXdDb2RlR2VuIiwiQ29tcGlsZVByb3RvVmlld3MiLCJDb21waWxlUHJvdG9WaWV3cy5jb25zdHJ1Y3RvciIsIkNvbXBpbGVQcm90b1ZpZXciLCJDb21waWxlUHJvdG9WaWV3LmNvbnN0cnVjdG9yIiwiQ29tcGlsZVByb3RvRWxlbWVudCIsIkNvbXBpbGVQcm90b0VsZW1lbnQuY29uc3RydWN0b3IiLCJ2aXNpdEFuZFJldHVybkNvbnRleHQiLCJQcm90b1ZpZXdGYWN0b3J5IiwiUHJvdG9WaWV3RmFjdG9yeS5jb25zdHJ1Y3RvciIsIlByb3RvVmlld0ZhY3RvcnkuY3JlYXRlQ29tcGlsZVByb3RvVmlldyIsIkNvZGVHZW5Qcm90b1ZpZXdGYWN0b3J5IiwiQ29kZUdlblByb3RvVmlld0ZhY3RvcnkuY29uc3RydWN0b3IiLCJDb2RlR2VuUHJvdG9WaWV3RmFjdG9yeS5fbmV4dFByb3RvVmlld1ZhciIsIkNvZGVHZW5Qcm90b1ZpZXdGYWN0b3J5LmNyZWF0ZUFwcFByb3RvVmlldyIsIkNvZGVHZW5Qcm90b1ZpZXdGYWN0b3J5LmNyZWF0ZUFwcFByb3RvRWxlbWVudCIsIlJ1bnRpbWVQcm90b1ZpZXdGYWN0b3J5IiwiUnVudGltZVByb3RvVmlld0ZhY3RvcnkuY29uc3RydWN0b3IiLCJSdW50aW1lUHJvdG9WaWV3RmFjdG9yeS5jcmVhdGVBcHBQcm90b1ZpZXciLCJSdW50aW1lUHJvdG9WaWV3RmFjdG9yeS5jcmVhdGVBcHBQcm90b0VsZW1lbnQiLCJQcm90b1ZpZXdCdWlsZGVyVmlzaXRvciIsIlByb3RvVmlld0J1aWxkZXJWaXNpdG9yLmNvbnN0cnVjdG9yIiwiUHJvdG9WaWV3QnVpbGRlclZpc2l0b3IuX3JlYWRBdHRyTmFtZUFuZFZhbHVlcyIsIlByb3RvVmlld0J1aWxkZXJWaXNpdG9yLnZpc2l0Qm91bmRUZXh0IiwiUHJvdG9WaWV3QnVpbGRlclZpc2l0b3IudmlzaXRUZXh0IiwiUHJvdG9WaWV3QnVpbGRlclZpc2l0b3IudmlzaXROZ0NvbnRlbnQiLCJQcm90b1ZpZXdCdWlsZGVyVmlzaXRvci52aXNpdEVsZW1lbnQiLCJQcm90b1ZpZXdCdWlsZGVyVmlzaXRvci52aXNpdEVtYmVkZGVkVGVtcGxhdGUiLCJQcm90b1ZpZXdCdWlsZGVyVmlzaXRvci5fYWRkUHJvdG9FbGVtZW50IiwiUHJvdG9WaWV3QnVpbGRlclZpc2l0b3IudmlzaXRWYXJpYWJsZSIsIlByb3RvVmlld0J1aWxkZXJWaXNpdG9yLnZpc2l0QXR0ciIsIlByb3RvVmlld0J1aWxkZXJWaXNpdG9yLnZpc2l0RGlyZWN0aXZlIiwiUHJvdG9WaWV3QnVpbGRlclZpc2l0b3IudmlzaXRFdmVudCIsIlByb3RvVmlld0J1aWxkZXJWaXNpdG9yLnZpc2l0RGlyZWN0aXZlUHJvcGVydHkiLCJQcm90b1ZpZXdCdWlsZGVyVmlzaXRvci52aXNpdEVsZW1lbnRQcm9wZXJ0eSIsIm1hcFRvS2V5VmFsdWVBcnJheSIsIm1lcmdlQXR0cmlidXRlVmFsdWUiLCJEaXJlY3RpdmVDb250ZXh0IiwiRGlyZWN0aXZlQ29udGV4dC5jb25zdHJ1Y3RvciIsImtleVZhbHVlQXJyYXlUb1N0cmluZ01hcCIsImNvZGVHZW5EaXJlY3RpdmVzQXJyYXkiLCJjb2RlR2VuVHlwZXNBcnJheSIsImNvZGVHZW5WaWV3VHlwZSIsInR5cGVSZWYiLCJnZXRWaWV3VHlwZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQkFRTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLDJCQUtPLGdDQUFnQyxDQUFDLENB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dCxcbiAgaXNCbGFuayxcbiAgVHlwZSxcbiAgaXNTdHJpbmcsXG4gIFN0cmluZ1dyYXBwZXIsXG4gIElTX0RBUlQsXG4gIENPTlNUX0VYUFJcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7XG4gIFNldFdyYXBwZXIsXG4gIFN0cmluZ01hcFdyYXBwZXIsXG4gIExpc3RXcmFwcGVyLFxuICBNYXBXcmFwcGVyXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1xuICBUZW1wbGF0ZUFzdCxcbiAgVGVtcGxhdGVBc3RWaXNpdG9yLFxuICBOZ0NvbnRlbnRBc3QsXG4gIEVtYmVkZGVkVGVtcGxhdGVBc3QsXG4gIEVsZW1lbnRBc3QsXG4gIFZhcmlhYmxlQXN0LFxuICBCb3VuZEV2ZW50QXN0LFxuICBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCxcbiAgQXR0ckFzdCxcbiAgQm91bmRUZXh0QXN0LFxuICBUZXh0QXN0LFxuICBEaXJlY3RpdmVBc3QsXG4gIEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3QsXG4gIHRlbXBsYXRlVmlzaXRBbGxcbn0gZnJvbSAnLi90ZW1wbGF0ZV9hc3QnO1xuaW1wb3J0IHtcbiAgQ29tcGlsZVR5cGVNZXRhZGF0YSxcbiAgQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLFxuICBDb21waWxlUGlwZU1ldGFkYXRhXG59IGZyb20gJy4vZGlyZWN0aXZlX21ldGFkYXRhJztcbmltcG9ydCB7U291cmNlRXhwcmVzc2lvbnMsIFNvdXJjZUV4cHJlc3Npb24sIG1vZHVsZVJlZn0gZnJvbSAnLi9zb3VyY2VfbW9kdWxlJztcbmltcG9ydCB7QXBwUHJvdG9WaWV3LCBBcHBWaWV3fSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvdmlldyc7XG5pbXBvcnQge1ZpZXdUeXBlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvdmlld190eXBlJztcbmltcG9ydCB7QXBwUHJvdG9FbGVtZW50LCBBcHBFbGVtZW50fSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvZWxlbWVudCc7XG5pbXBvcnQge1Jlc29sdmVkTWV0YWRhdGFDYWNoZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL3Jlc29sdmVkX21ldGFkYXRhX2NhY2hlJztcbmltcG9ydCB7XG4gIGVzY2FwZVNpbmdsZVF1b3RlU3RyaW5nLFxuICBjb2RlR2VuQ29uc3RDb25zdHJ1Y3RvckNhbGwsXG4gIGNvZGVHZW5WYWx1ZUZuLFxuICBjb2RlR2VuRm5IZWFkZXIsXG4gIE1PRFVMRV9TVUZGSVgsXG4gIGNvZGVHZW5TdHJpbmdNYXAsXG4gIEV4cHJlc3Npb24sXG4gIFN0YXRlbWVudFxufSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5cbmV4cG9ydCBjb25zdCBQUk9UT19WSUVXX0pJVF9JTVBPUlRTID0gQ09OU1RfRVhQUihcbiAgICB7J0FwcFByb3RvVmlldyc6IEFwcFByb3RvVmlldywgJ0FwcFByb3RvRWxlbWVudCc6IEFwcFByb3RvRWxlbWVudCwgJ1ZpZXdUeXBlJzogVmlld1R5cGV9KTtcblxuLy8gVE9ETzogaGF2ZSBhIHNpbmdsZSBmaWxlIHRoYXQgcmVleHBvcnRzIGV2ZXJ5dGhpbmcgbmVlZGVkIGZvclxuLy8gY29kZWdlbiBleHBsaWNpdGx5XG4vLyAtIGhlbHBzIHVuZGVyc3RhbmRpbmcgd2hhdCBjb2RlZ2VuIHdvcmtzIGFnYWluc3Rcbi8vIC0gbGVzcyBpbXBvcnRzIGluIGNvZGVnZW4gY29kZVxuZXhwb3J0IHZhciBBUFBfVklFV19NT0RVTEVfUkVGID0gbW9kdWxlUmVmKCdwYWNrYWdlOmFuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3JyArIE1PRFVMRV9TVUZGSVgpO1xuZXhwb3J0IHZhciBWSUVXX1RZUEVfTU9EVUxFX1JFRiA9XG4gICAgbW9kdWxlUmVmKCdwYWNrYWdlOmFuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3X3R5cGUnICsgTU9EVUxFX1NVRkZJWCk7XG5leHBvcnQgdmFyIEFQUF9FTF9NT0RVTEVfUkVGID1cbiAgICBtb2R1bGVSZWYoJ3BhY2thZ2U6YW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL2VsZW1lbnQnICsgTU9EVUxFX1NVRkZJWCk7XG5leHBvcnQgdmFyIE1FVEFEQVRBX01PRFVMRV9SRUYgPVxuICAgIG1vZHVsZVJlZigncGFja2FnZTphbmd1bGFyMi9zcmMvY29yZS9tZXRhZGF0YS92aWV3JyArIE1PRFVMRV9TVUZGSVgpO1xuXG5jb25zdCBJTVBMSUNJVF9URU1QTEFURV9WQVIgPSAnXFwkaW1wbGljaXQnO1xuY29uc3QgQ0xBU1NfQVRUUiA9ICdjbGFzcyc7XG5jb25zdCBTVFlMRV9BVFRSID0gJ3N0eWxlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFByb3RvVmlld0NvbXBpbGVyIHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGNvbXBpbGVQcm90b1ZpZXdSdW50aW1lKG1ldGFkYXRhQ2FjaGU6IFJlc29sdmVkTWV0YWRhdGFDYWNoZSwgY29tcG9uZW50OiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOiBUZW1wbGF0ZUFzdFtdLCBwaXBlczogQ29tcGlsZVBpcGVNZXRhZGF0YVtdKTpcbiAgICAgIENvbXBpbGVQcm90b1ZpZXdzPEFwcFByb3RvVmlldywgQXBwUHJvdG9FbGVtZW50LCBhbnk+IHtcbiAgICB2YXIgcHJvdG9WaWV3RmFjdG9yeSA9IG5ldyBSdW50aW1lUHJvdG9WaWV3RmFjdG9yeShtZXRhZGF0YUNhY2hlLCBjb21wb25lbnQsIHBpcGVzKTtcbiAgICB2YXIgYWxsUHJvdG9WaWV3cyA9IFtdO1xuICAgIHByb3RvVmlld0ZhY3RvcnkuY3JlYXRlQ29tcGlsZVByb3RvVmlldyh0ZW1wbGF0ZSwgW10sIFtdLCBhbGxQcm90b1ZpZXdzKTtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVQcm90b1ZpZXdzPEFwcFByb3RvVmlldywgQXBwUHJvdG9FbGVtZW50LCBhbnk+KFtdLCBhbGxQcm90b1ZpZXdzKTtcbiAgfVxuXG4gIGNvbXBpbGVQcm90b1ZpZXdDb2RlR2VuKHJlc29sdmVkTWV0YWRhdGFDYWNoZUV4cHI6IEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLCB0ZW1wbGF0ZTogVGVtcGxhdGVBc3RbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZXM6IENvbXBpbGVQaXBlTWV0YWRhdGFbXSk6XG4gICAgICBDb21waWxlUHJvdG9WaWV3czxFeHByZXNzaW9uLCBFeHByZXNzaW9uLCBzdHJpbmc+IHtcbiAgICB2YXIgcHJvdG9WaWV3RmFjdG9yeSA9IG5ldyBDb2RlR2VuUHJvdG9WaWV3RmFjdG9yeShyZXNvbHZlZE1ldGFkYXRhQ2FjaGVFeHByLCBjb21wb25lbnQsIHBpcGVzKTtcbiAgICB2YXIgYWxsUHJvdG9WaWV3cyA9IFtdO1xuICAgIHZhciBhbGxTdGF0ZW1lbnRzID0gW107XG4gICAgcHJvdG9WaWV3RmFjdG9yeS5jcmVhdGVDb21waWxlUHJvdG9WaWV3KHRlbXBsYXRlLCBbXSwgYWxsU3RhdGVtZW50cywgYWxsUHJvdG9WaWV3cyk7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlUHJvdG9WaWV3czxFeHByZXNzaW9uLCBFeHByZXNzaW9uLCBzdHJpbmc+KFxuICAgICAgICBhbGxTdGF0ZW1lbnRzLm1hcChzdG10ID0+IHN0bXQuc3RhdGVtZW50KSwgYWxsUHJvdG9WaWV3cyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBpbGVQcm90b1ZpZXdzPEFQUF9QUk9UT19WSUVXLCBBUFBfUFJPVE9fRUwsIFNUQVRFTUVOVD4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGVjbGFyYXRpb25zOiBTVEFURU1FTlRbXSxcbiAgICAgICAgICAgICAgcHVibGljIHByb3RvVmlld3M6IENvbXBpbGVQcm90b1ZpZXc8QVBQX1BST1RPX1ZJRVcsIEFQUF9QUk9UT19FTD5bXSkge31cbn1cblxuXG5leHBvcnQgY2xhc3MgQ29tcGlsZVByb3RvVmlldzxBUFBfUFJPVE9fVklFVywgQVBQX1BST1RPX0VMPiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbWJlZGRlZFRlbXBsYXRlSW5kZXg6IG51bWJlcixcbiAgICAgICAgICAgICAgcHVibGljIHByb3RvRWxlbWVudHM6IENvbXBpbGVQcm90b0VsZW1lbnQ8QVBQX1BST1RPX0VMPltdLFxuICAgICAgICAgICAgICBwdWJsaWMgcHJvdG9WaWV3OiBBUFBfUFJPVE9fVklFVykge31cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBpbGVQcm90b0VsZW1lbnQ8QVBQX1BST1RPX0VMPiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBib3VuZEVsZW1lbnRJbmRleCwgcHVibGljIGF0dHJOYW1lQW5kVmFsdWVzOiBzdHJpbmdbXVtdLFxuICAgICAgICAgICAgICBwdWJsaWMgdmFyaWFibGVOYW1lQW5kVmFsdWVzOiBzdHJpbmdbXVtdLCBwdWJsaWMgcmVuZGVyRXZlbnRzOiBCb3VuZEV2ZW50QXN0W10sXG4gICAgICAgICAgICAgIHB1YmxpYyBkaXJlY3RpdmVzOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXSwgcHVibGljIGVtYmVkZGVkVGVtcGxhdGVJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICBwdWJsaWMgYXBwUHJvdG9FbDogQVBQX1BST1RPX0VMKSB7fVxufVxuXG5mdW5jdGlvbiB2aXNpdEFuZFJldHVybkNvbnRleHQodmlzaXRvcjogVGVtcGxhdGVBc3RWaXNpdG9yLCBhc3RzOiBUZW1wbGF0ZUFzdFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gIHRlbXBsYXRlVmlzaXRBbGwodmlzaXRvciwgYXN0cywgY29udGV4dCk7XG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5hYnN0cmFjdCBjbGFzcyBQcm90b1ZpZXdGYWN0b3J5PEFQUF9QUk9UT19WSUVXLCBBUFBfUFJPVE9fRUwsIFNUQVRFTUVOVD4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29tcG9uZW50OiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEpIHt9XG5cbiAgYWJzdHJhY3QgY3JlYXRlQXBwUHJvdG9WaWV3KGVtYmVkZGVkVGVtcGxhdGVJbmRleDogbnVtYmVyLCB2aWV3VHlwZTogVmlld1R5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVZhcmlhYmxlQmluZGluZ3M6IHN0cmluZ1tdW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGF0ZW1lbnRzOiBTVEFURU1FTlRbXSk6IEFQUF9QUk9UT19WSUVXO1xuXG4gIGFic3RyYWN0IGNyZWF0ZUFwcFByb3RvRWxlbWVudChib3VuZEVsZW1lbnRJbmRleDogbnVtYmVyLCBhdHRyTmFtZUFuZFZhbHVlczogc3RyaW5nW11bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlTmFtZUFuZFZhbHVlczogc3RyaW5nW11bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U3RhdGVtZW50czogU1RBVEVNRU5UW10pOiBBUFBfUFJPVE9fRUw7XG5cbiAgY3JlYXRlQ29tcGlsZVByb3RvVmlldyh0ZW1wbGF0ZTogVGVtcGxhdGVBc3RbXSwgdGVtcGxhdGVWYXJpYWJsZUJpbmRpbmdzOiBzdHJpbmdbXVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YXRlbWVudHM6IFNUQVRFTUVOVFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3RvVmlld3M6IENvbXBpbGVQcm90b1ZpZXc8QVBQX1BST1RPX1ZJRVcsIEFQUF9QUk9UT19FTD5bXSk6XG4gICAgICBDb21waWxlUHJvdG9WaWV3PEFQUF9QUk9UT19WSUVXLCBBUFBfUFJPVE9fRUw+IHtcbiAgICB2YXIgZW1iZWRkZWRUZW1wbGF0ZUluZGV4ID0gdGFyZ2V0UHJvdG9WaWV3cy5sZW5ndGg7XG4gICAgLy8gTm90ZTogdGFyZ2V0UHJvdG9WaWV3cyBuZWVkcyB0byBiZSBpbiBkZXB0aCBmaXJzdCBvcmRlci5cbiAgICAvLyBTbyB3ZSBcInJlc2VydmVcIiBhIHNwYWNlIGhlcmUgdGhhdCB3ZSBmaWxsIGFmdGVyIHRoZSByZWN1cnNpb24gaXMgZG9uZVxuICAgIHRhcmdldFByb3RvVmlld3MucHVzaChudWxsKTtcbiAgICB2YXIgYnVpbGRlciA9IG5ldyBQcm90b1ZpZXdCdWlsZGVyVmlzaXRvcjxBUFBfUFJPVE9fVklFVywgQVBQX1BST1RPX0VMLCBhbnk+KFxuICAgICAgICB0aGlzLCB0YXJnZXRTdGF0ZW1lbnRzLCB0YXJnZXRQcm90b1ZpZXdzKTtcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKGJ1aWxkZXIsIHRlbXBsYXRlKTtcbiAgICB2YXIgdmlld1R5cGUgPSBnZXRWaWV3VHlwZSh0aGlzLmNvbXBvbmVudCwgZW1iZWRkZWRUZW1wbGF0ZUluZGV4KTtcbiAgICB2YXIgYXBwUHJvdG9WaWV3ID0gdGhpcy5jcmVhdGVBcHBQcm90b1ZpZXcoZW1iZWRkZWRUZW1wbGF0ZUluZGV4LCB2aWV3VHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVWYXJpYWJsZUJpbmRpbmdzLCB0YXJnZXRTdGF0ZW1lbnRzKTtcbiAgICB2YXIgY3B2ID0gbmV3IENvbXBpbGVQcm90b1ZpZXc8QVBQX1BST1RPX1ZJRVcsIEFQUF9QUk9UT19FTD4oXG4gICAgICAgIGVtYmVkZGVkVGVtcGxhdGVJbmRleCwgYnVpbGRlci5wcm90b0VsZW1lbnRzLCBhcHBQcm90b1ZpZXcpO1xuICAgIHRhcmdldFByb3RvVmlld3NbZW1iZWRkZWRUZW1wbGF0ZUluZGV4XSA9IGNwdjtcbiAgICByZXR1cm4gY3B2O1xuICB9XG59XG5cbmNsYXNzIENvZGVHZW5Qcm90b1ZpZXdGYWN0b3J5IGV4dGVuZHMgUHJvdG9WaWV3RmFjdG9yeTxFeHByZXNzaW9uLCBFeHByZXNzaW9uLCBTdGF0ZW1lbnQ+IHtcbiAgcHJpdmF0ZSBfbmV4dFZhcklkOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZXNvbHZlZE1ldGFkYXRhQ2FjaGVFeHByOiBFeHByZXNzaW9uLCBjb21wb25lbnQ6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgICAgICAgICAgICAgcHVibGljIHBpcGVzOiBDb21waWxlUGlwZU1ldGFkYXRhW10pIHtcbiAgICBzdXBlcihjb21wb25lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbmV4dFByb3RvVmlld1ZhcihlbWJlZGRlZFRlbXBsYXRlSW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhcHBQcm90b1ZpZXcke3RoaXMuX25leHRWYXJJZCsrfV8ke3RoaXMuY29tcG9uZW50LnR5cGUubmFtZX0ke2VtYmVkZGVkVGVtcGxhdGVJbmRleH1gO1xuICB9XG5cbiAgY3JlYXRlQXBwUHJvdG9WaWV3KGVtYmVkZGVkVGVtcGxhdGVJbmRleDogbnVtYmVyLCB2aWV3VHlwZTogVmlld1R5cGUsXG4gICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVZhcmlhYmxlQmluZGluZ3M6IHN0cmluZ1tdW10sXG4gICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSk6IEV4cHJlc3Npb24ge1xuICAgIHZhciBwcm90b1ZpZXdWYXJOYW1lID0gdGhpcy5fbmV4dFByb3RvVmlld1ZhcihlbWJlZGRlZFRlbXBsYXRlSW5kZXgpO1xuICAgIHZhciB2aWV3VHlwZUV4cHIgPSBjb2RlR2VuVmlld1R5cGUodmlld1R5cGUpO1xuICAgIHZhciBwaXBlc0V4cHIgPSBlbWJlZGRlZFRlbXBsYXRlSW5kZXggPT09IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZUdlblR5cGVzQXJyYXkodGhpcy5waXBlcy5tYXAocGlwZU1ldGEgPT4gcGlwZU1ldGEudHlwZSkpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG4gICAgdmFyIHN0YXRlbWVudCA9XG4gICAgICAgIGB2YXIgJHtwcm90b1ZpZXdWYXJOYW1lfSA9ICR7QVBQX1ZJRVdfTU9EVUxFX1JFRn1BcHBQcm90b1ZpZXcuY3JlYXRlKCR7dGhpcy5yZXNvbHZlZE1ldGFkYXRhQ2FjaGVFeHByLmV4cHJlc3Npb259LCAke3ZpZXdUeXBlRXhwcn0sICR7cGlwZXNFeHByfSwgJHtjb2RlR2VuU3RyaW5nTWFwKHRlbXBsYXRlVmFyaWFibGVCaW5kaW5ncyl9KTtgO1xuICAgIHRhcmdldFN0YXRlbWVudHMucHVzaChuZXcgU3RhdGVtZW50KHN0YXRlbWVudCkpO1xuICAgIHJldHVybiBuZXcgRXhwcmVzc2lvbihwcm90b1ZpZXdWYXJOYW1lKTtcbiAgfVxuXG4gIGNyZWF0ZUFwcFByb3RvRWxlbWVudChib3VuZEVsZW1lbnRJbmRleDogbnVtYmVyLCBhdHRyTmFtZUFuZFZhbHVlczogc3RyaW5nW11bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlTmFtZUFuZFZhbHVlczogc3RyaW5nW11bXSwgZGlyZWN0aXZlczogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhW10sXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRTdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSk6IEV4cHJlc3Npb24ge1xuICAgIHZhciB2YXJOYW1lID0gYGFwcFByb3RvRWwke3RoaXMuX25leHRWYXJJZCsrfV8ke3RoaXMuY29tcG9uZW50LnR5cGUubmFtZX1gO1xuICAgIHZhciB2YWx1ZSA9IGAke0FQUF9FTF9NT0RVTEVfUkVGfUFwcFByb3RvRWxlbWVudC5jcmVhdGUoXG4gICAgICAgICR7dGhpcy5yZXNvbHZlZE1ldGFkYXRhQ2FjaGVFeHByLmV4cHJlc3Npb259LFxuICAgICAgICAke2JvdW5kRWxlbWVudEluZGV4fSxcbiAgICAgICAgJHtjb2RlR2VuU3RyaW5nTWFwKGF0dHJOYW1lQW5kVmFsdWVzKX0sXG4gICAgICAgICR7Y29kZUdlbkRpcmVjdGl2ZXNBcnJheShkaXJlY3RpdmVzKX0sXG4gICAgICAgICR7Y29kZUdlblN0cmluZ01hcCh2YXJpYWJsZU5hbWVBbmRWYWx1ZXMpfVxuICAgICAgKWA7XG4gICAgdmFyIHN0YXRlbWVudCA9IGB2YXIgJHt2YXJOYW1lfSA9ICR7dmFsdWV9O2A7XG4gICAgdGFyZ2V0U3RhdGVtZW50cy5wdXNoKG5ldyBTdGF0ZW1lbnQoc3RhdGVtZW50KSk7XG4gICAgcmV0dXJuIG5ldyBFeHByZXNzaW9uKHZhck5hbWUpO1xuICB9XG59XG5cbmNsYXNzIFJ1bnRpbWVQcm90b1ZpZXdGYWN0b3J5IGV4dGVuZHMgUHJvdG9WaWV3RmFjdG9yeTxBcHBQcm90b1ZpZXcsIEFwcFByb3RvRWxlbWVudCwgYW55PiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtZXRhZGF0YUNhY2hlOiBSZXNvbHZlZE1ldGFkYXRhQ2FjaGUsIGNvbXBvbmVudDogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLFxuICAgICAgICAgICAgICBwdWJsaWMgcGlwZXM6IENvbXBpbGVQaXBlTWV0YWRhdGFbXSkge1xuICAgIHN1cGVyKGNvbXBvbmVudCk7XG4gIH1cblxuICBjcmVhdGVBcHBQcm90b1ZpZXcoZW1iZWRkZWRUZW1wbGF0ZUluZGV4OiBudW1iZXIsIHZpZXdUeXBlOiBWaWV3VHlwZSxcbiAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlVmFyaWFibGVCaW5kaW5nczogc3RyaW5nW11bXSwgdGFyZ2V0U3RhdGVtZW50czogYW55W10pOiBBcHBQcm90b1ZpZXcge1xuICAgIHZhciBwaXBlcyA9XG4gICAgICAgIGVtYmVkZGVkVGVtcGxhdGVJbmRleCA9PT0gMCA/IHRoaXMucGlwZXMubWFwKHBpcGVNZXRhID0+IHBpcGVNZXRhLnR5cGUucnVudGltZSkgOiBbXTtcbiAgICB2YXIgdGVtcGxhdGVWYXJzID0ga2V5VmFsdWVBcnJheVRvU3RyaW5nTWFwKHRlbXBsYXRlVmFyaWFibGVCaW5kaW5ncyk7XG4gICAgcmV0dXJuIEFwcFByb3RvVmlldy5jcmVhdGUodGhpcy5tZXRhZGF0YUNhY2hlLCB2aWV3VHlwZSwgcGlwZXMsIHRlbXBsYXRlVmFycyk7XG4gIH1cblxuICBjcmVhdGVBcHBQcm90b0VsZW1lbnQoYm91bmRFbGVtZW50SW5kZXg6IG51bWJlciwgYXR0ck5hbWVBbmRWYWx1ZXM6IHN0cmluZ1tdW10sXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZU5hbWVBbmRWYWx1ZXM6IHN0cmluZ1tdW10sIGRpcmVjdGl2ZXM6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U3RhdGVtZW50czogYW55W10pOiBBcHBQcm90b0VsZW1lbnQge1xuICAgIHZhciBhdHRycyA9IGtleVZhbHVlQXJyYXlUb1N0cmluZ01hcChhdHRyTmFtZUFuZFZhbHVlcyk7XG4gICAgcmV0dXJuIEFwcFByb3RvRWxlbWVudC5jcmVhdGUodGhpcy5tZXRhZGF0YUNhY2hlLCBib3VuZEVsZW1lbnRJbmRleCwgYXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tYXAoZGlyTWV0YSA9PiBkaXJNZXRhLnR5cGUucnVudGltZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5VmFsdWVBcnJheVRvU3RyaW5nTWFwKHZhcmlhYmxlTmFtZUFuZFZhbHVlcykpO1xuICB9XG59XG5cbmNsYXNzIFByb3RvVmlld0J1aWxkZXJWaXNpdG9yPEFQUF9QUk9UT19WSUVXLCBBUFBfUFJPVE9fRUwsIFNUQVRFTUVOVD4gaW1wbGVtZW50c1xuICAgIFRlbXBsYXRlQXN0VmlzaXRvciB7XG4gIHByb3RvRWxlbWVudHM6IENvbXBpbGVQcm90b0VsZW1lbnQ8QVBQX1BST1RPX0VMPltdID0gW107XG4gIGJvdW5kRWxlbWVudENvdW50OiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmYWN0b3J5OiBQcm90b1ZpZXdGYWN0b3J5PEFQUF9QUk9UT19WSUVXLCBBUFBfUFJPVE9fRUwsIFNUQVRFTUVOVD4sXG4gICAgICAgICAgICAgIHB1YmxpYyBhbGxTdGF0ZW1lbnRzOiBTVEFURU1FTlRbXSxcbiAgICAgICAgICAgICAgcHVibGljIGFsbFByb3RvVmlld3M6IENvbXBpbGVQcm90b1ZpZXc8QVBQX1BST1RPX1ZJRVcsIEFQUF9QUk9UT19FTD5bXSkge31cblxuICBwcml2YXRlIF9yZWFkQXR0ck5hbWVBbmRWYWx1ZXMoZGlyZWN0aXZlczogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyQXN0czogVGVtcGxhdGVBc3RbXSk6IHN0cmluZ1tdW10ge1xuICAgIHZhciBhdHRycyA9IHZpc2l0QW5kUmV0dXJuQ29udGV4dCh0aGlzLCBhdHRyQXN0cywge30pO1xuICAgIGRpcmVjdGl2ZXMuZm9yRWFjaChkaXJlY3RpdmVNZXRhID0+IHtcbiAgICAgIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChkaXJlY3RpdmVNZXRhLmhvc3RBdHRyaWJ1dGVzLCAodmFsdWU6IHN0cmluZywgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHZhciBwcmV2VmFsdWUgPSBhdHRyc1tuYW1lXTtcbiAgICAgICAgYXR0cnNbbmFtZV0gPSBpc1ByZXNlbnQocHJldlZhbHVlKSA/IG1lcmdlQXR0cmlidXRlVmFsdWUobmFtZSwgcHJldlZhbHVlLCB2YWx1ZSkgOiB2YWx1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBtYXBUb0tleVZhbHVlQXJyYXkoYXR0cnMpO1xuICB9XG5cbiAgdmlzaXRCb3VuZFRleHQoYXN0OiBCb3VuZFRleHRBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0VGV4dChhc3Q6IFRleHRBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG5cbiAgdmlzaXROZ0NvbnRlbnQoYXN0OiBOZ0NvbnRlbnRBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG5cbiAgdmlzaXRFbGVtZW50KGFzdDogRWxlbWVudEFzdCwgY29udGV4dDogYW55KTogYW55IHtcbiAgICB2YXIgYm91bmRFbGVtZW50SW5kZXggPSBudWxsO1xuICAgIGlmIChhc3QuaXNCb3VuZCgpKSB7XG4gICAgICBib3VuZEVsZW1lbnRJbmRleCA9IHRoaXMuYm91bmRFbGVtZW50Q291bnQrKztcbiAgICB9XG4gICAgdmFyIGNvbXBvbmVudCA9IGFzdC5nZXRDb21wb25lbnQoKTtcblxuICAgIHZhciB2YXJpYWJsZU5hbWVBbmRWYWx1ZXM6IHN0cmluZ1tdW10gPSBbXTtcbiAgICBpZiAoaXNCbGFuayhjb21wb25lbnQpKSB7XG4gICAgICBhc3QuZXhwb3J0QXNWYXJzLmZvckVhY2goKHZhckFzdCkgPT4geyB2YXJpYWJsZU5hbWVBbmRWYWx1ZXMucHVzaChbdmFyQXN0Lm5hbWUsIG51bGxdKTsgfSk7XG4gICAgfVxuICAgIHZhciBkaXJlY3RpdmVzID0gW107XG4gICAgdmFyIHJlbmRlckV2ZW50czogTWFwPHN0cmluZywgQm91bmRFdmVudEFzdD4gPVxuICAgICAgICB2aXNpdEFuZFJldHVybkNvbnRleHQodGhpcywgYXN0Lm91dHB1dHMsIG5ldyBNYXA8c3RyaW5nLCBCb3VuZEV2ZW50QXN0PigpKTtcbiAgICBMaXN0V3JhcHBlci5mb3JFYWNoV2l0aEluZGV4KGFzdC5kaXJlY3RpdmVzLCAoZGlyZWN0aXZlQXN0OiBEaXJlY3RpdmVBc3QsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGRpcmVjdGl2ZUFzdC52aXNpdCh0aGlzLCBuZXcgRGlyZWN0aXZlQ29udGV4dChpbmRleCwgYm91bmRFbGVtZW50SW5kZXgsIHJlbmRlckV2ZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZU5hbWVBbmRWYWx1ZXMsIGRpcmVjdGl2ZXMpKTtcbiAgICB9KTtcbiAgICB2YXIgcmVuZGVyRXZlbnRBcnJheSA9IFtdO1xuICAgIHJlbmRlckV2ZW50cy5mb3JFYWNoKChldmVudEFzdCwgXykgPT4gcmVuZGVyRXZlbnRBcnJheS5wdXNoKGV2ZW50QXN0KSk7XG5cbiAgICB2YXIgYXR0ck5hbWVBbmRWYWx1ZXMgPSB0aGlzLl9yZWFkQXR0ck5hbWVBbmRWYWx1ZXMoZGlyZWN0aXZlcywgYXN0LmF0dHJzKTtcbiAgICB0aGlzLl9hZGRQcm90b0VsZW1lbnQoYXN0LmlzQm91bmQoKSwgYm91bmRFbGVtZW50SW5kZXgsIGF0dHJOYW1lQW5kVmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZU5hbWVBbmRWYWx1ZXMsIHJlbmRlckV2ZW50QXJyYXksIGRpcmVjdGl2ZXMsIG51bGwpO1xuICAgIHRlbXBsYXRlVmlzaXRBbGwodGhpcywgYXN0LmNoaWxkcmVuKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZpc2l0RW1iZWRkZWRUZW1wbGF0ZShhc3Q6IEVtYmVkZGVkVGVtcGxhdGVBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgdmFyIGJvdW5kRWxlbWVudEluZGV4ID0gdGhpcy5ib3VuZEVsZW1lbnRDb3VudCsrO1xuICAgIHZhciBkaXJlY3RpdmVzOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXSA9IFtdO1xuICAgIExpc3RXcmFwcGVyLmZvckVhY2hXaXRoSW5kZXgoYXN0LmRpcmVjdGl2ZXMsIChkaXJlY3RpdmVBc3Q6IERpcmVjdGl2ZUFzdCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgZGlyZWN0aXZlQXN0LnZpc2l0KFxuICAgICAgICAgIHRoaXMsIG5ldyBEaXJlY3RpdmVDb250ZXh0KGluZGV4LCBib3VuZEVsZW1lbnRJbmRleCwgbmV3IE1hcDxzdHJpbmcsIEJvdW5kRXZlbnRBc3Q+KCksIFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMpKTtcbiAgICB9KTtcblxuICAgIHZhciBhdHRyTmFtZUFuZFZhbHVlcyA9IHRoaXMuX3JlYWRBdHRyTmFtZUFuZFZhbHVlcyhkaXJlY3RpdmVzLCBhc3QuYXR0cnMpO1xuICAgIHZhciB0ZW1wbGF0ZVZhcmlhYmxlQmluZGluZ3MgPSBhc3QudmFycy5tYXAoXG4gICAgICAgIHZhckFzdCA9PiBbdmFyQXN0LnZhbHVlLmxlbmd0aCA+IDAgPyB2YXJBc3QudmFsdWUgOiBJTVBMSUNJVF9URU1QTEFURV9WQVIsIHZhckFzdC5uYW1lXSk7XG4gICAgdmFyIG5lc3RlZFByb3RvVmlldyA9IHRoaXMuZmFjdG9yeS5jcmVhdGVDb21waWxlUHJvdG9WaWV3KFxuICAgICAgICBhc3QuY2hpbGRyZW4sIHRlbXBsYXRlVmFyaWFibGVCaW5kaW5ncywgdGhpcy5hbGxTdGF0ZW1lbnRzLCB0aGlzLmFsbFByb3RvVmlld3MpO1xuICAgIHRoaXMuX2FkZFByb3RvRWxlbWVudCh0cnVlLCBib3VuZEVsZW1lbnRJbmRleCwgYXR0ck5hbWVBbmRWYWx1ZXMsIFtdLCBbXSwgZGlyZWN0aXZlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkUHJvdG9WaWV3LmVtYmVkZGVkVGVtcGxhdGVJbmRleCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9hZGRQcm90b0VsZW1lbnQoaXNCb3VuZDogYm9vbGVhbiwgYm91bmRFbGVtZW50SW5kZXgsIGF0dHJOYW1lQW5kVmFsdWVzOiBzdHJpbmdbXVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVOYW1lQW5kVmFsdWVzOiBzdHJpbmdbXVtdLCByZW5kZXJFdmVudHM6IEJvdW5kRXZlbnRBc3RbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YVtdLCBlbWJlZGRlZFRlbXBsYXRlSW5kZXg6IG51bWJlcikge1xuICAgIHZhciBhcHBQcm90b0VsID0gbnVsbDtcbiAgICBpZiAoaXNCb3VuZCkge1xuICAgICAgYXBwUHJvdG9FbCA9XG4gICAgICAgICAgdGhpcy5mYWN0b3J5LmNyZWF0ZUFwcFByb3RvRWxlbWVudChib3VuZEVsZW1lbnRJbmRleCwgYXR0ck5hbWVBbmRWYWx1ZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZU5hbWVBbmRWYWx1ZXMsIGRpcmVjdGl2ZXMsIHRoaXMuYWxsU3RhdGVtZW50cyk7XG4gICAgfVxuICAgIHZhciBjb21waWxlUHJvdG9FbCA9IG5ldyBDb21waWxlUHJvdG9FbGVtZW50PEFQUF9QUk9UT19FTD4oXG4gICAgICAgIGJvdW5kRWxlbWVudEluZGV4LCBhdHRyTmFtZUFuZFZhbHVlcywgdmFyaWFibGVOYW1lQW5kVmFsdWVzLCByZW5kZXJFdmVudHMsIGRpcmVjdGl2ZXMsXG4gICAgICAgIGVtYmVkZGVkVGVtcGxhdGVJbmRleCwgYXBwUHJvdG9FbCk7XG4gICAgdGhpcy5wcm90b0VsZW1lbnRzLnB1c2goY29tcGlsZVByb3RvRWwpO1xuICB9XG5cbiAgdmlzaXRWYXJpYWJsZShhc3Q6IFZhcmlhYmxlQXN0LCBjdHg6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0QXR0cihhc3Q6IEF0dHJBc3QsIGF0dHJOYW1lQW5kVmFsdWVzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSk6IGFueSB7XG4gICAgYXR0ck5hbWVBbmRWYWx1ZXNbYXN0Lm5hbWVdID0gYXN0LnZhbHVlO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0RGlyZWN0aXZlKGFzdDogRGlyZWN0aXZlQXN0LCBjdHg6IERpcmVjdGl2ZUNvbnRleHQpOiBhbnkge1xuICAgIGN0eC50YXJnZXREaXJlY3RpdmVzLnB1c2goYXN0LmRpcmVjdGl2ZSk7XG4gICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3QuaG9zdEV2ZW50cywgY3R4Lmhvc3RFdmVudFRhcmdldEFuZE5hbWVzKTtcbiAgICBhc3QuZXhwb3J0QXNWYXJzLmZvckVhY2goXG4gICAgICAgIHZhckFzdCA9PiB7IGN0eC50YXJnZXRWYXJpYWJsZU5hbWVBbmRWYWx1ZXMucHVzaChbdmFyQXN0Lm5hbWUsIGN0eC5pbmRleF0pOyB9KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdEV2ZW50KGFzdDogQm91bmRFdmVudEFzdCwgZXZlbnRUYXJnZXRBbmROYW1lczogTWFwPHN0cmluZywgQm91bmRFdmVudEFzdD4pOiBhbnkge1xuICAgIGV2ZW50VGFyZ2V0QW5kTmFtZXMuc2V0KGFzdC5mdWxsTmFtZSwgYXN0KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdERpcmVjdGl2ZVByb3BlcnR5KGFzdDogQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdCwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cbiAgdmlzaXRFbGVtZW50UHJvcGVydHkoYXN0OiBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cbn1cblxuZnVuY3Rpb24gbWFwVG9LZXlWYWx1ZUFycmF5KGRhdGE6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KTogc3RyaW5nW11bXSB7XG4gIHZhciBlbnRyeUFycmF5OiBzdHJpbmdbXVtdID0gW107XG4gIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlOiBzdHJpbmcsIG5hbWU6IHN0cmluZykgPT4geyBlbnRyeUFycmF5LnB1c2goW25hbWUsIHZhbHVlXSk7IH0pO1xuICAvLyBXZSBuZWVkIHRvIHNvcnQgdG8gZ2V0IGEgZGVmaW5lZCBvdXRwdXQgb3JkZXJcbiAgLy8gZm9yIHRlc3RzIGFuZCBmb3IgY2FjaGluZyBnZW5lcmF0ZWQgYXJ0aWZhY3RzLi4uXG4gIExpc3RXcmFwcGVyLnNvcnQ8c3RyaW5nW10+KGVudHJ5QXJyYXksIChlbnRyeTE6IHN0cmluZ1tdLCBlbnRyeTI6IHN0cmluZ1tdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nV3JhcHBlci5jb21wYXJlKGVudHJ5MVswXSwgZW50cnkyWzBdKSk7XG4gIHZhciBrZXlWYWx1ZUFycmF5OiBzdHJpbmdbXVtdID0gW107XG4gIGVudHJ5QXJyYXkuZm9yRWFjaCgoZW50cnkpID0+IHsga2V5VmFsdWVBcnJheS5wdXNoKFtlbnRyeVswXSwgZW50cnlbMV1dKTsgfSk7XG4gIHJldHVybiBrZXlWYWx1ZUFycmF5O1xufVxuXG5mdW5jdGlvbiBtZXJnZUF0dHJpYnV0ZVZhbHVlKGF0dHJOYW1lOiBzdHJpbmcsIGF0dHJWYWx1ZTE6IHN0cmluZywgYXR0clZhbHVlMjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGF0dHJOYW1lID09IENMQVNTX0FUVFIgfHwgYXR0ck5hbWUgPT0gU1RZTEVfQVRUUikge1xuICAgIHJldHVybiBgJHthdHRyVmFsdWUxfSAke2F0dHJWYWx1ZTJ9YDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXR0clZhbHVlMjtcbiAgfVxufVxuXG5jbGFzcyBEaXJlY3RpdmVDb250ZXh0IHtcbiAgY29uc3RydWN0b3IocHVibGljIGluZGV4OiBudW1iZXIsIHB1YmxpYyBib3VuZEVsZW1lbnRJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICBwdWJsaWMgaG9zdEV2ZW50VGFyZ2V0QW5kTmFtZXM6IE1hcDxzdHJpbmcsIEJvdW5kRXZlbnRBc3Q+LFxuICAgICAgICAgICAgICBwdWJsaWMgdGFyZ2V0VmFyaWFibGVOYW1lQW5kVmFsdWVzOiBhbnlbXVtdLFxuICAgICAgICAgICAgICBwdWJsaWMgdGFyZ2V0RGlyZWN0aXZlczogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhW10pIHt9XG59XG5cbmZ1bmN0aW9uIGtleVZhbHVlQXJyYXlUb1N0cmluZ01hcChrZXlWYWx1ZUFycmF5OiBhbnlbXVtdKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICB2YXIgc3RyaW5nTWFwOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleVZhbHVlQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZW50cnkgPSBrZXlWYWx1ZUFycmF5W2ldO1xuICAgIHN0cmluZ01hcFtlbnRyeVswXV0gPSBlbnRyeVsxXTtcbiAgfVxuICByZXR1cm4gc3RyaW5nTWFwO1xufVxuXG5mdW5jdGlvbiBjb2RlR2VuRGlyZWN0aXZlc0FycmF5KGRpcmVjdGl2ZXM6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YVtdKTogc3RyaW5nIHtcbiAgdmFyIGV4cHJlc3Npb25zID0gZGlyZWN0aXZlcy5tYXAoZGlyZWN0aXZlVHlwZSA9PiB0eXBlUmVmKGRpcmVjdGl2ZVR5cGUudHlwZSkpO1xuICByZXR1cm4gYFske2V4cHJlc3Npb25zLmpvaW4oJywnKX1dYDtcbn1cblxuZnVuY3Rpb24gY29kZUdlblR5cGVzQXJyYXkodHlwZXM6IENvbXBpbGVUeXBlTWV0YWRhdGFbXSk6IHN0cmluZyB7XG4gIHZhciBleHByZXNzaW9ucyA9IHR5cGVzLm1hcCh0eXBlUmVmKTtcbiAgcmV0dXJuIGBbJHtleHByZXNzaW9ucy5qb2luKCcsJyl9XWA7XG59XG5cbmZ1bmN0aW9uIGNvZGVHZW5WaWV3VHlwZSh2YWx1ZTogVmlld1R5cGUpOiBzdHJpbmcge1xuICBpZiAoSVNfREFSVCkge1xuICAgIHJldHVybiBgJHtWSUVXX1RZUEVfTU9EVUxFX1JFRn0ke3ZhbHVlfWA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGAke3ZhbHVlfWA7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHlwZVJlZih0eXBlOiBDb21waWxlVHlwZU1ldGFkYXRhKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke21vZHVsZVJlZih0eXBlLm1vZHVsZVVybCl9JHt0eXBlLm5hbWV9YDtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld1R5cGUoY29tcG9uZW50OiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsIGVtYmVkZGVkVGVtcGxhdGVJbmRleDogbnVtYmVyKTogVmlld1R5cGUge1xuICBpZiAoZW1iZWRkZWRUZW1wbGF0ZUluZGV4ID4gMCkge1xuICAgIHJldHVybiBWaWV3VHlwZS5FTUJFRERFRDtcbiAgfSBlbHNlIGlmIChjb21wb25lbnQudHlwZS5pc0hvc3QpIHtcbiAgICByZXR1cm4gVmlld1R5cGUuSE9TVDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gVmlld1R5cGUuQ09NUE9ORU5UO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * A segment of text within the template.\r\n */\r\nvar TextAst = (function () {\r\n function TextAst(value, ngContentIndex, sourceSpan) {\r\n this.value = value;\r\n this.ngContentIndex = ngContentIndex;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n TextAst.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); };\r\n return TextAst;\r\n})();\r\nexports.TextAst = TextAst;\r\n/**\r\n * A bound expression within the text of a template.\r\n */\r\nvar BoundTextAst = (function () {\r\n function BoundTextAst(value, ngContentIndex, sourceSpan) {\r\n this.value = value;\r\n this.ngContentIndex = ngContentIndex;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n BoundTextAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitBoundText(this, context);\r\n };\r\n return BoundTextAst;\r\n})();\r\nexports.BoundTextAst = BoundTextAst;\r\n/**\r\n * A plain attribute on an element.\r\n */\r\nvar AttrAst = (function () {\r\n function AttrAst(name, value, sourceSpan) {\r\n this.name = name;\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n AttrAst.prototype.visit = function (visitor, context) { return visitor.visitAttr(this, context); };\r\n return AttrAst;\r\n})();\r\nexports.AttrAst = AttrAst;\r\n/**\r\n * A binding for an element property (e.g. `[property]=\"expression\"`).\r\n */\r\nvar BoundElementPropertyAst = (function () {\r\n function BoundElementPropertyAst(name, type, value, unit, sourceSpan) {\r\n this.name = name;\r\n this.type = type;\r\n this.value = value;\r\n this.unit = unit;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n BoundElementPropertyAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitElementProperty(this, context);\r\n };\r\n return BoundElementPropertyAst;\r\n})();\r\nexports.BoundElementPropertyAst = BoundElementPropertyAst;\r\n/**\r\n * A binding for an element event (e.g. `(event)=\"handler()\"`).\r\n */\r\nvar BoundEventAst = (function () {\r\n function BoundEventAst(name, target, handler, sourceSpan) {\r\n this.name = name;\r\n this.target = target;\r\n this.handler = handler;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n BoundEventAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitEvent(this, context);\r\n };\r\n Object.defineProperty(BoundEventAst.prototype, \"fullName\", {\r\n get: function () {\r\n if (lang_1.isPresent(this.target)) {\r\n return this.target + \":\" + this.name;\r\n }\r\n else {\r\n return this.name;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return BoundEventAst;\r\n})();\r\nexports.BoundEventAst = BoundEventAst;\r\n/**\r\n * A variable declaration on an element (e.g. `#var=\"expression\"`).\r\n */\r\nvar VariableAst = (function () {\r\n function VariableAst(name, value, sourceSpan) {\r\n this.name = name;\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n VariableAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitVariable(this, context);\r\n };\r\n return VariableAst;\r\n})();\r\nexports.VariableAst = VariableAst;\r\n/**\r\n * An element declaration in a template.\r\n */\r\nvar ElementAst = (function () {\r\n function ElementAst(name, attrs, inputs, outputs, exportAsVars, directives, children, ngContentIndex, sourceSpan) {\r\n this.name = name;\r\n this.attrs = attrs;\r\n this.inputs = inputs;\r\n this.outputs = outputs;\r\n this.exportAsVars = exportAsVars;\r\n this.directives = directives;\r\n this.children = children;\r\n this.ngContentIndex = ngContentIndex;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n ElementAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitElement(this, context);\r\n };\r\n /**\r\n * Whether the element has any active bindings (inputs, outputs, vars, or directives).\r\n */\r\n ElementAst.prototype.isBound = function () {\r\n return (this.inputs.length > 0 || this.outputs.length > 0 || this.exportAsVars.length > 0 ||\r\n this.directives.length > 0);\r\n };\r\n /**\r\n * Get the component associated with this element, if any.\r\n */\r\n ElementAst.prototype.getComponent = function () {\r\n return this.directives.length > 0 && this.directives[0].directive.isComponent ?\r\n this.directives[0].directive :\r\n null;\r\n };\r\n return ElementAst;\r\n})();\r\nexports.ElementAst = ElementAst;\r\n/**\r\n * A `<template>` element included in an Angular template.\r\n */\r\nvar EmbeddedTemplateAst = (function () {\r\n function EmbeddedTemplateAst(attrs, outputs, vars, directives, children, ngContentIndex, sourceSpan) {\r\n this.attrs = attrs;\r\n this.outputs = outputs;\r\n this.vars = vars;\r\n this.directives = directives;\r\n this.children = children;\r\n this.ngContentIndex = ngContentIndex;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n EmbeddedTemplateAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitEmbeddedTemplate(this, context);\r\n };\r\n return EmbeddedTemplateAst;\r\n})();\r\nexports.EmbeddedTemplateAst = EmbeddedTemplateAst;\r\n/**\r\n * A directive property with a bound value (e.g. `*ngIf=\"condition\").\r\n */\r\nvar BoundDirectivePropertyAst = (function () {\r\n function BoundDirectivePropertyAst(directiveName, templateName, value, sourceSpan) {\r\n this.directiveName = directiveName;\r\n this.templateName = templateName;\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n BoundDirectivePropertyAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitDirectiveProperty(this, context);\r\n };\r\n return BoundDirectivePropertyAst;\r\n})();\r\nexports.BoundDirectivePropertyAst = BoundDirectivePropertyAst;\r\n/**\r\n * A directive declared on an element.\r\n */\r\nvar DirectiveAst = (function () {\r\n function DirectiveAst(directive, inputs, hostProperties, hostEvents, exportAsVars, sourceSpan) {\r\n this.directive = directive;\r\n this.inputs = inputs;\r\n this.hostProperties = hostProperties;\r\n this.hostEvents = hostEvents;\r\n this.exportAsVars = exportAsVars;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n DirectiveAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitDirective(this, context);\r\n };\r\n return DirectiveAst;\r\n})();\r\nexports.DirectiveAst = DirectiveAst;\r\n/**\r\n * Position where content is to be projected (instance of `<ng-content>` in a template).\r\n */\r\nvar NgContentAst = (function () {\r\n function NgContentAst(index, ngContentIndex, sourceSpan) {\r\n this.index = index;\r\n this.ngContentIndex = ngContentIndex;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n NgContentAst.prototype.visit = function (visitor, context) {\r\n return visitor.visitNgContent(this, context);\r\n };\r\n return NgContentAst;\r\n})();\r\nexports.NgContentAst = NgContentAst;\r\n/**\r\n * Enumeration of types of property bindings.\r\n */\r\n(function (PropertyBindingType) {\r\n /**\r\n * A normal binding to a property (e.g. `[property]=\"expression\"`).\r\n */\r\n PropertyBindingType[PropertyBindingType[\"Property\"] = 0] = \"Property\";\r\n /**\r\n * A binding to an element attribute (e.g. `[attr.name]=\"expression\"`).\r\n */\r\n PropertyBindingType[PropertyBindingType[\"Attribute\"] = 1] = \"Attribute\";\r\n /**\r\n * A binding to a CSS class (e.g. `[class.name]=\"condition\"`).\r\n */\r\n PropertyBindingType[PropertyBindingType[\"Class\"] = 2] = \"Class\";\r\n /**\r\n * A binding to a style rule (e.g. `[style.rule]=\"expression\"`).\r\n */\r\n PropertyBindingType[PropertyBindingType[\"Style\"] = 3] = \"Style\";\r\n})(exports.PropertyBindingType || (exports.PropertyBindingType = {}));\r\nvar PropertyBindingType = exports.PropertyBindingType;\r\n/**\r\n * Visit every node in a list of {@link TemplateAst}s with the given {@link TemplateAstVisitor}.\r\n */\r\nfunction templateVisitAll(visitor, asts, context) {\r\n if (context === void 0) { context = null; }\r\n var result = [];\r\n asts.forEach(function (ast) {\r\n var astResult = ast.visit(visitor, context);\r\n if (lang_1.isPresent(astResult)) {\r\n result.push(astResult);\r\n }\r\n });\r\n return result;\r\n}\r\nexports.templateVisitAll = templateVisitAll;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3RlbXBsYXRlX2FzdC50cyJdLCJuYW1lcyI6WyJUZXh0QXN0IiwiVGV4dEFzdC5jb25zdHJ1Y3RvciIsIlRleHRBc3QudmlzaXQiLCJCb3VuZFRleHRBc3QiLCJCb3VuZFRleHRBc3QuY29uc3RydWN0b3IiLCJCb3VuZFRleHRBc3QudmlzaXQiLCJBdHRyQXN0IiwiQXR0ckFzdC5jb25zdHJ1Y3RvciIsIkF0dHJBc3QudmlzaXQiLCJCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCIsIkJvdW5kRWxlbWVudFByb3BlcnR5QXN0LmNvbnN0cnVjdG9yIiwiQm91bmRFbGVtZW50UHJvcGVydHlBc3QudmlzaXQiLCJCb3VuZEV2ZW50QXN0IiwiQm91bmRFdmVudEFzdC5jb25zdHJ1Y3RvciIsIkJvdW5kRXZlbnRBc3QudmlzaXQiLCJCb3VuZEV2ZW50QXN0LmZ1bGxOYW1lIiwiVmFyaWFibGVBc3QiLCJWYXJpYWJsZUFzdC5jb25zdHJ1Y3RvciIsIlZhcmlhYmxlQXN0LnZpc2l0IiwiRWxlbWVudEFzdCIsIkVsZW1lbnRBc3QuY29uc3RydWN0b3IiLCJFbGVtZW50QXN0LnZpc2l0IiwiRWxlbWVudEFzdC5pc0JvdW5kIiwiRWxlbWVudEFzdC5nZXRDb21wb25lbnQiLCJFbWJlZGRlZFRlbXBsYXRlQXN0IiwiRW1iZWRkZWRUZW1wbGF0ZUFzdC5jb25zdHJ1Y3RvciIsIkVtYmVkZGVkVGVtcGxhdGVBc3QudmlzaXQiLCJCb3VuZERpcmVjdGl2ZVByb3BlcnR5QXN0IiwiQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdC5jb25zdHJ1Y3RvciIsIkJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3QudmlzaXQiLCJEaXJlY3RpdmVBc3QiLCJEaXJlY3RpdmVBc3QuY29uc3RydWN0b3IiLCJEaXJlY3RpdmVBc3QudmlzaXQiLCJOZ0NvbnRlbnRBc3QiLCJOZ0NvbnRlbnRBc3QuY29uc3RydWN0b3IiLCJOZ0NvbnRlbnRBc3QudmlzaXQiLCJQcm9wZXJ0eUJpbmRpbmdUeXBlIiwidGVtcGxhdGVWaXNpdEFsbCJdLCJtYXBwaW5ncyI6IkFBQ0EscUJBQXdCLDBCQUEwQixDQUFDLENBQUE7QUFtQm5EOztHQUVHO0FBQ0g7SUFDRUEsaUJBQW1CQSxLQUFhQSxFQUFTQSxjQUFzQkEsRUFDNUNBLFVBQTJCQTtRQUQzQkMsVUFBS0EsR0FBTEEsS0FBS0EsQ0FBUUE7UUFBU0EsbUJBQWNBLEdBQWRBLGNBQWNBLENBQVFBO1FBQzVDQSxlQUFVQSxHQUFWQSxVQUFVQSxDQUFpQkE7SUFBR0EsQ0FBQ0E7SUFDbERELHVCQUFLQSxHQUFMQSxVQUFNQSxPQUEyQkEsRUFBRUEsT0FBWUEsSUFBU0UsTUFBTUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsSUFBSUEsRUFBRUEsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDcEdGLGNBQUNBO0FBQURBLENBQUNBLEFBSkQsSUFJQztBQUpZLGVBQU8sVUFJbkIsQ0FBQTtBQUVEOztHQUVHO0FBQ0g7SUFDRUcsc0JBQW1CQSxLQUFVQSxFQUFTQSxjQUFzQkEsRUFDekNBLFVBQTJCQTtRQUQzQkMsVUFBS0EsR0FBTEEsS0FBS0EsQ0FBS0E7UUFBU0EsbUJBQWNBLEdBQWRBLGNBQWNBLENBQVFBO1FBQ3pDQSxlQUFVQSxHQUFWQSxVQUFVQSxDQUFpQkE7SUFBR0EsQ0FBQ0E7SUFDbERELDRCQUFLQSxHQUFMQSxVQUFNQSxPQUEyQkEsRUFBRUEsT0FBWUE7UUFDN0NFLE1BQU1BLENBQUNBLE9BQU9BLENBQUNBLGNBQWNBLENBQUNBLElBQUlBLEVBQUVBLE9BQU9BLENBQUNBLENBQUNBO0lBQy9DQSxDQUFDQTtJQUNIRixtQkFBQ0E7QUFBREEsQ0FBQ0EsQUFORCxJQU1DO0FBTlksb0JBQVksZUFNeEIsQ0FBQTtBQUVEOztHQUVHO0FBQ0g7SUFDRUcsaUJBQW1CQSxJQUFZQSxFQUFTQSxLQUFhQSxFQUFTQSxVQUEyQkE7UUFBdEVD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QSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QVNUfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rpb24nO1xuaW1wb3J0IHtpc1ByZXNlbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0NvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YX0gZnJvbSAnLi9kaXJlY3RpdmVfbWV0YWRhdGEnO1xuaW1wb3J0IHtQYXJzZVNvdXJjZVNwYW59IGZyb20gJy4vcGFyc2VfdXRpbCc7XG5cbi8qKlxuICogQW4gQWJzdHJhY3QgU3ludGF4IFRyZWUgbm9kZSByZXByZXNlbnRpbmcgcGFydCBvZiBhIHBhcnNlZCBBbmd1bGFyIHRlbXBsYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlQXN0IHtcbiAgLyoqXG4gICAqIFRoZSBzb3VyY2Ugc3BhbiBmcm9tIHdoaWNoIHRoaXMgbm9kZSB3YXMgcGFyc2VkLlxuICAgKi9cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xuXG4gIC8qKlxuICAgKiBWaXNpdCB0aGlzIG5vZGUgYW5kIHBvc3NpYmx5IHRyYW5zZm9ybSBpdC5cbiAgICovXG4gIHZpc2l0KHZpc2l0b3I6IFRlbXBsYXRlQXN0VmlzaXRvciwgY29udGV4dDogYW55KTogYW55O1xufVxuXG4vKipcbiAqIEEgc2VnbWVudCBvZiB0ZXh0IHdpdGhpbiB0aGUgdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXh0QXN0IGltcGxlbWVudHMgVGVtcGxhdGVBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWU6IHN0cmluZywgcHVibGljIG5nQ29udGVudEluZGV4OiBudW1iZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG4gIHZpc2l0KHZpc2l0b3I6IFRlbXBsYXRlQXN0VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIHZpc2l0b3IudmlzaXRUZXh0KHRoaXMsIGNvbnRleHQpOyB9XG59XG5cbi8qKlxuICogQSBib3VuZCBleHByZXNzaW9uIHdpdGhpbiB0aGUgdGV4dCBvZiBhIHRlbXBsYXRlLlxuICovXG5leHBvcnQgY2xhc3MgQm91bmRUZXh0QXN0IGltcGxlbWVudHMgVGVtcGxhdGVBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWU6IEFTVCwgcHVibGljIG5nQ29udGVudEluZGV4OiBudW1iZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG4gIHZpc2l0KHZpc2l0b3I6IFRlbXBsYXRlQXN0VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdEJvdW5kVGV4dCh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcGxhaW4gYXR0cmlidXRlIG9uIGFuIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdHRyQXN0IGltcGxlbWVudHMgVGVtcGxhdGVBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgdmFsdWU6IHN0cmluZywgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbiAgdmlzaXQodmlzaXRvcjogVGVtcGxhdGVBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gdmlzaXRvci52aXNpdEF0dHIodGhpcywgY29udGV4dCk7IH1cbn1cblxuLyoqXG4gKiBBIGJpbmRpbmcgZm9yIGFuIGVsZW1lbnQgcHJvcGVydHkgKGUuZy4gYFtwcm9wZXJ0eV09XCJleHByZXNzaW9uXCJgKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEJvdW5kRWxlbWVudFByb3BlcnR5QXN0IGltcGxlbWVudHMgVGVtcGxhdGVBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgdHlwZTogUHJvcGVydHlCaW5kaW5nVHlwZSwgcHVibGljIHZhbHVlOiBBU1QsXG4gICAgICAgICAgICAgIHB1YmxpYyB1bml0OiBzdHJpbmcsIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG4gIHZpc2l0KHZpc2l0b3I6IFRlbXBsYXRlQXN0VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdEVsZW1lbnRQcm9wZXJ0eSh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgYmluZGluZyBmb3IgYW4gZWxlbWVudCBldmVudCAoZS5nLiBgKGV2ZW50KT1cImhhbmRsZXIoKVwiYCkuXG4gKi9cbmV4cG9ydCBjbGFzcyBCb3VuZEV2ZW50QXN0IGltcGxlbWVudHMgVGVtcGxhdGVBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgdGFyZ2V0OiBzdHJpbmcsIHB1YmxpYyBoYW5kbGVyOiBBU1QsXG4gICAgICAgICAgICAgIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG4gIHZpc2l0KHZpc2l0b3I6IFRlbXBsYXRlQXN0VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdEV2ZW50KHRoaXMsIGNvbnRleHQpO1xuICB9XG4gIGdldCBmdWxsTmFtZSgpIHtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIGAke3RoaXMudGFyZ2V0fToke3RoaXMubmFtZX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5uYW1lO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEEgdmFyaWFibGUgZGVjbGFyYXRpb24gb24gYW4gZWxlbWVudCAoZS5nLiBgI3Zhcj1cImV4cHJlc3Npb25cImApLlxuICovXG5leHBvcnQgY2xhc3MgVmFyaWFibGVBc3QgaW1wbGVtZW50cyBUZW1wbGF0ZUFzdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyB2YWx1ZTogc3RyaW5nLCBwdWJsaWMgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7fVxuICB2aXNpdCh2aXNpdG9yOiBUZW1wbGF0ZUFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWYXJpYWJsZSh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGVsZW1lbnQgZGVjbGFyYXRpb24gaW4gYSB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEVsZW1lbnRBc3QgaW1wbGVtZW50cyBUZW1wbGF0ZUFzdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBhdHRyczogQXR0ckFzdFtdLFxuICAgICAgICAgICAgICBwdWJsaWMgaW5wdXRzOiBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdFtdLCBwdWJsaWMgb3V0cHV0czogQm91bmRFdmVudEFzdFtdLFxuICAgICAgICAgICAgICBwdWJsaWMgZXhwb3J0QXNWYXJzOiBWYXJpYWJsZUFzdFtdLCBwdWJsaWMgZGlyZWN0aXZlczogRGlyZWN0aXZlQXN0W10sXG4gICAgICAgICAgICAgIHB1YmxpYyBjaGlsZHJlbjogVGVtcGxhdGVBc3RbXSwgcHVibGljIG5nQ29udGVudEluZGV4OiBudW1iZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG4gIHZpc2l0KHZpc2l0b3I6IFRlbXBsYXRlQXN0VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdEVsZW1lbnQodGhpcywgY29udGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZWxlbWVudCBoYXMgYW55IGFjdGl2ZSBiaW5kaW5ncyAoaW5wdXRzLCBvdXRwdXRzLCB2YXJzLCBvciBkaXJlY3RpdmVzKS5cbiAgICovXG4gIGlzQm91bmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmlucHV0cy5sZW5ndGggPiAwIHx8IHRoaXMub3V0cHV0cy5sZW5ndGggPiAwIHx8IHRoaXMuZXhwb3J0QXNWYXJzLmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcy5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGNvbXBvbmVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBlbGVtZW50LCBpZiBhbnkuXG4gICAqL1xuICBnZXRDb21wb25lbnQoKTogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhIHtcbiAgICByZXR1cm4gdGhpcy5kaXJlY3RpdmVzLmxlbmd0aCA+IDAgJiYgdGhpcy5kaXJlY3RpdmVzWzBdLmRpcmVjdGl2ZS5pc0NvbXBvbmVudCA/XG4gICAgICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZXNbMF0uZGlyZWN0aXZlIDpcbiAgICAgICAgICAgICAgIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGA8dGVtcGxhdGU+YCBlbGVtZW50IGluY2x1ZGVkIGluIGFuIEFuZ3VsYXIgdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBFbWJlZGRlZFRlbXBsYXRlQXN0IGltcGxlbWVudHMgVGVtcGxhdGVBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgYXR0cnM6IEF0dHJBc3RbXSwgcHVibGljIG91dHB1dHM6IEJvdW5kRXZlbnRBc3RbXSwgcHVibGljIHZhcnM6IFZhcmlhYmxlQXN0W10sXG4gICAgICAgICAgICAgIHB1YmxpYyBkaXJlY3RpdmVzOiBEaXJlY3RpdmVBc3RbXSwgcHVibGljIGNoaWxkcmVuOiBUZW1wbGF0ZUFzdFtdLFxuICAgICAgICAgICAgICBwdWJsaWMgbmdDb250ZW50SW5kZXg6IG51bWJlciwgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbiAgdmlzaXQodmlzaXRvcjogVGVtcGxhdGVBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RW1iZWRkZWRUZW1wbGF0ZSh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHByb3BlcnR5IHdpdGggYSBib3VuZCB2YWx1ZSAoZS5nLiBgKm5nSWY9XCJjb25kaXRpb25cIikuXG4gKi9cbmV4cG9ydCBjbGFzcyBCb3VuZERpcmVjdGl2ZVByb3BlcnR5QXN0IGltcGxlbWVudHMgVGVtcGxhdGVBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlyZWN0aXZlTmFtZTogc3RyaW5nLCBwdWJsaWMgdGVtcGxhdGVOYW1lOiBzdHJpbmcsIHB1YmxpYyB2YWx1ZTogQVNULFxuICAgICAgICAgICAgICBwdWJsaWMgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7fVxuICB2aXNpdCh2aXNpdG9yOiBUZW1wbGF0ZUFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXREaXJlY3RpdmVQcm9wZXJ0eSh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgZGlyZWN0aXZlIGRlY2xhcmVkIG9uIGFuIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaXJlY3RpdmVBc3QgaW1wbGVtZW50cyBUZW1wbGF0ZUFzdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaXJlY3RpdmU6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgICAgICAgICAgICAgcHVibGljIGlucHV0czogQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdFtdLFxuICAgICAgICAgICAgICBwdWJsaWMgaG9zdFByb3BlcnRpZXM6IEJvdW5kRWxlbWVudFByb3BlcnR5QXN0W10sIHB1YmxpYyBob3N0RXZlbnRzOiBCb3VuZEV2ZW50QXN0W10sXG4gICAgICAgICAgICAgIHB1YmxpYyBleHBvcnRBc1ZhcnM6IFZhcmlhYmxlQXN0W10sIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG4gIHZpc2l0KHZpc2l0b3I6IFRlbXBsYXRlQXN0VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdERpcmVjdGl2ZSh0aGlzLCBjb250ZXh0KTtcbiAgfVxufVxuXG4vKipcbiAqIFBvc2l0aW9uIHdoZXJlIGNvbnRlbnQgaXMgdG8gYmUgcHJvamVjdGVkIChpbnN0YW5jZSBvZiBgPG5nLWNvbnRlbnQ+YCBpbiBhIHRlbXBsYXRlKS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5nQ29udGVudEFzdCBpbXBsZW1lbnRzIFRlbXBsYXRlQXN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIGluZGV4OiBudW1iZXIsIHB1YmxpYyBuZ0NvbnRlbnRJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICBwdWJsaWMgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7fVxuICB2aXNpdCh2aXNpdG9yOiBUZW1wbGF0ZUFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXROZ0NvbnRlbnQodGhpcywgY29udGV4dCk7XG4gIH1cbn1cblxuLyoqXG4gKiBFbnVtZXJhdGlvbiBvZiB0eXBlcyBvZiBwcm9wZXJ0eSBiaW5kaW5ncy5cbiAqL1xuZXhwb3J0IGVudW0gUHJvcGVydHlCaW5kaW5nVHlwZSB7XG5cbiAgLyoqXG4gICAqIEEgbm9ybWFsIGJpbmRpbmcgdG8gYSBwcm9wZXJ0eSAoZS5nLiBgW3Byb3BlcnR5XT1cImV4cHJlc3Npb25cImApLlxuICAgKi9cbiAgUHJvcGVydHksXG5cbiAgLyoqXG4gICAqIEEgYmluZGluZyB0byBhbiBlbGVtZW50IGF0dHJpYnV0ZSAoZS5nLiBgW2F0dHIubmFtZV09XCJleHByZXNzaW9uXCJgKS5cbiAgICovXG4gIEF0dHJpYnV0ZSxcblxuICAvKipcbiAgICogQSBiaW5kaW5nIHRvIGEgQ1NTIGNsYXNzIChlLmcuIGBbY2xhc3MubmFtZV09XCJjb25kaXRpb25cImApLlxuICAgKi9cbiAgQ2xhc3MsXG5cbiAgLyoqXG4gICAqIEEgYmluZGluZyB0byBhIHN0eWxlIHJ1bGUgKGUuZy4gYFtzdHlsZS5ydWxlXT1cImV4cHJlc3Npb25cImApLlxuICAgKi9cbiAgU3R5bGVcbn1cblxuLyoqXG4gKiBBIHZpc2l0b3IgZm9yIHtAbGluayBUZW1wbGF0ZUFzdH0gdHJlZXMgdGhhdCB3aWxsIHByb2Nlc3MgZWFjaCBub2RlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlQXN0VmlzaXRvciB7XG4gIHZpc2l0TmdDb250ZW50KGFzdDogTmdDb250ZW50QXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0RW1iZWRkZWRUZW1wbGF0ZShhc3Q6IEVtYmVkZGVkVGVtcGxhdGVBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRFbGVtZW50KGFzdDogRWxlbWVudEFzdCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdFZhcmlhYmxlKGFzdDogVmFyaWFibGVBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRFdmVudChhc3Q6IEJvdW5kRXZlbnRBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXRFbGVtZW50UHJvcGVydHkoYXN0OiBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCwgY29udGV4dDogYW55KTogYW55O1xuICB2aXNpdEF0dHIoYXN0OiBBdHRyQXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0Qm91bmRUZXh0KGFzdDogQm91bmRUZXh0QXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0VGV4dChhc3Q6IFRleHRBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXREaXJlY3RpdmUoYXN0OiBEaXJlY3RpdmVBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbiAgdmlzaXREaXJlY3RpdmVQcm9wZXJ0eShhc3Q6IEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3QsIGNvbnRleHQ6IGFueSk6IGFueTtcbn1cblxuLyoqXG4gKiBWaXNpdCBldmVyeSBub2RlIGluIGEgbGlzdCBvZiB7QGxpbmsgVGVtcGxhdGVBc3R9cyB3aXRoIHRoZSBnaXZlbiB7QGxpbmsgVGVtcGxhdGVBc3RWaXNpdG9yfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlbXBsYXRlVmlzaXRBbGwodmlzaXRvcjogVGVtcGxhdGVBc3RWaXNpdG9yLCBhc3RzOiBUZW1wbGF0ZUFzdFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogYW55ID0gbnVsbCk6IGFueVtdIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBhc3RzLmZvckVhY2goYXN0ID0+IHtcbiAgICB2YXIgYXN0UmVzdWx0ID0gYXN0LnZpc2l0KHZpc2l0b3IsIGNvbnRleHQpO1xuICAgIGlmIChpc1ByZXNlbnQoYXN0UmVzdWx0KSkge1xuICAgICAgcmVzdWx0LnB1c2goYXN0UmVzdWx0KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\nvar lang_2 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar html_parser_1 = require('./html_parser');\r\nvar html_tags_1 = require('./html_tags');\r\nvar parse_util_1 = require('./parse_util');\r\nvar ast_1 = require('angular2/src/core/change_detection/parser/ast');\r\nvar template_ast_1 = require('./template_ast');\r\nvar selector_1 = require('angular2/src/compiler/selector');\r\nvar element_schema_registry_1 = require('angular2/src/compiler/schema/element_schema_registry');\r\nvar template_preparser_1 = require('./template_preparser');\r\nvar style_url_resolver_1 = require('./style_url_resolver');\r\nvar html_ast_1 = require('./html_ast');\r\nvar util_1 = require('./util');\r\n// Group 1 = \"bind-\"\r\n// Group 2 = \"var-\" or \"#\"\r\n// Group 3 = \"on-\"\r\n// Group 4 = \"bindon-\"\r\n// Group 5 = the identifier after \"bind-\", \"var-/#\", or \"on-\"\r\n// Group 6 = identifier inside [()]\r\n// Group 7 = identifier inside []\r\n// Group 8 = identifier inside ()\r\nvar BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(var-|#)|(on-)|(bindon-))(.+))|\\[\\(([^\\)]+)\\)\\]|\\[([^\\]]+)\\]|\\(([^\\)]+)\\))$/g;\r\nvar TEMPLATE_ELEMENT = 'template';\r\nvar TEMPLATE_ATTR = 'template';\r\nvar TEMPLATE_ATTR_PREFIX = '*';\r\nvar CLASS_ATTR = 'class';\r\nvar PROPERTY_PARTS_SEPARATOR = '.';\r\nvar ATTRIBUTE_PREFIX = 'attr';\r\nvar CLASS_PREFIX = 'class';\r\nvar STYLE_PREFIX = 'style';\r\nvar TEXT_CSS_SELECTOR = selector_1.CssSelector.parse('*')[0];\r\n/**\r\n * Provides an array of {@link TemplateAstVisitor}s which will be used to transform\r\n * parsed templates before compilation is invoked, allowing custom expression syntax\r\n * and other advanced transformations.\r\n *\r\n * This is currently an internal-only feature and not meant for general use.\r\n */\r\nexports.TEMPLATE_TRANSFORMS = lang_2.CONST_EXPR(new core_1.OpaqueToken('TemplateTransforms'));\r\nvar TemplateParseError = (function (_super) {\r\n __extends(TemplateParseError, _super);\r\n function TemplateParseError(message, span) {\r\n _super.call(this, span, message);\r\n }\r\n return TemplateParseError;\r\n})(parse_util_1.ParseError);\r\nexports.TemplateParseError = TemplateParseError;\r\nvar TemplateParser = (function () {\r\n function TemplateParser(_exprParser, _schemaRegistry, _htmlParser, transforms) {\r\n this._exprParser = _exprParser;\r\n this._schemaRegistry = _schemaRegistry;\r\n this._htmlParser = _htmlParser;\r\n this.transforms = transforms;\r\n }\r\n TemplateParser.prototype.parse = function (template, directives, pipes, templateUrl) {\r\n var parseVisitor = new TemplateParseVisitor(directives, pipes, this._exprParser, this._schemaRegistry);\r\n var htmlAstWithErrors = this._htmlParser.parse(template, templateUrl);\r\n var result = html_ast_1.htmlVisitAll(parseVisitor, htmlAstWithErrors.rootNodes, EMPTY_COMPONENT);\r\n var errors = htmlAstWithErrors.errors.concat(parseVisitor.errors);\r\n if (errors.length > 0) {\r\n var errorString = errors.join('\\n');\r\n throw new exceptions_1.BaseException(\"Template parse errors:\\n\" + errorString);\r\n }\r\n if (lang_1.isPresent(this.transforms)) {\r\n this.transforms.forEach(function (transform) { result = template_ast_1.templateVisitAll(transform, result); });\r\n }\r\n return result;\r\n };\r\n TemplateParser = __decorate([\r\n core_1.Injectable(),\r\n __param(3, core_1.Optional()),\r\n __param(3, core_1.Inject(exports.TEMPLATE_TRANSFORMS)), \r\n __metadata('design:paramtypes', [change_detection_1.Parser, element_schema_registry_1.ElementSchemaRegistry, html_parser_1.HtmlParser, Array])\r\n ], TemplateParser);\r\n return TemplateParser;\r\n})();\r\nexports.TemplateParser = TemplateParser;\r\nvar TemplateParseVisitor = (function () {\r\n function TemplateParseVisitor(directives, pipes, _exprParser, _schemaRegistry) {\r\n var _this = this;\r\n this._exprParser = _exprParser;\r\n this._schemaRegistry = _schemaRegistry;\r\n this.errors = [];\r\n this.directivesIndex = new Map();\r\n this.ngContentCount = 0;\r\n this.selectorMatcher = new selector_1.SelectorMatcher();\r\n collection_1.ListWrapper.forEachWithIndex(directives, function (directive, index) {\r\n var selector = selector_1.CssSelector.parse(directive.selector);\r\n _this.selectorMatcher.addSelectables(selector, directive);\r\n _this.directivesIndex.set(directive, index);\r\n });\r\n this.pipesByName = new Map();\r\n pipes.forEach(function (pipe) { return _this.pipesByName.set(pipe.name, pipe); });\r\n }\r\n TemplateParseVisitor.prototype._reportError = function (message, sourceSpan) {\r\n this.errors.push(new TemplateParseError(message, sourceSpan));\r\n };\r\n TemplateParseVisitor.prototype._parseInterpolation = function (value, sourceSpan) {\r\n var sourceInfo = sourceSpan.start.toString();\r\n try {\r\n var ast = this._exprParser.parseInterpolation(value, sourceInfo);\r\n this._checkPipes(ast, sourceSpan);\r\n return ast;\r\n }\r\n catch (e) {\r\n this._reportError(\"\" + e, sourceSpan);\r\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\r\n }\r\n };\r\n TemplateParseVisitor.prototype._parseAction = function (value, sourceSpan) {\r\n var sourceInfo = sourceSpan.start.toString();\r\n try {\r\n var ast = this._exprParser.parseAction(value, sourceInfo);\r\n this._checkPipes(ast, sourceSpan);\r\n return ast;\r\n }\r\n catch (e) {\r\n this._reportError(\"\" + e, sourceSpan);\r\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\r\n }\r\n };\r\n TemplateParseVisitor.prototype._parseBinding = function (value, sourceSpan) {\r\n var sourceInfo = sourceSpan.start.toString();\r\n try {\r\n var ast = this._exprParser.parseBinding(value, sourceInfo);\r\n this._checkPipes(ast, sourceSpan);\r\n return ast;\r\n }\r\n catch (e) {\r\n this._reportError(\"\" + e, sourceSpan);\r\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\r\n }\r\n };\r\n TemplateParseVisitor.prototype._parseTemplateBindings = function (value, sourceSpan) {\r\n var _this = this;\r\n var sourceInfo = sourceSpan.start.toString();\r\n try {\r\n var bindings = this._exprParser.parseTemplateBindings(value, sourceInfo);\r\n bindings.forEach(function (binding) {\r\n if (lang_1.isPresent(binding.expression)) {\r\n _this._checkPipes(binding.expression, sourceSpan);\r\n }\r\n });\r\n return bindings;\r\n }\r\n catch (e) {\r\n this._reportError(\"\" + e, sourceSpan);\r\n return [];\r\n }\r\n };\r\n TemplateParseVisitor.prototype._checkPipes = function (ast, sourceSpan) {\r\n var _this = this;\r\n if (lang_1.isPresent(ast)) {\r\n var collector = new PipeCollector();\r\n ast.visit(collector);\r\n collector.pipes.forEach(function (pipeName) {\r\n if (!_this.pipesByName.has(pipeName)) {\r\n _this._reportError(\"The pipe '\" + pipeName + \"' could not be found\", sourceSpan);\r\n }\r\n });\r\n }\r\n };\r\n TemplateParseVisitor.prototype.visitText = function (ast, component) {\r\n var ngContentIndex = component.findNgContentIndex(TEXT_CSS_SELECTOR);\r\n var expr = this._parseInterpolation(ast.value, ast.sourceSpan);\r\n if (lang_1.isPresent(expr)) {\r\n return new template_ast_1.BoundTextAst(expr, ngContentIndex, ast.sourceSpan);\r\n }\r\n else {\r\n return new template_ast_1.TextAst(ast.value, ngContentIndex, ast.sourceSpan);\r\n }\r\n };\r\n TemplateParseVisitor.prototype.visitAttr = function (ast, contex) {\r\n return new template_ast_1.AttrAst(ast.name, ast.value, ast.sourceSpan);\r\n };\r\n TemplateParseVisitor.prototype.visitComment = function (ast, context) { return null; };\r\n TemplateParseVisitor.prototype.visitElement = function (element, component) {\r\n var _this = this;\r\n var nodeName = element.name;\r\n var preparsedElement = template_preparser_1.preparseElement(element);\r\n if (preparsedElement.type === template_preparser_1.PreparsedElementType.SCRIPT ||\r\n preparsedElement.type === template_preparser_1.PreparsedElementType.STYLE) {\r\n // Skipping <script> for security reasons\r\n // Skipping <style> as we already processed them\r\n // in the StyleCompiler\r\n return null;\r\n }\r\n if (preparsedElement.type === template_preparser_1.PreparsedElementType.STYLESHEET &&\r\n style_url_resolver_1.isStyleUrlResolvable(preparsedElement.hrefAttr)) {\r\n // Skipping stylesheets with either relative urls or package scheme as we already processed\r\n // them in the StyleCompiler\r\n return null;\r\n }\r\n var matchableAttrs = [];\r\n var elementOrDirectiveProps = [];\r\n var vars = [];\r\n var events = [];\r\n var templateElementOrDirectiveProps = [];\r\n var templateVars = [];\r\n var templateMatchableAttrs = [];\r\n var hasInlineTemplates = false;\r\n var attrs = [];\r\n element.attrs.forEach(function (attr) {\r\n var hasBinding = _this._parseAttr(attr, matchableAttrs, elementOrDirectiveProps, events, vars);\r\n var hasTemplateBinding = _this._parseInlineTemplateBinding(attr, templateMatchableAttrs, templateElementOrDirectiveProps, templateVars);\r\n if (!hasBinding && !hasTemplateBinding) {\r\n // don't include the bindings as attributes as well in the AST\r\n attrs.push(_this.visitAttr(attr, null));\r\n matchableAttrs.push([attr.name, attr.value]);\r\n }\r\n if (hasTemplateBinding) {\r\n hasInlineTemplates = true;\r\n }\r\n });\r\n var lcElName = html_tags_1.splitNsName(nodeName.toLowerCase())[1];\r\n var isTemplateElement = lcElName == TEMPLATE_ELEMENT;\r\n var elementCssSelector = createElementCssSelector(nodeName, matchableAttrs);\r\n var directives = this._createDirectiveAsts(element.name, this._parseDirectives(this.selectorMatcher, elementCssSelector), elementOrDirectiveProps, isTemplateElement ? [] : vars, element.sourceSpan);\r\n var elementProps = this._createElementPropertyAsts(element.name, elementOrDirectiveProps, directives);\r\n var children = html_ast_1.htmlVisitAll(preparsedElement.nonBindable ? NON_BINDABLE_VISITOR : this, element.children, Component.create(directives));\r\n var elementNgContentIndex = hasInlineTemplates ? null : component.findNgContentIndex(elementCssSelector);\r\n var parsedElement;\r\n if (preparsedElement.type === template_preparser_1.PreparsedElementType.NG_CONTENT) {\r\n if (lang_1.isPresent(element.children) && element.children.length > 0) {\r\n this._reportError(\"<ng-content> element cannot have content. <ng-content> must be immediately followed by </ng-content>\", element.sourceSpan);\r\n }\r\n parsedElement =\r\n new template_ast_1.NgContentAst(this.ngContentCount++, elementNgContentIndex, element.sourceSpan);\r\n }\r\n else if (isTemplateElement) {\r\n this._assertAllEventsPublishedByDirectives(directives, events);\r\n this._assertNoComponentsNorElementBindingsOnTemplate(directives, elementProps, element.sourceSpan);\r\n parsedElement = new template_ast_1.EmbeddedTemplateAst(attrs, events, vars, directives, children, elementNgContentIndex, element.sourceSpan);\r\n }\r\n else {\r\n this._assertOnlyOneComponent(directives, element.sourceSpan);\r\n var elementExportAsVars = vars.filter(function (varAst) { return varAst.value.length === 0; });\r\n parsedElement =\r\n new template_ast_1.ElementAst(nodeName, attrs, elementProps, events, elementExportAsVars, directives, children, elementNgContentIndex, element.sourceSpan);\r\n }\r\n if (hasInlineTemplates) {\r\n var templateCssSelector = createElementCssSelector(TEMPLATE_ELEMENT, templateMatchableAttrs);\r\n var templateDirectives = this._createDirectiveAsts(element.name, this._parseDirectives(this.selectorMatcher, templateCssSelector), templateElementOrDirectiveProps, [], element.sourceSpan);\r\n var templateElementProps = this._createElementPropertyAsts(element.name, templateElementOrDirectiveProps, templateDirectives);\r\n this._assertNoComponentsNorElementBindingsOnTemplate(templateDirectives, templateElementProps, element.sourceSpan);\r\n parsedElement = new template_ast_1.EmbeddedTemplateAst([], [], templateVars, templateDirectives, [parsedElement], component.findNgContentIndex(templateCssSelector), element.sourceSpan);\r\n }\r\n return parsedElement;\r\n };\r\n TemplateParseVisitor.prototype._parseInlineTemplateBinding = function (attr, targetMatchableAttrs, targetProps, targetVars) {\r\n var templateBindingsSource = null;\r\n if (attr.name == TEMPLATE_ATTR) {\r\n templateBindingsSource = attr.value;\r\n }\r\n else if (attr.name.startsWith(TEMPLATE_ATTR_PREFIX)) {\r\n var key = attr.name.substring(TEMPLATE_ATTR_PREFIX.length); // remove the star\r\n templateBindingsSource = (attr.value.length == 0) ? key : key + ' ' + attr.value;\r\n }\r\n if (lang_1.isPresent(templateBindingsSource)) {\r\n var bindings = this._parseTemplateBindings(templateBindingsSource, attr.sourceSpan);\r\n for (var i = 0; i < bindings.length; i++) {\r\n var binding = bindings[i];\r\n if (binding.keyIsVar) {\r\n targetVars.push(new template_ast_1.VariableAst(binding.key, binding.name, attr.sourceSpan));\r\n targetMatchableAttrs.push([binding.key, binding.name]);\r\n }\r\n else if (lang_1.isPresent(binding.expression)) {\r\n this._parsePropertyAst(binding.key, binding.expression, attr.sourceSpan, targetMatchableAttrs, targetProps);\r\n }\r\n else {\r\n targetMatchableAttrs.push([binding.key, '']);\r\n this._parseLiteralAttr(binding.key, null, attr.sourceSpan, targetProps);\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n };\r\n TemplateParseVisitor.prototype._parseAttr = function (attr, targetMatchableAttrs, targetProps, targetEvents, targetVars) {\r\n var attrName = this._normalizeAttributeName(attr.name);\r\n var attrValue = attr.value;\r\n var bindParts = lang_1.RegExpWrapper.firstMatch(BIND_NAME_REGEXP, attrName);\r\n var hasBinding = false;\r\n if (lang_1.isPresent(bindParts)) {\r\n hasBinding = true;\r\n if (lang_1.isPresent(bindParts[1])) {\r\n this._parseProperty(bindParts[5], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);\r\n }\r\n else if (lang_1.isPresent(bindParts[2])) {\r\n var identifier = bindParts[5];\r\n this._parseVariable(identifier, attrValue, attr.sourceSpan, targetVars);\r\n }\r\n else if (lang_1.isPresent(bindParts[3])) {\r\n this._parseEvent(bindParts[5], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);\r\n }\r\n else if (lang_1.isPresent(bindParts[4])) {\r\n this._parseProperty(bindParts[5], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);\r\n this._parseAssignmentEvent(bindParts[5], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);\r\n }\r\n else if (lang_1.isPresent(bindParts[6])) {\r\n this._parseProperty(bindParts[6], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);\r\n this._parseAssignmentEvent(bindParts[6], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);\r\n }\r\n else if (lang_1.isPresent(bindParts[7])) {\r\n this._parseProperty(bindParts[7], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);\r\n }\r\n else if (lang_1.isPresent(bindParts[8])) {\r\n this._parseEvent(bindParts[8], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);\r\n }\r\n }\r\n else {\r\n hasBinding = this._parsePropertyInterpolation(attrName, attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);\r\n }\r\n if (!hasBinding) {\r\n this._parseLiteralAttr(attrName, attrValue, attr.sourceSpan, targetProps);\r\n }\r\n return hasBinding;\r\n };\r\n TemplateParseVisitor.prototype._normalizeAttributeName = function (attrName) {\r\n return attrName.toLowerCase().startsWith('data-') ? attrName.substring(5) : attrName;\r\n };\r\n TemplateParseVisitor.prototype._parseVariable = function (identifier, value, sourceSpan, targetVars) {\r\n if (identifier.indexOf('-') > -1) {\r\n this._reportError(\"\\\"-\\\" is not allowed in variable names\", sourceSpan);\r\n }\r\n targetVars.push(new template_ast_1.VariableAst(identifier, value, sourceSpan));\r\n };\r\n TemplateParseVisitor.prototype._parseProperty = function (name, expression, sourceSpan, targetMatchableAttrs, targetProps) {\r\n this._parsePropertyAst(name, this._parseBinding(expression, sourceSpan), sourceSpan, targetMatchableAttrs, targetProps);\r\n };\r\n TemplateParseVisitor.prototype._parsePropertyInterpolation = function (name, value, sourceSpan, targetMatchableAttrs, targetProps) {\r\n var expr = this._parseInterpolation(value, sourceSpan);\r\n if (lang_1.isPresent(expr)) {\r\n this._parsePropertyAst(name, expr, sourceSpan, targetMatchableAttrs, targetProps);\r\n return true;\r\n }\r\n return false;\r\n };\r\n TemplateParseVisitor.prototype._parsePropertyAst = function (name, ast, sourceSpan, targetMatchableAttrs, targetProps) {\r\n targetMatchableAttrs.push([name, ast.source]);\r\n targetProps.push(new BoundElementOrDirectiveProperty(name, ast, false, sourceSpan));\r\n };\r\n TemplateParseVisitor.prototype._parseAssignmentEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\r\n this._parseEvent(name + \"Change\", expression + \"=$event\", sourceSpan, targetMatchableAttrs, targetEvents);\r\n };\r\n TemplateParseVisitor.prototype._parseEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\r\n // long format: 'target: eventName'\r\n var parts = util_1.splitAtColon(name, [null, name]);\r\n var target = parts[0];\r\n var eventName = parts[1];\r\n var ast = this._parseAction(expression, sourceSpan);\r\n targetMatchableAttrs.push([name, ast.source]);\r\n targetEvents.push(new template_ast_1.BoundEventAst(eventName, target, ast, sourceSpan));\r\n // Don't detect directives for event names for now,\r\n // so don't add the event name to the matchableAttrs\r\n };\r\n TemplateParseVisitor.prototype._parseLiteralAttr = function (name, value, sourceSpan, targetProps) {\r\n targetProps.push(new BoundElementOrDirectiveProperty(name, this._exprParser.wrapLiteralPrimitive(value, ''), true, sourceSpan));\r\n };\r\n TemplateParseVisitor.prototype._parseDirectives = function (selectorMatcher, elementCssSelector) {\r\n var _this = this;\r\n var directives = [];\r\n selectorMatcher.match(elementCssSelector, function (selector, directive) { directives.push(directive); });\r\n // Need to sort the directives so that we get consistent results throughout,\r\n // as selectorMatcher uses Maps inside.\r\n // Also need to make components the first directive in the array\r\n collection_1.ListWrapper.sort(directives, function (dir1, dir2) {\r\n var dir1Comp = dir1.isComponent;\r\n var dir2Comp = dir2.isComponent;\r\n if (dir1Comp && !dir2Comp) {\r\n return -1;\r\n }\r\n else if (!dir1Comp && dir2Comp) {\r\n return 1;\r\n }\r\n else {\r\n return _this.directivesIndex.get(dir1) - _this.directivesIndex.get(dir2);\r\n }\r\n });\r\n return directives;\r\n };\r\n TemplateParseVisitor.prototype._createDirectiveAsts = function (elementName, directives, props, possibleExportAsVars, sourceSpan) {\r\n var _this = this;\r\n var matchedVariables = new Set();\r\n var directiveAsts = directives.map(function (directive) {\r\n var hostProperties = [];\r\n var hostEvents = [];\r\n var directiveProperties = [];\r\n _this._createDirectiveHostPropertyAsts(elementName, directive.hostProperties, sourceSpan, hostProperties);\r\n _this._createDirectiveHostEventAsts(directive.hostListeners, sourceSpan, hostEvents);\r\n _this._createDirectivePropertyAsts(directive.inputs, props, directiveProperties);\r\n var exportAsVars = [];\r\n possibleExportAsVars.forEach(function (varAst) {\r\n if ((varAst.value.length === 0 && directive.isComponent) ||\r\n (directive.exportAs == varAst.value)) {\r\n exportAsVars.push(varAst);\r\n matchedVariables.add(varAst.name);\r\n }\r\n });\r\n return new template_ast_1.DirectiveAst(directive, directiveProperties, hostProperties, hostEvents, exportAsVars, sourceSpan);\r\n });\r\n possibleExportAsVars.forEach(function (varAst) {\r\n if (varAst.value.length > 0 && !collection_1.SetWrapper.has(matchedVariables, varAst.name)) {\r\n _this._reportError(\"There is no directive with \\\"exportAs\\\" set to \\\"\" + varAst.value + \"\\\"\", varAst.sourceSpan);\r\n }\r\n });\r\n return directiveAsts;\r\n };\r\n TemplateParseVisitor.prototype._createDirectiveHostPropertyAsts = function (elementName, hostProps, sourceSpan, targetPropertyAsts) {\r\n var _this = this;\r\n if (lang_1.isPresent(hostProps)) {\r\n collection_1.StringMapWrapper.forEach(hostProps, function (expression, propName) {\r\n var exprAst = _this._parseBinding(expression, sourceSpan);\r\n targetPropertyAsts.push(_this._createElementPropertyAst(elementName, propName, exprAst, sourceSpan));\r\n });\r\n }\r\n };\r\n TemplateParseVisitor.prototype._createDirectiveHostEventAsts = function (hostListeners, sourceSpan, targetEventAsts) {\r\n var _this = this;\r\n if (lang_1.isPresent(hostListeners)) {\r\n collection_1.StringMapWrapper.forEach(hostListeners, function (expression, propName) {\r\n _this._parseEvent(propName, expression, sourceSpan, [], targetEventAsts);\r\n });\r\n }\r\n };\r\n TemplateParseVisitor.prototype._createDirectivePropertyAsts = function (directiveProperties, boundProps, targetBoundDirectiveProps) {\r\n if (lang_1.isPresent(directiveProperties)) {\r\n var boundPropsByName = new Map();\r\n boundProps.forEach(function (boundProp) {\r\n var prevValue = boundPropsByName.get(boundProp.name);\r\n if (lang_1.isBlank(prevValue) || prevValue.isLiteral) {\r\n // give [a]=\"b\" a higher precedence than a=\"b\" on the same element\r\n boundPropsByName.set(boundProp.name, boundProp);\r\n }\r\n });\r\n collection_1.StringMapWrapper.forEach(directiveProperties, function (elProp, dirProp) {\r\n var boundProp = boundPropsByName.get(elProp);\r\n // Bindings are optional, so this binding only needs to be set up if an expression is given.\r\n if (lang_1.isPresent(boundProp)) {\r\n targetBoundDirectiveProps.push(new template_ast_1.BoundDirectivePropertyAst(dirProp, boundProp.name, boundProp.expression, boundProp.sourceSpan));\r\n }\r\n });\r\n }\r\n };\r\n TemplateParseVisitor.prototype._createElementPropertyAsts = function (elementName, props, directives) {\r\n var _this = this;\r\n var boundElementProps = [];\r\n var boundDirectivePropsIndex = new Map();\r\n directives.forEach(function (directive) {\r\n directive.inputs.forEach(function (prop) {\r\n boundDirectivePropsIndex.set(prop.templateName, prop);\r\n });\r\n });\r\n props.forEach(function (prop) {\r\n if (!prop.isLiteral && lang_1.isBlank(boundDirectivePropsIndex.get(prop.name))) {\r\n boundElementProps.push(_this._createElementPropertyAst(elementName, prop.name, prop.expression, prop.sourceSpan));\r\n }\r\n });\r\n return boundElementProps;\r\n };\r\n TemplateParseVisitor.prototype._createElementPropertyAst = function (elementName, name, ast, sourceSpan) {\r\n var unit = null;\r\n var bindingType;\r\n var boundPropertyName;\r\n var parts = name.split(PROPERTY_PARTS_SEPARATOR);\r\n if (parts.length === 1) {\r\n boundPropertyName = this._schemaRegistry.getMappedPropName(parts[0]);\r\n bindingType = template_ast_1.PropertyBindingType.Property;\r\n if (!this._schemaRegistry.hasProperty(elementName, boundPropertyName)) {\r\n this._reportError(\"Can't bind to '\" + boundPropertyName + \"' since it isn't a known native property\", sourceSpan);\r\n }\r\n }\r\n else {\r\n if (parts[0] == ATTRIBUTE_PREFIX) {\r\n boundPropertyName = parts[1];\r\n var nsSeparatorIdx = boundPropertyName.indexOf(':');\r\n if (nsSeparatorIdx > -1) {\r\n var ns = boundPropertyName.substring(0, nsSeparatorIdx);\r\n var name_1 = boundPropertyName.substring(nsSeparatorIdx + 1);\r\n boundPropertyName = html_tags_1.mergeNsAndName(ns, name_1);\r\n }\r\n bindingType = template_ast_1.PropertyBindingType.Attribute;\r\n }\r\n else if (parts[0] == CLASS_PREFIX) {\r\n boundPropertyName = parts[1];\r\n bindingType = template_ast_1.PropertyBindingType.Class;\r\n }\r\n else if (parts[0] == STYLE_PREFIX) {\r\n unit = parts.length > 2 ? parts[2] : null;\r\n boundPropertyName = parts[1];\r\n bindingType = template_ast_1.PropertyBindingType.Style;\r\n }\r\n else {\r\n this._reportError(\"Invalid property name '\" + name + \"'\", sourceSpan);\r\n bindingType = null;\r\n }\r\n }\r\n return new template_ast_1.BoundElementPropertyAst(boundPropertyName, bindingType, ast, unit, sourceSpan);\r\n };\r\n TemplateParseVisitor.prototype._findComponentDirectiveNames = function (directives) {\r\n var componentTypeNames = [];\r\n directives.forEach(function (directive) {\r\n var typeName = directive.directive.type.name;\r\n if (directive.directive.isComponent) {\r\n componentTypeNames.push(typeName);\r\n }\r\n });\r\n return componentTypeNames;\r\n };\r\n TemplateParseVisitor.prototype._assertOnlyOneComponent = function (directives, sourceSpan) {\r\n var componentTypeNames = this._findComponentDirectiveNames(directives);\r\n if (componentTypeNames.length > 1) {\r\n this._reportError(\"More than one component: \" + componentTypeNames.join(','), sourceSpan);\r\n }\r\n };\r\n TemplateParseVisitor.prototype._assertNoComponentsNorElementBindingsOnTemplate = function (directives, elementProps, sourceSpan) {\r\n var _this = this;\r\n var componentTypeNames = this._findComponentDirectiveNames(directives);\r\n if (componentTypeNames.length > 0) {\r\n this._reportError(\"Components on an embedded template: \" + componentTypeNames.join(','), sourceSpan);\r\n }\r\n elementProps.forEach(function (prop) {\r\n _this._reportError(\"Property binding \" + prop.name + \" not used by any directive on an embedded template\", sourceSpan);\r\n });\r\n };\r\n TemplateParseVisitor.prototype._assertAllEventsPublishedByDirectives = function (directives, events) {\r\n var _this = this;\r\n var allDirectiveEvents = new Set();\r\n directives.forEach(function (directive) {\r\n collection_1.StringMapWrapper.forEach(directive.directive.outputs, function (eventName, _) { allDirectiveEvents.add(eventName); });\r\n });\r\n events.forEach(function (event) {\r\n if (lang_1.isPresent(event.target) || !collection_1.SetWrapper.has(allDirectiveEvents, event.name)) {\r\n _this._reportError(\"Event binding \" + event.fullName + \" not emitted by any directive on an embedded template\", event.sourceSpan);\r\n }\r\n });\r\n };\r\n return TemplateParseVisitor;\r\n})();\r\nvar NonBindableVisitor = (function () {\r\n function NonBindableVisitor() {\r\n }\r\n NonBindableVisitor.prototype.visitElement = function (ast, component) {\r\n var preparsedElement = template_preparser_1.preparseElement(ast);\r\n if (preparsedElement.type === template_preparser_1.PreparsedElementType.SCRIPT ||\r\n preparsedElement.type === template_preparser_1.PreparsedElementType.STYLE ||\r\n preparsedElement.type === template_preparser_1.PreparsedElementType.STYLESHEET) {\r\n // Skipping <script> for security reasons\r\n // Skipping <style> and stylesheets as we already processed them\r\n // in the StyleCompiler\r\n return null;\r\n }\r\n var attrNameAndValues = ast.attrs.map(function (attrAst) { return [attrAst.name, attrAst.value]; });\r\n var selector = createElementCssSelector(ast.name, attrNameAndValues);\r\n var ngContentIndex = component.findNgContentIndex(selector);\r\n var children = html_ast_1.htmlVisitAll(this, ast.children, EMPTY_COMPONENT);\r\n return new template_ast_1.ElementAst(ast.name, html_ast_1.htmlVisitAll(this, ast.attrs), [], [], [], [], children, ngContentIndex, ast.sourceSpan);\r\n };\r\n NonBindableVisitor.prototype.visitComment = function (ast, context) { return null; };\r\n NonBindableVisitor.prototype.visitAttr = function (ast, context) {\r\n return new template_ast_1.AttrAst(ast.name, ast.value, ast.sourceSpan);\r\n };\r\n NonBindableVisitor.prototype.visitText = function (ast, component) {\r\n var ngContentIndex = component.findNgContentIndex(TEXT_CSS_SELECTOR);\r\n return new template_ast_1.TextAst(ast.value, ngContentIndex, ast.sourceSpan);\r\n };\r\n return NonBindableVisitor;\r\n})();\r\nvar BoundElementOrDirectiveProperty = (function () {\r\n function BoundElementOrDirectiveProperty(name, expression, isLiteral, sourceSpan) {\r\n this.name = name;\r\n this.expression = expression;\r\n this.isLiteral = isLiteral;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n return BoundElementOrDirectiveProperty;\r\n})();\r\nfunction splitClasses(classAttrValue) {\r\n return lang_1.StringWrapper.split(classAttrValue.trim(), /\\s+/g);\r\n}\r\nexports.splitClasses = splitClasses;\r\nvar Component = (function () {\r\n function Component(ngContentIndexMatcher, wildcardNgContentIndex) {\r\n this.ngContentIndexMatcher = ngContentIndexMatcher;\r\n this.wildcardNgContentIndex = wildcardNgContentIndex;\r\n }\r\n Component.create = function (directives) {\r\n if (directives.length === 0 || !directives[0].directive.isComponent) {\r\n return EMPTY_COMPONENT;\r\n }\r\n var matcher = new selector_1.SelectorMatcher();\r\n var ngContentSelectors = directives[0].directive.template.ngContentSelectors;\r\n var wildcardNgContentIndex = null;\r\n for (var i = 0; i < ngContentSelectors.length; i++) {\r\n var selector = ngContentSelectors[i];\r\n if (lang_1.StringWrapper.equals(selector, '*')) {\r\n wildcardNgContentIndex = i;\r\n }\r\n else {\r\n matcher.addSelectables(selector_1.CssSelector.parse(ngContentSelectors[i]), i);\r\n }\r\n }\r\n return new Component(matcher, wildcardNgContentIndex);\r\n };\r\n Component.prototype.findNgContentIndex = function (selector) {\r\n var ngContentIndices = [];\r\n this.ngContentIndexMatcher.match(selector, function (selector, ngContentIndex) { ngContentIndices.push(ngContentIndex); });\r\n collection_1.ListWrapper.sort(ngContentIndices);\r\n if (lang_1.isPresent(this.wildcardNgContentIndex)) {\r\n ngContentIndices.push(this.wildcardNgContentIndex);\r\n }\r\n return ngContentIndices.length > 0 ? ngContentIndices[0] : null;\r\n };\r\n return Component;\r\n})();\r\nfunction createElementCssSelector(elementName, matchableAttrs) {\r\n var cssSelector = new selector_1.CssSelector();\r\n var elNameNoNs = html_tags_1.splitNsName(elementName)[1];\r\n cssSelector.setElement(elNameNoNs);\r\n for (var i = 0; i < matchableAttrs.length; i++) {\r\n var attrName = matchableAttrs[i][0];\r\n var attrNameNoNs = html_tags_1.splitNsName(attrName)[1];\r\n var attrValue = matchableAttrs[i][1];\r\n cssSelector.addAttribute(attrNameNoNs, attrValue);\r\n if (attrName.toLowerCase() == CLASS_ATTR) {\r\n var classes = splitClasses(attrValue);\r\n classes.forEach(function (className) { return cssSelector.addClassName(className); });\r\n }\r\n }\r\n return cssSelector;\r\n}\r\nvar EMPTY_COMPONENT = new Component(new selector_1.SelectorMatcher(), null);\r\nvar NON_BINDABLE_VISITOR = new NonBindableVisitor();\r\nvar PipeCollector = (function (_super) {\r\n __extends(PipeCollector, _super);\r\n function PipeCollector() {\r\n _super.apply(this, arguments);\r\n this.pipes = new Set();\r\n }\r\n PipeCollector.prototype.visitPipe = function (ast) {\r\n this.pipes.add(ast.name);\r\n ast.exp.visit(this);\r\n this.visitAll(ast.args);\r\n return null;\r\n };\r\n return PipeCollector;\r\n})(ast_1.RecursiveAstVisitor);\r\nexports.PipeCollector = PipeCollector;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3RlbXBsYXRlX3BhcnNlci50cyJdLCJuYW1lcyI6WyJUZW1wbGF0ZVBhcnNlRXJyb3IiLCJUZW1wbGF0ZVBhcnNlRXJyb3IuY29uc3RydWN0b3IiLCJUZW1wbGF0ZVBhcnNlciIsIlRlbXBsYXRlUGFyc2VyLmNvbnN0cnVjdG9yIiwiVGVtcGxhdGVQYXJzZXIucGFyc2UiLCJUZW1wbGF0ZVBhcnNlVmlzaXRvciIsIlRlbXBsYXRlUGFyc2VWaXNpdG9yLmNvbnN0cnVjdG9yIiwiVGVtcGxhdGVQYXJzZVZpc2l0b3IuX3JlcG9ydEVycm9yIiwiVGVtcGxhdGVQYXJzZVZpc2l0b3IuX3BhcnNlSW50ZXJwb2xhdGlvbiIsIlRlbXBsYXRlUGFyc2VWaXNpdG9yLl9wYXJzZUFjdGlvbiIsIlRlbXBsYXRlUGFyc2VWaXNpdG9yLl9wYXJzZUJpbmRpbmciLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci5fcGFyc2VUZW1wbGF0ZUJpbmRpbmdzIiwiVGVtcGxhdGVQYXJzZVZpc2l0b3IuX2NoZWNrUGlwZXMiLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci52aXNpdFRleHQiLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci52aXNpdEF0dHIiLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci52aXNpdENvbW1lbnQiLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci52aXNpdEVsZW1lbnQiLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci5fcGFyc2VJbmxpbmVUZW1wbGF0ZUJpbmRpbmciLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci5fcGFyc2VBdHRyIiwiVGVtcGxhdGVQYXJzZVZpc2l0b3IuX25vcm1hbGl6ZUF0dHJpYnV0ZU5hbWUiLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci5fcGFyc2VWYXJpYWJsZSIsIlRlbXBsYXRlUGFyc2VWaXNpdG9yLl9wYXJzZVByb3BlcnR5IiwiVGVtcGxhdGVQYXJzZVZpc2l0b3IuX3BhcnNlUHJvcGVydHlJbnRlcnBvbGF0aW9uIiwiVGVtcGxhdGVQYXJzZVZpc2l0b3IuX3BhcnNlUHJvcGVydHlBc3QiLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci5fcGFyc2VBc3NpZ25tZW50RXZlbnQiLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci5fcGFyc2VFdmVudCIsIlRlbXBsYXRlUGFyc2VWaXNpdG9yLl9wYXJzZUxpdGVyYWxBdHRyIiwiVGVtcGxhdGVQYXJzZVZpc2l0b3IuX3BhcnNlRGlyZWN0aXZlcyIsIlRlbXBsYXRlUGFyc2VWaXNpdG9yLl9jcmVhdGVEaXJlY3RpdmVBc3RzIiwiVGVtcGxhdGVQYXJzZVZpc2l0b3IuX2NyZWF0ZURpcmVjdGl2ZUhvc3RQcm9wZXJ0eUFzdHMiLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci5fY3JlYXRlRGlyZWN0aXZlSG9zdEV2ZW50QXN0cyIsIlRlbXBsYXRlUGFyc2VWaXNpdG9yLl9jcmVhdGVEaXJlY3RpdmVQcm9wZXJ0eUFzdHMiLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci5fY3JlYXRlRWxlbWVudFByb3BlcnR5QXN0cyIsIlRlbXBsYXRlUGFyc2VWaXNpdG9yLl9jcmVhdGVFbGVtZW50UHJvcGVydHlBc3QiLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci5fZmluZENvbXBvbmVudERpcmVjdGl2ZU5hbWVzIiwiVGVtcGxhdGVQYXJzZVZpc2l0b3IuX2Fzc2VydE9ubHlPbmVDb21wb25lbnQiLCJUZW1wbGF0ZVBhcnNlVmlzaXRvci5fYXNzZXJ0Tm9Db21wb25lbnRzTm9yRWxlbWVudEJpbmRpbmdzT25UZW1wbGF0ZSIsIlRlbXBsYXRlUGFyc2VWaXNpdG9yLl9hc3NlcnRBbGxFdmVudHNQdWJsaXNoZWRCeURpcmVjdGl2ZXMiLCJOb25CaW5kYWJsZVZpc2l0b3IiLCJOb25CaW5kYWJsZVZpc2l0b3IuY29uc3RydWN0b3IiLCJOb25CaW5kYWJsZVZpc2l0b3IudmlzaXRFbGVtZW50IiwiTm9uQmluZGFibGVWaXNpdG9yLnZpc2l0Q29tbWVudCIsIk5vbkJpbmRhYmxlVmlzaXRvci52aXNpdEF0dHIiLCJOb25CaW5kYWJsZVZpc2l0b3IudmlzaXRUZXh0IiwiQm91bmRFbGVtZW50T3JEaXJlY3RpdmVQcm9wZXJ0eSIsIkJvdW5kRWxlbWVudE9yRGlyZWN0aXZlUHJvcGVydHkuY29uc3RydWN0b3IiLCJzcGxpdENsYXNzZXMiLCJDb21wb25lbnQiLCJDb21wb25lbnQuY29uc3RydWN0b3IiLCJDb21wb25lbnQuY3JlYXRlIiwiQ29tcG9uZW50LmZpbmROZ0NvbnRlbnRJbmRleCIsImNyZWF0ZUVsZW1lbnRDc3NTZWxlY3RvciIsIlBpcGVDb2xsZWN0b3IiLCJQaXBlQ29sbGVjdG9yLmNvbnN0cnVjdG9yIiwiUGlwZUNvbGxlY3Rvci52aXNpdFBpcGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkJBQXdELGdDQUFnQyxDQUFDLENBQUE7QUFDekYscUJBQStELDBCQUEwQixDQUFDLENBQUE7QUFDMUYscUJBQXdELGVBQWUsQ0FBQyxDQUFBO0FBQ3hFLHFCQUF5QiwwQkFBMEIsQ0FBQyxDQUFBO0FBQ3BELDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELGlDQUF5QyxxREFBcUQsQ0FBQyxDQUFBO0FBRy9GLDRCQUF5QixlQUFlLENBQUMsQ0FBQTtBQUN6QywwQkFBMEMsYUFBYSxDQUFDLENBQUE7QUFDeEQsMkJBQXlELGNBQWMsQ0FBQyxDQUFBO0FBQ3hFLG9CQUErQywrQ0FBK0MsQ0FBQyxDQUFBO0FBRS9GLDZCQWdCTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ3hCLHlCQUEyQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTVFLHdDQUFvQyxzREFBc0QsQ0FBQyxDQUFBO0FBQzNGLG1DQUFzRSxzQkFBc0IsQ0FBQyxDQUFBO0FBRTdGLG1DQUFtQyxzQkFBc0IsQ0FBQyxDQUFBO0FBRTFELHlCQVFPLFlBQVksQ0FBQyxDQUFBO0FBRXBCLHFCQUEyQixRQUFRLENBQUMsQ0FBQTtBQUVwQyxvQkFBb0I7QUFDcEIsMEJBQTBCO0FBQzFCLGtCQUFrQjtBQUNs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QUFDQSxLQUFLQSxDQUFDQSxHQUFHQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUN6QkEsR0FBR0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDcEJBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ3hCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNkQSxDQUFDQTtJQUNIRixvQkFBQ0E7QUFBREEsQ0FBQ0EsQUFSRCxFQUFtQyx5QkFBbUIsRUFRckQ7QUFSWSxxQkFBYSxnQkFRekIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlzdFdyYXBwZXIsIFN0cmluZ01hcFdyYXBwZXIsIFNldFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1JlZ0V4cFdyYXBwZXIsIGlzUHJlc2VudCwgU3RyaW5nV3JhcHBlciwgaXNCbGFua30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0LCBPcGFxdWVUb2tlbiwgT3B0aW9uYWx9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtQYXJzZXIsIEFTVCwgQVNUV2l0aFNvdXJjZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uJztcbmltcG9ydCB7VGVtcGxhdGVCaW5kaW5nfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL3BhcnNlci9hc3QnO1xuaW1wb3J0IHtDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsIENvbXBpbGVQaXBlTWV0YWRhdGF9IGZyb20gJy4vZGlyZWN0aXZlX21ldGFkYXRhJztcbmltcG9ydCB7SHRtbFBhcnNlcn0gZnJvbSAnLi9odG1sX3BhcnNlcic7XG5pbXBvcnQge3NwbGl0TnNOYW1lLCBtZXJnZU5zQW5kTmFtZX0gZnJvbSAnLi9odG1sX3RhZ3MnO1xuaW1wb3J0IHtQYXJzZVNvdXJjZVNwYW4sIFBhcnNlRXJyb3IsIFBhcnNlTG9jYXRpb259IGZyb20gJy4vcGFyc2VfdXRpbCc7XG5pbXBvcnQge1JlY3Vyc2l2ZUFzdFZpc2l0b3IsIEJpbmRpbmdQaXBlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL3BhcnNlci9hc3QnO1xuXG5pbXBvcnQge1xuICBFbGVtZW50QXN0LFxuICBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCxcbiAgQm91bmRFdmVudEFzdCxcbiAgVmFyaWFibGVBc3QsXG4gIFRlbXBsYXRlQXN0LFxuICBUZW1wbGF0ZUFzdFZpc2l0b3IsXG4gIHRlbXBsYXRlVmlzaXRBbGwsXG4gIFRleHRBc3QsXG4gIEJvdW5kVGV4dEFzdCxcbiAgRW1iZWRkZWRUZW1wbGF0ZUFzdCxcbiAgQXR0ckFzdCxcbiAgTmdDb250ZW50QXN0LFxuICBQcm9wZXJ0eUJpbmRpbmdUeXBlLFxuICBEaXJlY3RpdmVBc3QsXG4gIEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3Rcbn0gZnJvbSAnLi90ZW1wbGF0ZV9hc3QnO1xuaW1wb3J0IHtDc3NTZWxlY3RvciwgU2VsZWN0b3JNYXRjaGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvc2VsZWN0b3InO1xuXG5pbXBvcnQge0VsZW1lbnRTY2hlbWFSZWdpc3RyeX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3NjaGVtYS9lbGVtZW50X3NjaGVtYV9yZWdpc3RyeSc7XG5pbXBvcnQge3ByZXBhcnNlRWxlbWVudCwgUHJlcGFyc2VkRWxlbWVudCwgUHJlcGFyc2VkRWxlbWVudFR5cGV9IGZyb20gJy4vdGVtcGxhdGVfcHJlcGFyc2VyJztcblxuaW1wb3J0IHtpc1N0eWxlVXJsUmVzb2x2YWJsZX0gZnJvbSAnLi9zdHlsZV91cmxfcmVzb2x2ZXInO1xuXG5pbXBvcnQge1xuICBIdG1sQXN0VmlzaXRvcixcbiAgSHRtbEFzdCxcbiAgSHRtbEVsZW1lbnRBc3QsXG4gIEh0bWxBdHRyQXN0LFxuICBIdG1sVGV4dEFzdCxcbiAgSHRtbENvbW1lbnRBc3QsXG4gIGh0bWxWaXNpdEFsbFxufSBmcm9tICcuL2h0bWxfYXN0JztcblxuaW1wb3J0IHtzcGxpdEF0Q29sb259IGZyb20gJy4vdXRpbCc7XG5cbi8vIEdyb3VwIDEgPSBcImJpbmQtXCJcbi8vIEdyb3VwIDIgPSBcInZhci1cIiBvciBcIiNcIlxuLy8gR3JvdXAgMyA9IFwib24tXCJcbi8vIEdyb3VwIDQgPSBcImJpbmRvbi1cIlxuLy8gR3JvdXAgNSA9IHRoZSBpZGVudGlmaWVyIGFmdGVyIFwiYmluZC1cIiwgXCJ2YXItLyNcIiwgb3IgXCJvbi1cIlxuLy8gR3JvdXAgNiA9IGlkZW50aWZpZXIgaW5zaWRlIFsoKV1cbi8vIEdyb3VwIDcgPSBpZGVudGlmaWVyIGluc2lkZSBbXVxuLy8gR3JvdXAgOCA9IGlkZW50aWZpZXIgaW5zaWRlICgpXG52YXIgQklORF9OQU1FX1JFR0VYUCA9XG4gICAgL14oPzooPzooPzooYmluZC0pfCh2YXItfCMpfChvbi0pfChiaW5kb24tKSkoLispKXxcXFtcXCgoW15cXCldKylcXClcXF18XFxbKFteXFxdXSspXFxdfFxcKChbXlxcKV0rKVxcKSkkL2c7XG5cbmNvbnN0IFRFTVBMQVRFX0VMRU1FTlQgPSAndGVtcGxhdGUnO1xuY29uc3QgVEVNUExBVEVfQVRUUiA9ICd0ZW1wbGF0ZSc7XG5jb25zdCBURU1QTEFURV9BVFRSX1BSRUZJWCA9ICcqJztcbmNvbnN0IENMQVNTX0FUVFIgPSAnY2xhc3MnO1xuXG52YXIgUFJPUEVSVFlfUEFSVFNfU0VQQVJBVE9SID0gJy4nO1xuY29uc3QgQVRUUklCVVRFX1BSRUZJWCA9ICdhdHRyJztcbmNvbnN0IENMQVNTX1BSRUZJWCA9ICdjbGFzcyc7XG5jb25zdCBTVFlMRV9QUkVGSVggPSAnc3R5bGUnO1xuXG52YXIgVEVYVF9DU1NfU0VMRUNUT1IgPSBDc3NTZWxlY3Rvci5wYXJzZSgnKicpWzBdO1xuXG4vKipcbiAqIFByb3ZpZGVzIGFuIGFycmF5IG9mIHtAbGluayBUZW1wbGF0ZUFzdFZpc2l0b3J9cyB3aGljaCB3aWxsIGJlIHVzZWQgdG8gdHJhbnNmb3JtXG4gKiBwYXJzZWQgdGVtcGxhdGVzIGJlZm9yZSBjb21waWxhdGlvbiBpcyBpbnZva2VkLCBhbGxvd2luZyBjdXN0b20gZXhwcmVzc2lvbiBzeW50YXhcbiAqIGFuZCBvdGhlciBhZHZhbmNlZCB0cmFuc2Zvcm1hdGlvbnMuXG4gKlxuICogVGhpcyBpcyBjdXJyZW50bHkgYW4gaW50ZXJuYWwtb25seSBmZWF0dXJlIGFuZCBub3QgbWVhbnQgZm9yIGdlbmVyYWwgdXNlLlxuICovXG5leHBvcnQgY29uc3QgVEVNUExBVEVfVFJBTlNGT1JNUyA9IENPTlNUX0VYUFIobmV3IE9wYXF1ZVRva2VuKCdUZW1wbGF0ZVRyYW5zZm9ybXMnKSk7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZVBhcnNlRXJyb3IgZXh0ZW5kcyBQYXJzZUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBzcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHsgc3VwZXIoc3BhbiwgbWVzc2FnZSk7IH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlUGFyc2VyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZXhwclBhcnNlcjogUGFyc2VyLCBwcml2YXRlIF9zY2hlbWFSZWdpc3RyeTogRWxlbWVudFNjaGVtYVJlZ2lzdHJ5LFxuICAgICAgICAgICAgICBwcml2YXRlIF9odG1sUGFyc2VyOiBIdG1sUGFyc2VyLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRFTVBMQVRFX1RSQU5TRk9STVMpIHB1YmxpYyB0cmFuc2Zvcm1zOiBUZW1wbGF0ZUFzdFZpc2l0b3JbXSkge31cblxuICBwYXJzZSh0ZW1wbGF0ZTogc3RyaW5nLCBkaXJlY3RpdmVzOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXSwgcGlwZXM6IENvbXBpbGVQaXBlTWV0YWRhdGFbXSxcbiAgICAgICAgdGVtcGxhdGVVcmw6IHN0cmluZyk6IFRlbXBsYXRlQXN0W10ge1xuICAgIHZhciBwYXJzZVZpc2l0b3IgPVxuICAgICAgICBuZXcgVGVtcGxhdGVQYXJzZVZpc2l0b3IoZGlyZWN0aXZlcywgcGlwZXMsIHRoaXMuX2V4cHJQYXJzZXIsIHRoaXMuX3NjaGVtYVJlZ2lzdHJ5KTtcbiAgICB2YXIgaHRtbEFzdFdpdGhFcnJvcnMgPSB0aGlzLl9odG1sUGFyc2VyLnBhcnNlKHRlbXBsYXRlLCB0ZW1wbGF0ZVVybCk7XG4gICAgdmFyIHJlc3VsdCA9IGh0bWxWaXNpdEFsbChwYXJzZVZpc2l0b3IsIGh0bWxBc3RXaXRoRXJyb3JzLnJvb3ROb2RlcywgRU1QVFlfQ09NUE9ORU5UKTtcbiAgICB2YXIgZXJyb3JzOiBQYXJzZUVycm9yW10gPSBodG1sQXN0V2l0aEVycm9ycy5lcnJvcnMuY29uY2F0KHBhcnNlVmlzaXRvci5lcnJvcnMpO1xuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGVycm9yU3RyaW5nID0gZXJyb3JzLmpvaW4oJ1xcbicpO1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYFRlbXBsYXRlIHBhcnNlIGVycm9yczpcXG4ke2Vycm9yU3RyaW5nfWApO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMudHJhbnNmb3JtcykpIHtcbiAgICAgIHRoaXMudHJhbnNmb3Jtcy5mb3JFYWNoKFxuICAgICAgICAgICh0cmFuc2Zvcm06IFRlbXBsYXRlQXN0VmlzaXRvcikgPT4geyByZXN1bHQgPSB0ZW1wbGF0ZVZpc2l0QWxsKHRyYW5zZm9ybSwgcmVzdWx0KTsgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuY2xhc3MgVGVtcGxhdGVQYXJzZVZpc2l0b3IgaW1wbGVtZW50cyBIdG1sQXN0VmlzaXRvciB7XG4gIHNlbGVjdG9yTWF0Y2hlcjogU2VsZWN0b3JNYXRjaGVyO1xuICBlcnJvcnM6IFRlbXBsYXRlUGFyc2VFcnJvcltdID0gW107XG4gIGRpcmVjdGl2ZXNJbmRleCA9IG5ldyBNYXA8Q29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLCBudW1iZXI+KCk7XG4gIG5nQ29udGVudENvdW50OiBudW1iZXIgPSAwO1xuICBwaXBlc0J5TmFtZTogTWFwPHN0cmluZywgQ29tcGlsZVBpcGVNZXRhZGF0YT47XG5cbiAgY29uc3RydWN0b3IoZGlyZWN0aXZlczogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhW10sIHBpcGVzOiBDb21waWxlUGlwZU1ldGFkYXRhW10sXG4gICAgICAgICAgICAgIHByaXZhdGUgX2V4cHJQYXJzZXI6IFBhcnNlciwgcHJpdmF0ZSBfc2NoZW1hUmVnaXN0cnk6IEVsZW1lbnRTY2hlbWFSZWdpc3RyeSkge1xuICAgIHRoaXMuc2VsZWN0b3JNYXRjaGVyID0gbmV3IFNlbGVjdG9yTWF0Y2hlcigpO1xuICAgIExpc3RXcmFwcGVyLmZvckVhY2hXaXRoSW5kZXgoZGlyZWN0aXZlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaXJlY3RpdmU6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3IgPSBDc3NTZWxlY3Rvci5wYXJzZShkaXJlY3RpdmUuc2VsZWN0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdG9yTWF0Y2hlci5hZGRTZWxlY3RhYmxlcyhzZWxlY3RvciwgZGlyZWN0aXZlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVzSW5kZXguc2V0KGRpcmVjdGl2ZSwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgdGhpcy5waXBlc0J5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBDb21waWxlUGlwZU1ldGFkYXRhPigpO1xuICAgIHBpcGVzLmZvckVhY2gocGlwZSA9PiB0aGlzLnBpcGVzQnlOYW1lLnNldChwaXBlLm5hbWUsIHBpcGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcG9ydEVycm9yKG1lc3NhZ2U6IHN0cmluZywgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7XG4gICAgdGhpcy5lcnJvcnMucHVzaChuZXcgVGVtcGxhdGVQYXJzZUVycm9yKG1lc3NhZ2UsIHNvdXJjZVNwYW4pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlSW50ZXJwb2xhdGlvbih2YWx1ZTogc3RyaW5nLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBBU1RXaXRoU291cmNlIHtcbiAgICB2YXIgc291cmNlSW5mbyA9IHNvdXJjZVNwYW4uc3RhcnQudG9TdHJpbmcoKTtcbiAgICB0cnkge1xuICAgICAgdmFyIGFzdCA9IHRoaXMuX2V4cHJQYXJzZXIucGFyc2VJbnRlcnBvbGF0aW9uKHZhbHVlLCBzb3VyY2VJbmZvKTtcbiAgICAgIHRoaXMuX2NoZWNrUGlwZXMoYXN0LCBzb3VyY2VTcGFuKTtcbiAgICAgIHJldHVybiBhc3Q7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoYCR7ZX1gLCBzb3VyY2VTcGFuKTtcbiAgICAgIHJldHVybiB0aGlzLl9leHByUGFyc2VyLndyYXBMaXRlcmFsUHJpbWl0aXZlKCdFUlJPUicsIHNvdXJjZUluZm8pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlQWN0aW9uKHZhbHVlOiBzdHJpbmcsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEFTVFdpdGhTb3VyY2Uge1xuICAgIHZhciBzb3VyY2VJbmZvID0gc291cmNlU3Bhbi5zdGFydC50b1N0cmluZygpO1xuICAgIHRyeSB7XG4gICAgICB2YXIgYXN0ID0gdGhpcy5fZXhwclBhcnNlci5wYXJzZUFjdGlvbih2YWx1ZSwgc291cmNlSW5mbyk7XG4gICAgICB0aGlzLl9jaGVja1BpcGVzKGFzdCwgc291cmNlU3Bhbik7XG4gICAgICByZXR1cm4gYXN0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX3JlcG9ydEVycm9yKGAke2V9YCwgc291cmNlU3Bhbik7XG4gICAgICByZXR1cm4gdGhpcy5fZXhwclBhcnNlci53cmFwTGl0ZXJhbFByaW1pdGl2ZSgnRVJST1InLCBzb3VyY2VJbmZvKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUJpbmRpbmcodmFsdWU6IHN0cmluZywgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogQVNUV2l0aFNvdXJjZSB7XG4gICAgdmFyIHNvdXJjZUluZm8gPSBzb3VyY2VTcGFuLnN0YXJ0LnRvU3RyaW5nKCk7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBhc3QgPSB0aGlzLl9leHByUGFyc2VyLnBhcnNlQmluZGluZyh2YWx1ZSwgc291cmNlSW5mbyk7XG4gICAgICB0aGlzLl9jaGVja1BpcGVzKGFzdCwgc291cmNlU3Bhbik7XG4gICAgICByZXR1cm4gYXN0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX3JlcG9ydEVycm9yKGAke2V9YCwgc291cmNlU3Bhbik7XG4gICAgICByZXR1cm4gdGhpcy5fZXhwclBhcnNlci53cmFwTGl0ZXJhbFByaW1pdGl2ZSgnRVJST1InLCBzb3VyY2VJbmZvKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZVRlbXBsYXRlQmluZGluZ3ModmFsdWU6IHN0cmluZywgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogVGVtcGxhdGVCaW5kaW5nW10ge1xuICAgIHZhciBzb3VyY2VJbmZvID0gc291cmNlU3Bhbi5zdGFydC50b1N0cmluZygpO1xuICAgIHRyeSB7XG4gICAgICB2YXIgYmluZGluZ3MgPSB0aGlzLl9leHByUGFyc2VyLnBhcnNlVGVtcGxhdGVCaW5kaW5ncyh2YWx1ZSwgc291cmNlSW5mbyk7XG4gICAgICBiaW5kaW5ncy5mb3JFYWNoKChiaW5kaW5nKSA9PiB7XG4gICAgICAgIGlmIChpc1ByZXNlbnQoYmluZGluZy5leHByZXNzaW9uKSkge1xuICAgICAgICAgIHRoaXMuX2NoZWNrUGlwZXMoYmluZGluZy5leHByZXNzaW9uLCBzb3VyY2VTcGFuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYmluZGluZ3M7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoYCR7ZX1gLCBzb3VyY2VTcGFuKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jaGVja1BpcGVzKGFzdDogQVNUV2l0aFNvdXJjZSwgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7XG4gICAgaWYgKGlzUHJlc2VudChhc3QpKSB7XG4gICAgICB2YXIgY29sbGVjdG9yID0gbmV3IFBpcGVDb2xsZWN0b3IoKTtcbiAgICAgIGFzdC52aXNpdChjb2xsZWN0b3IpO1xuICAgICAgY29sbGVjdG9yLnBpcGVzLmZvckVhY2goKHBpcGVOYW1lKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5waXBlc0J5TmFtZS5oYXMocGlwZU5hbWUpKSB7XG4gICAgICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoYFRoZSBwaXBlICcke3BpcGVOYW1lfScgY291bGQgbm90IGJlIGZvdW5kYCwgc291cmNlU3Bhbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VGV4dChhc3Q6IEh0bWxUZXh0QXN0LCBjb21wb25lbnQ6IENvbXBvbmVudCk6IGFueSB7XG4gICAgdmFyIG5nQ29udGVudEluZGV4ID0gY29tcG9uZW50LmZpbmROZ0NvbnRlbnRJbmRleChURVhUX0NTU19TRUxFQ1RPUik7XG4gICAgdmFyIGV4cHIgPSB0aGlzLl9wYXJzZUludGVycG9sYXRpb24oYXN0LnZhbHVlLCBhc3Quc291cmNlU3Bhbik7XG4gICAgaWYgKGlzUHJlc2VudChleHByKSkge1xuICAgICAgcmV0dXJuIG5ldyBCb3VuZFRleHRBc3QoZXhwciwgbmdDb250ZW50SW5kZXgsIGFzdC5zb3VyY2VTcGFuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBUZXh0QXN0KGFzdC52YWx1ZSwgbmdDb250ZW50SW5kZXgsIGFzdC5zb3VyY2VTcGFuKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEF0dHIoYXN0OiBIdG1sQXR0ckFzdCwgY29udGV4OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgQXR0ckFzdChhc3QubmFtZSwgYXN0LnZhbHVlLCBhc3Quc291cmNlU3Bhbik7XG4gIH1cblxuICB2aXNpdENvbW1lbnQoYXN0OiBIdG1sQ29tbWVudEFzdCwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cblxuICB2aXNpdEVsZW1lbnQoZWxlbWVudDogSHRtbEVsZW1lbnRBc3QsIGNvbXBvbmVudDogQ29tcG9uZW50KTogYW55IHtcbiAgICB2YXIgbm9kZU5hbWUgPSBlbGVtZW50Lm5hbWU7XG4gICAgdmFyIHByZXBhcnNlZEVsZW1lbnQgPSBwcmVwYXJzZUVsZW1lbnQoZWxlbWVudCk7XG4gICAgaWYgKHByZXBhcnNlZEVsZW1lbnQudHlwZSA9PT0gUHJlcGFyc2VkRWxlbWVudFR5cGUuU0NSSVBUIHx8XG4gICAgICAgIHByZXBhcnNlZEVsZW1lbnQudHlwZSA9PT0gUHJlcGFyc2VkRWxlbWVudFR5cGUuU1RZTEUpIHtcbiAgICAgIC8vIFNraXBwaW5nIDxzY3JpcHQ+IGZvciBzZWN1cml0eSByZWFzb25zXG4gICAgICAvLyBTa2lwcGluZyA8c3R5bGU+IGFzIHdlIGFscmVhZHkgcHJvY2Vzc2VkIHRoZW1cbiAgICAgIC8vIGluIHRoZSBTdHlsZUNvbXBpbGVyXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHByZXBhcnNlZEVsZW1lbnQudHlwZSA9PT0gUHJlcGFyc2VkRWxlbWVudFR5cGUuU1RZTEVTSEVFVCAmJlxuICAgICAgICBpc1N0eWxlVXJsUmVzb2x2YWJsZShwcmVwYXJzZWRFbGVtZW50LmhyZWZBdHRyKSkge1xuICAgICAgLy8gU2tpcHBpbmcgc3R5bGVzaGVldHMgd2l0aCBlaXRoZXIgcmVsYXRpdmUgdXJscyBvciBwYWNrYWdlIHNjaGVtZSBhcyB3ZSBhbHJlYWR5IHByb2Nlc3NlZFxuICAgICAgLy8gdGhlbSBpbiB0aGUgU3R5bGVDb21waWxlclxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoYWJsZUF0dHJzOiBzdHJpbmdbXVtdID0gW107XG4gICAgdmFyIGVsZW1lbnRPckRpcmVjdGl2ZVByb3BzOiBCb3VuZEVsZW1lbnRPckRpcmVjdGl2ZVByb3BlcnR5W10gPSBbXTtcbiAgICB2YXIgdmFyczogVmFyaWFibGVBc3RbXSA9IFtdO1xuICAgIHZhciBldmVudHM6IEJvdW5kRXZlbnRBc3RbXSA9IFtdO1xuXG4gICAgdmFyIHRlbXBsYXRlRWxlbWVudE9yRGlyZWN0aXZlUHJvcHM6IEJvdW5kRWxlbWVudE9yRGlyZWN0aXZlUHJvcGVydHlbXSA9IFtdO1xuICAgIHZhciB0ZW1wbGF0ZVZhcnM6IFZhcmlhYmxlQXN0W10gPSBbXTtcbiAgICB2YXIgdGVtcGxhdGVNYXRjaGFibGVBdHRyczogc3RyaW5nW11bXSA9IFtdO1xuICAgIHZhciBoYXNJbmxpbmVUZW1wbGF0ZXMgPSBmYWxzZTtcbiAgICB2YXIgYXR0cnMgPSBbXTtcblxuICAgIGVsZW1lbnQuYXR0cnMuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgIHZhciBoYXNCaW5kaW5nID0gdGhpcy5fcGFyc2VBdHRyKGF0dHIsIG1hdGNoYWJsZUF0dHJzLCBlbGVtZW50T3JEaXJlY3RpdmVQcm9wcywgZXZlbnRzLCB2YXJzKTtcbiAgICAgIHZhciBoYXNUZW1wbGF0ZUJpbmRpbmcgPSB0aGlzLl9wYXJzZUlubGluZVRlbXBsYXRlQmluZGluZyhcbiAgICAgICAgICBhdHRyLCB0ZW1wbGF0ZU1hdGNoYWJsZUF0dHJzLCB0ZW1wbGF0ZUVsZW1lbnRPckRpcmVjdGl2ZVByb3BzLCB0ZW1wbGF0ZVZhcnMpO1xuICAgICAgaWYgKCFoYXNCaW5kaW5nICYmICFoYXNUZW1wbGF0ZUJpbmRpbmcpIHtcbiAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSB0aGUgYmluZGluZ3MgYXMgYXR0cmlidXRlcyBhcyB3ZWxsIGluIHRoZSBBU1RcbiAgICAgICAgYXR0cnMucHVzaCh0aGlzLnZpc2l0QXR0cihhdHRyLCBudWxsKSk7XG4gICAgICAgIG1hdGNoYWJsZUF0dHJzLnB1c2goW2F0dHIubmFtZSwgYXR0ci52YWx1ZV0pO1xuICAgICAgfVxuICAgICAgaWYgKGhhc1RlbXBsYXRlQmluZGluZykge1xuICAgICAgICBoYXNJbmxpbmVUZW1wbGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIGxjRWxOYW1lID0gc3BsaXROc05hbWUobm9kZU5hbWUudG9Mb3dlckNhc2UoKSlbMV07XG4gICAgdmFyIGlzVGVtcGxhdGVFbGVtZW50ID0gbGNFbE5hbWUgPT0gVEVNUExBVEVfRUxFTUVOVDtcbiAgICB2YXIgZWxlbWVudENzc1NlbGVjdG9yID0gY3JlYXRlRWxlbWVudENzc1NlbGVjdG9yKG5vZGVOYW1lLCBtYXRjaGFibGVBdHRycyk7XG4gICAgdmFyIGRpcmVjdGl2ZXMgPSB0aGlzLl9jcmVhdGVEaXJlY3RpdmVBc3RzKFxuICAgICAgICBlbGVtZW50Lm5hbWUsIHRoaXMuX3BhcnNlRGlyZWN0aXZlcyh0aGlzLnNlbGVjdG9yTWF0Y2hlciwgZWxlbWVudENzc1NlbGVjdG9yKSxcbiAgICAgICAgZWxlbWVudE9yRGlyZWN0aXZlUHJvcHMsIGlzVGVtcGxhdGVFbGVtZW50ID8gW10gOiB2YXJzLCBlbGVtZW50LnNvdXJjZVNwYW4pO1xuICAgIHZhciBlbGVtZW50UHJvcHM6IEJvdW5kRWxlbWVudFByb3BlcnR5QXN0W10gPVxuICAgICAgICB0aGlzLl9jcmVhdGVFbGVtZW50UHJvcGVydHlBc3RzKGVsZW1lbnQubmFtZSwgZWxlbWVudE9yRGlyZWN0aXZlUHJvcHMsIGRpcmVjdGl2ZXMpO1xuICAgIHZhciBjaGlsZHJlbiA9IGh0bWxWaXNpdEFsbChwcmVwYXJzZWRFbGVtZW50Lm5vbkJpbmRhYmxlID8gTk9OX0JJTkRBQkxFX1ZJU0lUT1IgOiB0aGlzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNoaWxkcmVuLCBDb21wb25lbnQuY3JlYXRlKGRpcmVjdGl2ZXMpKTtcbiAgICB2YXIgZWxlbWVudE5nQ29udGVudEluZGV4ID1cbiAgICAgICAgaGFzSW5saW5lVGVtcGxhdGVzID8gbnVsbCA6IGNvbXBvbmVudC5maW5kTmdDb250ZW50SW5kZXgoZWxlbWVudENzc1NlbGVjdG9yKTtcbiAgICB2YXIgcGFyc2VkRWxlbWVudDtcbiAgICBpZiAocHJlcGFyc2VkRWxlbWVudC50eXBlID09PSBQcmVwYXJzZWRFbGVtZW50VHlwZS5OR19DT05URU5UKSB7XG4gICAgICBpZiAoaXNQcmVzZW50KGVsZW1lbnQuY2hpbGRyZW4pICYmIGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLl9yZXBvcnRFcnJvcihcbiAgICAgICAgICAgIGA8bmctY29udGVudD4gZWxlbWVudCBjYW5ub3QgaGF2ZSBjb250ZW50LiA8bmctY29udGVudD4gbXVzdCBiZSBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSA8L25nLWNvbnRlbnQ+YCxcbiAgICAgICAgICAgIGVsZW1lbnQuc291cmNlU3Bhbik7XG4gICAgICB9XG4gICAgICBwYXJzZWRFbGVtZW50ID1cbiAgICAgICAgICBuZXcgTmdDb250ZW50QXN0KHRoaXMubmdDb250ZW50Q291bnQrKywgZWxlbWVudE5nQ29udGVudEluZGV4LCBlbGVtZW50LnNvdXJjZVNwYW4pO1xuICAgIH0gZWxzZSBpZiAoaXNUZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2Fzc2VydEFsbEV2ZW50c1B1Ymxpc2hlZEJ5RGlyZWN0aXZlcyhkaXJlY3RpdmVzLCBldmVudHMpO1xuICAgICAgdGhpcy5fYXNzZXJ0Tm9Db21wb25lbnRzTm9yRWxlbWVudEJpbmRpbmdzT25UZW1wbGF0ZShkaXJlY3RpdmVzLCBlbGVtZW50UHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc291cmNlU3Bhbik7XG4gICAgICBwYXJzZWRFbGVtZW50ID0gbmV3IEVtYmVkZGVkVGVtcGxhdGVBc3QoYXR0cnMsIGV2ZW50cywgdmFycywgZGlyZWN0aXZlcywgY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudE5nQ29udGVudEluZGV4LCBlbGVtZW50LnNvdXJjZVNwYW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9hc3NlcnRPbmx5T25lQ29tcG9uZW50KGRpcmVjdGl2ZXMsIGVsZW1lbnQuc291cmNlU3Bhbik7XG4gICAgICB2YXIgZWxlbWVudEV4cG9ydEFzVmFycyA9IHZhcnMuZmlsdGVyKHZhckFzdCA9PiB2YXJBc3QudmFsdWUubGVuZ3RoID09PSAwKTtcbiAgICAgIHBhcnNlZEVsZW1lbnQgPVxuICAgICAgICAgIG5ldyBFbGVtZW50QXN0KG5vZGVOYW1lLCBhdHRycywgZWxlbWVudFByb3BzLCBldmVudHMsIGVsZW1lbnRFeHBvcnRBc1ZhcnMsIGRpcmVjdGl2ZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4sIGVsZW1lbnROZ0NvbnRlbnRJbmRleCwgZWxlbWVudC5zb3VyY2VTcGFuKTtcbiAgICB9XG4gICAgaWYgKGhhc0lubGluZVRlbXBsYXRlcykge1xuICAgICAgdmFyIHRlbXBsYXRlQ3NzU2VsZWN0b3IgPSBjcmVhdGVFbGVtZW50Q3NzU2VsZWN0b3IoVEVNUExBVEVfRUxFTUVOVCwgdGVtcGxhdGVNYXRjaGFibGVBdHRycyk7XG4gICAgICB2YXIgdGVtcGxhdGVEaXJlY3RpdmVzID0gdGhpcy5fY3JlYXRlRGlyZWN0aXZlQXN0cyhcbiAgICAgICAgICBlbGVtZW50Lm5hbWUsIHRoaXMuX3BhcnNlRGlyZWN0aXZlcyh0aGlzLnNlbGVjdG9yTWF0Y2hlciwgdGVtcGxhdGVDc3NTZWxlY3RvciksXG4gICAgICAgICAgdGVtcGxhdGVFbGVtZW50T3JEaXJlY3RpdmVQcm9wcywgW10sIGVsZW1lbnQuc291cmNlU3Bhbik7XG4gICAgICB2YXIgdGVtcGxhdGVFbGVtZW50UHJvcHM6IEJvdW5kRWxlbWVudFByb3BlcnR5QXN0W10gPSB0aGlzLl9jcmVhdGVFbGVtZW50UHJvcGVydHlBc3RzKFxuICAgICAgICAgIGVsZW1lbnQubmFtZSwgdGVtcGxhdGVFbGVtZW50T3JEaXJlY3RpdmVQcm9wcywgdGVtcGxhdGVEaXJlY3RpdmVzKTtcbiAgICAgIHRoaXMuX2Fzc2VydE5vQ29tcG9uZW50c05vckVsZW1lbnRCaW5kaW5nc09uVGVtcGxhdGUodGVtcGxhdGVEaXJlY3RpdmVzLCB0ZW1wbGF0ZUVsZW1lbnRQcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zb3VyY2VTcGFuKTtcbiAgICAgIHBhcnNlZEVsZW1lbnQgPSBuZXcgRW1iZWRkZWRUZW1wbGF0ZUFzdChcbiAgICAgICAgICBbXSwgW10sIHRlbXBsYXRlVmFycywgdGVtcGxhdGVEaXJlY3RpdmVzLCBbcGFyc2VkRWxlbWVudF0sXG4gICAgICAgICAgY29tcG9uZW50LmZpbmROZ0NvbnRlbnRJbmRleCh0ZW1wbGF0ZUNzc1NlbGVjdG9yKSwgZWxlbWVudC5zb3VyY2VTcGFuKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlZEVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUlubGluZVRlbXBsYXRlQmluZGluZyhhdHRyOiBIdG1sQXR0ckFzdCwgdGFyZ2V0TWF0Y2hhYmxlQXR0cnM6IHN0cmluZ1tdW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3BzOiBCb3VuZEVsZW1lbnRPckRpcmVjdGl2ZVByb3BlcnR5W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZhcnM6IFZhcmlhYmxlQXN0W10pOiBib29sZWFuIHtcbiAgICB2YXIgdGVtcGxhdGVCaW5kaW5nc1NvdXJjZSA9IG51bGw7XG4gICAgaWYgKGF0dHIubmFtZSA9PSBURU1QTEFURV9BVFRSKSB7XG4gICAgICB0ZW1wbGF0ZUJpbmRpbmdzU291cmNlID0gYXR0ci52YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGF0dHIubmFtZS5zdGFydHNXaXRoKFRFTVBMQVRFX0FUVFJfUFJFRklYKSkge1xuICAgICAgdmFyIGtleSA9IGF0dHIubmFtZS5zdWJzdHJpbmcoVEVNUExBVEVfQVRUUl9QUkVGSVgubGVuZ3RoKTsgIC8vIHJlbW92ZSB0aGUgc3RhclxuICAgICAgdGVtcGxhdGVCaW5kaW5nc1NvdXJjZSA9IChhdHRyLnZhbHVlLmxlbmd0aCA9PSAwKSA/IGtleSA6IGtleSArICcgJyArIGF0dHIudmFsdWU7XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQodGVtcGxhdGVCaW5kaW5nc1NvdXJjZSkpIHtcbiAgICAgIHZhciBiaW5kaW5ncyA9IHRoaXMuX3BhcnNlVGVtcGxhdGVCaW5kaW5ncyh0ZW1wbGF0ZUJpbmRpbmdzU291cmNlLCBhdHRyLnNvdXJjZVNwYW4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaW5kaW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYmluZGluZyA9IGJpbmRpbmdzW2ldO1xuICAgICAgICBpZiAoYmluZGluZy5rZXlJc1Zhcikge1xuICAgICAgICAgIHRhcmdldFZhcnMucHVzaChuZXcgVmFyaWFibGVBc3QoYmluZGluZy5rZXksIGJpbmRpbmcubmFtZSwgYXR0ci5zb3VyY2VTcGFuKSk7XG4gICAgICAgICAgdGFyZ2V0TWF0Y2hhYmxlQXR0cnMucHVzaChbYmluZGluZy5rZXksIGJpbmRpbmcubmFtZV0pO1xuICAgICAgICB9IGVsc2UgaWYgKGlzUHJlc2VudChiaW5kaW5nLmV4cHJlc3Npb24pKSB7XG4gICAgICAgICAgdGhpcy5fcGFyc2VQcm9wZXJ0eUFzdChiaW5kaW5nLmtleSwgYmluZGluZy5leHByZXNzaW9uLCBhdHRyLnNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRNYXRjaGFibGVBdHRycywgdGFyZ2V0UHJvcHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldE1hdGNoYWJsZUF0dHJzLnB1c2goW2JpbmRpbmcua2V5LCAnJ10pO1xuICAgICAgICAgIHRoaXMuX3BhcnNlTGl0ZXJhbEF0dHIoYmluZGluZy5rZXksIG51bGwsIGF0dHIuc291cmNlU3BhbiwgdGFyZ2V0UHJvcHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VBdHRyKGF0dHI6IEh0bWxBdHRyQXN0LCB0YXJnZXRNYXRjaGFibGVBdHRyczogc3RyaW5nW11bXSxcbiAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3BzOiBCb3VuZEVsZW1lbnRPckRpcmVjdGl2ZVByb3BlcnR5W10sIHRhcmdldEV2ZW50czogQm91bmRFdmVudEFzdFtdLFxuICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmFyczogVmFyaWFibGVBc3RbXSk6IGJvb2xlYW4ge1xuICAgIHZhciBhdHRyTmFtZSA9IHRoaXMuX25vcm1hbGl6ZUF0dHJpYnV0ZU5hbWUoYXR0ci5uYW1lKTtcbiAgICB2YXIgYXR0clZhbHVlID0gYXR0ci52YWx1ZTtcbiAgICB2YXIgYmluZFBhcnRzID0gUmVnRXhwV3JhcHBlci5maXJzdE1hdGNoKEJJTkRfTkFNRV9SRUdFWFAsIGF0dHJOYW1lKTtcbiAgICB2YXIgaGFzQmluZGluZyA9IGZhbHNlO1xuICAgIGlmIChpc1ByZXNlbnQoYmluZFBhcnRzKSkge1xuICAgICAgaGFzQmluZGluZyA9IHRydWU7XG4gICAgICBpZiAoaXNQcmVzZW50KGJpbmRQYXJ0c1sxXSkpIHsgIC8vIG1hdGNoOiBiaW5kLXByb3BcbiAgICAgICAgdGhpcy5fcGFyc2VQcm9wZXJ0eShiaW5kUGFydHNbNV0sIGF0dHJWYWx1ZSwgYXR0ci5zb3VyY2VTcGFuLCB0YXJnZXRNYXRjaGFibGVBdHRycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm9wcyk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KFxuICAgICAgICAgICAgICAgICAgICAgYmluZFBhcnRzWzJdKSkgeyAgLy8gbWF0Y2g6IHZhci1uYW1lIC8gdmFyLW5hbWU9XCJpZGVuXCIgLyAjbmFtZSAvICNuYW1lPVwiaWRlblwiXG4gICAgICAgIHZhciBpZGVudGlmaWVyID0gYmluZFBhcnRzWzVdO1xuICAgICAgICB0aGlzLl9wYXJzZVZhcmlhYmxlKGlkZW50aWZpZXIsIGF0dHJWYWx1ZSwgYXR0ci5zb3VyY2VTcGFuLCB0YXJnZXRWYXJzKTtcblxuICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQoYmluZFBhcnRzWzNdKSkgeyAgLy8gbWF0Y2g6IG9uLWV2ZW50XG4gICAgICAgIHRoaXMuX3BhcnNlRXZlbnQoYmluZFBhcnRzWzVdLCBhdHRyVmFsdWUsIGF0dHIuc291cmNlU3BhbiwgdGFyZ2V0TWF0Y2hhYmxlQXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RXZlbnRzKTtcblxuICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQoYmluZFBhcnRzWzRdKSkgeyAgLy8gbWF0Y2g6IGJpbmRvbi1wcm9wXG4gICAgICAgIHRoaXMuX3BhcnNlUHJvcGVydHkoYmluZFBhcnRzWzVdLCBhdHRyVmFsdWUsIGF0dHIuc291cmNlU3BhbiwgdGFyZ2V0TWF0Y2hhYmxlQXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UHJvcHMpO1xuICAgICAgICB0aGlzLl9wYXJzZUFzc2lnbm1lbnRFdmVudChiaW5kUGFydHNbNV0sIGF0dHJWYWx1ZSwgYXR0ci5zb3VyY2VTcGFuLCB0YXJnZXRNYXRjaGFibGVBdHRycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RXZlbnRzKTtcblxuICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQoYmluZFBhcnRzWzZdKSkgeyAgLy8gbWF0Y2g6IFsoZXhwcildXG4gICAgICAgIHRoaXMuX3BhcnNlUHJvcGVydHkoYmluZFBhcnRzWzZdLCBhdHRyVmFsdWUsIGF0dHIuc291cmNlU3BhbiwgdGFyZ2V0TWF0Y2hhYmxlQXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UHJvcHMpO1xuICAgICAgICB0aGlzLl9wYXJzZUFzc2lnbm1lbnRFdmVudChiaW5kUGFydHNbNl0sIGF0dHJWYWx1ZSwgYXR0ci5zb3VyY2VTcGFuLCB0YXJnZXRNYXRjaGFibGVBdHRycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RXZlbnRzKTtcblxuICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQoYmluZFBhcnRzWzddKSkgeyAgLy8gbWF0Y2g6IFtleHByXVxuICAgICAgICB0aGlzLl9wYXJzZVByb3BlcnR5KGJpbmRQYXJ0c1s3XSwgYXR0clZhbHVlLCBhdHRyLnNvdXJjZVNwYW4sIHRhcmdldE1hdGNoYWJsZUF0dHJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3BzKTtcblxuICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQoYmluZFBhcnRzWzhdKSkgeyAgLy8gbWF0Y2g6IChldmVudClcbiAgICAgICAgdGhpcy5fcGFyc2VFdmVudChiaW5kUGFydHNbOF0sIGF0dHJWYWx1ZSwgYXR0ci5zb3VyY2VTcGFuLCB0YXJnZXRNYXRjaGFibGVBdHRycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRFdmVudHMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBoYXNCaW5kaW5nID0gdGhpcy5fcGFyc2VQcm9wZXJ0eUludGVycG9sYXRpb24oYXR0ck5hbWUsIGF0dHJWYWx1ZSwgYXR0ci5zb3VyY2VTcGFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE1hdGNoYWJsZUF0dHJzLCB0YXJnZXRQcm9wcyk7XG4gICAgfVxuICAgIGlmICghaGFzQmluZGluZykge1xuICAgICAgdGhpcy5fcGFyc2VMaXRlcmFsQXR0cihhdHRyTmFtZSwgYXR0clZhbHVlLCBhdHRyLnNvdXJjZVNwYW4sIHRhcmdldFByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0JpbmRpbmc7XG4gIH1cblxuICBwcml2YXRlIF9ub3JtYWxpemVBdHRyaWJ1dGVOYW1lKGF0dHJOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBhdHRyTmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2RhdGEtJykgPyBhdHRyTmFtZS5zdWJzdHJpbmcoNSkgOiBhdHRyTmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlVmFyaWFibGUoaWRlbnRpZmllcjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmFyczogVmFyaWFibGVBc3RbXSkge1xuICAgIGlmIChpZGVudGlmaWVyLmluZGV4T2YoJy0nKSA+IC0xKSB7XG4gICAgICB0aGlzLl9yZXBvcnRFcnJvcihgXCItXCIgaXMgbm90IGFsbG93ZWQgaW4gdmFyaWFibGUgbmFtZXNgLCBzb3VyY2VTcGFuKTtcbiAgICB9XG4gICAgdGFyZ2V0VmFycy5wdXNoKG5ldyBWYXJpYWJsZUFzdChpZGVudGlmaWVyLCB2YWx1ZSwgc291cmNlU3BhbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VQcm9wZXJ0eShuYW1lOiBzdHJpbmcsIGV4cHJlc3Npb246IHN0cmluZywgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE1hdGNoYWJsZUF0dHJzOiBzdHJpbmdbXVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3BzOiBCb3VuZEVsZW1lbnRPckRpcmVjdGl2ZVByb3BlcnR5W10pIHtcbiAgICB0aGlzLl9wYXJzZVByb3BlcnR5QXN0KG5hbWUsIHRoaXMuX3BhcnNlQmluZGluZyhleHByZXNzaW9uLCBzb3VyY2VTcGFuKSwgc291cmNlU3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE1hdGNoYWJsZUF0dHJzLCB0YXJnZXRQcm9wcyk7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZVByb3BlcnR5SW50ZXJwb2xhdGlvbihuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TWF0Y2hhYmxlQXR0cnM6IHN0cmluZ1tdW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3BzOiBCb3VuZEVsZW1lbnRPckRpcmVjdGl2ZVByb3BlcnR5W10pOiBib29sZWFuIHtcbiAgICB2YXIgZXhwciA9IHRoaXMuX3BhcnNlSW50ZXJwb2xhdGlvbih2YWx1ZSwgc291cmNlU3Bhbik7XG4gICAgaWYgKGlzUHJlc2VudChleHByKSkge1xuICAgICAgdGhpcy5fcGFyc2VQcm9wZXJ0eUFzdChuYW1lLCBleHByLCBzb3VyY2VTcGFuLCB0YXJnZXRNYXRjaGFibGVBdHRycywgdGFyZ2V0UHJvcHMpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlUHJvcGVydHlBc3QobmFtZTogc3RyaW5nLCBhc3Q6IEFTVFdpdGhTb3VyY2UsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRNYXRjaGFibGVBdHRyczogc3RyaW5nW11bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm9wczogQm91bmRFbGVtZW50T3JEaXJlY3RpdmVQcm9wZXJ0eVtdKSB7XG4gICAgdGFyZ2V0TWF0Y2hhYmxlQXR0cnMucHVzaChbbmFtZSwgYXN0LnNvdXJjZV0pO1xuICAgIHRhcmdldFByb3BzLnB1c2gobmV3IEJvdW5kRWxlbWVudE9yRGlyZWN0aXZlUHJvcGVydHkobmFtZSwgYXN0LCBmYWxzZSwgc291cmNlU3BhbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VBc3NpZ25tZW50RXZlbnQobmFtZTogc3RyaW5nLCBleHByZXNzaW9uOiBzdHJpbmcsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TWF0Y2hhYmxlQXR0cnM6IHN0cmluZ1tdW10sIHRhcmdldEV2ZW50czogQm91bmRFdmVudEFzdFtdKSB7XG4gICAgdGhpcy5fcGFyc2VFdmVudChgJHtuYW1lfUNoYW5nZWAsIGAke2V4cHJlc3Npb259PSRldmVudGAsIHNvdXJjZVNwYW4sIHRhcmdldE1hdGNoYWJsZUF0dHJzLFxuICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RXZlbnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlRXZlbnQobmFtZTogc3RyaW5nLCBleHByZXNzaW9uOiBzdHJpbmcsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbixcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRNYXRjaGFibGVBdHRyczogc3RyaW5nW11bXSwgdGFyZ2V0RXZlbnRzOiBCb3VuZEV2ZW50QXN0W10pIHtcbiAgICAvLyBsb25nIGZvcm1hdDogJ3RhcmdldDogZXZlbnROYW1lJ1xuICAgIHZhciBwYXJ0cyA9IHNwbGl0QXRDb2xvbihuYW1lLCBbbnVsbCwgbmFtZV0pO1xuICAgIHZhciB0YXJnZXQgPSBwYXJ0c1swXTtcbiAgICB2YXIgZXZlbnROYW1lID0gcGFydHNbMV07XG4gICAgdmFyIGFzdCA9IHRoaXMuX3BhcnNlQWN0aW9uKGV4cHJlc3Npb24sIHNvdXJjZVNwYW4pO1xuICAgIHRhcmdldE1hdGNoYWJsZUF0dHJzLnB1c2goW25hbWUsIGFzdC5zb3VyY2VdKTtcbiAgICB0YXJnZXRFdmVudHMucHVzaChuZXcgQm91bmRFdmVudEFzdChldmVudE5hbWUsIHRhcmdldCwgYXN0LCBzb3VyY2VTcGFuKSk7XG4gICAgLy8gRG9uJ3QgZGV0ZWN0IGRpcmVjdGl2ZXMgZm9yIGV2ZW50IG5hbWVzIGZvciBub3csXG4gICAgLy8gc28gZG9uJ3QgYWRkIHRoZSBldmVudCBuYW1lIHRvIHRoZSBtYXRjaGFibGVBdHRyc1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VMaXRlcmFsQXR0cihuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQcm9wczogQm91bmRFbGVtZW50T3JEaXJlY3RpdmVQcm9wZXJ0eVtdKSB7XG4gICAgdGFyZ2V0UHJvcHMucHVzaChuZXcgQm91bmRFbGVtZW50T3JEaXJlY3RpdmVQcm9wZXJ0eShcbiAgICAgICAgbmFtZSwgdGhpcy5fZXhwclBhcnNlci53cmFwTGl0ZXJhbFByaW1pdGl2ZSh2YWx1ZSwgJycpLCB0cnVlLCBzb3VyY2VTcGFuKSk7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZURpcmVjdGl2ZXMoc2VsZWN0b3JNYXRjaGVyOiBTZWxlY3Rvck1hdGNoZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Q3NzU2VsZWN0b3I6IENzc1NlbGVjdG9yKTogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhW10ge1xuICAgIHZhciBkaXJlY3RpdmVzID0gW107XG4gICAgc2VsZWN0b3JNYXRjaGVyLm1hdGNoKGVsZW1lbnRDc3NTZWxlY3RvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdG9yLCBkaXJlY3RpdmUpID0+IHsgZGlyZWN0aXZlcy5wdXNoKGRpcmVjdGl2ZSk7IH0pO1xuICAgIC8vIE5lZWQgdG8gc29ydCB0aGUgZGlyZWN0aXZlcyBzbyB0aGF0IHdlIGdldCBjb25zaXN0ZW50IHJlc3VsdHMgdGhyb3VnaG91dCxcbiAgICAvLyBhcyBzZWxlY3Rvck1hdGNoZXIgdXNlcyBNYXBzIGluc2lkZS5cbiAgICAvLyBBbHNvIG5lZWQgdG8gbWFrZSBjb21wb25lbnRzIHRoZSBmaXJzdCBkaXJlY3RpdmUgaW4gdGhlIGFycmF5XG4gICAgTGlzdFdyYXBwZXIuc29ydChkaXJlY3RpdmVzLFxuICAgICAgICAgICAgICAgICAgICAgKGRpcjE6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSwgZGlyMjogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgIHZhciBkaXIxQ29tcCA9IGRpcjEuaXNDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgIHZhciBkaXIyQ29tcCA9IGRpcjIuaXNDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXIxQ29tcCAmJiAhZGlyMkNvbXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWRpcjFDb21wICYmIGRpcjJDb21wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlc0luZGV4LmdldChkaXIxKSAtIHRoaXMuZGlyZWN0aXZlc0luZGV4LmdldChkaXIyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgcmV0dXJuIGRpcmVjdGl2ZXM7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVEaXJlY3RpdmVBc3RzKGVsZW1lbnROYW1lOiBzdHJpbmcsIGRpcmVjdGl2ZXM6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBCb3VuZEVsZW1lbnRPckRpcmVjdGl2ZVByb3BlcnR5W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVFeHBvcnRBc1ZhcnM6IFZhcmlhYmxlQXN0W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogRGlyZWN0aXZlQXN0W10ge1xuICAgIHZhciBtYXRjaGVkVmFyaWFibGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgdmFyIGRpcmVjdGl2ZUFzdHMgPSBkaXJlY3RpdmVzLm1hcCgoZGlyZWN0aXZlOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEpID0+IHtcbiAgICAgIHZhciBob3N0UHJvcGVydGllczogQm91bmRFbGVtZW50UHJvcGVydHlBc3RbXSA9IFtdO1xuICAgICAgdmFyIGhvc3RFdmVudHM6IEJvdW5kRXZlbnRBc3RbXSA9IFtdO1xuICAgICAgdmFyIGRpcmVjdGl2ZVByb3BlcnRpZXM6IEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3RbXSA9IFtdO1xuICAgICAgdGhpcy5fY3JlYXRlRGlyZWN0aXZlSG9zdFByb3BlcnR5QXN0cyhlbGVtZW50TmFtZSwgZGlyZWN0aXZlLmhvc3RQcm9wZXJ0aWVzLCBzb3VyY2VTcGFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0UHJvcGVydGllcyk7XG4gICAgICB0aGlzLl9jcmVhdGVEaXJlY3RpdmVIb3N0RXZlbnRBc3RzKGRpcmVjdGl2ZS5ob3N0TGlzdGVuZXJzLCBzb3VyY2VTcGFuLCBob3N0RXZlbnRzKTtcbiAgICAgIHRoaXMuX2NyZWF0ZURpcmVjdGl2ZVByb3BlcnR5QXN0cyhkaXJlY3RpdmUuaW5wdXRzLCBwcm9wcywgZGlyZWN0aXZlUHJvcGVydGllcyk7XG4gICAgICB2YXIgZXhwb3J0QXNWYXJzID0gW107XG4gICAgICBwb3NzaWJsZUV4cG9ydEFzVmFycy5mb3JFYWNoKCh2YXJBc3QpID0+IHtcbiAgICAgICAgaWYgKCh2YXJBc3QudmFsdWUubGVuZ3RoID09PSAwICYmIGRpcmVjdGl2ZS5pc0NvbXBvbmVudCkgfHxcbiAgICAgICAgICAgIChkaXJlY3RpdmUuZXhwb3J0QXMgPT0gdmFyQXN0LnZhbHVlKSkge1xuICAgICAgICAgIGV4cG9ydEFzVmFycy5wdXNoKHZhckFzdCk7XG4gICAgICAgICAgbWF0Y2hlZFZhcmlhYmxlcy5hZGQodmFyQXN0Lm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgRGlyZWN0aXZlQXN0KGRpcmVjdGl2ZSwgZGlyZWN0aXZlUHJvcGVydGllcywgaG9zdFByb3BlcnRpZXMsIGhvc3RFdmVudHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRBc1ZhcnMsIHNvdXJjZVNwYW4pO1xuICAgIH0pO1xuICAgIHBvc3NpYmxlRXhwb3J0QXNWYXJzLmZvckVhY2goKHZhckFzdCkgPT4ge1xuICAgICAgaWYgKHZhckFzdC52YWx1ZS5sZW5ndGggPiAwICYmICFTZXRXcmFwcGVyLmhhcyhtYXRjaGVkVmFyaWFibGVzLCB2YXJBc3QubmFtZSkpIHtcbiAgICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoYFRoZXJlIGlzIG5vIGRpcmVjdGl2ZSB3aXRoIFwiZXhwb3J0QXNcIiBzZXQgdG8gXCIke3ZhckFzdC52YWx1ZX1cImAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhckFzdC5zb3VyY2VTcGFuKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGlyZWN0aXZlQXN0cztcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZURpcmVjdGl2ZUhvc3RQcm9wZXJ0eUFzdHMoZWxlbWVudE5hbWU6IHN0cmluZywgaG9zdFByb3BzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UHJvcGVydHlBc3RzOiBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdFtdKSB7XG4gICAgaWYgKGlzUHJlc2VudChob3N0UHJvcHMpKSB7XG4gICAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2goaG9zdFByb3BzLCAoZXhwcmVzc2lvbjogc3RyaW5nLCBwcm9wTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHZhciBleHByQXN0ID0gdGhpcy5fcGFyc2VCaW5kaW5nKGV4cHJlc3Npb24sIHNvdXJjZVNwYW4pO1xuICAgICAgICB0YXJnZXRQcm9wZXJ0eUFzdHMucHVzaChcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUVsZW1lbnRQcm9wZXJ0eUFzdChlbGVtZW50TmFtZSwgcHJvcE5hbWUsIGV4cHJBc3QsIHNvdXJjZVNwYW4pKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZURpcmVjdGl2ZUhvc3RFdmVudEFzdHMoaG9zdExpc3RlbmVyczoge1trZXk6IHN0cmluZ106IHN0cmluZ30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEV2ZW50QXN0czogQm91bmRFdmVudEFzdFtdKSB7XG4gICAgaWYgKGlzUHJlc2VudChob3N0TGlzdGVuZXJzKSkge1xuICAgICAgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKGhvc3RMaXN0ZW5lcnMsIChleHByZXNzaW9uOiBzdHJpbmcsIHByb3BOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5fcGFyc2VFdmVudChwcm9wTmFtZSwgZXhwcmVzc2lvbiwgc291cmNlU3BhbiwgW10sIHRhcmdldEV2ZW50QXN0cyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVEaXJlY3RpdmVQcm9wZXJ0eUFzdHMoZGlyZWN0aXZlUHJvcGVydGllczoge1trZXk6IHN0cmluZ106IHN0cmluZ30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZFByb3BzOiBCb3VuZEVsZW1lbnRPckRpcmVjdGl2ZVByb3BlcnR5W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRCb3VuZERpcmVjdGl2ZVByb3BzOiBCb3VuZERpcmVjdGl2ZVByb3BlcnR5QXN0W10pIHtcbiAgICBpZiAoaXNQcmVzZW50KGRpcmVjdGl2ZVByb3BlcnRpZXMpKSB7XG4gICAgICB2YXIgYm91bmRQcm9wc0J5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBCb3VuZEVsZW1lbnRPckRpcmVjdGl2ZVByb3BlcnR5PigpO1xuICAgICAgYm91bmRQcm9wcy5mb3JFYWNoKGJvdW5kUHJvcCA9PiB7XG4gICAgICAgIHZhciBwcmV2VmFsdWUgPSBib3VuZFByb3BzQnlOYW1lLmdldChib3VuZFByb3AubmFtZSk7XG4gICAgICAgIGlmIChpc0JsYW5rKHByZXZWYWx1ZSkgfHwgcHJldlZhbHVlLmlzTGl0ZXJhbCkge1xuICAgICAgICAgIC8vIGdpdmUgW2FdPVwiYlwiIGEgaGlnaGVyIHByZWNlZGVuY2UgdGhhbiBhPVwiYlwiIG9uIHRoZSBzYW1lIGVsZW1lbnRcbiAgICAgICAgICBib3VuZFByb3BzQnlOYW1lLnNldChib3VuZFByb3AubmFtZSwgYm91bmRQcm9wKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChkaXJlY3RpdmVQcm9wZXJ0aWVzLCAoZWxQcm9wOiBzdHJpbmcsIGRpclByb3A6IHN0cmluZykgPT4ge1xuICAgICAgICB2YXIgYm91bmRQcm9wID0gYm91bmRQcm9wc0J5TmFtZS5nZXQoZWxQcm9wKTtcblxuICAgICAgICAvLyBCaW5kaW5ncyBhcmUgb3B0aW9uYWwsIHNvIHRoaXMgYmluZGluZyBvbmx5IG5lZWRzIHRvIGJlIHNldCB1cCBpZiBhbiBleHByZXNzaW9uIGlzIGdpdmVuLlxuICAgICAgICBpZiAoaXNQcmVzZW50KGJvdW5kUHJvcCkpIHtcbiAgICAgICAgICB0YXJnZXRCb3VuZERpcmVjdGl2ZVByb3BzLnB1c2gobmV3IEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3QoXG4gICAgICAgICAgICAgIGRpclByb3AsIGJvdW5kUHJvcC5uYW1lLCBib3VuZFByb3AuZXhwcmVzc2lvbiwgYm91bmRQcm9wLnNvdXJjZVNwYW4pKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlRWxlbWVudFByb3BlcnR5QXN0cyhlbGVtZW50TmFtZTogc3RyaW5nLCBwcm9wczogQm91bmRFbGVtZW50T3JEaXJlY3RpdmVQcm9wZXJ0eVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IERpcmVjdGl2ZUFzdFtdKTogQm91bmRFbGVtZW50UHJvcGVydHlBc3RbXSB7XG4gICAgdmFyIGJvdW5kRWxlbWVudFByb3BzOiBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdFtdID0gW107XG4gICAgdmFyIGJvdW5kRGlyZWN0aXZlUHJvcHNJbmRleCA9IG5ldyBNYXA8c3RyaW5nLCBCb3VuZERpcmVjdGl2ZVByb3BlcnR5QXN0PigpO1xuICAgIGRpcmVjdGl2ZXMuZm9yRWFjaCgoZGlyZWN0aXZlOiBEaXJlY3RpdmVBc3QpID0+IHtcbiAgICAgIGRpcmVjdGl2ZS5pbnB1dHMuZm9yRWFjaCgocHJvcDogQm91bmREaXJlY3RpdmVQcm9wZXJ0eUFzdCkgPT4ge1xuICAgICAgICBib3VuZERpcmVjdGl2ZVByb3BzSW5kZXguc2V0KHByb3AudGVtcGxhdGVOYW1lLCBwcm9wKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHByb3BzLmZvckVhY2goKHByb3A6IEJvdW5kRWxlbWVudE9yRGlyZWN0aXZlUHJvcGVydHkpID0+IHtcbiAgICAgIGlmICghcHJvcC5pc0xpdGVyYWwgJiYgaXNCbGFuayhib3VuZERpcmVjdGl2ZVByb3BzSW5kZXguZ2V0KHByb3AubmFtZSkpKSB7XG4gICAgICAgIGJvdW5kRWxlbWVudFByb3BzLnB1c2godGhpcy5fY3JlYXRlRWxlbWVudFByb3BlcnR5QXN0KGVsZW1lbnROYW1lLCBwcm9wLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3AuZXhwcmVzc2lvbiwgcHJvcC5zb3VyY2VTcGFuKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGJvdW5kRWxlbWVudFByb3BzO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlRWxlbWVudFByb3BlcnR5QXN0KGVsZW1lbnROYW1lOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgYXN0OiBBU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCB7XG4gICAgdmFyIHVuaXQgPSBudWxsO1xuICAgIHZhciBiaW5kaW5nVHlwZTtcbiAgICB2YXIgYm91bmRQcm9wZXJ0eU5hbWU7XG4gICAgdmFyIHBhcnRzID0gbmFtZS5zcGxpdChQUk9QRVJUWV9QQVJUU19TRVBBUkFUT1IpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGJvdW5kUHJvcGVydHlOYW1lID0gdGhpcy5fc2NoZW1hUmVnaXN0cnkuZ2V0TWFwcGVkUHJvcE5hbWUocGFydHNbMF0pO1xuICAgICAgYmluZGluZ1R5cGUgPSBQcm9wZXJ0eUJpbmRpbmdUeXBlLlByb3BlcnR5O1xuICAgICAgaWYgKCF0aGlzLl9zY2hlbWFSZWdpc3RyeS5oYXNQcm9wZXJ0eShlbGVtZW50TmFtZSwgYm91bmRQcm9wZXJ0eU5hbWUpKSB7XG4gICAgICAgIHRoaXMuX3JlcG9ydEVycm9yKFxuICAgICAgICAgICAgYENhbid0IGJpbmQgdG8gJyR7Ym91bmRQcm9wZXJ0eU5hbWV9JyBzaW5jZSBpdCBpc24ndCBhIGtub3duIG5hdGl2ZSBwcm9wZXJ0eWAsXG4gICAgICAgICAgICBzb3VyY2VTcGFuKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBhcnRzWzBdID09IEFUVFJJQlVURV9QUkVGSVgpIHtcbiAgICAgICAgYm91bmRQcm9wZXJ0eU5hbWUgPSBwYXJ0c1sxXTtcbiAgICAgICAgbGV0IG5zU2VwYXJhdG9ySWR4ID0gYm91bmRQcm9wZXJ0eU5hbWUuaW5kZXhPZignOicpO1xuICAgICAgICBpZiAobnNTZXBhcmF0b3JJZHggPiAtMSkge1xuICAgICAgICAgIGxldCBucyA9IGJvdW5kUHJvcGVydHlOYW1lLnN1YnN0cmluZygwLCBuc1NlcGFyYXRvcklkeCk7XG4gICAgICAgICAgbGV0IG5hbWUgPSBib3VuZFByb3BlcnR5TmFtZS5zdWJzdHJpbmcobnNTZXBhcmF0b3JJZHggKyAxKTtcbiAgICAgICAgICBib3VuZFByb3BlcnR5TmFtZSA9IG1lcmdlTnNBbmROYW1lKG5zLCBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBiaW5kaW5nVHlwZSA9IFByb3BlcnR5QmluZGluZ1R5cGUuQXR0cmlidXRlO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0c1swXSA9PSBDTEFTU19QUkVGSVgpIHtcbiAgICAgICAgYm91bmRQcm9wZXJ0eU5hbWUgPSBwYXJ0c1sxXTtcbiAgICAgICAgYmluZGluZ1R5cGUgPSBQcm9wZXJ0eUJpbmRpbmdUeXBlLkNsYXNzO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0c1swXSA9PSBTVFlMRV9QUkVGSVgpIHtcbiAgICAgICAgdW5pdCA9IHBhcnRzLmxlbmd0aCA+IDIgPyBwYXJ0c1syXSA6IG51bGw7XG4gICAgICAgIGJvdW5kUHJvcGVydHlOYW1lID0gcGFydHNbMV07XG4gICAgICAgIGJpbmRpbmdUeXBlID0gUHJvcGVydHlCaW5kaW5nVHlwZS5TdHlsZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3JlcG9ydEVycm9yKGBJbnZhbGlkIHByb3BlcnR5IG5hbWUgJyR7bmFtZX0nYCwgc291cmNlU3Bhbik7XG4gICAgICAgIGJpbmRpbmdUeXBlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEJvdW5kRWxlbWVudFByb3BlcnR5QXN0KGJvdW5kUHJvcGVydHlOYW1lLCBiaW5kaW5nVHlwZSwgYXN0LCB1bml0LCBzb3VyY2VTcGFuKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBfZmluZENvbXBvbmVudERpcmVjdGl2ZU5hbWVzKGRpcmVjdGl2ZXM6IERpcmVjdGl2ZUFzdFtdKTogc3RyaW5nW10ge1xuICAgIHZhciBjb21wb25lbnRUeXBlTmFtZXM6IHN0cmluZ1tdID0gW107XG4gICAgZGlyZWN0aXZlcy5mb3JFYWNoKGRpcmVjdGl2ZSA9PiB7XG4gICAgICB2YXIgdHlwZU5hbWUgPSBkaXJlY3RpdmUuZGlyZWN0aXZlLnR5cGUubmFtZTtcbiAgICAgIGlmIChkaXJlY3RpdmUuZGlyZWN0aXZlLmlzQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbXBvbmVudFR5cGVOYW1lcy5wdXNoKHR5cGVOYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY29tcG9uZW50VHlwZU5hbWVzO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXNzZXJ0T25seU9uZUNvbXBvbmVudChkaXJlY3RpdmVzOiBEaXJlY3RpdmVBc3RbXSwgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7XG4gICAgdmFyIGNvbXBvbmVudFR5cGVOYW1lcyA9IHRoaXMuX2ZpbmRDb21wb25lbnREaXJlY3RpdmVOYW1lcyhkaXJlY3RpdmVzKTtcbiAgICBpZiAoY29tcG9uZW50VHlwZU5hbWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuX3JlcG9ydEVycm9yKGBNb3JlIHRoYW4gb25lIGNvbXBvbmVudDogJHtjb21wb25lbnRUeXBlTmFtZXMuam9pbignLCcpfWAsIHNvdXJjZVNwYW4pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2VydE5vQ29tcG9uZW50c05vckVsZW1lbnRCaW5kaW5nc09uVGVtcGxhdGUoZGlyZWN0aXZlczogRGlyZWN0aXZlQXN0W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFByb3BzOiBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge1xuICAgIHZhciBjb21wb25lbnRUeXBlTmFtZXM6IHN0cmluZ1tdID0gdGhpcy5fZmluZENvbXBvbmVudERpcmVjdGl2ZU5hbWVzKGRpcmVjdGl2ZXMpO1xuICAgIGlmIChjb21wb25lbnRUeXBlTmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoYENvbXBvbmVudHMgb24gYW4gZW1iZWRkZWQgdGVtcGxhdGU6ICR7Y29tcG9uZW50VHlwZU5hbWVzLmpvaW4oJywnKX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlU3Bhbik7XG4gICAgfVxuICAgIGVsZW1lbnRQcm9wcy5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgdGhpcy5fcmVwb3J0RXJyb3IoXG4gICAgICAgICAgYFByb3BlcnR5IGJpbmRpbmcgJHtwcm9wLm5hbWV9IG5vdCB1c2VkIGJ5IGFueSBkaXJlY3RpdmUgb24gYW4gZW1iZWRkZWQgdGVtcGxhdGVgLFxuICAgICAgICAgIHNvdXJjZVNwYW4pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXNzZXJ0QWxsRXZlbnRzUHVibGlzaGVkQnlEaXJlY3RpdmVzKGRpcmVjdGl2ZXM6IERpcmVjdGl2ZUFzdFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzOiBCb3VuZEV2ZW50QXN0W10pIHtcbiAgICB2YXIgYWxsRGlyZWN0aXZlRXZlbnRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZGlyZWN0aXZlcy5mb3JFYWNoKGRpcmVjdGl2ZSA9PiB7XG4gICAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2goZGlyZWN0aXZlLmRpcmVjdGl2ZS5vdXRwdXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudE5hbWU6IHN0cmluZywgXykgPT4geyBhbGxEaXJlY3RpdmVFdmVudHMuYWRkKGV2ZW50TmFtZSk7IH0pO1xuICAgIH0pO1xuICAgIGV2ZW50cy5mb3JFYWNoKGV2ZW50ID0+IHtcbiAgICAgIGlmIChpc1ByZXNlbnQoZXZlbnQudGFyZ2V0KSB8fCAhU2V0V3JhcHBlci5oYXMoYWxsRGlyZWN0aXZlRXZlbnRzLCBldmVudC5uYW1lKSkge1xuICAgICAgICB0aGlzLl9yZXBvcnRFcnJvcihcbiAgICAgICAgICAgIGBFdmVudCBiaW5kaW5nICR7ZXZlbnQuZnVsbE5hbWV9IG5vdCBlbWl0dGVkIGJ5IGFueSBkaXJlY3RpdmUgb24gYW4gZW1iZWRkZWQgdGVtcGxhdGVgLFxuICAgICAgICAgICAgZXZlbnQuc291cmNlU3Bhbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgTm9uQmluZGFibGVWaXNpdG9yIGltcGxlbWVudHMgSHRtbEFzdFZpc2l0b3Ige1xuICB2aXNpdEVsZW1lbnQoYXN0OiBIdG1sRWxlbWVudEFzdCwgY29tcG9uZW50OiBDb21wb25lbnQpOiBFbGVtZW50QXN0IHtcbiAgICB2YXIgcHJlcGFyc2VkRWxlbWVudCA9IHByZXBhcnNlRWxlbWVudChhc3QpO1xuICAgIGlmIChwcmVwYXJzZWRFbGVtZW50LnR5cGUgPT09IFByZXBhcnNlZEVsZW1lbnRUeXBlLlNDUklQVCB8fFxuICAgICAgICBwcmVwYXJzZWRFbGVtZW50LnR5cGUgPT09IFByZXBhcnNlZEVsZW1lbnRUeXBlLlNUWUxFIHx8XG4gICAgICAgIHByZXBhcnNlZEVsZW1lbnQudHlwZSA9PT0gUHJlcGFyc2VkRWxlbWVudFR5cGUuU1RZTEVTSEVFVCkge1xuICAgICAgLy8gU2tpcHBpbmcgPHNjcmlwdD4gZm9yIHNlY3VyaXR5IHJlYXNvbnNcbiAgICAgIC8vIFNraXBwaW5nIDxzdHlsZT4gYW5kIHN0eWxlc2hlZXRzIGFzIHdlIGFscmVhZHkgcHJvY2Vzc2VkIHRoZW1cbiAgICAgIC8vIGluIHRoZSBTdHlsZUNvbXBpbGVyXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgYXR0ck5hbWVBbmRWYWx1ZXMgPSBhc3QuYXR0cnMubWFwKGF0dHJBc3QgPT4gW2F0dHJBc3QubmFtZSwgYXR0ckFzdC52YWx1ZV0pO1xuICAgIHZhciBzZWxlY3RvciA9IGNyZWF0ZUVsZW1lbnRDc3NTZWxlY3Rvcihhc3QubmFtZSwgYXR0ck5hbWVBbmRWYWx1ZXMpO1xuICAgIHZhciBuZ0NvbnRlbnRJbmRleCA9IGNvbXBvbmVudC5maW5kTmdDb250ZW50SW5kZXgoc2VsZWN0b3IpO1xuICAgIHZhciBjaGlsZHJlbiA9IGh0bWxWaXNpdEFsbCh0aGlzLCBhc3QuY2hpbGRyZW4sIEVNUFRZX0NPTVBPTkVOVCk7XG4gICAgcmV0dXJuIG5ldyBFbGVtZW50QXN0KGFzdC5uYW1lLCBodG1sVmlzaXRBbGwodGhpcywgYXN0LmF0dHJzKSwgW10sIFtdLCBbXSwgW10sIGNoaWxkcmVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0NvbnRlbnRJbmRleCwgYXN0LnNvdXJjZVNwYW4pO1xuICB9XG4gIHZpc2l0Q29tbWVudChhc3Q6IEh0bWxDb21tZW50QXN0LCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICB2aXNpdEF0dHIoYXN0OiBIdG1sQXR0ckFzdCwgY29udGV4dDogYW55KTogQXR0ckFzdCB7XG4gICAgcmV0dXJuIG5ldyBBdHRyQXN0KGFzdC5uYW1lLCBhc3QudmFsdWUsIGFzdC5zb3VyY2VTcGFuKTtcbiAgfVxuICB2aXNpdFRleHQoYXN0OiBIdG1sVGV4dEFzdCwgY29tcG9uZW50OiBDb21wb25lbnQpOiBUZXh0QXN0IHtcbiAgICB2YXIgbmdDb250ZW50SW5kZXggPSBjb21wb25lbnQuZmluZE5nQ29udGVudEluZGV4KFRFWFRfQ1NTX1NFTEVDVE9SKTtcbiAgICByZXR1cm4gbmV3IFRleHRBc3QoYXN0LnZhbHVlLCBuZ0NvbnRlbnRJbmRleCwgYXN0LnNvdXJjZVNwYW4pO1xuICB9XG59XG5cbmNsYXNzIEJvdW5kRWxlbWVudE9yRGlyZWN0aXZlUHJvcGVydHkge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgZXhwcmVzc2lvbjogQVNULCBwdWJsaWMgaXNMaXRlcmFsOiBib29sZWFuLFxuICAgICAgICAgICAgICBwdWJsaWMgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRDbGFzc2VzKGNsYXNzQXR0clZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBTdHJpbmdXcmFwcGVyLnNwbGl0KGNsYXNzQXR0clZhbHVlLnRyaW0oKSwgL1xccysvZyk7XG59XG5cbmNsYXNzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBjcmVhdGUoZGlyZWN0aXZlczogRGlyZWN0aXZlQXN0W10pOiBDb21wb25lbnQge1xuICAgIGlmIChkaXJlY3RpdmVzLmxlbmd0aCA9PT0gMCB8fCAhZGlyZWN0aXZlc1swXS5kaXJlY3RpdmUuaXNDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiBFTVBUWV9DT01QT05FTlQ7XG4gICAgfVxuICAgIHZhciBtYXRjaGVyID0gbmV3IFNlbGVjdG9yTWF0Y2hlcigpO1xuICAgIHZhciBuZ0NvbnRlbnRTZWxlY3RvcnMgPSBkaXJlY3RpdmVzWzBdLmRpcmVjdGl2ZS50ZW1wbGF0ZS5uZ0NvbnRlbnRTZWxlY3RvcnM7XG4gICAgdmFyIHdpbGRjYXJkTmdDb250ZW50SW5kZXggPSBudWxsO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmdDb250ZW50U2VsZWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VsZWN0b3IgPSBuZ0NvbnRlbnRTZWxlY3RvcnNbaV07XG4gICAgICBpZiAoU3RyaW5nV3JhcHBlci5lcXVhbHMoc2VsZWN0b3IsICcqJykpIHtcbiAgICAgICAgd2lsZGNhcmROZ0NvbnRlbnRJbmRleCA9IGk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXRjaGVyLmFkZFNlbGVjdGFibGVzKENzc1NlbGVjdG9yLnBhcnNlKG5nQ29udGVudFNlbGVjdG9yc1tpXSksIGkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IENvbXBvbmVudChtYXRjaGVyLCB3aWxkY2FyZE5nQ29udGVudEluZGV4KTtcbiAgfVxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmdDb250ZW50SW5kZXhNYXRjaGVyOiBTZWxlY3Rvck1hdGNoZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyB3aWxkY2FyZE5nQ29udGVudEluZGV4OiBudW1iZXIpIHt9XG5cbiAgZmluZE5nQ29udGVudEluZGV4KHNlbGVjdG9yOiBDc3NTZWxlY3Rvcik6IG51bWJlciB7XG4gICAgdmFyIG5nQ29udGVudEluZGljZXMgPSBbXTtcbiAgICB0aGlzLm5nQ29udGVudEluZGV4TWF0Y2hlci5tYXRjaChcbiAgICAgICAgc2VsZWN0b3IsIChzZWxlY3RvciwgbmdDb250ZW50SW5kZXgpID0+IHsgbmdDb250ZW50SW5kaWNlcy5wdXNoKG5nQ29udGVudEluZGV4KTsgfSk7XG4gICAgTGlzdFdyYXBwZXIuc29ydChuZ0NvbnRlbnRJbmRpY2VzKTtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMud2lsZGNhcmROZ0NvbnRlbnRJbmRleCkpIHtcbiAgICAgIG5nQ29udGVudEluZGljZXMucHVzaCh0aGlzLndpbGRjYXJkTmdDb250ZW50SW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gbmdDb250ZW50SW5kaWNlcy5sZW5ndGggPiAwID8gbmdDb250ZW50SW5kaWNlc1swXSA6IG51bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudENzc1NlbGVjdG9yKGVsZW1lbnROYW1lOiBzdHJpbmcsIG1hdGNoYWJsZUF0dHJzOiBzdHJpbmdbXVtdKTogQ3NzU2VsZWN0b3Ige1xuICB2YXIgY3NzU2VsZWN0b3IgPSBuZXcgQ3NzU2VsZWN0b3IoKTtcbiAgbGV0IGVsTmFtZU5vTnMgPSBzcGxpdE5zTmFtZShlbGVtZW50TmFtZSlbMV07XG5cbiAgY3NzU2VsZWN0b3Iuc2V0RWxlbWVudChlbE5hbWVOb05zKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG1hdGNoYWJsZUF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGF0dHJOYW1lID0gbWF0Y2hhYmxlQXR0cnNbaV1bMF07XG4gICAgbGV0IGF0dHJOYW1lTm9OcyA9IHNwbGl0TnNOYW1lKGF0dHJOYW1lKVsxXTtcbiAgICBsZXQgYXR0clZhbHVlID0gbWF0Y2hhYmxlQXR0cnNbaV1bMV07XG5cbiAgICBjc3NTZWxlY3Rvci5hZGRBdHRyaWJ1dGUoYXR0ck5hbWVOb05zLCBhdHRyVmFsdWUpO1xuICAgIGlmIChhdHRyTmFtZS50b0xvd2VyQ2FzZSgpID09IENMQVNTX0FUVFIpIHtcbiAgICAgIHZhciBjbGFzc2VzID0gc3BsaXRDbGFzc2VzKGF0dHJWYWx1ZSk7XG4gICAgICBjbGFzc2VzLmZvckVhY2goY2xhc3NOYW1lID0+IGNzc1NlbGVjdG9yLmFkZENsYXNzTmFtZShjbGFzc05hbWUpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNzc1NlbGVjdG9yO1xufVxuXG52YXIgRU1QVFlfQ09NUE9ORU5UID0gbmV3IENvbXBvbmVudChuZXcgU2VsZWN0b3JNYXRjaGVyKCksIG51bGwpO1xudmFyIE5PTl9CSU5EQUJMRV9WSVNJVE9SID0gbmV3IE5vbkJpbmRhYmxlVmlzaXRvcigpO1xuXG5cbmV4cG9ydCBjbGFzcyBQaXBlQ29sbGVjdG9yIGV4dGVuZHMgUmVjdXJzaXZlQXN0VmlzaXRvciB7XG4gIHBpcGVzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICB2aXNpdFBpcGUoYXN0OiBCaW5kaW5nUGlwZSk6IGFueSB7XG4gICAgdGhpcy5waXBlcy5hZGQoYXN0Lm5hbWUpO1xuICAgIGFzdC5leHAudmlzaXQodGhpcyk7XG4gICAgdGhpcy52aXNpdEFsbChhc3QuYXJncyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';// Some of the code comes from WebComponents.JS\r\n// https://github.com/webcomponents/webcomponentsjs/blob/master/src/HTMLImports/path.js\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar StyleWithImports = (function () {\r\n function StyleWithImports(style, styleUrls) {\r\n this.style = style;\r\n this.styleUrls = styleUrls;\r\n }\r\n return StyleWithImports;\r\n})();\r\nexports.StyleWithImports = StyleWithImports;\r\nfunction isStyleUrlResolvable(url) {\r\n if (lang_1.isBlank(url) || url.length === 0 || url[0] == '/')\r\n return false;\r\n var schemeMatch = lang_1.RegExpWrapper.firstMatch(_urlWithSchemaRe, url);\r\n return lang_1.isBlank(schemeMatch) || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset';\r\n}\r\nexports.isStyleUrlResolvable = isStyleUrlResolvable;\r\n/**\r\n * Rewrites stylesheets by resolving and removing the @import urls that\r\n * are either relative or don't have a `package:` scheme\r\n */\r\nfunction extractStyleUrls(resolver, baseUrl, cssText) {\r\n var foundUrls = [];\r\n var modifiedCssText = lang_1.StringWrapper.replaceAllMapped(cssText, _cssImportRe, function (m) {\r\n var url = lang_1.isPresent(m[1]) ? m[1] : m[2];\r\n if (!isStyleUrlResolvable(url)) {\r\n // Do not attempt to resolve non-package absolute URLs with URI scheme\r\n return m[0];\r\n }\r\n foundUrls.push(resolver.resolve(baseUrl, url));\r\n return '';\r\n });\r\n return new StyleWithImports(modifiedCssText, foundUrls);\r\n}\r\nexports.extractStyleUrls = extractStyleUrls;\r\nvar _cssImportRe = /@import\\s+(?:url\\()?\\s*(?:(?:['\"]([^'\"]*))|([^;\\)\\s]*))[^;]*;?/g;\r\n// TODO: can't use /^[^:/?#.]+:/g due to clang-format bug:\r\n// https://github.com/angular/angular/issues/4596\r\nvar _urlWithSchemaRe = /^([a-zA-Z\\-\\+\\.]+):/g;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVfdXJsX3Jlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3N0eWxlX3VybF9yZXNvbHZlci50cyJdLCJuYW1lcyI6WyJTdHlsZVdpdGhJbXBvcnRzIiwiU3R5bGVXaXRoSW1wb3J0cy5jb25zdHJ1Y3RvciIsImlzU3R5bGVVcmxSZXNvbHZhYmxlIiwiZXh0cmFjdFN0eWxlVXJscyJdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHVGQUF1RjtBQUV2RixxQkFBdUUsMEJBQTBCLENBQUMsQ0FBQTtBQUdsRztJQUNFQSwwQkFBbUJBLEtBQWFBLEVBQVNBLFNBQW1CQTtRQUF6Q0MsVUFBS0EsR0FBTEEsS0FBS0EsQ0FBUUE7UUFBU0EsY0FBU0EsR0FBVEEsU0FBU0EsQ0FBVUE7SUFBR0EsQ0FBQ0E7SUFDbEVELHVCQUFDQTtBQUFEQSxDQUFDQSxBQUZELElBRUM7QUFGWSx3QkFBZ0IsbUJBRTVCLENBQUE7QUFFRCw4QkFBcUMsR0FBVztJQUM5Q0UsRUFBRUEsQ0FBQ0EsQ0FBQ0EsY0FBT0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsR0FBR0EsQ0FBQ0EsTUFBTUEsS0FBS0EsQ0FBQ0EsSUFBSUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsR0FBR0EsQ0FBQ0E7UUFBQ0EsTUFBTUEsQ0FBQ0EsS0FBS0EsQ0FBQ0E7SUFDcEVBLElBQUlBLFdBQVdBLEdBQUdBLG9CQUFhQSxDQUFDQSxVQUFVQSxDQUFDQSxnQkFBZ0JBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBO0lBQ2xFQSxNQUFNQSxDQUFDQSxjQUFPQSxDQUFDQSxXQUFXQSxDQUFDQSxJQUFJQSxXQUFXQSxDQUFDQSxDQUFDQSxDQUFDQSxJQUFJQSxTQUFTQSxJQUFJQSxXQUFXQSxDQUFDQSxDQUFDQSxDQUFDQSxJQUFJQSxPQUFPQSxDQUFDQTtBQUMxRkEsQ0FBQ0E7QUFKZSw0QkFBb0IsdUJBSW5DLENBQUE7QUFFRDs7O0dBR0c7QUFDSCwwQkFBaUMsUUFBcUIsRUFBRSxPQUFlLEVBQ3RDLE9BQWU7SUFDOUNDLElBQUlBLFNBQVNBLEdBQUdBLEVBQUVBLENBQUNBO0lBQ25CQSxJQUFJQSxlQUFlQSxHQUFHQSxvQkFBYUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxPQUFPQSxFQUFFQSxZQUFZQSxFQUFFQSxVQUFDQSxDQUFDQTtRQUM1RUEsSUFBSUEsR0FBR0EsR0FBR0EsZ0JBQVNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQ3hDQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxvQkFBb0JBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQy9CQSxzRUFBc0VBO1lBQ3RFQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNkQSxDQUFDQTtRQUNEQSxTQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxPQUFPQSxDQUFDQSxPQUFPQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUMvQ0EsTUFBTUEsQ0FBQ0EsRUFBRUEsQ0FBQ0E7SUFDWkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDSEEsTUFBTUEsQ0FBQ0EsSUFBSUEsZ0JBQWdCQSxDQUFDQSxlQUFlQSxFQUFFQSxTQUFTQSxDQUFDQSxDQUFDQTtBQUMxREEsQ0FBQ0E7QUFiZSx3QkFBZ0IsbUJBYS9CLENBQUE7QUFFRCxJQUFJLFlBQVksR0FBRyxpRUFBaUUsQ0FBQztBQUNyRiwwREFBMEQ7QUFDMUQsdURBQXVEO0FBQ3ZELElBQUksZ0JBQWdCLEdBQUcsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTb21lIG9mIHRoZSBjb2RlIGNvbWVzIGZyb20gV2ViQ29tcG9uZW50cy5KU1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYmNvbXBvbmVudHMvd2ViY29tcG9uZW50c2pzL2Jsb2IvbWFzdGVyL3NyYy9IVE1MSW1wb3J0cy9wYXRoLmpzXG5cbmltcG9ydCB7UmVnRXhwLCBSZWdFeHBXcmFwcGVyLCBTdHJpbmdXcmFwcGVyLCBpc1ByZXNlbnQsIGlzQmxhbmt9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1VybFJlc29sdmVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvdXJsX3Jlc29sdmVyJztcblxuZXhwb3J0IGNsYXNzIFN0eWxlV2l0aEltcG9ydHMge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3R5bGU6IHN0cmluZywgcHVibGljIHN0eWxlVXJsczogc3RyaW5nW10pIHt9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0eWxlVXJsUmVzb2x2YWJsZSh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoaXNCbGFuayh1cmwpIHx8IHVybC5sZW5ndGggPT09IDAgfHwgdXJsWzBdID09ICcvJykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2NoZW1lTWF0Y2ggPSBSZWdFeHBXcmFwcGVyLmZpcnN0TWF0Y2goX3VybFdpdGhTY2hlbWFSZSwgdXJsKTtcbiAgcmV0dXJuIGlzQmxhbmsoc2NoZW1lTWF0Y2gpIHx8IHNjaGVtZU1hdGNoWzFdID09ICdwYWNrYWdlJyB8fCBzY2hlbWVNYXRjaFsxXSA9PSAnYXNzZXQnO1xufVxuXG4vKipcbiAqIFJld3JpdGVzIHN0eWxlc2hlZXRzIGJ5IHJlc29sdmluZyBhbmQgcmVtb3ZpbmcgdGhlIEBpbXBvcnQgdXJscyB0aGF0XG4gKiBhcmUgZWl0aGVyIHJlbGF0aXZlIG9yIGRvbid0IGhhdmUgYSBgcGFja2FnZTpgIHNjaGVtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFN0eWxlVXJscyhyZXNvbHZlcjogVXJsUmVzb2x2ZXIsIGJhc2VVcmw6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc1RleHQ6IHN0cmluZyk6IFN0eWxlV2l0aEltcG9ydHMge1xuICB2YXIgZm91bmRVcmxzID0gW107XG4gIHZhciBtb2RpZmllZENzc1RleHQgPSBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGxNYXBwZWQoY3NzVGV4dCwgX2Nzc0ltcG9ydFJlLCAobSkgPT4ge1xuICAgIHZhciB1cmwgPSBpc1ByZXNlbnQobVsxXSkgPyBtWzFdIDogbVsyXTtcbiAgICBpZiAoIWlzU3R5bGVVcmxSZXNvbHZhYmxlKHVybCkpIHtcbiAgICAgIC8vIERvIG5vdCBhdHRlbXB0IHRvIHJlc29sdmUgbm9uLXBhY2thZ2UgYWJzb2x1dGUgVVJMcyB3aXRoIFVSSSBzY2hlbWVcbiAgICAgIHJldHVybiBtWzBdO1xuICAgIH1cbiAgICBmb3VuZFVybHMucHVzaChyZXNvbHZlci5yZXNvbHZlKGJhc2VVcmwsIHVybCkpO1xuICAgIHJldHVybiAnJztcbiAgfSk7XG4gIHJldHVybiBuZXcgU3R5bGVXaXRoSW1wb3J0cyhtb2RpZmllZENzc1RleHQsIGZvdW5kVXJscyk7XG59XG5cbnZhciBfY3NzSW1wb3J0UmUgPSAvQGltcG9ydFxccysoPzp1cmxcXCgpP1xccyooPzooPzpbJ1wiXShbXidcIl0qKSl8KFteO1xcKVxcc10qKSlbXjtdKjs/L2c7XG4vLyBUT0RPOiBjYW4ndCB1c2UgL15bXjovPyMuXSs6L2cgZHVlIHRvIGNsYW5nLWZvcm1hdCBidWc6XG4vLyAgICAgICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy80NTk2XG52YXIgX3VybFdpdGhTY2hlbWFSZSA9IC9eKFthLXpBLVpcXC1cXCtcXC5dKyk6L2c7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar HtmlTextAst = (function () {\r\n function HtmlTextAst(value, sourceSpan) {\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n HtmlTextAst.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); };\r\n return HtmlTextAst;\r\n})();\r\nexports.HtmlTextAst = HtmlTextAst;\r\nvar HtmlAttrAst = (function () {\r\n function HtmlAttrAst(name, value, sourceSpan) {\r\n this.name = name;\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n HtmlAttrAst.prototype.visit = function (visitor, context) { return visitor.visitAttr(this, context); };\r\n return HtmlAttrAst;\r\n})();\r\nexports.HtmlAttrAst = HtmlAttrAst;\r\nvar HtmlElementAst = (function () {\r\n function HtmlElementAst(name, attrs, children, sourceSpan) {\r\n this.name = name;\r\n this.attrs = attrs;\r\n this.children = children;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n HtmlElementAst.prototype.visit = function (visitor, context) { return visitor.visitElement(this, context); };\r\n return HtmlElementAst;\r\n})();\r\nexports.HtmlElementAst = HtmlElementAst;\r\nvar HtmlCommentAst = (function () {\r\n function HtmlCommentAst(value, sourceSpan) {\r\n this.value = value;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n HtmlCommentAst.prototype.visit = function (visitor, context) { return visitor.visitComment(this, context); };\r\n return HtmlCommentAst;\r\n})();\r\nexports.HtmlCommentAst = HtmlCommentAst;\r\nfunction htmlVisitAll(visitor, asts, context) {\r\n if (context === void 0) { context = null; }\r\n var result = [];\r\n asts.forEach(function (ast) {\r\n var astResult = ast.visit(visitor, context);\r\n if (lang_1.isPresent(astResult)) {\r\n result.push(astResult);\r\n }\r\n });\r\n return result;\r\n}\r\nexports.htmlVisitAll = htmlVisitAll;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbF9hc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tcGlsZXIvaHRtbF9hc3QudHMiXSwibmFtZXMiOlsiSHRtbFRleHRBc3QiLCJIdG1sVGV4dEFzdC5jb25zdHJ1Y3RvciIsIkh0bWxUZXh0QXN0LnZpc2l0IiwiSHRtbEF0dHJBc3QiLCJIdG1sQXR0ckFzdC5jb25zdHJ1Y3RvciIsIkh0bWxBdHRyQXN0LnZpc2l0IiwiSHRtbEVsZW1lbnRBc3QiLCJIdG1sRWxlbWVudEFzdC5jb25zdHJ1Y3RvciIsIkh0bWxFbGVtZW50QXN0LnZpc2l0IiwiSHRtbENvbW1lbnRBc3QiLCJIdG1sQ29tbWVudEFzdC5jb25zdHJ1Y3RvciIsIkh0bWxDb21tZW50QXN0LnZpc2l0IiwiaHRtbFZpc2l0QWxsIl0sIm1hcHBpbmdzIjoiQUFBQSxxQkFBd0IsMEJBQTBCLENBQUMsQ0FBQTtBQVNuRDtJQUNFQSxxQkFBbUJBLEtBQWFBLEVBQVNBLFVBQTJCQTtRQUFqREMsVUFBS0EsR0FBTEEsS0FBS0EsQ0FBUUE7UUFBU0EsZUFBVUEsR0FBVkEsVUFBVUEsQ0FBaUJBO0lBQUdBLENBQUNBO0lBQ3hFRCwyQkFBS0EsR0FBTEEsVUFBTUEsT0FBdUJBLEVBQUVBLE9BQVlBLElBQVNFLE1BQU1BLENBQUNBLE9BQU9BLENBQUNBLFNBQVNBLENBQUNBLElBQUlBLEVBQUVBLE9BQU9BLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQ2hHRixrQkFBQ0E7QUFBREEsQ0FBQ0EsQUFIRCxJQUdDO0FBSFksbUJBQVcsY0FHdkIsQ0FBQTtBQUVEO0lBQ0VHLHFCQUFtQkEsSUFBWUEsRUFBU0EsS0FBYUEsRUFBU0EsVUFBMkJBO1FBQXRFQyxTQUFJQSxHQUFKQSxJQUFJQSxDQUFRQTtRQUFTQSxVQUFLQSxHQUFMQSxLQUFLQSxDQUFRQTtRQUFTQSxlQUFVQSxHQUFWQSxVQUFVQSxDQUFpQkE7SUFBR0EsQ0FBQ0E7SUFDN0ZELDJCQUFLQSxHQUFMQSxVQUFNQSxPQUF1QkEsRUFBRUEsT0FBWUEsSUFBU0UsTUFBTUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsSUFBSUEsRUFBRUEsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDaEdGLGtCQUFDQTtBQUFEQSxDQUFDQSxBQUhELElBR0M7QUFIWSxtQkFBVyxjQUd2QixDQUFBO0FBRUQ7SUFDRUcsd0JBQW1CQSxJQUFZQSxFQUFTQSxLQUFvQkEsRUFBU0EsUUFBbUJBLEVBQ3JFQSxVQUEyQkE7UUFEM0JDLFNBQUlBLEdBQUpBLElBQUlBLENBQVFBO1FBQVNBLFVBQUtBLEdBQUxBLEtBQUtBLENBQWVBO1FBQVNBLGFBQVFBLEdBQVJBLFFBQVFBLENBQVdBO1FBQ3JFQSxlQUFVQSxHQUFWQSxVQUFVQSxDQUFpQkE7SUFBR0EsQ0FBQ0E7SUFDbERELDhCQUFLQSxHQUFMQSxVQUFNQSxPQUF1QkEsRUFBRUEsT0FBWUEsSUFBU0UsTUFBTUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsWUFBWUEsQ0FBQ0EsSUFBSUEsRUFBRUEsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDbkdGLHFCQUFDQTtBQUFEQSxDQUFDQSxBQUpELElBSUM7QUFKWSxzQkFBYyxpQkFJMUIsQ0FBQTtBQUVEO0lBQ0VHLHdCQUFtQkEsS0FBYUEsRUFBU0EsVUFBMkJBO1FBQWpEQyxVQUFLQSxHQUFMQSxLQUFLQSxDQUFRQTtRQUFTQSxlQUFVQSxHQUFWQSxVQUFVQSxDQUFpQkE7SUFBR0EsQ0FBQ0E7SUFDeEVELDhCQUFLQSxHQUFMQSxVQUFNQSxPQUF1QkEsRUFBRUEsT0FBWUEsSUFBU0UsTUFBTUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsWUFBWUEsQ0FBQ0EsSUFBSUEsRUFBRUEsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDbkdGLHFCQUFDQTtBQUFEQSxDQUFDQSxBQUhELElBR0M7QUFIWSxzQkFBYyxpQkFHMUIsQ0FBQTtBQVNELHNCQUE2QixPQUF1QixFQUFFLElBQWUsRUFBRSxPQUFtQjtJQUFuQkcsdUJBQW1CQSxHQUFuQkEsY0FBbUJBO0lBQ3hGQSxJQUFJQSxNQUFNQSxHQUFHQSxFQUFFQSxDQUFDQTtJQUNoQkEsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsVUFBQUEsR0FBR0E7UUFDZEEsSUFBSUEsU0FBU0EsR0FBR0EsR0FBR0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsT0FBT0EsRUFBRUEsT0FBT0EsQ0FBQ0EsQ0FBQ0E7UUFDNUNBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN6QkEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0E7UUFDekJBLENBQUNBO0lBQ0hBLENBQUNBLENBQUNBLENBQUNBO0lBQ0hBLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBO0FBQ2hCQSxDQUFDQTtBQVRlLG9CQUFZLGVBUzNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuaW1wb3J0IHtQYXJzZVNvdXJjZVNwYW59IGZyb20gJy4vcGFyc2VfdXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHRtbEFzdCB7XG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbjtcbiAgdmlzaXQodmlzaXRvcjogSHRtbEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIEh0bWxUZXh0QXN0IGltcGxlbWVudHMgSHRtbEFzdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZTogc3RyaW5nLCBwdWJsaWMgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKSB7fVxuICB2aXNpdCh2aXNpdG9yOiBIdG1sQXN0VmlzaXRvciwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIHZpc2l0b3IudmlzaXRUZXh0KHRoaXMsIGNvbnRleHQpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBIdG1sQXR0ckFzdCBpbXBsZW1lbnRzIEh0bWxBc3Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgdmFsdWU6IHN0cmluZywgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbiAgdmlzaXQodmlzaXRvcjogSHRtbEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0QXR0cih0aGlzLCBjb250ZXh0KTsgfVxufVxuXG5leHBvcnQgY2xhc3MgSHRtbEVsZW1lbnRBc3QgaW1wbGVtZW50cyBIdG1sQXN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIGF0dHJzOiBIdG1sQXR0ckFzdFtdLCBwdWJsaWMgY2hpbGRyZW46IEh0bWxBc3RbXSxcbiAgICAgICAgICAgICAgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbiAgdmlzaXQodmlzaXRvcjogSHRtbEFzdFZpc2l0b3IsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0RWxlbWVudCh0aGlzLCBjb250ZXh0KTsgfVxufVxuXG5leHBvcnQgY2xhc3MgSHRtbENvbW1lbnRBc3QgaW1wbGVtZW50cyBIdG1sQXN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHZhbHVlOiBzdHJpbmcsIHB1YmxpYyBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pIHt9XG4gIHZpc2l0KHZpc2l0b3I6IEh0bWxBc3RWaXNpdG9yLCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gdmlzaXRvci52aXNpdENvbW1lbnQodGhpcywgY29udGV4dCk7IH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdG1sQXN0VmlzaXRvciB7XG4gIHZpc2l0RWxlbWVudChhc3Q6IEh0bWxFbGVtZW50QXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0QXR0cihhc3Q6IEh0bWxBdHRyQXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0VGV4dChhc3Q6IEh0bWxUZXh0QXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG4gIHZpc2l0Q29tbWVudChhc3Q6IEh0bWxDb21tZW50QXN0LCBjb250ZXh0OiBhbnkpOiBhbnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBodG1sVmlzaXRBbGwodmlzaXRvcjogSHRtbEFzdFZpc2l0b3IsIGFzdHM6IEh0bWxBc3RbXSwgY29udGV4dDogYW55ID0gbnVsbCk6IGFueVtdIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBhc3RzLmZvckVhY2goYXN0ID0+IHtcbiAgICB2YXIgYXN0UmVzdWx0ID0gYXN0LnZpc2l0KHZpc2l0b3IsIGNvbnRleHQpO1xuICAgIGlmIChpc1ByZXNlbnQoYXN0UmVzdWx0KSkge1xuICAgICAgcmVzdWx0LnB1c2goYXN0UmVzdWx0KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar parse_util_1 = require('./parse_util');\r\nvar html_tags_1 = require('./html_tags');\r\n(function (HtmlTokenType) {\r\n HtmlTokenType[HtmlTokenType[\"TAG_OPEN_START\"] = 0] = \"TAG_OPEN_START\";\r\n HtmlTokenType[HtmlTokenType[\"TAG_OPEN_END\"] = 1] = \"TAG_OPEN_END\";\r\n HtmlTokenType[HtmlTokenType[\"TAG_OPEN_END_VOID\"] = 2] = \"TAG_OPEN_END_VOID\";\r\n HtmlTokenType[HtmlTokenType[\"TAG_CLOSE\"] = 3] = \"TAG_CLOSE\";\r\n HtmlTokenType[HtmlTokenType[\"TEXT\"] = 4] = \"TEXT\";\r\n HtmlTokenType[HtmlTokenType[\"ESCAPABLE_RAW_TEXT\"] = 5] = \"ESCAPABLE_RAW_TEXT\";\r\n HtmlTokenType[HtmlTokenType[\"RAW_TEXT\"] = 6] = \"RAW_TEXT\";\r\n HtmlTokenType[HtmlTokenType[\"COMMENT_START\"] = 7] = \"COMMENT_START\";\r\n HtmlTokenType[HtmlTokenType[\"COMMENT_END\"] = 8] = \"COMMENT_END\";\r\n HtmlTokenType[HtmlTokenType[\"CDATA_START\"] = 9] = \"CDATA_START\";\r\n HtmlTokenType[HtmlTokenType[\"CDATA_END\"] = 10] = \"CDATA_END\";\r\n HtmlTokenType[HtmlTokenType[\"ATTR_NAME\"] = 11] = \"ATTR_NAME\";\r\n HtmlTokenType[HtmlTokenType[\"ATTR_VALUE\"] = 12] = \"ATTR_VALUE\";\r\n HtmlTokenType[HtmlTokenType[\"DOC_TYPE\"] = 13] = \"DOC_TYPE\";\r\n HtmlTokenType[HtmlTokenType[\"EOF\"] = 14] = \"EOF\";\r\n})(exports.HtmlTokenType || (exports.HtmlTokenType = {}));\r\nvar HtmlTokenType = exports.HtmlTokenType;\r\nvar HtmlToken = (function () {\r\n function HtmlToken(type, parts, sourceSpan) {\r\n this.type = type;\r\n this.parts = parts;\r\n this.sourceSpan = sourceSpan;\r\n }\r\n return HtmlToken;\r\n})();\r\nexports.HtmlToken = HtmlToken;\r\nvar HtmlTokenError = (function (_super) {\r\n __extends(HtmlTokenError, _super);\r\n function HtmlTokenError(errorMsg, tokenType, span) {\r\n _super.call(this, span, errorMsg);\r\n this.tokenType = tokenType;\r\n }\r\n return HtmlTokenError;\r\n})(parse_util_1.ParseError);\r\nexports.HtmlTokenError = HtmlTokenError;\r\nvar HtmlTokenizeResult = (function () {\r\n function HtmlTokenizeResult(tokens, errors) {\r\n this.tokens = tokens;\r\n this.errors = errors;\r\n }\r\n return HtmlTokenizeResult;\r\n})();\r\nexports.HtmlTokenizeResult = HtmlTokenizeResult;\r\nfunction tokenizeHtml(sourceContent, sourceUrl) {\r\n return new _HtmlTokenizer(new parse_util_1.ParseSourceFile(sourceContent, sourceUrl)).tokenize();\r\n}\r\nexports.tokenizeHtml = tokenizeHtml;\r\nvar $EOF = 0;\r\nvar $TAB = 9;\r\nvar $LF = 10;\r\nvar $FF = 12;\r\nvar $CR = 13;\r\nvar $SPACE = 32;\r\nvar $BANG = 33;\r\nvar $DQ = 34;\r\nvar $HASH = 35;\r\nvar $$ = 36;\r\nvar $AMPERSAND = 38;\r\nvar $SQ = 39;\r\nvar $MINUS = 45;\r\nvar $SLASH = 47;\r\nvar $0 = 48;\r\nvar $SEMICOLON = 59;\r\nvar $9 = 57;\r\nvar $COLON = 58;\r\nvar $LT = 60;\r\nvar $EQ = 61;\r\nvar $GT = 62;\r\nvar $QUESTION = 63;\r\nvar $LBRACKET = 91;\r\nvar $RBRACKET = 93;\r\nvar $A = 65;\r\nvar $F = 70;\r\nvar $X = 88;\r\nvar $Z = 90;\r\nvar $a = 97;\r\nvar $f = 102;\r\nvar $z = 122;\r\nvar $x = 120;\r\nvar $NBSP = 160;\r\nvar CR_OR_CRLF_REGEXP = /\\r\\n?/g;\r\nfunction unexpectedCharacterErrorMsg(charCode) {\r\n var char = charCode === $EOF ? 'EOF' : lang_1.StringWrapper.fromCharCode(charCode);\r\n return \"Unexpected character \\\"\" + char + \"\\\"\";\r\n}\r\nfunction unknownEntityErrorMsg(entitySrc) {\r\n return \"Unknown entity \\\"\" + entitySrc + \"\\\" - use the \\\"&#<decimal>;\\\" or \\\"&#x<hex>;\\\" syntax\";\r\n}\r\nvar ControlFlowError = (function () {\r\n function ControlFlowError(error) {\r\n this.error = error;\r\n }\r\n return ControlFlowError;\r\n})();\r\n// See http://www.w3.org/TR/html51/syntax.html#writing\r\nvar _HtmlTokenizer = (function () {\r\n function _HtmlTokenizer(file) {\r\n this.file = file;\r\n // Note: this is always lowercase!\r\n this.peek = -1;\r\n this.index = -1;\r\n this.line = 0;\r\n this.column = -1;\r\n this.tokens = [];\r\n this.errors = [];\r\n this.input = file.content;\r\n this.length = file.content.length;\r\n this._advance();\r\n }\r\n _HtmlTokenizer.prototype._processCarriageReturns = function (content) {\r\n // http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream\r\n // In order to keep the original position in the source, we can not\r\n // pre-process it.\r\n // Instead CRs are processed right before instantiating the tokens.\r\n return lang_1.StringWrapper.replaceAll(content, CR_OR_CRLF_REGEXP, '\\n');\r\n };\r\n _HtmlTokenizer.prototype.tokenize = function () {\r\n while (this.peek !== $EOF) {\r\n var start = this._getLocation();\r\n try {\r\n if (this._attemptCharCode($LT)) {\r\n if (this._attemptCharCode($BANG)) {\r\n if (this._attemptCharCode($LBRACKET)) {\r\n this._consumeCdata(start);\r\n }\r\n else if (this._attemptCharCode($MINUS)) {\r\n this._consumeComment(start);\r\n }\r\n else {\r\n this._consumeDocType(start);\r\n }\r\n }\r\n else if (this._attemptCharCode($SLASH)) {\r\n this._consumeTagClose(start);\r\n }\r\n else {\r\n this._consumeTagOpen(start);\r\n }\r\n }\r\n else {\r\n this._consumeText();\r\n }\r\n }\r\n catch (e) {\r\n if (e instanceof ControlFlowError) {\r\n this.errors.push(e.error);\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n this._beginToken(HtmlTokenType.EOF);\r\n this._endToken([]);\r\n return new HtmlTokenizeResult(mergeTextTokens(this.tokens), this.errors);\r\n };\r\n _HtmlTokenizer.prototype._getLocation = function () {\r\n return new parse_util_1.ParseLocation(this.file, this.index, this.line, this.column);\r\n };\r\n _HtmlTokenizer.prototype._getSpan = function (start, end) {\r\n if (lang_1.isBlank(start)) {\r\n start = this._getLocation();\r\n }\r\n if (lang_1.isBlank(end)) {\r\n end = this._getLocation();\r\n }\r\n return new parse_util_1.ParseSourceSpan(start, end);\r\n };\r\n _HtmlTokenizer.prototype._beginToken = function (type, start) {\r\n if (start === void 0) { start = null; }\r\n if (lang_1.isBlank(start)) {\r\n start = this._getLocation();\r\n }\r\n this.currentTokenStart = start;\r\n this.currentTokenType = type;\r\n };\r\n _HtmlTokenizer.prototype._endToken = function (parts, end) {\r\n if (end === void 0) { end = null; }\r\n if (lang_1.isBlank(end)) {\r\n end = this._getLocation();\r\n }\r\n var token = new HtmlToken(this.currentTokenType, parts, new parse_util_1.ParseSourceSpan(this.currentTokenStart, end));\r\n this.tokens.push(token);\r\n this.currentTokenStart = null;\r\n this.currentTokenType = null;\r\n return token;\r\n };\r\n _HtmlTokenizer.prototype._createError = function (msg, span) {\r\n var error = new HtmlTokenError(msg, this.currentTokenType, span);\r\n this.currentTokenStart = null;\r\n this.currentTokenType = null;\r\n return new ControlFlowError(error);\r\n };\r\n _HtmlTokenizer.prototype._advance = function () {\r\n if (this.index >= this.length) {\r\n throw this._createError(unexpectedCharacterErrorMsg($EOF), this._getSpan());\r\n }\r\n if (this.peek === $LF) {\r\n this.line++;\r\n this.column = 0;\r\n }\r\n else if (this.peek !== $LF && this.peek !== $CR) {\r\n this.column++;\r\n }\r\n this.index++;\r\n this.peek = this.index >= this.length ? $EOF : lang_1.StringWrapper.charCodeAt(this.input, this.index);\r\n };\r\n _HtmlTokenizer.prototype._attemptCharCode = function (charCode) {\r\n if (this.peek === charCode) {\r\n this._advance();\r\n return true;\r\n }\r\n return false;\r\n };\r\n _HtmlTokenizer.prototype._attemptCharCodeCaseInsensitive = function (charCode) {\r\n if (compareCharCodeCaseInsensitive(this.peek, charCode)) {\r\n this._advance();\r\n return true;\r\n }\r\n return false;\r\n };\r\n _HtmlTokenizer.prototype._requireCharCode = function (charCode) {\r\n var location = this._getLocation();\r\n if (!this._attemptCharCode(charCode)) {\r\n throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan(location, location));\r\n }\r\n };\r\n _HtmlTokenizer.prototype._attemptStr = function (chars) {\r\n for (var i = 0; i < chars.length; i++) {\r\n if (!this._attemptCharCode(lang_1.StringWrapper.charCodeAt(chars, i))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n _HtmlTokenizer.prototype._attemptStrCaseInsensitive = function (chars) {\r\n for (var i = 0; i < chars.length; i++) {\r\n if (!this._attemptCharCodeCaseInsensitive(lang_1.StringWrapper.charCodeAt(chars, i))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n _HtmlTokenizer.prototype._requireStr = function (chars) {\r\n var location = this._getLocation();\r\n if (!this._attemptStr(chars)) {\r\n throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan(location));\r\n }\r\n };\r\n _HtmlTokenizer.prototype._attemptCharCodeUntilFn = function (predicate) {\r\n while (!predicate(this.peek)) {\r\n this._advance();\r\n }\r\n };\r\n _HtmlTokenizer.prototype._requireCharCodeUntilFn = function (predicate, len) {\r\n var start = this._getLocation();\r\n this._attemptCharCodeUntilFn(predicate);\r\n if (this.index - start.offset < len) {\r\n throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan(start, start));\r\n }\r\n };\r\n _HtmlTokenizer.prototype._attemptUntilChar = function (char) {\r\n while (this.peek !== char) {\r\n this._advance();\r\n }\r\n };\r\n _HtmlTokenizer.prototype._readChar = function (decodeEntities) {\r\n if (decodeEntities && this.peek === $AMPERSAND) {\r\n return this._decodeEntity();\r\n }\r\n else {\r\n var index = this.index;\r\n this._advance();\r\n return this.input[index];\r\n }\r\n };\r\n _HtmlTokenizer.prototype._decodeEntity = function () {\r\n var start = this._getLocation();\r\n this._advance();\r\n if (this._attemptCharCode($HASH)) {\r\n var isHex = this._attemptCharCode($x) || this._attemptCharCode($X);\r\n var numberStart = this._getLocation().offset;\r\n this._attemptCharCodeUntilFn(isDigitEntityEnd);\r\n if (this.peek != $SEMICOLON) {\r\n throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan());\r\n }\r\n this._advance();\r\n var strNum = this.input.substring(numberStart, this.index - 1);\r\n try {\r\n var charCode = lang_1.NumberWrapper.parseInt(strNum, isHex ? 16 : 10);\r\n return lang_1.StringWrapper.fromCharCode(charCode);\r\n }\r\n catch (e) {\r\n var entity = this.input.substring(start.offset + 1, this.index - 1);\r\n throw this._createError(unknownEntityErrorMsg(entity), this._getSpan(start));\r\n }\r\n }\r\n else {\r\n var startPosition = this._savePosition();\r\n this._attemptCharCodeUntilFn(isNamedEntityEnd);\r\n if (this.peek != $SEMICOLON) {\r\n this._restorePosition(startPosition);\r\n return '&';\r\n }\r\n this._advance();\r\n var name_1 = this.input.substring(start.offset + 1, this.index - 1);\r\n var char = html_tags_1.NAMED_ENTITIES[name_1];\r\n if (lang_1.isBlank(char)) {\r\n throw this._createError(unknownEntityErrorMsg(name_1), this._getSpan(start));\r\n }\r\n return char;\r\n }\r\n };\r\n _HtmlTokenizer.prototype._consumeRawText = function (decodeEntities, firstCharOfEnd, attemptEndRest) {\r\n var tagCloseStart;\r\n var textStart = this._getLocation();\r\n this._beginToken(decodeEntities ? HtmlTokenType.ESCAPABLE_RAW_TEXT : HtmlTokenType.RAW_TEXT, textStart);\r\n var parts = [];\r\n while (true) {\r\n tagCloseStart = this._getLocation();\r\n if (this._attemptCharCode(firstCharOfEnd) && attemptEndRest()) {\r\n break;\r\n }\r\n if (this.index > tagCloseStart.offset) {\r\n parts.push(this.input.substring(tagCloseStart.offset, this.index));\r\n }\r\n while (this.peek !== firstCharOfEnd) {\r\n parts.push(this._readChar(decodeEntities));\r\n }\r\n }\r\n return this._endToken([this._processCarriageReturns(parts.join(''))], tagCloseStart);\r\n };\r\n _HtmlTokenizer.prototype._consumeComment = function (start) {\r\n var _this = this;\r\n this._beginToken(HtmlTokenType.COMMENT_START, start);\r\n this._requireCharCode($MINUS);\r\n this._endToken([]);\r\n var textToken = this._consumeRawText(false, $MINUS, function () { return _this._attemptStr('->'); });\r\n this._beginToken(HtmlTokenType.COMMENT_END, textToken.sourceSpan.end);\r\n this._endToken([]);\r\n };\r\n _HtmlTokenizer.prototype._consumeCdata = function (start) {\r\n var _this = this;\r\n this._beginToken(HtmlTokenType.CDATA_START, start);\r\n this._requireStr('CDATA[');\r\n this._endToken([]);\r\n var textToken = this._consumeRawText(false, $RBRACKET, function () { return _this._attemptStr(']>'); });\r\n this._beginToken(HtmlTokenType.CDATA_END, textToken.sourceSpan.end);\r\n this._endToken([]);\r\n };\r\n _HtmlTokenizer.prototype._consumeDocType = function (start) {\r\n this._beginToken(HtmlTokenType.DOC_TYPE, start);\r\n this._attemptUntilChar($GT);\r\n this._advance();\r\n this._endToken([this.input.substring(start.offset + 2, this.index - 1)]);\r\n };\r\n _HtmlTokenizer.prototype._consumePrefixAndName = function () {\r\n var nameOrPrefixStart = this.index;\r\n var prefix = null;\r\n while (this.peek !== $COLON && !isPrefixEnd(this.peek)) {\r\n this._advance();\r\n }\r\n var nameStart;\r\n if (this.peek === $COLON) {\r\n this._advance();\r\n prefix = this.input.substring(nameOrPrefixStart, this.index - 1);\r\n nameStart = this.index;\r\n }\r\n else {\r\n nameStart = nameOrPrefixStart;\r\n }\r\n this._requireCharCodeUntilFn(isNameEnd, this.index === nameStart ? 1 : 0);\r\n var name = this.input.substring(nameStart, this.index);\r\n return [prefix, name];\r\n };\r\n _HtmlTokenizer.prototype._consumeTagOpen = function (start) {\r\n var savedPos = this._savePosition();\r\n var lowercaseTagName;\r\n try {\r\n if (!isAsciiLetter(this.peek)) {\r\n throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan());\r\n }\r\n var nameStart = this.index;\r\n this._consumeTagOpenStart(start);\r\n lowercaseTagName = this.input.substring(nameStart, this.index).toLowerCase();\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n while (this.peek !== $SLASH && this.peek !== $GT) {\r\n this._consumeAttributeName();\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n if (this._attemptCharCode($EQ)) {\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n this._consumeAttributeValue();\r\n }\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n }\r\n this._consumeTagOpenEnd();\r\n }\r\n catch (e) {\r\n if (e instanceof ControlFlowError) {\r\n // When the start tag is invalid, assume we want a \"<\"\r\n this._restorePosition(savedPos);\r\n // Back to back text tokens are merged at the end\r\n this._beginToken(HtmlTokenType.TEXT, start);\r\n this._endToken(['<']);\r\n return;\r\n }\r\n throw e;\r\n }\r\n var contentTokenType = html_tags_1.getHtmlTagDefinition(lowercaseTagName).contentType;\r\n if (contentTokenType === html_tags_1.HtmlTagContentType.RAW_TEXT) {\r\n this._consumeRawTextWithTagClose(lowercaseTagName, false);\r\n }\r\n else if (contentTokenType === html_tags_1.HtmlTagContentType.ESCAPABLE_RAW_TEXT) {\r\n this._consumeRawTextWithTagClose(lowercaseTagName, true);\r\n }\r\n };\r\n _HtmlTokenizer.prototype._consumeRawTextWithTagClose = function (lowercaseTagName, decodeEntities) {\r\n var _this = this;\r\n var textToken = this._consumeRawText(decodeEntities, $LT, function () {\r\n if (!_this._attemptCharCode($SLASH))\r\n return false;\r\n _this._attemptCharCodeUntilFn(isNotWhitespace);\r\n if (!_this._attemptStrCaseInsensitive(lowercaseTagName))\r\n return false;\r\n _this._attemptCharCodeUntilFn(isNotWhitespace);\r\n if (!_this._attemptCharCode($GT))\r\n return false;\r\n return true;\r\n });\r\n this._beginToken(HtmlTokenType.TAG_CLOSE, textToken.sourceSpan.end);\r\n this._endToken([null, lowercaseTagName]);\r\n };\r\n _HtmlTokenizer.prototype._consumeTagOpenStart = function (start) {\r\n this._beginToken(HtmlTokenType.TAG_OPEN_START, start);\r\n var parts = this._consumePrefixAndName();\r\n this._endToken(parts);\r\n };\r\n _HtmlTokenizer.prototype._consumeAttributeName = function () {\r\n this._beginToken(HtmlTokenType.ATTR_NAME);\r\n var prefixAndName = this._consumePrefixAndName();\r\n this._endToken(prefixAndName);\r\n };\r\n _HtmlTokenizer.prototype._consumeAttributeValue = function () {\r\n this._beginToken(HtmlTokenType.ATTR_VALUE);\r\n var value;\r\n if (this.peek === $SQ || this.peek === $DQ) {\r\n var quoteChar = this.peek;\r\n this._advance();\r\n var parts = [];\r\n while (this.peek !== quoteChar) {\r\n parts.push(this._readChar(true));\r\n }\r\n value = parts.join('');\r\n this._advance();\r\n }\r\n else {\r\n var valueStart = this.index;\r\n this._requireCharCodeUntilFn(isNameEnd, 1);\r\n value = this.input.substring(valueStart, this.index);\r\n }\r\n this._endToken([this._processCarriageReturns(value)]);\r\n };\r\n _HtmlTokenizer.prototype._consumeTagOpenEnd = function () {\r\n var tokenType = this._attemptCharCode($SLASH) ? HtmlTokenType.TAG_OPEN_END_VOID :\r\n HtmlTokenType.TAG_OPEN_END;\r\n this._beginToken(tokenType);\r\n this._requireCharCode($GT);\r\n this._endToken([]);\r\n };\r\n _HtmlTokenizer.prototype._consumeTagClose = function (start) {\r\n this._beginToken(HtmlTokenType.TAG_CLOSE, start);\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n var prefixAndName;\r\n prefixAndName = this._consumePrefixAndName();\r\n this._attemptCharCodeUntilFn(isNotWhitespace);\r\n this._requireCharCode($GT);\r\n this._endToken(prefixAndName);\r\n };\r\n _HtmlTokenizer.prototype._consumeText = function () {\r\n var start = this._getLocation();\r\n this._beginToken(HtmlTokenType.TEXT, start);\r\n var parts = [this._readChar(true)];\r\n while (!isTextEnd(this.peek)) {\r\n parts.push(this._readChar(true));\r\n }\r\n this._endToken([this._processCarriageReturns(parts.join(''))]);\r\n };\r\n _HtmlTokenizer.prototype._savePosition = function () {\r\n return [this.peek, this.index, this.column, this.line, this.tokens.length];\r\n };\r\n _HtmlTokenizer.prototype._restorePosition = function (position) {\r\n this.peek = position[0];\r\n this.index = position[1];\r\n this.column = position[2];\r\n this.line = position[3];\r\n var nbTokens = position[4];\r\n if (nbTokens < this.tokens.length) {\r\n // remove any extra tokens\r\n this.tokens = collection_1.ListWrapper.slice(this.tokens, 0, nbTokens);\r\n }\r\n };\r\n return _HtmlTokenizer;\r\n})();\r\nfunction isNotWhitespace(code) {\r\n return !isWhitespace(code) || code === $EOF;\r\n}\r\nfunction isWhitespace(code) {\r\n return (code >= $TAB && code <= $SPACE) || (code === $NBSP);\r\n}\r\nfunction isNameEnd(code) {\r\n return isWhitespace(code) || code === $GT || code === $SLASH || code === $SQ || code === $DQ ||\r\n code === $EQ;\r\n}\r\nfunction isPrefixEnd(code) {\r\n return (code < $a || $z < code) && (code < $A || $Z < code) && (code < $0 || code > $9);\r\n}\r\nfunction isDigitEntityEnd(code) {\r\n return code == $SEMICOLON || code == $EOF || !isAsciiHexDigit(code);\r\n}\r\nfunction isNamedEntityEnd(code) {\r\n return code == $SEMICOLON || code == $EOF || !isAsciiLetter(code);\r\n}\r\nfunction isTextEnd(code) {\r\n return code === $LT || code === $EOF;\r\n}\r\nfunction isAsciiLetter(code) {\r\n return code >= $a && code <= $z || code >= $A && code <= $Z;\r\n}\r\nfunction isAsciiHexDigit(code) {\r\n return code >= $a && code <= $f || code >= $A && code <= $F || code >= $0 && code <= $9;\r\n}\r\nfunction compareCharCodeCaseInsensitive(code1, code2) {\r\n return toUpperCaseCharCode(code1) == toUpperCaseCharCode(code2);\r\n}\r\nfunction toUpperCaseCharCode(code) {\r\n return code >= $a && code <= $z ? code - $a + $A : code;\r\n}\r\nfunction mergeTextTokens(srcTokens) {\r\n var dstTokens = [];\r\n var lastDstToken;\r\n for (var i = 0; i < srcTokens.length; i++) {\r\n var token = srcTokens[i];\r\n if (lang_1.isPresent(lastDstToken) && lastDstToken.type == HtmlTokenType.TEXT &&\r\n token.type == HtmlTokenType.TEXT) {\r\n lastDstToken.parts[0] += token.parts[0];\r\n lastDstToken.sourceSpan.end = token.sourceSpan.end;\r\n }\r\n else {\r\n lastDstToken = token;\r\n dstTokens.push(lastDstToken);\r\n }\r\n }\r\n return dstTokens;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbF9sZXhlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21waWxlci9odG1sX2xleGVyLnRzIl0sIm5hbWVzIjpbIkh0bWxUb2tlblR5cGUiLCJIdG1sVG9rZW4iLCJIdG1sVG9rZW4uY29uc3RydWN0b3IiLCJIdG1sVG9rZW5FcnJvciIsIkh0bWxUb2tlbkVycm9yLmNvbnN0cnVjdG9yIiwiSHRtbFRva2VuaXplUmVzdWx0IiwiSHRtbFRva2VuaXplUmVzdWx0LmNvbnN0cnVjdG9yIiwidG9rZW5pemVIdG1sIiwidW5leHBlY3RlZENoYXJhY3RlckVycm9yTXNnIiwidW5rbm93bkVudGl0eUVycm9yTXNnIiwiQ29udHJvbEZsb3dFcnJvciIsIkNvbnRyb2xGbG93RXJyb3IuY29uc3RydWN0b3IiLCJfSHRtbFRva2VuaXplciIsIl9IdG1sVG9rZW5pemVyLmNvbnN0cnVjdG9yIiwiX0h0bWxUb2tlbml6ZXIuX3Byb2Nlc3NDYXJyaWFnZVJldHVybnMiLCJfSHRtbFRva2VuaXplci50b2tlbml6ZSIsIl9IdG1sVG9rZW5pemVyLl9nZXRMb2NhdGlvbiIsIl9IdG1sVG9rZW5pemVyLl9nZXRTcGFuIiwiX0h0bWxUb2tlbml6ZXIuX2JlZ2luVG9rZW4iLCJfSHRtbFRva2VuaXplci5fZW5kVG9rZW4iLCJfSHRtbFRva2VuaXplci5fY3JlYXRlRXJyb3IiLCJfSHRtbFRva2VuaXplci5fYWR2YW5jZSIsIl9IdG1sVG9rZW5pemVyLl9hdHRlbXB0Q2hhckNvZGUiLCJfSHRtbFRva2VuaXplci5fYXR0ZW1wdENoYXJDb2RlQ2FzZUluc2Vuc2l0aXZlIiwiX0h0bWxUb2tlbml6ZXIuX3JlcXVpcmVDaGFyQ29kZSIsIl9IdG1sVG9rZW5pemVyLl9hdHRlbXB0U3RyIiwiX0h0bWxUb2tlbml6ZXIuX2F0dGVtcHRTdHJDYXNlSW5zZW5zaXRpdmUiLCJfSHRtbFRva2VuaXplci5fcmVxdWlyZVN0ciIsIl9IdG1sVG9rZW5pemVyLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuIiwiX0h0bWxUb2tlbml6ZXIuX3JlcXVpcmVDaGFyQ29kZVVudGlsRm4iLCJfSHRtbFRva2VuaXplci5fYXR0ZW1wdFVudGlsQ2hhciIsIl9IdG1sVG9rZW5pemVyLl9yZWFkQ2hhciIsIl9IdG1sVG9rZW5pemVyLl9kZWNvZGVFbnRpdHkiLCJfSHRtbFRva2VuaXplci5fY29uc3VtZVJhd1RleHQiLCJfSHRtbFRva2VuaXplci5fY29uc3VtZUNvbW1lbnQiLCJfSHRtbFRva2VuaXplci5fY29uc3VtZUNkYXRhIiwiX0h0bWxUb2tlbml6ZXIuX2NvbnN1bWVEb2NUeXBlIiwiX0h0bWxUb2tlbml6ZXIuX2NvbnN1bWVQcmVmaXhBbmROYW1lIiwiX0h0bWxUb2tlbml6ZXIuX2NvbnN1bWVUYWdPcGVuIiwiX0h0bWxUb2tlbml6ZXIuX2NvbnN1bWVSYXdUZXh0V2l0aFRhZ0Nsb3NlIiwiX0h0bWxUb2tlbml6ZXIuX2NvbnN1bWVUYWdPcGVuU3RhcnQiLCJfSHRtbFRva2VuaXplci5fY29uc3VtZUF0dHJpYnV0ZU5hbWUiLCJfSHRtbFRva2VuaXplci5fY29uc3VtZUF0dHJpYnV0ZVZhbHVlIiwiX0h0bWxUb2tlbml6ZXIuX2NvbnN1bWVUYWdPcGVuRW5kIiwiX0h0bWxUb2tlbml6ZXIuX2NvbnN1bWVUYWdDbG9zZSIsIl9IdG1sVG9rZW5pemVyLl9jb25zdW1lVGV4dCIsIl9IdG1sVG9rZW5pemVyLl9zYXZlUG9zaXRpb24iLCJfSHRtbFRva2VuaXplci5fcmVzdG9yZVBvc2l0aW9uIiwiaXNOb3RXaGl0ZXNwYWNlIiwiaXNXaGl0ZXNwYWNlIiwiaXNOYW1lRW5kIiwiaXNQcmVmaXhFbmQiLCJpc0RpZ2l0RW50aXR5RW5kIiwiaXNOYW1lZEVudGl0eUVuZCIsImlzVGV4dEVuZCIsImlzQXNjaWlMZXR0ZXIiLCJpc0FzY2lpSGV4RGlnaXQiLCJjb21wYXJlQ2hhckNvZGVDYXNlSW5zZW5zaXRpdmUiLCJ0b1VwcGVyQ2FzZUNoYXJDb2RlIiwibWVyZ2VUZXh0VG9rZW5z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QUNBLFlBQVlBLEVBQUVBLENBQUNBLE1BQU1BLENBQUNBO1lBQzdDQSxJQUFJQSxDQUFDQSx1QkFBdUJBLENBQUNBLGdCQUFnQkEsQ0FBQ0EsQ0FBQ0E7WUFDL0NBLEVBQUVBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLElBQUlBLFVBQVVBLENBQUNBLENBQUNBLENBQUNBO2dCQUM1QkEsTUFBTUEsSUFBSUEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsMkJBQTJCQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxJQUFJQSxDQUFDQSxRQUFRQSxFQUFFQSxDQUFDQSxDQUFDQTtZQUNuRkEsQ0FBQ0E7WUFDREEsSUFBSUEsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0E7WUFDaEJBLElBQUlBLE1BQU1BLEdBQUdBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBLFNBQVNBLENBQUNBLFdBQVdBLEVBQUVBLElBQUlBLENBQUNBLEtBQUtBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBO1lBQy9EQSxJQUFJQSxDQUFDQTtnQkFDSEEsSUFBSUEsUUFBUUEsR0FBR0Esb0JBQWFBLENBQUNBLFFBQVFBLENBQUNBLE1BQU1BLEVBQUVBLEtBQUtBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLENBQUNBLENBQUNBO2dCQUMvREEsTUFBTUEsQ0FBQ0Esb0JBQWFBLENBQUNBLFlBQVlBLENBQUNBLFFBQVFBLENBQUNBLENBQUNBO1lBQzlDQSxDQUFFQTtZQUFBQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDWEEsSUFBSUEsTUFBTUEsR0FBR0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsTUFBTUEsR0FBR0EsQ0FBQ0EsRUFBRUEsSUFBSUEsQ0FBQ0EsS0FBS0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ3BFQSxNQUFNQSxJQUFJQSxDQUFDQSxZQUFZQSxDQUFDQSxxQkFBcUJBLENBQUNBLE1BQU1BLENBQUNBLEVBQUVBLElB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O1FBQ3JEQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUNOQSxZQUFZQSxHQUFHQSxLQUFLQSxDQUFDQTtZQUNyQkEsU0FBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsQ0FBQ0E7UUFDL0JBLENBQUNBO0lBQ0hBLENBQUNBO0lBRURBLE1BQU1BLENBQUNBLFNBQVNBLENBQUNBO0FBQ25CQSxDQUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFN0cmluZ1dyYXBwZXIsXG4gIE51bWJlcldyYXBwZXIsXG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgQ09OU1RfRVhQUixcbiAgc2VyaWFsaXplRW51bVxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7UGFyc2VMb2NhdGlvbiwgUGFyc2VFcnJvciwgUGFyc2VTb3VyY2VGaWxlLCBQYXJzZVNvdXJjZVNwYW59IGZyb20gJy4vcGFyc2VfdXRpbCc7XG5pbXBvcnQge2dldEh0bWxUYWdEZWZpbml0aW9uLCBIdG1sVGFnQ29udGVudFR5cGUsIE5BTUVEX0VOVElUSUVTfSBmcm9tICcuL2h0bWxfdGFncyc7XG5cbmV4cG9ydCBlbnVtIEh0bWxUb2tlblR5cGUge1xuICBUQUdfT1BFTl9TVEFSVCxcbiAgVEFHX09QRU5fRU5ELFxuICBUQUdfT1BFTl9FTkRfVk9JRCxcbiAgVEFHX0NMT1NFLFxuICBURVhULFxuICBFU0NBUEFCTEVfUkFXX1RFWFQsXG4gIFJBV19URVhULFxuICBDT01NRU5UX1NUQVJULFxuICBDT01NRU5UX0VORCxcbiAgQ0RBVEFfU1RBUlQsXG4gIENEQVRBX0VORCxcbiAgQVRUUl9OQU1FLFxuICBBVFRSX1ZBTFVFLFxuICBET0NfVFlQRSxcbiAgRU9GXG59XG5cbmV4cG9ydCBjbGFzcyBIdG1sVG9rZW4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdHlwZTogSHRtbFRva2VuVHlwZSwgcHVibGljIHBhcnRzOiBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgcHVibGljIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbikge31cbn1cblxuZXhwb3J0IGNsYXNzIEh0bWxUb2tlbkVycm9yIGV4dGVuZHMgUGFyc2VFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGVycm9yTXNnOiBzdHJpbmcsIHB1YmxpYyB0b2tlblR5cGU6IEh0bWxUb2tlblR5cGUsIHNwYW46IFBhcnNlU291cmNlU3Bhbikge1xuICAgIHN1cGVyKHNwYW4sIGVycm9yTXNnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSHRtbFRva2VuaXplUmVzdWx0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHRva2VuczogSHRtbFRva2VuW10sIHB1YmxpYyBlcnJvcnM6IEh0bWxUb2tlbkVycm9yW10pIHt9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbml6ZUh0bWwoc291cmNlQ29udGVudDogc3RyaW5nLCBzb3VyY2VVcmw6IHN0cmluZyk6IEh0bWxUb2tlbml6ZVJlc3VsdCB7XG4gIHJldHVybiBuZXcgX0h0bWxUb2tlbml6ZXIobmV3IFBhcnNlU291cmNlRmlsZShzb3VyY2VDb250ZW50LCBzb3VyY2VVcmwpKS50b2tlbml6ZSgpO1xufVxuXG5jb25zdCAkRU9GID0gMDtcbmNvbnN0ICRUQUIgPSA5O1xuY29uc3QgJExGID0gMTA7XG5jb25zdCAkRkYgPSAxMjtcbmNvbnN0ICRDUiA9IDEzO1xuXG5jb25zdCAkU1BBQ0UgPSAzMjtcblxuY29uc3QgJEJBTkcgPSAzMztcbmNvbnN0ICREUSA9IDM0O1xuY29uc3QgJEhBU0ggPSAzNTtcbmNvbnN0ICQkID0gMzY7XG5jb25zdCAkQU1QRVJTQU5EID0gMzg7XG5jb25zdCAkU1EgPSAzOTtcbmNvbnN0ICRNSU5VUyA9IDQ1O1xuY29uc3QgJFNMQVNIID0gNDc7XG5jb25zdCAkMCA9IDQ4O1xuXG5jb25zdCAkU0VNSUNPTE9OID0gNTk7XG5cbmNvbnN0ICQ5ID0gNTc7XG5jb25zdCAkQ09MT04gPSA1ODtcbmNvbnN0ICRMVCA9IDYwO1xuY29uc3QgJEVRID0gNjE7XG5jb25zdCAkR1QgPSA2MjtcbmNvbnN0ICRRVUVTVElPTiA9IDYzO1xuY29uc3QgJExCUkFDS0VUID0gOTE7XG5jb25zdCAkUkJSQUNLRVQgPSA5MztcbmNvbnN0ICRBID0gNjU7XG5jb25zdCAkRiA9IDcwO1xuY29uc3QgJFggPSA4ODtcbmNvbnN0ICRaID0gOTA7XG5cbmNvbnN0ICRhID0gOTc7XG5jb25zdCAkZiA9IDEwMjtcbmNvbnN0ICR6ID0gMTIyO1xuY29uc3QgJHggPSAxMjA7XG5cbmNvbnN0ICROQlNQID0gMTYwO1xuXG52YXIgQ1JfT1JfQ1JMRl9SRUdFWFAgPSAvXFxyXFxuPy9nO1xuXG5mdW5jdGlvbiB1bmV4cGVjdGVkQ2hhcmFjdGVyRXJyb3JNc2coY2hhckNvZGU6IG51bWJlcik6IHN0cmluZyB7XG4gIHZhciBjaGFyID0gY2hhckNvZGUgPT09ICRFT0YgPyAnRU9GJyA6IFN0cmluZ1dyYXBwZXIuZnJvbUNoYXJDb2RlKGNoYXJDb2RlKTtcbiAgcmV0dXJuIGBVbmV4cGVjdGVkIGNoYXJhY3RlciBcIiR7Y2hhcn1cImA7XG59XG5cbmZ1bmN0aW9uIHVua25vd25FbnRpdHlFcnJvck1zZyhlbnRpdHlTcmM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgVW5rbm93biBlbnRpdHkgXCIke2VudGl0eVNyY31cIiAtIHVzZSB0aGUgXCImIzxkZWNpbWFsPjtcIiBvciAgXCImI3g8aGV4PjtcIiBzeW50YXhgO1xufVxuXG5jbGFzcyBDb250cm9sRmxvd0Vycm9yIHtcbiAgY29uc3RydWN0b3IocHVibGljIGVycm9yOiBIdG1sVG9rZW5FcnJvcikge31cbn1cblxuLy8gU2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1MS9zeW50YXguaHRtbCN3cml0aW5nXG5jbGFzcyBfSHRtbFRva2VuaXplciB7XG4gIHByaXZhdGUgaW5wdXQ6IHN0cmluZztcbiAgcHJpdmF0ZSBsZW5ndGg6IG51bWJlcjtcbiAgLy8gTm90ZTogdGhpcyBpcyBhbHdheXMgbG93ZXJjYXNlIVxuICBwcml2YXRlIHBlZWs6IG51bWJlciA9IC0xO1xuICBwcml2YXRlIGluZGV4OiBudW1iZXIgPSAtMTtcbiAgcHJpdmF0ZSBsaW5lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIGNvbHVtbjogbnVtYmVyID0gLTE7XG4gIHByaXZhdGUgY3VycmVudFRva2VuU3RhcnQ6IFBhcnNlTG9jYXRpb247XG4gIHByaXZhdGUgY3VycmVudFRva2VuVHlwZTogSHRtbFRva2VuVHlwZTtcblxuICB0b2tlbnM6IEh0bWxUb2tlbltdID0gW107XG4gIGVycm9yczogSHRtbFRva2VuRXJyb3JbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmlsZTogUGFyc2VTb3VyY2VGaWxlKSB7XG4gICAgdGhpcy5pbnB1dCA9IGZpbGUuY29udGVudDtcbiAgICB0aGlzLmxlbmd0aCA9IGZpbGUuY29udGVudC5sZW5ndGg7XG4gICAgdGhpcy5fYWR2YW5jZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJvY2Vzc0NhcnJpYWdlUmV0dXJucyhjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI3ByZXByb2Nlc3NpbmctdGhlLWlucHV0LXN0cmVhbVxuICAgIC8vIEluIG9yZGVyIHRvIGtlZXAgdGhlIG9yaWdpbmFsIHBvc2l0aW9uIGluIHRoZSBzb3VyY2UsIHdlIGNhbiBub3RcbiAgICAvLyBwcmUtcHJvY2VzcyBpdC5cbiAgICAvLyBJbnN0ZWFkIENScyBhcmUgcHJvY2Vzc2VkIHJpZ2h0IGJlZm9yZSBpbnN0YW50aWF0aW5nIHRoZSB0b2tlbnMuXG4gICAgcmV0dXJuIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbChjb250ZW50LCBDUl9PUl9DUkxGX1JFR0VYUCwgJ1xcbicpO1xuICB9XG5cbiAgdG9rZW5pemUoKTogSHRtbFRva2VuaXplUmVzdWx0IHtcbiAgICB3aGlsZSAodGhpcy5wZWVrICE9PSAkRU9GKSB7XG4gICAgICB2YXIgc3RhcnQgPSB0aGlzLl9nZXRMb2NhdGlvbigpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHRoaXMuX2F0dGVtcHRDaGFyQ29kZSgkTFQpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2F0dGVtcHRDaGFyQ29kZSgkQkFORykpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9hdHRlbXB0Q2hhckNvZGUoJExCUkFDS0VUKSkge1xuICAgICAgICAgICAgICB0aGlzLl9jb25zdW1lQ2RhdGEoc3RhcnQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9hdHRlbXB0Q2hhckNvZGUoJE1JTlVTKSkge1xuICAgICAgICAgICAgICB0aGlzLl9jb25zdW1lQ29tbWVudChzdGFydCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLl9jb25zdW1lRG9jVHlwZShzdGFydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9hdHRlbXB0Q2hhckNvZGUoJFNMQVNIKSkge1xuICAgICAgICAgICAgdGhpcy5fY29uc3VtZVRhZ0Nsb3NlKHN0YXJ0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY29uc3VtZVRhZ09wZW4oc3RhcnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9jb25zdW1lVGV4dCgpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgQ29udHJvbEZsb3dFcnJvcikge1xuICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2goZS5lcnJvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9iZWdpblRva2VuKEh0bWxUb2tlblR5cGUuRU9GKTtcbiAgICB0aGlzLl9lbmRUb2tlbihbXSk7XG4gICAgcmV0dXJuIG5ldyBIdG1sVG9rZW5pemVSZXN1bHQobWVyZ2VUZXh0VG9rZW5zKHRoaXMudG9rZW5zKSwgdGhpcy5lcnJvcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TG9jYXRpb24oKTogUGFyc2VMb2NhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBQYXJzZUxvY2F0aW9uKHRoaXMuZmlsZSwgdGhpcy5pbmRleCwgdGhpcy5saW5lLCB0aGlzLmNvbHVtbik7XG4gIH1cblxuICBwcml2YXRlIF9nZXRTcGFuKHN0YXJ0PzogUGFyc2VMb2NhdGlvbiwgZW5kPzogUGFyc2VMb2NhdGlvbik6IFBhcnNlU291cmNlU3BhbiB7XG4gICAgaWYgKGlzQmxhbmsoc3RhcnQpKSB7XG4gICAgICBzdGFydCA9IHRoaXMuX2dldExvY2F0aW9uKCk7XG4gICAgfVxuICAgIGlmIChpc0JsYW5rKGVuZCkpIHtcbiAgICAgIGVuZCA9IHRoaXMuX2dldExvY2F0aW9uKCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUGFyc2VTb3VyY2VTcGFuKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYmVnaW5Ub2tlbih0eXBlOiBIdG1sVG9rZW5UeXBlLCBzdGFydDogUGFyc2VMb2NhdGlvbiA9IG51bGwpIHtcbiAgICBpZiAoaXNCbGFuayhzdGFydCkpIHtcbiAgICAgIHN0YXJ0ID0gdGhpcy5fZ2V0TG9jYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50VG9rZW5TdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuY3VycmVudFRva2VuVHlwZSA9IHR5cGU7XG4gIH1cblxuICBwcml2YXRlIF9lbmRUb2tlbihwYXJ0czogc3RyaW5nW10sIGVuZDogUGFyc2VMb2NhdGlvbiA9IG51bGwpOiBIdG1sVG9rZW4ge1xuICAgIGlmIChpc0JsYW5rKGVuZCkpIHtcbiAgICAgIGVuZCA9IHRoaXMuX2dldExvY2F0aW9uKCk7XG4gICAgfVxuICAgIHZhciB0b2tlbiA9IG5ldyBIdG1sVG9rZW4odGhpcy5jdXJyZW50VG9rZW5UeXBlLCBwYXJ0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQYXJzZVNvdXJjZVNwYW4odGhpcy5jdXJyZW50VG9rZW5TdGFydCwgZW5kKSk7XG4gICAgdGhpcy50b2tlbnMucHVzaCh0b2tlbik7XG4gICAgdGhpcy5jdXJyZW50VG9rZW5TdGFydCA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50VG9rZW5UeXBlID0gbnVsbDtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVFcnJvcihtc2c6IHN0cmluZywgc3BhbjogUGFyc2VTb3VyY2VTcGFuKTogQ29udHJvbEZsb3dFcnJvciB7XG4gICAgdmFyIGVycm9yID0gbmV3IEh0bWxUb2tlbkVycm9yKG1zZywgdGhpcy5jdXJyZW50VG9rZW5UeXBlLCBzcGFuKTtcbiAgICB0aGlzLmN1cnJlbnRUb2tlblN0YXJ0ID0gbnVsbDtcbiAgICB0aGlzLmN1cnJlbnRUb2tlblR5cGUgPSBudWxsO1xuICAgIHJldHVybiBuZXcgQ29udHJvbEZsb3dFcnJvcihlcnJvcik7XG4gIH1cblxuICBwcml2YXRlIF9hZHZhbmNlKCkge1xuICAgIGlmICh0aGlzLmluZGV4ID49IHRoaXMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyB0aGlzLl9jcmVhdGVFcnJvcih1bmV4cGVjdGVkQ2hhcmFjdGVyRXJyb3JNc2coJEVPRiksIHRoaXMuX2dldFNwYW4oKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnBlZWsgPT09ICRMRikge1xuICAgICAgdGhpcy5saW5lKys7XG4gICAgICB0aGlzLmNvbHVtbiA9IDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLnBlZWsgIT09ICRMRiAmJiB0aGlzLnBlZWsgIT09ICRDUikge1xuICAgICAgdGhpcy5jb2x1bW4rKztcbiAgICB9XG4gICAgdGhpcy5pbmRleCsrO1xuICAgIHRoaXMucGVlayA9IHRoaXMuaW5kZXggPj0gdGhpcy5sZW5ndGggPyAkRU9GIDogU3RyaW5nV3JhcHBlci5jaGFyQ29kZUF0KHRoaXMuaW5wdXQsIHRoaXMuaW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0ZW1wdENoYXJDb2RlKGNoYXJDb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5wZWVrID09PSBjaGFyQ29kZSkge1xuICAgICAgdGhpcy5fYWR2YW5jZSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2F0dGVtcHRDaGFyQ29kZUNhc2VJbnNlbnNpdGl2ZShjaGFyQ29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKGNvbXBhcmVDaGFyQ29kZUNhc2VJbnNlbnNpdGl2ZSh0aGlzLnBlZWssIGNoYXJDb2RlKSkge1xuICAgICAgdGhpcy5fYWR2YW5jZSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcXVpcmVDaGFyQ29kZShjaGFyQ29kZTogbnVtYmVyKSB7XG4gICAgdmFyIGxvY2F0aW9uID0gdGhpcy5fZ2V0TG9jYXRpb24oKTtcbiAgICBpZiAoIXRoaXMuX2F0dGVtcHRDaGFyQ29kZShjaGFyQ29kZSkpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUVycm9yKHVuZXhwZWN0ZWRDaGFyYWN0ZXJFcnJvck1zZyh0aGlzLnBlZWspLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ2V0U3Bhbihsb2NhdGlvbiwgbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hdHRlbXB0U3RyKGNoYXJzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIXRoaXMuX2F0dGVtcHRDaGFyQ29kZShTdHJpbmdXcmFwcGVyLmNoYXJDb2RlQXQoY2hhcnMsIGkpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0ZW1wdFN0ckNhc2VJbnNlbnNpdGl2ZShjaGFyczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCF0aGlzLl9hdHRlbXB0Q2hhckNvZGVDYXNlSW5zZW5zaXRpdmUoU3RyaW5nV3JhcHBlci5jaGFyQ29kZUF0KGNoYXJzLCBpKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcXVpcmVTdHIoY2hhcnM6IHN0cmluZykge1xuICAgIHZhciBsb2NhdGlvbiA9IHRoaXMuX2dldExvY2F0aW9uKCk7XG4gICAgaWYgKCF0aGlzLl9hdHRlbXB0U3RyKGNoYXJzKSkge1xuICAgICAgdGhyb3cgdGhpcy5fY3JlYXRlRXJyb3IodW5leHBlY3RlZENoYXJhY3RlckVycm9yTXNnKHRoaXMucGVlayksIHRoaXMuX2dldFNwYW4obG9jYXRpb24pKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKHByZWRpY2F0ZTogRnVuY3Rpb24pIHtcbiAgICB3aGlsZSAoIXByZWRpY2F0ZSh0aGlzLnBlZWspKSB7XG4gICAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVxdWlyZUNoYXJDb2RlVW50aWxGbihwcmVkaWNhdGU6IEZ1bmN0aW9uLCBsZW46IG51bWJlcikge1xuICAgIHZhciBzdGFydCA9IHRoaXMuX2dldExvY2F0aW9uKCk7XG4gICAgdGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihwcmVkaWNhdGUpO1xuICAgIGlmICh0aGlzLmluZGV4IC0gc3RhcnQub2Zmc2V0IDwgbGVuKSB7XG4gICAgICB0aHJvdyB0aGlzLl9jcmVhdGVFcnJvcih1bmV4cGVjdGVkQ2hhcmFjdGVyRXJyb3JNc2codGhpcy5wZWVrKSwgdGhpcy5fZ2V0U3BhbihzdGFydCwgc3RhcnQpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hdHRlbXB0VW50aWxDaGFyKGNoYXI6IG51bWJlcikge1xuICAgIHdoaWxlICh0aGlzLnBlZWsgIT09IGNoYXIpIHtcbiAgICAgIHRoaXMuX2FkdmFuY2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZWFkQ2hhcihkZWNvZGVFbnRpdGllczogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgaWYgKGRlY29kZUVudGl0aWVzICYmIHRoaXMucGVlayA9PT0gJEFNUEVSU0FORCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RlY29kZUVudGl0eSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgaW5kZXggPSB0aGlzLmluZGV4O1xuICAgICAgdGhpcy5fYWR2YW5jZSgpO1xuICAgICAgcmV0dXJuIHRoaXMuaW5wdXRbaW5kZXhdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2RlY29kZUVudGl0eSgpOiBzdHJpbmcge1xuICAgIHZhciBzdGFydCA9IHRoaXMuX2dldExvY2F0aW9uKCk7XG4gICAgdGhpcy5fYWR2YW5jZSgpO1xuICAgIGlmICh0aGlzLl9hdHRlbXB0Q2hhckNvZGUoJEhBU0gpKSB7XG4gICAgICBsZXQgaXNIZXggPSB0aGlzLl9hdHRlbXB0Q2hhckNvZGUoJHgpIHx8IHRoaXMuX2F0dGVtcHRDaGFyQ29kZSgkWCk7XG4gICAgICBsZXQgbnVtYmVyU3RhcnQgPSB0aGlzLl9nZXRMb2NhdGlvbigpLm9mZnNldDtcbiAgICAgIHRoaXMuX2F0dGVtcHRDaGFyQ29kZVVudGlsRm4oaXNEaWdpdEVudGl0eUVuZCk7XG4gICAgICBpZiAodGhpcy5wZWVrICE9ICRTRU1JQ09MT04pIHtcbiAgICAgICAgdGhyb3cgdGhpcy5fY3JlYXRlRXJyb3IodW5leHBlY3RlZENoYXJhY3RlckVycm9yTXNnKHRoaXMucGVlayksIHRoaXMuX2dldFNwYW4oKSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgICBsZXQgc3RyTnVtID0gdGhpcy5pbnB1dC5zdWJzdHJpbmcobnVtYmVyU3RhcnQsIHRoaXMuaW5kZXggLSAxKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBjaGFyQ29kZSA9IE51bWJlcldyYXBwZXIucGFyc2VJbnQoc3RyTnVtLCBpc0hleCA/IDE2IDogMTApO1xuICAgICAgICByZXR1cm4gU3RyaW5nV3JhcHBlci5mcm9tQ2hhckNvZGUoY2hhckNvZGUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsZXQgZW50aXR5ID0gdGhpcy5pbnB1dC5zdWJzdHJpbmcoc3RhcnQub2Zmc2V0ICsgMSwgdGhpcy5pbmRleCAtIDEpO1xuICAgICAgICB0aHJvdyB0aGlzLl9jcmVhdGVFcnJvcih1bmtub3duRW50aXR5RXJyb3JNc2coZW50aXR5KSwgdGhpcy5fZ2V0U3BhbihzdGFydCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgc3RhcnRQb3NpdGlvbiA9IHRoaXMuX3NhdmVQb3NpdGlvbigpO1xuICAgICAgdGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihpc05hbWVkRW50aXR5RW5kKTtcbiAgICAgIGlmICh0aGlzLnBlZWsgIT0gJFNFTUlDT0xPTikge1xuICAgICAgICB0aGlzLl9yZXN0b3JlUG9zaXRpb24oc3RhcnRQb3NpdGlvbik7XG4gICAgICAgIHJldHVybiAnJic7XG4gICAgICB9XG4gICAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgICBsZXQgbmFtZSA9IHRoaXMuaW5wdXQuc3Vic3RyaW5nKHN0YXJ0Lm9mZnNldCArIDEsIHRoaXMuaW5kZXggLSAxKTtcbiAgICAgIGxldCBjaGFyID0gTkFNRURfRU5USVRJRVNbbmFtZV07XG4gICAgICBpZiAoaXNCbGFuayhjaGFyKSkge1xuICAgICAgICB0aHJvdyB0aGlzLl9jcmVhdGVFcnJvcih1bmtub3duRW50aXR5RXJyb3JNc2cobmFtZSksIHRoaXMuX2dldFNwYW4oc3RhcnQpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjaGFyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbnN1bWVSYXdUZXh0KGRlY29kZUVudGl0aWVzOiBib29sZWFuLCBmaXJzdENoYXJPZkVuZDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRlbXB0RW5kUmVzdDogRnVuY3Rpb24pOiBIdG1sVG9rZW4ge1xuICAgIHZhciB0YWdDbG9zZVN0YXJ0O1xuICAgIHZhciB0ZXh0U3RhcnQgPSB0aGlzLl9nZXRMb2NhdGlvbigpO1xuICAgIHRoaXMuX2JlZ2luVG9rZW4oZGVjb2RlRW50aXRpZXMgPyBIdG1sVG9rZW5UeXBlLkVTQ0FQQUJMRV9SQVdfVEVYVCA6IEh0bWxUb2tlblR5cGUuUkFXX1RFWFQsXG4gICAgICAgICAgICAgICAgICAgICB0ZXh0U3RhcnQpO1xuICAgIHZhciBwYXJ0cyA9IFtdO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0YWdDbG9zZVN0YXJ0ID0gdGhpcy5fZ2V0TG9jYXRpb24oKTtcbiAgICAgIGlmICh0aGlzLl9hdHRlbXB0Q2hhckNvZGUoZmlyc3RDaGFyT2ZFbmQpICYmIGF0dGVtcHRFbmRSZXN0KCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pbmRleCA+IHRhZ0Nsb3NlU3RhcnQub2Zmc2V0KSB7XG4gICAgICAgIHBhcnRzLnB1c2godGhpcy5pbnB1dC5zdWJzdHJpbmcodGFnQ2xvc2VTdGFydC5vZmZzZXQsIHRoaXMuaW5kZXgpKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICh0aGlzLnBlZWsgIT09IGZpcnN0Q2hhck9mRW5kKSB7XG4gICAgICAgIHBhcnRzLnB1c2godGhpcy5fcmVhZENoYXIoZGVjb2RlRW50aXRpZXMpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2VuZFRva2VuKFt0aGlzLl9wcm9jZXNzQ2FycmlhZ2VSZXR1cm5zKHBhcnRzLmpvaW4oJycpKV0sIHRhZ0Nsb3NlU3RhcnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZUNvbW1lbnQoc3RhcnQ6IFBhcnNlTG9jYXRpb24pIHtcbiAgICB0aGlzLl9iZWdpblRva2VuKEh0bWxUb2tlblR5cGUuQ09NTUVOVF9TVEFSVCwgc3RhcnQpO1xuICAgIHRoaXMuX3JlcXVpcmVDaGFyQ29kZSgkTUlOVVMpO1xuICAgIHRoaXMuX2VuZFRva2VuKFtdKTtcbiAgICB2YXIgdGV4dFRva2VuID0gdGhpcy5fY29uc3VtZVJhd1RleHQoZmFsc2UsICRNSU5VUywgKCkgPT4gdGhpcy5fYXR0ZW1wdFN0cignLT4nKSk7XG4gICAgdGhpcy5fYmVnaW5Ub2tlbihIdG1sVG9rZW5UeXBlLkNPTU1FTlRfRU5ELCB0ZXh0VG9rZW4uc291cmNlU3Bhbi5lbmQpO1xuICAgIHRoaXMuX2VuZFRva2VuKFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnN1bWVDZGF0YShzdGFydDogUGFyc2VMb2NhdGlvbikge1xuICAgIHRoaXMuX2JlZ2luVG9rZW4oSHRtbFRva2VuVHlwZS5DREFUQV9TVEFSVCwgc3RhcnQpO1xuICAgIHRoaXMuX3JlcXVpcmVTdHIoJ0NEQVRBWycpO1xuICAgIHRoaXMuX2VuZFRva2VuKFtdKTtcbiAgICB2YXIgdGV4dFRva2VuID0gdGhpcy5fY29uc3VtZVJhd1RleHQoZmFsc2UsICRSQlJBQ0tFVCwgKCkgPT4gdGhpcy5fYXR0ZW1wdFN0cignXT4nKSk7XG4gICAgdGhpcy5fYmVnaW5Ub2tlbihIdG1sVG9rZW5UeXBlLkNEQVRBX0VORCwgdGV4dFRva2VuLnNvdXJjZVNwYW4uZW5kKTtcbiAgICB0aGlzLl9lbmRUb2tlbihbXSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lRG9jVHlwZShzdGFydDogUGFyc2VMb2NhdGlvbikge1xuICAgIHRoaXMuX2JlZ2luVG9rZW4oSHRtbFRva2VuVHlwZS5ET0NfVFlQRSwgc3RhcnQpO1xuICAgIHRoaXMuX2F0dGVtcHRVbnRpbENoYXIoJEdUKTtcbiAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgdGhpcy5fZW5kVG9rZW4oW3RoaXMuaW5wdXQuc3Vic3RyaW5nKHN0YXJ0Lm9mZnNldCArIDIsIHRoaXMuaW5kZXggLSAxKV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZVByZWZpeEFuZE5hbWUoKTogc3RyaW5nW10ge1xuICAgIHZhciBuYW1lT3JQcmVmaXhTdGFydCA9IHRoaXMuaW5kZXg7XG4gICAgdmFyIHByZWZpeCA9IG51bGw7XG4gICAgd2hpbGUgKHRoaXMucGVlayAhPT0gJENPTE9OICYmICFpc1ByZWZpeEVuZCh0aGlzLnBlZWspKSB7XG4gICAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgfVxuICAgIHZhciBuYW1lU3RhcnQ7XG4gICAgaWYgKHRoaXMucGVlayA9PT0gJENPTE9OKSB7XG4gICAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgICBwcmVmaXggPSB0aGlzLmlucHV0LnN1YnN0cmluZyhuYW1lT3JQcmVmaXhTdGFydCwgdGhpcy5pbmRleCAtIDEpO1xuICAgICAgbmFtZVN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZVN0YXJ0ID0gbmFtZU9yUHJlZml4U3RhcnQ7XG4gICAgfVxuICAgIHRoaXMuX3JlcXVpcmVDaGFyQ29kZVVudGlsRm4oaXNOYW1lRW5kLCB0aGlzLmluZGV4ID09PSBuYW1lU3RhcnQgPyAxIDogMCk7XG4gICAgdmFyIG5hbWUgPSB0aGlzLmlucHV0LnN1YnN0cmluZyhuYW1lU3RhcnQsIHRoaXMuaW5kZXgpO1xuICAgIHJldHVybiBbcHJlZml4LCBuYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnN1bWVUYWdPcGVuKHN0YXJ0OiBQYXJzZUxvY2F0aW9uKSB7XG4gICAgbGV0IHNhdmVkUG9zID0gdGhpcy5fc2F2ZVBvc2l0aW9uKCk7XG4gICAgbGV0IGxvd2VyY2FzZVRhZ05hbWU7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghaXNBc2NpaUxldHRlcih0aGlzLnBlZWspKSB7XG4gICAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUVycm9yKHVuZXhwZWN0ZWRDaGFyYWN0ZXJFcnJvck1zZyh0aGlzLnBlZWspLCB0aGlzLl9nZXRTcGFuKCkpO1xuICAgICAgfVxuICAgICAgdmFyIG5hbWVTdGFydCA9IHRoaXMuaW5kZXg7XG4gICAgICB0aGlzLl9jb25zdW1lVGFnT3BlblN0YXJ0KHN0YXJ0KTtcbiAgICAgIGxvd2VyY2FzZVRhZ05hbWUgPSB0aGlzLmlucHV0LnN1YnN0cmluZyhuYW1lU3RhcnQsIHRoaXMuaW5kZXgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKGlzTm90V2hpdGVzcGFjZSk7XG4gICAgICB3aGlsZSAodGhpcy5wZWVrICE9PSAkU0xBU0ggJiYgdGhpcy5wZWVrICE9PSAkR1QpIHtcbiAgICAgICAgdGhpcy5fY29uc3VtZUF0dHJpYnV0ZU5hbWUoKTtcbiAgICAgICAgdGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihpc05vdFdoaXRlc3BhY2UpO1xuICAgICAgICBpZiAodGhpcy5fYXR0ZW1wdENoYXJDb2RlKCRFUSkpIHtcbiAgICAgICAgICB0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKGlzTm90V2hpdGVzcGFjZSk7XG4gICAgICAgICAgdGhpcy5fY29uc3VtZUF0dHJpYnV0ZVZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihpc05vdFdoaXRlc3BhY2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5fY29uc3VtZVRhZ09wZW5FbmQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIENvbnRyb2xGbG93RXJyb3IpIHtcbiAgICAgICAgLy8gV2hlbiB0aGUgc3RhcnQgdGFnIGlzIGludmFsaWQsIGFzc3VtZSB3ZSB3YW50IGEgXCI8XCJcbiAgICAgICAgdGhpcy5fcmVzdG9yZVBvc2l0aW9uKHNhdmVkUG9zKTtcbiAgICAgICAgLy8gQmFjayB0byBiYWNrIHRleHQgdG9rZW5zIGFyZSBtZXJnZWQgYXQgdGhlIGVuZFxuICAgICAgICB0aGlzLl9iZWdpblRva2VuKEh0bWxUb2tlblR5cGUuVEVYVCwgc3RhcnQpO1xuICAgICAgICB0aGlzLl9lbmRUb2tlbihbJzwnXSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cbiAgICB2YXIgY29udGVudFRva2VuVHlwZSA9IGdldEh0bWxUYWdEZWZpbml0aW9uKGxvd2VyY2FzZVRhZ05hbWUpLmNvbnRlbnRUeXBlO1xuICAgIGlmIChjb250ZW50VG9rZW5UeXBlID09PSBIdG1sVGFnQ29udGVudFR5cGUuUkFXX1RFWFQpIHtcbiAgICAgIHRoaXMuX2NvbnN1bWVSYXdUZXh0V2l0aFRhZ0Nsb3NlKGxvd2VyY2FzZVRhZ05hbWUsIGZhbHNlKTtcbiAgICB9IGVsc2UgaWYgKGNvbnRlbnRUb2tlblR5cGUgPT09IEh0bWxUYWdDb250ZW50VHlwZS5FU0NBUEFCTEVfUkFXX1RFWFQpIHtcbiAgICAgIHRoaXMuX2NvbnN1bWVSYXdUZXh0V2l0aFRhZ0Nsb3NlKGxvd2VyY2FzZVRhZ05hbWUsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbnN1bWVSYXdUZXh0V2l0aFRhZ0Nsb3NlKGxvd2VyY2FzZVRhZ05hbWU6IHN0cmluZywgZGVjb2RlRW50aXRpZXM6IGJvb2xlYW4pIHtcbiAgICB2YXIgdGV4dFRva2VuID0gdGhpcy5fY29uc3VtZVJhd1RleHQoZGVjb2RlRW50aXRpZXMsICRMVCwgKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9hdHRlbXB0Q2hhckNvZGUoJFNMQVNIKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgdGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihpc05vdFdoaXRlc3BhY2UpO1xuICAgICAgaWYgKCF0aGlzLl9hdHRlbXB0U3RyQ2FzZUluc2Vuc2l0aXZlKGxvd2VyY2FzZVRhZ05hbWUpKSByZXR1cm4gZmFsc2U7XG4gICAgICB0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKGlzTm90V2hpdGVzcGFjZSk7XG4gICAgICBpZiAoIXRoaXMuX2F0dGVtcHRDaGFyQ29kZSgkR1QpKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICB0aGlzLl9iZWdpblRva2VuKEh0bWxUb2tlblR5cGUuVEFHX0NMT1NFLCB0ZXh0VG9rZW4uc291cmNlU3Bhbi5lbmQpO1xuICAgIHRoaXMuX2VuZFRva2VuKFtudWxsLCBsb3dlcmNhc2VUYWdOYW1lXSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lVGFnT3BlblN0YXJ0KHN0YXJ0OiBQYXJzZUxvY2F0aW9uKSB7XG4gICAgdGhpcy5fYmVnaW5Ub2tlbihIdG1sVG9rZW5UeXBlLlRBR19PUEVOX1NUQVJULCBzdGFydCk7XG4gICAgdmFyIHBhcnRzID0gdGhpcy5fY29uc3VtZVByZWZpeEFuZE5hbWUoKTtcbiAgICB0aGlzLl9lbmRUb2tlbihwYXJ0cyk7XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lQXR0cmlidXRlTmFtZSgpIHtcbiAgICB0aGlzLl9iZWdpblRva2VuKEh0bWxUb2tlblR5cGUuQVRUUl9OQU1FKTtcbiAgICB2YXIgcHJlZml4QW5kTmFtZSA9IHRoaXMuX2NvbnN1bWVQcmVmaXhBbmROYW1lKCk7XG4gICAgdGhpcy5fZW5kVG9rZW4ocHJlZml4QW5kTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lQXR0cmlidXRlVmFsdWUoKSB7XG4gICAgdGhpcy5fYmVnaW5Ub2tlbihIdG1sVG9rZW5UeXBlLkFUVFJfVkFMVUUpO1xuICAgIHZhciB2YWx1ZTtcbiAgICBpZiAodGhpcy5wZWVrID09PSAkU1EgfHwgdGhpcy5wZWVrID09PSAkRFEpIHtcbiAgICAgIHZhciBxdW90ZUNoYXIgPSB0aGlzLnBlZWs7XG4gICAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgICB2YXIgcGFydHMgPSBbXTtcbiAgICAgIHdoaWxlICh0aGlzLnBlZWsgIT09IHF1b3RlQ2hhcikge1xuICAgICAgICBwYXJ0cy5wdXNoKHRoaXMuX3JlYWRDaGFyKHRydWUpKTtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gcGFydHMuam9pbignJyk7XG4gICAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB2YWx1ZVN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICAgIHRoaXMuX3JlcXVpcmVDaGFyQ29kZVVudGlsRm4oaXNOYW1lRW5kLCAxKTtcbiAgICAgIHZhbHVlID0gdGhpcy5pbnB1dC5zdWJzdHJpbmcodmFsdWVTdGFydCwgdGhpcy5pbmRleCk7XG4gICAgfVxuICAgIHRoaXMuX2VuZFRva2VuKFt0aGlzLl9wcm9jZXNzQ2FycmlhZ2VSZXR1cm5zKHZhbHVlKV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZVRhZ09wZW5FbmQoKSB7XG4gICAgdmFyIHRva2VuVHlwZSA9IHRoaXMuX2F0dGVtcHRDaGFyQ29kZSgkU0xBU0gpID8gSHRtbFRva2VuVHlwZS5UQUdfT1BFTl9FTkRfVk9JRCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbFRva2VuVHlwZS5UQUdfT1BFTl9FTkQ7XG4gICAgdGhpcy5fYmVnaW5Ub2tlbih0b2tlblR5cGUpO1xuICAgIHRoaXMuX3JlcXVpcmVDaGFyQ29kZSgkR1QpO1xuICAgIHRoaXMuX2VuZFRva2VuKFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnN1bWVUYWdDbG9zZShzdGFydDogUGFyc2VMb2NhdGlvbikge1xuICAgIHRoaXMuX2JlZ2luVG9rZW4oSHRtbFRva2VuVHlwZS5UQUdfQ0xPU0UsIHN0YXJ0KTtcbiAgICB0aGlzLl9hdHRlbXB0Q2hhckNvZGVVbnRpbEZuKGlzTm90V2hpdGVzcGFjZSk7XG4gICAgdmFyIHByZWZpeEFuZE5hbWU7XG4gICAgcHJlZml4QW5kTmFtZSA9IHRoaXMuX2NvbnN1bWVQcmVmaXhBbmROYW1lKCk7XG4gICAgdGhpcy5fYXR0ZW1wdENoYXJDb2RlVW50aWxGbihpc05vdFdoaXRlc3BhY2UpO1xuICAgIHRoaXMuX3JlcXVpcmVDaGFyQ29kZSgkR1QpO1xuICAgIHRoaXMuX2VuZFRva2VuKHByZWZpeEFuZE5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZVRleHQoKSB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5fZ2V0TG9jYXRpb24oKTtcbiAgICB0aGlzLl9iZWdpblRva2VuKEh0bWxUb2tlblR5cGUuVEVYVCwgc3RhcnQpO1xuICAgIHZhciBwYXJ0cyA9IFt0aGlzLl9yZWFkQ2hhcih0cnVlKV07XG4gICAgd2hpbGUgKCFpc1RleHRFbmQodGhpcy5wZWVrKSkge1xuICAgICAgcGFydHMucHVzaCh0aGlzLl9yZWFkQ2hhcih0cnVlKSk7XG4gICAgfVxuICAgIHRoaXMuX2VuZFRva2VuKFt0aGlzLl9wcm9jZXNzQ2FycmlhZ2VSZXR1cm5zKHBhcnRzLmpvaW4oJycpKV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2F2ZVBvc2l0aW9uKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gW3RoaXMucGVlaywgdGhpcy5pbmRleCwgdGhpcy5jb2x1bW4sIHRoaXMubGluZSwgdGhpcy50b2tlbnMubGVuZ3RoXTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc3RvcmVQb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyW10pOiB2b2lkIHtcbiAgICB0aGlzLnBlZWsgPSBwb3NpdGlvblswXTtcbiAgICB0aGlzLmluZGV4ID0gcG9zaXRpb25bMV07XG4gICAgdGhpcy5jb2x1bW4gPSBwb3NpdGlvblsyXTtcbiAgICB0aGlzLmxpbmUgPSBwb3NpdGlvblszXTtcbiAgICBsZXQgbmJUb2tlbnMgPSBwb3NpdGlvbls0XTtcbiAgICBpZiAobmJUb2tlbnMgPCB0aGlzLnRva2Vucy5sZW5ndGgpIHtcbiAgICAgIC8vIHJlbW92ZSBhbnkgZXh0cmEgdG9rZW5zXG4gICAgICB0aGlzLnRva2VucyA9IExpc3RXcmFwcGVyLnNsaWNlKHRoaXMudG9rZW5zLCAwLCBuYlRva2Vucyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzTm90V2hpdGVzcGFjZShjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuICFpc1doaXRlc3BhY2UoY29kZSkgfHwgY29kZSA9PT0gJEVPRjtcbn1cblxuZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gKGNvZGUgPj0gJFRBQiAmJiBjb2RlIDw9ICRTUEFDRSkgfHwgKGNvZGUgPT09ICROQlNQKTtcbn1cblxuZnVuY3Rpb24gaXNOYW1lRW5kKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNXaGl0ZXNwYWNlKGNvZGUpIHx8IGNvZGUgPT09ICRHVCB8fCBjb2RlID09PSAkU0xBU0ggfHwgY29kZSA9PT0gJFNRIHx8IGNvZGUgPT09ICREUSB8fFxuICAgICAgICAgY29kZSA9PT0gJEVRO1xufVxuXG5mdW5jdGlvbiBpc1ByZWZpeEVuZChjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIChjb2RlIDwgJGEgfHwgJHogPCBjb2RlKSAmJiAoY29kZSA8ICRBIHx8ICRaIDwgY29kZSkgJiYgKGNvZGUgPCAkMCB8fCBjb2RlID4gJDkpO1xufVxuXG5mdW5jdGlvbiBpc0RpZ2l0RW50aXR5RW5kKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29kZSA9PSAkU0VNSUNPTE9OIHx8IGNvZGUgPT0gJEVPRiB8fCAhaXNBc2NpaUhleERpZ2l0KGNvZGUpO1xufVxuXG5mdW5jdGlvbiBpc05hbWVkRW50aXR5RW5kKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29kZSA9PSAkU0VNSUNPTE9OIHx8IGNvZGUgPT0gJEVPRiB8fCAhaXNBc2NpaUxldHRlcihjb2RlKTtcbn1cblxuZnVuY3Rpb24gaXNUZXh0RW5kKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29kZSA9PT0gJExUIHx8IGNvZGUgPT09ICRFT0Y7XG59XG5cbmZ1bmN0aW9uIGlzQXNjaWlMZXR0ZXIoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBjb2RlID49ICRhICYmIGNvZGUgPD0gJHogfHwgY29kZSA+PSAkQSAmJiBjb2RlIDw9ICRaO1xufVxuXG5mdW5jdGlvbiBpc0FzY2lpSGV4RGlnaXQoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBjb2RlID49ICRhICYmIGNvZGUgPD0gJGYgfHwgY29kZSA+PSAkQSAmJiBjb2RlIDw9ICRGIHx8IGNvZGUgPj0gJDAgJiYgY29kZSA8PSAkOTtcbn1cblxuZnVuY3Rpb24gY29tcGFyZUNoYXJDb2RlQ2FzZUluc2Vuc2l0aXZlKGNvZGUxOiBudW1iZXIsIGNvZGUyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIHRvVXBwZXJDYXNlQ2hhckNvZGUoY29kZTEpID09IHRvVXBwZXJDYXNlQ2hhckNvZGUoY29kZTIpO1xufVxuXG5mdW5jdGlvbiB0b1VwcGVyQ2FzZUNoYXJDb2RlKGNvZGU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBjb2RlID49ICRhICYmIGNvZGUgPD0gJHogPyBjb2RlIC0gJGEgKyAkQSA6IGNvZGU7XG59XG5cbmZ1bmN0aW9uIG1lcmdlVGV4dFRva2VucyhzcmNUb2tlbnM6IEh0bWxUb2tlbltdKTogSHRtbFRva2VuW10ge1xuICBsZXQgZHN0VG9rZW5zID0gW107XG4gIGxldCBsYXN0RHN0VG9rZW46IEh0bWxUb2tlbjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcmNUb2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgdG9rZW4gPSBzcmNUb2tlbnNbaV07XG4gICAgaWYgKGlzUHJlc2VudChsYXN0RHN0VG9rZW4pICYmIGxhc3REc3RUb2tlbi50eXBlID09IEh0bWxUb2tlblR5cGUuVEVYVCAmJlxuICAgICAgICB0b2tlbi50eXBlID09IEh0bWxUb2tlblR5cGUuVEVYVCkge1xuICAgICAgbGFzdERzdFRva2VuLnBhcnRzWzBdICs9IHRva2VuLnBhcnRzWzBdO1xuICAgICAgbGFzdERzdFRva2VuLnNvdXJjZVNwYW4uZW5kID0gdG9rZW4uc291cmNlU3Bhbi5lbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhc3REc3RUb2tlbiA9IHRva2VuO1xuICAgICAgZHN0VG9rZW5zLnB1c2gobGFzdERzdFRva2VuKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZHN0VG9rZW5zO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var ParseLocation = (function () {\r\n function ParseLocation(file, offset, line, col) {\r\n this.file = file;\r\n this.offset = offset;\r\n this.line = line;\r\n this.col = col;\r\n }\r\n ParseLocation.prototype.toString = function () { return this.file.url + \"@\" + this.line + \":\" + this.col; };\r\n return ParseLocation;\r\n})();\r\nexports.ParseLocation = ParseLocation;\r\nvar ParseSourceFile = (function () {\r\n function ParseSourceFile(content, url) {\r\n this.content = content;\r\n this.url = url;\r\n }\r\n return ParseSourceFile;\r\n})();\r\nexports.ParseSourceFile = ParseSourceFile;\r\nvar ParseSourceSpan = (function () {\r\n function ParseSourceSpan(start, end) {\r\n this.start = start;\r\n this.end = end;\r\n }\r\n ParseSourceSpan.prototype.toString = function () {\r\n return this.start.file.content.substring(this.start.offset, this.end.offset);\r\n };\r\n return ParseSourceSpan;\r\n})();\r\nexports.ParseSourceSpan = ParseSourceSpan;\r\nvar ParseError = (function () {\r\n function ParseError(span, msg) {\r\n this.span = span;\r\n this.msg = msg;\r\n }\r\n ParseError.prototype.toString = function () {\r\n var source = this.span.start.file.content;\r\n var ctxStart = this.span.start.offset;\r\n if (ctxStart > source.length - 1) {\r\n ctxStart = source.length - 1;\r\n }\r\n var ctxEnd = ctxStart;\r\n var ctxLen = 0;\r\n var ctxLines = 0;\r\n while (ctxLen < 100 && ctxStart > 0) {\r\n ctxStart--;\r\n ctxLen++;\r\n if (source[ctxStart] == \"\\n\") {\r\n if (++ctxLines == 3) {\r\n break;\r\n }\r\n }\r\n }\r\n ctxLen = 0;\r\n ctxLines = 0;\r\n while (ctxLen < 100 && ctxEnd < source.length - 1) {\r\n ctxEnd++;\r\n ctxLen++;\r\n if (source[ctxEnd] == \"\\n\") {\r\n if (++ctxLines == 3) {\r\n break;\r\n }\r\n }\r\n }\r\n var context = source.substring(ctxStart, this.span.start.offset) + '[ERROR ->]' +\r\n source.substring(this.span.start.offset, ctxEnd + 1);\r\n return this.msg + \" (\\\"\" + context + \"\\\"): \" + this.span.start;\r\n };\r\n return ParseError;\r\n})();\r\nexports.ParseError = ParseError;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VfdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21waWxlci9wYXJzZV91dGlsLnRzIl0sIm5hbWVzIjpbIlBhcnNlTG9jYXRpb24iLCJQYXJzZUxvY2F0aW9uLmNvbnN0cnVjdG9yIiwiUGFyc2VMb2NhdGlvbi50b1N0cmluZyIsIlBhcnNlU291cmNlRmlsZSIsIlBhcnNlU291cmNlRmlsZS5jb25zdHJ1Y3RvciIsIlBhcnNlU291cmNlU3BhbiIsIlBhcnNlU291cmNlU3Bhbi5jb25zdHJ1Y3RvciIsIlBhcnNlU291cmNlU3Bhbi50b1N0cmluZyIsIlBhcnNlRXJyb3IiLCJQYXJzZUVycm9yLmNvbnN0cnVjdG9yIiwiUGFyc2VFcnJvci50b1N0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7SUFDRUEsdUJBQW1CQSxJQUFxQkEsRUFBU0EsTUFBY0EsRUFBU0EsSUFBWUEsRUFDakVBLEdBQVdBO1FBRFhDLFNBQUlBLEdBQUpBLElBQUlBLENBQWlCQTtRQUFTQSxXQUFNQSxHQUFOQSxNQUFNQSxDQUFRQTtRQUFTQSxTQUFJQSxHQUFKQSxJQUFJQSxDQUFRQTtRQUNqRUEsUUFBR0EsR0FBSEEsR0FBR0EsQ0FBUUE7SUFBR0EsQ0FBQ0E7SUFFbENELGdDQUFRQSxHQUFSQSxjQUFxQkUsTUFBTUEsQ0FBSUEsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsU0FBSUEsSUFBSUEsQ0FBQ0EsSUFBSUEsU0FBSUEsSUFBSUEsQ0FBQ0EsR0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDNUVGLG9CQUFDQTtBQUFEQSxDQUFDQSxBQUxELElBS0M7QUFMWSxxQkFBYSxnQkFLekIsQ0FBQTtBQUVEO0lBQ0VHLHlCQUFtQkEsT0FBZUEsRUFBU0EsR0FBV0E7UUFBbkNDLFlBQU9BLEdBQVBBLE9BQU9BLENBQVFBO1FBQVNBLFFBQUdBLEdBQUhBLEdBQUdBLENBQVFBO0lBQUdBLENBQUNBO0lBQzVERCxzQkFBQ0E7QUFBREEsQ0FBQ0EsQUFGRCxJQUVDO0FBRlksdUJBQWUsa0JBRTNCLENBQUE7QUFFRDtJQUNFRSx5QkFBbUJBLEtBQW9CQSxFQUFTQSxHQUFrQkE7UUFBL0NDLFVBQUtBLEdBQUxBLEtBQUtBLENBQWVBO1FBQVNBLFFBQUdBLEdBQUhBLEdBQUdBLENBQWVBO0lBQUdBLENBQUNBO0lBRXRFRCxrQ0FBUUEsR0FBUkE7UUFDRUUsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsTUFBTUEsRUFBRUEsSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0E7SUFDL0VBLENBQUNBO0lBQ0hGLHNCQUFDQTtBQUFEQSxDQUFDQSxBQU5ELElBTUM7QUFOWSx1QkFBZSxrQkFNM0IsQ0FBQTtBQUVEO0lBQ0VHLG9CQUFtQkEsSUFBcUJBLEVBQVNBLEdBQVdBO1FBQXpDQyxTQUFJQSxHQUFKQSxJQUFJQSxDQUFpQkE7UUFBU0EsUUFBR0EsR0FBSEEsR0FBR0EsQ0FBUUE7SUFBR0EsQ0FBQ0E7SUFFaEVELDZCQUFRQSxHQUFSQTtRQUNFRSxJQUFJQSxNQUFNQSxHQUFHQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQTtRQUMxQ0EsSUFBSUEsUUFBUUEsR0FBR0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsTUFBTUEsQ0FBQ0E7UUFDdENBLEVBQUVBLENBQUNBLENBQUNBLFFBQVFBLEdBQUdBLE1BQU1BLENBQUNBLE1BQU1BLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ2pDQSxRQUFRQSxHQUFHQSxNQUFNQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQTtRQUMvQkEsQ0FBQ0E7UUFDREEsSUFBSUEsTUFBTUEsR0FBR0EsUUFBUUEsQ0FBQ0E7UUFDdEJBLElBQUlBLE1BQU1BLEdBQUdBLENBQUNBLENBQUNBO1FBQ2ZBLElBQUlBLFFBQVFBLEdBQUdBLENBQUNBLENBQUNBO1FBRWpCQSxPQUFPQSxNQUFNQSxHQUFHQSxHQUFHQSxJQUFJQSxRQUFRQSxHQUFHQSxDQUFDQSxFQUFFQSxDQUFDQTtZQUNwQ0EsUUFBUUEsRUFBRUEsQ0FBQ0E7WUFDWEEsTUFBTUEsRUFBRUEsQ0FBQ0E7WUFDVEEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsSUFBSUEsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzdCQSxFQUFFQSxDQUFDQSxDQUFDQSxFQUFFQSxRQUFRQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtvQkFDcEJBLEtBQUtBLENBQUNBO2dCQUNSQSxDQUFDQTtZQUNIQSxDQUFDQTtRQUNIQSxDQUFDQTtRQUVEQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQTtRQUNYQSxRQUFRQSxHQUFHQSxDQUFDQSxDQUFDQTtRQUNiQSxPQUFPQSxNQUFNQSxHQUFHQSxHQUFHQSxJQUFJQSxNQUFNQSxHQUFHQSxNQUFNQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxFQUFFQSxDQUFDQTtZQUNsREEsTUFBTUEsRUFBRUEsQ0FBQ0E7WUFDVEEsTUFBTUEsRUFBRUEsQ0FBQ0E7WUFDVEEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzNCQSxFQUFFQSxDQUFDQSxDQUFDQSxFQUFFQSxRQUFRQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtvQkFDcEJBLEtBQUtBLENBQUNBO2dCQUNSQSxDQUFDQTtZQUNIQSxDQUFDQTtRQUNIQSxDQUFDQTtRQUVEQSxJQUFJQSxPQUFPQSxHQUFHQSxNQUFNQSxDQUFDQSxTQUFTQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxNQUFNQSxDQUFDQSxHQUFHQSxZQUFZQTtZQUNqRUEsTUFBTUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsTUFBTUEsRUFBRUEsTUFBTUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFFbkVBLE1BQU1BLENBQUlBLElBQUlBLENBQUNBLEdBQUdBLFlBQU1BLE9BQU9BLGFBQU9BLElBQUlBLENBQUNBLElBQUlBLENBQUNBLEtBQU9BLENBQUNBO0lBQzFEQSxDQUFDQTtJQUNIRixpQkFBQ0E7QUFBREEsQ0FBQ0EsQUF4Q0QsSUF3Q0M7QUF4Q3FCLGtCQUFVLGFBd0MvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFBhcnNlTG9jYXRpb24ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmlsZTogUGFyc2VTb3VyY2VGaWxlLCBwdWJsaWMgb2Zmc2V0OiBudW1iZXIsIHB1YmxpYyBsaW5lOiBudW1iZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyBjb2w6IG51bWJlcikge31cblxuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gYCR7dGhpcy5maWxlLnVybH1AJHt0aGlzLmxpbmV9OiR7dGhpcy5jb2x9YDsgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFyc2VTb3VyY2VGaWxlIHtcbiAgY29uc3RydWN0b3IocHVibGljIGNvbnRlbnQ6IHN0cmluZywgcHVibGljIHVybDogc3RyaW5nKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgUGFyc2VTb3VyY2VTcGFuIHtcbiAgY29uc3RydWN0b3IocHVibGljIHN0YXJ0OiBQYXJzZUxvY2F0aW9uLCBwdWJsaWMgZW5kOiBQYXJzZUxvY2F0aW9uKSB7fVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnQuZmlsZS5jb250ZW50LnN1YnN0cmluZyh0aGlzLnN0YXJ0Lm9mZnNldCwgdGhpcy5lbmQub2Zmc2V0KTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFyc2VFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzcGFuOiBQYXJzZVNvdXJjZVNwYW4sIHB1YmxpYyBtc2c6IHN0cmluZykge31cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHZhciBzb3VyY2UgPSB0aGlzLnNwYW4uc3RhcnQuZmlsZS5jb250ZW50O1xuICAgIHZhciBjdHhTdGFydCA9IHRoaXMuc3Bhbi5zdGFydC5vZmZzZXQ7XG4gICAgaWYgKGN0eFN0YXJ0ID4gc291cmNlLmxlbmd0aCAtIDEpIHtcbiAgICAgIGN0eFN0YXJ0ID0gc291cmNlLmxlbmd0aCAtIDE7XG4gICAgfVxuICAgIHZhciBjdHhFbmQgPSBjdHhTdGFydDtcbiAgICB2YXIgY3R4TGVuID0gMDtcbiAgICB2YXIgY3R4TGluZXMgPSAwO1xuXG4gICAgd2hpbGUgKGN0eExlbiA8IDEwMCAmJiBjdHhTdGFydCA+IDApIHtcbiAgICAgIGN0eFN0YXJ0LS07XG4gICAgICBjdHhMZW4rKztcbiAgICAgIGlmIChzb3VyY2VbY3R4U3RhcnRdID09IFwiXFxuXCIpIHtcbiAgICAgICAgaWYgKCsrY3R4TGluZXMgPT0gMykge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY3R4TGVuID0gMDtcbiAgICBjdHhMaW5lcyA9IDA7XG4gICAgd2hpbGUgKGN0eExlbiA8IDEwMCAmJiBjdHhFbmQgPCBzb3VyY2UubGVuZ3RoIC0gMSkge1xuICAgICAgY3R4RW5kKys7XG4gICAgICBjdHhMZW4rKztcbiAgICAgIGlmIChzb3VyY2VbY3R4RW5kXSA9PSBcIlxcblwiKSB7XG4gICAgICAgIGlmICgrK2N0eExpbmVzID09IDMpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjb250ZXh0ID0gc291cmNlLnN1YnN0cmluZyhjdHhTdGFydCwgdGhpcy5zcGFuLnN0YXJ0Lm9mZnNldCkgKyAnW0VSUk9SIC0+XScgK1xuICAgICAgICAgICAgICAgICAgc291cmNlLnN1YnN0cmluZyh0aGlzLnNwYW4uc3RhcnQub2Zmc2V0LCBjdHhFbmQgKyAxKTtcblxuICAgIHJldHVybiBgJHt0aGlzLm1zZ30gKFwiJHtjb250ZXh0fVwiKTogJHt0aGlzLnNwYW4uc3RhcnR9YDtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar html_ast_1 = require('./html_ast');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar html_lexer_1 = require('./html_lexer');\r\nvar parse_util_1 = require('./parse_util');\r\nvar html_tags_1 = require('./html_tags');\r\nvar HtmlTreeError = (function (_super) {\r\n __extends(HtmlTreeError, _super);\r\n function HtmlTreeError(elementName, span, msg) {\r\n _super.call(this, span, msg);\r\n this.elementName = elementName;\r\n }\r\n HtmlTreeError.create = function (elementName, span, msg) {\r\n return new HtmlTreeError(elementName, span, msg);\r\n };\r\n return HtmlTreeError;\r\n})(parse_util_1.ParseError);\r\nexports.HtmlTreeError = HtmlTreeError;\r\nvar HtmlParseTreeResult = (function () {\r\n function HtmlParseTreeResult(rootNodes, errors) {\r\n this.rootNodes = rootNodes;\r\n this.errors = errors;\r\n }\r\n return HtmlParseTreeResult;\r\n})();\r\nexports.HtmlParseTreeResult = HtmlParseTreeResult;\r\nvar HtmlParser = (function () {\r\n function HtmlParser() {\r\n }\r\n HtmlParser.prototype.parse = function (sourceContent, sourceUrl) {\r\n var tokensAndErrors = html_lexer_1.tokenizeHtml(sourceContent, sourceUrl);\r\n var treeAndErrors = new TreeBuilder(tokensAndErrors.tokens).build();\r\n return new HtmlParseTreeResult(treeAndErrors.rootNodes, tokensAndErrors.errors\r\n .concat(treeAndErrors.errors));\r\n };\r\n HtmlParser = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], HtmlParser);\r\n return HtmlParser;\r\n})();\r\nexports.HtmlParser = HtmlParser;\r\nvar TreeBuilder = (function () {\r\n function TreeBuilder(tokens) {\r\n this.tokens = tokens;\r\n this.index = -1;\r\n this.rootNodes = [];\r\n this.errors = [];\r\n this.elementStack = [];\r\n this._advance();\r\n }\r\n TreeBuilder.prototype.build = function () {\r\n while (this.peek.type !== html_lexer_1.HtmlTokenType.EOF) {\r\n if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_OPEN_START) {\r\n this._consumeStartTag(this._advance());\r\n }\r\n else if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_CLOSE) {\r\n this._consumeEndTag(this._advance());\r\n }\r\n else if (this.peek.type === html_lexer_1.HtmlTokenType.CDATA_START) {\r\n this._closeVoidElement();\r\n this._consumeCdata(this._advance());\r\n }\r\n else if (this.peek.type === html_lexer_1.HtmlTokenType.COMMENT_START) {\r\n this._closeVoidElement();\r\n this._consumeComment(this._advance());\r\n }\r\n else if (this.peek.type === html_lexer_1.HtmlTokenType.TEXT ||\r\n this.peek.type === html_lexer_1.HtmlTokenType.RAW_TEXT ||\r\n this.peek.type === html_lexer_1.HtmlTokenType.ESCAPABLE_RAW_TEXT) {\r\n this._closeVoidElement();\r\n this._consumeText(this._advance());\r\n }\r\n else {\r\n // Skip all other tokens...\r\n this._advance();\r\n }\r\n }\r\n return new HtmlParseTreeResult(this.rootNodes, this.errors);\r\n };\r\n TreeBuilder.prototype._advance = function () {\r\n var prev = this.peek;\r\n if (this.index < this.tokens.length - 1) {\r\n // Note: there is always an EOF token at the end\r\n this.index++;\r\n }\r\n this.peek = this.tokens[this.index];\r\n return prev;\r\n };\r\n TreeBuilder.prototype._advanceIf = function (type) {\r\n if (this.peek.type === type) {\r\n return this._advance();\r\n }\r\n return null;\r\n };\r\n TreeBuilder.prototype._consumeCdata = function (startToken) {\r\n this._consumeText(this._advance());\r\n this._advanceIf(html_lexer_1.HtmlTokenType.CDATA_END);\r\n };\r\n TreeBuilder.prototype._consumeComment = function (token) {\r\n var text = this._advanceIf(html_lexer_1.HtmlTokenType.RAW_TEXT);\r\n this._advanceIf(html_lexer_1.HtmlTokenType.COMMENT_END);\r\n var value = lang_1.isPresent(text) ? text.parts[0].trim() : null;\r\n this._addToParent(new html_ast_1.HtmlCommentAst(value, token.sourceSpan));\r\n };\r\n TreeBuilder.prototype._consumeText = function (token) {\r\n var text = token.parts[0];\r\n if (text.length > 0 && text[0] == '\\n') {\r\n var parent_1 = this._getParentElement();\r\n if (lang_1.isPresent(parent_1) && parent_1.children.length == 0 &&\r\n html_tags_1.getHtmlTagDefinition(parent_1.name).ignoreFirstLf) {\r\n text = text.substring(1);\r\n }\r\n }\r\n if (text.length > 0) {\r\n this._addToParent(new html_ast_1.HtmlTextAst(text, token.sourceSpan));\r\n }\r\n };\r\n TreeBuilder.prototype._closeVoidElement = function () {\r\n if (this.elementStack.length > 0) {\r\n var el = collection_1.ListWrapper.last(this.elementStack);\r\n if (html_tags_1.getHtmlTagDefinition(el.name).isVoid) {\r\n this.elementStack.pop();\r\n }\r\n }\r\n };\r\n TreeBuilder.prototype._consumeStartTag = function (startTagToken) {\r\n var prefix = startTagToken.parts[0];\r\n var name = startTagToken.parts[1];\r\n var attrs = [];\r\n while (this.peek.type === html_lexer_1.HtmlTokenType.ATTR_NAME) {\r\n attrs.push(this._consumeAttr(this._advance()));\r\n }\r\n var fullName = getElementFullName(prefix, name, this._getParentElement());\r\n var selfClosing = false;\r\n // Note: There could have been a tokenizer error\r\n // so that we don't get a token for the end tag...\r\n if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_OPEN_END_VOID) {\r\n this._advance();\r\n selfClosing = true;\r\n if (html_tags_1.getNsPrefix(fullName) == null && !html_tags_1.getHtmlTagDefinition(fullName).isVoid) {\r\n this.errors.push(HtmlTreeError.create(fullName, startTagToken.sourceSpan, \"Only void and foreign elements can be self closed \\\"\" + startTagToken.parts[1] + \"\\\"\"));\r\n }\r\n }\r\n else if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_OPEN_END) {\r\n this._advance();\r\n selfClosing = false;\r\n }\r\n var end = this.peek.sourceSpan.start;\r\n var el = new html_ast_1.HtmlElementAst(fullName, attrs, [], new parse_util_1.ParseSourceSpan(startTagToken.sourceSpan.start, end));\r\n this._pushElement(el);\r\n if (selfClosing) {\r\n this._popElement(fullName);\r\n }\r\n };\r\n TreeBuilder.prototype._pushElement = function (el) {\r\n if (this.elementStack.length > 0) {\r\n var parentEl = collection_1.ListWrapper.last(this.elementStack);\r\n if (html_tags_1.getHtmlTagDefinition(parentEl.name).isClosedByChild(el.name)) {\r\n this.elementStack.pop();\r\n }\r\n }\r\n var tagDef = html_tags_1.getHtmlTagDefinition(el.name);\r\n var parentEl = this._getParentElement();\r\n if (tagDef.requireExtraParent(lang_1.isPresent(parentEl) ? parentEl.name : null)) {\r\n var newParent = new html_ast_1.HtmlElementAst(tagDef.parentToAdd, [], [el], el.sourceSpan);\r\n this._addToParent(newParent);\r\n this.elementStack.push(newParent);\r\n this.elementStack.push(el);\r\n }\r\n else {\r\n this._addToParent(el);\r\n this.elementStack.push(el);\r\n }\r\n };\r\n TreeBuilder.prototype._consumeEndTag = function (endTagToken) {\r\n var fullName = getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement());\r\n if (html_tags_1.getHtmlTagDefinition(fullName).isVoid) {\r\n this.errors.push(HtmlTreeError.create(fullName, endTagToken.sourceSpan, \"Void elements do not have end tags \\\"\" + endTagToken.parts[1] + \"\\\"\"));\r\n }\r\n else if (!this._popElement(fullName)) {\r\n this.errors.push(HtmlTreeError.create(fullName, endTagToken.sourceSpan, \"Unexpected closing tag \\\"\" + endTagToken.parts[1] + \"\\\"\"));\r\n }\r\n };\r\n TreeBuilder.prototype._popElement = function (fullName) {\r\n for (var stackIndex = this.elementStack.length - 1; stackIndex >= 0; stackIndex--) {\r\n var el = this.elementStack[stackIndex];\r\n if (el.name == fullName) {\r\n collection_1.ListWrapper.splice(this.elementStack, stackIndex, this.elementStack.length - stackIndex);\r\n return true;\r\n }\r\n if (!html_tags_1.getHtmlTagDefinition(el.name).closedByParent) {\r\n return false;\r\n }\r\n }\r\n return false;\r\n };\r\n TreeBuilder.prototype._consumeAttr = function (attrName) {\r\n var fullName = html_tags_1.mergeNsAndName(attrName.parts[0], attrName.parts[1]);\r\n var end = attrName.sourceSpan.end;\r\n var value = '';\r\n if (this.peek.type === html_lexer_1.HtmlTokenType.ATTR_VALUE) {\r\n var valueToken = this._advance();\r\n value = valueToken.parts[0];\r\n end = valueToken.sourceSpan.end;\r\n }\r\n return new html_ast_1.HtmlAttrAst(fullName, value, new parse_util_1.ParseSourceSpan(attrName.sourceSpan.start, end));\r\n };\r\n TreeBuilder.prototype._getParentElement = function () {\r\n return this.elementStack.length > 0 ? collection_1.ListWrapper.last(this.elementStack) : null;\r\n };\r\n TreeBuilder.prototype._addToParent = function (node) {\r\n var parent = this._getParentElement();\r\n if (lang_1.isPresent(parent)) {\r\n parent.children.push(node);\r\n }\r\n else {\r\n this.rootNodes.push(node);\r\n }\r\n };\r\n return TreeBuilder;\r\n})();\r\nfunction getElementFullName(prefix, localName, parentElement) {\r\n if (lang_1.isBlank(prefix)) {\r\n prefix = html_tags_1.getHtmlTagDefinition(localName).implicitNamespacePrefix;\r\n if (lang_1.isBlank(prefix) && lang_1.isPresent(parentElement)) {\r\n prefix = html_tags_1.getNsPrefix(parentElement.name);\r\n }\r\n }\r\n return html_tags_1.mergeNsAndName(prefix, localName);\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbF9wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tcGlsZXIvaHRtbF9wYXJzZXIudHMiXSwibmFtZXMiOlsiSHRtbFRyZWVFcnJvciIsIkh0bWxUcmVlRXJyb3IuY29uc3RydWN0b3IiLCJIdG1sVHJlZUVycm9yLmNyZWF0ZSIsIkh0bWxQYXJzZVRyZWVSZXN1bHQiLCJIdG1sUGFyc2VUcmVlUmVzdWx0LmNvbnN0cnVjdG9yIiwiSHRtbFBhcnNlciIsIkh0bWxQYXJzZXIuY29uc3RydWN0b3IiLCJIdG1sUGFyc2VyLnBhcnNlIiwiVHJlZUJ1aWxkZXIiLCJUcmVlQnVpbGRlci5jb25zdHJ1Y3RvciIsIlRyZWVCdWlsZGVyLmJ1aWxkIiwiVHJlZUJ1aWxkZXIuX2FkdmFuY2UiLCJUcmVlQnVpbGRlci5fYWR2YW5jZUlmIiwiVHJlZUJ1aWxkZXIuX2NvbnN1bWVDZGF0YSIsIlRyZWVCdWlsZGVyLl9jb25zdW1lQ29tbWVudCIsIlRyZWVCdWlsZGVyLl9jb25zdW1lVGV4dCIsIlRyZWVCdWlsZGVyLl9jbG9zZVZvaWRFbGVtZW50IiwiVHJlZUJ1aWxkZXIuX2NvbnN1bWVTdGFydFRhZyIsIlRyZWVCdWlsZGVyLl9wdXNoRWxlbWVudCIsIlRyZWVCdWlsZGVyLl9jb25zdW1lRW5kVGFnIiwiVHJlZUJ1aWxkZXIuX3BvcEVsZW1lbnQiLCJUcmVlQnVpbGRlci5fY29uc3VtZUF0dHIiLCJUcmVlQnVpbGRlci5fZ2V0UGFyZW50RWxlbWVudCIsIlRyZWVCdWlsZGVyLl9hZGRUb1BhcmVudCIsImdldEVsZW1lbnRGdWxsTmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQkFTTywwQkFBMEIsQ0FBQyxDQUFBO0FBRWxDLDJCQUEwQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTNELHlCQUFnRixZQUFZLENBQUMsQ0FBQTtBQUU3RixtQkFBeUIsc0JBQXNCLENBQUMsQ0FBQTtBQUNoRCwyQkFBcUQsY0FBYyxD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Q0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDaERBLE1BQU1BLEdBQUdBLHVCQUFXQSxDQUFDQSxhQUFhQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUMzQ0EsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUFFREEsTUFBTUEsQ0FBQ0EsMEJBQWNBLENBQUNBLE1BQU1BLEVBQUVBLFNBQVNBLENBQUNBLENBQUNBO0FBQzNDQSxDQUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgU3RyaW5nV3JhcHBlcixcbiAgc3RyaW5naWZ5LFxuICBhc3NlcnRpb25zRW5hYmxlZCxcbiAgU3RyaW5nSm9pbmVyLFxuICBzZXJpYWxpemVFbnVtLFxuICBDT05TVF9FWFBSXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbmltcG9ydCB7TGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5cbmltcG9ydCB7SHRtbEFzdCwgSHRtbEF0dHJBc3QsIEh0bWxUZXh0QXN0LCBIdG1sQ29tbWVudEFzdCwgSHRtbEVsZW1lbnRBc3R9IGZyb20gJy4vaHRtbF9hc3QnO1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7SHRtbFRva2VuLCBIdG1sVG9rZW5UeXBlLCB0b2tlbml6ZUh0bWx9IGZyb20gJy4vaHRtbF9sZXhlcic7XG5pbXBvcnQge1BhcnNlRXJyb3IsIFBhcnNlTG9jYXRpb24sIFBhcnNlU291cmNlU3Bhbn0gZnJvbSAnLi9wYXJzZV91dGlsJztcbmltcG9ydCB7SHRtbFRhZ0RlZmluaXRpb24sIGdldEh0bWxUYWdEZWZpbml0aW9uLCBnZXROc1ByZWZpeCwgbWVyZ2VOc0FuZE5hbWV9IGZyb20gJy4vaHRtbF90YWdzJztcblxuZXhwb3J0IGNsYXNzIEh0bWxUcmVlRXJyb3IgZXh0ZW5kcyBQYXJzZUVycm9yIHtcbiAgc3RhdGljIGNyZWF0ZShlbGVtZW50TmFtZTogc3RyaW5nLCBzcGFuOiBQYXJzZVNvdXJjZVNwYW4sIG1zZzogc3RyaW5nKTogSHRtbFRyZWVFcnJvciB7XG4gICAgcmV0dXJuIG5ldyBIdG1sVHJlZUVycm9yKGVsZW1lbnROYW1lLCBzcGFuLCBtc2cpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnROYW1lOiBzdHJpbmcsIHNwYW46IFBhcnNlU291cmNlU3BhbiwgbXNnOiBzdHJpbmcpIHsgc3VwZXIoc3BhbiwgbXNnKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgSHRtbFBhcnNlVHJlZVJlc3VsdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByb290Tm9kZXM6IEh0bWxBc3RbXSwgcHVibGljIGVycm9yczogUGFyc2VFcnJvcltdKSB7fVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSHRtbFBhcnNlciB7XG4gIHBhcnNlKHNvdXJjZUNvbnRlbnQ6IHN0cmluZywgc291cmNlVXJsOiBzdHJpbmcpOiBIdG1sUGFyc2VUcmVlUmVzdWx0IHtcbiAgICB2YXIgdG9rZW5zQW5kRXJyb3JzID0gdG9rZW5pemVIdG1sKHNvdXJjZUNvbnRlbnQsIHNvdXJjZVVybCk7XG4gICAgdmFyIHRyZWVBbmRFcnJvcnMgPSBuZXcgVHJlZUJ1aWxkZXIodG9rZW5zQW5kRXJyb3JzLnRva2VucykuYnVpbGQoKTtcbiAgICByZXR1cm4gbmV3IEh0bWxQYXJzZVRyZWVSZXN1bHQodHJlZUFuZEVycm9ycy5yb290Tm9kZXMsICg8UGFyc2VFcnJvcltdPnRva2Vuc0FuZEVycm9ycy5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbmNhdCh0cmVlQW5kRXJyb3JzLmVycm9ycykpO1xuICB9XG59XG5cbmNsYXNzIFRyZWVCdWlsZGVyIHtcbiAgcHJpdmF0ZSBpbmRleDogbnVtYmVyID0gLTE7XG4gIHByaXZhdGUgcGVlazogSHRtbFRva2VuO1xuXG4gIHByaXZhdGUgcm9vdE5vZGVzOiBIdG1sQXN0W10gPSBbXTtcbiAgcHJpdmF0ZSBlcnJvcnM6IEh0bWxUcmVlRXJyb3JbXSA9IFtdO1xuXG4gIHByaXZhdGUgZWxlbWVudFN0YWNrOiBIdG1sRWxlbWVudEFzdFtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2tlbnM6IEh0bWxUb2tlbltdKSB7IHRoaXMuX2FkdmFuY2UoKTsgfVxuXG4gIGJ1aWxkKCk6IEh0bWxQYXJzZVRyZWVSZXN1bHQge1xuICAgIHdoaWxlICh0aGlzLnBlZWsudHlwZSAhPT0gSHRtbFRva2VuVHlwZS5FT0YpIHtcbiAgICAgIGlmICh0aGlzLnBlZWsudHlwZSA9PT0gSHRtbFRva2VuVHlwZS5UQUdfT1BFTl9TVEFSVCkge1xuICAgICAgICB0aGlzLl9jb25zdW1lU3RhcnRUYWcodGhpcy5fYWR2YW5jZSgpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZWVrLnR5cGUgPT09IEh0bWxUb2tlblR5cGUuVEFHX0NMT1NFKSB7XG4gICAgICAgIHRoaXMuX2NvbnN1bWVFbmRUYWcodGhpcy5fYWR2YW5jZSgpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZWVrLnR5cGUgPT09IEh0bWxUb2tlblR5cGUuQ0RBVEFfU1RBUlQpIHtcbiAgICAgICAgdGhpcy5fY2xvc2VWb2lkRWxlbWVudCgpO1xuICAgICAgICB0aGlzLl9jb25zdW1lQ2RhdGEodGhpcy5fYWR2YW5jZSgpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZWVrLnR5cGUgPT09IEh0bWxUb2tlblR5cGUuQ09NTUVOVF9TVEFSVCkge1xuICAgICAgICB0aGlzLl9jbG9zZVZvaWRFbGVtZW50KCk7XG4gICAgICAgIHRoaXMuX2NvbnN1bWVDb21tZW50KHRoaXMuX2FkdmFuY2UoKSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGVlay50eXBlID09PSBIdG1sVG9rZW5UeXBlLlRFWFQgfHxcbiAgICAgICAgICAgICAgICAgdGhpcy5wZWVrLnR5cGUgPT09IEh0bWxUb2tlblR5cGUuUkFXX1RFWFQgfHxcbiAgICAgICAgICAgICAgICAgdGhpcy5wZWVrLnR5cGUgPT09IEh0bWxUb2tlblR5cGUuRVNDQVBBQkxFX1JBV19URVhUKSB7XG4gICAgICAgIHRoaXMuX2Nsb3NlVm9pZEVsZW1lbnQoKTtcbiAgICAgICAgdGhpcy5fY29uc3VtZVRleHQodGhpcy5fYWR2YW5jZSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNraXAgYWxsIG90aGVyIHRva2Vucy4uLlxuICAgICAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSHRtbFBhcnNlVHJlZVJlc3VsdCh0aGlzLnJvb3ROb2RlcywgdGhpcy5lcnJvcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWR2YW5jZSgpOiBIdG1sVG9rZW4ge1xuICAgIHZhciBwcmV2ID0gdGhpcy5wZWVrO1xuICAgIGlmICh0aGlzLmluZGV4IDwgdGhpcy50b2tlbnMubGVuZ3RoIC0gMSkge1xuICAgICAgLy8gTm90ZTogdGhlcmUgaXMgYWx3YXlzIGFuIEVPRiB0b2tlbiBhdCB0aGUgZW5kXG4gICAgICB0aGlzLmluZGV4Kys7XG4gICAgfVxuICAgIHRoaXMucGVlayA9IHRoaXMudG9rZW5zW3RoaXMuaW5kZXhdO1xuICAgIHJldHVybiBwcmV2O1xuICB9XG5cbiAgcHJpdmF0ZSBfYWR2YW5jZUlmKHR5cGU6IEh0bWxUb2tlblR5cGUpOiBIdG1sVG9rZW4ge1xuICAgIGlmICh0aGlzLnBlZWsudHlwZSA9PT0gdHlwZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkdmFuY2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lQ2RhdGEoc3RhcnRUb2tlbjogSHRtbFRva2VuKSB7XG4gICAgdGhpcy5fY29uc3VtZVRleHQodGhpcy5fYWR2YW5jZSgpKTtcbiAgICB0aGlzLl9hZHZhbmNlSWYoSHRtbFRva2VuVHlwZS5DREFUQV9FTkQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZUNvbW1lbnQodG9rZW46IEh0bWxUb2tlbikge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5fYWR2YW5jZUlmKEh0bWxUb2tlblR5cGUuUkFXX1RFWFQpO1xuICAgIHRoaXMuX2FkdmFuY2VJZihIdG1sVG9rZW5UeXBlLkNPTU1FTlRfRU5EKTtcbiAgICB2YXIgdmFsdWUgPSBpc1ByZXNlbnQodGV4dCkgPyB0ZXh0LnBhcnRzWzBdLnRyaW0oKSA6IG51bGw7XG4gICAgdGhpcy5fYWRkVG9QYXJlbnQobmV3IEh0bWxDb21tZW50QXN0KHZhbHVlLCB0b2tlbi5zb3VyY2VTcGFuKSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lVGV4dCh0b2tlbjogSHRtbFRva2VuKSB7XG4gICAgbGV0IHRleHQgPSB0b2tlbi5wYXJ0c1swXTtcbiAgICBpZiAodGV4dC5sZW5ndGggPiAwICYmIHRleHRbMF0gPT0gJ1xcbicpIHtcbiAgICAgIGxldCBwYXJlbnQgPSB0aGlzLl9nZXRQYXJlbnRFbGVtZW50KCk7XG4gICAgICBpZiAoaXNQcmVzZW50KHBhcmVudCkgJiYgcGFyZW50LmNoaWxkcmVuLmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgZ2V0SHRtbFRhZ0RlZmluaXRpb24ocGFyZW50Lm5hbWUpLmlnbm9yZUZpcnN0TGYpIHtcbiAgICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX2FkZFRvUGFyZW50KG5ldyBIdG1sVGV4dEFzdCh0ZXh0LCB0b2tlbi5zb3VyY2VTcGFuKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VWb2lkRWxlbWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbGVtZW50U3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgbGV0IGVsID0gTGlzdFdyYXBwZXIubGFzdCh0aGlzLmVsZW1lbnRTdGFjayk7XG5cbiAgICAgIGlmIChnZXRIdG1sVGFnRGVmaW5pdGlvbihlbC5uYW1lKS5pc1ZvaWQpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50U3RhY2sucG9wKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29uc3VtZVN0YXJ0VGFnKHN0YXJ0VGFnVG9rZW46IEh0bWxUb2tlbikge1xuICAgIHZhciBwcmVmaXggPSBzdGFydFRhZ1Rva2VuLnBhcnRzWzBdO1xuICAgIHZhciBuYW1lID0gc3RhcnRUYWdUb2tlbi5wYXJ0c1sxXTtcbiAgICB2YXIgYXR0cnMgPSBbXTtcbiAgICB3aGlsZSAodGhpcy5wZWVrLnR5cGUgPT09IEh0bWxUb2tlblR5cGUuQVRUUl9OQU1FKSB7XG4gICAgICBhdHRycy5wdXNoKHRoaXMuX2NvbnN1bWVBdHRyKHRoaXMuX2FkdmFuY2UoKSkpO1xuICAgIH1cbiAgICB2YXIgZnVsbE5hbWUgPSBnZXRFbGVtZW50RnVsbE5hbWUocHJlZml4LCBuYW1lLCB0aGlzLl9nZXRQYXJlbnRFbGVtZW50KCkpO1xuICAgIHZhciBzZWxmQ2xvc2luZyA9IGZhbHNlO1xuICAgIC8vIE5vdGU6IFRoZXJlIGNvdWxkIGhhdmUgYmVlbiBhIHRva2VuaXplciBlcnJvclxuICAgIC8vIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IGEgdG9rZW4gZm9yIHRoZSBlbmQgdGFnLi4uXG4gICAgaWYgKHRoaXMucGVlay50eXBlID09PSBIdG1sVG9rZW5UeXBlLlRBR19PUEVOX0VORF9WT0lEKSB7XG4gICAgICB0aGlzLl9hZHZhbmNlKCk7XG4gICAgICBzZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgICBpZiAoZ2V0TnNQcmVmaXgoZnVsbE5hbWUpID09IG51bGwgJiYgIWdldEh0bWxUYWdEZWZpbml0aW9uKGZ1bGxOYW1lKS5pc1ZvaWQpIHtcbiAgICAgICAgdGhpcy5lcnJvcnMucHVzaChIdG1sVHJlZUVycm9yLmNyZWF0ZShcbiAgICAgICAgICAgIGZ1bGxOYW1lLCBzdGFydFRhZ1Rva2VuLnNvdXJjZVNwYW4sXG4gICAgICAgICAgICBgT25seSB2b2lkIGFuZCBmb3JlaWduIGVsZW1lbnRzIGNhbiBiZSBzZWxmIGNsb3NlZCBcIiR7c3RhcnRUYWdUb2tlbi5wYXJ0c1sxXX1cImApKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucGVlay50eXBlID09PSBIdG1sVG9rZW5UeXBlLlRBR19PUEVOX0VORCkge1xuICAgICAgdGhpcy5fYWR2YW5jZSgpO1xuICAgICAgc2VsZkNsb3NpbmcgPSBmYWxzZTtcbiAgICB9XG4gICAgdmFyIGVuZCA9IHRoaXMucGVlay5zb3VyY2VTcGFuLnN0YXJ0O1xuICAgIHZhciBlbCA9IG5ldyBIdG1sRWxlbWVudEFzdChmdWxsTmFtZSwgYXR0cnMsIFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUGFyc2VTb3VyY2VTcGFuKHN0YXJ0VGFnVG9rZW4uc291cmNlU3Bhbi5zdGFydCwgZW5kKSk7XG4gICAgdGhpcy5fcHVzaEVsZW1lbnQoZWwpO1xuICAgIGlmIChzZWxmQ2xvc2luZykge1xuICAgICAgdGhpcy5fcG9wRWxlbWVudChmdWxsTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcHVzaEVsZW1lbnQoZWw6IEh0bWxFbGVtZW50QXN0KSB7XG4gICAgaWYgKHRoaXMuZWxlbWVudFN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBwYXJlbnRFbCA9IExpc3RXcmFwcGVyLmxhc3QodGhpcy5lbGVtZW50U3RhY2spO1xuICAgICAgaWYgKGdldEh0bWxUYWdEZWZpbml0aW9uKHBhcmVudEVsLm5hbWUpLmlzQ2xvc2VkQnlDaGlsZChlbC5uYW1lKSkge1xuICAgICAgICB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdGFnRGVmID0gZ2V0SHRtbFRhZ0RlZmluaXRpb24oZWwubmFtZSk7XG4gICAgdmFyIHBhcmVudEVsID0gdGhpcy5fZ2V0UGFyZW50RWxlbWVudCgpO1xuICAgIGlmICh0YWdEZWYucmVxdWlyZUV4dHJhUGFyZW50KGlzUHJlc2VudChwYXJlbnRFbCkgPyBwYXJlbnRFbC5uYW1lIDogbnVsbCkpIHtcbiAgICAgIHZhciBuZXdQYXJlbnQgPSBuZXcgSHRtbEVsZW1lbnRBc3QodGFnRGVmLnBhcmVudFRvQWRkLCBbXSwgW2VsXSwgZWwuc291cmNlU3Bhbik7XG4gICAgICB0aGlzLl9hZGRUb1BhcmVudChuZXdQYXJlbnQpO1xuICAgICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaChuZXdQYXJlbnQpO1xuICAgICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaChlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2FkZFRvUGFyZW50KGVsKTtcbiAgICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2goZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbnN1bWVFbmRUYWcoZW5kVGFnVG9rZW46IEh0bWxUb2tlbikge1xuICAgIHZhciBmdWxsTmFtZSA9XG4gICAgICAgIGdldEVsZW1lbnRGdWxsTmFtZShlbmRUYWdUb2tlbi5wYXJ0c1swXSwgZW5kVGFnVG9rZW4ucGFydHNbMV0sIHRoaXMuX2dldFBhcmVudEVsZW1lbnQoKSk7XG5cbiAgICBpZiAoZ2V0SHRtbFRhZ0RlZmluaXRpb24oZnVsbE5hbWUpLmlzVm9pZCkge1xuICAgICAgdGhpcy5lcnJvcnMucHVzaChcbiAgICAgICAgICBIdG1sVHJlZUVycm9yLmNyZWF0ZShmdWxsTmFtZSwgZW5kVGFnVG9rZW4uc291cmNlU3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgVm9pZCBlbGVtZW50cyBkbyBub3QgaGF2ZSBlbmQgdGFncyBcIiR7ZW5kVGFnVG9rZW4ucGFydHNbMV19XCJgKSk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5fcG9wRWxlbWVudChmdWxsTmFtZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JzLnB1c2goSHRtbFRyZWVFcnJvci5jcmVhdGUoZnVsbE5hbWUsIGVuZFRhZ1Rva2VuLnNvdXJjZVNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBVbmV4cGVjdGVkIGNsb3NpbmcgdGFnIFwiJHtlbmRUYWdUb2tlbi5wYXJ0c1sxXX1cImApKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9wb3BFbGVtZW50KGZ1bGxOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCBzdGFja0luZGV4ID0gdGhpcy5lbGVtZW50U3RhY2subGVuZ3RoIC0gMTsgc3RhY2tJbmRleCA+PSAwOyBzdGFja0luZGV4LS0pIHtcbiAgICAgIGxldCBlbCA9IHRoaXMuZWxlbWVudFN0YWNrW3N0YWNrSW5kZXhdO1xuICAgICAgaWYgKGVsLm5hbWUgPT0gZnVsbE5hbWUpIHtcbiAgICAgICAgTGlzdFdyYXBwZXIuc3BsaWNlKHRoaXMuZWxlbWVudFN0YWNrLCBzdGFja0luZGV4LCB0aGlzLmVsZW1lbnRTdGFjay5sZW5ndGggLSBzdGFja0luZGV4KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghZ2V0SHRtbFRhZ0RlZmluaXRpb24oZWwubmFtZSkuY2xvc2VkQnlQYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9jb25zdW1lQXR0cihhdHRyTmFtZTogSHRtbFRva2VuKTogSHRtbEF0dHJBc3Qge1xuICAgIHZhciBmdWxsTmFtZSA9IG1lcmdlTnNBbmROYW1lKGF0dHJOYW1lLnBhcnRzWzBdLCBhdHRyTmFtZS5wYXJ0c1sxXSk7XG4gICAgdmFyIGVuZCA9IGF0dHJOYW1lLnNvdXJjZVNwYW4uZW5kO1xuICAgIHZhciB2YWx1ZSA9ICcnO1xuICAgIGlmICh0aGlzLnBlZWsudHlwZSA9PT0gSHRtbFRva2VuVHlwZS5BVFRSX1ZBTFVFKSB7XG4gICAgICB2YXIgdmFsdWVUb2tlbiA9IHRoaXMuX2FkdmFuY2UoKTtcbiAgICAgIHZhbHVlID0gdmFsdWVUb2tlbi5wYXJ0c1swXTtcbiAgICAgIGVuZCA9IHZhbHVlVG9rZW4uc291cmNlU3Bhbi5lbmQ7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSHRtbEF0dHJBc3QoZnVsbE5hbWUsIHZhbHVlLCBuZXcgUGFyc2VTb3VyY2VTcGFuKGF0dHJOYW1lLnNvdXJjZVNwYW4uc3RhcnQsIGVuZCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UGFyZW50RWxlbWVudCgpOiBIdG1sRWxlbWVudEFzdCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrLmxlbmd0aCA+IDAgPyBMaXN0V3JhcHBlci5sYXN0KHRoaXMuZWxlbWVudFN0YWNrKSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9hZGRUb1BhcmVudChub2RlOiBIdG1sQXN0KSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuX2dldFBhcmVudEVsZW1lbnQoKTtcbiAgICBpZiAoaXNQcmVzZW50KHBhcmVudCkpIHtcbiAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKG5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvb3ROb2Rlcy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRFbGVtZW50RnVsbE5hbWUocHJlZml4OiBzdHJpbmcsIGxvY2FsTmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQ6IEh0bWxFbGVtZW50QXN0KTogc3RyaW5nIHtcbiAgaWYgKGlzQmxhbmsocHJlZml4KSkge1xuICAgIHByZWZpeCA9IGdldEh0bWxUYWdEZWZpbml0aW9uKGxvY2FsTmFtZSkuaW1wbGljaXROYW1lc3BhY2VQcmVmaXg7XG4gICAgaWYgKGlzQmxhbmsocHJlZml4KSAmJiBpc1ByZXNlbnQocGFyZW50RWxlbWVudCkpIHtcbiAgICAgIHByZWZpeCA9IGdldE5zUHJlZml4KHBhcmVudEVsZW1lbnQubmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlTnNBbmROYW1lKHByZWZpeCwgbG9jYWxOYW1lKTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar html_tags_1 = require('./html_tags');\r\nvar NG_CONTENT_SELECT_ATTR = 'select';\r\nvar NG_CONTENT_ELEMENT = 'ng-content';\r\nvar LINK_ELEMENT = 'link';\r\nvar LINK_STYLE_REL_ATTR = 'rel';\r\nvar LINK_STYLE_HREF_ATTR = 'href';\r\nvar LINK_STYLE_REL_VALUE = 'stylesheet';\r\nvar STYLE_ELEMENT = 'style';\r\nvar SCRIPT_ELEMENT = 'script';\r\nvar NG_NON_BINDABLE_ATTR = 'ngNonBindable';\r\nfunction preparseElement(ast) {\r\n var selectAttr = null;\r\n var hrefAttr = null;\r\n var relAttr = null;\r\n var nonBindable = false;\r\n ast.attrs.forEach(function (attr) {\r\n var lcAttrName = attr.name.toLowerCase();\r\n if (lcAttrName == NG_CONTENT_SELECT_ATTR) {\r\n selectAttr = attr.value;\r\n }\r\n else if (lcAttrName == LINK_STYLE_HREF_ATTR) {\r\n hrefAttr = attr.value;\r\n }\r\n else if (lcAttrName == LINK_STYLE_REL_ATTR) {\r\n relAttr = attr.value;\r\n }\r\n else if (attr.name == NG_NON_BINDABLE_ATTR) {\r\n nonBindable = true;\r\n }\r\n });\r\n selectAttr = normalizeNgContentSelect(selectAttr);\r\n var nodeName = ast.name.toLowerCase();\r\n var type = PreparsedElementType.OTHER;\r\n if (html_tags_1.splitNsName(nodeName)[1] == NG_CONTENT_ELEMENT) {\r\n type = PreparsedElementType.NG_CONTENT;\r\n }\r\n else if (nodeName == STYLE_ELEMENT) {\r\n type = PreparsedElementType.STYLE;\r\n }\r\n else if (nodeName == SCRIPT_ELEMENT) {\r\n type = PreparsedElementType.SCRIPT;\r\n }\r\n else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) {\r\n type = PreparsedElementType.STYLESHEET;\r\n }\r\n return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable);\r\n}\r\nexports.preparseElement = preparseElement;\r\n(function (PreparsedElementType) {\r\n PreparsedElementType[PreparsedElementType[\"NG_CONTENT\"] = 0] = \"NG_CONTENT\";\r\n PreparsedElementType[PreparsedElementType[\"STYLE\"] = 1] = \"STYLE\";\r\n PreparsedElementType[PreparsedElementType[\"STYLESHEET\"] = 2] = \"STYLESHEET\";\r\n PreparsedElementType[PreparsedElementType[\"SCRIPT\"] = 3] = \"SCRIPT\";\r\n PreparsedElementType[PreparsedElementType[\"OTHER\"] = 4] = \"OTHER\";\r\n})(exports.PreparsedElementType || (exports.PreparsedElementType = {}));\r\nvar PreparsedElementType = exports.PreparsedElementType;\r\nvar PreparsedElement = (function () {\r\n function PreparsedElement(type, selectAttr, hrefAttr, nonBindable) {\r\n this.type = type;\r\n this.selectAttr = selectAttr;\r\n this.hrefAttr = hrefAttr;\r\n this.nonBindable = nonBindable;\r\n }\r\n return PreparsedElement;\r\n})();\r\nexports.PreparsedElement = PreparsedElement;\r\nfunction normalizeNgContentSelect(selectAttr) {\r\n if (lang_1.isBlank(selectAttr) || selectAttr.length === 0) {\r\n return '*';\r\n }\r\n return selectAttr;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfcHJlcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3RlbXBsYXRlX3ByZXBhcnNlci50cyJdLCJuYW1lcyI6WyJwcmVwYXJzZUVsZW1lbnQiLCJQcmVwYXJzZWRFbGVtZW50VHlwZSIsIlByZXBhcnNlZEVsZW1lbnQiLCJQcmVwYXJzZWRFbGVtZW50LmNvbnN0cnVjdG9yIiwibm9ybWFsaXplTmdDb250ZW50U2VsZWN0Il0sIm1hcHBpbmdzIjoiQUFDQSxxQkFBaUMsMEJBQTBCLENBQUMsQ0FBQTtBQUM1RCwwQkFBMEIsYUFBYSxDQUFDLENBQUE7QUFFeEMsSUFBTSxzQkFBc0IsR0FBRyxRQUFRLENBQUM7QUFDeEMsSUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQUM7QUFDeEMsSUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDO0FBQzVCLElBQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0FBQ2xDLElBQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDO0FBQ3BDLElBQU0sb0JBQW9CLEdBQUcsWUFBWSxDQUFDO0FBQzFDLElBQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQztBQUM5QixJQUFNLGNBQWMsR0FBRyxRQUFRLENBQUM7QUFDaEMsSUFBTSxvQkFBb0IsR0FBRyxlQUFlLENBQUM7QUFFN0MseUJBQWdDLEdBQW1CO0lBQ2pEQSxJQUFJQSxVQUFVQSxHQUFHQSxJQUFJQSxDQUFDQTtJQUN0QkEsSUFBSUEsUUFBUUEsR0FBR0EsSUFBSUEsQ0FBQ0E7SUFDcEJBLElBQUlBLE9BQU9BLEdBQUdBLElBQUlBLENBQUNBO0lBQ25CQSxJQUFJQSxXQUFXQSxHQUFHQSxLQUFLQSxDQUFDQTtJQUN4QkEsR0FBR0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsVUFBQUEsSUFBSUE7UUFDcEJBLElBQUlBLFVBQVVBLEdBQUdBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLFdBQVdBLEVBQUVBLENBQUNBO1FBQ3pD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QkFBQ0E7QUFBREEsQ0FBQ0EsQUFIRCxJQUdDO0FBSFksd0JBQWdCLG1CQUc1QixDQUFBO0FBR0Qsa0NBQWtDLFVBQWtCO0lBQ2xERSxFQUFFQSxDQUFDQSxDQUFDQSxjQUFPQSxDQUFDQSxVQUFVQSxDQUFDQSxJQUFJQSxVQUFVQSxDQUFDQSxNQUFNQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNuREEsTUFBTUEsQ0FBQ0EsR0FBR0EsQ0FBQ0E7SUFDYkEsQ0FBQ0E7SUFDREEsTUFBTUEsQ0FBQ0EsVUFBVUEsQ0FBQ0E7QUFDcEJBLENBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdG1sRWxlbWVudEFzdH0gZnJvbSAnLi9odG1sX2FzdCc7XG5pbXBvcnQge2lzQmxhbmssIGlzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7c3BsaXROc05hbWV9IGZyb20gJy4vaHRtbF90YWdzJztcblxuY29uc3QgTkdfQ09OVEVOVF9TRUxFQ1RfQVRUUiA9ICdzZWxlY3QnO1xuY29uc3QgTkdfQ09OVEVOVF9FTEVNRU5UID0gJ25nLWNvbnRlbnQnO1xuY29uc3QgTElOS19FTEVNRU5UID0gJ2xpbmsnO1xuY29uc3QgTElOS19TVFlMRV9SRUxfQVRUUiA9ICdyZWwnO1xuY29uc3QgTElOS19TVFlMRV9IUkVGX0FUVFIgPSAnaHJlZic7XG5jb25zdCBMSU5LX1NUWUxFX1JFTF9WQUxVRSA9ICdzdHlsZXNoZWV0JztcbmNvbnN0IFNUWUxFX0VMRU1FTlQgPSAnc3R5bGUnO1xuY29uc3QgU0NSSVBUX0VMRU1FTlQgPSAnc2NyaXB0JztcbmNvbnN0IE5HX05PTl9CSU5EQUJMRV9BVFRSID0gJ25nTm9uQmluZGFibGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyc2VFbGVtZW50KGFzdDogSHRtbEVsZW1lbnRBc3QpOiBQcmVwYXJzZWRFbGVtZW50IHtcbiAgdmFyIHNlbGVjdEF0dHIgPSBudWxsO1xuICB2YXIgaHJlZkF0dHIgPSBudWxsO1xuICB2YXIgcmVsQXR0ciA9IG51bGw7XG4gIHZhciBub25CaW5kYWJsZSA9IGZhbHNlO1xuICBhc3QuYXR0cnMuZm9yRWFjaChhdHRyID0+IHtcbiAgICBsZXQgbGNBdHRyTmFtZSA9IGF0dHIubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChsY0F0dHJOYW1lID09IE5HX0NPTlRFTlRfU0VMRUNUX0FUVFIpIHtcbiAgICAgIHNlbGVjdEF0dHIgPSBhdHRyLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAobGNBdHRyTmFtZSA9PSBMSU5LX1NUWUxFX0hSRUZfQVRUUikge1xuICAgICAgaHJlZkF0dHIgPSBhdHRyLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAobGNBdHRyTmFtZSA9PSBMSU5LX1NUWUxFX1JFTF9BVFRSKSB7XG4gICAgICByZWxBdHRyID0gYXR0ci52YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGF0dHIubmFtZSA9PSBOR19OT05fQklOREFCTEVfQVRUUikge1xuICAgICAgbm9uQmluZGFibGUgPSB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIHNlbGVjdEF0dHIgPSBub3JtYWxpemVOZ0NvbnRlbnRTZWxlY3Qoc2VsZWN0QXR0cik7XG4gIHZhciBub2RlTmFtZSA9IGFzdC5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gIHZhciB0eXBlID0gUHJlcGFyc2VkRWxlbWVudFR5cGUuT1RIRVI7XG4gIGlmIChzcGxpdE5zTmFtZShub2RlTmFtZSlbMV0gPT0gTkdfQ09OVEVOVF9FTEVNRU5UKSB7XG4gICAgdHlwZSA9IFByZXBhcnNlZEVsZW1lbnRUeXBlLk5HX0NPTlRFTlQ7XG4gIH0gZWxzZSBpZiAobm9kZU5hbWUgPT0gU1RZTEVfRUxFTUVOVCkge1xuICAgIHR5cGUgPSBQcmVwYXJzZWRFbGVtZW50VHlwZS5TVFlMRTtcbiAgfSBlbHNlIGlmIChub2RlTmFtZSA9PSBTQ1JJUFRfRUxFTUVOVCkge1xuICAgIHR5cGUgPSBQcmVwYXJzZWRFbGVtZW50VHlwZS5TQ1JJUFQ7XG4gIH0gZWxzZSBpZiAobm9kZU5hbWUgPT0gTElOS19FTEVNRU5UICYmIHJlbEF0dHIgPT0gTElOS19TVFlMRV9SRUxfVkFMVUUpIHtcbiAgICB0eXBlID0gUHJlcGFyc2VkRWxlbWVudFR5cGUuU1RZTEVTSEVFVDtcbiAgfVxuICByZXR1cm4gbmV3IFByZXBhcnNlZEVsZW1lbnQodHlwZSwgc2VsZWN0QXR0ciwgaHJlZkF0dHIsIG5vbkJpbmRhYmxlKTtcbn1cblxuZXhwb3J0IGVudW0gUHJlcGFyc2VkRWxlbWVudFR5cGUge1xuICBOR19DT05URU5ULFxuICBTVFlMRSxcbiAgU1RZTEVTSEVFVCxcbiAgU0NSSVBULFxuICBPVEhFUlxufVxuXG5leHBvcnQgY2xhc3MgUHJlcGFyc2VkRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0eXBlOiBQcmVwYXJzZWRFbGVtZW50VHlwZSwgcHVibGljIHNlbGVjdEF0dHI6IHN0cmluZywgcHVibGljIGhyZWZBdHRyOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHB1YmxpYyBub25CaW5kYWJsZTogYm9vbGVhbikge31cbn1cblxuXG5mdW5jdGlvbiBub3JtYWxpemVOZ0NvbnRlbnRTZWxlY3Qoc2VsZWN0QXR0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGlzQmxhbmsoc2VsZWN0QXR0cikgfHwgc2VsZWN0QXR0ci5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJyonO1xuICB9XG4gIHJldHVybiBzZWxlY3RBdHRyO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar directive_metadata_1 = require('./directive_metadata');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar xhr_1 = require('angular2/src/compiler/xhr');\r\nvar url_resolver_1 = require('angular2/src/compiler/url_resolver');\r\nvar style_url_resolver_1 = require('./style_url_resolver');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar view_1 = require('angular2/src/core/metadata/view');\r\nvar html_ast_1 = require('./html_ast');\r\nvar html_parser_1 = require('./html_parser');\r\nvar template_preparser_1 = require('./template_preparser');\r\nvar TemplateNormalizer = (function () {\r\n function TemplateNormalizer(_xhr, _urlResolver, _htmlParser) {\r\n this._xhr = _xhr;\r\n this._urlResolver = _urlResolver;\r\n this._htmlParser = _htmlParser;\r\n }\r\n TemplateNormalizer.prototype.normalizeTemplate = function (directiveType, template) {\r\n var _this = this;\r\n if (lang_1.isPresent(template.template)) {\r\n return async_1.PromiseWrapper.resolve(this.normalizeLoadedTemplate(directiveType, template, template.template, directiveType.moduleUrl));\r\n }\r\n else if (lang_1.isPresent(template.templateUrl)) {\r\n var sourceAbsUrl = this._urlResolver.resolve(directiveType.moduleUrl, template.templateUrl);\r\n return this._xhr.get(sourceAbsUrl)\r\n .then(function (templateContent) { return _this.normalizeLoadedTemplate(directiveType, template, templateContent, sourceAbsUrl); });\r\n }\r\n else {\r\n throw new exceptions_1.BaseException(\"No template specified for component \" + directiveType.name);\r\n }\r\n };\r\n TemplateNormalizer.prototype.normalizeLoadedTemplate = function (directiveType, templateMeta, template, templateAbsUrl) {\r\n var _this = this;\r\n var rootNodesAndErrors = this._htmlParser.parse(template, directiveType.name);\r\n if (rootNodesAndErrors.errors.length > 0) {\r\n var errorString = rootNodesAndErrors.errors.join('\\n');\r\n throw new exceptions_1.BaseException(\"Template parse errors:\\n\" + errorString);\r\n }\r\n var visitor = new TemplatePreparseVisitor();\r\n html_ast_1.htmlVisitAll(visitor, rootNodesAndErrors.rootNodes);\r\n var allStyles = templateMeta.styles.concat(visitor.styles);\r\n var allStyleAbsUrls = visitor.styleUrls.filter(style_url_resolver_1.isStyleUrlResolvable)\r\n .map(function (url) { return _this._urlResolver.resolve(templateAbsUrl, url); })\r\n .concat(templateMeta.styleUrls.filter(style_url_resolver_1.isStyleUrlResolvable)\r\n .map(function (url) { return _this._urlResolver.resolve(directiveType.moduleUrl, url); }));\r\n var allResolvedStyles = allStyles.map(function (style) {\r\n var styleWithImports = style_url_resolver_1.extractStyleUrls(_this._urlResolver, templateAbsUrl, style);\r\n styleWithImports.styleUrls.forEach(function (styleUrl) { return allStyleAbsUrls.push(styleUrl); });\r\n return styleWithImports.style;\r\n });\r\n var encapsulation = templateMeta.encapsulation;\r\n if (encapsulation === view_1.ViewEncapsulation.Emulated && allResolvedStyles.length === 0 &&\r\n allStyleAbsUrls.length === 0) {\r\n encapsulation = view_1.ViewEncapsulation.None;\r\n }\r\n return new directive_metadata_1.CompileTemplateMetadata({\r\n encapsulation: encapsulation,\r\n template: template,\r\n templateUrl: templateAbsUrl,\r\n styles: allResolvedStyles,\r\n styleUrls: allStyleAbsUrls,\r\n ngContentSelectors: visitor.ngContentSelectors\r\n });\r\n };\r\n TemplateNormalizer = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [xhr_1.XHR, url_resolver_1.UrlResolver, html_parser_1.HtmlParser])\r\n ], TemplateNormalizer);\r\n return TemplateNormalizer;\r\n})();\r\nexports.TemplateNormalizer = TemplateNormalizer;\r\nvar TemplatePreparseVisitor = (function () {\r\n function TemplatePreparseVisitor() {\r\n this.ngContentSelectors = [];\r\n this.styles = [];\r\n this.styleUrls = [];\r\n this.ngNonBindableStackCount = 0;\r\n }\r\n TemplatePreparseVisitor.prototype.visitElement = function (ast, context) {\r\n var preparsedElement = template_preparser_1.preparseElement(ast);\r\n switch (preparsedElement.type) {\r\n case template_preparser_1.PreparsedElementType.NG_CONTENT:\r\n if (this.ngNonBindableStackCount === 0) {\r\n this.ngContentSelectors.push(preparsedElement.selectAttr);\r\n }\r\n break;\r\n case template_preparser_1.PreparsedElementType.STYLE:\r\n var textContent = '';\r\n ast.children.forEach(function (child) {\r\n if (child instanceof html_ast_1.HtmlTextAst) {\r\n textContent += child.value;\r\n }\r\n });\r\n this.styles.push(textContent);\r\n break;\r\n case template_preparser_1.PreparsedElementType.STYLESHEET:\r\n this.styleUrls.push(preparsedElement.hrefAttr);\r\n break;\r\n default:\r\n // DDC reports this as error. See:\r\n // https://github.com/dart-lang/dev_compiler/issues/428\r\n break;\r\n }\r\n if (preparsedElement.nonBindable) {\r\n this.ngNonBindableStackCount++;\r\n }\r\n html_ast_1.htmlVisitAll(this, ast.children);\r\n if (preparsedElement.nonBindable) {\r\n this.ngNonBindableStackCount--;\r\n }\r\n return null;\r\n };\r\n TemplatePreparseVisitor.prototype.visitComment = function (ast, context) { return null; };\r\n TemplatePreparseVisitor.prototype.visitAttr = function (ast, context) { return null; };\r\n TemplatePreparseVisitor.prototype.visitText = function (ast, context) { return null; };\r\n return TemplatePreparseVisitor;\r\n})();\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfbm9ybWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21waWxlci90ZW1wbGF0ZV9ub3JtYWxpemVyLnRzIl0sIm5hbWVzIjpbIlRlbXBsYXRlTm9ybWFsaXplciIsIlRlbXBsYXRlTm9ybWFsaXplci5jb25zdHJ1Y3RvciIsIlRlbXBsYXRlTm9ybWFsaXplci5ub3JtYWxpemVUZW1wbGF0ZSIsIlRlbXBsYXRlTm9ybWFsaXplci5ub3JtYWxpemVMb2FkZWRUZW1wbGF0ZSIsIlRlbXBsYXRlUHJlcGFyc2VWaXNpdG9yIiwiVGVtcGxhdGVQcmVwYXJzZVZpc2l0b3IuY29uc3RydWN0b3IiLCJUZW1wbGF0ZVByZXBhcnNlVmlzaXRvci52aXNpdEVsZW1lbnQiLCJUZW1wbGF0ZVByZXBhcnNlVmlzaXRvci52aXNpdENvbW1lbnQiLCJUZW1wbGF0ZVByZXBhcnNlVmlzaXRvci52aXNpdEF0dHIiLCJUZW1wbGF0ZVByZXBhcnNlVmlzaXRvci52aXNpdFRleHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLG1DQUlPLHNCQUFzQixDQUFDLENBQUE7QUFDOUIscUJBQWlDLDBCQUEwQixDQUFDLENBQUE7QUFDNUQsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFDN0Qsc0JBQTZCLDJCQUEyQixDQUFDLENBQUE7QUFFekQsb0JBQWtCLDJCQUEyQixDQUFDLENBQUE7QUFDOUMsNkJBQTBCLG9DQUFvQyxDQUFDLENBQUE7QUFDL0QsbUNBQXFELHNCQUFzQixDQUFDLENBQUE7QUFDNUUsbUJBQXlCLHNCQUFzQixDQUFDLENBQUE7QUFDaEQscUJBQWdDLGlDQUFpQyxDQUFDLENBQUE7QUFHbEUseUJBUU8sWUFBWSxDQUFDLENBQUE7QUFDcEIsNEJBQXlCLGVBQWUsQ0FBQyxDQUFBO0FBRXpDLG1DQUFzRSxzQkFBc0IsQ0FBQyxDQUFBO0FBRTdGO0lBRUVBLDRCQUFvQkEsSUFBU0EsRUFBVUEsWUFBeUJBLEVBQzVD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QVRBLFVBQVVBLEdBQWdCQSxFQUFFQSxPQUFZQSxJQUFTSSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUMvREosMkNBQVNBLEdBQVRBLFVBQVVBLEdBQWdCQSxFQUFFQSxPQUFZQSxJQUFTSyxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNqRUwsOEJBQUNBO0FBQURBLENBQUNBLEFBM0NELElBMkNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcGlsZVR5cGVNZXRhZGF0YSxcbiAgQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLFxuICBDb21waWxlVGVtcGxhdGVNZXRhZGF0YVxufSBmcm9tICcuL2RpcmVjdGl2ZV9tZXRhZGF0YSc7XG5pbXBvcnQge2lzUHJlc2VudCwgaXNCbGFua30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7UHJvbWlzZVdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYXN5bmMnO1xuXG5pbXBvcnQge1hIUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3hocic7XG5pbXBvcnQge1VybFJlc29sdmVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvdXJsX3Jlc29sdmVyJztcbmltcG9ydCB7ZXh0cmFjdFN0eWxlVXJscywgaXNTdHlsZVVybFJlc29sdmFibGV9IGZyb20gJy4vc3R5bGVfdXJsX3Jlc29sdmVyJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEvdmlldyc7XG5cblxuaW1wb3J0IHtcbiAgSHRtbEFzdFZpc2l0b3IsXG4gIEh0bWxFbGVtZW50QXN0LFxuICBIdG1sVGV4dEFzdCxcbiAgSHRtbEF0dHJBc3QsXG4gIEh0bWxBc3QsXG4gIEh0bWxDb21tZW50QXN0LFxuICBodG1sVmlzaXRBbGxcbn0gZnJvbSAnLi9odG1sX2FzdCc7XG5pbXBvcnQge0h0bWxQYXJzZXJ9IGZyb20gJy4vaHRtbF9wYXJzZXInO1xuXG5pbXBvcnQge3ByZXBhcnNlRWxlbWVudCwgUHJlcGFyc2VkRWxlbWVudCwgUHJlcGFyc2VkRWxlbWVudFR5cGV9IGZyb20gJy4vdGVtcGxhdGVfcHJlcGFyc2VyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlTm9ybWFsaXplciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3hocjogWEhSLCBwcml2YXRlIF91cmxSZXNvbHZlcjogVXJsUmVzb2x2ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2h0bWxQYXJzZXI6IEh0bWxQYXJzZXIpIHt9XG5cbiAgbm9ybWFsaXplVGVtcGxhdGUoZGlyZWN0aXZlVHlwZTogQ29tcGlsZVR5cGVNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU6IENvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhKTogUHJvbWlzZTxDb21waWxlVGVtcGxhdGVNZXRhZGF0YT4ge1xuICAgIGlmIChpc1ByZXNlbnQodGVtcGxhdGUudGVtcGxhdGUpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZVdyYXBwZXIucmVzb2x2ZSh0aGlzLm5vcm1hbGl6ZUxvYWRlZFRlbXBsYXRlKFxuICAgICAgICAgIGRpcmVjdGl2ZVR5cGUsIHRlbXBsYXRlLCB0ZW1wbGF0ZS50ZW1wbGF0ZSwgZGlyZWN0aXZlVHlwZS5tb2R1bGVVcmwpKTtcbiAgICB9IGVsc2UgaWYgKGlzUHJlc2VudCh0ZW1wbGF0ZS50ZW1wbGF0ZVVybCkpIHtcbiAgICAgIHZhciBzb3VyY2VBYnNVcmwgPSB0aGlzLl91cmxSZXNvbHZlci5yZXNvbHZlKGRpcmVjdGl2ZVR5cGUubW9kdWxlVXJsLCB0ZW1wbGF0ZS50ZW1wbGF0ZVVybCk7XG4gICAgICByZXR1cm4gdGhpcy5feGhyLmdldChzb3VyY2VBYnNVcmwpXG4gICAgICAgICAgLnRoZW4odGVtcGxhdGVDb250ZW50ID0+IHRoaXMubm9ybWFsaXplTG9hZGVkVGVtcGxhdGUoZGlyZWN0aXZlVHlwZSwgdGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVDb250ZW50LCBzb3VyY2VBYnNVcmwpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYE5vIHRlbXBsYXRlIHNwZWNpZmllZCBmb3IgY29tcG9uZW50ICR7ZGlyZWN0aXZlVHlwZS5uYW1lfWApO1xuICAgIH1cbiAgfVxuXG4gIG5vcm1hbGl6ZUxvYWRlZFRlbXBsYXRlKGRpcmVjdGl2ZVR5cGU6IENvbXBpbGVUeXBlTWV0YWRhdGEsIHRlbXBsYXRlTWV0YTogQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOiBzdHJpbmcsIHRlbXBsYXRlQWJzVXJsOiBzdHJpbmcpOiBDb21waWxlVGVtcGxhdGVNZXRhZGF0YSB7XG4gICAgdmFyIHJvb3ROb2Rlc0FuZEVycm9ycyA9IHRoaXMuX2h0bWxQYXJzZXIucGFyc2UodGVtcGxhdGUsIGRpcmVjdGl2ZVR5cGUubmFtZSk7XG4gICAgaWYgKHJvb3ROb2Rlc0FuZEVycm9ycy5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGVycm9yU3RyaW5nID0gcm9vdE5vZGVzQW5kRXJyb3JzLmVycm9ycy5qb2luKCdcXG4nKTtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBUZW1wbGF0ZSBwYXJzZSBlcnJvcnM6XFxuJHtlcnJvclN0cmluZ31gKTtcbiAgICB9XG5cbiAgICB2YXIgdmlzaXRvciA9IG5ldyBUZW1wbGF0ZVByZXBhcnNlVmlzaXRvcigpO1xuICAgIGh0bWxWaXNpdEFsbCh2aXNpdG9yLCByb290Tm9kZXNBbmRFcnJvcnMucm9vdE5vZGVzKTtcbiAgICB2YXIgYWxsU3R5bGVzID0gdGVtcGxhdGVNZXRhLnN0eWxlcy5jb25jYXQodmlzaXRvci5zdHlsZXMpO1xuXG4gICAgdmFyIGFsbFN0eWxlQWJzVXJscyA9XG4gICAgICAgIHZpc2l0b3Iuc3R5bGVVcmxzLmZpbHRlcihpc1N0eWxlVXJsUmVzb2x2YWJsZSlcbiAgICAgICAgICAgIC5tYXAodXJsID0+IHRoaXMuX3VybFJlc29sdmVyLnJlc29sdmUodGVtcGxhdGVBYnNVcmwsIHVybCkpXG4gICAgICAgICAgICAuY29uY2F0KHRlbXBsYXRlTWV0YS5zdHlsZVVybHMuZmlsdGVyKGlzU3R5bGVVcmxSZXNvbHZhYmxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCh1cmwgPT4gdGhpcy5fdXJsUmVzb2x2ZXIucmVzb2x2ZShkaXJlY3RpdmVUeXBlLm1vZHVsZVVybCwgdXJsKSkpO1xuXG4gICAgdmFyIGFsbFJlc29sdmVkU3R5bGVzID0gYWxsU3R5bGVzLm1hcChzdHlsZSA9PiB7XG4gICAgICB2YXIgc3R5bGVXaXRoSW1wb3J0cyA9IGV4dHJhY3RTdHlsZVVybHModGhpcy5fdXJsUmVzb2x2ZXIsIHRlbXBsYXRlQWJzVXJsLCBzdHlsZSk7XG4gICAgICBzdHlsZVdpdGhJbXBvcnRzLnN0eWxlVXJscy5mb3JFYWNoKHN0eWxlVXJsID0+IGFsbFN0eWxlQWJzVXJscy5wdXNoKHN0eWxlVXJsKSk7XG4gICAgICByZXR1cm4gc3R5bGVXaXRoSW1wb3J0cy5zdHlsZTtcbiAgICB9KTtcblxuICAgIHZhciBlbmNhcHN1bGF0aW9uID0gdGVtcGxhdGVNZXRhLmVuY2Fwc3VsYXRpb247XG4gICAgaWYgKGVuY2Fwc3VsYXRpb24gPT09IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkICYmIGFsbFJlc29sdmVkU3R5bGVzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICBhbGxTdHlsZUFic1VybHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBlbmNhcHN1bGF0aW9uID0gVmlld0VuY2Fwc3VsYXRpb24uTm9uZTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDb21waWxlVGVtcGxhdGVNZXRhZGF0YSh7XG4gICAgICBlbmNhcHN1bGF0aW9uOiBlbmNhcHN1bGF0aW9uLFxuICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgICAgdGVtcGxhdGVVcmw6IHRlbXBsYXRlQWJzVXJsLFxuICAgICAgc3R5bGVzOiBhbGxSZXNvbHZlZFN0eWxlcyxcbiAgICAgIHN0eWxlVXJsczogYWxsU3R5bGVBYnNVcmxzLFxuICAgICAgbmdDb250ZW50U2VsZWN0b3JzOiB2aXNpdG9yLm5nQ29udGVudFNlbGVjdG9yc1xuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFRlbXBsYXRlUHJlcGFyc2VWaXNpdG9yIGltcGxlbWVudHMgSHRtbEFzdFZpc2l0b3Ige1xuICBuZ0NvbnRlbnRTZWxlY3RvcnM6IHN0cmluZ1tdID0gW107XG4gIHN0eWxlczogc3RyaW5nW10gPSBbXTtcbiAgc3R5bGVVcmxzOiBzdHJpbmdbXSA9IFtdO1xuICBuZ05vbkJpbmRhYmxlU3RhY2tDb3VudDogbnVtYmVyID0gMDtcblxuICB2aXNpdEVsZW1lbnQoYXN0OiBIdG1sRWxlbWVudEFzdCwgY29udGV4dDogYW55KTogYW55IHtcbiAgICB2YXIgcHJlcGFyc2VkRWxlbWVudCA9IHByZXBhcnNlRWxlbWVudChhc3QpO1xuICAgIHN3aXRjaCAocHJlcGFyc2VkRWxlbWVudC50eXBlKSB7XG4gICAgICBjYXNlIFByZXBhcnNlZEVsZW1lbnRUeXBlLk5HX0NPTlRFTlQ6XG4gICAgICAgIGlmICh0aGlzLm5nTm9uQmluZGFibGVTdGFja0NvdW50ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5uZ0NvbnRlbnRTZWxlY3RvcnMucHVzaChwcmVwYXJzZWRFbGVtZW50LnNlbGVjdEF0dHIpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQcmVwYXJzZWRFbGVtZW50VHlwZS5TVFlMRTpcbiAgICAgICAgdmFyIHRleHRDb250ZW50ID0gJyc7XG4gICAgICAgIGFzdC5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBIdG1sVGV4dEFzdCkge1xuICAgICAgICAgICAgdGV4dENvbnRlbnQgKz0gKDxIdG1sVGV4dEFzdD5jaGlsZCkudmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdHlsZXMucHVzaCh0ZXh0Q29udGVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQcmVwYXJzZWRFbGVtZW50VHlwZS5TVFlMRVNIRUVUOlxuICAgICAgICB0aGlzLnN0eWxlVXJscy5wdXNoKHByZXBhcnNlZEVsZW1lbnQuaHJlZkF0dHIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEREQyByZXBvcnRzIHRoaXMgYXMgZXJyb3IuIFNlZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9kZXZfY29tcGlsZXIvaXNzdWVzLzQyOFxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHByZXBhcnNlZEVsZW1lbnQubm9uQmluZGFibGUpIHtcbiAgICAgIHRoaXMubmdOb25CaW5kYWJsZVN0YWNrQ291bnQrKztcbiAgICB9XG4gICAgaHRtbFZpc2l0QWxsKHRoaXMsIGFzdC5jaGlsZHJlbik7XG4gICAgaWYgKHByZXBhcnNlZEVsZW1lbnQubm9uQmluZGFibGUpIHtcbiAgICAgIHRoaXMubmdOb25CaW5kYWJsZVN0YWNrQ291bnQtLTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRDb21tZW50KGFzdDogSHRtbENvbW1lbnRBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0QXR0cihhc3Q6IEh0bWxBdHRyQXN0LCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICB2aXNpdFRleHQoYXN0OiBIdG1sVGV4dEFzdCwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar _EMPTY_ATTR_VALUE = '';\r\n// TODO: Can't use `const` here as\r\n// in Dart this is not transpiled into `final` yet...\r\nvar _SELECTOR_REGEXP = lang_1.RegExpWrapper.create('(\\\\:not\\\\()|' +\r\n '([-\\\\w]+)|' +\r\n '(?:\\\\.([-\\\\w]+))|' +\r\n '(?:\\\\[([-\\\\w*]+)(?:=([^\\\\]]*))?\\\\])|' +\r\n '(\\\\))|' +\r\n '(\\\\s*,\\\\s*)'); // \",\"\r\n/**\r\n * A css selector contains an element name,\r\n * css classes and attribute/value pairs with the purpose\r\n * of selecting subsets out of them.\r\n */\r\nvar CssSelector = (function () {\r\n function CssSelector() {\r\n this.element = null;\r\n this.classNames = [];\r\n this.attrs = [];\r\n this.notSelectors = [];\r\n }\r\n CssSelector.parse = function (selector) {\r\n var results = [];\r\n var _addResult = function (res, cssSel) {\r\n if (cssSel.notSelectors.length > 0 && lang_1.isBlank(cssSel.element) &&\r\n collection_1.ListWrapper.isEmpty(cssSel.classNames) && collection_1.ListWrapper.isEmpty(cssSel.attrs)) {\r\n cssSel.element = \"*\";\r\n }\r\n res.push(cssSel);\r\n };\r\n var cssSelector = new CssSelector();\r\n var matcher = lang_1.RegExpWrapper.matcher(_SELECTOR_REGEXP, selector);\r\n var match;\r\n var current = cssSelector;\r\n var inNot = false;\r\n while (lang_1.isPresent(match = lang_1.RegExpMatcherWrapper.next(matcher))) {\r\n if (lang_1.isPresent(match[1])) {\r\n if (inNot) {\r\n throw new exceptions_1.BaseException('Nesting :not is not allowed in a selector');\r\n }\r\n inNot = true;\r\n current = new CssSelector();\r\n cssSelector.notSelectors.push(current);\r\n }\r\n if (lang_1.isPresent(match[2])) {\r\n current.setElement(match[2]);\r\n }\r\n if (lang_1.isPresent(match[3])) {\r\n current.addClassName(match[3]);\r\n }\r\n if (lang_1.isPresent(match[4])) {\r\n current.addAttribute(match[4], match[5]);\r\n }\r\n if (lang_1.isPresent(match[6])) {\r\n inNot = false;\r\n current = cssSelector;\r\n }\r\n if (lang_1.isPresent(match[7])) {\r\n if (inNot) {\r\n throw new exceptions_1.BaseException('Multiple selectors in :not are not supported');\r\n }\r\n _addResult(results, cssSelector);\r\n cssSelector = current = new CssSelector();\r\n }\r\n }\r\n _addResult(results, cssSelector);\r\n return results;\r\n };\r\n CssSelector.prototype.isElementSelector = function () {\r\n return lang_1.isPresent(this.element) && collection_1.ListWrapper.isEmpty(this.classNames) &&\r\n collection_1.ListWrapper.isEmpty(this.attrs) && this.notSelectors.length === 0;\r\n };\r\n CssSelector.prototype.setElement = function (element) {\r\n if (element === void 0) { element = null; }\r\n this.element = element;\r\n };\r\n /** Gets a template string for an element that matches the selector. */\r\n CssSelector.prototype.getMatchingElementTemplate = function () {\r\n var tagName = lang_1.isPresent(this.element) ? this.element : 'div';\r\n var classAttr = this.classNames.length > 0 ? \" class=\\\"\" + this.classNames.join(' ') + \"\\\"\" : '';\r\n var attrs = '';\r\n for (var i = 0; i < this.attrs.length; i += 2) {\r\n var attrName = this.attrs[i];\r\n var attrValue = this.attrs[i + 1] !== '' ? \"=\\\"\" + this.attrs[i + 1] + \"\\\"\" : '';\r\n attrs += \" \" + attrName + attrValue;\r\n }\r\n return \"<\" + tagName + classAttr + attrs + \"></\" + tagName + \">\";\r\n };\r\n CssSelector.prototype.addAttribute = function (name, value) {\r\n if (value === void 0) { value = _EMPTY_ATTR_VALUE; }\r\n this.attrs.push(name);\r\n if (lang_1.isPresent(value)) {\r\n value = value.toLowerCase();\r\n }\r\n else {\r\n value = _EMPTY_ATTR_VALUE;\r\n }\r\n this.attrs.push(value);\r\n };\r\n CssSelector.prototype.addClassName = function (name) { this.classNames.push(name.toLowerCase()); };\r\n CssSelector.prototype.toString = function () {\r\n var res = '';\r\n if (lang_1.isPresent(this.element)) {\r\n res += this.element;\r\n }\r\n if (lang_1.isPresent(this.classNames)) {\r\n for (var i = 0; i < this.classNames.length; i++) {\r\n res += '.' + this.classNames[i];\r\n }\r\n }\r\n if (lang_1.isPresent(this.attrs)) {\r\n for (var i = 0; i < this.attrs.length;) {\r\n var attrName = this.attrs[i++];\r\n var attrValue = this.attrs[i++];\r\n res += '[' + attrName;\r\n if (attrValue.length > 0) {\r\n res += '=' + attrValue;\r\n }\r\n res += ']';\r\n }\r\n }\r\n this.notSelectors.forEach(function (notSelector) { return res += \":not(\" + notSelector + \")\"; });\r\n return res;\r\n };\r\n return CssSelector;\r\n})();\r\nexports.CssSelector = CssSelector;\r\n/**\r\n * Reads a list of CssSelectors and allows to calculate which ones\r\n * are contained in a given CssSelector.\r\n */\r\nvar SelectorMatcher = (function () {\r\n function SelectorMatcher() {\r\n this._elementMap = new collection_1.Map();\r\n this._elementPartialMap = new collection_1.Map();\r\n this._classMap = new collection_1.Map();\r\n this._classPartialMap = new collection_1.Map();\r\n this._attrValueMap = new collection_1.Map();\r\n this._attrValuePartialMap = new collection_1.Map();\r\n this._listContexts = [];\r\n }\r\n SelectorMatcher.createNotMatcher = function (notSelectors) {\r\n var notMatcher = new SelectorMatcher();\r\n notMatcher.addSelectables(notSelectors, null);\r\n return notMatcher;\r\n };\r\n SelectorMatcher.prototype.addSelectables = function (cssSelectors, callbackCtxt) {\r\n var listContext = null;\r\n if (cssSelectors.length > 1) {\r\n listContext = new SelectorListContext(cssSelectors);\r\n this._listContexts.push(listContext);\r\n }\r\n for (var i = 0; i < cssSelectors.length; i++) {\r\n this._addSelectable(cssSelectors[i], callbackCtxt, listContext);\r\n }\r\n };\r\n /**\r\n * Add an object that can be found later on by calling `match`.\r\n * @param cssSelector A css selector\r\n * @param callbackCtxt An opaque object that will be given to the callback of the `match` function\r\n */\r\n SelectorMatcher.prototype._addSelectable = function (cssSelector, callbackCtxt, listContext) {\r\n var matcher = this;\r\n var element = cssSelector.element;\r\n var classNames = cssSelector.classNames;\r\n var attrs = cssSelector.attrs;\r\n var selectable = new SelectorContext(cssSelector, callbackCtxt, listContext);\r\n if (lang_1.isPresent(element)) {\r\n var isTerminal = attrs.length === 0 && classNames.length === 0;\r\n if (isTerminal) {\r\n this._addTerminal(matcher._elementMap, element, selectable);\r\n }\r\n else {\r\n matcher = this._addPartial(matcher._elementPartialMap, element);\r\n }\r\n }\r\n if (lang_1.isPresent(classNames)) {\r\n for (var index = 0; index < classNames.length; index++) {\r\n var isTerminal = attrs.length === 0 && index === classNames.length - 1;\r\n var className = classNames[index];\r\n if (isTerminal) {\r\n this._addTerminal(matcher._classMap, className, selectable);\r\n }\r\n else {\r\n matcher = this._addPartial(matcher._classPartialMap, className);\r\n }\r\n }\r\n }\r\n if (lang_1.isPresent(attrs)) {\r\n for (var index = 0; index < attrs.length;) {\r\n var isTerminal = index === attrs.length - 2;\r\n var attrName = attrs[index++];\r\n var attrValue = attrs[index++];\r\n if (isTerminal) {\r\n var terminalMap = matcher._attrValueMap;\r\n var terminalValuesMap = terminalMap.get(attrName);\r\n if (lang_1.isBlank(terminalValuesMap)) {\r\n terminalValuesMap = new collection_1.Map();\r\n terminalMap.set(attrName, terminalValuesMap);\r\n }\r\n this._addTerminal(terminalValuesMap, attrValue, selectable);\r\n }\r\n else {\r\n var parttialMap = matcher._attrValuePartialMap;\r\n var partialValuesMap = parttialMap.get(attrName);\r\n if (lang_1.isBlank(partialValuesMap)) {\r\n partialValuesMap = new collection_1.Map();\r\n parttialMap.set(attrName, partialValuesMap);\r\n }\r\n matcher = this._addPartial(partialValuesMap, attrValue);\r\n }\r\n }\r\n }\r\n };\r\n SelectorMatcher.prototype._addTerminal = function (map, name, selectable) {\r\n var terminalList = map.get(name);\r\n if (lang_1.isBlank(terminalList)) {\r\n terminalList = [];\r\n map.set(name, terminalList);\r\n }\r\n terminalList.push(selectable);\r\n };\r\n SelectorMatcher.prototype._addPartial = function (map, name) {\r\n var matcher = map.get(name);\r\n if (lang_1.isBlank(matcher)) {\r\n matcher = new SelectorMatcher();\r\n map.set(name, matcher);\r\n }\r\n return matcher;\r\n };\r\n /**\r\n * Find the objects that have been added via `addSelectable`\r\n * whose css selector is contained in the given css selector.\r\n * @param cssSelector A css selector\r\n * @param matchedCallback This callback will be called with the object handed into `addSelectable`\r\n * @return boolean true if a match was found\r\n */\r\n SelectorMatcher.prototype.match = function (cssSelector, matchedCallback) {\r\n var result = false;\r\n var element = cssSelector.element;\r\n var classNames = cssSelector.classNames;\r\n var attrs = cssSelector.attrs;\r\n for (var i = 0; i < this._listContexts.length; i++) {\r\n this._listContexts[i].alreadyMatched = false;\r\n }\r\n result = this._matchTerminal(this._elementMap, element, cssSelector, matchedCallback) || result;\r\n result = this._matchPartial(this._elementPartialMap, element, cssSelector, matchedCallback) ||\r\n result;\r\n if (lang_1.isPresent(classNames)) {\r\n for (var index = 0; index < classNames.length; index++) {\r\n var className = classNames[index];\r\n result =\r\n this._matchTerminal(this._classMap, className, cssSelector, matchedCallback) || result;\r\n result =\r\n this._matchPartial(this._classPartialMap, className, cssSelector, matchedCallback) ||\r\n result;\r\n }\r\n }\r\n if (lang_1.isPresent(attrs)) {\r\n for (var index = 0; index < attrs.length;) {\r\n var attrName = attrs[index++];\r\n var attrValue = attrs[index++];\r\n var terminalValuesMap = this._attrValueMap.get(attrName);\r\n if (!lang_1.StringWrapper.equals(attrValue, _EMPTY_ATTR_VALUE)) {\r\n result = this._matchTerminal(terminalValuesMap, _EMPTY_ATTR_VALUE, cssSelector, matchedCallback) ||\r\n result;\r\n }\r\n result = this._matchTerminal(terminalValuesMap, attrValue, cssSelector, matchedCallback) ||\r\n result;\r\n var partialValuesMap = this._attrValuePartialMap.get(attrName);\r\n if (!lang_1.StringWrapper.equals(attrValue, _EMPTY_ATTR_VALUE)) {\r\n result = this._matchPartial(partialValuesMap, _EMPTY_ATTR_VALUE, cssSelector, matchedCallback) ||\r\n result;\r\n }\r\n result =\r\n this._matchPartial(partialValuesMap, attrValue, cssSelector, matchedCallback) || result;\r\n }\r\n }\r\n return result;\r\n };\r\n /** @internal */\r\n SelectorMatcher.prototype._matchTerminal = function (map, name, cssSelector, matchedCallback) {\r\n if (lang_1.isBlank(map) || lang_1.isBlank(name)) {\r\n return false;\r\n }\r\n var selectables = map.get(name);\r\n var starSelectables = map.get(\"*\");\r\n if (lang_1.isPresent(starSelectables)) {\r\n selectables = selectables.concat(starSelectables);\r\n }\r\n if (lang_1.isBlank(selectables)) {\r\n return false;\r\n }\r\n var selectable;\r\n var result = false;\r\n for (var index = 0; index < selectables.length; index++) {\r\n selectable = selectables[index];\r\n result = selectable.finalize(cssSelector, matchedCallback) || result;\r\n }\r\n return result;\r\n };\r\n /** @internal */\r\n SelectorMatcher.prototype._matchPartial = function (map, name, cssSelector, matchedCallback /*: (c: CssSelector, a: any) => void*/) {\r\n if (lang_1.isBlank(map) || lang_1.isBlank(name)) {\r\n return false;\r\n }\r\n var nestedSelector = map.get(name);\r\n if (lang_1.isBlank(nestedSelector)) {\r\n return false;\r\n }\r\n // TODO(perf): get rid of recursion and measure again\r\n // TODO(perf): don't pass the whole selector into the recursion,\r\n // but only the not processed parts\r\n return nestedSelector.match(cssSelector, matchedCallback);\r\n };\r\n return SelectorMatcher;\r\n})();\r\nexports.SelectorMatcher = SelectorMatcher;\r\nvar SelectorListContext = (function () {\r\n function SelectorListContext(selectors) {\r\n this.selectors = selectors;\r\n this.alreadyMatched = false;\r\n }\r\n return SelectorListContext;\r\n})();\r\nexports.SelectorListContext = SelectorListContext;\r\n// Store context to pass back selector and context when a selector is matched\r\nvar SelectorContext = (function () {\r\n function SelectorContext(selector, cbContext, listContext) {\r\n this.selector = selector;\r\n this.cbContext = cbContext;\r\n this.listContext = listContext;\r\n this.notSelectors = selector.notSelectors;\r\n }\r\n SelectorContext.prototype.finalize = function (cssSelector, callback) {\r\n var result = true;\r\n if (this.notSelectors.length > 0 &&\r\n (lang_1.isBlank(this.listContext) || !this.listContext.alreadyMatched)) {\r\n var notMatcher = SelectorMatcher.createNotMatcher(this.notSelectors);\r\n result = !notMatcher.match(cssSelector, null);\r\n }\r\n if (result && lang_1.isPresent(callback) &&\r\n (lang_1.isBlank(this.listContext) || !this.listContext.alreadyMatched)) {\r\n if (lang_1.isPresent(this.listContext)) {\r\n this.listContext.alreadyMatched = true;\r\n }\r\n callback(this.selector, this.cbContext);\r\n }\r\n return result;\r\n };\r\n return SelectorContext;\r\n})();\r\nexports.SelectorContext = SelectorContext;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tcGlsZXIvc2VsZWN0b3IudHMiXSwibmFtZXMiOlsiQ3NzU2VsZWN0b3IiLCJDc3NTZWxlY3Rvci5jb25zdHJ1Y3RvciIsIkNzc1NlbGVjdG9yLnBhcnNlIiwiQ3NzU2VsZWN0b3IuaXNFbGVtZW50U2VsZWN0b3IiLCJDc3NTZWxlY3Rvci5zZXRFbGVtZW50IiwiQ3NzU2VsZWN0b3IuZ2V0TWF0Y2hpbmdFbGVtZW50VGVtcGxhdGUiLCJDc3NTZWxlY3Rvci5hZGRBdHRyaWJ1dGUiLCJDc3NTZWxlY3Rvci5hZGRDbGFzc05hbWUiLCJDc3NTZWxlY3Rvci50b1N0cmluZyIsIlNlbGVjdG9yTWF0Y2hlciIsIlNlbGVjdG9yTWF0Y2hlci5jb25zdHJ1Y3RvciIsIlNlbGVjdG9yTWF0Y2hlci5jcmVhdGVOb3RNYXRjaGVyIiwiU2VsZWN0b3JNYXRjaGVyLmFkZFNlbGVjdGFibGVzIiwiU2VsZWN0b3JNYXRjaGVyLl9hZGRTZWxlY3RhYmxlIiwiU2VsZWN0b3JNYXRjaGVyLl9hZGRUZXJtaW5hbCIsIlNlbGVjdG9yTWF0Y2hlci5fYWRkUGFydGlhbCIsIlNlbGVjdG9yTWF0Y2hlci5tYXRjaCIsIlNlbGVjdG9yTWF0Y2hlci5fbWF0Y2hUZXJtaW5hbCIsIlNlbGVjdG9yTWF0Y2hlci5fbWF0Y2hQYXJ0aWFsIiwiU2VsZWN0b3JMaXN0Q29udGV4dCIsIlNlbGVjdG9yTGlzdENvbnRleHQuY29uc3RydWN0b3IiLCJTZWxlY3RvckNvbnRleHQiLCJTZWxlY3RvckNvbnRleHQuY29uc3RydWN0b3IiLCJTZWxlY3RvckNvbnRleHQuZmluYWxpemUiXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzVFLHFCQU1PLDBCQUEwQixDQUFDLENBQUE7QUFDbEMsMkJBQThDLGdDQUFnQyxDQUFDLENBQUE7QUFFL0UsSUFBTSxpQkFBaUIsR0FBRyxFQUFF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QUlBLENBQUNBLE9BQU9BLENBQUNBO1FBQ3RCQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDL0JBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLFVBQVVBLENBQUNBLE1BQU1BLEVBQUVBLENBQUNBLEVBQUVBLEVBQUVBLENBQUNBO2dCQUNoREEsR0FBR0EsSUFBSUEsR0FBR0EsR0FBR0EsSUFBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDbENBLENBQUNBO1FBQ0hBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUMxQkEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsTUFBTUEsR0FBR0EsQ0FBQ0E7Z0JBQ3ZDQSxJQUFJQSxRQUFRQSxHQUFHQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQTtnQkFDL0JBLElBQUlBLFNBQVNBLEdBQUdBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBO2dCQUNoQ0EsR0FBR0EsSUFBSUEsR0FBR0EsR0FBR0EsUUFBUUEsQ0FBQ0E7Z0JBQ3RCQSxFQUFFQSxDQUFDQSxDQUFDQSxTQUFTQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtvQkFDekJBLEdBQUdBLElBQUlBLEdBQUdBLEdBQUdBLFNBQVNBLENBQUNBO2dCQUN6QkEsQ0FBQ0E7Z0JBQ0RBLEdBQUdBLElBQUlBLEdBQUdBLENBQUNBO1lBQ2JB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QUlBLENBQUNBO1lBQ3pDQSxDQUFDQTtZQUNEQSxRQUFRQSxDQUFDQSxJQUFJQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQTtRQUMxQ0EsQ0FBQ0E7UUFDREEsTUFBTUEsQ0FBQ0EsTUFBTUEsQ0FBQ0E7SUFDaEJBLENBQUNBO0lBQ0hGLHNCQUFDQTtBQUFEQSxDQUFDQSxBQXhCRCxJQXdCQztBQXhCWSx1QkFBZSxrQkF3QjNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01hcCwgTGlzdFdyYXBwZXIsIE1hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1xuICBpc1ByZXNlbnQsXG4gIGlzQmxhbmssXG4gIFJlZ0V4cFdyYXBwZXIsXG4gIFJlZ0V4cE1hdGNoZXJXcmFwcGVyLFxuICBTdHJpbmdXcmFwcGVyXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb24sIFdyYXBwZWRFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5cbmNvbnN0IF9FTVBUWV9BVFRSX1ZBTFVFID0gJyc7XG5cbi8vIFRPRE86IENhbid0IHVzZSBgY29uc3RgIGhlcmUgYXNcbi8vIGluIERhcnQgdGhpcyBpcyBub3QgdHJhbnNwaWxlZCBpbnRvIGBmaW5hbGAgeWV0Li4uXG52YXIgX1NFTEVDVE9SX1JFR0VYUCA9IFJlZ0V4cFdyYXBwZXIuY3JlYXRlKFxuICAgICcoXFxcXDpub3RcXFxcKCl8JyArICAgICAgICAgICAgICAgICAgICAgICAgICAvL1wiOm5vdChcIlxuICAgICcoWy1cXFxcd10rKXwnICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gXCJ0YWdcIlxuICAgICcoPzpcXFxcLihbLVxcXFx3XSspKXwnICsgICAgICAgICAgICAgICAgICAgICAvLyBcIi5jbGFzc1wiXG4gICAgJyg/OlxcXFxbKFstXFxcXHcqXSspKD86PShbXlxcXFxdXSopKT9cXFxcXSl8JyArICAvLyBcIltuYW1lXVwiLCBcIltuYW1lPXZhbHVlXVwiIG9yIFwiW25hbWUqPXZhbHVlXVwiXG4gICAgJyhcXFxcKSl8JyArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBcIilcIlxuICAgICcoXFxcXHMqLFxcXFxzKiknKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBcIixcIlxuXG4vKipcbiAqIEEgY3NzIHNlbGVjdG9yIGNvbnRhaW5zIGFuIGVsZW1lbnQgbmFtZSxcbiAqIGNzcyBjbGFzc2VzIGFuZCBhdHRyaWJ1dGUvdmFsdWUgcGFpcnMgd2l0aCB0aGUgcHVycG9zZVxuICogb2Ygc2VsZWN0aW5nIHN1YnNldHMgb3V0IG9mIHRoZW0uXG4gKi9cbmV4cG9ydCBjbGFzcyBDc3NTZWxlY3RvciB7XG4gIGVsZW1lbnQ6IHN0cmluZyA9IG51bGw7XG4gIGNsYXNzTmFtZXM6IHN0cmluZ1tdID0gW107XG4gIGF0dHJzOiBzdHJpbmdbXSA9IFtdO1xuICBub3RTZWxlY3RvcnM6IENzc1NlbGVjdG9yW10gPSBbXTtcblxuICBzdGF0aWMgcGFyc2Uoc2VsZWN0b3I6IHN0cmluZyk6IENzc1NlbGVjdG9yW10ge1xuICAgIHZhciByZXN1bHRzOiBDc3NTZWxlY3RvcltdID0gW107XG4gICAgdmFyIF9hZGRSZXN1bHQgPSAocmVzOiBDc3NTZWxlY3RvcltdLCBjc3NTZWwpID0+IHtcbiAgICAgIGlmIChjc3NTZWwubm90U2VsZWN0b3JzLmxlbmd0aCA+IDAgJiYgaXNCbGFuayhjc3NTZWwuZWxlbWVudCkgJiZcbiAgICAgICAgICBMaXN0V3JhcHBlci5pc0VtcHR5KGNzc1NlbC5jbGFzc05hbWVzKSAmJiBMaXN0V3JhcHBlci5pc0VtcHR5KGNzc1NlbC5hdHRycykpIHtcbiAgICAgICAgY3NzU2VsLmVsZW1lbnQgPSBcIipcIjtcbiAgICAgIH1cbiAgICAgIHJlcy5wdXNoKGNzc1NlbCk7XG4gICAgfTtcbiAgICB2YXIgY3NzU2VsZWN0b3IgPSBuZXcgQ3NzU2VsZWN0b3IoKTtcbiAgICB2YXIgbWF0Y2hlciA9IFJlZ0V4cFdyYXBwZXIubWF0Y2hlcihfU0VMRUNUT1JfUkVHRVhQLCBzZWxlY3Rvcik7XG4gICAgdmFyIG1hdGNoO1xuICAgIHZhciBjdXJyZW50ID0gY3NzU2VsZWN0b3I7XG4gICAgdmFyIGluTm90ID0gZmFsc2U7XG4gICAgd2hpbGUgKGlzUHJlc2VudChtYXRjaCA9IFJlZ0V4cE1hdGNoZXJXcmFwcGVyLm5leHQobWF0Y2hlcikpKSB7XG4gICAgICBpZiAoaXNQcmVzZW50KG1hdGNoWzFdKSkge1xuICAgICAgICBpZiAoaW5Ob3QpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbignTmVzdGluZyA6bm90IGlzIG5vdCBhbGxvd2VkIGluIGEgc2VsZWN0b3InKTtcbiAgICAgICAgfVxuICAgICAgICBpbk5vdCA9IHRydWU7XG4gICAgICAgIGN1cnJlbnQgPSBuZXcgQ3NzU2VsZWN0b3IoKTtcbiAgICAgICAgY3NzU2VsZWN0b3Iubm90U2VsZWN0b3JzLnB1c2goY3VycmVudCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNQcmVzZW50KG1hdGNoWzJdKSkge1xuICAgICAgICBjdXJyZW50LnNldEVsZW1lbnQobWF0Y2hbMl0pO1xuICAgICAgfVxuICAgICAgaWYgKGlzUHJlc2VudChtYXRjaFszXSkpIHtcbiAgICAgICAgY3VycmVudC5hZGRDbGFzc05hbWUobWF0Y2hbM10pO1xuICAgICAgfVxuICAgICAgaWYgKGlzUHJlc2VudChtYXRjaFs0XSkpIHtcbiAgICAgICAgY3VycmVudC5hZGRBdHRyaWJ1dGUobWF0Y2hbNF0sIG1hdGNoWzVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1ByZXNlbnQobWF0Y2hbNl0pKSB7XG4gICAgICAgIGluTm90ID0gZmFsc2U7XG4gICAgICAgIGN1cnJlbnQgPSBjc3NTZWxlY3RvcjtcbiAgICAgIH1cbiAgICAgIGlmIChpc1ByZXNlbnQobWF0Y2hbN10pKSB7XG4gICAgICAgIGlmIChpbk5vdCkge1xuICAgICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKCdNdWx0aXBsZSBzZWxlY3RvcnMgaW4gOm5vdCBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIF9hZGRSZXN1bHQocmVzdWx0cywgY3NzU2VsZWN0b3IpO1xuICAgICAgICBjc3NTZWxlY3RvciA9IGN1cnJlbnQgPSBuZXcgQ3NzU2VsZWN0b3IoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX2FkZFJlc3VsdChyZXN1bHRzLCBjc3NTZWxlY3Rvcik7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICBpc0VsZW1lbnRTZWxlY3RvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuZWxlbWVudCkgJiYgTGlzdFdyYXBwZXIuaXNFbXB0eSh0aGlzLmNsYXNzTmFtZXMpICYmXG4gICAgICAgICAgIExpc3RXcmFwcGVyLmlzRW1wdHkodGhpcy5hdHRycykgJiYgdGhpcy5ub3RTZWxlY3RvcnMubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgc2V0RWxlbWVudChlbGVtZW50OiBzdHJpbmcgPSBudWxsKSB7IHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7IH1cblxuICAvKiogR2V0cyBhIHRlbXBsYXRlIHN0cmluZyBmb3IgYW4gZWxlbWVudCB0aGF0IG1hdGNoZXMgdGhlIHNlbGVjdG9yLiAqL1xuICBnZXRNYXRjaGluZ0VsZW1lbnRUZW1wbGF0ZSgpOiBzdHJpbmcge1xuICAgIGxldCB0YWdOYW1lID0gaXNQcmVzZW50KHRoaXMuZWxlbWVudCkgPyB0aGlzLmVsZW1lbnQgOiAnZGl2JztcbiAgICBsZXQgY2xhc3NBdHRyID0gdGhpcy5jbGFzc05hbWVzLmxlbmd0aCA+IDAgPyBgIGNsYXNzPVwiJHt0aGlzLmNsYXNzTmFtZXMuam9pbignICcpfVwiYCA6ICcnO1xuXG4gICAgbGV0IGF0dHJzID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF0dHJzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICBsZXQgYXR0ck5hbWUgPSB0aGlzLmF0dHJzW2ldO1xuICAgICAgbGV0IGF0dHJWYWx1ZSA9IHRoaXMuYXR0cnNbaSArIDFdICE9PSAnJyA/IGA9XCIke3RoaXMuYXR0cnNbaSArIDFdfVwiYCA6ICcnO1xuICAgICAgYXR0cnMgKz0gYCAke2F0dHJOYW1lfSR7YXR0clZhbHVlfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGA8JHt0YWdOYW1lfSR7Y2xhc3NBdHRyfSR7YXR0cnN9PjwvJHt0YWdOYW1lfT5gO1xuICB9XG5cbiAgYWRkQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyA9IF9FTVBUWV9BVFRSX1ZBTFVFKSB7XG4gICAgdGhpcy5hdHRycy5wdXNoKG5hbWUpO1xuICAgIGlmIChpc1ByZXNlbnQodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gX0VNUFRZX0FUVFJfVkFMVUU7XG4gICAgfVxuICAgIHRoaXMuYXR0cnMucHVzaCh2YWx1ZSk7XG4gIH1cblxuICBhZGRDbGFzc05hbWUobmFtZTogc3RyaW5nKSB7IHRoaXMuY2xhc3NOYW1lcy5wdXNoKG5hbWUudG9Mb3dlckNhc2UoKSk7IH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHZhciByZXMgPSAnJztcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuZWxlbWVudCkpIHtcbiAgICAgIHJlcyArPSB0aGlzLmVsZW1lbnQ7XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQodGhpcy5jbGFzc05hbWVzKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNsYXNzTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzICs9ICcuJyArIHRoaXMuY2xhc3NOYW1lc1tpXTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLmF0dHJzKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmF0dHJzLmxlbmd0aDspIHtcbiAgICAgICAgdmFyIGF0dHJOYW1lID0gdGhpcy5hdHRyc1tpKytdO1xuICAgICAgICB2YXIgYXR0clZhbHVlID0gdGhpcy5hdHRyc1tpKytdO1xuICAgICAgICByZXMgKz0gJ1snICsgYXR0ck5hbWU7XG4gICAgICAgIGlmIChhdHRyVmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJlcyArPSAnPScgKyBhdHRyVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmVzICs9ICddJztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5ub3RTZWxlY3RvcnMuZm9yRWFjaChub3RTZWxlY3RvciA9PiByZXMgKz0gYDpub3QoJHtub3RTZWxlY3Rvcn0pYCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxufVxuXG4vKipcbiAqIFJlYWRzIGEgbGlzdCBvZiBDc3NTZWxlY3RvcnMgYW5kIGFsbG93cyB0byBjYWxjdWxhdGUgd2hpY2ggb25lc1xuICogYXJlIGNvbnRhaW5lZCBpbiBhIGdpdmVuIENzc1NlbGVjdG9yLlxuICovXG5leHBvcnQgY2xhc3MgU2VsZWN0b3JNYXRjaGVyIHtcbiAgc3RhdGljIGNyZWF0ZU5vdE1hdGNoZXIobm90U2VsZWN0b3JzOiBDc3NTZWxlY3RvcltdKTogU2VsZWN0b3JNYXRjaGVyIHtcbiAgICB2YXIgbm90TWF0Y2hlciA9IG5ldyBTZWxlY3Rvck1hdGNoZXIoKTtcbiAgICBub3RNYXRjaGVyLmFkZFNlbGVjdGFibGVzKG5vdFNlbGVjdG9ycywgbnVsbCk7XG4gICAgcmV0dXJuIG5vdE1hdGNoZXI7XG4gIH1cblxuICBwcml2YXRlIF9lbGVtZW50TWFwID0gbmV3IE1hcDxzdHJpbmcsIFNlbGVjdG9yQ29udGV4dFtdPigpO1xuICBwcml2YXRlIF9lbGVtZW50UGFydGlhbE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBTZWxlY3Rvck1hdGNoZXI+KCk7XG4gIHByaXZhdGUgX2NsYXNzTWFwID0gbmV3IE1hcDxzdHJpbmcsIFNlbGVjdG9yQ29udGV4dFtdPigpO1xuICBwcml2YXRlIF9jbGFzc1BhcnRpYWxNYXAgPSBuZXcgTWFwPHN0cmluZywgU2VsZWN0b3JNYXRjaGVyPigpO1xuICBwcml2YXRlIF9hdHRyVmFsdWVNYXAgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgU2VsZWN0b3JDb250ZXh0W10+PigpO1xuICBwcml2YXRlIF9hdHRyVmFsdWVQYXJ0aWFsTWFwID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIFNlbGVjdG9yTWF0Y2hlcj4+KCk7XG4gIHByaXZhdGUgX2xpc3RDb250ZXh0czogU2VsZWN0b3JMaXN0Q29udGV4dFtdID0gW107XG5cbiAgYWRkU2VsZWN0YWJsZXMoY3NzU2VsZWN0b3JzOiBDc3NTZWxlY3RvcltdLCBjYWxsYmFja0N0eHQ/OiBhbnkpIHtcbiAgICB2YXIgbGlzdENvbnRleHQgPSBudWxsO1xuICAgIGlmIChjc3NTZWxlY3RvcnMubGVuZ3RoID4gMSkge1xuICAgICAgbGlzdENvbnRleHQgPSBuZXcgU2VsZWN0b3JMaXN0Q29udGV4dChjc3NTZWxlY3RvcnMpO1xuICAgICAgdGhpcy5fbGlzdENvbnRleHRzLnB1c2gobGlzdENvbnRleHQpO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNzc1NlbGVjdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5fYWRkU2VsZWN0YWJsZShjc3NTZWxlY3RvcnNbaV0sIGNhbGxiYWNrQ3R4dCwgbGlzdENvbnRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIGZvdW5kIGxhdGVyIG9uIGJ5IGNhbGxpbmcgYG1hdGNoYC5cbiAgICogQHBhcmFtIGNzc1NlbGVjdG9yIEEgY3NzIHNlbGVjdG9yXG4gICAqIEBwYXJhbSBjYWxsYmFja0N0eHQgQW4gb3BhcXVlIG9iamVjdCB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gdGhlIGNhbGxiYWNrIG9mIHRoZSBgbWF0Y2hgIGZ1bmN0aW9uXG4gICAqL1xuICBwcml2YXRlIF9hZGRTZWxlY3RhYmxlKGNzc1NlbGVjdG9yOiBDc3NTZWxlY3RvciwgY2FsbGJhY2tDdHh0OiBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgbGlzdENvbnRleHQ6IFNlbGVjdG9yTGlzdENvbnRleHQpIHtcbiAgICB2YXIgbWF0Y2hlcjogU2VsZWN0b3JNYXRjaGVyID0gdGhpcztcbiAgICB2YXIgZWxlbWVudCA9IGNzc1NlbGVjdG9yLmVsZW1lbnQ7XG4gICAgdmFyIGNsYXNzTmFtZXMgPSBjc3NTZWxlY3Rvci5jbGFzc05hbWVzO1xuICAgIHZhciBhdHRycyA9IGNzc1NlbGVjdG9yLmF0dHJzO1xuICAgIHZhciBzZWxlY3RhYmxlID0gbmV3IFNlbGVjdG9yQ29udGV4dChjc3NTZWxlY3RvciwgY2FsbGJhY2tDdHh0LCBsaXN0Q29udGV4dCk7XG5cbiAgICBpZiAoaXNQcmVzZW50KGVsZW1lbnQpKSB7XG4gICAgICB2YXIgaXNUZXJtaW5hbCA9IGF0dHJzLmxlbmd0aCA9PT0gMCAmJiBjbGFzc05hbWVzLmxlbmd0aCA9PT0gMDtcbiAgICAgIGlmIChpc1Rlcm1pbmFsKSB7XG4gICAgICAgIHRoaXMuX2FkZFRlcm1pbmFsKG1hdGNoZXIuX2VsZW1lbnRNYXAsIGVsZW1lbnQsIHNlbGVjdGFibGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF0Y2hlciA9IHRoaXMuX2FkZFBhcnRpYWwobWF0Y2hlci5fZWxlbWVudFBhcnRpYWxNYXAsIGVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc1ByZXNlbnQoY2xhc3NOYW1lcykpIHtcbiAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBjbGFzc05hbWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICB2YXIgaXNUZXJtaW5hbCA9IGF0dHJzLmxlbmd0aCA9PT0gMCAmJiBpbmRleCA9PT0gY2xhc3NOYW1lcy5sZW5ndGggLSAxO1xuICAgICAgICB2YXIgY2xhc3NOYW1lID0gY2xhc3NOYW1lc1tpbmRleF07XG4gICAgICAgIGlmIChpc1Rlcm1pbmFsKSB7XG4gICAgICAgICAgdGhpcy5fYWRkVGVybWluYWwobWF0Y2hlci5fY2xhc3NNYXAsIGNsYXNzTmFtZSwgc2VsZWN0YWJsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWF0Y2hlciA9IHRoaXMuX2FkZFBhcnRpYWwobWF0Y2hlci5fY2xhc3NQYXJ0aWFsTWFwLCBjbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzUHJlc2VudChhdHRycykpIHtcbiAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBhdHRycy5sZW5ndGg7KSB7XG4gICAgICAgIHZhciBpc1Rlcm1pbmFsID0gaW5kZXggPT09IGF0dHJzLmxlbmd0aCAtIDI7XG4gICAgICAgIHZhciBhdHRyTmFtZSA9IGF0dHJzW2luZGV4KytdO1xuICAgICAgICB2YXIgYXR0clZhbHVlID0gYXR0cnNbaW5kZXgrK107XG4gICAgICAgIGlmIChpc1Rlcm1pbmFsKSB7XG4gICAgICAgICAgdmFyIHRlcm1pbmFsTWFwID0gbWF0Y2hlci5fYXR0clZhbHVlTWFwO1xuICAgICAgICAgIHZhciB0ZXJtaW5hbFZhbHVlc01hcCA9IHRlcm1pbmFsTWFwLmdldChhdHRyTmFtZSk7XG4gICAgICAgICAgaWYgKGlzQmxhbmsodGVybWluYWxWYWx1ZXNNYXApKSB7XG4gICAgICAgICAgICB0ZXJtaW5hbFZhbHVlc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBTZWxlY3RvckNvbnRleHRbXT4oKTtcbiAgICAgICAgICAgIHRlcm1pbmFsTWFwLnNldChhdHRyTmFtZSwgdGVybWluYWxWYWx1ZXNNYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9hZGRUZXJtaW5hbCh0ZXJtaW5hbFZhbHVlc01hcCwgYXR0clZhbHVlLCBzZWxlY3RhYmxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgcGFydHRpYWxNYXAgPSBtYXRjaGVyLl9hdHRyVmFsdWVQYXJ0aWFsTWFwO1xuICAgICAgICAgIHZhciBwYXJ0aWFsVmFsdWVzTWFwID0gcGFydHRpYWxNYXAuZ2V0KGF0dHJOYW1lKTtcbiAgICAgICAgICBpZiAoaXNCbGFuayhwYXJ0aWFsVmFsdWVzTWFwKSkge1xuICAgICAgICAgICAgcGFydGlhbFZhbHVlc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBTZWxlY3Rvck1hdGNoZXI+KCk7XG4gICAgICAgICAgICBwYXJ0dGlhbE1hcC5zZXQoYXR0ck5hbWUsIHBhcnRpYWxWYWx1ZXNNYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXRjaGVyID0gdGhpcy5fYWRkUGFydGlhbChwYXJ0aWFsVmFsdWVzTWFwLCBhdHRyVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYWRkVGVybWluYWwobWFwOiBNYXA8c3RyaW5nLCBTZWxlY3RvckNvbnRleHRbXT4sIG5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0YWJsZTogU2VsZWN0b3JDb250ZXh0KSB7XG4gICAgdmFyIHRlcm1pbmFsTGlzdCA9IG1hcC5nZXQobmFtZSk7XG4gICAgaWYgKGlzQmxhbmsodGVybWluYWxMaXN0KSkge1xuICAgICAgdGVybWluYWxMaXN0ID0gW107XG4gICAgICBtYXAuc2V0KG5hbWUsIHRlcm1pbmFsTGlzdCk7XG4gICAgfVxuICAgIHRlcm1pbmFsTGlzdC5wdXNoKHNlbGVjdGFibGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkUGFydGlhbChtYXA6IE1hcDxzdHJpbmcsIFNlbGVjdG9yTWF0Y2hlcj4sIG5hbWU6IHN0cmluZyk6IFNlbGVjdG9yTWF0Y2hlciB7XG4gICAgdmFyIG1hdGNoZXIgPSBtYXAuZ2V0KG5hbWUpO1xuICAgIGlmIChpc0JsYW5rKG1hdGNoZXIpKSB7XG4gICAgICBtYXRjaGVyID0gbmV3IFNlbGVjdG9yTWF0Y2hlcigpO1xuICAgICAgbWFwLnNldChuYW1lLCBtYXRjaGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoZXI7XG4gIH1cblxuICAvKipcbiAgICogRmluZCB0aGUgb2JqZWN0cyB0aGF0IGhhdmUgYmVlbiBhZGRlZCB2aWEgYGFkZFNlbGVjdGFibGVgXG4gICAqIHdob3NlIGNzcyBzZWxlY3RvciBpcyBjb250YWluZWQgaW4gdGhlIGdpdmVuIGNzcyBzZWxlY3Rvci5cbiAgICogQHBhcmFtIGNzc1NlbGVjdG9yIEEgY3NzIHNlbGVjdG9yXG4gICAqIEBwYXJhbSBtYXRjaGVkQ2FsbGJhY2sgVGhpcyBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBvYmplY3QgaGFuZGVkIGludG8gYGFkZFNlbGVjdGFibGVgXG4gICAqIEByZXR1cm4gYm9vbGVhbiB0cnVlIGlmIGEgbWF0Y2ggd2FzIGZvdW5kXG4gICovXG4gIG1hdGNoKGNzc1NlbGVjdG9yOiBDc3NTZWxlY3RvciwgbWF0Y2hlZENhbGxiYWNrOiAoYzogQ3NzU2VsZWN0b3IsIGE6IGFueSkgPT4gdm9pZCk6IGJvb2xlYW4ge1xuICAgIHZhciByZXN1bHQgPSBmYWxzZTtcbiAgICB2YXIgZWxlbWVudCA9IGNzc1NlbGVjdG9yLmVsZW1lbnQ7XG4gICAgdmFyIGNsYXNzTmFtZXMgPSBjc3NTZWxlY3Rvci5jbGFzc05hbWVzO1xuICAgIHZhciBhdHRycyA9IGNzc1NlbGVjdG9yLmF0dHJzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9saXN0Q29udGV4dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuX2xpc3RDb250ZXh0c1tpXS5hbHJlYWR5TWF0Y2hlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJlc3VsdCA9IHRoaXMuX21hdGNoVGVybWluYWwodGhpcy5fZWxlbWVudE1hcCwgZWxlbWVudCwgY3NzU2VsZWN0b3IsIG1hdGNoZWRDYWxsYmFjaykgfHwgcmVzdWx0O1xuICAgIHJlc3VsdCA9IHRoaXMuX21hdGNoUGFydGlhbCh0aGlzLl9lbGVtZW50UGFydGlhbE1hcCwgZWxlbWVudCwgY3NzU2VsZWN0b3IsIG1hdGNoZWRDYWxsYmFjaykgfHxcbiAgICAgICAgICAgICByZXN1bHQ7XG5cbiAgICBpZiAoaXNQcmVzZW50KGNsYXNzTmFtZXMpKSB7XG4gICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgY2xhc3NOYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbaW5kZXhdO1xuICAgICAgICByZXN1bHQgPVxuICAgICAgICAgICAgdGhpcy5fbWF0Y2hUZXJtaW5hbCh0aGlzLl9jbGFzc01hcCwgY2xhc3NOYW1lLCBjc3NTZWxlY3RvciwgbWF0Y2hlZENhbGxiYWNrKSB8fCByZXN1bHQ7XG4gICAgICAgIHJlc3VsdCA9XG4gICAgICAgICAgICB0aGlzLl9tYXRjaFBhcnRpYWwodGhpcy5fY2xhc3NQYXJ0aWFsTWFwLCBjbGFzc05hbWUsIGNzc1NlbGVjdG9yLCBtYXRjaGVkQ2FsbGJhY2spIHx8XG4gICAgICAgICAgICByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzUHJlc2VudChhdHRycykpIHtcbiAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBhdHRycy5sZW5ndGg7KSB7XG4gICAgICAgIHZhciBhdHRyTmFtZSA9IGF0dHJzW2luZGV4KytdO1xuICAgICAgICB2YXIgYXR0clZhbHVlID0gYXR0cnNbaW5kZXgrK107XG5cbiAgICAgICAgdmFyIHRlcm1pbmFsVmFsdWVzTWFwID0gdGhpcy5fYXR0clZhbHVlTWFwLmdldChhdHRyTmFtZSk7XG4gICAgICAgIGlmICghU3RyaW5nV3JhcHBlci5lcXVhbHMoYXR0clZhbHVlLCBfRU1QVFlfQVRUUl9WQUxVRSkpIHtcbiAgICAgICAgICByZXN1bHQgPSB0aGlzLl9tYXRjaFRlcm1pbmFsKHRlcm1pbmFsVmFsdWVzTWFwLCBfRU1QVFlfQVRUUl9WQUxVRSwgY3NzU2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkQ2FsbGJhY2spIHx8XG4gICAgICAgICAgICAgICAgICAgcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuX21hdGNoVGVybWluYWwodGVybWluYWxWYWx1ZXNNYXAsIGF0dHJWYWx1ZSwgY3NzU2VsZWN0b3IsIG1hdGNoZWRDYWxsYmFjaykgfHxcbiAgICAgICAgICAgICAgICAgcmVzdWx0O1xuXG4gICAgICAgIHZhciBwYXJ0aWFsVmFsdWVzTWFwID0gdGhpcy5fYXR0clZhbHVlUGFydGlhbE1hcC5nZXQoYXR0ck5hbWUpO1xuICAgICAgICBpZiAoIVN0cmluZ1dyYXBwZXIuZXF1YWxzKGF0dHJWYWx1ZSwgX0VNUFRZX0FUVFJfVkFMVUUpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5fbWF0Y2hQYXJ0aWFsKHBhcnRpYWxWYWx1ZXNNYXAsIF9FTVBUWV9BVFRSX1ZBTFVFLCBjc3NTZWxlY3RvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZENhbGxiYWNrKSB8fFxuICAgICAgICAgICAgICAgICAgIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPVxuICAgICAgICAgICAgdGhpcy5fbWF0Y2hQYXJ0aWFsKHBhcnRpYWxWYWx1ZXNNYXAsIGF0dHJWYWx1ZSwgY3NzU2VsZWN0b3IsIG1hdGNoZWRDYWxsYmFjaykgfHwgcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbWF0Y2hUZXJtaW5hbChtYXA6IE1hcDxzdHJpbmcsIFNlbGVjdG9yQ29udGV4dFtdPiwgbmFtZSwgY3NzU2VsZWN0b3I6IENzc1NlbGVjdG9yLFxuICAgICAgICAgICAgICAgICBtYXRjaGVkQ2FsbGJhY2s6IChjOiBDc3NTZWxlY3RvciwgYTogYW55KSA9PiB2b2lkKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzQmxhbmsobWFwKSB8fCBpc0JsYW5rKG5hbWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIHNlbGVjdGFibGVzID0gbWFwLmdldChuYW1lKTtcbiAgICB2YXIgc3RhclNlbGVjdGFibGVzID0gbWFwLmdldChcIipcIik7XG4gICAgaWYgKGlzUHJlc2VudChzdGFyU2VsZWN0YWJsZXMpKSB7XG4gICAgICBzZWxlY3RhYmxlcyA9IHNlbGVjdGFibGVzLmNvbmNhdChzdGFyU2VsZWN0YWJsZXMpO1xuICAgIH1cbiAgICBpZiAoaXNCbGFuayhzZWxlY3RhYmxlcykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIHNlbGVjdGFibGU7XG4gICAgdmFyIHJlc3VsdCA9IGZhbHNlO1xuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBzZWxlY3RhYmxlcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHNlbGVjdGFibGUgPSBzZWxlY3RhYmxlc1tpbmRleF07XG4gICAgICByZXN1bHQgPSBzZWxlY3RhYmxlLmZpbmFsaXplKGNzc1NlbGVjdG9yLCBtYXRjaGVkQ2FsbGJhY2spIHx8IHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX21hdGNoUGFydGlhbChtYXA6IE1hcDxzdHJpbmcsIFNlbGVjdG9yTWF0Y2hlcj4sIG5hbWUsIGNzc1NlbGVjdG9yOiBDc3NTZWxlY3RvcixcbiAgICAgICAgICAgICAgICBtYXRjaGVkQ2FsbGJhY2sgLyo6IChjOiBDc3NTZWxlY3RvciwgYTogYW55KSA9PiB2b2lkKi8pOiBib29sZWFuIHtcbiAgICBpZiAoaXNCbGFuayhtYXApIHx8IGlzQmxhbmsobmFtZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIG5lc3RlZFNlbGVjdG9yID0gbWFwLmdldChuYW1lKTtcbiAgICBpZiAoaXNCbGFuayhuZXN0ZWRTZWxlY3RvcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gVE9ETyhwZXJmKTogZ2V0IHJpZCBvZiByZWN1cnNpb24gYW5kIG1lYXN1cmUgYWdhaW5cbiAgICAvLyBUT0RPKHBlcmYpOiBkb24ndCBwYXNzIHRoZSB3aG9sZSBzZWxlY3RvciBpbnRvIHRoZSByZWN1cnNpb24sXG4gICAgLy8gYnV0IG9ubHkgdGhlIG5vdCBwcm9jZXNzZWQgcGFydHNcbiAgICByZXR1cm4gbmVzdGVkU2VsZWN0b3IubWF0Y2goY3NzU2VsZWN0b3IsIG1hdGNoZWRDYWxsYmFjayk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgU2VsZWN0b3JMaXN0Q29udGV4dCB7XG4gIGFscmVhZHlNYXRjaGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHNlbGVjdG9yczogQ3NzU2VsZWN0b3JbXSkge31cbn1cblxuLy8gU3RvcmUgY29udGV4dCB0byBwYXNzIGJhY2sgc2VsZWN0b3IgYW5kIGNvbnRleHQgd2hlbiBhIHNlbGVjdG9yIGlzIG1hdGNoZWRcbmV4cG9ydCBjbGFzcyBTZWxlY3RvckNvbnRleHQge1xuICBub3RTZWxlY3RvcnM6IENzc1NlbGVjdG9yW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIHNlbGVjdG9yOiBDc3NTZWxlY3RvciwgcHVibGljIGNiQ29udGV4dDogYW55LFxuICAgICAgICAgICAgICBwdWJsaWMgbGlzdENvbnRleHQ6IFNlbGVjdG9yTGlzdENvbnRleHQpIHtcbiAgICB0aGlzLm5vdFNlbGVjdG9ycyA9IHNlbGVjdG9yLm5vdFNlbGVjdG9ycztcbiAgfVxuXG4gIGZpbmFsaXplKGNzc1NlbGVjdG9yOiBDc3NTZWxlY3RvciwgY2FsbGJhY2s6IChjOiBDc3NTZWxlY3RvciwgYTogYW55KSA9PiB2b2lkKTogYm9vbGVhbiB7XG4gICAgdmFyIHJlc3VsdCA9IHRydWU7XG4gICAgaWYgKHRoaXMubm90U2VsZWN0b3JzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgKGlzQmxhbmsodGhpcy5saXN0Q29udGV4dCkgfHwgIXRoaXMubGlzdENvbnRleHQuYWxyZWFkeU1hdGNoZWQpKSB7XG4gICAgICB2YXIgbm90TWF0Y2hlciA9IFNlbGVjdG9yTWF0Y2hlci5jcmVhdGVOb3RNYXRjaGVyKHRoaXMubm90U2VsZWN0b3JzKTtcbiAgICAgIHJlc3VsdCA9ICFub3RNYXRjaGVyLm1hdGNoKGNzc1NlbGVjdG9yLCBudWxsKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAmJiBpc1ByZXNlbnQoY2FsbGJhY2spICYmXG4gICAgICAgIChpc0JsYW5rKHRoaXMubGlzdENvbnRleHQpIHx8ICF0aGlzLmxpc3RDb250ZXh0LmFscmVhZHlNYXRjaGVkKSkge1xuICAgICAgaWYgKGlzUHJlc2VudCh0aGlzLmxpc3RDb250ZXh0KSkge1xuICAgICAgICB0aGlzLmxpc3RDb250ZXh0LmFscmVhZHlNYXRjaGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKHRoaXMuc2VsZWN0b3IsIHRoaXMuY2JDb250ZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar view_1 = require('angular2/src/core/metadata/view');\r\nvar selector_1 = require('angular2/src/compiler/selector');\r\nvar util_1 = require('./util');\r\nvar interfaces_1 = require('angular2/src/core/linker/interfaces');\r\n// group 1: \"property\" from \"[property]\"\r\n// group 2: \"event\" from \"(event)\"\r\nvar HOST_REG_EXP = /^(?:(?:\\[([^\\]]+)\\])|(?:\\(([^\\)]+)\\)))$/g;\r\nvar CompileMetadataWithIdentifier = (function () {\r\n function CompileMetadataWithIdentifier() {\r\n }\r\n CompileMetadataWithIdentifier.fromJson = function (data) {\r\n return _COMPILE_METADATA_FROM_JSON[data['class']](data);\r\n };\r\n Object.defineProperty(CompileMetadataWithIdentifier.prototype, \"identifier\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CompileMetadataWithIdentifier;\r\n})();\r\nexports.CompileMetadataWithIdentifier = CompileMetadataWithIdentifier;\r\nvar CompileMetadataWithType = (function (_super) {\r\n __extends(CompileMetadataWithType, _super);\r\n function CompileMetadataWithType() {\r\n _super.apply(this, arguments);\r\n }\r\n CompileMetadataWithType.fromJson = function (data) {\r\n return _COMPILE_METADATA_FROM_JSON[data['class']](data);\r\n };\r\n Object.defineProperty(CompileMetadataWithType.prototype, \"type\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CompileMetadataWithType.prototype, \"identifier\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CompileMetadataWithType;\r\n})(CompileMetadataWithIdentifier);\r\nexports.CompileMetadataWithType = CompileMetadataWithType;\r\nvar CompileIdentifierMetadata = (function () {\r\n function CompileIdentifierMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, runtime = _b.runtime, name = _b.name, moduleUrl = _b.moduleUrl, prefix = _b.prefix, constConstructor = _b.constConstructor;\r\n this.runtime = runtime;\r\n this.name = name;\r\n this.prefix = prefix;\r\n this.moduleUrl = moduleUrl;\r\n this.constConstructor = constConstructor;\r\n }\r\n CompileIdentifierMetadata.fromJson = function (data) {\r\n return new CompileIdentifierMetadata({\r\n name: data['name'],\r\n prefix: data['prefix'],\r\n moduleUrl: data['moduleUrl'],\r\n constConstructor: data['constConstructor']\r\n });\r\n };\r\n CompileIdentifierMetadata.prototype.toJson = function () {\r\n return {\r\n // Note: Runtime type can't be serialized...\r\n 'class': 'Identifier',\r\n 'name': this.name,\r\n 'moduleUrl': this.moduleUrl,\r\n 'prefix': this.prefix,\r\n 'constConstructor': this.constConstructor\r\n };\r\n };\r\n Object.defineProperty(CompileIdentifierMetadata.prototype, \"identifier\", {\r\n get: function () { return this; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CompileIdentifierMetadata;\r\n})();\r\nexports.CompileIdentifierMetadata = CompileIdentifierMetadata;\r\nvar CompileDiDependencyMetadata = (function () {\r\n function CompileDiDependencyMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, isAttribute = _b.isAttribute, isSelf = _b.isSelf, isHost = _b.isHost, isSkipSelf = _b.isSkipSelf, isOptional = _b.isOptional, query = _b.query, viewQuery = _b.viewQuery, token = _b.token;\r\n this.isAttribute = lang_1.normalizeBool(isAttribute);\r\n this.isSelf = lang_1.normalizeBool(isSelf);\r\n this.isHost = lang_1.normalizeBool(isHost);\r\n this.isSkipSelf = lang_1.normalizeBool(isSkipSelf);\r\n this.isOptional = lang_1.normalizeBool(isOptional);\r\n this.query = query;\r\n this.viewQuery = viewQuery;\r\n this.token = token;\r\n }\r\n CompileDiDependencyMetadata.fromJson = function (data) {\r\n return new CompileDiDependencyMetadata({\r\n token: objFromJson(data['token'], CompileIdentifierMetadata.fromJson),\r\n query: objFromJson(data['query'], CompileQueryMetadata.fromJson),\r\n viewQuery: objFromJson(data['viewQuery'], CompileQueryMetadata.fromJson),\r\n isAttribute: data['isAttribute'],\r\n isSelf: data['isSelf'],\r\n isHost: data['isHost'],\r\n isSkipSelf: data['isSkipSelf'],\r\n isOptional: data['isOptional']\r\n });\r\n };\r\n CompileDiDependencyMetadata.prototype.toJson = function () {\r\n return {\r\n // Note: Runtime type can't be serialized...\r\n 'token': objToJson(this.token),\r\n 'query': objToJson(this.query),\r\n 'viewQuery': objToJson(this.viewQuery),\r\n 'isAttribute': this.isAttribute,\r\n 'isSelf': this.isSelf,\r\n 'isHost': this.isHost,\r\n 'isSkipSelf': this.isSkipSelf,\r\n 'isOptional': this.isOptional\r\n };\r\n };\r\n return CompileDiDependencyMetadata;\r\n})();\r\nexports.CompileDiDependencyMetadata = CompileDiDependencyMetadata;\r\nvar CompileProviderMetadata = (function () {\r\n function CompileProviderMetadata(_a) {\r\n var token = _a.token, useClass = _a.useClass, useValue = _a.useValue, useExisting = _a.useExisting, useFactory = _a.useFactory, deps = _a.deps, multi = _a.multi;\r\n this.token = token;\r\n this.useClass = useClass;\r\n this.useValue = useValue;\r\n this.useExisting = useExisting;\r\n this.useFactory = useFactory;\r\n this.deps = deps;\r\n this.multi = multi;\r\n }\r\n CompileProviderMetadata.fromJson = function (data) {\r\n return new CompileProviderMetadata({\r\n token: objFromJson(data['token'], CompileIdentifierMetadata.fromJson),\r\n useClass: objFromJson(data['useClass'], CompileTypeMetadata.fromJson)\r\n });\r\n };\r\n CompileProviderMetadata.prototype.toJson = function () {\r\n return {\r\n // Note: Runtime type can't be serialized...\r\n 'token': objToJson(this.token),\r\n 'useClass': objToJson(this.useClass)\r\n };\r\n };\r\n return CompileProviderMetadata;\r\n})();\r\nexports.CompileProviderMetadata = CompileProviderMetadata;\r\nvar CompileFactoryMetadata = (function () {\r\n function CompileFactoryMetadata(_a) {\r\n var runtime = _a.runtime, name = _a.name, moduleUrl = _a.moduleUrl, constConstructor = _a.constConstructor, diDeps = _a.diDeps;\r\n this.runtime = runtime;\r\n this.name = name;\r\n this.moduleUrl = moduleUrl;\r\n this.diDeps = diDeps;\r\n this.constConstructor = constConstructor;\r\n }\r\n Object.defineProperty(CompileFactoryMetadata.prototype, \"identifier\", {\r\n get: function () { return this; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n CompileFactoryMetadata.prototype.toJson = function () { return null; };\r\n return CompileFactoryMetadata;\r\n})();\r\nexports.CompileFactoryMetadata = CompileFactoryMetadata;\r\n/**\r\n * Metadata regarding compilation of a type.\r\n */\r\nvar CompileTypeMetadata = (function () {\r\n function CompileTypeMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, runtime = _b.runtime, name = _b.name, moduleUrl = _b.moduleUrl, prefix = _b.prefix, isHost = _b.isHost, constConstructor = _b.constConstructor, diDeps = _b.diDeps;\r\n this.runtime = runtime;\r\n this.name = name;\r\n this.moduleUrl = moduleUrl;\r\n this.prefix = prefix;\r\n this.isHost = lang_1.normalizeBool(isHost);\r\n this.constConstructor = constConstructor;\r\n this.diDeps = lang_1.normalizeBlank(diDeps);\r\n }\r\n CompileTypeMetadata.fromJson = function (data) {\r\n return new CompileTypeMetadata({\r\n name: data['name'],\r\n moduleUrl: data['moduleUrl'],\r\n prefix: data['prefix'],\r\n isHost: data['isHost'],\r\n constConstructor: data['constConstructor'],\r\n diDeps: arrayFromJson(data['diDeps'], CompileDiDependencyMetadata.fromJson)\r\n });\r\n };\r\n Object.defineProperty(CompileTypeMetadata.prototype, \"identifier\", {\r\n get: function () { return this; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(CompileTypeMetadata.prototype, \"type\", {\r\n get: function () { return this; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n CompileTypeMetadata.prototype.toJson = function () {\r\n return {\r\n // Note: Runtime type can't be serialized...\r\n 'class': 'Type',\r\n 'name': this.name,\r\n 'moduleUrl': this.moduleUrl,\r\n 'prefix': this.prefix,\r\n 'isHost': this.isHost,\r\n 'constConstructor': this.constConstructor,\r\n 'diDeps': arrayToJson(this.diDeps)\r\n };\r\n };\r\n return CompileTypeMetadata;\r\n})();\r\nexports.CompileTypeMetadata = CompileTypeMetadata;\r\nvar CompileQueryMetadata = (function () {\r\n function CompileQueryMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, selectors = _b.selectors, descendants = _b.descendants, first = _b.first, propertyName = _b.propertyName;\r\n this.selectors = selectors;\r\n this.descendants = descendants;\r\n this.first = lang_1.normalizeBool(first);\r\n this.propertyName = propertyName;\r\n }\r\n CompileQueryMetadata.fromJson = function (data) {\r\n return new CompileQueryMetadata({\r\n selectors: arrayFromJson(data['selectors'], CompileIdentifierMetadata.fromJson),\r\n descendants: data['descendants'],\r\n first: data['first'],\r\n propertyName: data['propertyName']\r\n });\r\n };\r\n CompileQueryMetadata.prototype.toJson = function () {\r\n return {\r\n // Note: Runtime type can't be serialized...\r\n 'selectors': arrayToJson(this.selectors),\r\n 'descendants': this.descendants,\r\n 'first': this.first,\r\n 'propertyName': this.propertyName\r\n };\r\n };\r\n return CompileQueryMetadata;\r\n})();\r\nexports.CompileQueryMetadata = CompileQueryMetadata;\r\n/**\r\n * Metadata regarding compilation of a template.\r\n */\r\nvar CompileTemplateMetadata = (function () {\r\n function CompileTemplateMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, encapsulation = _b.encapsulation, template = _b.template, templateUrl = _b.templateUrl, styles = _b.styles, styleUrls = _b.styleUrls, ngContentSelectors = _b.ngContentSelectors;\r\n this.encapsulation = lang_1.isPresent(encapsulation) ? encapsulation : view_1.ViewEncapsulation.Emulated;\r\n this.template = template;\r\n this.templateUrl = templateUrl;\r\n this.styles = lang_1.isPresent(styles) ? styles : [];\r\n this.styleUrls = lang_1.isPresent(styleUrls) ? styleUrls : [];\r\n this.ngContentSelectors = lang_1.isPresent(ngContentSelectors) ? ngContentSelectors : [];\r\n }\r\n CompileTemplateMetadata.fromJson = function (data) {\r\n return new CompileTemplateMetadata({\r\n encapsulation: lang_1.isPresent(data['encapsulation']) ?\r\n view_1.VIEW_ENCAPSULATION_VALUES[data['encapsulation']] :\r\n data['encapsulation'],\r\n template: data['template'],\r\n templateUrl: data['templateUrl'],\r\n styles: data['styles'],\r\n styleUrls: data['styleUrls'],\r\n ngContentSelectors: data['ngContentSelectors']\r\n });\r\n };\r\n CompileTemplateMetadata.prototype.toJson = function () {\r\n return {\r\n 'encapsulation': lang_1.isPresent(this.encapsulation) ? lang_1.serializeEnum(this.encapsulation) : this.encapsulation,\r\n 'template': this.template,\r\n 'templateUrl': this.templateUrl,\r\n 'styles': this.styles,\r\n 'styleUrls': this.styleUrls,\r\n 'ngContentSelectors': this.ngContentSelectors\r\n };\r\n };\r\n return CompileTemplateMetadata;\r\n})();\r\nexports.CompileTemplateMetadata = CompileTemplateMetadata;\r\n/**\r\n * Metadata regarding compilation of a directive.\r\n */\r\nvar CompileDirectiveMetadata = (function () {\r\n function CompileDirectiveMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, type = _b.type, isComponent = _b.isComponent, dynamicLoadable = _b.dynamicLoadable, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, hostListeners = _b.hostListeners, hostProperties = _b.hostProperties, hostAttributes = _b.hostAttributes, lifecycleHooks = _b.lifecycleHooks, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, template = _b.template;\r\n this.type = type;\r\n this.isComponent = isComponent;\r\n this.dynamicLoadable = dynamicLoadable;\r\n this.selector = selector;\r\n this.exportAs = exportAs;\r\n this.changeDetection = changeDetection;\r\n this.inputs = inputs;\r\n this.outputs = outputs;\r\n this.hostListeners = hostListeners;\r\n this.hostProperties = hostProperties;\r\n this.hostAttributes = hostAttributes;\r\n this.lifecycleHooks = lifecycleHooks;\r\n this.providers = lang_1.normalizeBlank(providers);\r\n this.viewProviders = lang_1.normalizeBlank(viewProviders);\r\n this.queries = queries;\r\n this.viewQueries = viewQueries;\r\n this.template = template;\r\n }\r\n CompileDirectiveMetadata.create = function (_a) {\r\n var _b = _a === void 0 ? {} : _a, type = _b.type, isComponent = _b.isComponent, dynamicLoadable = _b.dynamicLoadable, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, host = _b.host, lifecycleHooks = _b.lifecycleHooks, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, template = _b.template;\r\n var hostListeners = {};\r\n var hostProperties = {};\r\n var hostAttributes = {};\r\n if (lang_1.isPresent(host)) {\r\n collection_1.StringMapWrapper.forEach(host, function (value, key) {\r\n var matches = lang_1.RegExpWrapper.firstMatch(HOST_REG_EXP, key);\r\n if (lang_1.isBlank(matches)) {\r\n hostAttributes[key] = value;\r\n }\r\n else if (lang_1.isPresent(matches[1])) {\r\n hostProperties[matches[1]] = value;\r\n }\r\n else if (lang_1.isPresent(matches[2])) {\r\n hostListeners[matches[2]] = value;\r\n }\r\n });\r\n }\r\n var inputsMap = {};\r\n if (lang_1.isPresent(inputs)) {\r\n inputs.forEach(function (bindConfig) {\r\n // canonical syntax: `dirProp: elProp`\r\n // if there is no `:`, use dirProp = elProp\r\n var parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]);\r\n inputsMap[parts[0]] = parts[1];\r\n });\r\n }\r\n var outputsMap = {};\r\n if (lang_1.isPresent(outputs)) {\r\n outputs.forEach(function (bindConfig) {\r\n // canonical syntax: `dirProp: elProp`\r\n // if there is no `:`, use dirProp = elProp\r\n var parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]);\r\n outputsMap[parts[0]] = parts[1];\r\n });\r\n }\r\n return new CompileDirectiveMetadata({\r\n type: type,\r\n isComponent: lang_1.normalizeBool(isComponent),\r\n dynamicLoadable: lang_1.normalizeBool(dynamicLoadable),\r\n selector: selector,\r\n exportAs: exportAs,\r\n changeDetection: changeDetection,\r\n inputs: inputsMap,\r\n outputs: outputsMap,\r\n hostListeners: hostListeners,\r\n hostProperties: hostProperties,\r\n hostAttributes: hostAttributes,\r\n lifecycleHooks: lang_1.isPresent(lifecycleHooks) ? lifecycleHooks : [],\r\n providers: providers,\r\n viewProviders: viewProviders,\r\n queries: queries,\r\n viewQueries: viewQueries,\r\n template: template\r\n });\r\n };\r\n Object.defineProperty(CompileDirectiveMetadata.prototype, \"identifier\", {\r\n get: function () { return this.type; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n CompileDirectiveMetadata.fromJson = function (data) {\r\n return new CompileDirectiveMetadata({\r\n isComponent: data['isComponent'],\r\n dynamicLoadable: data['dynamicLoadable'],\r\n selector: data['selector'],\r\n exportAs: data['exportAs'],\r\n type: lang_1.isPresent(data['type']) ? CompileTypeMetadata.fromJson(data['type']) : data['type'],\r\n changeDetection: lang_1.isPresent(data['changeDetection']) ?\r\n change_detection_1.CHANGE_DETECTION_STRATEGY_VALUES[data['changeDetection']] :\r\n data['changeDetection'],\r\n inputs: data['inputs'],\r\n outputs: data['outputs'],\r\n hostListeners: data['hostListeners'],\r\n hostProperties: data['hostProperties'],\r\n hostAttributes: data['hostAttributes'],\r\n lifecycleHooks: data['lifecycleHooks'].map(function (hookValue) { return interfaces_1.LIFECYCLE_HOOKS_VALUES[hookValue]; }),\r\n template: lang_1.isPresent(data['template']) ? CompileTemplateMetadata.fromJson(data['template']) :\r\n data['template'],\r\n providers: arrayFromJson(data['providers'], CompileProviderMetadata.fromJson)\r\n });\r\n };\r\n CompileDirectiveMetadata.prototype.toJson = function () {\r\n return {\r\n 'class': 'Directive',\r\n 'isComponent': this.isComponent,\r\n 'dynamicLoadable': this.dynamicLoadable,\r\n 'selector': this.selector,\r\n 'exportAs': this.exportAs,\r\n 'type': lang_1.isPresent(this.type) ? this.type.toJson() : this.type,\r\n 'changeDetection': lang_1.isPresent(this.changeDetection) ? lang_1.serializeEnum(this.changeDetection) :\r\n this.changeDetection,\r\n 'inputs': this.inputs,\r\n 'outputs': this.outputs,\r\n 'hostListeners': this.hostListeners,\r\n 'hostProperties': this.hostProperties,\r\n 'hostAttributes': this.hostAttributes,\r\n 'lifecycleHooks': this.lifecycleHooks.map(function (hook) { return lang_1.serializeEnum(hook); }),\r\n 'template': lang_1.isPresent(this.template) ? this.template.toJson() : this.template,\r\n 'providers': arrayToJson(this.providers)\r\n };\r\n };\r\n return CompileDirectiveMetadata;\r\n})();\r\nexports.CompileDirectiveMetadata = CompileDirectiveMetadata;\r\n/**\r\n * Construct {@link CompileDirectiveMetadata} from {@link ComponentTypeMetadata} and a selector.\r\n */\r\nfunction createHostComponentMeta(componentType, componentSelector) {\r\n var template = selector_1.CssSelector.parse(componentSelector)[0].getMatchingElementTemplate();\r\n return CompileDirectiveMetadata.create({\r\n type: new CompileTypeMetadata({\r\n runtime: Object,\r\n name: \"Host\" + componentType.name,\r\n moduleUrl: componentType.moduleUrl,\r\n isHost: true\r\n }),\r\n template: new CompileTemplateMetadata({ template: template, templateUrl: '', styles: [], styleUrls: [], ngContentSelectors: [] }),\r\n changeDetection: change_detection_1.ChangeDetectionStrategy.Default,\r\n inputs: [],\r\n outputs: [],\r\n host: {},\r\n lifecycleHooks: [],\r\n isComponent: true,\r\n dynamicLoadable: false,\r\n selector: '*',\r\n providers: [],\r\n viewProviders: [],\r\n queries: [],\r\n viewQueries: []\r\n });\r\n}\r\nexports.createHostComponentMeta = createHostComponentMeta;\r\nvar CompilePipeMetadata = (function () {\r\n function CompilePipeMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, type = _b.type, name = _b.name, pure = _b.pure;\r\n this.type = type;\r\n this.name = name;\r\n this.pure = lang_1.normalizeBool(pure);\r\n }\r\n Object.defineProperty(CompilePipeMetadata.prototype, \"identifier\", {\r\n get: function () { return this.type; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n CompilePipeMetadata.fromJson = function (data) {\r\n return new CompilePipeMetadata({\r\n type: lang_1.isPresent(data['type']) ? CompileTypeMetadata.fromJson(data['type']) : data['type'],\r\n name: data['name'],\r\n pure: data['pure']\r\n });\r\n };\r\n CompilePipeMetadata.prototype.toJson = function () {\r\n return {\r\n 'class': 'Pipe',\r\n 'type': lang_1.isPresent(this.type) ? this.type.toJson() : null,\r\n 'name': this.name,\r\n 'pure': this.pure\r\n };\r\n };\r\n return CompilePipeMetadata;\r\n})();\r\nexports.CompilePipeMetadata = CompilePipeMetadata;\r\nvar _COMPILE_METADATA_FROM_JSON = {\r\n 'Directive': CompileDirectiveMetadata.fromJson,\r\n 'Pipe': CompilePipeMetadata.fromJson,\r\n 'Type': CompileTypeMetadata.fromJson,\r\n 'Identifier': CompileIdentifierMetadata.fromJson\r\n};\r\nfunction arrayFromJson(obj, fn) {\r\n return lang_1.isBlank(obj) ? null : obj.map(function (o) { return objFromJson(o, fn); });\r\n}\r\nfunction arrayToJson(obj) {\r\n return lang_1.isBlank(obj) ? null : obj.map(objToJson);\r\n}\r\nfunction objFromJson(obj, fn) {\r\n return (lang_1.isString(obj) || lang_1.isBlank(obj)) ? obj : fn(obj);\r\n}\r\nfunction objToJson(obj) {\r\n return (lang_1.isString(obj) || lang_1.isBlank(obj)) ? obj : obj.toJson();\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlX21ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbXBpbGVyL2RpcmVjdGl2ZV9tZXRhZGF0YS50cyJdLCJuYW1lcyI6WyJDb21waWxlTWV0YWRhdGFXaXRoSWRlbnRpZmllciIsIkNvbXBpbGVNZXRhZGF0YVdpdGhJZGVudGlmaWVyLmNvbnN0cnVjdG9yIiwiQ29tcGlsZU1ldGFkYXRhV2l0aElkZW50aWZpZXIuZnJvbUpzb24iLCJDb21waWxlTWV0YWRhdGFXaXRoSWRlbnRpZmllci5pZGVudGlmaWVyIiwiQ29tcGlsZU1ldGFkYXRhV2l0aFR5cGUiLCJDb21waWxlTWV0YWRhdGFXaXRoVHlwZS5jb25zdHJ1Y3RvciIsIkNvbXBpbGVNZXRhZGF0YVdpdGhUeXBlLmZyb21Kc29uIiwiQ29tcGlsZU1ldGFkYXRhV2l0aFR5cGUudHlwZSIsIkNvbXBpbGVNZXRhZGF0YVdpdGhUeXBlLmlkZW50aWZpZXIiLCJDb21waWxlSWRlbnRpZmllck1ldGFkYXRhIiwiQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YS5jb25zdHJ1Y3RvciIsIkNvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEuZnJvbUpzb24iLCJDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLnRvSnNvbiIsIkNvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEuaWRlbnRpZmllciIsIkNvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YSIsIkNvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YS5jb25zdHJ1Y3RvciIsIkNvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YS5mcm9tSnNvbiIsIkNvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YS50b0pzb24iLCJDb21waWxlUHJvdmlkZXJNZXRhZGF0YSIsIkNvbXBpbGVQcm92aWRlck1ldGFkYXRhLmNvbnN0cnVjdG9yIiwiQ29tcGlsZVByb3ZpZGVyTWV0YWRhdGEuZnJvbUpzb24iLCJDb21waWxlUHJvdmlkZXJNZXRhZGF0YS50b0pzb24iLCJDb21waWxlRmFjdG9yeU1ldGFkYXRhIiwiQ29tcGlsZUZhY3RvcnlNZXRhZGF0YS5jb25zdHJ1Y3RvciIsIkNvbXBpbGVGYWN0b3J5TWV0YWRhdGEuaWRlbnRpZmllciIsIkNvbXBpbGVGYWN0b3J5TWV0YWRhdGEudG9Kc29uIiwiQ29tcGlsZVR5cGVNZXRhZGF0YSIsIkNvbXBpbGVUeXBlTWV0YWRhdGEuY29uc3RydWN0b3IiLCJDb21waWxlVHlwZU1ldGFkYXRhLmZyb21Kc29uIiwiQ29tcGlsZVR5cGVNZXRhZGF0YS5pZGVudGlmaWVyIiwiQ29tcGlsZVR5cGVNZXRhZGF0YS50eXBlIiwiQ29tcGlsZVR5cGVNZXRhZGF0YS50b0pzb24iLCJDb21waWxlUXVlcnlNZXRhZGF0YSIsIkNvbXBpbGVRdWVyeU1ldGFkYXRhLmNvbnN0cnVjdG9yIiwiQ29tcGlsZVF1ZXJ5TWV0YWRhdGEuZnJvbUpzb24iLCJDb21waWxlUXVlcnlNZXRhZGF0YS50b0pzb24iLCJDb21waWxlVGVtcGxhdGVNZXRhZGF0YSIsIkNvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhLmNvbnN0cnVjdG9yIiwiQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGEuZnJvbUpzb24iLCJDb21waWxlVGVtcGxhdGVNZXRhZGF0YS50b0pzb24iLCJDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEiLCJDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEuY29uc3RydWN0b3IiLCJDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEuY3JlYXRlIiwiQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLmlkZW50aWZpZXIiLCJDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEuZnJvbUpzb24iLCJDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEudG9Kc29uIiwiY3JlYXRlSG9zdENvbXBvbmVudE1ldGEiLCJDb21waWxlUGlwZU1ldGFkYXRhIiwiQ29tcGlsZVBpcGVNZXRhZGF0YS5jb25zdHJ1Y3RvciIsIkNvbXBpbGVQaXBlTWV0YWRhdGEuaWRlbnRpZmllciIsIkNvbXBpbGVQaXBlTWV0YWRhdGEuZnJvbUpzb24iLCJDb21waWxlUGlwZU1ldGFkYXRhLnRvSnNvbiIsImFycmF5RnJvbUpzb24iLCJhcnJheVRvSnNvbiIsIm9iakZyb21Kc29uIiwib2JqVG9Kc29uIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFCQVVPLDBCQUEwQixDQUFDLENBQUE7QUFDbEMsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFDN0QsMkJBQStCLGdDQUFnQyxDQUFDLENBQUE7QUFDaEUsaUNBR08scURBQXFELENBQUMsQ0FBQTtBQUM3RCxxQkFBMkQsaUNBQWlDLENBQUMsQ0FBQTtBQUM3Rix5QkFBMEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUMzRCxxQkFBMkIsUUFBUSxDQUFDLENBQUE7QUFDcEMsMkJBQXFELHFDQUFxQyxDQUFDLENBQUE7QUFFM0Ysd0NBQXdDO0FBQ3hDLGtDQUFrQztBQUNsQyxJQUFJLFlBQVksR0FBRywwQ0FBMEMsQ0FBQztBQUU5RDtJQUFBQTtJQVFBQyxDQUFDQTtJQVBRRCxzQ0FBUUEsR0FBZkEsVUFBZ0JBLElBQTBCQTtRQUN4Q0UsTUFBTUEsQ0FBQ0EsMkJBQTJCQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtJQUMxREEsQ0FBQ0E7SUFJREYsc0JBQUlBLHFEQUFVQTthQUFkQSxjQUE4Q0csTUFBTUEsQ0FBNEJBLDBCQUFhQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFIO0lBQ3BHQSxvQ0FBQ0E7QUFBREEsQ0FBQ0EsQUFSRCxJQVFDO0FBUnFCLHFDQUE2QixnQ0FRbEQsQ0FBQTtBQUVEO0lBQXNESSwyQ0FBNkJBO0lBQW5GQTtRQUFzREMsOEJBQTZCQTtJQVVuRkEsQ0FBQ0E7SUFUUUQsZ0NBQVFBLEdBQWZBLFVBQWdCQSxJQUEwQkE7UUFDeENFLE1BQU1BLENBQUNBLDJCQUEyQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7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QztJQUNyRUssTUFBTUEsQ0FBQ0EsY0FBT0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsR0FBR0EsR0FBR0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsVUFBQUEsQ0FBQ0EsSUFBSUEsT0FBQUEsV0FBV0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsRUFBRUEsQ0FBQ0EsRUFBbEJBLENBQWtCQSxDQUFDQSxDQUFDQTtBQUNoRUEsQ0FBQ0E7QUFFRCxxQkFBcUIsR0FBVTtJQUM3QkMsTUFBTUEsQ0FBQ0EsY0FBT0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsR0FBR0EsR0FBR0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0E7QUFDbERBLENBQUNBO0FBRUQscUJBQXFCLEdBQVEsRUFBRSxFQUFvQztJQUNqRUMsTUFBTUEsQ0FBQ0EsQ0FBQ0EsZUFBUUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsY0FBT0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsR0FBR0EsR0FBR0EsRUFBRUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0E7QUFDekRBLENBQUNBO0FBRUQsbUJBQW1CLEdBQVE7SUFDekJDLE1BQU1BLENBQUNBLENBQUNBLGVBQVFBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLGNBQU9BLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLEdBQUdBLEdBQUdBLEdBQUdBLENBQUNBLE1BQU1BLEVBQUVBLENBQUNBO0FBQzlEQSxDQUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgbm9ybWFsaXplQm9vbCxcbiAgbm9ybWFsaXplQmxhbmssXG4gIHNlcmlhbGl6ZUVudW0sXG4gIFR5cGUsXG4gIGlzU3RyaW5nLFxuICBSZWdFeHBXcmFwcGVyLFxuICBTdHJpbmdXcmFwcGVyXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge3VuaW1wbGVtZW50ZWR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge1N0cmluZ01hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWV9WQUxVRVNcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uJztcbmltcG9ydCB7Vmlld0VuY2Fwc3VsYXRpb24sIFZJRVdfRU5DQVBTVUxBVElPTl9WQUxVRVN9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL3ZpZXcnO1xuaW1wb3J0IHtDc3NTZWxlY3Rvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3NlbGVjdG9yJztcbmltcG9ydCB7c3BsaXRBdENvbG9ufSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHtMaWZlY3ljbGVIb29rcywgTElGRUNZQ0xFX0hPT0tTX1ZBTFVFU30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL2ludGVyZmFjZXMnO1xuXG4vLyBncm91cCAxOiBcInByb3BlcnR5XCIgZnJvbSBcIltwcm9wZXJ0eV1cIlxuLy8gZ3JvdXAgMjogXCJldmVudFwiIGZyb20gXCIoZXZlbnQpXCJcbnZhciBIT1NUX1JFR19FWFAgPSAvXig/Oig/OlxcWyhbXlxcXV0rKVxcXSl8KD86XFwoKFteXFwpXSspXFwpKSkkL2c7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21waWxlTWV0YWRhdGFXaXRoSWRlbnRpZmllciB7XG4gIHN0YXRpYyBmcm9tSnNvbihkYXRhOiB7W2tleTogc3RyaW5nXTogYW55fSk6IENvbXBpbGVNZXRhZGF0YVdpdGhJZGVudGlmaWVyIHtcbiAgICByZXR1cm4gX0NPTVBJTEVfTUVUQURBVEFfRlJPTV9KU09OW2RhdGFbJ2NsYXNzJ11dKGRhdGEpO1xuICB9XG5cbiAgYWJzdHJhY3QgdG9Kc29uKCk6IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuXG4gIGdldCBpZGVudGlmaWVyKCk6IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEgeyByZXR1cm4gPENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGE+dW5pbXBsZW1lbnRlZCgpOyB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21waWxlTWV0YWRhdGFXaXRoVHlwZSBleHRlbmRzIENvbXBpbGVNZXRhZGF0YVdpdGhJZGVudGlmaWVyIHtcbiAgc3RhdGljIGZyb21Kc29uKGRhdGE6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogQ29tcGlsZU1ldGFkYXRhV2l0aFR5cGUge1xuICAgIHJldHVybiBfQ09NUElMRV9NRVRBREFUQV9GUk9NX0pTT05bZGF0YVsnY2xhc3MnXV0oZGF0YSk7XG4gIH1cblxuICBhYnN0cmFjdCB0b0pzb24oKToge1trZXk6IHN0cmluZ106IGFueX07XG5cbiAgZ2V0IHR5cGUoKTogQ29tcGlsZVR5cGVNZXRhZGF0YSB7IHJldHVybiA8Q29tcGlsZVR5cGVNZXRhZGF0YT51bmltcGxlbWVudGVkKCk7IH1cblxuICBnZXQgaWRlbnRpZmllcigpOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhIHsgcmV0dXJuIDxDb21waWxlSWRlbnRpZmllck1ldGFkYXRhPnVuaW1wbGVtZW50ZWQoKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSBpbXBsZW1lbnRzIENvbXBpbGVNZXRhZGF0YVdpdGhJZGVudGlmaWVyIHtcbiAgcnVudGltZTogYW55O1xuICBuYW1lOiBzdHJpbmc7XG4gIHByZWZpeDogc3RyaW5nO1xuICBtb2R1bGVVcmw6IHN0cmluZztcbiAgY29uc3RDb25zdHJ1Y3RvcjogYm9vbGVhbjtcbiAgY29uc3RydWN0b3Ioe3J1bnRpbWUsIG5hbWUsIG1vZHVsZVVybCwgcHJlZml4LCBjb25zdENvbnN0cnVjdG9yfToge1xuICAgIHJ1bnRpbWU/OiBhbnksXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICBtb2R1bGVVcmw/OiBzdHJpbmcsXG4gICAgcHJlZml4Pzogc3RyaW5nLFxuICAgIGNvbnN0Q29uc3RydWN0b3I/OiBib29sZWFuXG4gIH0gPSB7fSkge1xuICAgIHRoaXMucnVudGltZSA9IHJ1bnRpbWU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcbiAgICB0aGlzLm1vZHVsZVVybCA9IG1vZHVsZVVybDtcbiAgICB0aGlzLmNvbnN0Q29uc3RydWN0b3IgPSBjb25zdENvbnN0cnVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGZyb21Kc29uKGRhdGE6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhKHtcbiAgICAgIG5hbWU6IGRhdGFbJ25hbWUnXSxcbiAgICAgIHByZWZpeDogZGF0YVsncHJlZml4J10sXG4gICAgICBtb2R1bGVVcmw6IGRhdGFbJ21vZHVsZVVybCddLFxuICAgICAgY29uc3RDb25zdHJ1Y3RvcjogZGF0YVsnY29uc3RDb25zdHJ1Y3RvciddXG4gICAgfSk7XG4gIH1cblxuICB0b0pzb24oKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICAgIHJldHVybiB7XG4gICAgICAvLyBOb3RlOiBSdW50aW1lIHR5cGUgY2FuJ3QgYmUgc2VyaWFsaXplZC4uLlxuICAgICAgJ2NsYXNzJzogJ0lkZW50aWZpZXInLFxuICAgICAgJ25hbWUnOiB0aGlzLm5hbWUsXG4gICAgICAnbW9kdWxlVXJsJzogdGhpcy5tb2R1bGVVcmwsXG4gICAgICAncHJlZml4JzogdGhpcy5wcmVmaXgsXG4gICAgICAnY29uc3RDb25zdHJ1Y3Rvcic6IHRoaXMuY29uc3RDb25zdHJ1Y3RvclxuICAgIH07XG4gIH1cblxuICBnZXQgaWRlbnRpZmllcigpOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhIHsgcmV0dXJuIHRoaXM7IH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YSB7XG4gIGlzQXR0cmlidXRlOiBib29sZWFuO1xuICBpc1NlbGY6IGJvb2xlYW47XG4gIGlzSG9zdDogYm9vbGVhbjtcbiAgaXNTa2lwU2VsZjogYm9vbGVhbjtcbiAgaXNPcHRpb25hbDogYm9vbGVhbjtcbiAgcXVlcnk6IENvbXBpbGVRdWVyeU1ldGFkYXRhO1xuICB2aWV3UXVlcnk6IENvbXBpbGVRdWVyeU1ldGFkYXRhO1xuICB0b2tlbjogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB8IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih7aXNBdHRyaWJ1dGUsIGlzU2VsZiwgaXNIb3N0LCBpc1NraXBTZWxmLCBpc09wdGlvbmFsLCBxdWVyeSwgdmlld1F1ZXJ5LCB0b2tlbn06IHtcbiAgICBpc0F0dHJpYnV0ZT86IGJvb2xlYW4sXG4gICAgaXNTZWxmPzogYm9vbGVhbixcbiAgICBpc0hvc3Q/OiBib29sZWFuLFxuICAgIGlzU2tpcFNlbGY/OiBib29sZWFuLFxuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuLFxuICAgIHF1ZXJ5PzogQ29tcGlsZVF1ZXJ5TWV0YWRhdGEsXG4gICAgdmlld1F1ZXJ5PzogQ29tcGlsZVF1ZXJ5TWV0YWRhdGEsXG4gICAgdG9rZW4/OiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhIHwgc3RyaW5nXG4gIH0gPSB7fSkge1xuICAgIHRoaXMuaXNBdHRyaWJ1dGUgPSBub3JtYWxpemVCb29sKGlzQXR0cmlidXRlKTtcbiAgICB0aGlzLmlzU2VsZiA9IG5vcm1hbGl6ZUJvb2woaXNTZWxmKTtcbiAgICB0aGlzLmlzSG9zdCA9IG5vcm1hbGl6ZUJvb2woaXNIb3N0KTtcbiAgICB0aGlzLmlzU2tpcFNlbGYgPSBub3JtYWxpemVCb29sKGlzU2tpcFNlbGYpO1xuICAgIHRoaXMuaXNPcHRpb25hbCA9IG5vcm1hbGl6ZUJvb2woaXNPcHRpb25hbCk7XG4gICAgdGhpcy5xdWVyeSA9IHF1ZXJ5O1xuICAgIHRoaXMudmlld1F1ZXJ5ID0gdmlld1F1ZXJ5O1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihkYXRhOiB7W2tleTogc3RyaW5nXTogYW55fSk6IENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YSB7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlRGlEZXBlbmRlbmN5TWV0YWRhdGEoe1xuICAgICAgdG9rZW46IG9iakZyb21Kc29uKGRhdGFbJ3Rva2VuJ10sIENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEuZnJvbUpzb24pLFxuICAgICAgcXVlcnk6IG9iakZyb21Kc29uKGRhdGFbJ3F1ZXJ5J10sIENvbXBpbGVRdWVyeU1ldGFkYXRhLmZyb21Kc29uKSxcbiAgICAgIHZpZXdRdWVyeTogb2JqRnJvbUpzb24oZGF0YVsndmlld1F1ZXJ5J10sIENvbXBpbGVRdWVyeU1ldGFkYXRhLmZyb21Kc29uKSxcbiAgICAgIGlzQXR0cmlidXRlOiBkYXRhWydpc0F0dHJpYnV0ZSddLFxuICAgICAgaXNTZWxmOiBkYXRhWydpc1NlbGYnXSxcbiAgICAgIGlzSG9zdDogZGF0YVsnaXNIb3N0J10sXG4gICAgICBpc1NraXBTZWxmOiBkYXRhWydpc1NraXBTZWxmJ10sXG4gICAgICBpc09wdGlvbmFsOiBkYXRhWydpc09wdGlvbmFsJ11cbiAgICB9KTtcbiAgfVxuXG4gIHRvSnNvbigpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIE5vdGU6IFJ1bnRpbWUgdHlwZSBjYW4ndCBiZSBzZXJpYWxpemVkLi4uXG4gICAgICAndG9rZW4nOiBvYmpUb0pzb24odGhpcy50b2tlbiksXG4gICAgICAncXVlcnknOiBvYmpUb0pzb24odGhpcy5xdWVyeSksXG4gICAgICAndmlld1F1ZXJ5Jzogb2JqVG9Kc29uKHRoaXMudmlld1F1ZXJ5KSxcbiAgICAgICdpc0F0dHJpYnV0ZSc6IHRoaXMuaXNBdHRyaWJ1dGUsXG4gICAgICAnaXNTZWxmJzogdGhpcy5pc1NlbGYsXG4gICAgICAnaXNIb3N0JzogdGhpcy5pc0hvc3QsXG4gICAgICAnaXNTa2lwU2VsZic6IHRoaXMuaXNTa2lwU2VsZixcbiAgICAgICdpc09wdGlvbmFsJzogdGhpcy5pc09wdGlvbmFsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcGlsZVByb3ZpZGVyTWV0YWRhdGEge1xuICB0b2tlbjogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB8IHN0cmluZztcbiAgdXNlQ2xhc3M6IENvbXBpbGVUeXBlTWV0YWRhdGE7XG4gIHVzZVZhbHVlOiBhbnk7XG4gIHVzZUV4aXN0aW5nOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhIHwgc3RyaW5nO1xuICB1c2VGYWN0b3J5OiBDb21waWxlRmFjdG9yeU1ldGFkYXRhO1xuICBkZXBzOiBDb21waWxlRGlEZXBlbmRlbmN5TWV0YWRhdGFbXTtcbiAgbXVsdGk6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioe3Rva2VuLCB1c2VDbGFzcywgdXNlVmFsdWUsIHVzZUV4aXN0aW5nLCB1c2VGYWN0b3J5LCBkZXBzLCBtdWx0aX06IHtcbiAgICB0b2tlbj86IENvbXBpbGVJZGVudGlmaWVyTWV0YWRhdGEgfCBzdHJpbmcsXG4gICAgdXNlQ2xhc3M/OiBDb21waWxlVHlwZU1ldGFkYXRhLFxuICAgIHVzZVZhbHVlPzogYW55LFxuICAgIHVzZUV4aXN0aW5nPzogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB8IHN0cmluZyxcbiAgICB1c2VGYWN0b3J5PzogQ29tcGlsZUZhY3RvcnlNZXRhZGF0YSxcbiAgICBkZXBzPzogQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhW10sXG4gICAgbXVsdGk/OiBib29sZWFuXG4gIH0pIHtcbiAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgdGhpcy51c2VDbGFzcyA9IHVzZUNsYXNzO1xuICAgIHRoaXMudXNlVmFsdWUgPSB1c2VWYWx1ZTtcbiAgICB0aGlzLnVzZUV4aXN0aW5nID0gdXNlRXhpc3Rpbmc7XG4gICAgdGhpcy51c2VGYWN0b3J5ID0gdXNlRmFjdG9yeTtcbiAgICB0aGlzLmRlcHMgPSBkZXBzO1xuICAgIHRoaXMubXVsdGkgPSBtdWx0aTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihkYXRhOiB7W2tleTogc3RyaW5nXTogYW55fSk6IENvbXBpbGVQcm92aWRlck1ldGFkYXRhIHtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVQcm92aWRlck1ldGFkYXRhKHtcbiAgICAgIHRva2VuOiBvYmpGcm9tSnNvbihkYXRhWyd0b2tlbiddLCBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLmZyb21Kc29uKSxcbiAgICAgIHVzZUNsYXNzOiBvYmpGcm9tSnNvbihkYXRhWyd1c2VDbGFzcyddLCBDb21waWxlVHlwZU1ldGFkYXRhLmZyb21Kc29uKVxuICAgIH0pO1xuICB9XG5cbiAgdG9Kc29uKCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gTm90ZTogUnVudGltZSB0eXBlIGNhbid0IGJlIHNlcmlhbGl6ZWQuLi5cbiAgICAgICd0b2tlbic6IG9ialRvSnNvbih0aGlzLnRva2VuKSxcbiAgICAgICd1c2VDbGFzcyc6IG9ialRvSnNvbih0aGlzLnVzZUNsYXNzKVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBpbGVGYWN0b3J5TWV0YWRhdGEgaW1wbGVtZW50cyBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhIHtcbiAgcnVudGltZTogRnVuY3Rpb247XG4gIG5hbWU6IHN0cmluZztcbiAgcHJlZml4OiBzdHJpbmc7XG4gIG1vZHVsZVVybDogc3RyaW5nO1xuICBjb25zdENvbnN0cnVjdG9yOiBib29sZWFuO1xuICBkaURlcHM6IENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YVtdO1xuXG4gIGNvbnN0cnVjdG9yKHtydW50aW1lLCBuYW1lLCBtb2R1bGVVcmwsIGNvbnN0Q29uc3RydWN0b3IsIGRpRGVwc306IHtcbiAgICBydW50aW1lPzogRnVuY3Rpb24sXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICBtb2R1bGVVcmw/OiBzdHJpbmcsXG4gICAgY29uc3RDb25zdHJ1Y3Rvcj86IGJvb2xlYW4sXG4gICAgZGlEZXBzPzogQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhW11cbiAgfSkge1xuICAgIHRoaXMucnVudGltZSA9IHJ1bnRpbWU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLm1vZHVsZVVybCA9IG1vZHVsZVVybDtcbiAgICB0aGlzLmRpRGVwcyA9IGRpRGVwcztcbiAgICB0aGlzLmNvbnN0Q29uc3RydWN0b3IgPSBjb25zdENvbnN0cnVjdG9yO1xuICB9XG5cbiAgZ2V0IGlkZW50aWZpZXIoKTogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB7IHJldHVybiB0aGlzOyB9XG5cbiAgdG9Kc29uKCkgeyByZXR1cm4gbnVsbDsgfVxufVxuXG4vKipcbiAqIE1ldGFkYXRhIHJlZ2FyZGluZyBjb21waWxhdGlvbiBvZiBhIHR5cGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21waWxlVHlwZU1ldGFkYXRhIGltcGxlbWVudHMgQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSwgQ29tcGlsZU1ldGFkYXRhV2l0aFR5cGUge1xuICBydW50aW1lOiBUeXBlO1xuICBuYW1lOiBzdHJpbmc7XG4gIHByZWZpeDogc3RyaW5nO1xuICBtb2R1bGVVcmw6IHN0cmluZztcbiAgaXNIb3N0OiBib29sZWFuO1xuICBjb25zdENvbnN0cnVjdG9yOiBib29sZWFuO1xuICBkaURlcHM6IENvbXBpbGVEaURlcGVuZGVuY3lNZXRhZGF0YVtdO1xuXG4gIGNvbnN0cnVjdG9yKHtydW50aW1lLCBuYW1lLCBtb2R1bGVVcmwsIHByZWZpeCwgaXNIb3N0LCBjb25zdENvbnN0cnVjdG9yLCBkaURlcHN9OiB7XG4gICAgcnVudGltZT86IFR5cGUsXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICBtb2R1bGVVcmw/OiBzdHJpbmcsXG4gICAgcHJlZml4Pzogc3RyaW5nLFxuICAgIGlzSG9zdD86IGJvb2xlYW4sXG4gICAgY29uc3RDb25zdHJ1Y3Rvcj86IGJvb2xlYW4sXG4gICAgZGlEZXBzPzogQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhW11cbiAgfSA9IHt9KSB7XG4gICAgdGhpcy5ydW50aW1lID0gcnVudGltZTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMubW9kdWxlVXJsID0gbW9kdWxlVXJsO1xuICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgIHRoaXMuaXNIb3N0ID0gbm9ybWFsaXplQm9vbChpc0hvc3QpO1xuICAgIHRoaXMuY29uc3RDb25zdHJ1Y3RvciA9IGNvbnN0Q29uc3RydWN0b3I7XG4gICAgdGhpcy5kaURlcHMgPSBub3JtYWxpemVCbGFuayhkaURlcHMpO1xuICB9XG5cbiAgc3RhdGljIGZyb21Kc29uKGRhdGE6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogQ29tcGlsZVR5cGVNZXRhZGF0YSB7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlVHlwZU1ldGFkYXRhKHtcbiAgICAgIG5hbWU6IGRhdGFbJ25hbWUnXSxcbiAgICAgIG1vZHVsZVVybDogZGF0YVsnbW9kdWxlVXJsJ10sXG4gICAgICBwcmVmaXg6IGRhdGFbJ3ByZWZpeCddLFxuICAgICAgaXNIb3N0OiBkYXRhWydpc0hvc3QnXSxcbiAgICAgIGNvbnN0Q29uc3RydWN0b3I6IGRhdGFbJ2NvbnN0Q29uc3RydWN0b3InXSxcbiAgICAgIGRpRGVwczogYXJyYXlGcm9tSnNvbihkYXRhWydkaURlcHMnXSwgQ29tcGlsZURpRGVwZW5kZW5jeU1ldGFkYXRhLmZyb21Kc29uKVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGlkZW50aWZpZXIoKTogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB7IHJldHVybiB0aGlzOyB9XG4gIGdldCB0eXBlKCk6IENvbXBpbGVUeXBlTWV0YWRhdGEgeyByZXR1cm4gdGhpczsgfVxuXG4gIHRvSnNvbigpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIE5vdGU6IFJ1bnRpbWUgdHlwZSBjYW4ndCBiZSBzZXJpYWxpemVkLi4uXG4gICAgICAnY2xhc3MnOiAnVHlwZScsXG4gICAgICAnbmFtZSc6IHRoaXMubmFtZSxcbiAgICAgICdtb2R1bGVVcmwnOiB0aGlzLm1vZHVsZVVybCxcbiAgICAgICdwcmVmaXgnOiB0aGlzLnByZWZpeCxcbiAgICAgICdpc0hvc3QnOiB0aGlzLmlzSG9zdCxcbiAgICAgICdjb25zdENvbnN0cnVjdG9yJzogdGhpcy5jb25zdENvbnN0cnVjdG9yLFxuICAgICAgJ2RpRGVwcyc6IGFycmF5VG9Kc29uKHRoaXMuZGlEZXBzKVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBpbGVRdWVyeU1ldGFkYXRhIHtcbiAgc2VsZWN0b3JzOiBBcnJheTxDb21waWxlSWRlbnRpZmllck1ldGFkYXRhIHwgc3RyaW5nPjtcbiAgZGVzY2VuZGFudHM6IGJvb2xlYW47XG4gIGZpcnN0OiBib29sZWFuO1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih7c2VsZWN0b3JzLCBkZXNjZW5kYW50cywgZmlyc3QsIHByb3BlcnR5TmFtZX06IHtcbiAgICBzZWxlY3RvcnM/OiBBcnJheTxDb21waWxlSWRlbnRpZmllck1ldGFkYXRhIHwgc3RyaW5nPixcbiAgICBkZXNjZW5kYW50cz86IGJvb2xlYW4sXG4gICAgZmlyc3Q/OiBib29sZWFuLFxuICAgIHByb3BlcnR5TmFtZT86IHN0cmluZ1xuICB9ID0ge30pIHtcbiAgICB0aGlzLnNlbGVjdG9ycyA9IHNlbGVjdG9ycztcbiAgICB0aGlzLmRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHM7XG4gICAgdGhpcy5maXJzdCA9IG5vcm1hbGl6ZUJvb2woZmlyc3QpO1xuICAgIHRoaXMucHJvcGVydHlOYW1lID0gcHJvcGVydHlOYW1lO1xuICB9XG5cbiAgc3RhdGljIGZyb21Kc29uKGRhdGE6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogQ29tcGlsZVF1ZXJ5TWV0YWRhdGEge1xuICAgIHJldHVybiBuZXcgQ29tcGlsZVF1ZXJ5TWV0YWRhdGEoe1xuICAgICAgc2VsZWN0b3JzOiBhcnJheUZyb21Kc29uKGRhdGFbJ3NlbGVjdG9ycyddLCBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLmZyb21Kc29uKSxcbiAgICAgIGRlc2NlbmRhbnRzOiBkYXRhWydkZXNjZW5kYW50cyddLFxuICAgICAgZmlyc3Q6IGRhdGFbJ2ZpcnN0J10sXG4gICAgICBwcm9wZXJ0eU5hbWU6IGRhdGFbJ3Byb3BlcnR5TmFtZSddXG4gICAgfSk7XG4gIH1cblxuICB0b0pzb24oKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICAgIHJldHVybiB7XG4gICAgICAvLyBOb3RlOiBSdW50aW1lIHR5cGUgY2FuJ3QgYmUgc2VyaWFsaXplZC4uLlxuICAgICAgJ3NlbGVjdG9ycyc6IGFycmF5VG9Kc29uKHRoaXMuc2VsZWN0b3JzKSxcbiAgICAgICdkZXNjZW5kYW50cyc6IHRoaXMuZGVzY2VuZGFudHMsXG4gICAgICAnZmlyc3QnOiB0aGlzLmZpcnN0LFxuICAgICAgJ3Byb3BlcnR5TmFtZSc6IHRoaXMucHJvcGVydHlOYW1lXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIE1ldGFkYXRhIHJlZ2FyZGluZyBjb21waWxhdGlvbiBvZiBhIHRlbXBsYXRlLlxuICovXG5leHBvcnQgY2xhc3MgQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGEge1xuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbjtcbiAgdGVtcGxhdGU6IHN0cmluZztcbiAgdGVtcGxhdGVVcmw6IHN0cmluZztcbiAgc3R5bGVzOiBzdHJpbmdbXTtcbiAgc3R5bGVVcmxzOiBzdHJpbmdbXTtcbiAgbmdDb250ZW50U2VsZWN0b3JzOiBzdHJpbmdbXTtcbiAgY29uc3RydWN0b3Ioe2VuY2Fwc3VsYXRpb24sIHRlbXBsYXRlLCB0ZW1wbGF0ZVVybCwgc3R5bGVzLCBzdHlsZVVybHMsIG5nQ29udGVudFNlbGVjdG9yc306IHtcbiAgICBlbmNhcHN1bGF0aW9uPzogVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgdGVtcGxhdGU/OiBzdHJpbmcsXG4gICAgdGVtcGxhdGVVcmw/OiBzdHJpbmcsXG4gICAgc3R5bGVzPzogc3RyaW5nW10sXG4gICAgc3R5bGVVcmxzPzogc3RyaW5nW10sXG4gICAgbmdDb250ZW50U2VsZWN0b3JzPzogc3RyaW5nW11cbiAgfSA9IHt9KSB7XG4gICAgdGhpcy5lbmNhcHN1bGF0aW9uID0gaXNQcmVzZW50KGVuY2Fwc3VsYXRpb24pID8gZW5jYXBzdWxhdGlvbiA6IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkO1xuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICB0aGlzLnRlbXBsYXRlVXJsID0gdGVtcGxhdGVVcmw7XG4gICAgdGhpcy5zdHlsZXMgPSBpc1ByZXNlbnQoc3R5bGVzKSA/IHN0eWxlcyA6IFtdO1xuICAgIHRoaXMuc3R5bGVVcmxzID0gaXNQcmVzZW50KHN0eWxlVXJscykgPyBzdHlsZVVybHMgOiBbXTtcbiAgICB0aGlzLm5nQ29udGVudFNlbGVjdG9ycyA9IGlzUHJlc2VudChuZ0NvbnRlbnRTZWxlY3RvcnMpID8gbmdDb250ZW50U2VsZWN0b3JzIDogW107XG4gIH1cblxuICBzdGF0aWMgZnJvbUpzb24oZGF0YToge1trZXk6IHN0cmluZ106IGFueX0pOiBDb21waWxlVGVtcGxhdGVNZXRhZGF0YSB7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlVGVtcGxhdGVNZXRhZGF0YSh7XG4gICAgICBlbmNhcHN1bGF0aW9uOiBpc1ByZXNlbnQoZGF0YVsnZW5jYXBzdWxhdGlvbiddKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgVklFV19FTkNBUFNVTEFUSU9OX1ZBTFVFU1tkYXRhWydlbmNhcHN1bGF0aW9uJ11dIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydlbmNhcHN1bGF0aW9uJ10sXG4gICAgICB0ZW1wbGF0ZTogZGF0YVsndGVtcGxhdGUnXSxcbiAgICAgIHRlbXBsYXRlVXJsOiBkYXRhWyd0ZW1wbGF0ZVVybCddLFxuICAgICAgc3R5bGVzOiBkYXRhWydzdHlsZXMnXSxcbiAgICAgIHN0eWxlVXJsczogZGF0YVsnc3R5bGVVcmxzJ10sXG4gICAgICBuZ0NvbnRlbnRTZWxlY3RvcnM6IGRhdGFbJ25nQ29udGVudFNlbGVjdG9ycyddXG4gICAgfSk7XG4gIH1cblxuICB0b0pzb24oKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICAgIHJldHVybiB7XG4gICAgICAnZW5jYXBzdWxhdGlvbic6XG4gICAgICAgICAgaXNQcmVzZW50KHRoaXMuZW5jYXBzdWxhdGlvbikgPyBzZXJpYWxpemVFbnVtKHRoaXMuZW5jYXBzdWxhdGlvbikgOiB0aGlzLmVuY2Fwc3VsYXRpb24sXG4gICAgICAndGVtcGxhdGUnOiB0aGlzLnRlbXBsYXRlLFxuICAgICAgJ3RlbXBsYXRlVXJsJzogdGhpcy50ZW1wbGF0ZVVybCxcbiAgICAgICdzdHlsZXMnOiB0aGlzLnN0eWxlcyxcbiAgICAgICdzdHlsZVVybHMnOiB0aGlzLnN0eWxlVXJscyxcbiAgICAgICduZ0NvbnRlbnRTZWxlY3RvcnMnOiB0aGlzLm5nQ29udGVudFNlbGVjdG9yc1xuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBNZXRhZGF0YSByZWdhcmRpbmcgY29tcGlsYXRpb24gb2YgYSBkaXJlY3RpdmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEgaW1wbGVtZW50cyBDb21waWxlTWV0YWRhdGFXaXRoVHlwZSB7XG4gIHN0YXRpYyBjcmVhdGUoe3R5cGUsIGlzQ29tcG9uZW50LCBkeW5hbWljTG9hZGFibGUsIHNlbGVjdG9yLCBleHBvcnRBcywgY2hhbmdlRGV0ZWN0aW9uLCBpbnB1dHMsXG4gICAgICAgICAgICAgICAgIG91dHB1dHMsIGhvc3QsIGxpZmVjeWNsZUhvb2tzLCBwcm92aWRlcnMsIHZpZXdQcm92aWRlcnMsIHF1ZXJpZXMsIHZpZXdRdWVyaWVzLFxuICAgICAgICAgICAgICAgICB0ZW1wbGF0ZX06IHtcbiAgICB0eXBlPzogQ29tcGlsZVR5cGVNZXRhZGF0YSxcbiAgICBpc0NvbXBvbmVudD86IGJvb2xlYW4sXG4gICAgZHluYW1pY0xvYWRhYmxlPzogYm9vbGVhbixcbiAgICBzZWxlY3Rvcj86IHN0cmluZyxcbiAgICBleHBvcnRBcz86IHN0cmluZyxcbiAgICBjaGFuZ2VEZXRlY3Rpb24/OiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBpbnB1dHM/OiBzdHJpbmdbXSxcbiAgICBvdXRwdXRzPzogc3RyaW5nW10sXG4gICAgaG9zdD86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LFxuICAgIGxpZmVjeWNsZUhvb2tzPzogTGlmZWN5Y2xlSG9va3NbXSxcbiAgICBwcm92aWRlcnM/OiBBcnJheTxDb21waWxlUHJvdmlkZXJNZXRhZGF0YSB8IENvbXBpbGVUeXBlTWV0YWRhdGEgfCBhbnlbXT4sXG4gICAgdmlld1Byb3ZpZGVycz86IEFycmF5PENvbXBpbGVQcm92aWRlck1ldGFkYXRhIHwgQ29tcGlsZVR5cGVNZXRhZGF0YSB8IGFueVtdPixcbiAgICBxdWVyaWVzPzogQ29tcGlsZVF1ZXJ5TWV0YWRhdGFbXSxcbiAgICB2aWV3UXVlcmllcz86IENvbXBpbGVRdWVyeU1ldGFkYXRhW10sXG4gICAgdGVtcGxhdGU/OiBDb21waWxlVGVtcGxhdGVNZXRhZGF0YVxuICB9ID0ge30pOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEge1xuICAgIHZhciBob3N0TGlzdGVuZXJzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xuICAgIHZhciBob3N0UHJvcGVydGllczoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcbiAgICB2YXIgaG9zdEF0dHJpYnV0ZXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge307XG4gICAgaWYgKGlzUHJlc2VudChob3N0KSkge1xuICAgICAgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKGhvc3QsICh2YWx1ZTogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICB2YXIgbWF0Y2hlcyA9IFJlZ0V4cFdyYXBwZXIuZmlyc3RNYXRjaChIT1NUX1JFR19FWFAsIGtleSk7XG4gICAgICAgIGlmIChpc0JsYW5rKG1hdGNoZXMpKSB7XG4gICAgICAgICAgaG9zdEF0dHJpYnV0ZXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKGlzUHJlc2VudChtYXRjaGVzWzFdKSkge1xuICAgICAgICAgIGhvc3RQcm9wZXJ0aWVzW21hdGNoZXNbMV1dID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KG1hdGNoZXNbMl0pKSB7XG4gICAgICAgICAgaG9zdExpc3RlbmVyc1ttYXRjaGVzWzJdXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdmFyIGlucHV0c01hcDoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcbiAgICBpZiAoaXNQcmVzZW50KGlucHV0cykpIHtcbiAgICAgIGlucHV0cy5mb3JFYWNoKChiaW5kQ29uZmlnOiBzdHJpbmcpID0+IHtcbiAgICAgICAgLy8gY2Fub25pY2FsIHN5bnRheDogYGRpclByb3A6IGVsUHJvcGBcbiAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gYDpgLCB1c2UgZGlyUHJvcCA9IGVsUHJvcFxuICAgICAgICB2YXIgcGFydHMgPSBzcGxpdEF0Q29sb24oYmluZENvbmZpZywgW2JpbmRDb25maWcsIGJpbmRDb25maWddKTtcbiAgICAgICAgaW5wdXRzTWFwW3BhcnRzWzBdXSA9IHBhcnRzWzFdO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHZhciBvdXRwdXRzTWFwOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xuICAgIGlmIChpc1ByZXNlbnQob3V0cHV0cykpIHtcbiAgICAgIG91dHB1dHMuZm9yRWFjaCgoYmluZENvbmZpZzogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vIGNhbm9uaWNhbCBzeW50YXg6IGBkaXJQcm9wOiBlbFByb3BgXG4gICAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIGA6YCwgdXNlIGRpclByb3AgPSBlbFByb3BcbiAgICAgICAgdmFyIHBhcnRzID0gc3BsaXRBdENvbG9uKGJpbmRDb25maWcsIFtiaW5kQ29uZmlnLCBiaW5kQ29uZmlnXSk7XG4gICAgICAgIG91dHB1dHNNYXBbcGFydHNbMF1dID0gcGFydHNbMV07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSh7XG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgaXNDb21wb25lbnQ6IG5vcm1hbGl6ZUJvb2woaXNDb21wb25lbnQpLFxuICAgICAgZHluYW1pY0xvYWRhYmxlOiBub3JtYWxpemVCb29sKGR5bmFtaWNMb2FkYWJsZSksXG4gICAgICBzZWxlY3Rvcjogc2VsZWN0b3IsXG4gICAgICBleHBvcnRBczogZXhwb3J0QXMsXG4gICAgICBjaGFuZ2VEZXRlY3Rpb246IGNoYW5nZURldGVjdGlvbixcbiAgICAgIGlucHV0czogaW5wdXRzTWFwLFxuICAgICAgb3V0cHV0czogb3V0cHV0c01hcCxcbiAgICAgIGhvc3RMaXN0ZW5lcnM6IGhvc3RMaXN0ZW5lcnMsXG4gICAgICBob3N0UHJvcGVydGllczogaG9zdFByb3BlcnRpZXMsXG4gICAgICBob3N0QXR0cmlidXRlczogaG9zdEF0dHJpYnV0ZXMsXG4gICAgICBsaWZlY3ljbGVIb29rczogaXNQcmVzZW50KGxpZmVjeWNsZUhvb2tzKSA/IGxpZmVjeWNsZUhvb2tzIDogW10sXG4gICAgICBwcm92aWRlcnM6IHByb3ZpZGVycyxcbiAgICAgIHZpZXdQcm92aWRlcnM6IHZpZXdQcm92aWRlcnMsXG4gICAgICBxdWVyaWVzOiBxdWVyaWVzLFxuICAgICAgdmlld1F1ZXJpZXM6IHZpZXdRdWVyaWVzLFxuICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlXG4gICAgfSk7XG4gIH1cbiAgdHlwZTogQ29tcGlsZVR5cGVNZXRhZGF0YTtcbiAgaXNDb21wb25lbnQ6IGJvb2xlYW47XG4gIGR5bmFtaWNMb2FkYWJsZTogYm9vbGVhbjtcbiAgc2VsZWN0b3I6IHN0cmluZztcbiAgZXhwb3J0QXM6IHN0cmluZztcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneTtcbiAgaW5wdXRzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcbiAgb3V0cHV0czoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG4gIGhvc3RMaXN0ZW5lcnM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xuICBob3N0UHJvcGVydGllczoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG4gIGhvc3RBdHRyaWJ1dGVzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcbiAgbGlmZWN5Y2xlSG9va3M6IExpZmVjeWNsZUhvb2tzW107XG4gIHByb3ZpZGVyczogQXJyYXk8Q29tcGlsZVByb3ZpZGVyTWV0YWRhdGEgfCBDb21waWxlVHlwZU1ldGFkYXRhIHwgYW55W10+O1xuICB2aWV3UHJvdmlkZXJzOiBBcnJheTxDb21waWxlUHJvdmlkZXJNZXRhZGF0YSB8IENvbXBpbGVUeXBlTWV0YWRhdGEgfCBhbnlbXT47XG4gIHF1ZXJpZXM6IENvbXBpbGVRdWVyeU1ldGFkYXRhW107XG4gIHZpZXdRdWVyaWVzOiBDb21waWxlUXVlcnlNZXRhZGF0YVtdO1xuICB0ZW1wbGF0ZTogQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGE7XG4gIGNvbnN0cnVjdG9yKHt0eXBlLCBpc0NvbXBvbmVudCwgZHluYW1pY0xvYWRhYmxlLCBzZWxlY3RvciwgZXhwb3J0QXMsIGNoYW5nZURldGVjdGlvbiwgaW5wdXRzLFxuICAgICAgICAgICAgICAgb3V0cHV0cywgaG9zdExpc3RlbmVycywgaG9zdFByb3BlcnRpZXMsIGhvc3RBdHRyaWJ1dGVzLCBsaWZlY3ljbGVIb29rcywgcHJvdmlkZXJzLFxuICAgICAgICAgICAgICAgdmlld1Byb3ZpZGVycywgcXVlcmllcywgdmlld1F1ZXJpZXMsIHRlbXBsYXRlfToge1xuICAgIHR5cGU/OiBDb21waWxlVHlwZU1ldGFkYXRhLFxuICAgIGlzQ29tcG9uZW50PzogYm9vbGVhbixcbiAgICBkeW5hbWljTG9hZGFibGU/OiBib29sZWFuLFxuICAgIHNlbGVjdG9yPzogc3RyaW5nLFxuICAgIGV4cG9ydEFzPzogc3RyaW5nLFxuICAgIGNoYW5nZURldGVjdGlvbj86IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIGlucHV0cz86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LFxuICAgIG91dHB1dHM/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSxcbiAgICBob3N0TGlzdGVuZXJzPzoge1trZXk6IHN0cmluZ106IHN0cmluZ30sXG4gICAgaG9zdFByb3BlcnRpZXM/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSxcbiAgICBob3N0QXR0cmlidXRlcz86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LFxuICAgIGxpZmVjeWNsZUhvb2tzPzogTGlmZWN5Y2xlSG9va3NbXSxcbiAgICBwcm92aWRlcnM/OiBBcnJheTxDb21waWxlUHJvdmlkZXJNZXRhZGF0YSB8IENvbXBpbGVUeXBlTWV0YWRhdGEgfCBhbnlbXT4sXG4gICAgdmlld1Byb3ZpZGVycz86IEFycmF5PENvbXBpbGVQcm92aWRlck1ldGFkYXRhIHwgQ29tcGlsZVR5cGVNZXRhZGF0YSB8IGFueVtdPixcbiAgICBxdWVyaWVzPzogQ29tcGlsZVF1ZXJ5TWV0YWRhdGFbXSxcbiAgICB2aWV3UXVlcmllcz86IENvbXBpbGVRdWVyeU1ldGFkYXRhW10sXG4gICAgdGVtcGxhdGU/OiBDb21waWxlVGVtcGxhdGVNZXRhZGF0YVxuICB9ID0ge30pIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuaXNDb21wb25lbnQgPSBpc0NvbXBvbmVudDtcbiAgICB0aGlzLmR5bmFtaWNMb2FkYWJsZSA9IGR5bmFtaWNMb2FkYWJsZTtcbiAgICB0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgdGhpcy5leHBvcnRBcyA9IGV4cG9ydEFzO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uID0gY2hhbmdlRGV0ZWN0aW9uO1xuICAgIHRoaXMuaW5wdXRzID0gaW5wdXRzO1xuICAgIHRoaXMub3V0cHV0cyA9IG91dHB1dHM7XG4gICAgdGhpcy5ob3N0TGlzdGVuZXJzID0gaG9zdExpc3RlbmVycztcbiAgICB0aGlzLmhvc3RQcm9wZXJ0aWVzID0gaG9zdFByb3BlcnRpZXM7XG4gICAgdGhpcy5ob3N0QXR0cmlidXRlcyA9IGhvc3RBdHRyaWJ1dGVzO1xuICAgIHRoaXMubGlmZWN5Y2xlSG9va3MgPSBsaWZlY3ljbGVIb29rcztcbiAgICB0aGlzLnByb3ZpZGVycyA9IG5vcm1hbGl6ZUJsYW5rKHByb3ZpZGVycyk7XG4gICAgdGhpcy52aWV3UHJvdmlkZXJzID0gbm9ybWFsaXplQmxhbmsodmlld1Byb3ZpZGVycyk7XG4gICAgdGhpcy5xdWVyaWVzID0gcXVlcmllcztcbiAgICB0aGlzLnZpZXdRdWVyaWVzID0gdmlld1F1ZXJpZXM7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICB9XG5cbiAgZ2V0IGlkZW50aWZpZXIoKTogQ29tcGlsZUlkZW50aWZpZXJNZXRhZGF0YSB7IHJldHVybiB0aGlzLnR5cGU7IH1cblxuICBzdGF0aWMgZnJvbUpzb24oZGF0YToge1trZXk6IHN0cmluZ106IGFueX0pOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEge1xuICAgIHJldHVybiBuZXcgQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhKHtcbiAgICAgIGlzQ29tcG9uZW50OiBkYXRhWydpc0NvbXBvbmVudCddLFxuICAgICAgZHluYW1pY0xvYWRhYmxlOiBkYXRhWydkeW5hbWljTG9hZGFibGUnXSxcbiAgICAgIHNlbGVjdG9yOiBkYXRhWydzZWxlY3RvciddLFxuICAgICAgZXhwb3J0QXM6IGRhdGFbJ2V4cG9ydEFzJ10sXG4gICAgICB0eXBlOiBpc1ByZXNlbnQoZGF0YVsndHlwZSddKSA/IENvbXBpbGVUeXBlTWV0YWRhdGEuZnJvbUpzb24oZGF0YVsndHlwZSddKSA6IGRhdGFbJ3R5cGUnXSxcbiAgICAgIGNoYW5nZURldGVjdGlvbjogaXNQcmVzZW50KGRhdGFbJ2NoYW5nZURldGVjdGlvbiddKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZX1ZBTFVFU1tkYXRhWydjaGFuZ2VEZXRlY3Rpb24nXV0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsnY2hhbmdlRGV0ZWN0aW9uJ10sXG4gICAgICBpbnB1dHM6IGRhdGFbJ2lucHV0cyddLFxuICAgICAgb3V0cHV0czogZGF0YVsnb3V0cHV0cyddLFxuICAgICAgaG9zdExpc3RlbmVyczogZGF0YVsnaG9zdExpc3RlbmVycyddLFxuICAgICAgaG9zdFByb3BlcnRpZXM6IGRhdGFbJ2hvc3RQcm9wZXJ0aWVzJ10sXG4gICAgICBob3N0QXR0cmlidXRlczogZGF0YVsnaG9zdEF0dHJpYnV0ZXMnXSxcbiAgICAgIGxpZmVjeWNsZUhvb2tzOlxuICAgICAgICAgICg8YW55W10+ZGF0YVsnbGlmZWN5Y2xlSG9va3MnXSkubWFwKGhvb2tWYWx1ZSA9PiBMSUZFQ1lDTEVfSE9PS1NfVkFMVUVTW2hvb2tWYWx1ZV0pLFxuICAgICAgdGVtcGxhdGU6IGlzUHJlc2VudChkYXRhWyd0ZW1wbGF0ZSddKSA/IENvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhLmZyb21Kc29uKGRhdGFbJ3RlbXBsYXRlJ10pIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWyd0ZW1wbGF0ZSddLFxuICAgICAgcHJvdmlkZXJzOiBhcnJheUZyb21Kc29uKGRhdGFbJ3Byb3ZpZGVycyddLCBDb21waWxlUHJvdmlkZXJNZXRhZGF0YS5mcm9tSnNvbilcbiAgICB9KTtcbiAgfVxuXG4gIHRvSnNvbigpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdjbGFzcyc6ICdEaXJlY3RpdmUnLFxuICAgICAgJ2lzQ29tcG9uZW50JzogdGhpcy5pc0NvbXBvbmVudCxcbiAgICAgICdkeW5hbWljTG9hZGFibGUnOiB0aGlzLmR5bmFtaWNMb2FkYWJsZSxcbiAgICAgICdzZWxlY3Rvcic6IHRoaXMuc2VsZWN0b3IsXG4gICAgICAnZXhwb3J0QXMnOiB0aGlzLmV4cG9ydEFzLFxuICAgICAgJ3R5cGUnOiBpc1ByZXNlbnQodGhpcy50eXBlKSA/IHRoaXMudHlwZS50b0pzb24oKSA6IHRoaXMudHlwZSxcbiAgICAgICdjaGFuZ2VEZXRlY3Rpb24nOiBpc1ByZXNlbnQodGhpcy5jaGFuZ2VEZXRlY3Rpb24pID8gc2VyaWFsaXplRW51bSh0aGlzLmNoYW5nZURldGVjdGlvbikgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdGlvbixcbiAgICAgICdpbnB1dHMnOiB0aGlzLmlucHV0cyxcbiAgICAgICdvdXRwdXRzJzogdGhpcy5vdXRwdXRzLFxuICAgICAgJ2hvc3RMaXN0ZW5lcnMnOiB0aGlzLmhvc3RMaXN0ZW5lcnMsXG4gICAgICAnaG9zdFByb3BlcnRpZXMnOiB0aGlzLmhvc3RQcm9wZXJ0aWVzLFxuICAgICAgJ2hvc3RBdHRyaWJ1dGVzJzogdGhpcy5ob3N0QXR0cmlidXRlcyxcbiAgICAgICdsaWZlY3ljbGVIb29rcyc6IHRoaXMubGlmZWN5Y2xlSG9va3MubWFwKGhvb2sgPT4gc2VyaWFsaXplRW51bShob29rKSksXG4gICAgICAndGVtcGxhdGUnOiBpc1ByZXNlbnQodGhpcy50ZW1wbGF0ZSkgPyB0aGlzLnRlbXBsYXRlLnRvSnNvbigpIDogdGhpcy50ZW1wbGF0ZSxcbiAgICAgICdwcm92aWRlcnMnOiBhcnJheVRvSnNvbih0aGlzLnByb3ZpZGVycylcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0IHtAbGluayBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGF9IGZyb20ge0BsaW5rIENvbXBvbmVudFR5cGVNZXRhZGF0YX0gYW5kIGEgc2VsZWN0b3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVIb3N0Q29tcG9uZW50TWV0YShjb21wb25lbnRUeXBlOiBDb21waWxlVHlwZU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFNlbGVjdG9yOiBzdHJpbmcpOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEge1xuICB2YXIgdGVtcGxhdGUgPSBDc3NTZWxlY3Rvci5wYXJzZShjb21wb25lbnRTZWxlY3RvcilbMF0uZ2V0TWF0Y2hpbmdFbGVtZW50VGVtcGxhdGUoKTtcbiAgcmV0dXJuIENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YS5jcmVhdGUoe1xuICAgIHR5cGU6IG5ldyBDb21waWxlVHlwZU1ldGFkYXRhKHtcbiAgICAgIHJ1bnRpbWU6IE9iamVjdCxcbiAgICAgIG5hbWU6IGBIb3N0JHtjb21wb25lbnRUeXBlLm5hbWV9YCxcbiAgICAgIG1vZHVsZVVybDogY29tcG9uZW50VHlwZS5tb2R1bGVVcmwsXG4gICAgICBpc0hvc3Q6IHRydWVcbiAgICB9KSxcbiAgICB0ZW1wbGF0ZTogbmV3IENvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhKFxuICAgICAgICB7dGVtcGxhdGU6IHRlbXBsYXRlLCB0ZW1wbGF0ZVVybDogJycsIHN0eWxlczogW10sIHN0eWxlVXJsczogW10sIG5nQ29udGVudFNlbGVjdG9yczogW119KSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gICAgaW5wdXRzOiBbXSxcbiAgICBvdXRwdXRzOiBbXSxcbiAgICBob3N0OiB7fSxcbiAgICBsaWZlY3ljbGVIb29rczogW10sXG4gICAgaXNDb21wb25lbnQ6IHRydWUsXG4gICAgZHluYW1pY0xvYWRhYmxlOiBmYWxzZSxcbiAgICBzZWxlY3RvcjogJyonLFxuICAgIHByb3ZpZGVyczogW10sXG4gICAgdmlld1Byb3ZpZGVyczogW10sXG4gICAgcXVlcmllczogW10sXG4gICAgdmlld1F1ZXJpZXM6IFtdXG4gIH0pO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBDb21waWxlUGlwZU1ldGFkYXRhIGltcGxlbWVudHMgQ29tcGlsZU1ldGFkYXRhV2l0aFR5cGUge1xuICB0eXBlOiBDb21waWxlVHlwZU1ldGFkYXRhO1xuICBuYW1lOiBzdHJpbmc7XG4gIHB1cmU6IGJvb2xlYW47XG4gIGNvbnN0cnVjdG9yKHt0eXBlLCBuYW1lLFxuICAgICAgICAgICAgICAgcHVyZX06IHt0eXBlPzogQ29tcGlsZVR5cGVNZXRhZGF0YSwgbmFtZT86IHN0cmluZywgcHVyZT86IGJvb2xlYW59ID0ge30pIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wdXJlID0gbm9ybWFsaXplQm9vbChwdXJlKTtcbiAgfVxuICBnZXQgaWRlbnRpZmllcigpOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhIHsgcmV0dXJuIHRoaXMudHlwZTsgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihkYXRhOiB7W2tleTogc3RyaW5nXTogYW55fSk6IENvbXBpbGVQaXBlTWV0YWRhdGEge1xuICAgIHJldHVybiBuZXcgQ29tcGlsZVBpcGVNZXRhZGF0YSh7XG4gICAgICB0eXBlOiBpc1ByZXNlbnQoZGF0YVsndHlwZSddKSA/IENvbXBpbGVUeXBlTWV0YWRhdGEuZnJvbUpzb24oZGF0YVsndHlwZSddKSA6IGRhdGFbJ3R5cGUnXSxcbiAgICAgIG5hbWU6IGRhdGFbJ25hbWUnXSxcbiAgICAgIHB1cmU6IGRhdGFbJ3B1cmUnXVxuICAgIH0pO1xuICB9XG5cbiAgdG9Kc29uKCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2NsYXNzJzogJ1BpcGUnLFxuICAgICAgJ3R5cGUnOiBpc1ByZXNlbnQodGhpcy50eXBlKSA/IHRoaXMudHlwZS50b0pzb24oKSA6IG51bGwsXG4gICAgICAnbmFtZSc6IHRoaXMubmFtZSxcbiAgICAgICdwdXJlJzogdGhpcy5wdXJlXG4gICAgfTtcbiAgfVxufVxuXG52YXIgX0NPTVBJTEVfTUVUQURBVEFfRlJPTV9KU09OID0ge1xuICAnRGlyZWN0aXZlJzogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLmZyb21Kc29uLFxuICAnUGlwZSc6IENvbXBpbGVQaXBlTWV0YWRhdGEuZnJvbUpzb24sXG4gICdUeXBlJzogQ29tcGlsZVR5cGVNZXRhZGF0YS5mcm9tSnNvbixcbiAgJ0lkZW50aWZpZXInOiBDb21waWxlSWRlbnRpZmllck1ldGFkYXRhLmZyb21Kc29uXG59O1xuXG5mdW5jdGlvbiBhcnJheUZyb21Kc29uKG9iajogYW55W10sIGZuOiAoYToge1trZXk6IHN0cmluZ106IGFueX0pID0+IGFueSk6IGFueSB7XG4gIHJldHVybiBpc0JsYW5rKG9iaikgPyBudWxsIDogb2JqLm1hcChvID0+IG9iakZyb21Kc29uKG8sIGZuKSk7XG59XG5cbmZ1bmN0aW9uIGFycmF5VG9Kc29uKG9iajogYW55W10pOiBzdHJpbmcgfCB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gIHJldHVybiBpc0JsYW5rKG9iaikgPyBudWxsIDogb2JqLm1hcChvYmpUb0pzb24pO1xufVxuXG5mdW5jdGlvbiBvYmpGcm9tSnNvbihvYmo6IGFueSwgZm46IChhOiB7W2tleTogc3RyaW5nXTogYW55fSkgPT4gYW55KTogYW55IHtcbiAgcmV0dXJuIChpc1N0cmluZyhvYmopIHx8IGlzQmxhbmsob2JqKSkgPyBvYmogOiBmbihvYmopO1xufVxuXG5mdW5jdGlvbiBvYmpUb0pzb24ob2JqOiBhbnkpOiBzdHJpbmcgfCB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gIHJldHVybiAoaXNTdHJpbmcob2JqKSB8fCBpc0JsYW5rKG9iaikpID8gb2JqIDogb2JqLnRvSnNvbigpO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar interfaces_1 = require('./interfaces');\r\nfunction hasLifecycleHook(lcInterface, token) {\r\n if (!(token instanceof lang_1.Type))\r\n return false;\r\n var proto = token.prototype;\r\n switch (lcInterface) {\r\n case interfaces_1.LifecycleHooks.AfterContentInit:\r\n return !!proto.ngAfterContentInit;\r\n case interfaces_1.LifecycleHooks.AfterContentChecked:\r\n return !!proto.ngAfterContentChecked;\r\n case interfaces_1.LifecycleHooks.AfterViewInit:\r\n return !!proto.ngAfterViewInit;\r\n case interfaces_1.LifecycleHooks.AfterViewChecked:\r\n return !!proto.ngAfterViewChecked;\r\n case interfaces_1.LifecycleHooks.OnChanges:\r\n return !!proto.ngOnChanges;\r\n case interfaces_1.LifecycleHooks.DoCheck:\r\n return !!proto.ngDoCheck;\r\n case interfaces_1.LifecycleHooks.OnDestroy:\r\n return !!proto.ngOnDestroy;\r\n case interfaces_1.LifecycleHooks.OnInit:\r\n return !!proto.ngOnInit;\r\n default:\r\n return false;\r\n }\r\n}\r\nexports.hasLifecycleHook = hasLifecycleHook;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlX2xpZmVjeWNsZV9yZWZsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvZGlyZWN0aXZlX2xpZmVjeWNsZV9yZWZsZWN0b3IudHMiXSwibmFtZXMiOlsiaGFzTGlmZWN5Y2xlSG9vayJdLCJtYXBwaW5ncyI6IkFBQUEscUJBQW1CLDBCQUEwQixDQUFDLENBQUE7QUFDOUMsMkJBQTZCLGNBQWMsQ0FBQyxDQUFBO0FBRTVDLDBCQUFpQyxXQUEyQixFQUFFLEtBQUs7SUFDakVBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLEtBQUtBLFlBQVlBLFdBQUlBLENBQUNBLENBQUNBO1FBQUNBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO0lBRTNDQSxJQUFJQSxLQUFLQSxHQUFTQSxLQUFNQSxDQUFDQSxTQUFTQSxDQUFDQTtJQUVuQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsV0FBV0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDcEJBLEtBQUtBLDJCQUFjQSxDQUFDQSxnQkFBZ0JBO1lBQ2xDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQSxLQUFLQSxDQUFDQSxrQkFBa0JBLENBQUNBO1FBQ3BDQSxLQUFLQSwyQkFBY0EsQ0FBQ0EsbUJBQW1CQTtZQUNyQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EscUJBQXFCQSxDQUFDQTtRQUN2Q0EsS0FBS0EsMkJBQWNBLENBQUNBLGFBQWFBO1lBQy9CQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQSxLQUFLQSxDQUFDQSxlQUFlQSxDQUFDQTtRQUNqQ0EsS0FBS0EsMkJBQWNBLENBQUNBLGdCQUFnQkE7WUFDbENBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLEtBQUtBLENBQUNBLGtCQUFrQkEsQ0FBQ0E7UUFDcENBLEtBQUtBLDJCQUFjQSxDQUFDQSxTQUFTQTtZQUMzQkEsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsV0FBV0EsQ0FBQ0E7UUFDN0JBLEtBQUtBLDJCQUFjQSxDQUFDQSxPQUFPQTtZQUN6QkEsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsU0FBU0EsQ0FBQ0E7UUFDM0JBLEtBQUtBLDJCQUFjQSxDQUFDQSxTQUFTQTtZQUMzQkEsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsV0FBV0EsQ0FBQ0E7UUFDN0JBLEtBQUtBLDJCQUFjQSxDQUFDQSxNQUFNQTtZQUN4QkEsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsUUFBUUEsQ0FBQ0E7UUFDMUJBO1lBQ0VBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO0lBQ2pCQSxDQUFDQTtBQUNIQSxDQUFDQTtBQXpCZSx3QkFBZ0IsbUJBeUIvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtMaWZlY3ljbGVIb29rc30gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0xpZmVjeWNsZUhvb2sobGNJbnRlcmZhY2U6IExpZmVjeWNsZUhvb2tzLCB0b2tlbik6IGJvb2xlYW4ge1xuICBpZiAoISh0b2tlbiBpbnN0YW5jZW9mIFR5cGUpKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIHByb3RvID0gKDxhbnk+dG9rZW4pLnByb3RvdHlwZTtcblxuICBzd2l0Y2ggKGxjSW50ZXJmYWNlKSB7XG4gICAgY2FzZSBMaWZlY3ljbGVIb29rcy5BZnRlckNvbnRlbnRJbml0OlxuICAgICAgcmV0dXJuICEhcHJvdG8ubmdBZnRlckNvbnRlbnRJbml0O1xuICAgIGNhc2UgTGlmZWN5Y2xlSG9va3MuQWZ0ZXJDb250ZW50Q2hlY2tlZDpcbiAgICAgIHJldHVybiAhIXByb3RvLm5nQWZ0ZXJDb250ZW50Q2hlY2tlZDtcbiAgICBjYXNlIExpZmVjeWNsZUhvb2tzLkFmdGVyVmlld0luaXQ6XG4gICAgICByZXR1cm4gISFwcm90by5uZ0FmdGVyVmlld0luaXQ7XG4gICAgY2FzZSBMaWZlY3ljbGVIb29rcy5BZnRlclZpZXdDaGVja2VkOlxuICAgICAgcmV0dXJuICEhcHJvdG8ubmdBZnRlclZpZXdDaGVja2VkO1xuICAgIGNhc2UgTGlmZWN5Y2xlSG9va3MuT25DaGFuZ2VzOlxuICAgICAgcmV0dXJuICEhcHJvdG8ubmdPbkNoYW5nZXM7XG4gICAgY2FzZSBMaWZlY3ljbGVIb29rcy5Eb0NoZWNrOlxuICAgICAgcmV0dXJuICEhcHJvdG8ubmdEb0NoZWNrO1xuICAgIGNhc2UgTGlmZWN5Y2xlSG9va3MuT25EZXN0cm95OlxuICAgICAgcmV0dXJuICEhcHJvdG8ubmdPbkRlc3Ryb3k7XG4gICAgY2FzZSBMaWZlY3ljbGVIb29rcy5PbkluaXQ6XG4gICAgICByZXR1cm4gISFwcm90by5uZ09uSW5pdDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';(function (LifecycleHooks) {\r\n LifecycleHooks[LifecycleHooks[\"OnInit\"] = 0] = \"OnInit\";\r\n LifecycleHooks[LifecycleHooks[\"OnDestroy\"] = 1] = \"OnDestroy\";\r\n LifecycleHooks[LifecycleHooks[\"DoCheck\"] = 2] = \"DoCheck\";\r\n LifecycleHooks[LifecycleHooks[\"OnChanges\"] = 3] = \"OnChanges\";\r\n LifecycleHooks[LifecycleHooks[\"AfterContentInit\"] = 4] = \"AfterContentInit\";\r\n LifecycleHooks[LifecycleHooks[\"AfterContentChecked\"] = 5] = \"AfterContentChecked\";\r\n LifecycleHooks[LifecycleHooks[\"AfterViewInit\"] = 6] = \"AfterViewInit\";\r\n LifecycleHooks[LifecycleHooks[\"AfterViewChecked\"] = 7] = \"AfterViewChecked\";\r\n})(exports.LifecycleHooks || (exports.LifecycleHooks = {}));\r\nvar LifecycleHooks = exports.LifecycleHooks;\r\n/**\r\n * @internal\r\n */\r\nexports.LIFECYCLE_HOOKS_VALUES = [\r\n LifecycleHooks.OnInit,\r\n LifecycleHooks.OnDestroy,\r\n LifecycleHooks.DoCheck,\r\n LifecycleHooks.OnChanges,\r\n LifecycleHooks.AfterContentInit,\r\n LifecycleHooks.AfterContentChecked,\r\n LifecycleHooks.AfterViewInit,\r\n LifecycleHooks.AfterViewChecked\r\n];\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbIkxpZmVjeWNsZUhvb2tzIl0sIm1hcHBpbmdzIjoiQUFHQSxXQUFZLGNBQWM7SUFDeEJBLHVEQUFNQSxDQUFBQTtJQUNOQSw2REFBU0EsQ0FBQUE7SUFDVEEseURBQU9BLENBQUFBO0lBQ1BBLDZEQUFTQSxDQUFBQTtJQUNUQSwyRUFBZ0JBLENBQUFBO0lBQ2hCQSxpRkFBbUJBLENBQUFBO0lBQ25CQSxxRUFBYUEsQ0FBQUE7SUFDYkEsMkVBQWdCQSxDQUFBQTtBQUNsQkEsQ0FBQ0EsRUFUVyxzQkFBYyxLQUFkLHNCQUFjLFFBU3pCO0FBVEQsSUFBWSxjQUFjLEdBQWQsc0JBU1gsQ0FBQTtBQUVEOztHQUVHO0FBQ1EsOEJBQXNCLEdBQUc7SUFDbEMsY0FBYyxDQUFDLE1BQU07SUFDckIsY0FBYyxDQUFDLFNBQVM7SUFDeEIsY0FBYyxDQUFDLE9BQU87SUFDdEIsY0FBYyxDQUFDLFNBQVM7SUFDeEIsY0FBYyxDQUFDLGdCQUFnQjtJQUMvQixjQUFjLENBQUMsbUJBQW1CO0lBQ2xDLGNBQWMsQ0FBQyxhQUFhO0lBQzVCLGNBQWMsQ0FBQyxnQkFBZ0I7Q0FDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7U2ltcGxlQ2hhbmdlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rpb25fdXRpbCc7XG5cbmV4cG9ydCBlbnVtIExpZmVjeWNsZUhvb2tzIHtcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIERvQ2hlY2ssXG4gIE9uQ2hhbmdlcyxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQWZ0ZXJWaWV3Q2hlY2tlZFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgdmFyIExJRkVDWUNMRV9IT09LU19WQUxVRVMgPSBbXG4gIExpZmVjeWNsZUhvb2tzLk9uSW5pdCxcbiAgTGlmZWN5Y2xlSG9va3MuT25EZXN0cm95LFxuICBMaWZlY3ljbGVIb29rcy5Eb0NoZWNrLFxuICBMaWZlY3ljbGVIb29rcy5PbkNoYW5nZXMsXG4gIExpZmVjeWNsZUhvb2tzLkFmdGVyQ29udGVudEluaXQsXG4gIExpZmVjeWNsZUhvb2tzLkFmdGVyQ29udGVudENoZWNrZWQsXG4gIExpZmVjeWNsZUhvb2tzLkFmdGVyVmlld0luaXQsXG4gIExpZmVjeWNsZUhvb2tzLkFmdGVyVmlld0NoZWNrZWRcbl07XG5cbi8qKlxuICogTGlmZWN5Y2xlIGhvb2tzIGFyZSBndWFyYW50ZWVkIHRvIGJlIGNhbGxlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOlxuICogLSBgT25DaGFuZ2VzYCAoaWYgYW55IGJpbmRpbmdzIGhhdmUgY2hhbmdlZCksXG4gKiAtIGBPbkluaXRgIChhZnRlciB0aGUgZmlyc3QgY2hlY2sgb25seSksXG4gKiAtIGBEb0NoZWNrYCxcbiAqIC0gYEFmdGVyQ29udGVudEluaXRgLFxuICogLSBgQWZ0ZXJDb250ZW50Q2hlY2tlZGAsXG4gKiAtIGBBZnRlclZpZXdJbml0YCxcbiAqIC0gYEFmdGVyVmlld0NoZWNrZWRgLFxuICogLSBgT25EZXN0cm95YCAoYXQgdGhlIHZlcnkgZW5kIGJlZm9yZSBkZXN0cnVjdGlvbilcbiAqL1xuXG4vKipcbiAqIEltcGxlbWVudCB0aGlzIGludGVyZmFjZSB0byBnZXQgbm90aWZpZWQgd2hlbiBhbnkgZGF0YS1ib3VuZCBwcm9wZXJ0eSBvZiB5b3VyIGRpcmVjdGl2ZSBjaGFuZ2VzLlxuICpcbiAqIGBuZ09uQ2hhbmdlc2AgaXMgY2FsbGVkIHJpZ2h0IGFmdGVyIHRoZSBkYXRhLWJvdW5kIHByb3BlcnRpZXMgaGF2ZSBiZWVuIGNoZWNrZWQgYW5kIGJlZm9yZSB2aWV3XG4gKiBhbmQgY29udGVudCBjaGlsZHJlbiBhcmUgY2hlY2tlZCBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlbSBoYXMgY2hhbmdlZC5cbiAqXG4gKiBUaGUgYGNoYW5nZXNgIHBhcmFtZXRlciBjb250YWlucyBhbiBlbnRyeSBmb3IgZWFjaCBvZiB0aGUgY2hhbmdlZCBkYXRhLWJvdW5kIHByb3BlcnR5LiBUaGUga2V5IGlzXG4gKiB0aGUgcHJvcGVydHkgbmFtZSBhbmQgdGhlIHZhbHVlIGlzIGFuIGluc3RhbmNlIG9mIHtAbGluayBTaW1wbGVDaGFuZ2V9LlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBleGFtcGxlXShodHRwOi8vcGxua3IuY28vZWRpdC9BSHJCNm9wTHFIREJQa3Q0S3BkVD9wPXByZXZpZXcpKTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdteS1jbXAnLFxuICogICB0ZW1wbGF0ZTogYDxwPm15UHJvcCA9IHt7bXlQcm9wfX08L3A+YFxuICogfSlcbiAqIGNsYXNzIE15Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAqICAgQElucHV0KCkgbXlQcm9wOiBhbnk7XG4gKlxuICogICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7W3Byb3BOYW1lOiBzdHJpbmddOiBTaW1wbGVDaGFuZ2V9KSB7XG4gKiAgICAgY29uc29sZS5sb2coJ25nT25DaGFuZ2VzIC0gbXlQcm9wID0gJyArIGNoYW5nZXNbJ215UHJvcCddLmN1cnJlbnRWYWx1ZSk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxidXR0b24gKGNsaWNrKT1cInZhbHVlID0gdmFsdWUgKyAxXCI+Q2hhbmdlIE15Q29tcG9uZW50PC9idXR0b24+XG4gKiAgICAgPG15LWNtcCBbbXktcHJvcF09XCJ2YWx1ZVwiPjwvbXktY21wPmAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtNeUNvbXBvbmVudF1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwIHtcbiAqICAgdmFsdWUgPSAwO1xuICogfVxuICpcbiAqIGJvb3RzdHJhcChBcHApLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVycikpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT25DaGFuZ2VzIHsgbmdPbkNoYW5nZXMoY2hhbmdlczoge1trZXk6IHN0cmluZ106IFNpbXBsZUNoYW5nZX0pOyB9XG5cbi8qKlxuICogSW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIHRvIGV4ZWN1dGUgY3VzdG9tIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFmdGVyIHlvdXIgZGlyZWN0aXZlJ3NcbiAqIGRhdGEtYm91bmQgcHJvcGVydGllcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQuXG4gKlxuICogYG5nT25Jbml0YCBpcyBjYWxsZWQgcmlnaHQgYWZ0ZXIgdGhlIGRpcmVjdGl2ZSdzIGRhdGEtYm91bmQgcHJvcGVydGllcyBoYXZlIGJlZW4gY2hlY2tlZCBmb3IgdGhlXG4gKiBmaXJzdCB0aW1lLCBhbmQgYmVmb3JlIGFueSBvZiBpdHMgY2hpbGRyZW4gaGF2ZSBiZWVuIGNoZWNrZWQuIEl0IGlzIGludm9rZWQgb25seSBvbmNlIHdoZW4gdGhlXG4gKiBkaXJlY3RpdmUgaXMgaW5zdGFudGlhdGVkLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBleGFtcGxlXShodHRwOi8vcGxua3IuY28vZWRpdC8xTUJ5cFJyeVhkNjR2NHBWMDNZbj9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ215LWNtcCcsXG4gKiAgIHRlbXBsYXRlOiBgPHA+bXktY29tcG9uZW50PC9wPmBcbiAqIH0pXG4gKiBjbGFzcyBNeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ25nT25Jbml0Jyk7XG4gKiAgIH1cbiAqXG4gKiAgIG5nT25EZXN0cm95KCkge1xuICogICAgIGNvbnNvbGUubG9nKCduZ09uRGVzdHJveScpO1xuICogICB9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8YnV0dG9uIChjbGljayk9XCJoYXNDaGlsZCA9ICFoYXNDaGlsZFwiPlxuICogICAgICAge3toYXNDaGlsZCA/ICdEZXN0cm95JyA6ICdDcmVhdGUnfX0gTXlDb21wb25lbnRcbiAqICAgICA8L2J1dHRvbj5cbiAqICAgICA8bXktY21wICpuZ0lmPVwiaGFzQ2hpbGRcIj48L215LWNtcD5gLFxuICogICBkaXJlY3RpdmVzOiBbTXlDb21wb25lbnQsIE5nSWZdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcCB7XG4gKiAgIGhhc0NoaWxkID0gdHJ1ZTtcbiAqIH1cbiAqXG4gKiBib290c3RyYXAoQXBwKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbiAqICBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPbkluaXQgeyBuZ09uSW5pdCgpOyB9XG5cbi8qKlxuICogSW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNoYW5nZSBkZXRlY3Rpb24gYWxnb3JpdGhtIGZvciB5b3VyIGRpcmVjdGl2ZS5cbiAqXG4gKiBgbmdEb0NoZWNrYCBnZXRzIGNhbGxlZCB0byBjaGVjayB0aGUgY2hhbmdlcyBpbiB0aGUgZGlyZWN0aXZlcyBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGFsZ29yaXRobS5cbiAqXG4gKiBUaGUgZGVmYXVsdCBjaGFuZ2UgZGV0ZWN0aW9uIGFsZ29yaXRobSBsb29rcyBmb3IgZGlmZmVyZW5jZXMgYnkgY29tcGFyaW5nIGJvdW5kLXByb3BlcnR5IHZhbHVlc1xuICogYnkgcmVmZXJlbmNlIGFjcm9zcyBjaGFuZ2UgZGV0ZWN0aW9uIHJ1bnMuIFdoZW4gYERvQ2hlY2tgIGlzIGltcGxlbWVudGVkLCB0aGUgZGVmYXVsdCBhbGdvcml0aG1cbiAqIGlzIGRpc2FibGVkIGFuZCBgbmdEb0NoZWNrYCBpcyByZXNwb25zaWJsZSBmb3IgY2hlY2tpbmcgZm9yIGNoYW5nZXMuXG4gKlxuICogSW1wbGVtZW50aW5nIHRoaXMgaW50ZXJmYWNlIGFsbG93cyBpbXByb3ZpbmcgcGVyZm9ybWFuY2UgYnkgdXNpbmcgaW5zaWdodHMgYWJvdXQgdGhlIGNvbXBvbmVudCxcbiAqIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgZGF0YSB0eXBlcyBvZiBpdHMgcHJvcGVydGllcy5cbiAqXG4gKiBOb3RlIHRoYXQgYSBkaXJlY3RpdmUgc2hvdWxkIG5vdCBpbXBsZW1lbnQgYm90aCBgRG9DaGVja2AgYW5kIHtAbGluayBPbkNoYW5nZXN9IGF0IHRoZSBzYW1lIHRpbWUuXG4gKiBgbmdPbkNoYW5nZXNgIHdvdWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBhIGRpcmVjdGl2ZSBpbXBsZW1lbnRzIGBEb0NoZWNrYC4gUmVhY3Rpb24gdG8gdGhlIGNoYW5nZXNcbiAqIGhhdmUgdG8gYmUgaGFuZGxlZCBmcm9tIHdpdGhpbiB0aGUgYG5nRG9DaGVja2AgY2FsbGJhY2suXG4gKlxuICogVXNlIHtAbGluayBLZXlWYWx1ZURpZmZlcnN9IGFuZCB7QGxpbmsgSXRlcmFibGVEaWZmZXJzfSB0byBhZGQgeW91ciBjdXN0b20gY2hlY2sgbWVjaGFuaXNtcy5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvUXBuSWxGMENSMmk1YmNZYkhFVUo/cD1wcmV2aWV3KSlcbiAqXG4gKiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUgYG5nRG9DaGVja2AgdXNlcyBhbiB7QGxpbmsgSXRlcmFibGVEaWZmZXJzfSB0byBkZXRlY3QgdGhlIHVwZGF0ZXMgdG8gdGhlXG4gKiBhcnJheSBgbGlzdGA6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnY3VzdG9tLWNoZWNrJyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8cD5DaGFuZ2VzOjwvcD5cbiAqICAgICA8dWw+XG4gKiAgICAgICA8bGkgKm5nRm9yPVwiI2xpbmUgb2YgbG9nc1wiPnt7bGluZX19PC9saT5cbiAqICAgICA8L3VsPmAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtOZ0Zvcl1cbiAqIH0pXG4gKiBjbGFzcyBDdXN0b21DaGVja0NvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2sge1xuICogICBASW5wdXQoKSBsaXN0OiBhbnlbXTtcbiAqICAgZGlmZmVyOiBhbnk7XG4gKiAgIGxvZ3MgPSBbXTtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKGRpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycykge1xuICogICAgIHRoaXMuZGlmZmVyID0gZGlmZmVycy5maW5kKFtdKS5jcmVhdGUobnVsbCk7XG4gKiAgIH1cbiAqXG4gKiAgIG5nRG9DaGVjaygpIHtcbiAqICAgICB2YXIgY2hhbmdlcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5saXN0KTtcbiAqXG4gKiAgICAgaWYgKGNoYW5nZXMpIHtcbiAqICAgICAgIGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbShyID0+IHRoaXMubG9ncy5wdXNoKCdhZGRlZCAnICsgci5pdGVtKSk7XG4gKiAgICAgICBjaGFuZ2VzLmZvckVhY2hSZW1vdmVkSXRlbShyID0+IHRoaXMubG9ncy5wdXNoKCdyZW1vdmVkICcgKyByLml0ZW0pKVxuICogICAgIH1cbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGJ1dHRvbiAoY2xpY2spPVwibGlzdC5wdXNoKGxpc3QubGVuZ3RoKVwiPlB1c2g8L2J1dHRvbj5cbiAqICAgICA8YnV0dG9uIChjbGljayk9XCJsaXN0LnBvcCgpXCI+UG9wPC9idXR0b24+XG4gKiAgICAgPGN1c3RvbS1jaGVjayBbbGlzdF09XCJsaXN0XCI+PC9jdXN0b20tY2hlY2s+YCxcbiAqICAgZGlyZWN0aXZlczogW0N1c3RvbUNoZWNrQ29tcG9uZW50XVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBBcHAge1xuICogICBsaXN0ID0gW107XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb0NoZWNrIHsgbmdEb0NoZWNrKCk7IH1cblxuLyoqXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gZ2V0IG5vdGlmaWVkIHdoZW4geW91ciBkaXJlY3RpdmUgaXMgZGVzdHJveWVkLlxuICpcbiAqIGBuZ09uRGVzdHJveWAgY2FsbGJhY2sgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGFueSBjdXN0b20gY2xlYW51cCB0aGF0IG5lZWRzIHRvIG9jY3VyIHdoZW4gdGhlXG4gKiBpbnN0YW5jZSBpcyBkZXN0cm95ZWRcbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZXhhbXBsZV0oaHR0cDovL3BsbmtyLmNvL2VkaXQvMU1CeXBScnlYZDY0djRwVjAzWW4/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ215LWNtcCcsXG4gKiAgIHRlbXBsYXRlOiBgPHA+bXktY29tcG9uZW50PC9wPmBcbiAqIH0pXG4gKiBjbGFzcyBNeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ25nT25Jbml0Jyk7XG4gKiAgIH1cbiAqXG4gKiAgIG5nT25EZXN0cm95KCkge1xuICogICAgIGNvbnNvbGUubG9nKCduZ09uRGVzdHJveScpO1xuICogICB9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8YnV0dG9uIChjbGljayk9XCJoYXNDaGlsZCA9ICFoYXNDaGlsZFwiPlxuICogICAgICAge3toYXNDaGlsZCA/ICdEZXN0cm95JyA6ICdDcmVhdGUnfX0gTXlDb21wb25lbnRcbiAqICAgICA8L2J1dHRvbj5cbiAqICAgICA8bXktY21wICpuZ0lmPVwiaGFzQ2hpbGRcIj48L215LWNtcD5gLFxuICogICBkaXJlY3RpdmVzOiBbTXlDb21wb25lbnQsIE5nSWZdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcCB7XG4gKiAgIGhhc0NoaWxkID0gdHJ1ZTtcbiAqIH1cbiAqXG4gKiBib290c3RyYXAoQXBwKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbiAqIGBgYFxuICpcbiAqXG4gKiBUbyBjcmVhdGUgYSBzdGF0ZWZ1bCBQaXBlLCB5b3Ugc2hvdWxkIGltcGxlbWVudCB0aGlzIGludGVyZmFjZSBhbmQgc2V0IHRoZSBgcHVyZWBcbiAqIHBhcmFtZXRlciB0byBgZmFsc2VgIGluIHRoZSB7QGxpbmsgUGlwZU1ldGFkYXRhfS5cbiAqXG4gKiBBIHN0YXRlZnVsIHBpcGUgbWF5IHByb2R1Y2UgZGlmZmVyZW50IG91dHB1dCwgZ2l2ZW4gdGhlIHNhbWUgaW5wdXQuIEl0IGlzXG4gKiBsaWtlbHkgdGhhdCBhIHN0YXRlZnVsIHBpcGUgbWF5IGNvbnRhaW4gc3RhdGUgdGhhdCBzaG91bGQgYmUgY2xlYW5lZCB1cCB3aGVuXG4gKiBhIGJpbmRpbmcgaXMgZGVzdHJveWVkLiBGb3IgZXhhbXBsZSwgYSBzdWJzY3JpcHRpb24gdG8gYSBzdHJlYW0gb2YgZGF0YSBtYXkgbmVlZCB0b1xuICogYmUgZGlzcG9zZWQsIG9yIGFuIGludGVydmFsIG1heSBuZWVkIHRvIGJlIGNsZWFyZWQuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L2k4cG01YnJPNHNQYUx4Qng1Nk1SP3A9cHJldmlldykpXG4gKlxuICogSW4gdGhpcyBleGFtcGxlLCBhIHBpcGUgaXMgY3JlYXRlZCB0byBjb3VudGRvd24gaXRzIGlucHV0IHZhbHVlLCB1cGRhdGluZyBpdCBldmVyeVxuICogNTBtcy4gQmVjYXVzZSBpdCBtYWludGFpbnMgYW4gaW50ZXJuYWwgaW50ZXJ2YWwsIGl0IGF1dG9tYXRpY2FsbHkgY2xlYXJzXG4gKiB0aGUgaW50ZXJ2YWwgd2hlbiB0aGUgYmluZGluZyBpcyBkZXN0cm95ZWQgb3IgdGhlIGNvdW50ZG93biBjb21wbGV0ZXMuXG4gKlxuICogYGBgXG4gKiBpbXBvcnQge09uRGVzdHJveSwgUGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnYW5ndWxhcjIvY29yZSdcbiAqIEBQaXBlKHtuYW1lOiAnY291bnRkb3duJywgcHVyZTogZmFsc2V9KVxuICogY2xhc3MgQ291bnREb3duIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcbiAqICAgcmVtYWluaW5nVGltZTpOdW1iZXI7XG4gKiAgIGludGVydmFsOlNldEludGVydmFsO1xuICogICBuZ09uRGVzdHJveSgpIHtcbiAqICAgICBpZiAodGhpcy5pbnRlcnZhbCkge1xuICogICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcbiAqICAgICB9XG4gKiAgIH1cbiAqICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGFyZ3M6IGFueVtdID0gW10pIHtcbiAqICAgICBpZiAoIXBhcnNlSW50KHZhbHVlLCAxMCkpIHJldHVybiBudWxsO1xuICogICAgIGlmICh0eXBlb2YgdGhpcy5yZW1haW5pbmdUaW1lICE9PSAnbnVtYmVyJykge1xuICogICAgICAgdGhpcy5yZW1haW5pbmdUaW1lID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAqICAgICB9XG4gKiAgICAgaWYgKCF0aGlzLmludGVydmFsKSB7XG4gKiAgICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICogICAgICAgICB0aGlzLnJlbWFpbmluZ1RpbWUtPTUwO1xuICogICAgICAgICBpZiAodGhpcy5yZW1haW5pbmdUaW1lIDw9IDApIHtcbiAqICAgICAgICAgICB0aGlzLnJlbWFpbmluZ1RpbWUgPSAwO1xuICogICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gKiAgICAgICAgICAgZGVsZXRlIHRoaXMuaW50ZXJ2YWw7XG4gKiAgICAgICAgIH1cbiAqICAgICAgIH0sIDUwKTtcbiAqICAgICB9XG4gKiAgICAgcmV0dXJuIHRoaXMucmVtYWluaW5nVGltZTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogSW52b2tpbmcgYHt7IDEwMDAwIHwgY291bnRkb3duIH19YCB3b3VsZCBjYXVzZSB0aGUgdmFsdWUgdG8gYmUgZGVjcmVtZW50ZWQgYnkgNTAsXG4gKiBldmVyeSA1MG1zLCB1bnRpbCBpdCByZWFjaGVzIDAuXG4gKlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9uRGVzdHJveSB7IG5nT25EZXN0cm95KCk7IH1cblxuLyoqXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gZ2V0IG5vdGlmaWVkIHdoZW4geW91ciBkaXJlY3RpdmUncyBjb250ZW50IGhhcyBiZWVuIGZ1bGx5XG4gKiBpbml0aWFsaXplZC5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvcGxhbVhVcHNMUWJJWHBWaVpoVU8/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdjaGlsZC1jbXAnLFxuICogICB0ZW1wbGF0ZTogYHt7d2hlcmV9fSBjaGlsZGBcbiAqIH0pXG4gKiBjbGFzcyBDaGlsZENvbXBvbmVudCB7XG4gKiAgIEBJbnB1dCgpIHdoZXJlOiBzdHJpbmc7XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAncGFyZW50LWNtcCcsXG4gKiAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmBcbiAqIH0pXG4gKiBjbGFzcyBQYXJlbnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAqICAgQENvbnRlbnRDaGlsZChDaGlsZENvbXBvbmVudCkgY29udGVudENoaWxkOiBDaGlsZENvbXBvbmVudDtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKCkge1xuICogICAgIC8vIGNvbnRlbnRDaGlsZCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0XG4gKiAgICAgY29uc29sZS5sb2codGhpcy5nZXRNZXNzYWdlKHRoaXMuY29udGVudENoaWxkKSk7XG4gKiAgIH1cbiAqXG4gKiAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAqICAgICAvLyBjb250ZW50Q2hpbGQgaXMgdXBkYXRlZCBhZnRlciB0aGUgY29udGVudCBoYXMgYmVlbiBjaGVja2VkXG4gKiAgICAgY29uc29sZS5sb2coJ0FmdGVyQ29udGVudEluaXQ6ICcgKyB0aGlzLmdldE1lc3NhZ2UodGhpcy5jb250ZW50Q2hpbGQpKTtcbiAqICAgfVxuICpcbiAqICAgcHJpdmF0ZSBnZXRNZXNzYWdlKGNtcDogQ2hpbGRDb21wb25lbnQpOiBzdHJpbmcge1xuICogICAgIHJldHVybiBjbXAgPyBjbXAud2hlcmUgKyAnIGNoaWxkJyA6ICdubyBjaGlsZCc7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxwYXJlbnQtY21wPlxuICogICAgICAgPGNoaWxkLWNtcCB3aGVyZT1cImNvbnRlbnRcIj48L2NoaWxkLWNtcD5cbiAqICAgICA8L3BhcmVudC1jbXA+YCxcbiAqICAgZGlyZWN0aXZlczogW1BhcmVudENvbXBvbmVudCwgQ2hpbGRDb21wb25lbnRdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcCB7XG4gKiB9XG4gKlxuICogYm9vdHN0cmFwKEFwcCkuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZnRlckNvbnRlbnRJbml0IHsgbmdBZnRlckNvbnRlbnRJbml0KCk7IH1cblxuLyoqXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gZ2V0IG5vdGlmaWVkIGFmdGVyIGV2ZXJ5IGNoZWNrIG9mIHlvdXIgZGlyZWN0aXZlJ3MgY29udGVudC5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvdEdkcnl0TkVLUW5lY0lQa0Q3TlU/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtzZWxlY3RvcjogJ2NoaWxkLWNtcCcsIHRlbXBsYXRlOiBge3t3aGVyZX19IGNoaWxkYH0pXG4gKiBjbGFzcyBDaGlsZENvbXBvbmVudCB7XG4gKiAgIEBJbnB1dCgpIHdoZXJlOiBzdHJpbmc7XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7c2VsZWN0b3I6ICdwYXJlbnQtY21wJywgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YH0pXG4gKiBjbGFzcyBQYXJlbnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAqICAgQENvbnRlbnRDaGlsZChDaGlsZENvbXBvbmVudCkgY29udGVudENoaWxkOiBDaGlsZENvbXBvbmVudDtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKCkge1xuICogICAgIC8vIGNvbnRlbnRDaGlsZCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0XG4gKiAgICAgY29uc29sZS5sb2codGhpcy5nZXRNZXNzYWdlKHRoaXMuY29udGVudENoaWxkKSk7XG4gKiAgIH1cbiAqXG4gKiAgIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAqICAgICAvLyBjb250ZW50Q2hpbGQgaXMgdXBkYXRlZCBhZnRlciB0aGUgY29udGVudCBoYXMgYmVlbiBjaGVja2VkXG4gKiAgICAgY29uc29sZS5sb2coJ0FmdGVyQ29udGVudENoZWNrZWQ6ICcgKyB0aGlzLmdldE1lc3NhZ2UodGhpcy5jb250ZW50Q2hpbGQpKTtcbiAqICAgfVxuICpcbiAqICAgcHJpdmF0ZSBnZXRNZXNzYWdlKGNtcDogQ2hpbGRDb21wb25lbnQpOiBzdHJpbmcge1xuICogICAgIHJldHVybiBjbXAgPyBjbXAud2hlcmUgKyAnIGNoaWxkJyA6ICdubyBjaGlsZCc7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxwYXJlbnQtY21wPlxuICogICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFzQ29udGVudCA9ICFoYXNDb250ZW50XCI+VG9nZ2xlIGNvbnRlbnQgY2hpbGQ8L2J1dHRvbj5cbiAqICAgICAgIDxjaGlsZC1jbXAgKm5nSWY9XCJoYXNDb250ZW50XCIgd2hlcmU9XCJjb250ZW50XCI+PC9jaGlsZC1jbXA+XG4gKiAgICAgPC9wYXJlbnQtY21wPmAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtOZ0lmLCBQYXJlbnRDb21wb25lbnQsIENoaWxkQ29tcG9uZW50XVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBBcHAge1xuICogICBoYXNDb250ZW50ID0gdHJ1ZTtcbiAqIH1cbiAqXG4gKiBib290c3RyYXAoQXBwKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFmdGVyQ29udGVudENoZWNrZWQgeyBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTsgfVxuXG4vKipcbiAqIEltcGxlbWVudCB0aGlzIGludGVyZmFjZSB0byBnZXQgbm90aWZpZWQgd2hlbiB5b3VyIGNvbXBvbmVudCdzIHZpZXcgaGFzIGJlZW4gZnVsbHkgaW5pdGlhbGl6ZWQuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0xoVEtWTUVNMGZrSmd5cDRDSTFXP3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7c2VsZWN0b3I6ICdjaGlsZC1jbXAnLCB0ZW1wbGF0ZTogYHt7d2hlcmV9fSBjaGlsZGB9KVxuICogY2xhc3MgQ2hpbGRDb21wb25lbnQge1xuICogICBASW5wdXQoKSB3aGVyZTogc3RyaW5nO1xuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3BhcmVudC1jbXAnLFxuICogICB0ZW1wbGF0ZTogYDxjaGlsZC1jbXAgd2hlcmU9XCJ2aWV3XCI+PC9jaGlsZC1jbXA+YCxcbiAqICAgZGlyZWN0aXZlczogW0NoaWxkQ29tcG9uZW50XVxuICogfSlcbiAqIGNsYXNzIFBhcmVudENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICogICBAVmlld0NoaWxkKENoaWxkQ29tcG9uZW50KSB2aWV3Q2hpbGQ6IENoaWxkQ29tcG9uZW50O1xuICpcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgLy8gdmlld0NoaWxkIGlzIG5vdCBpbml0aWFsaXplZCB5ZXRcbiAqICAgICBjb25zb2xlLmxvZyh0aGlzLmdldE1lc3NhZ2UodGhpcy52aWV3Q2hpbGQpKTtcbiAqICAgfVxuICpcbiAqICAgbmdBZnRlclZpZXdJbml0KCkge1xuICogICAgIC8vIHZpZXdDaGlsZCBpcyB1cGRhdGVkIGFmdGVyIHRoZSB2aWV3IGhhcyBiZWVuIGluaXRpYWxpemVkXG4gKiAgICAgY29uc29sZS5sb2coJ25nQWZ0ZXJWaWV3SW5pdDogJyArIHRoaXMuZ2V0TWVzc2FnZSh0aGlzLnZpZXdDaGlsZCkpO1xuICogICB9XG4gKlxuICogICBwcml2YXRlIGdldE1lc3NhZ2UoY21wOiBDaGlsZENvbXBvbmVudCk6IHN0cmluZyB7XG4gKiAgICAgcmV0dXJuIGNtcCA/IGNtcC53aGVyZSArICcgY2hpbGQnIDogJ25vIGNoaWxkJztcbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgIHRlbXBsYXRlOiBgPHBhcmVudC1jbXA+PC9wYXJlbnQtY21wPmAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtQYXJlbnRDb21wb25lbnRdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcCB7XG4gKiB9XG4gKlxuICogYm9vdHN0cmFwKEFwcCkuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZnRlclZpZXdJbml0IHsgbmdBZnRlclZpZXdJbml0KCk7IH1cblxuLyoqXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gZ2V0IG5vdGlmaWVkIGFmdGVyIGV2ZXJ5IGNoZWNrIG9mIHlvdXIgY29tcG9uZW50J3Mgdmlldy5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvMHFER0hjUFFrYzI1Q1hoVE56S1U/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtzZWxlY3RvcjogJ2NoaWxkLWNtcCcsIHRlbXBsYXRlOiBge3t3aGVyZX19IGNoaWxkYH0pXG4gKiBjbGFzcyBDaGlsZENvbXBvbmVudCB7XG4gKiAgIEBJbnB1dCgpIHdoZXJlOiBzdHJpbmc7XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAncGFyZW50LWNtcCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2hvd1ZpZXcgPSAhc2hvd1ZpZXdcIj5Ub2dnbGUgdmlldyBjaGlsZDwvYnV0dG9uPlxuICogICAgIDxjaGlsZC1jbXAgKm5nSWY9XCJzaG93Vmlld1wiIHdoZXJlPVwidmlld1wiPjwvY2hpbGQtY21wPmAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtOZ0lmLCBDaGlsZENvbXBvbmVudF1cbiAqIH0pXG4gKiBjbGFzcyBQYXJlbnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkIHtcbiAqICAgQFZpZXdDaGlsZChDaGlsZENvbXBvbmVudCkgdmlld0NoaWxkOiBDaGlsZENvbXBvbmVudDtcbiAqICAgc2hvd1ZpZXcgPSB0cnVlO1xuICpcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgLy8gdmlld0NoaWxkIGlzIG5vdCBpbml0aWFsaXplZCB5ZXRcbiAqICAgICBjb25zb2xlLmxvZyh0aGlzLmdldE1lc3NhZ2UodGhpcy52aWV3Q2hpbGQpKTtcbiAqICAgfVxuICpcbiAqICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICogICAgIC8vIHZpZXdDaGlsZCBpcyB1cGRhdGVkIGFmdGVyIHRoZSB2aWV3IGhhcyBiZWVuIGNoZWNrZWRcbiAqICAgICBjb25zb2xlLmxvZygnQWZ0ZXJWaWV3Q2hlY2tlZDogJyArIHRoaXMuZ2V0TWVzc2FnZSh0aGlzLnZpZXdDaGlsZCkpO1xuICogICB9XG4gKlxuICogICBwcml2YXRlIGdldE1lc3NhZ2UoY21wOiBDaGlsZENvbXBvbmVudCk6IHN0cmluZyB7XG4gKiAgICAgcmV0dXJuIGNtcCA/IGNtcC53aGVyZSArICcgY2hpbGQnIDogJ25vIGNoaWxkJztcbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgIHRlbXBsYXRlOiBgPHBhcmVudC1jbXA+PC9wYXJlbnQtY21wPmAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtQYXJlbnRDb21wb25lbnRdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcCB7XG4gKiB9XG4gKlxuICogYm9vdHN0cmFwKEFwcCkuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZnRlclZpZXdDaGVja2VkIHsgbmdBZnRlclZpZXdDaGVja2VkKCk7IH1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar cpl = require('./directive_metadata');\r\nvar md = require('angular2/src/core/metadata/directives');\r\nvar directive_resolver_1 = require('angular2/src/core/linker/directive_resolver');\r\nvar pipe_resolver_1 = require('angular2/src/core/linker/pipe_resolver');\r\nvar view_resolver_1 = require('angular2/src/core/linker/view_resolver');\r\nvar directive_lifecycle_reflector_1 = require('angular2/src/core/linker/directive_lifecycle_reflector');\r\nvar interfaces_1 = require('angular2/src/core/linker/interfaces');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nvar di_2 = require('angular2/src/core/di');\r\nvar platform_directives_and_pipes_1 = require('angular2/src/core/platform_directives_and_pipes');\r\nvar util_1 = require('./util');\r\nvar url_resolver_1 = require('angular2/src/compiler/url_resolver');\r\nvar RuntimeMetadataResolver = (function () {\r\n function RuntimeMetadataResolver(_directiveResolver, _pipeResolver, _viewResolver, _platformDirectives, _platformPipes) {\r\n this._directiveResolver = _directiveResolver;\r\n this._pipeResolver = _pipeResolver;\r\n this._viewResolver = _viewResolver;\r\n this._platformDirectives = _platformDirectives;\r\n this._platformPipes = _platformPipes;\r\n this._directiveCache = new Map();\r\n this._pipeCache = new Map();\r\n }\r\n RuntimeMetadataResolver.prototype.getDirectiveMetadata = function (directiveType) {\r\n var meta = this._directiveCache.get(directiveType);\r\n if (lang_1.isBlank(meta)) {\r\n var dirMeta = this._directiveResolver.resolve(directiveType);\r\n var moduleUrl = null;\r\n var templateMeta = null;\r\n var changeDetectionStrategy = null;\r\n if (dirMeta instanceof md.ComponentMetadata) {\r\n var cmpMeta = dirMeta;\r\n moduleUrl = calcModuleUrl(directiveType, cmpMeta);\r\n var viewMeta = this._viewResolver.resolve(directiveType);\r\n templateMeta = new cpl.CompileTemplateMetadata({\r\n encapsulation: viewMeta.encapsulation,\r\n template: viewMeta.template,\r\n templateUrl: viewMeta.templateUrl,\r\n styles: viewMeta.styles,\r\n styleUrls: viewMeta.styleUrls\r\n });\r\n changeDetectionStrategy = cmpMeta.changeDetection;\r\n }\r\n meta = cpl.CompileDirectiveMetadata.create({\r\n selector: dirMeta.selector,\r\n exportAs: dirMeta.exportAs,\r\n isComponent: lang_1.isPresent(templateMeta),\r\n dynamicLoadable: true,\r\n type: new cpl.CompileTypeMetadata({ name: lang_1.stringify(directiveType), moduleUrl: moduleUrl, runtime: directiveType }),\r\n template: templateMeta,\r\n changeDetection: changeDetectionStrategy,\r\n inputs: dirMeta.inputs,\r\n outputs: dirMeta.outputs,\r\n host: dirMeta.host,\r\n lifecycleHooks: interfaces_1.LIFECYCLE_HOOKS_VALUES.filter(function (hook) { return directive_lifecycle_reflector_1.hasLifecycleHook(hook, directiveType); })\r\n });\r\n this._directiveCache.set(directiveType, meta);\r\n }\r\n return meta;\r\n };\r\n RuntimeMetadataResolver.prototype.getPipeMetadata = function (pipeType) {\r\n var meta = this._pipeCache.get(pipeType);\r\n if (lang_1.isBlank(meta)) {\r\n var pipeMeta = this._pipeResolver.resolve(pipeType);\r\n var moduleUrl = reflection_1.reflector.importUri(pipeType);\r\n meta = new cpl.CompilePipeMetadata({\r\n type: new cpl.CompileTypeMetadata({ name: lang_1.stringify(pipeType), moduleUrl: moduleUrl, runtime: pipeType }),\r\n name: pipeMeta.name,\r\n pure: pipeMeta.pure\r\n });\r\n this._pipeCache.set(pipeType, meta);\r\n }\r\n return meta;\r\n };\r\n RuntimeMetadataResolver.prototype.getViewDirectivesMetadata = function (component) {\r\n var _this = this;\r\n var view = this._viewResolver.resolve(component);\r\n var directives = flattenDirectives(view, this._platformDirectives);\r\n for (var i = 0; i < directives.length; i++) {\r\n if (!isValidType(directives[i])) {\r\n throw new exceptions_1.BaseException(\"Unexpected directive value '\" + lang_1.stringify(directives[i]) + \"' on the View of component '\" + lang_1.stringify(component) + \"'\");\r\n }\r\n }\r\n return directives.map(function (type) { return _this.getDirectiveMetadata(type); });\r\n };\r\n RuntimeMetadataResolver.prototype.getViewPipesMetadata = function (component) {\r\n var _this = this;\r\n var view = this._viewResolver.resolve(component);\r\n var pipes = flattenPipes(view, this._platformPipes);\r\n for (var i = 0; i < pipes.length; i++) {\r\n if (!isValidType(pipes[i])) {\r\n throw new exceptions_1.BaseException(\"Unexpected piped value '\" + lang_1.stringify(pipes[i]) + \"' on the View of component '\" + lang_1.stringify(component) + \"'\");\r\n }\r\n }\r\n return pipes.map(function (type) { return _this.getPipeMetadata(type); });\r\n };\r\n RuntimeMetadataResolver = __decorate([\r\n di_2.Injectable(),\r\n __param(3, di_2.Optional()),\r\n __param(3, di_2.Inject(platform_directives_and_pipes_1.PLATFORM_DIRECTIVES)),\r\n __param(4, di_2.Optional()),\r\n __param(4, di_2.Inject(platform_directives_and_pipes_1.PLATFORM_PIPES)), \r\n __metadata('design:paramtypes', [directive_resolver_1.DirectiveResolver, pipe_resolver_1.PipeResolver, view_resolver_1.ViewResolver, Array, Array])\r\n ], RuntimeMetadataResolver);\r\n return RuntimeMetadataResolver;\r\n})();\r\nexports.RuntimeMetadataResolver = RuntimeMetadataResolver;\r\nfunction flattenDirectives(view, platformDirectives) {\r\n var directives = [];\r\n if (lang_1.isPresent(platformDirectives)) {\r\n flattenArray(platformDirectives, directives);\r\n }\r\n if (lang_1.isPresent(view.directives)) {\r\n flattenArray(view.directives, directives);\r\n }\r\n return directives;\r\n}\r\nfunction flattenPipes(view, platformPipes) {\r\n var pipes = [];\r\n if (lang_1.isPresent(platformPipes)) {\r\n flattenArray(platformPipes, pipes);\r\n }\r\n if (lang_1.isPresent(view.pipes)) {\r\n flattenArray(view.pipes, pipes);\r\n }\r\n return pipes;\r\n}\r\nfunction flattenArray(tree, out) {\r\n for (var i = 0; i < tree.length; i++) {\r\n var item = di_1.resolveForwardRef(tree[i]);\r\n if (lang_1.isArray(item)) {\r\n flattenArray(item, out);\r\n }\r\n else {\r\n out.push(item);\r\n }\r\n }\r\n}\r\nfunction isValidType(value) {\r\n return lang_1.isPresent(value) && (value instanceof lang_1.Type);\r\n}\r\nfunction calcModuleUrl(type, cmpMetadata) {\r\n var moduleId = cmpMetadata.moduleId;\r\n if (lang_1.isPresent(moduleId)) {\r\n var scheme = url_resolver_1.getUrlScheme(moduleId);\r\n return lang_1.isPresent(scheme) && scheme.length > 0 ? moduleId :\r\n \"package:\" + moduleId + util_1.MODULE_SUFFIX;\r\n }\r\n else {\r\n return reflection_1.reflector.importUri(type);\r\n }\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZV9tZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21waWxlci9ydW50aW1lX21ldGFkYXRhLnRzIl0sIm5hbWVzIjpbIlJ1bnRpbWVNZXRhZGF0YVJlc29sdmVyIiwiUnVudGltZU1ldGFkYXRhUmVzb2x2ZXIuY29uc3RydWN0b3IiLCJSdW50aW1lTWV0YWRhdGFSZXNvbHZlci5nZXREaXJlY3RpdmVNZXRhZGF0YSIsIlJ1bnRpbWVNZXRhZGF0YVJlc29sdmVyLmdldFBpcGVNZXRhZGF0YSIsIlJ1bnRpbWVNZXRhZGF0YVJlc29sdmVyLmdldFZpZXdEaXJlY3RpdmVzTWV0YWRhdGEiLCJSdW50aW1lTWV0YWRhdGFSZXNvbHZlci5nZXRWaWV3UGlwZXNNZXRhZGF0YSIsImZsYXR0ZW5EaXJlY3RpdmVzIiwiZmxhdHRlblBpcGVzIiwiZmxhdHRlbkFycmF5IiwiaXNWYWxpZFR5cGUiLCJjYWxjTW9kdWxlVXJsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxtQkFBZ0Msc0JBQXNCLENBQUMsQ0FBQTtBQUN2RCxxQkFPTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELElBQVksR0FBRyxXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFDNUMsSUFBWSxFQUFFLFdBQU0sdUNBQXVDLENBQUMsQ0FBQTtBQUM1RCxtQ0FBZ0MsNkNBQTZDLENBQUMsQ0FBQTtBQUM5RSw4QkFBMkIsd0NBQXdDLENBQUMsQ0FBQTtBQUNwRSw4QkFBMkIsd0NBQXdDLENBQUMsQ0FBQTtBQUVwRSw4Q0FBK0Isd0RBQXdELENBQUMsQ0FBQTtBQUN4RiwyQkFBcUQscUNBQXFDLENBQUMsQ0FBQTtBQUMzRiwyQkFBd0IseUNBQXlDLENBQUMsQ0FBQTtBQUNsRSxtQkFBMkMsc0JBQXNCLENBQUMsQ0FBQTtBQUNsRSw4Q0FBa0QsaURBQWlELENBQUMsQ0FBQTtBQUNwRyxxQkFBNEIsUUFB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QUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNOQSxNQUFNQSxDQUFDQSxzQkFBU0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7SUFDbkNBLENBQUNBO0FBQ0hBLENBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtyZXNvbHZlRm9yd2FyZFJlZn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtcbiAgVHlwZSxcbiAgaXNCbGFuayxcbiAgaXNQcmVzZW50LFxuICBpc0FycmF5LFxuICBzdHJpbmdpZnksXG4gIFJlZ0V4cFdyYXBwZXJcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCAqIGFzIGNwbCBmcm9tICcuL2RpcmVjdGl2ZV9tZXRhZGF0YSc7XG5pbXBvcnQgKiBhcyBtZCBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9tZXRhZGF0YS9kaXJlY3RpdmVzJztcbmltcG9ydCB7RGlyZWN0aXZlUmVzb2x2ZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9kaXJlY3RpdmVfcmVzb2x2ZXInO1xuaW1wb3J0IHtQaXBlUmVzb2x2ZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9waXBlX3Jlc29sdmVyJztcbmltcG9ydCB7Vmlld1Jlc29sdmVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvdmlld19yZXNvbHZlcic7XG5pbXBvcnQge1ZpZXdNZXRhZGF0YX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEvdmlldyc7XG5pbXBvcnQge2hhc0xpZmVjeWNsZUhvb2t9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9kaXJlY3RpdmVfbGlmZWN5Y2xlX3JlZmxlY3Rvcic7XG5pbXBvcnQge0xpZmVjeWNsZUhvb2tzLCBMSUZFQ1lDTEVfSE9PS1NfVkFMVUVTfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQge3JlZmxlY3Rvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVmbGVjdGlvbi9yZWZsZWN0aW9uJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbH0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtQTEFURk9STV9ESVJFQ1RJVkVTLCBQTEFURk9STV9QSVBFU30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcGxhdGZvcm1fZGlyZWN0aXZlc19hbmRfcGlwZXMnO1xuaW1wb3J0IHtNT0RVTEVfU1VGRklYfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHtnZXRVcmxTY2hlbWV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci91cmxfcmVzb2x2ZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUnVudGltZU1ldGFkYXRhUmVzb2x2ZXIge1xuICBwcml2YXRlIF9kaXJlY3RpdmVDYWNoZSA9IG5ldyBNYXA8VHlwZSwgY3BsLkNvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YT4oKTtcbiAgcHJpdmF0ZSBfcGlwZUNhY2hlID0gbmV3IE1hcDxUeXBlLCBjcGwuQ29tcGlsZVBpcGVNZXRhZGF0YT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kaXJlY3RpdmVSZXNvbHZlcjogRGlyZWN0aXZlUmVzb2x2ZXIsIHByaXZhdGUgX3BpcGVSZXNvbHZlcjogUGlwZVJlc29sdmVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF92aWV3UmVzb2x2ZXI6IFZpZXdSZXNvbHZlcixcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChQTEFURk9STV9ESVJFQ1RJVkVTKSBwcml2YXRlIF9wbGF0Zm9ybURpcmVjdGl2ZXM6IFR5cGVbXSxcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChQTEFURk9STV9QSVBFUykgcHJpdmF0ZSBfcGxhdGZvcm1QaXBlczogVHlwZVtdKSB7fVxuXG4gIGdldERpcmVjdGl2ZU1ldGFkYXRhKGRpcmVjdGl2ZVR5cGU6IFR5cGUpOiBjcGwuQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhIHtcbiAgICB2YXIgbWV0YSA9IHRoaXMuX2RpcmVjdGl2ZUNhY2hlLmdldChkaXJlY3RpdmVUeXBlKTtcbiAgICBpZiAoaXNCbGFuayhtZXRhKSkge1xuICAgICAgdmFyIGRpck1ldGEgPSB0aGlzLl9kaXJlY3RpdmVSZXNvbHZlci5yZXNvbHZlKGRpcmVjdGl2ZVR5cGUpO1xuICAgICAgdmFyIG1vZHVsZVVybCA9IG51bGw7XG4gICAgICB2YXIgdGVtcGxhdGVNZXRhID0gbnVsbDtcbiAgICAgIHZhciBjaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSA9IG51bGw7XG5cbiAgICAgIGlmIChkaXJNZXRhIGluc3RhbmNlb2YgbWQuQ29tcG9uZW50TWV0YWRhdGEpIHtcbiAgICAgICAgdmFyIGNtcE1ldGEgPSA8bWQuQ29tcG9uZW50TWV0YWRhdGE+ZGlyTWV0YTtcbiAgICAgICAgbW9kdWxlVXJsID0gY2FsY01vZHVsZVVybChkaXJlY3RpdmVUeXBlLCBjbXBNZXRhKTtcbiAgICAgICAgdmFyIHZpZXdNZXRhID0gdGhpcy5fdmlld1Jlc29sdmVyLnJlc29sdmUoZGlyZWN0aXZlVHlwZSk7XG4gICAgICAgIHRlbXBsYXRlTWV0YSA9IG5ldyBjcGwuQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGEoe1xuICAgICAgICAgIGVuY2Fwc3VsYXRpb246IHZpZXdNZXRhLmVuY2Fwc3VsYXRpb24sXG4gICAgICAgICAgdGVtcGxhdGU6IHZpZXdNZXRhLnRlbXBsYXRlLFxuICAgICAgICAgIHRlbXBsYXRlVXJsOiB2aWV3TWV0YS50ZW1wbGF0ZVVybCxcbiAgICAgICAgICBzdHlsZXM6IHZpZXdNZXRhLnN0eWxlcyxcbiAgICAgICAgICBzdHlsZVVybHM6IHZpZXdNZXRhLnN0eWxlVXJsc1xuICAgICAgICB9KTtcbiAgICAgICAgY2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgPSBjbXBNZXRhLmNoYW5nZURldGVjdGlvbjtcbiAgICAgIH1cbiAgICAgIG1ldGEgPSBjcGwuQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLmNyZWF0ZSh7XG4gICAgICAgIHNlbGVjdG9yOiBkaXJNZXRhLnNlbGVjdG9yLFxuICAgICAgICBleHBvcnRBczogZGlyTWV0YS5leHBvcnRBcyxcbiAgICAgICAgaXNDb21wb25lbnQ6IGlzUHJlc2VudCh0ZW1wbGF0ZU1ldGEpLFxuICAgICAgICBkeW5hbWljTG9hZGFibGU6IHRydWUsXG4gICAgICAgIHR5cGU6IG5ldyBjcGwuQ29tcGlsZVR5cGVNZXRhZGF0YShcbiAgICAgICAgICAgIHtuYW1lOiBzdHJpbmdpZnkoZGlyZWN0aXZlVHlwZSksIG1vZHVsZVVybDogbW9kdWxlVXJsLCBydW50aW1lOiBkaXJlY3RpdmVUeXBlfSksXG4gICAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZU1ldGEsXG4gICAgICAgIGNoYW5nZURldGVjdGlvbjogY2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgICAgIGlucHV0czogZGlyTWV0YS5pbnB1dHMsXG4gICAgICAgIG91dHB1dHM6IGRpck1ldGEub3V0cHV0cyxcbiAgICAgICAgaG9zdDogZGlyTWV0YS5ob3N0LFxuICAgICAgICBsaWZlY3ljbGVIb29rczogTElGRUNZQ0xFX0hPT0tTX1ZBTFVFUy5maWx0ZXIoaG9vayA9PiBoYXNMaWZlY3ljbGVIb29rKGhvb2ssIGRpcmVjdGl2ZVR5cGUpKVxuICAgICAgfSk7XG4gICAgICB0aGlzLl9kaXJlY3RpdmVDYWNoZS5zZXQoZGlyZWN0aXZlVHlwZSwgbWV0YSk7XG4gICAgfVxuICAgIHJldHVybiBtZXRhO1xuICB9XG5cbiAgZ2V0UGlwZU1ldGFkYXRhKHBpcGVUeXBlOiBUeXBlKTogY3BsLkNvbXBpbGVQaXBlTWV0YWRhdGEge1xuICAgIHZhciBtZXRhID0gdGhpcy5fcGlwZUNhY2hlLmdldChwaXBlVHlwZSk7XG4gICAgaWYgKGlzQmxhbmsobWV0YSkpIHtcbiAgICAgIHZhciBwaXBlTWV0YSA9IHRoaXMuX3BpcGVSZXNvbHZlci5yZXNvbHZlKHBpcGVUeXBlKTtcbiAgICAgIHZhciBtb2R1bGVVcmwgPSByZWZsZWN0b3IuaW1wb3J0VXJpKHBpcGVUeXBlKTtcbiAgICAgIG1ldGEgPSBuZXcgY3BsLkNvbXBpbGVQaXBlTWV0YWRhdGEoe1xuICAgICAgICB0eXBlOiBuZXcgY3BsLkNvbXBpbGVUeXBlTWV0YWRhdGEoXG4gICAgICAgICAgICB7bmFtZTogc3RyaW5naWZ5KHBpcGVUeXBlKSwgbW9kdWxlVXJsOiBtb2R1bGVVcmwsIHJ1bnRpbWU6IHBpcGVUeXBlfSksXG4gICAgICAgIG5hbWU6IHBpcGVNZXRhLm5hbWUsXG4gICAgICAgIHB1cmU6IHBpcGVNZXRhLnB1cmVcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fcGlwZUNhY2hlLnNldChwaXBlVHlwZSwgbWV0YSk7XG4gICAgfVxuICAgIHJldHVybiBtZXRhO1xuICB9XG5cbiAgZ2V0Vmlld0RpcmVjdGl2ZXNNZXRhZGF0YShjb21wb25lbnQ6IFR5cGUpOiBjcGwuQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhW10ge1xuICAgIHZhciB2aWV3ID0gdGhpcy5fdmlld1Jlc29sdmVyLnJlc29sdmUoY29tcG9uZW50KTtcbiAgICB2YXIgZGlyZWN0aXZlcyA9IGZsYXR0ZW5EaXJlY3RpdmVzKHZpZXcsIHRoaXMuX3BsYXRmb3JtRGlyZWN0aXZlcyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJlY3RpdmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIWlzVmFsaWRUeXBlKGRpcmVjdGl2ZXNbaV0pKSB7XG4gICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFxuICAgICAgICAgICAgYFVuZXhwZWN0ZWQgZGlyZWN0aXZlIHZhbHVlICcke3N0cmluZ2lmeShkaXJlY3RpdmVzW2ldKX0nIG9uIHRoZSBWaWV3IG9mIGNvbXBvbmVudCAnJHtzdHJpbmdpZnkoY29tcG9uZW50KX0nYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpcmVjdGl2ZXMubWFwKHR5cGUgPT4gdGhpcy5nZXREaXJlY3RpdmVNZXRhZGF0YSh0eXBlKSk7XG4gIH1cblxuICBnZXRWaWV3UGlwZXNNZXRhZGF0YShjb21wb25lbnQ6IFR5cGUpOiBjcGwuQ29tcGlsZVBpcGVNZXRhZGF0YVtdIHtcbiAgICB2YXIgdmlldyA9IHRoaXMuX3ZpZXdSZXNvbHZlci5yZXNvbHZlKGNvbXBvbmVudCk7XG4gICAgdmFyIHBpcGVzID0gZmxhdHRlblBpcGVzKHZpZXcsIHRoaXMuX3BsYXRmb3JtUGlwZXMpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghaXNWYWxpZFR5cGUocGlwZXNbaV0pKSB7XG4gICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFxuICAgICAgICAgICAgYFVuZXhwZWN0ZWQgcGlwZWQgdmFsdWUgJyR7c3RyaW5naWZ5KHBpcGVzW2ldKX0nIG9uIHRoZSBWaWV3IG9mIGNvbXBvbmVudCAnJHtzdHJpbmdpZnkoY29tcG9uZW50KX0nYCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwaXBlcy5tYXAodHlwZSA9PiB0aGlzLmdldFBpcGVNZXRhZGF0YSh0eXBlKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxhdHRlbkRpcmVjdGl2ZXModmlldzogVmlld01ldGFkYXRhLCBwbGF0Zm9ybURpcmVjdGl2ZXM6IGFueVtdKTogVHlwZVtdIHtcbiAgbGV0IGRpcmVjdGl2ZXMgPSBbXTtcbiAgaWYgKGlzUHJlc2VudChwbGF0Zm9ybURpcmVjdGl2ZXMpKSB7XG4gICAgZmxhdHRlbkFycmF5KHBsYXRmb3JtRGlyZWN0aXZlcywgZGlyZWN0aXZlcyk7XG4gIH1cbiAgaWYgKGlzUHJlc2VudCh2aWV3LmRpcmVjdGl2ZXMpKSB7XG4gICAgZmxhdHRlbkFycmF5KHZpZXcuZGlyZWN0aXZlcywgZGlyZWN0aXZlcyk7XG4gIH1cbiAgcmV0dXJuIGRpcmVjdGl2ZXM7XG59XG5cbmZ1bmN0aW9uIGZsYXR0ZW5QaXBlcyh2aWV3OiBWaWV3TWV0YWRhdGEsIHBsYXRmb3JtUGlwZXM6IGFueVtdKTogVHlwZVtdIHtcbiAgbGV0IHBpcGVzID0gW107XG4gIGlmIChpc1ByZXNlbnQocGxhdGZvcm1QaXBlcykpIHtcbiAgICBmbGF0dGVuQXJyYXkocGxhdGZvcm1QaXBlcywgcGlwZXMpO1xuICB9XG4gIGlmIChpc1ByZXNlbnQodmlldy5waXBlcykpIHtcbiAgICBmbGF0dGVuQXJyYXkodmlldy5waXBlcywgcGlwZXMpO1xuICB9XG4gIHJldHVybiBwaXBlcztcbn1cblxuZnVuY3Rpb24gZmxhdHRlbkFycmF5KHRyZWU6IGFueVtdLCBvdXQ6IEFycmF5PFR5cGUgfCBhbnlbXT4pOiB2b2lkIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSByZXNvbHZlRm9yd2FyZFJlZih0cmVlW2ldKTtcbiAgICBpZiAoaXNBcnJheShpdGVtKSkge1xuICAgICAgZmxhdHRlbkFycmF5KGl0ZW0sIG91dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1ZhbGlkVHlwZSh2YWx1ZTogVHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNQcmVzZW50KHZhbHVlKSAmJiAodmFsdWUgaW5zdGFuY2VvZiBUeXBlKTtcbn1cblxuZnVuY3Rpb24gY2FsY01vZHVsZVVybCh0eXBlOiBUeXBlLCBjbXBNZXRhZGF0YTogbWQuQ29tcG9uZW50TWV0YWRhdGEpOiBzdHJpbmcge1xuICB2YXIgbW9kdWxlSWQgPSBjbXBNZXRhZGF0YS5tb2R1bGVJZDtcbiAgaWYgKGlzUHJlc2VudChtb2R1bGVJZCkpIHtcbiAgICB2YXIgc2NoZW1lID0gZ2V0VXJsU2NoZW1lKG1vZHVsZUlkKTtcbiAgICByZXR1cm4gaXNQcmVzZW50KHNjaGVtZSkgJiYgc2NoZW1lLmxlbmd0aCA+IDAgPyBtb2R1bGVJZCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHBhY2thZ2U6JHttb2R1bGVJZH0ke01PRFVMRV9TVUZGSVh9YDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVmbGVjdG9yLmltcG9ydFVyaSh0eXBlKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar CAMEL_CASE_REGEXP = /([A-Z])/g;\r\nvar DASH_CASE_REGEXP = /-([a-z])/g;\r\nvar SINGLE_QUOTE_ESCAPE_STRING_RE = /'|\\\\|\\n|\\r|\\$/g;\r\nvar DOUBLE_QUOTE_ESCAPE_STRING_RE = /\"|\\\\|\\n|\\r|\\$/g;\r\nexports.MODULE_SUFFIX = lang_1.IS_DART ? '.dart' : '.js';\r\nexports.CONST_VAR = lang_1.IS_DART ? 'const' : 'var';\r\nfunction camelCaseToDashCase(input) {\r\n return lang_1.StringWrapper.replaceAllMapped(input, CAMEL_CASE_REGEXP, function (m) { return '-' + m[1].toLowerCase(); });\r\n}\r\nexports.camelCaseToDashCase = camelCaseToDashCase;\r\nfunction dashCaseToCamelCase(input) {\r\n return lang_1.StringWrapper.replaceAllMapped(input, DASH_CASE_REGEXP, function (m) { return m[1].toUpperCase(); });\r\n}\r\nexports.dashCaseToCamelCase = dashCaseToCamelCase;\r\nfunction escapeSingleQuoteString(input) {\r\n if (lang_1.isBlank(input)) {\r\n return null;\r\n }\r\n return \"'\" + escapeString(input, SINGLE_QUOTE_ESCAPE_STRING_RE) + \"'\";\r\n}\r\nexports.escapeSingleQuoteString = escapeSingleQuoteString;\r\nfunction escapeDoubleQuoteString(input) {\r\n if (lang_1.isBlank(input)) {\r\n return null;\r\n }\r\n return \"\\\"\" + escapeString(input, DOUBLE_QUOTE_ESCAPE_STRING_RE) + \"\\\"\";\r\n}\r\nexports.escapeDoubleQuoteString = escapeDoubleQuoteString;\r\nfunction escapeString(input, re) {\r\n return lang_1.StringWrapper.replaceAllMapped(input, re, function (match) {\r\n if (match[0] == '$') {\r\n return lang_1.IS_DART ? '\\\\$' : '$';\r\n }\r\n else if (match[0] == '\\n') {\r\n return '\\\\n';\r\n }\r\n else if (match[0] == '\\r') {\r\n return '\\\\r';\r\n }\r\n else {\r\n return \"\\\\\" + match[0];\r\n }\r\n });\r\n}\r\nfunction codeGenExportVariable(name) {\r\n if (lang_1.IS_DART) {\r\n return \"const \" + name + \" = \";\r\n }\r\n else {\r\n return \"var \" + name + \" = exports['\" + name + \"'] = \";\r\n }\r\n}\r\nexports.codeGenExportVariable = codeGenExportVariable;\r\nfunction codeGenConstConstructorCall(name) {\r\n if (lang_1.IS_DART) {\r\n return \"const \" + name;\r\n }\r\n else {\r\n return \"new \" + name;\r\n }\r\n}\r\nexports.codeGenConstConstructorCall = codeGenConstConstructorCall;\r\nfunction codeGenValueFn(params, value, fnName) {\r\n if (fnName === void 0) { fnName = ''; }\r\n if (lang_1.IS_DART) {\r\n return codeGenFnHeader(params, fnName) + \" => \" + value;\r\n }\r\n else {\r\n return codeGenFnHeader(params, fnName) + \" { return \" + value + \"; }\";\r\n }\r\n}\r\nexports.codeGenValueFn = codeGenValueFn;\r\nfunction codeGenFnHeader(params, fnName) {\r\n if (fnName === void 0) { fnName = ''; }\r\n if (lang_1.IS_DART) {\r\n return fnName + \"(\" + params.join(',') + \")\";\r\n }\r\n else {\r\n return \"function \" + fnName + \"(\" + params.join(',') + \")\";\r\n }\r\n}\r\nexports.codeGenFnHeader = codeGenFnHeader;\r\nfunction codeGenToString(expr) {\r\n if (lang_1.IS_DART) {\r\n return \"'${\" + expr + \"}'\";\r\n }\r\n else {\r\n // JS automatically converts to string...\r\n return expr;\r\n }\r\n}\r\nexports.codeGenToString = codeGenToString;\r\nfunction splitAtColon(input, defaultValues) {\r\n var parts = lang_1.StringWrapper.split(input.trim(), /\\s*:\\s*/g);\r\n if (parts.length > 1) {\r\n return parts;\r\n }\r\n else {\r\n return defaultValues;\r\n }\r\n}\r\nexports.splitAtColon = splitAtColon;\r\nvar Statement = (function () {\r\n function Statement(statement) {\r\n this.statement = statement;\r\n }\r\n return Statement;\r\n})();\r\nexports.Statement = Statement;\r\nvar Expression = (function () {\r\n function Expression(expression, isArray) {\r\n if (isArray === void 0) { isArray = false; }\r\n this.expression = expression;\r\n this.isArray = isArray;\r\n }\r\n return Expression;\r\n})();\r\nexports.Expression = Expression;\r\nfunction escapeValue(value) {\r\n if (value instanceof Expression) {\r\n return value.expression;\r\n }\r\n else if (lang_1.isString(value)) {\r\n return escapeSingleQuoteString(value);\r\n }\r\n else if (lang_1.isBlank(value)) {\r\n return 'null';\r\n }\r\n else {\r\n return \"\" + value;\r\n }\r\n}\r\nexports.escapeValue = escapeValue;\r\nfunction codeGenArray(data) {\r\n return \"[\" + data.map(escapeValue).join(',') + \"]\";\r\n}\r\nexports.codeGenArray = codeGenArray;\r\nfunction codeGenFlatArray(values) {\r\n var result = '([';\r\n var isFirstArrayEntry = true;\r\n var concatFn = lang_1.IS_DART ? '.addAll' : 'concat';\r\n for (var i = 0; i < values.length; i++) {\r\n var value = values[i];\r\n if (value instanceof Expression && value.isArray) {\r\n result += \"]).\" + concatFn + \"(\" + value.expression + \").\" + concatFn + \"([\";\r\n isFirstArrayEntry = true;\r\n }\r\n else {\r\n if (!isFirstArrayEntry) {\r\n result += ',';\r\n }\r\n isFirstArrayEntry = false;\r\n result += escapeValue(value);\r\n }\r\n }\r\n result += '])';\r\n return result;\r\n}\r\nexports.codeGenFlatArray = codeGenFlatArray;\r\nfunction codeGenStringMap(keyValueArray) {\r\n return \"{\" + keyValueArray.map(codeGenKeyValue).join(',') + \"}\";\r\n}\r\nexports.codeGenStringMap = codeGenStringMap;\r\nfunction codeGenKeyValue(keyValue) {\r\n return escapeValue(keyValue[0]) + \":\" + escapeValue(keyValue[1]);\r\n}\r\nfunction addAll(source, target) {\r\n for (var i = 0; i < source.length; i++) {\r\n target.push(source[i]);\r\n }\r\n}\r\nexports.addAll = addAll;\r\nfunction flattenArray(source, target) {\r\n if (lang_1.isPresent(source)) {\r\n for (var i = 0; i < source.length; i++) {\r\n var item = source[i];\r\n if (lang_1.isArray(item)) {\r\n flattenArray(item, target);\r\n }\r\n else {\r\n target.push(item);\r\n }\r\n }\r\n }\r\n return target;\r\n}\r\nexports.flattenArray = flattenArray;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21waWxlci91dGlsLnRzIl0sIm5hbWVzIjpbImNhbWVsQ2FzZVRvRGFzaENhc2UiLCJkYXNoQ2FzZVRvQ2FtZWxDYXNlIiwiZXNjYXBlU2luZ2xlUXVvdGVTdHJpbmciLCJlc2NhcGVEb3VibGVRdW90ZVN0cmluZyIsImVzY2FwZVN0cmluZyIsImNvZGVHZW5FeHBvcnRWYXJpYWJsZSIsImNvZGVHZW5Db25zdENvbnN0cnVjdG9yQ2FsbCIsImNvZGVHZW5WYWx1ZUZuIiwiY29kZUdlbkZuSGVhZGVyIiwiY29kZUdlblRvU3RyaW5nIiwic3BsaXRBdENvbG9uIiwiU3RhdGVtZW50IiwiU3RhdGVtZW50LmNvbnN0cnVjdG9yIiwiRXhwcmVzc2lvbiIsIkV4cHJlc3Npb24uY29uc3RydWN0b3IiLCJlc2NhcGVWYWx1ZSIsImNvZGVHZW5BcnJheSIsImNvZGVHZW5GbGF0QXJyYXkiLCJjb2RlR2VuU3RyaW5nTWFwIiwiY29kZUdlbktleVZhbHVlIiwiYWRkQWxsIiwiZmxhdHRlbkFycmF5Il0sIm1hcHBpbmdzIjoiQUFBQSxxQkFPTywwQkFBMEIsQ0FBQyxDQUFBO0FBRWxDLElBQUksaUJBQWlCLEdBQUcsVUFBVSxDQUFDO0FBQ25DLElBQUksZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO0FBQ25DLElBQUksNkJBQTZCLEdBQUcsZ0JBQWdCLENBQUM7QUFDckQsSUFBSSw2QkFBNkIsR0FBRyxnQkFBZ0IsQ0FBQztBQUUxQyxxQkFBYSxHQUFHLGNBQU8sR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBRTFDLGlCQUFTLEdBQUcsY0FBTyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFFakQsNkJBQW9DLEtBQWE7SUFDL0NBLE1BQU1BLENBQUNBLG9CQUFhQSxDQUFDQSxnQkFBZ0JBLENBQUNBLEtBQUtBLEVBQUVBLGlCQUFpQkEsRUFDeEJBLFVBQUNBLENBQUNBLElBQU9BLE1BQU1B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aXNCbGFuayxcbiAgaXNQcmVzZW50LFxuICBpc1N0cmluZyxcbiAgaXNBcnJheVxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG52YXIgQ0FNRUxfQ0FTRV9SRUdFWFAgPSAvKFtBLVpdKS9nO1xudmFyIERBU0hfQ0FTRV9SRUdFWFAgPSAvLShbYS16XSkvZztcbnZhciBTSU5HTEVfUVVPVEVfRVNDQVBFX1NUUklOR19SRSA9IC8nfFxcXFx8XFxufFxccnxcXCQvZztcbnZhciBET1VCTEVfUVVPVEVfRVNDQVBFX1NUUklOR19SRSA9IC9cInxcXFxcfFxcbnxcXHJ8XFwkL2c7XG5cbmV4cG9ydCB2YXIgTU9EVUxFX1NVRkZJWCA9IElTX0RBUlQgPyAnLmRhcnQnIDogJy5qcyc7XG5cbmV4cG9ydCB2YXIgQ09OU1RfVkFSID0gSVNfREFSVCA/ICdjb25zdCcgOiAndmFyJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbWVsQ2FzZVRvRGFzaENhc2UoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGxNYXBwZWQoaW5wdXQsIENBTUVMX0NBU0VfUkVHRVhQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtKSA9PiB7IHJldHVybiAnLScgKyBtWzFdLnRvTG93ZXJDYXNlKCk7IH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGFzaENhc2VUb0NhbWVsQ2FzZShpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbE1hcHBlZChpbnB1dCwgREFTSF9DQVNFX1JFR0VYUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSkgPT4geyByZXR1cm4gbVsxXS50b1VwcGVyQ2FzZSgpOyB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZVNpbmdsZVF1b3RlU3RyaW5nKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoaXNCbGFuayhpbnB1dCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gYCcke2VzY2FwZVN0cmluZyhpbnB1dCwgU0lOR0xFX1FVT1RFX0VTQ0FQRV9TVFJJTkdfUkUpfSdgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRG91YmxlUXVvdGVTdHJpbmcoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChpc0JsYW5rKGlucHV0KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBgXCIke2VzY2FwZVN0cmluZyhpbnB1dCwgRE9VQkxFX1FVT1RFX0VTQ0FQRV9TVFJJTkdfUkUpfVwiYDtcbn1cblxuZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGlucHV0OiBzdHJpbmcsIHJlOiBSZWdFeHApOiBzdHJpbmcge1xuICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsTWFwcGVkKGlucHV0LCByZSwgKG1hdGNoKSA9PiB7XG4gICAgaWYgKG1hdGNoWzBdID09ICckJykge1xuICAgICAgcmV0dXJuIElTX0RBUlQgPyAnXFxcXCQnIDogJyQnO1xuICAgIH0gZWxzZSBpZiAobWF0Y2hbMF0gPT0gJ1xcbicpIHtcbiAgICAgIHJldHVybiAnXFxcXG4nO1xuICAgIH0gZWxzZSBpZiAobWF0Y2hbMF0gPT0gJ1xccicpIHtcbiAgICAgIHJldHVybiAnXFxcXHInO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYFxcXFwke21hdGNoWzBdfWA7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZGVHZW5FeHBvcnRWYXJpYWJsZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoSVNfREFSVCkge1xuICAgIHJldHVybiBgY29uc3QgJHtuYW1lfSA9IGA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGB2YXIgJHtuYW1lfSA9IGV4cG9ydHNbJyR7bmFtZX0nXSA9IGA7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZGVHZW5Db25zdENvbnN0cnVjdG9yQ2FsbChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoSVNfREFSVCkge1xuICAgIHJldHVybiBgY29uc3QgJHtuYW1lfWA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGBuZXcgJHtuYW1lfWA7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZGVHZW5WYWx1ZUZuKHBhcmFtczogc3RyaW5nW10sIHZhbHVlOiBzdHJpbmcsIGZuTmFtZTogc3RyaW5nID0gJycpOiBzdHJpbmcge1xuICBpZiAoSVNfREFSVCkge1xuICAgIHJldHVybiBgJHtjb2RlR2VuRm5IZWFkZXIocGFyYW1zLCBmbk5hbWUpfSA9PiAke3ZhbHVlfWA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGAke2NvZGVHZW5GbkhlYWRlcihwYXJhbXMsIGZuTmFtZSl9IHsgcmV0dXJuICR7dmFsdWV9OyB9YDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29kZUdlbkZuSGVhZGVyKHBhcmFtczogc3RyaW5nW10sIGZuTmFtZTogc3RyaW5nID0gJycpOiBzdHJpbmcge1xuICBpZiAoSVNfREFSVCkge1xuICAgIHJldHVybiBgJHtmbk5hbWV9KCR7cGFyYW1zLmpvaW4oJywnKX0pYDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYGZ1bmN0aW9uICR7Zm5OYW1lfSgke3BhcmFtcy5qb2luKCcsJyl9KWA7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBjb2RlR2VuVG9TdHJpbmcoZXhwcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKElTX0RBUlQpIHtcbiAgICByZXR1cm4gYCdcXCR7JHtleHByfX0nYDtcbiAgfSBlbHNlIHtcbiAgICAvLyBKUyBhdXRvbWF0aWNhbGx5IGNvbnZlcnRzIHRvIHN0cmluZy4uLlxuICAgIHJldHVybiBleHByO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdEF0Q29sb24oaW5wdXQ6IHN0cmluZywgZGVmYXVsdFZhbHVlczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIHZhciBwYXJ0cyA9IFN0cmluZ1dyYXBwZXIuc3BsaXQoaW5wdXQudHJpbSgpLCAvXFxzKjpcXHMqL2cpO1xuICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiBwYXJ0cztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlcztcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBTdGF0ZW1lbnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhdGVtZW50OiBzdHJpbmcpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IocHVibGljIGV4cHJlc3Npb246IHN0cmluZywgcHVibGljIGlzQXJyYXkgPSBmYWxzZSkge31cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZVZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFeHByZXNzaW9uKSB7XG4gICAgcmV0dXJuIHZhbHVlLmV4cHJlc3Npb247XG4gIH0gZWxzZSBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIGVzY2FwZVNpbmdsZVF1b3RlU3RyaW5nKHZhbHVlKTtcbiAgfSBlbHNlIGlmIChpc0JsYW5rKHZhbHVlKSkge1xuICAgIHJldHVybiAnbnVsbCc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGAke3ZhbHVlfWA7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZGVHZW5BcnJheShkYXRhOiBhbnlbXSk6IHN0cmluZyB7XG4gIHJldHVybiBgWyR7ZGF0YS5tYXAoZXNjYXBlVmFsdWUpLmpvaW4oJywnKX1dYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZGVHZW5GbGF0QXJyYXkodmFsdWVzOiBhbnlbXSk6IHN0cmluZyB7XG4gIHZhciByZXN1bHQgPSAnKFsnO1xuICB2YXIgaXNGaXJzdEFycmF5RW50cnkgPSB0cnVlO1xuICB2YXIgY29uY2F0Rm4gPSBJU19EQVJUID8gJy5hZGRBbGwnIDogJ2NvbmNhdCc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHZhbHVlID0gdmFsdWVzW2ldO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEV4cHJlc3Npb24gJiYgKDxFeHByZXNzaW9uPnZhbHVlKS5pc0FycmF5KSB7XG4gICAgICByZXN1bHQgKz0gYF0pLiR7Y29uY2F0Rm59KCR7dmFsdWUuZXhwcmVzc2lvbn0pLiR7Y29uY2F0Rm59KFtgO1xuICAgICAgaXNGaXJzdEFycmF5RW50cnkgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWlzRmlyc3RBcnJheUVudHJ5KSB7XG4gICAgICAgIHJlc3VsdCArPSAnLCc7XG4gICAgICB9XG4gICAgICBpc0ZpcnN0QXJyYXlFbnRyeSA9IGZhbHNlO1xuICAgICAgcmVzdWx0ICs9IGVzY2FwZVZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmVzdWx0ICs9ICddKSc7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2RlR2VuU3RyaW5nTWFwKGtleVZhbHVlQXJyYXk6IGFueVtdW10pOiBzdHJpbmcge1xuICByZXR1cm4gYHske2tleVZhbHVlQXJyYXkubWFwKGNvZGVHZW5LZXlWYWx1ZSkuam9pbignLCcpfX1gO1xufVxuXG5mdW5jdGlvbiBjb2RlR2VuS2V5VmFsdWUoa2V5VmFsdWU6IGFueVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke2VzY2FwZVZhbHVlKGtleVZhbHVlWzBdKX06JHtlc2NhcGVWYWx1ZShrZXlWYWx1ZVsxXSl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEFsbChzb3VyY2U6IGFueVtdLCB0YXJnZXQ6IGFueVtdKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgdGFyZ2V0LnB1c2goc291cmNlW2ldKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbkFycmF5KHNvdXJjZTogYW55W10sIHRhcmdldDogYW55W10pOiBhbnlbXSB7XG4gIGlmIChpc1ByZXNlbnQoc291cmNlKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IHNvdXJjZVtpXTtcbiAgICAgIGlmIChpc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgIGZsYXR0ZW5BcnJheShpdGVtLCB0YXJnZXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFyZ2V0LnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar directive_metadata_1 = require('./directive_metadata');\r\nvar template_ast_1 = require('./template_ast');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar source_module_1 = require('./source_module');\r\nvar change_detector_compiler_1 = require('./change_detector_compiler');\r\nvar style_compiler_1 = require('./style_compiler');\r\nvar view_compiler_1 = require('./view_compiler');\r\nvar proto_view_compiler_1 = require('./proto_view_compiler');\r\nvar template_parser_1 = require('./template_parser');\r\nvar template_normalizer_1 = require('./template_normalizer');\r\nvar runtime_metadata_1 = require('./runtime_metadata');\r\nvar view_1 = require('angular2/src/core/linker/view');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar resolved_metadata_cache_1 = require('angular2/src/core/linker/resolved_metadata_cache');\r\nvar util_1 = require('./util');\r\nexports.METADATA_CACHE_MODULE_REF = source_module_1.moduleRef('package:angular2/src/core/linker/resolved_metadata_cache' + util_1.MODULE_SUFFIX);\r\n/**\r\n * An internal module of the Angular compiler that begins with component types,\r\n * extracts templates, and eventually produces a compiled version of the component\r\n * ready for linking into an application.\r\n */\r\nvar TemplateCompiler = (function () {\r\n function TemplateCompiler(_runtimeMetadataResolver, _templateNormalizer, _templateParser, _styleCompiler, _cdCompiler, _protoViewCompiler, _viewCompiler, _resolvedMetadataCache, _genConfig) {\r\n this._runtimeMetadataResolver = _runtimeMetadataResolver;\r\n this._templateNormalizer = _templateNormalizer;\r\n this._templateParser = _templateParser;\r\n this._styleCompiler = _styleCompiler;\r\n this._cdCompiler = _cdCompiler;\r\n this._protoViewCompiler = _protoViewCompiler;\r\n this._viewCompiler = _viewCompiler;\r\n this._resolvedMetadataCache = _resolvedMetadataCache;\r\n this._genConfig = _genConfig;\r\n this._hostCacheKeys = new Map();\r\n this._compiledTemplateCache = new Map();\r\n this._compiledTemplateDone = new Map();\r\n }\r\n TemplateCompiler.prototype.normalizeDirectiveMetadata = function (directive) {\r\n if (!directive.isComponent) {\r\n // For non components there is nothing to be normalized yet.\r\n return async_1.PromiseWrapper.resolve(directive);\r\n }\r\n return this._templateNormalizer.normalizeTemplate(directive.type, directive.template)\r\n .then(function (normalizedTemplate) { return new directive_metadata_1.CompileDirectiveMetadata({\r\n type: directive.type,\r\n isComponent: directive.isComponent,\r\n dynamicLoadable: directive.dynamicLoadable,\r\n selector: directive.selector,\r\n exportAs: directive.exportAs,\r\n changeDetection: directive.changeDetection,\r\n inputs: directive.inputs,\r\n outputs: directive.outputs,\r\n hostListeners: directive.hostListeners,\r\n hostProperties: directive.hostProperties,\r\n hostAttributes: directive.hostAttributes,\r\n lifecycleHooks: directive.lifecycleHooks,\r\n providers: directive.providers,\r\n template: normalizedTemplate\r\n }); });\r\n };\r\n TemplateCompiler.prototype.compileHostComponentRuntime = function (type) {\r\n var compMeta = this._runtimeMetadataResolver.getDirectiveMetadata(type);\r\n var hostCacheKey = this._hostCacheKeys.get(type);\r\n if (lang_1.isBlank(hostCacheKey)) {\r\n hostCacheKey = new Object();\r\n this._hostCacheKeys.set(type, hostCacheKey);\r\n assertComponent(compMeta);\r\n var hostMeta = directive_metadata_1.createHostComponentMeta(compMeta.type, compMeta.selector);\r\n this._compileComponentRuntime(hostCacheKey, hostMeta, [compMeta], [], []);\r\n }\r\n return this._compiledTemplateDone.get(hostCacheKey)\r\n .then(function (compiledTemplate) {\r\n return new view_1.HostViewFactory(compMeta.selector, compiledTemplate.viewFactory);\r\n });\r\n };\r\n TemplateCompiler.prototype.clearCache = function () {\r\n this._styleCompiler.clearCache();\r\n this._compiledTemplateCache.clear();\r\n this._compiledTemplateDone.clear();\r\n this._hostCacheKeys.clear();\r\n };\r\n TemplateCompiler.prototype.compileTemplatesCodeGen = function (components) {\r\n var _this = this;\r\n if (components.length === 0) {\r\n throw new exceptions_1.BaseException('No components given');\r\n }\r\n var declarations = [];\r\n components.forEach(function (componentWithDirs) {\r\n var compMeta = componentWithDirs.component;\r\n assertComponent(compMeta);\r\n _this._compileComponentCodeGen(compMeta, componentWithDirs.directives, componentWithDirs.pipes, declarations);\r\n if (compMeta.dynamicLoadable) {\r\n var hostMeta = directive_metadata_1.createHostComponentMeta(compMeta.type, compMeta.selector);\r\n var viewFactoryExpression = _this._compileComponentCodeGen(hostMeta, [compMeta], [], declarations);\r\n var constructionKeyword = lang_1.IS_DART ? 'const' : 'new';\r\n var compiledTemplateExpr = constructionKeyword + \" \" + proto_view_compiler_1.APP_VIEW_MODULE_REF + \"HostViewFactory('\" + compMeta.selector + \"',\" + viewFactoryExpression + \")\";\r\n var varName = codeGenHostViewFactoryName(compMeta.type);\r\n declarations.push(\"\" + util_1.codeGenExportVariable(varName) + compiledTemplateExpr + \";\");\r\n }\r\n });\r\n var moduleUrl = components[0].component.type.moduleUrl;\r\n return new source_module_1.SourceModule(\"\" + templateModuleUrl(moduleUrl), declarations.join('\\n'));\r\n };\r\n TemplateCompiler.prototype.compileStylesheetCodeGen = function (stylesheetUrl, cssText) {\r\n return this._styleCompiler.compileStylesheetCodeGen(stylesheetUrl, cssText);\r\n };\r\n TemplateCompiler.prototype._compileComponentRuntime = function (cacheKey, compMeta, viewDirectives, pipes, compilingComponentsPath) {\r\n var _this = this;\r\n var uniqViewDirectives = removeDuplicates(viewDirectives);\r\n var uniqViewPipes = removeDuplicates(pipes);\r\n var compiledTemplate = this._compiledTemplateCache.get(cacheKey);\r\n var done = this._compiledTemplateDone.get(cacheKey);\r\n if (lang_1.isBlank(compiledTemplate)) {\r\n compiledTemplate = new CompiledTemplate();\r\n this._compiledTemplateCache.set(cacheKey, compiledTemplate);\r\n done = async_1.PromiseWrapper\r\n .all([this._styleCompiler.compileComponentRuntime(compMeta.template)].concat(uniqViewDirectives.map(function (dirMeta) { return _this.normalizeDirectiveMetadata(dirMeta); })))\r\n .then(function (stylesAndNormalizedViewDirMetas) {\r\n var normalizedViewDirMetas = stylesAndNormalizedViewDirMetas.slice(1);\r\n var styles = stylesAndNormalizedViewDirMetas[0];\r\n var parsedTemplate = _this._templateParser.parse(compMeta.template.template, normalizedViewDirMetas, uniqViewPipes, compMeta.type.name);\r\n var childPromises = [];\r\n var usedDirectives = DirectiveCollector.findUsedDirectives(parsedTemplate);\r\n usedDirectives.components.forEach(function (component) { return _this._compileNestedComponentRuntime(component, compilingComponentsPath, childPromises); });\r\n return async_1.PromiseWrapper.all(childPromises)\r\n .then(function (_) {\r\n var filteredPipes = filterPipes(parsedTemplate, uniqViewPipes);\r\n compiledTemplate.init(_this._createViewFactoryRuntime(compMeta, parsedTemplate, usedDirectives.directives, styles, filteredPipes));\r\n return compiledTemplate;\r\n });\r\n });\r\n this._compiledTemplateDone.set(cacheKey, done);\r\n }\r\n return compiledTemplate;\r\n };\r\n TemplateCompiler.prototype._compileNestedComponentRuntime = function (childComponentDir, parentCompilingComponentsPath, childPromises) {\r\n var compilingComponentsPath = collection_1.ListWrapper.clone(parentCompilingComponentsPath);\r\n var childCacheKey = childComponentDir.type.runtime;\r\n var childViewDirectives = this._runtimeMetadataResolver.getViewDirectivesMetadata(childComponentDir.type.runtime);\r\n var childViewPipes = this._runtimeMetadataResolver.getViewPipesMetadata(childComponentDir.type.runtime);\r\n var childIsRecursive = collection_1.ListWrapper.contains(compilingComponentsPath, childCacheKey);\r\n compilingComponentsPath.push(childCacheKey);\r\n this._compileComponentRuntime(childCacheKey, childComponentDir, childViewDirectives, childViewPipes, compilingComponentsPath);\r\n if (!childIsRecursive) {\r\n // Only wait for a child if it is not a cycle\r\n childPromises.push(this._compiledTemplateDone.get(childCacheKey));\r\n }\r\n };\r\n TemplateCompiler.prototype._createViewFactoryRuntime = function (compMeta, parsedTemplate, directives, styles, pipes) {\r\n var _this = this;\r\n if (lang_1.IS_DART || !this._genConfig.useJit) {\r\n var changeDetectorFactories = this._cdCompiler.compileComponentRuntime(compMeta.type, compMeta.changeDetection, parsedTemplate);\r\n var protoViews = this._protoViewCompiler.compileProtoViewRuntime(this._resolvedMetadataCache, compMeta, parsedTemplate, pipes);\r\n return this._viewCompiler.compileComponentRuntime(compMeta, parsedTemplate, styles, protoViews.protoViews, changeDetectorFactories, function (compMeta) { return _this._getNestedComponentViewFactory(compMeta); });\r\n }\r\n else {\r\n var declarations = [];\r\n var viewFactoryExpr = this._createViewFactoryCodeGen('resolvedMetadataCache', compMeta, new source_module_1.SourceExpression([], 'styles'), parsedTemplate, pipes, declarations);\r\n var vars = { 'exports': {}, 'styles': styles, 'resolvedMetadataCache': this._resolvedMetadataCache };\r\n directives.forEach(function (dirMeta) {\r\n vars[dirMeta.type.name] = dirMeta.type.runtime;\r\n if (dirMeta.isComponent && dirMeta.type.runtime !== compMeta.type.runtime) {\r\n vars[(\"viewFactory_\" + dirMeta.type.name + \"0\")] = _this._getNestedComponentViewFactory(dirMeta);\r\n }\r\n });\r\n pipes.forEach(function (pipeMeta) { return vars[pipeMeta.type.name] = pipeMeta.type.runtime; });\r\n var declarationsWithoutImports = source_module_1.SourceModule.getSourceWithoutImports(declarations.join('\\n'));\r\n return lang_1.evalExpression(\"viewFactory_\" + compMeta.type.name, viewFactoryExpr, declarationsWithoutImports, mergeStringMaps([vars, change_detector_compiler_1.CHANGE_DETECTION_JIT_IMPORTS, proto_view_compiler_1.PROTO_VIEW_JIT_IMPORTS, view_compiler_1.VIEW_JIT_IMPORTS]));\r\n }\r\n };\r\n TemplateCompiler.prototype._getNestedComponentViewFactory = function (compMeta) {\r\n return this._compiledTemplateCache.get(compMeta.type.runtime).viewFactory;\r\n };\r\n TemplateCompiler.prototype._compileComponentCodeGen = function (compMeta, directives, pipes, targetDeclarations) {\r\n var uniqueDirectives = removeDuplicates(directives);\r\n var uniqPipes = removeDuplicates(pipes);\r\n var styleExpr = this._styleCompiler.compileComponentCodeGen(compMeta.template);\r\n var parsedTemplate = this._templateParser.parse(compMeta.template.template, uniqueDirectives, uniqPipes, compMeta.type.name);\r\n var filteredPipes = filterPipes(parsedTemplate, uniqPipes);\r\n return this._createViewFactoryCodeGen(exports.METADATA_CACHE_MODULE_REF + \"CODEGEN_RESOLVED_METADATA_CACHE\", compMeta, styleExpr, parsedTemplate, filteredPipes, targetDeclarations);\r\n };\r\n TemplateCompiler.prototype._createViewFactoryCodeGen = function (resolvedMetadataCacheExpr, compMeta, styleExpr, parsedTemplate, pipes, targetDeclarations) {\r\n var changeDetectorsExprs = this._cdCompiler.compileComponentCodeGen(compMeta.type, compMeta.changeDetection, parsedTemplate);\r\n var protoViewExprs = this._protoViewCompiler.compileProtoViewCodeGen(new util_1.Expression(resolvedMetadataCacheExpr), compMeta, parsedTemplate, pipes);\r\n var viewFactoryExpr = this._viewCompiler.compileComponentCodeGen(compMeta, parsedTemplate, styleExpr, protoViewExprs.protoViews, changeDetectorsExprs, codeGenComponentViewFactoryName);\r\n util_1.addAll(changeDetectorsExprs.declarations, targetDeclarations);\r\n util_1.addAll(protoViewExprs.declarations, targetDeclarations);\r\n util_1.addAll(viewFactoryExpr.declarations, targetDeclarations);\r\n return viewFactoryExpr.expression;\r\n };\r\n TemplateCompiler = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [runtime_metadata_1.RuntimeMetadataResolver, template_normalizer_1.TemplateNormalizer, template_parser_1.TemplateParser, style_compiler_1.StyleCompiler, change_detector_compiler_1.ChangeDetectionCompiler, proto_view_compiler_1.ProtoViewCompiler, view_compiler_1.ViewCompiler, resolved_metadata_cache_1.ResolvedMetadataCache, change_detection_1.ChangeDetectorGenConfig])\r\n ], TemplateCompiler);\r\n return TemplateCompiler;\r\n})();\r\nexports.TemplateCompiler = TemplateCompiler;\r\nvar NormalizedComponentWithViewDirectives = (function () {\r\n function NormalizedComponentWithViewDirectives(component, directives, pipes) {\r\n this.component = component;\r\n this.directives = directives;\r\n this.pipes = pipes;\r\n }\r\n return NormalizedComponentWithViewDirectives;\r\n})();\r\nexports.NormalizedComponentWithViewDirectives = NormalizedComponentWithViewDirectives;\r\nvar CompiledTemplate = (function () {\r\n function CompiledTemplate() {\r\n this.viewFactory = null;\r\n }\r\n CompiledTemplate.prototype.init = function (viewFactory) { this.viewFactory = viewFactory; };\r\n return CompiledTemplate;\r\n})();\r\nfunction assertComponent(meta) {\r\n if (!meta.isComponent) {\r\n throw new exceptions_1.BaseException(\"Could not compile '\" + meta.type.name + \"' because it is not a component.\");\r\n }\r\n}\r\nfunction templateModuleUrl(moduleUrl) {\r\n var urlWithoutSuffix = moduleUrl.substring(0, moduleUrl.length - util_1.MODULE_SUFFIX.length);\r\n return urlWithoutSuffix + \".template\" + util_1.MODULE_SUFFIX;\r\n}\r\nfunction codeGenHostViewFactoryName(type) {\r\n return \"hostViewFactory_\" + type.name;\r\n}\r\nfunction codeGenComponentViewFactoryName(nestedCompType) {\r\n return source_module_1.moduleRef(templateModuleUrl(nestedCompType.type.moduleUrl)) + \"viewFactory_\" + nestedCompType.type.name + \"0\";\r\n}\r\nfunction mergeStringMaps(maps) {\r\n var result = {};\r\n maps.forEach(function (map) { collection_1.StringMapWrapper.forEach(map, function (value, key) { result[key] = value; }); });\r\n return result;\r\n}\r\nfunction removeDuplicates(items) {\r\n var res = [];\r\n items.forEach(function (item) {\r\n var hasMatch = res.filter(function (r) { return r.type.name == item.type.name && r.type.moduleUrl == item.type.moduleUrl &&\r\n r.type.runtime == item.type.runtime; })\r\n .length > 0;\r\n if (!hasMatch) {\r\n res.push(item);\r\n }\r\n });\r\n return res;\r\n}\r\nvar DirectiveCollector = (function () {\r\n function DirectiveCollector() {\r\n this.directives = [];\r\n this.components = [];\r\n }\r\n DirectiveCollector.findUsedDirectives = function (parsedTemplate) {\r\n var collector = new DirectiveCollector();\r\n template_ast_1.templateVisitAll(collector, parsedTemplate);\r\n return collector;\r\n };\r\n DirectiveCollector.prototype.visitBoundText = function (ast, context) { return null; };\r\n DirectiveCollector.prototype.visitText = function (ast, context) { return null; };\r\n DirectiveCollector.prototype.visitNgContent = function (ast, context) { return null; };\r\n DirectiveCollector.prototype.visitElement = function (ast, context) {\r\n template_ast_1.templateVisitAll(this, ast.directives);\r\n template_ast_1.templateVisitAll(this, ast.children);\r\n return null;\r\n };\r\n DirectiveCollector.prototype.visitEmbeddedTemplate = function (ast, context) {\r\n template_ast_1.templateVisitAll(this, ast.directives);\r\n template_ast_1.templateVisitAll(this, ast.children);\r\n return null;\r\n };\r\n DirectiveCollector.prototype.visitVariable = function (ast, ctx) { return null; };\r\n DirectiveCollector.prototype.visitAttr = function (ast, attrNameAndValues) { return null; };\r\n DirectiveCollector.prototype.visitDirective = function (ast, ctx) {\r\n if (ast.directive.isComponent) {\r\n this.components.push(ast.directive);\r\n }\r\n this.directives.push(ast.directive);\r\n return null;\r\n };\r\n DirectiveCollector.prototype.visitEvent = function (ast, eventTargetAndNames) {\r\n return null;\r\n };\r\n DirectiveCollector.prototype.visitDirectiveProperty = function (ast, context) { return null; };\r\n DirectiveCollector.prototype.visitElementProperty = function (ast, context) { return null; };\r\n return DirectiveCollector;\r\n})();\r\nfunction filterPipes(template, allPipes) {\r\n var visitor = new PipeVisitor();\r\n template_ast_1.templateVisitAll(visitor, template);\r\n return allPipes.filter(function (pipeMeta) { return collection_1.SetWrapper.has(visitor.collector.pipes, pipeMeta.name); });\r\n}\r\nvar PipeVisitor = (function () {\r\n function PipeVisitor() {\r\n this.collector = new template_parser_1.PipeCollector();\r\n }\r\n PipeVisitor.prototype.visitBoundText = function (ast, context) {\r\n ast.value.visit(this.collector);\r\n return null;\r\n };\r\n PipeVisitor.prototype.visitText = function (ast, context) { return null; };\r\n PipeVisitor.prototype.visitNgContent = function (ast, context) { return null; };\r\n PipeVisitor.prototype.visitElement = function (ast, context) {\r\n template_ast_1.templateVisitAll(this, ast.inputs);\r\n template_ast_1.templateVisitAll(this, ast.outputs);\r\n template_ast_1.templateVisitAll(this, ast.directives);\r\n template_ast_1.templateVisitAll(this, ast.children);\r\n return null;\r\n };\r\n PipeVisitor.prototype.visitEmbeddedTemplate = function (ast, context) {\r\n template_ast_1.templateVisitAll(this, ast.outputs);\r\n template_ast_1.templateVisitAll(this, ast.directives);\r\n template_ast_1.templateVisitAll(this, ast.children);\r\n return null;\r\n };\r\n PipeVisitor.prototype.visitVariable = function (ast, ctx) { return null; };\r\n PipeVisitor.prototype.visitAttr = function (ast, attrNameAndValues) { return null; };\r\n PipeVisitor.prototype.visitDirective = function (ast, ctx) {\r\n template_ast_1.templateVisitAll(this, ast.inputs);\r\n template_ast_1.templateVisitAll(this, ast.hostEvents);\r\n template_ast_1.templateVisitAll(this, ast.hostProperties);\r\n return null;\r\n };\r\n PipeVisitor.prototype.visitEvent = function (ast, eventTargetAndNames) {\r\n ast.handler.visit(this.collector);\r\n return null;\r\n };\r\n PipeVisitor.prototype.visitDirectiveProperty = function (ast, context) {\r\n ast.value.visit(this.collector);\r\n return null;\r\n };\r\n PipeVisitor.prototype.visitElementProperty = function (ast, context) {\r\n ast.value.visit(this.collector);\r\n return null;\r\n };\r\n return PipeVisitor;\r\n})();\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tcGlsZXIvdGVtcGxhdGVfY29tcGlsZXIudHMiXSwibmFtZXMiOlsiVGVtcGxhdGVDb21waWxlciIsIlRlbXBsYXRlQ29tcGlsZXIuY29uc3RydWN0b3IiLCJUZW1wbGF0ZUNvbXBpbGVyLm5vcm1hbGl6ZURpcmVjdGl2ZU1ldGFkYXRhIiwiVGVtcGxhdGVDb21waWxlci5jb21waWxlSG9zdENvbXBvbmVudFJ1bnRpbWUiLCJUZW1wbGF0ZUNvbXBpbGVyLmNsZWFyQ2FjaGUiLCJUZW1wbGF0ZUNvbXBpbGVyLmNvbXBpbGVUZW1wbGF0ZXNDb2RlR2VuIiwiVGVtcGxhdGVDb21waWxlci5jb21waWxlU3R5bGVzaGVldENvZGVHZW4iLCJUZW1wbGF0ZUNvbXBpbGVyLl9jb21waWxlQ29tcG9uZW50UnVudGltZSIsIlRlbXBsYXRlQ29tcGlsZXIuX2NvbXBpbGVOZXN0ZWRDb21wb25lbnRSdW50aW1lIiwiVGVtcGxhdGVDb21waWxlci5fY3JlYXRlVmlld0ZhY3RvcnlSdW50aW1lIiwiVGVtcGxhdGVDb21waWxlci5fZ2V0TmVzdGVkQ29tcG9uZW50Vmlld0ZhY3RvcnkiLCJUZW1wbGF0ZUNvbXBpbGVyLl9jb21waWxlQ29tcG9uZW50Q29kZUdlbiIsIlRlbXBsYXRlQ29tcGlsZXIuX2NyZWF0ZVZpZXdGYWN0b3J5Q29kZUdlbiIsIk5vcm1hbGl6ZWRDb21wb25lbnRXaXRoVmlld0RpcmVjdGl2ZXMiLCJOb3JtYWxpemVkQ29tcG9uZW50V2l0aFZpZXdEaXJlY3RpdmVzLmNvbnN0cnVjdG9yIiwiQ29tcGlsZWRUZW1wbGF0ZSIsIkNvbXBpbGVkVGVtcGxhdGUuY29uc3RydWN0b3IiLCJDb21waWxlZFRlbXBsYXRlLmluaXQiLCJhc3NlcnRDb21wb25lbnQiLCJ0ZW1wbGF0ZU1vZHVsZVVybCIsImNvZGVHZW5Ib3N0Vmlld0ZhY3RvcnlOYW1lIiwiY29kZUdlbkNvbXBvbmVudFZpZXdGYWN0b3J5TmFtZSIsIm1lcmdlU3RyaW5nTWFwcyIsInJlbW92ZUR1cGxpY2F0ZXMiLCJEaXJlY3RpdmVDb2xsZWN0b3IiLCJEaXJlY3RpdmVDb2xsZWN0b3IuY29uc3RydWN0b3IiLCJEaXJlY3RpdmVDb2xsZWN0b3IuZmluZFVzZWREaXJlY3RpdmVzIiwiRGlyZWN0aXZlQ29sbGVjdG9yLnZpc2l0Qm91bmRUZXh0IiwiRGlyZWN0aXZlQ29sbGVjdG9yLnZpc2l0VGV4dCIsIkRpcmVjdGl2ZUNvbGxlY3Rvci52aXNpdE5nQ29udGVudCIsIkRpcmVjdGl2ZUNvbGxlY3Rvci52aXNpdEVsZW1lbnQiLCJEaXJlY3RpdmVDb2xsZWN0b3IudmlzaXRFbWJlZGRlZFRlbXBsYXRlIiwiRGlyZWN0aXZlQ29sbGVjdG9yLnZpc2l0VmFyaWFibGUiLCJEaXJlY3RpdmVDb2xsZWN0b3IudmlzaXRBdHRyIiwiRGlyZWN0aXZlQ29sbGVjdG9yLnZpc2l0RGlyZWN0aXZlIiwiRGlyZWN0aXZlQ29sbGVjdG9yLnZpc2l0RXZlbnQiLCJEaXJlY3RpdmVDb2xsZWN0b3IudmlzaXREaXJlY3RpdmVQcm9wZXJ0eSIsIkRpcmVjdGl2ZUNvbGxlY3Rvci52aXNpdEVsZW1lbnRQcm9wZXJ0eSIsImZpbHRlclBpcGVzIiwiUGlwZVZpc2l0b3IiLCJQaXBlVmlzaXRvci5jb25zdHJ1Y3RvciIsIlBpcGVWaXNpdG9yLnZpc2l0Qm91bmRUZXh0IiwiUGlwZVZpc2l0b3IudmlzaXRUZXh0IiwiUGlwZVZpc2l0b3IudmlzaXROZ0NvbnRlbnQiLCJQaXBlVmlzaXRvci52aXNpdEVsZW1lbnQiLCJQaXBlVmlzaXRvci52aXNpdEVtYmVkZGVkVGVtcGxhdGUiLCJQaXBlVmlzaXRvci52aXNpdFZhcmlhYmxlIiwiUGlwZVZpc2l0b3IudmlzaXRBdHRyIiwiUGlwZVZpc2l0b3IudmlzaXREaXJlY3RpdmUiLCJQaXBlVmlzaXRvci52aXNpdEV2ZW50IiwiUGlwZVZpc2l0b3IudmlzaXREaXJlY3RpdmVQcm9wZXJ0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QUlBLENBQUNBO0lBQ2RBLENBQUNBO0lBQ0RYLDBDQUFvQkEsR0FBcEJBLFVBQXFCQSxHQUE0QkEsRUFBRUEsT0FBWUE7UUFDN0RZLEdBQUdBLENBQUNBLEtBQUtBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBO1FBQ2hDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNkQSxDQUFDQTtJQUNIWixrQkFBQ0E7QUFBREEsQ0FBQ0EsQUE3Q0QsSUE2Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJU19EQVJULFxuICBUeXBlLFxuICBKc29uLFxuICBpc0JsYW5rLFxuICBpc1ByZXNlbnQsXG4gIHN0cmluZ2lmeSxcbiAgZXZhbEV4cHJlc3Npb25cbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7XG4gIExpc3RXcmFwcGVyLFxuICBTZXRXcmFwcGVyLFxuICBNYXBXcmFwcGVyLFxuICBTdHJpbmdNYXBXcmFwcGVyXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1Byb21pc2VXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcbmltcG9ydCB7XG4gIGNyZWF0ZUhvc3RDb21wb25lbnRNZXRhLFxuICBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsXG4gIENvbXBpbGVUeXBlTWV0YWRhdGEsXG4gIENvbXBpbGVUZW1wbGF0ZU1ldGFkYXRhLFxuICBDb21waWxlUGlwZU1ldGFkYXRhLFxuICBDb21waWxlTWV0YWRhdGFXaXRoVHlwZVxufSBmcm9tICcuL2RpcmVjdGl2ZV9tZXRhZGF0YSc7XG5pbXBvcnQge1xuICBUZW1wbGF0ZUFzdCxcbiAgVGVtcGxhdGVBc3RWaXNpdG9yLFxuICBOZ0NvbnRlbnRBc3QsXG4gIEVtYmVkZGVkVGVtcGxhdGVBc3QsXG4gIEVsZW1lbnRBc3QsXG4gIFZhcmlhYmxlQXN0LFxuICBCb3VuZEV2ZW50QXN0LFxuICBCb3VuZEVsZW1lbnRQcm9wZXJ0eUFzdCxcbiAgQXR0ckFzdCxcbiAgQm91bmRUZXh0QXN0LFxuICBUZXh0QXN0LFxuICBEaXJlY3RpdmVBc3QsXG4gIEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3QsXG4gIHRlbXBsYXRlVmlzaXRBbGxcbn0gZnJvbSAnLi90ZW1wbGF0ZV9hc3QnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge1NvdXJjZU1vZHVsZSwgbW9kdWxlUmVmLCBTb3VyY2VFeHByZXNzaW9ufSBmcm9tICcuL3NvdXJjZV9tb2R1bGUnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25Db21waWxlciwgQ0hBTkdFX0RFVEVDVElPTl9KSVRfSU1QT1JUU30gZnJvbSAnLi9jaGFuZ2VfZGV0ZWN0b3JfY29tcGlsZXInO1xuaW1wb3J0IHtTdHlsZUNvbXBpbGVyfSBmcm9tICcuL3N0eWxlX2NvbXBpbGVyJztcbmltcG9ydCB7Vmlld0NvbXBpbGVyLCBWSUVXX0pJVF9JTVBPUlRTfSBmcm9tICcuL3ZpZXdfY29tcGlsZXInO1xuaW1wb3J0IHtcbiAgUHJvdG9WaWV3Q29tcGlsZXIsXG4gIEFQUF9WSUVXX01PRFVMRV9SRUYsXG4gIENvbXBpbGVQcm90b1ZpZXcsXG4gIFBST1RPX1ZJRVdfSklUX0lNUE9SVFNcbn0gZnJvbSAnLi9wcm90b192aWV3X2NvbXBpbGVyJztcbmltcG9ydCB7VGVtcGxhdGVQYXJzZXIsIFBpcGVDb2xsZWN0b3J9IGZyb20gJy4vdGVtcGxhdGVfcGFyc2VyJztcbmltcG9ydCB7VGVtcGxhdGVOb3JtYWxpemVyfSBmcm9tICcuL3RlbXBsYXRlX25vcm1hbGl6ZXInO1xuaW1wb3J0IHtSdW50aW1lTWV0YWRhdGFSZXNvbHZlcn0gZnJvbSAnLi9ydW50aW1lX21ldGFkYXRhJztcbmltcG9ydCB7SG9zdFZpZXdGYWN0b3J5fSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvdmlldyc7XG5pbXBvcnQge0NoYW5nZURldGVjdG9yR2VuQ29uZmlnfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rpb24nO1xuaW1wb3J0IHtSZXNvbHZlZE1ldGFkYXRhQ2FjaGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9yZXNvbHZlZF9tZXRhZGF0YV9jYWNoZSc7XG5cbmltcG9ydCB7XG4gIGNvZGVHZW5FeHBvcnRWYXJpYWJsZSxcbiAgZXNjYXBlU2luZ2xlUXVvdGVTdHJpbmcsXG4gIGNvZGVHZW5WYWx1ZUZuLFxuICBNT0RVTEVfU1VGRklYLFxuICBhZGRBbGwsXG4gIEV4cHJlc3Npb25cbn0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IHZhciBNRVRBREFUQV9DQUNIRV9NT0RVTEVfUkVGID1cbiAgICBtb2R1bGVSZWYoJ3BhY2thZ2U6YW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL3Jlc29sdmVkX21ldGFkYXRhX2NhY2hlJyArIE1PRFVMRV9TVUZGSVgpO1xuXG4vKipcbiAqIEFuIGludGVybmFsIG1vZHVsZSBvZiB0aGUgQW5ndWxhciBjb21waWxlciB0aGF0IGJlZ2lucyB3aXRoIGNvbXBvbmVudCB0eXBlcyxcbiAqIGV4dHJhY3RzIHRlbXBsYXRlcywgYW5kIGV2ZW50dWFsbHkgcHJvZHVjZXMgYSBjb21waWxlZCB2ZXJzaW9uIG9mIHRoZSBjb21wb25lbnRcbiAqIHJlYWR5IGZvciBsaW5raW5nIGludG8gYW4gYXBwbGljYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUNvbXBpbGVyIHtcbiAgcHJpdmF0ZSBfaG9zdENhY2hlS2V5cyA9IG5ldyBNYXA8VHlwZSwgYW55PigpO1xuICBwcml2YXRlIF9jb21waWxlZFRlbXBsYXRlQ2FjaGUgPSBuZXcgTWFwPGFueSwgQ29tcGlsZWRUZW1wbGF0ZT4oKTtcbiAgcHJpdmF0ZSBfY29tcGlsZWRUZW1wbGF0ZURvbmUgPSBuZXcgTWFwPGFueSwgUHJvbWlzZTxDb21waWxlZFRlbXBsYXRlPj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ydW50aW1lTWV0YWRhdGFSZXNvbHZlcjogUnVudGltZU1ldGFkYXRhUmVzb2x2ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3RlbXBsYXRlTm9ybWFsaXplcjogVGVtcGxhdGVOb3JtYWxpemVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF90ZW1wbGF0ZVBhcnNlcjogVGVtcGxhdGVQYXJzZXIsIHByaXZhdGUgX3N0eWxlQ29tcGlsZXI6IFN0eWxlQ29tcGlsZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NkQ29tcGlsZXI6IENoYW5nZURldGVjdGlvbkNvbXBpbGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF9wcm90b1ZpZXdDb21waWxlcjogUHJvdG9WaWV3Q29tcGlsZXIsIHByaXZhdGUgX3ZpZXdDb21waWxlcjogVmlld0NvbXBpbGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF9yZXNvbHZlZE1ldGFkYXRhQ2FjaGU6IFJlc29sdmVkTWV0YWRhdGFDYWNoZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfZ2VuQ29uZmlnOiBDaGFuZ2VEZXRlY3RvckdlbkNvbmZpZykge31cblxuICBub3JtYWxpemVEaXJlY3RpdmVNZXRhZGF0YShkaXJlY3RpdmU6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSk6XG4gICAgICBQcm9taXNlPENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YT4ge1xuICAgIGlmICghZGlyZWN0aXZlLmlzQ29tcG9uZW50KSB7XG4gICAgICAvLyBGb3Igbm9uIGNvbXBvbmVudHMgdGhlcmUgaXMgbm90aGluZyB0byBiZSBub3JtYWxpemVkIHlldC5cbiAgICAgIHJldHVybiBQcm9taXNlV3JhcHBlci5yZXNvbHZlKGRpcmVjdGl2ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlTm9ybWFsaXplci5ub3JtYWxpemVUZW1wbGF0ZShkaXJlY3RpdmUudHlwZSwgZGlyZWN0aXZlLnRlbXBsYXRlKVxuICAgICAgICAudGhlbigobm9ybWFsaXplZFRlbXBsYXRlOiBDb21waWxlVGVtcGxhdGVNZXRhZGF0YSkgPT4gbmV3IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSh7XG4gICAgICAgICAgICAgICAgdHlwZTogZGlyZWN0aXZlLnR5cGUsXG4gICAgICAgICAgICAgICAgaXNDb21wb25lbnQ6IGRpcmVjdGl2ZS5pc0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBkeW5hbWljTG9hZGFibGU6IGRpcmVjdGl2ZS5keW5hbWljTG9hZGFibGUsXG4gICAgICAgICAgICAgICAgc2VsZWN0b3I6IGRpcmVjdGl2ZS5zZWxlY3RvcixcbiAgICAgICAgICAgICAgICBleHBvcnRBczogZGlyZWN0aXZlLmV4cG9ydEFzLFxuICAgICAgICAgICAgICAgIGNoYW5nZURldGVjdGlvbjogZGlyZWN0aXZlLmNoYW5nZURldGVjdGlvbixcbiAgICAgICAgICAgICAgICBpbnB1dHM6IGRpcmVjdGl2ZS5pbnB1dHMsXG4gICAgICAgICAgICAgICAgb3V0cHV0czogZGlyZWN0aXZlLm91dHB1dHMsXG4gICAgICAgICAgICAgICAgaG9zdExpc3RlbmVyczogZGlyZWN0aXZlLmhvc3RMaXN0ZW5lcnMsXG4gICAgICAgICAgICAgICAgaG9zdFByb3BlcnRpZXM6IGRpcmVjdGl2ZS5ob3N0UHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICBob3N0QXR0cmlidXRlczogZGlyZWN0aXZlLmhvc3RBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgICAgIGxpZmVjeWNsZUhvb2tzOiBkaXJlY3RpdmUubGlmZWN5Y2xlSG9va3MsXG4gICAgICAgICAgICAgICAgcHJvdmlkZXJzOiBkaXJlY3RpdmUucHJvdmlkZXJzLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlOiBub3JtYWxpemVkVGVtcGxhdGVcbiAgICAgICAgICAgICAgfSkpO1xuICB9XG5cbiAgY29tcGlsZUhvc3RDb21wb25lbnRSdW50aW1lKHR5cGU6IFR5cGUpOiBQcm9taXNlPEhvc3RWaWV3RmFjdG9yeT4ge1xuICAgIHZhciBjb21wTWV0YTogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhID1cbiAgICAgICAgdGhpcy5fcnVudGltZU1ldGFkYXRhUmVzb2x2ZXIuZ2V0RGlyZWN0aXZlTWV0YWRhdGEodHlwZSk7XG4gICAgdmFyIGhvc3RDYWNoZUtleSA9IHRoaXMuX2hvc3RDYWNoZUtleXMuZ2V0KHR5cGUpO1xuICAgIGlmIChpc0JsYW5rKGhvc3RDYWNoZUtleSkpIHtcbiAgICAgIGhvc3RDYWNoZUtleSA9IG5ldyBPYmplY3QoKTtcbiAgICAgIHRoaXMuX2hvc3RDYWNoZUtleXMuc2V0KHR5cGUsIGhvc3RDYWNoZUtleSk7XG4gICAgICBhc3NlcnRDb21wb25lbnQoY29tcE1ldGEpO1xuICAgICAgdmFyIGhvc3RNZXRhOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEgPVxuICAgICAgICAgIGNyZWF0ZUhvc3RDb21wb25lbnRNZXRhKGNvbXBNZXRhLnR5cGUsIGNvbXBNZXRhLnNlbGVjdG9yKTtcblxuICAgICAgdGhpcy5fY29tcGlsZUNvbXBvbmVudFJ1bnRpbWUoaG9zdENhY2hlS2V5LCBob3N0TWV0YSwgW2NvbXBNZXRhXSwgW10sIFtdKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBpbGVkVGVtcGxhdGVEb25lLmdldChob3N0Q2FjaGVLZXkpXG4gICAgICAgIC50aGVuKChjb21waWxlZFRlbXBsYXRlOiBDb21waWxlZFRlbXBsYXRlKSA9PlxuICAgICAgICAgICAgICAgICAgbmV3IEhvc3RWaWV3RmFjdG9yeShjb21wTWV0YS5zZWxlY3RvciwgY29tcGlsZWRUZW1wbGF0ZS52aWV3RmFjdG9yeSkpO1xuICB9XG5cbiAgY2xlYXJDYWNoZSgpIHtcbiAgICB0aGlzLl9zdHlsZUNvbXBpbGVyLmNsZWFyQ2FjaGUoKTtcbiAgICB0aGlzLl9jb21waWxlZFRlbXBsYXRlQ2FjaGUuY2xlYXIoKTtcbiAgICB0aGlzLl9jb21waWxlZFRlbXBsYXRlRG9uZS5jbGVhcigpO1xuICAgIHRoaXMuX2hvc3RDYWNoZUtleXMuY2xlYXIoKTtcbiAgfVxuXG4gIGNvbXBpbGVUZW1wbGF0ZXNDb2RlR2VuKGNvbXBvbmVudHM6IE5vcm1hbGl6ZWRDb21wb25lbnRXaXRoVmlld0RpcmVjdGl2ZXNbXSk6IFNvdXJjZU1vZHVsZSB7XG4gICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbignTm8gY29tcG9uZW50cyBnaXZlbicpO1xuICAgIH1cbiAgICB2YXIgZGVjbGFyYXRpb25zID0gW107XG4gICAgY29tcG9uZW50cy5mb3JFYWNoKGNvbXBvbmVudFdpdGhEaXJzID0+IHtcbiAgICAgIHZhciBjb21wTWV0YSA9IDxDb21waWxlRGlyZWN0aXZlTWV0YWRhdGE+Y29tcG9uZW50V2l0aERpcnMuY29tcG9uZW50O1xuICAgICAgYXNzZXJ0Q29tcG9uZW50KGNvbXBNZXRhKTtcbiAgICAgIHRoaXMuX2NvbXBpbGVDb21wb25lbnRDb2RlR2VuKGNvbXBNZXRhLCBjb21wb25lbnRXaXRoRGlycy5kaXJlY3RpdmVzLCBjb21wb25lbnRXaXRoRGlycy5waXBlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9ucyk7XG4gICAgICBpZiAoY29tcE1ldGEuZHluYW1pY0xvYWRhYmxlKSB7XG4gICAgICAgIHZhciBob3N0TWV0YSA9IGNyZWF0ZUhvc3RDb21wb25lbnRNZXRhKGNvbXBNZXRhLnR5cGUsIGNvbXBNZXRhLnNlbGVjdG9yKTtcbiAgICAgICAgdmFyIHZpZXdGYWN0b3J5RXhwcmVzc2lvbiA9XG4gICAgICAgICAgICB0aGlzLl9jb21waWxlQ29tcG9uZW50Q29kZUdlbihob3N0TWV0YSwgW2NvbXBNZXRhXSwgW10sIGRlY2xhcmF0aW9ucyk7XG4gICAgICAgIHZhciBjb25zdHJ1Y3Rpb25LZXl3b3JkID0gSVNfREFSVCA/ICdjb25zdCcgOiAnbmV3JztcbiAgICAgICAgdmFyIGNvbXBpbGVkVGVtcGxhdGVFeHByID1cbiAgICAgICAgICAgIGAke2NvbnN0cnVjdGlvbktleXdvcmR9ICR7QVBQX1ZJRVdfTU9EVUxFX1JFRn1Ib3N0Vmlld0ZhY3RvcnkoJyR7Y29tcE1ldGEuc2VsZWN0b3J9Jywke3ZpZXdGYWN0b3J5RXhwcmVzc2lvbn0pYDtcbiAgICAgICAgdmFyIHZhck5hbWUgPSBjb2RlR2VuSG9zdFZpZXdGYWN0b3J5TmFtZShjb21wTWV0YS50eXBlKTtcbiAgICAgICAgZGVjbGFyYXRpb25zLnB1c2goYCR7Y29kZUdlbkV4cG9ydFZhcmlhYmxlKHZhck5hbWUpfSR7Y29tcGlsZWRUZW1wbGF0ZUV4cHJ9O2ApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBtb2R1bGVVcmwgPSBjb21wb25lbnRzWzBdLmNvbXBvbmVudC50eXBlLm1vZHVsZVVybDtcbiAgICByZXR1cm4gbmV3IFNvdXJjZU1vZHVsZShgJHt0ZW1wbGF0ZU1vZHVsZVVybChtb2R1bGVVcmwpfWAsIGRlY2xhcmF0aW9ucy5qb2luKCdcXG4nKSk7XG4gIH1cblxuICBjb21waWxlU3R5bGVzaGVldENvZGVHZW4oc3R5bGVzaGVldFVybDogc3RyaW5nLCBjc3NUZXh0OiBzdHJpbmcpOiBTb3VyY2VNb2R1bGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0eWxlQ29tcGlsZXIuY29tcGlsZVN0eWxlc2hlZXRDb2RlR2VuKHN0eWxlc2hlZXRVcmwsIGNzc1RleHQpO1xuICB9XG5cblxuXG4gIHByaXZhdGUgX2NvbXBpbGVDb21wb25lbnRSdW50aW1lKGNhY2hlS2V5OiBhbnksIGNvbXBNZXRhOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdEaXJlY3RpdmVzOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZXM6IENvbXBpbGVQaXBlTWV0YWRhdGFbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsaW5nQ29tcG9uZW50c1BhdGg6IGFueVtdKTogQ29tcGlsZWRUZW1wbGF0ZSB7XG4gICAgbGV0IHVuaXFWaWV3RGlyZWN0aXZlcyA9IDxDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXT5yZW1vdmVEdXBsaWNhdGVzKHZpZXdEaXJlY3RpdmVzKTtcbiAgICBsZXQgdW5pcVZpZXdQaXBlcyA9IDxDb21waWxlUGlwZU1ldGFkYXRhW10+cmVtb3ZlRHVwbGljYXRlcyhwaXBlcyk7XG4gICAgdmFyIGNvbXBpbGVkVGVtcGxhdGUgPSB0aGlzLl9jb21waWxlZFRlbXBsYXRlQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICB2YXIgZG9uZSA9IHRoaXMuX2NvbXBpbGVkVGVtcGxhdGVEb25lLmdldChjYWNoZUtleSk7XG4gICAgaWYgKGlzQmxhbmsoY29tcGlsZWRUZW1wbGF0ZSkpIHtcbiAgICAgIGNvbXBpbGVkVGVtcGxhdGUgPSBuZXcgQ29tcGlsZWRUZW1wbGF0ZSgpO1xuICAgICAgdGhpcy5fY29tcGlsZWRUZW1wbGF0ZUNhY2hlLnNldChjYWNoZUtleSwgY29tcGlsZWRUZW1wbGF0ZSk7XG4gICAgICBkb25lID0gUHJvbWlzZVdyYXBwZXJcbiAgICAgICAgICAgICAgICAgLmFsbChbPGFueT50aGlzLl9zdHlsZUNvbXBpbGVyLmNvbXBpbGVDb21wb25lbnRSdW50aW1lKGNvbXBNZXRhLnRlbXBsYXRlKV0uY29uY2F0KFxuICAgICAgICAgICAgICAgICAgICAgdW5pcVZpZXdEaXJlY3RpdmVzLm1hcChkaXJNZXRhID0+IHRoaXMubm9ybWFsaXplRGlyZWN0aXZlTWV0YWRhdGEoZGlyTWV0YSkpKSlcbiAgICAgICAgICAgICAgICAgLnRoZW4oKHN0eWxlc0FuZE5vcm1hbGl6ZWRWaWV3RGlyTWV0YXM6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgdmFyIG5vcm1hbGl6ZWRWaWV3RGlyTWV0YXMgPSBzdHlsZXNBbmROb3JtYWxpemVkVmlld0Rpck1ldGFzLnNsaWNlKDEpO1xuICAgICAgICAgICAgICAgICAgIHZhciBzdHlsZXMgPSBzdHlsZXNBbmROb3JtYWxpemVkVmlld0Rpck1ldGFzWzBdO1xuICAgICAgICAgICAgICAgICAgIHZhciBwYXJzZWRUZW1wbGF0ZSA9IHRoaXMuX3RlbXBsYXRlUGFyc2VyLnBhcnNlKFxuICAgICAgICAgICAgICAgICAgICAgICBjb21wTWV0YS50ZW1wbGF0ZS50ZW1wbGF0ZSwgbm9ybWFsaXplZFZpZXdEaXJNZXRhcywgdW5pcVZpZXdQaXBlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgY29tcE1ldGEudHlwZS5uYW1lKTtcblxuICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZFByb21pc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgdmFyIHVzZWREaXJlY3RpdmVzID0gRGlyZWN0aXZlQ29sbGVjdG9yLmZpbmRVc2VkRGlyZWN0aXZlcyhwYXJzZWRUZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgdXNlZERpcmVjdGl2ZXMuY29tcG9uZW50cy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQgPT4gdGhpcy5fY29tcGlsZU5lc3RlZENvbXBvbmVudFJ1bnRpbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQsIGNvbXBpbGluZ0NvbXBvbmVudHNQYXRoLCBjaGlsZFByb21pc2VzKSk7XG4gICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2VXcmFwcGVyLmFsbChjaGlsZFByb21pc2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoXykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWx0ZXJlZFBpcGVzID0gZmlsdGVyUGlwZXMocGFyc2VkVGVtcGxhdGUsIHVuaXFWaWV3UGlwZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVkVGVtcGxhdGUuaW5pdCh0aGlzLl9jcmVhdGVWaWV3RmFjdG9yeVJ1bnRpbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBNZXRhLCBwYXJzZWRUZW1wbGF0ZSwgdXNlZERpcmVjdGl2ZXMuZGlyZWN0aXZlcywgc3R5bGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZFBpcGVzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVkVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICB9KTtcbiAgICAgIHRoaXMuX2NvbXBpbGVkVGVtcGxhdGVEb25lLnNldChjYWNoZUtleSwgZG9uZSk7XG4gICAgfVxuICAgIHJldHVybiBjb21waWxlZFRlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcGlsZU5lc3RlZENvbXBvbmVudFJ1bnRpbWUoY2hpbGRDb21wb25lbnREaXI6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29tcGlsaW5nQ29tcG9uZW50c1BhdGg6IGFueVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFByb21pc2VzOiBQcm9taXNlPGFueT5bXSkge1xuICAgIHZhciBjb21waWxpbmdDb21wb25lbnRzUGF0aCA9IExpc3RXcmFwcGVyLmNsb25lKHBhcmVudENvbXBpbGluZ0NvbXBvbmVudHNQYXRoKTtcblxuICAgIHZhciBjaGlsZENhY2hlS2V5ID0gY2hpbGRDb21wb25lbnREaXIudHlwZS5ydW50aW1lO1xuICAgIHZhciBjaGlsZFZpZXdEaXJlY3RpdmVzOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXSA9XG4gICAgICAgIHRoaXMuX3J1bnRpbWVNZXRhZGF0YVJlc29sdmVyLmdldFZpZXdEaXJlY3RpdmVzTWV0YWRhdGEoY2hpbGRDb21wb25lbnREaXIudHlwZS5ydW50aW1lKTtcbiAgICB2YXIgY2hpbGRWaWV3UGlwZXM6IENvbXBpbGVQaXBlTWV0YWRhdGFbXSA9XG4gICAgICAgIHRoaXMuX3J1bnRpbWVNZXRhZGF0YVJlc29sdmVyLmdldFZpZXdQaXBlc01ldGFkYXRhKGNoaWxkQ29tcG9uZW50RGlyLnR5cGUucnVudGltZSk7XG4gICAgdmFyIGNoaWxkSXNSZWN1cnNpdmUgPSBMaXN0V3JhcHBlci5jb250YWlucyhjb21waWxpbmdDb21wb25lbnRzUGF0aCwgY2hpbGRDYWNoZUtleSk7XG4gICAgY29tcGlsaW5nQ29tcG9uZW50c1BhdGgucHVzaChjaGlsZENhY2hlS2V5KTtcbiAgICB0aGlzLl9jb21waWxlQ29tcG9uZW50UnVudGltZShjaGlsZENhY2hlS2V5LCBjaGlsZENvbXBvbmVudERpciwgY2hpbGRWaWV3RGlyZWN0aXZlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFZpZXdQaXBlcywgY29tcGlsaW5nQ29tcG9uZW50c1BhdGgpO1xuICAgIGlmICghY2hpbGRJc1JlY3Vyc2l2ZSkge1xuICAgICAgLy8gT25seSB3YWl0IGZvciBhIGNoaWxkIGlmIGl0IGlzIG5vdCBhIGN5Y2xlXG4gICAgICBjaGlsZFByb21pc2VzLnB1c2godGhpcy5fY29tcGlsZWRUZW1wbGF0ZURvbmUuZ2V0KGNoaWxkQ2FjaGVLZXkpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVWaWV3RmFjdG9yeVJ1bnRpbWUoY29tcE1ldGE6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFRlbXBsYXRlOiBUZW1wbGF0ZUFzdFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhW10sIHN0eWxlczogc3RyaW5nW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlczogQ29tcGlsZVBpcGVNZXRhZGF0YVtdKTogRnVuY3Rpb24ge1xuICAgIGlmIChJU19EQVJUIHx8ICF0aGlzLl9nZW5Db25maWcudXNlSml0KSB7XG4gICAgICB2YXIgY2hhbmdlRGV0ZWN0b3JGYWN0b3JpZXMgPSB0aGlzLl9jZENvbXBpbGVyLmNvbXBpbGVDb21wb25lbnRSdW50aW1lKFxuICAgICAgICAgIGNvbXBNZXRhLnR5cGUsIGNvbXBNZXRhLmNoYW5nZURldGVjdGlvbiwgcGFyc2VkVGVtcGxhdGUpO1xuICAgICAgdmFyIHByb3RvVmlld3MgPSB0aGlzLl9wcm90b1ZpZXdDb21waWxlci5jb21waWxlUHJvdG9WaWV3UnVudGltZShcbiAgICAgICAgICB0aGlzLl9yZXNvbHZlZE1ldGFkYXRhQ2FjaGUsIGNvbXBNZXRhLCBwYXJzZWRUZW1wbGF0ZSwgcGlwZXMpO1xuICAgICAgcmV0dXJuIHRoaXMuX3ZpZXdDb21waWxlci5jb21waWxlQ29tcG9uZW50UnVudGltZShcbiAgICAgICAgICBjb21wTWV0YSwgcGFyc2VkVGVtcGxhdGUsIHN0eWxlcywgcHJvdG9WaWV3cy5wcm90b1ZpZXdzLCBjaGFuZ2VEZXRlY3RvckZhY3RvcmllcyxcbiAgICAgICAgICAoY29tcE1ldGEpID0+IHRoaXMuX2dldE5lc3RlZENvbXBvbmVudFZpZXdGYWN0b3J5KGNvbXBNZXRhKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBkZWNsYXJhdGlvbnMgPSBbXTtcbiAgICAgIHZhciB2aWV3RmFjdG9yeUV4cHIgPSB0aGlzLl9jcmVhdGVWaWV3RmFjdG9yeUNvZGVHZW4oJ3Jlc29sdmVkTWV0YWRhdGFDYWNoZScsIGNvbXBNZXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU291cmNlRXhwcmVzc2lvbihbXSwgJ3N0eWxlcycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRUZW1wbGF0ZSwgcGlwZXMsIGRlY2xhcmF0aW9ucyk7XG4gICAgICB2YXIgdmFyczoge1trZXk6IHN0cmluZ106IGFueX0gPVxuICAgICAgICAgIHsnZXhwb3J0cyc6IHt9LCAnc3R5bGVzJzogc3R5bGVzLCAncmVzb2x2ZWRNZXRhZGF0YUNhY2hlJzogdGhpcy5fcmVzb2x2ZWRNZXRhZGF0YUNhY2hlfTtcbiAgICAgIGRpcmVjdGl2ZXMuZm9yRWFjaChkaXJNZXRhID0+IHtcbiAgICAgICAgdmFyc1tkaXJNZXRhLnR5cGUubmFtZV0gPSBkaXJNZXRhLnR5cGUucnVudGltZTtcbiAgICAgICAgaWYgKGRpck1ldGEuaXNDb21wb25lbnQgJiYgZGlyTWV0YS50eXBlLnJ1bnRpbWUgIT09IGNvbXBNZXRhLnR5cGUucnVudGltZSkge1xuICAgICAgICAgIHZhcnNbYHZpZXdGYWN0b3J5XyR7ZGlyTWV0YS50eXBlLm5hbWV9MGBdID0gdGhpcy5fZ2V0TmVzdGVkQ29tcG9uZW50Vmlld0ZhY3RvcnkoZGlyTWV0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcGlwZXMuZm9yRWFjaChwaXBlTWV0YSA9PiB2YXJzW3BpcGVNZXRhLnR5cGUubmFtZV0gPSBwaXBlTWV0YS50eXBlLnJ1bnRpbWUpO1xuICAgICAgdmFyIGRlY2xhcmF0aW9uc1dpdGhvdXRJbXBvcnRzID1cbiAgICAgICAgICBTb3VyY2VNb2R1bGUuZ2V0U291cmNlV2l0aG91dEltcG9ydHMoZGVjbGFyYXRpb25zLmpvaW4oJ1xcbicpKTtcbiAgICAgIHJldHVybiBldmFsRXhwcmVzc2lvbihcbiAgICAgICAgICBgdmlld0ZhY3RvcnlfJHtjb21wTWV0YS50eXBlLm5hbWV9YCwgdmlld0ZhY3RvcnlFeHByLCBkZWNsYXJhdGlvbnNXaXRob3V0SW1wb3J0cyxcbiAgICAgICAgICBtZXJnZVN0cmluZ01hcHMoXG4gICAgICAgICAgICAgIFt2YXJzLCBDSEFOR0VfREVURUNUSU9OX0pJVF9JTVBPUlRTLCBQUk9UT19WSUVXX0pJVF9JTVBPUlRTLCBWSUVXX0pJVF9JTVBPUlRTXSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldE5lc3RlZENvbXBvbmVudFZpZXdGYWN0b3J5KGNvbXBNZXRhOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEpOiBGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBpbGVkVGVtcGxhdGVDYWNoZS5nZXQoY29tcE1ldGEudHlwZS5ydW50aW1lKS52aWV3RmFjdG9yeTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBpbGVDb21wb25lbnRDb2RlR2VuKGNvbXBNZXRhOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlczogQ29tcGlsZVBpcGVNZXRhZGF0YVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXREZWNsYXJhdGlvbnM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBsZXQgdW5pcXVlRGlyZWN0aXZlcyA9IDxDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXT5yZW1vdmVEdXBsaWNhdGVzKGRpcmVjdGl2ZXMpO1xuICAgIGxldCB1bmlxUGlwZXMgPSA8Q29tcGlsZVBpcGVNZXRhZGF0YVtdPnJlbW92ZUR1cGxpY2F0ZXMocGlwZXMpO1xuICAgIHZhciBzdHlsZUV4cHIgPSB0aGlzLl9zdHlsZUNvbXBpbGVyLmNvbXBpbGVDb21wb25lbnRDb2RlR2VuKGNvbXBNZXRhLnRlbXBsYXRlKTtcbiAgICB2YXIgcGFyc2VkVGVtcGxhdGUgPSB0aGlzLl90ZW1wbGF0ZVBhcnNlci5wYXJzZShjb21wTWV0YS50ZW1wbGF0ZS50ZW1wbGF0ZSwgdW5pcXVlRGlyZWN0aXZlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxUGlwZXMsIGNvbXBNZXRhLnR5cGUubmFtZSk7XG4gICAgdmFyIGZpbHRlcmVkUGlwZXMgPSBmaWx0ZXJQaXBlcyhwYXJzZWRUZW1wbGF0ZSwgdW5pcVBpcGVzKTtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlVmlld0ZhY3RvcnlDb2RlR2VuKFxuICAgICAgICBgJHtNRVRBREFUQV9DQUNIRV9NT0RVTEVfUkVGfUNPREVHRU5fUkVTT0xWRURfTUVUQURBVEFfQ0FDSEVgLCBjb21wTWV0YSwgc3R5bGVFeHByLFxuICAgICAgICBwYXJzZWRUZW1wbGF0ZSwgZmlsdGVyZWRQaXBlcywgdGFyZ2V0RGVjbGFyYXRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZVZpZXdGYWN0b3J5Q29kZUdlbihyZXNvbHZlZE1ldGFkYXRhQ2FjaGVFeHByOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wTWV0YTogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhLCBzdHlsZUV4cHI6IFNvdXJjZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRUZW1wbGF0ZTogVGVtcGxhdGVBc3RbXSwgcGlwZXM6IENvbXBpbGVQaXBlTWV0YWRhdGFbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldERlY2xhcmF0aW9uczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHZhciBjaGFuZ2VEZXRlY3RvcnNFeHBycyA9IHRoaXMuX2NkQ29tcGlsZXIuY29tcGlsZUNvbXBvbmVudENvZGVHZW4oXG4gICAgICAgIGNvbXBNZXRhLnR5cGUsIGNvbXBNZXRhLmNoYW5nZURldGVjdGlvbiwgcGFyc2VkVGVtcGxhdGUpO1xuICAgIHZhciBwcm90b1ZpZXdFeHBycyA9IHRoaXMuX3Byb3RvVmlld0NvbXBpbGVyLmNvbXBpbGVQcm90b1ZpZXdDb2RlR2VuKFxuICAgICAgICBuZXcgRXhwcmVzc2lvbihyZXNvbHZlZE1ldGFkYXRhQ2FjaGVFeHByKSwgY29tcE1ldGEsIHBhcnNlZFRlbXBsYXRlLCBwaXBlcyk7XG4gICAgdmFyIHZpZXdGYWN0b3J5RXhwciA9IHRoaXMuX3ZpZXdDb21waWxlci5jb21waWxlQ29tcG9uZW50Q29kZUdlbihcbiAgICAgICAgY29tcE1ldGEsIHBhcnNlZFRlbXBsYXRlLCBzdHlsZUV4cHIsIHByb3RvVmlld0V4cHJzLnByb3RvVmlld3MsIGNoYW5nZURldGVjdG9yc0V4cHJzLFxuICAgICAgICBjb2RlR2VuQ29tcG9uZW50Vmlld0ZhY3RvcnlOYW1lKTtcblxuICAgIGFkZEFsbChjaGFuZ2VEZXRlY3RvcnNFeHBycy5kZWNsYXJhdGlvbnMsIHRhcmdldERlY2xhcmF0aW9ucyk7XG4gICAgYWRkQWxsKHByb3RvVmlld0V4cHJzLmRlY2xhcmF0aW9ucywgdGFyZ2V0RGVjbGFyYXRpb25zKTtcbiAgICBhZGRBbGwodmlld0ZhY3RvcnlFeHByLmRlY2xhcmF0aW9ucywgdGFyZ2V0RGVjbGFyYXRpb25zKTtcblxuICAgIHJldHVybiB2aWV3RmFjdG9yeUV4cHIuZXhwcmVzc2lvbjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm9ybWFsaXplZENvbXBvbmVudFdpdGhWaWV3RGlyZWN0aXZlcyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb21wb25lbnQ6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgICAgICAgICAgICAgcHVibGljIGRpcmVjdGl2ZXM6IENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YVtdLCBwdWJsaWMgcGlwZXM6IENvbXBpbGVQaXBlTWV0YWRhdGFbXSkge31cbn1cblxuY2xhc3MgQ29tcGlsZWRUZW1wbGF0ZSB7XG4gIHZpZXdGYWN0b3J5OiBGdW5jdGlvbiA9IG51bGw7XG4gIGluaXQodmlld0ZhY3Rvcnk6IEZ1bmN0aW9uKSB7IHRoaXMudmlld0ZhY3RvcnkgPSB2aWV3RmFjdG9yeTsgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRDb21wb25lbnQobWV0YTogQ29tcGlsZURpcmVjdGl2ZU1ldGFkYXRhKSB7XG4gIGlmICghbWV0YS5pc0NvbXBvbmVudCkge1xuICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBDb3VsZCBub3QgY29tcGlsZSAnJHttZXRhLnR5cGUubmFtZX0nIGJlY2F1c2UgaXQgaXMgbm90IGEgY29tcG9uZW50LmApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRlbXBsYXRlTW9kdWxlVXJsKG1vZHVsZVVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgdmFyIHVybFdpdGhvdXRTdWZmaXggPSBtb2R1bGVVcmwuc3Vic3RyaW5nKDAsIG1vZHVsZVVybC5sZW5ndGggLSBNT0RVTEVfU1VGRklYLmxlbmd0aCk7XG4gIHJldHVybiBgJHt1cmxXaXRob3V0U3VmZml4fS50ZW1wbGF0ZSR7TU9EVUxFX1NVRkZJWH1gO1xufVxuXG5cbmZ1bmN0aW9uIGNvZGVHZW5Ib3N0Vmlld0ZhY3RvcnlOYW1lKHR5cGU6IENvbXBpbGVUeXBlTWV0YWRhdGEpOiBzdHJpbmcge1xuICByZXR1cm4gYGhvc3RWaWV3RmFjdG9yeV8ke3R5cGUubmFtZX1gO1xufVxuXG5mdW5jdGlvbiBjb2RlR2VuQ29tcG9uZW50Vmlld0ZhY3RvcnlOYW1lKG5lc3RlZENvbXBUeXBlOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGEpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7bW9kdWxlUmVmKHRlbXBsYXRlTW9kdWxlVXJsKG5lc3RlZENvbXBUeXBlLnR5cGUubW9kdWxlVXJsKSl9dmlld0ZhY3RvcnlfJHtuZXN0ZWRDb21wVHlwZS50eXBlLm5hbWV9MGA7XG59XG5cbmZ1bmN0aW9uIG1lcmdlU3RyaW5nTWFwcyhtYXBzOiBBcnJheTx7W2tleTogc3RyaW5nXTogYW55fT4pOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgbWFwcy5mb3JFYWNoKFxuICAgICAgKG1hcCkgPT4geyBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2gobWFwLCAodmFsdWUsIGtleSkgPT4geyByZXN1bHRba2V5XSA9IHZhbHVlOyB9KTsgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUR1cGxpY2F0ZXMoaXRlbXM6IENvbXBpbGVNZXRhZGF0YVdpdGhUeXBlW10pOiBDb21waWxlTWV0YWRhdGFXaXRoVHlwZVtdIHtcbiAgbGV0IHJlcyA9IFtdO1xuICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgIGxldCBoYXNNYXRjaCA9XG4gICAgICAgIHJlcy5maWx0ZXIociA9PiByLnR5cGUubmFtZSA9PSBpdGVtLnR5cGUubmFtZSAmJiByLnR5cGUubW9kdWxlVXJsID09IGl0ZW0udHlwZS5tb2R1bGVVcmwgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHIudHlwZS5ydW50aW1lID09IGl0ZW0udHlwZS5ydW50aW1lKVxuICAgICAgICAgICAgLmxlbmd0aCA+IDA7XG4gICAgaWYgKCFoYXNNYXRjaCkge1xuICAgICAgcmVzLnB1c2goaXRlbSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlcztcbn1cblxuY2xhc3MgRGlyZWN0aXZlQ29sbGVjdG9yIGltcGxlbWVudHMgVGVtcGxhdGVBc3RWaXNpdG9yIHtcbiAgc3RhdGljIGZpbmRVc2VkRGlyZWN0aXZlcyhwYXJzZWRUZW1wbGF0ZTogVGVtcGxhdGVBc3RbXSk6IERpcmVjdGl2ZUNvbGxlY3RvciB7XG4gICAgdmFyIGNvbGxlY3RvciA9IG5ldyBEaXJlY3RpdmVDb2xsZWN0b3IoKTtcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKGNvbGxlY3RvciwgcGFyc2VkVGVtcGxhdGUpO1xuICAgIHJldHVybiBjb2xsZWN0b3I7XG4gIH1cblxuICBkaXJlY3RpdmVzOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXSA9IFtdO1xuICBjb21wb25lbnRzOiBDb21waWxlRGlyZWN0aXZlTWV0YWRhdGFbXSA9IFtdO1xuXG4gIHZpc2l0Qm91bmRUZXh0KGFzdDogQm91bmRUZXh0QXN0LCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICB2aXNpdFRleHQoYXN0OiBUZXh0QXN0LCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuXG4gIHZpc2l0TmdDb250ZW50KGFzdDogTmdDb250ZW50QXN0LCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuXG4gIHZpc2l0RWxlbWVudChhc3Q6IEVsZW1lbnRBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3QuZGlyZWN0aXZlcyk7XG4gICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3QuY2hpbGRyZW4pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmlzaXRFbWJlZGRlZFRlbXBsYXRlKGFzdDogRW1iZWRkZWRUZW1wbGF0ZUFzdCwgY29udGV4dDogYW55KTogYW55IHtcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKHRoaXMsIGFzdC5kaXJlY3RpdmVzKTtcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKHRoaXMsIGFzdC5jaGlsZHJlbik7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRWYXJpYWJsZShhc3Q6IFZhcmlhYmxlQXN0LCBjdHg6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0QXR0cihhc3Q6IEF0dHJBc3QsIGF0dHJOYW1lQW5kVmFsdWVzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0RGlyZWN0aXZlKGFzdDogRGlyZWN0aXZlQXN0LCBjdHg6IGFueSk6IGFueSB7XG4gICAgaWYgKGFzdC5kaXJlY3RpdmUuaXNDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50cy5wdXNoKGFzdC5kaXJlY3RpdmUpO1xuICAgIH1cbiAgICB0aGlzLmRpcmVjdGl2ZXMucHVzaChhc3QuZGlyZWN0aXZlKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdEV2ZW50KGFzdDogQm91bmRFdmVudEFzdCwgZXZlbnRUYXJnZXRBbmROYW1lczogTWFwPHN0cmluZywgQm91bmRFdmVudEFzdD4pOiBhbnkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0RGlyZWN0aXZlUHJvcGVydHkoYXN0OiBCb3VuZERpcmVjdGl2ZVByb3BlcnR5QXN0LCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICB2aXNpdEVsZW1lbnRQcm9wZXJ0eShhc3Q6IEJvdW5kRWxlbWVudFByb3BlcnR5QXN0LCBjb250ZXh0OiBhbnkpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxufVxuXG5cbmZ1bmN0aW9uIGZpbHRlclBpcGVzKHRlbXBsYXRlOiBUZW1wbGF0ZUFzdFtdLFxuICAgICAgICAgICAgICAgICAgICAgYWxsUGlwZXM6IENvbXBpbGVQaXBlTWV0YWRhdGFbXSk6IENvbXBpbGVQaXBlTWV0YWRhdGFbXSB7XG4gIHZhciB2aXNpdG9yID0gbmV3IFBpcGVWaXNpdG9yKCk7XG4gIHRlbXBsYXRlVmlzaXRBbGwodmlzaXRvciwgdGVtcGxhdGUpO1xuICByZXR1cm4gYWxsUGlwZXMuZmlsdGVyKChwaXBlTWV0YSkgPT4gU2V0V3JhcHBlci5oYXModmlzaXRvci5jb2xsZWN0b3IucGlwZXMsIHBpcGVNZXRhLm5hbWUpKTtcbn1cblxuY2xhc3MgUGlwZVZpc2l0b3IgaW1wbGVtZW50cyBUZW1wbGF0ZUFzdFZpc2l0b3Ige1xuICBjb2xsZWN0b3I6IFBpcGVDb2xsZWN0b3IgPSBuZXcgUGlwZUNvbGxlY3RvcigpO1xuXG4gIHZpc2l0Qm91bmRUZXh0KGFzdDogQm91bmRUZXh0QXN0LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIGFzdC52YWx1ZS52aXNpdCh0aGlzLmNvbGxlY3Rvcik7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRUZXh0KGFzdDogVGV4dEFzdCwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cblxuICB2aXNpdE5nQ29udGVudChhc3Q6IE5nQ29udGVudEFzdCwgY29udGV4dDogYW55KTogYW55IHsgcmV0dXJuIG51bGw7IH1cblxuICB2aXNpdEVsZW1lbnQoYXN0OiBFbGVtZW50QXN0LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIHRlbXBsYXRlVmlzaXRBbGwodGhpcywgYXN0LmlucHV0cyk7XG4gICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3Qub3V0cHV0cyk7XG4gICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3QuZGlyZWN0aXZlcyk7XG4gICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3QuY2hpbGRyZW4pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmlzaXRFbWJlZGRlZFRlbXBsYXRlKGFzdDogRW1iZWRkZWRUZW1wbGF0ZUFzdCwgY29udGV4dDogYW55KTogYW55IHtcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKHRoaXMsIGFzdC5vdXRwdXRzKTtcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKHRoaXMsIGFzdC5kaXJlY3RpdmVzKTtcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKHRoaXMsIGFzdC5jaGlsZHJlbik7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRWYXJpYWJsZShhc3Q6IFZhcmlhYmxlQXN0LCBjdHg6IGFueSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0QXR0cihhc3Q6IEF0dHJBc3QsIGF0dHJOYW1lQW5kVmFsdWVzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0RGlyZWN0aXZlKGFzdDogRGlyZWN0aXZlQXN0LCBjdHg6IGFueSk6IGFueSB7XG4gICAgdGVtcGxhdGVWaXNpdEFsbCh0aGlzLCBhc3QuaW5wdXRzKTtcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKHRoaXMsIGFzdC5ob3N0RXZlbnRzKTtcbiAgICB0ZW1wbGF0ZVZpc2l0QWxsKHRoaXMsIGFzdC5ob3N0UHJvcGVydGllcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRFdmVudChhc3Q6IEJvdW5kRXZlbnRBc3QsIGV2ZW50VGFyZ2V0QW5kTmFtZXM6IE1hcDxzdHJpbmcsIEJvdW5kRXZlbnRBc3Q+KTogYW55IHtcbiAgICBhc3QuaGFuZGxlci52aXNpdCh0aGlzLmNvbGxlY3Rvcik7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXREaXJlY3RpdmVQcm9wZXJ0eShhc3Q6IEJvdW5kRGlyZWN0aXZlUHJvcGVydHlBc3QsIGNvbnRleHQ6IGFueSk6IGFueSB7XG4gICAgYXN0LnZhbHVlLnZpc2l0KHRoaXMuY29sbGVjdG9yKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdEVsZW1lbnRQcm9wZXJ0eShhc3Q6IEJvdW5kRWxlbWVudFByb3BlcnR5QXN0LCBjb250ZXh0OiBhbnkpOiBhbnkge1xuICAgIGFzdC52YWx1ZS52aXNpdCh0aGlzLmNvbGxlY3Rvcik7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar compiler_1 = require('angular2/src/core/linker/compiler');\r\nvar view_ref_1 = require('angular2/src/core/linker/view_ref');\r\nvar template_compiler_1 = require('./template_compiler');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar RuntimeCompiler = (function (_super) {\r\n __extends(RuntimeCompiler, _super);\r\n function RuntimeCompiler() {\r\n _super.apply(this, arguments);\r\n }\r\n return RuntimeCompiler;\r\n})(compiler_1.Compiler);\r\nexports.RuntimeCompiler = RuntimeCompiler;\r\nvar RuntimeCompiler_ = (function (_super) {\r\n __extends(RuntimeCompiler_, _super);\r\n function RuntimeCompiler_(_templateCompiler) {\r\n _super.call(this);\r\n this._templateCompiler = _templateCompiler;\r\n }\r\n RuntimeCompiler_.prototype.compileInHost = function (componentType) {\r\n return this._templateCompiler.compileHostComponentRuntime(componentType)\r\n .then(function (hostViewFactory) { return new view_ref_1.HostViewFactoryRef_(hostViewFactory); });\r\n };\r\n RuntimeCompiler_.prototype.clearCache = function () {\r\n _super.prototype.clearCache.call(this);\r\n this._templateCompiler.clearCache();\r\n };\r\n RuntimeCompiler_ = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [template_compiler_1.TemplateCompiler])\r\n ], RuntimeCompiler_);\r\n return RuntimeCompiler_;\r\n})(compiler_1.Compiler_);\r\nexports.RuntimeCompiler_ = RuntimeCompiler_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZV9jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21waWxlci9ydW50aW1lX2NvbXBpbGVyLnRzIl0sIm5hbWVzIjpbIlJ1bnRpbWVDb21waWxlciIsIlJ1bnRpbWVDb21waWxlci5jb25zdHJ1Y3RvciIsIlJ1bnRpbWVDb21waWxlcl8iLCJSdW50aW1lQ29tcGlsZXJfLmNvbnN0cnVjdG9yIiwiUnVudGltZUNvbXBpbGVyXy5jb21waWxlSW5Ib3N0IiwiUnVudGltZUNvbXBpbGVyXy5jbGVhckNhY2hlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLHlCQUFrQyxtQ0FBbUMsQ0FBQyxDQUFBO0FBQ3RFLHlCQUFzRCxtQ0FBbUMsQ0FBQyxDQUFBO0FBQzFGLGtDQUErQixxQkFBcUIsQ0FBQyxDQUFBO0FBRXJELG1CQUF5QixzQkFBc0IsQ0FBQyxDQUFBO0FBR2hEO0lBQThDQSxtQ0FBUUE7SUFBdERBO1FBQThDQyw4QkFBUUE7SUFHdERBLENBQUNBO0lBQURELHNCQUFDQTtBQUFEQSxDQUFDQSxBQUhELEVBQThDLG1CQUFRLEVBR3JEO0FBSHFCLHVCQUFlLGtCQUdwQyxDQUFBO0FBRUQ7SUFDc0NFLG9DQUFTQTtJQUM3Q0EsMEJBQW9CQSxpQkFBbUNBO1FBQUlDLGlCQUFPQSxDQUFDQTtRQUEvQ0Esc0JBQWlCQSxHQUFqQkEsaUJBQWlCQSxDQUFrQkE7SUFBYUEsQ0FBQ0E7SUFFckVELHdDQUFhQSxHQUFiQSxVQUFjQSxhQUFtQkE7UUFDL0JFLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLGlCQUFpQkEsQ0FBQ0EsMkJBQTJCQSxDQUFDQSxhQUFhQSxDQUFDQTthQUNuRUEsSUFBSUEsQ0FBQ0EsVUFBQUEsZUFBZUEsSUFBSUEsT0FBQUEsSUFBSUEsOEJBQW1CQSxDQUFDQSxlQUFlQSxDQUFDQSxFQUF4Q0EsQ0FBd0NBLENBQUNBLENBQUNBO0lBQ3pFQSxDQUFDQTtJQUVERixxQ0FBVUEsR0FBVkE7UUFDRUcsZ0JBQUtBLENBQUNBLFVBQVVBLFdBQUVBLENBQUNBO1FBQ25CQSxJQUFJQSxDQUFDQSxpQkFBaUJBLENBQUNBLFVBQVVBLEVBQUVBLENBQUNBO0lBQ3RDQSxDQUFDQTtJQVpISDtRQUFDQSxlQUFVQSxFQUFFQTs7eUJBYVpBO0lBQURBLHVCQUFDQTtBQUFEQSxDQUFDQSxBQWJELEVBQ3NDLG9CQUFTLEVBWTlDO0FBWlksd0JBQWdCLG1CQVk1QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21waWxlciwgQ29tcGlsZXJffSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvY29tcGlsZXInO1xuaW1wb3J0IHtIb3N0Vmlld0ZhY3RvcnlSZWYsIEhvc3RWaWV3RmFjdG9yeVJlZl99IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3X3JlZic7XG5pbXBvcnQge1RlbXBsYXRlQ29tcGlsZXJ9IGZyb20gJy4vdGVtcGxhdGVfY29tcGlsZXInO1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7VHlwZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJ1bnRpbWVDb21waWxlciBleHRlbmRzIENvbXBpbGVyIHtcbiAgYWJzdHJhY3QgY29tcGlsZUluSG9zdChjb21wb25lbnRUeXBlOiBUeXBlKTogUHJvbWlzZTxIb3N0Vmlld0ZhY3RvcnlSZWY+O1xuICBhYnN0cmFjdCBjbGVhckNhY2hlKCk7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSdW50aW1lQ29tcGlsZXJfIGV4dGVuZHMgQ29tcGlsZXJfIGltcGxlbWVudHMgUnVudGltZUNvbXBpbGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdGVtcGxhdGVDb21waWxlcjogVGVtcGxhdGVDb21waWxlcikgeyBzdXBlcigpOyB9XG5cbiAgY29tcGlsZUluSG9zdChjb21wb25lbnRUeXBlOiBUeXBlKTogUHJvbWlzZTxIb3N0Vmlld0ZhY3RvcnlSZWZfPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlQ29tcGlsZXIuY29tcGlsZUhvc3RDb21wb25lbnRSdW50aW1lKGNvbXBvbmVudFR5cGUpXG4gICAgICAgIC50aGVuKGhvc3RWaWV3RmFjdG9yeSA9PiBuZXcgSG9zdFZpZXdGYWN0b3J5UmVmXyhob3N0Vmlld0ZhY3RvcnkpKTtcbiAgfVxuXG4gIGNsZWFyQ2FjaGUoKSB7XG4gICAgc3VwZXIuY2xlYXJDYWNoZSgpO1xuICAgIHRoaXMuX3RlbXBsYXRlQ29tcGlsZXIuY2xlYXJDYWNoZSgpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nexports.DOM = null;\r\nfunction setRootDomAdapter(adapter) {\r\n if (lang_1.isBlank(exports.DOM)) {\r\n exports.DOM = adapter;\r\n }\r\n}\r\nexports.setRootDomAdapter = setRootDomAdapter;\r\n/* tslint:disable:requireParameterType */\r\n/**\r\n * Provides DOM operations in an environment-agnostic way.\r\n */\r\nvar DomAdapter = (function () {\r\n function DomAdapter() {\r\n }\r\n Object.defineProperty(DomAdapter.prototype, \"attrToPropMap\", {\r\n /**\r\n * Maps attribute names to their corresponding property names for cases\r\n * where attribute name doesn't match property name.\r\n */\r\n get: function () { return this._attrToPropMap; },\r\n set: function (value) { this._attrToPropMap = value; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n ;\r\n return DomAdapter;\r\n})();\r\nexports.DomAdapter = DomAdapter;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tX2FkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyLnRzIl0sIm5hbWVzIjpbInNldFJvb3REb21BZGFwdGVyIiwiRG9tQWRhcHRlciIsIkRvbUFkYXB0ZXIuY29uc3RydWN0b3IiLCJEb21BZGFwdGVyLmF0dHJUb1Byb3BNYXAiXSwibWFwcGluZ3MiOiJBQUFBLHFCQUE0QiwwQkFBMEIsQ0FBQyxDQUFBO0FBRTVDLFdBQUcsR0FBZSxJQUFJLENBQUM7QUFFbEMsMkJBQWtDLE9BQW1CO0lBQ25EQSxFQUFFQSxDQUFDQSxDQUFDQSxjQUFPQSxDQUFDQSxXQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNqQkEsV0FBR0EsR0FBR0EsT0FBT0EsQ0FBQ0E7SUFDaEJBLENBQUNBO0FBQ0hBLENBQUNBO0FBSmUseUJBQWlCLG9CQUloQyxDQUFBO0FBRUQseUNBQXlDO0FBQ3pDOztHQUVHO0FBQ0g7SUFBQUM7SUFnSUFDLENBQUNBO0lBOUdDRCxzQkFBSUEscUNBQWFBO1FBSmpCQTs7O1dBR0dBO2FBQ0hBLGNBQStDRSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxjQUFjQSxDQUFDQSxDQUFDQSxDQUFDQTthQUM1RUYsVUFBa0JBLEtBQThCQSxJQUFJRSxJQUFJQSxDQUFDQSxjQUFjQSxHQUFHQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BRE5GOzs7SUE4RzlFQSxpQkFBQ0E7QUFBREEsQ0FBQ0EsQUFoSUQsSUFnSUM7QUFoSXFCLGtCQUFVLGFBZ0kvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc0JsYW5rLCBUeXBlfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG5leHBvcnQgdmFyIERPTTogRG9tQWRhcHRlciA9IG51bGw7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRSb290RG9tQWRhcHRlcihhZGFwdGVyOiBEb21BZGFwdGVyKSB7XG4gIGlmIChpc0JsYW5rKERPTSkpIHtcbiAgICBET00gPSBhZGFwdGVyO1xuICB9XG59XG5cbi8qIHRzbGludDpkaXNhYmxlOnJlcXVpcmVQYXJhbWV0ZXJUeXBlICovXG4vKipcbiAqIFByb3ZpZGVzIERPTSBvcGVyYXRpb25zIGluIGFuIGVudmlyb25tZW50LWFnbm9zdGljIHdheS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERvbUFkYXB0ZXIge1xuICBhYnN0cmFjdCBoYXNQcm9wZXJ0eShlbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBib29sZWFuO1xuICBhYnN0cmFjdCBzZXRQcm9wZXJ0eShlbDogRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTtcbiAgYWJzdHJhY3QgZ2V0UHJvcGVydHkoZWw6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGFueTtcbiAgYWJzdHJhY3QgaW52b2tlKGVsOiBFbGVtZW50LCBtZXRob2ROYW1lOiBzdHJpbmcsIGFyZ3M6IGFueVtdKTogYW55O1xuXG4gIGFic3RyYWN0IGxvZ0Vycm9yKGVycm9yKTtcbiAgYWJzdHJhY3QgbG9nKGVycm9yKTtcbiAgYWJzdHJhY3QgbG9nR3JvdXAoZXJyb3IpO1xuICBhYnN0cmFjdCBsb2dHcm91cEVuZCgpO1xuXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICBhYnN0cmFjdCBnZXRYSFIoKTogVHlwZTtcblxuICAvKipcbiAgICogTWFwcyBhdHRyaWJ1dGUgbmFtZXMgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBuYW1lcyBmb3IgY2FzZXNcbiAgICogd2hlcmUgYXR0cmlidXRlIG5hbWUgZG9lc24ndCBtYXRjaCBwcm9wZXJ0eSBuYW1lLlxuICAgKi9cbiAgZ2V0IGF0dHJUb1Byb3BNYXAoKToge1trZXk6IHN0cmluZ106IHN0cmluZ30geyByZXR1cm4gdGhpcy5fYXR0clRvUHJvcE1hcDsgfTtcbiAgc2V0IGF0dHJUb1Byb3BNYXAodmFsdWU6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KSB7IHRoaXMuX2F0dHJUb1Byb3BNYXAgPSB2YWx1ZTsgfTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfYXR0clRvUHJvcE1hcDoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG5cbiAgYWJzdHJhY3QgcGFyc2UodGVtcGxhdGVIdG1sOiBzdHJpbmcpO1xuICBhYnN0cmFjdCBxdWVyeShzZWxlY3Rvcjogc3RyaW5nKTogYW55O1xuICBhYnN0cmFjdCBxdWVyeVNlbGVjdG9yKGVsLCBzZWxlY3Rvcjogc3RyaW5nKTogSFRNTEVsZW1lbnQ7XG4gIGFic3RyYWN0IHF1ZXJ5U2VsZWN0b3JBbGwoZWwsIHNlbGVjdG9yOiBzdHJpbmcpOiBhbnlbXTtcbiAgYWJzdHJhY3Qgb24oZWwsIGV2dCwgbGlzdGVuZXIpO1xuICBhYnN0cmFjdCBvbkFuZENhbmNlbChlbCwgZXZ0LCBsaXN0ZW5lcik6IEZ1bmN0aW9uO1xuICBhYnN0cmFjdCBkaXNwYXRjaEV2ZW50KGVsLCBldnQpO1xuICBhYnN0cmFjdCBjcmVhdGVNb3VzZUV2ZW50KGV2ZW50VHlwZSk6IGFueTtcbiAgYWJzdHJhY3QgY3JlYXRlRXZlbnQoZXZlbnRUeXBlOiBzdHJpbmcpOiBhbnk7XG4gIGFic3RyYWN0IHByZXZlbnREZWZhdWx0KGV2dCk7XG4gIGFic3RyYWN0IGlzUHJldmVudGVkKGV2dCk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGdldElubmVySFRNTChlbCk6IHN0cmluZztcbiAgYWJzdHJhY3QgZ2V0T3V0ZXJIVE1MKGVsKTogc3RyaW5nO1xuICBhYnN0cmFjdCBub2RlTmFtZShub2RlKTogc3RyaW5nO1xuICBhYnN0cmFjdCBub2RlVmFsdWUobm9kZSk6IHN0cmluZztcbiAgYWJzdHJhY3QgdHlwZShub2RlKTogc3RyaW5nO1xuICBhYnN0cmFjdCBjb250ZW50KG5vZGUpOiBhbnk7XG4gIGFic3RyYWN0IGZpcnN0Q2hpbGQoZWwpOiBOb2RlO1xuICBhYnN0cmFjdCBuZXh0U2libGluZyhlbCk6IE5vZGU7XG4gIGFic3RyYWN0IHBhcmVudEVsZW1lbnQoZWwpOiBOb2RlO1xuICBhYnN0cmFjdCBjaGlsZE5vZGVzKGVsKTogTm9kZVtdO1xuICBhYnN0cmFjdCBjaGlsZE5vZGVzQXNMaXN0KGVsKTogTm9kZVtdO1xuICBhYnN0cmFjdCBjbGVhck5vZGVzKGVsKTtcbiAgYWJzdHJhY3QgYXBwZW5kQ2hpbGQoZWwsIG5vZGUpO1xuICBhYnN0cmFjdCByZW1vdmVDaGlsZChlbCwgbm9kZSk7XG4gIGFic3RyYWN0IHJlcGxhY2VDaGlsZChlbCwgbmV3Tm9kZSwgb2xkTm9kZSk7XG4gIGFic3RyYWN0IHJlbW92ZShlbCk6IE5vZGU7XG4gIGFic3RyYWN0IGluc2VydEJlZm9yZShlbCwgbm9kZSk7XG4gIGFic3RyYWN0IGluc2VydEFsbEJlZm9yZShlbCwgbm9kZXMpO1xuICBhYnN0cmFjdCBpbnNlcnRBZnRlcihlbCwgbm9kZSk7XG4gIGFic3RyYWN0IHNldElubmVySFRNTChlbCwgdmFsdWUpO1xuICBhYnN0cmFjdCBnZXRUZXh0KGVsKTogc3RyaW5nO1xuICBhYnN0cmFjdCBzZXRUZXh0KGVsLCB2YWx1ZTogc3RyaW5nKTtcbiAgYWJzdHJhY3QgZ2V0VmFsdWUoZWwpOiBzdHJpbmc7XG4gIGFic3RyYWN0IHNldFZhbHVlKGVsLCB2YWx1ZTogc3RyaW5nKTtcbiAgYWJzdHJhY3QgZ2V0Q2hlY2tlZChlbCk6IGJvb2xlYW47XG4gIGFic3RyYWN0IHNldENoZWNrZWQoZWwsIHZhbHVlOiBib29sZWFuKTtcbiAgYWJzdHJhY3QgY3JlYXRlQ29tbWVudCh0ZXh0OiBzdHJpbmcpOiBhbnk7XG4gIGFic3RyYWN0IGNyZWF0ZVRlbXBsYXRlKGh0bWwpOiBIVE1MRWxlbWVudDtcbiAgYWJzdHJhY3QgY3JlYXRlRWxlbWVudCh0YWdOYW1lLCBkb2M/KTogSFRNTEVsZW1lbnQ7XG4gIGFic3RyYWN0IGNyZWF0ZUVsZW1lbnROUyhuczogc3RyaW5nLCB0YWdOYW1lOiBzdHJpbmcsIGRvYz8pOiBFbGVtZW50O1xuICBhYnN0cmFjdCBjcmVhdGVUZXh0Tm9kZSh0ZXh0OiBzdHJpbmcsIGRvYz8pOiBUZXh0O1xuICBhYnN0cmFjdCBjcmVhdGVTY3JpcHRUYWcoYXR0ck5hbWU6IHN0cmluZywgYXR0clZhbHVlOiBzdHJpbmcsIGRvYz8pOiBIVE1MRWxlbWVudDtcbiAgYWJzdHJhY3QgY3JlYXRlU3R5bGVFbGVtZW50KGNzczogc3RyaW5nLCBkb2M/KTogSFRNTFN0eWxlRWxlbWVudDtcbiAgYWJzdHJhY3QgY3JlYXRlU2hhZG93Um9vdChlbCk6IGFueTtcbiAgYWJzdHJhY3QgZ2V0U2hhZG93Um9vdChlbCk6IGFueTtcbiAgYWJzdHJhY3QgZ2V0SG9zdChlbCk6IGFueTtcbiAgYWJzdHJhY3QgZ2V0RGlzdHJpYnV0ZWROb2RlcyhlbCk6IE5vZGVbXTtcbiAgYWJzdHJhY3QgY2xvbmUgLyo8VCBleHRlbmRzIE5vZGU+Ki8gKG5vZGU6IE5vZGUgLypUKi8pOiBOb2RlIC8qVCovO1xuICBhYnN0cmFjdCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IEhUTUxFbGVtZW50W107XG4gIGFic3RyYWN0IGdldEVsZW1lbnRzQnlUYWdOYW1lKGVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IEhUTUxFbGVtZW50W107XG4gIGFic3RyYWN0IGNsYXNzTGlzdChlbGVtZW50KTogYW55W107XG4gIGFic3RyYWN0IGFkZENsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZTogc3RyaW5nKTtcbiAgYWJzdHJhY3QgcmVtb3ZlQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lOiBzdHJpbmcpO1xuICBhYnN0cmFjdCBoYXNDbGFzcyhlbGVtZW50LCBjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW47XG4gIGFic3RyYWN0IHNldFN0eWxlKGVsZW1lbnQsIHN0eWxlTmFtZTogc3RyaW5nLCBzdHlsZVZhbHVlOiBzdHJpbmcpO1xuICBhYnN0cmFjdCByZW1vdmVTdHlsZShlbGVtZW50LCBzdHlsZU5hbWU6IHN0cmluZyk7XG4gIGFic3RyYWN0IGdldFN0eWxlKGVsZW1lbnQsIHN0eWxlTmFtZTogc3RyaW5nKTogc3RyaW5nO1xuICBhYnN0cmFjdCBoYXNTdHlsZShlbGVtZW50LCBzdHlsZU5hbWU6IHN0cmluZywgc3R5bGVWYWx1ZT86IHN0cmluZyk6IGJvb2xlYW47XG4gIGFic3RyYWN0IHRhZ05hbWUoZWxlbWVudCk6IHN0cmluZztcbiAgYWJzdHJhY3QgYXR0cmlidXRlTWFwKGVsZW1lbnQpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuICBhYnN0cmFjdCBoYXNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlOiBzdHJpbmcpOiBib29sZWFuO1xuICBhYnN0cmFjdCBoYXNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuczogc3RyaW5nLCBhdHRyaWJ1dGU6IHN0cmluZyk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGdldEF0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGU6IHN0cmluZyk6IHN0cmluZztcbiAgYWJzdHJhY3QgZ2V0QXR0cmlidXRlTlMoZWxlbWVudCwgbnM6IHN0cmluZywgYXR0cmlidXRlOiBzdHJpbmcpOiBzdHJpbmc7XG4gIGFic3RyYWN0IHNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpO1xuICBhYnN0cmFjdCBzZXRBdHRyaWJ1dGVOUyhlbGVtZW50LCBuczogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpO1xuICBhYnN0cmFjdCByZW1vdmVBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlOiBzdHJpbmcpO1xuICBhYnN0cmFjdCByZW1vdmVBdHRyaWJ1dGVOUyhlbGVtZW50LCBuczogc3RyaW5nLCBhdHRyaWJ1dGU6IHN0cmluZyk7XG4gIGFic3RyYWN0IHRlbXBsYXRlQXdhcmVSb290KGVsKTtcbiAgYWJzdHJhY3QgY3JlYXRlSHRtbERvY3VtZW50KCk6IEhUTUxEb2N1bWVudDtcbiAgYWJzdHJhY3QgZGVmYXVsdERvYygpOiBIVE1MRG9jdW1lbnQ7XG4gIGFic3RyYWN0IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbCk7XG4gIGFic3RyYWN0IGdldFRpdGxlKCk6IHN0cmluZztcbiAgYWJzdHJhY3Qgc2V0VGl0bGUobmV3VGl0bGU6IHN0cmluZyk7XG4gIGFic3RyYWN0IGVsZW1lbnRNYXRjaGVzKG4sIHNlbGVjdG9yOiBzdHJpbmcpOiBib29sZWFuO1xuICBhYnN0cmFjdCBpc1RlbXBsYXRlRWxlbWVudChlbDogYW55KTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgaXNUZXh0Tm9kZShub2RlKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgaXNDb21tZW50Tm9kZShub2RlKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgaXNFbGVtZW50Tm9kZShub2RlKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgaGFzU2hhZG93Um9vdChub2RlKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgaXNTaGFkb3dSb290KG5vZGUpOiBib29sZWFuO1xuICBhYnN0cmFjdCBpbXBvcnRJbnRvRG9jIC8qPFQgZXh0ZW5kcyBOb2RlPiovIChub2RlOiBOb2RlIC8qVCovKTogTm9kZSAvKlQqLztcbiAgYWJzdHJhY3QgYWRvcHROb2RlIC8qPFQgZXh0ZW5kcyBOb2RlPiovIChub2RlOiBOb2RlIC8qVCovKTogTm9kZSAvKlQqLztcbiAgYWJzdHJhY3QgZ2V0SHJlZihlbGVtZW50KTogc3RyaW5nO1xuICBhYnN0cmFjdCBnZXRFdmVudEtleShldmVudCk6IHN0cmluZztcbiAgYWJzdHJhY3QgcmVzb2x2ZUFuZFNldEhyZWYoZWxlbWVudCwgYmFzZVVybDogc3RyaW5nLCBocmVmOiBzdHJpbmcpO1xuICBhYnN0cmFjdCBzdXBwb3J0c0RPTUV2ZW50cygpOiBib29sZWFuO1xuICBhYnN0cmFjdCBzdXBwb3J0c05hdGl2ZVNoYWRvd0RPTSgpOiBib29sZWFuO1xuICBhYnN0cmFjdCBnZXRHbG9iYWxFdmVudFRhcmdldCh0YXJnZXQ6IHN0cmluZyk6IGFueTtcbiAgYWJzdHJhY3QgZ2V0SGlzdG9yeSgpOiBIaXN0b3J5O1xuICBhYnN0cmFjdCBnZXRMb2NhdGlvbigpOiBMb2NhdGlvbjtcbiAgYWJzdHJhY3QgZ2V0QmFzZUhyZWYoKTogc3RyaW5nO1xuICBhYnN0cmFjdCByZXNldEJhc2VFbGVtZW50KCk6IHZvaWQ7XG4gIGFic3RyYWN0IGdldFVzZXJBZ2VudCgpOiBzdHJpbmc7XG4gIGFic3RyYWN0IHNldERhdGEoZWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTtcbiAgYWJzdHJhY3QgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTogYW55O1xuICBhYnN0cmFjdCBnZXREYXRhKGVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHN0cmluZztcbiAgYWJzdHJhY3Qgc2V0R2xvYmFsVmFyKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk7XG4gIGFic3RyYWN0IHJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk6IG51bWJlcjtcbiAgYWJzdHJhY3QgY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpO1xuICBhYnN0cmFjdCBwZXJmb3JtYW5jZU5vdygpOiBudW1iZXI7XG4gIGFic3RyYWN0IGdldEFuaW1hdGlvblByZWZpeCgpOiBzdHJpbmc7XG4gIGFic3RyYWN0IGdldFRyYW5zaXRpb25FbmQoKTogc3RyaW5nO1xuICBhYnN0cmFjdCBzdXBwb3J0c0FuaW1hdGlvbigpOiBib29sZWFuO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\n// see http://www.w3.org/TR/html51/syntax.html#named-character-references\r\n// see https://html.spec.whatwg.org/multipage/entities.json\r\n// This list is not exhaustive to keep the compiler footprint low.\r\n// The `{` / `ƫ` syntax should be used when the named character reference does not exist.\r\nexports.NAMED_ENTITIES = lang_1.CONST_EXPR({\r\n 'Aacute': '\\u00C1',\r\n 'aacute': '\\u00E1',\r\n 'Acirc': '\\u00C2',\r\n 'acirc': '\\u00E2',\r\n 'acute': '\\u00B4',\r\n 'AElig': '\\u00C6',\r\n 'aelig': '\\u00E6',\r\n 'Agrave': '\\u00C0',\r\n 'agrave': '\\u00E0',\r\n 'alefsym': '\\u2135',\r\n 'Alpha': '\\u0391',\r\n 'alpha': '\\u03B1',\r\n 'amp': '&',\r\n 'and': '\\u2227',\r\n 'ang': '\\u2220',\r\n 'apos': '\\u0027',\r\n 'Aring': '\\u00C5',\r\n 'aring': '\\u00E5',\r\n 'asymp': '\\u2248',\r\n 'Atilde': '\\u00C3',\r\n 'atilde': '\\u00E3',\r\n 'Auml': '\\u00C4',\r\n 'auml': '\\u00E4',\r\n 'bdquo': '\\u201E',\r\n 'Beta': '\\u0392',\r\n 'beta': '\\u03B2',\r\n 'brvbar': '\\u00A6',\r\n 'bull': '\\u2022',\r\n 'cap': '\\u2229',\r\n 'Ccedil': '\\u00C7',\r\n 'ccedil': '\\u00E7',\r\n 'cedil': '\\u00B8',\r\n 'cent': '\\u00A2',\r\n 'Chi': '\\u03A7',\r\n 'chi': '\\u03C7',\r\n 'circ': '\\u02C6',\r\n 'clubs': '\\u2663',\r\n 'cong': '\\u2245',\r\n 'copy': '\\u00A9',\r\n 'crarr': '\\u21B5',\r\n 'cup': '\\u222A',\r\n 'curren': '\\u00A4',\r\n 'dagger': '\\u2020',\r\n 'Dagger': '\\u2021',\r\n 'darr': '\\u2193',\r\n 'dArr': '\\u21D3',\r\n 'deg': '\\u00B0',\r\n 'Delta': '\\u0394',\r\n 'delta': '\\u03B4',\r\n 'diams': '\\u2666',\r\n 'divide': '\\u00F7',\r\n 'Eacute': '\\u00C9',\r\n 'eacute': '\\u00E9',\r\n 'Ecirc': '\\u00CA',\r\n 'ecirc': '\\u00EA',\r\n 'Egrave': '\\u00C8',\r\n 'egrave': '\\u00E8',\r\n 'empty': '\\u2205',\r\n 'emsp': '\\u2003',\r\n 'ensp': '\\u2002',\r\n 'Epsilon': '\\u0395',\r\n 'epsilon': '\\u03B5',\r\n 'equiv': '\\u2261',\r\n 'Eta': '\\u0397',\r\n 'eta': '\\u03B7',\r\n 'ETH': '\\u00D0',\r\n 'eth': '\\u00F0',\r\n 'Euml': '\\u00CB',\r\n 'euml': '\\u00EB',\r\n 'euro': '\\u20AC',\r\n 'exist': '\\u2203',\r\n 'fnof': '\\u0192',\r\n 'forall': '\\u2200',\r\n 'frac12': '\\u00BD',\r\n 'frac14': '\\u00BC',\r\n 'frac34': '\\u00BE',\r\n 'frasl': '\\u2044',\r\n 'Gamma': '\\u0393',\r\n 'gamma': '\\u03B3',\r\n 'ge': '\\u2265',\r\n 'gt': '>',\r\n 'harr': '\\u2194',\r\n 'hArr': '\\u21D4',\r\n 'hearts': '\\u2665',\r\n 'hellip': '\\u2026',\r\n 'Iacute': '\\u00CD',\r\n 'iacute': '\\u00ED',\r\n 'Icirc': '\\u00CE',\r\n 'icirc': '\\u00EE',\r\n 'iexcl': '\\u00A1',\r\n 'Igrave': '\\u00CC',\r\n 'igrave': '\\u00EC',\r\n 'image': '\\u2111',\r\n 'infin': '\\u221E',\r\n 'int': '\\u222B',\r\n 'Iota': '\\u0399',\r\n 'iota': '\\u03B9',\r\n 'iquest': '\\u00BF',\r\n 'isin': '\\u2208',\r\n 'Iuml': '\\u00CF',\r\n 'iuml': '\\u00EF',\r\n 'Kappa': '\\u039A',\r\n 'kappa': '\\u03BA',\r\n 'Lambda': '\\u039B',\r\n 'lambda': '\\u03BB',\r\n 'lang': '\\u27E8',\r\n 'laquo': '\\u00AB',\r\n 'larr': '\\u2190',\r\n 'lArr': '\\u21D0',\r\n 'lceil': '\\u2308',\r\n 'ldquo': '\\u201C',\r\n 'le': '\\u2264',\r\n 'lfloor': '\\u230A',\r\n 'lowast': '\\u2217',\r\n 'loz': '\\u25CA',\r\n 'lrm': '\\u200E',\r\n 'lsaquo': '\\u2039',\r\n 'lsquo': '\\u2018',\r\n 'lt': '<',\r\n 'macr': '\\u00AF',\r\n 'mdash': '\\u2014',\r\n 'micro': '\\u00B5',\r\n 'middot': '\\u00B7',\r\n 'minus': '\\u2212',\r\n 'Mu': '\\u039C',\r\n 'mu': '\\u03BC',\r\n 'nabla': '\\u2207',\r\n 'nbsp': '\\u00A0',\r\n 'ndash': '\\u2013',\r\n 'ne': '\\u2260',\r\n 'ni': '\\u220B',\r\n 'not': '\\u00AC',\r\n 'notin': '\\u2209',\r\n 'nsub': '\\u2284',\r\n 'Ntilde': '\\u00D1',\r\n 'ntilde': '\\u00F1',\r\n 'Nu': '\\u039D',\r\n 'nu': '\\u03BD',\r\n 'Oacute': '\\u00D3',\r\n 'oacute': '\\u00F3',\r\n 'Ocirc': '\\u00D4',\r\n 'ocirc': '\\u00F4',\r\n 'OElig': '\\u0152',\r\n 'oelig': '\\u0153',\r\n 'Ograve': '\\u00D2',\r\n 'ograve': '\\u00F2',\r\n 'oline': '\\u203E',\r\n 'Omega': '\\u03A9',\r\n 'omega': '\\u03C9',\r\n 'Omicron': '\\u039F',\r\n 'omicron': '\\u03BF',\r\n 'oplus': '\\u2295',\r\n 'or': '\\u2228',\r\n 'ordf': '\\u00AA',\r\n 'ordm': '\\u00BA',\r\n 'Oslash': '\\u00D8',\r\n 'oslash': '\\u00F8',\r\n 'Otilde': '\\u00D5',\r\n 'otilde': '\\u00F5',\r\n 'otimes': '\\u2297',\r\n 'Ouml': '\\u00D6',\r\n 'ouml': '\\u00F6',\r\n 'para': '\\u00B6',\r\n 'permil': '\\u2030',\r\n 'perp': '\\u22A5',\r\n 'Phi': '\\u03A6',\r\n 'phi': '\\u03C6',\r\n 'Pi': '\\u03A0',\r\n 'pi': '\\u03C0',\r\n 'piv': '\\u03D6',\r\n 'plusmn': '\\u00B1',\r\n 'pound': '\\u00A3',\r\n 'prime': '\\u2032',\r\n 'Prime': '\\u2033',\r\n 'prod': '\\u220F',\r\n 'prop': '\\u221D',\r\n 'Psi': '\\u03A8',\r\n 'psi': '\\u03C8',\r\n 'quot': '\\u0022',\r\n 'radic': '\\u221A',\r\n 'rang': '\\u27E9',\r\n 'raquo': '\\u00BB',\r\n 'rarr': '\\u2192',\r\n 'rArr': '\\u21D2',\r\n 'rceil': '\\u2309',\r\n 'rdquo': '\\u201D',\r\n 'real': '\\u211C',\r\n 'reg': '\\u00AE',\r\n 'rfloor': '\\u230B',\r\n 'Rho': '\\u03A1',\r\n 'rho': '\\u03C1',\r\n 'rlm': '\\u200F',\r\n 'rsaquo': '\\u203A',\r\n 'rsquo': '\\u2019',\r\n 'sbquo': '\\u201A',\r\n 'Scaron': '\\u0160',\r\n 'scaron': '\\u0161',\r\n 'sdot': '\\u22C5',\r\n 'sect': '\\u00A7',\r\n 'shy': '\\u00AD',\r\n 'Sigma': '\\u03A3',\r\n 'sigma': '\\u03C3',\r\n 'sigmaf': '\\u03C2',\r\n 'sim': '\\u223C',\r\n 'spades': '\\u2660',\r\n 'sub': '\\u2282',\r\n 'sube': '\\u2286',\r\n 'sum': '\\u2211',\r\n 'sup': '\\u2283',\r\n 'sup1': '\\u00B9',\r\n 'sup2': '\\u00B2',\r\n 'sup3': '\\u00B3',\r\n 'supe': '\\u2287',\r\n 'szlig': '\\u00DF',\r\n 'Tau': '\\u03A4',\r\n 'tau': '\\u03C4',\r\n 'there4': '\\u2234',\r\n 'Theta': '\\u0398',\r\n 'theta': '\\u03B8',\r\n 'thetasym': '\\u03D1',\r\n 'thinsp': '\\u2009',\r\n 'THORN': '\\u00DE',\r\n 'thorn': '\\u00FE',\r\n 'tilde': '\\u02DC',\r\n 'times': '\\u00D7',\r\n 'trade': '\\u2122',\r\n 'Uacute': '\\u00DA',\r\n 'uacute': '\\u00FA',\r\n 'uarr': '\\u2191',\r\n 'uArr': '\\u21D1',\r\n 'Ucirc': '\\u00DB',\r\n 'ucirc': '\\u00FB',\r\n 'Ugrave': '\\u00D9',\r\n 'ugrave': '\\u00F9',\r\n 'uml': '\\u00A8',\r\n 'upsih': '\\u03D2',\r\n 'Upsilon': '\\u03A5',\r\n 'upsilon': '\\u03C5',\r\n 'Uuml': '\\u00DC',\r\n 'uuml': '\\u00FC',\r\n 'weierp': '\\u2118',\r\n 'Xi': '\\u039E',\r\n 'xi': '\\u03BE',\r\n 'Yacute': '\\u00DD',\r\n 'yacute': '\\u00FD',\r\n 'yen': '\\u00A5',\r\n 'yuml': '\\u00FF',\r\n 'Yuml': '\\u0178',\r\n 'Zeta': '\\u0396',\r\n 'zeta': '\\u03B6',\r\n 'zwj': '\\u200D',\r\n 'zwnj': '\\u200C',\r\n});\r\n(function (HtmlTagContentType) {\r\n HtmlTagContentType[HtmlTagContentType[\"RAW_TEXT\"] = 0] = \"RAW_TEXT\";\r\n HtmlTagContentType[HtmlTagContentType[\"ESCAPABLE_RAW_TEXT\"] = 1] = \"ESCAPABLE_RAW_TEXT\";\r\n HtmlTagContentType[HtmlTagContentType[\"PARSABLE_DATA\"] = 2] = \"PARSABLE_DATA\";\r\n})(exports.HtmlTagContentType || (exports.HtmlTagContentType = {}));\r\nvar HtmlTagContentType = exports.HtmlTagContentType;\r\nvar HtmlTagDefinition = (function () {\r\n function HtmlTagDefinition(_a) {\r\n var _this = this;\r\n var _b = _a === void 0 ? {} : _a, closedByChildren = _b.closedByChildren, requiredParents = _b.requiredParents, implicitNamespacePrefix = _b.implicitNamespacePrefix, contentType = _b.contentType, closedByParent = _b.closedByParent, isVoid = _b.isVoid, ignoreFirstLf = _b.ignoreFirstLf;\r\n this.closedByChildren = {};\r\n this.closedByParent = false;\r\n if (lang_1.isPresent(closedByChildren) && closedByChildren.length > 0) {\r\n closedByChildren.forEach(function (tagName) { return _this.closedByChildren[tagName] = true; });\r\n }\r\n this.isVoid = lang_1.normalizeBool(isVoid);\r\n this.closedByParent = lang_1.normalizeBool(closedByParent) || this.isVoid;\r\n if (lang_1.isPresent(requiredParents) && requiredParents.length > 0) {\r\n this.requiredParents = {};\r\n this.parentToAdd = requiredParents[0];\r\n requiredParents.forEach(function (tagName) { return _this.requiredParents[tagName] = true; });\r\n }\r\n this.implicitNamespacePrefix = implicitNamespacePrefix;\r\n this.contentType = lang_1.isPresent(contentType) ? contentType : HtmlTagContentType.PARSABLE_DATA;\r\n this.ignoreFirstLf = lang_1.normalizeBool(ignoreFirstLf);\r\n }\r\n HtmlTagDefinition.prototype.requireExtraParent = function (currentParent) {\r\n if (lang_1.isBlank(this.requiredParents)) {\r\n return false;\r\n }\r\n if (lang_1.isBlank(currentParent)) {\r\n return true;\r\n }\r\n var lcParent = currentParent.toLowerCase();\r\n return this.requiredParents[lcParent] != true && lcParent != 'template';\r\n };\r\n HtmlTagDefinition.prototype.isClosedByChild = function (name) {\r\n return this.isVoid || lang_1.normalizeBool(this.closedByChildren[name.toLowerCase()]);\r\n };\r\n return HtmlTagDefinition;\r\n})();\r\nexports.HtmlTagDefinition = HtmlTagDefinition;\r\n// see http://www.w3.org/TR/html51/syntax.html#optional-tags\r\n// This implementation does not fully conform to the HTML5 spec.\r\nvar TAG_DEFINITIONS = {\r\n 'base': new HtmlTagDefinition({ isVoid: true }),\r\n 'meta': new HtmlTagDefinition({ isVoid: true }),\r\n 'area': new HtmlTagDefinition({ isVoid: true }),\r\n 'embed': new HtmlTagDefinition({ isVoid: true }),\r\n 'link': new HtmlTagDefinition({ isVoid: true }),\r\n 'img': new HtmlTagDefinition({ isVoid: true }),\r\n 'input': new HtmlTagDefinition({ isVoid: true }),\r\n 'param': new HtmlTagDefinition({ isVoid: true }),\r\n 'hr': new HtmlTagDefinition({ isVoid: true }),\r\n 'br': new HtmlTagDefinition({ isVoid: true }),\r\n 'source': new HtmlTagDefinition({ isVoid: true }),\r\n 'track': new HtmlTagDefinition({ isVoid: true }),\r\n 'wbr': new HtmlTagDefinition({ isVoid: true }),\r\n 'p': new HtmlTagDefinition({\r\n closedByChildren: [\r\n 'address',\r\n 'article',\r\n 'aside',\r\n 'blockquote',\r\n 'div',\r\n 'dl',\r\n 'fieldset',\r\n 'footer',\r\n 'form',\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6',\r\n 'header',\r\n 'hgroup',\r\n 'hr',\r\n 'main',\r\n 'nav',\r\n 'ol',\r\n 'p',\r\n 'pre',\r\n 'section',\r\n 'table',\r\n 'ul'\r\n ],\r\n closedByParent: true\r\n }),\r\n 'thead': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'] }),\r\n 'tbody': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'], closedByParent: true }),\r\n 'tfoot': new HtmlTagDefinition({ closedByChildren: ['tbody'], closedByParent: true }),\r\n 'tr': new HtmlTagDefinition({\r\n closedByChildren: ['tr'],\r\n requiredParents: ['tbody', 'tfoot', 'thead'],\r\n closedByParent: true\r\n }),\r\n 'td': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),\r\n 'th': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),\r\n 'col': new HtmlTagDefinition({ requiredParents: ['colgroup'], isVoid: true }),\r\n 'svg': new HtmlTagDefinition({ implicitNamespacePrefix: 'svg' }),\r\n 'math': new HtmlTagDefinition({ implicitNamespacePrefix: 'math' }),\r\n 'li': new HtmlTagDefinition({ closedByChildren: ['li'], closedByParent: true }),\r\n 'dt': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'] }),\r\n 'dd': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'], closedByParent: true }),\r\n 'rb': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\r\n 'rt': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\r\n 'rtc': new HtmlTagDefinition({ closedByChildren: ['rb', 'rtc', 'rp'], closedByParent: true }),\r\n 'rp': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\r\n 'optgroup': new HtmlTagDefinition({ closedByChildren: ['optgroup'], closedByParent: true }),\r\n 'option': new HtmlTagDefinition({ closedByChildren: ['option', 'optgroup'], closedByParent: true }),\r\n 'pre': new HtmlTagDefinition({ ignoreFirstLf: true }),\r\n 'listing': new HtmlTagDefinition({ ignoreFirstLf: true }),\r\n 'style': new HtmlTagDefinition({ contentType: HtmlTagContentType.RAW_TEXT }),\r\n 'script': new HtmlTagDefinition({ contentType: HtmlTagContentType.RAW_TEXT }),\r\n 'title': new HtmlTagDefinition({ contentType: HtmlTagContentType.ESCAPABLE_RAW_TEXT }),\r\n 'textarea': new HtmlTagDefinition({ contentType: HtmlTagContentType.ESCAPABLE_RAW_TEXT, ignoreFirstLf: true }),\r\n};\r\nvar DEFAULT_TAG_DEFINITION = new HtmlTagDefinition();\r\nfunction getHtmlTagDefinition(tagName) {\r\n var result = TAG_DEFINITIONS[tagName.toLowerCase()];\r\n return lang_1.isPresent(result) ? result : DEFAULT_TAG_DEFINITION;\r\n}\r\nexports.getHtmlTagDefinition = getHtmlTagDefinition;\r\nvar NS_PREFIX_RE = /^@([^:]+):(.+)/g;\r\nfunction splitNsName(elementName) {\r\n if (elementName[0] != '@') {\r\n return [null, elementName];\r\n }\r\n var match = lang_1.RegExpWrapper.firstMatch(NS_PREFIX_RE, elementName);\r\n return [match[1], match[2]];\r\n}\r\nexports.splitNsName = splitNsName;\r\nfunction getNsPrefix(elementName) {\r\n return splitNsName(elementName)[0];\r\n}\r\nexports.getNsPrefix = getNsPrefix;\r\nfunction mergeNsAndName(prefix, localName) {\r\n return lang_1.isPresent(prefix) ? \"@\" + prefix + \":\" + localName : localName;\r\n}\r\nexports.mergeNsAndName = mergeNsAndName;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbF90YWdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbXBpbGVyL2h0bWxfdGFncy50cyJdLCJuYW1lcyI6WyJIdG1sVGFnQ29udGVudFR5cGUiLCJIdG1sVGFnRGVmaW5pdGlvbiIsIkh0bWxUYWdEZWZpbml0aW9uLmNvbnN0cnVjdG9yIiwiSHRtbFRhZ0RlZmluaXRpb24ucmVxdWlyZUV4dHJhUGFyZW50IiwiSHRtbFRhZ0RlZmluaXRpb24uaXNDbG9zZWRCeUNoaWxkIiwiZ2V0SHRtbFRhZ0RlZmluaXRpb24iLCJzcGxpdE5zTmFtZSIsImdldE5zUHJlZml4IiwibWVyZ2VOc0FuZE5hbWUiXSwibWFwcGluZ3MiOiJBQUFBLHFCQU1PLDBCQUEwQixDQUFDLENBQUE7QUFFbEMseUVBQXlFO0FBQ3pFLDJEQUEyRDtBQUMzRCxrRUFBa0U7QUFDbEUsb0dBQW9HO0FBQ3ZGLHNCQUFjLEdBQUcsaUJBQVUsQ0FBQztJQUN2QyxRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixTQUFTLEVBQUUsUUFBUTtJQUNuQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLFFBQVE7SUFDZixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsUUFBUTtJQUNqQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixRQUFRLEVBQUUsUUFBUTtJQUNsQixNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsUUFBUTtJQUNmLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLFFBQVE7SUFDZixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsUUFBUTtJQUNqQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsUUFBUTtJQUNqQixLQUFLLEVBQUUsUUFBUTtJQUNmLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxRQUFRO0lBQ2YsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsU0FBUyxFQUFFLFFBQVE7SUFDbkIsU0FBUyxFQUFFLFFBQVE7SUFDbkIsT0FBTyxFQUFFLFFBQVE7SUFDakIsS0FBSyxFQUFFLFFBQVE7SUFDZixLQUFLLEVBQUUsUUFBUTtJQUNmLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLFFBQVE7SUFDZixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsUUFBUTtJQUNqQixNQUFNLEVBQUUsUUFBUTtJQUNoQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixJQUFJLEVBQUUsUUFBUTtJQUNkLElBQUksRUFBRSxHQUFHO0lBQ1QsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsS0FBSyxFQUFFLFFBQVE7SUFDZixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixRQUFRLEVBQUUsUUFBUTtJQUNsQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsUUFBUTtJQUNqQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsUUFBUTtJQUNqQixJQUFJLEVBQUUsUUFBUTtJQUNkLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLFFBQVE7SUFDZixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsUUFBUTtJQUNqQixJQUFJLEVBQUUsR0FBRztJQUNULE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLElBQUksRUFBRSxRQUFRO0lBQ2QsSUFBSSxFQUFFLFFBQVE7SUFDZCxPQUFPLEVBQUUsUUFBUTtJQUNqQixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsUUFBUTtJQUNqQixJQUFJLEVBQUUsUUFBUTtJQUNkLElBQUksRUFBRSxRQUFRO0lBQ2QsS0FBSyxFQUFFLFFBQVE7SUFDZixPQUFPLEVBQUUsUUFBUTtJQUNqQixNQUFNLEVBQUUsUUFBUTtJQUNoQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixJQUFJLEVBQUUsUUFBUTtJQUNkLElBQUksRUFBRSxRQUFRO0lBQ2QsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsU0FBUyxFQUFFLFFBQVE7SUFDbkIsU0FBUyxFQUFFLFFBQVE7SUFDbkIsT0FBTyxFQUFFLFFBQVE7SUFDakIsSUFBSSxFQUFFLFFBQVE7SUFDZCxNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixRQUFRLEVBQUUsUUFBUTtJQUNsQixNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsUUFBUTtJQUNmLEtBQUssRUFBRSxRQUFRO0lBQ2YsSUFBSSxFQUFFLFFBQVE7SUFDZCxJQUFJLEVBQUUsUUFBUTtJQUNkLEtBQUssRUFBRSxRQUFRO0lBQ2YsUUFBUSxFQUFFLFFBQVE7SUFDbEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsS0FBSyxFQUFFLFFBQVE7SUFDZixLQUFLLEVBQUUsUUFBUTtJQUNmLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxRQUFRO0lBQ2YsUUFBUSxFQUFFLFFBQVE7SUFDbEIsS0FBSyxFQUFFLFFBQVE7SUFDZixLQUFLLEVBQUUsUUFBUTtJQUNmLEtBQUssRUFBRSxRQUFRO0lBQ2YsUUFBUSxFQUFFLFFBQVE7SUFDbEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFB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QUFDQSxVQUFVQSxDQUFDQSxZQUFZQSxFQUFFQSxXQUFXQSxDQUFDQSxDQUFDQTtJQUNoRUEsTUFBTUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7QUFDOUJBLENBQUNBO0FBTmUsbUJBQVcsY0FNMUIsQ0FBQTtBQUVELHFCQUE0QixXQUFtQjtJQUM3Q0MsTUFBTUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EsV0FBV0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7QUFDckNBLENBQUNBO0FBRmUsbUJBQVcsY0FFMUIsQ0FBQTtBQUVELHdCQUErQixNQUFjLEVBQUUsU0FBaUI7SUFDOURDLE1BQU1BLENBQUNBLGdCQUFTQSxDQUFDQSxNQUFNQSxDQUFDQSxHQUFHQSxNQUFJQSxNQUFNQSxTQUFJQSxTQUFXQSxHQUFHQSxTQUFTQSxDQUFDQTtBQUNuRUEsQ0FBQ0E7QUFGZSxzQkFBYyxpQkFFN0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgbm9ybWFsaXplQm9vbCxcbiAgUmVnRXhwV3JhcHBlcixcbiAgQ09OU1RfRVhQUlxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG4vLyBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUxL3N5bnRheC5odG1sI25hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2VzXG4vLyBzZWUgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZW50aXRpZXMuanNvblxuLy8gVGhpcyBsaXN0IGlzIG5vdCBleGhhdXN0aXZlIHRvIGtlZXAgdGhlIGNvbXBpbGVyIGZvb3RwcmludCBsb3cuXG4vLyBUaGUgYCYjMTIzO2AgLyBgJiN4MWFiO2Agc3ludGF4IHNob3VsZCBiZSB1c2VkIHdoZW4gdGhlIG5hbWVkIGNoYXJhY3RlciByZWZlcmVuY2UgZG9lcyBub3QgZXhpc3QuXG5leHBvcnQgY29uc3QgTkFNRURfRU5USVRJRVMgPSBDT05TVF9FWFBSKHtcbiAgJ0FhY3V0ZSc6ICdcXHUwMEMxJyxcbiAgJ2FhY3V0ZSc6ICdcXHUwMEUxJyxcbiAgJ0FjaXJjJzogJ1xcdTAwQzInLFxuICAnYWNpcmMnOiAnXFx1MDBFMicsXG4gICdhY3V0ZSc6ICdcXHUwMEI0JyxcbiAgJ0FFbGlnJzogJ1xcdTAwQzYnLFxuICAnYWVsaWcnOiAnXFx1MDBFNicsXG4gICdBZ3JhdmUnOiAnXFx1MDBDMCcsXG4gICdhZ3JhdmUnOiAnXFx1MDBFMCcsXG4gICdhbGVmc3ltJzogJ1xcdTIxMzUnLFxuICAnQWxwaGEnOiAnXFx1MDM5MScsXG4gICdhbHBoYSc6ICdcXHUwM0IxJyxcbiAgJ2FtcCc6ICcmJyxcbiAgJ2FuZCc6ICdcXHUyMjI3JyxcbiAgJ2FuZyc6ICdcXHUyMjIwJyxcbiAgJ2Fwb3MnOiAnXFx1MDAyNycsXG4gICdBcmluZyc6ICdcXHUwMEM1JyxcbiAgJ2FyaW5nJzogJ1xcdTAwRTUnLFxuICAnYXN5bXAnOiAnXFx1MjI0OCcsXG4gICdBdGlsZGUnOiAnXFx1MDBDMycsXG4gICdhdGlsZGUnOiAnXFx1MDBFMycsXG4gICdBdW1sJzogJ1xcdTAwQzQnLFxuICAnYXVtbCc6ICdcXHUwMEU0JyxcbiAgJ2JkcXVvJzogJ1xcdTIwMUUnLFxuICAnQmV0YSc6ICdcXHUwMzkyJyxcbiAgJ2JldGEnOiAnXFx1MDNCMicsXG4gICdicnZiYXInOiAnXFx1MDBBNicsXG4gICdidWxsJzogJ1xcdTIwMjInLFxuICAnY2FwJzogJ1xcdTIyMjknLFxuICAnQ2NlZGlsJzogJ1xcdTAwQzcnLFxuICAnY2NlZGlsJzogJ1xcdTAwRTcnLFxuICAnY2VkaWwnOiAnXFx1MDBCOCcsXG4gICdjZW50JzogJ1xcdTAwQTInLFxuICAnQ2hpJzogJ1xcdTAzQTcnLFxuICAnY2hpJzogJ1xcdTAzQzcnLFxuICAnY2lyYyc6ICdcXHUwMkM2JyxcbiAgJ2NsdWJzJzogJ1xcdTI2NjMnLFxuICAnY29uZyc6ICdcXHUyMjQ1JyxcbiAgJ2NvcHknOiAnXFx1MDBBOScsXG4gICdjcmFycic6ICdcXHUyMUI1JyxcbiAgJ2N1cCc6ICdcXHUyMjJBJyxcbiAgJ2N1cnJlbic6ICdcXHUwMEE0JyxcbiAgJ2RhZ2dlcic6ICdcXHUyMDIwJyxcbiAgJ0RhZ2dlcic6ICdcXHUyMDIxJyxcbiAgJ2RhcnInOiAnXFx1MjE5MycsXG4gICdkQXJyJzogJ1xcdTIxRDMnLFxuICAnZGVnJzogJ1xcdTAwQjAnLFxuICAnRGVsdGEnOiAnXFx1MDM5NCcsXG4gICdkZWx0YSc6ICdcXHUwM0I0JyxcbiAgJ2RpYW1zJzogJ1xcdTI2NjYnLFxuICAnZGl2aWRlJzogJ1xcdTAwRjcnLFxuICAnRWFjdXRlJzogJ1xcdTAwQzknLFxuICAnZWFjdXRlJzogJ1xcdTAwRTknLFxuICAnRWNpcmMnOiAnXFx1MDBDQScsXG4gICdlY2lyYyc6ICdcXHUwMEVBJyxcbiAgJ0VncmF2ZSc6ICdcXHUwMEM4JyxcbiAgJ2VncmF2ZSc6ICdcXHUwMEU4JyxcbiAgJ2VtcHR5JzogJ1xcdTIyMDUnLFxuICAnZW1zcCc6ICdcXHUyMDAzJyxcbiAgJ2Vuc3AnOiAnXFx1MjAwMicsXG4gICdFcHNpbG9uJzogJ1xcdTAzOTUnLFxuICAnZXBzaWxvbic6ICdcXHUwM0I1JyxcbiAgJ2VxdWl2JzogJ1xcdTIyNjEnLFxuICAnRXRhJzogJ1xcdTAzOTcnLFxuICAnZXRhJzogJ1xcdTAzQjcnLFxuICAnRVRIJzogJ1xcdTAwRDAnLFxuICAnZXRoJzogJ1xcdTAwRjAnLFxuICAnRXVtbCc6ICdcXHUwMENCJyxcbiAgJ2V1bWwnOiAnXFx1MDBFQicsXG4gICdldXJvJzogJ1xcdTIwQUMnLFxuICAnZXhpc3QnOiAnXFx1MjIwMycsXG4gICdmbm9mJzogJ1xcdTAxOTInLFxuICAnZm9yYWxsJzogJ1xcdTIyMDAnLFxuICAnZnJhYzEyJzogJ1xcdTAwQkQnLFxuICAnZnJhYzE0JzogJ1xcdTAwQkMnLFxuICAnZnJhYzM0JzogJ1xcdTAwQkUnLFxuICAnZnJhc2wnOiAnXFx1MjA0NCcsXG4gICdHYW1tYSc6ICdcXHUwMzkzJyxcbiAgJ2dhbW1hJzogJ1xcdTAzQjMnLFxuICAnZ2UnOiAnXFx1MjI2NScsXG4gICdndCc6ICc+JyxcbiAgJ2hhcnInOiAnXFx1MjE5NCcsXG4gICdoQXJyJzogJ1xcdTIxRDQnLFxuICAnaGVhcnRzJzogJ1xcdTI2NjUnLFxuICAnaGVsbGlwJzogJ1xcdTIwMjYnLFxuICAnSWFjdXRlJzogJ1xcdTAwQ0QnLFxuICAnaWFjdXRlJzogJ1xcdTAwRUQnLFxuICAnSWNpcmMnOiAnXFx1MDBDRScsXG4gICdpY2lyYyc6ICdcXHUwMEVFJyxcbiAgJ2lleGNsJzogJ1xcdTAwQTEnLFxuICAnSWdyYXZlJzogJ1xcdTAwQ0MnLFxuICAnaWdyYXZlJzogJ1xcdTAwRUMnLFxuICAnaW1hZ2UnOiAnXFx1MjExMScsXG4gICdpbmZpbic6ICdcXHUyMjFFJyxcbiAgJ2ludCc6ICdcXHUyMjJCJyxcbiAgJ0lvdGEnOiAnXFx1MDM5OScsXG4gICdpb3RhJzogJ1xcdTAzQjknLFxuICAnaXF1ZXN0JzogJ1xcdTAwQkYnLFxuICAnaXNpbic6ICdcXHUyMjA4JyxcbiAgJ0l1bWwnOiAnXFx1MDBDRicsXG4gICdpdW1sJzogJ1xcdTAwRUYnLFxuICAnS2FwcGEnOiAnXFx1MDM5QScsXG4gICdrYXBwYSc6ICdcXHUwM0JBJyxcbiAgJ0xhbWJkYSc6ICdcXHUwMzlCJyxcbiAgJ2xhbWJkYSc6ICdcXHUwM0JCJyxcbiAgJ2xhbmcnOiAnXFx1MjdFOCcsXG4gICdsYXF1byc6ICdcXHUwMEFCJyxcbiAgJ2xhcnInOiAnXFx1MjE5MCcsXG4gICdsQXJyJzogJ1xcdTIxRDAnLFxuICAnbGNlaWwnOiAnXFx1MjMwOCcsXG4gICdsZHF1byc6ICdcXHUyMDFDJyxcbiAgJ2xlJzogJ1xcdTIyNjQnLFxuICAnbGZsb29yJzogJ1xcdTIzMEEnLFxuICAnbG93YXN0JzogJ1xcdTIyMTcnLFxuICAnbG96JzogJ1xcdTI1Q0EnLFxuICAnbHJtJzogJ1xcdTIwMEUnLFxuICAnbHNhcXVvJzogJ1xcdTIwMzknLFxuICAnbHNxdW8nOiAnXFx1MjAxOCcsXG4gICdsdCc6ICc8JyxcbiAgJ21hY3InOiAnXFx1MDBBRicsXG4gICdtZGFzaCc6ICdcXHUyMDE0JyxcbiAgJ21pY3JvJzogJ1xcdTAwQjUnLFxuICAnbWlkZG90JzogJ1xcdTAwQjcnLFxuICAnbWludXMnOiAnXFx1MjIxMicsXG4gICdNdSc6ICdcXHUwMzlDJyxcbiAgJ211JzogJ1xcdTAzQkMnLFxuICAnbmFibGEnOiAnXFx1MjIwNycsXG4gICduYnNwJzogJ1xcdTAwQTAnLFxuICAnbmRhc2gnOiAnXFx1MjAxMycsXG4gICduZSc6ICdcXHUyMjYwJyxcbiAgJ25pJzogJ1xcdTIyMEInLFxuICAnbm90JzogJ1xcdTAwQUMnLFxuICAnbm90aW4nOiAnXFx1MjIwOScsXG4gICduc3ViJzogJ1xcdTIyODQnLFxuICAnTnRpbGRlJzogJ1xcdTAwRDEnLFxuICAnbnRpbGRlJzogJ1xcdTAwRjEnLFxuICAnTnUnOiAnXFx1MDM5RCcsXG4gICdudSc6ICdcXHUwM0JEJyxcbiAgJ09hY3V0ZSc6ICdcXHUwMEQzJyxcbiAgJ29hY3V0ZSc6ICdcXHUwMEYzJyxcbiAgJ09jaXJjJzogJ1xcdTAwRDQnLFxuICAnb2NpcmMnOiAnXFx1MDBGNCcsXG4gICdPRWxpZyc6ICdcXHUwMTUyJyxcbiAgJ29lbGlnJzogJ1xcdTAxNTMnLFxuICAnT2dyYXZlJzogJ1xcdTAwRDInLFxuICAnb2dyYXZlJzogJ1xcdTAwRjInLFxuICAnb2xpbmUnOiAnXFx1MjAzRScsXG4gICdPbWVnYSc6ICdcXHUwM0E5JyxcbiAgJ29tZWdhJzogJ1xcdTAzQzknLFxuICAnT21pY3Jvbic6ICdcXHUwMzlGJyxcbiAgJ29taWNyb24nOiAnXFx1MDNCRicsXG4gICdvcGx1cyc6ICdcXHUyMjk1JyxcbiAgJ29yJzogJ1xcdTIyMjgnLFxuICAnb3JkZic6ICdcXHUwMEFBJyxcbiAgJ29yZG0nOiAnXFx1MDBCQScsXG4gICdPc2xhc2gnOiAnXFx1MDBEOCcsXG4gICdvc2xhc2gnOiAnXFx1MDBGOCcsXG4gICdPdGlsZGUnOiAnXFx1MDBENScsXG4gICdvdGlsZGUnOiAnXFx1MDBGNScsXG4gICdvdGltZXMnOiAnXFx1MjI5NycsXG4gICdPdW1sJzogJ1xcdTAwRDYnLFxuICAnb3VtbCc6ICdcXHUwMEY2JyxcbiAgJ3BhcmEnOiAnXFx1MDBCNicsXG4gICdwZXJtaWwnOiAnXFx1MjAzMCcsXG4gICdwZXJwJzogJ1xcdTIyQTUnLFxuICAnUGhpJzogJ1xcdTAzQTYnLFxuICAncGhpJzogJ1xcdTAzQzYnLFxuICAnUGknOiAnXFx1MDNBMCcsXG4gICdwaSc6ICdcXHUwM0MwJyxcbiAgJ3Bpdic6ICdcXHUwM0Q2JyxcbiAgJ3BsdXNtbic6ICdcXHUwMEIxJyxcbiAgJ3BvdW5kJzogJ1xcdTAwQTMnLFxuICAncHJpbWUnOiAnXFx1MjAzMicsXG4gICdQcmltZSc6ICdcXHUyMDMzJyxcbiAgJ3Byb2QnOiAnXFx1MjIwRicsXG4gICdwcm9wJzogJ1xcdTIyMUQnLFxuICAnUHNpJzogJ1xcdTAzQTgnLFxuICAncHNpJzogJ1xcdTAzQzgnLFxuICAncXVvdCc6ICdcXHUwMDIyJyxcbiAgJ3JhZGljJzogJ1xcdTIyMUEnLFxuICAncmFuZyc6ICdcXHUyN0U5JyxcbiAgJ3JhcXVvJzogJ1xcdTAwQkInLFxuICAncmFycic6ICdcXHUyMTkyJyxcbiAgJ3JBcnInOiAnXFx1MjFEMicsXG4gICdyY2VpbCc6ICdcXHUyMzA5JyxcbiAgJ3JkcXVvJzogJ1xcdTIwMUQnLFxuICAncmVhbCc6ICdcXHUyMTFDJyxcbiAgJ3JlZyc6ICdcXHUwMEFFJyxcbiAgJ3JmbG9vcic6ICdcXHUyMzBCJyxcbiAgJ1Jobyc6ICdcXHUwM0ExJyxcbiAgJ3Jobyc6ICdcXHUwM0MxJyxcbiAgJ3JsbSc6ICdcXHUyMDBGJyxcbiAgJ3JzYXF1byc6ICdcXHUyMDNBJyxcbiAgJ3JzcXVvJzogJ1xcdTIwMTknLFxuICAnc2JxdW8nOiAnXFx1MjAxQScsXG4gICdTY2Fyb24nOiAnXFx1MDE2MCcsXG4gICdzY2Fyb24nOiAnXFx1MDE2MScsXG4gICdzZG90JzogJ1xcdTIyQzUnLFxuICAnc2VjdCc6ICdcXHUwMEE3JyxcbiAgJ3NoeSc6ICdcXHUwMEFEJyxcbiAgJ1NpZ21hJzogJ1xcdTAzQTMnLFxuICAnc2lnbWEnOiAnXFx1MDNDMycsXG4gICdzaWdtYWYnOiAnXFx1MDNDMicsXG4gICdzaW0nOiAnXFx1MjIzQycsXG4gICdzcGFkZXMnOiAnXFx1MjY2MCcsXG4gICdzdWInOiAnXFx1MjI4MicsXG4gICdzdWJlJzogJ1xcdTIyODYnLFxuICAnc3VtJzogJ1xcdTIyMTEnLFxuICAnc3VwJzogJ1xcdTIyODMnLFxuICAnc3VwMSc6ICdcXHUwMEI5JyxcbiAgJ3N1cDInOiAnXFx1MDBCMicsXG4gICdzdXAzJzogJ1xcdTAwQjMnLFxuICAnc3VwZSc6ICdcXHUyMjg3JyxcbiAgJ3N6bGlnJzogJ1xcdTAwREYnLFxuICAnVGF1JzogJ1xcdTAzQTQnLFxuICAndGF1JzogJ1xcdTAzQzQnLFxuICAndGhlcmU0JzogJ1xcdTIyMzQnLFxuICAnVGhldGEnOiAnXFx1MDM5OCcsXG4gICd0aGV0YSc6ICdcXHUwM0I4JyxcbiAgJ3RoZXRhc3ltJzogJ1xcdTAzRDEnLFxuICAndGhpbnNwJzogJ1xcdTIwMDknLFxuICAnVEhPUk4nOiAnXFx1MDBERScsXG4gICd0aG9ybic6ICdcXHUwMEZFJyxcbiAgJ3RpbGRlJzogJ1xcdTAyREMnLFxuICAndGltZXMnOiAnXFx1MDBENycsXG4gICd0cmFkZSc6ICdcXHUyMTIyJyxcbiAgJ1VhY3V0ZSc6ICdcXHUwMERBJyxcbiAgJ3VhY3V0ZSc6ICdcXHUwMEZBJyxcbiAgJ3VhcnInOiAnXFx1MjE5MScsXG4gICd1QXJyJzogJ1xcdTIxRDEnLFxuICAnVWNpcmMnOiAnXFx1MDBEQicsXG4gICd1Y2lyYyc6ICdcXHUwMEZCJyxcbiAgJ1VncmF2ZSc6ICdcXHUwMEQ5JyxcbiAgJ3VncmF2ZSc6ICdcXHUwMEY5JyxcbiAgJ3VtbCc6ICdcXHUwMEE4JyxcbiAgJ3Vwc2loJzogJ1xcdTAzRDInLFxuICAnVXBzaWxvbic6ICdcXHUwM0E1JyxcbiAgJ3Vwc2lsb24nOiAnXFx1MDNDNScsXG4gICdVdW1sJzogJ1xcdTAwREMnLFxuICAndXVtbCc6ICdcXHUwMEZDJyxcbiAgJ3dlaWVycCc6ICdcXHUyMTE4JyxcbiAgJ1hpJzogJ1xcdTAzOUUnLFxuICAneGknOiAnXFx1MDNCRScsXG4gICdZYWN1dGUnOiAnXFx1MDBERCcsXG4gICd5YWN1dGUnOiAnXFx1MDBGRCcsXG4gICd5ZW4nOiAnXFx1MDBBNScsXG4gICd5dW1sJzogJ1xcdTAwRkYnLFxuICAnWXVtbCc6ICdcXHUwMTc4JyxcbiAgJ1pldGEnOiAnXFx1MDM5NicsXG4gICd6ZXRhJzogJ1xcdTAzQjYnLFxuICAnendqJzogJ1xcdTIwMEQnLFxuICAnenduaic6ICdcXHUyMDBDJyxcbn0pO1xuXG5leHBvcnQgZW51bSBIdG1sVGFnQ29udGVudFR5cGUge1xuICBSQVdfVEVYVCxcbiAgRVNDQVBBQkxFX1JBV19URVhULFxuICBQQVJTQUJMRV9EQVRBXG59XG5cbmV4cG9ydCBjbGFzcyBIdG1sVGFnRGVmaW5pdGlvbiB7XG4gIHByaXZhdGUgY2xvc2VkQnlDaGlsZHJlbjoge1trZXk6IHN0cmluZ106IGJvb2xlYW59ID0ge307XG4gIHB1YmxpYyBjbG9zZWRCeVBhcmVudDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgcmVxdWlyZWRQYXJlbnRzOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn07XG4gIHB1YmxpYyBwYXJlbnRUb0FkZDogc3RyaW5nO1xuICBwdWJsaWMgaW1wbGljaXROYW1lc3BhY2VQcmVmaXg6IHN0cmluZztcbiAgcHVibGljIGNvbnRlbnRUeXBlOiBIdG1sVGFnQ29udGVudFR5cGU7XG4gIHB1YmxpYyBpc1ZvaWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBpZ25vcmVGaXJzdExmOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHtjbG9zZWRCeUNoaWxkcmVuLCByZXF1aXJlZFBhcmVudHMsIGltcGxpY2l0TmFtZXNwYWNlUHJlZml4LCBjb250ZW50VHlwZSxcbiAgICAgICAgICAgICAgIGNsb3NlZEJ5UGFyZW50LCBpc1ZvaWQsIGlnbm9yZUZpcnN0TGZ9OiB7XG4gICAgY2xvc2VkQnlDaGlsZHJlbj86IHN0cmluZ1tdLFxuICAgIGNsb3NlZEJ5UGFyZW50PzogYm9vbGVhbixcbiAgICByZXF1aXJlZFBhcmVudHM/OiBzdHJpbmdbXSxcbiAgICBpbXBsaWNpdE5hbWVzcGFjZVByZWZpeD86IHN0cmluZyxcbiAgICBjb250ZW50VHlwZT86IEh0bWxUYWdDb250ZW50VHlwZSxcbiAgICBpc1ZvaWQ/OiBib29sZWFuLFxuICAgIGlnbm9yZUZpcnN0TGY/OiBib29sZWFuXG4gIH0gPSB7fSkge1xuICAgIGlmIChpc1ByZXNlbnQoY2xvc2VkQnlDaGlsZHJlbikgJiYgY2xvc2VkQnlDaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBjbG9zZWRCeUNoaWxkcmVuLmZvckVhY2godGFnTmFtZSA9PiB0aGlzLmNsb3NlZEJ5Q2hpbGRyZW5bdGFnTmFtZV0gPSB0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5pc1ZvaWQgPSBub3JtYWxpemVCb29sKGlzVm9pZCk7XG4gICAgdGhpcy5jbG9zZWRCeVBhcmVudCA9IG5vcm1hbGl6ZUJvb2woY2xvc2VkQnlQYXJlbnQpIHx8IHRoaXMuaXNWb2lkO1xuICAgIGlmIChpc1ByZXNlbnQocmVxdWlyZWRQYXJlbnRzKSAmJiByZXF1aXJlZFBhcmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5yZXF1aXJlZFBhcmVudHMgPSB7fTtcbiAgICAgIHRoaXMucGFyZW50VG9BZGQgPSByZXF1aXJlZFBhcmVudHNbMF07XG4gICAgICByZXF1aXJlZFBhcmVudHMuZm9yRWFjaCh0YWdOYW1lID0+IHRoaXMucmVxdWlyZWRQYXJlbnRzW3RhZ05hbWVdID0gdHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuaW1wbGljaXROYW1lc3BhY2VQcmVmaXggPSBpbXBsaWNpdE5hbWVzcGFjZVByZWZpeDtcbiAgICB0aGlzLmNvbnRlbnRUeXBlID0gaXNQcmVzZW50KGNvbnRlbnRUeXBlKSA/IGNvbnRlbnRUeXBlIDogSHRtbFRhZ0NvbnRlbnRUeXBlLlBBUlNBQkxFX0RBVEE7XG4gICAgdGhpcy5pZ25vcmVGaXJzdExmID0gbm9ybWFsaXplQm9vbChpZ25vcmVGaXJzdExmKTtcbiAgfVxuXG4gIHJlcXVpcmVFeHRyYVBhcmVudChjdXJyZW50UGFyZW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoaXNCbGFuayh0aGlzLnJlcXVpcmVkUGFyZW50cykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaXNCbGFuayhjdXJyZW50UGFyZW50KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgbGV0IGxjUGFyZW50ID0gY3VycmVudFBhcmVudC50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB0aGlzLnJlcXVpcmVkUGFyZW50c1tsY1BhcmVudF0gIT0gdHJ1ZSAmJiBsY1BhcmVudCAhPSAndGVtcGxhdGUnO1xuICB9XG5cbiAgaXNDbG9zZWRCeUNoaWxkKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVm9pZCB8fCBub3JtYWxpemVCb29sKHRoaXMuY2xvc2VkQnlDaGlsZHJlbltuYW1lLnRvTG93ZXJDYXNlKCldKTtcbiAgfVxufVxuXG4vLyBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUxL3N5bnRheC5odG1sI29wdGlvbmFsLXRhZ3Ncbi8vIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgZnVsbHkgY29uZm9ybSB0byB0aGUgSFRNTDUgc3BlYy5cbnZhciBUQUdfREVGSU5JVElPTlM6IHtba2V5OiBzdHJpbmddOiBIdG1sVGFnRGVmaW5pdGlvbn0gPSB7XG4gICdiYXNlJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtpc1ZvaWQ6IHRydWV9KSxcbiAgJ21ldGEnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2lzVm9pZDogdHJ1ZX0pLFxuICAnYXJlYSc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7aXNWb2lkOiB0cnVlfSksXG4gICdlbWJlZCc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7aXNWb2lkOiB0cnVlfSksXG4gICdsaW5rJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtpc1ZvaWQ6IHRydWV9KSxcbiAgJ2ltZyc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7aXNWb2lkOiB0cnVlfSksXG4gICdpbnB1dCc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7aXNWb2lkOiB0cnVlfSksXG4gICdwYXJhbSc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7aXNWb2lkOiB0cnVlfSksXG4gICdocic6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7aXNWb2lkOiB0cnVlfSksXG4gICdicic6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7aXNWb2lkOiB0cnVlfSksXG4gICdzb3VyY2UnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2lzVm9pZDogdHJ1ZX0pLFxuICAndHJhY2snOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2lzVm9pZDogdHJ1ZX0pLFxuICAnd2JyJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtpc1ZvaWQ6IHRydWV9KSxcbiAgJ3AnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe1xuICAgIGNsb3NlZEJ5Q2hpbGRyZW46IFtcbiAgICAgICdhZGRyZXNzJyxcbiAgICAgICdhcnRpY2xlJyxcbiAgICAgICdhc2lkZScsXG4gICAgICAnYmxvY2txdW90ZScsXG4gICAgICAnZGl2JyxcbiAgICAgICdkbCcsXG4gICAgICAnZmllbGRzZXQnLFxuICAgICAgJ2Zvb3RlcicsXG4gICAgICAnZm9ybScsXG4gICAgICAnaDEnLFxuICAgICAgJ2gyJyxcbiAgICAgICdoMycsXG4gICAgICAnaDQnLFxuICAgICAgJ2g1JyxcbiAgICAgICdoNicsXG4gICAgICAnaGVhZGVyJyxcbiAgICAgICdoZ3JvdXAnLFxuICAgICAgJ2hyJyxcbiAgICAgICdtYWluJyxcbiAgICAgICduYXYnLFxuICAgICAgJ29sJyxcbiAgICAgICdwJyxcbiAgICAgICdwcmUnLFxuICAgICAgJ3NlY3Rpb24nLFxuICAgICAgJ3RhYmxlJyxcbiAgICAgICd1bCdcbiAgICBdLFxuICAgIGNsb3NlZEJ5UGFyZW50OiB0cnVlXG4gIH0pLFxuICAndGhlYWQnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2Nsb3NlZEJ5Q2hpbGRyZW46IFsndGJvZHknLCAndGZvb3QnXX0pLFxuICAndGJvZHknOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2Nsb3NlZEJ5Q2hpbGRyZW46IFsndGJvZHknLCAndGZvb3QnXSwgY2xvc2VkQnlQYXJlbnQ6IHRydWV9KSxcbiAgJ3Rmb290JzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjbG9zZWRCeUNoaWxkcmVuOiBbJ3Rib2R5J10sIGNsb3NlZEJ5UGFyZW50OiB0cnVlfSksXG4gICd0cic6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7XG4gICAgY2xvc2VkQnlDaGlsZHJlbjogWyd0ciddLFxuICAgIHJlcXVpcmVkUGFyZW50czogWyd0Ym9keScsICd0Zm9vdCcsICd0aGVhZCddLFxuICAgIGNsb3NlZEJ5UGFyZW50OiB0cnVlXG4gIH0pLFxuICAndGQnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2Nsb3NlZEJ5Q2hpbGRyZW46IFsndGQnLCAndGgnXSwgY2xvc2VkQnlQYXJlbnQ6IHRydWV9KSxcbiAgJ3RoJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjbG9zZWRCeUNoaWxkcmVuOiBbJ3RkJywgJ3RoJ10sIGNsb3NlZEJ5UGFyZW50OiB0cnVlfSksXG4gICdjb2wnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe3JlcXVpcmVkUGFyZW50czogWydjb2xncm91cCddLCBpc1ZvaWQ6IHRydWV9KSxcbiAgJ3N2Zyc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7aW1wbGljaXROYW1lc3BhY2VQcmVmaXg6ICdzdmcnfSksXG4gICdtYXRoJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtpbXBsaWNpdE5hbWVzcGFjZVByZWZpeDogJ21hdGgnfSksXG4gICdsaSc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7Y2xvc2VkQnlDaGlsZHJlbjogWydsaSddLCBjbG9zZWRCeVBhcmVudDogdHJ1ZX0pLFxuICAnZHQnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2Nsb3NlZEJ5Q2hpbGRyZW46IFsnZHQnLCAnZGQnXX0pLFxuICAnZGQnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2Nsb3NlZEJ5Q2hpbGRyZW46IFsnZHQnLCAnZGQnXSwgY2xvc2VkQnlQYXJlbnQ6IHRydWV9KSxcbiAgJ3JiJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjbG9zZWRCeUNoaWxkcmVuOiBbJ3JiJywgJ3J0JywgJ3J0YycsICdycCddLCBjbG9zZWRCeVBhcmVudDogdHJ1ZX0pLFxuICAncnQnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2Nsb3NlZEJ5Q2hpbGRyZW46IFsncmInLCAncnQnLCAncnRjJywgJ3JwJ10sIGNsb3NlZEJ5UGFyZW50OiB0cnVlfSksXG4gICdydGMnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2Nsb3NlZEJ5Q2hpbGRyZW46IFsncmInLCAncnRjJywgJ3JwJ10sIGNsb3NlZEJ5UGFyZW50OiB0cnVlfSksXG4gICdycCc6IG5ldyBIdG1sVGFnRGVmaW5pdGlvbih7Y2xvc2VkQnlDaGlsZHJlbjogWydyYicsICdydCcsICdydGMnLCAncnAnXSwgY2xvc2VkQnlQYXJlbnQ6IHRydWV9KSxcbiAgJ29wdGdyb3VwJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjbG9zZWRCeUNoaWxkcmVuOiBbJ29wdGdyb3VwJ10sIGNsb3NlZEJ5UGFyZW50OiB0cnVlfSksXG4gICdvcHRpb24nOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2Nsb3NlZEJ5Q2hpbGRyZW46IFsnb3B0aW9uJywgJ29wdGdyb3VwJ10sIGNsb3NlZEJ5UGFyZW50OiB0cnVlfSksXG4gICdwcmUnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2lnbm9yZUZpcnN0TGY6IHRydWV9KSxcbiAgJ2xpc3RpbmcnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2lnbm9yZUZpcnN0TGY6IHRydWV9KSxcbiAgJ3N0eWxlJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjb250ZW50VHlwZTogSHRtbFRhZ0NvbnRlbnRUeXBlLlJBV19URVhUfSksXG4gICdzY3JpcHQnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oe2NvbnRlbnRUeXBlOiBIdG1sVGFnQ29udGVudFR5cGUuUkFXX1RFWFR9KSxcbiAgJ3RpdGxlJzogbmV3IEh0bWxUYWdEZWZpbml0aW9uKHtjb250ZW50VHlwZTogSHRtbFRhZ0NvbnRlbnRUeXBlLkVTQ0FQQUJMRV9SQVdfVEVYVH0pLFxuICAndGV4dGFyZWEnOiBuZXcgSHRtbFRhZ0RlZmluaXRpb24oXG4gICAgICB7Y29udGVudFR5cGU6IEh0bWxUYWdDb250ZW50VHlwZS5FU0NBUEFCTEVfUkFXX1RFWFQsIGlnbm9yZUZpcnN0TGY6IHRydWV9KSxcbn07XG5cbnZhciBERUZBVUxUX1RBR19ERUZJTklUSU9OID0gbmV3IEh0bWxUYWdEZWZpbml0aW9uKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIdG1sVGFnRGVmaW5pdGlvbih0YWdOYW1lOiBzdHJpbmcpOiBIdG1sVGFnRGVmaW5pdGlvbiB7XG4gIHZhciByZXN1bHQgPSBUQUdfREVGSU5JVElPTlNbdGFnTmFtZS50b0xvd2VyQ2FzZSgpXTtcbiAgcmV0dXJuIGlzUHJlc2VudChyZXN1bHQpID8gcmVzdWx0IDogREVGQVVMVF9UQUdfREVGSU5JVElPTjtcbn1cblxudmFyIE5TX1BSRUZJWF9SRSA9IC9eQChbXjpdKyk6KC4rKS9nO1xuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXROc05hbWUoZWxlbWVudE5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgaWYgKGVsZW1lbnROYW1lWzBdICE9ICdAJykge1xuICAgIHJldHVybiBbbnVsbCwgZWxlbWVudE5hbWVdO1xuICB9XG4gIGxldCBtYXRjaCA9IFJlZ0V4cFdyYXBwZXIuZmlyc3RNYXRjaChOU19QUkVGSVhfUkUsIGVsZW1lbnROYW1lKTtcbiAgcmV0dXJuIFttYXRjaFsxXSwgbWF0Y2hbMl1dO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TnNQcmVmaXgoZWxlbWVudE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzcGxpdE5zTmFtZShlbGVtZW50TmFtZSlbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZU5zQW5kTmFtZShwcmVmaXg6IHN0cmluZywgbG9jYWxOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gaXNQcmVzZW50KHByZWZpeCkgPyBgQCR7cHJlZml4fToke2xvY2FsTmFtZX1gIDogbG9jYWxOYW1lO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var ElementSchemaRegistry = (function () {\r\n function ElementSchemaRegistry() {\r\n }\r\n ElementSchemaRegistry.prototype.hasProperty = function (tagName, propName) { return true; };\r\n ElementSchemaRegistry.prototype.getMappedPropName = function (propName) { return propName; };\r\n return ElementSchemaRegistry;\r\n})();\r\nexports.ElementSchemaRegistry = ElementSchemaRegistry;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudF9zY2hlbWFfcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tcGlsZXIvc2NoZW1hL2VsZW1lbnRfc2NoZW1hX3JlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbIkVsZW1lbnRTY2hlbWFSZWdpc3RyeSIsIkVsZW1lbnRTY2hlbWFSZWdpc3RyeS5jb25zdHJ1Y3RvciIsIkVsZW1lbnRTY2hlbWFSZWdpc3RyeS5oYXNQcm9wZXJ0eSIsIkVsZW1lbnRTY2hlbWFSZWdpc3RyeS5nZXRNYXBwZWRQcm9wTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7SUFBQUE7SUFHQUMsQ0FBQ0E7SUFGQ0QsMkNBQVdBLEdBQVhBLFVBQVlBLE9BQWVBLEVBQUVBLFFBQWdCQSxJQUFhRSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUN4RUYsaURBQWlCQSxHQUFqQkEsVUFBa0JBLFFBQWdCQSxJQUFZRyxNQUFNQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNsRUgsNEJBQUNBO0FBQURBLENBQUNBLEFBSEQsSUFHQztBQUhZLDZCQUFxQix3QkFHakMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBFbGVtZW50U2NoZW1hUmVnaXN0cnkge1xuICBoYXNQcm9wZXJ0eSh0YWdOYW1lOiBzdHJpbmcsIHByb3BOYW1lOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHRydWU7IH1cbiAgZ2V0TWFwcGVkUHJvcE5hbWUocHJvcE5hbWU6IHN0cmluZyk6IHN0cmluZyB7IHJldHVybiBwcm9wTmFtZTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar dom_adapter_1 = require('angular2/src/platform/dom/dom_adapter');\r\nvar html_tags_1 = require('angular2/src/compiler/html_tags');\r\nvar element_schema_registry_1 = require('./element_schema_registry');\r\nvar NAMESPACE_URIS = lang_1.CONST_EXPR({ 'xlink': 'http://www.w3.org/1999/xlink', 'svg': 'http://www.w3.org/2000/svg' });\r\nvar DomElementSchemaRegistry = (function (_super) {\r\n __extends(DomElementSchemaRegistry, _super);\r\n function DomElementSchemaRegistry() {\r\n _super.apply(this, arguments);\r\n this._protoElements = new Map();\r\n }\r\n DomElementSchemaRegistry.prototype._getProtoElement = function (tagName) {\r\n var element = this._protoElements.get(tagName);\r\n if (lang_1.isBlank(element)) {\r\n var nsAndName = html_tags_1.splitNsName(tagName);\r\n element = lang_1.isPresent(nsAndName[0]) ?\r\n dom_adapter_1.DOM.createElementNS(NAMESPACE_URIS[nsAndName[0]], nsAndName[1]) :\r\n dom_adapter_1.DOM.createElement(nsAndName[1]);\r\n this._protoElements.set(tagName, element);\r\n }\r\n return element;\r\n };\r\n DomElementSchemaRegistry.prototype.hasProperty = function (tagName, propName) {\r\n if (tagName.indexOf('-') !== -1) {\r\n // can't tell now as we don't know which properties a custom element will get\r\n // once it is instantiated\r\n return true;\r\n }\r\n else {\r\n var elm = this._getProtoElement(tagName);\r\n return dom_adapter_1.DOM.hasProperty(elm, propName);\r\n }\r\n };\r\n DomElementSchemaRegistry.prototype.getMappedPropName = function (propName) {\r\n var mappedPropName = collection_1.StringMapWrapper.get(dom_adapter_1.DOM.attrToPropMap, propName);\r\n return lang_1.isPresent(mappedPropName) ? mappedPropName : propName;\r\n };\r\n DomElementSchemaRegistry = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], DomElementSchemaRegistry);\r\n return DomElementSchemaRegistry;\r\n})(element_schema_registry_1.ElementSchemaRegistry);\r\nexports.DomElementSchemaRegistry = DomElementSchemaRegistry;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tX2VsZW1lbnRfc2NoZW1hX3JlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3NjaGVtYS9kb21fZWxlbWVudF9zY2hlbWFfcmVnaXN0cnkudHMiXSwibmFtZXMiOlsiRG9tRWxlbWVudFNjaGVtYVJlZ2lzdHJ5IiwiRG9tRWxlbWVudFNjaGVtYVJlZ2lzdHJ5LmNvbnN0cnVjdG9yIiwiRG9tRWxlbWVudFNjaGVtYVJlZ2lzdHJ5Ll9nZXRQcm90b0VsZW1lbnQiLCJEb21FbGVtZW50U2NoZW1hUmVnaXN0cnkuaGFzUHJvcGVydHkiLCJEb21FbGVtZW50U2NoZW1hUmVnaXN0cnkuZ2V0TWFwcGVkUHJvcE5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUJBQXlCLHNCQUFzQixDQUFDLENBQUE7QUFDaEQscUJBQTZDLDBCQUEwQixDQUFDLENBQUE7QUFDeEUsMkJBQStCLGdDQUFnQyxDQUFDLENBQUE7QUFDaEUsNEJBQWtCLHVDQUF1QyxDQUFDLENBQUE7QUFDMUQsMEJBQTBCLGlDQUFpQyxDQUFDLENBQUE7QUFFNUQsd0NBQW9DLDJCQUEyQixDQUFDLENBQUE7QUFFaEUsSUFBTSxjQUFjLEdBQ2hCLGlCQUFVLENBQUMsRUFBQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFDLENBQUMsQ0FBQztBQUUvRjtJQUM4Q0EsNENBQXFCQTtJQURuRUE7UUFDOENDLDhCQUFxQkE7UUFDekRBLG1CQUFjQSxHQUFHQSxJQUFJQSxHQUFHQSxFQUFtQkEsQ0FBQ0E7SUE2QnREQSxDQUFDQTtJQTNCU0QsbURBQWdCQSxHQUF4QkEsVUFBeUJBLE9BQWVBO1FBQ3RDRSxJQUFJQSxPQUFPQSxHQUFHQSxJQUFJQSxDQUFDQSxjQUFjQSxDQUFDQSxHQUFHQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQTtRQUMvQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsY0FBT0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDckJBLElBQUlBLFNBQVNBLEdBQUdBLHVCQUFXQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQTtZQUNyQ0EsT0FBT0EsR0FBR0EsZ0JBQVNBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUNuQkEsaUJBQUdBLENBQUNBLGVBQWVBLENBQUNBLGNBQWNBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLEVBQUVBLFNBQVNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUMvREEsaUJBQUdBLENBQUNBLGFBQWFBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzlDQSxJQUFJQSxDQUFDQSxjQUFjQSxDQUFDQSxHQUFHQSxDQUFDQSxPQUFPQSxFQUFFQSxPQUFPQSxDQUFDQSxDQUFDQTtRQUM1Q0EsQ0FBQ0E7UUFDREEsTUFBTUEsQ0FBQ0EsT0FBT0EsQ0FBQ0E7SUFDakJBLENBQUNBO0lBRURGLDhDQUFXQSxHQUFYQSxVQUFZQSxPQUFlQSxFQUFFQSxRQUFnQkE7UUFDM0NHLEVBQUVBLENBQUNBLENBQUNBLE9BQU9BLENBQUNBLE9BQU9BLENBQUNBLEdBQUdBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ2hDQSw2RUFBNkVBO1lBQzdFQSwwQkFBMEJBO1lBQzFCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtRQUNkQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUNOQSxJQUFJQSxHQUFHQSxHQUFHQSxJQUFJQSxDQUFDQSxnQkFBZ0JBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBO1lBQ3pDQSxNQUFNQSxDQUFDQSxpQkFBR0EsQ0FBQ0EsV0FBV0EsQ0FBQ0EsR0FBR0EsRUFBRUEsUUFBUUEsQ0FBQ0EsQ0FBQ0E7UUFDeENBLENBQUNBO0lBQ0hBLENBQUNBO0lBRURILG9EQUFpQkEsR0FBakJBLFVBQWtCQSxRQUFnQkE7UUFDaENJLElBQUlBLGNBQWNBLEdBQUdBLDZCQUFnQkEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsaUJBQUdBLENBQUNBLGFBQWFBLEVBQUVBLFFBQVFBLENBQUNBLENBQUNBO1FBQ3ZFQSxNQUFNQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsY0FBY0EsQ0FBQ0EsR0FBR0EsY0FBY0EsR0FBR0EsUUFBUUEsQ0FBQ0E7SUFDL0RBLENBQUNBO0lBOUJISjtRQUFDQSxlQUFVQSxFQUFFQTs7aUNBK0JaQTtJQUFEQSwrQkFBQ0E7QUFBREEsQ0FBQ0EsQUEvQkQsRUFDOEMsK0NBQXFCLEVBOEJsRTtBQTlCWSxnQ0FBd0IsMkJBOEJwQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge2lzUHJlc2VudCwgaXNCbGFuaywgQ09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7U3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7RE9NfSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vZG9tL2RvbV9hZGFwdGVyJztcbmltcG9ydCB7c3BsaXROc05hbWV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci9odG1sX3RhZ3MnO1xuXG5pbXBvcnQge0VsZW1lbnRTY2hlbWFSZWdpc3RyeX0gZnJvbSAnLi9lbGVtZW50X3NjaGVtYV9yZWdpc3RyeSc7XG5cbmNvbnN0IE5BTUVTUEFDRV9VUklTID1cbiAgICBDT05TVF9FWFBSKHsneGxpbmsnOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsICdzdmcnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnfSk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEb21FbGVtZW50U2NoZW1hUmVnaXN0cnkgZXh0ZW5kcyBFbGVtZW50U2NoZW1hUmVnaXN0cnkge1xuICBwcml2YXRlIF9wcm90b0VsZW1lbnRzID0gbmV3IE1hcDxzdHJpbmcsIEVsZW1lbnQ+KCk7XG5cbiAgcHJpdmF0ZSBfZ2V0UHJvdG9FbGVtZW50KHRhZ05hbWU6IHN0cmluZyk6IEVsZW1lbnQge1xuICAgIHZhciBlbGVtZW50ID0gdGhpcy5fcHJvdG9FbGVtZW50cy5nZXQodGFnTmFtZSk7XG4gICAgaWYgKGlzQmxhbmsoZWxlbWVudCkpIHtcbiAgICAgIHZhciBuc0FuZE5hbWUgPSBzcGxpdE5zTmFtZSh0YWdOYW1lKTtcbiAgICAgIGVsZW1lbnQgPSBpc1ByZXNlbnQobnNBbmROYW1lWzBdKSA/XG4gICAgICAgICAgICAgICAgICAgIERPTS5jcmVhdGVFbGVtZW50TlMoTkFNRVNQQUNFX1VSSVNbbnNBbmROYW1lWzBdXSwgbnNBbmROYW1lWzFdKSA6XG4gICAgICAgICAgICAgICAgICAgIERPTS5jcmVhdGVFbGVtZW50KG5zQW5kTmFtZVsxXSk7XG4gICAgICB0aGlzLl9wcm90b0VsZW1lbnRzLnNldCh0YWdOYW1lLCBlbGVtZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICBoYXNQcm9wZXJ0eSh0YWdOYW1lOiBzdHJpbmcsIHByb3BOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodGFnTmFtZS5pbmRleE9mKCctJykgIT09IC0xKSB7XG4gICAgICAvLyBjYW4ndCB0ZWxsIG5vdyBhcyB3ZSBkb24ndCBrbm93IHdoaWNoIHByb3BlcnRpZXMgYSBjdXN0b20gZWxlbWVudCB3aWxsIGdldFxuICAgICAgLy8gb25jZSBpdCBpcyBpbnN0YW50aWF0ZWRcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZWxtID0gdGhpcy5fZ2V0UHJvdG9FbGVtZW50KHRhZ05hbWUpO1xuICAgICAgcmV0dXJuIERPTS5oYXNQcm9wZXJ0eShlbG0sIHByb3BOYW1lKTtcbiAgICB9XG4gIH1cblxuICBnZXRNYXBwZWRQcm9wTmFtZShwcm9wTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB2YXIgbWFwcGVkUHJvcE5hbWUgPSBTdHJpbmdNYXBXcmFwcGVyLmdldChET00uYXR0clRvUHJvcE1hcCwgcHJvcE5hbWUpO1xuICAgIHJldHVybiBpc1ByZXNlbnQobWFwcGVkUHJvcE5hbWUpID8gbWFwcGVkUHJvcE5hbWUgOiBwcm9wTmFtZTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar application_tokens_1 = require('angular2/src/core/application_tokens');\r\nvar di_2 = require('angular2/src/core/di');\r\n/**\r\n * Create a {@link UrlResolver} with no package prefix.\r\n */\r\nfunction createWithoutPackagePrefix() {\r\n return new UrlResolver();\r\n}\r\nexports.createWithoutPackagePrefix = createWithoutPackagePrefix;\r\n/**\r\n * A default provider for {@link PACKAGE_ROOT_URL} that maps to '/'.\r\n */\r\nexports.DEFAULT_PACKAGE_URL_PROVIDER = new di_2.Provider(application_tokens_1.PACKAGE_ROOT_URL, { useValue: \"/\" });\r\n/**\r\n * Used by the {@link Compiler} when resolving HTML and CSS template URLs.\r\n *\r\n * This class can be overridden by the application developer to create custom behavior.\r\n *\r\n * See {@link Compiler}\r\n *\r\n * ## Example\r\n *\r\n * {@example compiler/ts/url_resolver/url_resolver.ts region='url_resolver'}\r\n */\r\nvar UrlResolver = (function () {\r\n function UrlResolver(packagePrefix) {\r\n if (packagePrefix === void 0) { packagePrefix = null; }\r\n if (lang_1.isPresent(packagePrefix)) {\r\n this._packagePrefix = lang_1.StringWrapper.stripRight(packagePrefix, \"/\") + \"/\";\r\n }\r\n }\r\n /**\r\n * Resolves the `url` given the `baseUrl`:\r\n * - when the `url` is null, the `baseUrl` is returned,\r\n * - if `url` is relative ('path/to/here', './path/to/here'), the resolved url is a combination of\r\n * `baseUrl` and `url`,\r\n * - if `url` is absolute (it has a scheme: 'http://', 'https://' or start with '/'), the `url` is\r\n * returned as is (ignoring the `baseUrl`)\r\n *\r\n * @param {string} baseUrl\r\n * @param {string} url\r\n * @returns {string} the resolved URL\r\n */\r\n UrlResolver.prototype.resolve = function (baseUrl, url) {\r\n var resolvedUrl = url;\r\n if (lang_1.isPresent(baseUrl) && baseUrl.length > 0) {\r\n resolvedUrl = _resolveUrl(baseUrl, resolvedUrl);\r\n }\r\n if (lang_1.isPresent(this._packagePrefix) && getUrlScheme(resolvedUrl) == \"package\") {\r\n resolvedUrl = resolvedUrl.replace(\"package:\", this._packagePrefix);\r\n }\r\n return resolvedUrl;\r\n };\r\n UrlResolver = __decorate([\r\n di_1.Injectable(),\r\n __param(0, di_1.Inject(application_tokens_1.PACKAGE_ROOT_URL)), \r\n __metadata('design:paramtypes', [String])\r\n ], UrlResolver);\r\n return UrlResolver;\r\n})();\r\nexports.UrlResolver = UrlResolver;\r\n/**\r\n * Extract the scheme of a URL.\r\n */\r\nfunction getUrlScheme(url) {\r\n var match = _split(url);\r\n return (match && match[_ComponentIndex.Scheme]) || \"\";\r\n}\r\nexports.getUrlScheme = getUrlScheme;\r\n// The code below is adapted from Traceur:\r\n// https://github.com/google/traceur-compiler/blob/9511c1dafa972bf0de1202a8a863bad02f0f95a8/src/runtime/url.js\r\n/**\r\n * Builds a URI string from already-encoded parts.\r\n *\r\n * No encoding is performed. Any component may be omitted as either null or\r\n * undefined.\r\n *\r\n * @param {?string=} opt_scheme The scheme such as 'http'.\r\n * @param {?string=} opt_userInfo The user name before the '@'.\r\n * @param {?string=} opt_domain The domain such as 'www.google.com', already\r\n * URI-encoded.\r\n * @param {(string|null)=} opt_port The port number.\r\n * @param {?string=} opt_path The path, already URI-encoded. If it is not\r\n * empty, it must begin with a slash.\r\n * @param {?string=} opt_queryData The URI-encoded query data.\r\n * @param {?string=} opt_fragment The URI-encoded fragment identifier.\r\n * @return {string} The fully combined URI.\r\n */\r\nfunction _buildFromEncodedParts(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment) {\r\n var out = [];\r\n if (lang_1.isPresent(opt_scheme)) {\r\n out.push(opt_scheme + ':');\r\n }\r\n if (lang_1.isPresent(opt_domain)) {\r\n out.push('//');\r\n if (lang_1.isPresent(opt_userInfo)) {\r\n out.push(opt_userInfo + '@');\r\n }\r\n out.push(opt_domain);\r\n if (lang_1.isPresent(opt_port)) {\r\n out.push(':' + opt_port);\r\n }\r\n }\r\n if (lang_1.isPresent(opt_path)) {\r\n out.push(opt_path);\r\n }\r\n if (lang_1.isPresent(opt_queryData)) {\r\n out.push('?' + opt_queryData);\r\n }\r\n if (lang_1.isPresent(opt_fragment)) {\r\n out.push('#' + opt_fragment);\r\n }\r\n return out.join('');\r\n}\r\n/**\r\n * A regular expression for breaking a URI into its component parts.\r\n *\r\n * {@link http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#RFC2234} says\r\n * As the \"first-match-wins\" algorithm is identical to the \"greedy\"\r\n * disambiguation method used by POSIX regular expressions, it is natural and\r\n * commonplace to use a regular expression for parsing the potential five\r\n * components of a URI reference.\r\n *\r\n * The following line is the regular expression for breaking-down a\r\n * well-formed URI reference into its components.\r\n *\r\n * <pre>\r\n * ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?\r\n * 12 3 4 5 6 7 8 9\r\n * </pre>\r\n *\r\n * The numbers in the second line above are only to assist readability; they\r\n * indicate the reference points for each subexpression (i.e., each paired\r\n * parenthesis). We refer to the value matched for subexpression <n> as $<n>.\r\n * For example, matching the above expression to\r\n * <pre>\r\n * http://www.ics.uci.edu/pub/ietf/uri/#Related\r\n * </pre>\r\n * results in the following subexpression matches:\r\n * <pre>\r\n * $1 = http:\r\n * $2 = http\r\n * $3 = //www.ics.uci.edu\r\n * $4 = www.ics.uci.edu\r\n * $5 = /pub/ietf/uri/\r\n * $6 = <undefined>\r\n * $7 = <undefined>\r\n * $8 = #Related\r\n * $9 = Related\r\n * </pre>\r\n * where <undefined> indicates that the component is not present, as is the\r\n * case for the query component in the above example. Therefore, we can\r\n * determine the value of the five components as\r\n * <pre>\r\n * scheme = $2\r\n * authority = $4\r\n * path = $5\r\n * query = $7\r\n * fragment = $9\r\n * </pre>\r\n *\r\n * The regular expression has been modified slightly to expose the\r\n * userInfo, domain, and port separately from the authority.\r\n * The modified version yields\r\n * <pre>\r\n * $1 = http scheme\r\n * $2 = <undefined> userInfo -\\\r\n * $3 = www.ics.uci.edu domain | authority\r\n * $4 = <undefined> port -/\r\n * $5 = /pub/ietf/uri/ path\r\n * $6 = <undefined> query without ?\r\n * $7 = Related fragment without #\r\n * </pre>\r\n * @type {!RegExp}\r\n * @internal\r\n */\r\nvar _splitRe = lang_1.RegExpWrapper.create('^' +\r\n '(?:' +\r\n '([^:/?#.]+)' +\r\n // used by other URL parts such as :,\r\n // ?, /, #, and .\r\n ':)?' +\r\n '(?://' +\r\n '(?:([^/?#]*)@)?' +\r\n '([\\\\w\\\\d\\\\-\\\\u0100-\\\\uffff.%]*)' +\r\n // digits, dashes, dots, percent\r\n // escapes, and unicode characters.\r\n '(?::([0-9]+))?' +\r\n ')?' +\r\n '([^?#]+)?' +\r\n '(?:\\\\?([^#]*))?' +\r\n '(?:#(.*))?' +\r\n '$');\r\n/**\r\n * The index of each URI component in the return value of goog.uri.utils.split.\r\n * @enum {number}\r\n */\r\nvar _ComponentIndex;\r\n(function (_ComponentIndex) {\r\n _ComponentIndex[_ComponentIndex[\"Scheme\"] = 1] = \"Scheme\";\r\n _ComponentIndex[_ComponentIndex[\"UserInfo\"] = 2] = \"UserInfo\";\r\n _ComponentIndex[_ComponentIndex[\"Domain\"] = 3] = \"Domain\";\r\n _ComponentIndex[_ComponentIndex[\"Port\"] = 4] = \"Port\";\r\n _ComponentIndex[_ComponentIndex[\"Path\"] = 5] = \"Path\";\r\n _ComponentIndex[_ComponentIndex[\"QueryData\"] = 6] = \"QueryData\";\r\n _ComponentIndex[_ComponentIndex[\"Fragment\"] = 7] = \"Fragment\";\r\n})(_ComponentIndex || (_ComponentIndex = {}));\r\n/**\r\n * Splits a URI into its component parts.\r\n *\r\n * Each component can be accessed via the component indices; for example:\r\n * <pre>\r\n * goog.uri.utils.split(someStr)[goog.uri.utils.CompontentIndex.QUERY_DATA];\r\n * </pre>\r\n *\r\n * @param {string} uri The URI string to examine.\r\n * @return {!Array.<string|undefined>} Each component still URI-encoded.\r\n * Each component that is present will contain the encoded value, whereas\r\n * components that are not present will be undefined or empty, depending\r\n * on the browser's regular expression implementation. Never null, since\r\n * arbitrary strings may still look like path names.\r\n */\r\nfunction _split(uri) {\r\n return lang_1.RegExpWrapper.firstMatch(_splitRe, uri);\r\n}\r\n/**\r\n * Removes dot segments in given path component, as described in\r\n * RFC 3986, section 5.2.4.\r\n *\r\n * @param {string} path A non-empty path component.\r\n * @return {string} Path component with removed dot segments.\r\n */\r\nfunction _removeDotSegments(path) {\r\n if (path == '/')\r\n return '/';\r\n var leadingSlash = path[0] == '/' ? '/' : '';\r\n var trailingSlash = path[path.length - 1] === '/' ? '/' : '';\r\n var segments = path.split('/');\r\n var out = [];\r\n var up = 0;\r\n for (var pos = 0; pos < segments.length; pos++) {\r\n var segment = segments[pos];\r\n switch (segment) {\r\n case '':\r\n case '.':\r\n break;\r\n case '..':\r\n if (out.length > 0) {\r\n out.pop();\r\n }\r\n else {\r\n up++;\r\n }\r\n break;\r\n default:\r\n out.push(segment);\r\n }\r\n }\r\n if (leadingSlash == '') {\r\n while (up-- > 0) {\r\n out.unshift('..');\r\n }\r\n if (out.length === 0)\r\n out.push('.');\r\n }\r\n return leadingSlash + out.join('/') + trailingSlash;\r\n}\r\n/**\r\n * Takes an array of the parts from split and canonicalizes the path part\r\n * and then joins all the parts.\r\n * @param {Array.<string?>} parts\r\n * @return {string}\r\n */\r\nfunction _joinAndCanonicalizePath(parts) {\r\n var path = parts[_ComponentIndex.Path];\r\n path = lang_1.isBlank(path) ? '' : _removeDotSegments(path);\r\n parts[_ComponentIndex.Path] = path;\r\n return _buildFromEncodedParts(parts[_ComponentIndex.Scheme], parts[_ComponentIndex.UserInfo], parts[_ComponentIndex.Domain], parts[_ComponentIndex.Port], path, parts[_ComponentIndex.QueryData], parts[_ComponentIndex.Fragment]);\r\n}\r\n/**\r\n * Resolves a URL.\r\n * @param {string} base The URL acting as the base URL.\r\n * @param {string} to The URL to resolve.\r\n * @return {string}\r\n */\r\nfunction _resolveUrl(base, url) {\r\n var parts = _split(encodeURI(url));\r\n var baseParts = _split(base);\r\n if (lang_1.isPresent(parts[_ComponentIndex.Scheme])) {\r\n return _joinAndCanonicalizePath(parts);\r\n }\r\n else {\r\n parts[_ComponentIndex.Scheme] = baseParts[_ComponentIndex.Scheme];\r\n }\r\n for (var i = _ComponentIndex.Scheme; i <= _ComponentIndex.Port; i++) {\r\n if (lang_1.isBlank(parts[i])) {\r\n parts[i] = baseParts[i];\r\n }\r\n }\r\n if (parts[_ComponentIndex.Path][0] == '/') {\r\n return _joinAndCanonicalizePath(parts);\r\n }\r\n var path = baseParts[_ComponentIndex.Path];\r\n if (lang_1.isBlank(path))\r\n path = '/';\r\n var index = path.lastIndexOf('/');\r\n path = path.substring(0, index + 1) + parts[_ComponentIndex.Path];\r\n parts[_ComponentIndex.Path] = path;\r\n return _joinAndCanonicalizePath(parts);\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsX3Jlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3VybF9yZXNvbHZlci50cyJdLCJuYW1lcyI6WyJjcmVhdGVXaXRob3V0UGFja2FnZVByZWZpeCIsIlVybFJlc29sdmVyIiwiVXJsUmVzb2x2ZXIuY29uc3RydWN0b3IiLCJVcmxSZXNvbHZlci5yZXNvbHZlIiwiZ2V0VXJsU2NoZW1lIiwiX2J1aWxkRnJvbUVuY29kZWRQYXJ0cyIsIl9Db21wb25lbnRJbmRleCIsIl9zcGxpdCIsIl9yZW1vdmVEb3RTZWdtZW50cyIsIl9qb2luQW5kQ2Fub25pY2FsaXplUGF0aCIsIl9yZXNvbHZlVXJsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxtQkFBaUMsc0JBQXNCLENBQUMsQ0FBQTtBQUN4RCxxQkFNTywwQkFBMEIsQ0FBQyxDQUFBO0FBR2xDLG1DQUErQixzQ0FBc0MsQ0FBQyxDQUFBO0FBQ3RFLG1CQUF1QixzQkFBc0IsQ0FBQyxDQUFBO0FBRTlDOztHQUVHO0FBQ0g7SUFDRUEsTUFBTUEsQ0FBQ0EsSUFBSUEsV0FBV0EsRUFBRUEsQ0FBQ0E7QUFDM0JBLENBQUNBO0FBRmUsa0NBQTBCLDZCQUV6QyxDQUFBO0FBRUQ7O0dBRUc7QUFDUSxvQ0FBNEIsR0FBRyxJQUFJLGFBQVEsQ0FBQyxxQ0FBZ0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO0FBRTFGOzs7Ozs7Ozs7O0dBVUc7QUFDSDtJQUlFQyxxQkFBc0NBLGFBQTRCQTtRQUF0REMsNkJBQXNEQSxHQUF0REEsb0JBQXNEQTtRQUNoRUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLGFBQWFBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzdCQSxJQUFJQSxDQUFDQSxjQUFjQSxHQUFHQSxvQkFBYUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsYUFBYUEsRUFBRUEsR0FBR0EsQ0FBQ0EsR0FBR0EsR0FBR0Es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QUlBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBO0lBRW5DQSxNQUFNQSxDQUFDQSxzQkFBc0JBLENBQUNBLEtBQUtBLENBQUNBLGVBQWVBLENBQUNBLE1BQU1BLENBQUNBLEVBQUVBLEtBQUtBLENBQUNBLGVBQWVBLENBQUNBLFFBQVFBLENBQUNBLEVBQzlEQSxLQUFLQSxDQUFDQSxlQUFlQSxDQUFDQSxNQUFNQSxDQUFDQSxFQUFFQSxLQUFLQSxDQUFDQSxlQUFlQSxDQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxJQUFJQSxFQUNoRUEsS0FBS0EsQ0FBQ0EsZUFBZUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsRUFBRUEsS0FBS0EsQ0FBQ0EsZUFBZUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7QUFDbkdBLENBQUNBO0FBRUQ7Ozs7O0dBS0c7QUFDSCxxQkFBcUIsSUFBWSxFQUFFLEdBQVc7SUFDNUNDLElBQUlBLEtBQUtBLEdBQUdBLE1BQU1BLENBQUNBLFNBQVNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBO0lBQ25DQSxJQUFJQSxTQUFTQSxHQUFHQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtJQUU3QkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLEtBQUtBLENBQUNBLGVBQWVBLENBQUNBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQzdDQSxNQUFNQSxDQUFDQSx3QkFBd0JBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO0lBQ3pDQSxDQUFDQTtJQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNOQSxLQUFLQSxDQUFDQSxlQUFlQSxDQUFDQSxNQUFNQSxDQUFDQSxHQUFHQSxTQUFTQSxDQUFDQSxlQUFlQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQTtJQUNwRUEsQ0FBQ0E7SUFFREEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsZUFBZUEsQ0FBQ0EsTUFBTUEsRUFBRUEsQ0FBQ0EsSUFBSUEsZUFBZUEsQ0FBQ0EsSUFBSUEsRUFBRUEsQ0FBQ0EsRUFBRUEsRUFBRUEsQ0FBQ0E7UUFDcEVBLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ3RCQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUMxQkEsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUFFREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsZUFBZUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDMUNBLE1BQU1BLENBQUNBLHdCQUF3QkEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0E7SUFDekNBLENBQUNBO0lBRURBLElBQUlBLElBQUlBLEdBQUdBLFNBQVNBLENBQUNBLGVBQWVBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO0lBQzNDQSxFQUFFQSxDQUFDQSxDQUFDQSxjQUFPQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUFDQSxJQUFJQSxHQUFHQSxHQUFHQSxDQUFDQTtJQUM5QkEsSUFBSUEsS0FBS0EsR0FBR0EsSUFBSUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0E7SUFDbENBLElBQUlBLEdBQUdBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBLEVBQUVBLEtBQUtBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLEtBQUtBLENBQUNBLGVBQWVBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO0lBQ2xFQSxLQUFLQSxDQUFDQSxlQUFlQSxDQUFDQSxJQUFJQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtJQUNuQ0EsTUFBTUEsQ0FBQ0Esd0JBQXdCQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQTtBQUN6Q0EsQ0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdH0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtcbiAgU3RyaW5nV3JhcHBlcixcbiAgaXNQcmVzZW50LFxuICBpc0JsYW5rLFxuICBSZWdFeHBXcmFwcGVyLFxuICBub3JtYWxpemVCbGFua1xufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7UEFDS0FHRV9ST09UX1VSTH0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvYXBwbGljYXRpb25fdG9rZW5zJztcbmltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcblxuLyoqXG4gKiBDcmVhdGUgYSB7QGxpbmsgVXJsUmVzb2x2ZXJ9IHdpdGggbm8gcGFja2FnZSBwcmVmaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXaXRob3V0UGFja2FnZVByZWZpeCgpOiBVcmxSZXNvbHZlciB7XG4gIHJldHVybiBuZXcgVXJsUmVzb2x2ZXIoKTtcbn1cblxuLyoqXG4gKiBBIGRlZmF1bHQgcHJvdmlkZXIgZm9yIHtAbGluayBQQUNLQUdFX1JPT1RfVVJMfSB0aGF0IG1hcHMgdG8gJy8nLlxuICovXG5leHBvcnQgdmFyIERFRkFVTFRfUEFDS0FHRV9VUkxfUFJPVklERVIgPSBuZXcgUHJvdmlkZXIoUEFDS0FHRV9ST09UX1VSTCwge3VzZVZhbHVlOiBcIi9cIn0pO1xuXG4vKipcbiAqIFVzZWQgYnkgdGhlIHtAbGluayBDb21waWxlcn0gd2hlbiByZXNvbHZpbmcgSFRNTCBhbmQgQ1NTIHRlbXBsYXRlIFVSTHMuXG4gKlxuICogVGhpcyBjbGFzcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVyIHRvIGNyZWF0ZSBjdXN0b20gYmVoYXZpb3IuXG4gKlxuICogU2VlIHtAbGluayBDb21waWxlcn1cbiAqXG4gKiAjIyBFeGFtcGxlXG4gKlxuICoge0BleGFtcGxlIGNvbXBpbGVyL3RzL3VybF9yZXNvbHZlci91cmxfcmVzb2x2ZXIudHMgcmVnaW9uPSd1cmxfcmVzb2x2ZXInfVxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXJsUmVzb2x2ZXIge1xuICBwcml2YXRlIF9wYWNrYWdlUHJlZml4OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChQQUNLQUdFX1JPT1RfVVJMKSBwYWNrYWdlUHJlZml4OiBzdHJpbmcgPSBudWxsKSB7XG4gICAgaWYgKGlzUHJlc2VudChwYWNrYWdlUHJlZml4KSkge1xuICAgICAgdGhpcy5fcGFja2FnZVByZWZpeCA9IFN0cmluZ1dyYXBwZXIuc3RyaXBSaWdodChwYWNrYWdlUHJlZml4LCBcIi9cIikgKyBcIi9cIjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIGB1cmxgIGdpdmVuIHRoZSBgYmFzZVVybGA6XG4gICAqIC0gd2hlbiB0aGUgYHVybGAgaXMgbnVsbCwgdGhlIGBiYXNlVXJsYCBpcyByZXR1cm5lZCxcbiAgICogLSBpZiBgdXJsYCBpcyByZWxhdGl2ZSAoJ3BhdGgvdG8vaGVyZScsICcuL3BhdGgvdG8vaGVyZScpLCB0aGUgcmVzb2x2ZWQgdXJsIGlzIGEgY29tYmluYXRpb24gb2ZcbiAgICogYGJhc2VVcmxgIGFuZCBgdXJsYCxcbiAgICogLSBpZiBgdXJsYCBpcyBhYnNvbHV0ZSAoaXQgaGFzIGEgc2NoZW1lOiAnaHR0cDovLycsICdodHRwczovLycgb3Igc3RhcnQgd2l0aCAnLycpLCB0aGUgYHVybGAgaXNcbiAgICogcmV0dXJuZWQgYXMgaXMgKGlnbm9yaW5nIHRoZSBgYmFzZVVybGApXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVXJsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHJldHVybnMge3N0cmluZ30gdGhlIHJlc29sdmVkIFVSTFxuICAgKi9cbiAgcmVzb2x2ZShiYXNlVXJsOiBzdHJpbmcsIHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB2YXIgcmVzb2x2ZWRVcmwgPSB1cmw7XG4gICAgaWYgKGlzUHJlc2VudChiYXNlVXJsKSAmJiBiYXNlVXJsLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc29sdmVkVXJsID0gX3Jlc29sdmVVcmwoYmFzZVVybCwgcmVzb2x2ZWRVcmwpO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX3BhY2thZ2VQcmVmaXgpICYmIGdldFVybFNjaGVtZShyZXNvbHZlZFVybCkgPT0gXCJwYWNrYWdlXCIpIHtcbiAgICAgIHJlc29sdmVkVXJsID0gcmVzb2x2ZWRVcmwucmVwbGFjZShcInBhY2thZ2U6XCIsIHRoaXMuX3BhY2thZ2VQcmVmaXgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZWRVcmw7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHRyYWN0IHRoZSBzY2hlbWUgb2YgYSBVUkwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVcmxTY2hlbWUodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICB2YXIgbWF0Y2ggPSBfc3BsaXQodXJsKTtcbiAgcmV0dXJuIChtYXRjaCAmJiBtYXRjaFtfQ29tcG9uZW50SW5kZXguU2NoZW1lXSkgfHwgXCJcIjtcbn1cblxuLy8gVGhlIGNvZGUgYmVsb3cgaXMgYWRhcHRlZCBmcm9tIFRyYWNldXI6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3RyYWNldXItY29tcGlsZXIvYmxvYi85NTExYzFkYWZhOTcyYmYwZGUxMjAyYThhODYzYmFkMDJmMGY5NWE4L3NyYy9ydW50aW1lL3VybC5qc1xuXG4vKipcbiAqIEJ1aWxkcyBhIFVSSSBzdHJpbmcgZnJvbSBhbHJlYWR5LWVuY29kZWQgcGFydHMuXG4gKlxuICogTm8gZW5jb2RpbmcgaXMgcGVyZm9ybWVkLiAgQW55IGNvbXBvbmVudCBtYXkgYmUgb21pdHRlZCBhcyBlaXRoZXIgbnVsbCBvclxuICogdW5kZWZpbmVkLlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZz19IG9wdF9zY2hlbWUgVGhlIHNjaGVtZSBzdWNoIGFzICdodHRwJy5cbiAqIEBwYXJhbSB7P3N0cmluZz19IG9wdF91c2VySW5mbyBUaGUgdXNlciBuYW1lIGJlZm9yZSB0aGUgJ0AnLlxuICogQHBhcmFtIHs/c3RyaW5nPX0gb3B0X2RvbWFpbiBUaGUgZG9tYWluIHN1Y2ggYXMgJ3d3dy5nb29nbGUuY29tJywgYWxyZWFkeVxuICogICAgIFVSSS1lbmNvZGVkLlxuICogQHBhcmFtIHsoc3RyaW5nfG51bGwpPX0gb3B0X3BvcnQgVGhlIHBvcnQgbnVtYmVyLlxuICogQHBhcmFtIHs/c3RyaW5nPX0gb3B0X3BhdGggVGhlIHBhdGgsIGFscmVhZHkgVVJJLWVuY29kZWQuICBJZiBpdCBpcyBub3RcbiAqICAgICBlbXB0eSwgaXQgbXVzdCBiZWdpbiB3aXRoIGEgc2xhc2guXG4gKiBAcGFyYW0gez9zdHJpbmc9fSBvcHRfcXVlcnlEYXRhIFRoZSBVUkktZW5jb2RlZCBxdWVyeSBkYXRhLlxuICogQHBhcmFtIHs/c3RyaW5nPX0gb3B0X2ZyYWdtZW50IFRoZSBVUkktZW5jb2RlZCBmcmFnbWVudCBpZGVudGlmaWVyLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgZnVsbHkgY29tYmluZWQgVVJJLlxuICovXG5mdW5jdGlvbiBfYnVpbGRGcm9tRW5jb2RlZFBhcnRzKG9wdF9zY2hlbWU/OiBzdHJpbmcsIG9wdF91c2VySW5mbz86IHN0cmluZywgb3B0X2RvbWFpbj86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0X3BvcnQ/OiBzdHJpbmcsIG9wdF9wYXRoPzogc3RyaW5nLCBvcHRfcXVlcnlEYXRhPzogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRfZnJhZ21lbnQ/OiBzdHJpbmcpOiBzdHJpbmcge1xuICB2YXIgb3V0ID0gW107XG5cbiAgaWYgKGlzUHJlc2VudChvcHRfc2NoZW1lKSkge1xuICAgIG91dC5wdXNoKG9wdF9zY2hlbWUgKyAnOicpO1xuICB9XG5cbiAgaWYgKGlzUHJlc2VudChvcHRfZG9tYWluKSkge1xuICAgIG91dC5wdXNoKCcvLycpO1xuXG4gICAgaWYgKGlzUHJlc2VudChvcHRfdXNlckluZm8pKSB7XG4gICAgICBvdXQucHVzaChvcHRfdXNlckluZm8gKyAnQCcpO1xuICAgIH1cblxuICAgIG91dC5wdXNoKG9wdF9kb21haW4pO1xuXG4gICAgaWYgKGlzUHJlc2VudChvcHRfcG9ydCkpIHtcbiAgICAgIG91dC5wdXNoKCc6JyArIG9wdF9wb3J0KTtcbiAgICB9XG4gIH1cblxuICBpZiAoaXNQcmVzZW50KG9wdF9wYXRoKSkge1xuICAgIG91dC5wdXNoKG9wdF9wYXRoKTtcbiAgfVxuXG4gIGlmIChpc1ByZXNlbnQob3B0X3F1ZXJ5RGF0YSkpIHtcbiAgICBvdXQucHVzaCgnPycgKyBvcHRfcXVlcnlEYXRhKTtcbiAgfVxuXG4gIGlmIChpc1ByZXNlbnQob3B0X2ZyYWdtZW50KSkge1xuICAgIG91dC5wdXNoKCcjJyArIG9wdF9mcmFnbWVudCk7XG4gIH1cblxuICByZXR1cm4gb3V0LmpvaW4oJycpO1xufVxuXG4vKipcbiAqIEEgcmVndWxhciBleHByZXNzaW9uIGZvciBicmVha2luZyBhIFVSSSBpbnRvIGl0cyBjb21wb25lbnQgcGFydHMuXG4gKlxuICoge0BsaW5rIGh0dHA6Ly93d3cuZ2Jpdi5jb20vcHJvdG9jb2xzL3VyaS9yZmMvcmZjMzk4Ni5odG1sI1JGQzIyMzR9IHNheXNcbiAqIEFzIHRoZSBcImZpcnN0LW1hdGNoLXdpbnNcIiBhbGdvcml0aG0gaXMgaWRlbnRpY2FsIHRvIHRoZSBcImdyZWVkeVwiXG4gKiBkaXNhbWJpZ3VhdGlvbiBtZXRob2QgdXNlZCBieSBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb25zLCBpdCBpcyBuYXR1cmFsIGFuZFxuICogY29tbW9ucGxhY2UgdG8gdXNlIGEgcmVndWxhciBleHByZXNzaW9uIGZvciBwYXJzaW5nIHRoZSBwb3RlbnRpYWwgZml2ZVxuICogY29tcG9uZW50cyBvZiBhIFVSSSByZWZlcmVuY2UuXG4gKlxuICogVGhlIGZvbGxvd2luZyBsaW5lIGlzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gZm9yIGJyZWFraW5nLWRvd24gYVxuICogd2VsbC1mb3JtZWQgVVJJIHJlZmVyZW5jZSBpbnRvIGl0cyBjb21wb25lbnRzLlxuICpcbiAqIDxwcmU+XG4gKiBeKChbXjovPyNdKyk6KT8oLy8oW14vPyNdKikpPyhbXj8jXSopKFxcPyhbXiNdKikpPygjKC4qKSk/XG4gKiAgMTIgICAgICAgICAgICAzICA0ICAgICAgICAgIDUgICAgICAgNiAgNyAgICAgICAgOCA5XG4gKiA8L3ByZT5cbiAqXG4gKiBUaGUgbnVtYmVycyBpbiB0aGUgc2Vjb25kIGxpbmUgYWJvdmUgYXJlIG9ubHkgdG8gYXNzaXN0IHJlYWRhYmlsaXR5OyB0aGV5XG4gKiBpbmRpY2F0ZSB0aGUgcmVmZXJlbmNlIHBvaW50cyBmb3IgZWFjaCBzdWJleHByZXNzaW9uIChpLmUuLCBlYWNoIHBhaXJlZFxuICogcGFyZW50aGVzaXMpLiBXZSByZWZlciB0byB0aGUgdmFsdWUgbWF0Y2hlZCBmb3Igc3ViZXhwcmVzc2lvbiA8bj4gYXMgJDxuPi5cbiAqIEZvciBleGFtcGxlLCBtYXRjaGluZyB0aGUgYWJvdmUgZXhwcmVzc2lvbiB0b1xuICogPHByZT5cbiAqICAgICBodHRwOi8vd3d3Lmljcy51Y2kuZWR1L3B1Yi9pZXRmL3VyaS8jUmVsYXRlZFxuICogPC9wcmU+XG4gKiByZXN1bHRzIGluIHRoZSBmb2xsb3dpbmcgc3ViZXhwcmVzc2lvbiBtYXRjaGVzOlxuICogPHByZT5cbiAqICAgICQxID0gaHR0cDpcbiAqICAgICQyID0gaHR0cFxuICogICAgJDMgPSAvL3d3dy5pY3MudWNpLmVkdVxuICogICAgJDQgPSB3d3cuaWNzLnVjaS5lZHVcbiAqICAgICQ1ID0gL3B1Yi9pZXRmL3VyaS9cbiAqICAgICQ2ID0gPHVuZGVmaW5lZD5cbiAqICAgICQ3ID0gPHVuZGVmaW5lZD5cbiAqICAgICQ4ID0gI1JlbGF0ZWRcbiAqICAgICQ5ID0gUmVsYXRlZFxuICogPC9wcmU+XG4gKiB3aGVyZSA8dW5kZWZpbmVkPiBpbmRpY2F0ZXMgdGhhdCB0aGUgY29tcG9uZW50IGlzIG5vdCBwcmVzZW50LCBhcyBpcyB0aGVcbiAqIGNhc2UgZm9yIHRoZSBxdWVyeSBjb21wb25lbnQgaW4gdGhlIGFib3ZlIGV4YW1wbGUuIFRoZXJlZm9yZSwgd2UgY2FuXG4gKiBkZXRlcm1pbmUgdGhlIHZhbHVlIG9mIHRoZSBmaXZlIGNvbXBvbmVudHMgYXNcbiAqIDxwcmU+XG4gKiAgICBzY2hlbWUgICAgPSAkMlxuICogICAgYXV0aG9yaXR5ID0gJDRcbiAqICAgIHBhdGggICAgICA9ICQ1XG4gKiAgICBxdWVyeSAgICAgPSAkN1xuICogICAgZnJhZ21lbnQgID0gJDlcbiAqIDwvcHJlPlxuICpcbiAqIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gaGFzIGJlZW4gbW9kaWZpZWQgc2xpZ2h0bHkgdG8gZXhwb3NlIHRoZVxuICogdXNlckluZm8sIGRvbWFpbiwgYW5kIHBvcnQgc2VwYXJhdGVseSBmcm9tIHRoZSBhdXRob3JpdHkuXG4gKiBUaGUgbW9kaWZpZWQgdmVyc2lvbiB5aWVsZHNcbiAqIDxwcmU+XG4gKiAgICAkMSA9IGh0dHAgICAgICAgICAgICAgIHNjaGVtZVxuICogICAgJDIgPSA8dW5kZWZpbmVkPiAgICAgICB1c2VySW5mbyAtXFxcbiAqICAgICQzID0gd3d3Lmljcy51Y2kuZWR1ICAgZG9tYWluICAgICB8IGF1dGhvcml0eVxuICogICAgJDQgPSA8dW5kZWZpbmVkPiAgICAgICBwb3J0ICAgICAtL1xuICogICAgJDUgPSAvcHViL2lldGYvdXJpLyAgICBwYXRoXG4gKiAgICAkNiA9IDx1bmRlZmluZWQ+ICAgICAgIHF1ZXJ5IHdpdGhvdXQgP1xuICogICAgJDcgPSBSZWxhdGVkICAgICAgICAgICBmcmFnbWVudCB3aXRob3V0ICNcbiAqIDwvcHJlPlxuICogQHR5cGUgeyFSZWdFeHB9XG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIF9zcGxpdFJlID1cbiAgICBSZWdFeHBXcmFwcGVyLmNyZWF0ZSgnXicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICcoPzonICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnKFteOi8/Iy5dKyknICsgIC8vIHNjaGVtZSAtIGlnbm9yZSBzcGVjaWFsIGNoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgYnkgb3RoZXIgVVJMIHBhcnRzIHN1Y2ggYXMgOixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vID8sIC8sICMsIGFuZCAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgJzopPycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICcoPzovLycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICcoPzooW14vPyNdKilAKT8nICsgICAgICAgICAgICAgICAgICAvLyB1c2VySW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICcoW1xcXFx3XFxcXGRcXFxcLVxcXFx1MDEwMC1cXFxcdWZmZmYuJV0qKScgKyAgLy8gZG9tYWluIC0gcmVzdHJpY3QgdG8gbGV0dGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlnaXRzLCBkYXNoZXMsIGRvdHMsIHBlcmNlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNjYXBlcywgYW5kIHVuaWNvZGUgY2hhcmFjdGVycy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAnKD86OihbMC05XSspKT8nICsgICAgICAgICAgICAgICAgICAgLy8gcG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICcpPycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICcoW14/I10rKT8nICsgICAgICAgIC8vIHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAnKD86XFxcXD8oW14jXSopKT8nICsgIC8vIHF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgJyg/OiMoLiopKT8nICsgICAgICAgLy8gZnJhZ21lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAnJCcpO1xuXG4vKipcbiAqIFRoZSBpbmRleCBvZiBlYWNoIFVSSSBjb21wb25lbnQgaW4gdGhlIHJldHVybiB2YWx1ZSBvZiBnb29nLnVyaS51dGlscy5zcGxpdC5cbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbmVudW0gX0NvbXBvbmVudEluZGV4IHtcbiAgU2NoZW1lID0gMSxcbiAgVXNlckluZm8sXG4gIERvbWFpbixcbiAgUG9ydCxcbiAgUGF0aCxcbiAgUXVlcnlEYXRhLFxuICBGcmFnbWVudFxufVxuXG4vKipcbiAqIFNwbGl0cyBhIFVSSSBpbnRvIGl0cyBjb21wb25lbnQgcGFydHMuXG4gKlxuICogRWFjaCBjb21wb25lbnQgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgY29tcG9uZW50IGluZGljZXM7IGZvciBleGFtcGxlOlxuICogPHByZT5cbiAqIGdvb2cudXJpLnV0aWxzLnNwbGl0KHNvbWVTdHIpW2dvb2cudXJpLnV0aWxzLkNvbXBvbnRlbnRJbmRleC5RVUVSWV9EQVRBXTtcbiAqIDwvcHJlPlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmkgVGhlIFVSSSBzdHJpbmcgdG8gZXhhbWluZS5cbiAqIEByZXR1cm4geyFBcnJheS48c3RyaW5nfHVuZGVmaW5lZD59IEVhY2ggY29tcG9uZW50IHN0aWxsIFVSSS1lbmNvZGVkLlxuICogICAgIEVhY2ggY29tcG9uZW50IHRoYXQgaXMgcHJlc2VudCB3aWxsIGNvbnRhaW4gdGhlIGVuY29kZWQgdmFsdWUsIHdoZXJlYXNcbiAqICAgICBjb21wb25lbnRzIHRoYXQgYXJlIG5vdCBwcmVzZW50IHdpbGwgYmUgdW5kZWZpbmVkIG9yIGVtcHR5LCBkZXBlbmRpbmdcbiAqICAgICBvbiB0aGUgYnJvd3NlcidzIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbXBsZW1lbnRhdGlvbi4gIE5ldmVyIG51bGwsIHNpbmNlXG4gKiAgICAgYXJiaXRyYXJ5IHN0cmluZ3MgbWF5IHN0aWxsIGxvb2sgbGlrZSBwYXRoIG5hbWVzLlxuICovXG5mdW5jdGlvbiBfc3BsaXQodXJpOiBzdHJpbmcpOiBBcnJheTxzdHJpbmcgfCBhbnk+IHtcbiAgcmV0dXJuIFJlZ0V4cFdyYXBwZXIuZmlyc3RNYXRjaChfc3BsaXRSZSwgdXJpKTtcbn1cblxuLyoqXG4gICogUmVtb3ZlcyBkb3Qgc2VnbWVudHMgaW4gZ2l2ZW4gcGF0aCBjb21wb25lbnQsIGFzIGRlc2NyaWJlZCBpblxuICAqIFJGQyAzOTg2LCBzZWN0aW9uIDUuMi40LlxuICAqXG4gICogQHBhcmFtIHtzdHJpbmd9IHBhdGggQSBub24tZW1wdHkgcGF0aCBjb21wb25lbnQuXG4gICogQHJldHVybiB7c3RyaW5nfSBQYXRoIGNvbXBvbmVudCB3aXRoIHJlbW92ZWQgZG90IHNlZ21lbnRzLlxuICAqL1xuZnVuY3Rpb24gX3JlbW92ZURvdFNlZ21lbnRzKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChwYXRoID09ICcvJykgcmV0dXJuICcvJztcblxuICB2YXIgbGVhZGluZ1NsYXNoID0gcGF0aFswXSA9PSAnLycgPyAnLycgOiAnJztcbiAgdmFyIHRyYWlsaW5nU2xhc2ggPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV0gPT09ICcvJyA/ICcvJyA6ICcnO1xuICB2YXIgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcvJyk7XG5cbiAgdmFyIG91dDogc3RyaW5nW10gPSBbXTtcbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgcG9zID0gMDsgcG9zIDwgc2VnbWVudHMubGVuZ3RoOyBwb3MrKykge1xuICAgIHZhciBzZWdtZW50ID0gc2VnbWVudHNbcG9zXTtcbiAgICBzd2l0Y2ggKHNlZ21lbnQpIHtcbiAgICAgIGNhc2UgJyc6XG4gICAgICBjYXNlICcuJzpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcuLic6XG4gICAgICAgIGlmIChvdXQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIG91dC5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cCsrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgb3V0LnB1c2goc2VnbWVudCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGxlYWRpbmdTbGFzaCA9PSAnJykge1xuICAgIHdoaWxlICh1cC0tID4gMCkge1xuICAgICAgb3V0LnVuc2hpZnQoJy4uJyk7XG4gICAgfVxuXG4gICAgaWYgKG91dC5sZW5ndGggPT09IDApIG91dC5wdXNoKCcuJyk7XG4gIH1cblxuICByZXR1cm4gbGVhZGluZ1NsYXNoICsgb3V0LmpvaW4oJy8nKSArIHRyYWlsaW5nU2xhc2g7XG59XG5cbi8qKlxuICogVGFrZXMgYW4gYXJyYXkgb2YgdGhlIHBhcnRzIGZyb20gc3BsaXQgYW5kIGNhbm9uaWNhbGl6ZXMgdGhlIHBhdGggcGFydFxuICogYW5kIHRoZW4gam9pbnMgYWxsIHRoZSBwYXJ0cy5cbiAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz8+fSBwYXJ0c1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBfam9pbkFuZENhbm9uaWNhbGl6ZVBhdGgocGFydHM6IGFueVtdKTogc3RyaW5nIHtcbiAgdmFyIHBhdGggPSBwYXJ0c1tfQ29tcG9uZW50SW5kZXguUGF0aF07XG4gIHBhdGggPSBpc0JsYW5rKHBhdGgpID8gJycgOiBfcmVtb3ZlRG90U2VnbWVudHMocGF0aCk7XG4gIHBhcnRzW19Db21wb25lbnRJbmRleC5QYXRoXSA9IHBhdGg7XG5cbiAgcmV0dXJuIF9idWlsZEZyb21FbmNvZGVkUGFydHMocGFydHNbX0NvbXBvbmVudEluZGV4LlNjaGVtZV0sIHBhcnRzW19Db21wb25lbnRJbmRleC5Vc2VySW5mb10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzW19Db21wb25lbnRJbmRleC5Eb21haW5dLCBwYXJ0c1tfQ29tcG9uZW50SW5kZXguUG9ydF0sIHBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzW19Db21wb25lbnRJbmRleC5RdWVyeURhdGFdLCBwYXJ0c1tfQ29tcG9uZW50SW5kZXguRnJhZ21lbnRdKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBhIFVSTC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlIFRoZSBVUkwgYWN0aW5nIGFzIHRoZSBiYXNlIFVSTC5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0byBUaGUgVVJMIHRvIHJlc29sdmUuXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIF9yZXNvbHZlVXJsKGJhc2U6IHN0cmluZywgdXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICB2YXIgcGFydHMgPSBfc3BsaXQoZW5jb2RlVVJJKHVybCkpO1xuICB2YXIgYmFzZVBhcnRzID0gX3NwbGl0KGJhc2UpO1xuXG4gIGlmIChpc1ByZXNlbnQocGFydHNbX0NvbXBvbmVudEluZGV4LlNjaGVtZV0pKSB7XG4gICAgcmV0dXJuIF9qb2luQW5kQ2Fub25pY2FsaXplUGF0aChwYXJ0cyk7XG4gIH0gZWxzZSB7XG4gICAgcGFydHNbX0NvbXBvbmVudEluZGV4LlNjaGVtZV0gPSBiYXNlUGFydHNbX0NvbXBvbmVudEluZGV4LlNjaGVtZV07XG4gIH1cblxuICBmb3IgKHZhciBpID0gX0NvbXBvbmVudEluZGV4LlNjaGVtZTsgaSA8PSBfQ29tcG9uZW50SW5kZXguUG9ydDsgaSsrKSB7XG4gICAgaWYgKGlzQmxhbmsocGFydHNbaV0pKSB7XG4gICAgICBwYXJ0c1tpXSA9IGJhc2VQYXJ0c1tpXTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFydHNbX0NvbXBvbmVudEluZGV4LlBhdGhdWzBdID09ICcvJykge1xuICAgIHJldHVybiBfam9pbkFuZENhbm9uaWNhbGl6ZVBhdGgocGFydHMpO1xuICB9XG5cbiAgdmFyIHBhdGggPSBiYXNlUGFydHNbX0NvbXBvbmVudEluZGV4LlBhdGhdO1xuICBpZiAoaXNCbGFuayhwYXRoKSkgcGF0aCA9ICcvJztcbiAgdmFyIGluZGV4ID0gcGF0aC5sYXN0SW5kZXhPZignLycpO1xuICBwYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgaW5kZXggKyAxKSArIHBhcnRzW19Db21wb25lbnRJbmRleC5QYXRoXTtcbiAgcGFydHNbX0NvbXBvbmVudEluZGV4LlBhdGhdID0gcGF0aDtcbiAgcmV0dXJuIF9qb2luQW5kQ2Fub25pY2FsaXplUGF0aChwYXJ0cyk7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';function __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nvar runtime_compiler_1 = require(\"./runtime_compiler\");\r\nvar template_compiler_1 = require('./template_compiler');\r\nexports.TemplateCompiler = template_compiler_1.TemplateCompiler;\r\nvar directive_metadata_1 = require('./directive_metadata');\r\nexports.CompileDirectiveMetadata = directive_metadata_1.CompileDirectiveMetadata;\r\nexports.CompileTypeMetadata = directive_metadata_1.CompileTypeMetadata;\r\nexports.CompileTemplateMetadata = directive_metadata_1.CompileTemplateMetadata;\r\nvar source_module_1 = require('./source_module');\r\nexports.SourceModule = source_module_1.SourceModule;\r\nexports.SourceWithImports = source_module_1.SourceWithImports;\r\nvar platform_directives_and_pipes_1 = require('angular2/src/core/platform_directives_and_pipes');\r\nexports.PLATFORM_DIRECTIVES = platform_directives_and_pipes_1.PLATFORM_DIRECTIVES;\r\nexports.PLATFORM_PIPES = platform_directives_and_pipes_1.PLATFORM_PIPES;\r\n__export(require('angular2/src/compiler/template_ast'));\r\nvar template_parser_1 = require('angular2/src/compiler/template_parser');\r\nexports.TEMPLATE_TRANSFORMS = template_parser_1.TEMPLATE_TRANSFORMS;\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar template_parser_2 = require('angular2/src/compiler/template_parser');\r\nvar html_parser_1 = require('angular2/src/compiler/html_parser');\r\nvar template_normalizer_1 = require('angular2/src/compiler/template_normalizer');\r\nvar runtime_metadata_1 = require('angular2/src/compiler/runtime_metadata');\r\nvar change_detector_compiler_1 = require('angular2/src/compiler/change_detector_compiler');\r\nvar style_compiler_1 = require('angular2/src/compiler/style_compiler');\r\nvar view_compiler_1 = require('angular2/src/compiler/view_compiler');\r\nvar proto_view_compiler_1 = require('angular2/src/compiler/proto_view_compiler');\r\nvar template_compiler_2 = require('angular2/src/compiler/template_compiler');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar compiler_1 = require('angular2/src/core/linker/compiler');\r\nvar runtime_compiler_2 = require('angular2/src/compiler/runtime_compiler');\r\nvar element_schema_registry_1 = require('angular2/src/compiler/schema/element_schema_registry');\r\nvar dom_element_schema_registry_1 = require('angular2/src/compiler/schema/dom_element_schema_registry');\r\nvar url_resolver_1 = require('angular2/src/compiler/url_resolver');\r\nvar change_detection_2 = require('angular2/src/core/change_detection/change_detection');\r\nfunction _createChangeDetectorGenConfig() {\r\n return new change_detection_1.ChangeDetectorGenConfig(lang_1.assertionsEnabled(), false, true);\r\n}\r\n/**\r\n * A set of providers that provide `RuntimeCompiler` and its dependencies to use for\r\n * template compilation.\r\n */\r\nexports.COMPILER_PROVIDERS = lang_1.CONST_EXPR([\r\n change_detection_2.Lexer,\r\n change_detection_2.Parser,\r\n html_parser_1.HtmlParser,\r\n template_parser_2.TemplateParser,\r\n template_normalizer_1.TemplateNormalizer,\r\n runtime_metadata_1.RuntimeMetadataResolver,\r\n url_resolver_1.DEFAULT_PACKAGE_URL_PROVIDER,\r\n style_compiler_1.StyleCompiler,\r\n proto_view_compiler_1.ProtoViewCompiler,\r\n view_compiler_1.ViewCompiler,\r\n change_detector_compiler_1.ChangeDetectionCompiler,\r\n new di_1.Provider(change_detection_1.ChangeDetectorGenConfig, { useFactory: _createChangeDetectorGenConfig, deps: [] }),\r\n template_compiler_2.TemplateCompiler,\r\n new di_1.Provider(runtime_compiler_2.RuntimeCompiler, { useClass: runtime_compiler_1.RuntimeCompiler_ }),\r\n new di_1.Provider(compiler_1.Compiler, { useExisting: runtime_compiler_2.RuntimeCompiler }),\r\n dom_element_schema_registry_1.DomElementSchemaRegistry,\r\n new di_1.Provider(element_schema_registry_1.ElementSchemaRegistry, { useExisting: dom_element_schema_registry_1.DomElementSchemaRegistry }),\r\n url_resolver_1.UrlResolver\r\n]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tcGlsZXIvY29tcGlsZXIudHMiXSwibmFtZXMiOlsiX2NyZWF0ZUNoYW5nZURldGVjdG9yR2VuQ29uZmlnIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBK0Isb0JBQW9CLENBQUMsQ0FBQTtBQUNwRCxrQ0FBK0IscUJBQXFCLENBQUM7QUFBN0MsZ0VBQTZDO0FBQ3JELG1DQUlPLHNCQUFzQixDQUFDO0FBSDVCLGlGQUF3QjtBQUN4Qix1RUFBbUI7QUFDbkIsK0VBQzRCO0FBQzlCLDhCQUE4QyxpQkFBaUIsQ0FBQztBQUF4RCxvREFBWTtBQUFFLDhEQUEwQztBQUNoRSw4Q0FBa0QsaURBQWlELENBQUM7QUFBNUYsa0ZBQW1CO0FBQUUsd0VBQXVFO0FBQ3BHLGlCQUFjLG9DQUFvQyxDQUFDLEVBQUE7QUFDbkQsZ0NBQWtDLHVDQUF1QyxDQUFDO0FBQWxFLG9FQUFrRTtBQUMxRSxxQkFBa0QsMEJBQTBCLENBQUMsQ0FBQTtBQUM3RSxtQkFBZ0Msc0JBQXNCLENBQUMsQ0FBQTtBQUN2RCxnQ0FBNkIsdUNBQXVDLENBQUMsQ0FBQTtBQUNyRSw0QkFBeUIsbUNBQW1DLENBQUMsQ0FBQTtBQUM3RCxvQ0FBaUMsMkNBQTJDLENBQUMsQ0FBQTtBQUM3RSxpQ0FBc0Msd0NBQXdDLENBQUMsQ0FBQTtBQUMvRSx5Q0FBc0MsZ0RBQWdELENBQUMsQ0FBQTtBQUN2RiwrQkFBNEIsc0NBQXNDLENBQUMsQ0FBQTtBQUNuRSw4QkFBMkIscUNBQXFDLENBQUMsQ0FBQTtBQUNqRSxvQ0FBZ0MsMkNBQTJDLENBQUMsQ0FBQTtBQUM1RSxrQ0FBK0IseUNBQXlDLENBQUMsQ0FBQTtBQUN6RSxpQ0FBc0MscURBQXFELENBQUMsQ0FBQTtBQUM1Rix5QkFBdUIsbUNBQW1DLENBQUMsQ0FBQTtBQUMzRCxpQ0FBOEIsd0NBQXdDLENBQUMsQ0FBQTtBQUN2RSx3Q0FBb0Msc0RBQXNELENBQUMsQ0FBQTtBQUMzRiw0Q0FBdUMsMERBQTBELENBQUMsQ0FBQTtBQUNsRyw2QkFBd0Qsb0NBQW9DLENBQUMsQ0FBQTtBQUM3RixpQ0FBNEIscURBQXFELENBQUMsQ0FBQTtBQUVsRjtJQUNFQSxNQUFNQSxDQUFDQSxJQUFJQSwwQ0FBdUJBLENBQUNBLHdCQUFpQkEsRUFBRUEsRUFBRUEsS0FBS0EsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0E7QUFDdkVBLENBQUNBO0FBRUQ7OztHQUdHO0FBQ1UsMEJBQWtCLEdBQW1DLGlCQUFVLENBQUM7SUFDM0Usd0JBQUs7SUFDTCx5QkFBTTtJQUNOLHdCQUFVO0lBQ1YsZ0NBQWM7SUFDZCx3Q0FBa0I7SUFDbEIsMENBQXVCO0lBQ3ZCLDJDQUE0QjtJQUM1Qiw4QkFBYTtJQUNiLHVDQUFpQjtJQUNqQiw0QkFBWTtJQUNaLGtEQUF1QjtJQUN2QixJQUFJLGFBQVEsQ0FBQywwQ0FBdUIsRUFBRSxFQUFDLFVBQVUsRUFBRSw4QkFBOEIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFDLENBQUM7SUFDN0Ysb0NBQWdCO0lBQ2hCLElBQUksYUFBUSxDQUFDLGtDQUFlLEVBQUUsRUFBQyxRQUFRLEVBQUUsbUNBQWdCLEVBQUMsQ0FBQztJQUMzRCxJQUFJLGFBQVEsQ0FBQyxtQkFBUSxFQUFFLEVBQUMsV0FBVyxFQUFFLGtDQUFlLEVBQUMsQ0FBQztJQUN0RCxzREFBd0I7SUFDeEIsSUFBSSxhQUFRLENBQUMsK0NBQXFCLEVBQUUsRUFBQyxXQUFXLEVBQUUsc0RBQXdCLEVBQUMsQ0FBQztJQUM1RSwwQkFBVztDQUNaLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UnVudGltZUNvbXBpbGVyX30gZnJvbSBcIi4vcnVudGltZV9jb21waWxlclwiO1xuZXhwb3J0IHtUZW1wbGF0ZUNvbXBpbGVyfSBmcm9tICcuL3RlbXBsYXRlX2NvbXBpbGVyJztcbmV4cG9ydCB7XG4gIENvbXBpbGVEaXJlY3RpdmVNZXRhZGF0YSxcbiAgQ29tcGlsZVR5cGVNZXRhZGF0YSxcbiAgQ29tcGlsZVRlbXBsYXRlTWV0YWRhdGFcbn0gZnJvbSAnLi9kaXJlY3RpdmVfbWV0YWRhdGEnO1xuZXhwb3J0IHtTb3VyY2VNb2R1bGUsIFNvdXJjZVdpdGhJbXBvcnRzfSBmcm9tICcuL3NvdXJjZV9tb2R1bGUnO1xuZXhwb3J0IHtQTEFURk9STV9ESVJFQ1RJVkVTLCBQTEFURk9STV9QSVBFU30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcGxhdGZvcm1fZGlyZWN0aXZlc19hbmRfcGlwZXMnO1xuZXhwb3J0ICogZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3RlbXBsYXRlX2FzdCc7XG5leHBvcnQge1RFTVBMQVRFX1RSQU5TRk9STVN9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci90ZW1wbGF0ZV9wYXJzZXInO1xuaW1wb3J0IHthc3NlcnRpb25zRW5hYmxlZCwgVHlwZSwgQ09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7cHJvdmlkZSwgUHJvdmlkZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7VGVtcGxhdGVQYXJzZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci90ZW1wbGF0ZV9wYXJzZXInO1xuaW1wb3J0IHtIdG1sUGFyc2VyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvaHRtbF9wYXJzZXInO1xuaW1wb3J0IHtUZW1wbGF0ZU5vcm1hbGl6ZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci90ZW1wbGF0ZV9ub3JtYWxpemVyJztcbmltcG9ydCB7UnVudGltZU1ldGFkYXRhUmVzb2x2ZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci9ydW50aW1lX21ldGFkYXRhJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uQ29tcGlsZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci9jaGFuZ2VfZGV0ZWN0b3JfY29tcGlsZXInO1xuaW1wb3J0IHtTdHlsZUNvbXBpbGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvc3R5bGVfY29tcGlsZXInO1xuaW1wb3J0IHtWaWV3Q29tcGlsZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci92aWV3X2NvbXBpbGVyJztcbmltcG9ydCB7UHJvdG9WaWV3Q29tcGlsZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci9wcm90b192aWV3X2NvbXBpbGVyJztcbmltcG9ydCB7VGVtcGxhdGVDb21waWxlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3RlbXBsYXRlX2NvbXBpbGVyJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JHZW5Db25maWd9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vY2hhbmdlX2RldGVjdGlvbic7XG5pbXBvcnQge0NvbXBpbGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvY29tcGlsZXInO1xuaW1wb3J0IHtSdW50aW1lQ29tcGlsZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci9ydW50aW1lX2NvbXBpbGVyJztcbmltcG9ydCB7RWxlbWVudFNjaGVtYVJlZ2lzdHJ5fSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvc2NoZW1hL2VsZW1lbnRfc2NoZW1hX3JlZ2lzdHJ5JztcbmltcG9ydCB7RG9tRWxlbWVudFNjaGVtYVJlZ2lzdHJ5fSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvc2NoZW1hL2RvbV9lbGVtZW50X3NjaGVtYV9yZWdpc3RyeSc7XG5pbXBvcnQge1VybFJlc29sdmVyLCBERUZBVUxUX1BBQ0tBR0VfVVJMX1BST1ZJREVSfSBmcm9tICdhbmd1bGFyMi9zcmMvY29tcGlsZXIvdXJsX3Jlc29sdmVyJztcbmltcG9ydCB7UGFyc2VyLCBMZXhlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uJztcblxuZnVuY3Rpb24gX2NyZWF0ZUNoYW5nZURldGVjdG9yR2VuQ29uZmlnKCkge1xuICByZXR1cm4gbmV3IENoYW5nZURldGVjdG9yR2VuQ29uZmlnKGFzc2VydGlvbnNFbmFibGVkKCksIGZhbHNlLCB0cnVlKTtcbn1cblxuLyoqXG4gKiBBIHNldCBvZiBwcm92aWRlcnMgdGhhdCBwcm92aWRlIGBSdW50aW1lQ29tcGlsZXJgIGFuZCBpdHMgZGVwZW5kZW5jaWVzIHRvIHVzZSBmb3JcbiAqIHRlbXBsYXRlIGNvbXBpbGF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgQ09NUElMRVJfUFJPVklERVJTOiBBcnJheTxUeXBlIHwgUHJvdmlkZXIgfCBhbnlbXT4gPSBDT05TVF9FWFBSKFtcbiAgTGV4ZXIsXG4gIFBhcnNlcixcbiAgSHRtbFBhcnNlcixcbiAgVGVtcGxhdGVQYXJzZXIsXG4gIFRlbXBsYXRlTm9ybWFsaXplcixcbiAgUnVudGltZU1ldGFkYXRhUmVzb2x2ZXIsXG4gIERFRkFVTFRfUEFDS0FHRV9VUkxfUFJPVklERVIsXG4gIFN0eWxlQ29tcGlsZXIsXG4gIFByb3RvVmlld0NvbXBpbGVyLFxuICBWaWV3Q29tcGlsZXIsXG4gIENoYW5nZURldGVjdGlvbkNvbXBpbGVyLFxuICBuZXcgUHJvdmlkZXIoQ2hhbmdlRGV0ZWN0b3JHZW5Db25maWcsIHt1c2VGYWN0b3J5OiBfY3JlYXRlQ2hhbmdlRGV0ZWN0b3JHZW5Db25maWcsIGRlcHM6IFtdfSksXG4gIFRlbXBsYXRlQ29tcGlsZXIsXG4gIG5ldyBQcm92aWRlcihSdW50aW1lQ29tcGlsZXIsIHt1c2VDbGFzczogUnVudGltZUNvbXBpbGVyX30pLFxuICBuZXcgUHJvdmlkZXIoQ29tcGlsZXIsIHt1c2VFeGlzdGluZzogUnVudGltZUNvbXBpbGVyfSksXG4gIERvbUVsZW1lbnRTY2hlbWFSZWdpc3RyeSxcbiAgbmV3IFByb3ZpZGVyKEVsZW1lbnRTY2hlbWFSZWdpc3RyeSwge3VzZUV4aXN0aW5nOiBEb21FbGVtZW50U2NoZW1hUmVnaXN0cnl9KSxcbiAgVXJsUmVzb2x2ZXJcbl0pO1xuIl19","/* */ \n\"format cjs\";\n'use strict';function __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n/**\r\n * @module\r\n * @description\r\n * Starting point to import all compiler APIs.\r\n */\r\n__export(require('./src/compiler/url_resolver'));\r\n__export(require('./src/compiler/xhr'));\r\n__export(require('./src/compiler/compiler'));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7OztHQUlHO0FBQ0gsaUJBQWMsNkJBQTZCLENBQUMsRUFBQTtBQUM1QyxpQkFBYyxvQkFBb0IsQ0FBQyxFQUFBO0FBQ25DLGlCQUFjLHlCQUF5QixDQUFDLEVBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogU3RhcnRpbmcgcG9pbnQgdG8gaW1wb3J0IGFsbCBjb21waWxlciBBUElzLlxuICovXG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb21waWxlci91cmxfcmVzb2x2ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29tcGlsZXIveGhyJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NvbXBpbGVyL2NvbXBpbGVyJzsiXX0=","/* */ \n\"format cjs\";\n'use strict';// TODO: vsavkin rename it into TemplateLoader\r\n/**\r\n * An interface for retrieving documents by URL that the compiler uses\r\n * to load templates.\r\n */\r\nvar XHR = (function () {\r\n function XHR() {\r\n }\r\n XHR.prototype.get = function (url) { return null; };\r\n return XHR;\r\n})();\r\nexports.XHR = XHR;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGhyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbXBpbGVyL3hoci50cyJdLCJuYW1lcyI6WyJYSFIiLCJYSFIuY29uc3RydWN0b3IiLCJYSFIuZ2V0Il0sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFDOUM7OztHQUdHO0FBQ0g7SUFBQUE7SUFFQUMsQ0FBQ0E7SUFEQ0QsaUJBQUdBLEdBQUhBLFVBQUlBLEdBQVdBLElBQXFCRSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNwREYsVUFBQ0E7QUFBREEsQ0FBQ0EsQUFGRCxJQUVDO0FBRlksV0FBRyxNQUVmLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUT0RPOiB2c2F2a2luIHJlbmFtZSBpdCBpbnRvIFRlbXBsYXRlTG9hZGVyXG4vKipcbiAqIEFuIGludGVyZmFjZSBmb3IgcmV0cmlldmluZyBkb2N1bWVudHMgYnkgVVJMIHRoYXQgdGhlIGNvbXBpbGVyIHVzZXNcbiAqIHRvIGxvYWQgdGVtcGxhdGVzLlxuICovXG5leHBvcnQgY2xhc3MgWEhSIHtcbiAgZ2V0KHVybDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIG51bGw7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar promise_1 = require('angular2/src/facade/promise');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar xhr_1 = require('angular2/src/compiler/xhr');\r\nvar XHRImpl = (function (_super) {\r\n __extends(XHRImpl, _super);\r\n function XHRImpl() {\r\n _super.apply(this, arguments);\r\n }\r\n XHRImpl.prototype.get = function (url) {\r\n var completer = promise_1.PromiseWrapper.completer();\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', url, true);\r\n xhr.responseType = 'text';\r\n xhr.onload = function () {\r\n // responseText is the old-school way of retrieving response (supported by IE8 & 9)\r\n // response/responseType properties were introduced in XHR Level2 spec (supported by IE10)\r\n var response = lang_1.isPresent(xhr.response) ? xhr.response : xhr.responseText;\r\n // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\r\n var status = xhr.status === 1223 ? 204 : xhr.status;\r\n // fix status code when it is 0 (0 status is undocumented).\r\n // Occurs when accessing file resources or on Android 4.1 stock browser\r\n // while retrieving files from application cache.\r\n if (status === 0) {\r\n status = response ? 200 : 0;\r\n }\r\n if (200 <= status && status <= 300) {\r\n completer.resolve(response);\r\n }\r\n else {\r\n completer.reject(\"Failed to load \" + url, null);\r\n }\r\n };\r\n xhr.onerror = function () { completer.reject(\"Failed to load \" + url, null); };\r\n xhr.send();\r\n return completer.promise;\r\n };\r\n return XHRImpl;\r\n})(xhr_1.XHR);\r\nexports.XHRImpl = XHRImpl;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGhyX2ltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci94aHJfaW1wbC50cyJdLCJuYW1lcyI6WyJYSFJJbXBsIiwiWEhSSW1wbC5jb25zdHJ1Y3RvciIsIlhIUkltcGwuZ2V0Il0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdCQUErQyw2QkFBNkIsQ0FBQyxDQUFBO0FBQzdFLHFCQUF3QiwwQkFBMEIsQ0FBQyxDQUFBO0FBQ25ELG9CQUFrQiwyQkFBMkIsQ0FBQyxDQUFBO0FBRTlDO0lBQTZCQSwyQkFBR0E7SUFBaENBO1FBQTZCQyw4QkFBR0E7SUFrQ2hDQSxDQUFDQTtJQWpDQ0QscUJBQUdBLEdBQUhBLFVBQUlBLEdBQVdBO1FBQ2JFLElBQUlBLFNBQVNBLEdBQStCQSx3QkFBY0EsQ0FBQ0EsU0FBU0EsRUFBRUEsQ0FBQ0E7UUFDdkVBLElBQUlBLEdBQUdBLEdBQUdBLElBQUlBLGNBQWNBLEVBQUVBLENBQUNBO1FBQy9CQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxFQUFFQSxHQUFHQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUMzQkEsR0FBR0EsQ0FBQ0EsWUFBWUEsR0FBR0EsTUFBTUEsQ0FBQ0E7UUFFMUJBLEdBQUdBLENBQUNBLE1BQU1BLEdBQUdBO1lBQ1gsbUZBQW1GO1lBQ25GLDBGQUEwRjtZQUMxRixJQUFJLFFBQVEsR0FBRyxnQkFBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUM7WUFFekUseURBQXlEO1lBQ3pELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEtBQUssSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1lBRXBELDJEQUEyRDtZQUMzRCx1RUFBdUU7WUFDdkUsaURBQWlEO1lBQ2pELEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixNQUFNLEdBQUcsUUFBUSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDOUIsQ0FBQztZQUVELEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLFNBQVMsQ0FBQyxNQUFNLENBQUMsb0JBQWtCLEdBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDQTtRQUVGQSxHQUFHQSxDQUFDQSxPQUFPQSxHQUFHQSxjQUFhLFNBQVMsQ0FBQyxNQUFNLENBQUMsb0JBQWtCLEdBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0E7UUFFOUVBLEdBQUdBLENBQUNBLElBQUlBLEVBQUVBLENBQUNBO1FBQ1hBLE1BQU1BLENBQUNBLFNBQVNBLENBQUNBLE9BQU9BLENBQUNBO0lBQzNCQSxDQUFDQTtJQUNIRixjQUFDQTtBQUFEQSxDQUFDQSxBQWxDRCxFQUE2QixTQUFHLEVBa0MvQjtBQWxDWSxlQUFPLFVBa0NuQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQcm9taXNlV3JhcHBlciwgUHJvbWlzZUNvbXBsZXRlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9wcm9taXNlJztcbmltcG9ydCB7aXNQcmVzZW50fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtYSFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21waWxlci94aHInO1xuXG5leHBvcnQgY2xhc3MgWEhSSW1wbCBleHRlbmRzIFhIUiB7XG4gIGdldCh1cmw6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdmFyIGNvbXBsZXRlcjogUHJvbWlzZUNvbXBsZXRlciA8IHN0cmluZyA+PSBQcm9taXNlV3JhcHBlci5jb21wbGV0ZXIoKTtcbiAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgeGhyLm9wZW4oJ0dFVCcsIHVybCwgdHJ1ZSk7XG4gICAgeGhyLnJlc3BvbnNlVHlwZSA9ICd0ZXh0JztcblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIHJlc3BvbnNlVGV4dCBpcyB0aGUgb2xkLXNjaG9vbCB3YXkgb2YgcmV0cmlldmluZyByZXNwb25zZSAoc3VwcG9ydGVkIGJ5IElFOCAmIDkpXG4gICAgICAvLyByZXNwb25zZS9yZXNwb25zZVR5cGUgcHJvcGVydGllcyB3ZXJlIGludHJvZHVjZWQgaW4gWEhSIExldmVsMiBzcGVjIChzdXBwb3J0ZWQgYnkgSUUxMClcbiAgICAgIHZhciByZXNwb25zZSA9IGlzUHJlc2VudCh4aHIucmVzcG9uc2UpID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dDtcblxuICAgICAgLy8gbm9ybWFsaXplIElFOSBidWcgKGh0dHA6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzE0NTApXG4gICAgICB2YXIgc3RhdHVzID0geGhyLnN0YXR1cyA9PT0gMTIyMyA/IDIwNCA6IHhoci5zdGF0dXM7XG5cbiAgICAgIC8vIGZpeCBzdGF0dXMgY29kZSB3aGVuIGl0IGlzIDAgKDAgc3RhdHVzIGlzIHVuZG9jdW1lbnRlZCkuXG4gICAgICAvLyBPY2N1cnMgd2hlbiBhY2Nlc3NpbmcgZmlsZSByZXNvdXJjZXMgb3Igb24gQW5kcm9pZCA0LjEgc3RvY2sgYnJvd3NlclxuICAgICAgLy8gd2hpbGUgcmV0cmlldmluZyBmaWxlcyBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlLlxuICAgICAgaWYgKHN0YXR1cyA9PT0gMCkge1xuICAgICAgICBzdGF0dXMgPSByZXNwb25zZSA/IDIwMCA6IDA7XG4gICAgICB9XG5cbiAgICAgIGlmICgyMDAgPD0gc3RhdHVzICYmIHN0YXR1cyA8PSAzMDApIHtcbiAgICAgICAgY29tcGxldGVyLnJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcGxldGVyLnJlamVjdChgRmFpbGVkIHRvIGxvYWQgJHt1cmx9YCwgbnVsbCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGNvbXBsZXRlci5yZWplY3QoYEZhaWxlZCB0byBsb2FkICR7dXJsfWAsIG51bGwpOyB9O1xuXG4gICAgeGhyLnNlbmQoKTtcbiAgICByZXR1cm4gY29tcGxldGVyLnByb21pc2U7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var angular_entrypoint_1 = require('angular2/src/core/angular_entrypoint');\r\nexports.AngularEntrypoint = angular_entrypoint_1.AngularEntrypoint;\r\nvar browser_common_1 = require('angular2/src/platform/browser_common');\r\nexports.BROWSER_PROVIDERS = browser_common_1.BROWSER_PROVIDERS;\r\nexports.ELEMENT_PROBE_PROVIDERS = browser_common_1.ELEMENT_PROBE_PROVIDERS;\r\nexports.ELEMENT_PROBE_PROVIDERS_PROD_MODE = browser_common_1.ELEMENT_PROBE_PROVIDERS_PROD_MODE;\r\nexports.inspectNativeElement = browser_common_1.inspectNativeElement;\r\nexports.BrowserDomAdapter = browser_common_1.BrowserDomAdapter;\r\nexports.By = browser_common_1.By;\r\nexports.Title = browser_common_1.Title;\r\nexports.DOCUMENT = browser_common_1.DOCUMENT;\r\nexports.enableDebugTools = browser_common_1.enableDebugTools;\r\nexports.disableDebugTools = browser_common_1.disableDebugTools;\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar browser_common_2 = require('angular2/src/platform/browser_common');\r\nvar compiler_1 = require('angular2/compiler');\r\nvar core_1 = require('angular2/core');\r\nvar reflection_capabilities_1 = require('angular2/src/core/reflection/reflection_capabilities');\r\nvar xhr_impl_1 = require(\"angular2/src/platform/browser/xhr_impl\");\r\nvar compiler_2 = require('angular2/compiler');\r\nvar di_1 = require('angular2/src/core/di');\r\n/**\r\n * An array of providers that should be passed into `application()` when bootstrapping a component.\r\n */\r\nexports.BROWSER_APP_PROVIDERS = lang_1.CONST_EXPR([\r\n browser_common_2.BROWSER_APP_COMMON_PROVIDERS,\r\n compiler_1.COMPILER_PROVIDERS,\r\n new di_1.Provider(compiler_2.XHR, { useClass: xhr_impl_1.XHRImpl }),\r\n]);\r\n/**\r\n * Bootstrapping for Angular applications.\r\n *\r\n * You instantiate an Angular application by explicitly specifying a component to use\r\n * as the root component for your application via the `bootstrap()` method.\r\n *\r\n * ## Simple Example\r\n *\r\n * Assuming this `index.html`:\r\n *\r\n * ```html\r\n * <html>\r\n * <!-- load Angular script tags here. -->\r\n * <body>\r\n * <my-app>loading...</my-app>\r\n * </body>\r\n * </html>\r\n * ```\r\n *\r\n * An application is bootstrapped inside an existing browser DOM, typically `index.html`.\r\n * Unlike Angular 1, Angular 2 does not compile/process providers in `index.html`. This is\r\n * mainly for security reasons, as well as architectural changes in Angular 2. This means\r\n * that `index.html` can safely be processed using server-side technologies such as\r\n * providers. Bindings can thus use double-curly `{{ syntax }}` without collision from\r\n * Angular 2 component double-curly `{{ syntax }}`.\r\n *\r\n * We can use this script code:\r\n *\r\n * {@example core/ts/bootstrap/bootstrap.ts region='bootstrap'}\r\n *\r\n * When the app developer invokes `bootstrap()` with the root component `MyApp` as its\r\n * argument, Angular performs the following tasks:\r\n *\r\n * 1. It uses the component's `selector` property to locate the DOM element which needs\r\n * to be upgraded into the angular component.\r\n * 2. It creates a new child injector (from the platform injector). Optionally, you can\r\n * also override the injector configuration for an app by invoking `bootstrap` with the\r\n * `componentInjectableBindings` argument.\r\n * 3. It creates a new `Zone` and connects it to the angular application's change detection\r\n * domain instance.\r\n * 4. It creates an emulated or shadow DOM on the selected component's host element and loads the\r\n * template into it.\r\n * 5. It instantiates the specified component.\r\n * 6. Finally, Angular performs change detection to apply the initial data providers for the\r\n * application.\r\n *\r\n *\r\n * ## Bootstrapping Multiple Applications\r\n *\r\n * When working within a browser window, there are many singleton resources: cookies, title,\r\n * location, and others. Angular services that represent these resources must likewise be\r\n * shared across all Angular applications that occupy the same browser window. For this\r\n * reason, Angular creates exactly one global platform object which stores all shared\r\n * services, and each angular application injector has the platform injector as its parent.\r\n *\r\n * Each application has its own private injector as well. When there are multiple\r\n * applications on a page, Angular treats each application injector's services as private\r\n * to that application.\r\n *\r\n * ## API\r\n *\r\n * - `appComponentType`: The root component which should act as the application. This is\r\n * a reference to a `Type` which is annotated with `@Component(...)`.\r\n * - `customProviders`: An additional set of providers that can be added to the\r\n * app injector to override default injection behavior.\r\n *\r\n * Returns a `Promise` of {@link ComponentRef}.\r\n */\r\nfunction bootstrap(appComponentType, customProviders) {\r\n core_1.reflector.reflectionCapabilities = new reflection_capabilities_1.ReflectionCapabilities();\r\n var appProviders = lang_1.isPresent(customProviders) ? [exports.BROWSER_APP_PROVIDERS, customProviders] : exports.BROWSER_APP_PROVIDERS;\r\n return core_1.platform(browser_common_2.BROWSER_PROVIDERS).application(appProviders).bootstrap(appComponentType);\r\n}\r\nexports.bootstrap = bootstrap;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3BsYXRmb3JtL2Jyb3dzZXIudHMiXSwibmFtZXMiOlsiYm9vdHN0cmFwIl0sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBZ0Msc0NBQXNDLENBQUM7QUFBL0QsbUVBQStEO0FBQ3ZFLCtCQVdPLHNDQUFzQyxDQUFDO0FBVjVDLCtEQUFpQjtBQUNqQiwyRUFBdUI7QUFDdkIsK0ZBQWlDO0FBQ2pDLHFFQUFvQjtBQUNwQiwrREFBaUI7QUFDakIsaUNBQUU7QUFDRix1Q0FBSztBQUNMLDZDQUFRO0FBQ1IsNkRBQWdCO0FBQ2hCLCtEQUM0QztBQUU5QyxxQkFBMEMsMEJBQTBCLENBQUMsQ0FBQTtBQUNyRSwrQkFHTyxzQ0FBc0MsQ0FBQyxDQUFBO0FBQzlDLHlCQUFpQyxtQkFBbUIsQ0FBQyxDQUFBO0FBQ3JELHFCQUFnRCxlQUFlLENBQUMsQ0FBQTtBQUNoRSx3Q0FBcUMsc0RBQXNELENBQUMsQ0FBQTtBQUM1Rix5QkFBc0Isd0NBQXdDLENBQUMsQ0FBQTtBQUMvRCx5QkFBa0IsbUJBQW1CLENBQUMsQ0FBQTtBQUN0QyxtQkFBdUIsc0JBQXNCLENBQUMsQ0FBQTtBQUU5Qzs7R0FFRztBQUNVLDZCQUFxQixHQUEyQyxpQkFBVSxDQUFDO0lBQ3RGLDZDQUE0QjtJQUM1Qiw2QkFBa0I7SUFDbEIsSUFBSSxhQUFRLENBQUMsY0FBRyxFQUFFLEVBQUMsUUFBUSxFQUFFLGtCQUFPLEVBQUMsQ0FBQztDQUN2QyxDQUFDLENBQUM7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1FRztBQUNILG1CQUNJLGdCQUFzQixFQUN0QixlQUF3RDtJQUMxREEsZ0JBQVNBLENBQUNBLHNCQUFzQkEsR0FBR0EsSUFBSUEsZ0RBQXNCQSxFQUFFQSxDQUFDQTtJQUNoRUEsSUFBSUEsWUFBWUEsR0FDWkEsZ0JBQVNBLENBQUNBLGVBQWVBLENBQUNBLEdBQUdBLENBQUNBLDZCQUFxQkEsRUFBRUEsZUFBZUEsQ0FBQ0EsR0FBR0EsNkJBQXFCQSxDQUFDQTtJQUNsR0EsTUFBTUEsQ0FBQ0EsZUFBUUEsQ0FBQ0Esa0NBQWlCQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxZQUFZQSxDQUFDQSxDQUFDQSxTQUFTQSxDQUFDQSxnQkFBZ0JBLENBQUNBLENBQUNBO0FBQzNGQSxDQUFDQTtBQVBlLGlCQUFTLFlBT3hCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge0FuZ3VsYXJFbnRyeXBvaW50fSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9hbmd1bGFyX2VudHJ5cG9pbnQnO1xuZXhwb3J0IHtcbiAgQlJPV1NFUl9QUk9WSURFUlMsXG4gIEVMRU1FTlRfUFJPQkVfUFJPVklERVJTLFxuICBFTEVNRU5UX1BST0JFX1BST1ZJREVSU19QUk9EX01PREUsXG4gIGluc3BlY3ROYXRpdmVFbGVtZW50LFxuICBCcm93c2VyRG9tQWRhcHRlcixcbiAgQnksXG4gIFRpdGxlLFxuICBET0NVTUVOVCxcbiAgZW5hYmxlRGVidWdUb29scyxcbiAgZGlzYWJsZURlYnVnVG9vbHNcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL3BsYXRmb3JtL2Jyb3dzZXJfY29tbW9uJztcblxuaW1wb3J0IHtUeXBlLCBpc1ByZXNlbnQsIENPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1xuICBCUk9XU0VSX1BST1ZJREVSUyxcbiAgQlJPV1NFUl9BUFBfQ09NTU9OX1BST1ZJREVSU1xufSBmcm9tICdhbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlcl9jb21tb24nO1xuaW1wb3J0IHtDT01QSUxFUl9QUk9WSURFUlN9IGZyb20gJ2FuZ3VsYXIyL2NvbXBpbGVyJztcbmltcG9ydCB7Q29tcG9uZW50UmVmLCBwbGF0Zm9ybSwgcmVmbGVjdG9yfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7UmVmbGVjdGlvbkNhcGFiaWxpdGllc30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVmbGVjdGlvbi9yZWZsZWN0aW9uX2NhcGFiaWxpdGllcyc7XG5pbXBvcnQge1hIUkltcGx9IGZyb20gXCJhbmd1bGFyMi9zcmMvcGxhdGZvcm0vYnJvd3Nlci94aHJfaW1wbFwiO1xuaW1wb3J0IHtYSFJ9IGZyb20gJ2FuZ3VsYXIyL2NvbXBpbGVyJztcbmltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcblxuLyoqXG4gKiBBbiBhcnJheSBvZiBwcm92aWRlcnMgdGhhdCBzaG91bGQgYmUgcGFzc2VkIGludG8gYGFwcGxpY2F0aW9uKClgIHdoZW4gYm9vdHN0cmFwcGluZyBhIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IEJST1dTRVJfQVBQX1BST1ZJREVSUzogQXJyYXk8YW55IC8qVHlwZSB8IFByb3ZpZGVyIHwgYW55W10qLz4gPSBDT05TVF9FWFBSKFtcbiAgQlJPV1NFUl9BUFBfQ09NTU9OX1BST1ZJREVSUyxcbiAgQ09NUElMRVJfUFJPVklERVJTLFxuICBuZXcgUHJvdmlkZXIoWEhSLCB7dXNlQ2xhc3M6IFhIUkltcGx9KSxcbl0pO1xuXG4vKipcbiAqIEJvb3RzdHJhcHBpbmcgZm9yIEFuZ3VsYXIgYXBwbGljYXRpb25zLlxuICpcbiAqIFlvdSBpbnN0YW50aWF0ZSBhbiBBbmd1bGFyIGFwcGxpY2F0aW9uIGJ5IGV4cGxpY2l0bHkgc3BlY2lmeWluZyBhIGNvbXBvbmVudCB0byB1c2VcbiAqIGFzIHRoZSByb290IGNvbXBvbmVudCBmb3IgeW91ciBhcHBsaWNhdGlvbiB2aWEgdGhlIGBib290c3RyYXAoKWAgbWV0aG9kLlxuICpcbiAqICMjIFNpbXBsZSBFeGFtcGxlXG4gKlxuICogQXNzdW1pbmcgdGhpcyBgaW5kZXguaHRtbGA6XG4gKlxuICogYGBgaHRtbFxuICogPGh0bWw+XG4gKiAgIDwhLS0gbG9hZCBBbmd1bGFyIHNjcmlwdCB0YWdzIGhlcmUuIC0tPlxuICogICA8Ym9keT5cbiAqICAgICA8bXktYXBwPmxvYWRpbmcuLi48L215LWFwcD5cbiAqICAgPC9ib2R5PlxuICogPC9odG1sPlxuICogYGBgXG4gKlxuICogQW4gYXBwbGljYXRpb24gaXMgYm9vdHN0cmFwcGVkIGluc2lkZSBhbiBleGlzdGluZyBicm93c2VyIERPTSwgdHlwaWNhbGx5IGBpbmRleC5odG1sYC5cbiAqIFVubGlrZSBBbmd1bGFyIDEsIEFuZ3VsYXIgMiBkb2VzIG5vdCBjb21waWxlL3Byb2Nlc3MgcHJvdmlkZXJzIGluIGBpbmRleC5odG1sYC4gVGhpcyBpc1xuICogbWFpbmx5IGZvciBzZWN1cml0eSByZWFzb25zLCBhcyB3ZWxsIGFzIGFyY2hpdGVjdHVyYWwgY2hhbmdlcyBpbiBBbmd1bGFyIDIuIFRoaXMgbWVhbnNcbiAqIHRoYXQgYGluZGV4Lmh0bWxgIGNhbiBzYWZlbHkgYmUgcHJvY2Vzc2VkIHVzaW5nIHNlcnZlci1zaWRlIHRlY2hub2xvZ2llcyBzdWNoIGFzXG4gKiBwcm92aWRlcnMuIEJpbmRpbmdzIGNhbiB0aHVzIHVzZSBkb3VibGUtY3VybHkgYHt7IHN5bnRheCB9fWAgd2l0aG91dCBjb2xsaXNpb24gZnJvbVxuICogQW5ndWxhciAyIGNvbXBvbmVudCBkb3VibGUtY3VybHkgYHt7IHN5bnRheCB9fWAuXG4gKlxuICogV2UgY2FuIHVzZSB0aGlzIHNjcmlwdCBjb2RlOlxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3RzL2Jvb3RzdHJhcC9ib290c3RyYXAudHMgcmVnaW9uPSdib290c3RyYXAnfVxuICpcbiAqIFdoZW4gdGhlIGFwcCBkZXZlbG9wZXIgaW52b2tlcyBgYm9vdHN0cmFwKClgIHdpdGggdGhlIHJvb3QgY29tcG9uZW50IGBNeUFwcGAgYXMgaXRzXG4gKiBhcmd1bWVudCwgQW5ndWxhciBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIHRhc2tzOlxuICpcbiAqICAxLiBJdCB1c2VzIHRoZSBjb21wb25lbnQncyBgc2VsZWN0b3JgIHByb3BlcnR5IHRvIGxvY2F0ZSB0aGUgRE9NIGVsZW1lbnQgd2hpY2ggbmVlZHNcbiAqICAgICB0byBiZSB1cGdyYWRlZCBpbnRvIHRoZSBhbmd1bGFyIGNvbXBvbmVudC5cbiAqICAyLiBJdCBjcmVhdGVzIGEgbmV3IGNoaWxkIGluamVjdG9yIChmcm9tIHRoZSBwbGF0Zm9ybSBpbmplY3RvcikuIE9wdGlvbmFsbHksIHlvdSBjYW5cbiAqICAgICBhbHNvIG92ZXJyaWRlIHRoZSBpbmplY3RvciBjb25maWd1cmF0aW9uIGZvciBhbiBhcHAgYnkgaW52b2tpbmcgYGJvb3RzdHJhcGAgd2l0aCB0aGVcbiAqICAgICBgY29tcG9uZW50SW5qZWN0YWJsZUJpbmRpbmdzYCBhcmd1bWVudC5cbiAqICAzLiBJdCBjcmVhdGVzIGEgbmV3IGBab25lYCBhbmQgY29ubmVjdHMgaXQgdG8gdGhlIGFuZ3VsYXIgYXBwbGljYXRpb24ncyBjaGFuZ2UgZGV0ZWN0aW9uXG4gKiAgICAgZG9tYWluIGluc3RhbmNlLlxuICogIDQuIEl0IGNyZWF0ZXMgYW4gZW11bGF0ZWQgb3Igc2hhZG93IERPTSBvbiB0aGUgc2VsZWN0ZWQgY29tcG9uZW50J3MgaG9zdCBlbGVtZW50IGFuZCBsb2FkcyB0aGVcbiAqICAgICB0ZW1wbGF0ZSBpbnRvIGl0LlxuICogIDUuIEl0IGluc3RhbnRpYXRlcyB0aGUgc3BlY2lmaWVkIGNvbXBvbmVudC5cbiAqICA2LiBGaW5hbGx5LCBBbmd1bGFyIHBlcmZvcm1zIGNoYW5nZSBkZXRlY3Rpb24gdG8gYXBwbHkgdGhlIGluaXRpYWwgZGF0YSBwcm92aWRlcnMgZm9yIHRoZVxuICogICAgIGFwcGxpY2F0aW9uLlxuICpcbiAqXG4gKiAjIyBCb290c3RyYXBwaW5nIE11bHRpcGxlIEFwcGxpY2F0aW9uc1xuICpcbiAqIFdoZW4gd29ya2luZyB3aXRoaW4gYSBicm93c2VyIHdpbmRvdywgdGhlcmUgYXJlIG1hbnkgc2luZ2xldG9uIHJlc291cmNlczogY29va2llcywgdGl0bGUsXG4gKiBsb2NhdGlvbiwgYW5kIG90aGVycy4gQW5ndWxhciBzZXJ2aWNlcyB0aGF0IHJlcHJlc2VudCB0aGVzZSByZXNvdXJjZXMgbXVzdCBsaWtld2lzZSBiZVxuICogc2hhcmVkIGFjcm9zcyBhbGwgQW5ndWxhciBhcHBsaWNhdGlvbnMgdGhhdCBvY2N1cHkgdGhlIHNhbWUgYnJvd3NlciB3aW5kb3cuIEZvciB0aGlzXG4gKiByZWFzb24sIEFuZ3VsYXIgY3JlYXRlcyBleGFjdGx5IG9uZSBnbG9iYWwgcGxhdGZvcm0gb2JqZWN0IHdoaWNoIHN0b3JlcyBhbGwgc2hhcmVkXG4gKiBzZXJ2aWNlcywgYW5kIGVhY2ggYW5ndWxhciBhcHBsaWNhdGlvbiBpbmplY3RvciBoYXMgdGhlIHBsYXRmb3JtIGluamVjdG9yIGFzIGl0cyBwYXJlbnQuXG4gKlxuICogRWFjaCBhcHBsaWNhdGlvbiBoYXMgaXRzIG93biBwcml2YXRlIGluamVjdG9yIGFzIHdlbGwuIFdoZW4gdGhlcmUgYXJlIG11bHRpcGxlXG4gKiBhcHBsaWNhdGlvbnMgb24gYSBwYWdlLCBBbmd1bGFyIHRyZWF0cyBlYWNoIGFwcGxpY2F0aW9uIGluamVjdG9yJ3Mgc2VydmljZXMgYXMgcHJpdmF0ZVxuICogdG8gdGhhdCBhcHBsaWNhdGlvbi5cbiAqXG4gKiAjIyBBUElcbiAqXG4gKiAtIGBhcHBDb21wb25lbnRUeXBlYDogVGhlIHJvb3QgY29tcG9uZW50IHdoaWNoIHNob3VsZCBhY3QgYXMgdGhlIGFwcGxpY2F0aW9uLiBUaGlzIGlzXG4gKiAgIGEgcmVmZXJlbmNlIHRvIGEgYFR5cGVgIHdoaWNoIGlzIGFubm90YXRlZCB3aXRoIGBAQ29tcG9uZW50KC4uLilgLlxuICogLSBgY3VzdG9tUHJvdmlkZXJzYDogQW4gYWRkaXRpb25hbCBzZXQgb2YgcHJvdmlkZXJzIHRoYXQgY2FuIGJlIGFkZGVkIHRvIHRoZVxuICogICBhcHAgaW5qZWN0b3IgdG8gb3ZlcnJpZGUgZGVmYXVsdCBpbmplY3Rpb24gYmVoYXZpb3IuXG4gKlxuICogUmV0dXJucyBhIGBQcm9taXNlYCBvZiB7QGxpbmsgQ29tcG9uZW50UmVmfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcChcbiAgICBhcHBDb21wb25lbnRUeXBlOiBUeXBlLFxuICAgIGN1c3RvbVByb3ZpZGVycz86IEFycmF5PGFueSAvKlR5cGUgfCBQcm92aWRlciB8IGFueVtdKi8+KTogUHJvbWlzZTxDb21wb25lbnRSZWY+IHtcbiAgcmVmbGVjdG9yLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMgPSBuZXcgUmVmbGVjdGlvbkNhcGFiaWxpdGllcygpO1xuICBsZXQgYXBwUHJvdmlkZXJzID1cbiAgICAgIGlzUHJlc2VudChjdXN0b21Qcm92aWRlcnMpID8gW0JST1dTRVJfQVBQX1BST1ZJREVSUywgY3VzdG9tUHJvdmlkZXJzXSA6IEJST1dTRVJfQVBQX1BST1ZJREVSUztcbiAgcmV0dXJuIHBsYXRmb3JtKEJST1dTRVJfUFJPVklERVJTKS5hcHBsaWNhdGlvbihhcHBQcm92aWRlcnMpLmJvb3RzdHJhcChhcHBDb21wb25lbnRUeXBlKTtcbn1cbiJdfQ==","'use strict';\n\nimport {isFunction, isString} from 'angular2/src/facade/lang';\nimport {BrowserDomAdapter} from 'angular2/platform/browser';\nimport {global} from 'angular2/src/facade/lang';\n\nvar defaults = {\n scrollYOffset: 0,\n disableLazySchemas: false,\n debugMode: global.redocDebugMode\n};\n\nvar OPTION_NAMES = new Set(['scrollYOffset', 'disableLazySchemas', 'specUrl']);\n\n@Reflect.metadata('parameters', [[BrowserDomAdapter]])\nexport default class OptionsManager {\n constructor() {\n this._options = defaults;\n this.dom = new BrowserDomAdapter();\n }\n\n get options() {\n return this._options;\n }\n\n set options(opts) {\n this._options = Object.assign(this._options, opts);\n }\n\n parseOptions(el) {\n let parsedOpts;\n let attributesMap = this.dom.attributeMap(el);\n parsedOpts = {};\n Array.from(attributesMap.keys())\n //camelCasify\n .map(k => ({\n attrName: k,\n name: k.replace(/-(.)/g, (m, $1) => $1.toUpperCase())\n })\n )\n .filter(option => OPTION_NAMES.has(option.name))\n .forEach(option => {\n parsedOpts[option.name] = attributesMap.get(option.attrName);\n });\n\n this.options = parsedOpts;\n this._normalizeOptions();\n }\n\n _normalizeOptions() {\n // modify scrollYOffset to always be a function\n if (!isFunction(this._options.scrollYOffset)) {\n if (isFinite(this._options.scrollYOffset)) {\n // if number specified create function that returns this value\n let numberOffset = parseFloat(this._options.scrollYOffset);\n this.options.scrollYOffset = () => numberOffset;\n } else {\n // if selector or node function that returns bottom offset of this node\n let el = this._options.scrollYOffset;\n if (!(el instanceof Node)) {\n el = this.dom.query(el);\n }\n if (!el) {\n this._options.scrollYOffset = () => 0;\n } else {\n this._options.scrollYOffset = () => el.offsetTop + el.offsetHeight;\n }\n }\n }\n\n if (isString(this._options.disableLazySchemas)) this._options.disableLazySchemas = true;\n }\n}\n","'use strict';\n\nimport {ChangeDetectorRef, ChangeDetectionStrategy, ElementRef} from 'angular2/core';\nimport {document} from 'angular2/src/facade/browser';\nimport {BrowserDomAdapter} from 'angular2/platform/browser';\nimport {global} from 'angular2/src/facade/lang';\n\nimport {RedocComponent, BaseComponent, SchemaManager} from '../base';\nimport {redocEvents} from '../../events';\nimport OptionsManager from '../../options';\n\nconst CHANGE = {\n NEXT : 1,\n BACK : -1,\n INITIAL : 0\n};\n\nconst INVIEW_POSITION = {\n ABOVE : 1,\n BELLOW: -1,\n INVIEW: 0\n};\n\n@RedocComponent({\n selector: 'side-menu',\n template: `\n <div class=\"mobile-nav\" (click)=\"toggleMobileNav()\">\n <span class=\"menu-header\"> API Reference: </span>\n <span class=\"selected-item-info\">\n <span class=\"selected-tag\"> {{activeCatCaption}} </span>\n <span class=\"selected-endpoint\">{{activeItemCaption}}</span>\n </span>\n </div>\n <div id=\"resources-nav\">\n <h5 class=\"menu-header\"> API reference </h5>\n <div *ngFor=\"var cat of data.menu; #idx = index\" class=\"menu-cat\">\n\n <label class=\"menu-cat-header\" (click)=\"activateAndScroll(idx, -1)\" [ngClass]=\"{active: cat.active}\"> {{cat.name}}</label>\n <ul class=\"menu-subitems\" [ngClass]=\"{active: cat.active}\">\n <li *ngFor=\"var method of cat.methods; var methIdx = index\"\n [ngClass]=\"{active: method.active}\"\n (click)=\"activateAndScroll(idx, methIdx)\">\n {{method.summary}}\n </li>\n </ul>\n\n </div>\n </div>\n `,\n styles: [`\n .menu-header{text-transform:uppercase;color:#0033a0;padding:0 20px;margin:10px 0}.menu-cat-header{font-size:0.929em;font-family:Montserrat,sans-serif;font-weight:300;cursor:pointer;color:rgba(38,50,56,0.6);text-transform:uppercase;background-color:#FAFAFA;-webkit-transition:all .15s ease-in-out;-moz-transition:all .15s ease-in-out;-ms-transition:all .15s ease-in-out;-o-transition:all .15s ease-in-out;transition:all .15s ease-in-out;display:block;padding:12.5px 20px}.menu-cat-header:hover,.menu-cat-header.active{color:#0033a0;background-color:#f0f0f0}.menu-subitems{margin:0;font-size:0.929em;line-height:1.2em;font-weight:300;color:rgba(38,50,56,0.9);padding:0;height:0;overflow:hidden}.menu-subitems.active{height:auto}.menu-subitems li{-webkit-transition:all .15s ease-in-out;-moz-transition:all .15s ease-in-out;-ms-transition:all .15s ease-in-out;-o-transition:all .15s ease-in-out;transition:all .15s ease-in-out;list-style:none inside none;cursor:pointer;background-color:#f0f0f0;padding:10px 40px;padding-left:40px;overflow:hidden;text-overflow:ellipsis}.menu-subitems li:hover,.menu-subitems li.active{background:#e1e1e1}.mobile-nav{display:none;height:3em;line-height:3em;box-sizing:border-box;border-bottom:1px solid #ccc;cursor:pointer}.mobile-nav:after{content:\"\";display:inline-block;width:3em;height:3em;background:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" enable-background=\"new 0 0 100 100\" version=\"1.1\" viewBox=\"0 0 100 100\" xml:space=\"preserve\"><polygon fill=\"#010101\" points=\"23.1 34.1 51.5 61.7 80 34.1 81.5 35 51.5 64.1 21.5 35 23.1 34.1 \"/></svg>');background-size:70%;background-repeat:no-repeat;background-position:center;float:right;vertical-align:middle}.mobile-nav .menu-header{padding:0 10px 0 20px;font-size:0.95em}@media (max-width: 550px){.mobile-nav .menu-header{display:none}}@media (max-width: 1000px){.mobile-nav{display:block}#resources-nav{height:0;overflow-y:auto;transition:all 0.3s ease}#resources-nav .menu-header{display:none}.menu-subitems{height:auto}}.selected-tag{text-transform:capitalize}.selected-endpoint:before{content:\"/\";padding:0 2px;color:#ccc}.selected-endpoint:empty:before{display:none}.selected-item-info{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;box-sizing:border-box;max-width:350px}@media (max-width: 550px){.selected-item-info{display:inline-block;padding:0 20px;max-width:80%;max-width:calc(100% - 4em)}}\n `],\n changeDetection: ChangeDetectionStrategy.Default\n})\n@Reflect.metadata('parameters', [[SchemaManager], [ElementRef],\n [BrowserDomAdapter], [ChangeDetectorRef], [OptionsManager]])\nexport default class SideMenu extends BaseComponent {\n constructor(schemaMgr, elementRef, dom, changeDetectorRef, optionsMgr) {\n super(schemaMgr);\n this.$element = elementRef.nativeElement;\n this.changeDetector = changeDetectorRef;\n this.dom = dom;\n this.options = optionsMgr.options;\n this.$scrollParent = this.options.$scrollParent;\n this.bindEvents();\n this.activeCatIdx = 0;\n this.activeMethodIdx = -1;\n this.prevOffsetY = null;\n\n redocEvents.bootstrapped.subscribe(() => this.hashScroll());\n\n this.activeCatCaption = '';\n this.activeItemCaption = '';\n }\n\n scrollY() {\n return (this.$scrollParent.pageYOffset != null) ? this.$scrollParent.pageYOffset : this.$scrollParent.scrollTop;\n }\n\n hashScroll(evt) {\n let hash = this.dom.getLocation().hash;\n if (!hash) return;\n\n let $el;\n hash = hash.substr(1);\n let namespace = hash.split('/')[0];\n let ptr = decodeURIComponent(hash.substr(namespace.length + 1));\n if (namespace === 'operation') {\n $el = this.getMethodElByOperId(ptr);\n } else if (namespace === 'tag') {\n let tag = ptr.split('/')[0];\n ptr = ptr.substr(tag.length);\n $el = this.getMethodElByPtr(ptr, tag);\n }\n\n if ($el) this.scrollTo($el);\n if (evt) evt.preventDefault();\n }\n\n bindEvents() {\n this.prevOffsetY = this.scrollY();\n\n //decorate option.scrollYOffset to account mobile nav\n this.scrollYOffset = () => {\n let mobileNavOffset = this.$mobileNav.clientHeight;\n return this.options.scrollYOffset() + mobileNavOffset;\n };\n this._cancel = {};\n this._cancel.scroll = this.dom.onAndCancel(this.$scrollParent, 'scroll', () => { this.scrollHandler(); });\n this._cancel.hash = this.dom.onAndCancel(global, 'hashchange', evt => this.hashScroll(evt));\n }\n\n destroy() {\n this._cancel.scroll();\n this._cancel.hash();\n }\n\n activateAndScroll(idx, methodIdx) {\n if (this.mobileMode()) {\n this.toggleMobileNav();\n }\n this.activate(idx, methodIdx);\n this.scrollToActive();\n }\n\n scrollTo($el) {\n // TODO: rewrite this to use offsetTop as more reliable solution\n let subjRect = $el.getBoundingClientRect();\n let offset = this.scrollY() + subjRect.top - this.scrollYOffset() + 1;\n if (this.$scrollParent.scrollTo) {\n this.$scrollParent.scrollTo(0, offset);\n } else {\n this.$scrollParent.scrollTop = offset;\n }\n }\n\n scrollToActive() {\n this.scrollTo(this.getCurrentMethodEl());\n }\n\n activate(catIdx, methodIdx) {\n let menu = this.data.menu;\n\n this.activeCatCaption = '';\n this.activeItemCaption = '';\n\n menu[this.activeCatIdx].active = false;\n if (menu[this.activeCatIdx].methods.length) {\n if (this.activeMethodIdx >= 0) {\n menu[this.activeCatIdx].methods[this.activeMethodIdx].active = false;\n }\n }\n\n this.activeCatIdx = catIdx;\n this.activeMethodIdx = methodIdx;\n menu[catIdx].active = true;\n this.activeCatCaption = menu[catIdx].name;\n this.activeMethodPtr = null;\n if (menu[catIdx].methods.length && (methodIdx > -1)) {\n let currentItem = menu[catIdx].methods[methodIdx];\n currentItem.active = true;\n this.activeMethodPtr = currentItem.pointer;\n this.activeItemCaption = currentItem.summary;\n }\n }\n\n _calcActiveIndexes(offset) {\n let menu = this.data.menu;\n let catCount = menu.length;\n let catLength = menu[this.activeCatIdx].methods.length;\n\n let resMethodIdx = this.activeMethodIdx + offset;\n let resCatIdx = this.activeCatIdx;\n\n if (resMethodIdx > catLength - 1) {\n resCatIdx++;\n resMethodIdx = -1;\n }\n if (resMethodIdx < -1) {\n let prevCatIdx = --resCatIdx;\n catLength = menu[Math.max(prevCatIdx, 0)].methods.length;\n resMethodIdx = catLength - 1;\n }\n if (resCatIdx > catCount - 1) {\n resCatIdx = catCount - 1;\n resMethodIdx = catLength - 1;\n }\n if (resCatIdx < 0) {\n resCatIdx = 0;\n resMethodIdx = 0;\n }\n\n return [resCatIdx, resMethodIdx];\n }\n\n changeActive(offset = 1) {\n let [catIdx, methodIdx] = this._calcActiveIndexes(offset);\n this.activate(catIdx, methodIdx);\n return (methodIdx === 0 && catIdx === 0);\n }\n\n getMethodElByPtr(ptr, tag) {\n let selector = ptr ? `[pointer=\"${ptr}\"][tag=\"${tag}\"]` : `[tag=\"${tag}\"]`;\n return document.querySelector(selector);\n }\n\n getMethodElByOperId(operationId) {\n let selector =`[operation-id=\"${operationId}\"]`;\n return document.querySelector(selector);\n }\n\n getCurrentMethodEl() {\n return this.getMethodElByPtr(this.activeMethodPtr, this.data.menu[this.activeCatIdx].name);\n }\n\n /* returns 1 if element if above the view, 0 if in view and -1 below the view */\n getElementInViewPos($el) {\n if (Math.floor($el.getBoundingClientRect().top) > this.scrollYOffset()) {\n return INVIEW_POSITION.ABOVE;\n }\n\n if ($el.getBoundingClientRect().bottom <= this.scrollYOffset()) {\n return INVIEW_POSITION.BELLOW;\n }\n return INVIEW_POSITION.INVIEW;\n }\n\n scrollHandler() {\n let isScrolledDown = (this.scrollY() - this.prevOffsetY > 0);\n this.prevOffsetY = this.scrollY();\n let stable = false;\n while(!stable) {\n let $activeMethodHost = this.getCurrentMethodEl();\n if (!$activeMethodHost) return;\n var elementInViewPos = this.getElementInViewPos($activeMethodHost);\n if(isScrolledDown && elementInViewPos === INVIEW_POSITION.BELLOW) {\n stable = this.changeActive(CHANGE.NEXT);\n continue;\n }\n if(!isScrolledDown && elementInViewPos === INVIEW_POSITION.ABOVE ) {\n stable = this.changeActive(CHANGE.BACK);\n continue;\n }\n stable = true;\n }\n this.changeDetector.detectChanges();\n }\n\n prepareModel() {\n this.data = {};\n this.data.menu = Array.from(this.schemaMgr.buildMenuTree().entries()).map(\n el => ({name: el[0], description: el[1].description, methods: el[1].methods})\n );\n }\n\n mobileMode() {\n return this.$mobileNav.clientHeight > 0;\n }\n\n toggleMobileNav() {\n let dom = this.dom;\n let $overflowParent = (this.$scrollParent === global) ? dom.defaultDoc().body : this.$scrollParent;\n if (dom.hasStyle(this.$resourcesNav, 'height')) {\n dom.removeStyle(this.$resourcesNav, 'height');\n dom.removeStyle($overflowParent, 'overflow-y');\n } else {\n let viewportHeight = this.$scrollParent.innerHeight || this.$scrollParent.clientHeight;\n let height = viewportHeight - this.$mobileNav.getBoundingClientRect().bottom;\n dom.setStyle($overflowParent, 'overflow-y', 'hidden');\n dom.setStyle(this.$resourcesNav, 'height', height + 'px');\n }\n }\n\n init() {\n this.$mobileNav = this.dom.querySelector(this.$element, '.mobile-nav');\n this.$resourcesNav = this.dom.querySelector(this.$element, '#resources-nav');\n this.changeActive(CHANGE.INITIAL);\n }\n}\n","/* */ \n'use strict';\nvar ctx = require('./$.ctx'),\n $export = require('./$.export'),\n toObject = require('./$.to-object'),\n call = require('./$.iter-call'),\n isArrayIter = require('./$.is-array-iter'),\n toLength = require('./$.to-length'),\n getIterFn = require('./core.get-iterator-method');\n$export($export.S + $export.F * !require('./$.iter-detect')(function(iter) {\n Array.from(iter);\n}), 'Array', {from: function from(arrayLike) {\n var O = toObject(arrayLike),\n C = typeof this == 'function' ? this : Array,\n $$ = arguments,\n $$len = $$.length,\n mapfn = $$len > 1 ? $$[1] : undefined,\n mapping = mapfn !== undefined,\n index = 0,\n iterFn = getIterFn(O),\n length,\n result,\n step,\n iterator;\n if (mapping)\n mapfn = ctx(mapfn, $$len > 2 ? $$[2] : undefined, 2);\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++) {\n result[index] = mapping ? call(iterator, mapfn, [step.value, index], true) : step.value;\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n result[index] = mapping ? mapfn(O[index], index) : O[index];\n }\n }\n result.length = index;\n return result;\n }});\n","/* */ \nrequire('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/$.core').Array.from;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };","/* */ \n\"use strict\";\nvar _Array$from = require('../core-js/array/from')[\"default\"];\nexports[\"default\"] = function(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0,\n arr2 = Array(arr.length); i < arr.length; i++)\n arr2[i] = arr[i];\n return arr2;\n } else {\n return _Array$from(arr);\n }\n};\nexports.__esModule = true;\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y){\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};","/* */ \nvar anObject = require('./$.an-object'),\n aFunction = require('./$.a-function'),\n SPECIES = require('./$.wks')('species');\nmodule.exports = function(O, D) {\n var C = anObject(O).constructor,\n S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function(fn, args, that){\n var un = that === undefined;\n switch(args.length){\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};","/* */ \nmodule.exports = require('./$.global').document && document.documentElement;\n","/* */ \nvar isObject = require('./$.is-object'),\n document = require('./$.global').document,\n is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it) {\n return is ? document.createElement(it) : {};\n};\n","/* */ \n(function(process) {\n var ctx = require('./$.ctx'),\n invoke = require('./$.invoke'),\n html = require('./$.html'),\n cel = require('./$.dom-create'),\n global = require('./$.global'),\n process = global.process,\n setTask = global.setImmediate,\n clearTask = global.clearImmediate,\n MessageChannel = global.MessageChannel,\n counter = 0,\n queue = {},\n ONREADYSTATECHANGE = 'onreadystatechange',\n defer,\n channel,\n port;\n var run = function() {\n var id = +this;\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n };\n var listner = function(event) {\n run.call(event.data);\n };\n if (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [],\n i = 1;\n while (arguments.length > i)\n args.push(arguments[i++]);\n queue[++counter] = function() {\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n if (require('./$.cof')(process) == 'process') {\n defer = function(id) {\n process.nextTick(ctx(run, id, 1));\n };\n } else if (MessageChannel) {\n channel = new MessageChannel;\n port = channel.port2;\n channel.port1.onmessage = listner;\n defer = ctx(port.postMessage, port, 1);\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function(id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listner, false);\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function(id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function() {\n html.removeChild(this);\n run.call(id);\n };\n };\n } else {\n defer = function(id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n }\n module.exports = {\n set: setTask,\n clear: clearTask\n };\n})(require('process'));\n","/* */ \n(function(process) {\n var global = require('./$.global'),\n macrotask = require('./$.task').set,\n Observer = global.MutationObserver || global.WebKitMutationObserver,\n process = global.process,\n Promise = global.Promise,\n isNode = require('./$.cof')(process) == 'process',\n head,\n last,\n notify;\n var flush = function() {\n var parent,\n domain,\n fn;\n if (isNode && (parent = process.domain)) {\n process.domain = null;\n parent.exit();\n }\n while (head) {\n domain = head.domain;\n fn = head.fn;\n if (domain)\n domain.enter();\n fn();\n if (domain)\n domain.exit();\n head = head.next;\n }\n last = undefined;\n if (parent)\n parent.enter();\n };\n if (isNode) {\n notify = function() {\n process.nextTick(flush);\n };\n } else if (Observer) {\n var toggle = 1,\n node = document.createTextNode('');\n new Observer(flush).observe(node, {characterData: true});\n notify = function() {\n node.data = toggle = -toggle;\n };\n } else if (Promise && Promise.resolve) {\n notify = function() {\n Promise.resolve().then(flush);\n };\n } else {\n notify = function() {\n macrotask.call(global, flush);\n };\n }\n module.exports = function asap(fn) {\n var task = {\n fn: fn,\n next: undefined,\n domain: isNode && process.domain\n };\n if (last)\n last.next = task;\n if (!head) {\n head = task;\n notify();\n }\n last = task;\n };\n})(require('process'));\n","/* */ \nvar ITERATOR = require('./$.wks')('iterator'),\n SAFE_CLOSING = false;\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function() {\n SAFE_CLOSING = true;\n };\n Array.from(riter, function() {\n throw 2;\n });\n} catch (e) {}\nmodule.exports = function(exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING)\n return false;\n var safe = false;\n try {\n var arr = [7],\n iter = arr[ITERATOR]();\n iter.next = function() {\n safe = true;\n };\n arr[ITERATOR] = function() {\n return iter;\n };\n exec(arr);\n } catch (e) {}\n return safe;\n};\n","/* */ \n(function(process) {\n 'use strict';\n var $ = require('./$'),\n LIBRARY = require('./$.library'),\n global = require('./$.global'),\n ctx = require('./$.ctx'),\n classof = require('./$.classof'),\n $export = require('./$.export'),\n isObject = require('./$.is-object'),\n anObject = require('./$.an-object'),\n aFunction = require('./$.a-function'),\n strictNew = require('./$.strict-new'),\n forOf = require('./$.for-of'),\n setProto = require('./$.set-proto').set,\n same = require('./$.same-value'),\n SPECIES = require('./$.wks')('species'),\n speciesConstructor = require('./$.species-constructor'),\n asap = require('./$.microtask'),\n PROMISE = 'Promise',\n process = global.process,\n isNode = classof(process) == 'process',\n P = global[PROMISE],\n Wrapper;\n var testResolve = function(sub) {\n var test = new P(function() {});\n if (sub)\n test.constructor = Object;\n return P.resolve(test) === test;\n };\n var USE_NATIVE = function() {\n var works = false;\n function P2(x) {\n var self = new P(x);\n setProto(self, P2.prototype);\n return self;\n }\n try {\n works = P && P.resolve && testResolve();\n setProto(P2, P);\n P2.prototype = $.create(P.prototype, {constructor: {value: P2}});\n if (!(P2.resolve(5).then(function() {}) instanceof P2)) {\n works = false;\n }\n if (works && require('./$.descriptors')) {\n var thenableThenGotten = false;\n P.resolve($.setDesc({}, 'then', {get: function() {\n thenableThenGotten = true;\n }}));\n works = thenableThenGotten;\n }\n } catch (e) {\n works = false;\n }\n return works;\n }();\n var sameConstructor = function(a, b) {\n if (LIBRARY && a === P && b === Wrapper)\n return true;\n return same(a, b);\n };\n var getConstructor = function(C) {\n var S = anObject(C)[SPECIES];\n return S != undefined ? S : C;\n };\n var isThenable = function(it) {\n var then;\n return isObject(it) && typeof(then = it.then) == 'function' ? then : false;\n };\n var PromiseCapability = function(C) {\n var resolve,\n reject;\n this.promise = new C(function($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined)\n throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve), this.reject = aFunction(reject);\n };\n var perform = function(exec) {\n try {\n exec();\n } catch (e) {\n return {error: e};\n }\n };\n var notify = function(record, isReject) {\n if (record.n)\n return;\n record.n = true;\n var chain = record.c;\n asap(function() {\n var value = record.v,\n ok = record.s == 1,\n i = 0;\n var run = function(reaction) {\n var handler = ok ? reaction.ok : reaction.fail,\n resolve = reaction.resolve,\n reject = reaction.reject,\n result,\n then;\n try {\n if (handler) {\n if (!ok)\n record.h = true;\n result = handler === true ? value : handler(value);\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else\n resolve(result);\n } else\n reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i)\n run(chain[i++]);\n chain.length = 0;\n record.n = false;\n if (isReject)\n setTimeout(function() {\n var promise = record.p,\n handler,\n console;\n if (isUnhandled(promise)) {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({\n promise: promise,\n reason: value\n });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n }\n record.a = undefined;\n }, 1);\n });\n };\n var isUnhandled = function(promise) {\n var record = promise._d,\n chain = record.a || record.c,\n i = 0,\n reaction;\n if (record.h)\n return false;\n while (chain.length > i) {\n reaction = chain[i++];\n if (reaction.fail || !isUnhandled(reaction.promise))\n return false;\n }\n return true;\n };\n var $reject = function(value) {\n var record = this;\n if (record.d)\n return;\n record.d = true;\n record = record.r || record;\n record.v = value;\n record.s = 2;\n record.a = record.c.slice();\n notify(record, true);\n };\n var $resolve = function(value) {\n var record = this,\n then;\n if (record.d)\n return;\n record.d = true;\n record = record.r || record;\n try {\n if (record.p === value)\n throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n asap(function() {\n var wrapper = {\n r: record,\n d: false\n };\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n record.v = value;\n record.s = 1;\n notify(record, false);\n }\n } catch (e) {\n $reject.call({\n r: record,\n d: false\n }, e);\n }\n };\n if (!USE_NATIVE) {\n P = function Promise(executor) {\n aFunction(executor);\n var record = this._d = {\n p: strictNew(this, P, PROMISE),\n c: [],\n a: undefined,\n s: 0,\n d: false,\n v: undefined,\n h: false,\n n: false\n };\n try {\n executor(ctx($resolve, record, 1), ctx($reject, record, 1));\n } catch (err) {\n $reject.call(record, err);\n }\n };\n require('./$.redefine-all')(P.prototype, {\n then: function then(onFulfilled, onRejected) {\n var reaction = new PromiseCapability(speciesConstructor(this, P)),\n promise = reaction.promise,\n record = this._d;\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n record.c.push(reaction);\n if (record.a)\n record.a.push(reaction);\n if (record.s)\n notify(record, false);\n return promise;\n },\n 'catch': function(onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n }\n $export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: P});\n require('./$.set-to-string-tag')(P, PROMISE);\n require('./$.set-species')(PROMISE);\n Wrapper = require('./$.core')[PROMISE];\n $export($export.S + $export.F * !USE_NATIVE, PROMISE, {reject: function reject(r) {\n var capability = new PromiseCapability(this),\n $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }});\n $export($export.S + $export.F * (!USE_NATIVE || testResolve(true)), PROMISE, {resolve: function resolve(x) {\n if (x instanceof P && sameConstructor(x.constructor, this))\n return x;\n var capability = new PromiseCapability(this),\n $$resolve = capability.resolve;\n $$resolve(x);\n return capability.promise;\n }});\n $export($export.S + $export.F * !(USE_NATIVE && require('./$.iter-detect')(function(iter) {\n P.all(iter)['catch'](function() {});\n })), PROMISE, {\n all: function all(iterable) {\n var C = getConstructor(this),\n capability = new PromiseCapability(C),\n resolve = capability.resolve,\n reject = capability.reject,\n values = [];\n var abrupt = perform(function() {\n forOf(iterable, false, values.push, values);\n var remaining = values.length,\n results = Array(remaining);\n if (remaining)\n $.each.call(values, function(promise, index) {\n var alreadyCalled = false;\n C.resolve(promise).then(function(value) {\n if (alreadyCalled)\n return;\n alreadyCalled = true;\n results[index] = value;\n --remaining || resolve(results);\n }, reject);\n });\n else\n resolve(results);\n });\n if (abrupt)\n reject(abrupt.error);\n return capability.promise;\n },\n race: function race(iterable) {\n var C = getConstructor(this),\n capability = new PromiseCapability(C),\n reject = capability.reject;\n var abrupt = perform(function() {\n forOf(iterable, false, function(promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (abrupt)\n reject(abrupt.error);\n return capability.promise;\n }\n });\n})(require('process'));\n","/* */ \nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nmodule.exports = require('../modules/$.core').Promise;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };","/* */ \nvar anObject = require('./$.an-object'),\n get = require('./core.get-iterator-method');\nmodule.exports = require('./$.core').getIterator = function(it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function')\n throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","/* */ \nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","/* */ \n'use strict';\nvar strong = require('./$.collection-strong');\nrequire('./$.collection')('Map', function(get) {\n return function Map() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n}, {\n get: function get(key) {\n var entry = strong.getEntry(this, key);\n return entry && entry.v;\n },\n set: function set(key, value) {\n return strong.def(this, key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","/* */ \nvar $export = require('./$.export');\n$export($export.P, 'Map', {toJSON: require('./$.collection-to-json')('Map')});\n","/* */ \nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nmodule.exports = require('../modules/$.core').Map;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/map\"), __esModule: true };","/* */ \n\"format cjs\";\n// Number.isFinite polyfill\n// http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite\nif (typeof Number.isFinite !== \"function\") {\n Number.isFinite = function isFinite(value) {\n // 1. If Type(number) is not Number, return false.\n if (typeof value !== \"number\") {\n return false;\n }\n // 2. If number is NaN, +∞, or −∞, return false.\n if (value !== value || value === Infinity || value === -Infinity) {\n return false;\n }\n // 3. Otherwise, return true.\n return true;\n };\n}\n","/* */ \n(function(process) {\n \"use strict\";\n var Report = require('./Report');\n var SchemaCompilation = require('./SchemaCompilation');\n var SchemaValidation = require('./SchemaValidation');\n var Utils = require('./Utils');\n function decodeJSONPointer(str) {\n return decodeURIComponent(str).replace(/~[0-1]/g, function(x) {\n return x === \"~1\" ? \"/\" : \"~\";\n });\n }\n function getRemotePath(uri) {\n var io = uri.indexOf(\"#\");\n return io === -1 ? uri : uri.slice(0, io);\n }\n function getQueryPath(uri) {\n var io = uri.indexOf(\"#\");\n var res = io === -1 ? undefined : uri.slice(io + 1);\n return res;\n }\n function findId(schema, id) {\n if (typeof schema !== \"object\" || schema === null) {\n return;\n }\n if (!id) {\n return schema;\n }\n if (schema.id) {\n if (schema.id === id || schema.id[0] === \"#\" && schema.id.substring(1) === id) {\n return schema;\n }\n }\n var idx,\n result;\n if (Array.isArray(schema)) {\n idx = schema.length;\n while (idx--) {\n result = findId(schema[idx], id);\n if (result) {\n return result;\n }\n }\n } else {\n var keys = Object.keys(schema);\n idx = keys.length;\n while (idx--) {\n var k = keys[idx];\n if (k.indexOf(\"__$\") === 0) {\n continue;\n }\n result = findId(schema[k], id);\n if (result) {\n return result;\n }\n }\n }\n }\n exports.cacheSchemaByUri = function(uri, schema) {\n var remotePath = getRemotePath(uri);\n if (remotePath) {\n this.cache[remotePath] = schema;\n }\n };\n exports.removeFromCacheByUri = function(uri) {\n var remotePath = getRemotePath(uri);\n if (remotePath) {\n delete this.cache[remotePath];\n }\n };\n exports.checkCacheForUri = function(uri) {\n var remotePath = getRemotePath(uri);\n return remotePath ? this.cache[remotePath] != null : false;\n };\n exports.getSchema = function(report, schema) {\n if (typeof schema === \"object\") {\n schema = exports.getSchemaByReference.call(this, report, schema);\n }\n if (typeof schema === \"string\") {\n schema = exports.getSchemaByUri.call(this, report, schema);\n }\n return schema;\n };\n exports.getSchemaByReference = function(report, key) {\n var i = this.referenceCache.length;\n while (i--) {\n if (this.referenceCache[i][0] === key) {\n return this.referenceCache[i][1];\n }\n }\n var schema = Utils.cloneDeep(key);\n this.referenceCache.push([key, schema]);\n return schema;\n };\n exports.getSchemaByUri = function(report, uri, root) {\n var remotePath = getRemotePath(uri),\n queryPath = getQueryPath(uri),\n result = remotePath ? this.cache[remotePath] : root;\n if (result && remotePath) {\n var compileRemote = result !== root;\n if (compileRemote) {\n report.path.push(remotePath);\n var remoteReport = new Report(report);\n if (SchemaCompilation.compileSchema.call(this, remoteReport, result)) {\n SchemaValidation.validateSchema.call(this, remoteReport, result);\n }\n var remoteReportIsValid = remoteReport.isValid();\n if (!remoteReportIsValid) {\n report.addError(\"REMOTE_NOT_VALID\", [uri], remoteReport);\n }\n report.path.pop();\n if (!remoteReportIsValid) {\n return undefined;\n }\n }\n }\n if (result && queryPath) {\n var parts = queryPath.split(\"/\");\n for (var idx = 0,\n lim = parts.length; result && idx < lim; idx++) {\n var key = decodeJSONPointer(parts[idx]);\n if (idx === 0) {\n result = findId(result, key);\n } else {\n result = result[key];\n }\n }\n }\n return result;\n };\n exports.getRemotePath = getRemotePath;\n})(require('process'));\n","/* */ \n\"use strict\";\nvar Report = require('./Report');\nvar SchemaCache = require('./SchemaCache');\nvar Utils = require('./Utils');\nfunction mergeReference(scope, ref) {\n if (Utils.isAbsoluteUri(ref)) {\n return ref;\n }\n var joinedScope = scope.join(\"\"),\n isScopeAbsolute = Utils.isAbsoluteUri(joinedScope),\n isScopeRelative = Utils.isRelativeUri(joinedScope),\n isRefRelative = Utils.isRelativeUri(ref),\n toRemove;\n if (isScopeAbsolute && isRefRelative) {\n toRemove = joinedScope.match(/\\/[^\\/]*$/);\n if (toRemove) {\n joinedScope = joinedScope.slice(0, toRemove.index + 1);\n }\n } else if (isScopeRelative && isRefRelative) {\n joinedScope = \"\";\n } else {\n toRemove = joinedScope.match(/[^#/]+$/);\n if (toRemove) {\n joinedScope = joinedScope.slice(0, toRemove.index);\n }\n }\n var res = joinedScope + ref;\n res = res.replace(/##/, \"#\");\n return res;\n}\nfunction collectReferences(obj, results, scope, path) {\n results = results || [];\n scope = scope || [];\n path = path || [];\n if (typeof obj !== \"object\" || obj === null) {\n return results;\n }\n if (typeof obj.id === \"string\") {\n scope.push(obj.id);\n }\n if (typeof obj.$ref === \"string\" && typeof obj.__$refResolved === \"undefined\") {\n results.push({\n ref: mergeReference(scope, obj.$ref),\n key: \"$ref\",\n obj: obj,\n path: path.slice(0)\n });\n }\n if (typeof obj.$schema === \"string\" && typeof obj.__$schemaResolved === \"undefined\") {\n results.push({\n ref: mergeReference(scope, obj.$schema),\n key: \"$schema\",\n obj: obj,\n path: path.slice(0)\n });\n }\n var idx;\n if (Array.isArray(obj)) {\n idx = obj.length;\n while (idx--) {\n path.push(idx.toString());\n collectReferences(obj[idx], results, scope, path);\n path.pop();\n }\n } else {\n var keys = Object.keys(obj);\n idx = keys.length;\n while (idx--) {\n if (keys[idx].indexOf(\"__$\") === 0) {\n continue;\n }\n path.push(keys[idx]);\n collectReferences(obj[keys[idx]], results, scope, path);\n path.pop();\n }\n }\n if (typeof obj.id === \"string\") {\n scope.pop();\n }\n return results;\n}\nvar compileArrayOfSchemasLoop = function(mainReport, arr) {\n var idx = arr.length,\n compiledCount = 0;\n while (idx--) {\n var report = new Report(mainReport);\n var isValid = exports.compileSchema.call(this, report, arr[idx]);\n if (isValid) {\n compiledCount++;\n }\n mainReport.errors = mainReport.errors.concat(report.errors);\n }\n return compiledCount;\n};\nfunction findId(arr, id) {\n var idx = arr.length;\n while (idx--) {\n if (arr[idx].id === id) {\n return arr[idx];\n }\n }\n return null;\n}\nvar compileArrayOfSchemas = function(report, arr) {\n var compiled = 0,\n lastLoopCompiled;\n do {\n var idx = report.errors.length;\n while (idx--) {\n if (report.errors[idx].code === \"UNRESOLVABLE_REFERENCE\") {\n report.errors.splice(idx, 1);\n }\n }\n lastLoopCompiled = compiled;\n compiled = compileArrayOfSchemasLoop.call(this, report, arr);\n idx = arr.length;\n while (idx--) {\n var sch = arr[idx];\n if (sch.__$missingReferences) {\n var idx2 = sch.__$missingReferences.length;\n while (idx2--) {\n var refObj = sch.__$missingReferences[idx2];\n var response = findId(arr, refObj.ref);\n if (response) {\n refObj.obj[\"__\" + refObj.key + \"Resolved\"] = response;\n sch.__$missingReferences.splice(idx2, 1);\n }\n }\n if (sch.__$missingReferences.length === 0) {\n delete sch.__$missingReferences;\n }\n }\n }\n } while (compiled !== arr.length && compiled !== lastLoopCompiled);\n return report.isValid();\n};\nexports.compileSchema = function(report, schema) {\n report.commonErrorMessage = \"SCHEMA_COMPILATION_FAILED\";\n if (typeof schema === \"string\") {\n var loadedSchema = SchemaCache.getSchemaByUri.call(this, report, schema);\n if (!loadedSchema) {\n report.addError(\"SCHEMA_NOT_REACHABLE\", [schema]);\n return false;\n }\n schema = loadedSchema;\n }\n if (Array.isArray(schema)) {\n return compileArrayOfSchemas.call(this, report, schema);\n }\n if (schema.__$compiled && schema.id && SchemaCache.checkCacheForUri.call(this, schema.id) === false) {\n schema.__$compiled = undefined;\n }\n if (schema.__$compiled) {\n return true;\n }\n if (schema.id && typeof schema.id === \"string\") {\n SchemaCache.cacheSchemaByUri.call(this, schema.id, schema);\n }\n var isRoot = false;\n if (!report.rootSchema) {\n report.rootSchema = schema;\n isRoot = true;\n }\n var isValidExceptReferences = report.isValid();\n delete schema.__$missingReferences;\n var refs = collectReferences.call(this, schema),\n idx = refs.length;\n while (idx--) {\n var refObj = refs[idx];\n var response = SchemaCache.getSchemaByUri.call(this, report, refObj.ref, schema);\n if (!response) {\n var schemaReader = this.getSchemaReader();\n if (schemaReader) {\n var s = schemaReader(refObj.ref);\n if (s) {\n s.id = refObj.ref;\n var subreport = new Report(report);\n if (!exports.compileSchema.call(this, subreport, s)) {\n report.errors = report.errors.concat(subreport.errors);\n } else {\n response = SchemaCache.getSchemaByUri.call(this, report, refObj.ref, schema);\n }\n }\n }\n }\n if (!response) {\n var hasNotValid = report.hasError(\"REMOTE_NOT_VALID\", [refObj.ref]);\n var isAbsolute = Utils.isAbsoluteUri(refObj.ref);\n var isDownloaded = false;\n var ignoreUnresolvableRemotes = this.options.ignoreUnresolvableReferences === true;\n if (isAbsolute) {\n isDownloaded = SchemaCache.checkCacheForUri.call(this, refObj.ref);\n }\n if (hasNotValid) {} else if (ignoreUnresolvableRemotes && isAbsolute) {} else if (isDownloaded) {} else {\n Array.prototype.push.apply(report.path, refObj.path);\n report.addError(\"UNRESOLVABLE_REFERENCE\", [refObj.ref]);\n report.path = report.path.slice(0, -refObj.path.length);\n if (isValidExceptReferences) {\n schema.__$missingReferences = schema.__$missingReferences || [];\n schema.__$missingReferences.push(refObj);\n }\n }\n }\n refObj.obj[\"__\" + refObj.key + \"Resolved\"] = response;\n }\n var isValid = report.isValid();\n if (isValid) {\n schema.__$compiled = true;\n } else {\n if (schema.id && typeof schema.id === \"string\") {\n SchemaCache.removeFromCacheByUri.call(this, schema.id);\n }\n }\n if (isRoot) {\n report.rootSchema = undefined;\n }\n return isValid;\n};\n","/* */ \n\"format cjs\";\n/*!\n * Copyright (c) 2015 Chris O'Hara <cohara87@gmail.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n(function (name, definition) {\n if (typeof exports !== 'undefined' && typeof module !== 'undefined') {\n module.exports = definition();\n } else if (typeof define === 'function' && typeof define.amd === 'object') {\n define(definition);\n } else if (typeof define === 'function' && typeof define.petal === 'object') {\n define(name, [], definition);\n } else {\n this[name] = definition();\n }\n})('validator', function (validator) {\n\n 'use strict';\n\n validator = { version: '4.5.0' };\n\n var emailUserPart = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]+$/i;\n var quotedEmailUser = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]))*$/i;\n\n var emailUserUtf8Part = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+$/i;\n var quotedEmailUserUtf8 = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*$/i;\n\n var displayName = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF\\s]*<(.+)>$/i;\n\n var creditCard = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$/;\n\n var isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/;\n\n var isbn10Maybe = /^(?:[0-9]{9}X|[0-9]{10})$/\n , isbn13Maybe = /^(?:[0-9]{13})$/;\n\n var macAddress = /^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$/;\n\n var ipv4Maybe = /^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$/\n , ipv6Block = /^[0-9A-F]{1,4}$/i;\n\n var uuid = {\n '3': /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i\n , '4': /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i\n , '5': /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i\n , all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i\n };\n\n var alpha = /^[A-Z]+$/i\n , alphanumeric = /^[0-9A-Z]+$/i\n , numeric = /^[-+]?[0-9]+$/\n , int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/\n , float = /^(?:[-+]?(?:[0-9]+))?(?:\\.[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$/\n , hexadecimal = /^[0-9A-F]+$/i\n , decimal = /^[-+]?([0-9]+|\\.[0-9]+|[0-9]+\\.[0-9]+)$/\n , hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{6})$/i;\n\n var ascii = /^[\\x00-\\x7F]+$/\n , multibyte = /[^\\x00-\\x7F]/\n , fullWidth = /[^\\u0020-\\u007E\\uFF61-\\uFF9F\\uFFA0-\\uFFDC\\uFFE8-\\uFFEE0-9a-zA-Z]/\n , halfWidth = /[\\u0020-\\u007E\\uFF61-\\uFF9F\\uFFA0-\\uFFDC\\uFFE8-\\uFFEE0-9a-zA-Z]/;\n\n var surrogatePair = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/;\n\n var base64 = /^(?:[A-Z0-9+\\/]{4})*(?:[A-Z0-9+\\/]{2}==|[A-Z0-9+\\/]{3}=|[A-Z0-9+\\/]{4})$/i;\n\n var phones = {\n 'zh-CN': /^(\\+?0?86\\-?)?((13\\d|14[57]|15[^4,\\D]|17[678]|18\\d)\\d{8}|170[059]\\d{7})$/,\n 'zh-TW': /^(\\+?886\\-?|0)?9\\d{8}$/,\n 'en-ZA': /^(\\+?27|0)\\d{9}$/,\n 'en-AU': /^(\\+?61|0)4\\d{8}$/,\n 'en-HK': /^(\\+?852\\-?)?[569]\\d{3}\\-?\\d{4}$/,\n 'fr-FR': /^(\\+?33|0)[67]\\d{8}$/,\n 'pt-PT': /^(\\+351)?9[1236]\\d{7}$/,\n 'el-GR': /^(\\+?30)?(69\\d{8})$/,\n 'en-GB': /^(\\+?44|0)7\\d{9}$/,\n 'en-US': /^(\\+?1)?[2-9]\\d{2}[2-9](?!11)\\d{6}$/,\n 'en-ZM': /^(\\+26)?09[567]\\d{7}$/,\n 'ru-RU': /^(\\+?7|8)?9\\d{9}$/,\n 'nb-NO': /^(\\+?47)?[49]\\d{7}$/,\n 'nn-NO': /^(\\+?47)?[49]\\d{7}$/,\n 'vi-VN': /^(0|\\+?84)?((1(2([0-9])|6([2-9])|88|99))|(9((?!5)[0-9])))([0-9]{7})$/,\n 'en-NZ': /^(\\+?64|0)2\\d{7,9}$/,\n 'en-IN': /^(\\+?91|0)?[789]\\d{9}$/\n };\n\n // from http://goo.gl/0ejHHW\n var iso8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\n\n validator.extend = function (name, fn) {\n validator[name] = function () {\n var args = Array.prototype.slice.call(arguments);\n args[0] = validator.toString(args[0]);\n return fn.apply(validator, args);\n };\n };\n\n //Right before exporting the validator object, pass each of the builtins\n //through extend() so that their first argument is coerced to a string\n validator.init = function () {\n for (var name in validator) {\n if (typeof validator[name] !== 'function' || name === 'toString' ||\n name === 'toDate' || name === 'extend' || name === 'init') {\n continue;\n }\n validator.extend(name, validator[name]);\n }\n };\n\n validator.toString = function (input) {\n if (typeof input === 'object' && input !== null && input.toString) {\n input = input.toString();\n } else if (input === null || typeof input === 'undefined' || (isNaN(input) && !input.length)) {\n input = '';\n }\n return '' + input;\n };\n\n validator.toDate = function (date) {\n if (Object.prototype.toString.call(date) === '[object Date]') {\n return date;\n }\n date = Date.parse(date);\n return !isNaN(date) ? new Date(date) : null;\n };\n\n validator.toFloat = function (str) {\n return parseFloat(str);\n };\n\n validator.toInt = function (str, radix) {\n return parseInt(str, radix || 10);\n };\n\n validator.toBoolean = function (str, strict) {\n if (strict) {\n return str === '1' || str === 'true';\n }\n return str !== '0' && str !== 'false' && str !== '';\n };\n\n validator.equals = function (str, comparison) {\n return str === validator.toString(comparison);\n };\n\n validator.contains = function (str, elem) {\n return str.indexOf(validator.toString(elem)) >= 0;\n };\n\n validator.matches = function (str, pattern, modifiers) {\n if (Object.prototype.toString.call(pattern) !== '[object RegExp]') {\n pattern = new RegExp(pattern, modifiers);\n }\n return pattern.test(str);\n };\n\n var default_email_options = {\n allow_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true\n };\n\n validator.isEmail = function (str, options) {\n options = merge(options, default_email_options);\n\n if (options.allow_display_name) {\n var display_email = str.match(displayName);\n if (display_email) {\n str = display_email[1];\n }\n }\n\n var parts = str.split('@')\n , domain = parts.pop()\n , user = parts.join('@');\n\n var lower_domain = domain.toLowerCase();\n if (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com') {\n user = user.replace(/\\./g, '').toLowerCase();\n }\n\n if (!validator.isByteLength(user, 0, 64) ||\n !validator.isByteLength(domain, 0, 256)) {\n return false;\n }\n\n if (!validator.isFQDN(domain, {require_tld: options.require_tld})) {\n return false;\n }\n\n if (user[0] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ?\n quotedEmailUserUtf8.test(user) :\n quotedEmailUser.test(user);\n }\n\n var pattern = options.allow_utf8_local_part ?\n emailUserUtf8Part : emailUserPart;\n\n var user_parts = user.split('.');\n for (var i = 0; i < user_parts.length; i++) {\n if (!pattern.test(user_parts[i])) {\n return false;\n }\n }\n\n return true;\n };\n\n var default_url_options = {\n protocols: [ 'http', 'https', 'ftp' ]\n , require_tld: true\n , require_protocol: false\n , require_valid_protocol: true\n , allow_underscores: false\n , allow_trailing_dot: false\n , allow_protocol_relative_urls: false\n };\n\n validator.isURL = function (url, options) {\n if (!url || url.length >= 2083 || /\\s/.test(url)) {\n return false;\n }\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n options = merge(options, default_url_options);\n var protocol, auth, host, hostname, port,\n port_str, split;\n split = url.split('://');\n if (split.length > 1) {\n protocol = split.shift();\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (options.allow_protocol_relative_urls && url.substr(0, 2) === '//') {\n split[0] = url.substr(2);\n }\n url = split.join('://');\n split = url.split('#');\n url = split.shift();\n\n split = url.split('?');\n url = split.shift();\n\n split = url.split('/');\n url = split.shift();\n split = url.split('@');\n if (split.length > 1) {\n auth = split.shift();\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n }\n hostname = split.join('@');\n split = hostname.split(':');\n host = split.shift();\n if (split.length) {\n port_str = split.join(':');\n port = parseInt(port_str, 10);\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n }\n if (!validator.isIP(host) && !validator.isFQDN(host, options) &&\n host !== 'localhost') {\n return false;\n }\n if (options.host_whitelist &&\n options.host_whitelist.indexOf(host) === -1) {\n return false;\n }\n if (options.host_blacklist &&\n options.host_blacklist.indexOf(host) !== -1) {\n return false;\n }\n return true;\n };\n\n validator.isMACAddress = function (str) {\n return macAddress.test(str);\n };\n\n validator.isIP = function (str, version) {\n version = validator.toString(version);\n if (!version) {\n return validator.isIP(str, 4) || validator.isIP(str, 6);\n } else if (version === '4') {\n if (!ipv4Maybe.test(str)) {\n return false;\n }\n var parts = str.split('.').sort(function (a, b) {\n return a - b;\n });\n return parts[3] <= 255;\n } else if (version === '6') {\n var blocks = str.split(':');\n var foundOmissionBlock = false; // marker to indicate ::\n\n // At least some OS accept the last 32 bits of an IPv6 address\n // (i.e. 2 of the blocks) in IPv4 notation, and RFC 3493 says\n // that '::ffff:a.b.c.d' is valid for IPv4-mapped IPv6 addresses,\n // and '::a.b.c.d' is deprecated, but also valid.\n var foundIPv4TransitionBlock = validator.isIP(blocks[blocks.length - 1], 4);\n var expectedNumberOfBlocks = foundIPv4TransitionBlock ? 7 : 8;\n\n if (blocks.length > expectedNumberOfBlocks)\n return false;\n\n // initial or final ::\n if (str === '::') {\n return true;\n } else if (str.substr(0, 2) === '::') {\n blocks.shift();\n blocks.shift();\n foundOmissionBlock = true;\n } else if (str.substr(str.length - 2) === '::') {\n blocks.pop();\n blocks.pop();\n foundOmissionBlock = true;\n }\n\n for (var i = 0; i < blocks.length; ++i) {\n // test for a :: which can not be at the string start/end\n // since those cases have been handled above\n if (blocks[i] === '' && i > 0 && i < blocks.length -1) {\n if (foundOmissionBlock)\n return false; // multiple :: in address\n foundOmissionBlock = true;\n } else if (foundIPv4TransitionBlock && i == blocks.length - 1) {\n // it has been checked before that the last\n // block is a valid IPv4 address\n } else if (!ipv6Block.test(blocks[i])) {\n return false;\n }\n }\n\n if (foundOmissionBlock) {\n return blocks.length >= 1;\n } else {\n return blocks.length === expectedNumberOfBlocks;\n }\n }\n return false;\n };\n\n var default_fqdn_options = {\n require_tld: true\n , allow_underscores: false\n , allow_trailing_dot: false\n };\n\n validator.isFQDN = function (str, options) {\n options = merge(options, default_fqdn_options);\n\n /* Remove the optional trailing dot before checking validity */\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n var parts = str.split('.');\n if (options.require_tld) {\n var tld = parts.pop();\n if (!parts.length || !/^([a-z\\u00a1-\\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n }\n }\n for (var part, i = 0; i < parts.length; i++) {\n part = parts[i];\n if (options.allow_underscores) {\n if (part.indexOf('__') >= 0) {\n return false;\n }\n part = part.replace(/_/g, '');\n }\n if (!/^[a-z\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n }\n if (/[\\uff01-\\uff5e]/.test(part)) {\n // disallow full-width chars\n return false;\n }\n if (part[0] === '-' || part[part.length - 1] === '-') {\n return false;\n }\n if (part.indexOf('---') >= 0 && part.slice(0, 4) !== 'xn--') {\n return false;\n }\n }\n return true;\n };\n\n validator.isBoolean = function(str) {\n return (['true', 'false', '1', '0'].indexOf(str) >= 0);\n };\n\n validator.isAlpha = function (str) {\n return alpha.test(str);\n };\n\n validator.isAlphanumeric = function (str) {\n return alphanumeric.test(str);\n };\n\n validator.isNumeric = function (str) {\n return numeric.test(str);\n };\n\n validator.isDecimal = function (str) {\n return str !== '' && decimal.test(str);\n };\n\n validator.isHexadecimal = function (str) {\n return hexadecimal.test(str);\n };\n\n validator.isHexColor = function (str) {\n return hexcolor.test(str);\n };\n\n validator.isLowercase = function (str) {\n return str === str.toLowerCase();\n };\n\n validator.isUppercase = function (str) {\n return str === str.toUpperCase();\n };\n\n validator.isInt = function (str, options) {\n options = options || {};\n return int.test(str) && (!options.hasOwnProperty('min') || str >= options.min) && (!options.hasOwnProperty('max') || str <= options.max);\n };\n\n validator.isFloat = function (str, options) {\n options = options || {};\n if (str === '' || str === '.') {\n return false;\n }\n return float.test(str) && (!options.hasOwnProperty('min') || str >= options.min) && (!options.hasOwnProperty('max') || str <= options.max);\n };\n\n validator.isDivisibleBy = function (str, num) {\n return validator.toFloat(str) % validator.toInt(num) === 0;\n };\n\n validator.isNull = function (str) {\n return str.length === 0;\n };\n\n validator.isLength = function (str, min, max) {\n var surrogatePairs = str.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g) || [];\n var len = str.length - surrogatePairs.length;\n return len >= min && (typeof max === 'undefined' || len <= max);\n };\n\n validator.isByteLength = function (str, min, max) {\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n };\n\n validator.isUUID = function (str, version) {\n var pattern = uuid[version ? version : 'all'];\n return pattern && pattern.test(str);\n };\n\n function getTimezoneOffset(str) {\n var iso8601Parts = str.match(iso8601)\n , timezone, sign, hours, minutes;\n if (!iso8601Parts) {\n str = str.toLowerCase();\n timezone = str.match(/(?:\\s|gmt\\s*)(-|\\+)(\\d{1,4})(\\s|$)/);\n if (!timezone) {\n return str.indexOf('gmt') !== -1 ? 0 : null;\n }\n sign = timezone[1];\n var offset = timezone[2];\n if (offset.length === 3) {\n offset = '0' + offset;\n }\n if (offset.length <= 2) {\n hours = 0;\n minutes = parseInt(offset);\n } else {\n hours = parseInt(offset.slice(0, 2));\n minutes = parseInt(offset.slice(2, 4));\n }\n } else {\n timezone = iso8601Parts[21];\n if (!timezone) {\n return null;\n }\n if (timezone === 'z' || timezone === 'Z') {\n return 0;\n }\n sign = iso8601Parts[22];\n if (timezone.indexOf(':') !== -1) {\n hours = parseInt(iso8601Parts[23]);\n minutes = parseInt(iso8601Parts[24]);\n } else {\n hours = 0;\n minutes = parseInt(iso8601Parts[23]);\n }\n }\n return (hours * 60 + minutes) * (sign === '-' ? 1 : -1);\n }\n\n validator.isDate = function (str) {\n var normalizedDate = new Date(Date.parse(str));\n if (isNaN(normalizedDate)) {\n return false;\n }\n\n // normalizedDate is in the user's timezone. Apply the input\n // timezone offset to the date so that the year and day match\n // the input\n var timezoneOffset = getTimezoneOffset(str);\n if (timezoneOffset !== null) {\n var timezoneDifference = normalizedDate.getTimezoneOffset() -\n timezoneOffset;\n normalizedDate = new Date(normalizedDate.getTime() +\n 60000 * timezoneDifference);\n }\n\n var day = String(normalizedDate.getDate());\n var dayOrYear, dayOrYearMatches, year;\n //check for valid double digits that could be late days\n //check for all matches since a string like '12/23' is a valid date\n //ignore everything with nearby colons\n dayOrYearMatches = str.match(/(^|[^:\\d])[23]\\d([^:\\d]|$)/g);\n if (!dayOrYearMatches) {\n return true;\n }\n dayOrYear = dayOrYearMatches.map(function(digitString) {\n return digitString.match(/\\d+/g)[0];\n }).join('/');\n\n year = String(normalizedDate.getFullYear()).slice(-2);\n if (dayOrYear === day || dayOrYear === year) {\n return true;\n } else if ((dayOrYear === (day + '/' + year)) || (dayOrYear === (year + '/' + day))) {\n return true;\n }\n return false;\n };\n\n validator.isAfter = function (str, date) {\n var comparison = validator.toDate(date || new Date())\n , original = validator.toDate(str);\n return !!(original && comparison && original > comparison);\n };\n\n validator.isBefore = function (str, date) {\n var comparison = validator.toDate(date || new Date())\n , original = validator.toDate(str);\n return !!(original && comparison && original < comparison);\n };\n\n validator.isIn = function (str, options) {\n var i;\n if (Object.prototype.toString.call(options) === '[object Array]') {\n var array = [];\n for (i in options) {\n array[i] = validator.toString(options[i]);\n }\n return array.indexOf(str) >= 0;\n } else if (typeof options === 'object') {\n return options.hasOwnProperty(str);\n } else if (options && typeof options.indexOf === 'function') {\n return options.indexOf(str) >= 0;\n }\n return false;\n };\n\n validator.isWhitelisted = function (str, chars) {\n for (var i = str.length - 1; i >= 0; i--) {\n if (chars.indexOf(str[i]) === -1) {\n return false;\n }\n }\n\n return true;\n };\n\n validator.isCreditCard = function (str) {\n var sanitized = str.replace(/[^0-9]+/g, '');\n if (!creditCard.test(sanitized)) {\n return false;\n }\n var sum = 0, digit, tmpNum, shouldDouble;\n for (var i = sanitized.length - 1; i >= 0; i--) {\n digit = sanitized.substring(i, (i + 1));\n tmpNum = parseInt(digit, 10);\n if (shouldDouble) {\n tmpNum *= 2;\n if (tmpNum >= 10) {\n sum += ((tmpNum % 10) + 1);\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n shouldDouble = !shouldDouble;\n }\n return !!((sum % 10) === 0 ? sanitized : false);\n };\n\n validator.isISIN = function (str) {\n if (!isin.test(str)) {\n return false;\n }\n\n var checksumStr = str.replace(/[A-Z]/g, function(character) {\n return parseInt(character, 36);\n });\n\n var sum = 0, digit, tmpNum, shouldDouble = true;\n for (var i = checksumStr.length - 2; i >= 0; i--) {\n digit = checksumStr.substring(i, (i + 1));\n tmpNum = parseInt(digit, 10);\n if (shouldDouble) {\n tmpNum *= 2;\n if (tmpNum >= 10) {\n sum += tmpNum + 1;\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n shouldDouble = !shouldDouble;\n }\n\n return parseInt(str.substr(str.length - 1), 10) === (10000 - sum) % 10;\n };\n\n validator.isISBN = function (str, version) {\n version = validator.toString(version);\n if (!version) {\n return validator.isISBN(str, 10) || validator.isISBN(str, 13);\n }\n var sanitized = str.replace(/[\\s-]+/g, '')\n , checksum = 0, i;\n if (version === '10') {\n if (!isbn10Maybe.test(sanitized)) {\n return false;\n }\n for (i = 0; i < 9; i++) {\n checksum += (i + 1) * sanitized.charAt(i);\n }\n if (sanitized.charAt(9) === 'X') {\n checksum += 10 * 10;\n } else {\n checksum += 10 * sanitized.charAt(9);\n }\n if ((checksum % 11) === 0) {\n return !!sanitized;\n }\n } else if (version === '13') {\n if (!isbn13Maybe.test(sanitized)) {\n return false;\n }\n var factor = [ 1, 3 ];\n for (i = 0; i < 12; i++) {\n checksum += factor[i % 2] * sanitized.charAt(i);\n }\n if (sanitized.charAt(12) - ((10 - (checksum % 10)) % 10) === 0) {\n return !!sanitized;\n }\n }\n return false;\n };\n\n validator.isMobilePhone = function(str, locale) {\n if (locale in phones) {\n return phones[locale].test(str);\n }\n return false;\n };\n\n var default_currency_options = {\n symbol: '$'\n , require_symbol: false\n , allow_space_after_symbol: false\n , symbol_after_digits: false\n , allow_negatives: true\n , parens_for_negatives: false\n , negative_sign_before_digits: false\n , negative_sign_after_digits: false\n , allow_negative_sign_placeholder: false\n , thousands_separator: ','\n , decimal_separator: '.'\n , allow_space_after_digits: false\n };\n\n validator.isCurrency = function (str, options) {\n options = merge(options, default_currency_options);\n\n return currencyRegex(options).test(str);\n };\n\n validator.isJSON = function (str) {\n try {\n var obj = JSON.parse(str);\n return !!obj && typeof obj === 'object';\n } catch (e) {}\n return false;\n };\n\n validator.isMultibyte = function (str) {\n return multibyte.test(str);\n };\n\n validator.isAscii = function (str) {\n return ascii.test(str);\n };\n\n validator.isFullWidth = function (str) {\n return fullWidth.test(str);\n };\n\n validator.isHalfWidth = function (str) {\n return halfWidth.test(str);\n };\n\n validator.isVariableWidth = function (str) {\n return fullWidth.test(str) && halfWidth.test(str);\n };\n\n validator.isSurrogatePair = function (str) {\n return surrogatePair.test(str);\n };\n\n validator.isBase64 = function (str) {\n return base64.test(str);\n };\n\n validator.isMongoId = function (str) {\n return validator.isHexadecimal(str) && str.length === 24;\n };\n\n validator.isISO8601 = function (str) {\n return iso8601.test(str);\n };\n\n validator.ltrim = function (str, chars) {\n var pattern = chars ? new RegExp('^[' + chars + ']+', 'g') : /^\\s+/g;\n return str.replace(pattern, '');\n };\n\n validator.rtrim = function (str, chars) {\n var pattern = chars ? new RegExp('[' + chars + ']+$', 'g') : /\\s+$/g;\n return str.replace(pattern, '');\n };\n\n validator.trim = function (str, chars) {\n var pattern = chars ? new RegExp('^[' + chars + ']+|[' + chars + ']+$', 'g') : /^\\s+|\\s+$/g;\n return str.replace(pattern, '');\n };\n\n validator.escape = function (str) {\n return (str.replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\\//g, '/')\n .replace(/\\`/g, '`'));\n };\n\n validator.stripLow = function (str, keep_new_lines) {\n var chars = keep_new_lines ? '\\\\x00-\\\\x09\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F' : '\\\\x00-\\\\x1F\\\\x7F';\n return validator.blacklist(str, chars);\n };\n\n validator.whitelist = function (str, chars) {\n return str.replace(new RegExp('[^' + chars + ']+', 'g'), '');\n };\n\n validator.blacklist = function (str, chars) {\n return str.replace(new RegExp('[' + chars + ']+', 'g'), '');\n };\n\n var default_normalize_email_options = {\n lowercase: true,\n remove_dots: true,\n remove_extension: true\n };\n\n validator.normalizeEmail = function (email, options) {\n options = merge(options, default_normalize_email_options);\n if (!validator.isEmail(email)) {\n return false;\n }\n var parts = email.split('@', 2);\n parts[1] = parts[1].toLowerCase();\n if (parts[1] === 'gmail.com' || parts[1] === 'googlemail.com') {\n if (options.remove_extension) {\n parts[0] = parts[0].split('+')[0];\n }\n if (options.remove_dots) {\n parts[0] = parts[0].replace(/\\./g, '');\n }\n if (!parts[0].length) {\n return false;\n }\n parts[0] = parts[0].toLowerCase();\n parts[1] = 'gmail.com';\n } else if (options.lowercase) {\n parts[0] = parts[0].toLowerCase();\n }\n return parts.join('@');\n };\n\n function merge(obj, defaults) {\n obj = obj || {};\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n return obj;\n }\n\n function currencyRegex(options) {\n var symbol = '(\\\\' + options.symbol.replace(/\\./g, '\\\\.') + ')' + (options.require_symbol ? '' : '?')\n , negative = '-?'\n , whole_dollar_amount_without_sep = '[1-9]\\\\d*'\n , whole_dollar_amount_with_sep = '[1-9]\\\\d{0,2}(\\\\' + options.thousands_separator + '\\\\d{3})*'\n , valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep]\n , whole_dollar_amount = '(' + valid_whole_dollar_amounts.join('|') + ')?'\n , decimal_amount = '(\\\\' + options.decimal_separator + '\\\\d{2})?';\n var pattern = whole_dollar_amount + decimal_amount;\n // default is negative sign before symbol, but there are two other options (besides parens)\n if (options.allow_negatives && !options.parens_for_negatives) {\n if (options.negative_sign_after_digits) {\n pattern += negative;\n }\n else if (options.negative_sign_before_digits) {\n pattern = negative + pattern;\n }\n }\n // South African Rand, for example, uses R 123 (space) and R-123 (no space)\n if (options.allow_negative_sign_placeholder) {\n pattern = '( (?!\\\\-))?' + pattern;\n }\n else if (options.allow_space_after_symbol) {\n pattern = ' ?' + pattern;\n }\n else if (options.allow_space_after_digits) {\n pattern += '( (?!$))?';\n }\n if (options.symbol_after_digits) {\n pattern += symbol;\n } else {\n pattern = symbol + pattern;\n }\n if (options.allow_negatives) {\n if (options.parens_for_negatives) {\n pattern = '(\\\\(' + pattern + '\\\\)|' + pattern + ')';\n }\n else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) {\n pattern = negative + pattern;\n }\n }\n return new RegExp(\n '^' +\n // ensure there's a dollar and/or decimal amount, and that it doesn't start with a space or a negative sign followed by a space\n '(?!-? )(?=.*\\\\d)' +\n pattern +\n '$'\n );\n }\n\n validator.init();\n\n return validator;\n\n});\n","module.exports = require(\"npm:validator@4.5.0/validator.js\");","/*jshint maxlen: false*/\n\nvar validator = require(\"validator\");\n\nvar FormatValidators = {\n \"date\": function (date) {\n if (typeof date !== \"string\") {\n return true;\n }\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n var matches = /^([0-9]{4})-([0-9]{2})-([0-9]{2})$/.exec(date);\n if (matches === null) {\n return false;\n }\n // var year = matches[1];\n // var month = matches[2];\n // var day = matches[3];\n if (matches[2] < \"01\" || matches[2] > \"12\" || matches[3] < \"01\" || matches[3] > \"31\") {\n return false;\n }\n return true;\n },\n \"date-time\": function (dateTime) {\n if (typeof dateTime !== \"string\") {\n return true;\n }\n // date-time from http://tools.ietf.org/html/rfc3339#section-5.6\n var s = dateTime.toLowerCase().split(\"t\");\n if (!FormatValidators.date(s[0])) {\n return false;\n }\n var matches = /^([0-9]{2}):([0-9]{2}):([0-9]{2})(.[0-9]+)?(z|([+-][0-9]{2}:[0-9]{2}))$/.exec(s[1]);\n if (matches === null) {\n return false;\n }\n // var hour = matches[1];\n // var minute = matches[2];\n // var second = matches[3];\n // var fraction = matches[4];\n // var timezone = matches[5];\n if (matches[1] > \"23\" || matches[2] > \"59\" || matches[3] > \"59\") {\n return false;\n }\n return true;\n },\n \"email\": function (email) {\n if (typeof email !== \"string\") {\n return true;\n }\n return validator.isEmail(email, { \"require_tld\": true });\n },\n \"hostname\": function (hostname) {\n if (typeof hostname !== \"string\") {\n return true;\n }\n /*\n http://json-schema.org/latest/json-schema-validation.html#anchor114\n A string instance is valid against this attribute if it is a valid\n representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].\n\n http://tools.ietf.org/html/rfc1034#section-3.5\n\n <digit> ::= any one of the ten digits 0 through 9\n var digit = /[0-9]/;\n\n <letter> ::= any one of the 52 alphabetic characters A through Z in upper case and a through z in lower case\n var letter = /[a-zA-Z]/;\n\n <let-dig> ::= <letter> | <digit>\n var letDig = /[0-9a-zA-Z]/;\n\n <let-dig-hyp> ::= <let-dig> | \"-\"\n var letDigHyp = /[-0-9a-zA-Z]/;\n\n <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n var ldhStr = /[-0-9a-zA-Z]+/;\n\n <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]\n var label = /[a-zA-Z](([-0-9a-zA-Z]+)?[0-9a-zA-Z])?/;\n\n <subdomain> ::= <label> | <subdomain> \".\" <label>\n var subdomain = /^[a-zA-Z](([-0-9a-zA-Z]+)?[0-9a-zA-Z])?(\\.[a-zA-Z](([-0-9a-zA-Z]+)?[0-9a-zA-Z])?)*$/;\n\n <domain> ::= <subdomain> | \" \"\n var domain = null;\n */\n var valid = /^[a-zA-Z](([-0-9a-zA-Z]+)?[0-9a-zA-Z])?(\\.[a-zA-Z](([-0-9a-zA-Z]+)?[0-9a-zA-Z])?)*$/.test(hostname);\n if (valid) {\n // the sum of all label octets and label lengths is limited to 255.\n if (hostname.length > 255) { return false; }\n // Each node has a label, which is zero to 63 octets in length\n var labels = hostname.split(\".\");\n for (var i = 0; i < labels.length; i++) { if (labels[i].length > 63) { return false; } }\n }\n return valid;\n },\n \"host-name\": function (hostname) {\n return FormatValidators.hostname.call(this, hostname);\n },\n \"ipv4\": function (ipv4) {\n if (typeof ipv4 !== \"string\") { return true; }\n return validator.isIP(ipv4, 4);\n },\n \"ipv6\": function (ipv6) {\n if (typeof ipv6 !== \"string\") { return true; }\n return validator.isIP(ipv6, 6);\n },\n \"regex\": function (str) {\n try {\n RegExp(str);\n return true;\n } catch (e) {\n return false;\n }\n },\n \"uri\": function (uri) {\n if (this.options.strictUris) {\n return FormatValidators[\"strict-uri\"].apply(this, arguments);\n }\n // https://github.com/zaggino/z-schema/issues/18\n // RegExp from http://tools.ietf.org/html/rfc3986#appendix-B\n return typeof uri !== \"string\" || RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\").test(uri);\n },\n \"strict-uri\": function (uri) {\n return typeof uri !== \"string\" || validator.isURL(uri);\n }\n};\n\nmodule.exports = FormatValidators;\n","/* */ \n\"use strict\";\nvar FormatValidators = require('./FormatValidators'),\n Report = require('./Report'),\n Utils = require('./Utils');\nvar JsonValidators = {\n multipleOf: function(report, schema, json) {\n if (typeof json !== \"number\") {\n return;\n }\n if (Utils.whatIs(json / schema.multipleOf) !== \"integer\") {\n report.addError(\"MULTIPLE_OF\", [json, schema.multipleOf], null, schema.description);\n }\n },\n maximum: function(report, schema, json) {\n if (typeof json !== \"number\") {\n return;\n }\n if (schema.exclusiveMaximum !== true) {\n if (json > schema.maximum) {\n report.addError(\"MAXIMUM\", [json, schema.maximum], null, schema.description);\n }\n } else {\n if (json >= schema.maximum) {\n report.addError(\"MAXIMUM_EXCLUSIVE\", [json, schema.maximum], null, schema.description);\n }\n }\n },\n exclusiveMaximum: function() {},\n minimum: function(report, schema, json) {\n if (typeof json !== \"number\") {\n return;\n }\n if (schema.exclusiveMinimum !== true) {\n if (json < schema.minimum) {\n report.addError(\"MINIMUM\", [json, schema.minimum], null, schema.description);\n }\n } else {\n if (json <= schema.minimum) {\n report.addError(\"MINIMUM_EXCLUSIVE\", [json, schema.minimum], null, schema.description);\n }\n }\n },\n exclusiveMinimum: function() {},\n maxLength: function(report, schema, json) {\n if (typeof json !== \"string\") {\n return;\n }\n if (Utils.ucs2decode(json).length > schema.maxLength) {\n report.addError(\"MAX_LENGTH\", [json.length, schema.maxLength], null, schema.description);\n }\n },\n minLength: function(report, schema, json) {\n if (typeof json !== \"string\") {\n return;\n }\n if (Utils.ucs2decode(json).length < schema.minLength) {\n report.addError(\"MIN_LENGTH\", [json.length, schema.minLength], null, schema.description);\n }\n },\n pattern: function(report, schema, json) {\n if (typeof json !== \"string\") {\n return;\n }\n if (RegExp(schema.pattern).test(json) === false) {\n report.addError(\"PATTERN\", [schema.pattern, json], null, schema.description);\n }\n },\n additionalItems: function(report, schema, json) {\n if (!Array.isArray(json)) {\n return;\n }\n if (schema.additionalItems === false && Array.isArray(schema.items)) {\n if (json.length > schema.items.length) {\n report.addError(\"ARRAY_ADDITIONAL_ITEMS\", null, null, schema.description);\n }\n }\n },\n items: function() {},\n maxItems: function(report, schema, json) {\n if (!Array.isArray(json)) {\n return;\n }\n if (json.length > schema.maxItems) {\n report.addError(\"ARRAY_LENGTH_LONG\", [json.length, schema.maxItems], null, schema.description);\n }\n },\n minItems: function(report, schema, json) {\n if (!Array.isArray(json)) {\n return;\n }\n if (json.length < schema.minItems) {\n report.addError(\"ARRAY_LENGTH_SHORT\", [json.length, schema.minItems], null, schema.description);\n }\n },\n uniqueItems: function(report, schema, json) {\n if (!Array.isArray(json)) {\n return;\n }\n if (schema.uniqueItems === true) {\n var matches = [];\n if (Utils.isUniqueArray(json, matches) === false) {\n report.addError(\"ARRAY_UNIQUE\", matches, null, schema.description);\n }\n }\n },\n maxProperties: function(report, schema, json) {\n if (Utils.whatIs(json) !== \"object\") {\n return;\n }\n var keysCount = Object.keys(json).length;\n if (keysCount > schema.maxProperties) {\n report.addError(\"OBJECT_PROPERTIES_MAXIMUM\", [keysCount, schema.maxProperties], null, schema.description);\n }\n },\n minProperties: function(report, schema, json) {\n if (Utils.whatIs(json) !== \"object\") {\n return;\n }\n var keysCount = Object.keys(json).length;\n if (keysCount < schema.minProperties) {\n report.addError(\"OBJECT_PROPERTIES_MINIMUM\", [keysCount, schema.minProperties], null, schema.description);\n }\n },\n required: function(report, schema, json) {\n if (Utils.whatIs(json) !== \"object\") {\n return;\n }\n var idx = schema.required.length;\n while (idx--) {\n var requiredPropertyName = schema.required[idx];\n if (json[requiredPropertyName] === undefined) {\n report.addError(\"OBJECT_MISSING_REQUIRED_PROPERTY\", [requiredPropertyName], null, schema.description);\n }\n }\n },\n additionalProperties: function(report, schema, json) {\n if (schema.properties === undefined && schema.patternProperties === undefined) {\n return JsonValidators.properties.call(this, report, schema, json);\n }\n },\n patternProperties: function(report, schema, json) {\n if (schema.properties === undefined) {\n return JsonValidators.properties.call(this, report, schema, json);\n }\n },\n properties: function(report, schema, json) {\n if (Utils.whatIs(json) !== \"object\") {\n return;\n }\n var properties = schema.properties !== undefined ? schema.properties : {};\n var patternProperties = schema.patternProperties !== undefined ? schema.patternProperties : {};\n if (schema.additionalProperties === false) {\n var s = Object.keys(json);\n var p = Object.keys(properties);\n var pp = Object.keys(patternProperties);\n s = Utils.difference(s, p);\n var idx = pp.length;\n while (idx--) {\n var regExp = RegExp(pp[idx]),\n idx2 = s.length;\n while (idx2--) {\n if (regExp.test(s[idx2]) === true) {\n s.splice(idx2, 1);\n }\n }\n }\n if (s.length > 0) {\n var idx3 = this.options.assumeAdditional.length;\n if (idx3) {\n while (idx3--) {\n var io = s.indexOf(this.options.assumeAdditional[idx3]);\n if (io !== -1) {\n s.splice(io, 1);\n }\n }\n }\n if (s.length > 0) {\n report.addError(\"OBJECT_ADDITIONAL_PROPERTIES\", [s], null, schema.description);\n }\n }\n }\n },\n dependencies: function(report, schema, json) {\n if (Utils.whatIs(json) !== \"object\") {\n return;\n }\n var keys = Object.keys(schema.dependencies),\n idx = keys.length;\n while (idx--) {\n var dependencyName = keys[idx];\n if (json[dependencyName]) {\n var dependencyDefinition = schema.dependencies[dependencyName];\n if (Utils.whatIs(dependencyDefinition) === \"object\") {\n exports.validate.call(this, report, dependencyDefinition, json);\n } else {\n var idx2 = dependencyDefinition.length;\n while (idx2--) {\n var requiredPropertyName = dependencyDefinition[idx2];\n if (json[requiredPropertyName] === undefined) {\n report.addError(\"OBJECT_DEPENDENCY_KEY\", [requiredPropertyName, dependencyName], null, schema.description);\n }\n }\n }\n }\n }\n },\n enum: function(report, schema, json) {\n var match = false,\n idx = schema.enum.length;\n while (idx--) {\n if (Utils.areEqual(json, schema.enum[idx])) {\n match = true;\n break;\n }\n }\n if (match === false) {\n report.addError(\"ENUM_MISMATCH\", [json], null, schema.description);\n }\n },\n allOf: function(report, schema, json) {\n var idx = schema.allOf.length;\n while (idx--) {\n var validateResult = exports.validate.call(this, report, schema.allOf[idx], json);\n if (this.options.breakOnFirstError && validateResult === false) {\n break;\n }\n }\n },\n anyOf: function(report, schema, json) {\n var subReports = [],\n passed = false,\n idx = schema.anyOf.length;\n while (idx-- && passed === false) {\n var subReport = new Report(report);\n subReports.push(subReport);\n passed = exports.validate.call(this, subReport, schema.anyOf[idx], json);\n }\n if (passed === false) {\n report.addError(\"ANY_OF_MISSING\", undefined, subReports, schema.description);\n }\n },\n oneOf: function(report, schema, json) {\n var passes = 0,\n subReports = [],\n idx = schema.oneOf.length;\n while (idx--) {\n var subReport = new Report(report, {maxErrors: 1});\n subReports.push(subReport);\n if (exports.validate.call(this, subReport, schema.oneOf[idx], json) === true) {\n passes++;\n }\n }\n if (passes === 0) {\n report.addError(\"ONE_OF_MISSING\", undefined, subReports, schema.description);\n } else if (passes > 1) {\n report.addError(\"ONE_OF_MULTIPLE\", null, null, schema.description);\n }\n },\n not: function(report, schema, json) {\n var subReport = new Report(report);\n if (exports.validate.call(this, subReport, schema.not, json) === true) {\n report.addError(\"NOT_PASSED\", null, null, schema.description);\n }\n },\n definitions: function() {},\n format: function(report, schema, json) {\n var formatValidatorFn = FormatValidators[schema.format];\n if (typeof formatValidatorFn === \"function\") {\n if (formatValidatorFn.length === 2) {\n report.addAsyncTask(formatValidatorFn, [json], function(result) {\n if (result !== true) {\n report.addError(\"INVALID_FORMAT\", [schema.format, json], null, schema.description);\n }\n });\n } else {\n if (formatValidatorFn.call(this, json) !== true) {\n report.addError(\"INVALID_FORMAT\", [schema.format, json], null, schema.description);\n }\n }\n } else if (this.options.ignoreUnknownFormats !== true) {\n report.addError(\"UNKNOWN_FORMAT\", [schema.format], null, schema.description);\n }\n }\n};\nvar recurseArray = function(report, schema, json) {\n var idx = json.length;\n if (Array.isArray(schema.items)) {\n while (idx--) {\n if (idx < schema.items.length) {\n report.path.push(idx.toString());\n exports.validate.call(this, report, schema.items[idx], json[idx]);\n report.path.pop();\n } else {\n if (typeof schema.additionalItems === \"object\") {\n report.path.push(idx.toString());\n exports.validate.call(this, report, schema.additionalItems, json[idx]);\n report.path.pop();\n }\n }\n }\n } else if (typeof schema.items === \"object\") {\n while (idx--) {\n report.path.push(idx.toString());\n exports.validate.call(this, report, schema.items, json[idx]);\n report.path.pop();\n }\n }\n};\nvar recurseObject = function(report, schema, json) {\n var additionalProperties = schema.additionalProperties;\n if (additionalProperties === true || additionalProperties === undefined) {\n additionalProperties = {};\n }\n var p = schema.properties ? Object.keys(schema.properties) : [];\n var pp = schema.patternProperties ? Object.keys(schema.patternProperties) : [];\n var keys = Object.keys(json),\n idx = keys.length;\n while (idx--) {\n var m = keys[idx],\n propertyValue = json[m];\n var s = [];\n if (p.indexOf(m) !== -1) {\n s.push(schema.properties[m]);\n }\n var idx2 = pp.length;\n while (idx2--) {\n var regexString = pp[idx2];\n if (RegExp(regexString).test(m) === true) {\n s.push(schema.patternProperties[regexString]);\n }\n }\n if (s.length === 0 && additionalProperties !== false) {\n s.push(additionalProperties);\n }\n idx2 = s.length;\n while (idx2--) {\n report.path.push(m);\n exports.validate.call(this, report, s[idx2], propertyValue);\n report.path.pop();\n }\n }\n};\nexports.validate = function(report, schema, json) {\n report.commonErrorMessage = \"JSON_OBJECT_VALIDATION_FAILED\";\n var to = Utils.whatIs(schema);\n if (to !== \"object\") {\n report.addError(\"SCHEMA_NOT_AN_OBJECT\", [to], null, schema.description);\n return false;\n }\n var keys = Object.keys(schema);\n if (keys.length === 0) {\n return true;\n }\n var isRoot = false;\n if (!report.rootSchema) {\n report.rootSchema = schema;\n isRoot = true;\n }\n if (schema.$ref !== undefined) {\n var maxRefs = 99;\n while (schema.$ref && maxRefs > 0) {\n if (!schema.__$refResolved) {\n report.addError(\"REF_UNRESOLVED\", [schema.$ref], null, schema.description);\n break;\n } else if (schema.__$refResolved === schema) {\n break;\n } else {\n schema = schema.__$refResolved;\n keys = Object.keys(schema);\n }\n maxRefs--;\n }\n if (maxRefs === 0) {\n throw new Error(\"Circular dependency by $ref references!\");\n }\n }\n var jsonType = Utils.whatIs(json);\n if (schema.type) {\n if (typeof schema.type === \"string\") {\n if (jsonType !== schema.type && (jsonType !== \"integer\" || schema.type !== \"number\")) {\n report.addError(\"INVALID_TYPE\", [schema.type, jsonType], null, schema.description);\n if (this.options.breakOnFirstError) {\n return false;\n }\n }\n } else {\n if (schema.type.indexOf(jsonType) === -1 && (jsonType !== \"integer\" || schema.type.indexOf(\"number\") === -1)) {\n report.addError(\"INVALID_TYPE\", [schema.type, jsonType], null, schema.description);\n if (this.options.breakOnFirstError) {\n return false;\n }\n }\n }\n }\n var idx = keys.length;\n while (idx--) {\n if (JsonValidators[keys[idx]]) {\n JsonValidators[keys[idx]].call(this, report, schema, json);\n if (report.errors.length && this.options.breakOnFirstError) {\n break;\n }\n }\n }\n if (report.errors.length === 0 || this.options.breakOnFirstError === false) {\n if (jsonType === \"array\") {\n recurseArray.call(this, report, schema, json);\n } else if (jsonType === \"object\") {\n recurseObject.call(this, report, schema, json);\n }\n }\n if (isRoot) {\n report.rootSchema = undefined;\n }\n return report.errors.length === 0;\n};\n","/* */ \n(function(process) {\n function baseGet(object, path, pathKey) {\n if (object == null) {\n return;\n }\n if (pathKey !== undefined && pathKey in toObject(object)) {\n path = [pathKey];\n }\n var index = 0,\n length = path.length;\n while (object != null && index < length) {\n object = object[path[index++]];\n }\n return (index && index == length) ? object : undefined;\n }\n function toObject(value) {\n return isObject(value) ? value : Object(value);\n }\n function isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n }\n module.exports = baseGet;\n})(require('process'));\n","module.exports = require(\"npm:lodash._baseget@3.7.2/index\");","/**\n * lodash 3.0.4 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n funcTag = '[object Function]';\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 equivalents which return 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && reIsHostCtor.test(value);\n}\n\nmodule.exports = isArray;\n","module.exports = require(\"npm:lodash.isarray@3.0.4/index\");","/* */ \n(function(process) {\n var isArray = require('lodash.isarray');\n var rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\n\\\\]|\\\\.)*?)\\2)\\]/g;\n var reEscapeChar = /\\\\(\\\\)?/g;\n function baseToString(value) {\n return value == null ? '' : (value + '');\n }\n function toPath(value) {\n if (isArray(value)) {\n return value;\n }\n var result = [];\n baseToString(value).replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n }\n module.exports = toPath;\n})(require('process'));\n","module.exports = require(\"npm:lodash._topath@3.8.1/index\");","/**\n * lodash 3.7.0 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar baseGet = require('lodash._baseget'),\n toPath = require('lodash._topath');\n\n/**\n * Gets the property value of `path` on `object`. If the resolved value is\n * `undefined` the `defaultValue` is used in its place.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned if the resolved value is `undefined`.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, toPath(path), path + '');\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","module.exports = require(\"npm:lodash.get@3.7.0/index\");","/* */ \n\"use strict\";\n\nmodule.exports = {\n\n INVALID_TYPE: \"Expected type {0} but found type {1}\",\n INVALID_FORMAT: \"Object didn't pass validation for format {0}: {1}\",\n ENUM_MISMATCH: \"No enum match for: {0}\",\n ANY_OF_MISSING: \"Data does not match any schemas from 'anyOf'\",\n ONE_OF_MISSING: \"Data does not match any schemas from 'oneOf'\",\n ONE_OF_MULTIPLE: \"Data is valid against more than one schema from 'oneOf'\",\n NOT_PASSED: \"Data matches schema from 'not'\",\n\n // Array errors\n ARRAY_LENGTH_SHORT: \"Array is too short ({0}), minimum {1}\",\n ARRAY_LENGTH_LONG: \"Array is too long ({0}), maximum {1}\",\n ARRAY_UNIQUE: \"Array items are not unique (indexes {0} and {1})\",\n ARRAY_ADDITIONAL_ITEMS: \"Additional items not allowed\",\n\n // Numeric errors\n MULTIPLE_OF: \"Value {0} is not a multiple of {1}\",\n MINIMUM: \"Value {0} is less than minimum {1}\",\n MINIMUM_EXCLUSIVE: \"Value {0} is equal or less than exclusive minimum {1}\",\n MAXIMUM: \"Value {0} is greater than maximum {1}\",\n MAXIMUM_EXCLUSIVE: \"Value {0} is equal or greater than exclusive maximum {1}\",\n\n // Object errors\n OBJECT_PROPERTIES_MINIMUM: \"Too few properties defined ({0}), minimum {1}\",\n OBJECT_PROPERTIES_MAXIMUM: \"Too many properties defined ({0}), maximum {1}\",\n OBJECT_MISSING_REQUIRED_PROPERTY: \"Missing required property: {0}\",\n OBJECT_ADDITIONAL_PROPERTIES: \"Additional properties not allowed: {0}\",\n OBJECT_DEPENDENCY_KEY: \"Dependency failed - key must exist: {0} (due to key: {1})\",\n\n // String errors\n MIN_LENGTH: \"String is too short ({0} chars), minimum {1}\",\n MAX_LENGTH: \"String is too long ({0} chars), maximum {1}\",\n PATTERN: \"String does not match pattern {0}: {1}\",\n\n // Schema validation errors\n KEYWORD_TYPE_EXPECTED: \"Keyword '{0}' is expected to be of type '{1}'\",\n KEYWORD_UNDEFINED_STRICT: \"Keyword '{0}' must be defined in strict mode\",\n KEYWORD_UNEXPECTED: \"Keyword '{0}' is not expected to appear in the schema\",\n KEYWORD_MUST_BE: \"Keyword '{0}' must be {1}\",\n KEYWORD_DEPENDENCY: \"Keyword '{0}' requires keyword '{1}'\",\n KEYWORD_PATTERN: \"Keyword '{0}' is not a valid RegExp pattern: {1}\",\n KEYWORD_VALUE_TYPE: \"Each element of keyword '{0}' array must be a '{1}'\",\n UNKNOWN_FORMAT: \"There is no validation function for format '{0}'\",\n CUSTOM_MODE_FORCE_PROPERTIES: \"{0} must define at least one property if present\",\n\n // Remote errors\n REF_UNRESOLVED: \"Reference has not been resolved during compilation: {0}\",\n UNRESOLVABLE_REFERENCE: \"Reference could not be resolved: {0}\",\n SCHEMA_NOT_REACHABLE: \"Validator was not able to read schema with uri: {0}\",\n SCHEMA_TYPE_EXPECTED: \"Schema is expected to be of type 'object'\",\n SCHEMA_NOT_AN_OBJECT: \"Schema is not an object: {0}\",\n ASYNC_TIMEOUT: \"{0} asynchronous task(s) have timed out after {1} ms\",\n PARENT_SCHEMA_VALIDATION_FAILED: \"Schema failed to validate against its parent schema, see inner errors for details.\",\n REMOTE_NOT_VALID: \"Remote reference didn't compile successfully: {0}\"\n\n};\n","/* */ \n(function(process) {\n \"use strict\";\n var get = require('lodash.get');\n var Errors = require('./Errors');\n var Utils = require('./Utils');\n function Report(parentOrOptions, reportOptions) {\n this.parentReport = parentOrOptions instanceof Report ? parentOrOptions : undefined;\n this.options = parentOrOptions instanceof Report ? parentOrOptions.options : parentOrOptions || {};\n this.reportOptions = reportOptions || {};\n this.errors = [];\n this.path = [];\n this.asyncTasks = [];\n }\n Report.prototype.isValid = function() {\n if (this.asyncTasks.length > 0) {\n throw new Error(\"Async tasks pending, can't answer isValid\");\n }\n return this.errors.length === 0;\n };\n Report.prototype.addAsyncTask = function(fn, args, asyncTaskResultProcessFn) {\n this.asyncTasks.push([fn, args, asyncTaskResultProcessFn]);\n };\n Report.prototype.processAsyncTasks = function(timeout, callback) {\n var validationTimeout = timeout || 2000,\n tasksCount = this.asyncTasks.length,\n idx = tasksCount,\n timedOut = false,\n self = this;\n function finish() {\n process.nextTick(function() {\n var valid = self.errors.length === 0,\n err = valid ? undefined : self.errors;\n callback(err, valid);\n });\n }\n function respond(asyncTaskResultProcessFn) {\n return function(asyncTaskResult) {\n if (timedOut) {\n return;\n }\n asyncTaskResultProcessFn(asyncTaskResult);\n if (--tasksCount === 0) {\n finish();\n }\n };\n }\n if (tasksCount === 0 || this.errors.length > 0) {\n finish();\n return;\n }\n while (idx--) {\n var task = this.asyncTasks[idx];\n task[0].apply(null, task[1].concat(respond(task[2])));\n }\n setTimeout(function() {\n if (tasksCount > 0) {\n timedOut = true;\n self.addError(\"ASYNC_TIMEOUT\", [tasksCount, validationTimeout]);\n callback(self.errors, false);\n }\n }, validationTimeout);\n };\n Report.prototype.getPath = function() {\n var path = [];\n if (this.parentReport) {\n path = path.concat(this.parentReport.path);\n }\n path = path.concat(this.path);\n if (this.options.reportPathAsArray !== true) {\n path = \"#/\" + path.map(function(segment) {\n if (Utils.isAbsoluteUri(segment)) {\n return \"uri(\" + segment + \")\";\n }\n return segment.replace(/\\~/g, \"~0\").replace(/\\//g, \"~1\");\n }).join(\"/\");\n }\n return path;\n };\n Report.prototype.getSchemaId = function() {\n if (!this.rootSchema) {\n return null;\n }\n var path = [];\n if (this.parentReport) {\n path = path.concat(this.parentReport.path);\n }\n path = path.concat(this.path);\n while (path.length > 0) {\n var obj = get(this.rootSchema, path);\n if (obj && obj.id) {\n return obj.id;\n }\n path.pop();\n }\n return this.rootSchema.id;\n };\n Report.prototype.hasError = function(errorCode, params) {\n var idx = this.errors.length;\n while (idx--) {\n if (this.errors[idx].code === errorCode) {\n var match = true;\n var idx2 = this.errors[idx].params.length;\n while (idx2--) {\n if (this.errors[idx].params[idx2] !== params[idx2]) {\n match = false;\n }\n }\n if (match) {\n return match;\n }\n }\n }\n return false;\n };\n Report.prototype.addError = function(errorCode, params, subReports, schemaDescription) {\n if (this.errors.length >= this.reportOptions.maxErrors) {\n return;\n }\n if (!errorCode) {\n throw new Error(\"No errorCode passed into addError()\");\n }\n if (!Errors[errorCode]) {\n throw new Error(\"No errorMessage known for code \" + errorCode);\n }\n params = params || [];\n var idx = params.length,\n errorMessage = Errors[errorCode];\n while (idx--) {\n var whatIs = Utils.whatIs(params[idx]);\n var param = (whatIs === \"object\" || whatIs === \"null\") ? JSON.stringify(params[idx]) : params[idx];\n errorMessage = errorMessage.replace(\"{\" + idx + \"}\", param);\n }\n var err = {\n code: errorCode,\n params: params,\n message: errorMessage,\n path: this.getPath(),\n schemaId: this.getSchemaId()\n };\n if (schemaDescription) {\n err.description = schemaDescription;\n }\n if (subReports != null) {\n if (!Array.isArray(subReports)) {\n subReports = [subReports];\n }\n err.inner = [];\n idx = subReports.length;\n while (idx--) {\n var subReport = subReports[idx],\n idx2 = subReport.errors.length;\n while (idx2--) {\n err.inner.push(subReport.errors[idx2]);\n }\n }\n if (err.inner.length === 0) {\n err.inner = undefined;\n }\n }\n this.errors.push(err);\n };\n module.exports = Report;\n})(require('process'));\n","/* */ \n\"use strict\";\nvar FormatValidators = require('./FormatValidators'),\n JsonValidation = require('./JsonValidation'),\n Report = require('./Report'),\n Utils = require('./Utils');\nvar SchemaValidators = {\n $ref: function(report, schema) {\n if (typeof schema.$ref !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"$ref\", \"string\"]);\n }\n },\n $schema: function(report, schema) {\n if (typeof schema.$schema !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"$schema\", \"string\"]);\n }\n },\n multipleOf: function(report, schema) {\n if (typeof schema.multipleOf !== \"number\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"multipleOf\", \"number\"]);\n } else if (schema.multipleOf <= 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"multipleOf\", \"strictly greater than 0\"]);\n }\n },\n maximum: function(report, schema) {\n if (typeof schema.maximum !== \"number\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"maximum\", \"number\"]);\n }\n },\n exclusiveMaximum: function(report, schema) {\n if (typeof schema.exclusiveMaximum !== \"boolean\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"exclusiveMaximum\", \"boolean\"]);\n } else if (schema.maximum === undefined) {\n report.addError(\"KEYWORD_DEPENDENCY\", [\"exclusiveMaximum\", \"maximum\"]);\n }\n },\n minimum: function(report, schema) {\n if (typeof schema.minimum !== \"number\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"minimum\", \"number\"]);\n }\n },\n exclusiveMinimum: function(report, schema) {\n if (typeof schema.exclusiveMinimum !== \"boolean\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"exclusiveMinimum\", \"boolean\"]);\n } else if (schema.minimum === undefined) {\n report.addError(\"KEYWORD_DEPENDENCY\", [\"exclusiveMinimum\", \"minimum\"]);\n }\n },\n maxLength: function(report, schema) {\n if (Utils.whatIs(schema.maxLength) !== \"integer\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"maxLength\", \"integer\"]);\n } else if (schema.maxLength < 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"maxLength\", \"greater than, or equal to 0\"]);\n }\n },\n minLength: function(report, schema) {\n if (Utils.whatIs(schema.minLength) !== \"integer\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"minLength\", \"integer\"]);\n } else if (schema.minLength < 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"minLength\", \"greater than, or equal to 0\"]);\n }\n },\n pattern: function(report, schema) {\n if (typeof schema.pattern !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"pattern\", \"string\"]);\n } else {\n try {\n RegExp(schema.pattern);\n } catch (e) {\n report.addError(\"KEYWORD_PATTERN\", [\"pattern\", schema.pattern]);\n }\n }\n },\n additionalItems: function(report, schema) {\n var type = Utils.whatIs(schema.additionalItems);\n if (type !== \"boolean\" && type !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"additionalItems\", [\"boolean\", \"object\"]]);\n } else if (type === \"object\") {\n report.path.push(\"additionalItems\");\n exports.validateSchema.call(this, report, schema.additionalItems);\n report.path.pop();\n }\n },\n items: function(report, schema) {\n var type = Utils.whatIs(schema.items);\n if (type === \"object\") {\n report.path.push(\"items\");\n exports.validateSchema.call(this, report, schema.items);\n report.path.pop();\n } else if (type === \"array\") {\n var idx = schema.items.length;\n while (idx--) {\n report.path.push(\"items\");\n report.path.push(idx.toString());\n exports.validateSchema.call(this, report, schema.items[idx]);\n report.path.pop();\n report.path.pop();\n }\n } else {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"items\", [\"array\", \"object\"]]);\n }\n if (this.options.forceAdditional === true && schema.additionalItems === undefined && Array.isArray(schema.items)) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"additionalItems\"]);\n }\n if (this.options.assumeAdditional && schema.additionalItems === undefined && Array.isArray(schema.items)) {\n schema.additionalItems = false;\n }\n },\n maxItems: function(report, schema) {\n if (typeof schema.maxItems !== \"number\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"maxItems\", \"integer\"]);\n } else if (schema.maxItems < 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"maxItems\", \"greater than, or equal to 0\"]);\n }\n },\n minItems: function(report, schema) {\n if (Utils.whatIs(schema.minItems) !== \"integer\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"minItems\", \"integer\"]);\n } else if (schema.minItems < 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"minItems\", \"greater than, or equal to 0\"]);\n }\n },\n uniqueItems: function(report, schema) {\n if (typeof schema.uniqueItems !== \"boolean\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"uniqueItems\", \"boolean\"]);\n }\n },\n maxProperties: function(report, schema) {\n if (Utils.whatIs(schema.maxProperties) !== \"integer\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"maxProperties\", \"integer\"]);\n } else if (schema.maxProperties < 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"maxProperties\", \"greater than, or equal to 0\"]);\n }\n },\n minProperties: function(report, schema) {\n if (Utils.whatIs(schema.minProperties) !== \"integer\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"minProperties\", \"integer\"]);\n } else if (schema.minProperties < 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"minProperties\", \"greater than, or equal to 0\"]);\n }\n },\n required: function(report, schema) {\n if (Utils.whatIs(schema.required) !== \"array\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"required\", \"array\"]);\n } else if (schema.required.length === 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"required\", \"an array with at least one element\"]);\n } else {\n var idx = schema.required.length;\n while (idx--) {\n if (typeof schema.required[idx] !== \"string\") {\n report.addError(\"KEYWORD_VALUE_TYPE\", [\"required\", \"string\"]);\n }\n }\n if (Utils.isUniqueArray(schema.required) === false) {\n report.addError(\"KEYWORD_MUST_BE\", [\"required\", \"an array with unique items\"]);\n }\n }\n },\n additionalProperties: function(report, schema) {\n var type = Utils.whatIs(schema.additionalProperties);\n if (type !== \"boolean\" && type !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"additionalProperties\", [\"boolean\", \"object\"]]);\n } else if (type === \"object\") {\n report.path.push(\"additionalProperties\");\n exports.validateSchema.call(this, report, schema.additionalProperties);\n report.path.pop();\n }\n },\n properties: function(report, schema) {\n if (Utils.whatIs(schema.properties) !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"properties\", \"object\"]);\n return;\n }\n var keys = Object.keys(schema.properties),\n idx = keys.length;\n while (idx--) {\n var key = keys[idx],\n val = schema.properties[key];\n report.path.push(\"properties\");\n report.path.push(key);\n exports.validateSchema.call(this, report, val);\n report.path.pop();\n report.path.pop();\n }\n if (this.options.forceAdditional === true && schema.additionalProperties === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"additionalProperties\"]);\n }\n if (this.options.assumeAdditional && schema.additionalProperties === undefined) {\n schema.additionalProperties = false;\n }\n if (this.options.forceProperties === true && keys.length === 0) {\n report.addError(\"CUSTOM_MODE_FORCE_PROPERTIES\", [\"properties\"]);\n }\n },\n patternProperties: function(report, schema) {\n if (Utils.whatIs(schema.patternProperties) !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"patternProperties\", \"object\"]);\n return;\n }\n var keys = Object.keys(schema.patternProperties),\n idx = keys.length;\n while (idx--) {\n var key = keys[idx],\n val = schema.patternProperties[key];\n try {\n RegExp(key);\n } catch (e) {\n report.addError(\"KEYWORD_PATTERN\", [\"patternProperties\", key]);\n }\n report.path.push(\"patternProperties\");\n report.path.push(key.toString());\n exports.validateSchema.call(this, report, val);\n report.path.pop();\n report.path.pop();\n }\n if (this.options.forceProperties === true && keys.length === 0) {\n report.addError(\"CUSTOM_MODE_FORCE_PROPERTIES\", [\"patternProperties\"]);\n }\n },\n dependencies: function(report, schema) {\n if (Utils.whatIs(schema.dependencies) !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"dependencies\", \"object\"]);\n } else {\n var keys = Object.keys(schema.dependencies),\n idx = keys.length;\n while (idx--) {\n var schemaKey = keys[idx],\n schemaDependency = schema.dependencies[schemaKey],\n type = Utils.whatIs(schemaDependency);\n if (type === \"object\") {\n report.path.push(\"dependencies\");\n report.path.push(schemaKey);\n exports.validateSchema.call(this, report, schemaDependency);\n report.path.pop();\n report.path.pop();\n } else if (type === \"array\") {\n var idx2 = schemaDependency.length;\n if (idx2 === 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"dependencies\", \"not empty array\"]);\n }\n while (idx2--) {\n if (typeof schemaDependency[idx2] !== \"string\") {\n report.addError(\"KEYWORD_VALUE_TYPE\", [\"dependensices\", \"string\"]);\n }\n }\n if (Utils.isUniqueArray(schemaDependency) === false) {\n report.addError(\"KEYWORD_MUST_BE\", [\"dependencies\", \"an array with unique items\"]);\n }\n } else {\n report.addError(\"KEYWORD_VALUE_TYPE\", [\"dependencies\", \"object or array\"]);\n }\n }\n }\n },\n enum: function(report, schema) {\n if (Array.isArray(schema.enum) === false) {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"enum\", \"array\"]);\n } else if (schema.enum.length === 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"enum\", \"an array with at least one element\"]);\n } else if (Utils.isUniqueArray(schema.enum) === false) {\n report.addError(\"KEYWORD_MUST_BE\", [\"enum\", \"an array with unique elements\"]);\n }\n },\n type: function(report, schema) {\n var primitiveTypes = [\"array\", \"boolean\", \"integer\", \"number\", \"null\", \"object\", \"string\"],\n primitiveTypeStr = primitiveTypes.join(\",\"),\n isArray = Array.isArray(schema.type);\n if (isArray) {\n var idx = schema.type.length;\n while (idx--) {\n if (primitiveTypes.indexOf(schema.type[idx]) === -1) {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"type\", primitiveTypeStr]);\n }\n }\n if (Utils.isUniqueArray(schema.type) === false) {\n report.addError(\"KEYWORD_MUST_BE\", [\"type\", \"an object with unique properties\"]);\n }\n } else if (typeof schema.type === \"string\") {\n if (primitiveTypes.indexOf(schema.type) === -1) {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"type\", primitiveTypeStr]);\n }\n } else {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"type\", [\"string\", \"array\"]]);\n }\n if (this.options.noEmptyStrings === true) {\n if (schema.type === \"string\" || isArray && schema.type.indexOf(\"string\") !== -1) {\n if (schema.minLength === undefined && schema.enum === undefined && schema.format === undefined) {\n schema.minLength = 1;\n }\n }\n }\n if (this.options.noEmptyArrays === true) {\n if (schema.type === \"array\" || isArray && schema.type.indexOf(\"array\") !== -1) {\n if (schema.minItems === undefined) {\n schema.minItems = 1;\n }\n }\n }\n if (this.options.forceProperties === true) {\n if (schema.type === \"object\" || isArray && schema.type.indexOf(\"object\") !== -1) {\n if (schema.properties === undefined && schema.patternProperties === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"properties\"]);\n }\n }\n }\n if (this.options.forceItems === true) {\n if (schema.type === \"array\" || isArray && schema.type.indexOf(\"array\") !== -1) {\n if (schema.items === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"items\"]);\n }\n }\n }\n if (this.options.forceMinItems === true) {\n if (schema.type === \"array\" || isArray && schema.type.indexOf(\"array\") !== -1) {\n if (schema.minItems === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"minItems\"]);\n }\n }\n }\n if (this.options.forceMaxItems === true) {\n if (schema.type === \"array\" || isArray && schema.type.indexOf(\"array\") !== -1) {\n if (schema.maxItems === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"maxItems\"]);\n }\n }\n }\n if (this.options.forceMinLength === true) {\n if (schema.type === \"string\" || isArray && schema.type.indexOf(\"string\") !== -1) {\n if (schema.minLength === undefined && schema.format === undefined && schema.enum === undefined && schema.pattern === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"minLength\"]);\n }\n }\n }\n if (this.options.forceMaxLength === true) {\n if (schema.type === \"string\" || isArray && schema.type.indexOf(\"string\") !== -1) {\n if (schema.maxLength === undefined && schema.format === undefined && schema.enum === undefined && schema.pattern === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"maxLength\"]);\n }\n }\n }\n },\n allOf: function(report, schema) {\n if (Array.isArray(schema.allOf) === false) {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"allOf\", \"array\"]);\n } else if (schema.allOf.length === 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"allOf\", \"an array with at least one element\"]);\n } else {\n var idx = schema.allOf.length;\n while (idx--) {\n report.path.push(\"allOf\");\n report.path.push(idx.toString());\n exports.validateSchema.call(this, report, schema.allOf[idx]);\n report.path.pop();\n report.path.pop();\n }\n }\n },\n anyOf: function(report, schema) {\n if (Array.isArray(schema.anyOf) === false) {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"anyOf\", \"array\"]);\n } else if (schema.anyOf.length === 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"anyOf\", \"an array with at least one element\"]);\n } else {\n var idx = schema.anyOf.length;\n while (idx--) {\n report.path.push(\"anyOf\");\n report.path.push(idx.toString());\n exports.validateSchema.call(this, report, schema.anyOf[idx]);\n report.path.pop();\n report.path.pop();\n }\n }\n },\n oneOf: function(report, schema) {\n if (Array.isArray(schema.oneOf) === false) {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"oneOf\", \"array\"]);\n } else if (schema.oneOf.length === 0) {\n report.addError(\"KEYWORD_MUST_BE\", [\"oneOf\", \"an array with at least one element\"]);\n } else {\n var idx = schema.oneOf.length;\n while (idx--) {\n report.path.push(\"oneOf\");\n report.path.push(idx.toString());\n exports.validateSchema.call(this, report, schema.oneOf[idx]);\n report.path.pop();\n report.path.pop();\n }\n }\n },\n not: function(report, schema) {\n if (Utils.whatIs(schema.not) !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"not\", \"object\"]);\n } else {\n report.path.push(\"not\");\n exports.validateSchema.call(this, report, schema.not);\n report.path.pop();\n }\n },\n definitions: function(report, schema) {\n if (Utils.whatIs(schema.definitions) !== \"object\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"definitions\", \"object\"]);\n } else {\n var keys = Object.keys(schema.definitions),\n idx = keys.length;\n while (idx--) {\n var key = keys[idx],\n val = schema.definitions[key];\n report.path.push(\"definitions\");\n report.path.push(key);\n exports.validateSchema.call(this, report, val);\n report.path.pop();\n report.path.pop();\n }\n }\n },\n format: function(report, schema) {\n if (typeof schema.format !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"format\", \"string\"]);\n } else {\n if (FormatValidators[schema.format] === undefined && this.options.ignoreUnknownFormats !== true) {\n report.addError(\"UNKNOWN_FORMAT\", [schema.format]);\n }\n }\n },\n id: function(report, schema) {\n if (typeof schema.id !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"id\", \"string\"]);\n }\n },\n title: function(report, schema) {\n if (typeof schema.title !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"title\", \"string\"]);\n }\n },\n description: function(report, schema) {\n if (typeof schema.description !== \"string\") {\n report.addError(\"KEYWORD_TYPE_EXPECTED\", [\"description\", \"string\"]);\n }\n },\n \"default\": function() {}\n};\nvar validateArrayOfSchemas = function(report, arr) {\n var idx = arr.length;\n while (idx--) {\n exports.validateSchema.call(this, report, arr[idx]);\n }\n return report.isValid();\n};\nexports.validateSchema = function(report, schema) {\n report.commonErrorMessage = \"SCHEMA_VALIDATION_FAILED\";\n if (Array.isArray(schema)) {\n return validateArrayOfSchemas.call(this, report, schema);\n }\n if (schema.__$validated) {\n return true;\n }\n var hasParentSchema = schema.$schema && schema.id !== schema.$schema;\n if (hasParentSchema) {\n if (schema.__$schemaResolved && schema.__$schemaResolved !== schema) {\n var subReport = new Report(report);\n var valid = JsonValidation.validate.call(this, subReport, schema.__$schemaResolved, schema);\n if (valid === false) {\n report.addError(\"PARENT_SCHEMA_VALIDATION_FAILED\", null, subReport);\n }\n } else {\n if (this.options.ignoreUnresolvableReferences !== true) {\n report.addError(\"REF_UNRESOLVED\", [schema.$schema]);\n }\n }\n }\n if (this.options.noTypeless === true) {\n if (schema.type !== undefined) {\n var schemas = [];\n if (Array.isArray(schema.anyOf)) {\n schemas = schemas.concat(schema.anyOf);\n }\n if (Array.isArray(schema.oneOf)) {\n schemas = schemas.concat(schema.oneOf);\n }\n if (Array.isArray(schema.allOf)) {\n schemas = schemas.concat(schema.allOf);\n }\n schemas.forEach(function(sch) {\n if (!sch.type) {\n sch.type = schema.type;\n }\n });\n }\n if (schema.enum === undefined && schema.type === undefined && schema.anyOf === undefined && schema.oneOf === undefined && schema.not === undefined && schema.$ref === undefined) {\n report.addError(\"KEYWORD_UNDEFINED_STRICT\", [\"type\"]);\n }\n }\n var keys = Object.keys(schema),\n idx = keys.length;\n while (idx--) {\n var key = keys[idx];\n if (key.indexOf(\"__\") === 0) {\n continue;\n }\n if (SchemaValidators[key] !== undefined) {\n SchemaValidators[key].call(this, report, schema);\n } else if (!hasParentSchema) {\n if (this.options.noExtraKeywords === true) {\n report.addError(\"KEYWORD_UNEXPECTED\", [key]);\n }\n }\n }\n if (this.options.pedanticCheck === true) {\n if (schema.enum) {\n var tmpSchema = Utils.clone(schema);\n delete tmpSchema.enum;\n delete tmpSchema.default;\n report.path.push(\"enum\");\n idx = schema.enum.length;\n while (idx--) {\n report.path.push(idx.toString());\n JsonValidation.validate.call(this, report, tmpSchema, schema.enum[idx]);\n report.path.pop();\n }\n report.path.pop();\n }\n if (schema.default) {\n report.path.push(\"default\");\n JsonValidation.validate.call(this, report, schema, schema.default);\n report.path.pop();\n }\n }\n var isValid = report.isValid();\n if (isValid) {\n schema.__$validated = true;\n }\n return isValid;\n};\n","/* */ \n\"use strict\";\n\nexports.isAbsoluteUri = function (uri) {\n return /^https?:\\/\\//.test(uri);\n};\n\nexports.isRelativeUri = function (uri) {\n // relative URIs that end with a hash sign, issue #56\n return /.+#/.test(uri);\n};\n\nexports.whatIs = function (what) {\n\n var to = typeof what;\n\n if (to === \"object\") {\n if (what === null) {\n return \"null\";\n }\n if (Array.isArray(what)) {\n return \"array\";\n }\n return \"object\"; // typeof what === 'object' && what === Object(what) && !Array.isArray(what);\n }\n\n if (to === \"number\") {\n if (Number.isFinite(what)) {\n if (what % 1 === 0) {\n return \"integer\";\n } else {\n return \"number\";\n }\n }\n if (Number.isNaN(what)) {\n return \"not-a-number\";\n }\n return \"unknown-number\";\n }\n\n return to; // undefined, boolean, string, function\n\n};\n\nexports.areEqual = function areEqual(json1, json2) {\n // http://json-schema.org/latest/json-schema-core.html#rfc.section.3.6\n\n // Two JSON values are said to be equal if and only if:\n // both are nulls; or\n // both are booleans, and have the same value; or\n // both are strings, and have the same value; or\n // both are numbers, and have the same mathematical value; or\n if (json1 === json2) {\n return true;\n }\n\n var i, len;\n\n // both are arrays, and:\n if (Array.isArray(json1) && Array.isArray(json2)) {\n // have the same number of items; and\n if (json1.length !== json2.length) {\n return false;\n }\n // items at the same index are equal according to this definition; or\n len = json1.length;\n for (i = 0; i < len; i++) {\n if (!areEqual(json1[i], json2[i])) {\n return false;\n }\n }\n return true;\n }\n\n // both are objects, and:\n if (exports.whatIs(json1) === \"object\" && exports.whatIs(json2) === \"object\") {\n // have the same set of property names; and\n var keys1 = Object.keys(json1);\n var keys2 = Object.keys(json2);\n if (!areEqual(keys1, keys2)) {\n return false;\n }\n // values for a same property name are equal according to this definition.\n len = keys1.length;\n for (i = 0; i < len; i++) {\n if (!areEqual(json1[keys1[i]], json2[keys1[i]])) {\n return false;\n }\n }\n return true;\n }\n\n return false;\n};\n\nexports.isUniqueArray = function (arr, indexes) {\n var i, j, l = arr.length;\n for (i = 0; i < l; i++) {\n for (j = i + 1; j < l; j++) {\n if (exports.areEqual(arr[i], arr[j])) {\n if (indexes) { indexes.push(i, j); }\n return false;\n }\n }\n }\n return true;\n};\n\nexports.difference = function (bigSet, subSet) {\n var arr = [],\n idx = bigSet.length;\n while (idx--) {\n if (subSet.indexOf(bigSet[idx]) === -1) {\n arr.push(bigSet[idx]);\n }\n }\n return arr;\n};\n\n// NOT a deep version of clone\nexports.clone = function (src) {\n if (typeof src === \"undefined\") { return void 0; }\n if (typeof src !== \"object\" || src === null) { return src; }\n var res, idx;\n if (Array.isArray(src)) {\n res = [];\n idx = src.length;\n while (idx--) {\n res[idx] = src[idx];\n }\n } else {\n res = {};\n var keys = Object.keys(src);\n idx = keys.length;\n while (idx--) {\n var key = keys[idx];\n res[key] = src[key];\n }\n }\n return res;\n};\n\nexports.cloneDeep = function (src) {\n var visited = [], cloned = [];\n function cloneDeep(src) {\n if (typeof src !== \"object\" || src === null) { return src; }\n var res, idx, cidx;\n\n cidx = visited.indexOf(src);\n if (cidx !== -1) { return cloned[cidx]; }\n\n visited.push(src);\n if (Array.isArray(src)) {\n res = [];\n cloned.push(res);\n idx = src.length;\n while (idx--) {\n res[idx] = cloneDeep(src[idx]);\n }\n } else {\n res = {};\n cloned.push(res);\n var keys = Object.keys(src);\n idx = keys.length;\n while (idx--) {\n var key = keys[idx];\n res[key] = cloneDeep(src[key]);\n }\n }\n return res;\n }\n return cloneDeep(src);\n};\n\n/*\n following function comes from punycode.js library\n see: https://github.com/bestiejs/punycode.js\n*/\n/*jshint -W016*/\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nexports.ucs2decode = function (string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n/*jshint +W016*/\n","{\n \"id\": \"http://json-schema.org/draft-04/schema#\",\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"description\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": { \"$ref\": \"#\" }\n },\n \"positiveInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"positiveIntegerDefault0\": {\n \"allOf\": [ { \"$ref\": \"#/definitions/positiveInteger\" }, { \"default\": 0 } ]\n },\n \"simpleTypes\": {\n \"enum\": [ \"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\" ]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" },\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n },\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": {},\n \"multipleOf\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"exclusiveMinimum\": true\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"maxLength\": { \"$ref\": \"#/definitions/positiveInteger\" },\n \"minLength\": { \"$ref\": \"#/definitions/positiveIntegerDefault0\" },\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\n \"anyOf\": [\n { \"type\": \"boolean\" },\n { \"$ref\": \"#\" }\n ],\n \"default\": {}\n },\n \"items\": {\n \"anyOf\": [\n { \"$ref\": \"#\" },\n { \"$ref\": \"#/definitions/schemaArray\" }\n ],\n \"default\": {}\n },\n \"maxItems\": { \"$ref\": \"#/definitions/positiveInteger\" },\n \"minItems\": { \"$ref\": \"#/definitions/positiveIntegerDefault0\" },\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"maxProperties\": { \"$ref\": \"#/definitions/positiveInteger\" },\n \"minProperties\": { \"$ref\": \"#/definitions/positiveIntegerDefault0\" },\n \"required\": { \"$ref\": \"#/definitions/stringArray\" },\n \"additionalProperties\": {\n \"anyOf\": [\n { \"type\": \"boolean\" },\n { \"$ref\": \"#\" }\n ],\n \"default\": {}\n },\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": { \"$ref\": \"#\" },\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": { \"$ref\": \"#\" },\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": { \"$ref\": \"#\" },\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [\n { \"$ref\": \"#\" },\n { \"$ref\": \"#/definitions/stringArray\" }\n ]\n }\n },\n \"enum\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n { \"$ref\": \"#/definitions/simpleTypes\" },\n {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/simpleTypes\" },\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"format\": { \"type\": \"string\" },\n \"allOf\": { \"$ref\": \"#/definitions/schemaArray\" },\n \"anyOf\": { \"$ref\": \"#/definitions/schemaArray\" },\n \"oneOf\": { \"$ref\": \"#/definitions/schemaArray\" },\n \"not\": { \"$ref\": \"#\" }\n },\n \"dependencies\": {\n \"exclusiveMaximum\": [ \"maximum\" ],\n \"exclusiveMinimum\": [ \"minimum\" ]\n },\n \"default\": {}\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-04/hyper-schema#\",\n \"id\": \"http://json-schema.org/draft-04/hyper-schema#\",\n \"title\": \"JSON Hyper-Schema\",\n \"allOf\": [\n {\n \"$ref\": \"http://json-schema.org/draft-04/schema#\"\n }\n ],\n \"properties\": {\n \"additionalItems\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"$ref\": \"#\"\n }\n ]\n },\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"$ref\": \"#\"\n }\n ]\n },\n \"dependencies\": {\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"$ref\": \"#\"\n },\n {\n \"type\": \"array\"\n }\n ]\n }\n },\n \"items\": {\n \"anyOf\": [\n {\n \"$ref\": \"#\"\n },\n {\n \"$ref\": \"#/definitions/schemaArray\"\n }\n ]\n },\n \"definitions\": {\n \"additionalProperties\": {\n \"$ref\": \"#\"\n }\n },\n \"patternProperties\": {\n \"additionalProperties\": {\n \"$ref\": \"#\"\n }\n },\n \"properties\": {\n \"additionalProperties\": {\n \"$ref\": \"#\"\n }\n },\n \"allOf\": {\n \"$ref\": \"#/definitions/schemaArray\"\n },\n \"anyOf\": {\n \"$ref\": \"#/definitions/schemaArray\"\n },\n \"oneOf\": {\n \"$ref\": \"#/definitions/schemaArray\"\n },\n \"not\": {\n \"$ref\": \"#\"\n },\n\n \"links\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/linkDescription\"\n }\n },\n \"fragmentResolution\": {\n \"type\": \"string\"\n },\n \"media\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"description\": \"A media type, as described in RFC 2046\",\n \"type\": \"string\"\n },\n \"binaryEncoding\": {\n \"description\": \"A content encoding scheme, as described in RFC 2045\",\n \"type\": \"string\"\n }\n }\n },\n \"pathStart\": {\n \"description\": \"Instances' URIs must start with this value for this schema to apply to them\",\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n },\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#\"\n }\n },\n \"linkDescription\": {\n \"title\": \"Link Description Object\",\n \"type\": \"object\",\n \"required\": [ \"href\", \"rel\" ],\n \"properties\": {\n \"href\": {\n \"description\": \"a URI template, as defined by RFC 6570, with the addition of the $, ( and ) characters for pre-processing\",\n \"type\": \"string\"\n },\n \"rel\": {\n \"description\": \"relation to the target resource of the link\",\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"a title for the link\",\n \"type\": \"string\"\n },\n \"targetSchema\": {\n \"description\": \"JSON Schema describing the link target\",\n \"$ref\": \"#\"\n },\n \"mediaType\": {\n \"description\": \"media type (as defined by RFC 2046) describing the link target\",\n \"type\": \"string\"\n },\n \"method\": {\n \"description\": \"method for requesting the target of the link (e.g. for HTTP this might be \\\"GET\\\" or \\\"DELETE\\\")\",\n \"type\": \"string\"\n },\n \"encType\": {\n \"description\": \"The media type in which to submit data along with the request\",\n \"type\": \"string\",\n \"default\": \"application/json\"\n },\n \"schema\": {\n \"description\": \"Schema describing the data to submit along with the request\",\n \"$ref\": \"#\"\n }\n }\n }\n }\n}\n\n","/* */ \n(function(process) {\n \"use strict\";\n require('./Polyfills');\n var get = require('lodash.get');\n var Report = require('./Report');\n var FormatValidators = require('./FormatValidators');\n var JsonValidation = require('./JsonValidation');\n var SchemaCache = require('./SchemaCache');\n var SchemaCompilation = require('./SchemaCompilation');\n var SchemaValidation = require('./SchemaValidation');\n var Utils = require('./Utils');\n var Draft4Schema = require('./schemas/schema.json!systemjs-json');\n var Draft4HyperSchema = require('./schemas/hyper-schema.json!systemjs-json');\n var defaultOptions = {\n asyncTimeout: 2000,\n forceAdditional: false,\n assumeAdditional: false,\n forceItems: false,\n forceMinItems: false,\n forceMaxItems: false,\n forceMinLength: false,\n forceMaxLength: false,\n forceProperties: false,\n ignoreUnresolvableReferences: false,\n noExtraKeywords: false,\n noTypeless: false,\n noEmptyStrings: false,\n noEmptyArrays: false,\n strictUris: false,\n strictMode: false,\n reportPathAsArray: false,\n breakOnFirstError: true,\n pedanticCheck: false,\n ignoreUnknownFormats: false\n };\n function ZSchema(options) {\n this.cache = {};\n this.referenceCache = [];\n this.setRemoteReference(\"http://json-schema.org/draft-04/schema\", Draft4Schema);\n this.setRemoteReference(\"http://json-schema.org/draft-04/hyper-schema\", Draft4HyperSchema);\n if (typeof options === \"object\") {\n var keys = Object.keys(options),\n idx = keys.length,\n key;\n while (idx--) {\n key = keys[idx];\n if (defaultOptions[key] === undefined) {\n throw new Error(\"Unexpected option passed to constructor: \" + key);\n }\n }\n keys = Object.keys(defaultOptions);\n idx = keys.length;\n while (idx--) {\n key = keys[idx];\n if (options[key] === undefined) {\n options[key] = Utils.clone(defaultOptions[key]);\n }\n }\n this.options = options;\n } else {\n this.options = Utils.clone(defaultOptions);\n }\n if (this.options.strictMode === true) {\n this.options.forceAdditional = true;\n this.options.forceItems = true;\n this.options.forceMaxLength = true;\n this.options.forceProperties = true;\n this.options.noExtraKeywords = true;\n this.options.noTypeless = true;\n this.options.noEmptyStrings = true;\n this.options.noEmptyArrays = true;\n }\n }\n ZSchema.prototype.compileSchema = function(schema) {\n var report = new Report(this.options);\n schema = SchemaCache.getSchema.call(this, report, schema);\n SchemaCompilation.compileSchema.call(this, report, schema);\n this.lastReport = report;\n return report.isValid();\n };\n ZSchema.prototype.validateSchema = function(schema) {\n if (Array.isArray(schema) && schema.length === 0) {\n throw new Error(\".validateSchema was called with an empty array\");\n }\n var report = new Report(this.options);\n schema = SchemaCache.getSchema.call(this, report, schema);\n var compiled = SchemaCompilation.compileSchema.call(this, report, schema);\n if (compiled) {\n SchemaValidation.validateSchema.call(this, report, schema);\n }\n this.lastReport = report;\n return report.isValid();\n };\n ZSchema.prototype.validate = function(json, schema, options, callback) {\n if (Utils.whatIs(options) === \"function\") {\n callback = options;\n options = {};\n }\n if (!options) {\n options = {};\n }\n var whatIs = Utils.whatIs(schema);\n if (whatIs !== \"string\" && whatIs !== \"object\") {\n var e = new Error(\"Invalid .validate call - schema must be an string or object but \" + whatIs + \" was passed!\");\n if (callback) {\n process.nextTick(function() {\n callback(e, false);\n });\n return;\n }\n throw e;\n }\n var foundError = false;\n var report = new Report(this.options);\n if (typeof schema === \"string\") {\n var schemaName = schema;\n schema = SchemaCache.getSchema.call(this, report, schemaName);\n if (!schema) {\n throw new Error(\"Schema with id '\" + schemaName + \"' wasn't found in the validator cache!\");\n }\n } else {\n schema = SchemaCache.getSchema.call(this, report, schema);\n }\n var compiled = false;\n if (!foundError) {\n compiled = SchemaCompilation.compileSchema.call(this, report, schema);\n }\n if (!compiled) {\n this.lastReport = report;\n foundError = true;\n }\n var validated = false;\n if (!foundError) {\n validated = SchemaValidation.validateSchema.call(this, report, schema);\n }\n if (!validated) {\n this.lastReport = report;\n foundError = true;\n }\n if (options.schemaPath) {\n report.rootSchema = schema;\n schema = get(schema, options.schemaPath);\n if (!schema) {\n throw new Error(\"Schema path '\" + options.schemaPath + \"' wasn't found in the schema!\");\n }\n }\n if (!foundError) {\n JsonValidation.validate.call(this, report, schema, json);\n }\n if (callback) {\n report.processAsyncTasks(this.options.asyncTimeout, callback);\n return;\n } else if (report.asyncTasks.length > 0) {\n throw new Error(\"This validation has async tasks and cannot be done in sync mode, please provide callback argument.\");\n }\n this.lastReport = report;\n return report.isValid();\n };\n ZSchema.prototype.getLastError = function() {\n if (this.lastReport.errors.length === 0) {\n return null;\n }\n var e = new Error();\n e.name = \"z-schema validation error\";\n e.message = this.lastReport.commonErrorMessage;\n e.details = this.lastReport.errors;\n return e;\n };\n ZSchema.prototype.getLastErrors = function() {\n return this.lastReport && this.lastReport.errors.length > 0 ? this.lastReport.errors : undefined;\n };\n ZSchema.prototype.getMissingReferences = function(arr) {\n arr = arr || this.lastReport.errors;\n var res = [],\n idx = arr.length;\n while (idx--) {\n var error = arr[idx];\n if (error.code === \"UNRESOLVABLE_REFERENCE\") {\n var reference = error.params[0];\n if (res.indexOf(reference) === -1) {\n res.push(reference);\n }\n }\n if (error.inner) {\n res = res.concat(this.getMissingReferences(error.inner));\n }\n }\n return res;\n };\n ZSchema.prototype.getMissingRemoteReferences = function() {\n var missingReferences = this.getMissingReferences(),\n missingRemoteReferences = [],\n idx = missingReferences.length;\n while (idx--) {\n var remoteReference = SchemaCache.getRemotePath(missingReferences[idx]);\n if (remoteReference && missingRemoteReferences.indexOf(remoteReference) === -1) {\n missingRemoteReferences.push(remoteReference);\n }\n }\n return missingRemoteReferences;\n };\n ZSchema.prototype.setRemoteReference = function(uri, schema) {\n if (typeof schema === \"string\") {\n schema = JSON.parse(schema);\n } else {\n schema = Utils.cloneDeep(schema);\n }\n SchemaCache.cacheSchemaByUri.call(this, uri, schema);\n };\n ZSchema.prototype.getResolvedSchema = function(schema) {\n var report = new Report(this.options);\n schema = SchemaCache.getSchema.call(this, report, schema);\n schema = Utils.cloneDeep(schema);\n var visited = [];\n var cleanup = function(schema) {\n var key,\n typeOf = Utils.whatIs(schema);\n if (typeOf !== \"object\" && typeOf !== \"array\") {\n return;\n }\n if (schema.___$visited) {\n return;\n }\n schema.___$visited = true;\n visited.push(schema);\n if (schema.$ref && schema.__$refResolved) {\n var from = schema.__$refResolved;\n var to = schema;\n delete schema.$ref;\n delete schema.__$refResolved;\n for (key in from) {\n if (from.hasOwnProperty(key)) {\n to[key] = from[key];\n }\n }\n }\n for (key in schema) {\n if (schema.hasOwnProperty(key)) {\n if (key.indexOf(\"__$\") === 0) {\n delete schema[key];\n } else {\n cleanup(schema[key]);\n }\n }\n }\n };\n cleanup(schema);\n visited.forEach(function(s) {\n delete s.___$visited;\n });\n this.lastReport = report;\n if (report.isValid()) {\n return schema;\n } else {\n throw this.getLastError();\n }\n };\n ZSchema.prototype.setSchemaReader = function(schemaReader) {\n return ZSchema.setSchemaReader(schemaReader);\n };\n ZSchema.prototype.getSchemaReader = function() {\n return ZSchema.schemaReader;\n };\n ZSchema.setSchemaReader = function(schemaReader) {\n ZSchema.schemaReader = schemaReader;\n };\n ZSchema.registerFormat = function(formatName, validatorFunction) {\n FormatValidators[formatName] = validatorFunction;\n };\n ZSchema.unregisterFormat = function(formatName) {\n delete FormatValidators[formatName];\n };\n ZSchema.getRegisteredFormats = function() {\n return Object.keys(FormatValidators);\n };\n ZSchema.getDefaultOptions = function() {\n return Utils.cloneDeep(defaultOptions);\n };\n module.exports = ZSchema;\n})(require('process'));\n","module.exports = require(\"npm:z-schema@3.16.1/src/ZSchema.js\");","{\n \"title\": \"A JSON Schema for Swagger 2.0 API.\",\n \"id\": \"http://swagger.io/v2/schema.json#\",\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"type\": \"object\",\n \"required\": [\n \"swagger\",\n \"info\",\n \"paths\"\n ],\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"swagger\": {\n \"type\": \"string\",\n \"enum\": [\n \"2.0\"\n ],\n \"description\": \"The Swagger version of this document.\"\n },\n \"info\": {\n \"$ref\": \"#/definitions/info\"\n },\n \"host\": {\n \"type\": \"string\",\n \"pattern\": \"^[^{}/ :\\\\\\\\]+(?::\\\\d+)?$\",\n \"description\": \"The host (name or ip) of the API. Example: 'swagger.io'\"\n },\n \"basePath\": {\n \"type\": \"string\",\n \"pattern\": \"^/\",\n \"description\": \"The base path to the API. Example: '/api'.\"\n },\n \"schemes\": {\n \"$ref\": \"#/definitions/schemesList\"\n },\n \"consumes\": {\n \"description\": \"A list of MIME types accepted by the API.\",\n \"$ref\": \"#/definitions/mediaTypeList\"\n },\n \"produces\": {\n \"description\": \"A list of MIME types the API can produce.\",\n \"$ref\": \"#/definitions/mediaTypeList\"\n },\n \"paths\": {\n \"$ref\": \"#/definitions/paths\"\n },\n \"definitions\": {\n \"$ref\": \"#/definitions/definitions\"\n },\n \"parameters\": {\n \"$ref\": \"#/definitions/parameterDefinitions\"\n },\n \"responses\": {\n \"$ref\": \"#/definitions/responseDefinitions\"\n },\n \"security\": {\n \"$ref\": \"#/definitions/security\"\n },\n \"securityDefinitions\": {\n \"$ref\": \"#/definitions/securityDefinitions\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/tag\"\n },\n \"uniqueItems\": true\n },\n \"externalDocs\": {\n \"$ref\": \"#/definitions/externalDocs\"\n }\n },\n \"definitions\": {\n \"info\": {\n \"type\": \"object\",\n \"description\": \"General information about the API.\",\n \"required\": [\n \"version\",\n \"title\"\n ],\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"title\": {\n \"type\": \"string\",\n \"description\": \"A unique and precise title of the API.\"\n },\n \"version\": {\n \"type\": \"string\",\n \"description\": \"A semantic version number of the API.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed.\"\n },\n \"termsOfService\": {\n \"type\": \"string\",\n \"description\": \"The terms of service for the API.\"\n },\n \"contact\": {\n \"$ref\": \"#/definitions/contact\"\n },\n \"license\": {\n \"$ref\": \"#/definitions/license\"\n }\n }\n },\n \"contact\": {\n \"type\": \"object\",\n \"description\": \"Contact information for the owners of the API.\",\n \"additionalProperties\": false,\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The identifying name of the contact person/organization.\"\n },\n \"url\": {\n \"type\": \"string\",\n \"description\": \"The URL pointing to the contact information.\",\n \"format\": \"uri\"\n },\n \"email\": {\n \"type\": \"string\",\n \"description\": \"The email address of the contact person/organization.\",\n \"format\": \"email\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"license\": {\n \"type\": \"object\",\n \"required\": [\n \"name\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the license type. It's encouraged to use an OSI compatible license.\"\n },\n \"url\": {\n \"type\": \"string\",\n \"description\": \"The URL pointing to the license.\",\n \"format\": \"uri\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"paths\": {\n \"type\": \"object\",\n \"description\": \"Relative paths to the individual endpoints. They must be relative to the 'basePath'.\",\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n },\n \"^/\": {\n \"$ref\": \"#/definitions/pathItem\"\n }\n },\n \"additionalProperties\": false\n },\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/schema\"\n },\n \"description\": \"One or more JSON objects describing the schemas being consumed and produced by the API.\"\n },\n \"parameterDefinitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/parameter\"\n },\n \"description\": \"One or more JSON representations for parameters\"\n },\n \"responseDefinitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/response\"\n },\n \"description\": \"One or more JSON representations for parameters\"\n },\n \"externalDocs\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"description\": \"information about external documentation\",\n \"required\": [\n \"url\"\n ],\n \"properties\": {\n \"description\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"examples\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n },\n \"mimeType\": {\n \"type\": \"string\",\n \"description\": \"The MIME type of the HTTP message.\"\n },\n \"operation\": {\n \"type\": \"object\",\n \"required\": [\n \"responses\"\n ],\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"uniqueItems\": true\n },\n \"summary\": {\n \"type\": \"string\",\n \"description\": \"A brief summary of the operation.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A longer description of the operation, GitHub Flavored Markdown is allowed.\"\n },\n \"externalDocs\": {\n \"$ref\": \"#/definitions/externalDocs\"\n },\n \"operationId\": {\n \"type\": \"string\",\n \"description\": \"A unique identifier of the operation.\"\n },\n \"produces\": {\n \"description\": \"A list of MIME types the API can produce.\",\n \"$ref\": \"#/definitions/mediaTypeList\"\n },\n \"consumes\": {\n \"description\": \"A list of MIME types the API can consume.\",\n \"$ref\": \"#/definitions/mediaTypeList\"\n },\n \"parameters\": {\n \"$ref\": \"#/definitions/parametersList\"\n },\n \"responses\": {\n \"$ref\": \"#/definitions/responses\"\n },\n \"schemes\": {\n \"$ref\": \"#/definitions/schemesList\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"security\": {\n \"$ref\": \"#/definitions/security\"\n }\n }\n },\n \"pathItem\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"$ref\": {\n \"type\": \"string\"\n },\n \"get\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"put\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"post\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"delete\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"options\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"head\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"patch\": {\n \"$ref\": \"#/definitions/operation\"\n },\n \"parameters\": {\n \"$ref\": \"#/definitions/parametersList\"\n }\n }\n },\n \"responses\": {\n \"type\": \"object\",\n \"description\": \"Response objects names can either be any valid HTTP status code or 'default'.\",\n \"minProperties\": 1,\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^([0-9]{3})$|^(default)$\": {\n \"$ref\": \"#/definitions/responseValue\"\n },\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"not\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n }\n },\n \"responseValue\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/response\"\n },\n {\n \"$ref\": \"#/definitions/jsonReference\"\n }\n ]\n },\n \"response\": {\n \"type\": \"object\",\n \"required\": [\n \"description\"\n ],\n \"properties\": {\n \"description\": {\n \"type\": \"string\"\n },\n \"schema\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/schema\"\n },\n {\n \"$ref\": \"#/definitions/fileSchema\"\n }\n ]\n },\n \"headers\": {\n \"$ref\": \"#/definitions/headers\"\n },\n \"examples\": {\n \"$ref\": \"#/definitions/examples\"\n }\n },\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"headers\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/header\"\n }\n },\n \"header\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"number\",\n \"integer\",\n \"boolean\",\n \"array\"\n ]\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"items\": {\n \"$ref\": \"#/definitions/primitivesItems\"\n },\n \"collectionFormat\": {\n \"$ref\": \"#/definitions/collectionFormat\"\n },\n \"default\": {\n \"$ref\": \"#/definitions/default\"\n },\n \"maximum\": {\n \"$ref\": \"#/definitions/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"#/definitions/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"#/definitions/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"#/definitions/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"#/definitions/maxLength\"\n },\n \"minLength\": {\n \"$ref\": \"#/definitions/minLength\"\n },\n \"pattern\": {\n \"$ref\": \"#/definitions/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"#/definitions/maxItems\"\n },\n \"minItems\": {\n \"$ref\": \"#/definitions/minItems\"\n },\n \"uniqueItems\": {\n \"$ref\": \"#/definitions/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"#/definitions/enum\"\n },\n \"multipleOf\": {\n \"$ref\": \"#/definitions/multipleOf\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"vendorExtension\": {\n \"description\": \"Any property starting with x- is valid.\",\n \"additionalProperties\": true,\n \"additionalItems\": true\n },\n \"bodyParameter\": {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n \"in\",\n \"schema\"\n ],\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the parameter.\"\n },\n \"in\": {\n \"type\": \"string\",\n \"description\": \"Determines the location of the parameter.\",\n \"enum\": [\n \"body\"\n ]\n },\n \"required\": {\n \"type\": \"boolean\",\n \"description\": \"Determines whether or not this parameter is required or optional.\",\n \"default\": false\n },\n \"schema\": {\n \"$ref\": \"#/definitions/schema\"\n }\n },\n \"additionalProperties\": false\n },\n \"headerParameterSubSchema\": {\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"required\": {\n \"type\": \"boolean\",\n \"description\": \"Determines whether or not this parameter is required or optional.\",\n \"default\": false\n },\n \"in\": {\n \"type\": \"string\",\n \"description\": \"Determines the location of the parameter.\",\n \"enum\": [\n \"header\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the parameter.\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"number\",\n \"boolean\",\n \"integer\",\n \"array\"\n ]\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"items\": {\n \"$ref\": \"#/definitions/primitivesItems\"\n },\n \"collectionFormat\": {\n \"$ref\": \"#/definitions/collectionFormat\"\n },\n \"default\": {\n \"$ref\": \"#/definitions/default\"\n },\n \"maximum\": {\n \"$ref\": \"#/definitions/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"#/definitions/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"#/definitions/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"#/definitions/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"#/definitions/maxLength\"\n },\n \"minLength\": {\n \"$ref\": \"#/definitions/minLength\"\n },\n \"pattern\": {\n \"$ref\": \"#/definitions/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"#/definitions/maxItems\"\n },\n \"minItems\": {\n \"$ref\": \"#/definitions/minItems\"\n },\n \"uniqueItems\": {\n \"$ref\": \"#/definitions/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"#/definitions/enum\"\n },\n \"multipleOf\": {\n \"$ref\": \"#/definitions/multipleOf\"\n }\n }\n },\n \"queryParameterSubSchema\": {\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"required\": {\n \"type\": \"boolean\",\n \"description\": \"Determines whether or not this parameter is required or optional.\",\n \"default\": false\n },\n \"in\": {\n \"type\": \"string\",\n \"description\": \"Determines the location of the parameter.\",\n \"enum\": [\n \"query\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the parameter.\"\n },\n \"allowEmptyValue\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"allows sending a parameter by name only or with an empty value.\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"number\",\n \"boolean\",\n \"integer\",\n \"array\"\n ]\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"items\": {\n \"$ref\": \"#/definitions/primitivesItems\"\n },\n \"collectionFormat\": {\n \"$ref\": \"#/definitions/collectionFormatWithMulti\"\n },\n \"default\": {\n \"$ref\": \"#/definitions/default\"\n },\n \"maximum\": {\n \"$ref\": \"#/definitions/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"#/definitions/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"#/definitions/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"#/definitions/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"#/definitions/maxLength\"\n },\n \"minLength\": {\n \"$ref\": \"#/definitions/minLength\"\n },\n \"pattern\": {\n \"$ref\": \"#/definitions/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"#/definitions/maxItems\"\n },\n \"minItems\": {\n \"$ref\": \"#/definitions/minItems\"\n },\n \"uniqueItems\": {\n \"$ref\": \"#/definitions/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"#/definitions/enum\"\n },\n \"multipleOf\": {\n \"$ref\": \"#/definitions/multipleOf\"\n }\n }\n },\n \"formDataParameterSubSchema\": {\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"required\": {\n \"type\": \"boolean\",\n \"description\": \"Determines whether or not this parameter is required or optional.\",\n \"default\": false\n },\n \"in\": {\n \"type\": \"string\",\n \"description\": \"Determines the location of the parameter.\",\n \"enum\": [\n \"formData\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the parameter.\"\n },\n \"allowEmptyValue\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"description\": \"allows sending a parameter by name only or with an empty value.\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"number\",\n \"boolean\",\n \"integer\",\n \"array\",\n \"file\"\n ]\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"items\": {\n \"$ref\": \"#/definitions/primitivesItems\"\n },\n \"collectionFormat\": {\n \"$ref\": \"#/definitions/collectionFormatWithMulti\"\n },\n \"default\": {\n \"$ref\": \"#/definitions/default\"\n },\n \"maximum\": {\n \"$ref\": \"#/definitions/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"#/definitions/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"#/definitions/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"#/definitions/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"#/definitions/maxLength\"\n },\n \"minLength\": {\n \"$ref\": \"#/definitions/minLength\"\n },\n \"pattern\": {\n \"$ref\": \"#/definitions/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"#/definitions/maxItems\"\n },\n \"minItems\": {\n \"$ref\": \"#/definitions/minItems\"\n },\n \"uniqueItems\": {\n \"$ref\": \"#/definitions/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"#/definitions/enum\"\n },\n \"multipleOf\": {\n \"$ref\": \"#/definitions/multipleOf\"\n }\n }\n },\n \"pathParameterSubSchema\": {\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"required\": [\n \"required\"\n ],\n \"properties\": {\n \"required\": {\n \"type\": \"boolean\",\n \"enum\": [\n true\n ],\n \"description\": \"Determines whether or not this parameter is required or optional.\"\n },\n \"in\": {\n \"type\": \"string\",\n \"description\": \"Determines the location of the parameter.\",\n \"enum\": [\n \"path\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the parameter.\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"number\",\n \"boolean\",\n \"integer\",\n \"array\"\n ]\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"items\": {\n \"$ref\": \"#/definitions/primitivesItems\"\n },\n \"collectionFormat\": {\n \"$ref\": \"#/definitions/collectionFormat\"\n },\n \"default\": {\n \"$ref\": \"#/definitions/default\"\n },\n \"maximum\": {\n \"$ref\": \"#/definitions/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"#/definitions/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"#/definitions/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"#/definitions/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"#/definitions/maxLength\"\n },\n \"minLength\": {\n \"$ref\": \"#/definitions/minLength\"\n },\n \"pattern\": {\n \"$ref\": \"#/definitions/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"#/definitions/maxItems\"\n },\n \"minItems\": {\n \"$ref\": \"#/definitions/minItems\"\n },\n \"uniqueItems\": {\n \"$ref\": \"#/definitions/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"#/definitions/enum\"\n },\n \"multipleOf\": {\n \"$ref\": \"#/definitions/multipleOf\"\n }\n }\n },\n \"nonBodyParameter\": {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n \"in\",\n \"type\"\n ],\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/headerParameterSubSchema\"\n },\n {\n \"$ref\": \"#/definitions/formDataParameterSubSchema\"\n },\n {\n \"$ref\": \"#/definitions/queryParameterSubSchema\"\n },\n {\n \"$ref\": \"#/definitions/pathParameterSubSchema\"\n }\n ]\n },\n \"parameter\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/bodyParameter\"\n },\n {\n \"$ref\": \"#/definitions/nonBodyParameter\"\n }\n ]\n },\n \"schema\": {\n \"type\": \"object\",\n \"description\": \"A deterministic version of a JSON Schema object.\",\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"properties\": {\n \"$ref\": {\n \"type\": \"string\"\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/title\"\n },\n \"description\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/description\"\n },\n \"default\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/default\"\n },\n \"multipleOf\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/multipleOf\"\n },\n \"maximum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveInteger\"\n },\n \"minLength\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0\"\n },\n \"pattern\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveInteger\"\n },\n \"minItems\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0\"\n },\n \"uniqueItems\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/uniqueItems\"\n },\n \"maxProperties\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveInteger\"\n },\n \"minProperties\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0\"\n },\n \"required\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/stringArray\"\n },\n \"enum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/enum\"\n },\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/definitions/schema\"\n },\n {\n \"type\": \"boolean\"\n }\n ],\n \"default\": {}\n },\n \"type\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/type\"\n },\n \"items\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/definitions/schema\"\n },\n {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"$ref\": \"#/definitions/schema\"\n }\n }\n ],\n \"default\": {}\n },\n \"allOf\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"$ref\": \"#/definitions/schema\"\n }\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/schema\"\n },\n \"default\": {}\n },\n \"discriminator\": {\n \"type\": \"string\"\n },\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"xml\": {\n \"$ref\": \"#/definitions/xml\"\n },\n \"externalDocs\": {\n \"$ref\": \"#/definitions/externalDocs\"\n },\n \"example\": {}\n },\n \"additionalProperties\": false\n },\n \"fileSchema\": {\n \"type\": \"object\",\n \"description\": \"A deterministic version of a JSON Schema object.\",\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"format\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/title\"\n },\n \"description\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/description\"\n },\n \"default\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/default\"\n },\n \"required\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/stringArray\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"file\"\n ]\n },\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"externalDocs\": {\n \"$ref\": \"#/definitions/externalDocs\"\n },\n \"example\": {}\n },\n \"additionalProperties\": false\n },\n \"primitivesItems\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"string\",\n \"number\",\n \"integer\",\n \"boolean\",\n \"array\"\n ]\n },\n \"format\": {\n \"type\": \"string\"\n },\n \"items\": {\n \"$ref\": \"#/definitions/primitivesItems\"\n },\n \"collectionFormat\": {\n \"$ref\": \"#/definitions/collectionFormat\"\n },\n \"default\": {\n \"$ref\": \"#/definitions/default\"\n },\n \"maximum\": {\n \"$ref\": \"#/definitions/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"#/definitions/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"#/definitions/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"#/definitions/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"#/definitions/maxLength\"\n },\n \"minLength\": {\n \"$ref\": \"#/definitions/minLength\"\n },\n \"pattern\": {\n \"$ref\": \"#/definitions/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"#/definitions/maxItems\"\n },\n \"minItems\": {\n \"$ref\": \"#/definitions/minItems\"\n },\n \"uniqueItems\": {\n \"$ref\": \"#/definitions/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"#/definitions/enum\"\n },\n \"multipleOf\": {\n \"$ref\": \"#/definitions/multipleOf\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"security\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/securityRequirement\"\n },\n \"uniqueItems\": true\n },\n \"securityRequirement\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"uniqueItems\": true\n }\n },\n \"xml\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"namespace\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"attribute\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"wrapped\": {\n \"type\": \"boolean\",\n \"default\": false\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"tag\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"externalDocs\": {\n \"$ref\": \"#/definitions/externalDocs\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"securityDefinitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/basicAuthenticationSecurity\"\n },\n {\n \"$ref\": \"#/definitions/apiKeySecurity\"\n },\n {\n \"$ref\": \"#/definitions/oauth2ImplicitSecurity\"\n },\n {\n \"$ref\": \"#/definitions/oauth2PasswordSecurity\"\n },\n {\n \"$ref\": \"#/definitions/oauth2ApplicationSecurity\"\n },\n {\n \"$ref\": \"#/definitions/oauth2AccessCodeSecurity\"\n }\n ]\n }\n },\n \"basicAuthenticationSecurity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"basic\"\n ]\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"apiKeySecurity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"name\",\n \"in\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"apiKey\"\n ]\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"in\": {\n \"type\": \"string\",\n \"enum\": [\n \"header\",\n \"query\"\n ]\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"oauth2ImplicitSecurity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"flow\",\n \"authorizationUrl\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"oauth2\"\n ]\n },\n \"flow\": {\n \"type\": \"string\",\n \"enum\": [\n \"implicit\"\n ]\n },\n \"scopes\": {\n \"$ref\": \"#/definitions/oauth2Scopes\"\n },\n \"authorizationUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"oauth2PasswordSecurity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"flow\",\n \"tokenUrl\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"oauth2\"\n ]\n },\n \"flow\": {\n \"type\": \"string\",\n \"enum\": [\n \"password\"\n ]\n },\n \"scopes\": {\n \"$ref\": \"#/definitions/oauth2Scopes\"\n },\n \"tokenUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"oauth2ApplicationSecurity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"flow\",\n \"tokenUrl\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"oauth2\"\n ]\n },\n \"flow\": {\n \"type\": \"string\",\n \"enum\": [\n \"application\"\n ]\n },\n \"scopes\": {\n \"$ref\": \"#/definitions/oauth2Scopes\"\n },\n \"tokenUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"oauth2AccessCodeSecurity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"flow\",\n \"authorizationUrl\",\n \"tokenUrl\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"oauth2\"\n ]\n },\n \"flow\": {\n \"type\": \"string\",\n \"enum\": [\n \"accessCode\"\n ]\n },\n \"scopes\": {\n \"$ref\": \"#/definitions/oauth2Scopes\"\n },\n \"authorizationUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"tokenUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"patternProperties\": {\n \"^x-\": {\n \"$ref\": \"#/definitions/vendorExtension\"\n }\n }\n },\n \"oauth2Scopes\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"mediaTypeList\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/mimeType\"\n },\n \"uniqueItems\": true\n },\n \"parametersList\": {\n \"type\": \"array\",\n \"description\": \"The parameters needed to send a valid API call.\",\n \"additionalItems\": false,\n \"items\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/parameter\"\n },\n {\n \"$ref\": \"#/definitions/jsonReference\"\n }\n ]\n },\n \"uniqueItems\": true\n },\n \"schemesList\": {\n \"type\": \"array\",\n \"description\": \"The transfer protocol of the API.\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"http\",\n \"https\",\n \"ws\",\n \"wss\"\n ]\n },\n \"uniqueItems\": true\n },\n \"collectionFormat\": {\n \"type\": \"string\",\n \"enum\": [\n \"csv\",\n \"ssv\",\n \"tsv\",\n \"pipes\"\n ],\n \"default\": \"csv\"\n },\n \"collectionFormatWithMulti\": {\n \"type\": \"string\",\n \"enum\": [\n \"csv\",\n \"ssv\",\n \"tsv\",\n \"pipes\",\n \"multi\"\n ],\n \"default\": \"csv\"\n },\n \"title\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/title\"\n },\n \"description\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/description\"\n },\n \"default\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/default\"\n },\n \"multipleOf\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/multipleOf\"\n },\n \"maximum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/maximum\"\n },\n \"exclusiveMaximum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum\"\n },\n \"minimum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/minimum\"\n },\n \"exclusiveMinimum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum\"\n },\n \"maxLength\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveInteger\"\n },\n \"minLength\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0\"\n },\n \"pattern\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/pattern\"\n },\n \"maxItems\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveInteger\"\n },\n \"minItems\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0\"\n },\n \"uniqueItems\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/uniqueItems\"\n },\n \"enum\": {\n \"$ref\": \"http://json-schema.org/draft-04/schema#/properties/enum\"\n },\n \"jsonReference\": {\n \"type\": \"object\",\n \"required\": [\n \"$ref\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"$ref\": {\n \"type\": \"string\"\n }\n }\n }\n }\n}","/* */ \n'use strict';\nvar util = require('./util'),\n ono = require('ono'),\n ZSchema = require('z-schema'),\n swaggerSchema = require('swagger-schema-official/schema');\nmodule.exports = validateSchema;\ninitializeZSchema();\nfunction validateSchema(api) {\n util.debug('Validating against the Swagger 2.0 schema');\n var isValid = ZSchema.validate(api, swaggerSchema);\n if (isValid) {\n util.debug(' Validated successfully');\n } else {\n var err = ZSchema.getLastError();\n var message = 'Swagger schema validation failed. \\n' + formatZSchemaError(err.details);\n throw ono.syntax(err, {details: err.details}, message);\n }\n}\nfunction initializeZSchema() {\n ZSchema = new ZSchema({\n breakOnFirstError: true,\n noExtraKeywords: true,\n ignoreUnknownFormats: false,\n reportPathAsArray: true\n });\n}\nfunction formatZSchemaError(errors, indent) {\n indent = indent || ' ';\n var message = '';\n errors.forEach(function(error, index) {\n message += util.format('%s%s at #/%s\\n', indent, error.message, error.path.join('/'));\n if (error.inner) {\n message += formatZSchemaError(error.inner, indent + ' ');\n }\n });\n return message;\n}\n","/* */ \nmodule.exports = ['get', 'put', 'post', 'delete', 'options', 'head', 'patch'];\n","module.exports = require(\"npm:swagger-methods@1.0.0/lib/index.js\");","/* */ \n'use strict';\nvar util = require('./util'),\n ono = require('ono'),\n swaggerMethods = require('swagger-methods'),\n primitiveTypes = ['array', 'boolean', 'integer', 'number', 'string'],\n schemaTypes = ['array', 'boolean', 'integer', 'number', 'string', 'object', 'null', undefined];\nmodule.exports = validateSpec;\nfunction validateSpec(api) {\n util.debug('Validating against the Swagger 2.0 spec');\n var paths = Object.keys(api.paths || {});\n paths.forEach(function(pathName) {\n var path = api.paths[pathName];\n var pathId = '/paths' + pathName;\n if (path && pathName.indexOf('/') === 0) {\n validatePath(api, path, pathId);\n }\n });\n util.debug(' Validated successfully');\n}\nfunction validatePath(api, path, pathId) {\n swaggerMethods.forEach(function(operationName) {\n var operation = path[operationName];\n var operationId = pathId + '/' + operationName;\n if (operation) {\n validateParameters(api, path, pathId, operation, operationId);\n var responses = Object.keys(operation.responses || {});\n responses.forEach(function(responseName) {\n var response = operation.responses[responseName];\n var responseId = operationId + '/responses/' + responseName;\n validateResponse(responseName, response, responseId);\n });\n }\n });\n}\nfunction validateParameters(api, path, pathId, operation, operationId) {\n var pathParams = path.parameters || [];\n var operationParams = operation.parameters || [];\n try {\n checkForDuplicates(pathParams);\n } catch (e) {\n throw ono.syntax(e, 'Validation failed. %s has duplicate parameters', pathId);\n }\n try {\n checkForDuplicates(operationParams);\n } catch (e) {\n throw ono.syntax(e, 'Validation failed. %s has duplicate parameters', operationId);\n }\n var params = pathParams.reduce(function(combinedParams, value) {\n var duplicate = combinedParams.some(function(param) {\n return param.in === value.in && param.name === value.name;\n });\n if (!duplicate) {\n combinedParams.push(value);\n }\n return combinedParams;\n }, operationParams.slice());\n validateBodyParameters(params, operationId);\n validatePathParameters(params, pathId, operationId);\n validateParameterTypes(params, api, operation, operationId);\n}\nfunction validateBodyParameters(params, operationId) {\n var bodyParams = params.filter(function(param) {\n return param.in === 'body';\n });\n var formParams = params.filter(function(param) {\n return param.in === 'formData';\n });\n if (bodyParams.length > 1) {\n throw ono.syntax('Validation failed. %s has %d body parameters. Only one is allowed.', operationId, bodyParams.length);\n } else if (bodyParams.length > 0 && formParams.length > 0) {\n throw ono.syntax('Validation failed. %s has body parameters and formData parameters. Only one or the other is allowed.', operationId);\n }\n}\nfunction validatePathParameters(params, pathId, operationId) {\n var placeholders = pathId.match(util.swaggerParamRegExp) || [];\n for (var i = 0; i < placeholders.length; i++) {\n for (var j = i + 1; j < placeholders.length; j++) {\n if (placeholders[i] === placeholders[j]) {\n throw ono.syntax('Validation failed. %s has multiple path placeholders named %s', operationId, placeholders[i]);\n }\n }\n }\n params.filter(function(param) {\n return param.in === 'path';\n }).forEach(function(param) {\n if (param.required !== true) {\n throw ono.syntax('Validation failed. Path parameters cannot be optional. Set required=true for the \"%s\" parameter at %s', param.name, operationId);\n }\n var match = placeholders.indexOf('{' + param.name + '}');\n if (match === -1) {\n throw ono.syntax('Validation failed. %s has a path parameter named \"%s\", ' + 'but there is no corresponding {%s} in the path string', operationId, param.name, param.name);\n }\n placeholders.splice(match, 1);\n });\n if (placeholders.length > 0) {\n throw ono.syntax('Validation failed. %s is missing path parameter(s) for %s', operationId, placeholders);\n }\n}\nfunction validateParameterTypes(params, api, operation, operationId) {\n params.forEach(function(param) {\n var parameterId = operationId + '/parameters/' + param.name;\n var schema,\n validTypes;\n switch (param.in) {\n case 'body':\n schema = param.schema;\n validTypes = schemaTypes;\n break;\n case 'formData':\n schema = param;\n validTypes = primitiveTypes.concat('file');\n break;\n default:\n schema = param;\n validTypes = primitiveTypes;\n }\n validateSchema(schema, parameterId, validTypes);\n if (schema.type === 'file') {\n var consumes = operation.consumes || api.consumes || [];\n if (consumes.indexOf('multipart/form-data') === -1 && consumes.indexOf('application/x-www-form-urlencoded') === -1) {\n throw ono.syntax('Validation failed. %s has a file parameter, so it must consume multipart/form-data ' + 'or application/x-www-form-urlencoded', operationId);\n }\n }\n });\n}\nfunction checkForDuplicates(params) {\n for (var i = 0; i < params.length - 1; i++) {\n var outer = params[i];\n for (var j = i + 1; j < params.length; j++) {\n var inner = params[j];\n if (outer.name === inner.name && outer.in === inner.in) {\n throw ono.syntax('Validation failed. Found multiple %s parameters named \"%s\"', outer.in, outer.name);\n }\n }\n }\n}\nfunction validateResponse(code, response, responseId) {\n if (code !== 'default' && (code < 100 || code > 599)) {\n throw ono.syntax('Validation failed. %s has an invalid response code (%s)', responseId, code);\n }\n var headers = Object.keys(response.headers || {});\n headers.forEach(function(headerName) {\n var header = response.headers[headerName];\n var headerId = responseId + '/headers/' + headerName;\n validateSchema(header, headerId, primitiveTypes);\n });\n if (response.schema) {\n var validTypes = schemaTypes.concat('file');\n if (validTypes.indexOf(response.schema.type) === -1) {\n throw ono.syntax('Validation failed. %s has an invalid response schema type (%s)', responseId, response.schema.type);\n }\n }\n}\nfunction validateSchema(schema, schemaId, validTypes) {\n if (validTypes.indexOf(schema.type) === -1) {\n throw ono.syntax('Validation failed. %s has an invalid type (%s)', schemaId, schema.type);\n }\n if (schema.type === 'array' && !schema.items) {\n throw ono.syntax('Validation failed. %s is an array, so it must include an \"items\" schema', schemaId);\n }\n}\n","/* */ \n'use strict';\nvar debug = require('debug'),\n util = require('util');\nexports.format = util.format;\nexports.inherits = util.inherits;\nexports.debug = debug('swagger:parser');\nexports.swaggerParamRegExp = /\\{([^/}]+)}/g;\n","/* */ \n'use strict';\nvar $RefParserOptions = require('json-schema-ref-parser/lib/options'),\n util = require('util');\nmodule.exports = ParserOptions;\nfunction ParserOptions(options) {\n this.validate = {\n schema: true,\n spec: true\n };\n $RefParserOptions.apply(this, arguments);\n}\nutil.inherits(ParserOptions, $RefParserOptions);\n","/* */ \n'use strict';\n\n/** @type {Promise} **/\nmodule.exports = typeof Promise === 'function' ? Promise : require('es6-promise').Promise;\n","/* */ \n(function(Buffer) {\n 'use strict';\n module.exports = $RefParserOptions;\n function $RefParserOptions(options) {\n this.allow = {\n json: true,\n yaml: true,\n empty: true,\n unknown: true\n };\n this.$refs = {\n internal: true,\n external: true,\n circular: true\n };\n this.cache = {\n fs: 60,\n http: 5 * 60,\n https: 5 * 60\n };\n this.http = {\n headers: {},\n timeout: 5000,\n redirects: 5,\n withCredentials: false\n };\n merge(options, this);\n }\n function merge(src, dest) {\n if (src) {\n var topKeys = Object.keys(src);\n for (var i = 0; i < topKeys.length; i++) {\n var topKey = topKeys[i];\n var srcChild = src[topKey];\n if (dest[topKey] === undefined) {\n dest[topKey] = srcChild;\n } else {\n var childKeys = Object.keys(srcChild);\n for (var j = 0; j < childKeys.length; j++) {\n var childKey = childKeys[j];\n var srcChildValue = srcChild[childKey];\n if (srcChildValue !== undefined) {\n dest[topKey][childKey] = srcChildValue;\n }\n }\n }\n }\n }\n }\n})(require('buffer').Buffer);\n","/* */ \n'use strict';\nvar Options = require('./options'),\n util = require('./util'),\n url = require('url'),\n ono = require('ono');\nmodule.exports = $Refs;\nfunction $Refs() {\n this.circular = false;\n this._basePath = '';\n this._$refs = {};\n}\n$Refs.prototype.paths = function(types) {\n var paths = getPaths(this._$refs, arguments);\n return paths.map(function(path) {\n return path.decoded;\n });\n};\n$Refs.prototype.values = function(types) {\n var $refs = this._$refs;\n var paths = getPaths($refs, arguments);\n return paths.reduce(function(obj, path) {\n obj[path.decoded] = $refs[path.encoded].value;\n return obj;\n }, {});\n};\n$Refs.prototype.toJSON = $Refs.prototype.values;\n$Refs.prototype.isExpired = function(path) {\n var $ref = this._get$Ref(path);\n return $ref === undefined || $ref.isExpired();\n};\n$Refs.prototype.expire = function(path) {\n var $ref = this._get$Ref(path);\n if ($ref) {\n $ref.expire();\n }\n};\n$Refs.prototype.exists = function(path) {\n try {\n this._resolve(path);\n return true;\n } catch (e) {\n return false;\n }\n};\n$Refs.prototype.get = function(path, options) {\n return this._resolve(path, options).value;\n};\n$Refs.prototype.set = function(path, value, options) {\n path = url.resolve(this._basePath, path);\n var withoutHash = util.path.stripHash(path);\n var $ref = this._$refs[withoutHash];\n if (!$ref) {\n throw ono('Error resolving $ref pointer \"%s\". \\n\"%s\" not found.', path, withoutHash);\n }\n options = new Options(options);\n $ref.set(path, value, options);\n};\n$Refs.prototype._resolve = function(path, options) {\n path = url.resolve(this._basePath, path);\n var withoutHash = util.path.stripHash(path);\n var $ref = this._$refs[withoutHash];\n if (!$ref) {\n throw ono('Error resolving $ref pointer \"%s\". \\n\"%s\" not found.', path, withoutHash);\n }\n options = new Options(options);\n return $ref.resolve(path, options);\n};\n$Refs.prototype._get$Ref = function(path) {\n path = url.resolve(this._basePath, path);\n var withoutHash = util.path.stripHash(path);\n return this._$refs[withoutHash];\n};\nfunction getPaths($refs, types) {\n var paths = Object.keys($refs);\n types = Array.isArray(types[0]) ? types[0] : Array.prototype.slice.call(types);\n if (types.length > 0 && types[0]) {\n paths = paths.filter(function(key) {\n return types.indexOf($refs[key].pathType) !== -1;\n });\n }\n return paths.map(function(path) {\n return {\n encoded: path,\n decoded: $refs[path].pathType === 'fs' ? util.path.urlToLocalPath(path, true) : path\n };\n });\n}\n","/* */ \nif (System._nodeRequire) {\n module.exports = System._nodeRequire('fs');\n}\nelse {\n\n exports.readFileSync = function(address) {\n var output;\n var xhr = new XMLHttpRequest();\n xhr.open('GET', address, false);\n xhr.onreadystatechange = function(e) {\n if (xhr.readyState == 4) {\n var status = xhr.status;\n if ((status > 399 && status < 600) || status == 400) {\n throw 'File read error on ' + address;\n }\n else\n output = xhr.responseText;\n }\n }\n xhr.send(null);\n return output;\n };\n\n}\n","module.exports = require(\"github:jspm/nodelibs-fs@0.1.2/index\");","/* */ \nexports = module.exports = require('./lib/_stream_readable');\nexports.Stream = require('stream-browserify/index');\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable');\nexports.Duplex = require('./lib/_stream_duplex');\nexports.Transform = require('./lib/_stream_transform');\nexports.PassThrough = require('./lib/_stream_passthrough');\n","/* */ \nmodule.exports = require('./lib/_stream_writable');\n","/* */ \nmodule.exports = require('./lib/_stream_duplex');\n","/* */ \nmodule.exports = require('./lib/_stream_transform');\n","/* */ \nmodule.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","module.exports = require(\"npm:isarray@0.0.1/index.js\");","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n }\n throw TypeError('Uncaught, unspecified \"error\" event.');\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n len = arguments.length;\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n len = arguments.length;\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n var m;\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n var ret;\n if (!emitter._events || !emitter._events[type])\n ret = 0;\n else if (isFunction(emitter._events[type]))\n ret = 1;\n else\n ret = emitter._events[type].length;\n return ret;\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","module.exports = require(\"npm:events@1.0.2/events.js\");","/* */ \nmodule.exports = System._nodeRequire ? System._nodeRequire('events') : require('events');","module.exports = require(\"github:jspm/nodelibs-events@0.1.1/index\");","/* */ \n(function(Buffer) {\n var Buffer = require('buffer').Buffer;\n var isBufferEncoding = Buffer.isEncoding || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n case 'raw':\n return true;\n default:\n return false;\n }\n };\n function assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n }\n var StringDecoder = exports.StringDecoder = function(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n this.charBuffer = new Buffer(6);\n this.charReceived = 0;\n this.charLength = 0;\n };\n StringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n while (this.charLength) {\n var available = (buffer.length >= this.charLength - this.charReceived) ? this.charLength - this.charReceived : buffer.length;\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n if (this.charReceived < this.charLength) {\n return '';\n }\n buffer = buffer.slice(available, buffer.length);\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n this.detectIncompleteChar(buffer);\n var end = buffer.length;\n if (this.charLength) {\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n charStr += buffer.toString(this.encoding, 0, end);\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n return charStr;\n };\n StringDecoder.prototype.detectIncompleteChar = function(buffer) {\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n };\n StringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n return res;\n };\n function passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n }\n function utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n }\n function base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n }\n})(require('buffer').Buffer);\n","module.exports = require(\"npm:string_decoder@0.10.31/index.js\");","/* */ \n(function(Buffer, process) {\n module.exports = Readable;\n var isArray = require('isarray');\n var Buffer = require('buffer').Buffer;\n Readable.ReadableState = ReadableState;\n var EE = require('events').EventEmitter;\n if (!EE.listenerCount)\n EE.listenerCount = function(emitter, type) {\n return emitter.listeners(type).length;\n };\n var Stream = require('stream-browserify/index');\n var util = require('core-util-is');\n util.inherits = require('inherits');\n var StringDecoder;\n var debug = require('@empty');\n if (debug && debug.debuglog) {\n debug = debug.debuglog('stream');\n } else {\n debug = function() {};\n }\n util.inherits(Readable, Stream);\n function ReadableState(options, stream) {\n var Duplex = require('./_stream_duplex');\n options = options || {};\n var hwm = options.highWaterMark;\n var defaultHwm = options.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;\n this.highWaterMark = ~~this.highWaterMark;\n this.buffer = [];\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n this.sync = true;\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.objectMode = !!options.objectMode;\n if (stream instanceof Duplex)\n this.objectMode = this.objectMode || !!options.readableObjectMode;\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n this.ranOut = false;\n this.awaitDrain = 0;\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n }\n function Readable(options) {\n var Duplex = require('./_stream_duplex');\n if (!(this instanceof Readable))\n return new Readable(options);\n this._readableState = new ReadableState(options, this);\n this.readable = true;\n Stream.call(this);\n }\n Readable.prototype.push = function(chunk, encoding) {\n var state = this._readableState;\n if (util.isString(chunk) && !state.objectMode) {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = new Buffer(chunk, encoding);\n encoding = '';\n }\n }\n return readableAddChunk(this, state, chunk, encoding, false);\n };\n Readable.prototype.unshift = function(chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n };\n function readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (util.isNullOrUndefined(chunk)) {\n state.reading = false;\n if (!state.ended)\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var e = new Error('stream.unshift() after end event');\n stream.emit('error', e);\n } else {\n if (state.decoder && !addToFront && !encoding)\n chunk = state.decoder.write(chunk);\n if (!addToFront)\n state.reading = false;\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront)\n state.buffer.unshift(chunk);\n else\n state.buffer.push(chunk);\n if (state.needReadable)\n emitReadable(stream);\n }\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n return needMoreData(state);\n }\n function needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n }\n Readable.prototype.setEncoding = function(enc) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n };\n var MAX_HWM = 0x800000;\n function roundUpToNextPowerOf2(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n n--;\n for (var p = 1; p < 32; p <<= 1)\n n |= n >> p;\n n++;\n }\n return n;\n }\n function howMuchToRead(n, state) {\n if (state.length === 0 && state.ended)\n return 0;\n if (state.objectMode)\n return n === 0 ? 0 : 1;\n if (isNaN(n) || util.isNull(n)) {\n if (state.flowing && state.buffer.length)\n return state.buffer[0].length;\n else\n return state.length;\n }\n if (n <= 0)\n return 0;\n if (n > state.highWaterMark)\n state.highWaterMark = roundUpToNextPowerOf2(n);\n if (n > state.length) {\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n } else\n return state.length;\n }\n return n;\n }\n Readable.prototype.read = function(n) {\n debug('read', n);\n var state = this._readableState;\n var nOrig = n;\n if (!util.isNumber(n) || n > 0)\n state.emittedReadable = false;\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended)\n endReadable(this);\n else\n emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n if (n === 0 && state.ended) {\n if (state.length === 0)\n endReadable(this);\n return null;\n }\n var doRead = state.needReadable;\n debug('need readable', doRead);\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n }\n if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n if (state.length === 0)\n state.needReadable = true;\n this._read(state.highWaterMark);\n state.sync = false;\n }\n if (doRead && !state.reading)\n n = howMuchToRead(nOrig, state);\n var ret;\n if (n > 0)\n ret = fromList(n, state);\n else\n ret = null;\n if (util.isNull(ret)) {\n state.needReadable = true;\n n = 0;\n }\n state.length -= n;\n if (state.length === 0 && !state.ended)\n state.needReadable = true;\n if (nOrig !== n && state.ended && state.length === 0)\n endReadable(this);\n if (!util.isNull(ret))\n this.emit('data', ret);\n return ret;\n };\n function chunkInvalid(state, chunk) {\n var er = null;\n if (!util.isBuffer(chunk) && !util.isString(chunk) && !util.isNullOrUndefined(chunk) && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n }\n function onEofChunk(stream, state) {\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n emitReadable(stream);\n }\n function emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync)\n process.nextTick(function() {\n emitReadable_(stream);\n });\n else\n emitReadable_(stream);\n }\n }\n function emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n }\n function maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(function() {\n maybeReadMore_(stream, state);\n });\n }\n }\n function maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n break;\n else\n len = state.length;\n }\n state.readingMore = false;\n }\n Readable.prototype._read = function(n) {\n this.emit('error', new Error('not implemented'));\n };\n Readable.prototype.pipe = function(dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted)\n process.nextTick(endFn);\n else\n src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n debug('onunpipe');\n if (readable === src) {\n cleanup();\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n function cleanup() {\n debug('cleanup');\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n src.removeListener('data', ondata);\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain))\n ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n if (false === ret) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n src.pause();\n }\n }\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EE.listenerCount(dest, 'error') === 0)\n dest.emit('error', er);\n }\n if (!dest._events || !dest._events.error)\n dest.on('error', onerror);\n else if (isArray(dest._events.error))\n dest._events.error.unshift(onerror);\n else\n dest._events.error = [onerror, dest._events.error];\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n dest.emit('pipe', src);\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n };\n function pipeOnDrain(src) {\n return function() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain)\n state.awaitDrain--;\n if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n }\n Readable.prototype.unpipe = function(dest) {\n var state = this._readableState;\n if (state.pipesCount === 0)\n return this;\n if (state.pipesCount === 1) {\n if (dest && dest !== state.pipes)\n return this;\n if (!dest)\n dest = state.pipes;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest)\n dest.emit('unpipe', this);\n return this;\n }\n if (!dest) {\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++)\n dests[i].emit('unpipe', this);\n return this;\n }\n var i = indexOf(state.pipes, dest);\n if (i === -1)\n return this;\n state.pipes.splice(i, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1)\n state.pipes = state.pipes[0];\n dest.emit('unpipe', this);\n return this;\n };\n Readable.prototype.on = function(ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n if (ev === 'data' && false !== this._readableState.flowing) {\n this.resume();\n }\n if (ev === 'readable' && this.readable) {\n var state = this._readableState;\n if (!state.readableListening) {\n state.readableListening = true;\n state.emittedReadable = false;\n state.needReadable = true;\n if (!state.reading) {\n var self = this;\n process.nextTick(function() {\n debug('readable nexttick read 0');\n self.read(0);\n });\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n return res;\n };\n Readable.prototype.addListener = Readable.prototype.on;\n Readable.prototype.resume = function() {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n if (!state.reading) {\n debug('resume read 0');\n this.read(0);\n }\n resume(this, state);\n }\n return this;\n };\n function resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(function() {\n resume_(stream, state);\n });\n }\n }\n function resume_(stream, state) {\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading)\n stream.read(0);\n }\n Readable.prototype.pause = function() {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n };\n function flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n if (state.flowing) {\n do {\n var chunk = stream.read();\n } while (null !== chunk && state.flowing);\n }\n }\n Readable.prototype.wrap = function(stream) {\n var state = this._readableState;\n var paused = false;\n var self = this;\n stream.on('end', function() {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length)\n self.push(chunk);\n }\n self.push(null);\n });\n stream.on('data', function(chunk) {\n debug('wrapped data');\n if (state.decoder)\n chunk = state.decoder.write(chunk);\n if (!chunk || !state.objectMode && !chunk.length)\n return;\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n for (var i in stream) {\n if (util.isFunction(stream[i]) && util.isUndefined(this[i])) {\n this[i] = function(method) {\n return function() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function(ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n self._read = function(n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return self;\n };\n Readable._fromList = fromList;\n function fromList(n, state) {\n var list = state.buffer;\n var length = state.length;\n var stringMode = !!state.decoder;\n var objectMode = !!state.objectMode;\n var ret;\n if (list.length === 0)\n return null;\n if (length === 0)\n ret = null;\n else if (objectMode)\n ret = list.shift();\n else if (!n || n >= length) {\n if (stringMode)\n ret = list.join('');\n else\n ret = Buffer.concat(list, length);\n list.length = 0;\n } else {\n if (n < list[0].length) {\n var buf = list[0];\n ret = buf.slice(0, n);\n list[0] = buf.slice(n);\n } else if (n === list[0].length) {\n ret = list.shift();\n } else {\n if (stringMode)\n ret = '';\n else\n ret = new Buffer(n);\n var c = 0;\n for (var i = 0,\n l = list.length; i < l && c < n; i++) {\n var buf = list[0];\n var cpy = Math.min(n - c, buf.length);\n if (stringMode)\n ret += buf.slice(0, cpy);\n else\n buf.copy(ret, c, 0, cpy);\n if (cpy < buf.length)\n list[0] = buf.slice(cpy);\n else\n list.shift();\n c += cpy;\n }\n }\n }\n return ret;\n }\n function endReadable(stream) {\n var state = stream._readableState;\n if (state.length > 0)\n throw new Error('endReadable called on non-empty stream');\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(function() {\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n });\n }\n }\n function forEach(xs, f) {\n for (var i = 0,\n l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n }\n function indexOf(xs, x) {\n for (var i = 0,\n l = xs.length; i < l; i++) {\n if (xs[i] === x)\n return i;\n }\n return -1;\n }\n})(require('buffer').Buffer, require('process'));\n","/* */ \n(function(Buffer, process) {\n module.exports = Writable;\n var Buffer = require('buffer').Buffer;\n Writable.WritableState = WritableState;\n var util = require('core-util-is');\n util.inherits = require('inherits');\n var Stream = require('stream-browserify/index');\n util.inherits(Writable, Stream);\n function WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n }\n function WritableState(options, stream) {\n var Duplex = require('./_stream_duplex');\n options = options || {};\n var hwm = options.highWaterMark;\n var defaultHwm = options.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;\n this.objectMode = !!options.objectMode;\n if (stream instanceof Duplex)\n this.objectMode = this.objectMode || !!options.writableObjectMode;\n this.highWaterMark = ~~this.highWaterMark;\n this.needDrain = false;\n this.ending = false;\n this.ended = false;\n this.finished = false;\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n this.length = 0;\n this.writing = false;\n this.corked = 0;\n this.sync = true;\n this.bufferProcessing = false;\n this.onwrite = function(er) {\n onwrite(stream, er);\n };\n this.writecb = null;\n this.writelen = 0;\n this.buffer = [];\n this.pendingcb = 0;\n this.prefinished = false;\n this.errorEmitted = false;\n }\n function Writable(options) {\n var Duplex = require('./_stream_duplex');\n if (!(this instanceof Writable) && !(this instanceof Duplex))\n return new Writable(options);\n this._writableState = new WritableState(options, this);\n this.writable = true;\n Stream.call(this);\n }\n Writable.prototype.pipe = function() {\n this.emit('error', new Error('Cannot pipe. Not readable.'));\n };\n function writeAfterEnd(stream, state, cb) {\n var er = new Error('write after end');\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n }\n function validChunk(stream, state, chunk, cb) {\n var valid = true;\n if (!util.isBuffer(chunk) && !util.isString(chunk) && !util.isNullOrUndefined(chunk) && !state.objectMode) {\n var er = new TypeError('Invalid non-string/buffer chunk');\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n valid = false;\n }\n return valid;\n }\n Writable.prototype.write = function(chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n if (util.isFunction(encoding)) {\n cb = encoding;\n encoding = null;\n }\n if (util.isBuffer(chunk))\n encoding = 'buffer';\n else if (!encoding)\n encoding = state.defaultEncoding;\n if (!util.isFunction(cb))\n cb = function() {};\n if (state.ended)\n writeAfterEnd(this, state, cb);\n else if (validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\n }\n return ret;\n };\n Writable.prototype.cork = function() {\n var state = this._writableState;\n state.corked++;\n };\n Writable.prototype.uncork = function() {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.buffer.length)\n clearBuffer(this, state);\n }\n };\n function decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && util.isString(chunk)) {\n chunk = new Buffer(chunk, encoding);\n }\n return chunk;\n }\n function writeOrBuffer(stream, state, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n if (util.isBuffer(chunk))\n encoding = 'buffer';\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n if (!ret)\n state.needDrain = true;\n if (state.writing || state.corked)\n state.buffer.push(new WriteReq(chunk, encoding, cb));\n else\n doWrite(stream, state, false, len, chunk, encoding, cb);\n return ret;\n }\n function doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev)\n stream._writev(chunk, state.onwrite);\n else\n stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n }\n function onwriteError(stream, state, sync, er, cb) {\n if (sync)\n process.nextTick(function() {\n state.pendingcb--;\n cb(er);\n });\n else {\n state.pendingcb--;\n cb(er);\n }\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n }\n function onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n }\n function onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n onwriteStateUpdate(state);\n if (er)\n onwriteError(stream, state, sync, er, cb);\n else {\n var finished = needFinish(stream, state);\n if (!finished && !state.corked && !state.bufferProcessing && state.buffer.length) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(function() {\n afterWrite(stream, state, finished, cb);\n });\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n }\n function afterWrite(stream, state, finished, cb) {\n if (!finished)\n onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n }\n function onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n }\n function clearBuffer(stream, state) {\n state.bufferProcessing = true;\n if (stream._writev && state.buffer.length > 1) {\n var cbs = [];\n for (var c = 0; c < state.buffer.length; c++)\n cbs.push(state.buffer[c].callback);\n state.pendingcb++;\n doWrite(stream, state, true, state.length, state.buffer, '', function(err) {\n for (var i = 0; i < cbs.length; i++) {\n state.pendingcb--;\n cbs[i](err);\n }\n });\n state.buffer = [];\n } else {\n for (var c = 0; c < state.buffer.length; c++) {\n var entry = state.buffer[c];\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n if (state.writing) {\n c++;\n break;\n }\n }\n if (c < state.buffer.length)\n state.buffer = state.buffer.slice(c);\n else\n state.buffer.length = 0;\n }\n state.bufferProcessing = false;\n }\n Writable.prototype._write = function(chunk, encoding, cb) {\n cb(new Error('not implemented'));\n };\n Writable.prototype._writev = null;\n Writable.prototype.end = function(chunk, encoding, cb) {\n var state = this._writableState;\n if (util.isFunction(chunk)) {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (util.isFunction(encoding)) {\n cb = encoding;\n encoding = null;\n }\n if (!util.isNullOrUndefined(chunk))\n this.write(chunk, encoding);\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n if (!state.ending && !state.finished)\n endWritable(this, state, cb);\n };\n function needFinish(stream, state) {\n return (state.ending && state.length === 0 && !state.finished && !state.writing);\n }\n function prefinish(stream, state) {\n if (!state.prefinished) {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n function finishMaybe(stream, state) {\n var need = needFinish(stream, state);\n if (need) {\n if (state.pendingcb === 0) {\n prefinish(stream, state);\n state.finished = true;\n stream.emit('finish');\n } else\n prefinish(stream, state);\n }\n return need;\n }\n function endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished)\n process.nextTick(cb);\n else\n stream.once('finish', cb);\n }\n state.ended = true;\n }\n})(require('buffer').Buffer, require('process'));\n","/* */ \n(function(process) {\n module.exports = Duplex;\n var objectKeys = Object.keys || function(obj) {\n var keys = [];\n for (var key in obj)\n keys.push(key);\n return keys;\n };\n var util = require('core-util-is');\n util.inherits = require('inherits');\n var Readable = require('./_stream_readable');\n var Writable = require('./_stream_writable');\n util.inherits(Duplex, Readable);\n forEach(objectKeys(Writable.prototype), function(method) {\n if (!Duplex.prototype[method])\n Duplex.prototype[method] = Writable.prototype[method];\n });\n function Duplex(options) {\n if (!(this instanceof Duplex))\n return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n if (options && options.readable === false)\n this.readable = false;\n if (options && options.writable === false)\n this.writable = false;\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false)\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n function onend() {\n if (this.allowHalfOpen || this._writableState.ended)\n return;\n process.nextTick(this.end.bind(this));\n }\n function forEach(xs, f) {\n for (var i = 0,\n l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n }\n})(require('process'));\n","/* */ \n(function(process) {\n module.exports = Transform;\n var Duplex = require('./_stream_duplex');\n var util = require('core-util-is');\n util.inherits = require('inherits');\n util.inherits(Transform, Duplex);\n function TransformState(options, stream) {\n this.afterTransform = function(er, data) {\n return afterTransform(stream, er, data);\n };\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n }\n function afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (!cb)\n return stream.emit('error', new Error('no writecb in Transform class'));\n ts.writechunk = null;\n ts.writecb = null;\n if (!util.isNullOrUndefined(data))\n stream.push(data);\n if (cb)\n cb(er);\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n }\n function Transform(options) {\n if (!(this instanceof Transform))\n return new Transform(options);\n Duplex.call(this, options);\n this._transformState = new TransformState(options, this);\n var stream = this;\n this._readableState.needReadable = true;\n this._readableState.sync = false;\n this.once('prefinish', function() {\n if (util.isFunction(this._flush))\n this._flush(function(er) {\n done(stream, er);\n });\n else\n done(stream);\n });\n }\n Transform.prototype.push = function(chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n };\n Transform.prototype._transform = function(chunk, encoding, cb) {\n throw new Error('not implemented');\n };\n Transform.prototype._write = function(chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark)\n this._read(rs.highWaterMark);\n }\n };\n Transform.prototype._read = function(n) {\n var ts = this._transformState;\n if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n ts.needTransform = true;\n }\n };\n function done(stream, er) {\n if (er)\n return stream.emit('error', er);\n var ws = stream._writableState;\n var ts = stream._transformState;\n if (ws.length)\n throw new Error('calling transform done when ws.length != 0');\n if (ts.transforming)\n throw new Error('calling transform done when still transforming');\n return stream.push(null);\n }\n})(require('process'));\n","/* */ \n(function(Buffer) {\n function isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n }\n exports.isArray = isArray;\n function isBoolean(arg) {\n return typeof arg === 'boolean';\n }\n exports.isBoolean = isBoolean;\n function isNull(arg) {\n return arg === null;\n }\n exports.isNull = isNull;\n function isNullOrUndefined(arg) {\n return arg == null;\n }\n exports.isNullOrUndefined = isNullOrUndefined;\n function isNumber(arg) {\n return typeof arg === 'number';\n }\n exports.isNumber = isNumber;\n function isString(arg) {\n return typeof arg === 'string';\n }\n exports.isString = isString;\n function isSymbol(arg) {\n return typeof arg === 'symbol';\n }\n exports.isSymbol = isSymbol;\n function isUndefined(arg) {\n return arg === void 0;\n }\n exports.isUndefined = isUndefined;\n function isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n }\n exports.isRegExp = isRegExp;\n function isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n }\n exports.isObject = isObject;\n function isDate(d) {\n return objectToString(d) === '[object Date]';\n }\n exports.isDate = isDate;\n function isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n }\n exports.isError = isError;\n function isFunction(arg) {\n return typeof arg === 'function';\n }\n exports.isFunction = isFunction;\n function isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || typeof arg === 'undefined';\n }\n exports.isPrimitive = isPrimitive;\n exports.isBuffer = Buffer.isBuffer;\n function objectToString(o) {\n return Object.prototype.toString.call(o);\n }\n})(require('buffer').Buffer);\n","module.exports = require(\"npm:core-util-is@1.0.2/lib/util.js\");","/* */ \nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\nutil.inherits(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough))\n return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function(chunk, encoding, cb) {\n cb(null, chunk);\n};\n","/* */ \nmodule.exports = require('./lib/_stream_passthrough');\n","/* */ \nmodule.exports = Stream;\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable');\nStream.Writable = require('readable-stream/writable');\nStream.Duplex = require('readable-stream/duplex');\nStream.Transform = require('readable-stream/transform');\nStream.PassThrough = require('readable-stream/passthrough');\nStream.Stream = Stream;\nfunction Stream() {\n EE.call(this);\n}\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n source.on('data', ondata);\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n dest.on('drain', ondrain);\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n var didOnEnd = false;\n function onend() {\n if (didOnEnd)\n return;\n didOnEnd = true;\n dest.end();\n }\n function onclose() {\n if (didOnEnd)\n return;\n didOnEnd = true;\n if (typeof dest.destroy === 'function')\n dest.destroy();\n }\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er;\n }\n }\n source.on('error', onerror);\n dest.on('error', onerror);\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n dest.removeListener('close', cleanup);\n }\n source.on('end', cleanup);\n source.on('close', cleanup);\n dest.on('close', cleanup);\n dest.emit('pipe', source);\n return dest;\n};\n","module.exports = require(\"npm:stream-browserify@1.0.0/index.js\");","/* */ \nmodule.exports = System._nodeRequire ? System._nodeRequire('stream') : require('stream-browserify');","module.exports = require(\"github:jspm/nodelibs-stream@0.1.0/index\");","/* */ \nvar Stream = require('stream');\nvar util = require('util');\nvar Response = module.exports = function(res) {\n this.offset = 0;\n this.readable = true;\n};\nutil.inherits(Response, Stream);\nvar capable = {\n streaming: true,\n status2: true\n};\nfunction parseHeaders(res) {\n var lines = res.getAllResponseHeaders().split(/\\r?\\n/);\n var headers = {};\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n if (line === '')\n continue;\n var m = line.match(/^([^:]+):\\s*(.*)/);\n if (m) {\n var key = m[1].toLowerCase(),\n value = m[2];\n if (headers[key] !== undefined) {\n if (isArray(headers[key])) {\n headers[key].push(value);\n } else {\n headers[key] = [headers[key], value];\n }\n } else {\n headers[key] = value;\n }\n } else {\n headers[line] = true;\n }\n }\n return headers;\n}\nResponse.prototype.getResponse = function(xhr) {\n var respType = String(xhr.responseType).toLowerCase();\n if (respType === 'blob')\n return xhr.responseBlob || xhr.response;\n if (respType === 'arraybuffer')\n return xhr.response;\n return xhr.responseText;\n};\nResponse.prototype.getHeader = function(key) {\n return this.headers[key.toLowerCase()];\n};\nResponse.prototype.handle = function(res) {\n if (res.readyState === 2 && capable.status2) {\n try {\n this.statusCode = res.status;\n this.headers = parseHeaders(res);\n } catch (err) {\n capable.status2 = false;\n }\n if (capable.status2) {\n this.emit('ready');\n }\n } else if (capable.streaming && res.readyState === 3) {\n try {\n if (!this.statusCode) {\n this.statusCode = res.status;\n this.headers = parseHeaders(res);\n this.emit('ready');\n }\n } catch (err) {}\n try {\n this._emitData(res);\n } catch (err) {\n capable.streaming = false;\n }\n } else if (res.readyState === 4) {\n if (!this.statusCode) {\n this.statusCode = res.status;\n this.emit('ready');\n }\n this._emitData(res);\n if (res.error) {\n this.emit('error', this.getResponse(res));\n } else\n this.emit('end');\n this.emit('close');\n }\n};\nResponse.prototype._emitData = function(res) {\n var respBody = this.getResponse(res);\n if (respBody.toString().match(/ArrayBuffer/)) {\n this.emit('data', new Uint8Array(respBody, this.offset));\n this.offset = respBody.byteLength;\n return;\n }\n if (respBody.length > this.offset) {\n this.emit('data', respBody.slice(this.offset));\n this.offset = respBody.length;\n }\n};\nvar isArray = Array.isArray || function(xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","/* */ \n\"format cjs\";\n;(function () {\n\n var object = typeof exports != 'undefined' ? exports : this; // #8: web workers\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n function InvalidCharacterError(message) {\n this.message = message;\n }\n InvalidCharacterError.prototype = new Error;\n InvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n // encoder\n // [https://gist.github.com/999166] by [https://github.com/nignag]\n object.btoa || (\n object.btoa = function (input) {\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars, output = '';\n // if the next input index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n input.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = input.charCodeAt(idx += 3/4);\n if (charCode > 0xFF) {\n throw new InvalidCharacterError(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\");\n }\n block = block << 8 | charCode;\n }\n return output;\n });\n\n // decoder\n // [https://gist.github.com/1020396] by [https://github.com/atk]\n object.atob || (\n object.atob = function (input) {\n input = input.replace(/=+$/, '');\n if (input.length % 4 == 1) {\n throw new InvalidCharacterError(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n buffer = input.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n });\n\n}());\n","module.exports = require(\"npm:Base64@0.2.1/base64.js\");","/* */ \nvar Stream = require('stream');\nvar Response = require('./response');\nvar Base64 = require('Base64');\nvar inherits = require('inherits');\nvar Request = module.exports = function(xhr, params) {\n var self = this;\n self.writable = true;\n self.xhr = xhr;\n self.body = [];\n self.uri = (params.protocol || 'http:') + '//' + params.host + (params.port ? ':' + params.port : '') + (params.path || '/');\n ;\n if (typeof params.withCredentials === 'undefined') {\n params.withCredentials = true;\n }\n try {\n xhr.withCredentials = params.withCredentials;\n } catch (e) {}\n if (params.responseType)\n try {\n xhr.responseType = params.responseType;\n } catch (e) {}\n xhr.open(params.method || 'GET', self.uri, true);\n xhr.onerror = function(event) {\n self.emit('error', new Error('Network error'));\n };\n self._headers = {};\n if (params.headers) {\n var keys = objectKeys(params.headers);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!self.isSafeRequestHeader(key))\n continue;\n var value = params.headers[key];\n self.setHeader(key, value);\n }\n }\n if (params.auth) {\n this.setHeader('Authorization', 'Basic ' + Base64.btoa(params.auth));\n }\n var res = new Response;\n res.on('close', function() {\n self.emit('close');\n });\n res.on('ready', function() {\n self.emit('response', res);\n });\n res.on('error', function(err) {\n self.emit('error', err);\n });\n xhr.onreadystatechange = function() {\n if (xhr.__aborted)\n return;\n res.handle(xhr);\n };\n};\ninherits(Request, Stream);\nRequest.prototype.setHeader = function(key, value) {\n this._headers[key.toLowerCase()] = value;\n};\nRequest.prototype.getHeader = function(key) {\n return this._headers[key.toLowerCase()];\n};\nRequest.prototype.removeHeader = function(key) {\n delete this._headers[key.toLowerCase()];\n};\nRequest.prototype.write = function(s) {\n this.body.push(s);\n};\nRequest.prototype.destroy = function(s) {\n this.xhr.__aborted = true;\n this.xhr.abort();\n this.emit('close');\n};\nRequest.prototype.end = function(s) {\n if (s !== undefined)\n this.body.push(s);\n var keys = objectKeys(this._headers);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = this._headers[key];\n if (isArray(value)) {\n for (var j = 0; j < value.length; j++) {\n this.xhr.setRequestHeader(key, value[j]);\n }\n } else\n this.xhr.setRequestHeader(key, value);\n }\n if (this.body.length === 0) {\n this.xhr.send('');\n } else if (typeof this.body[0] === 'string') {\n this.xhr.send(this.body.join(''));\n } else if (isArray(this.body[0])) {\n var body = [];\n for (var i = 0; i < this.body.length; i++) {\n body.push.apply(body, this.body[i]);\n }\n this.xhr.send(body);\n } else if (/Array/.test(Object.prototype.toString.call(this.body[0]))) {\n var len = 0;\n for (var i = 0; i < this.body.length; i++) {\n len += this.body[i].length;\n }\n var body = new (this.body[0].constructor)(len);\n var k = 0;\n for (var i = 0; i < this.body.length; i++) {\n var b = this.body[i];\n for (var j = 0; j < b.length; j++) {\n body[k++] = b[j];\n }\n }\n this.xhr.send(body);\n } else if (isXHR2Compatible(this.body[0])) {\n this.xhr.send(this.body[0]);\n } else {\n var body = '';\n for (var i = 0; i < this.body.length; i++) {\n body += this.body[i].toString();\n }\n this.xhr.send(body);\n }\n};\nRequest.unsafeHeaders = [\"accept-charset\", \"accept-encoding\", \"access-control-request-headers\", \"access-control-request-method\", \"connection\", \"content-length\", \"cookie\", \"cookie2\", \"content-transfer-encoding\", \"date\", \"expect\", \"host\", \"keep-alive\", \"origin\", \"referer\", \"te\", \"trailer\", \"transfer-encoding\", \"upgrade\", \"user-agent\", \"via\"];\nRequest.prototype.isSafeRequestHeader = function(headerName) {\n if (!headerName)\n return false;\n return indexOf(Request.unsafeHeaders, headerName.toLowerCase()) === -1;\n};\nvar objectKeys = Object.keys || function(obj) {\n var keys = [];\n for (var key in obj)\n keys.push(key);\n return keys;\n};\nvar isArray = Array.isArray || function(xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\nvar indexOf = function(xs, x) {\n if (xs.indexOf)\n return xs.indexOf(x);\n for (var i = 0; i < xs.length; i++) {\n if (xs[i] === x)\n return i;\n }\n return -1;\n};\nvar isXHR2Compatible = function(obj) {\n if (typeof Blob !== 'undefined' && obj instanceof Blob)\n return true;\n if (typeof ArrayBuffer !== 'undefined' && obj instanceof ArrayBuffer)\n return true;\n if (typeof FormData !== 'undefined' && obj instanceof FormData)\n return true;\n};\n","/* */ \nif (System._nodeRequire) {\n module.exports = System._nodeRequire('http');\n} else {\n var http = module.exports;\n var EventEmitter = require('events').EventEmitter;\n var Request = require('./lib/request');\n var url = require('url');\n http.request = function(params, cb) {\n if (typeof params === 'string') {\n params = url.parse(params);\n }\n if (!params)\n params = {};\n if (!params.host && !params.port) {\n params.port = parseInt(window.location.port, 10);\n }\n if (!params.host && params.hostname) {\n params.host = params.hostname;\n }\n if (!params.protocol) {\n if (params.scheme) {\n params.protocol = params.scheme + ':';\n } else {\n params.protocol = window.location.protocol;\n }\n }\n if (!params.host) {\n params.host = window.location.hostname || window.location.host;\n }\n if (/:/.test(params.host)) {\n if (!params.port) {\n params.port = params.host.split(':')[1];\n }\n params.host = params.host.split(':')[0];\n }\n if (!params.port)\n params.port = params.protocol == 'https:' ? 443 : 80;\n var req = new Request(new xhrHttp, params);\n if (cb)\n req.on('response', cb);\n return req;\n };\n http.get = function(params, cb) {\n params.method = 'GET';\n var req = http.request(params, cb);\n req.end();\n return req;\n };\n http.Agent = function() {};\n http.Agent.defaultMaxSockets = 4;\n var xhrHttp = (function() {\n if (typeof window === 'undefined') {\n throw new Error('no window object present');\n } else if (window.XMLHttpRequest) {\n return window.XMLHttpRequest;\n } else if (window.ActiveXObject) {\n var axs = ['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.3.0', 'Microsoft.XMLHTTP'];\n for (var i = 0; i < axs.length; i++) {\n try {\n var ax = new (window.ActiveXObject)(axs[i]);\n return function() {\n if (ax) {\n var ax_ = ax;\n ax = null;\n return ax_;\n } else {\n return new (window.ActiveXObject)(axs[i]);\n }\n };\n } catch (e) {}\n }\n throw new Error('ajax not supported in this browser');\n } else {\n throw new Error('ajax not supported in this browser');\n }\n })();\n http.STATUS_CODES = {\n 100: 'Continue',\n 101: 'Switching Protocols',\n 102: 'Processing',\n 200: 'OK',\n 201: 'Created',\n 202: 'Accepted',\n 203: 'Non-Authoritative Information',\n 204: 'No Content',\n 205: 'Reset Content',\n 206: 'Partial Content',\n 207: 'Multi-Status',\n 300: 'Multiple Choices',\n 301: 'Moved Permanently',\n 302: 'Moved Temporarily',\n 303: 'See Other',\n 304: 'Not Modified',\n 305: 'Use Proxy',\n 307: 'Temporary Redirect',\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 402: 'Payment Required',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 406: 'Not Acceptable',\n 407: 'Proxy Authentication Required',\n 408: 'Request Time-out',\n 409: 'Conflict',\n 410: 'Gone',\n 411: 'Length Required',\n 412: 'Precondition Failed',\n 413: 'Request Entity Too Large',\n 414: 'Request-URI Too Large',\n 415: 'Unsupported Media Type',\n 416: 'Requested Range Not Satisfiable',\n 417: 'Expectation Failed',\n 418: 'I\\'m a teapot',\n 422: 'Unprocessable Entity',\n 423: 'Locked',\n 424: 'Failed Dependency',\n 425: 'Unordered Collection',\n 426: 'Upgrade Required',\n 428: 'Precondition Required',\n 429: 'Too Many Requests',\n 431: 'Request Header Fields Too Large',\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n 504: 'Gateway Time-out',\n 505: 'HTTP Version Not Supported',\n 506: 'Variant Also Negotiates',\n 507: 'Insufficient Storage',\n 509: 'Bandwidth Limit Exceeded',\n 510: 'Not Extended',\n 511: 'Network Authentication Required'\n };\n}\n","module.exports = require(\"github:jspm/nodelibs-http@1.7.1/index.js\");","/* */ \nvar http = require('http');\nvar https = module.exports;\nfor (var key in http) {\n if (http.hasOwnProperty(key))\n https[key] = http[key];\n}\n;\nhttps.request = function(params, cb) {\n if (!params)\n params = {};\n params.scheme = 'https';\n return http.request.call(this, params, cb);\n};\n","module.exports = require(\"npm:https-browserify@0.0.0/index.js\");","/* */ \nmodule.exports = System._nodeRequire ? System._nodeRequire('https') : require('https-browserify');","module.exports = require(\"github:jspm/nodelibs-https@0.1.0/index\");","/* */ \n(function(Buffer) {\n 'use strict';\n var http = require('http'),\n https = require('https'),\n url = require('url'),\n util = require('./util'),\n Promise = require('./promise'),\n ono = require('ono');\n module.exports = download;\n function download(u, options, redirects) {\n return new Promise(function(resolve, reject) {\n u = url.parse(u);\n redirects = redirects || [];\n redirects.push(u.href);\n get(u, options).then(function(res) {\n if (res.statusCode >= 400) {\n throw ono({status: res.statusCode}, 'HTTP ERROR %d', res.statusCode);\n } else if (res.statusCode >= 300) {\n if (redirects.length > options.http.redirects) {\n reject(ono({status: res.statusCode}, 'Error downloading %s. \\nToo many redirects: \\n %s', redirects[0], redirects.join(' \\n ')));\n } else if (!res.headers.location) {\n throw ono({status: res.statusCode}, 'HTTP %d redirect with no location header', res.statusCode);\n } else {\n util.debug('HTTP %d redirect %s -> %s', res.statusCode, u.href, res.headers.location);\n var redirectTo = url.resolve(u, res.headers.location);\n download(redirectTo, options, redirects).then(resolve, reject);\n }\n } else if (res.statusCode === 204 && !options.allow.empty) {\n throw ono({status: 204}, 'HTTP 204 (No Content)');\n } else {\n resolve(res.body || new Buffer(0));\n }\n }).catch(function(err) {\n reject(ono(err, 'Error downloading', u.href));\n });\n });\n }\n function get(u, options) {\n return new Promise(function(resolve, reject) {\n util.debug('GET', u.href);\n var protocol = u.protocol === 'https:' ? https : http;\n var req = protocol.get({\n hostname: u.hostname,\n port: u.port,\n path: u.path,\n auth: u.auth,\n headers: options.http.headers,\n withCredentials: options.http.withCredentials\n });\n if (typeof req.setTimeout === 'function') {\n req.setTimeout(options.http.timeout);\n }\n req.on('timeout', function() {\n req.abort();\n });\n req.on('error', reject);\n req.once('response', function(res) {\n res.body = new Buffer(0);\n res.on('data', function(data) {\n res.body = Buffer.concat([res.body, new Buffer(data)]);\n });\n res.on('error', reject);\n res.on('end', function() {\n resolve(res);\n });\n });\n });\n }\n})(require('buffer').Buffer);\n","/* */ \n(function(Buffer) {\n 'use strict';\n var YAML = require('./yaml'),\n util = require('./util'),\n ono = require('ono');\n module.exports = parse;\n function parse(data, path, options) {\n var parsed;\n try {\n if (options.allow.yaml) {\n util.debug('Parsing YAML file: %s', path);\n parsed = YAML.parse(data.toString());\n util.debug(' Parsed successfully');\n } else if (options.allow.json) {\n util.debug('Parsing JSON file: %s', path);\n parsed = JSON.parse(data.toString());\n util.debug(' Parsed successfully');\n } else {\n parsed = data;\n }\n } catch (e) {\n var ext = util.path.extname(path);\n if (options.allow.unknown && ['.json', '.yaml', '.yml'].indexOf(ext) === -1) {\n util.debug(' Unknown file format. Not parsed.');\n parsed = data;\n } else {\n throw ono.syntax(e, 'Error parsing \"%s\"', path);\n }\n }\n if (isEmpty(parsed) && !options.allow.empty) {\n throw ono.syntax('Error parsing \"%s\". \\nParsed value is empty', path);\n }\n return parsed;\n }\n function isEmpty(value) {\n return !value || (typeof value === 'object' && Object.keys(value).length === 0) || (typeof value === 'string' && value.trim().length === 0) || (value instanceof Buffer && value.length === 0);\n }\n})(require('buffer').Buffer);\n","/* */ \n\"format cjs\";\n(function(process) {\n (function() {\n \"use strict\";\n function lib$es6$promise$utils$$objectOrFunction(x) {\n return typeof x === 'function' || (typeof x === 'object' && x !== null);\n }\n function lib$es6$promise$utils$$isFunction(x) {\n return typeof x === 'function';\n }\n function lib$es6$promise$utils$$isMaybeThenable(x) {\n return typeof x === 'object' && x !== null;\n }\n var lib$es6$promise$utils$$_isArray;\n if (!Array.isArray) {\n lib$es6$promise$utils$$_isArray = function(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n } else {\n lib$es6$promise$utils$$_isArray = Array.isArray;\n }\n var lib$es6$promise$utils$$isArray = lib$es6$promise$utils$$_isArray;\n var lib$es6$promise$asap$$len = 0;\n var lib$es6$promise$asap$$vertxNext;\n var lib$es6$promise$asap$$customSchedulerFn;\n var lib$es6$promise$asap$$asap = function asap(callback, arg) {\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len] = callback;\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len + 1] = arg;\n lib$es6$promise$asap$$len += 2;\n if (lib$es6$promise$asap$$len === 2) {\n if (lib$es6$promise$asap$$customSchedulerFn) {\n lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush);\n } else {\n lib$es6$promise$asap$$scheduleFlush();\n }\n }\n };\n function lib$es6$promise$asap$$setScheduler(scheduleFn) {\n lib$es6$promise$asap$$customSchedulerFn = scheduleFn;\n }\n function lib$es6$promise$asap$$setAsap(asapFn) {\n lib$es6$promise$asap$$asap = asapFn;\n }\n var lib$es6$promise$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined;\n var lib$es6$promise$asap$$browserGlobal = lib$es6$promise$asap$$browserWindow || {};\n var lib$es6$promise$asap$$BrowserMutationObserver = lib$es6$promise$asap$$browserGlobal.MutationObserver || lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;\n var lib$es6$promise$asap$$isNode = typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n var lib$es6$promise$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n function lib$es6$promise$asap$$useNextTick() {\n return function() {\n process.nextTick(lib$es6$promise$asap$$flush);\n };\n }\n function lib$es6$promise$asap$$useVertxTimer() {\n return function() {\n lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush);\n };\n }\n function lib$es6$promise$asap$$useMutationObserver() {\n var iterations = 0;\n var observer = new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);\n var node = document.createTextNode('');\n observer.observe(node, {characterData: true});\n return function() {\n node.data = (iterations = ++iterations % 2);\n };\n }\n function lib$es6$promise$asap$$useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = lib$es6$promise$asap$$flush;\n return function() {\n channel.port2.postMessage(0);\n };\n }\n function lib$es6$promise$asap$$useSetTimeout() {\n return function() {\n setTimeout(lib$es6$promise$asap$$flush, 1);\n };\n }\n var lib$es6$promise$asap$$queue = new Array(1000);\n function lib$es6$promise$asap$$flush() {\n for (var i = 0; i < lib$es6$promise$asap$$len; i += 2) {\n var callback = lib$es6$promise$asap$$queue[i];\n var arg = lib$es6$promise$asap$$queue[i + 1];\n callback(arg);\n lib$es6$promise$asap$$queue[i] = undefined;\n lib$es6$promise$asap$$queue[i + 1] = undefined;\n }\n lib$es6$promise$asap$$len = 0;\n }\n function lib$es6$promise$asap$$attemptVertx() {\n try {\n var r = require;\n var vertx = r('vertx');\n lib$es6$promise$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return lib$es6$promise$asap$$useVertxTimer();\n } catch (e) {\n return lib$es6$promise$asap$$useSetTimeout();\n }\n }\n var lib$es6$promise$asap$$scheduleFlush;\n if (lib$es6$promise$asap$$isNode) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useNextTick();\n } else if (lib$es6$promise$asap$$BrowserMutationObserver) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMutationObserver();\n } else if (lib$es6$promise$asap$$isWorker) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMessageChannel();\n } else if (lib$es6$promise$asap$$browserWindow === undefined && typeof require === 'function') {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$attemptVertx();\n } else {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useSetTimeout();\n }\n function lib$es6$promise$then$$then(onFulfillment, onRejection) {\n var parent = this;\n var state = parent._state;\n if (state === lib$es6$promise$$internal$$FULFILLED && !onFulfillment || state === lib$es6$promise$$internal$$REJECTED && !onRejection) {\n return this;\n }\n var child = new this.constructor(lib$es6$promise$$internal$$noop);\n var result = parent._result;\n if (state) {\n var callback = arguments[state - 1];\n lib$es6$promise$asap$$asap(function() {\n lib$es6$promise$$internal$$invokeCallback(state, child, callback, result);\n });\n } else {\n lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection);\n }\n return child;\n }\n var lib$es6$promise$then$$default = lib$es6$promise$then$$then;\n function lib$es6$promise$promise$resolve$$resolve(object) {\n var Constructor = this;\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$resolve(promise, object);\n return promise;\n }\n var lib$es6$promise$promise$resolve$$default = lib$es6$promise$promise$resolve$$resolve;\n function lib$es6$promise$$internal$$noop() {}\n var lib$es6$promise$$internal$$PENDING = void 0;\n var lib$es6$promise$$internal$$FULFILLED = 1;\n var lib$es6$promise$$internal$$REJECTED = 2;\n var lib$es6$promise$$internal$$GET_THEN_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n function lib$es6$promise$$internal$$selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n }\n function lib$es6$promise$$internal$$cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n }\n function lib$es6$promise$$internal$$getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n lib$es6$promise$$internal$$GET_THEN_ERROR.error = error;\n return lib$es6$promise$$internal$$GET_THEN_ERROR;\n }\n }\n function lib$es6$promise$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n }\n function lib$es6$promise$$internal$$handleForeignThenable(promise, thenable, then) {\n lib$es6$promise$asap$$asap(function(promise) {\n var sealed = false;\n var error = lib$es6$promise$$internal$$tryThen(then, thenable, function(value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }, function(reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n lib$es6$promise$$internal$$reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n if (!sealed && error) {\n sealed = true;\n lib$es6$promise$$internal$$reject(promise, error);\n }\n }, promise);\n }\n function lib$es6$promise$$internal$$handleOwnThenable(promise, thenable) {\n if (thenable._state === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, thenable._result);\n } else if (thenable._state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, thenable._result);\n } else {\n lib$es6$promise$$internal$$subscribe(thenable, undefined, function(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n }\n }\n function lib$es6$promise$$internal$$handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor && then === lib$es6$promise$then$$default && constructor.resolve === lib$es6$promise$promise$resolve$$default) {\n lib$es6$promise$$internal$$handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === lib$es6$promise$$internal$$GET_THEN_ERROR) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$GET_THEN_ERROR.error);\n } else if (then === undefined) {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n } else if (lib$es6$promise$utils$$isFunction(then)) {\n lib$es6$promise$$internal$$handleForeignThenable(promise, maybeThenable, then);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n }\n }\n }\n function lib$es6$promise$$internal$$resolve(promise, value) {\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$selfFulfillment());\n } else if (lib$es6$promise$utils$$objectOrFunction(value)) {\n lib$es6$promise$$internal$$handleMaybeThenable(promise, value, lib$es6$promise$$internal$$getThen(value));\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }\n function lib$es6$promise$$internal$$publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n lib$es6$promise$$internal$$publish(promise);\n }\n function lib$es6$promise$$internal$$fulfill(promise, value) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) {\n return;\n }\n promise._result = value;\n promise._state = lib$es6$promise$$internal$$FULFILLED;\n if (promise._subscribers.length !== 0) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, promise);\n }\n }\n function lib$es6$promise$$internal$$reject(promise, reason) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) {\n return;\n }\n promise._state = lib$es6$promise$$internal$$REJECTED;\n promise._result = reason;\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection, promise);\n }\n function lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection) {\n var subscribers = parent._subscribers;\n var length = subscribers.length;\n parent._onerror = null;\n subscribers[length] = child;\n subscribers[length + lib$es6$promise$$internal$$FULFILLED] = onFulfillment;\n subscribers[length + lib$es6$promise$$internal$$REJECTED] = onRejection;\n if (length === 0 && parent._state) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, parent);\n }\n }\n function lib$es6$promise$$internal$$publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n if (subscribers.length === 0) {\n return;\n }\n var child,\n callback,\n detail = promise._result;\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n if (child) {\n lib$es6$promise$$internal$$invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n promise._subscribers.length = 0;\n }\n function lib$es6$promise$$internal$$ErrorObject() {\n this.error = null;\n }\n var lib$es6$promise$$internal$$TRY_CATCH_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n function lib$es6$promise$$internal$$tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n lib$es6$promise$$internal$$TRY_CATCH_ERROR.error = e;\n return lib$es6$promise$$internal$$TRY_CATCH_ERROR;\n }\n }\n function lib$es6$promise$$internal$$invokeCallback(settled, promise, callback, detail) {\n var hasCallback = lib$es6$promise$utils$$isFunction(callback),\n value,\n error,\n succeeded,\n failed;\n if (hasCallback) {\n value = lib$es6$promise$$internal$$tryCatch(callback, detail);\n if (value === lib$es6$promise$$internal$$TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value = null;\n } else {\n succeeded = true;\n }\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n if (promise._state !== lib$es6$promise$$internal$$PENDING) {} else if (hasCallback && succeeded) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else if (failed) {\n lib$es6$promise$$internal$$reject(promise, error);\n } else if (settled === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, value);\n } else if (settled === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n }\n }\n function lib$es6$promise$$internal$$initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function rejectPromise(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n } catch (e) {\n lib$es6$promise$$internal$$reject(promise, e);\n }\n }\n function lib$es6$promise$promise$all$$all(entries) {\n return new lib$es6$promise$enumerator$$default(this, entries).promise;\n }\n var lib$es6$promise$promise$all$$default = lib$es6$promise$promise$all$$all;\n function lib$es6$promise$promise$race$$race(entries) {\n var Constructor = this;\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n if (!lib$es6$promise$utils$$isArray(entries)) {\n lib$es6$promise$$internal$$reject(promise, new TypeError('You must pass an array to race.'));\n return promise;\n }\n var length = entries.length;\n function onFulfillment(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }\n function onRejection(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n }\n for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection);\n }\n return promise;\n }\n var lib$es6$promise$promise$race$$default = lib$es6$promise$promise$race$$race;\n function lib$es6$promise$promise$reject$$reject(reason) {\n var Constructor = this;\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$reject(promise, reason);\n return promise;\n }\n var lib$es6$promise$promise$reject$$default = lib$es6$promise$promise$reject$$reject;\n var lib$es6$promise$promise$$counter = 0;\n function lib$es6$promise$promise$$needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n }\n function lib$es6$promise$promise$$needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n }\n var lib$es6$promise$promise$$default = lib$es6$promise$promise$$Promise;\n function lib$es6$promise$promise$$Promise(resolver) {\n this._id = lib$es6$promise$promise$$counter++;\n this._state = undefined;\n this._result = undefined;\n this._subscribers = [];\n if (lib$es6$promise$$internal$$noop !== resolver) {\n typeof resolver !== 'function' && lib$es6$promise$promise$$needsResolver();\n this instanceof lib$es6$promise$promise$$Promise ? lib$es6$promise$$internal$$initializePromise(this, resolver) : lib$es6$promise$promise$$needsNew();\n }\n }\n lib$es6$promise$promise$$Promise.all = lib$es6$promise$promise$all$$default;\n lib$es6$promise$promise$$Promise.race = lib$es6$promise$promise$race$$default;\n lib$es6$promise$promise$$Promise.resolve = lib$es6$promise$promise$resolve$$default;\n lib$es6$promise$promise$$Promise.reject = lib$es6$promise$promise$reject$$default;\n lib$es6$promise$promise$$Promise._setScheduler = lib$es6$promise$asap$$setScheduler;\n lib$es6$promise$promise$$Promise._setAsap = lib$es6$promise$asap$$setAsap;\n lib$es6$promise$promise$$Promise._asap = lib$es6$promise$asap$$asap;\n lib$es6$promise$promise$$Promise.prototype = {\n constructor: lib$es6$promise$promise$$Promise,\n then: lib$es6$promise$then$$default,\n 'catch': function(onRejection) {\n return this.then(null, onRejection);\n }\n };\n var lib$es6$promise$enumerator$$default = lib$es6$promise$enumerator$$Enumerator;\n function lib$es6$promise$enumerator$$Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(lib$es6$promise$$internal$$noop);\n if (Array.isArray(input)) {\n this._input = input;\n this.length = input.length;\n this._remaining = input.length;\n this._result = new Array(this.length);\n if (this.length === 0) {\n lib$es6$promise$$internal$$fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate();\n if (this._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(this.promise, this._result);\n }\n }\n } else {\n lib$es6$promise$$internal$$reject(this.promise, this._validationError());\n }\n }\n lib$es6$promise$enumerator$$Enumerator.prototype._validationError = function() {\n return new Error('Array Methods must be provided an Array');\n };\n lib$es6$promise$enumerator$$Enumerator.prototype._enumerate = function() {\n var length = this.length;\n var input = this._input;\n for (var i = 0; this._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n if (resolve === lib$es6$promise$promise$resolve$$default) {\n var then = lib$es6$promise$$internal$$getThen(entry);\n if (then === lib$es6$promise$then$$default && entry._state !== lib$es6$promise$$internal$$PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === lib$es6$promise$promise$$default) {\n var promise = new c(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$handleMaybeThenable(promise, entry, then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function(resolve) {\n resolve(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n lib$es6$promise$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) {\n var promise = this.promise;\n if (promise._state === lib$es6$promise$$internal$$PENDING) {\n this._remaining--;\n if (state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n if (this._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(promise, this._result);\n }\n };\n lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) {\n var enumerator = this;\n lib$es6$promise$$internal$$subscribe(promise, undefined, function(value) {\n enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED, i, value);\n }, function(reason) {\n enumerator._settledAt(lib$es6$promise$$internal$$REJECTED, i, reason);\n });\n };\n function lib$es6$promise$polyfill$$polyfill() {\n var local;\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n var P = local.Promise;\n if (P && Object.prototype.toString.call(P.resolve()) === '[object Promise]' && !P.cast) {\n return;\n }\n local.Promise = lib$es6$promise$promise$$default;\n }\n var lib$es6$promise$polyfill$$default = lib$es6$promise$polyfill$$polyfill;\n var lib$es6$promise$umd$$ES6Promise = {\n 'Promise': lib$es6$promise$promise$$default,\n 'polyfill': lib$es6$promise$polyfill$$default\n };\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return lib$es6$promise$umd$$ES6Promise;\n });\n } else if (typeof module !== 'undefined' && module['exports']) {\n module['exports'] = lib$es6$promise$umd$$ES6Promise;\n } else if (typeof this !== 'undefined') {\n this['ES6Promise'] = lib$es6$promise$umd$$ES6Promise;\n }\n lib$es6$promise$polyfill$$default();\n }).call(this);\n})(require('process'));\n","module.exports = require(\"npm:es6-promise@3.1.2/dist/es6-promise.js\");","/* */ \n'use strict';\n\n/** @type {Promise} **/\nmodule.exports = typeof Promise === 'function' ? Promise : require('es6-promise').Promise;\n","/* */ \n(function(process) {\n 'use strict';\n var fs = require('fs'),\n download = require('./download'),\n parse = require('./parse'),\n util = require('./util'),\n $Ref = require('./ref'),\n Promise = require('./promise'),\n url = require('url'),\n ono = require('ono');\n module.exports = read;\n function read(path, $refs, options) {\n try {\n path = util.path.stripHash(path);\n util.debug('Reading %s', path);\n var $ref = $refs._get$Ref(path);\n if ($ref && !$ref.isExpired()) {\n util.debug(' cached from %s', $ref.pathType);\n return Promise.resolve({\n $ref: $ref,\n cached: true\n });\n }\n $ref = new $Ref($refs, path);\n return read$Ref($ref, options);\n } catch (e) {\n return Promise.reject(e);\n }\n }\n function read$Ref($ref, options) {\n try {\n var promise = options.$refs.external && (read$RefFile($ref, options) || read$RefUrl($ref, options));\n if (promise) {\n return promise.then(function(data) {\n var value = parse(data, $ref.path, options);\n $ref.setValue(value, options);\n return {\n $ref: $ref,\n cached: false\n };\n });\n } else {\n return Promise.reject(ono.syntax('Unable to resolve $ref pointer \"%s\"', $ref.path));\n }\n } catch (e) {\n return Promise.reject(e);\n }\n }\n function read$RefFile($ref, options) {\n if (process.browser || util.path.isUrl($ref.path)) {\n return;\n }\n $ref.pathType = 'fs';\n return new Promise(function(resolve, reject) {\n var file;\n try {\n file = util.path.urlToLocalPath($ref.path);\n } catch (err) {\n reject(ono.uri(err, 'Malformed URI: %s', $ref.path));\n }\n util.debug('Opening file: %s', file);\n try {\n fs.readFile(file, function(err, data) {\n if (err) {\n reject(ono(err, 'Error opening file \"%s\"', $ref.path));\n } else {\n resolve(data);\n }\n });\n } catch (err) {\n reject(ono(err, 'Error opening file \"%s\"', file));\n }\n });\n }\n function read$RefUrl($ref, options) {\n var u = url.parse($ref.path);\n if (process.browser && !u.protocol) {\n u.protocol = url.parse(location.href).protocol;\n }\n if (u.protocol === 'http:') {\n $ref.pathType = 'http';\n return download(u, options);\n } else if (u.protocol === 'https:') {\n $ref.pathType = 'https';\n return download(u, options);\n }\n }\n})(require('process'));\n","/* */ \n'use strict';\nvar Promise = require('./promise'),\n $Ref = require('./ref'),\n Pointer = require('./pointer'),\n read = require('./read'),\n util = require('./util'),\n url = require('url');\nmodule.exports = resolve;\nfunction resolve(parser, options) {\n try {\n if (!options.$refs.external) {\n return Promise.resolve();\n }\n util.debug('Resolving $ref pointers in %s', parser.$refs._basePath);\n var promises = crawl(parser.schema, parser.$refs._basePath + '#', parser.$refs, options);\n return Promise.all(promises);\n } catch (e) {\n return Promise.reject(e);\n }\n}\nfunction crawl(obj, path, $refs, options) {\n var promises = [];\n if (obj && typeof obj === 'object') {\n Object.keys(obj).forEach(function(key) {\n var keyPath = Pointer.join(path, key);\n var value = obj[key];\n if ($Ref.isExternal$Ref(value)) {\n var promise = resolve$Ref(value, keyPath, $refs, options);\n promises.push(promise);\n } else {\n promises = promises.concat(crawl(value, keyPath, $refs, options));\n }\n });\n }\n return promises;\n}\nfunction resolve$Ref($ref, path, $refs, options) {\n util.debug('Resolving $ref pointer \"%s\" at %s', $ref.$ref, path);\n var resolvedPath = url.resolve(path, $ref.$ref);\n return read(resolvedPath, $refs, options).then(function(result) {\n if (!result.cached) {\n util.debug('Resolving $ref pointers in %s', result.$ref.path);\n var promises = crawl(result.$ref.value, result.$ref.path + '#', $refs, options);\n return Promise.all(promises);\n }\n });\n}\n","/* */ \n'use strict';\nvar $Ref = require('./ref'),\n Pointer = require('./pointer'),\n util = require('./util'),\n url = require('url');\nmodule.exports = bundle;\nfunction bundle(parser, options) {\n util.debug('Bundling $ref pointers in %s', parser.$refs._basePath);\n var inventory = [];\n crawl(parser.schema, parser.$refs._basePath + '#', '#', inventory, parser.$refs, options);\n remap(inventory);\n}\nfunction crawl(obj, path, pathFromRoot, inventory, $refs, options) {\n if (obj && typeof obj === 'object') {\n var keys = Object.keys(obj);\n var defs = keys.indexOf('definitions');\n if (defs > 0) {\n keys.splice(0, 0, keys.splice(defs, 1)[0]);\n }\n keys.forEach(function(key) {\n var keyPath = Pointer.join(path, key);\n var keyPathFromRoot = Pointer.join(pathFromRoot, key);\n var value = obj[key];\n if ($Ref.is$Ref(value)) {\n if (!inventory.some(function(i) {\n return i.parent === obj && i.key === key;\n })) {\n inventory$Ref(obj, key, path, keyPathFromRoot, inventory, $refs, options);\n }\n } else {\n crawl(value, keyPath, keyPathFromRoot, inventory, $refs, options);\n }\n });\n }\n}\nfunction inventory$Ref($refParent, $refKey, path, pathFromRoot, inventory, $refs, options) {\n var $ref = $refParent[$refKey];\n var $refPath = url.resolve(path, $ref.$ref);\n var pointer = $refs._resolve($refPath, options);\n var depth = Pointer.parse(pathFromRoot).length;\n var file = util.path.stripHash(pointer.path);\n var hash = util.path.getHash(pointer.path);\n var external = file !== $refs._basePath;\n var extended = Object.keys($ref).length > 1;\n inventory.push({\n $ref: $ref,\n parent: $refParent,\n key: $refKey,\n pathFromRoot: pathFromRoot,\n depth: depth,\n file: file,\n hash: hash,\n value: pointer.value,\n circular: pointer.circular,\n extended: extended,\n external: external\n });\n crawl(pointer.value, pointer.path, pathFromRoot, inventory, $refs, options);\n}\nfunction remap(inventory) {\n inventory.sort(function(a, b) {\n if (a.file !== b.file) {\n return a.file < b.file ? -1 : +1;\n } else if (a.hash !== b.hash) {\n return a.hash < b.hash ? -1 : +1;\n } else if (a.circular !== b.circular) {\n return a.circular ? -1 : +1;\n } else if (a.extended !== b.extended) {\n return a.extended ? +1 : -1;\n } else if (a.depth !== b.depth) {\n return a.depth - b.depth;\n } else {\n return b.pathFromRoot.lastIndexOf('/definitions') - a.pathFromRoot.lastIndexOf('/definitions');\n }\n });\n var file,\n hash,\n pathFromRoot;\n inventory.forEach(function(i) {\n util.debug('Re-mapping $ref pointer \"%s\" at %s', i.$ref.$ref, i.pathFromRoot);\n if (!i.external) {\n i.$ref.$ref = i.hash;\n } else if (i.file !== file || i.hash.indexOf(hash) !== 0) {\n file = i.file;\n hash = i.hash;\n pathFromRoot = i.pathFromRoot;\n i.$ref = i.parent[i.key] = util.dereference(i.$ref, i.value);\n if (i.circular) {\n i.$ref.$ref = i.pathFromRoot;\n }\n } else {\n i.$ref.$ref = Pointer.join(pathFromRoot, Pointer.parse(i.hash));\n }\n util.debug(' new value: %s', (i.$ref && i.$ref.$ref) ? i.$ref.$ref : '[object Object]');\n });\n}\n","/* */ \n(function(process) {\n \"use strict\";\n var next = (global.process && process.nextTick) || global.setImmediate || function(f) {\n setTimeout(f, 0);\n };\n module.exports = function maybe(cb, promise) {\n if (cb) {\n promise.then(function(result) {\n next(function() {\n cb(null, result);\n });\n }, function(err) {\n next(function() {\n cb(err);\n });\n });\n return undefined;\n } else {\n return promise;\n }\n };\n})(require('process'));\n","module.exports = require(\"npm:call-me-maybe@1.0.1/index.js\");","/* */ \n'use strict';\nvar common = require('./common');\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head,\n start,\n tail,\n end,\n snippet;\n if (!this.buffer) {\n return null;\n }\n indent = indent || 4;\n maxLength = maxLength || 75;\n head = '';\n start = this.position;\n while (start > 0 && -1 === '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1))) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n tail = '';\n end = this.position;\n while (end < this.buffer.length && -1 === '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end))) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n snippet = this.buffer.slice(start, end);\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' + common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\nMark.prototype.toString = function toString(compact) {\n var snippet,\n where = '';\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n if (!compact) {\n snippet = this.getSnippet();\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n return where;\n};\nmodule.exports = Mark;\n","/* */ \n'use strict';\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\nfunction is_EOL(c) {\n return (c === 0x0A) || (c === 0x0D);\n}\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09) || (c === 0x20);\n}\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09) || (c === 0x20) || (c === 0x0A) || (c === 0x0D);\n}\nfunction is_FLOW_INDICATOR(c) {\n return 0x2C === c || 0x5B === c || 0x5D === c || 0x7B === c || 0x7D === c;\n}\nfunction fromHexCode(c) {\n var lc;\n if ((0x30 <= c) && (c <= 0x39)) {\n return c - 0x30;\n }\n lc = c | 0x20;\n if ((0x61 <= lc) && (lc <= 0x66)) {\n return lc - 0x61 + 10;\n }\n return -1;\n}\nfunction escapedHexLen(c) {\n if (c === 0x78) {\n return 2;\n }\n if (c === 0x75) {\n return 4;\n }\n if (c === 0x55) {\n return 8;\n }\n return 0;\n}\nfunction fromDecimalCode(c) {\n if ((0x30 <= c) && (c <= 0x39)) {\n return c - 0x30;\n }\n return -1;\n}\nfunction simpleEscapeSequence(c) {\n return (c === 0x30) ? '\\x00' : (c === 0x61) ? '\\x07' : (c === 0x62) ? '\\x08' : (c === 0x74) ? '\\x09' : (c === 0x09) ? '\\x09' : (c === 0x6E) ? '\\x0A' : (c === 0x76) ? '\\x0B' : (c === 0x66) ? '\\x0C' : (c === 0x72) ? '\\x0D' : (c === 0x65) ? '\\x1B' : (c === 0x20) ? ' ' : (c === 0x22) ? '\\x22' : (c === 0x2F) ? '/' : (c === 0x5C) ? '\\x5C' : (c === 0x4E) ? '\\x85' : (c === 0x5F) ? '\\xA0' : (c === 0x4C) ? '\\u2028' : (c === 0x50) ? '\\u2029' : '';\n}\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800, ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\nvar simpleEscapeCheck = new Array(256);\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\nfunction State(input, options) {\n this.input = input;\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n this.documents = [];\n}\nfunction generateError(state, message) {\n return new YAMLException(message, new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\nvar directiveHandlers = {\n YAML: function handleYamlDirective(state, name, args) {\n var match,\n major,\n minor;\n if (null !== state.version) {\n throwError(state, 'duplication of %YAML directive');\n }\n if (1 !== args.length) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n if (null === match) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n if (1 !== major) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n if (1 !== minor && 2 !== minor) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n TAG: function handleTagDirective(state, name, args) {\n var handle,\n prefix;\n if (2 !== args.length) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n handle = args[0];\n prefix = args[1];\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n state.tagMap[handle] = prefix;\n }\n};\nfunction captureSegment(state, start, end, checkJson) {\n var _position,\n _length,\n _character,\n _result;\n if (start < end) {\n _result = state.input.slice(start, end);\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(0x09 === _character || 0x20 <= _character && _character <= 0x10FFFF)) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n state.result += _result;\n }\n}\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys,\n key,\n index,\n quantity;\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n sourceKeys = Object.keys(source);\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index,\n quantity;\n keyNode = String(keyNode);\n if (null === _result) {\n _result = {};\n }\n if ('tag:yaml.org,2002:merge' === keyTag) {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json && !_hasOwnProperty.call(overridableKeys, keyNode) && _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n return _result;\n}\nfunction readLineBreak(state) {\n var ch;\n ch = state.input.charCodeAt(state.position);\n if (0x0A === ch) {\n state.position++;\n } else if (0x0D === ch) {\n state.position++;\n if (0x0A === state.input.charCodeAt(state.position)) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n state.line += 1;\n state.lineStart = state.position;\n}\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n while (0 !== ch) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n if (allowComments && 0x23 === ch) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A && ch !== 0x0D && 0 !== ch);\n }\n if (is_EOL(ch)) {\n readLineBreak(state);\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n while (0x20 === ch) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n if (-1 !== checkIndent && 0 !== lineBreaks && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n return lineBreaks;\n}\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n ch = state.input.charCodeAt(_position);\n if ((0x2D === ch || 0x2E === ch) && state.input.charCodeAt(_position + 1) === ch && state.input.charCodeAt(_position + 2) === ch) {\n _position += 3;\n ch = state.input.charCodeAt(_position);\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n return false;\n}\nfunction writeFoldedLines(state, count) {\n if (1 === count) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || 0x23 === ch || 0x26 === ch || 0x2A === ch || 0x21 === ch || 0x7C === ch || 0x3E === ch || 0x27 === ch || 0x22 === ch || 0x25 === ch || 0x40 === ch || 0x60 === ch) {\n return false;\n }\n if (0x3F === ch || 0x2D === ch) {\n following = state.input.charCodeAt(state.position + 1);\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n while (0 !== ch) {\n if (0x3A === ch) {\n following = state.input.charCodeAt(state.position + 1);\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n } else if (0x23 === ch) {\n preceding = state.input.charCodeAt(state.position - 1);\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n ch = state.input.charCodeAt(++state.position);\n }\n captureSegment(state, captureStart, captureEnd, false);\n if (state.result) {\n return true;\n }\n state.kind = _kind;\n state.result = _result;\n return false;\n}\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart,\n captureEnd;\n ch = state.input.charCodeAt(state.position);\n if (0x27 !== ch) {\n return false;\n }\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n while (0 !== (ch = state.input.charCodeAt(state.position))) {\n if (0x27 === ch) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n if (0x27 === ch) {\n captureStart = captureEnd = state.position;\n state.position++;\n } else {\n return true;\n }\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (0x22 !== ch) {\n return false;\n }\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n while (0 !== (ch = state.input.charCodeAt(state.position))) {\n if (0x22 === ch) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n } else if (0x5C === ch) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n state.result += charFromCodepoint(hexResult);\n state.position++;\n } else {\n throwError(state, 'unknown escape sequence');\n }\n captureStart = captureEnd = state.position;\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (ch === 0x5B) {\n terminator = 0x5D;\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B) {\n terminator = 0x7D;\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n if (null !== state.anchor) {\n state.anchorMap[state.anchor] = _result;\n }\n ch = state.input.charCodeAt(++state.position);\n while (0 !== ch) {\n skipSeparationSpace(state, true, nodeIndent);\n ch = state.input.charCodeAt(state.position);\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n if (0x3F === ch) {\n following = state.input.charCodeAt(state.position + 1);\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n ch = state.input.charCodeAt(state.position);\n if ((isExplicitPair || state.line === _line) && 0x3A === ch) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n skipSeparationSpace(state, true, nodeIndent);\n ch = state.input.charCodeAt(state.position);\n if (0x2C === ch) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (ch === 0x7C) {\n folding = false;\n } else if (ch === 0x3E) {\n folding = true;\n } else {\n return false;\n }\n state.kind = 'scalar';\n state.result = '';\n while (0 !== ch) {\n ch = state.input.charCodeAt(++state.position);\n if (0x2B === ch || 0x2D === ch) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (0x2B === ch) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n } else {\n break;\n }\n }\n if (is_WHITE_SPACE(ch)) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (is_WHITE_SPACE(ch));\n if (0x23 === ch) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (!is_EOL(ch) && (0 !== ch));\n }\n }\n while (0 !== ch) {\n readLineBreak(state);\n state.lineIndent = 0;\n ch = state.input.charCodeAt(state.position);\n while ((!detectedIndent || state.lineIndent < textIndent) && (0x20 === ch)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n if (state.lineIndent < textIndent) {\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (detectedIndent) {\n state.result += '\\n';\n }\n }\n break;\n }\n if (folding) {\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n state.result += common.repeat('\\n', emptyLines + 1);\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n } else if (0 === emptyLines) {\n if (detectedIndent) {\n state.result += ' ';\n }\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n } else if (detectedIndent) {\n state.result += common.repeat('\\n', emptyLines + 1);\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n while (!is_EOL(ch) && (0 !== ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n captureSegment(state, captureStart, state.position, false);\n }\n return true;\n}\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n if (null !== state.anchor) {\n state.anchorMap[state.anchor] = _result;\n }\n ch = state.input.charCodeAt(state.position);\n while (0 !== ch) {\n if (0x2D !== ch) {\n break;\n }\n following = state.input.charCodeAt(state.position + 1);\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n detected = true;\n state.position++;\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n if ((state.line === _line || state.lineIndent > nodeIndent) && (0 !== ch)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n if (null !== state.anchor) {\n state.anchorMap[state.anchor] = _result;\n }\n ch = state.input.charCodeAt(state.position);\n while (0 !== ch) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line;\n if ((0x3F === ch || 0x3A === ch) && is_WS_OR_EOL(following)) {\n if (0x3F === ch) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n } else if (atExplicitKey) {\n atExplicitKey = false;\n allowCompact = true;\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n state.position += 1;\n ch = following;\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n if (0x3A === ch) {\n ch = state.input.charCodeAt(++state.position);\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true;\n }\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true;\n }\n } else {\n break;\n }\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n if (state.lineIndent > nodeIndent && (0 !== ch)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n return detected;\n}\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (0x21 !== ch) {\n return false;\n }\n if (null !== state.tag) {\n throwError(state, 'duplication of a tag property');\n }\n ch = state.input.charCodeAt(++state.position);\n if (0x3C === ch) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n } else if (0x21 === ch) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n } else {\n tagHandle = '!';\n }\n _position = state.position;\n if (isVerbatim) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (0 !== ch && 0x3E !== ch);\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (0 !== ch && !is_WS_OR_EOL(ch)) {\n if (0x21 === ch) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n ch = state.input.charCodeAt(++state.position);\n }\n tagName = state.input.slice(_position, state.position);\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n if (isVerbatim) {\n state.tag = tagName;\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n } else if ('!' === tagHandle) {\n state.tag = '!' + tagName;\n } else if ('!!' === tagHandle) {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n return true;\n}\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (0x26 !== ch) {\n return false;\n }\n if (null !== state.anchor) {\n throwError(state, 'duplication of an anchor property');\n }\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n while (0 !== ch && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\nfunction readAlias(state) {\n var _position,\n alias,\n ch;\n ch = state.input.charCodeAt(state.position);\n if (0x2A !== ch) {\n return false;\n }\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n while (0 !== ch && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n alias = state.input.slice(_position, state.position);\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1,\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n type,\n flowIndent,\n blockIndent;\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n if (1 === indentStatus) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n if (1 === indentStatus || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n blockIndent = state.position - state.lineStart;\n if (1 === indentStatus) {\n if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n } else if (readAlias(state)) {\n hasContent = true;\n if (null !== state.tag || null !== state.anchor) {\n throwError(state, 'alias node should not have any properties');\n }\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n if (null === state.tag) {\n state.tag = '?';\n }\n }\n if (null !== state.anchor) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (0 === indentStatus) {\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n if (null !== state.tag && '!' !== state.tag) {\n if ('?' === state.tag) {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n if (type.resolve(state.result)) {\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (null !== state.anchor) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap, state.tag)) {\n type = state.typeMap[state.tag];\n if (null !== state.result && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n if (!type.resolve(state.result)) {\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (null !== state.anchor) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n return null !== state.tag || null !== state.anchor || hasContent;\n}\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n while (0 !== (ch = state.input.charCodeAt(state.position))) {\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n if (state.lineIndent > 0 || 0x25 !== ch) {\n break;\n }\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n while (0 !== ch && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n while (0 !== ch) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n if (0x23 === ch) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (0 !== ch && !is_EOL(ch));\n break;\n }\n if (is_EOL(ch)) {\n break;\n }\n _position = state.position;\n while (0 !== ch && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n if (0 !== ch) {\n readLineBreak(state);\n }\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n skipSeparationSpace(state, true, -1);\n if (0 === state.lineIndent && 0x2D === state.input.charCodeAt(state.position) && 0x2D === state.input.charCodeAt(state.position + 1) && 0x2D === state.input.charCodeAt(state.position + 2)) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n state.documents.push(state.result);\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n if (0x2E === state.input.charCodeAt(state.position)) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n if (input.length !== 0) {\n if (0x0A !== input.charCodeAt(input.length - 1) && 0x0D !== input.charCodeAt(input.length - 1)) {\n input += '\\n';\n }\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n var state = new State(input, options);\n state.input += '\\0';\n while (0x20 === state.input.charCodeAt(state.position)) {\n state.lineIndent += 1;\n state.position += 1;\n }\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n return state.documents;\n}\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options),\n index,\n length;\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n if (0 === documents.length) {\n return undefined;\n } else if (1 === documents.length) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({schema: DEFAULT_SAFE_SCHEMA}, options));\n}\nfunction safeLoad(input, options) {\n return load(input, common.extend({schema: DEFAULT_SAFE_SCHEMA}, options));\n}\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","/* */ \n'use strict';\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar CHAR_TAB = 0x09;\nvar CHAR_LINE_FEED = 0x0A;\nvar CHAR_CARRIAGE_RETURN = 0x0D;\nvar CHAR_SPACE = 0x20;\nvar CHAR_EXCLAMATION = 0x21;\nvar CHAR_DOUBLE_QUOTE = 0x22;\nvar CHAR_SHARP = 0x23;\nvar CHAR_PERCENT = 0x25;\nvar CHAR_AMPERSAND = 0x26;\nvar CHAR_SINGLE_QUOTE = 0x27;\nvar CHAR_ASTERISK = 0x2A;\nvar CHAR_COMMA = 0x2C;\nvar CHAR_MINUS = 0x2D;\nvar CHAR_COLON = 0x3A;\nvar CHAR_GREATER_THAN = 0x3E;\nvar CHAR_QUESTION = 0x3F;\nvar CHAR_COMMERCIAL_AT = 0x40;\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B;\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D;\nvar CHAR_GRAVE_ACCENT = 0x60;\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B;\nvar CHAR_VERTICAL_LINE = 0x7C;\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D;\nvar ESCAPE_SEQUENCES = {};\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\nvar DEPRECATED_BOOLEANS_SYNTAX = ['y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'];\nfunction compileStyleMap(schema, map) {\n var result,\n keys,\n index,\n length,\n tag,\n style,\n type;\n if (null === map) {\n return {};\n }\n result = {};\n keys = Object.keys(map);\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n if ('!!' === tag.slice(0, 2)) {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap[tag];\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n result[tag] = style;\n }\n return result;\n}\nfunction encodeHex(character) {\n var string,\n handle,\n length;\n string = character.toString(16).toUpperCase();\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n this.tag = null;\n this.result = '';\n this.duplicates = [];\n this.usedDuplicates = null;\n}\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n if (line.length && line !== '\\n') {\n result += ind;\n }\n result += line;\n }\n return result;\n}\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\nfunction testImplicitResolving(state, str) {\n var index,\n length,\n type;\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n if (type.resolve(str)) {\n return true;\n }\n }\n return false;\n}\nfunction StringBuilder(source) {\n this.source = source;\n this.result = '';\n this.checkpoint = 0;\n}\nStringBuilder.prototype.takeUpTo = function(position) {\n var er;\n if (position < this.checkpoint) {\n er = new Error('position should be > checkpoint');\n er.position = position;\n er.checkpoint = this.checkpoint;\n throw er;\n }\n this.result += this.source.slice(this.checkpoint, position);\n this.checkpoint = position;\n return this;\n};\nStringBuilder.prototype.escapeChar = function() {\n var character,\n esc;\n character = this.source.charCodeAt(this.checkpoint);\n esc = ESCAPE_SEQUENCES[character] || encodeHex(character);\n this.result += esc;\n this.checkpoint += 1;\n return this;\n};\nStringBuilder.prototype.finish = function() {\n if (this.source.length > this.checkpoint) {\n this.takeUpTo(this.source.length);\n }\n};\nfunction writeScalar(state, object, level, iskey) {\n var simple,\n first,\n spaceWrap,\n folded,\n literal,\n single,\n double,\n sawLineFeed,\n linePosition,\n longestLine,\n indent,\n max,\n character,\n position,\n escapeSeq,\n hexEsc,\n previous,\n lineLength,\n modifier,\n trailingLineBreaks,\n result;\n if (0 === object.length) {\n state.dump = \"''\";\n return;\n }\n if (-1 !== DEPRECATED_BOOLEANS_SYNTAX.indexOf(object)) {\n state.dump = \"'\" + object + \"'\";\n return;\n }\n simple = true;\n first = object.length ? object.charCodeAt(0) : 0;\n spaceWrap = (CHAR_SPACE === first || CHAR_SPACE === object.charCodeAt(object.length - 1));\n if (CHAR_MINUS === first || CHAR_QUESTION === first || CHAR_COMMERCIAL_AT === first || CHAR_GRAVE_ACCENT === first) {\n simple = false;\n }\n if (spaceWrap || (state.flowLevel > -1 && state.flowLevel <= level)) {\n if (spaceWrap) {\n simple = false;\n }\n folded = false;\n literal = false;\n } else {\n folded = !iskey;\n literal = !iskey;\n }\n single = true;\n double = new StringBuilder(object);\n sawLineFeed = false;\n linePosition = 0;\n longestLine = 0;\n indent = state.indent * level;\n max = state.lineWidth;\n if (max === -1) {\n max = 9007199254740991;\n }\n if (indent < 40) {\n max -= indent;\n } else {\n max = 40;\n }\n for (position = 0; position < object.length; position++) {\n character = object.charCodeAt(position);\n if (simple) {\n if (!simpleChar(character)) {\n simple = false;\n } else {\n continue;\n }\n }\n if (single && character === CHAR_SINGLE_QUOTE) {\n single = false;\n }\n escapeSeq = ESCAPE_SEQUENCES[character];\n hexEsc = needsHexEscape(character);\n if (!escapeSeq && !hexEsc) {\n continue;\n }\n if (character !== CHAR_LINE_FEED && character !== CHAR_DOUBLE_QUOTE && character !== CHAR_SINGLE_QUOTE) {\n folded = false;\n literal = false;\n } else if (character === CHAR_LINE_FEED) {\n sawLineFeed = true;\n single = false;\n if (position > 0) {\n previous = object.charCodeAt(position - 1);\n if (previous === CHAR_SPACE) {\n literal = false;\n folded = false;\n }\n }\n if (folded) {\n lineLength = position - linePosition;\n linePosition = position;\n if (lineLength > longestLine) {\n longestLine = lineLength;\n }\n }\n }\n if (character !== CHAR_DOUBLE_QUOTE) {\n single = false;\n }\n double.takeUpTo(position);\n double.escapeChar();\n }\n if (simple && testImplicitResolving(state, object)) {\n simple = false;\n }\n modifier = '';\n if (folded || literal) {\n trailingLineBreaks = 0;\n if (object.charCodeAt(object.length - 1) === CHAR_LINE_FEED) {\n trailingLineBreaks += 1;\n if (object.charCodeAt(object.length - 2) === CHAR_LINE_FEED) {\n trailingLineBreaks += 1;\n }\n }\n if (trailingLineBreaks === 0) {\n modifier = '-';\n } else if (trailingLineBreaks === 2) {\n modifier = '+';\n }\n }\n if (literal && longestLine < max || state.tag !== null) {\n folded = false;\n }\n if (!sawLineFeed) {\n literal = false;\n }\n if (simple) {\n state.dump = object;\n } else if (single) {\n state.dump = '\\'' + object + '\\'';\n } else if (folded) {\n result = fold(object, max);\n state.dump = '>' + modifier + '\\n' + indentString(result, indent);\n } else if (literal) {\n if (!modifier) {\n object = object.replace(/\\n$/, '');\n }\n state.dump = '|' + modifier + '\\n' + indentString(object, indent);\n } else if (double) {\n double.finish();\n state.dump = '\"' + double.result + '\"';\n } else {\n throw new Error('Failed to dump scalar value');\n }\n return;\n}\nfunction fold(object, max) {\n var result = '',\n position = 0,\n length = object.length,\n trailing = /\\n+$/.exec(object),\n newLine;\n if (trailing) {\n length = trailing.index + 1;\n }\n while (position < length) {\n newLine = object.indexOf('\\n', position);\n if (newLine > length || newLine === -1) {\n if (result) {\n result += '\\n\\n';\n }\n result += foldLine(object.slice(position, length), max);\n position = length;\n } else {\n if (result) {\n result += '\\n\\n';\n }\n result += foldLine(object.slice(position, newLine), max);\n position = newLine + 1;\n }\n }\n if (trailing && trailing[0] !== '\\n') {\n result += trailing[0];\n }\n return result;\n}\nfunction foldLine(line, max) {\n if (line === '') {\n return line;\n }\n var foldRe = /[^\\s] [^\\s]/g,\n result = '',\n prevMatch = 0,\n foldStart = 0,\n match = foldRe.exec(line),\n index,\n foldEnd,\n folded;\n while (match) {\n index = match.index;\n if (index - foldStart > max) {\n if (prevMatch !== foldStart) {\n foldEnd = prevMatch;\n } else {\n foldEnd = index;\n }\n if (result) {\n result += '\\n';\n }\n folded = line.slice(foldStart, foldEnd);\n result += folded;\n foldStart = foldEnd + 1;\n }\n prevMatch = index + 1;\n match = foldRe.exec(line);\n }\n if (result) {\n result += '\\n';\n }\n if (foldStart !== prevMatch && line.length - foldStart > max) {\n result += line.slice(foldStart, prevMatch) + '\\n' + line.slice(prevMatch + 1);\n } else {\n result += line.slice(foldStart);\n }\n return result;\n}\nfunction simpleChar(character) {\n return CHAR_TAB !== character && CHAR_LINE_FEED !== character && CHAR_CARRIAGE_RETURN !== character && CHAR_COMMA !== character && CHAR_LEFT_SQUARE_BRACKET !== character && CHAR_RIGHT_SQUARE_BRACKET !== character && CHAR_LEFT_CURLY_BRACKET !== character && CHAR_RIGHT_CURLY_BRACKET !== character && CHAR_SHARP !== character && CHAR_AMPERSAND !== character && CHAR_ASTERISK !== character && CHAR_EXCLAMATION !== character && CHAR_VERTICAL_LINE !== character && CHAR_GREATER_THAN !== character && CHAR_SINGLE_QUOTE !== character && CHAR_DOUBLE_QUOTE !== character && CHAR_PERCENT !== character && CHAR_COLON !== character && !ESCAPE_SEQUENCES[character] && !needsHexEscape(character);\n}\nfunction needsHexEscape(character) {\n return !((0x00020 <= character && character <= 0x00007E) || (0x00085 === character) || (0x000A0 <= character && character <= 0x00D7FF) || (0x0E000 <= character && character <= 0x00FFFD) || (0x10000 <= character && character <= 0x10FFFF));\n}\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n for (index = 0, length = object.length; index < length; index += 1) {\n if (writeNode(state, level, object[index], false, false)) {\n if (0 !== index) {\n _result += ', ';\n }\n _result += state.dump;\n }\n }\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n for (index = 0, length = object.length; index < length; index += 1) {\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || 0 !== index) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n state.tag = _tag;\n state.dump = _result || '[]';\n}\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n if (0 !== index) {\n pairBuffer += ', ';\n }\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n if (!writeNode(state, level, objectKey, false, false)) {\n continue;\n }\n if (state.dump.length > 1024) {\n pairBuffer += '? ';\n }\n pairBuffer += state.dump + ': ';\n if (!writeNode(state, level, objectValue, false, false)) {\n continue;\n }\n pairBuffer += state.dump;\n _result += pairBuffer;\n }\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n if (state.sortKeys === true) {\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n if (!compact || 0 !== index) {\n pairBuffer += generateNextLine(state, level);\n }\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue;\n }\n explicitPair = (null !== state.tag && '?' !== state.tag) || (state.dump && state.dump.length > 1024);\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n pairBuffer += state.dump;\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue;\n }\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n pairBuffer += state.dump;\n _result += pairBuffer;\n }\n state.tag = _tag;\n state.dump = _result || '{}';\n}\nfunction detectType(state, object, explicit) {\n var _result,\n typeList,\n index,\n length,\n type,\n style;\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n if ((type.instanceOf || type.predicate) && (!type.instanceOf || (('object' === typeof object) && (object instanceof type.instanceOf))) && (!type.predicate || type.predicate(object))) {\n state.tag = explicit ? type.tag : '?';\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n if ('[object Function]' === _toString.call(type.represent)) {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n state.dump = _result;\n }\n return true;\n }\n }\n return false;\n}\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n var type = _toString.call(state.dump);\n if (block) {\n block = (0 > state.flowLevel || state.flowLevel > level);\n }\n var objectOrArray = '[object Object]' === type || '[object Array]' === type,\n duplicateIndex,\n duplicate;\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n if ((null !== state.tag && '?' !== state.tag) || duplicate || (2 !== state.indent && level > 0)) {\n compact = false;\n }\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if ('[object Object]' === type) {\n if (block && (0 !== Object.keys(state.dump).length)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if ('[object Array]' === type) {\n if (block && (0 !== state.dump.length)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if ('[object String]' === type) {\n if ('?' !== state.tag) {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) {\n return false;\n }\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n if (null !== state.tag && '?' !== state.tag) {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n return true;\n}\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n inspectNode(object, objects, duplicatesIndexes);\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n if (null !== object && 'object' === typeof object) {\n index = objects.indexOf(object);\n if (-1 !== index) {\n if (-1 === duplicatesIndexes.indexOf(index)) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\nfunction dump(input, options) {\n options = options || {};\n var state = new State(options);\n if (!state.noRefs) {\n getDuplicateReferences(input, state);\n }\n if (writeNode(state, 0, input, true, true)) {\n return state.dump + '\\n';\n }\n return '';\n}\nfunction safeDump(input, options) {\n return dump(input, common.extend({schema: DEFAULT_SAFE_SCHEMA}, options));\n}\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","/* */ \n'use strict';\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\nfunction compileList(schema, name, result) {\n var exclude = [];\n schema.include.forEach(function(includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n schema[name].forEach(function(currentType) {\n result.forEach(function(previousType, previousIndex) {\n if (previousType.tag === currentType.tag) {\n exclude.push(previousIndex);\n }\n });\n result.push(currentType);\n });\n return result.filter(function(type, index) {\n return -1 === exclude.indexOf(index);\n });\n}\nfunction compileMap() {\n var result = {},\n index,\n length;\n function collectType(type) {\n result[type.tag] = type;\n }\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n this.implicit.forEach(function(type) {\n if (type.loadKind && 'scalar' !== type.loadKind) {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\nSchema.DEFAULT = null;\nSchema.create = function createSchema() {\n var schemas,\n types;\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n if (!schemas.every(function(schema) {\n return schema instanceof Schema;\n })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n if (!types.every(function(type) {\n return type instanceof Type;\n })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\nmodule.exports = Schema;\n","/* */ \n'use strict';\nvar Type = require('../type');\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function(data) {\n return null !== data ? data : '';\n }\n});\n","/* */ \n'use strict';\nvar Type = require('../type');\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function(data) {\n return null !== data ? data : [];\n }\n});\n","/* */ \n'use strict';\nvar Type = require('../type');\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function(data) {\n return null !== data ? data : {};\n }\n});\n","/* */ \n'use strict';\nvar Schema = require('../schema');\nmodule.exports = new Schema({explicit: [require('../type/str'), require('../type/seq'), require('../type/map')]});\n","/* */ \n'use strict';\nvar Type = require('../type');\nfunction resolveYamlNull(data) {\n if (null === data) {\n return true;\n }\n var max = data.length;\n return (max === 1 && data === '~') || (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\nfunction constructYamlNull() {\n return null;\n}\nfunction isNull(object) {\n return null === object;\n}\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function() {\n return '~';\n },\n lowercase: function() {\n return 'null';\n },\n uppercase: function() {\n return 'NULL';\n },\n camelcase: function() {\n return 'Null';\n }\n },\n defaultStyle: 'lowercase'\n});\n","/* */ \n'use strict';\nvar Type = require('../type');\nfunction resolveYamlBoolean(data) {\n if (null === data) {\n return false;\n }\n var max = data.length;\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\nfunction constructYamlBoolean(data) {\n return data === 'true' || data === 'True' || data === 'TRUE';\n}\nfunction isBoolean(object) {\n return '[object Boolean]' === Object.prototype.toString.call(object);\n}\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function(object) {\n return object ? 'true' : 'false';\n },\n uppercase: function(object) {\n return object ? 'TRUE' : 'FALSE';\n },\n camelcase: function(object) {\n return object ? 'True' : 'False';\n }\n },\n defaultStyle: 'lowercase'\n});\n","/* */ \n'use strict';\nvar common = require('../common');\nvar Type = require('../type');\nfunction isHexCode(c) {\n return ((0x30 <= c) && (c <= 0x39)) || ((0x41 <= c) && (c <= 0x46)) || ((0x61 <= c) && (c <= 0x66));\n}\nfunction isOctCode(c) {\n return ((0x30 <= c) && (c <= 0x37));\n}\nfunction isDecCode(c) {\n return ((0x30 <= c) && (c <= 0x39));\n}\nfunction resolveYamlInteger(data) {\n if (null === data) {\n return false;\n }\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n if (!max) {\n return false;\n }\n ch = data[index];\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n if (ch === '0') {\n if (index + 1 === max) {\n return true;\n }\n ch = data[++index];\n if (ch === 'b') {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') {\n continue;\n }\n if (ch !== '0' && ch !== '1') {\n return false;\n }\n hasDigits = true;\n }\n return hasDigits;\n }\n if (ch === 'x') {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') {\n continue;\n }\n if (!isHexCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n return hasDigits;\n }\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') {\n continue;\n }\n if (!isOctCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n return hasDigits;\n }\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') {\n continue;\n }\n if (ch === ':') {\n break;\n }\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n if (!hasDigits) {\n return false;\n }\n if (ch !== ':') {\n return true;\n }\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\nfunction constructYamlInteger(data) {\n var value = data,\n sign = 1,\n ch,\n base,\n digits = [];\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n ch = value[0];\n if (ch === '-' || ch === '+') {\n if (ch === '-') {\n sign = -1;\n }\n value = value.slice(1);\n ch = value[0];\n }\n if ('0' === value) {\n return 0;\n }\n if (ch === '0') {\n if (value[1] === 'b') {\n return sign * parseInt(value.slice(2), 2);\n }\n if (value[1] === 'x') {\n return sign * parseInt(value, 16);\n }\n return sign * parseInt(value, 8);\n }\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function(v) {\n digits.unshift(parseInt(v, 10));\n });\n value = 0;\n base = 1;\n digits.forEach(function(d) {\n value += (d * base);\n base *= 60;\n });\n return sign * value;\n }\n return sign * parseInt(value, 10);\n}\nfunction isInteger(object) {\n return ('[object Number]' === Object.prototype.toString.call(object)) && (0 === object % 1 && !common.isNegativeZero(object));\n}\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function(object) {\n return '0b' + object.toString(2);\n },\n octal: function(object) {\n return '0' + object.toString(8);\n },\n decimal: function(object) {\n return object.toString(10);\n },\n hexadecimal: function(object) {\n return '0x' + object.toString(16).toUpperCase();\n }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [2, 'bin'],\n octal: [8, 'oct'],\n decimal: [10, 'dec'],\n hexadecimal: [16, 'hex']\n }\n});\n","/* */ \n'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (null === subject);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (null !== subject);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) {\n return sequence;\n } else if (isNothing(sequence)) {\n return [];\n }\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (0 === number) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","/* */ \n'use strict';\nvar common = require('../common');\nvar Type = require('../type');\nvar YAML_FLOAT_PATTERN = new RegExp('^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' + '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' + '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' + '|[-+]?\\\\.(?:inf|Inf|INF)' + '|\\\\.(?:nan|NaN|NAN))$');\nfunction resolveYamlFloat(data) {\n if (null === data) {\n return false;\n }\n if (!YAML_FLOAT_PATTERN.test(data)) {\n return false;\n }\n return true;\n}\nfunction constructYamlFloat(data) {\n var value,\n sign,\n base,\n digits;\n value = data.replace(/_/g, '').toLowerCase();\n sign = '-' === value[0] ? -1 : 1;\n digits = [];\n if (0 <= '+-'.indexOf(value[0])) {\n value = value.slice(1);\n }\n if ('.inf' === value) {\n return (1 === sign) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n } else if ('.nan' === value) {\n return NaN;\n } else if (0 <= value.indexOf(':')) {\n value.split(':').forEach(function(v) {\n digits.unshift(parseFloat(v, 10));\n });\n value = 0.0;\n base = 1;\n digits.forEach(function(d) {\n value += d * base;\n base *= 60;\n });\n return sign * value;\n }\n return sign * parseFloat(value, 10);\n}\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\nfunction representYamlFloat(object, style) {\n var res;\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase':\n return '.nan';\n case 'uppercase':\n return '.NAN';\n case 'camelcase':\n return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase':\n return '.inf';\n case 'uppercase':\n return '.INF';\n case 'camelcase':\n return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase':\n return '-.inf';\n case 'uppercase':\n return '-.INF';\n case 'camelcase':\n return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n res = object.toString(10);\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\nfunction isFloat(object) {\n return ('[object Number]' === Object.prototype.toString.call(object)) && (0 !== object % 1 || common.isNegativeZero(object));\n}\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","/* */ \n'use strict';\nvar Schema = require('../schema');\nmodule.exports = new Schema({\n include: [require('./failsafe')],\n implicit: [require('../type/null'), require('../type/bool'), require('../type/int'), require('../type/float')]\n});\n","/* */ \n'use strict';\nvar Schema = require('../schema');\nmodule.exports = new Schema({include: [require('./json')]});\n","/* */ \n'use strict';\nvar Type = require('../type');\nvar YAML_TIMESTAMP_REGEXP = new RegExp('^([0-9][0-9][0-9][0-9])' + '-([0-9][0-9]?)' + '-([0-9][0-9]?)' + '(?:(?:[Tt]|[ \\\\t]+)' + '([0-9][0-9]?)' + ':([0-9][0-9])' + ':([0-9][0-9])' + '(?:\\\\.([0-9]*))?' + '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + '(?::([0-9][0-9]))?))?)?$');\nfunction resolveYamlTimestamp(data) {\n if (null === data) {\n return false;\n }\n if (YAML_TIMESTAMP_REGEXP.exec(data) === null) {\n return false;\n }\n return true;\n}\nfunction constructYamlTimestamp(data) {\n var match,\n year,\n month,\n day,\n hour,\n minute,\n second,\n fraction = 0,\n delta = null,\n tz_hour,\n tz_minute,\n date;\n match = YAML_TIMESTAMP_REGEXP.exec(data);\n if (null === match) {\n throw new Error('Date resolve error');\n }\n year = +(match[1]);\n month = +(match[2]) - 1;\n day = +(match[3]);\n if (!match[4]) {\n return new Date(Date.UTC(year, month, day));\n }\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) {\n fraction += '0';\n }\n fraction = +fraction;\n }\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000;\n if ('-' === match[9]) {\n delta = -delta;\n }\n }\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n if (delta) {\n date.setTime(date.getTime() - delta);\n }\n return date;\n}\nfunction representYamlTimestamp(object) {\n return object.toISOString();\n}\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","/* */ \n'use strict';\nvar Type = require('../type');\nfunction resolveYamlMerge(data) {\n return '<<' === data || null === data;\n}\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","/* */ \n(function(Buffer) {\n 'use strict';\n var NodeBuffer = require('@empty').Buffer;\n var Type = require('../type');\n var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n function resolveYamlBinary(data) {\n if (null === data) {\n return false;\n }\n var code,\n idx,\n bitlen = 0,\n max = data.length,\n map = BASE64_MAP;\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n if (code > 64) {\n continue;\n }\n if (code < 0) {\n return false;\n }\n bitlen += 6;\n }\n return (bitlen % 8) === 0;\n }\n function constructYamlBinary(data) {\n var idx,\n tailbits,\n input = data.replace(/[\\r\\n=]/g, ''),\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n tailbits = (max % 4) * 6;\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n if (NodeBuffer) {\n return new NodeBuffer(result);\n }\n return result;\n }\n function representYamlBinary(object) {\n var result = '',\n bits = 0,\n idx,\n tail,\n max = object.length,\n map = BASE64_MAP;\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n bits = (bits << 8) + object[idx];\n }\n tail = max % 3;\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n return result;\n }\n function isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n }\n module.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n });\n})(require('@empty').Buffer);\n","/* */ \n'use strict';\nvar Type = require('../type');\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\nfunction resolveYamlOmap(data) {\n if (null === data) {\n return true;\n }\n var objectKeys = [],\n index,\n length,\n pair,\n pairKey,\n pairHasKey,\n object = data;\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n if ('[object Object]' !== _toString.call(pair)) {\n return false;\n }\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) {\n pairHasKey = true;\n } else {\n return false;\n }\n }\n }\n if (!pairHasKey) {\n return false;\n }\n if (-1 === objectKeys.indexOf(pairKey)) {\n objectKeys.push(pairKey);\n } else {\n return false;\n }\n }\n return true;\n}\nfunction constructYamlOmap(data) {\n return null !== data ? data : [];\n}\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","/* */ \n'use strict';\nvar Type = require('../type');\nvar _toString = Object.prototype.toString;\nfunction resolveYamlPairs(data) {\n if (null === data) {\n return true;\n }\n var index,\n length,\n pair,\n keys,\n result,\n object = data;\n result = new Array(object.length);\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n if ('[object Object]' !== _toString.call(pair)) {\n return false;\n }\n keys = Object.keys(pair);\n if (1 !== keys.length) {\n return false;\n }\n result[index] = [keys[0], pair[keys[0]]];\n }\n return true;\n}\nfunction constructYamlPairs(data) {\n if (null === data) {\n return [];\n }\n var index,\n length,\n pair,\n keys,\n result,\n object = data;\n result = new Array(object.length);\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n keys = Object.keys(pair);\n result[index] = [keys[0], pair[keys[0]]];\n }\n return result;\n}\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","/* */ \n'use strict';\nvar Type = require('../type');\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction resolveYamlSet(data) {\n if (null === data) {\n return true;\n }\n var key,\n object = data;\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (null !== object[key]) {\n return false;\n }\n }\n }\n return true;\n}\nfunction constructYamlSet(data) {\n return null !== data ? data : {};\n}\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","/* */ \n'use strict';\nvar Schema = require('../schema');\nmodule.exports = new Schema({\n include: [require('./core')],\n implicit: [require('../type/timestamp'), require('../type/merge')],\n explicit: [require('../type/binary'), require('../type/omap'), require('../type/pairs'), require('../type/set')]\n});\n","/* */ \n'use strict';\nvar Type = require('../../type');\nfunction resolveJavascriptUndefined() {\n return true;\n}\nfunction constructJavascriptUndefined() {\n return undefined;\n}\nfunction representJavascriptUndefined() {\n return '';\n}\nfunction isUndefined(object) {\n return 'undefined' === typeof object;\n}\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","/* */ \n'use strict';\nvar Type = require('../../type');\nfunction resolveJavascriptRegExp(data) {\n if (null === data) {\n return false;\n }\n if (0 === data.length) {\n return false;\n }\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n if ('/' === regexp[0]) {\n if (tail) {\n modifiers = tail[1];\n }\n if (modifiers.length > 3) {\n return false;\n }\n if (regexp[regexp.length - modifiers.length - 1] !== '/') {\n return false;\n }\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n try {\n return true;\n } catch (error) {\n return false;\n }\n}\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n if ('/' === regexp[0]) {\n if (tail) {\n modifiers = tail[1];\n }\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n return new RegExp(regexp, modifiers);\n}\nfunction representJavascriptRegExp(object) {\n var result = '/' + object.source + '/';\n if (object.global) {\n result += 'g';\n }\n if (object.multiline) {\n result += 'm';\n }\n if (object.ignoreCase) {\n result += 'i';\n }\n return result;\n}\nfunction isRegExp(object) {\n return '[object RegExp]' === Object.prototype.toString.call(object);\n}\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","/* */ \n'use strict';\nvar YAMLException = require('./exception');\nvar TYPE_CONSTRUCTOR_OPTIONS = ['kind', 'resolve', 'construct', 'instanceOf', 'predicate', 'represent', 'defaultStyle', 'styleAliases'];\nvar YAML_NODE_KINDS = ['scalar', 'sequence', 'mapping'];\nfunction compileStyleAliases(map) {\n var result = {};\n if (null !== map) {\n Object.keys(map).forEach(function(style) {\n map[style].forEach(function(alias) {\n result[String(alias)] = style;\n });\n });\n }\n return result;\n}\nfunction Type(tag, options) {\n options = options || {};\n Object.keys(options).forEach(function(name) {\n if (-1 === TYPE_CONSTRUCTOR_OPTIONS.indexOf(name)) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function() {\n return true;\n };\n this.construct = options['construct'] || function(data) {\n return data;\n };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n if (-1 === YAML_NODE_KINDS.indexOf(this.kind)) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\nmodule.exports = Type;\n","/* */ \n'use strict';\nvar esprima;\ntry {\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n if (typeof window !== 'undefined') {\n esprima = window.esprima;\n }\n}\nvar Type = require('../../type');\nfunction resolveJavascriptFunction(data) {\n if (null === data) {\n return false;\n }\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, {range: true});\n if ('Program' !== ast.type || 1 !== ast.body.length || 'ExpressionStatement' !== ast.body[0].type || 'FunctionExpression' !== ast.body[0].expression.type) {\n return false;\n }\n return true;\n } catch (err) {\n return false;\n }\n}\nfunction constructJavascriptFunction(data) {\n var source = '(' + data + ')',\n ast = esprima.parse(source, {range: true}),\n params = [],\n body;\n if ('Program' !== ast.type || 1 !== ast.body.length || 'ExpressionStatement' !== ast.body[0].type || 'FunctionExpression' !== ast.body[0].expression.type) {\n throw new Error('Failed to resolve function');\n }\n ast.body[0].expression.params.forEach(function(param) {\n params.push(param.name);\n });\n body = ast.body[0].expression.body.range;\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\nfunction representJavascriptFunction(object) {\n return object.toString();\n}\nfunction isFunction(object) {\n return '[object Function]' === Object.prototype.toString.call(object);\n}\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","/* */ \n'use strict';\nvar Schema = require('../schema');\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [require('./default_safe')],\n explicit: [require('../type/js/undefined'), require('../type/js/regexp'), require('../type/js/function')]\n});\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","/* */ \n'use strict';\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\nfunction deprecated(name) {\n return function() {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","/* */ \n'use strict';\nvar yaml = require('./lib/js-yaml');\nmodule.exports = yaml;\n","module.exports = require(\"npm:js-yaml@3.5.2/index\");","/* eslint lines-around-comment: [2, {beforeBlockComment: false}] */\n'use strict';\n\nvar yaml = require('js-yaml'),\n ono = require('ono');\n\n/**\n * Simple YAML parsing functions, similar to {@link JSON.parse} and {@link JSON.stringify}\n */\nmodule.exports = {\n /**\n * Parses a YAML string and returns the value.\n *\n * @param {string} text - The YAML string to be parsed\n * @param {function} [reviver] - Not currently supported. Provided for consistency with {@link JSON.parse}\n * @returns {*}\n */\n parse: function yamlParse(text, reviver) {\n try {\n return yaml.safeLoad(text);\n }\n catch (e) {\n if (e instanceof Error) {\n throw e;\n }\n else {\n // https://github.com/nodeca/js-yaml/issues/153\n throw ono(e, e.message);\n }\n }\n },\n\n /**\n * Converts a JavaScript value to a YAML string.\n *\n * @param {*} value - The value to convert to YAML\n * @param {function|array} replacer - Not currently supported. Provided for consistency with {@link JSON.stringify}\n * @param {string|number} space - The number of spaces to use for indentation, or a string containing the number of spaces.\n * @returns {string}\n */\n stringify: function yamlStringify(value, replacer, space) {\n try {\n var indent = (typeof space === 'string' ? space.length : space) || 2;\n return yaml.safeDump(value, {indent: indent});\n }\n catch (e) {\n if (e instanceof Error) {\n throw e;\n }\n else {\n // https://github.com/nodeca/js-yaml/issues/153\n throw ono(e, e.message);\n }\n }\n }\n};\n","/* */ \n(function(Buffer) {\n 'use strict';\n var Promise = require('./promise'),\n Options = require('./options'),\n $Refs = require('./refs'),\n $Ref = require('./ref'),\n read = require('./read'),\n resolve = require('./resolve'),\n bundle = require('./bundle'),\n dereference = require('./dereference'),\n util = require('./util'),\n url = require('url'),\n maybe = require('call-me-maybe'),\n ono = require('ono');\n module.exports = $RefParser;\n module.exports.YAML = require('./yaml');\n function $RefParser() {\n this.schema = null;\n this.$refs = new $Refs();\n }\n $RefParser.parse = function(schema, options, callback) {\n var Class = this;\n return new Class().parse(schema, options, callback);\n };\n $RefParser.prototype.parse = function(schema, options, callback) {\n var args = normalizeArgs(arguments);\n if (args.schema && typeof args.schema === 'object') {\n this.schema = args.schema;\n this.$refs._basePath = '';\n var $ref = new $Ref(this.$refs, this.$refs._basePath);\n $ref.setValue(this.schema, args.options);\n return maybe(args.callback, Promise.resolve(this.schema));\n }\n if (!args.schema || typeof args.schema !== 'string') {\n var err = ono('Expected a file path, URL, or object. Got %s', args.schema);\n return maybe(args.callback, Promise.reject(err));\n }\n var me = this;\n args.schema = util.path.localPathToUrl(args.schema);\n args.schema = url.resolve(util.path.cwd(), args.schema);\n this.$refs._basePath = util.path.stripHash(args.schema);\n return read(args.schema, this.$refs, args.options).then(function(result) {\n var value = result.$ref.value;\n if (!value || typeof value !== 'object' || value instanceof Buffer) {\n throw ono.syntax('\"%s\" is not a valid JSON Schema', me.$refs._basePath);\n } else {\n me.schema = value;\n return maybe(args.callback, Promise.resolve(me.schema));\n }\n }).catch(function(e) {\n return maybe(args.callback, Promise.reject(e));\n });\n };\n $RefParser.resolve = function(schema, options, callback) {\n var Class = this;\n return new Class().resolve(schema, options, callback);\n };\n $RefParser.prototype.resolve = function(schema, options, callback) {\n var me = this;\n var args = normalizeArgs(arguments);\n return this.parse(args.schema, args.options).then(function() {\n return resolve(me, args.options);\n }).then(function() {\n return maybe(args.callback, Promise.resolve(me.$refs));\n }).catch(function(err) {\n return maybe(args.callback, Promise.reject(err));\n });\n };\n $RefParser.bundle = function(schema, options, callback) {\n var Class = this;\n return new Class().bundle(schema, options, callback);\n };\n $RefParser.prototype.bundle = function(schema, options, callback) {\n var me = this;\n var args = normalizeArgs(arguments);\n return this.resolve(args.schema, args.options).then(function() {\n bundle(me, args.options);\n return maybe(args.callback, Promise.resolve(me.schema));\n }).catch(function(err) {\n return maybe(args.callback, Promise.reject(err));\n });\n };\n $RefParser.dereference = function(schema, options, callback) {\n var Class = this;\n return new Class().dereference(schema, options, callback);\n };\n $RefParser.prototype.dereference = function(schema, options, callback) {\n var me = this;\n var args = normalizeArgs(arguments);\n return this.resolve(args.schema, args.options).then(function() {\n dereference(me, args.options);\n return maybe(args.callback, Promise.resolve(me.schema));\n }).catch(function(err) {\n return maybe(args.callback, Promise.reject(err));\n });\n };\n function normalizeArgs(args) {\n var options = args[1],\n callback = args[2];\n if (typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n if (!(options instanceof Options)) {\n options = new Options(options);\n }\n return {\n schema: args[0],\n options: options,\n callback: callback\n };\n }\n})(require('buffer').Buffer);\n","module.exports = require(\"npm:json-schema-ref-parser@2.2.0/lib/index.js\");","/* */ \n(function(Buffer) {\n 'use strict';\n module.exports = $Ref;\n var Pointer = require('./pointer'),\n util = require('./util');\n function $Ref($refs, path) {\n path = util.path.stripHash(path);\n $refs._$refs[path] = this;\n this.$refs = $refs;\n this.path = path;\n this.pathType = undefined;\n this.value = undefined;\n this.expires = undefined;\n }\n $Ref.prototype.isExpired = function() {\n return !!(this.expires && this.expires <= new Date());\n };\n $Ref.prototype.expire = function() {\n this.expires = new Date();\n };\n $Ref.prototype.setValue = function(value, options) {\n this.value = value;\n var cacheDuration = options.cache[this.pathType];\n if (cacheDuration > 0) {\n var expires = Date.now() + (cacheDuration * 1000);\n this.expires = new Date(expires);\n }\n };\n $Ref.prototype.exists = function(path) {\n try {\n this.resolve(path);\n return true;\n } catch (e) {\n return false;\n }\n };\n $Ref.prototype.get = function(path, options) {\n return this.resolve(path, options).value;\n };\n $Ref.prototype.resolve = function(path, options) {\n var pointer = new Pointer(this, path);\n return pointer.resolve(this.value, options);\n };\n $Ref.prototype.set = function(path, value, options) {\n var pointer = new Pointer(this, path);\n this.value = pointer.set(this.value, value, options);\n };\n $Ref.is$Ref = function(value) {\n return value && typeof value === 'object' && typeof value.$ref === 'string' && value.$ref.length > 0;\n };\n $Ref.isExternal$Ref = function(value) {\n return $Ref.is$Ref(value) && value.$ref[0] !== '#';\n };\n $Ref.isAllowed$Ref = function(value, options) {\n if ($Ref.is$Ref(value)) {\n if (value.$ref[0] === '#') {\n if (options.$refs.internal) {\n return true;\n }\n } else if (options.$refs.external) {\n return true;\n }\n }\n };\n})(require('buffer').Buffer);\n","/* */ \nvar lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n;(function (exports) {\n\t'use strict';\n\n var Arr = (typeof Uint8Array !== 'undefined')\n ? Uint8Array\n : Array\n\n\tvar PLUS = '+'.charCodeAt(0)\n\tvar SLASH = '/'.charCodeAt(0)\n\tvar NUMBER = '0'.charCodeAt(0)\n\tvar LOWER = 'a'.charCodeAt(0)\n\tvar UPPER = 'A'.charCodeAt(0)\n\tvar PLUS_URL_SAFE = '-'.charCodeAt(0)\n\tvar SLASH_URL_SAFE = '_'.charCodeAt(0)\n\n\tfunction decode (elt) {\n\t\tvar code = elt.charCodeAt(0)\n\t\tif (code === PLUS ||\n\t\t code === PLUS_URL_SAFE)\n\t\t\treturn 62 // '+'\n\t\tif (code === SLASH ||\n\t\t code === SLASH_URL_SAFE)\n\t\t\treturn 63 // '/'\n\t\tif (code < NUMBER)\n\t\t\treturn -1 //no match\n\t\tif (code < NUMBER + 10)\n\t\t\treturn code - NUMBER + 26 + 26\n\t\tif (code < UPPER + 26)\n\t\t\treturn code - UPPER\n\t\tif (code < LOWER + 26)\n\t\t\treturn code - LOWER + 26\n\t}\n\n\tfunction b64ToByteArray (b64) {\n\t\tvar i, j, l, tmp, placeHolders, arr\n\n\t\tif (b64.length % 4 > 0) {\n\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t}\n\n\t\t// the number of equal signs (place holders)\n\t\t// if there are two placeholders, than the two characters before it\n\t\t// represent one byte\n\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t// this is just a cheap hack to not do indexOf twice\n\t\tvar len = b64.length\n\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\n\t\t// base64 is 4/3 + up to two characters of the original data\n\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\n\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\n\t\tvar L = 0\n\n\t\tfunction push (v) {\n\t\t\tarr[L++] = v\n\t\t}\n\n\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\tif (placeHolders === 2) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\tpush(tmp & 0xFF)\n\t\t} else if (placeHolders === 1) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\treturn arr\n\t}\n\n\tfunction uint8ToBase64 (uint8) {\n\t\tvar i,\n\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\toutput = \"\",\n\t\t\ttemp, length\n\n\t\tfunction encode (num) {\n\t\t\treturn lookup.charAt(num)\n\t\t}\n\n\t\tfunction tripletToBase64 (num) {\n\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t}\n\n\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\toutput += tripletToBase64(temp)\n\t\t}\n\n\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\tswitch (extraBytes) {\n\t\t\tcase 1:\n\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\toutput += '=='\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\toutput += '='\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn output\n\t}\n\n\texports.toByteArray = b64ToByteArray\n\texports.fromByteArray = uint8ToBase64\n}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))\n","module.exports = require(\"npm:base64-js@0.0.8/lib/b64.js\");","/* */ \nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","module.exports = require(\"npm:ieee754@1.1.6/index.js\");","/* */ \nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","module.exports = require(\"npm:isarray@1.0.0/index.js\");","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\nBuffer.poolSize = 8192 // not used by this implementation\n\nvar rootParent = {}\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property\n * on objects.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\nfunction typedArraySupport () {\n function Bar () {}\n try {\n var arr = new Uint8Array(1)\n arr.foo = function () { return 42 }\n arr.constructor = Bar\n return arr.foo() === 42 && // typed array instances can be augmented\n arr.constructor === Bar && // constructor can be set\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\n/**\n * Class: Buffer\n * =============\n *\n * The Buffer constructor returns instances of `Uint8Array` that are augmented\n * with function properties for all the node `Buffer` API functions. We use\n * `Uint8Array` so that square bracket notation works as expected -- it returns\n * a single octet.\n *\n * By augmenting the instances, we can avoid modifying the `Uint8Array`\n * prototype.\n */\nfunction Buffer (arg) {\n if (!(this instanceof Buffer)) {\n // Avoid going through an ArgumentsAdaptorTrampoline in the common case.\n if (arguments.length > 1) return new Buffer(arg, arguments[1])\n return new Buffer(arg)\n }\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n this.length = 0\n this.parent = undefined\n }\n\n // Common case.\n if (typeof arg === 'number') {\n return fromNumber(this, arg)\n }\n\n // Slightly less common case.\n if (typeof arg === 'string') {\n return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')\n }\n\n // Unusual.\n return fromObject(this, arg)\n}\n\nfunction fromNumber (that, length) {\n that = allocate(that, length < 0 ? 0 : checked(length) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < length; i++) {\n that[i] = 0\n }\n }\n return that\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'\n\n // Assumption: byteLength() return value is always < kMaxLength.\n var length = byteLength(string, encoding) | 0\n that = allocate(that, length)\n\n that.write(string, encoding)\n return that\n}\n\nfunction fromObject (that, object) {\n if (Buffer.isBuffer(object)) return fromBuffer(that, object)\n\n if (isArray(object)) return fromArray(that, object)\n\n if (object == null) {\n throw new TypeError('must start with number, buffer, array or string')\n }\n\n if (typeof ArrayBuffer !== 'undefined') {\n if (object.buffer instanceof ArrayBuffer) {\n return fromTypedArray(that, object)\n }\n if (object instanceof ArrayBuffer) {\n return fromArrayBuffer(that, object)\n }\n }\n\n if (object.length) return fromArrayLike(that, object)\n\n return fromJsonObject(that, object)\n}\n\nfunction fromBuffer (that, buffer) {\n var length = checked(buffer.length) | 0\n that = allocate(that, length)\n buffer.copy(that, 0, 0, length)\n return that\n}\n\nfunction fromArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Duplicate of fromArray() to keep fromArray() monomorphic.\nfunction fromTypedArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n // Truncating the elements is probably not what people expect from typed\n // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior\n // of the old Buffer constructor.\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array) {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n array.byteLength\n that = Buffer._augment(new Uint8Array(array))\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromTypedArray(that, new Uint8Array(array))\n }\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.\n// Returns a zero-length buffer for inputs that don't conform to the spec.\nfunction fromJsonObject (that, object) {\n var array\n var length = 0\n\n if (object.type === 'Buffer' && isArray(object.data)) {\n array = object.data\n length = checked(array.length) | 0\n }\n that = allocate(that, length)\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n} else {\n // pre-set for values that may exist in the future\n Buffer.prototype.length = undefined\n Buffer.prototype.parent = undefined\n}\n\nfunction allocate (that, length) {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = Buffer._augment(new Uint8Array(length))\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that.length = length\n that._isBuffer = true\n }\n\n var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1\n if (fromPool) that.parent = rootParent\n\n return that\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (subject, encoding) {\n if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)\n\n var buf = new Buffer(subject, encoding)\n delete buf.parent\n return buf\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n var i = 0\n var len = Math.min(x, y)\n while (i < len) {\n if (a[i] !== b[i]) break\n\n ++i\n }\n\n if (i !== len) {\n x = a[i]\n y = b[i]\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'raw':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')\n\n if (list.length === 0) {\n return new Buffer(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; i++) {\n length += list[i].length\n }\n }\n\n var buf = new Buffer(length)\n var pos = 0\n for (i = 0; i < list.length; i++) {\n var item = list[i]\n item.copy(buf, pos)\n pos += item.length\n }\n return buf\n}\n\nfunction byteLength (string, encoding) {\n if (typeof string !== 'string') string = '' + string\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'binary':\n // Deprecated\n case 'raw':\n case 'raws':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n start = start | 0\n end = end === undefined || end === Infinity ? this.length : end | 0\n\n if (!encoding) encoding = 'utf8'\n if (start < 0) start = 0\n if (end > this.length) end = this.length\n if (end <= start) return ''\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'binary':\n return binarySlice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return 0\n return Buffer.compare(this, b)\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset) {\n if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff\n else if (byteOffset < -0x80000000) byteOffset = -0x80000000\n byteOffset >>= 0\n\n if (this.length === 0) return -1\n if (byteOffset >= this.length) return -1\n\n // Negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)\n\n if (typeof val === 'string') {\n if (val.length === 0) return -1 // special case: looking for empty string always fails\n return String.prototype.indexOf.call(this, val, byteOffset)\n }\n if (Buffer.isBuffer(val)) {\n return arrayIndexOf(this, val, byteOffset)\n }\n if (typeof val === 'number') {\n if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {\n return Uint8Array.prototype.indexOf.call(this, val, byteOffset)\n }\n return arrayIndexOf(this, [ val ], byteOffset)\n }\n\n function arrayIndexOf (arr, val, byteOffset) {\n var foundIndex = -1\n for (var i = 0; byteOffset + i < arr.length; i++) {\n if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex\n } else {\n foundIndex = -1\n }\n }\n return -1\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\n// `get` is deprecated\nBuffer.prototype.get = function get (offset) {\n console.log('.get() is deprecated. Access using array indexes instead.')\n return this.readUInt8(offset)\n}\n\n// `set` is deprecated\nBuffer.prototype.set = function set (v, offset) {\n console.log('.set() is deprecated. Access using array indexes instead.')\n return this.writeUInt8(v, offset)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; i++) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) throw new Error('Invalid hex string')\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction binaryWrite (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n var swap = encoding\n encoding = offset\n offset = length | 0\n length = swap\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'binary':\n return binaryWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction binarySlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; i++) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = Buffer._augment(this.subarray(start, end))\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; i++) {\n newBuf[i] = this[i + start]\n }\n }\n\n if (newBuf.length) newBuf.parent = this.parent || this\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n if (offset < 0) throw new RangeError('index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; i--) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; i++) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n target._set(this.subarray(start, start + len), targetStart)\n }\n\n return len\n}\n\n// fill(value, start=0, end=buffer.length)\nBuffer.prototype.fill = function fill (value, start, end) {\n if (!value) value = 0\n if (!start) start = 0\n if (!end) end = this.length\n\n if (end < start) throw new RangeError('end < start')\n\n // Fill 0 bytes; we're done\n if (end === start) return\n if (this.length === 0) return\n\n if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')\n if (end < 0 || end > this.length) throw new RangeError('end out of bounds')\n\n var i\n if (typeof value === 'number') {\n for (i = start; i < end; i++) {\n this[i] = value\n }\n } else {\n var bytes = utf8ToBytes(value.toString())\n var len = bytes.length\n for (i = start; i < end; i++) {\n this[i] = bytes[i % len]\n }\n }\n\n return this\n}\n\n/**\n * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.\n * Added in Node 0.12. Only available in browsers that support ArrayBuffer.\n */\nBuffer.prototype.toArrayBuffer = function toArrayBuffer () {\n if (typeof Uint8Array !== 'undefined') {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n return (new Buffer(this)).buffer\n } else {\n var buf = new Uint8Array(this.length)\n for (var i = 0, len = buf.length; i < len; i += 1) {\n buf[i] = this[i]\n }\n return buf.buffer\n }\n } else {\n throw new TypeError('Buffer.toArrayBuffer not supported in this browser')\n }\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar BP = Buffer.prototype\n\n/**\n * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods\n */\nBuffer._augment = function _augment (arr) {\n arr.constructor = Buffer\n arr._isBuffer = true\n\n // save reference to original Uint8Array set method before overwriting\n arr._set = arr.set\n\n // deprecated\n arr.get = BP.get\n arr.set = BP.set\n\n arr.write = BP.write\n arr.toString = BP.toString\n arr.toLocaleString = BP.toString\n arr.toJSON = BP.toJSON\n arr.equals = BP.equals\n arr.compare = BP.compare\n arr.indexOf = BP.indexOf\n arr.copy = BP.copy\n arr.slice = BP.slice\n arr.readUIntLE = BP.readUIntLE\n arr.readUIntBE = BP.readUIntBE\n arr.readUInt8 = BP.readUInt8\n arr.readUInt16LE = BP.readUInt16LE\n arr.readUInt16BE = BP.readUInt16BE\n arr.readUInt32LE = BP.readUInt32LE\n arr.readUInt32BE = BP.readUInt32BE\n arr.readIntLE = BP.readIntLE\n arr.readIntBE = BP.readIntBE\n arr.readInt8 = BP.readInt8\n arr.readInt16LE = BP.readInt16LE\n arr.readInt16BE = BP.readInt16BE\n arr.readInt32LE = BP.readInt32LE\n arr.readInt32BE = BP.readInt32BE\n arr.readFloatLE = BP.readFloatLE\n arr.readFloatBE = BP.readFloatBE\n arr.readDoubleLE = BP.readDoubleLE\n arr.readDoubleBE = BP.readDoubleBE\n arr.writeUInt8 = BP.writeUInt8\n arr.writeUIntLE = BP.writeUIntLE\n arr.writeUIntBE = BP.writeUIntBE\n arr.writeUInt16LE = BP.writeUInt16LE\n arr.writeUInt16BE = BP.writeUInt16BE\n arr.writeUInt32LE = BP.writeUInt32LE\n arr.writeUInt32BE = BP.writeUInt32BE\n arr.writeIntLE = BP.writeIntLE\n arr.writeIntBE = BP.writeIntBE\n arr.writeInt8 = BP.writeInt8\n arr.writeInt16LE = BP.writeInt16LE\n arr.writeInt16BE = BP.writeInt16BE\n arr.writeInt32LE = BP.writeInt32LE\n arr.writeInt32BE = BP.writeInt32BE\n arr.writeFloatLE = BP.writeFloatLE\n arr.writeFloatBE = BP.writeFloatBE\n arr.writeDoubleLE = BP.writeDoubleLE\n arr.writeDoubleBE = BP.writeDoubleBE\n arr.fill = BP.fill\n arr.inspect = BP.inspect\n arr.toArrayBuffer = BP.toArrayBuffer\n\n return arr\n}\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; i++) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; i++) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n","module.exports = require(\"npm:buffer@3.6.0/index.js\");","/* */ \nmodule.exports = System._nodeRequire ? System._nodeRequire('buffer') : require('buffer');","module.exports = require(\"github:jspm/nodelibs-buffer@0.1.0/index\");","/* */ \n(function(Buffer) {\n 'use strict';\n module.exports = Pointer;\n var $Ref = require('./ref'),\n util = require('./util'),\n url = require('url'),\n ono = require('ono'),\n slashes = /\\//g,\n tildes = /~/g,\n escapedSlash = /~1/g,\n escapedTilde = /~0/g;\n function Pointer($ref, path) {\n this.$ref = $ref;\n this.path = path;\n this.value = undefined;\n this.circular = false;\n }\n Pointer.prototype.resolve = function(obj, options) {\n var tokens = Pointer.parse(this.path);\n this.value = obj;\n for (var i = 0; i < tokens.length; i++) {\n if (resolveIf$Ref(this, options)) {\n this.path = Pointer.join(this.path, tokens.slice(i));\n }\n var token = tokens[i];\n if (this.value[token] === undefined) {\n throw ono.syntax('Error resolving $ref pointer \"%s\". \\nToken \"%s\" does not exist.', this.path, token);\n } else {\n this.value = this.value[token];\n }\n }\n resolveIf$Ref(this, options);\n return this;\n };\n Pointer.prototype.set = function(obj, value, options) {\n var tokens = Pointer.parse(this.path);\n var token;\n if (tokens.length === 0) {\n this.value = value;\n return value;\n }\n this.value = obj;\n for (var i = 0; i < tokens.length - 1; i++) {\n resolveIf$Ref(this, options);\n token = tokens[i];\n if (this.value && this.value[token] !== undefined) {\n this.value = this.value[token];\n } else {\n this.value = setValue(this, token, {});\n }\n }\n resolveIf$Ref(this, options);\n token = tokens[tokens.length - 1];\n setValue(this, token, value);\n return obj;\n };\n Pointer.parse = function(path) {\n var pointer = util.path.getHash(path).substr(1);\n if (!pointer) {\n return [];\n }\n pointer = pointer.split('/');\n for (var i = 0; i < pointer.length; i++) {\n pointer[i] = decodeURI(pointer[i].replace(escapedSlash, '/').replace(escapedTilde, '~'));\n }\n if (pointer[0] !== '') {\n throw ono.syntax('Invalid $ref pointer \"%s\". Pointers must begin with \"#/\"', pointer);\n }\n return pointer.slice(1);\n };\n Pointer.join = function(base, tokens) {\n if (base.indexOf('#') === -1) {\n base += '#';\n }\n tokens = Array.isArray(tokens) ? tokens : [tokens];\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n base += '/' + encodeURI(token.replace(tildes, '~0').replace(slashes, '~1'));\n }\n return base;\n };\n function resolveIf$Ref(pointer, options) {\n if ($Ref.isAllowed$Ref(pointer.value, options)) {\n var $refPath = url.resolve(pointer.path, pointer.value.$ref);\n if ($refPath === pointer.path) {\n pointer.circular = true;\n } else {\n var resolved = pointer.$ref.$refs._resolve($refPath);\n if (Object.keys(pointer.value).length === 1) {\n pointer.$ref = resolved.$ref;\n pointer.path = resolved.path;\n pointer.value = resolved.value;\n } else {\n pointer.value = util.dereference(pointer.value, resolved.value);\n }\n return true;\n }\n }\n }\n function setValue(pointer, token, value) {\n if (pointer.value && typeof pointer.value === 'object') {\n if (token === '-' && Array.isArray(pointer.value)) {\n pointer.value.push(value);\n } else {\n pointer.value[token] = value;\n }\n } else {\n throw ono.syntax('Error assigning $ref pointer \"%s\". \\nCannot set \"%s\" of a non-object.', pointer.path, token);\n }\n return value;\n }\n})(require('buffer').Buffer);\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} options\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options){\n options = options || {};\n if ('string' == typeof val) return parse(val);\n return options.long\n ? long(val)\n : short(val);\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = '' + str;\n if (str.length > 10000) return;\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);\n if (!match) return;\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction short(ms) {\n if (ms >= d) return Math.round(ms / d) + 'd';\n if (ms >= h) return Math.round(ms / h) + 'h';\n if (ms >= m) return Math.round(ms / m) + 'm';\n if (ms >= s) return Math.round(ms / s) + 's';\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction long(ms) {\n return plural(ms, d, 'day')\n || plural(ms, h, 'hour')\n || plural(ms, m, 'minute')\n || plural(ms, s, 'second')\n || ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) return;\n if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","module.exports = require(\"npm:ms@0.7.1/index\");","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = debug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lowercased letter, i.e. \"n\".\n */\n\nexports.formatters = {};\n\n/**\n * Previously assigned color.\n */\n\nvar prevColor = 0;\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n *\n * @return {Number}\n * @api private\n */\n\nfunction selectColor() {\n return exports.colors[prevColor++ % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction debug(namespace) {\n\n // define the `disabled` version\n function disabled() {\n }\n disabled.enabled = false;\n\n // define the `enabled` version\n function enabled() {\n\n var self = enabled;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // add the `color` if not set\n if (null == self.useColors) self.useColors = exports.useColors();\n if (null == self.color && self.useColors) self.color = selectColor();\n\n var args = Array.prototype.slice.call(arguments);\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %o\n args = ['%o'].concat(args);\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n if ('function' === typeof exports.formatArgs) {\n args = exports.formatArgs.apply(self, args);\n }\n var logFn = enabled.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n enabled.enabled = true;\n\n var fn = exports.enabled(namespace) ? enabled : disabled;\n\n fn.namespace = namespace;\n\n return fn;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n var split = (namespaces || '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/* */ \nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome && 'undefined' != typeof chrome.storage ? chrome.storage.local : localstorage();\nexports.colors = ['lightseagreen', 'forestgreen', 'goldenrod', 'dodgerblue', 'darkorchid', 'crimson'];\nfunction useColors() {\n return ('WebkitAppearance' in document.documentElement.style) || (window.console && (console.firebug || (console.exception && console.table))) || (navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31);\n}\nexports.formatters.j = function(v) {\n return JSON.stringify(v);\n};\nfunction formatArgs() {\n var args = arguments;\n var useColors = this.useColors;\n args[0] = (useColors ? '%c' : '') + this.namespace + (useColors ? ' %c' : ' ') + args[0] + (useColors ? '%c ' : ' ') + '+' + exports.humanize(this.diff);\n if (!useColors)\n return args;\n var c = 'color: ' + this.color;\n args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1));\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-z%]/g, function(match) {\n if ('%%' === match)\n return;\n index++;\n if ('%c' === match) {\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n return args;\n}\nfunction log() {\n return 'object' === typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments);\n}\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch (e) {}\n}\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch (e) {}\n return r;\n}\nexports.enable(load());\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","module.exports = require(\"npm:debug@2.2.0/browser.js\");","/* */ \n(function(process) {\n 'use strict';\n var isWindows = /^win/.test(process.platform),\n forwardSlashPattern = /\\//g,\n protocolPattern = /^([a-z0-9.+-]+):\\/\\//i;\n var urlEncodePatterns = [/\\?/g, '%3F', /\\#/g, '%23', isWindows ? /\\\\/g : /\\//, '/'];\n var urlDecodePatterns = [/\\%23/g, '#', /\\%24/g, '$', /\\%26/g, '&', /\\%2C/g, ',', /\\%40/g, '@'];\n exports.cwd = function cwd() {\n return process.browser ? location.href : process.cwd() + '/';\n };\n exports.isUrl = function isUrl(path) {\n var protocol = protocolPattern.exec(path);\n if (protocol) {\n protocol = protocol[1].toLowerCase();\n return protocol !== 'file';\n }\n return false;\n };\n exports.localPathToUrl = function localPathToUrl(path) {\n if (!process.browser && !exports.isUrl(path)) {\n for (var i = 0; i < urlEncodePatterns.length; i += 2) {\n path = path.replace(urlEncodePatterns[i], urlEncodePatterns[i + 1]);\n }\n path = encodeURI(path);\n }\n return path;\n };\n exports.urlToLocalPath = function urlToLocalPath(url, keepFileProtocol) {\n url = decodeURI(url);\n for (var i = 0; i < urlDecodePatterns.length; i += 2) {\n url = url.replace(urlDecodePatterns[i], urlDecodePatterns[i + 1]);\n }\n var isFileUrl = url.substr(0, 7).toLowerCase() === 'file://';\n if (isFileUrl) {\n var protocol = 'file:///';\n var path = url[7] === '/' ? url.substr(8) : url.substr(7);\n if (isWindows && path[1] === '/') {\n path = path[0] + ':' + path.substr(1);\n }\n if (keepFileProtocol) {\n url = protocol + path;\n } else {\n isFileUrl = false;\n url = isWindows ? path : '/' + path;\n }\n }\n if (isWindows && !isFileUrl) {\n url = url.replace(forwardSlashPattern, '\\\\');\n }\n return url;\n };\n exports.getHash = function getHash(path) {\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n return path.substr(hashIndex);\n }\n return '#';\n };\n exports.stripHash = function stripHash(path) {\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n path = path.substr(0, hashIndex);\n }\n return path;\n };\n exports.extname = function extname(path) {\n var lastDot = path.lastIndexOf('.');\n if (lastDot >= 0) {\n return path.substr(lastDot).toLowerCase();\n }\n return '';\n };\n})(require('process'));\n","/* */ \n'use strict';\nvar debug = require('debug'),\n path = require('./path');\nexports.debug = debug('json-schema-ref-parser');\nexports.path = path;\nexports.dereference = function($ref, resolvedValue) {\n if (resolvedValue && typeof resolvedValue === 'object' && Object.keys($ref).length > 1) {\n var merged = {};\n Object.keys($ref).forEach(function(key) {\n if (key !== '$ref') {\n merged[key] = $ref[key];\n }\n });\n Object.keys(resolvedValue).forEach(function(key) {\n if (!(key in merged)) {\n merged[key] = resolvedValue[key];\n }\n });\n return merged;\n } else {\n return resolvedValue;\n }\n};\n","/* */ \nmodule.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","/* */ \nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","module.exports = require(\"npm:inherits@2.0.1/inherits_browser.js\");","/* */ \n(function(process) {\n var formatRegExp = /%[sdj%]/g;\n exports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%')\n return '%';\n if (i >= len)\n return x;\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n };\n exports.deprecate = function(fn, msg) {\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n if (process.noDeprecation === true) {\n return fn;\n }\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n return deprecated;\n };\n var debugs = {};\n var debugEnviron;\n exports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n };\n function inspect(obj, opts) {\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n if (arguments.length >= 3)\n ctx.depth = arguments[2];\n if (arguments.length >= 4)\n ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n ctx.showHidden = opts;\n } else if (opts) {\n exports._extend(ctx, opts);\n }\n if (isUndefined(ctx.showHidden))\n ctx.showHidden = false;\n if (isUndefined(ctx.depth))\n ctx.depth = 2;\n if (isUndefined(ctx.colors))\n ctx.colors = false;\n if (isUndefined(ctx.customInspect))\n ctx.customInspect = true;\n if (ctx.colors)\n ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n }\n exports.inspect = inspect;\n inspect.colors = {\n 'bold': [1, 22],\n 'italic': [3, 23],\n 'underline': [4, 24],\n 'inverse': [7, 27],\n 'white': [37, 39],\n 'grey': [90, 39],\n 'black': [30, 39],\n 'blue': [34, 39],\n 'cyan': [36, 39],\n 'green': [32, 39],\n 'magenta': [35, 39],\n 'red': [31, 39],\n 'yellow': [33, 39]\n };\n inspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n 'regexp': 'red'\n };\n function stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str + '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n }\n function stylizeNoColor(str, styleType) {\n return str;\n }\n function arrayToHash(array) {\n var hash = {};\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n return hash;\n }\n function formatValue(ctx, value, recurseTimes) {\n if (ctx.customInspect && value && isFunction(value.inspect) && value.inspect !== exports.inspect && !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n var base = '',\n array = false,\n braces = ['{', '}'];\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n ctx.seen.push(value);\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n ctx.seen.pop();\n return reduceToSingleString(output, base, braces);\n }\n function formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '').replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n if (isNull(value))\n return ctx.stylize('null', 'null');\n }\n function formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n }\n function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0,\n l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));\n }\n });\n return output;\n }\n function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name,\n str,\n desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || {value: value[key]};\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n return name + ': ' + str;\n }\n function reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0)\n numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n if (length > 60) {\n return braces[0] + (base === '' ? '' : base + '\\n ') + ' ' + output.join(',\\n ') + ' ' + braces[1];\n }\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n }\n function isArray(ar) {\n return Array.isArray(ar);\n }\n exports.isArray = isArray;\n function isBoolean(arg) {\n return typeof arg === 'boolean';\n }\n exports.isBoolean = isBoolean;\n function isNull(arg) {\n return arg === null;\n }\n exports.isNull = isNull;\n function isNullOrUndefined(arg) {\n return arg == null;\n }\n exports.isNullOrUndefined = isNullOrUndefined;\n function isNumber(arg) {\n return typeof arg === 'number';\n }\n exports.isNumber = isNumber;\n function isString(arg) {\n return typeof arg === 'string';\n }\n exports.isString = isString;\n function isSymbol(arg) {\n return typeof arg === 'symbol';\n }\n exports.isSymbol = isSymbol;\n function isUndefined(arg) {\n return arg === void 0;\n }\n exports.isUndefined = isUndefined;\n function isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n }\n exports.isRegExp = isRegExp;\n function isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n }\n exports.isObject = isObject;\n function isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n }\n exports.isDate = isDate;\n function isError(e) {\n return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error);\n }\n exports.isError = isError;\n function isFunction(arg) {\n return typeof arg === 'function';\n }\n exports.isFunction = isFunction;\n function isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || typeof arg === 'undefined';\n }\n exports.isPrimitive = isPrimitive;\n exports.isBuffer = require('./support/isBufferBrowser');\n function objectToString(o) {\n return Object.prototype.toString.call(o);\n }\n function pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n }\n var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n function timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n }\n exports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n };\n exports.inherits = require('inherits');\n exports._extend = function(origin, add) {\n if (!add || !isObject(add))\n return origin;\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n };\n function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n})(require('process'));\n","module.exports = require(\"npm:util@0.10.3/util.js\");","/* */ \nmodule.exports = System._nodeRequire ? System._nodeRequire('util') : require('util');","module.exports = require(\"github:jspm/nodelibs-util@0.1.0/index\");","/**!\n * Ono v2.0.1\n *\n * @link https://github.com/BigstickCarpet/ono\n * @license MIT\n */\n'use strict';\n\nvar util = require('util'),\n slice = Array.prototype.slice,\n vendorSpecificErrorProperties = [\n 'name', 'message', 'description', 'number', 'fileName', 'lineNumber', 'columnNumber',\n 'sourceURL', 'line', 'column', 'stack'\n ];\n\nmodule.exports = create(Error);\nmodule.exports.error = create(Error);\nmodule.exports.eval = create(EvalError);\nmodule.exports.range = create(RangeError);\nmodule.exports.reference = create(ReferenceError);\nmodule.exports.syntax = create(SyntaxError);\nmodule.exports.type = create(TypeError);\nmodule.exports.uri = create(URIError);\nmodule.exports.formatter = util.format;\n\n/**\n * Creates a new {@link ono} function that creates the given Error class.\n *\n * @param {Class} Klass - The Error subclass to create\n * @returns {ono}\n */\nfunction create(Klass) {\n /**\n * @param {Error} [err] - The original error, if any\n * @param {object} [props] - An object whose properties will be added to the error object\n * @param {string} [message] - The error message. May contain {@link util#format} placeholders\n * @param {...*} [params] - Parameters that map to the `message` placeholders\n * @returns {Error}\n */\n return function ono(err, props, message, params) {\n var formattedMessage, stack;\n var formatter = module.exports.formatter;\n\n if (typeof(err) === 'string') {\n formattedMessage = formatter.apply(null, arguments);\n err = props = undefined;\n }\n else if (typeof(props) === 'string') {\n formattedMessage = formatter.apply(null, slice.call(arguments, 1));\n }\n else {\n formattedMessage = formatter.apply(null, slice.call(arguments, 2));\n }\n\n if (!(err instanceof Error)) {\n props = err;\n err = undefined;\n }\n\n if (err) {\n // The inner-error's message will be added to the new message\n formattedMessage += (formattedMessage ? ' \\n' : '') + err.message;\n }\n\n // Create the new error\n // NOTE: DON'T move this to a separate function! We don't want to pollute the stack trace\n var newError = new Klass(formattedMessage);\n\n // Extend the new error with the additional properties\n extendError(newError, err); // Copy properties of the original error\n extendToJSON(newError); // Replace the original toJSON method\n extend(newError, props); // Copy custom properties, possibly including a custom toJSON method\n\n return newError;\n };\n}\n\n/**\n * Extends the targetError with the properties of the source error.\n *\n * @param {Error} targetError - The error object to extend\n * @param {?Error} sourceError - The source error object, if any\n */\nfunction extendError(targetError, sourceError) {\n if (sourceError) {\n var stack = sourceError.stack;\n if (stack) {\n targetError.stack += ' \\n\\n' + sourceError.stack;\n }\n\n extend(targetError, sourceError, true);\n }\n}\n\n/**\n * JavaScript engines differ in how errors are serialized to JSON - especially when it comes\n * to custom error properties and stack traces. So we add our own toJSON method that ALWAYS\n * outputs every property of the error.\n */\nfunction extendToJSON(error) {\n error.toJSON = errorToJSON;\n\n // Also add an inspect() method, for compatibility with Node.js' `util.inspect()` method\n error.inspect = errorToJSON;\n}\n\n/**\n * Extends the target object with the properties of the source object.\n *\n * @param {object} target - The object to extend\n * @param {?source} source - The object whose properties are copied\n * @param {boolean} omitVendorSpecificProperties - Skip vendor-specific Error properties\n */\nfunction extend(target, source, omitVendorSpecificProperties) {\n if (source && typeof(source) === 'object') {\n var keys = Object.keys(source);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n // Don't bother trying to copy read-only vendor-specific Error properties\n if (omitVendorSpecificProperties && vendorSpecificErrorProperties.indexOf(key) >= 0) {\n continue;\n }\n\n try {\n target[key] = source[key];\n }\n catch (e) {\n // This property is read-only, so it can't be copied\n }\n }\n }\n}\n\n/**\n * Custom JSON serializer for Error objects.\n * Returns all built-in error properties, as well as extended properties.\n *\n * @returns {object}\n */\nfunction errorToJSON() {\n // jshint -W040\n var json = {};\n\n // Get all the properties of this error\n var keys = Object.keys(this);\n\n // Also include vendor-specific properties from the prototype\n keys = keys.concat(vendorSpecificErrorProperties);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = this[key];\n if (value !== undefined) {\n json[key] = value;\n }\n }\n\n return json;\n}\n","module.exports = require(\"npm:ono@2.0.1/lib/index.js\");","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = require(\"npm:process@0.11.2/browser.js\");","module.exports = System._nodeRequire ? process : require('process');","module.exports = require(\"github:jspm/nodelibs-process@0.1.2/index\");","/* */ \n\"format cjs\";\n(function(process) {\n ;\n (function(root) {\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n var freeModule = typeof module == 'object' && module && !module.nodeType && module;\n var freeGlobal = typeof global == 'object' && global;\n if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n root = freeGlobal;\n }\n var punycode,\n maxInt = 2147483647,\n base = 36,\n tMin = 1,\n tMax = 26,\n skew = 38,\n damp = 700,\n initialBias = 72,\n initialN = 128,\n delimiter = '-',\n regexPunycode = /^xn--/,\n regexNonASCII = /[^\\x20-\\x7E]/,\n regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n errors = {\n 'overflow': 'Overflow: input needs wider integers to process',\n 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n 'invalid-input': 'Invalid input'\n },\n baseMinusTMin = base - tMin,\n floor = Math.floor,\n stringFromCharCode = String.fromCharCode,\n key;\n function error(type) {\n throw RangeError(errors[type]);\n }\n function map(array, fn) {\n var length = array.length;\n var result = [];\n while (length--) {\n result[length] = fn(array[length]);\n }\n return result;\n }\n function mapDomain(string, fn) {\n var parts = string.split('@');\n var result = '';\n if (parts.length > 1) {\n result = parts[0] + '@';\n string = parts[1];\n }\n string = string.replace(regexSeparators, '\\x2E');\n var labels = string.split('.');\n var encoded = map(labels, fn).join('.');\n return result + encoded;\n }\n function ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) {\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n }\n function ucs2encode(array) {\n return map(array, function(value) {\n var output = '';\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n output += stringFromCharCode(value);\n return output;\n }).join('');\n }\n function basicToDigit(codePoint) {\n if (codePoint - 48 < 10) {\n return codePoint - 22;\n }\n if (codePoint - 65 < 26) {\n return codePoint - 65;\n }\n if (codePoint - 97 < 26) {\n return codePoint - 97;\n }\n return base;\n }\n function digitToBasic(digit, flag) {\n return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n }\n function adapt(delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n }\n function decode(input) {\n var output = [],\n inputLength = input.length,\n out,\n i = 0,\n n = initialN,\n bias = initialBias,\n basic,\n j,\n index,\n oldi,\n w,\n k,\n digit,\n t,\n baseMinusT;\n basic = input.lastIndexOf(delimiter);\n if (basic < 0) {\n basic = 0;\n }\n for (j = 0; j < basic; ++j) {\n if (input.charCodeAt(j) >= 0x80) {\n error('not-basic');\n }\n output.push(input.charCodeAt(j));\n }\n for (index = basic > 0 ? basic + 1 : 0; index < inputLength; ) {\n for (oldi = i, w = 1, k = base; ; k += base) {\n if (index >= inputLength) {\n error('invalid-input');\n }\n digit = basicToDigit(input.charCodeAt(index++));\n if (digit >= base || digit > floor((maxInt - i) / w)) {\n error('overflow');\n }\n i += digit * w;\n t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (digit < t) {\n break;\n }\n baseMinusT = base - t;\n if (w > floor(maxInt / baseMinusT)) {\n error('overflow');\n }\n w *= baseMinusT;\n }\n out = output.length + 1;\n bias = adapt(i - oldi, out, oldi == 0);\n if (floor(i / out) > maxInt - n) {\n error('overflow');\n }\n n += floor(i / out);\n i %= out;\n output.splice(i++, 0, n);\n }\n return ucs2encode(output);\n }\n function encode(input) {\n var n,\n delta,\n handledCPCount,\n basicLength,\n bias,\n j,\n m,\n q,\n k,\n t,\n currentValue,\n output = [],\n inputLength,\n handledCPCountPlusOne,\n baseMinusT,\n qMinusT;\n input = ucs2decode(input);\n inputLength = input.length;\n n = initialN;\n delta = 0;\n bias = initialBias;\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n handledCPCount = basicLength = output.length;\n if (basicLength) {\n output.push(delimiter);\n }\n while (handledCPCount < inputLength) {\n for (m = maxInt, j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n error('overflow');\n }\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n if (currentValue < n && ++delta > maxInt) {\n error('overflow');\n }\n if (currentValue == n) {\n for (q = delta, k = base; ; k += base) {\n t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) {\n break;\n }\n qMinusT = q - t;\n baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n q = floor(qMinusT / baseMinusT);\n }\n output.push(stringFromCharCode(digitToBasic(q, 0)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n ++delta;\n ++n;\n }\n return output.join('');\n }\n function toUnicode(input) {\n return mapDomain(input, function(string) {\n return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n });\n }\n function toASCII(input) {\n return mapDomain(input, function(string) {\n return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n });\n }\n punycode = {\n 'version': '1.3.2',\n 'ucs2': {\n 'decode': ucs2decode,\n 'encode': ucs2encode\n },\n 'decode': decode,\n 'encode': encode,\n 'toASCII': toASCII,\n 'toUnicode': toUnicode\n };\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n define('punycode', function() {\n return punycode;\n });\n } else if (freeExports && freeModule) {\n if (module.exports == freeExports) {\n freeModule.exports = punycode;\n } else {\n for (key in punycode) {\n punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n }\n }\n } else {\n root.punycode = punycode;\n }\n }(this));\n})(require('process'));\n","module.exports = require(\"npm:punycode@1.3.2/punycode.js\");","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","/* */ \n'use strict';\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","module.exports = require(\"npm:querystring@0.2.0/index\");","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar punycode = require('punycode');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a puny coded representation of \"domain\".\n // It only converts the part of the domain name that\n // has non ASCII characters. I.e. it dosent matter if\n // you call it with a domain that already is in ASCII.\n var domainArray = this.hostname.split('.');\n var newOut = [];\n for (var i = 0; i < domainArray.length; ++i) {\n var s = domainArray[i];\n newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\n 'xn--' + punycode.encode(s) : s);\n }\n this.hostname = newOut.join('.');\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n Object.keys(this).forEach(function(k) {\n result[k] = this[k];\n }, this);\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n Object.keys(relative).forEach(function(k) {\n if (k !== 'protocol')\n result[k] = relative[k];\n });\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n Object.keys(relative).forEach(function(k) {\n result[k] = relative[k];\n });\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host) && (last === '.' || last === '..') ||\n last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last == '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\nfunction isString(arg) {\n return typeof arg === \"string\";\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n","module.exports = require(\"npm:url@0.10.3/url.js\");","/* */ \nmodule.exports = System._nodeRequire ? System._nodeRequire('url') : require('url');","module.exports = require(\"github:jspm/nodelibs-url@0.1.0/index\");","/* */ \n'use strict';\nvar $Ref = require('./ref'),\n Pointer = require('./pointer'),\n util = require('./util'),\n ono = require('ono'),\n url = require('url');\nmodule.exports = dereference;\nfunction dereference(parser, options) {\n util.debug('Dereferencing $ref pointers in %s', parser.$refs._basePath);\n parser.$refs.circular = false;\n crawl(parser.schema, parser.$refs._basePath, '#', [], parser.$refs, options);\n}\nfunction crawl(obj, path, pathFromRoot, parents, $refs, options) {\n var isCircular = false;\n if (obj && typeof obj === 'object') {\n parents.push(obj);\n Object.keys(obj).forEach(function(key) {\n var keyPath = Pointer.join(path, key);\n var keyPathFromRoot = Pointer.join(pathFromRoot, key);\n var value = obj[key];\n var circular = false;\n if ($Ref.isAllowed$Ref(value, options)) {\n var dereferenced = dereference$Ref(value, keyPath, keyPathFromRoot, parents, $refs, options);\n circular = dereferenced.circular;\n obj[key] = dereferenced.value;\n } else {\n if (parents.indexOf(value) === -1) {\n circular = crawl(value, keyPath, keyPathFromRoot, parents, $refs, options);\n } else {\n circular = foundCircularReference(keyPath, $refs, options);\n }\n }\n isCircular = isCircular || circular;\n });\n parents.pop();\n }\n return isCircular;\n}\nfunction dereference$Ref($ref, path, pathFromRoot, parents, $refs, options) {\n util.debug('Dereferencing $ref pointer \"%s\" at %s', $ref.$ref, path);\n var $refPath = url.resolve(path, $ref.$ref);\n var pointer = $refs._resolve($refPath, options);\n var directCircular = pointer.circular;\n var circular = directCircular || parents.indexOf(pointer.value) !== -1;\n circular && foundCircularReference(path, $refs, options);\n var dereferencedValue = util.dereference($ref, pointer.value);\n if (!circular) {\n circular = crawl(dereferencedValue, pointer.path, pathFromRoot, parents, $refs, options);\n }\n if (circular && !directCircular && options.$refs.circular === 'ignore') {\n dereferencedValue = $ref;\n }\n if (directCircular) {\n dereferencedValue.$ref = pathFromRoot;\n }\n return {\n circular: circular,\n value: dereferencedValue\n };\n}\nfunction foundCircularReference(keyPath, $refs, options) {\n $refs.circular = true;\n if (!options.$refs.circular) {\n throw ono.reference('Circular $ref pointer found at %s', keyPath);\n }\n return true;\n}\n","/* */ \n'use strict';\nvar validateSchema = require('./validate-schema'),\n validateSpec = require('./validate-spec'),\n util = require('./util'),\n Options = require('./options'),\n Promise = require('./promise'),\n maybe = require('call-me-maybe'),\n ono = require('ono'),\n $RefParser = require('json-schema-ref-parser'),\n dereference = require('json-schema-ref-parser/lib/dereference');\nmodule.exports = SwaggerParser;\nfunction SwaggerParser() {\n $RefParser.apply(this, arguments);\n}\nutil.inherits(SwaggerParser, $RefParser);\nSwaggerParser.YAML = $RefParser.YAML;\nSwaggerParser.parse = $RefParser.parse;\nSwaggerParser.resolve = $RefParser.resolve;\nSwaggerParser.bundle = $RefParser.bundle;\nSwaggerParser.dereference = $RefParser.dereference;\nObject.defineProperty(SwaggerParser.prototype, 'api', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this.schema;\n }\n});\nSwaggerParser.prototype.parse = function(api, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n options = new Options(options);\n var apiParam = api;\n return $RefParser.prototype.parse.call(this, api, options).then(function(schema) {\n var supportedSwaggerVersions = ['2.0'];\n if (schema.swagger === undefined || schema.info === undefined || schema.paths === undefined) {\n throw ono.syntax('%s is not a valid Swagger API definition', apiParam);\n } else if (typeof schema.swagger === 'number') {\n throw ono.syntax('Swagger version number must be a string (e.g. \"2.0\") not a number.');\n } else if (typeof schema.info.version === 'number') {\n throw ono.syntax('API version number must be a string (e.g. \"1.0.0\") not a number.');\n } else if (supportedSwaggerVersions.indexOf(schema.swagger) === -1) {\n throw ono.syntax('Unsupported Swagger version: %d. Swagger Parser only supports version %s', schema.swagger, supportedSwaggerVersions.join(', '));\n }\n return maybe(callback, Promise.resolve(schema));\n }).catch(function(err) {\n return maybe(callback, Promise.reject(err));\n });\n};\nSwaggerParser.validate = function(api, options, callback) {\n var Class = this;\n return new Class().validate(api, options, callback);\n};\nSwaggerParser.prototype.validate = function(api, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n options = new Options(options);\n var me = this;\n var circular$RefOption = options.$refs.circular;\n options.validate.schema && (options.$refs.circular = 'ignore');\n return this.dereference(api, options).then(function() {\n options.$refs.circular = circular$RefOption;\n if (options.validate.schema) {\n validateSchema(me.api);\n if (me.$refs.circular) {\n if (circular$RefOption === true) {\n dereference(me, options);\n } else if (circular$RefOption === false) {\n throw ono.reference('The API contains circular references');\n }\n }\n }\n if (options.validate.spec) {\n validateSpec(me.api);\n }\n return maybe(callback, Promise.resolve(me.schema));\n }).catch(function(err) {\n return maybe(callback, Promise.reject(err));\n });\n};\n","module.exports = require(\"npm:swagger-parser@3.4.0/lib/index.js\");","/* */ \n\"format cjs\";\n","/* */ \nvar toInteger = require('./$.to-integer'),\n defined = require('./$.defined');\nmodule.exports = function(TO_STRING) {\n return function(that, pos) {\n var s = String(defined(that)),\n i = toInteger(pos),\n l = s.length,\n a,\n b;\n if (i < 0 || i >= l)\n return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","/* */ \n'use strict';\nvar $at = require('./$.string-at')(true);\nrequire('./$.iter-define')(String, 'String', function(iterated) {\n this._t = String(iterated);\n this._i = 0;\n}, function() {\n var O = this._t,\n index = this._i,\n point;\n if (index >= O.length)\n return {\n value: undefined,\n done: true\n };\n point = $at(O, index);\n this._i += point.length;\n return {\n value: point,\n done: false\n };\n});\n","/* */ \nmodule.exports = function(){ /* empty */ };","/* */ \n'use strict';\nvar addToUnscopables = require('./$.add-to-unscopables'),\n step = require('./$.iter-step'),\n Iterators = require('./$.iterators'),\n toIObject = require('./$.to-iobject');\nmodule.exports = require('./$.iter-define')(Array, 'Array', function(iterated, kind) {\n this._t = toIObject(iterated);\n this._i = 0;\n this._k = kind;\n}, function() {\n var O = this._t,\n kind = this._k,\n index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys')\n return step(0, index);\n if (kind == 'values')\n return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\nIterators.Arguments = Iterators.Array;\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","/* */ \nrequire('./es6.array.iterator');\nvar Iterators = require('./$.iterators');\nIterators.NodeList = Iterators.HTMLCollection = Iterators.Array;\n","/* */ \nmodule.exports = true;","/* */ \n'use strict';\nvar $ = require('./$'),\n descriptor = require('./$.property-desc'),\n setToStringTag = require('./$.set-to-string-tag'),\n IteratorPrototype = {};\nrequire('./$.hide')(IteratorPrototype, require('./$.wks')('iterator'), function() {\n return this;\n});\nmodule.exports = function(Constructor, NAME, next) {\n Constructor.prototype = $.create(IteratorPrototype, {next: descriptor(1, next)});\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","/* */ \n'use strict';\nvar LIBRARY = require('./$.library'),\n $export = require('./$.export'),\n redefine = require('./$.redefine'),\n hide = require('./$.hide'),\n has = require('./$.has'),\n Iterators = require('./$.iterators'),\n $iterCreate = require('./$.iter-create'),\n setToStringTag = require('./$.set-to-string-tag'),\n getProto = require('./$').getProto,\n ITERATOR = require('./$.wks')('iterator'),\n BUGGY = !([].keys && 'next' in [].keys()),\n FF_ITERATOR = '@@iterator',\n KEYS = 'keys',\n VALUES = 'values';\nvar returnThis = function() {\n return this;\n};\nmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function(kind) {\n if (!BUGGY && kind in proto)\n return proto[kind];\n switch (kind) {\n case KEYS:\n return function keys() {\n return new Constructor(this, kind);\n };\n case VALUES:\n return function values() {\n return new Constructor(this, kind);\n };\n }\n return function entries() {\n return new Constructor(this, kind);\n };\n };\n var TAG = NAME + ' Iterator',\n DEF_VALUES = DEFAULT == VALUES,\n VALUES_BUG = false,\n proto = Base.prototype,\n $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT],\n $default = $native || getMethod(DEFAULT),\n methods,\n key;\n if ($native) {\n var IteratorPrototype = getProto($default.call(new Base));\n setToStringTag(IteratorPrototype, TAG, true);\n if (!LIBRARY && has(proto, FF_ITERATOR))\n hide(IteratorPrototype, ITERATOR, returnThis);\n if (DEF_VALUES && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() {\n return $native.call(this);\n };\n }\n }\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: !DEF_VALUES ? $default : getMethod('entries')\n };\n if (FORCED)\n for (key in methods) {\n if (!(key in proto))\n redefine(proto, key, methods[key]);\n }\n else\n $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","/* */ \nmodule.exports = function(done, value){\n return {value: value, done: !!done};\n};","/* */ \n'use strict';\nvar core = require('./$.core'),\n $ = require('./$'),\n DESCRIPTORS = require('./$.descriptors'),\n SPECIES = require('./$.wks')('species');\nmodule.exports = function(KEY) {\n var C = core[KEY];\n if (DESCRIPTORS && C && !C[SPECIES])\n $.setDesc(C, SPECIES, {\n configurable: true,\n get: function() {\n return this;\n }\n });\n};\n","/* */ \n'use strict';\nvar $ = require('./$'),\n hide = require('./$.hide'),\n redefineAll = require('./$.redefine-all'),\n ctx = require('./$.ctx'),\n strictNew = require('./$.strict-new'),\n defined = require('./$.defined'),\n forOf = require('./$.for-of'),\n $iterDefine = require('./$.iter-define'),\n step = require('./$.iter-step'),\n ID = require('./$.uid')('id'),\n $has = require('./$.has'),\n isObject = require('./$.is-object'),\n setSpecies = require('./$.set-species'),\n DESCRIPTORS = require('./$.descriptors'),\n isExtensible = Object.isExtensible || isObject,\n SIZE = DESCRIPTORS ? '_s' : 'size',\n id = 0;\nvar fastKey = function(it, create) {\n if (!isObject(it))\n return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!$has(it, ID)) {\n if (!isExtensible(it))\n return 'F';\n if (!create)\n return 'E';\n hide(it, ID, ++id);\n }\n return 'O' + it[ID];\n};\nvar getEntry = function(that, key) {\n var index = fastKey(key),\n entry;\n if (index !== 'F')\n return that._i[index];\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key)\n return entry;\n }\n};\nmodule.exports = {\n getConstructor: function(wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function(that, iterable) {\n strictNew(that, C, NAME);\n that._i = $.create(null);\n that._f = undefined;\n that._l = undefined;\n that[SIZE] = 0;\n if (iterable != undefined)\n forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n clear: function clear() {\n for (var that = this,\n data = that._i,\n entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p)\n entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n 'delete': function(key) {\n var that = this,\n entry = getEntry(that, key);\n if (entry) {\n var next = entry.n,\n prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev)\n prev.n = next;\n if (next)\n next.p = prev;\n if (that._f == entry)\n that._f = next;\n if (that._l == entry)\n that._l = prev;\n that[SIZE]--;\n }\n return !!entry;\n },\n forEach: function forEach(callbackfn) {\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3),\n entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n while (entry && entry.r)\n entry = entry.p;\n }\n },\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n if (DESCRIPTORS)\n $.setDesc(C.prototype, 'size', {get: function() {\n return defined(this[SIZE]);\n }});\n return C;\n },\n def: function(that, key, value) {\n var entry = getEntry(that, key),\n prev,\n index;\n if (entry) {\n entry.v = value;\n } else {\n that._l = entry = {\n i: index = fastKey(key, true),\n k: key,\n v: value,\n p: prev = that._l,\n n: undefined,\n r: false\n };\n if (!that._f)\n that._f = entry;\n if (prev)\n prev.n = entry;\n that[SIZE]++;\n if (index !== 'F')\n that._i[index] = entry;\n }\n return that;\n },\n getEntry: getEntry,\n setStrong: function(C, NAME, IS_MAP) {\n $iterDefine(C, NAME, function(iterated, kind) {\n this._t = iterated;\n this._k = kind;\n this._l = undefined;\n }, function() {\n var that = this,\n kind = that._k,\n entry = that._l;\n while (entry && entry.r)\n entry = entry.p;\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n that._t = undefined;\n return step(1);\n }\n if (kind == 'keys')\n return step(0, entry.k);\n if (kind == 'values')\n return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n setSpecies(NAME);\n }\n};\n","/* */ \nmodule.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};","/* */ \nvar $ = require('./$'),\n createDesc = require('./$.property-desc');\nmodule.exports = require('./$.descriptors') ? function(object, key, value) {\n return $.setDesc(object, key, createDesc(1, value));\n} : function(object, key, value) {\n object[key] = value;\n return object;\n};\n","/* */ \nmodule.exports = require('./$.hide');\n","/* */ \nvar redefine = require('./$.redefine');\nmodule.exports = function(target, src) {\n for (var key in src)\n redefine(target, key, src[key]);\n return target;\n};\n","/* */ \nmodule.exports = function(it, Constructor, name){\n if(!(it instanceof Constructor))throw TypeError(name + \": use the 'new' operator!\");\n return it;\n};","/* */ \nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};","/* */ \nvar def = require('./$').setDesc,\n has = require('./$.has'),\n TAG = require('./$.wks')('toStringTag');\nmodule.exports = function(it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG))\n def(it, TAG, {\n configurable: true,\n value: tag\n });\n};\n","/* */ \nmodule.exports = !require('./$.fails')(function() {\n return Object.defineProperty({}, 'a', {get: function() {\n return 7;\n }}).a != 7;\n});\n","/* */ \n'use strict';\nvar $ = require('./$'),\n global = require('./$.global'),\n $export = require('./$.export'),\n fails = require('./$.fails'),\n hide = require('./$.hide'),\n redefineAll = require('./$.redefine-all'),\n forOf = require('./$.for-of'),\n strictNew = require('./$.strict-new'),\n isObject = require('./$.is-object'),\n setToStringTag = require('./$.set-to-string-tag'),\n DESCRIPTORS = require('./$.descriptors');\nmodule.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME],\n C = Base,\n ADDER = IS_MAP ? 'set' : 'add',\n proto = C && C.prototype,\n O = {};\n if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function() {\n new C().entries().next();\n }))) {\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n } else {\n C = wrapper(function(target, iterable) {\n strictNew(target, C, NAME);\n target._c = new Base;\n if (iterable != undefined)\n forOf(iterable, IS_MAP, target[ADDER], target);\n });\n $.each.call('add,clear,delete,forEach,get,has,set,keys,values,entries'.split(','), function(KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in proto && !(IS_WEAK && KEY == 'clear'))\n hide(C.prototype, KEY, function(a, b) {\n if (!IS_ADDER && IS_WEAK && !isObject(a))\n return KEY == 'get' ? undefined : false;\n var result = this._c[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n });\n if ('size' in proto)\n $.setDesc(C.prototype, 'size', {get: function() {\n return this._c.size;\n }});\n }\n setToStringTag(C, NAME);\n O[NAME] = C;\n $export($export.G + $export.W + $export.F, O);\n if (!IS_WEAK)\n common.setStrong(C, NAME, IS_MAP);\n return C;\n};\n","/* */ \n'use strict';\nvar strong = require('./$.collection-strong');\nrequire('./$.collection')('Set', function(get) {\n return function Set() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n}, {add: function add(value) {\n return strong.def(this, value = value === 0 ? 0 : value, value);\n }}, strong);\n","/* */ \nvar anObject = require('./$.an-object');\nmodule.exports = function(iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined)\n anObject(ret.call(iterator));\n throw e;\n }\n};\n","/* */ \nvar Iterators = require('./$.iterators'),\n ITERATOR = require('./$.wks')('iterator'),\n ArrayProto = Array.prototype;\nmodule.exports = function(it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};","/* */ \nvar toInteger = require('./$.to-integer'),\n min = Math.min;\nmodule.exports = function(it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0;\n};\n","/* */ \nmodule.exports = {};","/* */ \nvar classof = require('./$.classof'),\n ITERATOR = require('./$.wks')('iterator'),\n Iterators = require('./$.iterators');\nmodule.exports = require('./$.core').getIteratorMethod = function(it) {\n if (it != undefined)\n return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];\n};\n","/* */ \nvar ctx = require('./$.ctx'),\n call = require('./$.iter-call'),\n isArrayIter = require('./$.is-array-iter'),\n anObject = require('./$.an-object'),\n toLength = require('./$.to-length'),\n getIterFn = require('./core.get-iterator-method');\nmodule.exports = function(iterable, entries, fn, that) {\n var iterFn = getIterFn(iterable),\n f = ctx(fn, that, entries ? 2 : 1),\n index = 0,\n length,\n step,\n iterator;\n if (typeof iterFn != 'function')\n throw TypeError(iterable + ' is not iterable!');\n if (isArrayIter(iterFn))\n for (length = toLength(iterable.length); length > index; index++) {\n entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n }\n else\n for (iterator = iterFn.call(iterable); !(step = iterator.next()).done; ) {\n call(iterator, f, step.value, entries);\n }\n};\n","/* */ \nvar global = require('./$.global'),\n SHARED = '__core-js_shared__',\n store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key) {\n return store[key] || (store[key] = {});\n};\n","/* */ \nvar id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};","/* */ \nvar store = require('./$.shared')('wks'),\n uid = require('./$.uid'),\n Symbol = require('./$.global').Symbol;\nmodule.exports = function(name) {\n return store[name] || (store[name] = Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name));\n};\n","/* */ \nvar cof = require('./$.cof'),\n TAG = require('./$.wks')('toStringTag'),\n ARG = cof(function() {\n return arguments;\n }()) == 'Arguments';\nmodule.exports = function(it) {\n var O,\n T,\n B;\n return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof(T = (O = Object(it))[TAG]) == 'string' ? T : ARG ? cof(O) : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","/* */ \nvar forOf = require('./$.for-of'),\n classof = require('./$.classof');\nmodule.exports = function(NAME) {\n return function toJSON() {\n if (classof(this) != NAME)\n throw TypeError(NAME + \"#toJSON isn't generic\");\n var arr = [];\n forOf(this, false, arr.push, arr);\n return arr;\n };\n};\n","/* */ \nvar $export = require('./$.export');\n$export($export.P, 'Set', {toJSON: require('./$.collection-to-json')('Set')});\n","/* */ \nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.set');\nrequire('../modules/es7.set.to-json');\nmodule.exports = require('../modules/$.core').Set;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/set\"), __esModule: true };","'use strict';\n\nexport var methods = new Set(['get', 'put', 'post', 'delete', 'options', 'head', 'patch']);\n","'use strict';\nimport SwaggerParser from 'swagger-parser';\nimport JsonPointer from './JsonPointer';\nimport {methods as swaggerMethods} from './swagger-defs';\n\nexport default class SchemaManager {\n constructor() {\n if (SchemaManager.prototype._instance) {\n return SchemaManager.prototype._instance;\n }\n\n SchemaManager.prototype._instance = this;\n\n this._schema = {};\n }\n\n static instance() {\n return new SchemaManager();\n }\n\n load(url) {\n let promise = new Promise((resolve, reject) => {\n this._schema = {};\n\n SwaggerParser.bundle(url, {http: {withCredentials: false}})\n .then(\n (schema) => {\n this._schema = schema;\n resolve(this._schema);\n this.init();\n },\n (err) => reject(err)\n );\n });\n\n return promise;\n }\n\n /* calculate common used values */\n init() {\n if (!this._schema || !this._schema.schemes) return;\n this.apiUrl = this._schema.schemes[0] + '://' + this._schema.host + this._schema.basePath;\n if (this.apiUrl.endsWith('/')) {\n this.apiUrl = this.apiUrl.substr(0, this.apiUrl.length - 1);\n }\n }\n\n get schema() {\n // TODO: consider returning promise\n return this._schema;\n }\n\n byPointer(pointer) {\n let res = null;\n try {\n // TODO: remove decodeURIComponent after this issue is fixed: https://github.com/BigstickCarpet/swagger-parser/issues/31\n res = JsonPointer.get(this._schema, decodeURIComponent(pointer));\n } catch(e) {/*skip*/ }\n return res;\n }\n\n resolveRefs(obj) {\n Object.keys(obj).forEach(key => {\n if (obj[key].$ref) {\n let resolved = this.byPointer(obj[key].$ref);\n resolved._pointer = obj[key].$ref;\n obj[key] = resolved;\n }\n });\n return obj;\n }\n\n getMethodParams(methodPtr, resolveRefs) {\n /* inject JsonPointer into array elements */\n function injectPointers(array, root) {\n if (!Array.isArray(array)) {\n throw new Error(`parameters must be an array. Got ${typeof array} at ${root}`);\n }\n return array.map((element, idx) => {\n element._pointer = JsonPointer.join(root, idx);\n return element;\n });\n }\n\n // accept pointer directly to parameters as well\n if (JsonPointer.baseName(methodPtr) === 'parameters') {\n methodPtr = JsonPointer.dirName(methodPtr);\n }\n\n //get path params\n let pathParamsPtr = JsonPointer.join(JsonPointer.dirName(methodPtr), ['parameters']);\n let pathParams = this.byPointer(pathParamsPtr) || [];\n\n let methodParamsPtr = JsonPointer.join(methodPtr, ['parameters']);\n let methodParams = this.byPointer(methodParamsPtr) || [];\n pathParams = injectPointers(pathParams, pathParamsPtr);\n methodParams = injectPointers(methodParams, methodParamsPtr);\n\n if (resolveRefs) {\n methodParams = this.resolveRefs(methodParams);\n pathParams = this.resolveRefs(pathParams);\n }\n return methodParams.concat(pathParams);\n }\n\n getTagsMap() {\n let tags = this._schema.tags || [];\n var tagsMap = {};\n for (let tag of tags) {\n tagsMap[tag.name] = {\n description: tag.description,\n 'x-traitTag': tag['x-traitTag'] || false\n };\n }\n\n return tagsMap;\n }\n\n /* returns ES6 Map */\n buildMenuTree() {\n let tag2MethodMapping = new Map();\n\n let definedTags = this._schema.tags || [];\n // add tags into map to preserve order\n for (let tag of definedTags) {\n tag2MethodMapping.set(tag.name, {\n 'description': tag.description,\n 'x-traitTag': tag['x-traitTag'],\n 'methods': []\n });\n }\n\n let paths = this._schema.paths;\n for (let path of Object.keys(paths)) {\n let methods = Object.keys(paths[path]).filter((k) => swaggerMethods.has(k));\n for (let method of methods) {\n let methodInfo = paths[path][method];\n let tags = methodInfo.tags;\n\n //TODO: mb need to do something cleverer\n if (!tags || !tags.length) {\n tags = ['[Other]'];\n }\n let methodPointer = JsonPointer.compile(['paths', path, method]);\n let methodSummary = methodInfo.summary;\n for (let tag of tags) {\n let tagDetails = tag2MethodMapping.get(tag);\n if (!tagDetails) {\n tagDetails = {};\n tag2MethodMapping.set(tag, tagDetails);\n }\n if (tagDetails['x-traitTag']) continue;\n if (!tagDetails.methods) tagDetails.methods = [];\n tagDetails.methods.push({\n pointer: methodPointer,\n summary: methodSummary,\n operationId: methodInfo.operationId\n });\n }\n }\n }\n return tag2MethodMapping;\n }\n\n findDerivedDefinitions(defPointer) {\n let definition = this.byPointer(defPointer);\n if (!definition) throw new Error(`Can't load schema at ${defPointer}`);\n if (!definition.discriminator) return [];\n\n let globalDefs = this._schema.definitions || {};\n let res = [];\n for (let defName of Object.keys(globalDefs)) {\n if (!globalDefs[defName].allOf) continue;\n\n let subTypes = globalDefs[defName].allOf;\n let idx = subTypes.findIndex((subType) => {\n if (subType.$ref === defPointer) return true;\n return false;\n });\n if (idx < 0) continue;\n\n let empty = false;\n if (subTypes.length === 1) {\n empty = true;\n }\n res.push({name: defName, $ref: `#/definitions/${defName}`, empty});\n }\n return res;\n }\n\n}\n","/* */ \nvar toObject = require('./$.to-object');\nrequire('./$.object-sap')('keys', function($keys) {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","/* */ \nrequire('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/$.core').Object.keys;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\\u00a0/g, ' ');\n\t\t\t}\n\t\t},\n\n\t\ttype: function (o) {\n\t\t\treturn Object.prototype.toString.call(o).match(/\\[object (\\w+)\\]/)[1];\n\t\t},\n\n\t\t// Deep clone a language definition (e.g. to extend it)\n\t\tclone: function (o) {\n\t\t\tvar type = _.util.type(o);\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'Object':\n\t\t\t\t\tvar clone = {};\n\n\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\tclone[key] = _.util.clone(o[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn clone;\n\n\t\t\t\tcase 'Array':\n\t\t\t\t\t// Check for existence for IE8\n\t\t\t\t\treturn o.map && o.map(function(v) { return _.util.clone(v); });\n\t\t\t}\n\n\t\t\treturn o;\n\t\t}\n\t},\n\n\tlanguages: {\n\t\textend: function (id, redef) {\n\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\tfor (var key in redef) {\n\t\t\t\tlang[key] = redef[key];\n\t\t\t}\n\n\t\t\treturn lang;\n\t\t},\n\n\t\t/**\n\t\t * Insert a token before another token in a language literal\n\t\t * As this needs to recreate the object (we cannot actually insert before keys in object literals),\n\t\t * we cannot just provide an object, we need anobject and a key.\n\t\t * @param inside The key (or language id) of the parent\n\t\t * @param before The key to insert before. If not provided, the function appends instead.\n\t\t * @param insert Object with the key/value pairs to insert\n\t\t * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\n\t\t */\n\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\troot = root || _.languages;\n\t\t\tvar grammar = root[inside];\n\t\t\t\n\t\t\tif (arguments.length == 2) {\n\t\t\t\tinsert = arguments[1];\n\t\t\t\t\n\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\tgrammar[newToken] = insert[newToken];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn grammar;\n\t\t\t}\n\t\t\t\n\t\t\tvar ret = {};\n\n\t\t\tfor (var token in grammar) {\n\n\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\tif (token == before) {\n\n\t\t\t\t\t\tfor (var newToken in insert) {\n\n\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Update references in other language definitions\n\t\t\t_.languages.DFS(_.languages, function(key, value) {\n\t\t\t\tif (value === root[inside] && key != inside) {\n\t\t\t\t\tthis[key] = ret;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn root[inside] = ret;\n\t\t},\n\n\t\t// Traverse a language definition with Depth First Search\n\t\tDFS: function(o, callback, type) {\n\t\t\tfor (var i in o) {\n\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\tif (_.util.type(o[i]) === 'Object') {\n\t\t\t\t\t\t_.languages.DFS(o[i], callback);\n\t\t\t\t\t}\n\t\t\t\t\telse if (_.util.type(o[i]) === 'Array') {\n\t\t\t\t\t\t_.languages.DFS(o[i], callback, i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tplugins: {},\n\t\n\thighlightAll: function(async, callback) {\n\t\tvar elements = document.querySelectorAll('code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code');\n\n\t\tfor (var i=0, element; element = elements[i++];) {\n\t\t\t_.highlightElement(element, async === true, callback);\n\t\t}\n\t},\n\n\thighlightElement: function(element, async, callback) {\n\t\t// Find language\n\t\tvar language, grammar, parent = element;\n\n\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif (parent) {\n\t\t\tlanguage = (parent.className.match(lang) || [,''])[1];\n\t\t\tgrammar = _.languages[language];\n\t\t}\n\n\t\t// Set language on the element, if not present\n\t\telement.className = element.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\n\t\t// Set language on the parent, for styling\n\t\tparent = element.parentNode;\n\n\t\tif (/pre/i.test(parent.nodeName)) {\n\t\t\tparent.className = parent.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\t\t}\n\n\t\tvar code = element.textContent;\n\n\t\tvar env = {\n\t\t\telement: element,\n\t\t\tlanguage: language,\n\t\t\tgrammar: grammar,\n\t\t\tcode: code\n\t\t};\n\n\t\tif (!code || !grammar) {\n\t\t\t_.hooks.run('complete', env);\n\t\t\treturn;\n\t\t}\n\n\t\t_.hooks.run('before-highlight', env);\n\n\t\tif (async && _self.Worker) {\n\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\tworker.onmessage = function(evt) {\n\t\t\t\tenv.highlightedCode = evt.data;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t};\n\n\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\tlanguage: env.language,\n\t\t\t\tcode: env.code,\n\t\t\t\timmediateClose: true\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tenv.highlightedCode = _.highlight(env.code, env.grammar, env.language);\n\n\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\tcallback && callback.call(element);\n\n\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t_.hooks.run('complete', env);\n\t\t}\n\t},\n\n\thighlight: function (text, grammar, language) {\n\t\tvar tokens = _.tokenize(text, grammar);\n\t\treturn Token.stringify(_.util.encode(tokens), language);\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar Token = _.Token;\n\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\ttokenloop: for (var token in grammar) {\n\t\t\tif(!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = (_.util.type(patterns) === \"Array\") ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tvar pattern = patterns[j],\n\t\t\t\t\tinside = pattern.inside,\n\t\t\t\t\tlookbehind = !!pattern.lookbehind,\n\t\t\t\t\tlookbehindLength = 0,\n\t\t\t\t\talias = pattern.alias;\n\n\t\t\t\tpattern = pattern.pattern || pattern;\n\n\t\t\t\tfor (var i=0; i<strarr.length; i++) { // Don’t cache length as it changes during the loop\n\n\t\t\t\t\tvar str = strarr[i];\n\n\t\t\t\t\tif (strarr.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str);\n\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index - 1 + lookbehindLength,\n\t\t\t\t\t\t\tmatch = match[0].slice(lookbehindLength),\n\t\t\t\t\t\t\tlen = match.length,\n\t\t\t\t\t\t\tto = from + len,\n\t\t\t\t\t\t\tbefore = str.slice(0, from + 1),\n\t\t\t\t\t\t\tafter = str.slice(to + 1);\n\n\t\t\t\t\t\tvar args = [i, 1];\n\n\t\t\t\t\t\tif (before) {\n\t\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias);\n\n\t\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\t\tif (after) {\n\t\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = '';\n\n\tfor (var name in env.attributes) {\n\t\tattributes += (attributes ? ' ' : '') + name + '=\"' + (env.attributes[name] || '') + '\"';\n\t}\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\" ' + attributes + '>' + env.content + '</' + env.tag + '>';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n// Get current script and highlight\nvar script = document.getElementsByTagName('script');\n\nscript = script[script.length - 1];\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': /<!--[\\w\\W]*?-->/,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': /<!DOCTYPE[\\w\\W]+?>/,\n\t'cdata': /<!\\[CDATA\\[[\\w\\W]*?]]>/i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=.$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /(<style[\\w\\W]*?>)[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'class-name', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\`|\\\\?[^`])*`/,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /(<script[\\w\\W]*?>)[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'html': 'markup',\n\t\t\t'svg': 'markup',\n\t\t\t'xml': 'markup',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tself.Prism.fileHighlight();\n\n})();\n","module.exports = require(\"npm:prismjs@1.3.0/prism.js\");","/* */ \n\"format cjs\";\nPrism.languages.actionscript = Prism.languages.extend('javascript', {\n\t'keyword': /\\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\\b/,\n\t'operator': /\\+\\+|--|(?:[+\\-*\\/%^]|&&?|\\|\\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/\n});\nPrism.languages.actionscript['class-name'].alias = 'function';\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('actionscript', 'string', {\n\t\t'xml': {\n\t\t\tpattern: /(^|[^.])<\\/?\\w+(?:\\s+[^\\s>\\/=]+=(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\2)*\\s*\\/?>/,\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\trest: Prism.languages.markup\n\t\t\t}\n\t\t}\n\t});\n}","/* */ \n\"format cjs\";\nPrism.languages.c = Prism.languages.extend('clike', {\n\t'keyword': /\\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\\b/,\n\t'operator': /\\-[>-]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|?\\||[~^%?*\\/]/,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)[ful]*\\b/i\n});\n\nPrism.languages.insertBefore('c', 'string', {\n\t'macro': {\n\t\t// allow for multiline macro definitions\n\t\t// spaces after the # character compile fine with gcc\n\t\tpattern: /(^\\s*)#\\s*[a-z]+([^\\r\\n\\\\]|\\\\.|\\\\(?:\\r\\n?|\\n))*/im,\n\t\tlookbehind: true,\n\t\talias: 'property',\n\t\tinside: {\n\t\t\t// highlight the path of the include statement as a string\n\t\t\t'string': {\n\t\t\t\tpattern: /(#\\s*include\\s*)(<.+?>|(\"|')(\\\\?.)+?\\3)/,\n\t\t\t\tlookbehind: true\n\t\t\t},\n\t\t\t// highlight macro directives as keywords\n\t\t\t'directive': {\n\t\t\t\tpattern: /(#\\s*)\\b(define|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\\b/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t}\n\t\t}\n\t},\n\t// highlight predefined macros as constants\n\t'constant': /\\b(__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|stdin|stdout|stderr)\\b/\n});\n\ndelete Prism.languages.c['class-name'];\ndelete Prism.languages.c['boolean'];\n","/* */ \n\"format cjs\";\nPrism.languages.cpp = Prism.languages.extend('c', {\n\t'keyword': /\\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'operator': /[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\\->|:{1,2}|={1,2}|\\^|~|%|&{1,2}|\\|?\\||\\?|\\*|\\/|\\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/\n});\n\nPrism.languages.insertBefore('cpp', 'keyword', {\n\t'class-name': {\n\t\tpattern: /(class\\s+)[a-z0-9_]+/i,\n\t\tlookbehind: true\n\t}\n});","/* */ \n\"format cjs\";\nPrism.languages.csharp = Prism.languages.extend('clike', {\n\t'keyword': /\\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\\b/,\n\t'string': [\n\t\t/@(\"|')(\\1\\1|\\\\\\1|\\\\?(?!\\1)[\\s\\S])*\\1/,\n\t\t/(\"|')(\\\\?.)*?\\1/\n\t],\n\t'number': /\\b-?(0x[\\da-f]+|\\d*\\.?\\d+f?)\\b/i\n});\n\nPrism.languages.insertBefore('csharp', 'keyword', {\n\t'preprocessor': {\n\t\tpattern: /(^\\s*)#.*/m,\n\t\tlookbehind: true,\n\t\talias: 'property',\n\t\tinside: {\n\t\t\t// highlight preprocessor directives as keywords\n\t\t\t'directive': {\n\t\t\t\tpattern: /(\\s*#)\\b(define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\\b/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t}\n\t\t}\n\t}\n});\n","/* */ \n\"format cjs\";\n/**\n * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/\n * Modified by Miles Johnson: http://milesj.me\n *\n * Supports the following:\n * \t\t- Extends clike syntax\n * \t\t- Support for PHP 5.3+ (namespaces, traits, generators, etc)\n * \t\t- Smarter constant and function matching\n *\n * Adds the following new token classes:\n * \t\tconstant, delimiter, variable, function, package\n */\n\nPrism.languages.php = Prism.languages.extend('clike', {\n\t'keyword': /\\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\\b/i,\n\t'constant': /\\b[A-Z0-9_]{2,}\\b/,\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])(?:\\/\\*[\\w\\W]*?\\*\\/|\\/\\/.*)/,\n\t\tlookbehind: true\n\t}\n});\n\n// Shell-like comments are matched after strings, because they are less\n// common than strings containing hashes...\nPrism.languages.insertBefore('php', 'class-name', {\n\t'shell-comment': {\n\t\tpattern: /(^|[^\\\\])#.*/,\n\t\tlookbehind: true,\n\t\talias: 'comment'\n\t}\n});\n\nPrism.languages.insertBefore('php', 'keyword', {\n\t'delimiter': /\\?>|<\\?(?:php)?/i,\n\t'variable': /\\$\\w+\\b/i,\n\t'package': {\n\t\tpattern: /(\\\\|namespace\\s+|use\\s+)[\\w\\\\]+/,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /\\\\/\n\t\t}\n\t}\n});\n\n// Must be defined after the function pattern\nPrism.languages.insertBefore('php', 'operator', {\n\t'property': {\n\t\tpattern: /(->)[\\w]+/,\n\t\tlookbehind: true\n\t}\n});\n\n// Add HTML support of the markup language exists\nif (Prism.languages.markup) {\n\n\t// Tokenize all inline PHP blocks that are wrapped in <?php ?>\n\t// This allows for easy PHP + markup highlighting\n\tPrism.hooks.add('before-highlight', function(env) {\n\t\tif (env.language !== 'php') {\n\t\t\treturn;\n\t\t}\n\n\t\tenv.tokenStack = [];\n\n\t\tenv.backupCode = env.code;\n\t\tenv.code = env.code.replace(/(?:<\\?php|<\\?)[\\w\\W]*?(?:\\?>)/ig, function(match) {\n\t\t\tenv.tokenStack.push(match);\n\n\t\t\treturn '{{{PHP' + env.tokenStack.length + '}}}';\n\t\t});\n\t});\n\n\t// Restore env.code for other plugins (e.g. line-numbers)\n\tPrism.hooks.add('before-insert', function(env) {\n\t\tif (env.language === 'php') {\n\t\t\tenv.code = env.backupCode;\n\t\t\tdelete env.backupCode;\n\t\t}\n\t});\n\n\t// Re-insert the tokens after highlighting\n\tPrism.hooks.add('after-highlight', function(env) {\n\t\tif (env.language !== 'php') {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, t; t = env.tokenStack[i]; i++) {\n\t\t\t// The replace prevents $$, $&, $`, $', $n, $nn from being interpreted as special patterns\n\t\t\tenv.highlightedCode = env.highlightedCode.replace('{{{PHP' + (i + 1) + '}}}', Prism.highlight(t, env.grammar, 'php').replace(/\\$/g, '$$$$'));\n\t\t}\n\n\t\tenv.element.innerHTML = env.highlightedCode;\n\t});\n\n\t// Wrap tokens in classes that are missing them\n\tPrism.hooks.add('wrap', function(env) {\n\t\tif (env.language === 'php' && env.type === 'markup') {\n\t\t\tenv.content = env.content.replace(/(\\{\\{\\{PHP[0-9]+\\}\\}\\})/g, \"<span class=\\\"token php\\\">$1</span>\");\n\t\t}\n\t});\n\n\t// Add the rules before all others\n\tPrism.languages.insertBefore('php', 'comment', {\n\t\t'markup': {\n\t\t\tpattern: /<[^?]\\/?(.*?)>/,\n\t\t\tinside: Prism.languages.markup\n\t\t},\n\t\t'php': /\\{\\{\\{PHP[0-9]+\\}\\}\\}/\n\t});\n}\n","/* */ \n\"format cjs\";\n(function(Prism) {\n\n// Ignore comments starting with { to privilege string interpolation highlighting\nvar comment = /#(?!\\{).+/,\n interpolation = {\n \tpattern: /#\\{[^}]+\\}/,\n \talias: 'variable'\n };\n\nPrism.languages.coffeescript = Prism.languages.extend('javascript', {\n\t'comment': comment,\n\t'string': [\n\n\t\t// Strings are multiline\n\t\t/'(?:\\\\?[^\\\\])*?'/,\n\n\t\t{\n\t\t\t// Strings are multiline\n\t\t\tpattern: /\"(?:\\\\?[^\\\\])*?\"/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t}\n\t],\n\t'keyword': /\\b(and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n\t'class-member': {\n\t\tpattern: /@(?!\\d)\\w+/,\n\t\talias: 'variable'\n\t}\n});\n\nPrism.languages.insertBefore('coffeescript', 'comment', {\n\t'multiline-comment': {\n\t\tpattern: /###[\\s\\S]+?###/,\n\t\talias: 'comment'\n\t},\n\n\t// Block regexp can contain comments and interpolation\n\t'block-regex': {\n\t\tpattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n\t\talias: 'regex',\n\t\tinside: {\n\t\t\t'comment': comment,\n\t\t\t'interpolation': interpolation\n\t\t}\n\t}\n});\n\nPrism.languages.insertBefore('coffeescript', 'string', {\n\t'inline-javascript': {\n\t\tpattern: /`(?:\\\\?[\\s\\S])*?`/,\n\t\tinside: {\n\t\t\t'delimiter': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'punctuation'\n\t\t\t},\n\t\t\trest: Prism.languages.javascript\n\t\t}\n\t},\n\n\t// Block strings\n\t'multiline-string': [\n\t\t{\n\t\t\tpattern: /'''[\\s\\S]*?'''/,\n\t\t\talias: 'string'\n\t\t},\n\t\t{\n\t\t\tpattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n\t\t\talias: 'string',\n\t\t\tinside: {\n\t\t\t\tinterpolation: interpolation\n\t\t\t}\n\t\t}\n\t]\n\n});\n\nPrism.languages.insertBefore('coffeescript', 'keyword', {\n\t// Object property\n\t'property': /(?!\\d)\\w+(?=\\s*:(?!:))/\n});\n\n}(Prism));","/* */ \n\"format cjs\";\nPrism.languages.go = Prism.languages.extend('clike', {\n\t'keyword': /\\b(break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n\t'builtin': /\\b(bool|byte|complex(64|128)|error|float(32|64)|rune|string|u?int(8|16|32|64|)|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(ln)?|real|recover)\\b/,\n\t'boolean': /\\b(_|iota|nil|true|false)\\b/,\n\t'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n\t'number': /\\b(-?(0x[a-f\\d]+|(\\d+\\.?\\d*|\\.\\d+)(e[-+]?\\d+)?)i?)\\b/i,\n\t'string': /(\"|'|`)(\\\\?.|\\r|\\n)*?\\1/\n});\ndelete Prism.languages.go['class-name'];\n","/* */ \n\"format cjs\";\nPrism.languages.haskell= {\n\t'comment': {\n\t\tpattern: /(^|[^-!#$%*+=?&@|~.:<>^\\\\\\/])(--[^-!#$%*+=?&@|~.:<>^\\\\\\/].*|{-[\\w\\W]*?-})/m,\n\t\tlookbehind: true\n\t},\n\t'char': /'([^\\\\']|\\\\([abfnrtv\\\\\"'&]|\\^[A-Z@[\\]\\^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\\d+|o[0-7]+|x[0-9a-fA-F]+))'/,\n\t'string': /\"([^\\\\\"]|\\\\([abfnrtv\\\\\"'&]|\\^[A-Z@[\\]\\^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\\d+|o[0-7]+|x[0-9a-fA-F]+)|\\\\\\s+\\\\)*\"/,\n\t'keyword' : /\\b(case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\\b/,\n\t'import_statement' : {\n\t\t// The imported or hidden names are not included in this import\n\t\t// statement. This is because we want to highlight those exactly like\n\t\t// we do for the names in the program.\n\t\tpattern: /(\\r?\\n|\\r|^)\\s*import\\s+(qualified\\s+)?([A-Z][_a-zA-Z0-9']*)(\\.[A-Z][_a-zA-Z0-9']*)*(\\s+as\\s+([A-Z][_a-zA-Z0-9']*)(\\.[A-Z][_a-zA-Z0-9']*)*)?(\\s+hiding\\b)?/m,\n\t\tinside: {\n\t\t\t'keyword': /\\b(import|qualified|as|hiding)\\b/\n\t\t}\n\t},\n\t// These are builtin variables only. Constructors are highlighted later as a constant.\n\t'builtin': /\\b(abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b/,\n\t// decimal integers and floating point numbers | octal integers | hexadecimal integers\n\t'number' : /\\b(\\d+(\\.\\d+)?(e[+-]?\\d+)?|0o[0-7]+|0x[0-9a-f]+)\\b/i,\n\t// Most of this is needed because of the meaning of a single '.'.\n\t// If it stands alone freely, it is the function composition.\n\t// It may also be a separator between a module name and an identifier => no\n\t// operator. If it comes together with other special characters it is an\n\t// operator too.\n\t'operator' : /\\s\\.\\s|[-!#$%*+=?&@|~.:<>^\\\\\\/]*\\.[-!#$%*+=?&@|~.:<>^\\\\\\/]+|[-!#$%*+=?&@|~.:<>^\\\\\\/]+\\.[-!#$%*+=?&@|~.:<>^\\\\\\/]*|[-!#$%*+=?&@|~:<>^\\\\\\/]+|`([A-Z][_a-zA-Z0-9']*\\.)*[_a-z][_a-zA-Z0-9']*`/,\n\t// In Haskell, nearly everything is a variable, do not highlight these.\n\t'hvariable': /\\b([A-Z][_a-zA-Z0-9']*\\.)*[_a-z][_a-zA-Z0-9']*\\b/,\n\t'constant': /\\b([A-Z][_a-zA-Z0-9']*\\.)*[A-Z][_a-zA-Z0-9']*\\b/,\n\t'punctuation' : /[{}[\\];(),.:]/\n};\n","/* */ \n\"format cjs\";\nPrism.languages.java = Prism.languages.extend('clike', {\n\t'keyword': /\\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\\b/,\n\t'number': /\\b0b[01]+\\b|\\b0x[\\da-f]*\\.?[\\da-fp\\-]+\\b|\\b\\d*\\.?\\d+(?:e[+-]?\\d+)?[df]?\\b/i,\n\t'operator': {\n\t\tpattern: /(^|[^.])(?:\\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\\|[|=]?|\\*=?|\\/=?|%=?|\\^=?|[?:~])/m,\n\t\tlookbehind: true\n\t}\n});","/* */ \n\"format cjs\";\nPrism.languages.lua = {\n\t'comment': /^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,\n\t// \\z may be used to skip the following space\n\t'string': /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[\\s\\S]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,\n\t'number': /\\b0x[a-f\\d]+\\.?[a-f\\d]*(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|\\.?\\d*(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,\n\t'keyword': /\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,\n\t'function': /(?!\\d)\\w+(?=\\s*(?:[({]))/,\n\t'operator': [\n\t\t/[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,\n\t\t{\n\t\t\t// Match \"..\" but don't break \"...\"\n\t\t\tpattern: /(^|[^.])\\.\\.(?!\\.)/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'punctuation': /[\\[\\](){},;]|\\.+|:+/\n};","/* */ \n\"format cjs\";\nPrism.languages.matlab = {\n\t// We put string before comment, because of printf() patterns that contain \"%\"\n\t'string': /\\B'(?:''|[^'\\n])*'/,\n\t'comment': [\n\t\t/%\\{[\\s\\S]*?\\}%/,\n\t\t/%.+/\n\t],\n\t// FIXME We could handle imaginary numbers as a whole\n\t'number': /\\b-?(?:\\d*\\.?\\d+(?:[eE][+-]?\\d+)?(?:[ij])?|[ij])\\b/,\n\t'keyword': /\\b(?:break|case|catch|continue|else|elseif|end|for|function|if|inf|NaN|otherwise|parfor|pause|pi|return|switch|try|while)\\b/,\n\t'function': /(?!\\d)\\w+(?=\\s*\\()/,\n\t'operator': /\\.?[*^\\/\\\\']|[+\\-:@]|[<>=~]=?|&&?|\\|\\|?/,\n\t'punctuation': /\\.{3}|[.,;\\[\\](){}!]/\n};","/* */ \n\"format cjs\";\nPrism.languages.perl = {\n\t'comment': [\n\t\t{\n\t\t\t// POD\n\t\t\tpattern: /(^\\s*)=\\w+[\\s\\S]*?=cut.*/m,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\$])#.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t// TODO Could be nice to handle Heredoc too.\n\t'string': [\n\t\t// q/.../\n\t\t/\\b(?:q|qq|qx|qw)\\s*([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\n\t\t// q a...a\n\t\t/\\b(?:q|qq|qx|qw)\\s+([a-zA-Z0-9])(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\n\t\t// q(...)\n\t\t/\\b(?:q|qq|qx|qw)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n\t\n\t\t// q{...}\n\t\t/\\b(?:q|qq|qx|qw)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}/,\n\t\n\t\t// q[...]\n\t\t/\\b(?:q|qq|qx|qw)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n\t\n\t\t// q<...>\n\t\t/\\b(?:q|qq|qx|qw)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n\n\t\t// \"...\", `...`\n\t\t/(\"|`)(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\n\t\t// '...'\n\t\t// FIXME Multi-line single-quoted strings are not supported as they would break variables containing '\n\t\t/'(?:[^'\\\\\\r\\n]|\\\\.)*'/\n\t],\n\t'regex': [\n\t\t// m/.../\n\t\t/\\b(?:m|qr)\\s*([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1[msixpodualngc]*/,\n\t\n\t\t// m a...a\n\t\t/\\b(?:m|qr)\\s+([a-zA-Z0-9])(?:[^\\\\]|\\\\.)*?\\1[msixpodualngc]*/,\n\t\n\t\t// m(...)\n\t\t/\\b(?:m|qr)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngc]*/,\n\t\n\t\t// m{...}\n\t\t/\\b(?:m|qr)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngc]*/,\n\t\n\t\t// m[...]\n\t\t/\\b(?:m|qr)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngc]*/,\n\t\n\t\t// m<...>\n\t\t/\\b(?:m|qr)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngc]*/,\n\n\t\t// The lookbehinds prevent -s from breaking\n\t\t// FIXME We don't handle change of separator like s(...)[...]\n\t\t// s/.../.../\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\2(?:[^\\\\]|\\\\[\\s\\S])*?\\2[msixpodualngcer]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\n\t\t// s a...a...a\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s+([a-zA-Z0-9])(?:[^\\\\]|\\\\[\\s\\S])*?\\2(?:[^\\\\]|\\\\[\\s\\S])*?\\2[msixpodualngcer]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\n\t\t// s(...)(...)\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngcer]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\n\t\t// s{...}{...}\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngcer]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\n\t\t// s[...][...]\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngcer]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\n\t\t// s<...><...>\n\t\t{\n\t\t\tpattern: /(^|[^-]\\b)(?:s|tr|y)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngcer]*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\n\t\t// /.../\n\t\t// The look-ahead tries to prevent two divisions on\n\t\t// the same line from being highlighted as regex.\n\t\t// This does not support multi-line regex.\n\t\t/\\/(?:[^\\/\\\\\\r\\n]|\\\\.)*\\/[msixpodualngc]*(?=\\s*(?:$|[\\r\\n,.;})&|\\-+*~<>!?^]|(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\\b))/\n\t],\n\n\t// FIXME Not sure about the handling of ::, ', and #\n\t'variable': [\n\t\t// ${^POSTMATCH}\n\t\t/[&*$@%]\\{\\^[A-Z]+\\}/,\n\t\t// $^V\n\t\t/[&*$@%]\\^[A-Z_]/,\n\t\t// ${...}\n\t\t/[&*$@%]#?(?=\\{)/,\n\t\t// $foo\n\t\t/[&*$@%]#?((::)*'?(?!\\d)[\\w$]+)+(::)*/i,\n\t\t// $1\n\t\t/[&*$@%]\\d+/,\n\t\t// $_, @_, %!\n\t\t// The negative lookahead prevents from breaking the %= operator\n\t\t/(?!%=)[$@%][!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~]/\n\t],\n\t'filehandle': {\n\t\t// <>, <FOO>, _\n\t\tpattern: /<(?![<=])\\S*>|\\b_\\b/,\n\t\talias: 'symbol'\n\t},\n\t'vstring': {\n\t\t// v1.2, 1.2.3\n\t\tpattern: /v\\d+(\\.\\d+)*|\\d+(\\.\\d+){2,}/,\n\t\talias: 'string'\n\t},\n\t'function': {\n\t\tpattern: /sub [a-z0-9_]+/i,\n\t\tinside: {\n\t\t\tkeyword: /sub/\n\t\t}\n\t},\n\t'keyword': /\\b(any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|say|state|sub|switch|undef|unless|until|use|when|while)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f](_?[\\dA-Fa-f])*|0b[01](_?[01])*|(\\d(_?\\d)*)?\\.?\\d(_?\\d)*([Ee][+-]?\\d+)?)\\b/,\n\t'operator': /-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b|\\+[+=]?|-[-=>]?|\\*\\*?=?|\\/\\/?=?|=[=~>]?|~[~=]?|\\|\\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\\.(?:=|\\.\\.?)?|[\\\\?]|\\bx(?:=|\\b)|\\b(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\\b/,\n\t'punctuation': /[{}[\\];(),:]/\n};\n","/* */ \n\"format cjs\";\nPrism.languages.python= {\n\t'triple-quoted-string': {\n\t\tpattern: /\"\"\"[\\s\\S]+?\"\"\"|'''[\\s\\S]+?'''/,\n\t\talias: 'string'\n\t},\n\t'comment': {\n\t\tpattern: /(^|[^\\\\])#.*/,\n\t\tlookbehind: true\n\t},\n\t'string': /(\"|')(?:\\\\?.)*?\\1/,\n\t'function' : {\n\t\tpattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\\()/g,\n\t\tlookbehind: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\bclass\\s+)[a-z0-9_]+/i,\n\t\tlookbehind: true\n\t},\n\t'keyword' : /\\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\\b/,\n\t'boolean' : /\\b(?:True|False)\\b/,\n\t'number' : /\\b-?(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n\t'operator' : /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]|\\b(?:or|and|not)\\b/,\n\t'punctuation' : /[{}[\\];(),.:]/\n};\n","/* */ \n\"format cjs\";\nPrism.languages.r = {\n\t'comment': /#.*/,\n\t'string': /(['\"])(?:\\\\?.)*?\\1/,\n\t'percent-operator': {\n\t\t// Includes user-defined operators\n\t\t// and %%, %*%, %/%, %in%, %o%, %x%\n\t\tpattern: /%[^%\\s]*%/,\n\t\talias: 'operator'\n\t},\n\t'boolean': /\\b(?:TRUE|FALSE)\\b/,\n\t'ellipsis': /\\.\\.(?:\\.|\\d+)/,\n\t'number': [\n\t\t/\\b(?:NaN|Inf)\\b/,\n\t\t/\\b(?:0x[\\dA-Fa-f]+(?:\\.\\d*)?|\\d*\\.?\\d+)(?:[EePp][+-]?\\d+)?[iL]?\\b/\n\t],\n\t'keyword': /\\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\\b/,\n\t'operator': /->?>?|<(?:=|<?-)?|[>=!]=?|::?|&&?|\\|\\|?|[+*\\/^$@~]/,\n\t'punctuation': /[(){}\\[\\],;]/\n};","/* */ \n\"format cjs\";\n/**\n * Original by Samuel Flores\n *\n * Adds the following new token classes:\n * \t\tconstant, builtin, variable, symbol, regex\n */\n(function(Prism) {\n\tPrism.languages.ruby = Prism.languages.extend('clike', {\n\t\t'comment': /#(?!\\{[^\\r\\n]*?\\}).*/,\n\t\t'keyword': /\\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\\b/\n\t});\n\n\tvar interpolation = {\n\t\tpattern: /#\\{[^}]+\\}/,\n\t\tinside: {\n\t\t\t'delimiter': {\n\t\t\t\tpattern: /^#\\{|\\}$/,\n\t\t\t\talias: 'tag'\n\t\t\t},\n\t\t\trest: Prism.util.clone(Prism.languages.ruby)\n\t\t}\n\t};\n\n\tPrism.languages.insertBefore('ruby', 'keyword', {\n\t\t'regex': [\n\t\t\t{\n\t\t\t\tpattern: /%r([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1[gim]{0,3}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%r\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[gim]{0,3}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// Here we need to specifically allow interpolation\n\t\t\t\tpattern: /%r\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}[gim]{0,3}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%r\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\][gim]{0,3}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /%r<(?:[^<>\\\\]|\\\\[\\s\\S])*>[gim]{0,3}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation': interpolation\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\r\\n])+\\/[gim]{0,3}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\t\t\tlookbehind: true\n\t\t\t}\n\t\t],\n\t\t'variable': /[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\\b)/,\n\t\t'symbol': /:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\\b)/\n\t});\n\n\tPrism.languages.insertBefore('ruby', 'number', {\n\t\t'builtin': /\\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\\b/,\n\t\t'constant': /\\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\\b)/\n\t});\n\n\tPrism.languages.ruby.string = [\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?([^a-zA-Z0-9\\s\\{\\(\\[<])(?:[^\\\\]|\\\\[\\s\\S])*?\\1/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t// Here we need to specifically allow interpolation\n\t\t\tpattern: /%[qQiIwWxs]?\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /%[qQiIwWxs]?<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpattern: /(\"|')(#\\{[^}]+\\}|\\\\(?:\\r?\\n|\\r)|\\\\?.)*?\\1/,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t}\n\t];\n}(Prism));","/* */ \n\"format cjs\";\n(function(Prism) {\n\tvar insideString = {\n\t\tvariable: [\n\t\t\t// Arithmetic Environment\n\t\t\t{\n\t\t\t\tpattern: /\\$?\\(\\([\\w\\W]+?\\)\\)/,\n\t\t\t\tinside: {\n\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\tvariable: [{\n\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\w\\W]+)\\)\\)/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\$\\(\\(/,\n\t\t\t\t\t],\n\t\t\t\t\tnumber: /\\b-?(?:0x[\\dA-Fa-f]+|\\d*\\.?\\d+(?:[Ee]-?\\d+)?)\\b/,\n\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\toperator: /--?|-=|\\+\\+?|\\+=|!=?|~|\\*\\*?|\\*=|\\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\\^=?|\\|\\|?|\\|=|\\?|:/,\n\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\tpunctuation: /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// Command Substitution\n\t\t\t{\n\t\t\t\tpattern: /\\$\\([^)]+\\)|`[^`]+`/,\n\t\t\t\tinside: {\n\t\t\t\t\tvariable: /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t/\\$(?:[a-z0-9_#\\?\\*!@]+|\\{[^}]+\\})/i\n\t\t],\n\t};\n\n\tPrism.languages.bash = {\n\t\t'shebang': {\n\t\t\tpattern: /^#!\\s*\\/bin\\/bash|^#!\\s*\\/bin\\/sh/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\"{\\\\])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': [\n\t\t\t//Support for Here-Documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<\\s*)(?:\"|')?(\\w+?)(?:\"|')?\\s*\\r?\\n(?:[\\s\\S])*?\\r?\\n\\2/g,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t{\n\t\t\t\tpattern: /(\"|')(?:\\\\?[\\s\\S])*?\\1/g,\n\t\t\t\tinside: insideString\n\t\t\t}\n\t\t],\n\t\t'variable': insideString.variable,\n\t\t// Originally based on http://ss64.com/bash/\n\t\t'function': {\n\t\t\tpattern: /(^|\\s|;|\\||&)(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|\\s|;|\\||&)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword': {\n\t\t\tpattern: /(^|\\s|;|\\||&)(?:let|:|\\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|\\s|;|\\||&)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|\\s|;|\\||&)(?:true|false)(?=$|\\s|;|\\||&)/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'operator': /&&?|\\|\\|?|==?|!=?|<<<?|>>|<=?|>=?|=~/,\n\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];]/\n\t};\n\n\tvar inside = insideString.variable[1].inside;\n\tinside['function'] = Prism.languages.bash['function'];\n\tinside.keyword = Prism.languages.bash.keyword;\n\tinside.boolean = Prism.languages.bash.boolean;\n\tinside.operator = Prism.languages.bash.operator;\n\tinside.punctuation = Prism.languages.bash.punctuation;\n})(Prism);","/* */ \n\"format cjs\";\n// issues: nested multiline comments\nPrism.languages.swift = Prism.languages.extend('clike', {\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\((?:[^()]|\\([^)]+\\))+\\)|\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\\\\\((?:[^()]|\\([^)]+\\))+\\)/,\n\t\t\t\tinside: {\n\t\t\t\t\tdelimiter: {\n\t\t\t\t\t\tpattern: /^\\\\\\(|\\)$/,\n\t\t\t\t\t\talias: 'variable'\n\t\t\t\t\t}\n\t\t\t\t\t// See rest below\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t'keyword': /\\b(as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|Protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\\b/,\n\t'number': /\\b([\\d_]+(\\.[\\de_]+)?|0x[a-f0-9_]+(\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b/i,\n\t'constant': /\\b(nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\\b/,\n\t'atrule': /@\\b(IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\\b/,\n\t'builtin': /\\b([A-Z]\\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\\b/\n});\nPrism.languages.swift['string'].inside['interpolation'].inside.rest = Prism.util.clone(Prism.languages.swift);","/* */ \n\"format cjs\";\nPrism.languages.objectivec = Prism.languages.extend('c', {\n\t'keyword': /\\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\\b|(@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n\t'string': /(\"|')(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|@\"(\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n\t'operator': /-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n});\n","/* */ \n\"format cjs\";\nPrism.languages.scala = Prism.languages.extend('java', {\n\t'keyword': /<-|=>|\\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\\b/,\n\t'string': /\"\"\"[\\W\\w]*?\"\"\"|\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^\\\\\\r\\n']|\\\\.[^\\\\']*)'/,\n\t'builtin': /\\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\\b/,\n\t'number': /\\b(?:0x[\\da-f]*\\.?[\\da-f]+|\\d*\\.?\\d+e?\\d*[dfl]?)\\b/i,\n\t'symbol': /'[^\\d\\s\\\\]\\w*/\n});\ndelete Prism.languages.scala['class-name'];\ndelete Prism.languages.scala['function'];\n","/* */ \n\"format cjs\";\n/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', /<!--[\\s\\S]*?-->/)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /<tag(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^<!--[\\s\\S]*?-->|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\<!\\[_*`]| {2,}\\n|$)/\n};\n\ninline._inside = /(?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*/;\ninline._href = /\\s*<?([\\s\\S]*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^<a /i.test(cap[0])) {\n this.inLink = true;\n } else if (this.inLink && /^<\\/a>/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '\\n</code></pre>';\n }\n\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang, true)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '\\n</code></pre>\\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '<blockquote>\\n' + quote + '</blockquote>\\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return '<h'\n + level\n + ' id=\"'\n + this.options.headerPrefix\n + raw.toLowerCase().replace(/[^\\w]+/g, '-')\n + '\">'\n + text\n + '</h'\n + level\n + '>\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '</' + type + '>\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '<li>' + text + '</li>\\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '<p>' + text + '</p>\\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + '<tbody>\\n'\n + body\n + '</tbody>\\n'\n + '</table>\\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '<tr>\\n' + content + '</tr>\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '</' + type + '>\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '<strong>' + text + '</strong>';\n};\n\nRenderer.prototype.em = function(text) {\n return '<em>' + text + '</em>';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '<code>' + text + '</code>';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '<br/>' : '<br>';\n};\n\nRenderer.prototype.del = function(text) {\n return '<del>' + text + '</del>';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n return html.replace(/&([#\\w]+);/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '<p>An error occured:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","module.exports = require(\"npm:marked@0.3.5/lib/marked.js\");","'use strict';\n\nimport {Pipe} from 'angular2/core';\nimport {isString, stringify, isBlank} from 'angular2/src/facade/lang';\nimport {BaseException} from 'angular2/src/facade/exceptions';\nimport {JsonPointer} from './JsonPointer';\n\nimport Prism from 'prismjs';\nimport 'prismjs/components/prism-actionscript.js';\nimport 'prismjs/components/prism-c.js';\nimport 'prismjs/components/prism-cpp.js';\nimport 'prismjs/components/prism-csharp.js';\nimport 'prismjs/components/prism-php.js';\nimport 'prismjs/components/prism-coffeescript.js';\nimport 'prismjs/components/prism-go.js';\nimport 'prismjs/components/prism-haskell.js';\nimport 'prismjs/components/prism-java.js';\nimport 'prismjs/components/prism-lua.js';\nimport 'prismjs/components/prism-matlab.js';\nimport 'prismjs/components/prism-perl.js';\nimport 'prismjs/components/prism-python.js';\nimport 'prismjs/components/prism-r.js';\nimport 'prismjs/components/prism-ruby.js';\nimport 'prismjs/components/prism-bash.js';\nimport 'prismjs/components/prism-swift.js';\nimport 'prismjs/components/prism-objectivec.js';\nimport 'prismjs/components/prism-scala.js';\n\nimport 'prismjs/themes/prism-dark.css!css';\nimport 'hint.css/hint.base.css!css';\n\nimport marked from 'marked';\n\n// in gfm mode marked doesn't parse #Heading (without space after #) as heading\n// https://github.com/chjj/marked/issues/642\nmarked.Lexer.rules.gfm.heading = marked.Lexer.rules.normal.heading;\nmarked.Lexer.rules.tables.heading = marked.Lexer.rules.normal.heading;\n\nmarked.setOptions({\n renderer: new marked.Renderer(),\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n smartLists: true,\n smartypants: false\n});\n\nclass InvalidPipeArgumentException extends BaseException {\n constructor(type, value) {\n super(`Invalid argument '${value}' for pipe '${stringify(type)}'`);\n }\n}\n\n@Pipe({ name: 'keys' })\nexport class KeysPipe {\n transform(value) {\n if (isBlank(value)) return value;\n if (typeof value !== 'object') {\n throw new InvalidPipeArgumentException(ValuesPipe, value);\n }\n return Object.keys(value);\n }\n}\n\n@Pipe({ name: 'values' })\nexport class ValuesPipe {\n transform(value) {\n if (isBlank(value)) return value;\n if (typeof value !== 'object') {\n throw new InvalidPipeArgumentException(ValuesPipe, value);\n }\n return Object.keys(value).map(key => value[key]);\n }\n}\n\n@Pipe({ name: 'jsonPointerEscape' })\nexport class JsonPointerEscapePipe {\n transform(value) {\n if (isBlank(value)) return value;\n if (!isString(value)) {\n throw new InvalidPipeArgumentException(JsonPointerEscapePipe, value);\n }\n return JsonPointer.escape(value);\n }\n}\n\n@Pipe({ name: 'marked' })\nexport class MarkedPipe {\n transform(value) {\n if (isBlank(value)) return value;\n if (!isString(value)) {\n throw new InvalidPipeArgumentException(JsonPointerEscapePipe, value);\n }\n return `<span class=\"redoc-markdown-block\">${marked(value)}</span>`;\n }\n}\n\nconst langMap = {\n 'c++': 'cpp',\n 'c#': 'csharp',\n 'objective-c': 'objectivec',\n 'shell': 'bash',\n 'viml': 'vim'\n};\n\n@Pipe({ name: 'prism' })\nexport class PrismPipe {\n transform(value, args) {\n if (isBlank(args) || args.length === 0) {\n throw new BaseException('Prism pipe requires one argument');\n }\n if (isBlank(value)) return value;\n if (!isString(value)) {\n throw new InvalidPipeArgumentException(JsonPointerEscapePipe, value);\n }\n let lang = args[0].toString().trim().toLowerCase();\n if (langMap[lang]) lang = langMap[lang];\n\n let grammar = Prism.languages[lang];\n //fallback to clike\n if (!grammar) grammar = Prism.languages.clike;\n return Prism.highlight(value, grammar);\n }\n}\n\n@Pipe({ name: 'encodeURIComponent' })\nexport class EncodeURIComponentPipe {\n transform(value) {\n if (isBlank(value)) return value;\n if (!isString(value)) {\n throw new InvalidPipeArgumentException(EncodeURIComponentPipe, value);\n }\n return encodeURIComponent(value);\n }\n}\n","'use strict';\nimport {Component, ChangeDetectionStrategy} from 'angular2/core';\nimport {CORE_DIRECTIVES, JsonPipe, AsyncPipe} from 'angular2/common';\nimport SchemaManager from '../utils/SchemaManager';\nimport JsonPointer from '../utils/JsonPointer';\nimport {MarkedPipe, JsonPointerEscapePipe} from '../utils/pipes';\n\nexport { SchemaManager };\n\n// common inputs for all components\nlet commonInputs = ['pointer']; // json pointer to the schema chunk\n\n// internal helper function\nfunction safeConcat(a, b) {\n let res = a && a.slice() || [];\n b = (b == null) ? [] : b;\n return res.concat(b);\n}\n\nfunction defaults(target, src) {\n var props = Object.keys(src);\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n if (target[key] === undefined) {\n target[key] = src[key];\n }\n }\n return target;\n}\n\nfunction snapshot(obj) {\n if(obj == null || typeof(obj) != 'object') {\n return obj;\n }\n\n var temp = new obj.constructor();\n\n for(var key in obj) {\n if (obj.hasOwnProperty(key)) {\n temp[key] = snapshot(obj[key]);\n }\n }\n\n return temp;\n}\n\n/**\n * Class decorator\n * Simplifies setup of component metainfo\n * All options are options from either Component or View angular2 decorator\n * For detailed info look angular2 doc\n * @param {Object} options - component options\n * @param {string[]} options.inputs - component inputs\n * @param {*[]} options.directives - directives used by component\n * (except CORE_DIRECTIVES)\n * @param {*[]} options.pipes - pipes used by component\n * @param {*[]} options.providers - component providers\n * @param {string} options.templateUrl - path to component template\n * @param {string} options.template - component template html\n * @param {string} options.styles - component css styles\n */\nexport function RedocComponent(options) {\n let inputs = safeConcat(options.inputs, commonInputs);\n let directives = safeConcat(options.directives, CORE_DIRECTIVES);\n let pipes = safeConcat(options.pipes, [JsonPointerEscapePipe, MarkedPipe, JsonPipe, AsyncPipe]);\n\n return function decorator(target) {\n\n let componentDecorator = Component({\n selector: options.selector,\n inputs: inputs,\n outputs: options.outputs,\n providers: options.providers,\n changeDetection: options.changeDetection || ChangeDetectionStrategy.Detached,\n templateUrl: options.templateUrl,\n template: options.template,\n styles: options.styles,\n directives: directives,\n pipes: pipes\n });\n\n return componentDecorator(target) || target;\n };\n}\n\n/**\n * Generic Component\n * @class\n */\n@Reflect.metadata('parameters', [[SchemaManager]])\nexport class BaseComponent {\n constructor(schemaMgr) {\n this.schemaMgr = schemaMgr;\n this.componentSchema = null;\n }\n\n /**\n * onInit method is run by angular2 after all component inputs are resolved\n */\n ngOnInit() {\n this.componentSchema = snapshot(this.schemaMgr.byPointer(this.pointer || ''));\n this.prepareModel();\n this.init();\n }\n\n ngOnDestroy() {\n this.destroy();\n }\n\n /**\n * simple in-place schema dereferencing. Schema is already bundled so no need in global dereferencing.\n */\n dereference(schema = Object.assign({}, this.componentSchema)) {\n let dereferencedCache = {};\n\n let resolve = (schema) => {\n let resolvedRef;\n if (schema && schema.$ref) {\n resolvedRef = schema.$ref;\n let resolved = this.schemaMgr.byPointer(schema.$ref);\n let baseName = JsonPointer.baseName(schema.$ref);\n if (!dereferencedCache[schema.$ref]) {\n // if resolved schema doesn't have title use name from ref\n resolved = Object.assign({}, resolved);\n resolved._pointer = schema.$ref;\n } else {\n // for circular referenced save only title and type\n resolved = {\n title: resolved.title,\n type: resolved.type\n };\n }\n\n dereferencedCache[schema.$ref] = dereferencedCache[schema.$ref] ? dereferencedCache[schema.$ref] + 1 : 1;\n\n resolved.title = resolved.title || baseName;\n\n let keysCount = Object.keys(schema).length;\n if ( keysCount > 2 || (keysCount === 2 && !schema.description) ) {\n // allow only description field on the same level as $ref because it is\n // common pattern over specs in the wild\n console.warn(`other properties defined at the same level as $ref at '${this.pointer}'.\n They are IGNORRED according to JsonSchema spec`);\n }\n\n schema = schema.description ? {\n description: schema.description\n } : {};\n Object.assign(schema, resolved);\n }\n\n Object.keys(schema).forEach((key) => {\n let value = schema[key];\n if (value && typeof value === 'object') {\n schema[key] = resolve(value);\n }\n });\n if (resolvedRef) dereferencedCache[resolvedRef] = dereferencedCache[resolvedRef] ? dereferencedCache[resolvedRef] - 1 : 0;\n return schema;\n };\n\n this.componentSchema = snapshot(resolve(schema, 1));\n }\n\n static joinAllOf(schema, opts) {\n function merge(into, schemas) {\n for (let subSchema of schemas) {\n if (opts && opts.omitParent && subSchema.discriminator) continue;\n // TODO: add support for merge array schemas\n if (typeof subSchema !== 'object') {\n let errMessage = `Items of allOf should be Object: ${typeof subSchema} found\n ${subSchema}`;\n throw new Error(errMessage);\n }\n\n if (into.type && subSchema.type && into.type !== subSchema.type) {\n let errMessage = `allOf merging error: schemas with different types can't be merged`;\n throw new Error(errMessage);\n }\n\n\n if (into.type === 'array') {\n console.warn('allOf: subschemas with type array are not supported yet');\n }\n\n // TODO: add check if can be merged correctly (no different properties with the same name)\n into.type = into.type || subSchema.type;\n if (into.type === 'object' && subSchema.properties) {\n into.properties || (into.properties = {});\n Object.assign(into.properties, subSchema.properties);\n Object.keys(subSchema.properties).forEach(propName => {\n if (!subSchema.properties[propName]._pointer) {\n subSchema.properties[propName]._pointer = subSchema._pointer ?\n JsonPointer.join(subSchema._pointer, ['properties', propName]) : null;\n }\n });\n }\n if (into.type === 'object' && subSchema.required) {\n into.required || (into.required = []);\n into.required.push(...subSchema.required);\n }\n // don't merge _pointer\n subSchema._pointer = null;\n defaults(into, subSchema);\n }\n into.allOf = null;\n }\n\n function traverse(obj) {\n if (obj === null || typeof(obj) !== 'object') {\n return;\n }\n\n for(var key in obj) {\n if (obj.hasOwnProperty(key)) {\n traverse(obj[key]);\n }\n }\n\n if (obj.allOf) {\n merge(obj, obj.allOf);\n }\n }\n\n traverse(schema);\n }\n\n /**\n * Used to prepare model based on component schema\n * @abstract\n */\n prepareModel() {}\n\n /**\n * Used to initialize component. Run after prepareModel\n * @abstract\n */\n init() {}\n\n /**\n + Used to destroy component\n * @abstract\n */\n destroy() {}\n}\n","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\nvar ObservableStrategy = (function () {\r\n function ObservableStrategy() {\r\n }\r\n ObservableStrategy.prototype.createSubscription = function (async, updateLatestValue) {\r\n return async_1.ObservableWrapper.subscribe(async, updateLatestValue, function (e) { throw e; });\r\n };\r\n ObservableStrategy.prototype.dispose = function (subscription) { async_1.ObservableWrapper.dispose(subscription); };\r\n ObservableStrategy.prototype.onDestroy = function (subscription) { async_1.ObservableWrapper.dispose(subscription); };\r\n return ObservableStrategy;\r\n})();\r\nvar PromiseStrategy = (function () {\r\n function PromiseStrategy() {\r\n }\r\n PromiseStrategy.prototype.createSubscription = function (async, updateLatestValue) {\r\n return async.then(updateLatestValue);\r\n };\r\n PromiseStrategy.prototype.dispose = function (subscription) { };\r\n PromiseStrategy.prototype.onDestroy = function (subscription) { };\r\n return PromiseStrategy;\r\n})();\r\nvar _promiseStrategy = new PromiseStrategy();\r\nvar _observableStrategy = new ObservableStrategy();\r\nvar __unused; // avoid unused import when Promise union types are erased\r\n/**\r\n * The `async` pipe subscribes to an Observable or Promise and returns the latest value it has\r\n * emitted.\r\n * When a new value is emitted, the `async` pipe marks the component to be checked for changes.\r\n *\r\n * ### Example\r\n *\r\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\r\n * promise.\r\n *\r\n * {@example core/pipes/ts/async_pipe/async_pipe_example.ts region='AsyncPipe'}\r\n *\r\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\r\n * to the view. Every 500ms, the `time` Observable updates the view with the current time.\r\n *\r\n * ```typescript\r\n * ```\r\n */\r\nvar AsyncPipe = (function () {\r\n function AsyncPipe(_ref) {\r\n /** @internal */\r\n this._latestValue = null;\r\n /** @internal */\r\n this._latestReturnedValue = null;\r\n /** @internal */\r\n this._subscription = null;\r\n /** @internal */\r\n this._obj = null;\r\n this._strategy = null;\r\n this._ref = _ref;\r\n }\r\n AsyncPipe.prototype.ngOnDestroy = function () {\r\n if (lang_1.isPresent(this._subscription)) {\r\n this._dispose();\r\n }\r\n };\r\n AsyncPipe.prototype.transform = function (obj, args) {\r\n if (lang_1.isBlank(this._obj)) {\r\n if (lang_1.isPresent(obj)) {\r\n this._subscribe(obj);\r\n }\r\n this._latestReturnedValue = this._latestValue;\r\n return this._latestValue;\r\n }\r\n if (obj !== this._obj) {\r\n this._dispose();\r\n return this.transform(obj);\r\n }\r\n if (this._latestValue === this._latestReturnedValue) {\r\n return this._latestReturnedValue;\r\n }\r\n else {\r\n this._latestReturnedValue = this._latestValue;\r\n return core_1.WrappedValue.wrap(this._latestValue);\r\n }\r\n };\r\n /** @internal */\r\n AsyncPipe.prototype._subscribe = function (obj) {\r\n var _this = this;\r\n this._obj = obj;\r\n this._strategy = this._selectStrategy(obj);\r\n this._subscription = this._strategy.createSubscription(obj, function (value) { return _this._updateLatestValue(obj, value); });\r\n };\r\n /** @internal */\r\n AsyncPipe.prototype._selectStrategy = function (obj) {\r\n if (lang_1.isPromise(obj)) {\r\n return _promiseStrategy;\r\n }\r\n else if (async_1.ObservableWrapper.isObservable(obj)) {\r\n return _observableStrategy;\r\n }\r\n else {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(AsyncPipe, obj);\r\n }\r\n };\r\n /** @internal */\r\n AsyncPipe.prototype._dispose = function () {\r\n this._strategy.dispose(this._subscription);\r\n this._latestValue = null;\r\n this._latestReturnedValue = null;\r\n this._subscription = null;\r\n this._obj = null;\r\n };\r\n /** @internal */\r\n AsyncPipe.prototype._updateLatestValue = function (async, value) {\r\n if (async === this._obj) {\r\n this._latestValue = value;\r\n this._ref.markForCheck();\r\n }\r\n };\r\n AsyncPipe = __decorate([\r\n // avoid unused import when Promise union types are erased\r\n core_1.Pipe({ name: 'async', pure: false }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [core_1.ChangeDetectorRef])\r\n ], AsyncPipe);\r\n return AsyncPipe;\r\n})();\r\nexports.AsyncPipe = AsyncPipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmNfcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vcGlwZXMvYXN5bmNfcGlwZS50cyJdLCJuYW1lcyI6WyJPYnNlcnZhYmxlU3RyYXRlZ3kiLCJPYnNlcnZhYmxlU3RyYXRlZ3kuY29uc3RydWN0b3IiLCJPYnNlcnZhYmxlU3RyYXRlZ3kuY3JlYXRlU3Vic2NyaXB0aW9uIiwiT2JzZXJ2YWJsZVN0cmF0ZWd5LmRpc3Bvc2UiLCJPYnNlcnZhYmxlU3RyYXRlZ3kub25EZXN0cm95IiwiUHJvbWlzZVN0cmF0ZWd5IiwiUHJvbWlzZVN0cmF0ZWd5LmNvbnN0cnVjdG9yIiwiUHJvbWlzZVN0cmF0ZWd5LmNyZWF0ZVN1YnNjcmlwdGlvbiIsIlByb21pc2VTdHJhdGVneS5kaXNwb3NlIiwiUHJvbWlzZVN0cmF0ZWd5Lm9uRGVzdHJveSIsIkFzeW5jUGlwZSIsIkFzeW5jUGlwZS5jb25zdHJ1Y3RvciIsIkFzeW5jUGlwZS5uZ09uRGVzdHJveSIsIkFzeW5jUGlwZS50cmFuc2Zvcm0iLCJBc3luY1BpcGUuX3N1YnNjcmliZSIsIkFzeW5jUGlwZS5fc2VsZWN0U3RyYXRlZ3kiLCJBc3luY1BpcGUuX2Rpc3Bvc2UiLCJBc3luY1BpcGUuX3VwZGF0ZUxhdGVzdFZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxxQkFBbUQsMEJBQTBCLENBQUMsQ0FBQTtBQUM5RSxzQkFBMEQsMkJBQTJCLENBQUMsQ0FBQTtBQUN0RixxQkFPTyxlQUFlLENBQUMsQ0FBQTtBQUV2QixnREFBMkMsbUNBQW1DLENBQUMsQ0FBQTtBQUUvRTtJQUFBQTtJQVFBQyxDQUFDQTtJQVBDRCwrQ0FBa0JBLEdBQWxCQSxVQUFtQkEsS0FBVUEsRUFBRUEsaUJBQXNCQTtRQUNuREUsTUFBTUEsQ0FBQ0EseUJBQWlCQSxDQUFDQSxTQUFTQSxDQUFDQSxLQUFLQSxFQUFFQSxpQkFBaUJBLEVBQUVBLFVBQUFBLENBQUNBLElBQU1BLE1BQU1BLENB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c2UsIENPTlNUfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtPYnNlcnZhYmxlV3JhcHBlciwgT2JzZXJ2YWJsZSwgRXZlbnRFbWl0dGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcbmltcG9ydCB7XG4gIFBpcGUsXG4gIEluamVjdGFibGUsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBPbkRlc3Ryb3ksXG4gIFBpcGVUcmFuc2Zvcm0sXG4gIFdyYXBwZWRWYWx1ZVxufSBmcm9tICdhbmd1bGFyMi9jb3JlJztcblxuaW1wb3J0IHtJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9ufSBmcm9tICcuL2ludmFsaWRfcGlwZV9hcmd1bWVudF9leGNlcHRpb24nO1xuXG5jbGFzcyBPYnNlcnZhYmxlU3RyYXRlZ3kge1xuICBjcmVhdGVTdWJzY3JpcHRpb24oYXN5bmM6IGFueSwgdXBkYXRlTGF0ZXN0VmFsdWU6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIE9ic2VydmFibGVXcmFwcGVyLnN1YnNjcmliZShhc3luYywgdXBkYXRlTGF0ZXN0VmFsdWUsIGUgPT4geyB0aHJvdyBlOyB9KTtcbiAgfVxuXG4gIGRpc3Bvc2Uoc3Vic2NyaXB0aW9uOiBhbnkpOiB2b2lkIHsgT2JzZXJ2YWJsZVdyYXBwZXIuZGlzcG9zZShzdWJzY3JpcHRpb24pOyB9XG5cbiAgb25EZXN0cm95KHN1YnNjcmlwdGlvbjogYW55KTogdm9pZCB7IE9ic2VydmFibGVXcmFwcGVyLmRpc3Bvc2Uoc3Vic2NyaXB0aW9uKTsgfVxufVxuXG5jbGFzcyBQcm9taXNlU3RyYXRlZ3kge1xuICBjcmVhdGVTdWJzY3JpcHRpb24oYXN5bmM6IFByb21pc2U8YW55PiwgdXBkYXRlTGF0ZXN0VmFsdWU6ICh2OiBhbnkpID0+IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIGFzeW5jLnRoZW4odXBkYXRlTGF0ZXN0VmFsdWUpO1xuICB9XG5cbiAgZGlzcG9zZShzdWJzY3JpcHRpb246IGFueSk6IHZvaWQge31cblxuICBvbkRlc3Ryb3koc3Vic2NyaXB0aW9uOiBhbnkpOiB2b2lkIHt9XG59XG5cbnZhciBfcHJvbWlzZVN0cmF0ZWd5ID0gbmV3IFByb21pc2VTdHJhdGVneSgpO1xudmFyIF9vYnNlcnZhYmxlU3RyYXRlZ3kgPSBuZXcgT2JzZXJ2YWJsZVN0cmF0ZWd5KCk7XG52YXIgX191bnVzZWQ6IFByb21pc2U8YW55PjsgIC8vIGF2b2lkIHVudXNlZCBpbXBvcnQgd2hlbiBQcm9taXNlIHVuaW9uIHR5cGVzIGFyZSBlcmFzZWRcblxuLyoqXG4gKiBUaGUgYGFzeW5jYCBwaXBlIHN1YnNjcmliZXMgdG8gYW4gT2JzZXJ2YWJsZSBvciBQcm9taXNlIGFuZCByZXR1cm5zIHRoZSBsYXRlc3QgdmFsdWUgaXQgaGFzXG4gKiBlbWl0dGVkLlxuICogV2hlbiBhIG5ldyB2YWx1ZSBpcyBlbWl0dGVkLCB0aGUgYGFzeW5jYCBwaXBlIG1hcmtzIHRoZSBjb21wb25lbnQgdG8gYmUgY2hlY2tlZCBmb3IgY2hhbmdlcy5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIFRoaXMgZXhhbXBsZSBiaW5kcyBhIGBQcm9taXNlYCB0byB0aGUgdmlldy4gQ2xpY2tpbmcgdGhlIGBSZXNvbHZlYCBidXR0b24gcmVzb2x2ZXMgdGhlXG4gKiBwcm9taXNlLlxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3BpcGVzL3RzL2FzeW5jX3BpcGUvYXN5bmNfcGlwZV9leGFtcGxlLnRzIHJlZ2lvbj0nQXN5bmNQaXBlJ31cbiAqXG4gKiBJdCdzIGFsc28gcG9zc2libGUgdG8gdXNlIGBhc3luY2Agd2l0aCBPYnNlcnZhYmxlcy4gVGhlIGV4YW1wbGUgYmVsb3cgYmluZHMgdGhlIGB0aW1lYCBPYnNlcnZhYmxlXG4gKiB0byB0aGUgdmlldy4gRXZlcnkgNTAwbXMsIHRoZSBgdGltZWAgT2JzZXJ2YWJsZSB1cGRhdGVzIHRoZSB2aWV3IHdpdGggdGhlIGN1cnJlbnQgdGltZS5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBgYGBcbiAqL1xuQFBpcGUoe25hbWU6ICdhc3luYycsIHB1cmU6IGZhbHNlfSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBc3luY1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kge1xuICAvKiogQGludGVybmFsICovXG4gIF9sYXRlc3RWYWx1ZTogT2JqZWN0ID0gbnVsbDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbGF0ZXN0UmV0dXJuZWRWYWx1ZTogT2JqZWN0ID0gbnVsbDtcblxuICAvKiogQGludGVybmFsICovXG4gIF9zdWJzY3JpcHRpb246IE9iamVjdCA9IG51bGw7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX29iajogT2JzZXJ2YWJsZTxhbnk+fCBQcm9taXNlPGFueT58IEV2ZW50RW1pdHRlcjxhbnk+ID0gbnVsbDtcbiAgcHJpdmF0ZSBfc3RyYXRlZ3k6IGFueSA9IG51bGw7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIF9yZWY6IENoYW5nZURldGVjdG9yUmVmO1xuICBjb25zdHJ1Y3RvcihfcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB0aGlzLl9yZWYgPSBfcmVmOyB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl9zdWJzY3JpcHRpb24pKSB7XG4gICAgICB0aGlzLl9kaXNwb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNmb3JtKG9iajogT2JzZXJ2YWJsZTxhbnk+fCBQcm9taXNlPGFueT58IEV2ZW50RW1pdHRlcjxhbnk+LCBhcmdzPzogYW55W10pOiBhbnkge1xuICAgIGlmIChpc0JsYW5rKHRoaXMuX29iaikpIHtcbiAgICAgIGlmIChpc1ByZXNlbnQob2JqKSkge1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmUob2JqKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWUgPSB0aGlzLl9sYXRlc3RWYWx1ZTtcbiAgICAgIHJldHVybiB0aGlzLl9sYXRlc3RWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAob2JqICE9PSB0aGlzLl9vYmopIHtcbiAgICAgIHRoaXMuX2Rpc3Bvc2UoKTtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybShvYmopO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9sYXRlc3RWYWx1ZSA9PT0gdGhpcy5fbGF0ZXN0UmV0dXJuZWRWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWUgPSB0aGlzLl9sYXRlc3RWYWx1ZTtcbiAgICAgIHJldHVybiBXcmFwcGVkVmFsdWUud3JhcCh0aGlzLl9sYXRlc3RWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfc3Vic2NyaWJlKG9iajogT2JzZXJ2YWJsZTxhbnk+fCBQcm9taXNlPGFueT58IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5fb2JqID0gb2JqO1xuICAgIHRoaXMuX3N0cmF0ZWd5ID0gdGhpcy5fc2VsZWN0U3RyYXRlZ3kob2JqKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB0aGlzLl9zdHJhdGVneS5jcmVhdGVTdWJzY3JpcHRpb24oXG4gICAgICAgIG9iaiwgKHZhbHVlOiBPYmplY3QpID0+IHRoaXMuX3VwZGF0ZUxhdGVzdFZhbHVlKG9iaiwgdmFsdWUpKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3NlbGVjdFN0cmF0ZWd5KG9iajogT2JzZXJ2YWJsZTxhbnk+fCBQcm9taXNlPGFueT58IEV2ZW50RW1pdHRlcjxhbnk+KTogYW55IHtcbiAgICBpZiAoaXNQcm9taXNlKG9iaikpIHtcbiAgICAgIHJldHVybiBfcHJvbWlzZVN0cmF0ZWd5O1xuICAgIH0gZWxzZSBpZiAoT2JzZXJ2YWJsZVdyYXBwZXIuaXNPYnNlcnZhYmxlKG9iaikpIHtcbiAgICAgIHJldHVybiBfb2JzZXJ2YWJsZVN0cmF0ZWd5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbihBc3luY1BpcGUsIG9iaik7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdHJhdGVneS5kaXNwb3NlKHRoaXMuX3N1YnNjcmlwdGlvbik7XG4gICAgdGhpcy5fbGF0ZXN0VmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgdGhpcy5fb2JqID0gbnVsbDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3VwZGF0ZUxhdGVzdFZhbHVlKGFzeW5jOiBhbnksIHZhbHVlOiBPYmplY3QpIHtcbiAgICBpZiAoYXN5bmMgPT09IHRoaXMuX29iaikge1xuICAgICAgdGhpcy5fbGF0ZXN0VmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuX3JlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\n/**\r\n * Implements uppercase transforms to text.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/pipes/ts/lowerupper_pipe/lowerupper_pipe_example.ts region='LowerUpperPipe'}\r\n */\r\nvar UpperCasePipe = (function () {\r\n function UpperCasePipe() {\r\n }\r\n UpperCasePipe.prototype.transform = function (value, args) {\r\n if (args === void 0) { args = null; }\r\n if (lang_1.isBlank(value))\r\n return value;\r\n if (!lang_1.isString(value)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(UpperCasePipe, value);\r\n }\r\n return value.toUpperCase();\r\n };\r\n UpperCasePipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'uppercase' }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], UpperCasePipe);\r\n return UpperCasePipe;\r\n})();\r\nexports.UpperCasePipe = UpperCasePipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBwZXJjYXNlX3BpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL3BpcGVzL3VwcGVyY2FzZV9waXBlLnRzIl0sIm5hbWVzIjpbIlVwcGVyQ2FzZVBpcGUiLCJVcHBlckNhc2VQaXBlLmNvbnN0cnVjdG9yIiwiVXBwZXJDYXNlUGlwZS50cmFuc2Zvcm0iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHFCQUF1QywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xFLHFCQUE0RCxlQUFlLENBQUMsQ0FBQTtBQUM1RSxnREFBMkMsbUNBQW1DLENBQUMsQ0FBQTtBQUUvRTs7Ozs7O0dBTUc7QUFDSDtJQUFBQTtJQVdBQyxDQUFDQTtJQVBDRCxpQ0FBU0EsR0FBVEEsVUFBVUEsS0FBYUEsRUFBRUEsSUFBa0JBO1FBQWxCRSxvQkFBa0JBLEdBQWxCQSxXQUFrQkE7UUFDekNBLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO1lBQUNBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO1FBQ2pDQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxlQUFRQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNyQkEsTUFBTUEsSUFBSUEsOERBQTRCQSxDQUFDQSxhQUFhQSxFQUFFQSxLQUFLQSxDQUFDQSxDQUFDQTtRQUMvREEsQ0FBQ0E7UUFDREEsTUFBTUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsV0FBV0EsRUFBRUEsQ0FBQ0E7SUFDN0JBLENBQUNBO0lBVkhGO1FBQUNBLFlBQUtBLEVBQUVBO1FBQ1BBLFdBQUlBLENBQUNBLEVBQUNBLElBQUlBLEVBQUVBLFdBQVdBLEVBQUNBLENBQUNBO1FBQ3pCQSxpQkFBVUEsRUFBRUE7O3NCQVNaQTtJQUFEQSxvQkFBQ0E7QUFBREEsQ0FBQ0EsQUFYRCxJQVdDO0FBUlkscUJBQWEsZ0JBUXpCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzU3RyaW5nLCBDT05TVCwgaXNCbGFua30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7UGlwZVRyYW5zZm9ybSwgV3JhcHBlZFZhbHVlLCBJbmplY3RhYmxlLCBQaXBlfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7SW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbn0gZnJvbSAnLi9pbnZhbGlkX3BpcGVfYXJndW1lbnRfZXhjZXB0aW9uJztcblxuLyoqXG4gKiBJbXBsZW1lbnRzIHVwcGVyY2FzZSB0cmFuc2Zvcm1zIHRvIHRleHQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiB7QGV4YW1wbGUgY29yZS9waXBlcy90cy9sb3dlcnVwcGVyX3BpcGUvbG93ZXJ1cHBlcl9waXBlX2V4YW1wbGUudHMgcmVnaW9uPSdMb3dlclVwcGVyUGlwZSd9XG4gKi9cbkBDT05TVCgpXG5AUGlwZSh7bmFtZTogJ3VwcGVyY2FzZSd9KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVwcGVyQ2FzZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIGFyZ3M6IGFueVtdID0gbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKGlzQmxhbmsodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gICAgaWYgKCFpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9uKFVwcGVyQ2FzZVBpcGUsIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlLnRvVXBwZXJDYXNlKCk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\n/**\r\n * Transforms text to lowercase.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/pipes/ts/lowerupper_pipe/lowerupper_pipe_example.ts region='LowerUpperPipe'}\r\n */\r\nvar LowerCasePipe = (function () {\r\n function LowerCasePipe() {\r\n }\r\n LowerCasePipe.prototype.transform = function (value, args) {\r\n if (args === void 0) { args = null; }\r\n if (lang_1.isBlank(value))\r\n return value;\r\n if (!lang_1.isString(value)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(LowerCasePipe, value);\r\n }\r\n return value.toLowerCase();\r\n };\r\n LowerCasePipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'lowercase' }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], LowerCasePipe);\r\n return LowerCasePipe;\r\n})();\r\nexports.LowerCasePipe = LowerCasePipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG93ZXJjYXNlX3BpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL3BpcGVzL2xvd2VyY2FzZV9waXBlLnRzIl0sIm5hbWVzIjpbIkxvd2VyQ2FzZVBpcGUiLCJMb3dlckNhc2VQaXBlLmNvbnN0cnVjdG9yIiwiTG93ZXJDYXNlUGlwZS50cmFuc2Zvcm0iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHFCQUF1QywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xFLHFCQUE0RCxlQUFlLENBQUMsQ0FBQTtBQUM1RSxnREFBMkMsbUNBQW1DLENBQUMsQ0FBQTtBQUUvRTs7Ozs7O0dBTUc7QUFDSDtJQUFBQTtJQVdBQyxDQUFDQTtJQVBDRCxpQ0FBU0EsR0FBVEEsVUFBVUEsS0FBYUEsRUFBRUEsSUFBa0JBO1FBQWxCRSxvQkFBa0JBLEdBQWxCQSxXQUFrQkE7UUFDekNBLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO1lBQUNBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO1FBQ2pDQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxlQUFRQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNyQkEsTUFBTUEsSUFBSUEsOERBQTRCQSxDQUFDQSxhQUFhQSxFQUFFQSxLQUFLQSxDQUFDQSxDQUFDQTtRQUMvREEsQ0FBQ0E7UUFDREEsTUFBTUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsV0FBV0EsRUFBRUEsQ0FBQ0E7SUFDN0JBLENBQUNBO0lBVkhGO1FBQUNBLFlBQUtBLEVBQUVBO1FBQ1BBLFdBQUlBLENBQUNBLEVBQUNBLElBQUlBLEVBQUVBLFdBQVdBLEVBQUNBLENBQUNBO1FBQ3pCQSxpQkFBVUEsRUFBRUE7O3NCQVNaQTtJQUFEQSxvQkFBQ0E7QUFBREEsQ0FBQ0EsQUFYRCxJQVdDO0FBUlkscUJBQWEsZ0JBUXpCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzU3RyaW5nLCBDT05TVCwgaXNCbGFua30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgUGlwZVRyYW5zZm9ybSwgV3JhcHBlZFZhbHVlLCBQaXBlfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7SW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbn0gZnJvbSAnLi9pbnZhbGlkX3BpcGVfYXJndW1lbnRfZXhjZXB0aW9uJztcblxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRleHQgdG8gbG93ZXJjYXNlLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICoge0BleGFtcGxlIGNvcmUvcGlwZXMvdHMvbG93ZXJ1cHBlcl9waXBlL2xvd2VydXBwZXJfcGlwZV9leGFtcGxlLnRzIHJlZ2lvbj0nTG93ZXJVcHBlclBpcGUnfVxuICovXG5AQ09OU1QoKVxuQFBpcGUoe25hbWU6ICdsb3dlcmNhc2UnfSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMb3dlckNhc2VQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBhcmdzOiBhbnlbXSA9IG51bGwpOiBzdHJpbmcge1xuICAgIGlmIChpc0JsYW5rKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICAgIGlmICghaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbihMb3dlckNhc2VQaXBlLCB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\n/**\r\n * Transforms any input value using `JSON.stringify`. Useful for debugging.\r\n *\r\n * ### Example\r\n * {@example core/pipes/ts/json_pipe/json_pipe_example.ts region='JsonPipe'}\r\n */\r\nvar JsonPipe = (function () {\r\n function JsonPipe() {\r\n }\r\n JsonPipe.prototype.transform = function (value, args) {\r\n if (args === void 0) { args = null; }\r\n return lang_1.Json.stringify(value);\r\n };\r\n JsonPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'json', pure: false }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], JsonPipe);\r\n return JsonPipe;\r\n})();\r\nexports.JsonPipe = JsonPipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbW1vbi9waXBlcy9qc29uX3BpcGUudHMiXSwibmFtZXMiOlsiSnNvblBpcGUiLCJKc29uUGlwZS5jb25zdHJ1Y3RvciIsIkpzb25QaXBlLnRyYW5zZm9ybSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEscUJBQThDLDBCQUEwQixDQUFDLENBQUE7QUFDekUscUJBQTRELGVBQWUsQ0FBQyxDQUFBO0FBRTVFOzs7OztHQUtHO0FBQ0g7SUFBQUE7SUFLQUMsQ0FBQ0E7SUFEQ0QsNEJBQVNBLEdBQVRBLFVBQVVBLEtBQVVBLEVBQUVBLElBQWtCQTtRQUFsQkUsb0JBQWtCQSxHQUFsQkEsV0FBa0JBO1FBQVlBLE1BQU1BLENBQUNBLFdBQUlBLENBQUNBLFNBQVNBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO0lBQUNBLENBQUNBO0lBSnJGRjtRQUFDQSxZQUFLQSxFQUFFQTtRQUNQQSxXQUFJQSxDQUFDQSxFQUFDQSxJQUFJQSxFQUFFQSxNQUFNQSxFQUFFQSxJQUFJQSxFQUFFQSxLQUFLQSxFQUFDQSxDQUFDQTtRQUNqQ0EsaUJBQVVBLEVBQUVBOztpQkFHWkE7SUFBREEsZUFBQ0E7QUFBREEsQ0FBQ0EsQUFMRCxJQUtDO0FBRlksZ0JBQVEsV0FFcEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNCbGFuaywgaXNQcmVzZW50LCBKc29uLCBDT05TVH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgUGlwZVRyYW5zZm9ybSwgV3JhcHBlZFZhbHVlLCBQaXBlfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcblxuLyoqXG4gKiBUcmFuc2Zvcm1zIGFueSBpbnB1dCB2YWx1ZSB1c2luZyBgSlNPTi5zdHJpbmdpZnlgLiBVc2VmdWwgZm9yIGRlYnVnZ2luZy5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICoge0BleGFtcGxlIGNvcmUvcGlwZXMvdHMvanNvbl9waXBlL2pzb25fcGlwZV9leGFtcGxlLnRzIHJlZ2lvbj0nSnNvblBpcGUnfVxuICovXG5AQ09OU1QoKVxuQFBpcGUoe25hbWU6ICdqc29uJywgcHVyZTogZmFsc2V9KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEpzb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBhcmdzOiBhbnlbXSA9IG51bGwpOiBzdHJpbmcgeyByZXR1cm4gSnNvbi5zdHJpbmdpZnkodmFsdWUpOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\n/**\r\n * Creates a new List or String containing only a subset (slice) of the\r\n * elements.\r\n *\r\n * The starting index of the subset to return is specified by the `start` parameter.\r\n *\r\n * The ending index of the subset to return is specified by the optional `end` parameter.\r\n *\r\n * ### Usage\r\n *\r\n * expression | slice:start[:end]\r\n *\r\n * All behavior is based on the expected behavior of the JavaScript API\r\n * Array.prototype.slice() and String.prototype.slice()\r\n *\r\n * Where the input expression is a [List] or [String], and `start` is:\r\n *\r\n * - **a positive integer**: return the item at _start_ index and all items after\r\n * in the list or string expression.\r\n * - **a negative integer**: return the item at _start_ index from the end and all items after\r\n * in the list or string expression.\r\n * - **`|start|` greater than the size of the expression**: return an empty list or string.\r\n * - **`|start|` negative greater than the size of the expression**: return entire list or\r\n * string expression.\r\n *\r\n * and where `end` is:\r\n *\r\n * - **omitted**: return all items until the end of the input\r\n * - **a positive integer**: return all items before _end_ index of the list or string\r\n * expression.\r\n * - **a negative integer**: return all items before _end_ index from the end of the list\r\n * or string expression.\r\n *\r\n * When operating on a [List], the returned list is always a copy even when all\r\n * the elements are being returned.\r\n *\r\n * ## List Example\r\n *\r\n * This `ngFor` example:\r\n *\r\n * {@example core/pipes/ts/slice_pipe/slice_pipe_example.ts region='SlicePipe_list'}\r\n *\r\n * produces the following:\r\n *\r\n * <li>b</li>\r\n * <li>c</li>\r\n *\r\n * ## String Examples\r\n *\r\n * {@example core/pipes/ts/slice_pipe/slice_pipe_example.ts region='SlicePipe_string'}\r\n */\r\nvar SlicePipe = (function () {\r\n function SlicePipe() {\r\n }\r\n SlicePipe.prototype.transform = function (value, args) {\r\n if (args === void 0) { args = null; }\r\n if (lang_1.isBlank(args) || args.length == 0) {\r\n throw new exceptions_1.BaseException('Slice pipe requires one argument');\r\n }\r\n if (!this.supports(value)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(SlicePipe, value);\r\n }\r\n if (lang_1.isBlank(value))\r\n return value;\r\n var start = args[0];\r\n var end = args.length > 1 ? args[1] : null;\r\n if (lang_1.isString(value)) {\r\n return lang_1.StringWrapper.slice(value, start, end);\r\n }\r\n return collection_1.ListWrapper.slice(value, start, end);\r\n };\r\n SlicePipe.prototype.supports = function (obj) { return lang_1.isString(obj) || lang_1.isArray(obj); };\r\n SlicePipe = __decorate([\r\n core_1.Pipe({ name: 'slice', pure: false }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], SlicePipe);\r\n return SlicePipe;\r\n})();\r\nexports.SlicePipe = SlicePipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2VfcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vcGlwZXMvc2xpY2VfcGlwZS50cyJdLCJuYW1lcyI6WyJTbGljZVBpcGUiLCJTbGljZVBpcGUuY29uc3RydWN0b3IiLCJTbGljZVBpcGUudHJhbnNmb3JtIiwiU2xpY2VQaXBlLnN1cHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxxQkFBK0QsMEJBQTBCLENBQUMsQ0FBQTtBQUMxRiwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RCwyQkFBMEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUMzRCxxQkFBNEQsZUFBZSxDQUFDLENBQUE7QUFDNUUsZ0RBQTJDLG1DQUFtQyxDQUFDLENBQUE7QUFFL0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0RHO0FBRUg7SUFBQUE7SUFvQkFDLENBQUNBO0lBakJDRCw2QkFBU0EsR0FBVEEsVUFBVUEsS0FBVUEsRUFBRUEsSUFBa0JBO1FBQWxCRSxvQkFBa0JBLEdBQWxCQSxXQUFrQkE7UUFDdENBLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLElBQUlBLENBQUNBLElBQUlBLElBQUlBLENBQUNBLE1BQU1BLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ3RDQSxNQUFNQSxJQUFJQSwwQkFBYUEsQ0FBQ0Esa0NBQWtDQSxDQUFDQSxDQUFDQTtRQUM5REEsQ0FBQ0E7UUFDREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDMUJBLE1BQU1BLElBQUlBLDhEQUE0QkEsQ0FBQ0EsU0FBU0EsRUFBRUEsS0FBS0EsQ0FBQ0EsQ0FBQ0E7UUFDM0RBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO1lBQUNBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO1FBQ2pDQSxJQUFJQSxLQUFLQSxHQUFXQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUM1QkEsSUFBSUEsR0FBR0EsR0FBV0EsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0E7UUFDbkRBLEVBQUVBLENBQUNBLENBQUNBLGVBQVFBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ3BCQSxNQUFNQSxDQUFDQSxvQkFBYUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsS0FBS0EsRUFBRUEsS0FBS0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0E7UUFDaERBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLHdCQUFXQSxDQUFDQSxLQUFLQSxDQUFDQSxLQUFLQSxFQUFFQSxLQUFLQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQTtJQUM5Q0EsQ0FBQ0E7SUFFT0YsNEJBQVFBLEdBQWhCQSxVQUFpQkEsR0FBUUEsSUFBYUcsTUFBTUEsQ0FBQ0EsZUFBUUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsY0FBT0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFuQi9FSDtRQUFDQSxXQUFJQSxDQUFDQSxFQUFDQSxJQUFJQSxFQUFFQSxPQUFPQSxFQUFFQSxJQUFJQSxFQUFFQSxLQUFLQSxFQUFDQSxDQUFDQTtRQUNsQ0EsaUJBQVVBLEVBQUVBOztrQkFtQlpBO0lBQURBLGdCQUFDQTtBQUFEQSxDQUFDQSxBQXBCRCxJQW9CQztBQWxCWSxpQkFBUyxZQWtCckIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNCbGFuaywgaXNTdHJpbmcsIGlzQXJyYXksIFN0cmluZ1dyYXBwZXIsIENPTlNUfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgUGlwZVRyYW5zZm9ybSwgV3JhcHBlZFZhbHVlLCBQaXBlfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7SW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbn0gZnJvbSAnLi9pbnZhbGlkX3BpcGVfYXJndW1lbnRfZXhjZXB0aW9uJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IExpc3Qgb3IgU3RyaW5nIGNvbnRhaW5pbmcgb25seSBhIHN1YnNldCAoc2xpY2UpIG9mIHRoZVxuICogZWxlbWVudHMuXG4gKlxuICogVGhlIHN0YXJ0aW5nIGluZGV4IG9mIHRoZSBzdWJzZXQgdG8gcmV0dXJuIGlzIHNwZWNpZmllZCBieSB0aGUgYHN0YXJ0YCBwYXJhbWV0ZXIuXG4gKlxuICogVGhlIGVuZGluZyBpbmRleCBvZiB0aGUgc3Vic2V0IHRvIHJldHVybiBpcyBzcGVjaWZpZWQgYnkgdGhlIG9wdGlvbmFsIGBlbmRgIHBhcmFtZXRlci5cbiAqXG4gKiAjIyMgVXNhZ2VcbiAqXG4gKiAgICAgZXhwcmVzc2lvbiB8IHNsaWNlOnN0YXJ0WzplbmRdXG4gKlxuICogQWxsIGJlaGF2aW9yIGlzIGJhc2VkIG9uIHRoZSBleHBlY3RlZCBiZWhhdmlvciBvZiB0aGUgSmF2YVNjcmlwdCBBUElcbiAqIEFycmF5LnByb3RvdHlwZS5zbGljZSgpIGFuZCBTdHJpbmcucHJvdG90eXBlLnNsaWNlKClcbiAqXG4gKiBXaGVyZSB0aGUgaW5wdXQgZXhwcmVzc2lvbiBpcyBhIFtMaXN0XSBvciBbU3RyaW5nXSwgYW5kIGBzdGFydGAgaXM6XG4gKlxuICogLSAqKmEgcG9zaXRpdmUgaW50ZWdlcioqOiByZXR1cm4gdGhlIGl0ZW0gYXQgX3N0YXJ0XyBpbmRleCBhbmQgYWxsIGl0ZW1zIGFmdGVyXG4gKiBpbiB0aGUgbGlzdCBvciBzdHJpbmcgZXhwcmVzc2lvbi5cbiAqIC0gKiphIG5lZ2F0aXZlIGludGVnZXIqKjogcmV0dXJuIHRoZSBpdGVtIGF0IF9zdGFydF8gaW5kZXggZnJvbSB0aGUgZW5kIGFuZCBhbGwgaXRlbXMgYWZ0ZXJcbiAqIGluIHRoZSBsaXN0IG9yIHN0cmluZyBleHByZXNzaW9uLlxuICogLSAqKmB8c3RhcnR8YCBncmVhdGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGV4cHJlc3Npb24qKjogcmV0dXJuIGFuIGVtcHR5IGxpc3Qgb3Igc3RyaW5nLlxuICogLSAqKmB8c3RhcnR8YCBuZWdhdGl2ZSBncmVhdGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGV4cHJlc3Npb24qKjogcmV0dXJuIGVudGlyZSBsaXN0IG9yXG4gKiBzdHJpbmcgZXhwcmVzc2lvbi5cbiAqXG4gKiBhbmQgd2hlcmUgYGVuZGAgaXM6XG4gKlxuICogLSAqKm9taXR0ZWQqKjogcmV0dXJuIGFsbCBpdGVtcyB1bnRpbCB0aGUgZW5kIG9mIHRoZSBpbnB1dFxuICogLSAqKmEgcG9zaXRpdmUgaW50ZWdlcioqOiByZXR1cm4gYWxsIGl0ZW1zIGJlZm9yZSBfZW5kXyBpbmRleCBvZiB0aGUgbGlzdCBvciBzdHJpbmdcbiAqIGV4cHJlc3Npb24uXG4gKiAtICoqYSBuZWdhdGl2ZSBpbnRlZ2VyKio6IHJldHVybiBhbGwgaXRlbXMgYmVmb3JlIF9lbmRfIGluZGV4IGZyb20gdGhlIGVuZCBvZiB0aGUgbGlzdFxuICogb3Igc3RyaW5nIGV4cHJlc3Npb24uXG4gKlxuICogV2hlbiBvcGVyYXRpbmcgb24gYSBbTGlzdF0sIHRoZSByZXR1cm5lZCBsaXN0IGlzIGFsd2F5cyBhIGNvcHkgZXZlbiB3aGVuIGFsbFxuICogdGhlIGVsZW1lbnRzIGFyZSBiZWluZyByZXR1cm5lZC5cbiAqXG4gKiAjIyBMaXN0IEV4YW1wbGVcbiAqXG4gKiBUaGlzIGBuZ0ZvcmAgZXhhbXBsZTpcbiAqXG4gKiB7QGV4YW1wbGUgY29yZS9waXBlcy90cy9zbGljZV9waXBlL3NsaWNlX3BpcGVfZXhhbXBsZS50cyByZWdpb249J1NsaWNlUGlwZV9saXN0J31cbiAqXG4gKiBwcm9kdWNlcyB0aGUgZm9sbG93aW5nOlxuICpcbiAqICAgICA8bGk+YjwvbGk+XG4gKiAgICAgPGxpPmM8L2xpPlxuICpcbiAqICMjIFN0cmluZyBFeGFtcGxlc1xuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3BpcGVzL3RzL3NsaWNlX3BpcGUvc2xpY2VfcGlwZV9leGFtcGxlLnRzIHJlZ2lvbj0nU2xpY2VQaXBlX3N0cmluZyd9XG4gKi9cblxuQFBpcGUoe25hbWU6ICdzbGljZScsIHB1cmU6IGZhbHNlfSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTbGljZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGFyZ3M6IGFueVtdID0gbnVsbCk6IGFueSB7XG4gICAgaWYgKGlzQmxhbmsoYXJncykgfHwgYXJncy5sZW5ndGggPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ1NsaWNlIHBpcGUgcmVxdWlyZXMgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdXBwb3J0cyh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9uKFNsaWNlUGlwZSwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNCbGFuayh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICB2YXIgc3RhcnQ6IG51bWJlciA9IGFyZ3NbMF07XG4gICAgdmFyIGVuZDogbnVtYmVyID0gYXJncy5sZW5ndGggPiAxID8gYXJnc1sxXSA6IG51bGw7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIFN0cmluZ1dyYXBwZXIuc2xpY2UodmFsdWUsIHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgICByZXR1cm4gTGlzdFdyYXBwZXIuc2xpY2UodmFsdWUsIHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdXBwb3J0cyhvYmo6IGFueSk6IGJvb2xlYW4geyByZXR1cm4gaXNTdHJpbmcob2JqKSB8fCBpc0FycmF5KG9iaik7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar intl_1 = require('angular2/src/facade/intl');\r\nvar core_1 = require('angular2/core');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\n// TODO: move to a global configurable location along with other i18n components.\r\nvar defaultLocale = 'en-US';\r\n/**\r\n * Formats a date value to a string based on the requested format.\r\n *\r\n * WARNINGS:\r\n * - this pipe is marked as pure hence it will not be re-evaluated when the input is mutated.\r\n * Instead users should treat the date as an immutable object and change the reference when the\r\n * pipe needs to re-run (this is to avoid reformatting the date on every change detection run\r\n * which would be an expensive operation).\r\n * - this pipe uses the Internationalization API. Therefore it is only reliable in Chrome and Opera\r\n * browsers.\r\n *\r\n * ## Usage\r\n *\r\n * expression | date[:format]\r\n *\r\n * where `expression` is a date object or a number (milliseconds since UTC epoch) and\r\n * `format` indicates which date/time components to include:\r\n *\r\n * | Component | Symbol | Short Form | Long Form | Numeric | 2-digit |\r\n * |-----------|:------:|--------------|-------------------|-----------|-----------|\r\n * | era | G | G (AD) | GGGG (Anno Domini)| - | - |\r\n * | year | y | - | - | y (2015) | yy (15) |\r\n * | month | M | MMM (Sep) | MMMM (September) | M (9) | MM (09) |\r\n * | day | d | - | - | d (3) | dd (03) |\r\n * | weekday | E | EEE (Sun) | EEEE (Sunday) | - | - |\r\n * | hour | j | - | - | j (13) | jj (13) |\r\n * | hour12 | h | - | - | h (1 PM) | hh (01 PM)|\r\n * | hour24 | H | - | - | H (13) | HH (13) |\r\n * | minute | m | - | - | m (5) | mm (05) |\r\n * | second | s | - | - | s (9) | ss (09) |\r\n * | timezone | z | - | z (Pacific Standard Time)| - | - |\r\n * | timezone | Z | Z (GMT-8:00) | - | - | - |\r\n *\r\n * In javascript, only the components specified will be respected (not the ordering,\r\n * punctuations, ...) and details of the formatting will be dependent on the locale.\r\n * On the other hand in Dart version, you can also include quoted text as well as some extra\r\n * date/time components such as quarter. For more information see:\r\n * https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/intl/intl.DateFormat.\r\n *\r\n * `format` can also be one of the following predefined formats:\r\n *\r\n * - `'medium'`: equivalent to `'yMMMdjms'` (e.g. Sep 3, 2010, 12:05:08 PM for en-US)\r\n * - `'short'`: equivalent to `'yMdjm'` (e.g. 9/3/2010, 12:05 PM for en-US)\r\n * - `'fullDate'`: equivalent to `'yMMMMEEEEd'` (e.g. Friday, September 3, 2010 for en-US)\r\n * - `'longDate'`: equivalent to `'yMMMMd'` (e.g. September 3, 2010)\r\n * - `'mediumDate'`: equivalent to `'yMMMd'` (e.g. Sep 3, 2010 for en-US)\r\n * - `'shortDate'`: equivalent to `'yMd'` (e.g. 9/3/2010 for en-US)\r\n * - `'mediumTime'`: equivalent to `'jms'` (e.g. 12:05:08 PM for en-US)\r\n * - `'shortTime'`: equivalent to `'jm'` (e.g. 12:05 PM for en-US)\r\n *\r\n * Timezone of the formatted text will be the local system timezone of the end-users machine.\r\n *\r\n * ### Examples\r\n *\r\n * Assuming `dateObj` is (year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11)\r\n * in the _local_ time and locale is 'en-US':\r\n *\r\n * ```\r\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\r\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\r\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\r\n * {{ dateObj | date:'mmss' }} // output is '43:11'\r\n * ```\r\n *\r\n * {@example core/pipes/ts/date_pipe/date_pipe_example.ts region='DatePipe'}\r\n */\r\nvar DatePipe = (function () {\r\n function DatePipe() {\r\n }\r\n DatePipe.prototype.transform = function (value, args) {\r\n if (lang_1.isBlank(value))\r\n return null;\r\n if (!this.supports(value)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(DatePipe, value);\r\n }\r\n var pattern = lang_1.isPresent(args) && args.length > 0 ? args[0] : 'mediumDate';\r\n if (lang_1.isNumber(value)) {\r\n value = lang_1.DateWrapper.fromMillis(value);\r\n }\r\n if (collection_1.StringMapWrapper.contains(DatePipe._ALIASES, pattern)) {\r\n pattern = collection_1.StringMapWrapper.get(DatePipe._ALIASES, pattern);\r\n }\r\n return intl_1.DateFormatter.format(value, defaultLocale, pattern);\r\n };\r\n DatePipe.prototype.supports = function (obj) { return lang_1.isDate(obj) || lang_1.isNumber(obj); };\r\n /** @internal */\r\n DatePipe._ALIASES = {\r\n 'medium': 'yMMMdjms',\r\n 'short': 'yMdjm',\r\n 'fullDate': 'yMMMMEEEEd',\r\n 'longDate': 'yMMMMd',\r\n 'mediumDate': 'yMMMd',\r\n 'shortDate': 'yMd',\r\n 'mediumTime': 'jms',\r\n 'shortTime': 'jm'\r\n };\r\n DatePipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'date', pure: true }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], DatePipe);\r\n return DatePipe;\r\n})();\r\nexports.DatePipe = DatePipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZV9waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbW1vbi9waXBlcy9kYXRlX3BpcGUudHMiXSwibmFtZXMiOlsiRGF0ZVBpcGUiLCJEYXRlUGlwZS5jb25zdHJ1Y3RvciIsIkRhdGVQaXBlLnRyYW5zZm9ybSIsIkRhdGVQaXBlLnN1cHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxxQkFTTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLHFCQUE0QiwwQkFBMEIsQ0FBQyxDQUFBO0FBQ3ZELHFCQUE0RCxlQUFlLENBQUMsQ0FBQTtBQUM1RSwyQkFBNEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUU3RSxnREFBMkMsbUNBQW1DLENBQUMsQ0FBQTtBQUcvRSxpRkFBaUY7QUFDakYsSUFBSSxhQUFhLEdBQVcsT0FBTyxDQUFDO0FBRXBDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlFRztBQUNIO0lBQUFBO0lBbUNBQyxDQUFDQTtJQWxCQ0QsNEJBQVNBLEdBQVRBLFVBQVVBLEtBQVVBLEVBQUVBLElBQVdBO1FBQy9CRSxFQUFFQSxDQUFDQSxDQUFDQSxjQUFPQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQTtZQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtRQUVoQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDMUJBLE1BQU1BLElBQUlBLDhEQUE0QkEsQ0FBQ0EsUUFBUUEsRUFBRUEsS0FBS0EsQ0FBQ0EsQ0FBQ0E7UUFDMURBLENBQUNBO1FBRURBLElBQUlBLE9BQU9BLEdBQVdBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxJQUFJQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxZQUFZQSxDQUFDQTtRQUNsRkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZUFBUUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDcEJBLEtBQUtBLEdBQUdBLGtCQUFXQSxDQUFDQSxVQUFVQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQTtRQUN4Q0EsQ0FBQ0E7UUFDREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsNkJBQWdCQSxDQUFDQSxRQUFRQSxDQUFDQSxRQUFRQSxDQUFDQSxRQUFRQSxFQUFFQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUMxREEsT0FBT0EsR0FBV0EsNkJBQWdCQSxDQUFDQSxHQUFHQSxDQUFDQSxRQUFRQSxDQUFDQSxRQUFRQSxFQUFFQSxPQUFPQSxDQUFDQSxDQUFDQTtRQUNyRUEsQ0FBQ0E7UUFDREEsTUFBTUEsQ0FBQ0Esb0JBQWFBLENBQUNBLE1BQU1BLENBQUNBLEtBQUtBLEVBQUVBLGFBQWFBLEVBQUVBLE9BQU9BLENBQUNBLENBQUNBO0lBQzdEQSxDQUFDQTtJQUVERiwyQkFBUUEsR0FBUkEsVUFBU0EsR0FBUUEsSUFBYUcsTUFBTUEsQ0FBQ0EsYUFBTUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsZUFBUUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUE5QnBFSCxnQkFBZ0JBO0lBQ1RBLGlCQUFRQSxHQUE0QkE7UUFDekNBLFFBQVFBLEVBQUVBLFVBQVVBO1FBQ3BCQSxPQUFPQSxFQUFFQSxPQUFPQTtRQUNoQkEsVUFBVUEsRUFBRUEsWUFBWUE7UUFDeEJBLFVBQVVBLEVBQUVBLFFBQVFBO1FBQ3BCQSxZQUFZQSxFQUFFQSxPQUFPQTtRQUNyQkEsV0FBV0EsRUFBRUEsS0FBS0E7UUFDbEJBLFlBQVlBLEVBQUVBLEtBQUtBO1FBQ25CQSxXQUFXQSxFQUFFQSxJQUFJQTtLQUNsQkEsQ0FBQ0E7SUFkSkE7UUFBQ0EsWUFBS0EsRUFBRUE7UUFDUEEsV0FBSUEsQ0FBQ0EsRUFBQ0EsSUFBSUEsRUFBRUEsTUFBTUEsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBQ0EsQ0FBQ0E7UUFDaENBLGlCQUFVQSxFQUFFQTs7aUJBaUNaQTtJQUFEQSxlQUFDQTtBQUFEQSxDQUFDQSxBQW5DRCxJQW1DQztBQWhDWSxnQkFBUSxXQWdDcEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzRGF0ZSxcbiAgaXNOdW1iZXIsXG4gIGlzUHJlc2VudCxcbiAgRGF0ZSxcbiAgRGF0ZVdyYXBwZXIsXG4gIENPTlNULFxuICBpc0JsYW5rLFxuICBGdW5jdGlvbldyYXBwZXJcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7RGF0ZUZvcm1hdHRlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9pbnRsJztcbmltcG9ydCB7UGlwZVRyYW5zZm9ybSwgV3JhcHBlZFZhbHVlLCBQaXBlLCBJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7U3RyaW5nTWFwV3JhcHBlciwgTGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5cbmltcG9ydCB7SW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbn0gZnJvbSAnLi9pbnZhbGlkX3BpcGVfYXJndW1lbnRfZXhjZXB0aW9uJztcblxuXG4vLyBUT0RPOiBtb3ZlIHRvIGEgZ2xvYmFsIGNvbmZpZ3VyYWJsZSBsb2NhdGlvbiBhbG9uZyB3aXRoIG90aGVyIGkxOG4gY29tcG9uZW50cy5cbnZhciBkZWZhdWx0TG9jYWxlOiBzdHJpbmcgPSAnZW4tVVMnO1xuXG4vKipcbiAqIEZvcm1hdHMgYSBkYXRlIHZhbHVlIHRvIGEgc3RyaW5nIGJhc2VkIG9uIHRoZSByZXF1ZXN0ZWQgZm9ybWF0LlxuICpcbiAqIFdBUk5JTkdTOlxuICogLSB0aGlzIHBpcGUgaXMgbWFya2VkIGFzIHB1cmUgaGVuY2UgaXQgd2lsbCBub3QgYmUgcmUtZXZhbHVhdGVkIHdoZW4gdGhlIGlucHV0IGlzIG11dGF0ZWQuXG4gKiAgIEluc3RlYWQgdXNlcnMgc2hvdWxkIHRyZWF0IHRoZSBkYXRlIGFzIGFuIGltbXV0YWJsZSBvYmplY3QgYW5kIGNoYW5nZSB0aGUgcmVmZXJlbmNlIHdoZW4gdGhlXG4gKiAgIHBpcGUgbmVlZHMgdG8gcmUtcnVuICh0aGlzIGlzIHRvIGF2b2lkIHJlZm9ybWF0dGluZyB0aGUgZGF0ZSBvbiBldmVyeSBjaGFuZ2UgZGV0ZWN0aW9uIHJ1blxuICogICB3aGljaCB3b3VsZCBiZSBhbiBleHBlbnNpdmUgb3BlcmF0aW9uKS5cbiAqIC0gdGhpcyBwaXBlIHVzZXMgdGhlIEludGVybmF0aW9uYWxpemF0aW9uIEFQSS4gVGhlcmVmb3JlIGl0IGlzIG9ubHkgcmVsaWFibGUgaW4gQ2hyb21lIGFuZCBPcGVyYVxuICogICBicm93c2Vycy5cbiAqXG4gKiAjIyBVc2FnZVxuICpcbiAqICAgICBleHByZXNzaW9uIHwgZGF0ZVs6Zm9ybWF0XVxuICpcbiAqIHdoZXJlIGBleHByZXNzaW9uYCBpcyBhIGRhdGUgb2JqZWN0IG9yIGEgbnVtYmVyIChtaWxsaXNlY29uZHMgc2luY2UgVVRDIGVwb2NoKSBhbmRcbiAqIGBmb3JtYXRgIGluZGljYXRlcyB3aGljaCBkYXRlL3RpbWUgY29tcG9uZW50cyB0byBpbmNsdWRlOlxuICpcbiAqICB8IENvbXBvbmVudCB8IFN5bWJvbCB8IFNob3J0IEZvcm0gICB8IExvbmcgRm9ybSAgICAgICAgIHwgTnVtZXJpYyAgIHwgMi1kaWdpdCAgIHxcbiAqICB8LS0tLS0tLS0tLS18Oi0tLS0tLTp8LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tLXxcbiAqICB8IGVyYSAgICAgICB8ICAgRyAgICB8IEcgKEFEKSAgICAgICB8IEdHR0cgKEFubm8gRG9taW5pKXwgLSAgICAgICAgIHwgLSAgICAgICAgIHxcbiAqICB8IHllYXIgICAgICB8ICAgeSAgICB8IC0gICAgICAgICAgICB8IC0gICAgICAgICAgICAgICAgIHwgeSAoMjAxNSkgIHwgeXkgKDE1KSAgIHxcbiAqICB8IG1vbnRoICAgICB8ICAgTSAgICB8IE1NTSAoU2VwKSAgICB8IE1NTU0gKFNlcHRlbWJlcikgIHwgTSAoOSkgICAgIHwgTU0gKDA5KSAgIHxcbiAqICB8IGRheSAgICAgICB8ICAgZCAgICB8IC0gICAgICAgICAgICB8IC0gICAgICAgICAgICAgICAgIHwgZCAoMykgICAgIHwgZGQgKDAzKSAgIHxcbiAqICB8IHdlZWtkYXkgICB8ICAgRSAgICB8IEVFRSAoU3VuKSAgICB8IEVFRUUgKFN1bmRheSkgICAgIHwgLSAgICAgICAgIHwgLSAgICAgICAgIHxcbiAqICB8IGhvdXIgICAgICB8ICAgaiAgICB8IC0gICAgICAgICAgICB8IC0gICAgICAgICAgICAgICAgIHwgaiAoMTMpICAgIHwgamogKDEzKSAgIHxcbiAqICB8IGhvdXIxMiAgICB8ICAgaCAgICB8IC0gICAgICAgICAgICB8IC0gICAgICAgICAgICAgICAgIHwgaCAoMSBQTSkgIHwgaGggKDAxIFBNKXxcbiAqICB8IGhvdXIyNCAgICB8ICAgSCAgICB8IC0gICAgICAgICAgICB8IC0gICAgICAgICAgICAgICAgIHwgSCAoMTMpICAgIHwgSEggKDEzKSAgIHxcbiAqICB8IG1pbnV0ZSAgICB8ICAgbSAgICB8IC0gICAgICAgICAgICB8IC0gICAgICAgICAgICAgICAgIHwgbSAoNSkgICAgIHwgbW0gKDA1KSAgIHxcbiAqICB8IHNlY29uZCAgICB8ICAgcyAgICB8IC0gICAgICAgICAgICB8IC0gICAgICAgICAgICAgICAgIHwgcyAoOSkgICAgIHwgc3MgKDA5KSAgIHxcbiAqICB8IHRpbWV6b25lICB8ICAgeiAgICB8IC0gICAgICAgICAgICB8IHogKFBhY2lmaWMgU3RhbmRhcmQgVGltZSl8IC0gIHwgLSAgICAgICAgIHxcbiAqICB8IHRpbWV6b25lICB8ICAgWiAgICB8IFogKEdNVC04OjAwKSB8IC0gICAgICAgICAgICAgICAgIHwgLSAgICAgICAgIHwgLSAgICAgICAgIHxcbiAqXG4gKiBJbiBqYXZhc2NyaXB0LCBvbmx5IHRoZSBjb21wb25lbnRzIHNwZWNpZmllZCB3aWxsIGJlIHJlc3BlY3RlZCAobm90IHRoZSBvcmRlcmluZyxcbiAqIHB1bmN0dWF0aW9ucywgLi4uKSBhbmQgZGV0YWlscyBvZiB0aGUgZm9ybWF0dGluZyB3aWxsIGJlIGRlcGVuZGVudCBvbiB0aGUgbG9jYWxlLlxuICogT24gdGhlIG90aGVyIGhhbmQgaW4gRGFydCB2ZXJzaW9uLCB5b3UgY2FuIGFsc28gaW5jbHVkZSBxdW90ZWQgdGV4dCBhcyB3ZWxsIGFzIHNvbWUgZXh0cmFcbiAqIGRhdGUvdGltZSBjb21wb25lbnRzIHN1Y2ggYXMgcXVhcnRlci4gRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOlxuICogaHR0cHM6Ly9hcGkuZGFydGxhbmcub3JnL2FwaWRvY3MvY2hhbm5lbHMvc3RhYmxlL2RhcnRkb2Mtdmlld2VyL2ludGwvaW50bC5EYXRlRm9ybWF0LlxuICpcbiAqIGBmb3JtYXRgIGNhbiBhbHNvIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHByZWRlZmluZWQgZm9ybWF0czpcbiAqXG4gKiAgLSBgJ21lZGl1bSdgOiBlcXVpdmFsZW50IHRvIGAneU1NTWRqbXMnYCAoZS5nLiBTZXAgMywgMjAxMCwgMTI6MDU6MDggUE0gZm9yIGVuLVVTKVxuICogIC0gYCdzaG9ydCdgOiBlcXVpdmFsZW50IHRvIGAneU1kam0nYCAoZS5nLiA5LzMvMjAxMCwgMTI6MDUgUE0gZm9yIGVuLVVTKVxuICogIC0gYCdmdWxsRGF0ZSdgOiBlcXVpdmFsZW50IHRvIGAneU1NTU1FRUVFZCdgIChlLmcuIEZyaWRheSwgU2VwdGVtYmVyIDMsIDIwMTAgZm9yIGVuLVVTKVxuICogIC0gYCdsb25nRGF0ZSdgOiBlcXVpdmFsZW50IHRvIGAneU1NTU1kJ2AgKGUuZy4gU2VwdGVtYmVyIDMsIDIwMTApXG4gKiAgLSBgJ21lZGl1bURhdGUnYDogZXF1aXZhbGVudCB0byBgJ3lNTU1kJ2AgKGUuZy4gU2VwIDMsIDIwMTAgZm9yIGVuLVVTKVxuICogIC0gYCdzaG9ydERhdGUnYDogZXF1aXZhbGVudCB0byBgJ3lNZCdgIChlLmcuIDkvMy8yMDEwIGZvciBlbi1VUylcbiAqICAtIGAnbWVkaXVtVGltZSdgOiBlcXVpdmFsZW50IHRvIGAnam1zJ2AgKGUuZy4gMTI6MDU6MDggUE0gZm9yIGVuLVVTKVxuICogIC0gYCdzaG9ydFRpbWUnYDogZXF1aXZhbGVudCB0byBgJ2ptJ2AgKGUuZy4gMTI6MDUgUE0gZm9yIGVuLVVTKVxuICpcbiAqIFRpbWV6b25lIG9mIHRoZSBmb3JtYXR0ZWQgdGV4dCB3aWxsIGJlIHRoZSBsb2NhbCBzeXN0ZW0gdGltZXpvbmUgb2YgdGhlIGVuZC11c2VycyBtYWNoaW5lLlxuICpcbiAqICMjIyBFeGFtcGxlc1xuICpcbiAqIEFzc3VtaW5nIGBkYXRlT2JqYCBpcyAoeWVhcjogMjAxNSwgbW9udGg6IDYsIGRheTogMTUsIGhvdXI6IDIxLCBtaW51dGU6IDQzLCBzZWNvbmQ6IDExKVxuICogaW4gdGhlIF9sb2NhbF8gdGltZSBhbmQgbG9jYWxlIGlzICdlbi1VUyc6XG4gKlxuICogYGBgXG4gKiAgICAge3sgZGF0ZU9iaiB8IGRhdGUgfX0gICAgICAgICAgICAgICAvLyBvdXRwdXQgaXMgJ0p1biAxNSwgMjAxNSdcbiAqICAgICB7eyBkYXRlT2JqIHwgZGF0ZTonbWVkaXVtJyB9fSAgICAgIC8vIG91dHB1dCBpcyAnSnVuIDE1LCAyMDE1LCA5OjQzOjExIFBNJ1xuICogICAgIHt7IGRhdGVPYmogfCBkYXRlOidzaG9ydFRpbWUnIH19ICAgLy8gb3V0cHV0IGlzICc5OjQzIFBNJ1xuICogICAgIHt7IGRhdGVPYmogfCBkYXRlOidtbXNzJyB9fSAgICAgICAgLy8gb3V0cHV0IGlzICc0MzoxMSdcbiAqIGBgYFxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3BpcGVzL3RzL2RhdGVfcGlwZS9kYXRlX3BpcGVfZXhhbXBsZS50cyByZWdpb249J0RhdGVQaXBlJ31cbiAqL1xuQENPTlNUKClcbkBQaXBlKHtuYW1lOiAnZGF0ZScsIHB1cmU6IHRydWV9KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgc3RhdGljIF9BTElBU0VTOiB7W2tleTogc3RyaW5nXTogU3RyaW5nfSA9IHtcbiAgICAnbWVkaXVtJzogJ3lNTU1kam1zJyxcbiAgICAnc2hvcnQnOiAneU1kam0nLFxuICAgICdmdWxsRGF0ZSc6ICd5TU1NTUVFRUVkJyxcbiAgICAnbG9uZ0RhdGUnOiAneU1NTU1kJyxcbiAgICAnbWVkaXVtRGF0ZSc6ICd5TU1NZCcsXG4gICAgJ3Nob3J0RGF0ZSc6ICd5TWQnLFxuICAgICdtZWRpdW1UaW1lJzogJ2ptcycsXG4gICAgJ3Nob3J0VGltZSc6ICdqbSdcbiAgfTtcblxuXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBhcmdzOiBhbnlbXSk6IHN0cmluZyB7XG4gICAgaWYgKGlzQmxhbmsodmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICAgIGlmICghdGhpcy5zdXBwb3J0cyh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9uKERhdGVQaXBlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdmFyIHBhdHRlcm46IHN0cmluZyA9IGlzUHJlc2VudChhcmdzKSAmJiBhcmdzLmxlbmd0aCA+IDAgPyBhcmdzWzBdIDogJ21lZGl1bURhdGUnO1xuICAgIGlmIChpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gRGF0ZVdyYXBwZXIuZnJvbU1pbGxpcyh2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChTdHJpbmdNYXBXcmFwcGVyLmNvbnRhaW5zKERhdGVQaXBlLl9BTElBU0VTLCBwYXR0ZXJuKSkge1xuICAgICAgcGF0dGVybiA9IDxzdHJpbmc+U3RyaW5nTWFwV3JhcHBlci5nZXQoRGF0ZVBpcGUuX0FMSUFTRVMsIHBhdHRlcm4pO1xuICAgIH1cbiAgICByZXR1cm4gRGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUsIGRlZmF1bHRMb2NhbGUsIHBhdHRlcm4pO1xuICB9XG5cbiAgc3VwcG9ydHMob2JqOiBhbnkpOiBib29sZWFuIHsgcmV0dXJuIGlzRGF0ZShvYmopIHx8IGlzTnVtYmVyKG9iaik7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';(function (NumberFormatStyle) {\r\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\r\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\r\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\r\n})(exports.NumberFormatStyle || (exports.NumberFormatStyle = {}));\r\nvar NumberFormatStyle = exports.NumberFormatStyle;\r\nvar NumberFormatter = (function () {\r\n function NumberFormatter() {\r\n }\r\n NumberFormatter.format = function (num, locale, style, _a) {\r\n var _b = _a === void 0 ? {} : _a, _c = _b.minimumIntegerDigits, minimumIntegerDigits = _c === void 0 ? 1 : _c, _d = _b.minimumFractionDigits, minimumFractionDigits = _d === void 0 ? 0 : _d, _e = _b.maximumFractionDigits, maximumFractionDigits = _e === void 0 ? 3 : _e, currency = _b.currency, _f = _b.currencyAsSymbol, currencyAsSymbol = _f === void 0 ? false : _f;\r\n var intlOptions = {\r\n minimumIntegerDigits: minimumIntegerDigits,\r\n minimumFractionDigits: minimumFractionDigits,\r\n maximumFractionDigits: maximumFractionDigits\r\n };\r\n intlOptions.style = NumberFormatStyle[style].toLowerCase();\r\n if (style == NumberFormatStyle.Currency) {\r\n intlOptions.currency = currency;\r\n intlOptions.currencyDisplay = currencyAsSymbol ? 'symbol' : 'code';\r\n }\r\n return new Intl.NumberFormat(locale, intlOptions).format(num);\r\n };\r\n return NumberFormatter;\r\n})();\r\nexports.NumberFormatter = NumberFormatter;\r\nfunction digitCondition(len) {\r\n return len == 2 ? '2-digit' : 'numeric';\r\n}\r\nfunction nameCondition(len) {\r\n return len < 4 ? 'short' : 'long';\r\n}\r\nfunction extractComponents(pattern) {\r\n var ret = {};\r\n var i = 0, j;\r\n while (i < pattern.length) {\r\n j = i;\r\n while (j < pattern.length && pattern[j] == pattern[i])\r\n j++;\r\n var len = j - i;\r\n switch (pattern[i]) {\r\n case 'G':\r\n ret.era = nameCondition(len);\r\n break;\r\n case 'y':\r\n ret.year = digitCondition(len);\r\n break;\r\n case 'M':\r\n if (len >= 3)\r\n ret.month = nameCondition(len);\r\n else\r\n ret.month = digitCondition(len);\r\n break;\r\n case 'd':\r\n ret.day = digitCondition(len);\r\n break;\r\n case 'E':\r\n ret.weekday = nameCondition(len);\r\n break;\r\n case 'j':\r\n ret.hour = digitCondition(len);\r\n break;\r\n case 'h':\r\n ret.hour = digitCondition(len);\r\n ret.hour12 = true;\r\n break;\r\n case 'H':\r\n ret.hour = digitCondition(len);\r\n ret.hour12 = false;\r\n break;\r\n case 'm':\r\n ret.minute = digitCondition(len);\r\n break;\r\n case 's':\r\n ret.second = digitCondition(len);\r\n break;\r\n case 'z':\r\n ret.timeZoneName = 'long';\r\n break;\r\n case 'Z':\r\n ret.timeZoneName = 'short';\r\n break;\r\n }\r\n i = j;\r\n }\r\n return ret;\r\n}\r\nvar dateFormatterCache = new Map();\r\nvar DateFormatter = (function () {\r\n function DateFormatter() {\r\n }\r\n DateFormatter.format = function (date, locale, pattern) {\r\n var key = locale + pattern;\r\n if (dateFormatterCache.has(key)) {\r\n return dateFormatterCache.get(key).format(date);\r\n }\r\n var formatter = new Intl.DateTimeFormat(locale, extractComponents(pattern));\r\n dateFormatterCache.set(key, formatter);\r\n return formatter.format(date);\r\n };\r\n return DateFormatter;\r\n})();\r\nexports.DateFormatter = DateFormatter;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50bC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9mYWNhZGUvaW50bC50cyJdLCJuYW1lcyI6WyJOdW1iZXJGb3JtYXRTdHlsZSIsIk51bWJlckZvcm1hdHRlciIsIk51bWJlckZvcm1hdHRlci5jb25zdHJ1Y3RvciIsIk51bWJlckZvcm1hdHRlci5mb3JtYXQiLCJkaWdpdENvbmRpdGlvbiIsIm5hbWVDb25kaXRpb24iLCJleHRyYWN0Q29tcG9uZW50cyIsIkRhdGVGb3JtYXR0ZXIiLCJEYXRlRm9ybWF0dGVyLmNvbnN0cnVjdG9yIiwiRGF0ZUZvcm1hdHRlci5mb3JtYXQiXSwibWFwcGluZ3MiOiJBQTJDQSxXQUFZLGlCQUFpQjtJQUMzQkEsK0RBQU9BLENBQUFBO0lBQ1BBLCtEQUFPQSxDQUFBQTtJQUNQQSxpRUFBUUEsQ0FBQUE7QUFDVkEsQ0FBQ0EsRUFKVyx5QkFBaUIsS0FBakIseUJBQWlCLFFBSTVCO0FBSkQsSUFBWSxpQkFBaUIsR0FBakIseUJBSVgsQ0FBQTtBQUVEO0lBQUFDO0lBc0JBQyxDQUFDQTtJQXJCUUQsc0JBQU1BLEdBQWJBLFVBQWNBLEdBQVdBLEVBQUVBLE1BQWNBLEVBQUVBLEtBQXdCQSxFQUNyREEsRUFPTUE7aUNBQUZFLEVBQUVBLHFDQVBMQSxvQkFBb0JBLG1CQUFHQSxDQUFDQSxzQ0FBRUEscUJBQXFCQSxtQkFBR0EsQ0FBQ0Esc0NBQUVBLHFCQUFxQkEsbUJBQUdBLENBQUNBLE9BQzlFQSxRQUFRQSwwQ0FBRUEsZ0JBQWdCQSxtQkFBR0EsS0FBS0E7UUFPL0NBLElBQUlBLFdBQVdBLEdBQTZCQTtZQUMxQ0Esb0JBQW9CQSxFQUFFQSxvQkFBb0JBO1lBQzFDQSxxQkFBcUJBLEVBQUVBLHFCQUFxQkE7WUFDNUNBLHFCQUFxQkEsRUFBRUEscUJBQXFCQTtTQUM3Q0EsQ0FBQ0E7UUFDRkEsV0FBV0EsQ0FBQ0EsS0FBS0EsR0FBR0EsaUJBQWlCQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxXQUFX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Q0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDaENBLE1BQU1BLENBQUNBLGtCQUFrQkEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDbERBLENBQUNBO1FBQ0RBLElBQUlBLFNBQVNBLEdBQUdBLElBQUlBLElBQUlBLENBQUNBLGNBQWNBLENBQUNBLE1BQU1BLEVBQUVBLGlCQUFpQkEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDNUVBLGtCQUFrQkEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsR0FBR0EsRUFBRUEsU0FBU0EsQ0FBQ0EsQ0FBQ0E7UUFDdkNBLE1BQU1BLENBQUNBLFNBQVNBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLENBQUNBO0lBQ2hDQSxDQUFDQTtJQUNIRixvQkFBQ0E7QUFBREEsQ0FBQ0EsQUFWRCxJQVVDO0FBVlkscUJBQWEsZ0JBVXpCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIE1vZGlmaWVkIHZlcnNpb24gb2YgaW50ZXJuYWwgVHlwZXNjcmlwdCBpbnRsLmQudHMuXG4vLyBUT0RPKHBpbG9vcGluKTogcmVtb3ZlIHdoZW4gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zNTIxIGlzIHNoaXBwZWQuXG5kZWNsYXJlIG1vZHVsZSBJbnRsIHtcbiAgaW50ZXJmYWNlIE51bWJlckZvcm1hdE9wdGlvbnMge1xuICAgIGxvY2FsZU1hdGNoZXI/OiBzdHJpbmc7XG4gICAgc3R5bGU/OiBzdHJpbmc7XG4gICAgY3VycmVuY3k/OiBzdHJpbmc7XG4gICAgY3VycmVuY3lEaXNwbGF5Pzogc3RyaW5nO1xuICAgIHVzZUdyb3VwaW5nPzogYm9vbGVhbjtcbiAgICBtaW5pbXVtSW50ZWdlckRpZ2l0cz86IG51bWJlcjtcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM/OiBudW1iZXI7XG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICB9XG5cbiAgaW50ZXJmYWNlIE51bWJlckZvcm1hdCB7XG4gICAgZm9ybWF0KHZhbHVlOiBudW1iZXIpOiBzdHJpbmc7XG4gIH1cblxuICB2YXIgTnVtYmVyRm9ybWF0OiB7bmV3IChsb2NhbGU/OiBzdHJpbmcsIG9wdGlvbnM/OiBOdW1iZXJGb3JtYXRPcHRpb25zKTogTnVtYmVyRm9ybWF0fTtcblxuICBpbnRlcmZhY2UgRGF0ZVRpbWVGb3JtYXRPcHRpb25zIHtcbiAgICBsb2NhbGVNYXRjaGVyPzogc3RyaW5nO1xuICAgIHdlZWtkYXk/OiBzdHJpbmc7XG4gICAgZXJhPzogc3RyaW5nO1xuICAgIHllYXI/OiBzdHJpbmc7XG4gICAgbW9udGg/OiBzdHJpbmc7XG4gICAgZGF5Pzogc3RyaW5nO1xuICAgIGhvdXI/OiBzdHJpbmc7XG4gICAgbWludXRlPzogc3RyaW5nO1xuICAgIHNlY29uZD86IHN0cmluZztcbiAgICB0aW1lWm9uZU5hbWU/OiBzdHJpbmc7XG4gICAgZm9ybWF0TWF0Y2hlcj86IHN0cmluZztcbiAgICBob3VyMTI/OiBib29sZWFuO1xuICB9XG5cbiAgaW50ZXJmYWNlIERhdGVUaW1lRm9ybWF0IHtcbiAgICBmb3JtYXQoZGF0ZT86IERhdGUgfCBudW1iZXIpOiBzdHJpbmc7XG4gIH1cblxuICB2YXIgRGF0ZVRpbWVGb3JtYXQ6IHtuZXcgKGxvY2FsZT86IHN0cmluZywgb3B0aW9ucz86IERhdGVUaW1lRm9ybWF0T3B0aW9ucyk6IERhdGVUaW1lRm9ybWF0fTtcbn1cblxuZXhwb3J0IGVudW0gTnVtYmVyRm9ybWF0U3R5bGUge1xuICBEZWNpbWFsLFxuICBQZXJjZW50LFxuICBDdXJyZW5jeVxufVxuXG5leHBvcnQgY2xhc3MgTnVtYmVyRm9ybWF0dGVyIHtcbiAgc3RhdGljIGZvcm1hdChudW06IG51bWJlciwgbG9jYWxlOiBzdHJpbmcsIHN0eWxlOiBOdW1iZXJGb3JtYXRTdHlsZSxcbiAgICAgICAgICAgICAgICB7bWluaW11bUludGVnZXJEaWdpdHMgPSAxLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSAwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSAzLFxuICAgICAgICAgICAgICAgICBjdXJyZW5jeSwgY3VycmVuY3lBc1N5bWJvbCA9IGZhbHNlfToge1xuICAgICAgICAgICAgICAgICAgbWluaW11bUludGVnZXJEaWdpdHM/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICBjdXJyZW5jeT86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbmN5QXNTeW1ib2w/OiBib29sZWFuXG4gICAgICAgICAgICAgICAgfSA9IHt9KTogc3RyaW5nIHtcbiAgICB2YXIgaW50bE9wdGlvbnM6IEludGwuTnVtYmVyRm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgIG1pbmltdW1JbnRlZ2VyRGlnaXRzOiBtaW5pbXVtSW50ZWdlckRpZ2l0cyxcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogbWluaW11bUZyYWN0aW9uRGlnaXRzLFxuICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBtYXhpbXVtRnJhY3Rpb25EaWdpdHNcbiAgICB9O1xuICAgIGludGxPcHRpb25zLnN0eWxlID0gTnVtYmVyRm9ybWF0U3R5bGVbc3R5bGVdLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHN0eWxlID09IE51bWJlckZvcm1hdFN0eWxlLkN1cnJlbmN5KSB7XG4gICAgICBpbnRsT3B0aW9ucy5jdXJyZW5jeSA9IGN1cnJlbmN5O1xuICAgICAgaW50bE9wdGlvbnMuY3VycmVuY3lEaXNwbGF5ID0gY3VycmVuY3lBc1N5bWJvbCA/ICdzeW1ib2wnIDogJ2NvZGUnO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwgaW50bE9wdGlvbnMpLmZvcm1hdChudW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRpZ2l0Q29uZGl0aW9uKGxlbjogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGxlbiA9PSAyID8gJzItZGlnaXQnIDogJ251bWVyaWMnO1xufVxuZnVuY3Rpb24gbmFtZUNvbmRpdGlvbihsZW46IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBsZW4gPCA0ID8gJ3Nob3J0JyA6ICdsb25nJztcbn1cbmZ1bmN0aW9uIGV4dHJhY3RDb21wb25lbnRzKHBhdHRlcm46IHN0cmluZyk6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zIHtcbiAgdmFyIHJldDogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7fTtcbiAgdmFyIGkgPSAwLCBqO1xuICB3aGlsZSAoaSA8IHBhdHRlcm4ubGVuZ3RoKSB7XG4gICAgaiA9IGk7XG4gICAgd2hpbGUgKGogPCBwYXR0ZXJuLmxlbmd0aCAmJiBwYXR0ZXJuW2pdID09IHBhdHRlcm5baV0pIGorKztcbiAgICBsZXQgbGVuID0gaiAtIGk7XG4gICAgc3dpdGNoIChwYXR0ZXJuW2ldKSB7XG4gICAgICBjYXNlICdHJzpcbiAgICAgICAgcmV0LmVyYSA9IG5hbWVDb25kaXRpb24obGVuKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd5JzpcbiAgICAgICAgcmV0LnllYXIgPSBkaWdpdENvbmRpdGlvbihsZW4pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ00nOlxuICAgICAgICBpZiAobGVuID49IDMpXG4gICAgICAgICAgcmV0Lm1vbnRoID0gbmFtZUNvbmRpdGlvbihsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmV0Lm1vbnRoID0gZGlnaXRDb25kaXRpb24obGVuKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkJzpcbiAgICAgICAgcmV0LmRheSA9IGRpZ2l0Q29uZGl0aW9uKGxlbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRSc6XG4gICAgICAgIHJldC53ZWVrZGF5ID0gbmFtZUNvbmRpdGlvbihsZW4pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2onOlxuICAgICAgICByZXQuaG91ciA9IGRpZ2l0Q29uZGl0aW9uKGxlbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaCc6XG4gICAgICAgIHJldC5ob3VyID0gZGlnaXRDb25kaXRpb24obGVuKTtcbiAgICAgICAgcmV0LmhvdXIxMiA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSCc6XG4gICAgICAgIHJldC5ob3VyID0gZGlnaXRDb25kaXRpb24obGVuKTtcbiAgICAgICAgcmV0LmhvdXIxMiA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ20nOlxuICAgICAgICByZXQubWludXRlID0gZGlnaXRDb25kaXRpb24obGVuKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzJzpcbiAgICAgICAgcmV0LnNlY29uZCA9IGRpZ2l0Q29uZGl0aW9uKGxlbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAneic6XG4gICAgICAgIHJldC50aW1lWm9uZU5hbWUgPSAnbG9uZyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnWic6XG4gICAgICAgIHJldC50aW1lWm9uZU5hbWUgPSAnc2hvcnQnO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaSA9IGo7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxudmFyIGRhdGVGb3JtYXR0ZXJDYWNoZTogTWFwPHN0cmluZywgSW50bC5EYXRlVGltZUZvcm1hdD4gPSBuZXcgTWFwPHN0cmluZywgSW50bC5EYXRlVGltZUZvcm1hdD4oKTtcblxuZXhwb3J0IGNsYXNzIERhdGVGb3JtYXR0ZXIge1xuICBzdGF0aWMgZm9ybWF0KGRhdGU6IERhdGUsIGxvY2FsZTogc3RyaW5nLCBwYXR0ZXJuOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHZhciBrZXkgPSBsb2NhbGUgKyBwYXR0ZXJuO1xuICAgIGlmIChkYXRlRm9ybWF0dGVyQ2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiBkYXRlRm9ybWF0dGVyQ2FjaGUuZ2V0KGtleSkuZm9ybWF0KGRhdGUpO1xuICAgIH1cbiAgICB2YXIgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBleHRyYWN0Q29tcG9uZW50cyhwYXR0ZXJuKSk7XG4gICAgZGF0ZUZvcm1hdHRlckNhY2hlLnNldChrZXksIGZvcm1hdHRlcik7XG4gICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQoZGF0ZSk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar intl_1 = require('angular2/src/facade/intl');\r\nvar core_1 = require('angular2/core');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\nvar defaultLocale = 'en-US';\r\nvar _re = lang_1.RegExpWrapper.create('^(\\\\d+)?\\\\.((\\\\d+)(\\\\-(\\\\d+))?)?$');\r\n/**\r\n * Internal base class for numeric pipes.\r\n */\r\nvar NumberPipe = (function () {\r\n function NumberPipe() {\r\n }\r\n /** @internal */\r\n NumberPipe._format = function (value, style, digits, currency, currencyAsSymbol) {\r\n if (currency === void 0) { currency = null; }\r\n if (currencyAsSymbol === void 0) { currencyAsSymbol = false; }\r\n if (lang_1.isBlank(value))\r\n return null;\r\n if (!lang_1.isNumber(value)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(NumberPipe, value);\r\n }\r\n var minInt = 1, minFraction = 0, maxFraction = 3;\r\n if (lang_1.isPresent(digits)) {\r\n var parts = lang_1.RegExpWrapper.firstMatch(_re, digits);\r\n if (lang_1.isBlank(parts)) {\r\n throw new exceptions_1.BaseException(digits + \" is not a valid digit info for number pipes\");\r\n }\r\n if (lang_1.isPresent(parts[1])) {\r\n minInt = lang_1.NumberWrapper.parseIntAutoRadix(parts[1]);\r\n }\r\n if (lang_1.isPresent(parts[3])) {\r\n minFraction = lang_1.NumberWrapper.parseIntAutoRadix(parts[3]);\r\n }\r\n if (lang_1.isPresent(parts[5])) {\r\n maxFraction = lang_1.NumberWrapper.parseIntAutoRadix(parts[5]);\r\n }\r\n }\r\n return intl_1.NumberFormatter.format(value, defaultLocale, style, {\r\n minimumIntegerDigits: minInt,\r\n minimumFractionDigits: minFraction,\r\n maximumFractionDigits: maxFraction,\r\n currency: currency,\r\n currencyAsSymbol: currencyAsSymbol\r\n });\r\n };\r\n NumberPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], NumberPipe);\r\n return NumberPipe;\r\n})();\r\nexports.NumberPipe = NumberPipe;\r\n/**\r\n * WARNING: this pipe uses the Internationalization API.\r\n * Therefore it is only reliable in Chrome and Opera browsers.\r\n *\r\n * Formats a number as local text. i.e. group sizing and separator and other locale-specific\r\n * configurations are based on the active locale.\r\n *\r\n * ### Usage\r\n *\r\n * expression | number[:digitInfo]\r\n *\r\n * where `expression` is a number and `digitInfo` has the following format:\r\n *\r\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\r\n *\r\n * - minIntegerDigits is the minimum number of integer digits to use. Defaults to 1.\r\n * - minFractionDigits is the minimum number of digits after fraction. Defaults to 0.\r\n * - maxFractionDigits is the maximum number of digits after fraction. Defaults to 3.\r\n *\r\n * For more information on the acceptable range for each of these numbers and other\r\n * details see your native internationalization library.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/pipes/ts/number_pipe/number_pipe_example.ts region='NumberPipe'}\r\n */\r\nvar DecimalPipe = (function (_super) {\r\n __extends(DecimalPipe, _super);\r\n function DecimalPipe() {\r\n _super.apply(this, arguments);\r\n }\r\n DecimalPipe.prototype.transform = function (value, args) {\r\n var digits = collection_1.ListWrapper.first(args);\r\n return NumberPipe._format(value, intl_1.NumberFormatStyle.Decimal, digits);\r\n };\r\n DecimalPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'number' }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], DecimalPipe);\r\n return DecimalPipe;\r\n})(NumberPipe);\r\nexports.DecimalPipe = DecimalPipe;\r\n/**\r\n * WARNING: this pipe uses the Internationalization API.\r\n * Therefore it is only reliable in Chrome and Opera browsers.\r\n *\r\n * Formats a number as local percent.\r\n *\r\n * ### Usage\r\n *\r\n * expression | percent[:digitInfo]\r\n *\r\n * For more information about `digitInfo` see {@link DecimalPipe}\r\n *\r\n * ### Example\r\n *\r\n * {@example core/pipes/ts/number_pipe/number_pipe_example.ts region='PercentPipe'}\r\n */\r\nvar PercentPipe = (function (_super) {\r\n __extends(PercentPipe, _super);\r\n function PercentPipe() {\r\n _super.apply(this, arguments);\r\n }\r\n PercentPipe.prototype.transform = function (value, args) {\r\n var digits = collection_1.ListWrapper.first(args);\r\n return NumberPipe._format(value, intl_1.NumberFormatStyle.Percent, digits);\r\n };\r\n PercentPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'percent' }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], PercentPipe);\r\n return PercentPipe;\r\n})(NumberPipe);\r\nexports.PercentPipe = PercentPipe;\r\n/**\r\n * WARNING: this pipe uses the Internationalization API.\r\n * Therefore it is only reliable in Chrome and Opera browsers.\r\n *\r\n * Formats a number as local currency.\r\n *\r\n * ### Usage\r\n *\r\n * expression | currency[:currencyCode[:symbolDisplay[:digitInfo]]]\r\n *\r\n * where `currencyCode` is the ISO 4217 currency code, such as \"USD\" for the US dollar and\r\n * \"EUR\" for the euro. `symbolDisplay` is a boolean indicating whether to use the currency\r\n * symbol (e.g. $) or the currency code (e.g. USD) in the output. The default for this value\r\n * is `false`.\r\n * For more information about `digitInfo` see {@link DecimalPipe}\r\n *\r\n * ### Example\r\n *\r\n * {@example core/pipes/ts/number_pipe/number_pipe_example.ts region='CurrencyPipe'}\r\n */\r\nvar CurrencyPipe = (function (_super) {\r\n __extends(CurrencyPipe, _super);\r\n function CurrencyPipe() {\r\n _super.apply(this, arguments);\r\n }\r\n CurrencyPipe.prototype.transform = function (value, args) {\r\n var currencyCode = lang_1.isPresent(args) && args.length > 0 ? args[0] : 'USD';\r\n var symbolDisplay = lang_1.isPresent(args) && args.length > 1 ? args[1] : false;\r\n var digits = lang_1.isPresent(args) && args.length > 2 ? args[2] : null;\r\n return NumberPipe._format(value, intl_1.NumberFormatStyle.Currency, digits, currencyCode, symbolDisplay);\r\n };\r\n CurrencyPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'currency' }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], CurrencyPipe);\r\n return CurrencyPipe;\r\n})(NumberPipe);\r\nexports.CurrencyPipe = CurrencyPipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyX3BpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL3BpcGVzL251bWJlcl9waXBlLnRzIl0sIm5hbWVzIjpbIk51bWJlclBpcGUiLCJOdW1iZXJQaXBlLmNvbnN0cnVjdG9yIiwiTnVtYmVyUGlwZS5fZm9ybWF0IiwiRGVjaW1hbFBpcGUiLCJEZWNpbWFsUGlwZS5jb25zdHJ1Y3RvciIsIkRlY2ltYWxQaXBlLnRyYW5zZm9ybSIsIlBlcmNlbnRQaXBlIiwiUGVyY2VudFBpcGUuY29uc3RydWN0b3IiLCJQZXJjZW50UGlwZS50cmFuc2Zvcm0iLCJDdXJyZW5jeVBpcGUiLCJDdXJyZW5jeVBpcGUuY29uc3RydWN0b3IiLCJDdXJyZW5jeVBpcGUudHJhbnNmb3JtIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLHFCQVNPLDBCQUEwQixDQUFDLENBQUE7QUFDbEMsMkJBQThDLGdDQUFnQyxDQUFDLENBQUE7QUFDL0UscUJBQWlELDBCQUEwQixDQUFDLENBQUE7QUFDNUUscUJBQTRELGVBQWUsQ0FBQyxDQUFBO0FBQzVFLDJCQUEwQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTNELGdEQUEyQyxtQ0FBbUMsQ0FBQyxDQUFBO0FBRS9FLElBQUksYUFBYSxHQUFXLE9BQU8sQ0FBQztBQUNwQyxJQUFJLEdBQUcsR0FBRyxvQkFBYSxDQUFDLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBRXBFOztHQUVHO0FBQ0g7SUFBQUE7SUFrQ0FDLENBQUNBO0lBL0JDRCxnQkFBZ0JBO0lBQ1RBLGtCQUFPQSxHQUFkQSxVQUFlQSxLQUFhQSxFQUFFQSxLQUF3QkEsRUFBRUEsTUFBY0EsRUFBRUEsUUFBdUJBLEVBQ2hGQSxnQkFBaUNBO1FBRHdCRSx3QkFBdUJBLEdBQXZCQSxlQUF1QkE7UUFDaEZBLGdDQUFpQ0EsR0FBakNBLHdCQUFpQ0E7UUFDOUNBLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLEtBQUtB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aEZBLElBQUlBLGFBQWFBLEdBQVlBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxJQUFJQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxLQUFLQSxDQUFDQTtRQUNsRkEsSUFBSUEsTUFBTUEsR0FBV0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLElBQUlBLENBQUNBLE1BQU1BLEdBQUdBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBO1FBQ3pFQSxNQUFNQSxDQUFDQSxVQUFVQSxDQUFDQSxPQUFPQSxDQUFDQSxLQUFLQSxFQUFFQSx3QkFBaUJBLENBQUNBLFFBQVFBLEVBQUVBLE1BQU1BLEVBQUVBLFlBQVlBLEVBQ3ZEQSxhQUFhQSxDQUFDQSxDQUFDQTtJQUMzQ0EsQ0FBQ0E7SUFWSEY7UUFBQ0EsWUFBS0EsRUFBRUE7UUFDUEEsV0FBSUEsQ0FBQ0EsRUFBQ0EsSUFBSUEsRUFBRUEsVUFBVUEsRUFBQ0EsQ0FBQ0E7UUFDeEJBLGlCQUFVQSxFQUFFQTs7cUJBU1pBO0lBQURBLG1CQUFDQTtBQUFEQSxDQUFDQSxBQVhELEVBR2tDLFVBQVUsRUFRM0M7QUFSWSxvQkFBWSxlQVF4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNOdW1iZXIsXG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgU3RyaW5nV3JhcHBlcixcbiAgTnVtYmVyV3JhcHBlcixcbiAgUmVnRXhwV3JhcHBlcixcbiAgQ09OU1QsXG4gIEZ1bmN0aW9uV3JhcHBlclxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtOdW1iZXJGb3JtYXR0ZXIsIE51bWJlckZvcm1hdFN0eWxlfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2ludGwnO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBQaXBlVHJhbnNmb3JtLCBXcmFwcGVkVmFsdWUsIFBpcGV9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxuaW1wb3J0IHtJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9ufSBmcm9tICcuL2ludmFsaWRfcGlwZV9hcmd1bWVudF9leGNlcHRpb24nO1xuXG52YXIgZGVmYXVsdExvY2FsZTogc3RyaW5nID0gJ2VuLVVTJztcbnZhciBfcmUgPSBSZWdFeHBXcmFwcGVyLmNyZWF0ZSgnXihcXFxcZCspP1xcXFwuKChcXFxcZCspKFxcXFwtKFxcXFxkKykpPyk/JCcpO1xuXG4vKipcbiAqIEludGVybmFsIGJhc2UgY2xhc3MgZm9yIG51bWVyaWMgcGlwZXMuXG4gKi9cbkBDT05TVCgpXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTnVtYmVyUGlwZSB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgc3RhdGljIF9mb3JtYXQodmFsdWU6IG51bWJlciwgc3R5bGU6IE51bWJlckZvcm1hdFN0eWxlLCBkaWdpdHM6IHN0cmluZywgY3VycmVuY3k6IHN0cmluZyA9IG51bGwsXG4gICAgICAgICAgICAgICAgIGN1cnJlbmN5QXNTeW1ib2w6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgaWYgKGlzQmxhbmsodmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoIWlzTnVtYmVyKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQaXBlQXJndW1lbnRFeGNlcHRpb24oTnVtYmVyUGlwZSwgdmFsdWUpO1xuICAgIH1cbiAgICB2YXIgbWluSW50ID0gMSwgbWluRnJhY3Rpb24gPSAwLCBtYXhGcmFjdGlvbiA9IDM7XG4gICAgaWYgKGlzUHJlc2VudChkaWdpdHMpKSB7XG4gICAgICB2YXIgcGFydHMgPSBSZWdFeHBXcmFwcGVyLmZpcnN0TWF0Y2goX3JlLCBkaWdpdHMpO1xuICAgICAgaWYgKGlzQmxhbmsocGFydHMpKSB7XG4gICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGAke2RpZ2l0c30gaXMgbm90IGEgdmFsaWQgZGlnaXQgaW5mbyBmb3IgbnVtYmVyIHBpcGVzYCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNQcmVzZW50KHBhcnRzWzFdKSkgeyAgLy8gbWluIGludGVnZXIgZGlnaXRzXG4gICAgICAgIG1pbkludCA9IE51bWJlcldyYXBwZXIucGFyc2VJbnRBdXRvUmFkaXgocGFydHNbMV0pO1xuICAgICAgfVxuICAgICAgaWYgKGlzUHJlc2VudChwYXJ0c1szXSkpIHsgIC8vIG1pbiBmcmFjdGlvbiBkaWdpdHNcbiAgICAgICAgbWluRnJhY3Rpb24gPSBOdW1iZXJXcmFwcGVyLnBhcnNlSW50QXV0b1JhZGl4KHBhcnRzWzNdKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1ByZXNlbnQocGFydHNbNV0pKSB7ICAvLyBtYXggZnJhY3Rpb24gZGlnaXRzXG4gICAgICAgIG1heEZyYWN0aW9uID0gTnVtYmVyV3JhcHBlci5wYXJzZUludEF1dG9SYWRpeChwYXJ0c1s1XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBOdW1iZXJGb3JtYXR0ZXIuZm9ybWF0KHZhbHVlLCBkZWZhdWx0TG9jYWxlLCBzdHlsZSwge1xuICAgICAgbWluaW11bUludGVnZXJEaWdpdHM6IG1pbkludCxcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogbWluRnJhY3Rpb24sXG4gICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG1heEZyYWN0aW9uLFxuICAgICAgY3VycmVuY3k6IGN1cnJlbmN5LFxuICAgICAgY3VycmVuY3lBc1N5bWJvbDogY3VycmVuY3lBc1N5bWJvbFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogV0FSTklORzogdGhpcyBwaXBlIHVzZXMgdGhlIEludGVybmF0aW9uYWxpemF0aW9uIEFQSS5cbiAqIFRoZXJlZm9yZSBpdCBpcyBvbmx5IHJlbGlhYmxlIGluIENocm9tZSBhbmQgT3BlcmEgYnJvd3NlcnMuXG4gKlxuICogRm9ybWF0cyBhIG51bWJlciBhcyBsb2NhbCB0ZXh0LiBpLmUuIGdyb3VwIHNpemluZyBhbmQgc2VwYXJhdG9yIGFuZCBvdGhlciBsb2NhbGUtc3BlY2lmaWNcbiAqIGNvbmZpZ3VyYXRpb25zIGFyZSBiYXNlZCBvbiB0aGUgYWN0aXZlIGxvY2FsZS5cbiAqXG4gKiAjIyMgVXNhZ2VcbiAqXG4gKiAgICAgZXhwcmVzc2lvbiB8IG51bWJlcls6ZGlnaXRJbmZvXVxuICpcbiAqIHdoZXJlIGBleHByZXNzaW9uYCBpcyBhIG51bWJlciBhbmQgYGRpZ2l0SW5mb2AgaGFzIHRoZSBmb2xsb3dpbmcgZm9ybWF0OlxuICpcbiAqICAgICB7bWluSW50ZWdlckRpZ2l0c30ue21pbkZyYWN0aW9uRGlnaXRzfS17bWF4RnJhY3Rpb25EaWdpdHN9XG4gKlxuICogLSBtaW5JbnRlZ2VyRGlnaXRzIGlzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyB0byB1c2UuIERlZmF1bHRzIHRvIDEuXG4gKiAtIG1pbkZyYWN0aW9uRGlnaXRzIGlzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgZnJhY3Rpb24uIERlZmF1bHRzIHRvIDAuXG4gKiAtIG1heEZyYWN0aW9uRGlnaXRzIGlzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgZnJhY3Rpb24uIERlZmF1bHRzIHRvIDMuXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGFjY2VwdGFibGUgcmFuZ2UgZm9yIGVhY2ggb2YgdGhlc2UgbnVtYmVycyBhbmQgb3RoZXJcbiAqIGRldGFpbHMgc2VlIHlvdXIgbmF0aXZlIGludGVybmF0aW9uYWxpemF0aW9uIGxpYnJhcnkuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiB7QGV4YW1wbGUgY29yZS9waXBlcy90cy9udW1iZXJfcGlwZS9udW1iZXJfcGlwZV9leGFtcGxlLnRzIHJlZ2lvbj0nTnVtYmVyUGlwZSd9XG4gKi9cbkBDT05TVCgpXG5AUGlwZSh7bmFtZTogJ251bWJlcid9KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERlY2ltYWxQaXBlIGV4dGVuZHMgTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgYXJnczogYW55W10pOiBzdHJpbmcge1xuICAgIHZhciBkaWdpdHM6IHN0cmluZyA9IExpc3RXcmFwcGVyLmZpcnN0KGFyZ3MpO1xuICAgIHJldHVybiBOdW1iZXJQaXBlLl9mb3JtYXQodmFsdWUsIE51bWJlckZvcm1hdFN0eWxlLkRlY2ltYWwsIGRpZ2l0cyk7XG4gIH1cbn1cblxuLyoqXG4gKiBXQVJOSU5HOiB0aGlzIHBpcGUgdXNlcyB0aGUgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJLlxuICogVGhlcmVmb3JlIGl0IGlzIG9ubHkgcmVsaWFibGUgaW4gQ2hyb21lIGFuZCBPcGVyYSBicm93c2Vycy5cbiAqXG4gKiBGb3JtYXRzIGEgbnVtYmVyIGFzIGxvY2FsIHBlcmNlbnQuXG4gKlxuICogIyMjIFVzYWdlXG4gKlxuICogICAgIGV4cHJlc3Npb24gfCBwZXJjZW50WzpkaWdpdEluZm9dXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYGRpZ2l0SW5mb2Agc2VlIHtAbGluayBEZWNpbWFsUGlwZX1cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3BpcGVzL3RzL251bWJlcl9waXBlL251bWJlcl9waXBlX2V4YW1wbGUudHMgcmVnaW9uPSdQZXJjZW50UGlwZSd9XG4gKi9cbkBDT05TVCgpXG5AUGlwZSh7bmFtZTogJ3BlcmNlbnQnfSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQZXJjZW50UGlwZSBleHRlbmRzIE51bWJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGFyZ3M6IGFueVtdKTogc3RyaW5nIHtcbiAgICB2YXIgZGlnaXRzOiBzdHJpbmcgPSBMaXN0V3JhcHBlci5maXJzdChhcmdzKTtcbiAgICByZXR1cm4gTnVtYmVyUGlwZS5fZm9ybWF0KHZhbHVlLCBOdW1iZXJGb3JtYXRTdHlsZS5QZXJjZW50LCBkaWdpdHMpO1xuICB9XG59XG5cbi8qKlxuICogV0FSTklORzogdGhpcyBwaXBlIHVzZXMgdGhlIEludGVybmF0aW9uYWxpemF0aW9uIEFQSS5cbiAqIFRoZXJlZm9yZSBpdCBpcyBvbmx5IHJlbGlhYmxlIGluIENocm9tZSBhbmQgT3BlcmEgYnJvd3NlcnMuXG4gKlxuICogRm9ybWF0cyBhIG51bWJlciBhcyBsb2NhbCBjdXJyZW5jeS5cbiAqXG4gKiAjIyMgVXNhZ2VcbiAqXG4gKiAgICAgZXhwcmVzc2lvbiB8IGN1cnJlbmN5WzpjdXJyZW5jeUNvZGVbOnN5bWJvbERpc3BsYXlbOmRpZ2l0SW5mb11dXVxuICpcbiAqIHdoZXJlIGBjdXJyZW5jeUNvZGVgIGlzIHRoZSBJU08gNDIxNyBjdXJyZW5jeSBjb2RlLCBzdWNoIGFzIFwiVVNEXCIgZm9yIHRoZSBVUyBkb2xsYXIgYW5kXG4gKiBcIkVVUlwiIGZvciB0aGUgZXVyby4gYHN5bWJvbERpc3BsYXlgIGlzIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gdXNlIHRoZSBjdXJyZW5jeVxuICogc3ltYm9sIChlLmcuICQpIG9yIHRoZSBjdXJyZW5jeSBjb2RlIChlLmcuIFVTRCkgaW4gdGhlIG91dHB1dC4gVGhlIGRlZmF1bHQgZm9yIHRoaXMgdmFsdWVcbiAqIGlzIGBmYWxzZWAuXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBgZGlnaXRJbmZvYCBzZWUge0BsaW5rIERlY2ltYWxQaXBlfVxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICoge0BleGFtcGxlIGNvcmUvcGlwZXMvdHMvbnVtYmVyX3BpcGUvbnVtYmVyX3BpcGVfZXhhbXBsZS50cyByZWdpb249J0N1cnJlbmN5UGlwZSd9XG4gKi9cbkBDT05TVCgpXG5AUGlwZSh7bmFtZTogJ2N1cnJlbmN5J30pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ3VycmVuY3lQaXBlIGV4dGVuZHMgTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgYXJnczogYW55W10pOiBzdHJpbmcge1xuICAgIHZhciBjdXJyZW5jeUNvZGU6IHN0cmluZyA9IGlzUHJlc2VudChhcmdzKSAmJiBhcmdzLmxlbmd0aCA+IDAgPyBhcmdzWzBdIDogJ1VTRCc7XG4gICAgdmFyIHN5bWJvbERpc3BsYXk6IGJvb2xlYW4gPSBpc1ByZXNlbnQoYXJncykgJiYgYXJncy5sZW5ndGggPiAxID8gYXJnc1sxXSA6IGZhbHNlO1xuICAgIHZhciBkaWdpdHM6IHN0cmluZyA9IGlzUHJlc2VudChhcmdzKSAmJiBhcmdzLmxlbmd0aCA+IDIgPyBhcmdzWzJdIDogbnVsbDtcbiAgICByZXR1cm4gTnVtYmVyUGlwZS5fZm9ybWF0KHZhbHVlLCBOdW1iZXJGb3JtYXRTdHlsZS5DdXJyZW5jeSwgZGlnaXRzLCBjdXJyZW5jeUNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xEaXNwbGF5KTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\n/**\r\n * Creates a new String with some or all of the matches of a pattern replaced by\r\n * a replacement.\r\n *\r\n * The pattern to be matched is specified by the 'pattern' parameter.\r\n *\r\n * The replacement to be set is specified by the 'replacement' parameter.\r\n *\r\n * An optional 'flags' parameter can be set.\r\n *\r\n * ### Usage\r\n *\r\n * expression | replace:pattern:replacement\r\n *\r\n * All behavior is based on the expected behavior of the JavaScript API\r\n * String.prototype.replace() function.\r\n *\r\n * Where the input expression is a [String] or [Number] (to be treated as a string),\r\n * the `pattern` is a [String] or [RegExp],\r\n * the 'replacement' is a [String] or [Function].\r\n *\r\n * --Note--: The 'pattern' parameter will be converted to a RegExp instance. Make sure to escape the\r\n * string properly if you are matching for regular expression special characters like parenthesis,\r\n * brackets etc.\r\n */\r\nvar ReplacePipe = (function () {\r\n function ReplacePipe() {\r\n }\r\n ReplacePipe.prototype.transform = function (value, args) {\r\n if (lang_1.isBlank(args) || args.length !== 2) {\r\n throw new exceptions_1.BaseException('ReplacePipe requires two arguments');\r\n }\r\n if (lang_1.isBlank(value)) {\r\n return value;\r\n }\r\n if (!this._supportedInput(value)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(ReplacePipe, value);\r\n }\r\n var input = value.toString();\r\n var pattern = args[0];\r\n var replacement = args[1];\r\n if (!this._supportedPattern(pattern)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(ReplacePipe, pattern);\r\n }\r\n if (!this._supportedReplacement(replacement)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(ReplacePipe, replacement);\r\n }\r\n // template fails with literal RegExp e.g /pattern/igm\r\n // var rgx = pattern instanceof RegExp ? pattern : RegExpWrapper.create(pattern);\r\n if (lang_1.isFunction(replacement)) {\r\n var rgxPattern = lang_1.isString(pattern) ? lang_1.RegExpWrapper.create(pattern) : pattern;\r\n return lang_1.StringWrapper.replaceAllMapped(input, rgxPattern, replacement);\r\n }\r\n if (pattern instanceof RegExp) {\r\n // use the replaceAll variant\r\n return lang_1.StringWrapper.replaceAll(input, pattern, replacement);\r\n }\r\n return lang_1.StringWrapper.replace(input, pattern, replacement);\r\n };\r\n ReplacePipe.prototype._supportedInput = function (input) { return lang_1.isString(input) || lang_1.isNumber(input); };\r\n ReplacePipe.prototype._supportedPattern = function (pattern) {\r\n return lang_1.isString(pattern) || pattern instanceof RegExp;\r\n };\r\n ReplacePipe.prototype._supportedReplacement = function (replacement) {\r\n return lang_1.isString(replacement) || lang_1.isFunction(replacement);\r\n };\r\n ReplacePipe = __decorate([\r\n core_1.Pipe({ name: 'replace' }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], ReplacePipe);\r\n return ReplacePipe;\r\n})();\r\nexports.ReplacePipe = ReplacePipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZV9waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbW1vbi9waXBlcy9yZXBsYWNlX3BpcGUudHMiXSwibmFtZXMiOlsiUmVwbGFjZVBpcGUiLCJSZXBsYWNlUGlwZS5jb25zdHJ1Y3RvciIsIlJlcGxhY2VQaXBlLnRyYW5zZm9ybSIsIlJlcGxhY2VQaXBlLl9zdXBwb3J0ZWRJbnB1dCIsIlJlcGxhY2VQaXBlLl9zdXBwb3J0ZWRQYXR0ZXJuIiwiUmVwbGFjZVBpcGUuX3N1cHBvcnRlZFJlcGxhY2VtZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxxQkFPTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELHFCQUE4QyxlQUFlLENBQUMsQ0FBQTtBQUM5RCxnREFBMkMsbUNBQW1DLENBQUMsQ0FBQTtBQUUvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBRUg7SUFBQUE7SUFvREFDLENBQUNBO0lBakRDRCwrQkFBU0EsR0FBVEEsVUFBVUEsS0FBVUEsRUFBRUEsSUFBV0E7UUFDL0JFLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLElBQUlBLENBQUNBLElBQUlBLElBQUlBLENBQUNBLE1BQU1BLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ3ZDQSxNQUFNQSxJQUFJQSwwQkFBYUEsQ0FBQ0Esb0NBQW9DQSxDQUFDQSxDQUFDQTtRQUNoRUEsQ0FBQ0E7UUFFREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsY0FBT0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDbkJBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO1FBQ2ZBLENBQUNBO1FBRURBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLGVBQWVBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ2pDQSxNQUFNQSxJQUFJQSw4REFBNEJBLENBQUNBLFdBQVdBLEVBQUVBLEtBQUtBLENBQUNBLENBQUNBO1FBQzdEQSxDQUFDQTtRQUVEQSxJQUFJQSxLQUFLQSxHQUFHQSxLQUFLQSxDQUFDQSxRQUFRQSxFQUFFQSxDQUFDQTtRQUM3QkEsSUFBSUEsT0FBT0EsR0FBR0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDdEJBLElBQUlBLFdBQVdBLEdBQUdBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBRzFCQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxpQkFBaUJBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ3JDQSxNQUFNQSxJQUFJQSw4REFBNEJBLENBQUNBLFdBQVdBLEVBQUVBLE9BQU9BLENBQUNBLENBQUNBO1FBQy9EQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxxQkFBcUJBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzdDQSxNQUFNQSxJQUFJQSw4REFBNEJBLENBQUNBLFdBQVdBLEVBQUVBLFdBQVdBLENBQUNBLENBQUNBO1FBQ25FQSxDQUFDQTtRQUNEQSxzREFBc0RBO1FBQ3REQSxpRkFBaUZBO1FBRWpGQSxFQUFFQSxDQUFDQSxDQUFDQSxpQkFBVUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDNUJBLElBQUlBLFVBQVVBLEdBQUdBLGVBQVFBLENBQUNBLE9BQU9BLENBQUNBLEdBQUdBLG9CQUFhQSxDQUFDQSxNQUFNQSxDQUFDQSxPQUFPQSxDQUFDQSxHQUFHQSxPQUFPQSxDQUFDQTtZQUU3RUEsTUFBTUEsQ0FBQ0Esb0JBQWFBLENBQUNBLGdCQUFnQkEsQ0FBQ0EsS0FBS0EsRUFBRUEsVUFBVUEsRUFBRUEsV0FBV0EsQ0FBQ0EsQ0FBQ0E7UUFDeEVBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLE9BQU9BLFlBQVlBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBO1lBQzlCQSw2QkFBNkJBO1lBQzdCQSxNQUFNQSxDQUFDQSxvQkFBYUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsS0FBS0EsRUFBRUEsT0FBT0EsRUFBRUEsV0FBV0EsQ0FBQ0EsQ0FBQ0E7UUFDL0RBLENBQUNBO1FBRURBLE1BQU1BLENBQUNBLG9CQUFhQSxDQUFDQSxPQUFPQSxDQUFDQSxLQUFLQSxFQUFFQSxPQUFPQSxFQUFFQSxXQUFXQSxDQUFDQSxDQUFDQTtJQUM1REEsQ0FBQ0E7SUFFT0YscUNBQWVBLEdBQXZCQSxVQUF3QkEsS0FBVUEsSUFBYUcsTUFBTUEsQ0FBQ0EsZUFBUUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsZUFBUUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFbkZILHVDQUFpQkEsR0FBekJBLFVBQTBCQSxPQUFZQTtRQUNwQ0ksTUFBTUEsQ0FBQ0EsZUFBUUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsSUFBSUEsT0FBT0EsWUFBWUEsTUFBTUEsQ0FBQ0E7SUFDeERBLENBQUNBO0lBRU9KLDJDQUFxQkEsR0FBN0JBLFVBQThCQSxXQUFnQkE7UUFDNUNLLE1BQU1BLENBQUNBLGVBQVFBLENBQUNBLFdBQVdBLENBQUNBLElBQUlBLGlCQUFVQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtJQUMxREEsQ0FBQ0E7SUFuREhMO1FBQUNBLFdBQUlBLENBQUNBLEVBQUNBLElBQUlBLEVBQUVBLFNBQVNBLEVBQUNBLENBQUNBO1FBQ3ZCQSxpQkFBVUEsRUFBRUE7O29CQW1EWkE7SUFBREEsa0JBQUNBO0FBQURBLENBQUNBLEFBcERELElBb0RDO0FBbERZLG1CQUFXLGNBa0R2QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNCbGFuayxcbiAgaXNTdHJpbmcsXG4gIGlzTnVtYmVyLFxuICBpc0Z1bmN0aW9uLFxuICBSZWdFeHBXcmFwcGVyLFxuICBTdHJpbmdXcmFwcGVyXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge0luamVjdGFibGUsIFBpcGVUcmFuc2Zvcm0sIFBpcGV9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9ufSBmcm9tICcuL2ludmFsaWRfcGlwZV9hcmd1bWVudF9leGNlcHRpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgU3RyaW5nIHdpdGggc29tZSBvciBhbGwgb2YgdGhlIG1hdGNoZXMgb2YgYSBwYXR0ZXJuIHJlcGxhY2VkIGJ5XG4gKiBhIHJlcGxhY2VtZW50LlxuICpcbiAqIFRoZSBwYXR0ZXJuIHRvIGJlIG1hdGNoZWQgaXMgc3BlY2lmaWVkIGJ5IHRoZSAncGF0dGVybicgcGFyYW1ldGVyLlxuICpcbiAqIFRoZSByZXBsYWNlbWVudCB0byBiZSBzZXQgaXMgc3BlY2lmaWVkIGJ5IHRoZSAncmVwbGFjZW1lbnQnIHBhcmFtZXRlci5cbiAqXG4gKiBBbiBvcHRpb25hbCAnZmxhZ3MnIHBhcmFtZXRlciBjYW4gYmUgc2V0LlxuICpcbiAqICMjIyBVc2FnZVxuICpcbiAqICAgICBleHByZXNzaW9uIHwgcmVwbGFjZTpwYXR0ZXJuOnJlcGxhY2VtZW50XG4gKlxuICogQWxsIGJlaGF2aW9yIGlzIGJhc2VkIG9uIHRoZSBleHBlY3RlZCBiZWhhdmlvciBvZiB0aGUgSmF2YVNjcmlwdCBBUElcbiAqIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSgpIGZ1bmN0aW9uLlxuICpcbiAqIFdoZXJlIHRoZSBpbnB1dCBleHByZXNzaW9uIGlzIGEgW1N0cmluZ10gb3IgW051bWJlcl0gKHRvIGJlIHRyZWF0ZWQgYXMgYSBzdHJpbmcpLFxuICogdGhlIGBwYXR0ZXJuYCBpcyBhIFtTdHJpbmddIG9yIFtSZWdFeHBdLFxuICogdGhlICdyZXBsYWNlbWVudCcgaXMgYSBbU3RyaW5nXSBvciBbRnVuY3Rpb25dLlxuICpcbiAqIC0tTm90ZS0tOiBUaGUgJ3BhdHRlcm4nIHBhcmFtZXRlciB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIFJlZ0V4cCBpbnN0YW5jZS4gTWFrZSBzdXJlIHRvIGVzY2FwZSB0aGVcbiAqIHN0cmluZyBwcm9wZXJseSBpZiB5b3UgYXJlIG1hdGNoaW5nIGZvciByZWd1bGFyIGV4cHJlc3Npb24gc3BlY2lhbCBjaGFyYWN0ZXJzIGxpa2UgcGFyZW50aGVzaXMsXG4gKiBicmFja2V0cyBldGMuXG4gKi9cblxuQFBpcGUoe25hbWU6ICdyZXBsYWNlJ30pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVwbGFjZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGFyZ3M6IGFueVtdKTogYW55IHtcbiAgICBpZiAoaXNCbGFuayhhcmdzKSB8fCBhcmdzLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ1JlcGxhY2VQaXBlIHJlcXVpcmVzIHR3byBhcmd1bWVudHMnKTtcbiAgICB9XG5cbiAgICBpZiAoaXNCbGFuayh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3N1cHBvcnRlZElucHV0KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQaXBlQXJndW1lbnRFeGNlcHRpb24oUmVwbGFjZVBpcGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICB2YXIgaW5wdXQgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgIHZhciBwYXR0ZXJuID0gYXJnc1swXTtcbiAgICB2YXIgcmVwbGFjZW1lbnQgPSBhcmdzWzFdO1xuXG5cbiAgICBpZiAoIXRoaXMuX3N1cHBvcnRlZFBhdHRlcm4ocGF0dGVybikpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9uKFJlcGxhY2VQaXBlLCBwYXR0ZXJuKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9zdXBwb3J0ZWRSZXBsYWNlbWVudChyZXBsYWNlbWVudCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9uKFJlcGxhY2VQaXBlLCByZXBsYWNlbWVudCk7XG4gICAgfVxuICAgIC8vIHRlbXBsYXRlIGZhaWxzIHdpdGggbGl0ZXJhbCBSZWdFeHAgZS5nIC9wYXR0ZXJuL2lnbVxuICAgIC8vIHZhciByZ3ggPSBwYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwID8gcGF0dGVybiA6IFJlZ0V4cFdyYXBwZXIuY3JlYXRlKHBhdHRlcm4pO1xuXG4gICAgaWYgKGlzRnVuY3Rpb24ocmVwbGFjZW1lbnQpKSB7XG4gICAgICB2YXIgcmd4UGF0dGVybiA9IGlzU3RyaW5nKHBhdHRlcm4pID8gUmVnRXhwV3JhcHBlci5jcmVhdGUocGF0dGVybikgOiBwYXR0ZXJuO1xuXG4gICAgICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsTWFwcGVkKGlucHV0LCByZ3hQYXR0ZXJuLCByZXBsYWNlbWVudCk7XG4gICAgfVxuICAgIGlmIChwYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAvLyB1c2UgdGhlIHJlcGxhY2VBbGwgdmFyaWFudFxuICAgICAgcmV0dXJuIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbChpbnB1dCwgcGF0dGVybiwgcmVwbGFjZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2UoaW5wdXQsIHBhdHRlcm4sIHJlcGxhY2VtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1cHBvcnRlZElucHV0KGlucHV0OiBhbnkpOiBib29sZWFuIHsgcmV0dXJuIGlzU3RyaW5nKGlucHV0KSB8fCBpc051bWJlcihpbnB1dCk7IH1cblxuICBwcml2YXRlIF9zdXBwb3J0ZWRQYXR0ZXJuKHBhdHRlcm46IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1N0cmluZyhwYXR0ZXJuKSB8fCBwYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3VwcG9ydGVkUmVwbGFjZW1lbnQocmVwbGFjZW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1N0cmluZyhyZXBsYWNlbWVudCkgfHwgaXNGdW5jdGlvbihyZXBsYWNlbWVudCk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\nvar interpolationExp = lang_1.RegExpWrapper.create('#');\r\n/**\r\n *\r\n * Maps a value to a string that pluralizes the value properly.\r\n *\r\n * ## Usage\r\n *\r\n * expression | i18nPlural:mapping\r\n *\r\n * where `expression` is a number and `mapping` is an object that indicates the proper text for\r\n * when the `expression` evaluates to 0, 1, or some other number. You can interpolate the actual\r\n * value into the text using the `#` sign.\r\n *\r\n * ## Example\r\n *\r\n * ```\r\n * <div>\r\n * {{ messages.length | i18nPlural: messageMapping }}\r\n * </div>\r\n *\r\n * class MyApp {\r\n * messages: any[];\r\n * messageMapping: any = {\r\n * '=0': 'No messages.',\r\n * '=1': 'One message.',\r\n * 'other': '# messages.'\r\n * }\r\n * ...\r\n * }\r\n * ```\r\n *\r\n */\r\nvar I18nPluralPipe = (function () {\r\n function I18nPluralPipe() {\r\n }\r\n I18nPluralPipe.prototype.transform = function (value, args) {\r\n if (args === void 0) { args = null; }\r\n var key;\r\n var valueStr;\r\n var pluralMap = (args[0]);\r\n if (!lang_1.isStringMap(pluralMap)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(I18nPluralPipe, pluralMap);\r\n }\r\n key = value === 0 || value === 1 ? \"=\" + value : 'other';\r\n valueStr = lang_1.isPresent(value) ? value.toString() : '';\r\n return lang_1.StringWrapper.replaceAll(pluralMap[key], interpolationExp, valueStr);\r\n };\r\n I18nPluralPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'i18nPlural', pure: true }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], I18nPluralPipe);\r\n return I18nPluralPipe;\r\n})();\r\nexports.I18nPluralPipe = I18nPluralPipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bl9wbHVyYWxfcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vcGlwZXMvaTE4bl9wbHVyYWxfcGlwZS50cyJdLCJuYW1lcyI6WyJJMThuUGx1cmFsUGlwZSIsIkkxOG5QbHVyYWxQaXBlLmNvbnN0cnVjdG9yIiwiSTE4blBsdXJhbFBpcGUudHJhbnNmb3JtIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxxQkFNTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLHFCQUE4QyxlQUFlLENBQUMsQ0FBQTtBQUM5RCxnREFBMkMsbUNBQW1DLENBQUMsQ0FBQTtBQUUvRSxJQUFJLGdCQUFnQixHQUFXLG9CQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRXpEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSDtJQUFBQTtJQWtCQUMsQ0FBQ0E7SUFkQ0Qsa0NBQVNBLEdBQVRBLFVBQVVBLEtBQWFBLEVBQUVBLElBQWtCQTtRQUFsQkUsb0JBQWtCQSxHQUFsQkEsV0FBa0JBO1FBQ3pDQSxJQUFJQSxHQUFXQSxDQUFDQTtRQUNoQkEsSUFBSUEsUUFBZ0JBLENBQUNBO1FBQ3JCQSxJQUFJQSxTQUFTQSxHQUF5REEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFFaEZBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLGtCQUFXQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUM1QkEsTUFBTUEsSUFBSUEsOERBQTRCQSxDQUFDQSxjQUFjQSxFQUFFQSxTQUFTQSxDQUFDQSxDQUFDQTtRQUNwRUEsQ0FBQ0E7UUFFREEsR0FBR0EsR0FBR0EsS0FBS0EsS0FBS0EsQ0FBQ0EsSUFBSUEsS0FBS0EsS0FBS0EsQ0FBQ0EsR0FBR0EsTUFBSUEsS0FBT0EsR0FBR0EsT0FBT0EsQ0FBQ0E7UUFDekRBLFFBQVFBLEdBQUdBLGdCQUFTQSxDQUFDQSxLQUFLQSxDQUFDQSxHQUFHQSxLQUFLQSxDQUFDQSxRQUFRQSxFQUFFQSxHQUFHQSxFQUFFQSxDQUFDQTtRQUVwREEsTUFBTUEsQ0FBQ0Esb0JBQWFBLENBQUNBLFVBQVVBLENBQUNBLFNBQVNBLENBQUNBLEdBQUdBLENBQUNBLEVBQUVBLGdCQUFnQkEsRUFBRUEsUUFBUUEsQ0FBQ0EsQ0FBQ0E7SUFDOUVBLENBQUNBO0lBakJIRjtRQUFDQSxZQUFLQSxFQUFFQTtRQUNQQSxXQUFJQSxDQUFDQSxFQUFDQSxJQUFJQSxFQUFFQSxZQUFZQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFDQSxDQUFDQTtRQUN0Q0EsaUJBQVVBLEVBQUVBOzt1QkFnQlpBO0lBQURBLHFCQUFDQTtBQUFEQSxDQUFDQSxBQWxCRCxJQWtCQztBQWZZLHNCQUFjLGlCQWUxQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ09OU1QsXG4gIGlzU3RyaW5nTWFwLFxuICBTdHJpbmdXcmFwcGVyLFxuICBpc1ByZXNlbnQsXG4gIFJlZ0V4cFdyYXBwZXJcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgUGlwZVRyYW5zZm9ybSwgUGlwZX0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge0ludmFsaWRQaXBlQXJndW1lbnRFeGNlcHRpb259IGZyb20gJy4vaW52YWxpZF9waXBlX2FyZ3VtZW50X2V4Y2VwdGlvbic7XG5cbnZhciBpbnRlcnBvbGF0aW9uRXhwOiBSZWdFeHAgPSBSZWdFeHBXcmFwcGVyLmNyZWF0ZSgnIycpO1xuXG4vKipcbiAqXG4gKiAgTWFwcyBhIHZhbHVlIHRvIGEgc3RyaW5nIHRoYXQgcGx1cmFsaXplcyB0aGUgdmFsdWUgcHJvcGVybHkuXG4gKlxuICogICMjIFVzYWdlXG4gKlxuICogIGV4cHJlc3Npb24gfCBpMThuUGx1cmFsOm1hcHBpbmdcbiAqXG4gKiAgd2hlcmUgYGV4cHJlc3Npb25gIGlzIGEgbnVtYmVyIGFuZCBgbWFwcGluZ2AgaXMgYW4gb2JqZWN0IHRoYXQgaW5kaWNhdGVzIHRoZSBwcm9wZXIgdGV4dCBmb3JcbiAqICB3aGVuIHRoZSBgZXhwcmVzc2lvbmAgZXZhbHVhdGVzIHRvIDAsIDEsIG9yIHNvbWUgb3RoZXIgbnVtYmVyLiAgWW91IGNhbiBpbnRlcnBvbGF0ZSB0aGUgYWN0dWFsXG4gKiAgdmFsdWUgaW50byB0aGUgdGV4dCB1c2luZyB0aGUgYCNgIHNpZ24uXG4gKlxuICogICMjIEV4YW1wbGVcbiAqXG4gKiAgYGBgXG4gKiAgPGRpdj5cbiAqICAgIHt7IG1lc3NhZ2VzLmxlbmd0aCB8IGkxOG5QbHVyYWw6IG1lc3NhZ2VNYXBwaW5nIH19XG4gKiAgPC9kaXY+XG4gKlxuICogIGNsYXNzIE15QXBwIHtcbiAqICAgIG1lc3NhZ2VzOiBhbnlbXTtcbiAqICAgIG1lc3NhZ2VNYXBwaW5nOiBhbnkgPSB7XG4gKiAgICAgICc9MCc6ICdObyBtZXNzYWdlcy4nLFxuICogICAgICAnPTEnOiAnT25lIG1lc3NhZ2UuJyxcbiAqICAgICAgJ290aGVyJzogJyMgbWVzc2FnZXMuJ1xuICogICAgfVxuICogICAgLi4uXG4gKiAgfVxuICogIGBgYFxuICpcbiAqL1xuQENPTlNUKClcbkBQaXBlKHtuYW1lOiAnaTE4blBsdXJhbCcsIHB1cmU6IHRydWV9KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEkxOG5QbHVyYWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogbnVtYmVyLCBhcmdzOiBhbnlbXSA9IG51bGwpOiBzdHJpbmcge1xuICAgIHZhciBrZXk6IHN0cmluZztcbiAgICB2YXIgdmFsdWVTdHI6IHN0cmluZztcbiAgICB2YXIgcGx1cmFsTWFwOiB7W2NvdW50OiBzdHJpbmddOiBzdHJpbmd9ID0gPHtbY291bnQ6IHN0cmluZ106IHN0cmluZ30+KGFyZ3NbMF0pO1xuXG4gICAgaWYgKCFpc1N0cmluZ01hcChwbHVyYWxNYXApKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbihJMThuUGx1cmFsUGlwZSwgcGx1cmFsTWFwKTtcbiAgICB9XG5cbiAgICBrZXkgPSB2YWx1ZSA9PT0gMCB8fCB2YWx1ZSA9PT0gMSA/IGA9JHt2YWx1ZX1gIDogJ290aGVyJztcbiAgICB2YWx1ZVN0ciA9IGlzUHJlc2VudCh2YWx1ZSkgPyB2YWx1ZS50b1N0cmluZygpIDogJyc7XG5cbiAgICByZXR1cm4gU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsKHBsdXJhbE1hcFtrZXldLCBpbnRlcnBvbGF0aW9uRXhwLCB2YWx1ZVN0cik7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar InvalidPipeArgumentException = (function (_super) {\r\n __extends(InvalidPipeArgumentException, _super);\r\n function InvalidPipeArgumentException(type, value) {\r\n _super.call(this, \"Invalid argument '\" + value + \"' for pipe '\" + lang_1.stringify(type) + \"'\");\r\n }\r\n return InvalidPipeArgumentException;\r\n})(exceptions_1.BaseException);\r\nexports.InvalidPipeArgumentException = InvalidPipeArgumentException;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52YWxpZF9waXBlX2FyZ3VtZW50X2V4Y2VwdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vcGlwZXMvaW52YWxpZF9waXBlX2FyZ3VtZW50X2V4Y2VwdGlvbi50cyJdLCJuYW1lcyI6WyJJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9uIiwiSW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbi5jb25zdHJ1Y3RvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQkFBcUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNoRSwyQkFBOEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUUvRTtJQUFrREEsZ0RBQWFBO0lBQzdEQSxzQ0FBWUEsSUFBVUEsRUFBRUEsS0FBYUE7UUFDbkNDLGtCQUFNQSx1QkFBcUJBLEtBQUtBLG9CQUFlQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsTUFBR0EsQ0FBQ0EsQ0FBQ0E7SUFDckVBLENBQUNBO0lBQ0hELG1DQUFDQTtBQUFEQSxDQUFDQSxBQUpELEVBQWtELDBCQUFhLEVBSTlEO0FBSlksb0NBQTRCLCtCQUl4QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVCwgVHlwZSwgc3RyaW5naWZ5fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuXG5leHBvcnQgY2xhc3MgSW52YWxpZFBpcGVBcmd1bWVudEV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3Rvcih0eXBlOiBUeXBlLCB2YWx1ZTogT2JqZWN0KSB7XG4gICAgc3VwZXIoYEludmFsaWQgYXJndW1lbnQgJyR7dmFsdWV9JyBmb3IgcGlwZSAnJHtzdHJpbmdpZnkodHlwZSl9J2ApO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar core_1 = require('angular2/core');\r\nvar invalid_pipe_argument_exception_1 = require('./invalid_pipe_argument_exception');\r\n/**\r\n *\r\n * Generic selector that displays the string that matches the current value.\r\n *\r\n * ## Usage\r\n *\r\n * expression | i18nSelect:mapping\r\n *\r\n * where `mapping` is an object that indicates the text that should be displayed\r\n * for different values of the provided `expression`.\r\n *\r\n * ## Example\r\n *\r\n * ```\r\n * <div>\r\n * {{ gender | i18nSelect: inviteMap }}\r\n * </div>\r\n *\r\n * class MyApp {\r\n * gender: string = 'male';\r\n * inviteMap: any = {\r\n * 'male': 'Invite her.',\r\n * 'female': 'Invite him.',\r\n * 'other': 'Invite them.'\r\n * }\r\n * ...\r\n * }\r\n * ```\r\n */\r\nvar I18nSelectPipe = (function () {\r\n function I18nSelectPipe() {\r\n }\r\n I18nSelectPipe.prototype.transform = function (value, args) {\r\n if (args === void 0) { args = null; }\r\n var mapping = (args[0]);\r\n if (!lang_1.isStringMap(mapping)) {\r\n throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(I18nSelectPipe, mapping);\r\n }\r\n return collection_1.StringMapWrapper.contains(mapping, value) ? mapping[value] : mapping['other'];\r\n };\r\n I18nSelectPipe = __decorate([\r\n lang_1.CONST(),\r\n core_1.Pipe({ name: 'i18nSelect', pure: true }),\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], I18nSelectPipe);\r\n return I18nSelectPipe;\r\n})();\r\nexports.I18nSelectPipe = I18nSelectPipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bl9zZWxlY3RfcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vcGlwZXMvaTE4bl9zZWxlY3RfcGlwZS50cyJdLCJuYW1lcyI6WyJJMThuU2VsZWN0UGlwZSIsIkkxOG5TZWxlY3RQaXBlLmNvbnN0cnVjdG9yIiwiSTE4blNlbGVjdFBpcGUudHJhbnNmb3JtIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxxQkFBaUMsMEJBQTBCLENBQUMsQ0FBQTtBQUM1RCwyQkFBK0IsZ0NBQWdDLENBQUMsQ0FBQTtBQUNoRSxxQkFBOEMsZUFBZSxDQUFDLENBQUE7QUFDOUQsZ0RBQTJDLG1DQUFtQyxDQUFDLENBQUE7QUFFL0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSDtJQUFBQTtJQVlBQyxDQUFDQTtJQVJDRCxrQ0FBU0EsR0FBVEEsVUFBVUEsS0FBYUEsRUFBRUEsSUFBa0JBO1FBQWxCRSxvQkFBa0JBLEdBQWxCQSxXQUFrQkE7UUFDekNBLElBQUlBLE9BQU9BLEdBQXVEQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUM1RUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0Esa0JBQVdBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzFCQSxNQUFNQSxJQUFJQSw4REFBNEJBLENBQUNBLGNBQWNBLEVBQUVBLE9BQU9BLENBQUNBLENBQUNBO1FBQ2xFQSxDQUFDQTtRQUVEQSxNQUFNQSxDQUFDQSw2QkFBZ0JBLENBQUNBLFFBQVFBLENBQUNBLE9BQU9BLEVBQUVBLEtBQUtBLENBQUNBLEdBQUdBLE9BQU9BLENBQUNBLEtBQUtBLENBQUNBLEdBQUdBLE9BQU9BLENBQUNBLE9BQU9BLENBQUNBLENBQUNBO0lBQ3ZGQSxDQUFDQTtJQVhIRjtRQUFDQSxZQUFLQSxFQUFFQTtRQUNQQSxXQUFJQSxDQUFDQSxFQUFDQSxJQUFJQSxFQUFFQSxZQUFZQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFDQSxDQUFDQTtRQUN0Q0EsaUJBQVVBLEVBQUVBOzt1QkFVWkE7SUFBREEscUJBQUNBO0FBQURBLENBQUNBLEFBWkQsSUFZQztBQVRZLHNCQUFjLGlCQVMxQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVCwgaXNTdHJpbmdNYXB9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1N0cmluZ01hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge0luamVjdGFibGUsIFBpcGVUcmFuc2Zvcm0sIFBpcGV9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtJbnZhbGlkUGlwZUFyZ3VtZW50RXhjZXB0aW9ufSBmcm9tICcuL2ludmFsaWRfcGlwZV9hcmd1bWVudF9leGNlcHRpb24nO1xuXG4vKipcbiAqXG4gKiAgR2VuZXJpYyBzZWxlY3RvciB0aGF0IGRpc3BsYXlzIHRoZSBzdHJpbmcgdGhhdCBtYXRjaGVzIHRoZSBjdXJyZW50IHZhbHVlLlxuICpcbiAqICAjIyBVc2FnZVxuICpcbiAqICBleHByZXNzaW9uIHwgaTE4blNlbGVjdDptYXBwaW5nXG4gKlxuICogIHdoZXJlIGBtYXBwaW5nYCBpcyBhbiBvYmplY3QgdGhhdCBpbmRpY2F0ZXMgdGhlIHRleHQgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkXG4gKiAgZm9yIGRpZmZlcmVudCB2YWx1ZXMgb2YgdGhlIHByb3ZpZGVkIGBleHByZXNzaW9uYC5cbiAqXG4gKiAgIyMgRXhhbXBsZVxuICpcbiAqICBgYGBcbiAqICA8ZGl2PlxuICogICAge3sgZ2VuZGVyIHwgaTE4blNlbGVjdDogaW52aXRlTWFwIH19XG4gKiAgPC9kaXY+XG4gKlxuICogIGNsYXNzIE15QXBwIHtcbiAqICAgIGdlbmRlcjogc3RyaW5nID0gJ21hbGUnO1xuICogICAgaW52aXRlTWFwOiBhbnkgPSB7XG4gKiAgICAgICdtYWxlJzogJ0ludml0ZSBoZXIuJyxcbiAqICAgICAgJ2ZlbWFsZSc6ICdJbnZpdGUgaGltLicsXG4gKiAgICAgICdvdGhlcic6ICdJbnZpdGUgdGhlbS4nXG4gKiAgICB9XG4gKiAgICAuLi5cbiAqICB9XG4gKiAgYGBgXG4gKi9cbkBDT05TVCgpXG5AUGlwZSh7bmFtZTogJ2kxOG5TZWxlY3QnLCBwdXJlOiB0cnVlfSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJMThuU2VsZWN0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgYXJnczogYW55W10gPSBudWxsKTogc3RyaW5nIHtcbiAgICB2YXIgbWFwcGluZzoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSA8e1tjb3VudDogc3RyaW5nXTogc3RyaW5nfT4oYXJnc1swXSk7XG4gICAgaWYgKCFpc1N0cmluZ01hcChtYXBwaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQaXBlQXJndW1lbnRFeGNlcHRpb24oSTE4blNlbGVjdFBpcGUsIG1hcHBpbmcpO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmdNYXBXcmFwcGVyLmNvbnRhaW5zKG1hcHBpbmcsIHZhbHVlKSA/IG1hcHBpbmdbdmFsdWVdIDogbWFwcGluZ1snb3RoZXInXTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';/**\r\n * @module\r\n * @description\r\n * This module provides a set of common Pipes.\r\n */\r\nvar async_pipe_1 = require('./async_pipe');\r\nvar uppercase_pipe_1 = require('./uppercase_pipe');\r\nvar lowercase_pipe_1 = require('./lowercase_pipe');\r\nvar json_pipe_1 = require('./json_pipe');\r\nvar slice_pipe_1 = require('./slice_pipe');\r\nvar date_pipe_1 = require('./date_pipe');\r\nvar number_pipe_1 = require('./number_pipe');\r\nvar replace_pipe_1 = require('./replace_pipe');\r\nvar i18n_plural_pipe_1 = require('./i18n_plural_pipe');\r\nvar i18n_select_pipe_1 = require('./i18n_select_pipe');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * A collection of Angular core pipes that are likely to be used in each and every\r\n * application.\r\n *\r\n * This collection can be used to quickly enumerate all the built-in pipes in the `pipes`\r\n * property of the `@Component` decorator.\r\n */\r\nexports.COMMON_PIPES = lang_1.CONST_EXPR([\r\n async_pipe_1.AsyncPipe,\r\n uppercase_pipe_1.UpperCasePipe,\r\n lowercase_pipe_1.LowerCasePipe,\r\n json_pipe_1.JsonPipe,\r\n slice_pipe_1.SlicePipe,\r\n number_pipe_1.DecimalPipe,\r\n number_pipe_1.PercentPipe,\r\n number_pipe_1.CurrencyPipe,\r\n date_pipe_1.DatePipe,\r\n replace_pipe_1.ReplacePipe,\r\n i18n_plural_pipe_1.I18nPluralPipe,\r\n i18n_select_pipe_1.I18nSelectPipe\r\n]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uX3BpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbW1vbi9waXBlcy9jb21tb25fcGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILDJCQUF3QixjQUFjLENBQUMsQ0FBQTtBQUN2QywrQkFBNEIsa0JBQWtCLENBQUMsQ0FBQTtBQUMvQywrQkFBNEIsa0JBQWtCLENBQUMsQ0FBQTtBQUMvQywwQkFBdUIsYUFBYSxDQUFDLENBQUE7QUFDckMsMkJBQXdCLGNBQWMsQ0FBQyxDQUFBO0FBQ3ZDLDBCQUF1QixhQUFhLENBQUMsQ0FBQTtBQUNyQyw0QkFBcUQsZUFBZSxDQUFDLENBQUE7QUFDckUsNkJBQTBCLGdCQUFnQixDQUFDLENBQUE7QUFDM0MsaUNBQTZCLG9CQUFvQixDQUFDLENBQUE7QUFDbEQsaUNBQTZCLG9CQUFvQixDQUFDLENBQUE7QUFDbEQscUJBQXlCLDBCQUEwQixDQUFDLENBQUE7QUFFcEQ7Ozs7OztHQU1HO0FBQ1Usb0JBQVksR0FBRyxpQkFBVSxDQUFDO0lBQ3JDLHNCQUFTO0lBQ1QsOEJBQWE7SUFDYiw4QkFBYTtJQUNiLG9CQUFRO0lBQ1Isc0JBQVM7SUFDVCx5QkFBVztJQUNYLHlCQUFXO0lBQ1gsMEJBQVk7SUFDWixvQkFBUTtJQUNSLDBCQUFXO0lBQ1gsaUNBQWM7SUFDZCxpQ0FBYztDQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZVxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHNldCBvZiBjb21tb24gUGlwZXMuXG4gKi9cbmltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICcuL2FzeW5jX3BpcGUnO1xuaW1wb3J0IHtVcHBlckNhc2VQaXBlfSBmcm9tICcuL3VwcGVyY2FzZV9waXBlJztcbmltcG9ydCB7TG93ZXJDYXNlUGlwZX0gZnJvbSAnLi9sb3dlcmNhc2VfcGlwZSc7XG5pbXBvcnQge0pzb25QaXBlfSBmcm9tICcuL2pzb25fcGlwZSc7XG5pbXBvcnQge1NsaWNlUGlwZX0gZnJvbSAnLi9zbGljZV9waXBlJztcbmltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJy4vZGF0ZV9waXBlJztcbmltcG9ydCB7RGVjaW1hbFBpcGUsIFBlcmNlbnRQaXBlLCBDdXJyZW5jeVBpcGV9IGZyb20gJy4vbnVtYmVyX3BpcGUnO1xuaW1wb3J0IHtSZXBsYWNlUGlwZX0gZnJvbSAnLi9yZXBsYWNlX3BpcGUnO1xuaW1wb3J0IHtJMThuUGx1cmFsUGlwZX0gZnJvbSAnLi9pMThuX3BsdXJhbF9waXBlJztcbmltcG9ydCB7STE4blNlbGVjdFBpcGV9IGZyb20gJy4vaTE4bl9zZWxlY3RfcGlwZSc7XG5pbXBvcnQge0NPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbi8qKlxuICogQSBjb2xsZWN0aW9uIG9mIEFuZ3VsYXIgY29yZSBwaXBlcyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdXNlZCBpbiBlYWNoIGFuZCBldmVyeVxuICogYXBwbGljYXRpb24uXG4gKlxuICogVGhpcyBjb2xsZWN0aW9uIGNhbiBiZSB1c2VkIHRvIHF1aWNrbHkgZW51bWVyYXRlIGFsbCB0aGUgYnVpbHQtaW4gcGlwZXMgaW4gdGhlIGBwaXBlc2BcbiAqIHByb3BlcnR5IG9mIHRoZSBgQENvbXBvbmVudGAgZGVjb3JhdG9yLlxuICovXG5leHBvcnQgY29uc3QgQ09NTU9OX1BJUEVTID0gQ09OU1RfRVhQUihbXG4gIEFzeW5jUGlwZSxcbiAgVXBwZXJDYXNlUGlwZSxcbiAgTG93ZXJDYXNlUGlwZSxcbiAgSnNvblBpcGUsXG4gIFNsaWNlUGlwZSxcbiAgRGVjaW1hbFBpcGUsXG4gIFBlcmNlbnRQaXBlLFxuICBDdXJyZW5jeVBpcGUsXG4gIERhdGVQaXBlLFxuICBSZXBsYWNlUGlwZSxcbiAgSTE4blBsdXJhbFBpcGUsXG4gIEkxOG5TZWxlY3RQaXBlXG5dKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';/**\r\n * @module\r\n * @description\r\n * This module provides a set of common Pipes.\r\n */\r\nvar async_pipe_1 = require('./pipes/async_pipe');\r\nexports.AsyncPipe = async_pipe_1.AsyncPipe;\r\nvar date_pipe_1 = require('./pipes/date_pipe');\r\nexports.DatePipe = date_pipe_1.DatePipe;\r\nvar json_pipe_1 = require('./pipes/json_pipe');\r\nexports.JsonPipe = json_pipe_1.JsonPipe;\r\nvar slice_pipe_1 = require('./pipes/slice_pipe');\r\nexports.SlicePipe = slice_pipe_1.SlicePipe;\r\nvar lowercase_pipe_1 = require('./pipes/lowercase_pipe');\r\nexports.LowerCasePipe = lowercase_pipe_1.LowerCasePipe;\r\nvar number_pipe_1 = require('./pipes/number_pipe');\r\nexports.NumberPipe = number_pipe_1.NumberPipe;\r\nexports.DecimalPipe = number_pipe_1.DecimalPipe;\r\nexports.PercentPipe = number_pipe_1.PercentPipe;\r\nexports.CurrencyPipe = number_pipe_1.CurrencyPipe;\r\nvar uppercase_pipe_1 = require('./pipes/uppercase_pipe');\r\nexports.UpperCasePipe = uppercase_pipe_1.UpperCasePipe;\r\nvar replace_pipe_1 = require('./pipes/replace_pipe');\r\nexports.ReplacePipe = replace_pipe_1.ReplacePipe;\r\nvar i18n_plural_pipe_1 = require('./pipes/i18n_plural_pipe');\r\nexports.I18nPluralPipe = i18n_plural_pipe_1.I18nPluralPipe;\r\nvar i18n_select_pipe_1 = require('./pipes/i18n_select_pipe');\r\nexports.I18nSelectPipe = i18n_select_pipe_1.I18nSelectPipe;\r\nvar common_pipes_1 = require('./pipes/common_pipes');\r\nexports.COMMON_PIPES = common_pipes_1.COMMON_PIPES;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL3BpcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCwyQkFBd0Isb0JBQW9CLENBQUM7QUFBckMsMkNBQXFDO0FBQzdDLDBCQUF1QixtQkFBbUIsQ0FBQztBQUFuQyx3Q0FBbUM7QUFDM0MsMEJBQXVCLG1CQUFtQixDQUFDO0FBQW5DLHdDQUFtQztBQUMzQywyQkFBd0Isb0JBQW9CLENBQUM7QUFBckMsMkNBQXFDO0FBQzdDLCtCQUE0Qix3QkFBd0IsQ0FBQztBQUE3Qyx1REFBNkM7QUFDckQsNEJBQWlFLHFCQUFxQixDQUFDO0FBQS9FLDhDQUFVO0FBQUUsZ0RBQVc7QUFBRSxnREFBVztBQUFFLGtEQUF5QztBQUN2RiwrQkFBNEIsd0JBQXdCLENBQUM7QUFBN0MsdURBQTZDO0FBQ3JELDZCQUEwQixzQkFBc0IsQ0FBQztBQUF6QyxpREFBeUM7QUFDakQsaUNBQTZCLDBCQUEwQixDQUFDO0FBQWhELDJEQUFnRDtBQUN4RCxpQ0FBNkIsMEJBQTBCLENBQUM7QUFBaEQsMkRBQWdEO0FBQ3hELDZCQUEyQixzQkFBc0IsQ0FBQztBQUExQyxtREFBMEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBzZXQgb2YgY29tbW9uIFBpcGVzLlxuICovXG5cbmV4cG9ydCB7QXN5bmNQaXBlfSBmcm9tICcuL3BpcGVzL2FzeW5jX3BpcGUnO1xuZXhwb3J0IHtEYXRlUGlwZX0gZnJvbSAnLi9waXBlcy9kYXRlX3BpcGUnO1xuZXhwb3J0IHtKc29uUGlwZX0gZnJvbSAnLi9waXBlcy9qc29uX3BpcGUnO1xuZXhwb3J0IHtTbGljZVBpcGV9IGZyb20gJy4vcGlwZXMvc2xpY2VfcGlwZSc7XG5leHBvcnQge0xvd2VyQ2FzZVBpcGV9IGZyb20gJy4vcGlwZXMvbG93ZXJjYXNlX3BpcGUnO1xuZXhwb3J0IHtOdW1iZXJQaXBlLCBEZWNpbWFsUGlwZSwgUGVyY2VudFBpcGUsIEN1cnJlbmN5UGlwZX0gZnJvbSAnLi9waXBlcy9udW1iZXJfcGlwZSc7XG5leHBvcnQge1VwcGVyQ2FzZVBpcGV9IGZyb20gJy4vcGlwZXMvdXBwZXJjYXNlX3BpcGUnO1xuZXhwb3J0IHtSZXBsYWNlUGlwZX0gZnJvbSAnLi9waXBlcy9yZXBsYWNlX3BpcGUnO1xuZXhwb3J0IHtJMThuUGx1cmFsUGlwZX0gZnJvbSAnLi9waXBlcy9pMThuX3BsdXJhbF9waXBlJztcbmV4cG9ydCB7STE4blNlbGVjdFBpcGV9IGZyb20gJy4vcGlwZXMvaTE4bl9zZWxlY3RfcGlwZSc7XG5leHBvcnQge0NPTU1PTl9QSVBFU30gZnJvbSAnLi9waXBlcy9jb21tb25fcGlwZXMnO1xuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar core_1 = require('angular2/core');\r\nvar control_container_1 = require('./control_container');\r\nvar ng_control_1 = require('./ng_control');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar shared_1 = require('./shared');\r\nvar validators_1 = require('../validators');\r\nvar controlNameBinding = lang_1.CONST_EXPR(new core_1.Provider(ng_control_1.NgControl, { useExisting: core_1.forwardRef(function () { return NgControlName; }) }));\r\n/**\r\n * Creates and binds a control with a specified name to a DOM element.\r\n *\r\n * This directive can only be used as a child of {@link NgForm} or {@link NgFormModel}.\r\n\r\n * ### Example\r\n *\r\n * In this example, we create the login and password controls.\r\n * We can work with each control separately: check its validity, get its value, listen to its\r\n * changes.\r\n *\r\n * ```\r\n * @Component({\r\n * selector: \"login-comp\",\r\n * directives: [FORM_DIRECTIVES],\r\n * template: `\r\n * <form #f=\"ngForm\" (submit)='onLogIn(f.value)'>\r\n * Login <input type='text' ngControl='login' #l=\"form\">\r\n * <div *ngIf=\"!l.valid\">Login is invalid</div>\r\n *\r\n * Password <input type='password' ngControl='password'>\r\n * <button type='submit'>Log in!</button>\r\n * </form>\r\n * `})\r\n * class LoginComp {\r\n * onLogIn(value): void {\r\n * // value === {login: 'some login', password: 'some password'}\r\n * }\r\n * }\r\n * ```\r\n *\r\n * We can also use ngModel to bind a domain model to the form.\r\n *\r\n * ```\r\n * @Component({\r\n * selector: \"login-comp\",\r\n * directives: [FORM_DIRECTIVES],\r\n * template: `\r\n * <form (submit)='onLogIn()'>\r\n * Login <input type='text' ngControl='login' [(ngModel)]=\"credentials.login\">\r\n * Password <input type='password' ngControl='password'\r\n * [(ngModel)]=\"credentials.password\">\r\n * <button type='submit'>Log in!</button>\r\n * </form>\r\n * `})\r\n * class LoginComp {\r\n * credentials: {login:string, password:string};\r\n *\r\n * onLogIn(): void {\r\n * // this.credentials.login === \"some login\"\r\n * // this.credentials.password === \"some password\"\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar NgControlName = (function (_super) {\r\n __extends(NgControlName, _super);\r\n function NgControlName(_parent, _validators, _asyncValidators, valueAccessors) {\r\n _super.call(this);\r\n this._parent = _parent;\r\n this._validators = _validators;\r\n this._asyncValidators = _asyncValidators;\r\n /** @internal */\r\n this.update = new async_1.EventEmitter();\r\n this._added = false;\r\n this.valueAccessor = shared_1.selectValueAccessor(this, valueAccessors);\r\n }\r\n NgControlName.prototype.ngOnChanges = function (changes) {\r\n if (!this._added) {\r\n this.formDirective.addControl(this);\r\n this._added = true;\r\n }\r\n if (shared_1.isPropertyUpdated(changes, this.viewModel)) {\r\n this.viewModel = this.model;\r\n this.formDirective.updateModel(this, this.model);\r\n }\r\n };\r\n NgControlName.prototype.ngOnDestroy = function () { this.formDirective.removeControl(this); };\r\n NgControlName.prototype.viewToModelUpdate = function (newValue) {\r\n this.viewModel = newValue;\r\n async_1.ObservableWrapper.callEmit(this.update, newValue);\r\n };\r\n Object.defineProperty(NgControlName.prototype, \"path\", {\r\n get: function () { return shared_1.controlPath(this.name, this._parent); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlName.prototype, \"formDirective\", {\r\n get: function () { return this._parent.formDirective; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlName.prototype, \"validator\", {\r\n get: function () { return shared_1.composeValidators(this._validators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlName.prototype, \"asyncValidator\", {\r\n get: function () { return shared_1.composeAsyncValidators(this._asyncValidators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlName.prototype, \"control\", {\r\n get: function () { return this.formDirective.getControl(this); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgControlName = __decorate([\r\n core_1.Directive({\r\n selector: '[ngControl]',\r\n bindings: [controlNameBinding],\r\n inputs: ['name: ngControl', 'model: ngModel'],\r\n outputs: ['update: ngModelChange'],\r\n exportAs: 'ngForm'\r\n }),\r\n __param(0, core_1.Host()),\r\n __param(0, core_1.SkipSelf()),\r\n __param(1, core_1.Optional()),\r\n __param(1, core_1.Self()),\r\n __param(1, core_1.Inject(validators_1.NG_VALIDATORS)),\r\n __param(2, core_1.Optional()),\r\n __param(2, core_1.Self()),\r\n __param(2, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)),\r\n __param(3, core_1.Optional()),\r\n __param(3, core_1.Self()),\r\n __param(3, core_1.Inject(control_value_accessor_1.NG_VALUE_ACCESSOR)), \r\n __metadata('design:paramtypes', [control_container_1.ControlContainer, Array, Array, Array])\r\n ], NgControlName);\r\n return NgControlName;\r\n})(ng_control_1.NgControl);\r\nexports.NgControlName = NgControlName;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfY29udHJvbF9uYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbW1vbi9mb3Jtcy9kaXJlY3RpdmVzL25nX2NvbnRyb2xfbmFtZS50cyJdLCJuYW1lcyI6WyJOZ0NvbnRyb2xOYW1lIiwiTmdDb250cm9sTmFtZS5jb25zdHJ1Y3RvciIsIk5nQ29udHJvbE5hbWUubmdPbkNoYW5nZXMiLCJOZ0NvbnRyb2xOYW1lLm5nT25EZXN0cm95IiwiTmdDb250cm9sTmFtZS52aWV3VG9Nb2RlbFVwZGF0ZSIsIk5nQ29udHJvbE5hbWUucGF0aCIsIk5nQ29udHJvbE5hbWUuZm9ybURpcmVjdGl2ZSIsIk5nQ29udHJvbE5hbWUudmFsaWRhdG9yIiwiTmdDb250cm9sTmFtZS5hc3luY1ZhbGlkYXRvciIsIk5nQ29udHJvbE5hbWUuY29udHJvbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQkFBeUIsMEJBQTBCLENBQUMsQ0FBQTtBQUNwRCxzQkFBOEMsMkJBQTJCLENBQUMsQ0FBQTtBQUUxRSxxQkFhTyxlQUFlLENBQUMsQ0FBQTtBQUV2QixrQ0FBK0IscUJBQXFCLENBQUMsQ0FBQTtBQUNyRCwyQkFBd0IsY0FBYyxDQUFDLENBQUE7QUFDdkMsdUNBQXNELDBCQUEwQixDQUFDLENBQUE7QUFDakYsdUJBTU8sVUFBVSxDQUFDLENBQUE7QUFFbEIsMkJBQWlELGVBQWUsQ0FBQyxDQUFBO0FBSWpFLElBQU0sa0JBQWtCLEdBQ3BCLGlCQUFVLENBQUMsSUFBSSxlQUFRLENBQUMsc0JBQVMsRUFBRSxFQUFDLFdBQVcsRUFBRSxpQkFBVSxDQUFDLGNBQU0sT0FBQSxhQUFhLEVBQWIsQ0FBYSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFFeEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNERztBQUNIO0lBT21DQSxpQ0FBU0E7SUFRMUNBLHVCQUF3Q0EsT0FB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Q0EsT0FBT0EsRUFBRUEsQ0FBQ0EsdUJBQXVCQSxDQUFDQTtZQUNsQ0EsUUFBUUEsRUFBRUEsUUFBUUE7U0FDbkJBLENBQUNBO1FBU1lBLFdBQUNBLFdBQUlBLEVBQUVBLENBQUFBO1FBQUNBLFdBQUNBLGVBQVFBLEVBQUVBLENBQUFBO1FBQ25CQSxXQUFDQSxlQUFRQSxFQUFFQSxDQUFBQTtRQUFDQSxXQUFDQSxXQUFJQSxFQUFFQSxDQUFBQTtRQUFDQSxXQUFDQSxhQUFNQSxDQUFDQSwwQkFBYUEsQ0FBQ0EsQ0FBQUE7UUFFMUNBLFdBQUNBLGVBQVFBLEVBQUVBLENBQUFBO1FBQUNBLFdBQUNBLFdBQUlBLEVBQUVBLENBQUFBO1FBQUNBLFdBQUNBLGFBQU1BLENBQUNBLGdDQUFtQkEsQ0FBQ0EsQ0FBQUE7UUFFaERBLFdBQUNBLGVBQVFBLEVBQUVBLENBQUFBO1FBQUNBLFdBQUNBLFdBQUlBLEVBQUVBLENBQUFBO1FBQUNBLFdBQUNBLGFBQU1BLENBQUNBLDBDQUFpQkEsQ0FBQ0EsQ0FBQUE7O3NCQWlDM0RBO0lBQURBLG9CQUFDQTtBQUFEQSxDQUFDQSxBQXJERCxFQU9tQyxzQkFBUyxFQThDM0M7QUE5Q1kscUJBQWEsZ0JBOEN6QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtFdmVudEVtaXR0ZXIsIE9ic2VydmFibGVXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcblxuaW1wb3J0IHtcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZSxcbiAgUXVlcnksXG4gIERpcmVjdGl2ZSxcbiAgZm9yd2FyZFJlZixcbiAgSG9zdCxcbiAgU2tpcFNlbGYsXG4gIFByb3ZpZGVyLFxuICBJbmplY3QsXG4gIE9wdGlvbmFsLFxuICBTZWxmXG59IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuXG5pbXBvcnQge0NvbnRyb2xDb250YWluZXJ9IGZyb20gJy4vY29udHJvbF9jb250YWluZXInO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJy4vbmdfY29udHJvbCc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnLi9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7XG4gIGNvbnRyb2xQYXRoLFxuICBjb21wb3NlVmFsaWRhdG9ycyxcbiAgY29tcG9zZUFzeW5jVmFsaWRhdG9ycyxcbiAgaXNQcm9wZXJ0eVVwZGF0ZWQsXG4gIHNlbGVjdFZhbHVlQWNjZXNzb3Jcbn0gZnJvbSAnLi9zaGFyZWQnO1xuaW1wb3J0IHtDb250cm9sfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQge05HX1ZBTElEQVRPUlMsIE5HX0FTWU5DX1ZBTElEQVRPUlN9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtWYWxpZGF0b3JGbiwgQXN5bmNWYWxpZGF0b3JGbn0gZnJvbSAnLi92YWxpZGF0b3JzJztcblxuXG5jb25zdCBjb250cm9sTmFtZUJpbmRpbmcgPVxuICAgIENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKE5nQ29udHJvbCwge3VzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5nQ29udHJvbE5hbWUpfSkpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW5kIGJpbmRzIGEgY29udHJvbCB3aXRoIGEgc3BlY2lmaWVkIG5hbWUgdG8gYSBET00gZWxlbWVudC5cbiAqXG4gKiBUaGlzIGRpcmVjdGl2ZSBjYW4gb25seSBiZSB1c2VkIGFzIGEgY2hpbGQgb2Yge0BsaW5rIE5nRm9ybX0gb3Ige0BsaW5rIE5nRm9ybU1vZGVsfS5cblxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBJbiB0aGlzIGV4YW1wbGUsIHdlIGNyZWF0ZSB0aGUgbG9naW4gYW5kIHBhc3N3b3JkIGNvbnRyb2xzLlxuICogV2UgY2FuIHdvcmsgd2l0aCBlYWNoIGNvbnRyb2wgc2VwYXJhdGVseTogY2hlY2sgaXRzIHZhbGlkaXR5LCBnZXQgaXRzIHZhbHVlLCBsaXN0ZW4gdG8gaXRzXG4gKiBjaGFuZ2VzLlxuICpcbiAqICBgYGBcbiAqIEBDb21wb25lbnQoe1xuICogICAgICBzZWxlY3RvcjogXCJsb2dpbi1jb21wXCIsXG4gKiAgICAgIGRpcmVjdGl2ZXM6IFtGT1JNX0RJUkVDVElWRVNdLFxuICogICAgICB0ZW1wbGF0ZTogYFxuICogICAgICAgIDxmb3JtICNmPVwibmdGb3JtXCIgKHN1Ym1pdCk9J29uTG9nSW4oZi52YWx1ZSknPlxuICogICAgICAgICAgTG9naW4gPGlucHV0IHR5cGU9J3RleHQnIG5nQ29udHJvbD0nbG9naW4nICNsPVwiZm9ybVwiPlxuICogICAgICAgICAgPGRpdiAqbmdJZj1cIiFsLnZhbGlkXCI+TG9naW4gaXMgaW52YWxpZDwvZGl2PlxuICpcbiAqICAgICAgICAgIFBhc3N3b3JkIDxpbnB1dCB0eXBlPSdwYXNzd29yZCcgbmdDb250cm9sPSdwYXNzd29yZCc+XG4gKiAgICAgICAgICA8YnV0dG9uIHR5cGU9J3N1Ym1pdCc+TG9nIGluITwvYnV0dG9uPlxuICogICAgICAgIDwvZm9ybT5cbiAqICAgICAgYH0pXG4gKiBjbGFzcyBMb2dpbkNvbXAge1xuICogIG9uTG9nSW4odmFsdWUpOiB2b2lkIHtcbiAqICAgIC8vIHZhbHVlID09PSB7bG9naW46ICdzb21lIGxvZ2luJywgcGFzc3dvcmQ6ICdzb21lIHBhc3N3b3JkJ31cbiAqICB9XG4gKiB9XG4gKiAgYGBgXG4gKlxuICogV2UgY2FuIGFsc28gdXNlIG5nTW9kZWwgdG8gYmluZCBhIGRvbWFpbiBtb2RlbCB0byB0aGUgZm9ybS5cbiAqXG4gKiAgYGBgXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgICAgc2VsZWN0b3I6IFwibG9naW4tY29tcFwiLFxuICogICAgICBkaXJlY3RpdmVzOiBbRk9STV9ESVJFQ1RJVkVTXSxcbiAqICAgICAgdGVtcGxhdGU6IGBcbiAqICAgICAgICA8Zm9ybSAoc3VibWl0KT0nb25Mb2dJbigpJz5cbiAqICAgICAgICAgIExvZ2luIDxpbnB1dCB0eXBlPSd0ZXh0JyBuZ0NvbnRyb2w9J2xvZ2luJyBbKG5nTW9kZWwpXT1cImNyZWRlbnRpYWxzLmxvZ2luXCI+XG4gKiAgICAgICAgICBQYXNzd29yZCA8aW5wdXQgdHlwZT0ncGFzc3dvcmQnIG5nQ29udHJvbD0ncGFzc3dvcmQnXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcmVkZW50aWFscy5wYXNzd29yZFwiPlxuICogICAgICAgICAgPGJ1dHRvbiB0eXBlPSdzdWJtaXQnPkxvZyBpbiE8L2J1dHRvbj5cbiAqICAgICAgICA8L2Zvcm0+XG4gKiAgICAgIGB9KVxuICogY2xhc3MgTG9naW5Db21wIHtcbiAqICBjcmVkZW50aWFsczoge2xvZ2luOnN0cmluZywgcGFzc3dvcmQ6c3RyaW5nfTtcbiAqXG4gKiAgb25Mb2dJbigpOiB2b2lkIHtcbiAqICAgIC8vIHRoaXMuY3JlZGVudGlhbHMubG9naW4gPT09IFwic29tZSBsb2dpblwiXG4gKiAgICAvLyB0aGlzLmNyZWRlbnRpYWxzLnBhc3N3b3JkID09PSBcInNvbWUgcGFzc3dvcmRcIlxuICogIH1cbiAqIH1cbiAqICBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nQ29udHJvbF0nLFxuICBiaW5kaW5nczogW2NvbnRyb2xOYW1lQmluZGluZ10sXG4gIGlucHV0czogWyduYW1lOiBuZ0NvbnRyb2wnLCAnbW9kZWw6IG5nTW9kZWwnXSxcbiAgb3V0cHV0czogWyd1cGRhdGU6IG5nTW9kZWxDaGFuZ2UnXSxcbiAgZXhwb3J0QXM6ICduZ0Zvcm0nXG59KVxuZXhwb3J0IGNsYXNzIE5nQ29udHJvbE5hbWUgZXh0ZW5kcyBOZ0NvbnRyb2wgaW1wbGVtZW50cyBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95IHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICB1cGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG1vZGVsOiBhbnk7XG4gIHZpZXdNb2RlbDogYW55O1xuICBwcml2YXRlIF9hZGRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKEBIb3N0KCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBfcGFyZW50OiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgcHJpdmF0ZSBfdmFsaWRhdG9yczpcbiAgICAgICAgICAgICAgICAgIC8qIEFycmF5PFZhbGlkYXRvcnxGdW5jdGlvbj4gKi8gYW55W10sXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChOR19BU1lOQ19WQUxJREFUT1JTKSBwcml2YXRlIF9hc3luY1ZhbGlkYXRvcnM6XG4gICAgICAgICAgICAgICAgICAvKiBBcnJheTxWYWxpZGF0b3J8RnVuY3Rpb24+ICovIGFueVtdLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfVkFMVUVfQUNDRVNTT1IpXG4gICAgICAgICAgICAgIHZhbHVlQWNjZXNzb3JzOiBDb250cm9sVmFsdWVBY2Nlc3NvcltdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnZhbHVlQWNjZXNzb3IgPSBzZWxlY3RWYWx1ZUFjY2Vzc29yKHRoaXMsIHZhbHVlQWNjZXNzb3JzKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHtba2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2V9KSB7XG4gICAgaWYgKCF0aGlzLl9hZGRlZCkge1xuICAgICAgdGhpcy5mb3JtRGlyZWN0aXZlLmFkZENvbnRyb2wodGhpcyk7XG4gICAgICB0aGlzLl9hZGRlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChpc1Byb3BlcnR5VXBkYXRlZChjaGFuZ2VzLCB0aGlzLnZpZXdNb2RlbCkpIHtcbiAgICAgIHRoaXMudmlld01vZGVsID0gdGhpcy5tb2RlbDtcbiAgICAgIHRoaXMuZm9ybURpcmVjdGl2ZS51cGRhdGVNb2RlbCh0aGlzLCB0aGlzLm1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHsgdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2wodGhpcyk7IH1cblxuICB2aWV3VG9Nb2RlbFVwZGF0ZShuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52aWV3TW9kZWwgPSBuZXdWYWx1ZTtcbiAgICBPYnNlcnZhYmxlV3JhcHBlci5jYWxsRW1pdCh0aGlzLnVwZGF0ZSwgbmV3VmFsdWUpO1xuICB9XG5cbiAgZ2V0IHBhdGgoKTogc3RyaW5nW10geyByZXR1cm4gY29udHJvbFBhdGgodGhpcy5uYW1lLCB0aGlzLl9wYXJlbnQpOyB9XG5cbiAgZ2V0IGZvcm1EaXJlY3RpdmUoKTogYW55IHsgcmV0dXJuIHRoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOyB9XG5cbiAgZ2V0IHZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7IHJldHVybiBjb21wb3NlVmFsaWRhdG9ycyh0aGlzLl92YWxpZGF0b3JzKTsgfVxuXG4gIGdldCBhc3luY1ZhbGlkYXRvcigpOiBBc3luY1ZhbGlkYXRvckZuIHsgcmV0dXJuIGNvbXBvc2VBc3luY1ZhbGlkYXRvcnModGhpcy5fYXN5bmNWYWxpZGF0b3JzKTsgfVxuXG4gIGdldCBjb250cm9sKCk6IENvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLmdldENvbnRyb2wodGhpcyk7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar core_1 = require('angular2/core');\r\nvar ng_control_1 = require('./ng_control');\r\nvar validators_1 = require('../validators');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar shared_1 = require('./shared');\r\nvar formControlBinding = lang_1.CONST_EXPR(new core_1.Provider(ng_control_1.NgControl, { useExisting: core_1.forwardRef(function () { return NgFormControl; }) }));\r\n/**\r\n * Binds an existing {@link Control} to a DOM element.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/jcQlZ2tTh22BZZ2ucNAT?p=preview))\r\n *\r\n * In this example, we bind the control to an input element. When the value of the input element\r\n * changes, the value of the control will reflect that change. Likewise, if the value of the\r\n * control changes, the input element reflects that change.\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'my-app',\r\n * template: `\r\n * <div>\r\n * <h2>NgFormControl Example</h2>\r\n * <form>\r\n * <p>Element with existing control: <input type=\"text\"\r\n * [ngFormControl]=\"loginControl\"></p>\r\n * <p>Value of existing control: {{loginControl.value}}</p>\r\n * </form>\r\n * </div>\r\n * `,\r\n * directives: [CORE_DIRECTIVES, FORM_DIRECTIVES]\r\n * })\r\n * export class App {\r\n * loginControl: Control = new Control('');\r\n * }\r\n * ```\r\n *\r\n * ###ngModel\r\n *\r\n * We can also use `ngModel` to bind a domain model to the form.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/yHMLuHO7DNgT8XvtjTDH?p=preview))\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: \"login-comp\",\r\n * directives: [FORM_DIRECTIVES],\r\n * template: \"<input type='text' [ngFormControl]='loginControl' [(ngModel)]='login'>\"\r\n * })\r\n * class LoginComp {\r\n * loginControl: Control = new Control('');\r\n * login:string;\r\n * }\r\n * ```\r\n */\r\nvar NgFormControl = (function (_super) {\r\n __extends(NgFormControl, _super);\r\n function NgFormControl(_validators, _asyncValidators, valueAccessors) {\r\n _super.call(this);\r\n this._validators = _validators;\r\n this._asyncValidators = _asyncValidators;\r\n this.update = new async_1.EventEmitter();\r\n this.valueAccessor = shared_1.selectValueAccessor(this, valueAccessors);\r\n }\r\n NgFormControl.prototype.ngOnChanges = function (changes) {\r\n if (this._isControlChanged(changes)) {\r\n shared_1.setUpControl(this.form, this);\r\n this.form.updateValueAndValidity({ emitEvent: false });\r\n }\r\n if (shared_1.isPropertyUpdated(changes, this.viewModel)) {\r\n this.form.updateValue(this.model);\r\n this.viewModel = this.model;\r\n }\r\n };\r\n Object.defineProperty(NgFormControl.prototype, \"path\", {\r\n get: function () { return []; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFormControl.prototype, \"validator\", {\r\n get: function () { return shared_1.composeValidators(this._validators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFormControl.prototype, \"asyncValidator\", {\r\n get: function () { return shared_1.composeAsyncValidators(this._asyncValidators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFormControl.prototype, \"control\", {\r\n get: function () { return this.form; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgFormControl.prototype.viewToModelUpdate = function (newValue) {\r\n this.viewModel = newValue;\r\n async_1.ObservableWrapper.callEmit(this.update, newValue);\r\n };\r\n NgFormControl.prototype._isControlChanged = function (changes) {\r\n return collection_1.StringMapWrapper.contains(changes, \"form\");\r\n };\r\n NgFormControl = __decorate([\r\n core_1.Directive({\r\n selector: '[ngFormControl]',\r\n bindings: [formControlBinding],\r\n inputs: ['form: ngFormControl', 'model: ngModel'],\r\n outputs: ['update: ngModelChange'],\r\n exportAs: 'ngForm'\r\n }),\r\n __param(0, core_1.Optional()),\r\n __param(0, core_1.Self()),\r\n __param(0, core_1.Inject(validators_1.NG_VALIDATORS)),\r\n __param(1, core_1.Optional()),\r\n __param(1, core_1.Self()),\r\n __param(1, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)),\r\n __param(2, core_1.Optional()),\r\n __param(2, core_1.Self()),\r\n __param(2, core_1.Inject(control_value_accessor_1.NG_VALUE_ACCESSOR)), \r\n __metadata('design:paramtypes', [Array, Array, Array])\r\n ], NgFormControl);\r\n return NgFormControl;\r\n})(ng_control_1.NgControl);\r\nexports.NgFormControl = NgFormControl;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfZm9ybV9jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbW1vbi9mb3Jtcy9kaXJlY3RpdmVzL25nX2Zvcm1fY29udHJvbC50cyJdLCJuYW1lcyI6WyJOZ0Zvcm1Db250cm9sIiwiTmdGb3JtQ29udHJvbC5jb25zdHJ1Y3RvciIsIk5nRm9ybUNvbnRyb2wubmdPbkNoYW5nZXMiLCJOZ0Zvcm1Db250cm9sLnBhdGgiLCJOZ0Zvcm1Db250cm9sLnZhbGlkYXRvciIsIk5nRm9ybUNvbnRyb2wuYXN5bmNWYWxpZGF0b3IiLCJOZ0Zvcm1Db250cm9sLmNvbnRyb2wiLCJOZ0Zvcm1Db250cm9sLnZpZXdUb01vZGVsVXBkYXRlIiwiTmdGb3JtQ29udHJvbC5faXNDb250cm9sQ2hhbmdlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQkFBeUIsMEJBQTBCLENBQUMsQ0FBQTtBQUNwRCwyQkFBK0IsZ0NBQWdDLENBQUMsQ0FBQTtBQUNoRSxzQkFBOEMsMkJBQTJCLENBQUMsQ0FBQTtBQUMxRSxxQkFVTyxlQUFlLENBQUMsQ0FBQTtBQUN2QiwyQkFBd0IsY0FBYyxDQUFDLENBQUE7QUFFdkMsMkJBQTZELGVBQWUsQ0FBQyxDQUFBO0FBQzdFLHVDQUFzRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQ2pGLHVCQU1PLFVBQVUsQ0FBQyxDQUFBO0FBR2xCLElBQU0sa0JBQWtCLEdBQ3BCLGlCQUFVLENBQUMsSUFBSSxlQUFRLENBQUMsc0JBQVMsRUFBRSxFQUFDLFdBQVcsRUFBRSxpQkFBVSxDQUFDLGNBQU0sT0FBQSxhQUFhLEVBQWIsQ0FBYSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFFeEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Q0c7QUFDSDtJQU9tQ0EsaUNBQVNBO0lBTTFDQSx1QkFBK0RBLFdBQ1ZBLEVBQ2dCQSxnQkFDaEJBLEVBRXpDQSxjQUFzQ0E7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Q0FBQUE7UUFBQ0EsV0FBQ0EsYUFBTUEsQ0FBQ0EsZ0NBQW1CQSxDQUFDQSxDQUFBQTtRQUVoREEsV0FBQ0EsZUFBUUEsRUFBRUEsQ0FBQUE7UUFBQ0EsV0FBQ0EsV0FBSUEsRUFBRUEsQ0FBQUE7UUFBQ0EsV0FBQ0EsYUFBTUEsQ0FBQ0EsMENBQWlCQSxDQUFDQSxDQUFBQTs7c0JBaUMzREE7SUFBREEsb0JBQUNBO0FBQURBLENBQUNBLEFBbERELEVBT21DLHNCQUFTLEVBMkMzQztBQTNDWSxxQkFBYSxnQkEyQ3pCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1N0cmluZ01hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge0V2ZW50RW1pdHRlciwgT2JzZXJ2YWJsZVdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYXN5bmMnO1xuaW1wb3J0IHtcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2UsXG4gIFF1ZXJ5LFxuICBEaXJlY3RpdmUsXG4gIGZvcndhcmRSZWYsXG4gIFByb3ZpZGVyLFxuICBJbmplY3QsXG4gIE9wdGlvbmFsLFxuICBTZWxmXG59IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJy4vbmdfY29udHJvbCc7XG5pbXBvcnQge0NvbnRyb2x9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7VmFsaWRhdG9ycywgTkdfVkFMSURBVE9SUywgTkdfQVNZTkNfVkFMSURBVE9SU30gZnJvbSAnLi4vdmFsaWRhdG9ycyc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnLi9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7XG4gIHNldFVwQ29udHJvbCxcbiAgY29tcG9zZVZhbGlkYXRvcnMsXG4gIGNvbXBvc2VBc3luY1ZhbGlkYXRvcnMsXG4gIGlzUHJvcGVydHlVcGRhdGVkLFxuICBzZWxlY3RWYWx1ZUFjY2Vzc29yXG59IGZyb20gJy4vc2hhcmVkJztcbmltcG9ydCB7VmFsaWRhdG9yRm4sIEFzeW5jVmFsaWRhdG9yRm59IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5cbmNvbnN0IGZvcm1Db250cm9sQmluZGluZyA9XG4gICAgQ09OU1RfRVhQUihuZXcgUHJvdmlkZXIoTmdDb250cm9sLCB7dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdGb3JtQ29udHJvbCl9KSk7XG5cbi8qKlxuICogQmluZHMgYW4gZXhpc3Rpbmcge0BsaW5rIENvbnRyb2x9IHRvIGEgRE9NIGVsZW1lbnQuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L2pjUWxaMnRUaDIyQlpaMnVjTkFUP3A9cHJldmlldykpXG4gKlxuICogSW4gdGhpcyBleGFtcGxlLCB3ZSBiaW5kIHRoZSBjb250cm9sIHRvIGFuIGlucHV0IGVsZW1lbnQuIFdoZW4gdGhlIHZhbHVlIG9mIHRoZSBpbnB1dCBlbGVtZW50XG4gKiBjaGFuZ2VzLCB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2wgd2lsbCByZWZsZWN0IHRoYXQgY2hhbmdlLiBMaWtld2lzZSwgaWYgdGhlIHZhbHVlIG9mIHRoZVxuICogY29udHJvbCBjaGFuZ2VzLCB0aGUgaW5wdXQgZWxlbWVudCByZWZsZWN0cyB0aGF0IGNoYW5nZS5cbiAqXG4gKiAgYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnbXktYXBwJyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8ZGl2PlxuICogICAgICAgPGgyPk5nRm9ybUNvbnRyb2wgRXhhbXBsZTwvaDI+XG4gKiAgICAgICA8Zm9ybT5cbiAqICAgICAgICAgPHA+RWxlbWVudCB3aXRoIGV4aXN0aW5nIGNvbnRyb2w6IDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gKiBbbmdGb3JtQ29udHJvbF09XCJsb2dpbkNvbnRyb2xcIj48L3A+XG4gKiAgICAgICAgIDxwPlZhbHVlIG9mIGV4aXN0aW5nIGNvbnRyb2w6IHt7bG9naW5Db250cm9sLnZhbHVlfX08L3A+XG4gKiAgICAgICA8L2Zvcm0+XG4gKiAgICAgPC9kaXY+XG4gKiAgIGAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtDT1JFX0RJUkVDVElWRVMsIEZPUk1fRElSRUNUSVZFU11cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwIHtcbiAqICAgbG9naW5Db250cm9sOiBDb250cm9sID0gbmV3IENvbnRyb2woJycpO1xuICogfVxuICogIGBgYFxuICpcbiAqICMjI25nTW9kZWxcbiAqXG4gKiBXZSBjYW4gYWxzbyB1c2UgYG5nTW9kZWxgIHRvIGJpbmQgYSBkb21haW4gbW9kZWwgdG8gdGhlIGZvcm0uXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3lITUx1SE83RE5nVDhYdnRqVERIP3A9cHJldmlldykpXG4gKlxuICogIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICAgICBzZWxlY3RvcjogXCJsb2dpbi1jb21wXCIsXG4gKiAgICAgIGRpcmVjdGl2ZXM6IFtGT1JNX0RJUkVDVElWRVNdLFxuICogICAgICB0ZW1wbGF0ZTogXCI8aW5wdXQgdHlwZT0ndGV4dCcgW25nRm9ybUNvbnRyb2xdPSdsb2dpbkNvbnRyb2wnIFsobmdNb2RlbCldPSdsb2dpbic+XCJcbiAqICAgICAgfSlcbiAqIGNsYXNzIExvZ2luQ29tcCB7XG4gKiAgbG9naW5Db250cm9sOiBDb250cm9sID0gbmV3IENvbnRyb2woJycpO1xuICogIGxvZ2luOnN0cmluZztcbiAqIH1cbiAqICBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nRm9ybUNvbnRyb2xdJyxcbiAgYmluZGluZ3M6IFtmb3JtQ29udHJvbEJpbmRpbmddLFxuICBpbnB1dHM6IFsnZm9ybTogbmdGb3JtQ29udHJvbCcsICdtb2RlbDogbmdNb2RlbCddLFxuICBvdXRwdXRzOiBbJ3VwZGF0ZTogbmdNb2RlbENoYW5nZSddLFxuICBleHBvcnRBczogJ25nRm9ybSdcbn0pXG5leHBvcnQgY2xhc3MgTmdGb3JtQ29udHJvbCBleHRlbmRzIE5nQ29udHJvbCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIGZvcm06IENvbnRyb2w7XG4gIHVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgbW9kZWw6IGFueTtcbiAgdmlld01vZGVsOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHByaXZhdGUgX3ZhbGlkYXRvcnM6XG4gICAgICAgICAgICAgICAgICAvKiBBcnJheTxWYWxpZGF0b3J8RnVuY3Rpb24+ICovIGFueVtdLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfQVNZTkNfVkFMSURBVE9SUykgcHJpdmF0ZSBfYXN5bmNWYWxpZGF0b3JzOlxuICAgICAgICAgICAgICAgICAgLyogQXJyYXk8VmFsaWRhdG9yfEZ1bmN0aW9uPiAqLyBhbnlbXSxcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTFVFX0FDQ0VTU09SKVxuICAgICAgICAgICAgICB2YWx1ZUFjY2Vzc29yczogQ29udHJvbFZhbHVlQWNjZXNzb3JbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy52YWx1ZUFjY2Vzc29yID0gc2VsZWN0VmFsdWVBY2Nlc3Nvcih0aGlzLCB2YWx1ZUFjY2Vzc29ycyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7W2tleTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlfSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc0NvbnRyb2xDaGFuZ2VkKGNoYW5nZXMpKSB7XG4gICAgICBzZXRVcENvbnRyb2wodGhpcy5mb3JtLCB0aGlzKTtcbiAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIGlmIChpc1Byb3BlcnR5VXBkYXRlZChjaGFuZ2VzLCB0aGlzLnZpZXdNb2RlbCkpIHtcbiAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZSh0aGlzLm1vZGVsKTtcbiAgICAgIHRoaXMudmlld01vZGVsID0gdGhpcy5tb2RlbDtcbiAgICB9XG4gIH1cblxuICBnZXQgcGF0aCgpOiBzdHJpbmdbXSB7IHJldHVybiBbXTsgfVxuXG4gIGdldCB2YWxpZGF0b3IoKTogVmFsaWRhdG9yRm4geyByZXR1cm4gY29tcG9zZVZhbGlkYXRvcnModGhpcy5fdmFsaWRhdG9ycyk7IH1cblxuICBnZXQgYXN5bmNWYWxpZGF0b3IoKTogQXN5bmNWYWxpZGF0b3JGbiB7IHJldHVybiBjb21wb3NlQXN5bmNWYWxpZGF0b3JzKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyk7IH1cblxuICBnZXQgY29udHJvbCgpOiBDb250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybTsgfVxuXG4gIHZpZXdUb01vZGVsVXBkYXRlKG5ld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdNb2RlbCA9IG5ld1ZhbHVlO1xuICAgIE9ic2VydmFibGVXcmFwcGVyLmNhbGxFbWl0KHRoaXMudXBkYXRlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9pc0NvbnRyb2xDaGFuZ2VkKGNoYW5nZXM6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFN0cmluZ01hcFdyYXBwZXIuY29udGFpbnMoY2hhbmdlcywgXCJmb3JtXCIpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar core_1 = require('angular2/core');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar ng_control_1 = require('./ng_control');\r\nvar model_1 = require('../model');\r\nvar validators_1 = require('../validators');\r\nvar shared_1 = require('./shared');\r\nvar formControlBinding = lang_1.CONST_EXPR(new core_1.Provider(ng_control_1.NgControl, { useExisting: core_1.forwardRef(function () { return NgModel; }) }));\r\n/**\r\n * Binds a domain model to a form control.\r\n *\r\n * ### Usage\r\n *\r\n * `ngModel` binds an existing domain model to a form control. For a\r\n * two-way binding, use `[(ngModel)]` to ensure the model updates in\r\n * both directions.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/R3UX5qDaUqFO2VYR0UzH?p=preview))\r\n * ```typescript\r\n * @Component({\r\n * selector: \"search-comp\",\r\n * directives: [FORM_DIRECTIVES],\r\n * template: `<input type='text' [(ngModel)]=\"searchQuery\">`\r\n * })\r\n * class SearchComp {\r\n * searchQuery: string;\r\n * }\r\n * ```\r\n */\r\nvar NgModel = (function (_super) {\r\n __extends(NgModel, _super);\r\n function NgModel(_validators, _asyncValidators, valueAccessors) {\r\n _super.call(this);\r\n this._validators = _validators;\r\n this._asyncValidators = _asyncValidators;\r\n /** @internal */\r\n this._control = new model_1.Control();\r\n /** @internal */\r\n this._added = false;\r\n this.update = new async_1.EventEmitter();\r\n this.valueAccessor = shared_1.selectValueAccessor(this, valueAccessors);\r\n }\r\n NgModel.prototype.ngOnChanges = function (changes) {\r\n if (!this._added) {\r\n shared_1.setUpControl(this._control, this);\r\n this._control.updateValueAndValidity({ emitEvent: false });\r\n this._added = true;\r\n }\r\n if (shared_1.isPropertyUpdated(changes, this.viewModel)) {\r\n this._control.updateValue(this.model);\r\n this.viewModel = this.model;\r\n }\r\n };\r\n Object.defineProperty(NgModel.prototype, \"control\", {\r\n get: function () { return this._control; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgModel.prototype, \"path\", {\r\n get: function () { return []; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgModel.prototype, \"validator\", {\r\n get: function () { return shared_1.composeValidators(this._validators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgModel.prototype, \"asyncValidator\", {\r\n get: function () { return shared_1.composeAsyncValidators(this._asyncValidators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgModel.prototype.viewToModelUpdate = function (newValue) {\r\n this.viewModel = newValue;\r\n async_1.ObservableWrapper.callEmit(this.update, newValue);\r\n };\r\n NgModel = __decorate([\r\n core_1.Directive({\r\n selector: '[ngModel]:not([ngControl]):not([ngFormControl])',\r\n bindings: [formControlBinding],\r\n inputs: ['model: ngModel'],\r\n outputs: ['update: ngModelChange'],\r\n exportAs: 'ngForm'\r\n }),\r\n __param(0, core_1.Optional()),\r\n __param(0, core_1.Self()),\r\n __param(0, core_1.Inject(validators_1.NG_VALIDATORS)),\r\n __param(1, core_1.Optional()),\r\n __param(1, core_1.Self()),\r\n __param(1, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)),\r\n __param(2, core_1.Optional()),\r\n __param(2, core_1.Self()),\r\n __param(2, core_1.Inject(control_value_accessor_1.NG_VALUE_ACCESSOR)), \r\n __metadata('design:paramtypes', [Array, Array, Array])\r\n ], NgModel);\r\n return NgModel;\r\n})(ng_control_1.NgControl);\r\nexports.NgModel = NgModel;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL2RpcmVjdGl2ZXMvbmdfbW9kZWwudHMiXSwibmFtZXMiOlsiTmdNb2RlbCIsIk5nTW9kZWwuY29uc3RydWN0b3IiLCJOZ01vZGVsLm5nT25DaGFuZ2VzIiwiTmdNb2RlbC5jb250cm9sIiwiTmdNb2RlbC5wYXRoIiwiTmdNb2RlbC52YWxpZGF0b3IiLCJOZ01vZGVsLmFzeW5jVmFsaWRhdG9yIiwiTmdNb2RlbC52aWV3VG9Nb2RlbFVwZGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQkFBeUIsMEJBQTBCLENBQUMsQ0FBQTtBQUNwRCxzQkFBOEMsMkJBQTJCLENBQUMsQ0FBQTtBQUMxRSxxQkFTTyxlQUFlLENBQUMsQ0FBQTtBQUN2Qix1Q0FBc0QsMEJBQTBCLENBQUMsQ0FBQTtBQUNqRiwyQkFBd0IsY0FBYyxDQUFDLENBQUE7QUFDdkMsc0JBQXNCLFVBQVUsQ0FBQyxDQUFBO0FBQ2pDLDJCQUFpRCxlQUFlLENBQUMsQ0FBQTtBQUNqRSx1QkFNTyxVQUFVLENBQUMsQ0FBQTtBQUdsQixJQUFNLGtCQUFrQixHQUNwQixpQkFBVSxDQUFDLElBQUksZUFBUSxDQUFDLHNCQUFTLEVBQUUsRUFBQyxXQUFXLEVBQUUsaUJBQVUsQ0FBQyxjQUFNLE9BQUEsT0FBTyxFQUFQLENBQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWxGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNIO0lBTzZCQSwyQkFBU0E7SUFTcENBLGlCQUErREEsV0FBa0JBLEVBQ1pBLGdCQUF1QkEsRUFFaEZBLGNBQXNDQTtRQUNoREMsaUJBQU9BLENBQUNBO1FBSnFEQSxnQkFBV0EsR0FBWEEsV0FBV0EsQ0FBT0E7UUFDWkEscUJBQWdCQSxHQUFoQkEsZ0JBQWdCQSxDQUFPQTtRQVQ1RkEsZ0JBQWdCQTtRQUNoQkEsYUFBUUEsR0FBR0EsSUFB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Q0EsMENBQWlCQSxDQUFDQSxDQUFBQTs7Z0JBK0IzREE7SUFBREEsY0FBQ0E7QUFBREEsQ0FBQ0EsQUFqREQsRUFPNkIsc0JBQVMsRUEwQ3JDO0FBMUNZLGVBQU8sVUEwQ25CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0V2ZW50RW1pdHRlciwgT2JzZXJ2YWJsZVdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYXN5bmMnO1xuaW1wb3J0IHtcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2UsXG4gIERpcmVjdGl2ZSxcbiAgZm9yd2FyZFJlZixcbiAgUHJvdmlkZXIsXG4gIEluamVjdCxcbiAgT3B0aW9uYWwsXG4gIFNlbGZcbn0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnLi9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICcuL25nX2NvbnRyb2wnO1xuaW1wb3J0IHtDb250cm9sfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQge05HX1ZBTElEQVRPUlMsIE5HX0FTWU5DX1ZBTElEQVRPUlN9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtcbiAgc2V0VXBDb250cm9sLFxuICBpc1Byb3BlcnR5VXBkYXRlZCxcbiAgc2VsZWN0VmFsdWVBY2Nlc3NvcixcbiAgY29tcG9zZVZhbGlkYXRvcnMsXG4gIGNvbXBvc2VBc3luY1ZhbGlkYXRvcnNcbn0gZnJvbSAnLi9zaGFyZWQnO1xuaW1wb3J0IHtWYWxpZGF0b3JGbiwgQXN5bmNWYWxpZGF0b3JGbn0gZnJvbSAnLi92YWxpZGF0b3JzJztcblxuY29uc3QgZm9ybUNvbnRyb2xCaW5kaW5nID1cbiAgICBDT05TVF9FWFBSKG5ldyBQcm92aWRlcihOZ0NvbnRyb2wsIHt1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ01vZGVsKX0pKTtcblxuLyoqXG4gKiBCaW5kcyBhIGRvbWFpbiBtb2RlbCB0byBhIGZvcm0gY29udHJvbC5cbiAqXG4gKiAjIyMgVXNhZ2VcbiAqXG4gKiBgbmdNb2RlbGAgYmluZHMgYW4gZXhpc3RpbmcgZG9tYWluIG1vZGVsIHRvIGEgZm9ybSBjb250cm9sLiBGb3IgYVxuICogdHdvLXdheSBiaW5kaW5nLCB1c2UgYFsobmdNb2RlbCldYCB0byBlbnN1cmUgdGhlIG1vZGVsIHVwZGF0ZXMgaW5cbiAqIGJvdGggZGlyZWN0aW9ucy5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvUjNVWDVxRGFVcUZPMlZZUjBVekg/cD1wcmV2aWV3KSlcbiAqICBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgICAgc2VsZWN0b3I6IFwic2VhcmNoLWNvbXBcIixcbiAqICAgICAgZGlyZWN0aXZlczogW0ZPUk1fRElSRUNUSVZFU10sXG4gKiAgICAgIHRlbXBsYXRlOiBgPGlucHV0IHR5cGU9J3RleHQnIFsobmdNb2RlbCldPVwic2VhcmNoUXVlcnlcIj5gXG4gKiAgICAgIH0pXG4gKiBjbGFzcyBTZWFyY2hDb21wIHtcbiAqICBzZWFyY2hRdWVyeTogc3RyaW5nO1xuICogfVxuICogIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdNb2RlbF06bm90KFtuZ0NvbnRyb2xdKTpub3QoW25nRm9ybUNvbnRyb2xdKScsXG4gIGJpbmRpbmdzOiBbZm9ybUNvbnRyb2xCaW5kaW5nXSxcbiAgaW5wdXRzOiBbJ21vZGVsOiBuZ01vZGVsJ10sXG4gIG91dHB1dHM6IFsndXBkYXRlOiBuZ01vZGVsQ2hhbmdlJ10sXG4gIGV4cG9ydEFzOiAnbmdGb3JtJ1xufSlcbmV4cG9ydCBjbGFzcyBOZ01vZGVsIGV4dGVuZHMgTmdDb250cm9sIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfY29udHJvbCA9IG5ldyBDb250cm9sKCk7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FkZGVkID0gZmFsc2U7XG4gIHVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgbW9kZWw6IGFueTtcbiAgdmlld01vZGVsOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHByaXZhdGUgX3ZhbGlkYXRvcnM6IGFueVtdLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfQVNZTkNfVkFMSURBVE9SUykgcHJpdmF0ZSBfYXN5bmNWYWxpZGF0b3JzOiBhbnlbXSxcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTFVFX0FDQ0VTU09SKVxuICAgICAgICAgICAgICB2YWx1ZUFjY2Vzc29yczogQ29udHJvbFZhbHVlQWNjZXNzb3JbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy52YWx1ZUFjY2Vzc29yID0gc2VsZWN0VmFsdWVBY2Nlc3Nvcih0aGlzLCB2YWx1ZUFjY2Vzc29ycyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7W2tleTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlfSkge1xuICAgIGlmICghdGhpcy5fYWRkZWQpIHtcbiAgICAgIHNldFVwQ29udHJvbCh0aGlzLl9jb250cm9sLCB0aGlzKTtcbiAgICAgIHRoaXMuX2NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgdGhpcy5fYWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpc1Byb3BlcnR5VXBkYXRlZChjaGFuZ2VzLCB0aGlzLnZpZXdNb2RlbCkpIHtcbiAgICAgIHRoaXMuX2NvbnRyb2wudXBkYXRlVmFsdWUodGhpcy5tb2RlbCk7XG4gICAgICB0aGlzLnZpZXdNb2RlbCA9IHRoaXMubW9kZWw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvbnRyb2woKTogQ29udHJvbCB7IHJldHVybiB0aGlzLl9jb250cm9sOyB9XG5cbiAgZ2V0IHBhdGgoKTogc3RyaW5nW10geyByZXR1cm4gW107IH1cblxuICBnZXQgdmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHsgcmV0dXJuIGNvbXBvc2VWYWxpZGF0b3JzKHRoaXMuX3ZhbGlkYXRvcnMpOyB9XG5cbiAgZ2V0IGFzeW5jVmFsaWRhdG9yKCk6IEFzeW5jVmFsaWRhdG9yRm4geyByZXR1cm4gY29tcG9zZUFzeW5jVmFsaWRhdG9ycyh0aGlzLl9hc3luY1ZhbGlkYXRvcnMpOyB9XG5cbiAgdmlld1RvTW9kZWxVcGRhdGUobmV3VmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmlld01vZGVsID0gbmV3VmFsdWU7XG4gICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy51cGRhdGUsIG5ld1ZhbHVlKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar control_container_1 = require('./control_container');\r\nvar shared_1 = require('./shared');\r\nvar validators_1 = require('../validators');\r\nvar controlGroupProvider = lang_1.CONST_EXPR(new core_1.Provider(control_container_1.ControlContainer, { useExisting: core_1.forwardRef(function () { return NgControlGroup; }) }));\r\n/**\r\n * Creates and binds a control group to a DOM element.\r\n *\r\n * This directive can only be used as a child of {@link NgForm} or {@link NgFormModel}.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/7EJ11uGeaggViYM6T5nq?p=preview))\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'my-app',\r\n * directives: [FORM_DIRECTIVES],\r\n * template: `\r\n * <div>\r\n * <h2>Angular2 Control & ControlGroup Example</h2>\r\n * <form #f=\"ngForm\">\r\n * <div ngControlGroup=\"name\" #cg-name=\"form\">\r\n * <h3>Enter your name:</h3>\r\n * <p>First: <input ngControl=\"first\" required></p>\r\n * <p>Middle: <input ngControl=\"middle\"></p>\r\n * <p>Last: <input ngControl=\"last\" required></p>\r\n * </div>\r\n * <h3>Name value:</h3>\r\n * <pre>{{valueOf(cgName)}}</pre>\r\n * <p>Name is {{cgName?.control?.valid ? \"valid\" : \"invalid\"}}</p>\r\n * <h3>What's your favorite food?</h3>\r\n * <p><input ngControl=\"food\"></p>\r\n * <h3>Form value</h3>\r\n * <pre>{{valueOf(f)}}</pre>\r\n * </form>\r\n * </div>\r\n * `,\r\n * directives: [FORM_DIRECTIVES]\r\n * })\r\n * export class App {\r\n * valueOf(cg: NgControlGroup): string {\r\n * if (cg.control == null) {\r\n * return null;\r\n * }\r\n * return JSON.stringify(cg.control.value, null, 2);\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This example declares a control group for a user's name. The value and validation state of\r\n * this group can be accessed separately from the overall form.\r\n */\r\nvar NgControlGroup = (function (_super) {\r\n __extends(NgControlGroup, _super);\r\n function NgControlGroup(parent, _validators, _asyncValidators) {\r\n _super.call(this);\r\n this._validators = _validators;\r\n this._asyncValidators = _asyncValidators;\r\n this._parent = parent;\r\n }\r\n NgControlGroup.prototype.ngOnInit = function () { this.formDirective.addControlGroup(this); };\r\n NgControlGroup.prototype.ngOnDestroy = function () { this.formDirective.removeControlGroup(this); };\r\n Object.defineProperty(NgControlGroup.prototype, \"control\", {\r\n /**\r\n * Get the {@link ControlGroup} backing this binding.\r\n */\r\n get: function () { return this.formDirective.getControlGroup(this); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlGroup.prototype, \"path\", {\r\n /**\r\n * Get the path to this control group.\r\n */\r\n get: function () { return shared_1.controlPath(this.name, this._parent); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlGroup.prototype, \"formDirective\", {\r\n /**\r\n * Get the {@link Form} to which this group belongs.\r\n */\r\n get: function () { return this._parent.formDirective; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlGroup.prototype, \"validator\", {\r\n get: function () { return shared_1.composeValidators(this._validators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlGroup.prototype, \"asyncValidator\", {\r\n get: function () { return shared_1.composeAsyncValidators(this._asyncValidators); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgControlGroup = __decorate([\r\n core_1.Directive({\r\n selector: '[ngControlGroup]',\r\n providers: [controlGroupProvider],\r\n inputs: ['name: ngControlGroup'],\r\n exportAs: 'ngForm'\r\n }),\r\n __param(0, core_1.Host()),\r\n __param(0, core_1.SkipSelf()),\r\n __param(1, core_1.Optional()),\r\n __param(1, core_1.Self()),\r\n __param(1, core_1.Inject(validators_1.NG_VALIDATORS)),\r\n __param(2, core_1.Optional()),\r\n __param(2, core_1.Self()),\r\n __param(2, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)), \r\n __metadata('design:paramtypes', [control_container_1.ControlContainer, Array, Array])\r\n ], NgControlGroup);\r\n return NgControlGroup;\r\n})(control_container_1.ControlContainer);\r\nexports.NgControlGroup = NgControlGroup;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfY29udHJvbF9ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9uZ19jb250cm9sX2dyb3VwLnRzIl0sIm5hbWVzIjpbIk5nQ29udHJvbEdyb3VwIiwiTmdDb250cm9sR3JvdXAuY29uc3RydWN0b3IiLCJOZ0NvbnRyb2xHcm91cC5uZ09uSW5pdCIsIk5nQ29udHJvbEdyb3VwLm5nT25EZXN0cm95IiwiTmdDb250cm9sR3JvdXAuY29udHJvbCIsIk5nQ29udHJvbEdyb3VwLnBhdGgiLCJOZ0NvbnRyb2xHcm91cC5mb3JtRGlyZWN0aXZlIiwiTmdDb250cm9sR3JvdXAudmFsaWRhdG9yIiwiTmdDb250cm9sR3JvdXAuYXN5bmNWYWxpZGF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUJBV08sZUFBZSxDQUFDLENBQUE7QUFDdkIscUJBQXlCLDBCQUEwQixDQUFDLENBQUE7QUFFcEQsa0NBQStCLHFCQUFxQixDQUFDLENBQUE7QUFDckQsdUJBQXFFLFVBQVUsQ0FBQyxDQUFBO0FBR2hGLDJCQUFpRCxlQUFlLENBQUMsQ0FBQTtBQUdqRSxJQUFNLG9CQUFvQixHQUN0QixpQkFBVSxDQUFDLElBQUksZUFBUSxDQUFDLG9DQUFnQixFQUFFLEVBQUMsV0FBVyxFQUFFLGlCQUFVLENBQUMsY0FBTSxPQUFBLGNBQWMsRUFBZCxDQUFjLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztBQUVoRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNHO0FBQ0g7SUFNb0NBLGtDQUFnQkE7SUFLbERBLHdCQUFnQ0EsTUFBd0JBLEVBQ09BLFdBQWtCQSxFQUNaQSxnQkFBdUJBO1FBQzFGQyxpQkFBT0EsQ0FBQ0E7UUFGcURBLGdCQUFXQSxHQUFYQSxXQUFXQSxDQUFPQTtRQUNaQSxxQkFBZ0JBLEdBQWhCQSxnQkFBZ0JBLENBQU9BO1FBRTFGQSxJQUFJQSxDQUFDQSxPQUFPQSxHQUFHQSxNQUFNQSxDQUFDQTtJQUN4QkEsQ0FBQ0E7SUFFREQsaUNBQVFBLEdBQVJBLGNBQW1CRSxJQUFJQSxDQUFDQSxhQUFhQSxDQUFDQSxlQUFlQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUU5REYsb0NBQVdBLEdBQVhBLGNBQXNCRyxJQUFJQSxDQUFDQSxhQUFhQSxDQUFDQSxrQkFBa0JBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBS3BFSCxzQkFBSUEsbUNBQU9BO1FBSFhBOztXQUVHQTthQUNIQSxjQUE4QkksTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsYUFBYUEsQ0FBQ0EsZUFBZUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBSjtJQUtoRkEsc0JBQUlBLGdDQUFJQTtRQUhSQTs7V0FFR0E7YUFDSEEsY0FBdUJLLE1BQU1BLENBQUNBLG9CQUFXQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxFQUFFQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFMO0lBS3JFQSxzQkFBSUEseUNBQWFBO1FBSGpCQTs7V0FFR0E7YUFDSEEsY0FBNEJNLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLGFBQWFBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQU47SUFFaEVBLHNCQUFJQSxxQ0FBU0E7YUFBYkEsY0FBK0JPLE1BQU1BLENBQUNBLDBCQUFpQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBUDtJQUU1RUEsc0JBQUlBLDBDQUFjQTthQUFsQkEsY0FBeUNRLE1BQU1BLENBQUNBLCtCQUFzQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFSO0lBdkNsR0E7UUFBQ0EsZ0JBQVNBLENBQUNBO1lBQ1RBLFFBQVFBLEVBQUVBLGtCQUFrQkE7WUFDNUJBLFNBQVNBLEVBQUVBLENBQUNBLG9CQUFvQkEsQ0FBQ0E7WUFDakNBLE1BQU1BLEVBQUVBLENBQUNBLHNCQUFzQkEsQ0FBQ0E7WUFDaENBLFFBQVFBLEVBQUVBLFFBQVFBO1NBQ25CQSxDQUFDQTtRQU1ZQSxXQUFDQSxXQUFJQSxFQUFFQSxDQUFBQTtRQUFDQSxXQUFDQSxlQUFRQSxFQUFFQSxDQUFBQTtRQUNuQkEsV0FBQ0EsZUFBUUEsRUFBRUEsQ0FBQUE7UUFBQ0EsV0FBQ0EsV0FBSUEsRUFBRUEsQ0FBQUE7UUFBQ0EsV0FBQ0EsYUFBTUEsQ0FBQ0EsMEJBQWFBLENBQUNBLENBQUFBO1FBQzFDQSxXQUFDQSxlQUFRQSxFQUFFQSxDQUFBQTtRQUFDQSxXQUFDQSxXQUFJQSxFQUFFQSxDQUFBQTtRQUFDQSxXQUFDQSxhQUFNQSxDQUFDQSxnQ0FBbUJBLENBQUNBLENBQUFBOzt1QkEyQjdEQTtJQUFEQSxxQkFBQ0E7QUFBREEsQ0FBQ0EsQUF4Q0QsRUFNb0Msb0NBQWdCLEVBa0NuRDtBQWxDWSxzQkFBYyxpQkFrQzFCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgRGlyZWN0aXZlLFxuICBPcHRpb25hbCxcbiAgSW5qZWN0LFxuICBIb3N0LFxuICBTa2lwU2VsZixcbiAgZm9yd2FyZFJlZixcbiAgUHJvdmlkZXIsXG4gIFNlbGZcbn0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge0NPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbmltcG9ydCB7Q29udHJvbENvbnRhaW5lcn0gZnJvbSAnLi9jb250cm9sX2NvbnRhaW5lcic7XG5pbXBvcnQge2NvbnRyb2xQYXRoLCBjb21wb3NlVmFsaWRhdG9ycywgY29tcG9zZUFzeW5jVmFsaWRhdG9yc30gZnJvbSAnLi9zaGFyZWQnO1xuaW1wb3J0IHtDb250cm9sR3JvdXB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7Rm9ybX0gZnJvbSAnLi9mb3JtX2ludGVyZmFjZSc7XG5pbXBvcnQge05HX1ZBTElEQVRPUlMsIE5HX0FTWU5DX1ZBTElEQVRPUlN9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0b3JGbn0gZnJvbSAnLi92YWxpZGF0b3JzJztcblxuY29uc3QgY29udHJvbEdyb3VwUHJvdmlkZXIgPVxuICAgIENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKENvbnRyb2xDb250YWluZXIsIHt1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ0NvbnRyb2xHcm91cCl9KSk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgYmluZHMgYSBjb250cm9sIGdyb3VwIHRvIGEgRE9NIGVsZW1lbnQuXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgY2FuIG9ubHkgYmUgdXNlZCBhcyBhIGNoaWxkIG9mIHtAbGluayBOZ0Zvcm19IG9yIHtAbGluayBOZ0Zvcm1Nb2RlbH0uXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0LzdFSjExdUdlYWdnVmlZTTZUNW5xP3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnbXktYXBwJyxcbiAqICAgZGlyZWN0aXZlczogW0ZPUk1fRElSRUNUSVZFU10sXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGRpdj5cbiAqICAgICAgIDxoMj5Bbmd1bGFyMiBDb250cm9sICZhbXA7IENvbnRyb2xHcm91cCBFeGFtcGxlPC9oMj5cbiAqICAgICAgIDxmb3JtICNmPVwibmdGb3JtXCI+XG4gKiAgICAgICAgIDxkaXYgbmdDb250cm9sR3JvdXA9XCJuYW1lXCIgI2NnLW5hbWU9XCJmb3JtXCI+XG4gKiAgICAgICAgICAgPGgzPkVudGVyIHlvdXIgbmFtZTo8L2gzPlxuICogICAgICAgICAgIDxwPkZpcnN0OiA8aW5wdXQgbmdDb250cm9sPVwiZmlyc3RcIiByZXF1aXJlZD48L3A+XG4gKiAgICAgICAgICAgPHA+TWlkZGxlOiA8aW5wdXQgbmdDb250cm9sPVwibWlkZGxlXCI+PC9wPlxuICogICAgICAgICAgIDxwPkxhc3Q6IDxpbnB1dCBuZ0NvbnRyb2w9XCJsYXN0XCIgcmVxdWlyZWQ+PC9wPlxuICogICAgICAgICA8L2Rpdj5cbiAqICAgICAgICAgPGgzPk5hbWUgdmFsdWU6PC9oMz5cbiAqICAgICAgICAgPHByZT57e3ZhbHVlT2YoY2dOYW1lKX19PC9wcmU+XG4gKiAgICAgICAgIDxwPk5hbWUgaXMge3tjZ05hbWU/LmNvbnRyb2w/LnZhbGlkID8gXCJ2YWxpZFwiIDogXCJpbnZhbGlkXCJ9fTwvcD5cbiAqICAgICAgICAgPGgzPldoYXQncyB5b3VyIGZhdm9yaXRlIGZvb2Q/PC9oMz5cbiAqICAgICAgICAgPHA+PGlucHV0IG5nQ29udHJvbD1cImZvb2RcIj48L3A+XG4gKiAgICAgICAgIDxoMz5Gb3JtIHZhbHVlPC9oMz5cbiAqICAgICAgICAgPHByZT57e3ZhbHVlT2YoZil9fTwvcHJlPlxuICogICAgICAgPC9mb3JtPlxuICogICAgIDwvZGl2PlxuICogICBgLFxuICogICBkaXJlY3RpdmVzOiBbRk9STV9ESVJFQ1RJVkVTXVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBBcHAge1xuICogICB2YWx1ZU9mKGNnOiBOZ0NvbnRyb2xHcm91cCk6IHN0cmluZyB7XG4gKiAgICAgaWYgKGNnLmNvbnRyb2wgPT0gbnVsbCkge1xuICogICAgICAgcmV0dXJuIG51bGw7XG4gKiAgICAgfVxuICogICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShjZy5jb250cm9sLnZhbHVlLCBudWxsLCAyKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhpcyBleGFtcGxlIGRlY2xhcmVzIGEgY29udHJvbCBncm91cCBmb3IgYSB1c2VyJ3MgbmFtZS4gVGhlIHZhbHVlIGFuZCB2YWxpZGF0aW9uIHN0YXRlIG9mXG4gKiB0aGlzIGdyb3VwIGNhbiBiZSBhY2Nlc3NlZCBzZXBhcmF0ZWx5IGZyb20gdGhlIG92ZXJhbGwgZm9ybS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nQ29udHJvbEdyb3VwXScsXG4gIHByb3ZpZGVyczogW2NvbnRyb2xHcm91cFByb3ZpZGVyXSxcbiAgaW5wdXRzOiBbJ25hbWU6IG5nQ29udHJvbEdyb3VwJ10sXG4gIGV4cG9ydEFzOiAnbmdGb3JtJ1xufSlcbmV4cG9ydCBjbGFzcyBOZ0NvbnRyb2xHcm91cCBleHRlbmRzIENvbnRyb2xDb250YWluZXIgaW1wbGVtZW50cyBPbkluaXQsXG4gICAgT25EZXN0cm95IHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcGFyZW50OiBDb250cm9sQ29udGFpbmVyO1xuXG4gIGNvbnN0cnVjdG9yKEBIb3N0KCkgQFNraXBTZWxmKCkgcGFyZW50OiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgcHJpdmF0ZSBfdmFsaWRhdG9yczogYW55W10sXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChOR19BU1lOQ19WQUxJREFUT1JTKSBwcml2YXRlIF9hc3luY1ZhbGlkYXRvcnM6IGFueVtdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9wYXJlbnQgPSBwYXJlbnQ7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHsgdGhpcy5mb3JtRGlyZWN0aXZlLmFkZENvbnRyb2xHcm91cCh0aGlzKTsgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQgeyB0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlQ29udHJvbEdyb3VwKHRoaXMpOyB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUge0BsaW5rIENvbnRyb2xHcm91cH0gYmFja2luZyB0aGlzIGJpbmRpbmcuXG4gICAqL1xuICBnZXQgY29udHJvbCgpOiBDb250cm9sR3JvdXAgeyByZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLmdldENvbnRyb2xHcm91cCh0aGlzKTsgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHBhdGggdG8gdGhpcyBjb250cm9sIGdyb3VwLlxuICAgKi9cbiAgZ2V0IHBhdGgoKTogc3RyaW5nW10geyByZXR1cm4gY29udHJvbFBhdGgodGhpcy5uYW1lLCB0aGlzLl9wYXJlbnQpOyB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUge0BsaW5rIEZvcm19IHRvIHdoaWNoIHRoaXMgZ3JvdXAgYmVsb25ncy5cbiAgICovXG4gIGdldCBmb3JtRGlyZWN0aXZlKCk6IEZvcm0geyByZXR1cm4gdGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU7IH1cblxuICBnZXQgdmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHsgcmV0dXJuIGNvbXBvc2VWYWxpZGF0b3JzKHRoaXMuX3ZhbGlkYXRvcnMpOyB9XG5cbiAgZ2V0IGFzeW5jVmFsaWRhdG9yKCk6IEFzeW5jVmFsaWRhdG9yRm4geyByZXR1cm4gY29tcG9zZUFzeW5jVmFsaWRhdG9ycyh0aGlzLl9hc3luY1ZhbGlkYXRvcnMpOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar core_1 = require('angular2/core');\r\nvar control_container_1 = require('./control_container');\r\nvar shared_1 = require('./shared');\r\nvar validators_1 = require('../validators');\r\nvar formDirectiveProvider = lang_1.CONST_EXPR(new core_1.Provider(control_container_1.ControlContainer, { useExisting: core_1.forwardRef(function () { return NgFormModel; }) }));\r\n/**\r\n * Binds an existing control group to a DOM element.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/jqrVirudY8anJxTMUjTP?p=preview))\r\n *\r\n * In this example, we bind the control group to the form element, and we bind the login and\r\n * password controls to the login and password elements.\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'my-app',\r\n * template: `\r\n * <div>\r\n * <h2>NgFormModel Example</h2>\r\n * <form [ngFormModel]=\"loginForm\">\r\n * <p>Login: <input type=\"text\" ngControl=\"login\"></p>\r\n * <p>Password: <input type=\"password\" ngControl=\"password\"></p>\r\n * </form>\r\n * <p>Value:</p>\r\n * <pre>{{value}}</pre>\r\n * </div>\r\n * `,\r\n * directives: [FORM_DIRECTIVES]\r\n * })\r\n * export class App {\r\n * loginForm: ControlGroup;\r\n *\r\n * constructor() {\r\n * this.loginForm = new ControlGroup({\r\n * login: new Control(\"\"),\r\n * password: new Control(\"\")\r\n * });\r\n * }\r\n *\r\n * get value(): string {\r\n * return JSON.stringify(this.loginForm.value, null, 2);\r\n * }\r\n * }\r\n * ```\r\n *\r\n * We can also use ngModel to bind a domain model to the form.\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: \"login-comp\",\r\n * directives: [FORM_DIRECTIVES],\r\n * template: `\r\n * <form [ngFormModel]='loginForm'>\r\n * Login <input type='text' ngControl='login' [(ngModel)]='credentials.login'>\r\n * Password <input type='password' ngControl='password'\r\n * [(ngModel)]='credentials.password'>\r\n * <button (click)=\"onLogin()\">Login</button>\r\n * </form>`\r\n * })\r\n * class LoginComp {\r\n * credentials: {login: string, password: string};\r\n * loginForm: ControlGroup;\r\n *\r\n * constructor() {\r\n * this.loginForm = new ControlGroup({\r\n * login: new Control(\"\"),\r\n * password: new Control(\"\")\r\n * });\r\n * }\r\n *\r\n * onLogin(): void {\r\n * // this.credentials.login === 'some login'\r\n * // this.credentials.password === 'some password'\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar NgFormModel = (function (_super) {\r\n __extends(NgFormModel, _super);\r\n function NgFormModel(_validators, _asyncValidators) {\r\n _super.call(this);\r\n this._validators = _validators;\r\n this._asyncValidators = _asyncValidators;\r\n this.form = null;\r\n this.directives = [];\r\n this.ngSubmit = new async_1.EventEmitter();\r\n }\r\n NgFormModel.prototype.ngOnChanges = function (changes) {\r\n if (collection_1.StringMapWrapper.contains(changes, \"form\")) {\r\n var sync = shared_1.composeValidators(this._validators);\r\n this.form.validator = validators_1.Validators.compose([this.form.validator, sync]);\r\n var async = shared_1.composeAsyncValidators(this._asyncValidators);\r\n this.form.asyncValidator = validators_1.Validators.composeAsync([this.form.asyncValidator, async]);\r\n this.form.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n }\r\n this._updateDomValue();\r\n };\r\n Object.defineProperty(NgFormModel.prototype, \"formDirective\", {\r\n get: function () { return this; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFormModel.prototype, \"control\", {\r\n get: function () { return this.form; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFormModel.prototype, \"path\", {\r\n get: function () { return []; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgFormModel.prototype.addControl = function (dir) {\r\n var ctrl = this.form.find(dir.path);\r\n shared_1.setUpControl(ctrl, dir);\r\n ctrl.updateValueAndValidity({ emitEvent: false });\r\n this.directives.push(dir);\r\n };\r\n NgFormModel.prototype.getControl = function (dir) { return this.form.find(dir.path); };\r\n NgFormModel.prototype.removeControl = function (dir) { collection_1.ListWrapper.remove(this.directives, dir); };\r\n NgFormModel.prototype.addControlGroup = function (dir) {\r\n var ctrl = this.form.find(dir.path);\r\n shared_1.setUpControlGroup(ctrl, dir);\r\n ctrl.updateValueAndValidity({ emitEvent: false });\r\n };\r\n NgFormModel.prototype.removeControlGroup = function (dir) { };\r\n NgFormModel.prototype.getControlGroup = function (dir) {\r\n return this.form.find(dir.path);\r\n };\r\n NgFormModel.prototype.updateModel = function (dir, value) {\r\n var ctrl = this.form.find(dir.path);\r\n ctrl.updateValue(value);\r\n };\r\n NgFormModel.prototype.onSubmit = function () {\r\n async_1.ObservableWrapper.callEmit(this.ngSubmit, null);\r\n return false;\r\n };\r\n /** @internal */\r\n NgFormModel.prototype._updateDomValue = function () {\r\n var _this = this;\r\n this.directives.forEach(function (dir) {\r\n var ctrl = _this.form.find(dir.path);\r\n dir.valueAccessor.writeValue(ctrl.value);\r\n });\r\n };\r\n NgFormModel = __decorate([\r\n core_1.Directive({\r\n selector: '[ngFormModel]',\r\n bindings: [formDirectiveProvider],\r\n inputs: ['form: ngFormModel'],\r\n host: { '(submit)': 'onSubmit()' },\r\n outputs: ['ngSubmit'],\r\n exportAs: 'ngForm'\r\n }),\r\n __param(0, core_1.Optional()),\r\n __param(0, core_1.Self()),\r\n __param(0, core_1.Inject(validators_1.NG_VALIDATORS)),\r\n __param(1, core_1.Optional()),\r\n __param(1, core_1.Self()),\r\n __param(1, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)), \r\n __metadata('design:paramtypes', [Array, Array])\r\n ], NgFormModel);\r\n return NgFormModel;\r\n})(control_container_1.ControlContainer);\r\nexports.NgFormModel = NgFormModel;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfZm9ybV9tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9uZ19mb3JtX21vZGVsLnRzIl0sIm5hbWVzIjpbIk5nRm9ybU1vZGVsIiwiTmdGb3JtTW9kZWwuY29uc3RydWN0b3IiLCJOZ0Zvcm1Nb2RlbC5uZ09uQ2hhbmdlcyIsIk5nRm9ybU1vZGVsLmZvcm1EaXJlY3RpdmUiLCJOZ0Zvcm1Nb2RlbC5jb250cm9sIiwiTmdGb3JtTW9kZWwucGF0aCIsIk5nRm9ybU1vZGVsLmFkZENvbnRyb2wiLCJOZ0Zvcm1Nb2RlbC5nZXRDb250cm9sIiwiTmdGb3JtTW9kZWwucmVtb3ZlQ29udHJvbCIsIk5nRm9ybU1vZGVsLmFkZENvbnRyb2xHcm91cCIsIk5nRm9ybU1vZGVsLnJlbW92ZUNvbnRyb2xHcm91cCIsIk5nRm9ybU1vZGVsLmdldENvbnRyb2xHcm91cCIsIk5nRm9ybU1vZGVsLnVwZGF0ZU1vZGVsIiwiTmdGb3JtTW9kZWwub25TdWJtaXQiLCJOZ0Zvcm1Nb2RlbC5fdXBkYXRlRG9tVmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUJBQXlCLDBCQUEwQixDQUFDLENBQUE7QUFDcEQsMkJBQTRDLGdDQUFnQyxDQUFDLENBQUE7QUFDN0Usc0JBQThDLDJCQUEyQixDQUFDLENBQUE7QUFDMUUscUJBU08sZUFBZSxDQUFDLENBQUE7QUFHdkIsa0NBQStCLHFCQUFxQixDQUFDLENBQUE7QUFHckQsdUJBQXlGLFVBQVUsQ0FBQyxDQUFBO0FBQ3BHLDJCQUE2RCxlQUFlLENBQUMsQ0FBQTtBQUU3RSxJQUFNLHFCQUFxQixHQUN2QixpQkFBVSxDQUFDLElBQUksZUFBUSxDQUFDLG9DQUFnQixFQUFFLEVBQUMsV0FBVyxFQUFFLGlCQUFVLENBQUMsY0FBTSxPQUFBLFdBQVcsRUFBWCxDQUFXLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztBQUU3Rjs7Ozs7Ozs7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Q0EsT0FBT0EsQ0FBQ0EsVUFBQUEsR0FBR0E7WUFDekJBLElBQUlBLElBQUlBLEdBQVFBLEtBQUlBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ3pDQSxHQUFHQSxDQUFDQSxhQUFhQSxDQUFDQSxVQUFVQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQTtRQUMzQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDTEEsQ0FBQ0E7SUE5RUhkO1FBQUNBLGdCQUFTQSxDQUFDQTtZQUNUQSxRQUFRQSxFQUFFQSxlQUFlQTtZQUN6QkEsUUFBUUEsRUFBRUEsQ0FBQ0EscUJBQXFCQSxDQUFDQTtZQUNqQ0EsTUFBTUEsRUFBRUEsQ0FBQ0EsbUJBQW1CQSxDQUFDQTtZQUM3QkEsSUFBSUEsRUFBRUEsRUFBQ0EsVUFBVUEsRUFBRUEsWUFBWUEsRUFBQ0E7WUFDaENBLE9BQU9BLEVBQUVBLENBQUNBLFVBQVVBLENBQUNBO1lBQ3JCQSxRQUFRQSxFQUFFQSxRQUFRQTtTQUNuQkEsQ0FBQ0E7UUFPWUEsV0FBQ0EsZUFBUUEsRUFBRUEsQ0FBQUE7UUFBQ0EsV0FBQ0EsV0FBSUEsRUFBRUEsQ0FBQUE7UUFBQ0EsV0FBQ0EsYUFBTUEsQ0FBQ0EsMEJBQWFBLENBQUNBLENBQUFBO1FBQzFDQSxXQUFDQSxlQUFRQSxFQUFFQSxDQUFBQTtRQUFDQSxXQUFDQSxXQUFJQSxFQUFFQSxDQUFBQTtRQUFDQSxXQUFDQSxhQUFNQSxDQUFDQSxnQ0FBbUJBLENBQUNBLENBQUFBOztvQkFnRTdEQTtJQUFEQSxrQkFBQ0E7QUFBREEsQ0FBQ0EsQUEvRUQsRUFRaUMsb0NBQWdCLEVBdUVoRDtBQXZFWSxtQkFBVyxjQXVFdkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7TGlzdFdyYXBwZXIsIFN0cmluZ01hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge09ic2VydmFibGVXcmFwcGVyLCBFdmVudEVtaXR0ZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYXN5bmMnO1xuaW1wb3J0IHtcbiAgU2ltcGxlQ2hhbmdlLFxuICBPbkNoYW5nZXMsXG4gIERpcmVjdGl2ZSxcbiAgZm9yd2FyZFJlZixcbiAgUHJvdmlkZXIsXG4gIEluamVjdCxcbiAgT3B0aW9uYWwsXG4gIFNlbGZcbn0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnLi9uZ19jb250cm9sJztcbmltcG9ydCB7TmdDb250cm9sR3JvdXB9IGZyb20gJy4vbmdfY29udHJvbF9ncm91cCc7XG5pbXBvcnQge0NvbnRyb2xDb250YWluZXJ9IGZyb20gJy4vY29udHJvbF9jb250YWluZXInO1xuaW1wb3J0IHtGb3JtfSBmcm9tICcuL2Zvcm1faW50ZXJmYWNlJztcbmltcG9ydCB7Q29udHJvbCwgQ29udHJvbEdyb3VwfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQge3NldFVwQ29udHJvbCwgc2V0VXBDb250cm9sR3JvdXAsIGNvbXBvc2VWYWxpZGF0b3JzLCBjb21wb3NlQXN5bmNWYWxpZGF0b3JzfSBmcm9tICcuL3NoYXJlZCc7XG5pbXBvcnQge1ZhbGlkYXRvcnMsIE5HX1ZBTElEQVRPUlMsIE5HX0FTWU5DX1ZBTElEQVRPUlN9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuXG5jb25zdCBmb3JtRGlyZWN0aXZlUHJvdmlkZXIgPVxuICAgIENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKENvbnRyb2xDb250YWluZXIsIHt1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ0Zvcm1Nb2RlbCl9KSk7XG5cbi8qKlxuICogQmluZHMgYW4gZXhpc3RpbmcgY29udHJvbCBncm91cCB0byBhIERPTSBlbGVtZW50LlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9qcXJWaXJ1ZFk4YW5KeFRNVWpUUD9wPXByZXZpZXcpKVxuICpcbiAqIEluIHRoaXMgZXhhbXBsZSwgd2UgYmluZCB0aGUgY29udHJvbCBncm91cCB0byB0aGUgZm9ybSBlbGVtZW50LCBhbmQgd2UgYmluZCB0aGUgbG9naW4gYW5kXG4gKiBwYXNzd29yZCBjb250cm9scyB0byB0aGUgbG9naW4gYW5kIHBhc3N3b3JkIGVsZW1lbnRzLlxuICpcbiAqICBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdteS1hcHAnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxkaXY+XG4gKiAgICAgICA8aDI+TmdGb3JtTW9kZWwgRXhhbXBsZTwvaDI+XG4gKiAgICAgICA8Zm9ybSBbbmdGb3JtTW9kZWxdPVwibG9naW5Gb3JtXCI+XG4gKiAgICAgICAgIDxwPkxvZ2luOiA8aW5wdXQgdHlwZT1cInRleHRcIiBuZ0NvbnRyb2w9XCJsb2dpblwiPjwvcD5cbiAqICAgICAgICAgPHA+UGFzc3dvcmQ6IDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBuZ0NvbnRyb2w9XCJwYXNzd29yZFwiPjwvcD5cbiAqICAgICAgIDwvZm9ybT5cbiAqICAgICAgIDxwPlZhbHVlOjwvcD5cbiAqICAgICAgIDxwcmU+e3t2YWx1ZX19PC9wcmU+XG4gKiAgICAgPC9kaXY+XG4gKiAgIGAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtGT1JNX0RJUkVDVElWRVNdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcCB7XG4gKiAgIGxvZ2luRm9ybTogQ29udHJvbEdyb3VwO1xuICpcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgdGhpcy5sb2dpbkZvcm0gPSBuZXcgQ29udHJvbEdyb3VwKHtcbiAqICAgICAgIGxvZ2luOiBuZXcgQ29udHJvbChcIlwiKSxcbiAqICAgICAgIHBhc3N3b3JkOiBuZXcgQ29udHJvbChcIlwiKVxuICogICAgIH0pO1xuICogICB9XG4gKlxuICogICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAqICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5sb2dpbkZvcm0udmFsdWUsIG51bGwsIDIpO1xuICogICB9XG4gKiB9XG4gKiAgYGBgXG4gKlxuICogV2UgY2FuIGFsc28gdXNlIG5nTW9kZWwgdG8gYmluZCBhIGRvbWFpbiBtb2RlbCB0byB0aGUgZm9ybS5cbiAqXG4gKiAgYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgICAgIHNlbGVjdG9yOiBcImxvZ2luLWNvbXBcIixcbiAqICAgICAgZGlyZWN0aXZlczogW0ZPUk1fRElSRUNUSVZFU10sXG4gKiAgICAgIHRlbXBsYXRlOiBgXG4gKiAgICAgICAgPGZvcm0gW25nRm9ybU1vZGVsXT0nbG9naW5Gb3JtJz5cbiAqICAgICAgICAgIExvZ2luIDxpbnB1dCB0eXBlPSd0ZXh0JyBuZ0NvbnRyb2w9J2xvZ2luJyBbKG5nTW9kZWwpXT0nY3JlZGVudGlhbHMubG9naW4nPlxuICogICAgICAgICAgUGFzc3dvcmQgPGlucHV0IHR5cGU9J3Bhc3N3b3JkJyBuZ0NvbnRyb2w9J3Bhc3N3b3JkJ1xuICogICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPSdjcmVkZW50aWFscy5wYXNzd29yZCc+XG4gKiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvbkxvZ2luKClcIj5Mb2dpbjwvYnV0dG9uPlxuICogICAgICAgIDwvZm9ybT5gXG4gKiAgICAgIH0pXG4gKiBjbGFzcyBMb2dpbkNvbXAge1xuICogIGNyZWRlbnRpYWxzOiB7bG9naW46IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZ307XG4gKiAgbG9naW5Gb3JtOiBDb250cm9sR3JvdXA7XG4gKlxuICogIGNvbnN0cnVjdG9yKCkge1xuICogICAgdGhpcy5sb2dpbkZvcm0gPSBuZXcgQ29udHJvbEdyb3VwKHtcbiAqICAgICAgbG9naW46IG5ldyBDb250cm9sKFwiXCIpLFxuICogICAgICBwYXNzd29yZDogbmV3IENvbnRyb2woXCJcIilcbiAqICAgIH0pO1xuICogIH1cbiAqXG4gKiAgb25Mb2dpbigpOiB2b2lkIHtcbiAqICAgIC8vIHRoaXMuY3JlZGVudGlhbHMubG9naW4gPT09ICdzb21lIGxvZ2luJ1xuICogICAgLy8gdGhpcy5jcmVkZW50aWFscy5wYXNzd29yZCA9PT0gJ3NvbWUgcGFzc3dvcmQnXG4gKiAgfVxuICogfVxuICogIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdGb3JtTW9kZWxdJyxcbiAgYmluZGluZ3M6IFtmb3JtRGlyZWN0aXZlUHJvdmlkZXJdLFxuICBpbnB1dHM6IFsnZm9ybTogbmdGb3JtTW9kZWwnXSxcbiAgaG9zdDogeycoc3VibWl0KSc6ICdvblN1Ym1pdCgpJ30sXG4gIG91dHB1dHM6IFsnbmdTdWJtaXQnXSxcbiAgZXhwb3J0QXM6ICduZ0Zvcm0nXG59KVxuZXhwb3J0IGNsYXNzIE5nRm9ybU1vZGVsIGV4dGVuZHMgQ29udHJvbENvbnRhaW5lciBpbXBsZW1lbnRzIEZvcm0sXG4gICAgT25DaGFuZ2VzIHtcbiAgZm9ybTogQ29udHJvbEdyb3VwID0gbnVsbDtcbiAgZGlyZWN0aXZlczogTmdDb250cm9sW10gPSBbXTtcbiAgbmdTdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHByaXZhdGUgX3ZhbGlkYXRvcnM6IGFueVtdLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfQVNZTkNfVkFMSURBVE9SUykgcHJpdmF0ZSBfYXN5bmNWYWxpZGF0b3JzOiBhbnlbXSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7W2tleTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlfSk6IHZvaWQge1xuICAgIGlmIChTdHJpbmdNYXBXcmFwcGVyLmNvbnRhaW5zKGNoYW5nZXMsIFwiZm9ybVwiKSkge1xuICAgICAgdmFyIHN5bmMgPSBjb21wb3NlVmFsaWRhdG9ycyh0aGlzLl92YWxpZGF0b3JzKTtcbiAgICAgIHRoaXMuZm9ybS52YWxpZGF0b3IgPSBWYWxpZGF0b3JzLmNvbXBvc2UoW3RoaXMuZm9ybS52YWxpZGF0b3IsIHN5bmNdKTtcblxuICAgICAgdmFyIGFzeW5jID0gY29tcG9zZUFzeW5jVmFsaWRhdG9ycyh0aGlzLl9hc3luY1ZhbGlkYXRvcnMpO1xuICAgICAgdGhpcy5mb3JtLmFzeW5jVmFsaWRhdG9yID0gVmFsaWRhdG9ycy5jb21wb3NlQXN5bmMoW3RoaXMuZm9ybS5hc3luY1ZhbGlkYXRvciwgYXN5bmNdKTtcblxuICAgICAgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlRG9tVmFsdWUoKTtcbiAgfVxuXG4gIGdldCBmb3JtRGlyZWN0aXZlKCk6IEZvcm0geyByZXR1cm4gdGhpczsgfVxuXG4gIGdldCBjb250cm9sKCk6IENvbnRyb2xHcm91cCB7IHJldHVybiB0aGlzLmZvcm07IH1cblxuICBnZXQgcGF0aCgpOiBzdHJpbmdbXSB7IHJldHVybiBbXTsgfVxuXG4gIGFkZENvbnRyb2woZGlyOiBOZ0NvbnRyb2wpOiB2b2lkIHtcbiAgICB2YXIgY3RybDogYW55ID0gdGhpcy5mb3JtLmZpbmQoZGlyLnBhdGgpO1xuICAgIHNldFVwQ29udHJvbChjdHJsLCBkaXIpO1xuICAgIGN0cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIHRoaXMuZGlyZWN0aXZlcy5wdXNoKGRpcik7XG4gIH1cblxuICBnZXRDb250cm9sKGRpcjogTmdDb250cm9sKTogQ29udHJvbCB7IHJldHVybiA8Q29udHJvbD50aGlzLmZvcm0uZmluZChkaXIucGF0aCk7IH1cblxuICByZW1vdmVDb250cm9sKGRpcjogTmdDb250cm9sKTogdm9pZCB7IExpc3RXcmFwcGVyLnJlbW92ZSh0aGlzLmRpcmVjdGl2ZXMsIGRpcik7IH1cblxuICBhZGRDb250cm9sR3JvdXAoZGlyOiBOZ0NvbnRyb2xHcm91cCkge1xuICAgIHZhciBjdHJsOiBhbnkgPSB0aGlzLmZvcm0uZmluZChkaXIucGF0aCk7XG4gICAgc2V0VXBDb250cm9sR3JvdXAoY3RybCwgZGlyKTtcbiAgICBjdHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgfVxuXG4gIHJlbW92ZUNvbnRyb2xHcm91cChkaXI6IE5nQ29udHJvbEdyb3VwKSB7fVxuXG4gIGdldENvbnRyb2xHcm91cChkaXI6IE5nQ29udHJvbEdyb3VwKTogQ29udHJvbEdyb3VwIHtcbiAgICByZXR1cm4gPENvbnRyb2xHcm91cD50aGlzLmZvcm0uZmluZChkaXIucGF0aCk7XG4gIH1cblxuICB1cGRhdGVNb2RlbChkaXI6IE5nQ29udHJvbCwgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHZhciBjdHJswqAgPSA8Q29udHJvbD50aGlzLmZvcm0uZmluZChkaXIucGF0aCk7XG4gICAgY3RybC51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBvblN1Ym1pdCgpOiBib29sZWFuIHtcbiAgICBPYnNlcnZhYmxlV3JhcHBlci5jYWxsRW1pdCh0aGlzLm5nU3VibWl0LCBudWxsKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF91cGRhdGVEb21WYWx1ZSgpIHtcbiAgICB0aGlzLmRpcmVjdGl2ZXMuZm9yRWFjaChkaXIgPT4ge1xuICAgICAgdmFyIGN0cmw6IGFueSA9IHRoaXMuZm9ybS5maW5kKGRpci5wYXRoKTtcbiAgICAgIGRpci52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUoY3RybC52YWx1ZSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar abstract_control_directive_1 = require('./abstract_control_directive');\r\n/**\r\n * A directive that contains multiple {@link NgControl}s.\r\n *\r\n * Only used by the forms module.\r\n */\r\nvar ControlContainer = (function (_super) {\r\n __extends(ControlContainer, _super);\r\n function ControlContainer() {\r\n _super.apply(this, arguments);\r\n }\r\n Object.defineProperty(ControlContainer.prototype, \"formDirective\", {\r\n /**\r\n * Get the form to which this container belongs.\r\n */\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ControlContainer.prototype, \"path\", {\r\n /**\r\n * Get the path to this container.\r\n */\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ControlContainer;\r\n})(abstract_control_directive_1.AbstractControlDirective);\r\nexports.ControlContainer = ControlContainer;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbF9jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL2RpcmVjdGl2ZXMvY29udHJvbF9jb250YWluZXIudHMiXSwibmFtZXMiOlsiQ29udHJvbENvbnRhaW5lciIsIkNvbnRyb2xDb250YWluZXIuY29uc3RydWN0b3IiLCJDb250cm9sQ29udGFpbmVyLmZvcm1EaXJlY3RpdmUiLCJDb250cm9sQ29udGFpbmVyLnBhdGgiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsMkNBQXVDLDhCQUE4QixDQUFDLENBQUE7QUFFdEU7Ozs7R0FJRztBQUNIO0lBQXNDQSxvQ0FBd0JBO0lBQTlEQTtRQUFzQ0MsOEJBQXdCQTtJQVk5REEsQ0FBQ0E7SUFOQ0Qsc0JBQUlBLDJDQUFhQTtRQUhqQkE7O1dBRUdBO2FBQ0hBLGNBQTRCRSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFGO0lBSzFDQSxzQkFBSUEsa0NBQUlBO1FBSFJBOztXQUVHQTthQUNIQSxjQUF1QkcsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBSDtJQUN2Q0EsdUJBQUNBO0FBQURBLENBQUNBLEFBWkQsRUFBc0MscURBQXdCLEVBWTdEO0FBWlksd0JBQWdCLG1CQVk1QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGb3JtfSBmcm9tICcuL2Zvcm1faW50ZXJmYWNlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sRGlyZWN0aXZlfSBmcm9tICcuL2Fic3RyYWN0X2NvbnRyb2xfZGlyZWN0aXZlJztcblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IGNvbnRhaW5zIG11bHRpcGxlIHtAbGluayBOZ0NvbnRyb2x9cy5cbiAqXG4gKiBPbmx5IHVzZWQgYnkgdGhlIGZvcm1zIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRyb2xDb250YWluZXIgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUge1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZm9ybSB0byB3aGljaCB0aGlzIGNvbnRhaW5lciBiZWxvbmdzLlxuICAgKi9cbiAgZ2V0IGZvcm1EaXJlY3RpdmUoKTogRm9ybSB7IHJldHVybiBudWxsOyB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcGF0aCB0byB0aGlzIGNvbnRhaW5lci5cbiAgICovXG4gIGdldCBwYXRoKCk6IHN0cmluZ1tdIHsgcmV0dXJuIG51bGw7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';function normalizeValidator(validator) {\r\n if (validator.validate !== undefined) {\r\n return function (c) { return validator.validate(c); };\r\n }\r\n else {\r\n return validator;\r\n }\r\n}\r\nexports.normalizeValidator = normalizeValidator;\r\nfunction normalizeAsyncValidator(validator) {\r\n if (validator.validate !== undefined) {\r\n return function (c) { return Promise.resolve(validator.validate(c)); };\r\n }\r\n else {\r\n return validator;\r\n }\r\n}\r\nexports.normalizeAsyncValidator = normalizeAsyncValidator;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplX3ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9ub3JtYWxpemVfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbIm5vcm1hbGl6ZVZhbGlkYXRvciIsIm5vcm1hbGl6ZUFzeW5jVmFsaWRhdG9yIl0sIm1hcHBpbmdzIjoiQUFHQSw0QkFBbUMsU0FBa0M7SUFDbkVBLEVBQUVBLENBQUNBLENBQWFBLFNBQVVBLENBQUNBLFFBQVFBLEtBQUtBLFNBQVNBLENBQUNBLENBQUNBLENBQUNBO1FBQ2xEQSxNQUFNQSxDQUFDQSxVQUFDQSxDQUFrQkEsSUFBS0EsT0FBWUEsU0FBVUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsRUFBbENBLENBQWtDQSxDQUFDQTtJQUNwRUEsQ0FBQ0E7SUFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDTkEsTUFBTUEsQ0FBY0EsU0FBU0EsQ0FBQ0E7SUFDaENBLENBQUNBO0FBQ0hBLENBQUNBO0FBTmUsMEJBQWtCLHFCQU1qQyxDQUFBO0FBRUQsaUNBQXdDLFNBQXVDO0lBQzdFQyxFQUFFQSxDQUFDQSxDQUFhQSxTQUFVQSxDQUFDQSxRQUFRQSxLQUFLQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNsREEsTUFBTUEsQ0FBQ0EsVUFBQ0EsQ0FBa0JBLElBQUtBLE9BQUFBLE9BQU9BLENBQUNBLE9BQU9BLENBQWFBLFNBQVVBLENBQUNBLFFBQVFBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLEVBQW5EQSxDQUFtREEsQ0FBQ0E7SUFDckZBLENBQUNBO0lBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ05BLE1BQU1BLENBQW1CQSxTQUFTQSxDQUFDQTtJQUNyQ0EsQ0FBQ0E7QUFDSEEsQ0FBQ0E7QUFOZSwrQkFBdUIsMEJBTXRDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbH0gZnJvbSBcIi4uL21vZGVsXCI7XG5pbXBvcnQge1ZhbGlkYXRvciwgVmFsaWRhdG9yRm4sIEFzeW5jVmFsaWRhdG9yRm59IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVWYWxpZGF0b3IodmFsaWRhdG9yOiBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvcik6IFZhbGlkYXRvckZuIHtcbiAgaWYgKCg8VmFsaWRhdG9yPnZhbGlkYXRvcikudmFsaWRhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAoYzogQWJzdHJhY3RDb250cm9sKSA9PiAoPFZhbGlkYXRvcj52YWxpZGF0b3IpLnZhbGlkYXRlKGMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiA8VmFsaWRhdG9yRm4+dmFsaWRhdG9yO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVBc3luY1ZhbGlkYXRvcih2YWxpZGF0b3I6IEFzeW5jVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3IpOiBBc3luY1ZhbGlkYXRvckZuIHtcbiAgaWYgKCg8VmFsaWRhdG9yPnZhbGlkYXRvcikudmFsaWRhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAoYzogQWJzdHJhY3RDb250cm9sKSA9PiBQcm9taXNlLnJlc29sdmUoKDxWYWxpZGF0b3I+dmFsaWRhdG9yKS52YWxpZGF0ZShjKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDxBc3luY1ZhbGlkYXRvckZuPnZhbGlkYXRvcjtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar validators_1 = require('../validators');\r\nvar default_value_accessor_1 = require('./default_value_accessor');\r\nvar number_value_accessor_1 = require('./number_value_accessor');\r\nvar checkbox_value_accessor_1 = require('./checkbox_value_accessor');\r\nvar select_control_value_accessor_1 = require('./select_control_value_accessor');\r\nvar radio_control_value_accessor_1 = require('./radio_control_value_accessor');\r\nvar normalize_validator_1 = require('./normalize_validator');\r\nfunction controlPath(name, parent) {\r\n var p = collection_1.ListWrapper.clone(parent.path);\r\n p.push(name);\r\n return p;\r\n}\r\nexports.controlPath = controlPath;\r\nfunction setUpControl(control, dir) {\r\n if (lang_1.isBlank(control))\r\n _throwError(dir, \"Cannot find control\");\r\n if (lang_1.isBlank(dir.valueAccessor))\r\n _throwError(dir, \"No value accessor for\");\r\n control.validator = validators_1.Validators.compose([control.validator, dir.validator]);\r\n control.asyncValidator = validators_1.Validators.composeAsync([control.asyncValidator, dir.asyncValidator]);\r\n dir.valueAccessor.writeValue(control.value);\r\n // view -> model\r\n dir.valueAccessor.registerOnChange(function (newValue) {\r\n dir.viewToModelUpdate(newValue);\r\n control.updateValue(newValue, { emitModelToViewChange: false });\r\n control.markAsDirty();\r\n });\r\n // model -> view\r\n control.registerOnChange(function (newValue) { return dir.valueAccessor.writeValue(newValue); });\r\n // touched\r\n dir.valueAccessor.registerOnTouched(function () { return control.markAsTouched(); });\r\n}\r\nexports.setUpControl = setUpControl;\r\nfunction setUpControlGroup(control, dir) {\r\n if (lang_1.isBlank(control))\r\n _throwError(dir, \"Cannot find control\");\r\n control.validator = validators_1.Validators.compose([control.validator, dir.validator]);\r\n control.asyncValidator = validators_1.Validators.composeAsync([control.asyncValidator, dir.asyncValidator]);\r\n}\r\nexports.setUpControlGroup = setUpControlGroup;\r\nfunction _throwError(dir, message) {\r\n var path = dir.path.join(\" -> \");\r\n throw new exceptions_1.BaseException(message + \" '\" + path + \"'\");\r\n}\r\nfunction composeValidators(validators) {\r\n return lang_1.isPresent(validators) ? validators_1.Validators.compose(validators.map(normalize_validator_1.normalizeValidator)) : null;\r\n}\r\nexports.composeValidators = composeValidators;\r\nfunction composeAsyncValidators(validators) {\r\n return lang_1.isPresent(validators) ? validators_1.Validators.composeAsync(validators.map(normalize_validator_1.normalizeAsyncValidator)) :\r\n null;\r\n}\r\nexports.composeAsyncValidators = composeAsyncValidators;\r\nfunction isPropertyUpdated(changes, viewModel) {\r\n if (!collection_1.StringMapWrapper.contains(changes, \"model\"))\r\n return false;\r\n var change = changes[\"model\"];\r\n if (change.isFirstChange())\r\n return true;\r\n return !lang_1.looseIdentical(viewModel, change.currentValue);\r\n}\r\nexports.isPropertyUpdated = isPropertyUpdated;\r\n// TODO: vsavkin remove it once https://github.com/angular/angular/issues/3011 is implemented\r\nfunction selectValueAccessor(dir, valueAccessors) {\r\n if (lang_1.isBlank(valueAccessors))\r\n return null;\r\n var defaultAccessor;\r\n var builtinAccessor;\r\n var customAccessor;\r\n valueAccessors.forEach(function (v) {\r\n if (lang_1.hasConstructor(v, default_value_accessor_1.DefaultValueAccessor)) {\r\n defaultAccessor = v;\r\n }\r\n else if (lang_1.hasConstructor(v, checkbox_value_accessor_1.CheckboxControlValueAccessor) ||\r\n lang_1.hasConstructor(v, number_value_accessor_1.NumberValueAccessor) ||\r\n lang_1.hasConstructor(v, select_control_value_accessor_1.SelectControlValueAccessor) ||\r\n lang_1.hasConstructor(v, radio_control_value_accessor_1.RadioControlValueAccessor)) {\r\n if (lang_1.isPresent(builtinAccessor))\r\n _throwError(dir, \"More than one built-in value accessor matches\");\r\n builtinAccessor = v;\r\n }\r\n else {\r\n if (lang_1.isPresent(customAccessor))\r\n _throwError(dir, \"More than one custom value accessor matches\");\r\n customAccessor = v;\r\n }\r\n });\r\n if (lang_1.isPresent(customAccessor))\r\n return customAccessor;\r\n if (lang_1.isPresent(builtinAccessor))\r\n return builtinAccessor;\r\n if (lang_1.isPresent(defaultAccessor))\r\n return defaultAccessor;\r\n _throwError(dir, \"No valid value accessor for\");\r\n return null;\r\n}\r\nexports.selectValueAccessor = selectValueAccessor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbW1vbi9mb3Jtcy9kaXJlY3RpdmVzL3NoYXJlZC50cyJdLCJuYW1lcyI6WyJjb250cm9sUGF0aCIsInNldFVwQ29udHJvbCIsInNldFVwQ29udHJvbEdyb3VwIiwiX3Rocm93RXJyb3IiLCJjb21wb3NlVmFsaWRhdG9ycyIsImNvbXBvc2VBc3luY1ZhbGlkYXRvcnMiLCJpc1Byb3BlcnR5VXBkYXRlZCIsInNlbGVjdFZhbHVlQWNjZXNzb3IiXSwibWFwcGluZ3MiOiJBQUFBLDJCQUE0QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdFLHFCQUFpRSwwQkFBMEIsQ0FBQyxDQUFBO0FBQzVGLDJCQUE4QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBTy9FLDJCQUF5QixlQUFlLENBQUMsQ0FBQTtBQUV6Qyx1Q0FBbUMsMEJBQTBCLENBQUMsQ0FBQTtBQUM5RCxzQ0FBa0MseUJBQXlCLENBQUMsQ0FBQTtBQUM1RCx3Q0FBMkMsMkJBQTJCLENBQUMsQ0FBQTtBQUN2RSw4Q0FBeUMsaUNBQWlDLENBQUMsQ0FBQTtBQUMzRSw2Q0FBd0MsZ0NBQWdDLENBQUMsQ0FBQTtBQUN6RSxvQ0FBMEQsdUJBQXVCLENBQUMsQ0FBQTtBQUlsRixxQkFBNEIsSUFBWSxFQUFFLE1BQXdCO0lBQ2hFQSxJQUFJQSxDQUFDQSxHQUFHQSx3QkFBV0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7SUFDdkNBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO0lBQ2JBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBO0FBQ1hBLENBQUNBO0FBSmUsbUJBQVcsY0FJMUIsQ0FBQTtBQUVELHNCQUE2QixPQUFnQixFQUFFLEdBQWM7SUFDM0RDLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLE9BQU9BLENBQUNBLENBQUNBO1FBQUNBLFdBQVdBLENBQUNB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Q0FBQ0EsQ0FBQ0E7UUFBQ0EsTUFBTUEsQ0FBQ0EsZUFBZUEsQ0FBQ0E7SUFFdkRBLFdBQVdBLENBQUNBLEdBQUdBLEVBQUVBLDZCQUE2QkEsQ0FBQ0EsQ0FBQ0E7SUFDaERBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBO0FBQ2RBLENBQUNBO0FBaENlLDJCQUFtQixzQkFnQ2xDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpc3RXcmFwcGVyLCBTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtpc0JsYW5rLCBpc1ByZXNlbnQsIGxvb3NlSWRlbnRpY2FsLCBoYXNDb25zdHJ1Y3Rvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbiwgV3JhcHBlZEV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcblxuaW1wb3J0IHtDb250cm9sQ29udGFpbmVyfSBmcm9tICcuL2NvbnRyb2xfY29udGFpbmVyJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICcuL25nX2NvbnRyb2wnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmV9IGZyb20gJy4vYWJzdHJhY3RfY29udHJvbF9kaXJlY3RpdmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2xHcm91cH0gZnJvbSAnLi9uZ19jb250cm9sX2dyb3VwJztcbmltcG9ydCB7Q29udHJvbCwgQ29udHJvbEdyb3VwfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQge1ZhbGlkYXRvcnN9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7RGVmYXVsdFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vZGVmYXVsdF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge051bWJlclZhbHVlQWNjZXNzb3J9IGZyb20gJy4vbnVtYmVyX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7Q2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9jaGVja2JveF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge1NlbGVjdENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBmcm9tICcuL3NlbGVjdF9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7UmFkaW9Db250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9yYWRpb19jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7bm9ybWFsaXplVmFsaWRhdG9yLCBub3JtYWxpemVBc3luY1ZhbGlkYXRvcn0gZnJvbSAnLi9ub3JtYWxpemVfdmFsaWRhdG9yJztcbmltcG9ydCB7VmFsaWRhdG9yRm4sIEFzeW5jVmFsaWRhdG9yRm59IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRyb2xQYXRoKG5hbWU6IHN0cmluZywgcGFyZW50OiBDb250cm9sQ29udGFpbmVyKTogc3RyaW5nW10ge1xuICB2YXIgcCA9IExpc3RXcmFwcGVyLmNsb25lKHBhcmVudC5wYXRoKTtcbiAgcC5wdXNoKG5hbWUpO1xuICByZXR1cm4gcDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFVwQ29udHJvbChjb250cm9sOiBDb250cm9sLCBkaXI6IE5nQ29udHJvbCk6IHZvaWQge1xuICBpZiAoaXNCbGFuayhjb250cm9sKSkgX3Rocm93RXJyb3IoZGlyLCBcIkNhbm5vdCBmaW5kIGNvbnRyb2xcIik7XG4gIGlmIChpc0JsYW5rKGRpci52YWx1ZUFjY2Vzc29yKSkgX3Rocm93RXJyb3IoZGlyLCBcIk5vIHZhbHVlIGFjY2Vzc29yIGZvclwiKTtcblxuICBjb250cm9sLnZhbGlkYXRvciA9IFZhbGlkYXRvcnMuY29tcG9zZShbY29udHJvbC52YWxpZGF0b3IsIGRpci52YWxpZGF0b3JdKTtcbiAgY29udHJvbC5hc3luY1ZhbGlkYXRvciA9IFZhbGlkYXRvcnMuY29tcG9zZUFzeW5jKFtjb250cm9sLmFzeW5jVmFsaWRhdG9yLCBkaXIuYXN5bmNWYWxpZGF0b3JdKTtcbiAgZGlyLnZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZShjb250cm9sLnZhbHVlKTtcblxuICAvLyB2aWV3IC0+IG1vZGVsXG4gIGRpci52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25DaGFuZ2UoKG5ld1ZhbHVlOiBhbnkpID0+IHtcbiAgICBkaXIudmlld1RvTW9kZWxVcGRhdGUobmV3VmFsdWUpO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWUobmV3VmFsdWUsIHtlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IGZhbHNlfSk7XG4gICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICB9KTtcblxuICAvLyBtb2RlbCAtPiB2aWV3XG4gIGNvbnRyb2wucmVnaXN0ZXJPbkNoYW5nZSgobmV3VmFsdWU6IGFueSkgPT4gZGlyLnZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZShuZXdWYWx1ZSkpO1xuXG4gIC8vIHRvdWNoZWRcbiAgZGlyLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQoKCkgPT4gY29udHJvbC5tYXJrQXNUb3VjaGVkKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VXBDb250cm9sR3JvdXAoY29udHJvbDogQ29udHJvbEdyb3VwLCBkaXI6IE5nQ29udHJvbEdyb3VwKSB7XG4gIGlmIChpc0JsYW5rKGNvbnRyb2wpKSBfdGhyb3dFcnJvcihkaXIsIFwiQ2Fubm90IGZpbmQgY29udHJvbFwiKTtcbiAgY29udHJvbC52YWxpZGF0b3IgPSBWYWxpZGF0b3JzLmNvbXBvc2UoW2NvbnRyb2wudmFsaWRhdG9yLCBkaXIudmFsaWRhdG9yXSk7XG4gIGNvbnRyb2wuYXN5bmNWYWxpZGF0b3IgPSBWYWxpZGF0b3JzLmNvbXBvc2VBc3luYyhbY29udHJvbC5hc3luY1ZhbGlkYXRvciwgZGlyLmFzeW5jVmFsaWRhdG9yXSk7XG59XG5cbmZ1bmN0aW9uIF90aHJvd0Vycm9yKGRpcjogQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlLCBtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgdmFyIHBhdGggPSBkaXIucGF0aC5qb2luKFwiIC0+IFwiKTtcbiAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYCR7bWVzc2FnZX0gJyR7cGF0aH0nYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlVmFsaWRhdG9ycyh2YWxpZGF0b3JzOiAvKiBBcnJheTxWYWxpZGF0b3J8RnVuY3Rpb24+ICovIGFueVtdKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gaXNQcmVzZW50KHZhbGlkYXRvcnMpID8gVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkYXRvcnMubWFwKG5vcm1hbGl6ZVZhbGlkYXRvcikpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2VBc3luY1ZhbGlkYXRvcnMoXG4gICAgdmFsaWRhdG9yczogLyogQXJyYXk8VmFsaWRhdG9yfEZ1bmN0aW9uPiAqLyBhbnlbXSk6IEFzeW5jVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gaXNQcmVzZW50KHZhbGlkYXRvcnMpID8gVmFsaWRhdG9ycy5jb21wb3NlQXN5bmModmFsaWRhdG9ycy5tYXAobm9ybWFsaXplQXN5bmNWYWxpZGF0b3IpKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcm9wZXJ0eVVwZGF0ZWQoY2hhbmdlczoge1trZXk6IHN0cmluZ106IGFueX0sIHZpZXdNb2RlbDogYW55KTogYm9vbGVhbiB7XG4gIGlmICghU3RyaW5nTWFwV3JhcHBlci5jb250YWlucyhjaGFuZ2VzLCBcIm1vZGVsXCIpKSByZXR1cm4gZmFsc2U7XG4gIHZhciBjaGFuZ2UgPSBjaGFuZ2VzW1wibW9kZWxcIl07XG5cbiAgaWYgKGNoYW5nZS5pc0ZpcnN0Q2hhbmdlKCkpIHJldHVybiB0cnVlO1xuICByZXR1cm4gIWxvb3NlSWRlbnRpY2FsKHZpZXdNb2RlbCwgY2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG59XG5cbi8vIFRPRE86IHZzYXZraW4gcmVtb3ZlIGl0IG9uY2UgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMzAxMSBpcyBpbXBsZW1lbnRlZFxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdFZhbHVlQWNjZXNzb3IoZGlyOiBOZ0NvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUFjY2Vzc29yczogQ29udHJvbFZhbHVlQWNjZXNzb3JbXSk6IENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgaWYgKGlzQmxhbmsodmFsdWVBY2Nlc3NvcnMpKSByZXR1cm4gbnVsbDtcblxuICB2YXIgZGVmYXVsdEFjY2Vzc29yOiBDb250cm9sVmFsdWVBY2Nlc3NvcjtcbiAgdmFyIGJ1aWx0aW5BY2Nlc3NvcjogQ29udHJvbFZhbHVlQWNjZXNzb3I7XG4gIHZhciBjdXN0b21BY2Nlc3NvcjogQ29udHJvbFZhbHVlQWNjZXNzb3I7XG4gIHZhbHVlQWNjZXNzb3JzLmZvckVhY2goKHY6IENvbnRyb2xWYWx1ZUFjY2Vzc29yKSA9PiB7XG4gICAgaWYgKGhhc0NvbnN0cnVjdG9yKHYsIERlZmF1bHRWYWx1ZUFjY2Vzc29yKSkge1xuICAgICAgZGVmYXVsdEFjY2Vzc29yID0gdjtcblxuICAgIH0gZWxzZSBpZiAoaGFzQ29uc3RydWN0b3IodiwgQ2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3NvcikgfHxcbiAgICAgICAgICAgICAgIGhhc0NvbnN0cnVjdG9yKHYsIE51bWJlclZhbHVlQWNjZXNzb3IpIHx8XG4gICAgICAgICAgICAgICBoYXNDb25zdHJ1Y3Rvcih2LCBTZWxlY3RDb250cm9sVmFsdWVBY2Nlc3NvcikgfHxcbiAgICAgICAgICAgICAgIGhhc0NvbnN0cnVjdG9yKHYsIFJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3IpKSB7XG4gICAgICBpZiAoaXNQcmVzZW50KGJ1aWx0aW5BY2Nlc3NvcikpXG4gICAgICAgIF90aHJvd0Vycm9yKGRpciwgXCJNb3JlIHRoYW4gb25lIGJ1aWx0LWluIHZhbHVlIGFjY2Vzc29yIG1hdGNoZXNcIik7XG4gICAgICBidWlsdGluQWNjZXNzb3IgPSB2O1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1ByZXNlbnQoY3VzdG9tQWNjZXNzb3IpKVxuICAgICAgICBfdGhyb3dFcnJvcihkaXIsIFwiTW9yZSB0aGFuIG9uZSBjdXN0b20gdmFsdWUgYWNjZXNzb3IgbWF0Y2hlc1wiKTtcbiAgICAgIGN1c3RvbUFjY2Vzc29yID0gdjtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChpc1ByZXNlbnQoY3VzdG9tQWNjZXNzb3IpKSByZXR1cm4gY3VzdG9tQWNjZXNzb3I7XG4gIGlmIChpc1ByZXNlbnQoYnVpbHRpbkFjY2Vzc29yKSkgcmV0dXJuIGJ1aWx0aW5BY2Nlc3NvcjtcbiAgaWYgKGlzUHJlc2VudChkZWZhdWx0QWNjZXNzb3IpKSByZXR1cm4gZGVmYXVsdEFjY2Vzc29yO1xuXG4gIF90aHJvd0Vycm9yKGRpciwgXCJObyB2YWxpZCB2YWx1ZSBhY2Nlc3NvciBmb3JcIik7XG4gIHJldHVybiBudWxsO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\nvar control_container_1 = require('./control_container');\r\nvar model_1 = require('../model');\r\nvar shared_1 = require('./shared');\r\nvar validators_1 = require('../validators');\r\nvar formDirectiveProvider = lang_1.CONST_EXPR(new core_1.Provider(control_container_1.ControlContainer, { useExisting: core_1.forwardRef(function () { return NgForm; }) }));\r\n/**\r\n * If `NgForm` is bound in a component, `<form>` elements in that component will be\r\n * upgraded to use the Angular form system.\r\n *\r\n * ### Typical Use\r\n *\r\n * Include `FORM_DIRECTIVES` in the `directives` section of a {@link View} annotation\r\n * to use `NgForm` and its associated controls.\r\n *\r\n * ### Structure\r\n *\r\n * An Angular form is a collection of `Control`s in some hierarchy.\r\n * `Control`s can be at the top level or can be organized in `ControlGroup`s\r\n * or `ControlArray`s. This hierarchy is reflected in the form's `value`, a\r\n * JSON object that mirrors the form structure.\r\n *\r\n * ### Submission\r\n *\r\n * The `ngSubmit` event signals when the user triggers a form submission.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/ltdgYj4P0iY64AR71EpL?p=preview))\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'my-app',\r\n * template: `\r\n * <div>\r\n * <p>Submit the form to see the data object Angular builds</p>\r\n * <h2>NgForm demo</h2>\r\n * <form #f=\"ngForm\" (ngSubmit)=\"onSubmit(f.value)\">\r\n * <h3>Control group: credentials</h3>\r\n * <div ngControlGroup=\"credentials\">\r\n * <p>Login: <input type=\"text\" ngControl=\"login\"></p>\r\n * <p>Password: <input type=\"password\" ngControl=\"password\"></p>\r\n * </div>\r\n * <h3>Control group: person</h3>\r\n * <div ngControlGroup=\"person\">\r\n * <p>First name: <input type=\"text\" ngControl=\"firstName\"></p>\r\n * <p>Last name: <input type=\"text\" ngControl=\"lastName\"></p>\r\n * </div>\r\n * <button type=\"submit\">Submit Form</button>\r\n * <p>Form data submitted:</p>\r\n * </form>\r\n * <pre>{{data}}</pre>\r\n * </div>\r\n * `,\r\n * directives: [CORE_DIRECTIVES, FORM_DIRECTIVES]\r\n * })\r\n * export class App {\r\n * constructor() {}\r\n *\r\n * data: string;\r\n *\r\n * onSubmit(data) {\r\n * this.data = JSON.stringify(data, null, 2);\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar NgForm = (function (_super) {\r\n __extends(NgForm, _super);\r\n function NgForm(validators, asyncValidators) {\r\n _super.call(this);\r\n this.ngSubmit = new async_1.EventEmitter();\r\n this.form = new model_1.ControlGroup({}, null, shared_1.composeValidators(validators), shared_1.composeAsyncValidators(asyncValidators));\r\n }\r\n Object.defineProperty(NgForm.prototype, \"formDirective\", {\r\n get: function () { return this; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgForm.prototype, \"control\", {\r\n get: function () { return this.form; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgForm.prototype, \"path\", {\r\n get: function () { return []; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgForm.prototype, \"controls\", {\r\n get: function () { return this.form.controls; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgForm.prototype.addControl = function (dir) {\r\n var _this = this;\r\n async_1.PromiseWrapper.scheduleMicrotask(function () {\r\n var container = _this._findContainer(dir.path);\r\n var ctrl = new model_1.Control();\r\n shared_1.setUpControl(ctrl, dir);\r\n container.addControl(dir.name, ctrl);\r\n ctrl.updateValueAndValidity({ emitEvent: false });\r\n });\r\n };\r\n NgForm.prototype.getControl = function (dir) { return this.form.find(dir.path); };\r\n NgForm.prototype.removeControl = function (dir) {\r\n var _this = this;\r\n async_1.PromiseWrapper.scheduleMicrotask(function () {\r\n var container = _this._findContainer(dir.path);\r\n if (lang_1.isPresent(container)) {\r\n container.removeControl(dir.name);\r\n container.updateValueAndValidity({ emitEvent: false });\r\n }\r\n });\r\n };\r\n NgForm.prototype.addControlGroup = function (dir) {\r\n var _this = this;\r\n async_1.PromiseWrapper.scheduleMicrotask(function () {\r\n var container = _this._findContainer(dir.path);\r\n var group = new model_1.ControlGroup({});\r\n shared_1.setUpControlGroup(group, dir);\r\n container.addControl(dir.name, group);\r\n group.updateValueAndValidity({ emitEvent: false });\r\n });\r\n };\r\n NgForm.prototype.removeControlGroup = function (dir) {\r\n var _this = this;\r\n async_1.PromiseWrapper.scheduleMicrotask(function () {\r\n var container = _this._findContainer(dir.path);\r\n if (lang_1.isPresent(container)) {\r\n container.removeControl(dir.name);\r\n container.updateValueAndValidity({ emitEvent: false });\r\n }\r\n });\r\n };\r\n NgForm.prototype.getControlGroup = function (dir) {\r\n return this.form.find(dir.path);\r\n };\r\n NgForm.prototype.updateModel = function (dir, value) {\r\n var _this = this;\r\n async_1.PromiseWrapper.scheduleMicrotask(function () {\r\n var ctrl = _this.form.find(dir.path);\r\n ctrl.updateValue(value);\r\n });\r\n };\r\n NgForm.prototype.onSubmit = function () {\r\n async_1.ObservableWrapper.callEmit(this.ngSubmit, null);\r\n return false;\r\n };\r\n /** @internal */\r\n NgForm.prototype._findContainer = function (path) {\r\n path.pop();\r\n return collection_1.ListWrapper.isEmpty(path) ? this.form : this.form.find(path);\r\n };\r\n NgForm = __decorate([\r\n core_1.Directive({\r\n selector: 'form:not([ngNoForm]):not([ngFormModel]),ngForm,[ngForm]',\r\n bindings: [formDirectiveProvider],\r\n host: {\r\n '(submit)': 'onSubmit()',\r\n },\r\n outputs: ['ngSubmit'],\r\n exportAs: 'ngForm'\r\n }),\r\n __param(0, core_1.Optional()),\r\n __param(0, core_1.Self()),\r\n __param(0, core_1.Inject(validators_1.NG_VALIDATORS)),\r\n __param(1, core_1.Optional()),\r\n __param(1, core_1.Self()),\r\n __param(1, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)), \r\n __metadata('design:paramtypes', [Array, Array])\r\n ], NgForm);\r\n return NgForm;\r\n})(control_container_1.ControlContainer);\r\nexports.NgForm = NgForm;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9uZ19mb3JtLnRzIl0sIm5hbWVzIjpbIk5nRm9ybSIsIk5nRm9ybS5jb25zdHJ1Y3RvciIsIk5nRm9ybS5mb3JtRGlyZWN0aXZlIiwiTmdGb3JtLmNvbnRyb2wiLCJOZ0Zvcm0ucGF0aCIsIk5nRm9ybS5jb250cm9scyIsIk5nRm9ybS5hZGRDb250cm9sIiwiTmdGb3JtLmdldENvbnRyb2wiLCJOZ0Zvcm0ucmVtb3ZlQ29udHJvbCIsIk5nRm9ybS5hZGRDb250cm9sR3JvdXAiLCJOZ0Zvcm0ucmVtb3ZlQ29udHJvbEdyb3VwIiwiTmdGb3JtLmdldENvbnRyb2xHcm91cCIsIk5nRm9ybS51cGRhdGVNb2RlbCIsIk5nRm9ybS5vblN1Ym1pdCIsIk5nRm9ybS5fZmluZENvbnRhaW5lciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzQkFLTywyQkFBMkIsQ0FBQyxDQUFBO0FBQ25DLDJCQUE0QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdFLHFCQUE2QywwQkFBMEIsQ0FBQyxDQUFBO0FBQ3hFLHFCQUFzRSxlQUFlLENBQUMsQ0FBQTtBQUl0RixrQ0FBK0IscUJBQXFCLENBQUMsQ0FBQTtBQUNyRCxzQkFBcUQsVUFBVSxDQUFDLENBQUE7QUFDaEUsdUJBQXlGLFVBQVUsQ0FBQyxDQUFBO0FBQ3BHLDJCQUE2RCxlQUFlLENBQUMsQ0FBQTtBQUU3RSxJQUFNLHFCQUFxQixHQUN2QixpQkFBVSxDQUFDLElBQUksZUFBUSxDQUFDLG9DQUFnQixFQUFFLEVBQUMsV0FBVyxFQUFFLGlCQUFVLENBQUMsY0FBTSxPQUFBLE1BQU0sRUFBTixDQUFNLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztBQUV4Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBERztBQUNIO0lB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QUNBLFdBQUlBLEVBQUVBLENBQUFBO1FBQUNBLFdBQUNBLGFBQU1BLENBQUNBLGdDQUFtQkEsQ0FBQ0EsQ0FBQUE7O2VBNkU3REE7SUFBREEsYUFBQ0E7QUFBREEsQ0FBQ0EsQUEzRkQsRUFTNEIsb0NBQWdCLEVBa0YzQztBQWxGWSxjQUFNLFNBa0ZsQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUHJvbWlzZVdyYXBwZXIsXG4gIE9ic2VydmFibGVXcmFwcGVyLFxuICBFdmVudEVtaXR0ZXIsXG4gIFByb21pc2VDb21wbGV0ZXJcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5pbXBvcnQge1N0cmluZ01hcFdyYXBwZXIsIExpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtpc1ByZXNlbnQsIGlzQmxhbmssIENPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0RpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgUHJvdmlkZXIsIE9wdGlvbmFsLCBJbmplY3QsIFNlbGZ9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJy4vbmdfY29udHJvbCc7XG5pbXBvcnQge0Zvcm19IGZyb20gJy4vZm9ybV9pbnRlcmZhY2UnO1xuaW1wb3J0IHtOZ0NvbnRyb2xHcm91cH0gZnJvbSAnLi9uZ19jb250cm9sX2dyb3VwJztcbmltcG9ydCB7Q29udHJvbENvbnRhaW5lcn0gZnJvbSAnLi9jb250cm9sX2NvbnRhaW5lcic7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgQ29udHJvbEdyb3VwLCBDb250cm9sfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQge3NldFVwQ29udHJvbCwgc2V0VXBDb250cm9sR3JvdXAsIGNvbXBvc2VWYWxpZGF0b3JzLCBjb21wb3NlQXN5bmNWYWxpZGF0b3JzfSBmcm9tICcuL3NoYXJlZCc7XG5pbXBvcnQge1ZhbGlkYXRvcnMsIE5HX1ZBTElEQVRPUlMsIE5HX0FTWU5DX1ZBTElEQVRPUlN9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuXG5jb25zdCBmb3JtRGlyZWN0aXZlUHJvdmlkZXIgPVxuICAgIENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKENvbnRyb2xDb250YWluZXIsIHt1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ0Zvcm0pfSkpO1xuXG4vKipcbiAqIElmIGBOZ0Zvcm1gIGlzIGJvdW5kIGluIGEgY29tcG9uZW50LCBgPGZvcm0+YCBlbGVtZW50cyBpbiB0aGF0IGNvbXBvbmVudCB3aWxsIGJlXG4gKiB1cGdyYWRlZCB0byB1c2UgdGhlIEFuZ3VsYXIgZm9ybSBzeXN0ZW0uXG4gKlxuICogIyMjIFR5cGljYWwgVXNlXG4gKlxuICogSW5jbHVkZSBgRk9STV9ESVJFQ1RJVkVTYCBpbiB0aGUgYGRpcmVjdGl2ZXNgIHNlY3Rpb24gb2YgYSB7QGxpbmsgVmlld30gYW5ub3RhdGlvblxuICogdG8gdXNlIGBOZ0Zvcm1gIGFuZCBpdHMgYXNzb2NpYXRlZCBjb250cm9scy5cbiAqXG4gKiAjIyMgU3RydWN0dXJlXG4gKlxuICogQW4gQW5ndWxhciBmb3JtIGlzIGEgY29sbGVjdGlvbiBvZiBgQ29udHJvbGBzIGluIHNvbWUgaGllcmFyY2h5LlxuICogYENvbnRyb2xgcyBjYW4gYmUgYXQgdGhlIHRvcCBsZXZlbCBvciBjYW4gYmUgb3JnYW5pemVkIGluIGBDb250cm9sR3JvdXBgc1xuICogb3IgYENvbnRyb2xBcnJheWBzLiBUaGlzIGhpZXJhcmNoeSBpcyByZWZsZWN0ZWQgaW4gdGhlIGZvcm0ncyBgdmFsdWVgLCBhXG4gKiBKU09OIG9iamVjdCB0aGF0IG1pcnJvcnMgdGhlIGZvcm0gc3RydWN0dXJlLlxuICpcbiAqICMjIyBTdWJtaXNzaW9uXG4gKlxuICogVGhlIGBuZ1N1Ym1pdGAgZXZlbnQgc2lnbmFscyB3aGVuIHRoZSB1c2VyIHRyaWdnZXJzIGEgZm9ybSBzdWJtaXNzaW9uLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9sdGRnWWo0UDBpWTY0QVI3MUVwTD9wPXByZXZpZXcpKVxuICpcbiAqICBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdteS1hcHAnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxkaXY+XG4gKiAgICAgICA8cD5TdWJtaXQgdGhlIGZvcm0gdG8gc2VlIHRoZSBkYXRhIG9iamVjdCBBbmd1bGFyIGJ1aWxkczwvcD5cbiAqICAgICAgIDxoMj5OZ0Zvcm0gZGVtbzwvaDI+XG4gKiAgICAgICA8Zm9ybSAjZj1cIm5nRm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdChmLnZhbHVlKVwiPlxuICogICAgICAgICA8aDM+Q29udHJvbCBncm91cDogY3JlZGVudGlhbHM8L2gzPlxuICogICAgICAgICA8ZGl2IG5nQ29udHJvbEdyb3VwPVwiY3JlZGVudGlhbHNcIj5cbiAqICAgICAgICAgICA8cD5Mb2dpbjogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmdDb250cm9sPVwibG9naW5cIj48L3A+XG4gKiAgICAgICAgICAgPHA+UGFzc3dvcmQ6IDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBuZ0NvbnRyb2w9XCJwYXNzd29yZFwiPjwvcD5cbiAqICAgICAgICAgPC9kaXY+XG4gKiAgICAgICAgIDxoMz5Db250cm9sIGdyb3VwOiBwZXJzb248L2gzPlxuICogICAgICAgICA8ZGl2IG5nQ29udHJvbEdyb3VwPVwicGVyc29uXCI+XG4gKiAgICAgICAgICAgPHA+Rmlyc3QgbmFtZTogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmdDb250cm9sPVwiZmlyc3ROYW1lXCI+PC9wPlxuICogICAgICAgICAgIDxwPkxhc3QgbmFtZTogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmdDb250cm9sPVwibGFzdE5hbWVcIj48L3A+XG4gKiAgICAgICAgIDwvZGl2PlxuICogICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIj5TdWJtaXQgRm9ybTwvYnV0dG9uPlxuICogICAgICAgPHA+Rm9ybSBkYXRhIHN1Ym1pdHRlZDo8L3A+XG4gKiAgICAgICA8L2Zvcm0+XG4gKiAgICAgICA8cHJlPnt7ZGF0YX19PC9wcmU+XG4gKiAgICAgPC9kaXY+XG4gKiBgLFxuICogICBkaXJlY3RpdmVzOiBbQ09SRV9ESVJFQ1RJVkVTLCBGT1JNX0RJUkVDVElWRVNdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcCB7XG4gKiAgIGNvbnN0cnVjdG9yKCkge31cbiAqXG4gKiAgIGRhdGE6IHN0cmluZztcbiAqXG4gKiAgIG9uU3VibWl0KGRhdGEpIHtcbiAqICAgICB0aGlzLmRhdGEgPSBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKTtcbiAqICAgfVxuICogfVxuICogIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdmb3JtOm5vdChbbmdOb0Zvcm1dKTpub3QoW25nRm9ybU1vZGVsXSksbmdGb3JtLFtuZ0Zvcm1dJyxcbiAgYmluZGluZ3M6IFtmb3JtRGlyZWN0aXZlUHJvdmlkZXJdLFxuICBob3N0OiB7XG4gICAgJyhzdWJtaXQpJzogJ29uU3VibWl0KCknLFxuICB9LFxuICBvdXRwdXRzOiBbJ25nU3VibWl0J10sXG4gIGV4cG9ydEFzOiAnbmdGb3JtJ1xufSlcbmV4cG9ydCBjbGFzcyBOZ0Zvcm0gZXh0ZW5kcyBDb250cm9sQ29udGFpbmVyIGltcGxlbWVudHMgRm9ybSB7XG4gIGZvcm06IENvbnRyb2xHcm91cDtcbiAgbmdTdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHZhbGlkYXRvcnM6IGFueVtdLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfQVNZTkNfVkFMSURBVE9SUykgYXN5bmNWYWxpZGF0b3JzOiBhbnlbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5mb3JtID0gbmV3IENvbnRyb2xHcm91cCh7fSwgbnVsbCwgY29tcG9zZVZhbGlkYXRvcnModmFsaWRhdG9ycyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlQXN5bmNWYWxpZGF0b3JzKGFzeW5jVmFsaWRhdG9ycykpO1xuICB9XG5cbiAgZ2V0IGZvcm1EaXJlY3RpdmUoKTogRm9ybSB7IHJldHVybiB0aGlzOyB9XG5cbiAgZ2V0IGNvbnRyb2woKTogQ29udHJvbEdyb3VwIHsgcmV0dXJuIHRoaXMuZm9ybTsgfVxuXG4gIGdldCBwYXRoKCk6IHN0cmluZ1tdIHsgcmV0dXJuIFtdOyB9XG5cbiAgZ2V0IGNvbnRyb2xzKCk6IHtba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2x9IHsgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sczsgfVxuXG4gIGFkZENvbnRyb2woZGlyOiBOZ0NvbnRyb2wpOiB2b2lkIHtcbiAgICBQcm9taXNlV3JhcHBlci5zY2hlZHVsZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5fZmluZENvbnRhaW5lcihkaXIucGF0aCk7XG4gICAgICB2YXIgY3RybCA9IG5ldyBDb250cm9sKCk7XG4gICAgICBzZXRVcENvbnRyb2woY3RybCwgZGlyKTtcbiAgICAgIGNvbnRhaW5lci5hZGRDb250cm9sKGRpci5uYW1lLCBjdHJsKTtcbiAgICAgIGN0cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29udHJvbChkaXI6IE5nQ29udHJvbCk6IENvbnRyb2wgeyByZXR1cm4gPENvbnRyb2w+dGhpcy5mb3JtLmZpbmQoZGlyLnBhdGgpOyB9XG5cbiAgcmVtb3ZlQ29udHJvbChkaXI6IE5nQ29udHJvbCk6IHZvaWQge1xuICAgIFByb21pc2VXcmFwcGVyLnNjaGVkdWxlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLl9maW5kQ29udGFpbmVyKGRpci5wYXRoKTtcbiAgICAgIGlmIChpc1ByZXNlbnQoY29udGFpbmVyKSkge1xuICAgICAgICBjb250YWluZXIucmVtb3ZlQ29udHJvbChkaXIubmFtZSk7XG4gICAgICAgIGNvbnRhaW5lci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRDb250cm9sR3JvdXAoZGlyOiBOZ0NvbnRyb2xHcm91cCk6IHZvaWQge1xuICAgIFByb21pc2VXcmFwcGVyLnNjaGVkdWxlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLl9maW5kQ29udGFpbmVyKGRpci5wYXRoKTtcbiAgICAgIHZhciBncm91cCA9IG5ldyBDb250cm9sR3JvdXAoe30pO1xuICAgICAgc2V0VXBDb250cm9sR3JvdXAoZ3JvdXAsIGRpcik7XG4gICAgICBjb250YWluZXIuYWRkQ29udHJvbChkaXIubmFtZSwgZ3JvdXApO1xuICAgICAgZ3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlQ29udHJvbEdyb3VwKGRpcjogTmdDb250cm9sR3JvdXApOiB2b2lkIHtcbiAgICBQcm9taXNlV3JhcHBlci5zY2hlZHVsZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5fZmluZENvbnRhaW5lcihkaXIucGF0aCk7XG4gICAgICBpZiAoaXNQcmVzZW50KGNvbnRhaW5lcikpIHtcbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUNvbnRyb2woZGlyLm5hbWUpO1xuICAgICAgICBjb250YWluZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29udHJvbEdyb3VwKGRpcjogTmdDb250cm9sR3JvdXApOiBDb250cm9sR3JvdXAge1xuICAgIHJldHVybiA8Q29udHJvbEdyb3VwPnRoaXMuZm9ybS5maW5kKGRpci5wYXRoKTtcbiAgfVxuXG4gIHVwZGF0ZU1vZGVsKGRpcjogTmdDb250cm9sLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgUHJvbWlzZVdyYXBwZXIuc2NoZWR1bGVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgdmFyIGN0cmwgPSA8Q29udHJvbD50aGlzLmZvcm0uZmluZChkaXIucGF0aCk7XG4gICAgICBjdHJsLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uU3VibWl0KCk6IGJvb2xlYW4ge1xuICAgIE9ic2VydmFibGVXcmFwcGVyLmNhbGxFbWl0KHRoaXMubmdTdWJtaXQsIG51bGwpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2ZpbmRDb250YWluZXIocGF0aDogc3RyaW5nW10pOiBDb250cm9sR3JvdXAge1xuICAgIHBhdGgucG9wKCk7XG4gICAgcmV0dXJuIExpc3RXcmFwcGVyLmlzRW1wdHkocGF0aCkgPyB0aGlzLmZvcm0gOiA8Q29udHJvbEdyb3VwPnRoaXMuZm9ybS5maW5kKHBhdGgpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar DEFAULT_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, { useExisting: core_1.forwardRef(function () { return DefaultValueAccessor; }), multi: true }));\r\n/**\r\n * The default accessor for writing a value and listening to changes that is used by the\r\n * {@link NgModel}, {@link NgFormControl}, and {@link NgControlName} directives.\r\n *\r\n * ### Example\r\n * ```\r\n * <input type=\"text\" ngControl=\"searchQuery\">\r\n * ```\r\n */\r\nvar DefaultValueAccessor = (function () {\r\n function DefaultValueAccessor(_renderer, _elementRef) {\r\n this._renderer = _renderer;\r\n this._elementRef = _elementRef;\r\n this.onChange = function (_) { };\r\n this.onTouched = function () { };\r\n }\r\n DefaultValueAccessor.prototype.writeValue = function (value) {\r\n var normalizedValue = lang_1.isBlank(value) ? '' : value;\r\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', normalizedValue);\r\n };\r\n DefaultValueAccessor.prototype.registerOnChange = function (fn) { this.onChange = fn; };\r\n DefaultValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\r\n DefaultValueAccessor = __decorate([\r\n core_1.Directive({\r\n selector: 'input:not([type=checkbox])[ngControl],textarea[ngControl],input:not([type=checkbox])[ngFormControl],textarea[ngFormControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]',\r\n // TODO: vsavkin replace the above selector with the one below it once\r\n // https://github.com/angular/angular/issues/3011 is implemented\r\n // selector: '[ngControl],[ngModel],[ngFormControl]',\r\n host: { '(input)': 'onChange($event.target.value)', '(blur)': 'onTouched()' },\r\n bindings: [DEFAULT_VALUE_ACCESSOR]\r\n }), \r\n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\r\n ], DefaultValueAccessor);\r\n return DefaultValueAccessor;\r\n})();\r\nexports.DefaultValueAccessor = DefaultValueAccessor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF92YWx1ZV9hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9kZWZhdWx0X3ZhbHVlX2FjY2Vzc29yLnRzIl0sIm5hbWVzIjpbIkRlZmF1bHRWYWx1ZUFjY2Vzc29yIiwiRGVmYXVsdFZhbHVlQWNjZXNzb3IuY29uc3RydWN0b3IiLCJEZWZhdWx0VmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlIiwiRGVmYXVsdFZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5nZSIsIkRlZmF1bHRWYWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3VjaGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxxQkFBMEUsZUFBZSxDQUFDLENBQUE7QUFDMUYsdUNBQXNELDBCQUEwQixDQUFDLENBQUE7QUFDakYscUJBQWtDLDBCQUEwQixDQUFDLENBQUE7QUFFN0QsSUFBTSxzQkFBc0IsR0FBRyxpQkFBVSxDQUFDLElBQUksZUFBUSxDQUNsRCwwQ0FBaUIsRUFBRSxFQUFDLFdBQVcsRUFBRSxpQkFBVSxDQUFDLGNBQU0sT0FBQSxvQkFBb0IsRUFBcEIsQ0FBb0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFFNUY7Ozs7Ozs7O0dBUUc7QUFDSDtJQWFFQSw4QkFBb0JBLFNBQW1CQSxFQUFVQSxXQUF1QkE7UUFBcERDLGNBQVNBLEdBQVRBLFNBQVNBLENBQVVBO1FBQVVBLGdCQUFXQSxHQUFYQSxXQUFXQSxDQUFZQTtRQUh4RUEsYUFBUUEsR0FBR0EsVUFBQ0EsQ0FBTUEsSUFBTUEsQ0FBQ0EsQ0FBQ0E7UUFDMUJBLGNBQVNBLEdBQUdBLGNBQU9BLENBQUNBLENBQUNBO0lBRXNEQSxDQUFDQTtJQUU1RUQseUNBQVVBLEdBQVZBLFVBQVdBLEtBQVVBO1FBQ25CRSxJQUFJQSxlQUFlQSxHQUFHQSxjQUFPQSxDQUFDQSxLQUFLQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxLQUFLQSxDQUFDQTtRQUNsREEsSUFBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0Esa0JBQWtCQSxDQUFDQSxJQUFJQSxDQUFDQSxXQUFXQSxDQUFDQSxhQUFhQSxFQUFFQSxPQUFPQSxFQUFFQSxlQUFlQSxDQUFDQSxDQUFDQTtJQUM5RkEsQ0FBQ0E7SUFFREYsK0NBQWdCQSxHQUFoQkEsVUFBaUJBLEVBQW9CQSxJQUFVRyxJQUFJQSxDQUFDQSxRQUFRQSxHQUFHQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNwRUgsZ0RBQWlCQSxHQUFqQkEsVUFBa0JBLEVBQWNBLElBQVVJLElBQUlBLENBQUNBLFNBQVNBLEdBQUdBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO0lBckJsRUo7UUFBQ0EsZ0JBQVNBLENBQUNBO1lBQ1RBLFFBQVFBLEVBQ0pBLHNNQUFzTUE7WUFDMU1BLHNFQUFzRUE7WUFDdEVBLGdFQUFnRUE7WUFDaEVBLHFEQUFxREE7WUFDckRBLElBQUlBLEVBQUVBLEVBQUNBLFNBQVNBLEVBQUVBLCtCQUErQkEsRUFBRUEsUUFBUUEsRUFBRUEsYUFBYUEsRUFBQ0E7WUFDM0VBLFFBQVFBLEVBQUVBLENBQUNBLHNCQUFzQkEsQ0FBQ0E7U0FDbkNBLENBQUNBOzs2QkFjREE7SUFBREEsMkJBQUNBO0FBQURBLENBQUNBLEFBdEJELElBc0JDO0FBYlksNEJBQW9CLHVCQWFoQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFJlbmRlcmVyLCBTZWxmLCBmb3J3YXJkUmVmLCBQcm92aWRlcn0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7aXNCbGFuaywgQ09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuY29uc3QgREVGQVVMVF9WQUxVRV9BQ0NFU1NPUiA9IENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLCB7dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGVmYXVsdFZhbHVlQWNjZXNzb3IpLCBtdWx0aTogdHJ1ZX0pKTtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBhY2Nlc3NvciBmb3Igd3JpdGluZyBhIHZhbHVlIGFuZCBsaXN0ZW5pbmcgdG8gY2hhbmdlcyB0aGF0IGlzIHVzZWQgYnkgdGhlXG4gKiB7QGxpbmsgTmdNb2RlbH0sIHtAbGluayBOZ0Zvcm1Db250cm9sfSwgYW5kIHtAbGluayBOZ0NvbnRyb2xOYW1lfSBkaXJlY3RpdmVzLlxuICpcbiAqICAjIyMgRXhhbXBsZVxuICogIGBgYFxuICogIDxpbnB1dCB0eXBlPVwidGV4dFwiIG5nQ29udHJvbD1cInNlYXJjaFF1ZXJ5XCI+XG4gKiAgYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjpcbiAgICAgICdpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtuZ0NvbnRyb2xdLHRleHRhcmVhW25nQ29udHJvbF0saW5wdXQ6bm90KFt0eXBlPWNoZWNrYm94XSlbbmdGb3JtQ29udHJvbF0sdGV4dGFyZWFbbmdGb3JtQ29udHJvbF0saW5wdXQ6bm90KFt0eXBlPWNoZWNrYm94XSlbbmdNb2RlbF0sdGV4dGFyZWFbbmdNb2RlbF0sW25nRGVmYXVsdENvbnRyb2xdJyxcbiAgLy8gVE9ETzogdnNhdmtpbiByZXBsYWNlIHRoZSBhYm92ZSBzZWxlY3RvciB3aXRoIHRoZSBvbmUgYmVsb3cgaXQgb25jZVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8zMDExIGlzIGltcGxlbWVudGVkXG4gIC8vIHNlbGVjdG9yOiAnW25nQ29udHJvbF0sW25nTW9kZWxdLFtuZ0Zvcm1Db250cm9sXScsXG4gIGhvc3Q6IHsnKGlucHV0KSc6ICdvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKScsICcoYmx1ciknOiAnb25Ub3VjaGVkKCknfSxcbiAgYmluZGluZ3M6IFtERUZBVUxUX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBEZWZhdWx0VmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHZhciBub3JtYWxpemVkVmFsdWUgPSBpc0JsYW5rKHZhbHVlKSA/ICcnIDogdmFsdWU7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgbm9ybWFsaXplZFZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar CHECKBOX_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, { useExisting: core_1.forwardRef(function () { return CheckboxControlValueAccessor; }), multi: true }));\r\n/**\r\n * The accessor for writing a value and listening to changes on a checkbox input element.\r\n *\r\n * ### Example\r\n * ```\r\n * <input type=\"checkbox\" ngControl=\"rememberLogin\">\r\n * ```\r\n */\r\nvar CheckboxControlValueAccessor = (function () {\r\n function CheckboxControlValueAccessor(_renderer, _elementRef) {\r\n this._renderer = _renderer;\r\n this._elementRef = _elementRef;\r\n this.onChange = function (_) { };\r\n this.onTouched = function () { };\r\n }\r\n CheckboxControlValueAccessor.prototype.writeValue = function (value) {\r\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'checked', value);\r\n };\r\n CheckboxControlValueAccessor.prototype.registerOnChange = function (fn) { this.onChange = fn; };\r\n CheckboxControlValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\r\n CheckboxControlValueAccessor = __decorate([\r\n core_1.Directive({\r\n selector: 'input[type=checkbox][ngControl],input[type=checkbox][ngFormControl],input[type=checkbox][ngModel]',\r\n host: { '(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()' },\r\n providers: [CHECKBOX_VALUE_ACCESSOR]\r\n }), \r\n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\r\n ], CheckboxControlValueAccessor);\r\n return CheckboxControlValueAccessor;\r\n})();\r\nexports.CheckboxControlValueAccessor = CheckboxControlValueAccessor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3hfdmFsdWVfYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL2RpcmVjdGl2ZXMvY2hlY2tib3hfdmFsdWVfYWNjZXNzb3IudHMiXSwibmFtZXMiOlsiQ2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3NvciIsIkNoZWNrYm94Q29udHJvbFZhbHVlQWNjZXNzb3IuY29uc3RydWN0b3IiLCJDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUiLCJDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25DaGFuZ2UiLCJDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3VjaGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxxQkFBMEUsZUFBZSxDQUFDLENBQUE7QUFFMUYsdUNBQXNELDBCQUEwQixDQUFDLENBQUE7QUFDakYscUJBQXlCLDBCQUEwQixDQUFDLENBQUE7QUFFcEQsSUFBTSx1QkFBdUIsR0FBRyxpQkFBVSxDQUFDLElBQUksZUFBUSxDQUNuRCwwQ0FBaUIsRUFBRSxFQUFDLFdBQVcsRUFBRSxpQkFBVSxDQUFDLGNBQU0sT0FBQSw0QkFBNEIsRUFBNUIsQ0FBNEIsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFFcEc7Ozs7Ozs7R0FPRztBQUNIO0lBVUVBLHNDQUFvQkEsU0FBbUJBLEVBQVVBLFdBQXVCQTtRQUFwREMsY0FBU0EsR0FBVEEsU0FBU0EsQ0FBVUE7UUFBVUEsZ0JBQVdBLEdBQVhBLFdBQVdBLENBQVlBO1FBSHhFQSxhQUFRQSxHQUFHQSxVQUFDQSxDQUFNQSxJQUFNQSxDQUFDQSxDQUFDQTtRQUMxQkEsY0FBU0EsR0FBR0EsY0FBT0EsQ0FBQ0EsQ0FBQ0E7SUFFc0RBLENBQUNBO0lBRTVFRCxpREFBVUEsR0FBVkEsVUFBV0EsS0FBVUE7UUFDbkJFLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLGtCQUFrQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EsYUFBYUEsRUFBRUEsU0FBU0EsRUFBRUEsS0FBS0EsQ0FBQ0EsQ0FBQ0E7SUFDdEZBLENBQUNBO0lBQ0RGLHVEQUFnQkEsR0FBaEJBLFVBQWlCQSxFQUFrQkEsSUFBVUcsSUFBSUEsQ0FBQ0EsUUFBUUEsR0FBR0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDbEVILHdEQUFpQkEsR0FBakJBLFVBQWtCQSxFQUFZQSxJQUFVSSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtJQWhCaEVKO1FBQUNBLGdCQUFTQSxDQUFDQTtZQUNUQSxRQUFRQSxFQUNKQSxtR0FBbUdBO1lBQ3ZHQSxJQUFJQSxFQUFFQSxFQUFDQSxVQUFVQSxFQUFFQSxpQ0FBaUNBLEVBQUVBLFFBQVFBLEVBQUVBLGFBQWFBLEVBQUNBO1lBQzlFQSxTQUFTQSxFQUFFQSxDQUFDQSx1QkFBdUJBLENBQUNBO1NBQ3JDQSxDQUFDQTs7cUNBWURBO0lBQURBLG1DQUFDQTtBQUFEQSxDQUFDQSxBQWpCRCxJQWlCQztBQVhZLG9DQUE0QiwrQkFXeEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBSZW5kZXJlciwgRWxlbWVudFJlZiwgU2VsZiwgZm9yd2FyZFJlZiwgUHJvdmlkZXJ9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuXG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7Q09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuY29uc3QgQ0hFQ0tCT1hfVkFMVUVfQUNDRVNTT1IgPSBDT05TVF9FWFBSKG5ldyBQcm92aWRlcihcbiAgICBOR19WQUxVRV9BQ0NFU1NPUiwge3VzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrYm94Q29udHJvbFZhbHVlQWNjZXNzb3IpLCBtdWx0aTogdHJ1ZX0pKTtcblxuLyoqXG4gKiBUaGUgYWNjZXNzb3IgZm9yIHdyaXRpbmcgYSB2YWx1ZSBhbmQgbGlzdGVuaW5nIHRvIGNoYW5nZXMgb24gYSBjaGVja2JveCBpbnB1dCBlbGVtZW50LlxuICpcbiAqICAjIyMgRXhhbXBsZVxuICogIGBgYFxuICogIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuZ0NvbnRyb2w9XCJyZW1lbWJlckxvZ2luXCI+XG4gKiAgYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjpcbiAgICAgICdpbnB1dFt0eXBlPWNoZWNrYm94XVtuZ0NvbnRyb2xdLGlucHV0W3R5cGU9Y2hlY2tib3hdW25nRm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9Y2hlY2tib3hdW25nTW9kZWxdJyxcbiAgaG9zdDogeycoY2hhbmdlKSc6ICdvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpJywgJyhibHVyKSc6ICdvblRvdWNoZWQoKSd9LFxuICBwcm92aWRlcnM6IFtDSEVDS0JPWF9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjaGVja2VkJywgdmFsdWUpO1xuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHt9KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar NUMBER_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, { useExisting: core_1.forwardRef(function () { return NumberValueAccessor; }), multi: true }));\r\n/**\r\n * The accessor for writing a number value and listening to changes that is used by the\r\n * {@link NgModel}, {@link NgFormControl}, and {@link NgControlName} directives.\r\n *\r\n * ### Example\r\n * ```\r\n * <input type=\"number\" [(ngModel)]=\"age\">\r\n * ```\r\n */\r\nvar NumberValueAccessor = (function () {\r\n function NumberValueAccessor(_renderer, _elementRef) {\r\n this._renderer = _renderer;\r\n this._elementRef = _elementRef;\r\n this.onChange = function (_) { };\r\n this.onTouched = function () { };\r\n }\r\n NumberValueAccessor.prototype.writeValue = function (value) {\r\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', value);\r\n };\r\n NumberValueAccessor.prototype.registerOnChange = function (fn) {\r\n this.onChange = function (value) { fn(lang_1.NumberWrapper.parseFloat(value)); };\r\n };\r\n NumberValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\r\n NumberValueAccessor = __decorate([\r\n core_1.Directive({\r\n selector: 'input[type=number][ngControl],input[type=number][ngFormControl],input[type=number][ngModel]',\r\n host: {\r\n '(change)': 'onChange($event.target.value)',\r\n '(input)': 'onChange($event.target.value)',\r\n '(blur)': 'onTouched()'\r\n },\r\n bindings: [NUMBER_VALUE_ACCESSOR]\r\n }), \r\n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\r\n ], NumberValueAccessor);\r\n return NumberValueAccessor;\r\n})();\r\nexports.NumberValueAccessor = NumberValueAccessor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyX3ZhbHVlX2FjY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbW1vbi9mb3Jtcy9kaXJlY3RpdmVzL251bWJlcl92YWx1ZV9hY2Nlc3Nvci50cyJdLCJuYW1lcyI6WyJOdW1iZXJWYWx1ZUFjY2Vzc29yIiwiTnVtYmVyVmFsdWVBY2Nlc3Nvci5jb25zdHJ1Y3RvciIsIk51bWJlclZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZSIsIk51bWJlclZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5nZSIsIk51bWJlclZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHFCQUEwRSxlQUFlLENBQUMsQ0FBQTtBQUMxRix1Q0FBc0QsMEJBQTBCLENBQUMsQ0FBQTtBQUNqRixxQkFBaUQsMEJBQTBCLENBQUMsQ0FBQTtBQUU1RSxJQUFNLHFCQUFxQixHQUFHLGlCQUFVLENBQUMsSUFBSSxlQUFRLENBQ2pELDBDQUFpQixFQUFFLEVBQUMsV0FBVyxFQUFFLGlCQUFVLENBQUMsY0FBTSxPQUFBLG1CQUFtQixFQUFuQixDQUFtQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQztBQUUzRjs7Ozs7Ozs7R0FRRztBQUNIO0lBY0VBLDZCQUFvQkEsU0FBbUJBLEVBQVVBLFdBQXVCQTtRQUFwREMsY0FBU0EsR0FBVEEsU0FBU0EsQ0FBVUE7UUFBVUEsZ0JBQVdBLEdBQVhBLFdBQVdBLENBQVlBO1FBSHhFQSxhQUFRQSxHQUFHQSxVQUFDQSxDQUFNQSxJQUFNQSxDQUFDQSxDQUFDQTtRQUMxQkEsY0FBU0EsR0FBR0EsY0FBT0EsQ0FBQ0EsQ0FBQ0E7SUFFc0RBLENBQUNBO0lBRTVFRCx3Q0FBVUEsR0FBVkEsVUFBV0EsS0FBYUE7UUFDdEJFLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLGtCQUFrQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EsYUFBYUEsRUFBRUEsT0FBT0EsRUFBRUEsS0FBS0EsQ0FBQ0EsQ0FBQ0E7SUFDcEZBLENBQUNBO0lBRURGLDhDQUFnQkEsR0FBaEJBLFVBQWlCQSxFQUF1QkE7UUFDdENHLElBQUlBLENBQUNBLFFBQVFBLEdBQUdBLFVBQUNBLEtBQUtBLElBQU9BLEVBQUVBLENBQUNBLG9CQUFhQSxDQUFDQSxVQUFVQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUN0RUEsQ0FBQ0E7SUFDREgsK0NBQWlCQSxHQUFqQkEsVUFBa0JBLEVBQWNBLElBQVVJLElBQUlBLENBQUNBLFNBQVNBLEdBQUdBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO0lBdkJsRUo7UUFBQ0EsZ0JBQVNBLENBQUNBO1lBQ1RBLFFBQVFBLEVBQ0pBLDZGQUE2RkE7WUFDakdBLElBQUlBLEVBQUVBO2dCQUNKQSxVQUFVQSxFQUFFQSwrQkFBK0JBO2dCQUMzQ0EsU0FBU0EsRUFBRUEsK0JBQStCQTtnQkFDMUNBLFFBQVFBLEVBQUVBLGFBQWFBO2FBQ3hCQTtZQUNEQSxRQUFRQSxFQUFFQSxDQUFDQSxxQkFBcUJBLENBQUNBO1NBQ2xDQSxDQUFDQTs7NEJBZURBO0lBQURBLDBCQUFDQTtBQUFEQSxDQUFDQSxBQXhCRCxJQXdCQztBQWRZLDJCQUFtQixzQkFjL0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBSZW5kZXJlciwgU2VsZiwgZm9yd2FyZFJlZiwgUHJvdmlkZXJ9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge2lzQmxhbmssIENPTlNUX0VYUFIsIE51bWJlcldyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbmNvbnN0IE5VTUJFUl9WQUxVRV9BQ0NFU1NPUiA9IENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLCB7dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTnVtYmVyVmFsdWVBY2Nlc3NvciksIG11bHRpOiB0cnVlfSkpO1xuXG4vKipcbiAqIFRoZSBhY2Nlc3NvciBmb3Igd3JpdGluZyBhIG51bWJlciB2YWx1ZSBhbmQgbGlzdGVuaW5nIHRvIGNoYW5nZXMgdGhhdCBpcyB1c2VkIGJ5IHRoZVxuICoge0BsaW5rIE5nTW9kZWx9LCB7QGxpbmsgTmdGb3JtQ29udHJvbH0sIGFuZCB7QGxpbmsgTmdDb250cm9sTmFtZX0gZGlyZWN0aXZlcy5cbiAqXG4gKiAgIyMjIEV4YW1wbGVcbiAqICBgYGBcbiAqICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFsobmdNb2RlbCldPVwiYWdlXCI+XG4gKiAgYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjpcbiAgICAgICdpbnB1dFt0eXBlPW51bWJlcl1bbmdDb250cm9sXSxpbnB1dFt0eXBlPW51bWJlcl1bbmdGb3JtQ29udHJvbF0saW5wdXRbdHlwZT1udW1iZXJdW25nTW9kZWxdJyxcbiAgaG9zdDoge1xuICAgICcoY2hhbmdlKSc6ICdvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKScsXG4gICAgJyhpbnB1dCknOiAnb25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSknLFxuICAgICcoYmx1ciknOiAnb25Ub3VjaGVkKCknXG4gIH0sXG4gIGJpbmRpbmdzOiBbTlVNQkVSX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIsIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IG51bWJlcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSAodmFsdWUpID0+IHsgZm4oTnVtYmVyV3JhcHBlci5wYXJzZUZsb2F0KHZhbHVlKSk7IH07XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar ng_control_1 = require('./ng_control');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Directive automatically applied to Angular forms that sets CSS classes\r\n * based on control status (valid/invalid/dirty/etc).\r\n */\r\nvar NgControlStatus = (function () {\r\n function NgControlStatus(cd) {\r\n this._cd = cd;\r\n }\r\n Object.defineProperty(NgControlStatus.prototype, \"ngClassUntouched\", {\r\n get: function () {\r\n return lang_1.isPresent(this._cd.control) ? this._cd.control.untouched : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlStatus.prototype, \"ngClassTouched\", {\r\n get: function () {\r\n return lang_1.isPresent(this._cd.control) ? this._cd.control.touched : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlStatus.prototype, \"ngClassPristine\", {\r\n get: function () {\r\n return lang_1.isPresent(this._cd.control) ? this._cd.control.pristine : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlStatus.prototype, \"ngClassDirty\", {\r\n get: function () {\r\n return lang_1.isPresent(this._cd.control) ? this._cd.control.dirty : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlStatus.prototype, \"ngClassValid\", {\r\n get: function () {\r\n return lang_1.isPresent(this._cd.control) ? this._cd.control.valid : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControlStatus.prototype, \"ngClassInvalid\", {\r\n get: function () {\r\n return lang_1.isPresent(this._cd.control) ? !this._cd.control.valid : false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgControlStatus = __decorate([\r\n core_1.Directive({\r\n selector: '[ngControl],[ngModel],[ngFormControl]',\r\n host: {\r\n '[class.ng-untouched]': 'ngClassUntouched',\r\n '[class.ng-touched]': 'ngClassTouched',\r\n '[class.ng-pristine]': 'ngClassPristine',\r\n '[class.ng-dirty]': 'ngClassDirty',\r\n '[class.ng-valid]': 'ngClassValid',\r\n '[class.ng-invalid]': 'ngClassInvalid'\r\n }\r\n }),\r\n __param(0, core_1.Self()), \r\n __metadata('design:paramtypes', [ng_control_1.NgControl])\r\n ], NgControlStatus);\r\n return NgControlStatus;\r\n})();\r\nexports.NgControlStatus = NgControlStatus;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfY29udHJvbF9zdGF0dXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL2RpcmVjdGl2ZXMvbmdfY29udHJvbF9zdGF0dXMudHMiXSwibmFtZXMiOlsiTmdDb250cm9sU3RhdHVzIiwiTmdDb250cm9sU3RhdHVzLmNvbnN0cnVjdG9yIiwiTmdDb250cm9sU3RhdHVzLm5nQ2xhc3NVbnRvdWNoZWQiLCJOZ0NvbnRyb2xTdGF0dXMubmdDbGFzc1RvdWNoZWQiLCJOZ0NvbnRyb2xTdGF0dXMubmdDbGFzc1ByaXN0aW5lIiwiTmdDb250cm9sU3RhdHVzLm5nQ2xhc3NEaXJ0eSIsIk5nQ29udHJvbFN0YXR1cy5uZ0NsYXNzVmFsaWQiLCJOZ0NvbnRyb2xTdGF0dXMubmdDbGFzc0ludmFsaWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHFCQUE4QixlQUFlLENBQUMsQ0FBQTtBQUM5QywyQkFBd0IsY0FBYyxDQUFDLENBQUE7QUFDdkMscUJBQWlDLDBCQUEwQixDQUFDLENBQUE7QUFFNUQ7OztHQUdHO0FBQ0g7SUFjRUEseUJBQW9CQSxFQUFhQTtRQUFJQyxJQUFJQSxDQUFDQSxHQUFHQSxHQUFHQSxFQUFFQSxDQUFDQTtJQUFDQSxDQUFDQTtJQUVyREQsc0JBQUlBLDZDQUFnQkE7YUFBcEJBO1lBQ0VFLE1BQU1BLENBQUNBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQSxPQUFPQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQSxPQUFPQSxDQUFDQSxTQUFTQSxHQUFHQSxLQUFLQSxDQUFDQTtRQUMxRUEsQ0FBQ0E7OztPQUFBRjtJQUNEQSxzQkFBSUEsMkNBQWNBO2FBQWxCQTtZQUNFRyxNQUFNQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsT0FBT0EsR0FBR0EsS0FBS0EsQ0FBQ0E7UUFDeEVBLENBQUNBOzs7T0FBQUg7SUFDREEsc0JBQUlBLDRDQUFlQTthQUFuQkE7WUFDRUksTUFBTUEsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLE9BQU9BLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLE9BQU9BLENBQUNBLFFBQVFBLEdBQUdBLEtBQUtBLENBQUNBO1FBQ3pFQSxDQUFDQTs7O09BQUFKO0lBQ0RBLHNCQUFJQSx5Q0FBWUE7YUFBaEJBO1lBQ0VLLE1BQU1BLENBQUNBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQSxPQUFPQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQSxPQUFPQSxDQUFDQSxLQUFLQSxHQUFHQSxLQUFLQSxDQUFDQTtRQUN0RUEsQ0FBQ0E7OztPQUFBTDtJQUNEQSxzQkFBSUEseUNBQVlBO2FBQWhCQTtZQUNFTSxNQUFNQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsS0FBS0EsR0FBR0EsS0FBS0EsQ0FBQ0E7UUFDdEVBLENBQUNBOzs7T0FBQU47SUFDREEsc0JBQUlBLDJDQUFjQTthQUFsQkE7WUFDRU8sTUFBTUEsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLE9BQU9BLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLE9BQU9BLENBQUNBLEtBQUtBLEdBQUdBLEtBQUtBLENBQUNBO1FBQ3ZFQSxDQUFDQTs7O09BQUFQO0lBakNIQTtRQUFDQSxnQkFBU0EsQ0FBQ0E7WUFDVEEsUUFBUUEsRUFBRUEsdUNBQXVDQTtZQUNqREEsSUFBSUEsRUFBRUE7Z0JBQ0pBLHNCQUFzQkEsRUFBRUEsa0JBQWtCQTtnQkFDMUNBLG9CQUFvQkEsRUFBRUEsZ0JBQWdCQTtnQkFDdENBLHFCQUFxQkEsRUFBRUEsaUJBQWlCQTtnQkFDeENBLGtCQUFrQkEsRUFBRUEsY0FBY0E7Z0JBQ2xDQSxrQkFBa0JBLEVBQUVBLGNBQWNBO2dCQUNsQ0Esb0JBQW9CQSxFQUFFQSxnQkFBZ0JBO2FBQ3ZDQTtTQUNGQSxDQUFDQTtRQUlZQSxXQUFDQSxXQUFJQSxFQUFFQSxDQUFBQTs7d0JBb0JwQkE7SUFBREEsc0JBQUNBO0FBQURBLENBQUNBLEFBbENELElBa0NDO0FBdkJZLHVCQUFlLGtCQXVCM0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBTZWxmfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICcuL25nX2NvbnRyb2wnO1xuaW1wb3J0IHtpc0JsYW5rLCBpc1ByZXNlbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbi8qKlxuICogRGlyZWN0aXZlIGF1dG9tYXRpY2FsbHkgYXBwbGllZCB0byBBbmd1bGFyIGZvcm1zIHRoYXQgc2V0cyBDU1MgY2xhc3Nlc1xuICogYmFzZWQgb24gY29udHJvbCBzdGF0dXMgKHZhbGlkL2ludmFsaWQvZGlydHkvZXRjKS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nQ29udHJvbF0sW25nTW9kZWxdLFtuZ0Zvcm1Db250cm9sXScsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm5nLXVudG91Y2hlZF0nOiAnbmdDbGFzc1VudG91Y2hlZCcsXG4gICAgJ1tjbGFzcy5uZy10b3VjaGVkXSc6ICduZ0NsYXNzVG91Y2hlZCcsXG4gICAgJ1tjbGFzcy5uZy1wcmlzdGluZV0nOiAnbmdDbGFzc1ByaXN0aW5lJyxcbiAgICAnW2NsYXNzLm5nLWRpcnR5XSc6ICduZ0NsYXNzRGlydHknLFxuICAgICdbY2xhc3MubmctdmFsaWRdJzogJ25nQ2xhc3NWYWxpZCcsXG4gICAgJ1tjbGFzcy5uZy1pbnZhbGlkXSc6ICduZ0NsYXNzSW52YWxpZCdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBOZ0NvbnRyb2xTdGF0dXMge1xuICBwcml2YXRlIF9jZDogTmdDb250cm9sO1xuXG4gIGNvbnN0cnVjdG9yKEBTZWxmKCkgY2Q6IE5nQ29udHJvbCkgeyB0aGlzLl9jZCA9IGNkOyB9XG5cbiAgZ2V0IG5nQ2xhc3NVbnRvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLl9jZC5jb250cm9sKSA/IHRoaXMuX2NkLmNvbnRyb2wudW50b3VjaGVkIDogZmFsc2U7XG4gIH1cbiAgZ2V0IG5nQ2xhc3NUb3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ByZXNlbnQodGhpcy5fY2QuY29udHJvbCkgPyB0aGlzLl9jZC5jb250cm9sLnRvdWNoZWQgOiBmYWxzZTtcbiAgfVxuICBnZXQgbmdDbGFzc1ByaXN0aW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ByZXNlbnQodGhpcy5fY2QuY29udHJvbCkgPyB0aGlzLl9jZC5jb250cm9sLnByaXN0aW5lIDogZmFsc2U7XG4gIH1cbiAgZ2V0IG5nQ2xhc3NEaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuX2NkLmNvbnRyb2wpID8gdGhpcy5fY2QuY29udHJvbC5kaXJ0eSA6IGZhbHNlO1xuICB9XG4gIGdldCBuZ0NsYXNzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLl9jZC5jb250cm9sKSA/IHRoaXMuX2NkLmNvbnRyb2wudmFsaWQgOiBmYWxzZTtcbiAgfVxuICBnZXQgbmdDbGFzc0ludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLl9jZC5jb250cm9sKSA/ICF0aGlzLl9jZC5jb250cm9sLnZhbGlkIDogZmFsc2U7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar control_value_accessor_1 = require('./control_value_accessor');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar SELECT_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, { useExisting: core_1.forwardRef(function () { return SelectControlValueAccessor; }), multi: true }));\r\n/**\r\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * <select ngControl=\"city\">\r\n * <option *ngFor=\"#c of cities\" [value]=\"c\"></option>\r\n * </select>\r\n * ```\r\n */\r\nvar NgSelectOption = (function () {\r\n function NgSelectOption() {\r\n }\r\n NgSelectOption = __decorate([\r\n core_1.Directive({ selector: 'option' }), \r\n __metadata('design:paramtypes', [])\r\n ], NgSelectOption);\r\n return NgSelectOption;\r\n})();\r\nexports.NgSelectOption = NgSelectOption;\r\n/**\r\n * The accessor for writing a value and listening to changes on a select element.\r\n */\r\nvar SelectControlValueAccessor = (function () {\r\n function SelectControlValueAccessor(_renderer, _elementRef, query) {\r\n this._renderer = _renderer;\r\n this._elementRef = _elementRef;\r\n this.onChange = function (_) { };\r\n this.onTouched = function () { };\r\n this._updateValueWhenListOfOptionsChanges(query);\r\n }\r\n SelectControlValueAccessor.prototype.writeValue = function (value) {\r\n this.value = value;\r\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', value);\r\n };\r\n SelectControlValueAccessor.prototype.registerOnChange = function (fn) { this.onChange = fn; };\r\n SelectControlValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\r\n SelectControlValueAccessor.prototype._updateValueWhenListOfOptionsChanges = function (query) {\r\n var _this = this;\r\n async_1.ObservableWrapper.subscribe(query.changes, function (_) { return _this.writeValue(_this.value); });\r\n };\r\n SelectControlValueAccessor = __decorate([\r\n core_1.Directive({\r\n selector: 'select[ngControl],select[ngFormControl],select[ngModel]',\r\n host: { '(input)': 'onChange($event.target.value)', '(blur)': 'onTouched()' },\r\n bindings: [SELECT_VALUE_ACCESSOR]\r\n }),\r\n __param(2, core_1.Query(NgSelectOption, { descendants: true })), \r\n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef, core_1.QueryList])\r\n ], SelectControlValueAccessor);\r\n return SelectControlValueAccessor;\r\n})();\r\nexports.SelectControlValueAccessor = SelectControlValueAccessor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0X2NvbnRyb2xfdmFsdWVfYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL2RpcmVjdGl2ZXMvc2VsZWN0X2NvbnRyb2xfdmFsdWVfYWNjZXNzb3IudHMiXSwibmFtZXMiOlsiTmdTZWxlY3RPcHRpb24iLCJOZ1NlbGVjdE9wdGlvbi5jb25zdHJ1Y3RvciIsIlNlbGVjdENvbnRyb2xWYWx1ZUFjY2Vzc29yIiwiU2VsZWN0Q29udHJvbFZhbHVlQWNjZXNzb3IuY29uc3RydWN0b3IiLCJTZWxlY3RDb250cm9sVmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlIiwiU2VsZWN0Q29udHJvbFZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5nZSIsIlNlbGVjdENvbnRyb2xWYWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3VjaGVkIiwiU2VsZWN0Q29udHJvbFZhbHVlQWNjZXNzb3IuX3VwZGF0ZVZhbHVlV2hlbkxpc3RPZk9wdGlvbnNDaGFuZ2VzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxxQkFTTyxlQUFlLENBQUMsQ0FBQTtBQUV2QixzQkFBZ0MsMkJBQTJCLENBQUMsQ0FBQTtBQUM1RCx1Q0FBc0QsMEJBQTBCLENBQUMsQ0FBQTtBQUNqRixxQkFBeUIsMEJBQTBCLENBQUMsQ0FBQTtBQUVwRCxJQUFNLHFCQUFxQixHQUFHLGlCQUFVLENBQUMsSUFBSSxlQUFRLENBQ2pELDBDQUFpQixFQUFFLEVBQUMsV0FBVyxFQUFFLGlCQUFVLENBQUMsY0FBTSxPQUFBLDBCQUEwQixFQUExQixDQUEwQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQztBQUVsRzs7Ozs7Ozs7OztHQVVHO0FBQ0g7SUFBQUE7SUFFQUMsQ0FBQ0E7SUFGREQ7UUFBQ0EsZ0JBQVNBLENBQUNBLEVBQUNBLFFBQVFBLEVBQUVBLFFBQVFBLEVBQUNBLENBQUNBOzt1QkFFL0JBO0lBQURBLHFCQUFDQTtBQUFEQSxDQUFDQSxBQUZELElBRUM7QUFEWSxzQkFBYyxpQkFDMUIsQ0FBQTtBQUVEOztHQUVHO0FBQ0g7SUFVRUUsb0NBQW9CQSxTQUFtQkEsRUFBVUEsV0FBdUJBLEVBQ2hCQSxLQUFnQ0E7UUFEcEVDLGNBQVNBLEdBQVRBLFNBQVNBLENBQVVBO1FBQVVBLGdCQUFXQSxHQUFYQSxXQUFXQSxDQUFZQTtRQUh4RUEsYUFBUUEsR0FBR0EsVUFBQ0EsQ0FBTUEsSUFBTUEsQ0FBQ0EsQ0FBQ0E7UUFDMUJBLGNBQVNBLEdBQUdBLGNBQU9BLENBQUNBLENBQUNBO1FBSW5CQSxJQUFJQSxDQUFDQSxvQ0FBb0NBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO0lBQ25EQSxDQUFDQTtJQUVERCwrQ0FBVUEsR0FBVkEsVUFBV0EsS0FBVUE7UUFDbkJFLElBQUlBLENBQUNBLEtBQUtBLEdBQUdBLEtBQUtBLENBQUNBO1FBQ25CQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxrQkFBa0JBLENBQUNBLElBQUlBLENBQUNBLFdBQVdBLENBQUNBLGFBQWFBLEVBQUVBLE9BQU9BLEVBQUVBLEtBQUtBLENBQUNBLENBQUNBO0lBQ3BGQSxDQUFDQTtJQUVERixxREFBZ0JBLEdBQWhCQSxVQUFpQkEsRUFBYUEsSUFBVUcsSUFBSUEsQ0FBQ0EsUUFBUUEsR0FBR0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDN0RILHNEQUFpQkEsR0FBakJBLFVBQWtCQSxFQUFhQSxJQUFVSSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUV2REoseUVBQW9DQSxHQUE1Q0EsVUFBNkNBLEtBQWdDQTtRQUE3RUssaUJBRUNBO1FBRENBLHlCQUFpQkEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsT0FBT0EsRUFBRUEsVUFBQ0EsQ0FBQ0EsSUFBS0EsT0FBQUEsS0FBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsS0FBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsRUFBM0JBLENBQTJCQSxDQUFDQSxDQUFDQTtJQUNqRkEsQ0FBQ0E7SUF6QkhMO1FBQUNBLGdCQUFTQSxDQUFDQTtZQUNUQSxRQUFRQSxFQUFFQSx5REFBeURBO1lBQ25FQSxJQUFJQSxFQUFFQSxFQUFDQSxTQUFTQSxFQUFFQSwrQkFBK0JBLEVBQUVBLFFBQVFBLEVBQUVBLGFBQWFBLEVBQUNBO1lBQzNFQSxRQUFRQSxFQUFFQSxDQUFDQSxxQkFBcUJBLENBQUNBO1NBQ2xDQSxDQUFDQTtRQU9ZQSxXQUFDQSxZQUFLQSxDQUFDQSxjQUFjQSxFQUFFQSxFQUFDQSxXQUFXQSxFQUFFQSxJQUFJQSxFQUFDQSxDQUFDQSxDQUFBQTs7bUNBZXhEQTtJQUFEQSxpQ0FBQ0E7QUFBREEsQ0FBQ0EsQUExQkQsSUEwQkM7QUFyQlksa0NBQTBCLDZCQXFCdEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFF1ZXJ5LFxuICBEaXJlY3RpdmUsXG4gIFJlbmRlcmVyLFxuICBTZWxmLFxuICBmb3J3YXJkUmVmLFxuICBQcm92aWRlcixcbiAgRWxlbWVudFJlZixcbiAgUXVlcnlMaXN0XG59IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuXG5pbXBvcnQge09ic2VydmFibGVXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBmcm9tICcuL2NvbnRyb2xfdmFsdWVfYWNjZXNzb3InO1xuaW1wb3J0IHtDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG5jb25zdCBTRUxFQ1RfVkFMVUVfQUNDRVNTT1IgPSBDT05TVF9FWFBSKG5ldyBQcm92aWRlcihcbiAgICBOR19WQUxVRV9BQ0NFU1NPUiwge3VzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbnRyb2xWYWx1ZUFjY2Vzc29yKSwgbXVsdGk6IHRydWV9KSk7XG5cbi8qKlxuICogTWFya3MgYDxvcHRpb24+YCBhcyBkeW5hbWljLCBzbyBBbmd1bGFyIGNhbiBiZSBub3RpZmllZCB3aGVuIG9wdGlvbnMgY2hhbmdlLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgXG4gKiA8c2VsZWN0IG5nQ29udHJvbD1cImNpdHlcIj5cbiAqICAgPG9wdGlvbiAqbmdGb3I9XCIjYyBvZiBjaXRpZXNcIiBbdmFsdWVdPVwiY1wiPjwvb3B0aW9uPlxuICogPC9zZWxlY3Q+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdvcHRpb24nfSlcbmV4cG9ydCBjbGFzcyBOZ1NlbGVjdE9wdGlvbiB7XG59XG5cbi8qKlxuICogVGhlIGFjY2Vzc29yIGZvciB3cml0aW5nIGEgdmFsdWUgYW5kIGxpc3RlbmluZyB0byBjaGFuZ2VzIG9uIGEgc2VsZWN0IGVsZW1lbnQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3NlbGVjdFtuZ0NvbnRyb2xdLHNlbGVjdFtuZ0Zvcm1Db250cm9sXSxzZWxlY3RbbmdNb2RlbF0nLFxuICBob3N0OiB7JyhpbnB1dCknOiAnb25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSknLCAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJ30sXG4gIGJpbmRpbmdzOiBbU0VMRUNUX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBAUXVlcnkoTmdTZWxlY3RPcHRpb24sIHtkZXNjZW5kYW50czogdHJ1ZX0pIHF1ZXJ5OiBRdWVyeUxpc3Q8TmdTZWxlY3RPcHRpb24+KSB7XG4gICAgdGhpcy5fdXBkYXRlVmFsdWVXaGVuTGlzdE9mT3B0aW9uc0NoYW5nZXMocXVlcnkpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIHZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICgpID0+IGFueSk6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVmFsdWVXaGVuTGlzdE9mT3B0aW9uc0NoYW5nZXMocXVlcnk6IFF1ZXJ5TGlzdDxOZ1NlbGVjdE9wdGlvbj4pIHtcbiAgICBPYnNlcnZhYmxlV3JhcHBlci5zdWJzY3JpYmUocXVlcnkuY2hhbmdlcywgKF8pID0+IHRoaXMud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKSk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar ng_control_name_1 = require('./directives/ng_control_name');\r\nvar ng_form_control_1 = require('./directives/ng_form_control');\r\nvar ng_model_1 = require('./directives/ng_model');\r\nvar ng_control_group_1 = require('./directives/ng_control_group');\r\nvar ng_form_model_1 = require('./directives/ng_form_model');\r\nvar ng_form_1 = require('./directives/ng_form');\r\nvar default_value_accessor_1 = require('./directives/default_value_accessor');\r\nvar checkbox_value_accessor_1 = require('./directives/checkbox_value_accessor');\r\nvar number_value_accessor_1 = require('./directives/number_value_accessor');\r\nvar radio_control_value_accessor_1 = require('./directives/radio_control_value_accessor');\r\nvar ng_control_status_1 = require('./directives/ng_control_status');\r\nvar select_control_value_accessor_1 = require('./directives/select_control_value_accessor');\r\nvar validators_1 = require('./directives/validators');\r\nvar ng_control_name_2 = require('./directives/ng_control_name');\r\nexports.NgControlName = ng_control_name_2.NgControlName;\r\nvar ng_form_control_2 = require('./directives/ng_form_control');\r\nexports.NgFormControl = ng_form_control_2.NgFormControl;\r\nvar ng_model_2 = require('./directives/ng_model');\r\nexports.NgModel = ng_model_2.NgModel;\r\nvar ng_control_group_2 = require('./directives/ng_control_group');\r\nexports.NgControlGroup = ng_control_group_2.NgControlGroup;\r\nvar ng_form_model_2 = require('./directives/ng_form_model');\r\nexports.NgFormModel = ng_form_model_2.NgFormModel;\r\nvar ng_form_2 = require('./directives/ng_form');\r\nexports.NgForm = ng_form_2.NgForm;\r\nvar default_value_accessor_2 = require('./directives/default_value_accessor');\r\nexports.DefaultValueAccessor = default_value_accessor_2.DefaultValueAccessor;\r\nvar checkbox_value_accessor_2 = require('./directives/checkbox_value_accessor');\r\nexports.CheckboxControlValueAccessor = checkbox_value_accessor_2.CheckboxControlValueAccessor;\r\nvar radio_control_value_accessor_2 = require('./directives/radio_control_value_accessor');\r\nexports.RadioControlValueAccessor = radio_control_value_accessor_2.RadioControlValueAccessor;\r\nexports.RadioButtonState = radio_control_value_accessor_2.RadioButtonState;\r\nvar number_value_accessor_2 = require('./directives/number_value_accessor');\r\nexports.NumberValueAccessor = number_value_accessor_2.NumberValueAccessor;\r\nvar ng_control_status_2 = require('./directives/ng_control_status');\r\nexports.NgControlStatus = ng_control_status_2.NgControlStatus;\r\nvar select_control_value_accessor_2 = require('./directives/select_control_value_accessor');\r\nexports.SelectControlValueAccessor = select_control_value_accessor_2.SelectControlValueAccessor;\r\nexports.NgSelectOption = select_control_value_accessor_2.NgSelectOption;\r\nvar validators_2 = require('./directives/validators');\r\nexports.RequiredValidator = validators_2.RequiredValidator;\r\nexports.MinLengthValidator = validators_2.MinLengthValidator;\r\nexports.MaxLengthValidator = validators_2.MaxLengthValidator;\r\nexports.PatternValidator = validators_2.PatternValidator;\r\nvar ng_control_1 = require('./directives/ng_control');\r\nexports.NgControl = ng_control_1.NgControl;\r\n/**\r\n *\r\n * A list of all the form directives used as part of a `@Component` annotation.\r\n *\r\n * This is a shorthand for importing them each individually.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'my-app',\r\n * directives: [FORM_DIRECTIVES]\r\n * })\r\n * class MyApp {}\r\n * ```\r\n */\r\nexports.FORM_DIRECTIVES = lang_1.CONST_EXPR([\r\n ng_control_name_1.NgControlName,\r\n ng_control_group_1.NgControlGroup,\r\n ng_form_control_1.NgFormControl,\r\n ng_model_1.NgModel,\r\n ng_form_model_1.NgFormModel,\r\n ng_form_1.NgForm,\r\n select_control_value_accessor_1.NgSelectOption,\r\n default_value_accessor_1.DefaultValueAccessor,\r\n number_value_accessor_1.NumberValueAccessor,\r\n checkbox_value_accessor_1.CheckboxControlValueAccessor,\r\n select_control_value_accessor_1.SelectControlValueAccessor,\r\n radio_control_value_accessor_1.RadioControlValueAccessor,\r\n ng_control_status_1.NgControlStatus,\r\n validators_1.RequiredValidator,\r\n validators_1.MinLengthValidator,\r\n validators_1.MaxLengthValidator,\r\n validators_1.PatternValidator\r\n]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBK0IsMEJBQTBCLENBQUMsQ0FBQTtBQUMxRCxnQ0FBNEIsOEJBQThCLENBQUMsQ0FBQTtBQUMzRCxnQ0FBNEIsOEJBQThCLENBQUMsQ0FBQTtBQUMzRCx5QkFBc0IsdUJBQXVCLENBQUMsQ0FBQTtBQUM5QyxpQ0FBNkIsK0JBQStCLENBQUMsQ0FBQTtBQUM3RCw4QkFBMEIsNEJBQTRCLENBQUMsQ0FBQTtBQUN2RCx3QkFBcUIsc0JBQXNCLENBQUMsQ0FBQTtBQUM1Qyx1Q0FBbUMscUNBQXFDLENBQUMsQ0FBQTtBQUN6RSx3Q0FBMkMsc0NBQXNDLENBQUMsQ0FBQTtBQUNsRixzQ0FBa0Msb0NBQW9DLENBQUMsQ0FBQTtBQUN2RSw2Q0FBd0MsMkNBQTJDLENBQUMsQ0FBQTtBQUNwRixrQ0FBOEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUMvRCw4Q0FHTyw0Q0FBNEMsQ0FBQyxDQUFBO0FBQ3BELDJCQUtPLHlCQUF5QixDQUFDLENBQUE7QUFFakMsZ0NBQTRCLDhCQUE4QixDQUFDO0FBQW5ELHdEQUFtRDtBQUMzRCxnQ0FBNEIsOEJBQThCLENBQUM7QUFBbkQsd0RBQW1EO0FBQzNELHlCQUFzQix1QkFBdUIsQ0FBQztBQUF0QyxxQ0FBc0M7QUFDOUMsaUNBQTZCLCtCQUErQixDQUFDO0FBQXJELDJEQUFxRDtBQUM3RCw4QkFBMEIsNEJBQTRCLENBQUM7QUFBL0Msa0RBQStDO0FBQ3ZELHdCQUFxQixzQkFBc0IsQ0FBQztBQUFwQyxrQ0FBb0M7QUFDNUMsdUNBQW1DLHFDQUFxQyxDQUFDO0FBQWpFLDZFQUFpRTtBQUN6RSx3Q0FBMkMsc0NBQXNDLENBQUM7QUFBMUUsOEZBQTBFO0FBQ2xGLDZDQUdPLDJDQUEyQyxDQUFDO0FBRmpELDZGQUF5QjtBQUN6QiwyRUFDaUQ7QUFDbkQsc0NBQWtDLG9DQUFvQyxDQUFDO0FBQS9ELDBFQUErRDtBQUN2RSxrQ0FBOEIsZ0NBQWdDLENBQUM7QUFBdkQsOERBQXVEO0FBQy9ELDhDQUdPLDRDQUE0QyxDQUFDO0FBRmxELGdHQUEwQjtBQUMxQix3RUFDa0Q7QUFDcEQsMkJBS08seUJBQXlCLENBQUM7QUFKL0IsMkRBQWlCO0FBQ2pCLDZEQUFrQjtBQUNsQiw2REFBa0I7QUFDbEIseURBQytCO0FBQ2pDLDJCQUF3Qix5QkFBeUIsQ0FBQztBQUExQywyQ0FBMEM7QUFHbEQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ1UsdUJBQWUsR0FBVyxpQkFBVSxDQUFDO0lBQ2hELCtCQUFhO0lBQ2IsaUNBQWM7SUFFZCwrQkFBYTtJQUNiLGtCQUFPO0lBQ1AsMkJBQVc7SUFDWCxnQkFBTTtJQUVOLDhDQUFjO0lBQ2QsNkNBQW9CO0lBQ3BCLDJDQUFtQjtJQUNuQixzREFBNEI7SUFDNUIsMERBQTBCO0lBQzFCLHdEQUF5QjtJQUN6QixtQ0FBZTtJQUVmLDhCQUFpQjtJQUNqQiwrQkFBa0I7SUFDbEIsK0JBQWtCO0lBQ2xCLDZCQUFnQjtDQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGUsIENPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge05nQ29udHJvbE5hbWV9IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19jb250cm9sX25hbWUnO1xuaW1wb3J0IHtOZ0Zvcm1Db250cm9sfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfZm9ybV9jb250cm9sJztcbmltcG9ydCB7TmdNb2RlbH0gZnJvbSAnLi9kaXJlY3RpdmVzL25nX21vZGVsJztcbmltcG9ydCB7TmdDb250cm9sR3JvdXB9IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19jb250cm9sX2dyb3VwJztcbmltcG9ydCB7TmdGb3JtTW9kZWx9IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19mb3JtX21vZGVsJztcbmltcG9ydCB7TmdGb3JtfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfZm9ybSc7XG5pbXBvcnQge0RlZmF1bHRWYWx1ZUFjY2Vzc29yfSBmcm9tICcuL2RpcmVjdGl2ZXMvZGVmYXVsdF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge0NoZWNrYm94Q29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vZGlyZWN0aXZlcy9jaGVja2JveF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge051bWJlclZhbHVlQWNjZXNzb3J9IGZyb20gJy4vZGlyZWN0aXZlcy9udW1iZXJfdmFsdWVfYWNjZXNzb3InO1xuaW1wb3J0IHtSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yfSBmcm9tICcuL2RpcmVjdGl2ZXMvcmFkaW9fY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge05nQ29udHJvbFN0YXR1c30gZnJvbSAnLi9kaXJlY3RpdmVzL25nX2NvbnRyb2xfc3RhdHVzJztcbmltcG9ydCB7XG4gIFNlbGVjdENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOZ1NlbGVjdE9wdGlvblxufSBmcm9tICcuL2RpcmVjdGl2ZXMvc2VsZWN0X2NvbnRyb2xfdmFsdWVfYWNjZXNzb3InO1xuaW1wb3J0IHtcbiAgUmVxdWlyZWRWYWxpZGF0b3IsXG4gIE1pbkxlbmd0aFZhbGlkYXRvcixcbiAgTWF4TGVuZ3RoVmFsaWRhdG9yLFxuICBQYXR0ZXJuVmFsaWRhdG9yXG59IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzJztcblxuZXhwb3J0IHtOZ0NvbnRyb2xOYW1lfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfY29udHJvbF9uYW1lJztcbmV4cG9ydCB7TmdGb3JtQ29udHJvbH0gZnJvbSAnLi9kaXJlY3RpdmVzL25nX2Zvcm1fY29udHJvbCc7XG5leHBvcnQge05nTW9kZWx9IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19tb2RlbCc7XG5leHBvcnQge05nQ29udHJvbEdyb3VwfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfY29udHJvbF9ncm91cCc7XG5leHBvcnQge05nRm9ybU1vZGVsfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfZm9ybV9tb2RlbCc7XG5leHBvcnQge05nRm9ybX0gZnJvbSAnLi9kaXJlY3RpdmVzL25nX2Zvcm0nO1xuZXhwb3J0IHtEZWZhdWx0VmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9kaXJlY3RpdmVzL2RlZmF1bHRfdmFsdWVfYWNjZXNzb3InO1xuZXhwb3J0IHtDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2hlY2tib3hfdmFsdWVfYWNjZXNzb3InO1xuZXhwb3J0IHtcbiAgUmFkaW9Db250cm9sVmFsdWVBY2Nlc3NvcixcbiAgUmFkaW9CdXR0b25TdGF0ZVxufSBmcm9tICcuL2RpcmVjdGl2ZXMvcmFkaW9fY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5leHBvcnQge051bWJlclZhbHVlQWNjZXNzb3J9IGZyb20gJy4vZGlyZWN0aXZlcy9udW1iZXJfdmFsdWVfYWNjZXNzb3InO1xuZXhwb3J0IHtOZ0NvbnRyb2xTdGF0dXN9IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19jb250cm9sX3N0YXR1cyc7XG5leHBvcnQge1xuICBTZWxlY3RDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTmdTZWxlY3RPcHRpb25cbn0gZnJvbSAnLi9kaXJlY3RpdmVzL3NlbGVjdF9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmV4cG9ydCB7XG4gIFJlcXVpcmVkVmFsaWRhdG9yLFxuICBNaW5MZW5ndGhWYWxpZGF0b3IsXG4gIE1heExlbmd0aFZhbGlkYXRvcixcbiAgUGF0dGVyblZhbGlkYXRvclxufSBmcm9tICcuL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycyc7XG5leHBvcnQge05nQ29udHJvbH0gZnJvbSAnLi9kaXJlY3RpdmVzL25nX2NvbnRyb2wnO1xuZXhwb3J0IHtDb250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9kaXJlY3RpdmVzL2NvbnRyb2xfdmFsdWVfYWNjZXNzb3InO1xuXG4vKipcbiAqXG4gKiBBIGxpc3Qgb2YgYWxsIHRoZSBmb3JtIGRpcmVjdGl2ZXMgdXNlZCBhcyBwYXJ0IG9mIGEgYEBDb21wb25lbnRgIGFubm90YXRpb24uXG4gKlxuICogIFRoaXMgaXMgYSBzaG9ydGhhbmQgZm9yIGltcG9ydGluZyB0aGVtIGVhY2ggaW5kaXZpZHVhbGx5LlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnbXktYXBwJyxcbiAqICAgZGlyZWN0aXZlczogW0ZPUk1fRElSRUNUSVZFU11cbiAqIH0pXG4gKiBjbGFzcyBNeUFwcCB7fVxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBGT1JNX0RJUkVDVElWRVM6IFR5cGVbXSA9IENPTlNUX0VYUFIoW1xuICBOZ0NvbnRyb2xOYW1lLFxuICBOZ0NvbnRyb2xHcm91cCxcblxuICBOZ0Zvcm1Db250cm9sLFxuICBOZ01vZGVsLFxuICBOZ0Zvcm1Nb2RlbCxcbiAgTmdGb3JtLFxuXG4gIE5nU2VsZWN0T3B0aW9uLFxuICBEZWZhdWx0VmFsdWVBY2Nlc3NvcixcbiAgTnVtYmVyVmFsdWVBY2Nlc3NvcixcbiAgQ2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgU2VsZWN0Q29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIFJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5nQ29udHJvbFN0YXR1cyxcblxuICBSZXF1aXJlZFZhbGlkYXRvcixcbiAgTWluTGVuZ3RoVmFsaWRhdG9yLFxuICBNYXhMZW5ndGhWYWxpZGF0b3IsXG4gIFBhdHRlcm5WYWxpZGF0b3Jcbl0pO1xuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar promise_1 = require('angular2/src/facade/promise');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar core_1 = require('angular2/core');\r\n/**\r\n * Providers for validators to be used for {@link Control}s in a form.\r\n *\r\n * Provide this using `multi: true` to add validators.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/forms/ts/ng_validators/ng_validators.ts region='ng_validators'}\r\n */\r\nexports.NG_VALIDATORS = lang_1.CONST_EXPR(new core_1.OpaqueToken(\"NgValidators\"));\r\n/**\r\n * Providers for asynchronous validators to be used for {@link Control}s\r\n * in a form.\r\n *\r\n * Provide this using `multi: true` to add validators.\r\n *\r\n * See {@link NG_VALIDATORS} for more details.\r\n */\r\nexports.NG_ASYNC_VALIDATORS = lang_1.CONST_EXPR(new core_1.OpaqueToken(\"NgAsyncValidators\"));\r\n/**\r\n * Provides a set of validators used by form controls.\r\n *\r\n * A validator is a function that processes a {@link Control} or collection of\r\n * controls and returns a map of errors. A null map means that validation has passed.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * var loginControl = new Control(\"\", Validators.required)\r\n * ```\r\n */\r\nvar Validators = (function () {\r\n function Validators() {\r\n }\r\n /**\r\n * Validator that requires controls to have a non-empty value.\r\n */\r\n Validators.required = function (control) {\r\n return lang_1.isBlank(control.value) || (lang_1.isString(control.value) && control.value == \"\") ?\r\n { \"required\": true } :\r\n null;\r\n };\r\n /**\r\n * Validator that requires controls to have a value of a minimum length.\r\n */\r\n Validators.minLength = function (minLength) {\r\n return function (control) {\r\n if (lang_1.isPresent(Validators.required(control)))\r\n return null;\r\n var v = control.value;\r\n return v.length < minLength ?\r\n { \"minlength\": { \"requiredLength\": minLength, \"actualLength\": v.length } } :\r\n null;\r\n };\r\n };\r\n /**\r\n * Validator that requires controls to have a value of a maximum length.\r\n */\r\n Validators.maxLength = function (maxLength) {\r\n return function (control) {\r\n if (lang_1.isPresent(Validators.required(control)))\r\n return null;\r\n var v = control.value;\r\n return v.length > maxLength ?\r\n { \"maxlength\": { \"requiredLength\": maxLength, \"actualLength\": v.length } } :\r\n null;\r\n };\r\n };\r\n /**\r\n * Validator that requires a control to match a regex to its value.\r\n */\r\n Validators.pattern = function (pattern) {\r\n return function (control) {\r\n if (lang_1.isPresent(Validators.required(control)))\r\n return null;\r\n var regex = new RegExp(\"^\" + pattern + \"$\");\r\n var v = control.value;\r\n return regex.test(v) ? null :\r\n { \"pattern\": { \"requiredPattern\": \"^\" + pattern + \"$\", \"actualValue\": v } };\r\n };\r\n };\r\n /**\r\n * No-op validator.\r\n */\r\n Validators.nullValidator = function (c) { return null; };\r\n /**\r\n * Compose multiple validators into a single function that returns the union\r\n * of the individual error maps.\r\n */\r\n Validators.compose = function (validators) {\r\n if (lang_1.isBlank(validators))\r\n return null;\r\n var presentValidators = validators.filter(lang_1.isPresent);\r\n if (presentValidators.length == 0)\r\n return null;\r\n return function (control) {\r\n return _mergeErrors(_executeValidators(control, presentValidators));\r\n };\r\n };\r\n Validators.composeAsync = function (validators) {\r\n if (lang_1.isBlank(validators))\r\n return null;\r\n var presentValidators = validators.filter(lang_1.isPresent);\r\n if (presentValidators.length == 0)\r\n return null;\r\n return function (control) {\r\n var promises = _executeAsyncValidators(control, presentValidators).map(_convertToPromise);\r\n return promise_1.PromiseWrapper.all(promises).then(_mergeErrors);\r\n };\r\n };\r\n return Validators;\r\n})();\r\nexports.Validators = Validators;\r\nfunction _convertToPromise(obj) {\r\n return promise_1.PromiseWrapper.isPromise(obj) ? obj : async_1.ObservableWrapper.toPromise(obj);\r\n}\r\nfunction _executeValidators(control, validators) {\r\n return validators.map(function (v) { return v(control); });\r\n}\r\nfunction _executeAsyncValidators(control, validators) {\r\n return validators.map(function (v) { return v(control); });\r\n}\r\nfunction _mergeErrors(arrayOfErrors) {\r\n var res = arrayOfErrors.reduce(function (res, errors) {\r\n return lang_1.isPresent(errors) ? collection_1.StringMapWrapper.merge(res, errors) : res;\r\n }, {});\r\n return collection_1.StringMapWrapper.isEmpty(res) ? null : res;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6WyJWYWxpZGF0b3JzIiwiVmFsaWRhdG9ycy5jb25zdHJ1Y3RvciIsIlZhbGlkYXRvcnMucmVxdWlyZWQiLCJWYWxpZGF0b3JzLm1pbkxlbmd0aCIsIlZhbGlkYXRvcnMubWF4TGVuZ3RoIiwiVmFsaWRhdG9ycy5wYXR0ZXJuIiwiVmFsaWRhdG9ycy5udWxsVmFsaWRhdG9yIiwiVmFsaWRhdG9ycy5jb21wb3NlIiwiVmFsaWRhdG9ycy5jb21wb3NlQXN5bmMiLCJfY29udmVydFRvUHJvbWlzZSIsIl9leGVjdXRlVmFsaWRhdG9ycyIsIl9leGVjdXRlQXN5bmNWYWxpZGF0b3JzIiwiX21lcmdlRXJyb3JzIl0sIm1hcHBpbmdzIjoiQUFBQSxxQkFBdUQsMEJBQTBCLENBQUMsQ0FBQTtBQUNsRix3QkFBNkIsNkJBQTZCLENBQUMsQ0FBQTtBQUMzRCxzQkFBZ0MsMkJBQTJCLENBQUMsQ0FBQTtBQUM1RCwyQkFBNEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RSxxQkFBMEIsZUFBZSxDQUFDLENBQUE7QUFLMUM7Ozs7Ozs7O0dBUUc7QUFDVSxxQkFBYSxHQUFnQixpQkFBVSxDQUFDLElBQUksa0JBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBRXRGOzs7Ozs7O0dBT0c7QUFDVSwyQkFBbUIsR0FBZ0IsaUJBQVUsQ0FBQyxJQUFJLGtCQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0FBRWpHOzs7Ozs7Ozs7OztHQVdHO0FBQ0g7SUFBQUE7SUE4RUFDLENBQUNBO0lBN0VDRDs7T0FFR0E7SUFDSUEsbUJBQVFBLEdBQWZBLFVBQWdCQSxPQUFvQ0E7UUFDbERFLE1BQU1BLENBQUNBLGNBQU9BLENBQUNBLE9BQU9BLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLGVBQVFBLENBQUNBLE9BQU9B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LEdBQUdBLEdBQUdBLHlCQUFpQkEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0E7QUFDaEZBLENBQUNBO0FBRUQsNEJBQTRCLE9BQW9DLEVBQ3BDLFVBQXlCO0lBQ25EQyxNQUFNQSxDQUFDQSxVQUFVQSxDQUFDQSxHQUFHQSxDQUFDQSxVQUFBQSxDQUFDQSxJQUFJQSxPQUFBQSxDQUFDQSxDQUFDQSxPQUFPQSxDQUFDQSxFQUFWQSxDQUFVQSxDQUFDQSxDQUFDQTtBQUN6Q0EsQ0FBQ0E7QUFFRCxpQ0FBaUMsT0FBb0MsRUFDcEMsVUFBOEI7SUFDN0RDLE1BQU1BLENBQUNBLFVBQVVBLENBQUNBLEdBQUdBLENBQUNBLFVBQUFBLENBQUNBLElBQUlBLE9BQUFBLENBQUNBLENBQUNBLE9BQU9BLENBQUNBLEVBQVZBLENBQVVBLENBQUNBLENBQUNBO0FBQ3pDQSxDQUFDQTtBQUVELHNCQUFzQixhQUFvQjtJQUN4Q0MsSUFBSUEsR0FBR0EsR0FDSEEsYUFBYUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsVUFBQ0EsR0FBeUJBLEVBQUVBLE1BQTRCQTtRQUMzRUEsTUFBTUEsQ0FBQ0EsZ0JBQVNBLENBQUNBLE1BQU1BLENBQUNBLEdBQUdBLDZCQUFnQkEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsR0FBR0EsRUFBRUEsTUFBTUEsQ0FBQ0EsR0FBR0EsR0FBR0EsQ0FBQ0E7SUFDdkVBLENBQUNBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBO0lBQ1hBLE1BQU1BLENBQUNBLDZCQUFnQkEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsR0FBR0EsR0FBR0EsQ0FBQ0E7QUFDcERBLENBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc0JsYW5rLCBpc1ByZXNlbnQsIENPTlNUX0VYUFIsIGlzU3RyaW5nfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtQcm9taXNlV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9wcm9taXNlJztcbmltcG9ydCB7T2JzZXJ2YWJsZVdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYXN5bmMnO1xuaW1wb3J0IHtMaXN0V3JhcHBlciwgU3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7T3BhcXVlVG9rZW59IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuXG5pbXBvcnQgKiBhcyBtb2RlbE1vZHVsZSBmcm9tICcuL21vZGVsJztcbmltcG9ydCB7VmFsaWRhdG9yRm4sIEFzeW5jVmFsaWRhdG9yRm59IGZyb20gJy4vZGlyZWN0aXZlcy92YWxpZGF0b3JzJztcblxuLyoqXG4gKiBQcm92aWRlcnMgZm9yIHZhbGlkYXRvcnMgdG8gYmUgdXNlZCBmb3Ige0BsaW5rIENvbnRyb2x9cyBpbiBhIGZvcm0uXG4gKlxuICogUHJvdmlkZSB0aGlzIHVzaW5nIGBtdWx0aTogdHJ1ZWAgdG8gYWRkIHZhbGlkYXRvcnMuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiB7QGV4YW1wbGUgY29yZS9mb3Jtcy90cy9uZ192YWxpZGF0b3JzL25nX3ZhbGlkYXRvcnMudHMgcmVnaW9uPSduZ192YWxpZGF0b3JzJ31cbiAqL1xuZXhwb3J0IGNvbnN0IE5HX1ZBTElEQVRPUlM6IE9wYXF1ZVRva2VuID0gQ09OU1RfRVhQUihuZXcgT3BhcXVlVG9rZW4oXCJOZ1ZhbGlkYXRvcnNcIikpO1xuXG4vKipcbiAqIFByb3ZpZGVycyBmb3IgYXN5bmNocm9ub3VzIHZhbGlkYXRvcnMgdG8gYmUgdXNlZCBmb3Ige0BsaW5rIENvbnRyb2x9c1xuICogaW4gYSBmb3JtLlxuICpcbiAqIFByb3ZpZGUgdGhpcyB1c2luZyBgbXVsdGk6IHRydWVgIHRvIGFkZCB2YWxpZGF0b3JzLlxuICpcbiAqIFNlZSB7QGxpbmsgTkdfVkFMSURBVE9SU30gZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IGNvbnN0IE5HX0FTWU5DX1ZBTElEQVRPUlM6IE9wYXF1ZVRva2VuID0gQ09OU1RfRVhQUihuZXcgT3BhcXVlVG9rZW4oXCJOZ0FzeW5jVmFsaWRhdG9yc1wiKSk7XG5cbi8qKlxuICogUHJvdmlkZXMgYSBzZXQgb2YgdmFsaWRhdG9ycyB1c2VkIGJ5IGZvcm0gY29udHJvbHMuXG4gKlxuICogQSB2YWxpZGF0b3IgaXMgYSBmdW5jdGlvbiB0aGF0IHByb2Nlc3NlcyBhIHtAbGluayBDb250cm9sfSBvciBjb2xsZWN0aW9uIG9mXG4gKiBjb250cm9scyBhbmQgcmV0dXJucyBhIG1hcCBvZiBlcnJvcnMuIEEgbnVsbCBtYXAgbWVhbnMgdGhhdCB2YWxpZGF0aW9uIGhhcyBwYXNzZWQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB2YXIgbG9naW5Db250cm9sID0gbmV3IENvbnRyb2woXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgVmFsaWRhdG9ycyB7XG4gIC8qKlxuICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBjb250cm9scyB0byBoYXZlIGEgbm9uLWVtcHR5IHZhbHVlLlxuICAgKi9cbiAgc3RhdGljIHJlcXVpcmVkKGNvbnRyb2w6IG1vZGVsTW9kdWxlLkFic3RyYWN0Q29udHJvbCk6IHtba2V5OiBzdHJpbmddOiBib29sZWFufSB7XG4gICAgcmV0dXJuIGlzQmxhbmsoY29udHJvbC52YWx1ZSkgfHwgKGlzU3RyaW5nKGNvbnRyb2wudmFsdWUpICYmIGNvbnRyb2wudmFsdWUgPT0gXCJcIikgP1xuICAgICAgICAgICAgICAge1wicmVxdWlyZWRcIjogdHJ1ZX0gOlxuICAgICAgICAgICAgICAgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBjb250cm9scyB0byBoYXZlIGEgdmFsdWUgb2YgYSBtaW5pbXVtIGxlbmd0aC5cbiAgICovXG4gIHN0YXRpYyBtaW5MZW5ndGgobWluTGVuZ3RoOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBtb2RlbE1vZHVsZS5BYnN0cmFjdENvbnRyb2wpOiB7W2tleTogc3RyaW5nXTogYW55fSA9PiB7XG4gICAgICBpZiAoaXNQcmVzZW50KFZhbGlkYXRvcnMucmVxdWlyZWQoY29udHJvbCkpKSByZXR1cm4gbnVsbDtcbiAgICAgIHZhciB2OiBzdHJpbmcgPSBjb250cm9sLnZhbHVlO1xuICAgICAgcmV0dXJuIHYubGVuZ3RoIDwgbWluTGVuZ3RoID9cbiAgICAgICAgICAgICAgICAge1wibWlubGVuZ3RoXCI6IHtcInJlcXVpcmVkTGVuZ3RoXCI6IG1pbkxlbmd0aCwgXCJhY3R1YWxMZW5ndGhcIjogdi5sZW5ndGh9fSA6XG4gICAgICAgICAgICAgICAgIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBjb250cm9scyB0byBoYXZlIGEgdmFsdWUgb2YgYSBtYXhpbXVtIGxlbmd0aC5cbiAgICovXG4gIHN0YXRpYyBtYXhMZW5ndGgobWF4TGVuZ3RoOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBtb2RlbE1vZHVsZS5BYnN0cmFjdENvbnRyb2wpOiB7W2tleTogc3RyaW5nXTogYW55fSA9PiB7XG4gICAgICBpZiAoaXNQcmVzZW50KFZhbGlkYXRvcnMucmVxdWlyZWQoY29udHJvbCkpKSByZXR1cm4gbnVsbDtcbiAgICAgIHZhciB2OiBzdHJpbmcgPSBjb250cm9sLnZhbHVlO1xuICAgICAgcmV0dXJuIHYubGVuZ3RoID4gbWF4TGVuZ3RoID9cbiAgICAgICAgICAgICAgICAge1wibWF4bGVuZ3RoXCI6IHtcInJlcXVpcmVkTGVuZ3RoXCI6IG1heExlbmd0aCwgXCJhY3R1YWxMZW5ndGhcIjogdi5sZW5ndGh9fSA6XG4gICAgICAgICAgICAgICAgIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0b3IgdGhhdCByZXF1aXJlcyBhIGNvbnRyb2wgdG8gbWF0Y2ggYSByZWdleCB0byBpdHMgdmFsdWUuXG4gICAqL1xuICBzdGF0aWMgcGF0dGVybihwYXR0ZXJuOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBtb2RlbE1vZHVsZS5BYnN0cmFjdENvbnRyb2wpOiB7W2tleTogc3RyaW5nXTogYW55fSA9PiB7XG4gICAgICBpZiAoaXNQcmVzZW50KFZhbGlkYXRvcnMucmVxdWlyZWQoY29udHJvbCkpKSByZXR1cm4gbnVsbDtcbiAgICAgIGxldCByZWdleCA9IG5ldyBSZWdFeHAoYF4ke3BhdHRlcm59JGApO1xuICAgICAgbGV0IHY6IHN0cmluZyA9IGNvbnRyb2wudmFsdWU7XG4gICAgICByZXR1cm4gcmVnZXgudGVzdCh2KSA/IG51bGwgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XCJwYXR0ZXJuXCI6IHtcInJlcXVpcmVkUGF0dGVyblwiOiBgXiR7cGF0dGVybn0kYCwgXCJhY3R1YWxWYWx1ZVwiOiB2fX07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOby1vcCB2YWxpZGF0b3IuXG4gICAqL1xuICBzdGF0aWMgbnVsbFZhbGlkYXRvcihjOiBtb2RlbE1vZHVsZS5BYnN0cmFjdENvbnRyb2wpOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn0geyByZXR1cm4gbnVsbDsgfVxuXG4gIC8qKlxuICAgKiBDb21wb3NlIG11bHRpcGxlIHZhbGlkYXRvcnMgaW50byBhIHNpbmdsZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHVuaW9uXG4gICAqIG9mIHRoZSBpbmRpdmlkdWFsIGVycm9yIG1hcHMuXG4gICAqL1xuICBzdGF0aWMgY29tcG9zZSh2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdKTogVmFsaWRhdG9yRm4ge1xuICAgIGlmIChpc0JsYW5rKHZhbGlkYXRvcnMpKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgcHJlc2VudFZhbGlkYXRvcnMgPSB2YWxpZGF0b3JzLmZpbHRlcihpc1ByZXNlbnQpO1xuICAgIGlmIChwcmVzZW50VmFsaWRhdG9ycy5sZW5ndGggPT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24oY29udHJvbDogbW9kZWxNb2R1bGUuQWJzdHJhY3RDb250cm9sKSB7XG4gICAgICByZXR1cm4gX21lcmdlRXJyb3JzKF9leGVjdXRlVmFsaWRhdG9ycyhjb250cm9sLCBwcmVzZW50VmFsaWRhdG9ycykpO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgY29tcG9zZUFzeW5jKHZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm5bXSk6IEFzeW5jVmFsaWRhdG9yRm4ge1xuICAgIGlmIChpc0JsYW5rKHZhbGlkYXRvcnMpKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgcHJlc2VudFZhbGlkYXRvcnMgPSB2YWxpZGF0b3JzLmZpbHRlcihpc1ByZXNlbnQpO1xuICAgIGlmIChwcmVzZW50VmFsaWRhdG9ycy5sZW5ndGggPT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24oY29udHJvbDogbW9kZWxNb2R1bGUuQWJzdHJhY3RDb250cm9sKSB7XG4gICAgICBsZXQgcHJvbWlzZXMgPSBfZXhlY3V0ZUFzeW5jVmFsaWRhdG9ycyhjb250cm9sLCBwcmVzZW50VmFsaWRhdG9ycykubWFwKF9jb252ZXJ0VG9Qcm9taXNlKTtcbiAgICAgIHJldHVybiBQcm9taXNlV3JhcHBlci5hbGwocHJvbWlzZXMpLnRoZW4oX21lcmdlRXJyb3JzKTtcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIF9jb252ZXJ0VG9Qcm9taXNlKG9iajogYW55KTogYW55IHtcbiAgcmV0dXJuIFByb21pc2VXcmFwcGVyLmlzUHJvbWlzZShvYmopID8gb2JqIDogT2JzZXJ2YWJsZVdyYXBwZXIudG9Qcm9taXNlKG9iaik7XG59XG5cbmZ1bmN0aW9uIF9leGVjdXRlVmFsaWRhdG9ycyhjb250cm9sOiBtb2RlbE1vZHVsZS5BYnN0cmFjdENvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSk6IGFueVtdIHtcbiAgcmV0dXJuIHZhbGlkYXRvcnMubWFwKHYgPT4gdihjb250cm9sKSk7XG59XG5cbmZ1bmN0aW9uIF9leGVjdXRlQXN5bmNWYWxpZGF0b3JzKGNvbnRyb2w6IG1vZGVsTW9kdWxlLkFic3RyYWN0Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm5bXSk6IGFueVtdIHtcbiAgcmV0dXJuIHZhbGlkYXRvcnMubWFwKHYgPT4gdihjb250cm9sKSk7XG59XG5cbmZ1bmN0aW9uIF9tZXJnZUVycm9ycyhhcnJheU9mRXJyb3JzOiBhbnlbXSk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAgdmFyIHJlczoge1trZXk6IHN0cmluZ106IGFueX0gPVxuICAgICAgYXJyYXlPZkVycm9ycy5yZWR1Y2UoKHJlczoge1trZXk6IHN0cmluZ106IGFueX0sIGVycm9yczoge1trZXk6IHN0cmluZ106IGFueX0pID0+IHtcbiAgICAgICAgcmV0dXJuIGlzUHJlc2VudChlcnJvcnMpID8gU3RyaW5nTWFwV3JhcHBlci5tZXJnZShyZXMsIGVycm9ycykgOiByZXM7XG4gICAgICB9LCB7fSk7XG4gIHJldHVybiBTdHJpbmdNYXBXcmFwcGVyLmlzRW1wdHkocmVzKSA/IG51bGwgOiByZXM7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar validators_1 = require('../validators');\r\nvar lang_2 = require(\"angular2/src/facade/lang\");\r\nvar REQUIRED_VALIDATOR = lang_1.CONST_EXPR(new core_1.Provider(validators_1.NG_VALIDATORS, { useValue: validators_1.Validators.required, multi: true }));\r\n/**\r\n * A Directive that adds the `required` validator to any controls marked with the\r\n * `required` attribute, via the {@link NG_VALIDATORS} binding.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * <input ngControl=\"fullName\" required>\r\n * ```\r\n */\r\nvar RequiredValidator = (function () {\r\n function RequiredValidator() {\r\n }\r\n RequiredValidator = __decorate([\r\n core_1.Directive({\r\n selector: '[required][ngControl],[required][ngFormControl],[required][ngModel]',\r\n providers: [REQUIRED_VALIDATOR]\r\n }), \r\n __metadata('design:paramtypes', [])\r\n ], RequiredValidator);\r\n return RequiredValidator;\r\n})();\r\nexports.RequiredValidator = RequiredValidator;\r\n/**\r\n * Provivder which adds {@link MinLengthValidator} to {@link NG_VALIDATORS}.\r\n *\r\n * ## Example:\r\n *\r\n * {@example common/forms/ts/validators/validators.ts region='min'}\r\n */\r\nvar MIN_LENGTH_VALIDATOR = lang_1.CONST_EXPR(new core_1.Provider(validators_1.NG_VALIDATORS, { useExisting: core_1.forwardRef(function () { return MinLengthValidator; }), multi: true }));\r\n/**\r\n * A directive which installs the {@link MinLengthValidator} for any `ngControl`,\r\n * `ngFormControl`, or control with `ngModel` that also has a `minlength` attribute.\r\n */\r\nvar MinLengthValidator = (function () {\r\n function MinLengthValidator(minLength) {\r\n this._validator = validators_1.Validators.minLength(lang_2.NumberWrapper.parseInt(minLength, 10));\r\n }\r\n MinLengthValidator.prototype.validate = function (c) { return this._validator(c); };\r\n MinLengthValidator = __decorate([\r\n core_1.Directive({\r\n selector: '[minlength][ngControl],[minlength][ngFormControl],[minlength][ngModel]',\r\n providers: [MIN_LENGTH_VALIDATOR]\r\n }),\r\n __param(0, core_1.Attribute(\"minlength\")), \r\n __metadata('design:paramtypes', [String])\r\n ], MinLengthValidator);\r\n return MinLengthValidator;\r\n})();\r\nexports.MinLengthValidator = MinLengthValidator;\r\n/**\r\n * Provider which adds {@link MaxLengthValidator} to {@link NG_VALIDATORS}.\r\n *\r\n * ## Example:\r\n *\r\n * {@example common/forms/ts/validators/validators.ts region='max'}\r\n */\r\nvar MAX_LENGTH_VALIDATOR = lang_1.CONST_EXPR(new core_1.Provider(validators_1.NG_VALIDATORS, { useExisting: core_1.forwardRef(function () { return MaxLengthValidator; }), multi: true }));\r\n/**\r\n * A directive which installs the {@link MaxLengthValidator} for any `ngControl, `ngFormControl`,\r\n * or control with `ngModel` that also has a `maxlength` attribute.\r\n */\r\nvar MaxLengthValidator = (function () {\r\n function MaxLengthValidator(maxLength) {\r\n this._validator = validators_1.Validators.maxLength(lang_2.NumberWrapper.parseInt(maxLength, 10));\r\n }\r\n MaxLengthValidator.prototype.validate = function (c) { return this._validator(c); };\r\n MaxLengthValidator = __decorate([\r\n core_1.Directive({\r\n selector: '[maxlength][ngControl],[maxlength][ngFormControl],[maxlength][ngModel]',\r\n providers: [MAX_LENGTH_VALIDATOR]\r\n }),\r\n __param(0, core_1.Attribute(\"maxlength\")), \r\n __metadata('design:paramtypes', [String])\r\n ], MaxLengthValidator);\r\n return MaxLengthValidator;\r\n})();\r\nexports.MaxLengthValidator = MaxLengthValidator;\r\n/**\r\n * A Directive that adds the `pattern` validator to any controls marked with the\r\n * `pattern` attribute, via the {@link NG_VALIDATORS} binding. Uses attribute value\r\n * as the regex to validate Control value against. Follows pattern attribute\r\n * semantics; i.e. regex must match entire Control value.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * <input [ngControl]=\"fullName\" pattern=\"[a-zA-Z ]*\">\r\n * ```\r\n */\r\nvar PATTERN_VALIDATOR = lang_1.CONST_EXPR(new core_1.Provider(validators_1.NG_VALIDATORS, { useExisting: core_1.forwardRef(function () { return PatternValidator; }), multi: true }));\r\nvar PatternValidator = (function () {\r\n function PatternValidator(pattern) {\r\n this._validator = validators_1.Validators.pattern(pattern);\r\n }\r\n PatternValidator.prototype.validate = function (c) { return this._validator(c); };\r\n PatternValidator = __decorate([\r\n core_1.Directive({\r\n selector: '[pattern][ngControl],[pattern][ngFormControl],[pattern][ngModel]',\r\n providers: [PATTERN_VALIDATOR]\r\n }),\r\n __param(0, core_1.Attribute(\"pattern\")), \r\n __metadata('design:paramtypes', [String])\r\n ], PatternValidator);\r\n return PatternValidator;\r\n})();\r\nexports.PatternValidator = PatternValidator;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbIlJlcXVpcmVkVmFsaWRhdG9yIiwiUmVxdWlyZWRWYWxpZGF0b3IuY29uc3RydWN0b3IiLCJNaW5MZW5ndGhWYWxpZGF0b3IiLCJNaW5MZW5ndGhWYWxpZGF0b3IuY29uc3RydWN0b3IiLCJNaW5MZW5ndGhWYWxpZGF0b3IudmFsaWRhdGUiLCJNYXhMZW5ndGhWYWxpZGF0b3IiLCJNYXhMZW5ndGhWYWxpZGF0b3IuY29uc3RydWN0b3IiLCJNYXhMZW5ndGhWYWxpZGF0b3IudmFsaWRhdGUiLCJQYXR0ZXJuVmFsaWRhdG9yIiwiUGF0dGVyblZhbGlkYXRvci5jb25zdHJ1Y3RvciIsIlBhdHRlcm5WYWxpZGF0b3IudmFsaWRhdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHFCQUF5RCxlQUFlLENBQUMsQ0FBQTtBQUN6RSxxQkFBeUIsMEJBQTBCLENBQUMsQ0FBQTtBQUNwRCwyQkFBd0MsZUFBZSxDQUFDLENBQUE7QUFHeEQscUJBQTRCLDBCQUEwQixDQUFDLENBQUE7QUF1QnZELElBQU0sa0JBQWtCLEdBQ3BCLGlCQUFVLENBQUMsSUFBSSxlQUFRLENBQUMsMEJBQWEsRUFBRSxFQUFDLFFBQVEsRUFBRSx1QkFBVSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTFGOzs7Ozs7Ozs7R0FTRztBQUNIO0lBQUFBO0lBS0FDLENBQUNBO0lBTEREO1FBQUNBLGdCQUFTQSxDQUFDQTtZQUNUQSxRQUFRQSxFQUFFQSxxRUFBcUVBO1lBQy9FQSxTQUFTQSxFQUFFQSxDQUFDQSxrQkFBa0JBLENBQUNBO1NBQ2hDQSxDQUFDQTs7MEJBRURBO0lBQURBLHdCQUFDQTtBQUFEQSxDQUFDQSxBQUxELElBS0M7QUFEWSx5QkFBaUIsb0JB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RUFBRUEsQ0FBQ0EsaUJBQWlCQSxDQUFDQTtTQUMvQkEsQ0FBQ0E7UUFJWUEsV0FBQ0EsZ0JBQVNBLENBQUNBLFNBQVNBLENBQUNBLENBQUFBOzt5QkFLbENBO0lBQURBLHVCQUFDQTtBQUFEQSxDQUFDQSxBQVpELElBWUM7QUFSWSx3QkFBZ0IsbUJBUTVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2ZvcndhcmRSZWYsIFByb3ZpZGVyLCBBdHRyaWJ1dGUsIERpcmVjdGl2ZX0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge0NPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1ZhbGlkYXRvcnMsIE5HX1ZBTElEQVRPUlN9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2x9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCAqIGFzIG1vZGVsTW9kdWxlIGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7TnVtYmVyV3JhcHBlcn0gZnJvbSBcImFuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZ1wiO1xuXG5cblxuLyoqXG4gKiBBbiBpbnRlcmZhY2UgdGhhdCBjYW4gYmUgaW1wbGVtZW50ZWQgYnkgY2xhc3NlcyB0aGF0IGNhbiBhY3QgYXMgdmFsaWRhdG9ycy5cbiAqXG4gKiAjIyBVc2FnZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBEaXJlY3RpdmUoe1xuICogICBzZWxlY3RvcjogJ1tjdXN0b20tdmFsaWRhdG9yXScsXG4gKiAgIHByb3ZpZGVyczogW3Byb3ZpZGUoTkdfVkFMSURBVE9SUywge3VzZUV4aXN0aW5nOiBDdXN0b21WYWxpZGF0b3JEaXJlY3RpdmUsIG11bHRpOiB0cnVlfSldXG4gKiB9KVxuICogY2xhc3MgQ3VzdG9tVmFsaWRhdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcbiAqICAgdmFsaWRhdGUoYzogQ29udHJvbCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAqICAgICByZXR1cm4ge1wiY3VzdG9tXCI6IHRydWV9O1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0b3IgeyB2YWxpZGF0ZShjOiBtb2RlbE1vZHVsZS5BYnN0cmFjdENvbnRyb2wpOiB7W2tleTogc3RyaW5nXTogYW55fTsgfVxuXG5jb25zdCBSRVFVSVJFRF9WQUxJREFUT1IgPVxuICAgIENPTlNUX0VYUFIobmV3IFByb3ZpZGVyKE5HX1ZBTElEQVRPUlMsIHt1c2VWYWx1ZTogVmFsaWRhdG9ycy5yZXF1aXJlZCwgbXVsdGk6IHRydWV9KSk7XG5cbi8qKlxuICogQSBEaXJlY3RpdmUgdGhhdCBhZGRzIHRoZSBgcmVxdWlyZWRgIHZhbGlkYXRvciB0byBhbnkgY29udHJvbHMgbWFya2VkIHdpdGggdGhlXG4gKiBgcmVxdWlyZWRgIGF0dHJpYnV0ZSwgdmlhIHRoZSB7QGxpbmsgTkdfVkFMSURBVE9SU30gYmluZGluZy5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYFxuICogPGlucHV0IG5nQ29udHJvbD1cImZ1bGxOYW1lXCIgcmVxdWlyZWQ+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3JlcXVpcmVkXVtuZ0NvbnRyb2xdLFtyZXF1aXJlZF1bbmdGb3JtQ29udHJvbF0sW3JlcXVpcmVkXVtuZ01vZGVsXScsXG4gIHByb3ZpZGVyczogW1JFUVVJUkVEX1ZBTElEQVRPUl1cbn0pXG5leHBvcnQgY2xhc3MgUmVxdWlyZWRWYWxpZGF0b3Ige1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckZuIHsgKGM6IEFic3RyYWN0Q29udHJvbCk6IHtba2V5OiBzdHJpbmddOiBhbnl9OyB9XG5leHBvcnQgaW50ZXJmYWNlIEFzeW5jVmFsaWRhdG9yRm4ge1xuICAoYzogQWJzdHJhY3RDb250cm9sKTogYW55IC8qUHJvbWlzZTx7W2tleTogc3RyaW5nXTogYW55fT58T2JzZXJ2YWJsZTx7W2tleTogc3RyaW5nXTogYW55fT4qLztcbn1cblxuLyoqXG4gKiBQcm92aXZkZXIgd2hpY2ggYWRkcyB7QGxpbmsgTWluTGVuZ3RoVmFsaWRhdG9yfSB0byB7QGxpbmsgTkdfVkFMSURBVE9SU30uXG4gKlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiB7QGV4YW1wbGUgY29tbW9uL2Zvcm1zL3RzL3ZhbGlkYXRvcnMvdmFsaWRhdG9ycy50cyByZWdpb249J21pbid9XG4gKi9cbmNvbnN0IE1JTl9MRU5HVEhfVkFMSURBVE9SID0gQ09OU1RfRVhQUihcbiAgICBuZXcgUHJvdmlkZXIoTkdfVkFMSURBVE9SUywge3VzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1pbkxlbmd0aFZhbGlkYXRvciksIG11bHRpOiB0cnVlfSkpO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIHdoaWNoIGluc3RhbGxzIHRoZSB7QGxpbmsgTWluTGVuZ3RoVmFsaWRhdG9yfSBmb3IgYW55IGBuZ0NvbnRyb2xgLFxuICogYG5nRm9ybUNvbnRyb2xgLCBvciBjb250cm9sIHdpdGggYG5nTW9kZWxgIHRoYXQgYWxzbyBoYXMgYSBgbWlubGVuZ3RoYCBhdHRyaWJ1dGUuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttaW5sZW5ndGhdW25nQ29udHJvbF0sW21pbmxlbmd0aF1bbmdGb3JtQ29udHJvbF0sW21pbmxlbmd0aF1bbmdNb2RlbF0nLFxuICBwcm92aWRlcnM6IFtNSU5fTEVOR1RIX1ZBTElEQVRPUl1cbn0pXG5leHBvcnQgY2xhc3MgTWluTGVuZ3RoVmFsaWRhdG9yIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcbiAgcHJpdmF0ZSBfdmFsaWRhdG9yOiBWYWxpZGF0b3JGbjtcblxuICBjb25zdHJ1Y3RvcihAQXR0cmlidXRlKFwibWlubGVuZ3RoXCIpIG1pbkxlbmd0aDogc3RyaW5nKSB7XG4gICAgdGhpcy5fdmFsaWRhdG9yID0gVmFsaWRhdG9ycy5taW5MZW5ndGgoTnVtYmVyV3JhcHBlci5wYXJzZUludChtaW5MZW5ndGgsIDEwKSk7XG4gIH1cblxuICB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiB7W2tleTogc3RyaW5nXTogYW55fSB7IHJldHVybiB0aGlzLl92YWxpZGF0b3IoYyk7IH1cbn1cblxuLyoqXG4gKiBQcm92aWRlciB3aGljaCBhZGRzIHtAbGluayBNYXhMZW5ndGhWYWxpZGF0b3J9IHRvIHtAbGluayBOR19WQUxJREFUT1JTfS5cbiAqXG4gKiAjIyBFeGFtcGxlOlxuICpcbiAqIHtAZXhhbXBsZSBjb21tb24vZm9ybXMvdHMvdmFsaWRhdG9ycy92YWxpZGF0b3JzLnRzIHJlZ2lvbj0nbWF4J31cbiAqL1xuY29uc3QgTUFYX0xFTkdUSF9WQUxJREFUT1IgPSBDT05TVF9FWFBSKFxuICAgIG5ldyBQcm92aWRlcihOR19WQUxJREFUT1JTLCB7dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWF4TGVuZ3RoVmFsaWRhdG9yKSwgbXVsdGk6IHRydWV9KSk7XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgd2hpY2ggaW5zdGFsbHMgdGhlIHtAbGluayBNYXhMZW5ndGhWYWxpZGF0b3J9IGZvciBhbnkgYG5nQ29udHJvbCwgYG5nRm9ybUNvbnRyb2xgLFxuICogb3IgY29udHJvbCB3aXRoIGBuZ01vZGVsYCB0aGF0IGFsc28gaGFzIGEgYG1heGxlbmd0aGAgYXR0cmlidXRlLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbWF4bGVuZ3RoXVtuZ0NvbnRyb2xdLFttYXhsZW5ndGhdW25nRm9ybUNvbnRyb2xdLFttYXhsZW5ndGhdW25nTW9kZWxdJyxcbiAgcHJvdmlkZXJzOiBbTUFYX0xFTkdUSF9WQUxJREFUT1JdXG59KVxuZXhwb3J0IGNsYXNzIE1heExlbmd0aFZhbGlkYXRvciBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XG4gIHByaXZhdGUgX3ZhbGlkYXRvcjogVmFsaWRhdG9yRm47XG5cbiAgY29uc3RydWN0b3IoQEF0dHJpYnV0ZShcIm1heGxlbmd0aFwiKSBtYXhMZW5ndGg6IHN0cmluZykge1xuICAgIHRoaXMuX3ZhbGlkYXRvciA9IFZhbGlkYXRvcnMubWF4TGVuZ3RoKE51bWJlcldyYXBwZXIucGFyc2VJbnQobWF4TGVuZ3RoLCAxMCkpO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKToge1trZXk6IHN0cmluZ106IGFueX0geyByZXR1cm4gdGhpcy5fdmFsaWRhdG9yKGMpOyB9XG59XG5cblxuLyoqXG4gKiBBIERpcmVjdGl2ZSB0aGF0IGFkZHMgdGhlIGBwYXR0ZXJuYCB2YWxpZGF0b3IgdG8gYW55IGNvbnRyb2xzIG1hcmtlZCB3aXRoIHRoZVxuICogYHBhdHRlcm5gIGF0dHJpYnV0ZSwgdmlhIHRoZSB7QGxpbmsgTkdfVkFMSURBVE9SU30gYmluZGluZy4gVXNlcyBhdHRyaWJ1dGUgdmFsdWVcbiAqIGFzIHRoZSByZWdleCB0byB2YWxpZGF0ZSBDb250cm9sIHZhbHVlIGFnYWluc3QuICBGb2xsb3dzIHBhdHRlcm4gYXR0cmlidXRlXG4gKiBzZW1hbnRpY3M7IGkuZS4gcmVnZXggbXVzdCBtYXRjaCBlbnRpcmUgQ29udHJvbCB2YWx1ZS5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYFxuICogPGlucHV0IFtuZ0NvbnRyb2xdPVwiZnVsbE5hbWVcIiBwYXR0ZXJuPVwiW2EtekEtWiBdKlwiPlxuICogYGBgXG4gKi9cbmNvbnN0IFBBVFRFUk5fVkFMSURBVE9SID0gQ09OU1RfRVhQUihcbiAgICBuZXcgUHJvdmlkZXIoTkdfVkFMSURBVE9SUywge3VzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBhdHRlcm5WYWxpZGF0b3IpLCBtdWx0aTogdHJ1ZX0pKTtcbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1twYXR0ZXJuXVtuZ0NvbnRyb2xdLFtwYXR0ZXJuXVtuZ0Zvcm1Db250cm9sXSxbcGF0dGVybl1bbmdNb2RlbF0nLFxuICBwcm92aWRlcnM6IFtQQVRURVJOX1ZBTElEQVRPUl1cbn0pXG5leHBvcnQgY2xhc3MgUGF0dGVyblZhbGlkYXRvciBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XG4gIHByaXZhdGUgX3ZhbGlkYXRvcjogVmFsaWRhdG9yRm47XG5cbiAgY29uc3RydWN0b3IoQEF0dHJpYnV0ZShcInBhdHRlcm5cIikgcGF0dGVybjogc3RyaW5nKSB7XG4gICAgdGhpcy5fdmFsaWRhdG9yID0gVmFsaWRhdG9ycy5wYXR0ZXJuKHBhdHRlcm4pO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKToge1trZXk6IHN0cmluZ106IGFueX0geyByZXR1cm4gdGhpcy5fdmFsaWRhdG9yKGMpOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar promise_1 = require('angular2/src/facade/promise');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\n/**\r\n * Indicates that a Control is valid, i.e. that no errors exist in the input value.\r\n */\r\nexports.VALID = \"VALID\";\r\n/**\r\n * Indicates that a Control is invalid, i.e. that an error exists in the input value.\r\n */\r\nexports.INVALID = \"INVALID\";\r\n/**\r\n * Indicates that a Control is pending, i.e. that async validation is occurring and\r\n * errors are not yet available for the input value.\r\n */\r\nexports.PENDING = \"PENDING\";\r\nfunction isControl(control) {\r\n return control instanceof AbstractControl;\r\n}\r\nexports.isControl = isControl;\r\nfunction _find(control, path) {\r\n if (lang_1.isBlank(path))\r\n return null;\r\n if (!(path instanceof Array)) {\r\n path = path.split(\"/\");\r\n }\r\n if (path instanceof Array && collection_1.ListWrapper.isEmpty(path))\r\n return null;\r\n return path\r\n .reduce(function (v, name) {\r\n if (v instanceof ControlGroup) {\r\n return lang_1.isPresent(v.controls[name]) ? v.controls[name] : null;\r\n }\r\n else if (v instanceof ControlArray) {\r\n var index = name;\r\n return lang_1.isPresent(v.at(index)) ? v.at(index) : null;\r\n }\r\n else {\r\n return null;\r\n }\r\n }, control);\r\n}\r\nfunction toObservable(r) {\r\n return promise_1.PromiseWrapper.isPromise(r) ? async_1.ObservableWrapper.fromPromise(r) : r;\r\n}\r\n/**\r\n *\r\n */\r\nvar AbstractControl = (function () {\r\n function AbstractControl(validator, asyncValidator) {\r\n this.validator = validator;\r\n this.asyncValidator = asyncValidator;\r\n this._pristine = true;\r\n this._touched = false;\r\n }\r\n Object.defineProperty(AbstractControl.prototype, \"value\", {\r\n get: function () { return this._value; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"status\", {\r\n get: function () { return this._status; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"valid\", {\r\n get: function () { return this._status === exports.VALID; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"errors\", {\r\n /**\r\n * Returns the errors of this control.\r\n */\r\n get: function () { return this._errors; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"pristine\", {\r\n get: function () { return this._pristine; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"dirty\", {\r\n get: function () { return !this.pristine; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"touched\", {\r\n get: function () { return this._touched; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"untouched\", {\r\n get: function () { return !this._touched; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"valueChanges\", {\r\n get: function () { return this._valueChanges; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"statusChanges\", {\r\n get: function () { return this._statusChanges; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControl.prototype, \"pending\", {\r\n get: function () { return this._status == exports.PENDING; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AbstractControl.prototype.markAsTouched = function () { this._touched = true; };\r\n AbstractControl.prototype.markAsDirty = function (_a) {\r\n var onlySelf = (_a === void 0 ? {} : _a).onlySelf;\r\n onlySelf = lang_1.normalizeBool(onlySelf);\r\n this._pristine = false;\r\n if (lang_1.isPresent(this._parent) && !onlySelf) {\r\n this._parent.markAsDirty({ onlySelf: onlySelf });\r\n }\r\n };\r\n AbstractControl.prototype.markAsPending = function (_a) {\r\n var onlySelf = (_a === void 0 ? {} : _a).onlySelf;\r\n onlySelf = lang_1.normalizeBool(onlySelf);\r\n this._status = exports.PENDING;\r\n if (lang_1.isPresent(this._parent) && !onlySelf) {\r\n this._parent.markAsPending({ onlySelf: onlySelf });\r\n }\r\n };\r\n AbstractControl.prototype.setParent = function (parent) { this._parent = parent; };\r\n AbstractControl.prototype.updateValueAndValidity = function (_a) {\r\n var _b = _a === void 0 ? {} : _a, onlySelf = _b.onlySelf, emitEvent = _b.emitEvent;\r\n onlySelf = lang_1.normalizeBool(onlySelf);\r\n emitEvent = lang_1.isPresent(emitEvent) ? emitEvent : true;\r\n this._updateValue();\r\n this._errors = this._runValidator();\r\n this._status = this._calculateStatus();\r\n if (this._status == exports.VALID || this._status == exports.PENDING) {\r\n this._runAsyncValidator(emitEvent);\r\n }\r\n if (emitEvent) {\r\n async_1.ObservableWrapper.callEmit(this._valueChanges, this._value);\r\n async_1.ObservableWrapper.callEmit(this._statusChanges, this._status);\r\n }\r\n if (lang_1.isPresent(this._parent) && !onlySelf) {\r\n this._parent.updateValueAndValidity({ onlySelf: onlySelf, emitEvent: emitEvent });\r\n }\r\n };\r\n AbstractControl.prototype._runValidator = function () {\r\n return lang_1.isPresent(this.validator) ? this.validator(this) : null;\r\n };\r\n AbstractControl.prototype._runAsyncValidator = function (emitEvent) {\r\n var _this = this;\r\n if (lang_1.isPresent(this.asyncValidator)) {\r\n this._status = exports.PENDING;\r\n this._cancelExistingSubscription();\r\n var obs = toObservable(this.asyncValidator(this));\r\n this._asyncValidationSubscription = async_1.ObservableWrapper.subscribe(obs, function (res) { return _this.setErrors(res, { emitEvent: emitEvent }); });\r\n }\r\n };\r\n AbstractControl.prototype._cancelExistingSubscription = function () {\r\n if (lang_1.isPresent(this._asyncValidationSubscription)) {\r\n async_1.ObservableWrapper.dispose(this._asyncValidationSubscription);\r\n }\r\n };\r\n /**\r\n * Sets errors on a control.\r\n *\r\n * This is used when validations are run not automatically, but manually by the user.\r\n *\r\n * Calling `setErrors` will also update the validity of the parent control.\r\n *\r\n * ## Usage\r\n *\r\n * ```\r\n * var login = new Control(\"someLogin\");\r\n * login.setErrors({\r\n * \"notUnique\": true\r\n * });\r\n *\r\n * expect(login.valid).toEqual(false);\r\n * expect(login.errors).toEqual({\"notUnique\": true});\r\n *\r\n * login.updateValue(\"someOtherLogin\");\r\n *\r\n * expect(login.valid).toEqual(true);\r\n * ```\r\n */\r\n AbstractControl.prototype.setErrors = function (errors, _a) {\r\n var emitEvent = (_a === void 0 ? {} : _a).emitEvent;\r\n emitEvent = lang_1.isPresent(emitEvent) ? emitEvent : true;\r\n this._errors = errors;\r\n this._status = this._calculateStatus();\r\n if (emitEvent) {\r\n async_1.ObservableWrapper.callEmit(this._statusChanges, this._status);\r\n }\r\n if (lang_1.isPresent(this._parent)) {\r\n this._parent._updateControlsErrors();\r\n }\r\n };\r\n AbstractControl.prototype.find = function (path) { return _find(this, path); };\r\n AbstractControl.prototype.getError = function (errorCode, path) {\r\n if (path === void 0) { path = null; }\r\n var control = lang_1.isPresent(path) && !collection_1.ListWrapper.isEmpty(path) ? this.find(path) : this;\r\n if (lang_1.isPresent(control) && lang_1.isPresent(control._errors)) {\r\n return collection_1.StringMapWrapper.get(control._errors, errorCode);\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n AbstractControl.prototype.hasError = function (errorCode, path) {\r\n if (path === void 0) { path = null; }\r\n return lang_1.isPresent(this.getError(errorCode, path));\r\n };\r\n Object.defineProperty(AbstractControl.prototype, \"root\", {\r\n get: function () {\r\n var x = this;\r\n while (lang_1.isPresent(x._parent)) {\r\n x = x._parent;\r\n }\r\n return x;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** @internal */\r\n AbstractControl.prototype._updateControlsErrors = function () {\r\n this._status = this._calculateStatus();\r\n if (lang_1.isPresent(this._parent)) {\r\n this._parent._updateControlsErrors();\r\n }\r\n };\r\n /** @internal */\r\n AbstractControl.prototype._initObservables = function () {\r\n this._valueChanges = new async_1.EventEmitter();\r\n this._statusChanges = new async_1.EventEmitter();\r\n };\r\n AbstractControl.prototype._calculateStatus = function () {\r\n if (lang_1.isPresent(this._errors))\r\n return exports.INVALID;\r\n if (this._anyControlsHaveStatus(exports.PENDING))\r\n return exports.PENDING;\r\n if (this._anyControlsHaveStatus(exports.INVALID))\r\n return exports.INVALID;\r\n return exports.VALID;\r\n };\r\n return AbstractControl;\r\n})();\r\nexports.AbstractControl = AbstractControl;\r\n/**\r\n * Defines a part of a form that cannot be divided into other controls. `Control`s have values and\r\n * validation state, which is determined by an optional validation function.\r\n *\r\n * `Control` is one of the three fundamental building blocks used to define forms in Angular, along\r\n * with {@link ControlGroup} and {@link ControlArray}.\r\n *\r\n * ## Usage\r\n *\r\n * By default, a `Control` is created for every `<input>` or other form component.\r\n * With {@link NgFormControl} or {@link NgFormModel} an existing {@link Control} can be\r\n * bound to a DOM element instead. This `Control` can be configured with a custom\r\n * validation function.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/23DESOpbNnBpBHZt1BR4?p=preview))\r\n */\r\nvar Control = (function (_super) {\r\n __extends(Control, _super);\r\n function Control(value, validator, asyncValidator) {\r\n if (value === void 0) { value = null; }\r\n if (validator === void 0) { validator = null; }\r\n if (asyncValidator === void 0) { asyncValidator = null; }\r\n _super.call(this, validator, asyncValidator);\r\n this._value = value;\r\n this.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n this._initObservables();\r\n }\r\n /**\r\n * Set the value of the control to `value`.\r\n *\r\n * If `onlySelf` is `true`, this change will only affect the validation of this `Control`\r\n * and not its parent component. If `emitEvent` is `true`, this change will cause a\r\n * `valueChanges` event on the `Control` to be emitted. Both of these options default to\r\n * `false`.\r\n *\r\n * If `emitModelToViewChange` is `true`, the view will be notified about the new value\r\n * via an `onChange` event. This is the default behavior if `emitModelToViewChange` is not\r\n * specified.\r\n */\r\n Control.prototype.updateValue = function (value, _a) {\r\n var _b = _a === void 0 ? {} : _a, onlySelf = _b.onlySelf, emitEvent = _b.emitEvent, emitModelToViewChange = _b.emitModelToViewChange;\r\n emitModelToViewChange = lang_1.isPresent(emitModelToViewChange) ? emitModelToViewChange : true;\r\n this._value = value;\r\n if (lang_1.isPresent(this._onChange) && emitModelToViewChange)\r\n this._onChange(this._value);\r\n this.updateValueAndValidity({ onlySelf: onlySelf, emitEvent: emitEvent });\r\n };\r\n /**\r\n * @internal\r\n */\r\n Control.prototype._updateValue = function () { };\r\n /**\r\n * @internal\r\n */\r\n Control.prototype._anyControlsHaveStatus = function (status) { return false; };\r\n /**\r\n * Register a listener for change events.\r\n */\r\n Control.prototype.registerOnChange = function (fn) { this._onChange = fn; };\r\n return Control;\r\n})(AbstractControl);\r\nexports.Control = Control;\r\n/**\r\n * Defines a part of a form, of fixed length, that can contain other controls.\r\n *\r\n * A `ControlGroup` aggregates the values and errors of each {@link Control} in the group. Thus, if\r\n * one of the controls in a group is invalid, the entire group is invalid. Similarly, if a control\r\n * changes its value, the entire group changes as well.\r\n *\r\n * `ControlGroup` is one of the three fundamental building blocks used to define forms in Angular,\r\n * along with {@link Control} and {@link ControlArray}. {@link ControlArray} can also contain other\r\n * controls, but is of variable length.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/23DESOpbNnBpBHZt1BR4?p=preview))\r\n */\r\nvar ControlGroup = (function (_super) {\r\n __extends(ControlGroup, _super);\r\n function ControlGroup(controls, optionals, validator, asyncValidator) {\r\n if (optionals === void 0) { optionals = null; }\r\n if (validator === void 0) { validator = null; }\r\n if (asyncValidator === void 0) { asyncValidator = null; }\r\n _super.call(this, validator, asyncValidator);\r\n this.controls = controls;\r\n this._optionals = lang_1.isPresent(optionals) ? optionals : {};\r\n this._initObservables();\r\n this._setParentForControls();\r\n this.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n }\r\n /**\r\n * Add a control to this group.\r\n */\r\n ControlGroup.prototype.addControl = function (name, control) {\r\n this.controls[name] = control;\r\n control.setParent(this);\r\n };\r\n /**\r\n * Remove a control from this group.\r\n */\r\n ControlGroup.prototype.removeControl = function (name) { collection_1.StringMapWrapper.delete(this.controls, name); };\r\n /**\r\n * Mark the named control as non-optional.\r\n */\r\n ControlGroup.prototype.include = function (controlName) {\r\n collection_1.StringMapWrapper.set(this._optionals, controlName, true);\r\n this.updateValueAndValidity();\r\n };\r\n /**\r\n * Mark the named control as optional.\r\n */\r\n ControlGroup.prototype.exclude = function (controlName) {\r\n collection_1.StringMapWrapper.set(this._optionals, controlName, false);\r\n this.updateValueAndValidity();\r\n };\r\n /**\r\n * Check whether there is a control with the given name in the group.\r\n */\r\n ControlGroup.prototype.contains = function (controlName) {\r\n var c = collection_1.StringMapWrapper.contains(this.controls, controlName);\r\n return c && this._included(controlName);\r\n };\r\n /** @internal */\r\n ControlGroup.prototype._setParentForControls = function () {\r\n var _this = this;\r\n collection_1.StringMapWrapper.forEach(this.controls, function (control, name) { control.setParent(_this); });\r\n };\r\n /** @internal */\r\n ControlGroup.prototype._updateValue = function () { this._value = this._reduceValue(); };\r\n /** @internal */\r\n ControlGroup.prototype._anyControlsHaveStatus = function (status) {\r\n var _this = this;\r\n var res = false;\r\n collection_1.StringMapWrapper.forEach(this.controls, function (control, name) {\r\n res = res || (_this.contains(name) && control.status == status);\r\n });\r\n return res;\r\n };\r\n /** @internal */\r\n ControlGroup.prototype._reduceValue = function () {\r\n return this._reduceChildren({}, function (acc, control, name) {\r\n acc[name] = control.value;\r\n return acc;\r\n });\r\n };\r\n /** @internal */\r\n ControlGroup.prototype._reduceChildren = function (initValue, fn) {\r\n var _this = this;\r\n var res = initValue;\r\n collection_1.StringMapWrapper.forEach(this.controls, function (control, name) {\r\n if (_this._included(name)) {\r\n res = fn(res, control, name);\r\n }\r\n });\r\n return res;\r\n };\r\n /** @internal */\r\n ControlGroup.prototype._included = function (controlName) {\r\n var isOptional = collection_1.StringMapWrapper.contains(this._optionals, controlName);\r\n return !isOptional || collection_1.StringMapWrapper.get(this._optionals, controlName);\r\n };\r\n return ControlGroup;\r\n})(AbstractControl);\r\nexports.ControlGroup = ControlGroup;\r\n/**\r\n * Defines a part of a form, of variable length, that can contain other controls.\r\n *\r\n * A `ControlArray` aggregates the values and errors of each {@link Control} in the group. Thus, if\r\n * one of the controls in a group is invalid, the entire group is invalid. Similarly, if a control\r\n * changes its value, the entire group changes as well.\r\n *\r\n * `ControlArray` is one of the three fundamental building blocks used to define forms in Angular,\r\n * along with {@link Control} and {@link ControlGroup}. {@link ControlGroup} can also contain\r\n * other controls, but is of fixed length.\r\n *\r\n * ## Adding or removing controls\r\n *\r\n * To change the controls in the array, use the `push`, `insert`, or `removeAt` methods\r\n * in `ControlArray` itself. These methods ensure the controls are properly tracked in the\r\n * form's hierarchy. Do not modify the array of `AbstractControl`s used to instantiate\r\n * the `ControlArray` directly, as that will result in strange and unexpected behavior such\r\n * as broken change detection.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/23DESOpbNnBpBHZt1BR4?p=preview))\r\n */\r\nvar ControlArray = (function (_super) {\r\n __extends(ControlArray, _super);\r\n function ControlArray(controls, validator, asyncValidator) {\r\n if (validator === void 0) { validator = null; }\r\n if (asyncValidator === void 0) { asyncValidator = null; }\r\n _super.call(this, validator, asyncValidator);\r\n this.controls = controls;\r\n this._initObservables();\r\n this._setParentForControls();\r\n this.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n }\r\n /**\r\n * Get the {@link AbstractControl} at the given `index` in the array.\r\n */\r\n ControlArray.prototype.at = function (index) { return this.controls[index]; };\r\n /**\r\n * Insert a new {@link AbstractControl} at the end of the array.\r\n */\r\n ControlArray.prototype.push = function (control) {\r\n this.controls.push(control);\r\n control.setParent(this);\r\n this.updateValueAndValidity();\r\n };\r\n /**\r\n * Insert a new {@link AbstractControl} at the given `index` in the array.\r\n */\r\n ControlArray.prototype.insert = function (index, control) {\r\n collection_1.ListWrapper.insert(this.controls, index, control);\r\n control.setParent(this);\r\n this.updateValueAndValidity();\r\n };\r\n /**\r\n * Remove the control at the given `index` in the array.\r\n */\r\n ControlArray.prototype.removeAt = function (index) {\r\n collection_1.ListWrapper.removeAt(this.controls, index);\r\n this.updateValueAndValidity();\r\n };\r\n Object.defineProperty(ControlArray.prototype, \"length\", {\r\n /**\r\n * Length of the control array.\r\n */\r\n get: function () { return this.controls.length; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** @internal */\r\n ControlArray.prototype._updateValue = function () { this._value = this.controls.map(function (control) { return control.value; }); };\r\n /** @internal */\r\n ControlArray.prototype._anyControlsHaveStatus = function (status) {\r\n return this.controls.some(function (c) { return c.status == status; });\r\n };\r\n /** @internal */\r\n ControlArray.prototype._setParentForControls = function () {\r\n var _this = this;\r\n this.controls.forEach(function (control) { control.setParent(_this); });\r\n };\r\n return ControlArray;\r\n})(AbstractControl);\r\nexports.ControlArray = ControlArray;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL21vZGVsLnRzIl0sIm5hbWVzIjpbImlzQ29udHJvbCIsIl9maW5kIiwidG9PYnNlcnZhYmxlIiwiQWJzdHJhY3RDb250cm9sIiwiQWJzdHJhY3RDb250cm9sLmNvbnN0cnVjdG9yIiwiQWJzdHJhY3RDb250cm9sLnZhbHVlIiwiQWJzdHJhY3RDb250cm9sLnN0YXR1cyIsIkFic3RyYWN0Q29udHJvbC52YWxpZCIsIkFic3RyYWN0Q29udHJvbC5lcnJvcnMiLCJBYnN0cmFjdENvbnRyb2wucHJpc3RpbmUiLCJBYnN0cmFjdENvbnRyb2wuZGlydHkiLCJBYnN0cmFjdENvbnRyb2wudG91Y2hlZCIsIkFic3RyYWN0Q29udHJvbC51bnRvdWNoZWQiLCJBYnN0cmFjdENvbnRyb2wudmFsdWVDaGFuZ2VzIiwiQWJzdHJhY3RDb250cm9sLnN0YXR1c0NoYW5nZXMiLCJBYnN0cmFjdENvbnRyb2wucGVuZGluZyIsIkFic3RyYWN0Q29udHJvbC5tYXJrQXNUb3VjaGVkIiwiQWJzdHJhY3RDb250cm9sLm1hcmtBc0RpcnR5IiwiQWJzdHJhY3RDb250cm9sLm1hcmtBc1BlbmRpbmciLCJBYnN0cmFjdENvbnRyb2wuc2V0UGFyZW50IiwiQWJzdHJhY3RDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkiLCJBYnN0cmFjdENvbnRyb2wuX3J1blZhbGlkYXRvciIsIkFic3RyYWN0Q29udHJvbC5fcnVuQXN5bmNWYWxpZGF0b3IiLCJBYnN0cmFjdENvbnRyb2wuX2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uIiwiQWJzdHJhY3RDb250cm9sLnNldEVycm9ycyIsIkFic3RyYWN0Q29udHJvbC5maW5kIiwiQWJzdHJhY3RDb250cm9sLmdldEVycm9yIiwiQWJzdHJhY3RDb250cm9sLmhhc0Vycm9yIiwiQWJzdHJhY3RDb250cm9sLnJvb3QiLCJBYnN0cmFjdENvbnRyb2wuX3VwZGF0ZUNvbnRyb2xzRXJyb3JzIiwiQWJzdHJhY3RDb250cm9sLl9pbml0T2JzZXJ2YWJsZXMiLCJBYnN0cmFjdENvbnRyb2wuX2NhbGN1bGF0ZVN0YXR1cyIsIkNvbnRyb2wiLCJDb250cm9sLmNvbnN0cnVjdG9yIiwiQ29udHJvbC51cGRhdGVWYWx1ZSIsIkNvbnRyb2wuX3VwZGF0ZVZhbHVlIiwiQ29udHJvbC5fYW55Q29udHJvbHNIYXZlU3RhdHVzIiwiQ29udHJvbC5yZWdpc3Rlck9uQ2hhbmdlIiwiQ29udHJvbEdyb3VwIiwiQ29udHJvbEdyb3VwLmNvbnN0cnVjdG9yIiwiQ29udHJvbEdyb3VwLmFkZENvbnRyb2wiLCJDb250cm9sR3JvdXAucmVtb3ZlQ29udHJvbCIsIkNvbnRyb2xHcm91cC5pbmNsdWRlIiwiQ29udHJvbEdyb3VwLmV4Y2x1ZGUiLCJDb250cm9sR3JvdXAuY29udGFpbnMiLCJDb250cm9sR3JvdXAuX3NldFBhcmVudEZvckNvbnRyb2xzIiwiQ29udHJvbEdyb3VwLl91cGRhdGVWYWx1ZSIsIkNvbnRyb2xHcm91cC5fYW55Q29udHJvbHNIYXZlU3RhdHVzIiwiQ29udHJvbEdyb3VwLl9yZWR1Y2VWYWx1ZSIsIkNvbnRyb2xHcm91cC5fcmVkdWNlQ2hpbGRyZW4iLCJDb250cm9sR3JvdXAuX2luY2x1ZGVkIiwiQ29udHJvbEFycmF5IiwiQ29udHJvbEFycmF5LmNvbnN0cnVjdG9yIiwiQ29udHJvbEFycmF5LmF0IiwiQ29udHJvbEFycmF5LnB1c2giLCJDb250cm9sQXJyYXkuaW5zZXJ0IiwiQ29udHJvbEFycmF5LnJlbW92ZUF0IiwiQ29udHJvbEFycmF5Lmxlbmd0aCIsIkNvbnRyb2xBcnJheS5fdXBkYXRlVmFsdWUiLCJDb250cm9sQXJyYXkuX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyIsIkNvbnRyb2xBcnJheS5fc2V0UGFyZW50Rm9yQ29udHJvbHMiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUJBQWdELDBCQUEwQixDQUFDLENBQUE7QUFDM0Usc0JBQTBELDJC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TUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBTjtJQUVyREEsZ0JBQWdCQTtJQUNoQkEsbUNBQVlBLEdBQVpBLGNBQXVCTyxJQUFJQSxDQUFDQSxNQUFNQSxHQUFHQSxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxHQUFHQSxDQUFDQSxVQUFDQSxPQUFPQSxJQUFLQSxPQUFBQSxPQUFPQSxDQUFDQSxLQUFLQSxFQUFiQSxDQUFhQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUVyRlAsZ0JBQWdCQTtJQUNoQkEsNkNBQXNCQSxHQUF0QkEsVUFBdUJBLE1BQWNBO1FBQ25DUSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFBQSxDQUFDQSxJQUFJQSxPQUFBQSxDQUFDQSxDQUFDQSxNQUFNQSxJQUFJQSxNQUFNQSxFQUFsQkEsQ0FBa0JBLENBQUNBLENBQUNBO0lBQ3JEQSxDQUFDQTtJQUdEUixnQkFBZ0JBO0lBQ2hCQSw0Q0FBcUJBLEdBQXJCQTtRQUFBUyxpQkFFQ0E7UUFEQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsVUFBQ0EsT0FBT0EsSUFBT0EsT0FBT0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsS0FBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDbkVBLENBQUNBO0lBQ0hULG1CQUFDQTtBQUFEQSxDQUFDQSxBQTFERCxFQUFrQyxlQUFlLEVBMERoRDtBQTFEWSxvQkFBWSxlQTBEeEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNQcmVzZW50LCBpc0JsYW5rLCBub3JtYWxpemVCb29sfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBFdmVudEVtaXR0ZXIsIE9ic2VydmFibGVXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcbmltcG9ydCB7UHJvbWlzZVdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvcHJvbWlzZSc7XG5pbXBvcnQge1N0cmluZ01hcFdyYXBwZXIsIExpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtWYWxpZGF0b3JGbiwgQXN5bmNWYWxpZGF0b3JGbn0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMnO1xuXG4vKipcbiAqIEluZGljYXRlcyB0aGF0IGEgQ29udHJvbCBpcyB2YWxpZCwgaS5lLiB0aGF0IG5vIGVycm9ycyBleGlzdCBpbiB0aGUgaW5wdXQgdmFsdWUuXG4gKi9cbmV4cG9ydCBjb25zdCBWQUxJRCA9IFwiVkFMSURcIjtcblxuLyoqXG4gKiBJbmRpY2F0ZXMgdGhhdCBhIENvbnRyb2wgaXMgaW52YWxpZCwgaS5lLiB0aGF0IGFuIGVycm9yIGV4aXN0cyBpbiB0aGUgaW5wdXQgdmFsdWUuXG4gKi9cbmV4cG9ydCBjb25zdCBJTlZBTElEID0gXCJJTlZBTElEXCI7XG5cbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgYSBDb250cm9sIGlzIHBlbmRpbmcsIGkuZS4gdGhhdCBhc3luYyB2YWxpZGF0aW9uIGlzIG9jY3VycmluZyBhbmRcbiAqIGVycm9ycyBhcmUgbm90IHlldCBhdmFpbGFibGUgZm9yIHRoZSBpbnB1dCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBFTkRJTkcgPSBcIlBFTkRJTkdcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udHJvbChjb250cm9sOiBPYmplY3QpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvbnRyb2wgaW5zdGFuY2VvZiBBYnN0cmFjdENvbnRyb2w7XG59XG5cbmZ1bmN0aW9uIF9maW5kKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPnwgc3RyaW5nKSB7XG4gIGlmIChpc0JsYW5rKHBhdGgpKSByZXR1cm4gbnVsbDtcblxuICBpZiAoIShwYXRoIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgcGF0aCA9ICg8c3RyaW5nPnBhdGgpLnNwbGl0KFwiL1wiKTtcbiAgfVxuICBpZiAocGF0aCBpbnN0YW5jZW9mIEFycmF5ICYmIExpc3RXcmFwcGVyLmlzRW1wdHkocGF0aCkpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoPEFycmF5PHN0cmluZyB8IG51bWJlcj4+cGF0aClcbiAgICAgIC5yZWR1Y2UoKHYsIG5hbWUpID0+IHtcbiAgICAgICAgaWYgKHYgaW5zdGFuY2VvZiBDb250cm9sR3JvdXApIHtcbiAgICAgICAgICByZXR1cm4gaXNQcmVzZW50KHYuY29udHJvbHNbbmFtZV0pID8gdi5jb250cm9sc1tuYW1lXSA6IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAodiBpbnN0YW5jZW9mIENvbnRyb2xBcnJheSkge1xuICAgICAgICAgIHZhciBpbmRleCA9IDxudW1iZXI+bmFtZTtcbiAgICAgICAgICByZXR1cm4gaXNQcmVzZW50KHYuYXQoaW5kZXgpKSA/IHYuYXQoaW5kZXgpIDogbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSwgY29udHJvbCk7XG59XG5cbmZ1bmN0aW9uIHRvT2JzZXJ2YWJsZShyOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICByZXR1cm4gUHJvbWlzZVdyYXBwZXIuaXNQcm9taXNlKHIpID8gT2JzZXJ2YWJsZVdyYXBwZXIuZnJvbVByb21pc2UocikgOiByO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdENvbnRyb2wge1xuICAvKiogQGludGVybmFsICovXG4gIF92YWx1ZTogYW55O1xuXG4gIHByaXZhdGUgX3ZhbHVlQ2hhbmdlczogRXZlbnRFbWl0dGVyPGFueT47XG4gIHByaXZhdGUgX3N0YXR1c0NoYW5nZXM6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBwcml2YXRlIF9zdGF0dXM6IHN0cmluZztcbiAgcHJpdmF0ZSBfZXJyb3JzOiB7W2tleTogc3RyaW5nXTogYW55fTtcbiAgcHJpdmF0ZSBfcHJpc3RpbmU6IGJvb2xlYW4gPSB0cnVlO1xuICBwcml2YXRlIF90b3VjaGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3BhcmVudDogQ29udHJvbEdyb3VwIHwgQ29udHJvbEFycmF5O1xuICBwcml2YXRlIF9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb246IGFueTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbiwgcHVibGljIGFzeW5jVmFsaWRhdG9yOiBBc3luY1ZhbGlkYXRvckZuKSB7fVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkgeyByZXR1cm4gdGhpcy5fdmFsdWU7IH1cblxuICBnZXQgc3RhdHVzKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9zdGF0dXM7IH1cblxuICBnZXQgdmFsaWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9zdGF0dXMgPT09IFZBTElEOyB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVycm9ycyBvZiB0aGlzIGNvbnRyb2wuXG4gICAqL1xuICBnZXQgZXJyb3JzKCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHsgcmV0dXJuIHRoaXMuX2Vycm9yczsgfVxuXG4gIGdldCBwcmlzdGluZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3ByaXN0aW5lOyB9XG5cbiAgZ2V0IGRpcnR5KCk6IGJvb2xlYW4geyByZXR1cm4gIXRoaXMucHJpc3RpbmU7IH1cblxuICBnZXQgdG91Y2hlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3RvdWNoZWQ7IH1cblxuICBnZXQgdW50b3VjaGVkKCk6IGJvb2xlYW4geyByZXR1cm4gIXRoaXMuX3RvdWNoZWQ7IH1cblxuICBnZXQgdmFsdWVDaGFuZ2VzKCk6IE9ic2VydmFibGU8YW55PiB7IHJldHVybiB0aGlzLl92YWx1ZUNoYW5nZXM7IH1cblxuICBnZXQgc3RhdHVzQ2hhbmdlcygpOiBPYnNlcnZhYmxlPGFueT4geyByZXR1cm4gdGhpcy5fc3RhdHVzQ2hhbmdlczsgfVxuXG4gIGdldCBwZW5kaW5nKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fc3RhdHVzID09IFBFTkRJTkc7IH1cblxuICBtYXJrQXNUb3VjaGVkKCk6IHZvaWQgeyB0aGlzLl90b3VjaGVkID0gdHJ1ZTsgfVxuXG4gIG1hcmtBc0RpcnR5KHtvbmx5U2VsZn06IHtvbmx5U2VsZj86IGJvb2xlYW59ID0ge30pOiB2b2lkIHtcbiAgICBvbmx5U2VsZiA9IG5vcm1hbGl6ZUJvb2wob25seVNlbGYpO1xuICAgIHRoaXMuX3ByaXN0aW5lID0gZmFsc2U7XG5cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX3BhcmVudCkgJiYgIW9ubHlTZWxmKSB7XG4gICAgICB0aGlzLl9wYXJlbnQubWFya0FzRGlydHkoe29ubHlTZWxmOiBvbmx5U2VsZn0pO1xuICAgIH1cbiAgfVxuXG4gIG1hcmtBc1BlbmRpbmcoe29ubHlTZWxmfToge29ubHlTZWxmPzogYm9vbGVhbn0gPSB7fSk6IHZvaWQge1xuICAgIG9ubHlTZWxmID0gbm9ybWFsaXplQm9vbChvbmx5U2VsZik7XG4gICAgdGhpcy5fc3RhdHVzID0gUEVORElORztcblxuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fcGFyZW50KSAmJiAhb25seVNlbGYpIHtcbiAgICAgIHRoaXMuX3BhcmVudC5tYXJrQXNQZW5kaW5nKHtvbmx5U2VsZjogb25seVNlbGZ9KTtcbiAgICB9XG4gIH1cblxuICBzZXRQYXJlbnQocGFyZW50OiBDb250cm9sR3JvdXAgfCBDb250cm9sQXJyYXkpOiB2b2lkIHsgdGhpcy5fcGFyZW50ID0gcGFyZW50OyB9XG5cbiAgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eShcbiAgICAgIHtvbmx5U2VsZiwgZW1pdEV2ZW50fToge29ubHlTZWxmPzogYm9vbGVhbiwgZW1pdEV2ZW50PzogYm9vbGVhbn0gPSB7fSk6IHZvaWQge1xuICAgIG9ubHlTZWxmID0gbm9ybWFsaXplQm9vbChvbmx5U2VsZik7XG4gICAgZW1pdEV2ZW50ID0gaXNQcmVzZW50KGVtaXRFdmVudCkgPyBlbWl0RXZlbnQgOiB0cnVlO1xuXG4gICAgdGhpcy5fdXBkYXRlVmFsdWUoKTtcblxuICAgIHRoaXMuX2Vycm9ycyA9IHRoaXMuX3J1blZhbGlkYXRvcigpO1xuICAgIHRoaXMuX3N0YXR1cyA9IHRoaXMuX2NhbGN1bGF0ZVN0YXR1cygpO1xuXG4gICAgaWYgKHRoaXMuX3N0YXR1cyA9PSBWQUxJRCB8fCB0aGlzLl9zdGF0dXMgPT0gUEVORElORykge1xuICAgICAgdGhpcy5fcnVuQXN5bmNWYWxpZGF0b3IoZW1pdEV2ZW50KTtcbiAgICB9XG5cbiAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICBPYnNlcnZhYmxlV3JhcHBlci5jYWxsRW1pdCh0aGlzLl92YWx1ZUNoYW5nZXMsIHRoaXMuX3ZhbHVlKTtcbiAgICAgIE9ic2VydmFibGVXcmFwcGVyLmNhbGxFbWl0KHRoaXMuX3N0YXR1c0NoYW5nZXMsIHRoaXMuX3N0YXR1cyk7XG4gICAgfVxuXG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl9wYXJlbnQpICYmICFvbmx5U2VsZikge1xuICAgICAgdGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiBvbmx5U2VsZiwgZW1pdEV2ZW50OiBlbWl0RXZlbnR9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9ydW5WYWxpZGF0b3IoKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICAgIHJldHVybiBpc1ByZXNlbnQodGhpcy52YWxpZGF0b3IpID8gdGhpcy52YWxpZGF0b3IodGhpcykgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfcnVuQXN5bmNWYWxpZGF0b3IoZW1pdEV2ZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLmFzeW5jVmFsaWRhdG9yKSkge1xuICAgICAgdGhpcy5fc3RhdHVzID0gUEVORElORztcbiAgICAgIHRoaXMuX2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCk7XG4gICAgICB2YXIgb2JzID0gdG9PYnNlcnZhYmxlKHRoaXMuYXN5bmNWYWxpZGF0b3IodGhpcykpO1xuICAgICAgdGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uID0gT2JzZXJ2YWJsZVdyYXBwZXIuc3Vic2NyaWJlKFxuICAgICAgICAgIG9icywgKHJlczoge1trZXk6IHN0cmluZ106IGFueX0pID0+IHRoaXMuc2V0RXJyb3JzKHJlcywge2VtaXRFdmVudDogZW1pdEV2ZW50fSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uKSkge1xuICAgICAgT2JzZXJ2YWJsZVdyYXBwZXIuZGlzcG9zZSh0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb24pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGVycm9ycyBvbiBhIGNvbnRyb2wuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZCB3aGVuIHZhbGlkYXRpb25zIGFyZSBydW4gbm90IGF1dG9tYXRpY2FsbHksIGJ1dCBtYW51YWxseSBieSB0aGUgdXNlci5cbiAgICpcbiAgICogQ2FsbGluZyBgc2V0RXJyb3JzYCB3aWxsIGFsc28gdXBkYXRlIHRoZSB2YWxpZGl0eSBvZiB0aGUgcGFyZW50IGNvbnRyb2wuXG4gICAqXG4gICAqICMjIFVzYWdlXG4gICAqXG4gICAqIGBgYFxuICAgKiB2YXIgbG9naW4gPSBuZXcgQ29udHJvbChcInNvbWVMb2dpblwiKTtcbiAgICogbG9naW4uc2V0RXJyb3JzKHtcbiAgICogICBcIm5vdFVuaXF1ZVwiOiB0cnVlXG4gICAqIH0pO1xuICAgKlxuICAgKiBleHBlY3QobG9naW4udmFsaWQpLnRvRXF1YWwoZmFsc2UpO1xuICAgKiBleHBlY3QobG9naW4uZXJyb3JzKS50b0VxdWFsKHtcIm5vdFVuaXF1ZVwiOiB0cnVlfSk7XG4gICAqXG4gICAqIGxvZ2luLnVwZGF0ZVZhbHVlKFwic29tZU90aGVyTG9naW5cIik7XG4gICAqXG4gICAqIGV4cGVjdChsb2dpbi52YWxpZCkudG9FcXVhbCh0cnVlKTtcbiAgICogYGBgXG4gICAqL1xuICBzZXRFcnJvcnMoZXJyb3JzOiB7W2tleTogc3RyaW5nXTogYW55fSwge2VtaXRFdmVudH06IHtlbWl0RXZlbnQ/OiBib29sZWFufSA9IHt9KTogdm9pZCB7XG4gICAgZW1pdEV2ZW50ID0gaXNQcmVzZW50KGVtaXRFdmVudCkgPyBlbWl0RXZlbnQgOiB0cnVlO1xuXG4gICAgdGhpcy5fZXJyb3JzID0gZXJyb3JzO1xuICAgIHRoaXMuX3N0YXR1cyA9IHRoaXMuX2NhbGN1bGF0ZVN0YXR1cygpO1xuXG4gICAgaWYgKGVtaXRFdmVudCkge1xuICAgICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy5fc3RhdHVzQ2hhbmdlcywgdGhpcy5fc3RhdHVzKTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX3BhcmVudCkpIHtcbiAgICAgIHRoaXMuX3BhcmVudC5fdXBkYXRlQ29udHJvbHNFcnJvcnMoKTtcbiAgICB9XG4gIH1cblxuICBmaW5kKHBhdGg6IEFycmF5PHN0cmluZyB8IG51bWJlcj58IHN0cmluZyk6IEFic3RyYWN0Q29udHJvbCB7IHJldHVybiBfZmluZCh0aGlzLCBwYXRoKTsgfVxuXG4gIGdldEVycm9yKGVycm9yQ29kZTogc3RyaW5nLCBwYXRoOiBzdHJpbmdbXSA9IG51bGwpOiBhbnkge1xuICAgIHZhciBjb250cm9sID0gaXNQcmVzZW50KHBhdGgpICYmICFMaXN0V3JhcHBlci5pc0VtcHR5KHBhdGgpID8gdGhpcy5maW5kKHBhdGgpIDogdGhpcztcbiAgICBpZiAoaXNQcmVzZW50KGNvbnRyb2wpICYmIGlzUHJlc2VudChjb250cm9sLl9lcnJvcnMpKSB7XG4gICAgICByZXR1cm4gU3RyaW5nTWFwV3JhcHBlci5nZXQoY29udHJvbC5fZXJyb3JzLCBlcnJvckNvZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBoYXNFcnJvcihlcnJvckNvZGU6IHN0cmluZywgcGF0aDogc3RyaW5nW10gPSBudWxsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLmdldEVycm9yKGVycm9yQ29kZSwgcGF0aCkpO1xuICB9XG5cbiAgZ2V0IHJvb3QoKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICBsZXQgeDogQWJzdHJhY3RDb250cm9sID0gdGhpcztcblxuICAgIHdoaWxlIChpc1ByZXNlbnQoeC5fcGFyZW50KSkge1xuICAgICAgeCA9IHguX3BhcmVudDtcbiAgICB9XG5cbiAgICByZXR1cm4geDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3VwZGF0ZUNvbnRyb2xzRXJyb3JzKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXR1cyA9IHRoaXMuX2NhbGN1bGF0ZVN0YXR1cygpO1xuXG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl9wYXJlbnQpKSB7XG4gICAgICB0aGlzLl9wYXJlbnQuX3VwZGF0ZUNvbnRyb2xzRXJyb3JzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfaW5pdE9ic2VydmFibGVzKCkge1xuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB9XG5cblxuICBwcml2YXRlIF9jYWxjdWxhdGVTdGF0dXMoKTogc3RyaW5nIHtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX2Vycm9ycykpIHJldHVybiBJTlZBTElEO1xuICAgIGlmICh0aGlzLl9hbnlDb250cm9sc0hhdmVTdGF0dXMoUEVORElORykpIHJldHVybiBQRU5ESU5HO1xuICAgIGlmICh0aGlzLl9hbnlDb250cm9sc0hhdmVTdGF0dXMoSU5WQUxJRCkpIHJldHVybiBJTlZBTElEO1xuICAgIHJldHVybiBWQUxJRDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgYWJzdHJhY3QgX3VwZGF0ZVZhbHVlKCk6IHZvaWQ7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBhYnN0cmFjdCBfYW55Q29udHJvbHNIYXZlU3RhdHVzKHN0YXR1czogc3RyaW5nKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgcGFydCBvZiBhIGZvcm0gdGhhdCBjYW5ub3QgYmUgZGl2aWRlZCBpbnRvIG90aGVyIGNvbnRyb2xzLiBgQ29udHJvbGBzIGhhdmUgdmFsdWVzIGFuZFxuICogdmFsaWRhdGlvbiBzdGF0ZSwgd2hpY2ggaXMgZGV0ZXJtaW5lZCBieSBhbiBvcHRpb25hbCB2YWxpZGF0aW9uIGZ1bmN0aW9uLlxuICpcbiAqIGBDb250cm9sYCBpcyBvbmUgb2YgdGhlIHRocmVlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyB1c2VkIHRvIGRlZmluZSBmb3JtcyBpbiBBbmd1bGFyLCBhbG9uZ1xuICogd2l0aCB7QGxpbmsgQ29udHJvbEdyb3VwfSBhbmQge0BsaW5rIENvbnRyb2xBcnJheX0uXG4gKlxuICogIyMgVXNhZ2VcbiAqXG4gKiBCeSBkZWZhdWx0LCBhIGBDb250cm9sYCBpcyBjcmVhdGVkIGZvciBldmVyeSBgPGlucHV0PmAgb3Igb3RoZXIgZm9ybSBjb21wb25lbnQuXG4gKiBXaXRoIHtAbGluayBOZ0Zvcm1Db250cm9sfSBvciB7QGxpbmsgTmdGb3JtTW9kZWx9IGFuIGV4aXN0aW5nIHtAbGluayBDb250cm9sfSBjYW4gYmVcbiAqIGJvdW5kIHRvIGEgRE9NIGVsZW1lbnQgaW5zdGVhZC4gVGhpcyBgQ29udHJvbGAgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBhIGN1c3RvbVxuICogdmFsaWRhdGlvbiBmdW5jdGlvbi5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvMjNERVNPcGJObkJwQkhadDFCUjQ/cD1wcmV2aWV3KSlcbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRyb2wgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2wge1xuICAvKiogQGludGVybmFsICovXG4gIF9vbkNoYW5nZTogRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IGFueSA9IG51bGwsIHZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSBudWxsLFxuICAgICAgICAgICAgICBhc3luY1ZhbGlkYXRvcjogQXN5bmNWYWxpZGF0b3JGbiA9IG51bGwpIHtcbiAgICBzdXBlcih2YWxpZGF0b3IsIGFzeW5jVmFsaWRhdG9yKTtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICB0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIHRvIGB2YWx1ZWAuXG4gICAqXG4gICAqIElmIGBvbmx5U2VsZmAgaXMgYHRydWVgLCB0aGlzIGNoYW5nZSB3aWxsIG9ubHkgYWZmZWN0IHRoZSB2YWxpZGF0aW9uIG9mIHRoaXMgYENvbnRyb2xgXG4gICAqIGFuZCBub3QgaXRzIHBhcmVudCBjb21wb25lbnQuIElmIGBlbWl0RXZlbnRgIGlzIGB0cnVlYCwgdGhpcyBjaGFuZ2Ugd2lsbCBjYXVzZSBhXG4gICAqIGB2YWx1ZUNoYW5nZXNgIGV2ZW50IG9uIHRoZSBgQ29udHJvbGAgdG8gYmUgZW1pdHRlZC4gQm90aCBvZiB0aGVzZSBvcHRpb25zIGRlZmF1bHQgdG9cbiAgICogYGZhbHNlYC5cbiAgICpcbiAgICogSWYgYGVtaXRNb2RlbFRvVmlld0NoYW5nZWAgaXMgYHRydWVgLCB0aGUgdmlldyB3aWxsIGJlIG5vdGlmaWVkIGFib3V0IHRoZSBuZXcgdmFsdWVcbiAgICogdmlhIGFuIGBvbkNoYW5nZWAgZXZlbnQuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaWYgYGVtaXRNb2RlbFRvVmlld0NoYW5nZWAgaXMgbm90XG4gICAqIHNwZWNpZmllZC5cbiAgICovXG4gIHVwZGF0ZVZhbHVlKHZhbHVlOiBhbnksIHtvbmx5U2VsZiwgZW1pdEV2ZW50LCBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2V9OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuLFxuICAgIGVtaXRFdmVudD86IGJvb2xlYW4sXG4gICAgZW1pdE1vZGVsVG9WaWV3Q2hhbmdlPzogYm9vbGVhblxuICB9ID0ge30pOiB2b2lkIHtcbiAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2UgPSBpc1ByZXNlbnQoZW1pdE1vZGVsVG9WaWV3Q2hhbmdlKSA/IGVtaXRNb2RlbFRvVmlld0NoYW5nZSA6IHRydWU7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX29uQ2hhbmdlKSAmJiBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2UpIHRoaXMuX29uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiBvbmx5U2VsZiwgZW1pdEV2ZW50OiBlbWl0RXZlbnR9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF91cGRhdGVWYWx1ZSgpIHt9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gZmFsc2U7IH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBsaXN0ZW5lciBmb3IgY2hhbmdlIGV2ZW50cy5cbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7IHRoaXMuX29uQ2hhbmdlID0gZm47IH1cbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgcGFydCBvZiBhIGZvcm0sIG9mIGZpeGVkIGxlbmd0aCwgdGhhdCBjYW4gY29udGFpbiBvdGhlciBjb250cm9scy5cbiAqXG4gKiBBIGBDb250cm9sR3JvdXBgIGFnZ3JlZ2F0ZXMgdGhlIHZhbHVlcyBhbmQgZXJyb3JzIG9mIGVhY2gge0BsaW5rIENvbnRyb2x9IGluIHRoZSBncm91cC4gVGh1cywgaWZcbiAqIG9uZSBvZiB0aGUgY29udHJvbHMgaW4gYSBncm91cCBpcyBpbnZhbGlkLCB0aGUgZW50aXJlIGdyb3VwIGlzIGludmFsaWQuIFNpbWlsYXJseSwgaWYgYSBjb250cm9sXG4gKiBjaGFuZ2VzIGl0cyB2YWx1ZSwgdGhlIGVudGlyZSBncm91cCBjaGFuZ2VzIGFzIHdlbGwuXG4gKlxuICogYENvbnRyb2xHcm91cGAgaXMgb25lIG9mIHRoZSB0aHJlZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgdXNlZCB0byBkZWZpbmUgZm9ybXMgaW4gQW5ndWxhcixcbiAqIGFsb25nIHdpdGgge0BsaW5rIENvbnRyb2x9IGFuZCB7QGxpbmsgQ29udHJvbEFycmF5fS4ge0BsaW5rIENvbnRyb2xBcnJheX0gY2FuIGFsc28gY29udGFpbiBvdGhlclxuICogY29udHJvbHMsIGJ1dCBpcyBvZiB2YXJpYWJsZSBsZW5ndGguXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0LzIzREVTT3BiTm5CcEJIWnQxQlI0P3A9cHJldmlldykpXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250cm9sR3JvdXAgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2wge1xuICBwcml2YXRlIF9vcHRpb25hbHM6IHtba2V5OiBzdHJpbmddOiBib29sZWFufTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29udHJvbHM6IHtba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2x9LFxuICAgICAgICAgICAgICBvcHRpb25hbHM6IHtba2V5OiBzdHJpbmddOiBib29sZWFufSA9IG51bGwsIHZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSBudWxsLFxuICAgICAgICAgICAgICBhc3luY1ZhbGlkYXRvcjogQXN5bmNWYWxpZGF0b3JGbiA9IG51bGwpIHtcbiAgICBzdXBlcih2YWxpZGF0b3IsIGFzeW5jVmFsaWRhdG9yKTtcbiAgICB0aGlzLl9vcHRpb25hbHMgPSBpc1ByZXNlbnQob3B0aW9uYWxzKSA/IG9wdGlvbmFscyA6IHt9O1xuICAgIHRoaXMuX2luaXRPYnNlcnZhYmxlcygpO1xuICAgIHRoaXMuX3NldFBhcmVudEZvckNvbnRyb2xzKCk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZX0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGNvbnRyb2wgdG8gdGhpcyBncm91cC5cbiAgICovXG4gIGFkZENvbnRyb2wobmFtZTogc3RyaW5nLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xzW25hbWVdID0gY29udHJvbDtcbiAgICBjb250cm9sLnNldFBhcmVudCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBjb250cm9sIGZyb20gdGhpcyBncm91cC5cbiAgICovXG4gIHJlbW92ZUNvbnRyb2wobmFtZTogc3RyaW5nKTogdm9pZCB7IFN0cmluZ01hcFdyYXBwZXIuZGVsZXRlKHRoaXMuY29udHJvbHMsIG5hbWUpOyB9XG5cbiAgLyoqXG4gICAqIE1hcmsgdGhlIG5hbWVkIGNvbnRyb2wgYXMgbm9uLW9wdGlvbmFsLlxuICAgKi9cbiAgaW5jbHVkZShjb250cm9sTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgU3RyaW5nTWFwV3JhcHBlci5zZXQodGhpcy5fb3B0aW9uYWxzLCBjb250cm9sTmFtZSwgdHJ1ZSk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICAvKipcbiAgICogTWFyayB0aGUgbmFtZWQgY29udHJvbCBhcyBvcHRpb25hbC5cbiAgICovXG4gIGV4Y2x1ZGUoY29udHJvbE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIFN0cmluZ01hcFdyYXBwZXIuc2V0KHRoaXMuX29wdGlvbmFscywgY29udHJvbE5hbWUsIGZhbHNlKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRoZXJlIGlzIGEgY29udHJvbCB3aXRoIHRoZSBnaXZlbiBuYW1lIGluIHRoZSBncm91cC5cbiAgICovXG4gIGNvbnRhaW5zKGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB2YXIgYyA9IFN0cmluZ01hcFdyYXBwZXIuY29udGFpbnModGhpcy5jb250cm9scywgY29udHJvbE5hbWUpO1xuICAgIHJldHVybiBjICYmIHRoaXMuX2luY2x1ZGVkKGNvbnRyb2xOYW1lKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3NldFBhcmVudEZvckNvbnRyb2xzKCkge1xuICAgIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChcbiAgICAgICAgdGhpcy5jb250cm9scywgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgbmFtZTogc3RyaW5nKSA9PiB7IGNvbnRyb2wuc2V0UGFyZW50KHRoaXMpOyB9KTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3VwZGF0ZVZhbHVlKCkgeyB0aGlzLl92YWx1ZSA9IHRoaXMuX3JlZHVjZVZhbHVlKCk7IH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9hbnlDb250cm9sc0hhdmVTdGF0dXMoc3RhdHVzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB2YXIgcmVzID0gZmFsc2U7XG4gICAgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKHRoaXMuY29udHJvbHMsIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmVzID0gcmVzIHx8ICh0aGlzLmNvbnRhaW5zKG5hbWUpICYmIGNvbnRyb2wuc3RhdHVzID09IHN0YXR1cyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3JlZHVjZVZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9yZWR1Y2VDaGlsZHJlbihcbiAgICAgICAge30sIChhY2M6IHtbazogc3RyaW5nXTogQWJzdHJhY3RDb250cm9sfSwgY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBhY2NbbmFtZV0gPSBjb250cm9sLnZhbHVlO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcmVkdWNlQ2hpbGRyZW4oaW5pdFZhbHVlOiBhbnksIGZuOiBGdW5jdGlvbikge1xuICAgIHZhciByZXMgPSBpbml0VmFsdWU7XG4gICAgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKHRoaXMuY29udHJvbHMsIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHRoaXMuX2luY2x1ZGVkKG5hbWUpKSB7XG4gICAgICAgIHJlcyA9IGZuKHJlcywgY29udHJvbCwgbmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2luY2x1ZGVkKGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB2YXIgaXNPcHRpb25hbCA9IFN0cmluZ01hcFdyYXBwZXIuY29udGFpbnModGhpcy5fb3B0aW9uYWxzLCBjb250cm9sTmFtZSk7XG4gICAgcmV0dXJuICFpc09wdGlvbmFsIHx8IFN0cmluZ01hcFdyYXBwZXIuZ2V0KHRoaXMuX29wdGlvbmFscywgY29udHJvbE5hbWUpO1xuICB9XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIHBhcnQgb2YgYSBmb3JtLCBvZiB2YXJpYWJsZSBsZW5ndGgsIHRoYXQgY2FuIGNvbnRhaW4gb3RoZXIgY29udHJvbHMuXG4gKlxuICogQSBgQ29udHJvbEFycmF5YCBhZ2dyZWdhdGVzIHRoZSB2YWx1ZXMgYW5kIGVycm9ycyBvZiBlYWNoIHtAbGluayBDb250cm9sfSBpbiB0aGUgZ3JvdXAuIFRodXMsIGlmXG4gKiBvbmUgb2YgdGhlIGNvbnRyb2xzIGluIGEgZ3JvdXAgaXMgaW52YWxpZCwgdGhlIGVudGlyZSBncm91cCBpcyBpbnZhbGlkLiBTaW1pbGFybHksIGlmIGEgY29udHJvbFxuICogY2hhbmdlcyBpdHMgdmFsdWUsIHRoZSBlbnRpcmUgZ3JvdXAgY2hhbmdlcyBhcyB3ZWxsLlxuICpcbiAqIGBDb250cm9sQXJyYXlgIGlzIG9uZSBvZiB0aGUgdGhyZWUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIHVzZWQgdG8gZGVmaW5lIGZvcm1zIGluIEFuZ3VsYXIsXG4gKiBhbG9uZyB3aXRoIHtAbGluayBDb250cm9sfSBhbmQge0BsaW5rIENvbnRyb2xHcm91cH0uIHtAbGluayBDb250cm9sR3JvdXB9IGNhbiBhbHNvIGNvbnRhaW5cbiAqIG90aGVyIGNvbnRyb2xzLCBidXQgaXMgb2YgZml4ZWQgbGVuZ3RoLlxuICpcbiAqICMjIEFkZGluZyBvciByZW1vdmluZyBjb250cm9sc1xuICpcbiAqIFRvIGNoYW5nZSB0aGUgY29udHJvbHMgaW4gdGhlIGFycmF5LCB1c2UgdGhlIGBwdXNoYCwgYGluc2VydGAsIG9yIGByZW1vdmVBdGAgbWV0aG9kc1xuICogaW4gYENvbnRyb2xBcnJheWAgaXRzZWxmLiBUaGVzZSBtZXRob2RzIGVuc3VyZSB0aGUgY29udHJvbHMgYXJlIHByb3Blcmx5IHRyYWNrZWQgaW4gdGhlXG4gKiBmb3JtJ3MgaGllcmFyY2h5LiBEbyBub3QgbW9kaWZ5IHRoZSBhcnJheSBvZiBgQWJzdHJhY3RDb250cm9sYHMgdXNlZCB0byBpbnN0YW50aWF0ZVxuICogdGhlIGBDb250cm9sQXJyYXlgIGRpcmVjdGx5LCBhcyB0aGF0IHdpbGwgcmVzdWx0IGluIHN0cmFuZ2UgYW5kIHVuZXhwZWN0ZWQgYmVoYXZpb3Igc3VjaFxuICogYXMgYnJva2VuIGNoYW5nZSBkZXRlY3Rpb24uXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0LzIzREVTT3BiTm5CcEJIWnQxQlI0P3A9cHJldmlldykpXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250cm9sQXJyYXkgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2wge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdLCB2YWxpZGF0b3I6IFZhbGlkYXRvckZuID0gbnVsbCxcbiAgICAgICAgICAgICAgYXN5bmNWYWxpZGF0b3I6IEFzeW5jVmFsaWRhdG9yRm4gPSBudWxsKSB7XG4gICAgc3VwZXIodmFsaWRhdG9yLCBhc3luY1ZhbGlkYXRvcik7XG4gICAgdGhpcy5faW5pdE9ic2VydmFibGVzKCk7XG4gICAgdGhpcy5fc2V0UGFyZW50Rm9yQ29udHJvbHMoKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB7QGxpbmsgQWJzdHJhY3RDb250cm9sfSBhdCB0aGUgZ2l2ZW4gYGluZGV4YCBpbiB0aGUgYXJyYXkuXG4gICAqL1xuICBhdChpbmRleDogbnVtYmVyKTogQWJzdHJhY3RDb250cm9sIHsgcmV0dXJuIHRoaXMuY29udHJvbHNbaW5kZXhdOyB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBhIG5ldyB7QGxpbmsgQWJzdHJhY3RDb250cm9sfSBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheS5cbiAgICovXG4gIHB1c2goY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9scy5wdXNoKGNvbnRyb2wpO1xuICAgIGNvbnRyb2wuc2V0UGFyZW50KHRoaXMpO1xuICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBhIG5ldyB7QGxpbmsgQWJzdHJhY3RDb250cm9sfSBhdCB0aGUgZ2l2ZW4gYGluZGV4YCBpbiB0aGUgYXJyYXkuXG4gICAqL1xuICBpbnNlcnQoaW5kZXg6IG51bWJlciwgY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogdm9pZCB7XG4gICAgTGlzdFdyYXBwZXIuaW5zZXJ0KHRoaXMuY29udHJvbHMsIGluZGV4LCBjb250cm9sKTtcbiAgICBjb250cm9sLnNldFBhcmVudCh0aGlzKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGNvbnRyb2wgYXQgdGhlIGdpdmVuIGBpbmRleGAgaW4gdGhlIGFycmF5LlxuICAgKi9cbiAgcmVtb3ZlQXQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIExpc3RXcmFwcGVyLnJlbW92ZUF0KHRoaXMuY29udHJvbHMsIGluZGV4KTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMZW5ndGggb2YgdGhlIGNvbnRyb2wgYXJyYXkuXG4gICAqL1xuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7IHJldHVybiB0aGlzLmNvbnRyb2xzLmxlbmd0aDsgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3VwZGF0ZVZhbHVlKCk6IHZvaWQgeyB0aGlzLl92YWx1ZSA9IHRoaXMuY29udHJvbHMubWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlKTsgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xzLnNvbWUoYyA9PiBjLnN0YXR1cyA9PSBzdGF0dXMpO1xuICB9XG5cblxuICAvKiogQGludGVybmFsICovXG4gIF9zZXRQYXJlbnRGb3JDb250cm9scygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wpID0+IHsgY29udHJvbC5zZXRQYXJlbnQodGhpcyk7IH0pO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar modelModule = require('./model');\r\n/**\r\n * Creates a form object from a user-specified configuration.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/ENgZo8EuIECZNensZCVr?p=preview))\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'my-app',\r\n * viewBindings: [FORM_BINDINGS]\r\n * template: `\r\n * <form [ngFormModel]=\"loginForm\">\r\n * <p>Login <input ngControl=\"login\"></p>\r\n * <div ngControlGroup=\"passwordRetry\">\r\n * <p>Password <input type=\"password\" ngControl=\"password\"></p>\r\n * <p>Confirm password <input type=\"password\" ngControl=\"passwordConfirmation\"></p>\r\n * </div>\r\n * </form>\r\n * <h3>Form value:</h3>\r\n * <pre>{{value}}</pre>\r\n * `,\r\n * directives: [FORM_DIRECTIVES]\r\n * })\r\n * export class App {\r\n * loginForm: ControlGroup;\r\n *\r\n * constructor(builder: FormBuilder) {\r\n * this.loginForm = builder.group({\r\n * login: [\"\", Validators.required],\r\n * passwordRetry: builder.group({\r\n * password: [\"\", Validators.required],\r\n * passwordConfirmation: [\"\", Validators.required, asyncValidator]\r\n * })\r\n * });\r\n * }\r\n *\r\n * get value(): string {\r\n * return JSON.stringify(this.loginForm.value, null, 2);\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar FormBuilder = (function () {\r\n function FormBuilder() {\r\n }\r\n /**\r\n * Construct a new {@link ControlGroup} with the given map of configuration.\r\n * Valid keys for the `extra` parameter map are `optionals` and `validator`.\r\n *\r\n * See the {@link ControlGroup} constructor for more details.\r\n */\r\n FormBuilder.prototype.group = function (controlsConfig, extra) {\r\n if (extra === void 0) { extra = null; }\r\n var controls = this._reduceControls(controlsConfig);\r\n var optionals = (lang_1.isPresent(extra) ? collection_1.StringMapWrapper.get(extra, \"optionals\") : null);\r\n var validator = lang_1.isPresent(extra) ? collection_1.StringMapWrapper.get(extra, \"validator\") : null;\r\n var asyncValidator = lang_1.isPresent(extra) ? collection_1.StringMapWrapper.get(extra, \"asyncValidator\") : null;\r\n return new modelModule.ControlGroup(controls, optionals, validator, asyncValidator);\r\n };\r\n /**\r\n * Construct a new {@link Control} with the given `value`,`validator`, and `asyncValidator`.\r\n */\r\n FormBuilder.prototype.control = function (value, validator, asyncValidator) {\r\n if (validator === void 0) { validator = null; }\r\n if (asyncValidator === void 0) { asyncValidator = null; }\r\n return new modelModule.Control(value, validator, asyncValidator);\r\n };\r\n /**\r\n * Construct an array of {@link Control}s from the given `controlsConfig` array of\r\n * configuration, with the given optional `validator` and `asyncValidator`.\r\n */\r\n FormBuilder.prototype.array = function (controlsConfig, validator, asyncValidator) {\r\n var _this = this;\r\n if (validator === void 0) { validator = null; }\r\n if (asyncValidator === void 0) { asyncValidator = null; }\r\n var controls = controlsConfig.map(function (c) { return _this._createControl(c); });\r\n return new modelModule.ControlArray(controls, validator, asyncValidator);\r\n };\r\n /** @internal */\r\n FormBuilder.prototype._reduceControls = function (controlsConfig) {\r\n var _this = this;\r\n var controls = {};\r\n collection_1.StringMapWrapper.forEach(controlsConfig, function (controlConfig, controlName) {\r\n controls[controlName] = _this._createControl(controlConfig);\r\n });\r\n return controls;\r\n };\r\n /** @internal */\r\n FormBuilder.prototype._createControl = function (controlConfig) {\r\n if (controlConfig instanceof modelModule.Control ||\r\n controlConfig instanceof modelModule.ControlGroup ||\r\n controlConfig instanceof modelModule.ControlArray) {\r\n return controlConfig;\r\n }\r\n else if (lang_1.isArray(controlConfig)) {\r\n var value = controlConfig[0];\r\n var validator = controlConfig.length > 1 ? controlConfig[1] : null;\r\n var asyncValidator = controlConfig.length > 2 ? controlConfig[2] : null;\r\n return this.control(value, validator, asyncValidator);\r\n }\r\n else {\r\n return this.control(controlConfig);\r\n }\r\n };\r\n FormBuilder = __decorate([\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], FormBuilder);\r\n return FormBuilder;\r\n})();\r\nexports.FormBuilder = FormBuilder;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybV9idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbW1vbi9mb3Jtcy9mb3JtX2J1aWxkZXIudHMiXSwibmFtZXMiOlsiRm9ybUJ1aWxkZXIiLCJGb3JtQnVpbGRlci5jb25zdHJ1Y3RvciIsIkZvcm1CdWlsZGVyLmdyb3VwIiwiRm9ybUJ1aWxkZXIuY29udHJvbCIsIkZvcm1CdWlsZGVyLmFycmF5IiwiRm9ybUJ1aWxkZXIuX3JlZHVjZUNvbnRyb2xzIiwiRm9ybUJ1aWxkZXIuX2NyZWF0ZUNvbnRyb2wiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHFCQUF5QixlQUFlLENBQUMsQ0FBQTtBQUN6QywyQkFBK0IsZ0NBQWdDLENBQUMsQ0FBQTtBQUNoRSxxQkFBbUQsMEJBQTBCLENBQUMsQ0FBQTtBQUM5RSxJQUFZLFdBQVcsV0FBTSxTQUFTLENBQUMsQ0FBQTtBQUl2Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdDRztBQUNIO0lBQUFBO0lBK0RBQyxDQUFDQTtJQTdEQ0Q7Ozs7O09BS0dBO0lBQ0hBLDJCQUFLQSxHQUFMQSxVQUFNQSxjQUFvQ0EsRUFDcENBLEtBQWtDQTtRQUFsQ0UscUJBQWtDQSxHQUFsQ0EsWUFBa0NBO1FBQ3RDQSxJQUFJQSxRQUFRQSxHQUFHQSxJQUFJQSxDQUFDQSxlQUFlQSxDQUFDQSxjQUFjQSxDQUFDQSxDQUFDQTtRQUNwREEsSUFBSUEsU0FBU0EsR0FBNkJBLENBQ3RDQSxnQkFBU0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsR0FBR0EsNkJBQWdCQSxDQUFDQSxHQUFHQSxDQUFDQSxLQUFLQSxFQUFFQSxXQUFXQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUN4RUEsSUFBSUEsU0FBU0EsR0FBZ0JBLGdCQUFTQSxDQUFDQSxLQUFLQSxDQUFDQSxHQUFHQSw2QkFBZ0JBLENBQUNBLEdBQUdBLENBQUNBLEtBQUtBLEVBQUVBLFdBQVdBLENB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SUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsS0FBS0EsRUFBRUEsU0FBU0EsRUFBRUEsY0FBY0EsQ0FBQ0EsQ0FBQ0E7UUFFeERBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ05BLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLGFBQWFBLENBQUNBLENBQUNBO1FBQ3JDQSxDQUFDQTtJQUNIQSxDQUFDQTtJQTlESE47UUFBQ0EsaUJBQVVBLEVBQUVBOztvQkErRFpBO0lBQURBLGtCQUFDQTtBQUFEQSxDQUFDQSxBQS9ERCxJQStEQztBQTlEWSxtQkFBVyxjQThEdkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge1N0cmluZ01hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge2lzUHJlc2VudCwgaXNBcnJheSwgQ09OU1RfRVhQUiwgVHlwZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCAqIGFzIG1vZGVsTW9kdWxlIGZyb20gJy4vbW9kZWwnO1xuaW1wb3J0IHtWYWxpZGF0b3JGbiwgQXN5bmNWYWxpZGF0b3JGbn0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMnO1xuXG5cbi8qKlxuICogQ3JlYXRlcyBhIGZvcm0gb2JqZWN0IGZyb20gYSB1c2VyLXNwZWNpZmllZCBjb25maWd1cmF0aW9uLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9FTmdabzhFdUlFQ1pOZW5zWkNWcj9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ215LWFwcCcsXG4gKiAgIHZpZXdCaW5kaW5nczogW0ZPUk1fQklORElOR1NdXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGZvcm0gW25nRm9ybU1vZGVsXT1cImxvZ2luRm9ybVwiPlxuICogICAgICAgPHA+TG9naW4gPGlucHV0IG5nQ29udHJvbD1cImxvZ2luXCI+PC9wPlxuICogICAgICAgPGRpdiBuZ0NvbnRyb2xHcm91cD1cInBhc3N3b3JkUmV0cnlcIj5cbiAqICAgICAgICAgPHA+UGFzc3dvcmQgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIG5nQ29udHJvbD1cInBhc3N3b3JkXCI+PC9wPlxuICogICAgICAgICA8cD5Db25maXJtIHBhc3N3b3JkIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBuZ0NvbnRyb2w9XCJwYXNzd29yZENvbmZpcm1hdGlvblwiPjwvcD5cbiAqICAgICAgIDwvZGl2PlxuICogICAgIDwvZm9ybT5cbiAqICAgICA8aDM+Rm9ybSB2YWx1ZTo8L2gzPlxuICogICAgIDxwcmU+e3t2YWx1ZX19PC9wcmU+XG4gKiAgIGAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtGT1JNX0RJUkVDVElWRVNdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcCB7XG4gKiAgIGxvZ2luRm9ybTogQ29udHJvbEdyb3VwO1xuICpcbiAqICAgY29uc3RydWN0b3IoYnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcbiAqICAgICB0aGlzLmxvZ2luRm9ybSA9IGJ1aWxkZXIuZ3JvdXAoe1xuICogICAgICAgbG9naW46IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAqICAgICAgIHBhc3N3b3JkUmV0cnk6IGJ1aWxkZXIuZ3JvdXAoe1xuICogICAgICAgICBwYXNzd29yZDogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICogICAgICAgICBwYXNzd29yZENvbmZpcm1hdGlvbjogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWQsIGFzeW5jVmFsaWRhdG9yXVxuICogICAgICAgfSlcbiAqICAgICB9KTtcbiAqICAgfVxuICpcbiAqICAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gKiAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMubG9naW5Gb3JtLnZhbHVlLCBudWxsLCAyKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGb3JtQnVpbGRlciB7XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgYSBuZXcge0BsaW5rIENvbnRyb2xHcm91cH0gd2l0aCB0aGUgZ2l2ZW4gbWFwIG9mIGNvbmZpZ3VyYXRpb24uXG4gICAqIFZhbGlkIGtleXMgZm9yIHRoZSBgZXh0cmFgIHBhcmFtZXRlciBtYXAgYXJlIGBvcHRpb25hbHNgIGFuZCBgdmFsaWRhdG9yYC5cbiAgICpcbiAgICogU2VlIHRoZSB7QGxpbmsgQ29udHJvbEdyb3VwfSBjb25zdHJ1Y3RvciBmb3IgbW9yZSBkZXRhaWxzLlxuICAgKi9cbiAgZ3JvdXAoY29udHJvbHNDb25maWc6IHtba2V5OiBzdHJpbmddOiBhbnl9LFxuICAgICAgICBleHRyYToge1trZXk6IHN0cmluZ106IGFueX0gPSBudWxsKTogbW9kZWxNb2R1bGUuQ29udHJvbEdyb3VwIHtcbiAgICB2YXIgY29udHJvbHMgPSB0aGlzLl9yZWR1Y2VDb250cm9scyhjb250cm9sc0NvbmZpZyk7XG4gICAgdmFyIG9wdGlvbmFscyA9IDx7W2tleTogc3RyaW5nXTogYm9vbGVhbn0+KFxuICAgICAgICBpc1ByZXNlbnQoZXh0cmEpID8gU3RyaW5nTWFwV3JhcHBlci5nZXQoZXh0cmEsIFwib3B0aW9uYWxzXCIpIDogbnVsbCk7XG4gICAgdmFyIHZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSBpc1ByZXNlbnQoZXh0cmEpID8gU3RyaW5nTWFwV3JhcHBlci5nZXQoZXh0cmEsIFwidmFsaWRhdG9yXCIpIDogbnVsbDtcbiAgICB2YXIgYXN5bmNWYWxpZGF0b3I6IEFzeW5jVmFsaWRhdG9yRm4gPVxuICAgICAgICBpc1ByZXNlbnQoZXh0cmEpID8gU3RyaW5nTWFwV3JhcHBlci5nZXQoZXh0cmEsIFwiYXN5bmNWYWxpZGF0b3JcIikgOiBudWxsO1xuICAgIHJldHVybiBuZXcgbW9kZWxNb2R1bGUuQ29udHJvbEdyb3VwKGNvbnRyb2xzLCBvcHRpb25hbHMsIHZhbGlkYXRvciwgYXN5bmNWYWxpZGF0b3IpO1xuICB9XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgYSBuZXcge0BsaW5rIENvbnRyb2x9IHdpdGggdGhlIGdpdmVuIGB2YWx1ZWAsYHZhbGlkYXRvcmAsIGFuZCBgYXN5bmNWYWxpZGF0b3JgLlxuICAgKi9cbiAgY29udHJvbCh2YWx1ZTogT2JqZWN0LCB2YWxpZGF0b3I6IFZhbGlkYXRvckZuID0gbnVsbCxcbiAgICAgICAgICBhc3luY1ZhbGlkYXRvcjogQXN5bmNWYWxpZGF0b3JGbiA9IG51bGwpOiBtb2RlbE1vZHVsZS5Db250cm9sIHtcbiAgICByZXR1cm4gbmV3IG1vZGVsTW9kdWxlLkNvbnRyb2wodmFsdWUsIHZhbGlkYXRvciwgYXN5bmNWYWxpZGF0b3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdCBhbiBhcnJheSBvZiB7QGxpbmsgQ29udHJvbH1zIGZyb20gdGhlIGdpdmVuIGBjb250cm9sc0NvbmZpZ2AgYXJyYXkgb2ZcbiAgICogY29uZmlndXJhdGlvbiwgd2l0aCB0aGUgZ2l2ZW4gb3B0aW9uYWwgYHZhbGlkYXRvcmAgYW5kIGBhc3luY1ZhbGlkYXRvcmAuXG4gICAqL1xuICBhcnJheShjb250cm9sc0NvbmZpZzogYW55W10sIHZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSBudWxsLFxuICAgICAgICBhc3luY1ZhbGlkYXRvcjogQXN5bmNWYWxpZGF0b3JGbiA9IG51bGwpOiBtb2RlbE1vZHVsZS5Db250cm9sQXJyYXkge1xuICAgIHZhciBjb250cm9scyA9IGNvbnRyb2xzQ29uZmlnLm1hcChjID0+IHRoaXMuX2NyZWF0ZUNvbnRyb2woYykpO1xuICAgIHJldHVybiBuZXcgbW9kZWxNb2R1bGUuQ29udHJvbEFycmF5KGNvbnRyb2xzLCB2YWxpZGF0b3IsIGFzeW5jVmFsaWRhdG9yKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3JlZHVjZUNvbnRyb2xzKGNvbnRyb2xzQ29uZmlnOiB7W2s6IHN0cmluZ106XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnl9KToge1trZXk6IHN0cmluZ106IG1vZGVsTW9kdWxlLkFic3RyYWN0Q29udHJvbH0ge1xuICAgIHZhciBjb250cm9sczoge1trZXk6IHN0cmluZ106IG1vZGVsTW9kdWxlLkFic3RyYWN0Q29udHJvbH0gPSB7fTtcbiAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2goY29udHJvbHNDb25maWcsIChjb250cm9sQ29uZmlnOiBhbnksIGNvbnRyb2xOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnRyb2xzW2NvbnRyb2xOYW1lXSA9IHRoaXMuX2NyZWF0ZUNvbnRyb2woY29udHJvbENvbmZpZyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbnRyb2xzO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfY3JlYXRlQ29udHJvbChjb250cm9sQ29uZmlnOiBhbnkpOiBtb2RlbE1vZHVsZS5BYnN0cmFjdENvbnRyb2wge1xuICAgIGlmIChjb250cm9sQ29uZmlnIGluc3RhbmNlb2YgbW9kZWxNb2R1bGUuQ29udHJvbCB8fFxuICAgICAgICBjb250cm9sQ29uZmlnIGluc3RhbmNlb2YgbW9kZWxNb2R1bGUuQ29udHJvbEdyb3VwIHx8XG4gICAgICAgIGNvbnRyb2xDb25maWcgaW5zdGFuY2VvZiBtb2RlbE1vZHVsZS5Db250cm9sQXJyYXkpIHtcbiAgICAgIHJldHVybiBjb250cm9sQ29uZmlnO1xuXG4gICAgfSBlbHNlIGlmIChpc0FycmF5KGNvbnRyb2xDb25maWcpKSB7XG4gICAgICB2YXIgdmFsdWUgPSBjb250cm9sQ29uZmlnWzBdO1xuICAgICAgdmFyIHZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSBjb250cm9sQ29uZmlnLmxlbmd0aCA+IDEgPyBjb250cm9sQ29uZmlnWzFdIDogbnVsbDtcbiAgICAgIHZhciBhc3luY1ZhbGlkYXRvcjogQXN5bmNWYWxpZGF0b3JGbiA9IGNvbnRyb2xDb25maWcubGVuZ3RoID4gMiA/IGNvbnRyb2xDb25maWdbMl0gOiBudWxsO1xuICAgICAgcmV0dXJuIHRoaXMuY29udHJvbCh2YWx1ZSwgdmFsaWRhdG9yLCBhc3luY1ZhbGlkYXRvcik7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY29udHJvbChjb250cm9sQ29uZmlnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Used to provide a {@link ControlValueAccessor} for form controls.\r\n *\r\n * See {@link DefaultValueAccessor} for how to implement one.\r\n */\r\nexports.NG_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.OpaqueToken(\"NgValueAccessor\"));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbF92YWx1ZV9hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9jb250cm9sX3ZhbHVlX2FjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUEwQixlQUFlLENBQUMsQ0FBQTtBQUMxQyxxQkFBeUIsMEJBQTBCLENBQUMsQ0FBQTtBQTJCcEQ7Ozs7R0FJRztBQUNVLHlCQUFpQixHQUFnQixpQkFBVSxDQUFDLElBQUksa0JBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09wYXF1ZVRva2VufSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7Q09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBBIGJyaWRnZSBiZXR3ZWVuIGEgY29udHJvbCBhbmQgYSBuYXRpdmUgZWxlbWVudC5cbiAqXG4gKiBBIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAgYWJzdHJhY3RzIHRoZSBvcGVyYXRpb25zIG9mIHdyaXRpbmcgYSBuZXcgdmFsdWUgdG8gYVxuICogRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIGFuIGlucHV0IGNvbnRyb2wuXG4gKlxuICogUGxlYXNlIHNlZSB7QGxpbmsgRGVmYXVsdFZhbHVlQWNjZXNzb3J9IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLyoqXG4gICAqIFdyaXRlIGEgbmV3IHZhbHVlIHRvIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSBjaGFuZ2UgZXZlbnQuXG4gICAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sIHJlY2VpdmVzIGEgdG91Y2ggZXZlbnQuXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZDtcbn1cblxuLyoqXG4gKiBVc2VkIHRvIHByb3ZpZGUgYSB7QGxpbmsgQ29udHJvbFZhbHVlQWNjZXNzb3J9IGZvciBmb3JtIGNvbnRyb2xzLlxuICpcbiAqIFNlZSB7QGxpbmsgRGVmYXVsdFZhbHVlQWNjZXNzb3J9IGZvciBob3cgdG8gaW1wbGVtZW50IG9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IE5HX1ZBTFVFX0FDQ0VTU09SOiBPcGFxdWVUb2tlbiA9IENPTlNUX0VYUFIobmV3IE9wYXF1ZVRva2VuKFwiTmdWYWx1ZUFjY2Vzc29yXCIpKTsiXX0=","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\n/**\r\n * Base class for control directives.\r\n *\r\n * Only used internally in the forms module.\r\n */\r\nvar AbstractControlDirective = (function () {\r\n function AbstractControlDirective() {\r\n }\r\n Object.defineProperty(AbstractControlDirective.prototype, \"control\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"value\", {\r\n get: function () { return lang_1.isPresent(this.control) ? this.control.value : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"valid\", {\r\n get: function () { return lang_1.isPresent(this.control) ? this.control.valid : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"errors\", {\r\n get: function () {\r\n return lang_1.isPresent(this.control) ? this.control.errors : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"pristine\", {\r\n get: function () { return lang_1.isPresent(this.control) ? this.control.pristine : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"dirty\", {\r\n get: function () { return lang_1.isPresent(this.control) ? this.control.dirty : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"touched\", {\r\n get: function () { return lang_1.isPresent(this.control) ? this.control.touched : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"untouched\", {\r\n get: function () { return lang_1.isPresent(this.control) ? this.control.untouched : null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbstractControlDirective.prototype, \"path\", {\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AbstractControlDirective;\r\n})();\r\nexports.AbstractControlDirective = AbstractControlDirective;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RfY29udHJvbF9kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zL2RpcmVjdGl2ZXMvYWJzdHJhY3RfY29udHJvbF9kaXJlY3RpdmUudHMiXSwibmFtZXMiOlsiQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlIiwiQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlLmNvbnN0cnVjdG9yIiwiQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlLmNvbnRyb2wiLCJBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUudmFsdWUiLCJBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUudmFsaWQiLCJBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUuZXJyb3JzIiwiQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlLnByaXN0aW5lIiwiQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlLmRpcnR5IiwiQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlLnRvdWNoZWQiLCJBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUudW50b3VjaGVkIiwiQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlLnBhdGgiXSwibWFwcGluZ3MiOiJBQUNBLHFCQUF3QiwwQkFBMEIsQ0FBQyxDQUFBO0FBQ25ELDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTdEOzs7O0dBSUc7QUFDSDtJQUFBQTtJQW9CQUMsQ0FBQ0E7SUFuQkNELHNCQUFJQSw2Q0FBT0E7YUFBWEEsY0FBaUNFLE1BQU1BLENBQUNBLDBCQUFhQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFGO0lBRTFEQSxzQkFBSUEsMkNBQUtBO2FBQVRBLGNBQW1CRyxNQUFNQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsS0FBS0EsR0FBR0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBSDtJQUVoRkEsc0JBQUlBLDJDQUFLQTthQUFUQSxjQUF1QkksTUFBTUEsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLEtBQUtBLEdBQUdBLElBQUlBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUo7SUFFcEZBLHNCQUFJQSw0Q0FBTUE7YUFBVkE7WUFDRUssTUFBTUEsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLE1BQU1BLEdBQUdBLElBQUlBLENBQUNBO1FBQzlEQSxDQUFDQTs7O09BQUFMO0lBRURBLHNCQUFJQSw4Q0FBUUE7YUFBWkEsY0FBMEJNLE1BQU1BLENBQUNBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxRQUFRQSxHQUFHQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFOO0lBRTFGQSxzQkFBSUEsMkNBQUtBO2FBQVRBLGNBQXVCTyxNQUFNQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsS0FBS0EsR0FBR0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBUDtJQUVwRkEsc0JBQUlBLDZDQUFPQTthQUFYQSxjQUF5QlEsTUFBTUEsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLE9BQU9BLEdBQUdBLElBQUlBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQVI7SUFFeEZBLHNCQUFJQSwrQ0FBU0E7YUFBYkEsY0FBMkJTLE1BQU1BLENBQUNBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxTQUFTQSxHQUFHQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFUO0lBRTVGQSxzQkFBSUEsMENBQUlBO2FBQVJBLGNBQXVCVSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFWO0lBQ3ZDQSwrQkFBQ0E7QUFBREEsQ0FBQ0EsQUFwQkQsSUFvQkM7QUFwQnFCLGdDQUF3QiwyQkFvQjdDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbH0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHtpc1ByZXNlbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge3VuaW1wbGVtZW50ZWR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY29udHJvbCBkaXJlY3RpdmVzLlxuICpcbiAqIE9ubHkgdXNlZCBpbnRlcm5hbGx5IGluIHRoZSBmb3JtcyBtb2R1bGUuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUge1xuICBnZXQgY29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wgeyByZXR1cm4gdW5pbXBsZW1lbnRlZCgpOyB9XG5cbiAgZ2V0IHZhbHVlKCk6IGFueSB7IHJldHVybiBpc1ByZXNlbnQodGhpcy5jb250cm9sKSA/IHRoaXMuY29udHJvbC52YWx1ZSA6IG51bGw7IH1cblxuICBnZXQgdmFsaWQoKTogYm9vbGVhbiB7IHJldHVybiBpc1ByZXNlbnQodGhpcy5jb250cm9sKSA/IHRoaXMuY29udHJvbC52YWxpZCA6IG51bGw7IH1cblxuICBnZXQgZXJyb3JzKCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuY29udHJvbCkgPyB0aGlzLmNvbnRyb2wuZXJyb3JzIDogbnVsbDtcbiAgfVxuXG4gIGdldCBwcmlzdGluZSgpOiBib29sZWFuIHsgcmV0dXJuIGlzUHJlc2VudCh0aGlzLmNvbnRyb2wpID8gdGhpcy5jb250cm9sLnByaXN0aW5lIDogbnVsbDsgfVxuXG4gIGdldCBkaXJ0eSgpOiBib29sZWFuIHsgcmV0dXJuIGlzUHJlc2VudCh0aGlzLmNvbnRyb2wpID8gdGhpcy5jb250cm9sLmRpcnR5IDogbnVsbDsgfVxuXG4gIGdldCB0b3VjaGVkKCk6IGJvb2xlYW4geyByZXR1cm4gaXNQcmVzZW50KHRoaXMuY29udHJvbCkgPyB0aGlzLmNvbnRyb2wudG91Y2hlZCA6IG51bGw7IH1cblxuICBnZXQgdW50b3VjaGVkKCk6IGJvb2xlYW4geyByZXR1cm4gaXNQcmVzZW50KHRoaXMuY29udHJvbCkgPyB0aGlzLmNvbnRyb2wudW50b3VjaGVkIDogbnVsbDsgfVxuXG4gIGdldCBwYXRoKCk6IHN0cmluZ1tdIHsgcmV0dXJuIG51bGw7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar abstract_control_directive_1 = require('./abstract_control_directive');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\n/**\r\n * A base class that all control directive extend.\r\n * It binds a {@link Control} object to a DOM element.\r\n *\r\n * Used internally by Angular forms.\r\n */\r\nvar NgControl = (function (_super) {\r\n __extends(NgControl, _super);\r\n function NgControl() {\r\n _super.apply(this, arguments);\r\n this.name = null;\r\n this.valueAccessor = null;\r\n }\r\n Object.defineProperty(NgControl.prototype, \"validator\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgControl.prototype, \"asyncValidator\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return NgControl;\r\n})(abstract_control_directive_1.AbstractControlDirective);\r\nexports.NgControl = NgControl;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9uZ19jb250cm9sLnRzIl0sIm5hbWVzIjpbIk5nQ29udHJvbCIsIk5nQ29udHJvbC5jb25zdHJ1Y3RvciIsIk5nQ29udHJvbC52YWxpZGF0b3IiLCJOZ0NvbnRyb2wuYXN5bmNWYWxpZGF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsMkNBQXVDLDhCQUE4QixDQUFDLENBQUE7QUFDdEUsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFHN0Q7Ozs7O0dBS0c7QUFDSDtJQUF3Q0EsNkJBQXdCQTtJQUFoRUE7UUFBd0NDLDhCQUF3QkE7UUFDOURBLFNBQUlBLEdBQVdBLElBQUlBLENBQUNBO1FBQ3BCQSxrQkFBYUEsR0FBeUJBLElBQUlBLENBQUNBO0lBTTdDQSxDQUFDQTtJQUpDRCxzQkFBSUEsZ0NBQVNBO2FBQWJBLGNBQStCRSxNQUFNQSxDQUFjQSwwQkFBYUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBRjtJQUNyRUEsc0JBQUlBLHFDQUFjQTthQUFsQkEsY0FBeUNHLE1BQU1BLENBQW1CQSwwQkFBYUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBSDtJQUd0RkEsZ0JBQUNBO0FBQURBLENBQUNBLEFBUkQsRUFBd0MscURBQXdCLEVBUS9EO0FBUnFCLGlCQUFTLFlBUTlCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yfSBmcm9tICcuL2NvbnRyb2xfdmFsdWVfYWNjZXNzb3InO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmV9IGZyb20gJy4vYWJzdHJhY3RfY29udHJvbF9kaXJlY3RpdmUnO1xuaW1wb3J0IHt1bmltcGxlbWVudGVkfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0b3JGbn0gZnJvbSAnLi92YWxpZGF0b3JzJztcblxuLyoqXG4gKiBBIGJhc2UgY2xhc3MgdGhhdCBhbGwgY29udHJvbCBkaXJlY3RpdmUgZXh0ZW5kLlxuICogSXQgYmluZHMgYSB7QGxpbmsgQ29udHJvbH0gb2JqZWN0IHRvIGEgRE9NIGVsZW1lbnQuXG4gKlxuICogVXNlZCBpbnRlcm5hbGx5IGJ5IEFuZ3VsYXIgZm9ybXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ0NvbnRyb2wgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUge1xuICBuYW1lOiBzdHJpbmcgPSBudWxsO1xuICB2YWx1ZUFjY2Vzc29yOiBDb250cm9sVmFsdWVBY2Nlc3NvciA9IG51bGw7XG5cbiAgZ2V0IHZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7IHJldHVybiA8VmFsaWRhdG9yRm4+dW5pbXBsZW1lbnRlZCgpOyB9XG4gIGdldCBhc3luY1ZhbGlkYXRvcigpOiBBc3luY1ZhbGlkYXRvckZuIHsgcmV0dXJuIDxBc3luY1ZhbGlkYXRvckZuPnVuaW1wbGVtZW50ZWQoKTsgfVxuXG4gIGFic3RyYWN0IHZpZXdUb01vZGVsVXBkYXRlKG5ld1ZhbHVlOiBhbnkpOiB2b2lkO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar control_value_accessor_1 = require('angular2/src/common/forms/directives/control_value_accessor');\r\nvar ng_control_1 = require('angular2/src/common/forms/directives/ng_control');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar RADIO_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, { useExisting: core_1.forwardRef(function () { return RadioControlValueAccessor; }), multi: true }));\r\n/**\r\n * Internal class used by Angular to uncheck radio buttons with the matching name.\r\n */\r\nvar RadioControlRegistry = (function () {\r\n function RadioControlRegistry() {\r\n this._accessors = [];\r\n }\r\n RadioControlRegistry.prototype.add = function (control, accessor) {\r\n this._accessors.push([control, accessor]);\r\n };\r\n RadioControlRegistry.prototype.remove = function (accessor) {\r\n var indexToRemove = -1;\r\n for (var i = 0; i < this._accessors.length; ++i) {\r\n if (this._accessors[i][1] === accessor) {\r\n indexToRemove = i;\r\n }\r\n }\r\n collection_1.ListWrapper.removeAt(this._accessors, indexToRemove);\r\n };\r\n RadioControlRegistry.prototype.select = function (accessor) {\r\n this._accessors.forEach(function (c) {\r\n if (c[0].control.root === accessor._control.control.root && c[1] !== accessor) {\r\n c[1].fireUncheck();\r\n }\r\n });\r\n };\r\n RadioControlRegistry = __decorate([\r\n core_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], RadioControlRegistry);\r\n return RadioControlRegistry;\r\n})();\r\nexports.RadioControlRegistry = RadioControlRegistry;\r\n/**\r\n * The value provided by the forms API for radio buttons.\r\n */\r\nvar RadioButtonState = (function () {\r\n function RadioButtonState(checked, value) {\r\n this.checked = checked;\r\n this.value = value;\r\n }\r\n return RadioButtonState;\r\n})();\r\nexports.RadioButtonState = RadioButtonState;\r\n/**\r\n * The accessor for writing a radio control value and listening to changes that is used by the\r\n * {@link NgModel}, {@link NgFormControl}, and {@link NgControlName} directives.\r\n *\r\n * ### Example\r\n * ```\r\n * @Component({\r\n * template: `\r\n * <input type=\"radio\" name=\"food\" [(ngModel)]=\"foodChicken\">\r\n * <input type=\"radio\" name=\"food\" [(ngModel)]=\"foodFish\">\r\n * `\r\n * })\r\n * class FoodCmp {\r\n * foodChicken = new RadioButtonState(true, \"chicken\");\r\n * foodFish = new RadioButtonState(false, \"fish\");\r\n * }\r\n * ```\r\n */\r\nvar RadioControlValueAccessor = (function () {\r\n function RadioControlValueAccessor(_renderer, _elementRef, _registry, _injector) {\r\n this._renderer = _renderer;\r\n this._elementRef = _elementRef;\r\n this._registry = _registry;\r\n this._injector = _injector;\r\n this.onChange = function () { };\r\n this.onTouched = function () { };\r\n }\r\n RadioControlValueAccessor.prototype.ngOnInit = function () {\r\n this._control = this._injector.get(ng_control_1.NgControl);\r\n this._registry.add(this._control, this);\r\n };\r\n RadioControlValueAccessor.prototype.ngOnDestroy = function () { this._registry.remove(this); };\r\n RadioControlValueAccessor.prototype.writeValue = function (value) {\r\n this._state = value;\r\n if (lang_1.isPresent(value) && value.checked) {\r\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'checked', true);\r\n }\r\n };\r\n RadioControlValueAccessor.prototype.registerOnChange = function (fn) {\r\n var _this = this;\r\n this._fn = fn;\r\n this.onChange = function () {\r\n fn(new RadioButtonState(true, _this._state.value));\r\n _this._registry.select(_this);\r\n };\r\n };\r\n RadioControlValueAccessor.prototype.fireUncheck = function () { this._fn(new RadioButtonState(false, this._state.value)); };\r\n RadioControlValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\r\n __decorate([\r\n core_1.Input(), \r\n __metadata('design:type', String)\r\n ], RadioControlValueAccessor.prototype, \"name\", void 0);\r\n RadioControlValueAccessor = __decorate([\r\n core_1.Directive({\r\n selector: 'input[type=radio][ngControl],input[type=radio][ngFormControl],input[type=radio][ngModel]',\r\n host: { '(change)': 'onChange()', '(blur)': 'onTouched()' },\r\n providers: [RADIO_VALUE_ACCESSOR]\r\n }), \r\n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef, RadioControlRegistry, core_1.Injector])\r\n ], RadioControlValueAccessor);\r\n return RadioControlValueAccessor;\r\n})();\r\nexports.RadioControlValueAccessor = RadioControlValueAccessor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW9fY29udHJvbF92YWx1ZV9hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9yYWRpb19jb250cm9sX3ZhbHVlX2FjY2Vzc29yLnRzIl0sIm5hbWVzIjpbIlJhZGlvQ29udHJvbFJlZ2lzdHJ5IiwiUmFkaW9Db250cm9sUmVnaXN0cnkuY29uc3RydWN0b3IiLCJSYWRpb0NvbnRyb2xSZWdpc3RyeS5hZGQiLCJSYWRpb0NvbnRyb2xSZWdpc3RyeS5yZW1vdmUiLCJSYWRpb0NvbnRyb2xSZWdpc3RyeS5zZWxlY3QiLCJSYWRpb0J1dHRvblN0YXRlIiwiUmFkaW9CdXR0b25TdGF0ZS5jb25zdHJ1Y3RvciIsIlJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3IiLCJSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yLmNvbnN0cnVjdG9yIiwiUmFkaW9Db250cm9sVmFsdWVBY2Nlc3Nvci5uZ09uSW5pdCIsIlJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3IubmdPbkRlc3Ryb3kiLCJSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUiLCJSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25DaGFuZ2UiLCJSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yLmZpcmVVbmNoZWNrIiwiUmFkaW9Db250cm9sVmFsdWVBY2Nlc3Nvci5yZWdpc3Rlck9uVG91Y2hlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEscUJBYU8sZUFBZSxDQUFDLENBQUE7QUFDdkIsdUNBR08sNkRBQTZELENBQUMsQ0FBQTtBQUNyRSwyQkFBd0IsaURBQWlELENBQUMsQ0FBQTtBQUMxRSxxQkFBb0QsMEJBQTBCLENBQUMsQ0FBQTtBQUMvRSwyQkFBMEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUUzRCxJQUFNLG9CQUFvQixHQUFHLGlCQUFVLENBQUMsSUFBSSxlQUFRLENBQ2hELDBDQUFpQixFQUFF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QSxDQUFDQSxLQUFLQSxFQUFFQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUVqRk4scURBQWlCQSxHQUFqQkEsVUFBa0JBLEVBQVlBLElBQVVPLElBQUlBLENBQUNBLFNBQVNBLEdBQUdBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO0lBaEM5RFA7UUFBQ0EsWUFBS0EsRUFBRUE7O09BQUNBLDJDQUFJQSxVQUFTQTtJQVZ4QkE7UUFBQ0EsZ0JBQVNBLENBQUNBO1lBQ1RBLFFBQVFBLEVBQ0pBLDBGQUEwRkE7WUFDOUZBLElBQUlBLEVBQUVBLEVBQUNBLFVBQVVBLEVBQUVBLFlBQVlBLEVBQUVBLFFBQVFBLEVBQUVBLGFBQWFBLEVBQUNBO1lBQ3pEQSxTQUFTQSxFQUFFQSxDQUFDQSxvQkFBb0JBLENBQUNBO1NBQ2xDQSxDQUFDQTs7a0NBc0NEQTtJQUFEQSxnQ0FBQ0E7QUFBREEsQ0FBQ0EsQUEzQ0QsSUEyQ0M7QUFyQ1ksaUNBQXlCLDRCQXFDckMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgUmVuZGVyZXIsXG4gIFNlbGYsXG4gIGZvcndhcmRSZWYsXG4gIFByb3ZpZGVyLFxuICBBdHRyaWJ1dGUsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgSW5qZWN0b3IsXG4gIEluamVjdGFibGVcbn0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge1xuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3Jcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvbW1vbi9mb3Jtcy9kaXJlY3RpdmVzL2NvbnRyb2xfdmFsdWVfYWNjZXNzb3InO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb21tb24vZm9ybXMvZGlyZWN0aXZlcy9uZ19jb250cm9sJztcbmltcG9ydCB7Q09OU1RfRVhQUiwgbG9vc2VJZGVudGljYWwsIGlzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7TGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5cbmNvbnN0IFJBRElPX1ZBTFVFX0FDQ0VTU09SID0gQ09OU1RfRVhQUihuZXcgUHJvdmlkZXIoXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsIHt1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yKSwgbXVsdGk6IHRydWV9KSk7XG5cblxuLyoqXG4gKiBJbnRlcm5hbCBjbGFzcyB1c2VkIGJ5IEFuZ3VsYXIgdG8gdW5jaGVjayByYWRpbyBidXR0b25zIHdpdGggdGhlIG1hdGNoaW5nIG5hbWUuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSYWRpb0NvbnRyb2xSZWdpc3RyeSB7XG4gIHByaXZhdGUgX2FjY2Vzc29yczogYW55W10gPSBbXTtcblxuICBhZGQoY29udHJvbDogTmdDb250cm9sLCBhY2Nlc3NvcjogUmFkaW9Db250cm9sVmFsdWVBY2Nlc3Nvcikge1xuICAgIHRoaXMuX2FjY2Vzc29ycy5wdXNoKFtjb250cm9sLCBhY2Nlc3Nvcl0pO1xuICB9XG5cbiAgcmVtb3ZlKGFjY2Vzc29yOiBSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yKSB7XG4gICAgdmFyIGluZGV4VG9SZW1vdmUgPSAtMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2FjY2Vzc29ycy5sZW5ndGg7ICsraSkge1xuICAgICAgaWYgKHRoaXMuX2FjY2Vzc29yc1tpXVsxXSA9PT0gYWNjZXNzb3IpIHtcbiAgICAgICAgaW5kZXhUb1JlbW92ZSA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIExpc3RXcmFwcGVyLnJlbW92ZUF0KHRoaXMuX2FjY2Vzc29ycywgaW5kZXhUb1JlbW92ZSk7XG4gIH1cblxuICBzZWxlY3QoYWNjZXNzb3I6IFJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3IpIHtcbiAgICB0aGlzLl9hY2Nlc3NvcnMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgaWYgKGNbMF0uY29udHJvbC5yb290ID09PSBhY2Nlc3Nvci5fY29udHJvbC5jb250cm9sLnJvb3QgJiYgY1sxXSAhPT0gYWNjZXNzb3IpIHtcbiAgICAgICAgY1sxXS5maXJlVW5jaGVjaygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoZSBmb3JtcyBBUEkgZm9yIHJhZGlvIGJ1dHRvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSYWRpb0J1dHRvblN0YXRlIHtcbiAgY29uc3RydWN0b3IocHVibGljIGNoZWNrZWQ6IGJvb2xlYW4sIHB1YmxpYyB2YWx1ZTogc3RyaW5nKSB7fVxufVxuXG5cbi8qKlxuICogVGhlIGFjY2Vzc29yIGZvciB3cml0aW5nIGEgcmFkaW8gY29udHJvbCB2YWx1ZSBhbmQgbGlzdGVuaW5nIHRvIGNoYW5nZXMgdGhhdCBpcyB1c2VkIGJ5IHRoZVxuICoge0BsaW5rIE5nTW9kZWx9LCB7QGxpbmsgTmdGb3JtQ29udHJvbH0sIGFuZCB7QGxpbmsgTmdDb250cm9sTmFtZX0gZGlyZWN0aXZlcy5cbiAqXG4gKiAgIyMjIEV4YW1wbGVcbiAqICBgYGBcbiAqICBAQ29tcG9uZW50KHtcbiAqICAgIHRlbXBsYXRlOiBgXG4gKiAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwiZm9vZFwiIFsobmdNb2RlbCldPVwiZm9vZENoaWNrZW5cIj5cbiAqICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJmb29kXCIgWyhuZ01vZGVsKV09XCJmb29kRmlzaFwiPlxuICogICAgYFxuICogIH0pXG4gKiAgY2xhc3MgRm9vZENtcCB7XG4gKiAgICBmb29kQ2hpY2tlbiA9IG5ldyBSYWRpb0J1dHRvblN0YXRlKHRydWUsIFwiY2hpY2tlblwiKTtcbiAqICAgIGZvb2RGaXNoID0gbmV3IFJhZGlvQnV0dG9uU3RhdGUoZmFsc2UsIFwiZmlzaFwiKTtcbiAqICB9XG4gKiAgYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjpcbiAgICAgICdpbnB1dFt0eXBlPXJhZGlvXVtuZ0NvbnRyb2xdLGlucHV0W3R5cGU9cmFkaW9dW25nRm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9cmFkaW9dW25nTW9kZWxdJyxcbiAgaG9zdDogeycoY2hhbmdlKSc6ICdvbkNoYW5nZSgpJywgJyhibHVyKSc6ICdvblRvdWNoZWQoKSd9LFxuICBwcm92aWRlcnM6IFtSQURJT19WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9Db250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgX3N0YXRlOiBSYWRpb0J1dHRvblN0YXRlO1xuICBfY29udHJvbDogTmdDb250cm9sO1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gIF9mbjogRnVuY3Rpb247XG4gIG9uQ2hhbmdlID0gKCkgPT4ge307XG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlciwgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfcmVnaXN0cnk6IFJhZGlvQ29udHJvbFJlZ2lzdHJ5LCBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fY29udHJvbCA9IHRoaXMuX2luamVjdG9yLmdldChOZ0NvbnRyb2wpO1xuICAgIHRoaXMuX3JlZ2lzdHJ5LmFkZCh0aGlzLl9jb250cm9sLCB0aGlzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQgeyB0aGlzLl9yZWdpc3RyeS5yZW1vdmUodGhpcyk7IH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9IHZhbHVlO1xuICAgIGlmIChpc1ByZXNlbnQodmFsdWUpICYmIHZhbHVlLmNoZWNrZWQpIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjaGVja2VkJywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLl9mbiA9IGZuO1xuICAgIHRoaXMub25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBmbihuZXcgUmFkaW9CdXR0b25TdGF0ZSh0cnVlLCB0aGlzLl9zdGF0ZS52YWx1ZSkpO1xuICAgICAgdGhpcy5fcmVnaXN0cnkuc2VsZWN0KHRoaXMpO1xuICAgIH07XG4gIH1cblxuICBmaXJlVW5jaGVjaygpOiB2b2lkIHsgdGhpcy5fZm4obmV3IFJhZGlvQnV0dG9uU3RhdGUoZmFsc2UsIHRoaXMuX3N0YXRlLnZhbHVlKSk7IH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';/**\r\n * @module\r\n * @description\r\n * This module is used for handling user input, by defining and building a {@link ControlGroup} that\r\n * consists of\r\n * {@link Control} objects, and mapping them onto the DOM. {@link Control} objects can then be used\r\n * to read information\r\n * from the form DOM elements.\r\n *\r\n * This module is not included in the `angular2` module; you must import the forms module\r\n * explicitly.\r\n *\r\n */\r\nvar model_1 = require('./forms/model');\r\nexports.AbstractControl = model_1.AbstractControl;\r\nexports.Control = model_1.Control;\r\nexports.ControlGroup = model_1.ControlGroup;\r\nexports.ControlArray = model_1.ControlArray;\r\nvar abstract_control_directive_1 = require('./forms/directives/abstract_control_directive');\r\nexports.AbstractControlDirective = abstract_control_directive_1.AbstractControlDirective;\r\nvar control_container_1 = require('./forms/directives/control_container');\r\nexports.ControlContainer = control_container_1.ControlContainer;\r\nvar ng_control_name_1 = require('./forms/directives/ng_control_name');\r\nexports.NgControlName = ng_control_name_1.NgControlName;\r\nvar ng_form_control_1 = require('./forms/directives/ng_form_control');\r\nexports.NgFormControl = ng_form_control_1.NgFormControl;\r\nvar ng_model_1 = require('./forms/directives/ng_model');\r\nexports.NgModel = ng_model_1.NgModel;\r\nvar ng_control_1 = require('./forms/directives/ng_control');\r\nexports.NgControl = ng_control_1.NgControl;\r\nvar ng_control_group_1 = require('./forms/directives/ng_control_group');\r\nexports.NgControlGroup = ng_control_group_1.NgControlGroup;\r\nvar ng_form_model_1 = require('./forms/directives/ng_form_model');\r\nexports.NgFormModel = ng_form_model_1.NgFormModel;\r\nvar ng_form_1 = require('./forms/directives/ng_form');\r\nexports.NgForm = ng_form_1.NgForm;\r\nvar control_value_accessor_1 = require('./forms/directives/control_value_accessor');\r\nexports.NG_VALUE_ACCESSOR = control_value_accessor_1.NG_VALUE_ACCESSOR;\r\nvar default_value_accessor_1 = require('./forms/directives/default_value_accessor');\r\nexports.DefaultValueAccessor = default_value_accessor_1.DefaultValueAccessor;\r\nvar ng_control_status_1 = require('./forms/directives/ng_control_status');\r\nexports.NgControlStatus = ng_control_status_1.NgControlStatus;\r\nvar checkbox_value_accessor_1 = require('./forms/directives/checkbox_value_accessor');\r\nexports.CheckboxControlValueAccessor = checkbox_value_accessor_1.CheckboxControlValueAccessor;\r\nvar select_control_value_accessor_1 = require('./forms/directives/select_control_value_accessor');\r\nexports.NgSelectOption = select_control_value_accessor_1.NgSelectOption;\r\nexports.SelectControlValueAccessor = select_control_value_accessor_1.SelectControlValueAccessor;\r\nvar directives_1 = require('./forms/directives');\r\nexports.FORM_DIRECTIVES = directives_1.FORM_DIRECTIVES;\r\nexports.RadioButtonState = directives_1.RadioButtonState;\r\nvar validators_1 = require('./forms/validators');\r\nexports.NG_VALIDATORS = validators_1.NG_VALIDATORS;\r\nexports.NG_ASYNC_VALIDATORS = validators_1.NG_ASYNC_VALIDATORS;\r\nexports.Validators = validators_1.Validators;\r\nvar validators_2 = require('./forms/directives/validators');\r\nexports.RequiredValidator = validators_2.RequiredValidator;\r\nexports.MinLengthValidator = validators_2.MinLengthValidator;\r\nexports.MaxLengthValidator = validators_2.MaxLengthValidator;\r\nexports.PatternValidator = validators_2.PatternValidator;\r\nvar form_builder_1 = require('./forms/form_builder');\r\nexports.FormBuilder = form_builder_1.FormBuilder;\r\nvar form_builder_2 = require('./forms/form_builder');\r\nvar radio_control_value_accessor_1 = require('./forms/directives/radio_control_value_accessor');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Shorthand set of providers used for building Angular forms.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * bootstrap(MyApp, [FORM_PROVIDERS]);\r\n * ```\r\n */\r\nexports.FORM_PROVIDERS = lang_1.CONST_EXPR([form_builder_2.FormBuilder, radio_control_value_accessor_1.RadioControlRegistry]);\r\n/**\r\n * See {@link FORM_PROVIDERS} instead.\r\n *\r\n * @deprecated\r\n */\r\nexports.FORM_BINDINGS = exports.FORM_PROVIDERS;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL2Zvcm1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILHNCQUFtRSxlQUFlLENBQUM7QUFBM0Usa0RBQWU7QUFBRSxrQ0FBTztBQUFFLDRDQUFZO0FBQUUsNENBQW1DO0FBRW5GLDJDQUF1QywrQ0FBK0MsQ0FBQztBQUEvRSx5RkFBK0U7QUFFdkYsa0NBQStCLHNDQUFzQyxDQUFDO0FBQTlELGdFQUE4RDtBQUN0RSxnQ0FBNEIsb0NBQW9DLENBQUM7QUFBekQsd0RBQXlEO0FBQ2pFLGdDQUE0QixvQ0FBb0MsQ0FBQztBQUF6RCx3REFBeUQ7QUFDakUseUJBQXNCLDZCQUE2QixDQUFDO0FBQTVDLHFDQUE0QztBQUNwRCwyQkFBd0IsK0JBQStCLENBQUM7QUFBaEQsMkNBQWdEO0FBQ3hELGlDQUE2QixxQ0FBcUMsQ0FBQztBQUEzRCwyREFBMkQ7QUFDbkUsOEJBQTBCLGtDQUFrQyxDQUFDO0FBQXJELGtEQUFxRDtBQUM3RCx3QkFBcUIsNEJBQTRCLENBQUM7QUFBMUMsa0NBQTBDO0FBQ2xELHVDQUFzRCwyQ0FBMkMsQ0FBQztBQUFwRSx1RUFBb0U7QUFDbEcsdUNBQW1DLDJDQUEyQyxDQUFDO0FBQXZFLDZFQUF1RTtBQUMvRSxrQ0FBOEIsc0NBQXNDLENBQUM7QUFBN0QsOERBQTZEO0FBQ3JFLHdDQUEyQyw0Q0FBNEMsQ0FBQztBQUFoRiw4RkFBZ0Y7QUFDeEYsOENBR08sa0RBQWtELENBQUM7QUFGeEQsd0VBQWM7QUFDZCxnR0FDd0Q7QUFDMUQsMkJBQWdELG9CQUFvQixDQUFDO0FBQTdELHVEQUFlO0FBQUUseURBQTRDO0FBQ3JFLDJCQUE2RCxvQkFBb0IsQ0FBQztBQUExRSxtREFBYTtBQUFFLCtEQUFtQjtBQUFFLDZDQUFzQztBQUNsRiwyQkFNTywrQkFBK0IsQ0FBQztBQUxyQywyREFBaUI7QUFDakIsNkRBQWtCO0FBQ2xCLDZEQUFrQjtBQUNsQix5REFFcUM7QUFDdkMsNkJBQTBCLHNCQUFzQixDQUFDO0FBQXpDLGlEQUF5QztBQUNqRCw2QkFBMEIsc0JBQXNCLENBQUMsQ0FBQTtBQUNqRCw2Q0FBbUMsaURBQWlELENBQUMsQ0FBQTtBQUNyRixxQkFBK0IsMEJBQTBCLENBQUMsQ0FBQTtBQUUxRDs7Ozs7Ozs7R0FRRztBQUNVLHNCQUFjLEdBQVcsaUJBQVUsQ0FBQyxDQUFDLDBCQUFXLEVBQUUsbURBQW9CLENBQUMsQ0FBQyxDQUFDO0FBRXRGOzs7O0dBSUc7QUFDVSxxQkFBYSxHQUFHLHNCQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogVGhpcyBtb2R1bGUgaXMgdXNlZCBmb3IgaGFuZGxpbmcgdXNlciBpbnB1dCwgYnkgZGVmaW5pbmcgYW5kIGJ1aWxkaW5nIGEge0BsaW5rIENvbnRyb2xHcm91cH0gdGhhdFxuICogY29uc2lzdHMgb2ZcbiAqIHtAbGluayBDb250cm9sfSBvYmplY3RzLCBhbmQgbWFwcGluZyB0aGVtIG9udG8gdGhlIERPTS4ge0BsaW5rIENvbnRyb2x9IG9iamVjdHMgY2FuIHRoZW4gYmUgdXNlZFxuICogdG8gcmVhZCBpbmZvcm1hdGlvblxuICogZnJvbSB0aGUgZm9ybSBET00gZWxlbWVudHMuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBgYW5ndWxhcjJgIG1vZHVsZTsgeW91IG11c3QgaW1wb3J0IHRoZSBmb3JtcyBtb2R1bGVcbiAqIGV4cGxpY2l0bHkuXG4gKlxuICovXG5leHBvcnQge0Fic3RyYWN0Q29udHJvbCwgQ29udHJvbCwgQ29udHJvbEdyb3VwLCBDb250cm9sQXJyYXl9IGZyb20gJy4vZm9ybXMvbW9kZWwnO1xuXG5leHBvcnQge0Fic3RyYWN0Q29udHJvbERpcmVjdGl2ZX0gZnJvbSAnLi9mb3Jtcy9kaXJlY3RpdmVzL2Fic3RyYWN0X2NvbnRyb2xfZGlyZWN0aXZlJztcbmV4cG9ydCB7Rm9ybX0gZnJvbSAnLi9mb3Jtcy9kaXJlY3RpdmVzL2Zvcm1faW50ZXJmYWNlJztcbmV4cG9ydCB7Q29udHJvbENvbnRhaW5lcn0gZnJvbSAnLi9mb3Jtcy9kaXJlY3RpdmVzL2NvbnRyb2xfY29udGFpbmVyJztcbmV4cG9ydCB7TmdDb250cm9sTmFtZX0gZnJvbSAnLi9mb3Jtcy9kaXJlY3RpdmVzL25nX2NvbnRyb2xfbmFtZSc7XG5leHBvcnQge05nRm9ybUNvbnRyb2x9IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9uZ19mb3JtX2NvbnRyb2wnO1xuZXhwb3J0IHtOZ01vZGVsfSBmcm9tICcuL2Zvcm1zL2RpcmVjdGl2ZXMvbmdfbW9kZWwnO1xuZXhwb3J0IHtOZ0NvbnRyb2x9IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9uZ19jb250cm9sJztcbmV4cG9ydCB7TmdDb250cm9sR3JvdXB9IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9uZ19jb250cm9sX2dyb3VwJztcbmV4cG9ydCB7TmdGb3JtTW9kZWx9IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9uZ19mb3JtX21vZGVsJztcbmV4cG9ydCB7TmdGb3JtfSBmcm9tICcuL2Zvcm1zL2RpcmVjdGl2ZXMvbmdfZm9ybSc7XG5leHBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnLi9mb3Jtcy9kaXJlY3RpdmVzL2NvbnRyb2xfdmFsdWVfYWNjZXNzb3InO1xuZXhwb3J0IHtEZWZhdWx0VmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9mb3Jtcy9kaXJlY3RpdmVzL2RlZmF1bHRfdmFsdWVfYWNjZXNzb3InO1xuZXhwb3J0IHtOZ0NvbnRyb2xTdGF0dXN9IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9uZ19jb250cm9sX3N0YXR1cyc7XG5leHBvcnQge0NoZWNrYm94Q29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vZm9ybXMvZGlyZWN0aXZlcy9jaGVja2JveF92YWx1ZV9hY2Nlc3Nvcic7XG5leHBvcnQge1xuICBOZ1NlbGVjdE9wdGlvbixcbiAgU2VsZWN0Q29udHJvbFZhbHVlQWNjZXNzb3Jcbn0gZnJvbSAnLi9mb3Jtcy9kaXJlY3RpdmVzL3NlbGVjdF9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmV4cG9ydCB7Rk9STV9ESVJFQ1RJVkVTLCBSYWRpb0J1dHRvblN0YXRlfSBmcm9tICcuL2Zvcm1zL2RpcmVjdGl2ZXMnO1xuZXhwb3J0IHtOR19WQUxJREFUT1JTLCBOR19BU1lOQ19WQUxJREFUT1JTLCBWYWxpZGF0b3JzfSBmcm9tICcuL2Zvcm1zL3ZhbGlkYXRvcnMnO1xuZXhwb3J0IHtcbiAgUmVxdWlyZWRWYWxpZGF0b3IsXG4gIE1pbkxlbmd0aFZhbGlkYXRvcixcbiAgTWF4TGVuZ3RoVmFsaWRhdG9yLFxuICBQYXR0ZXJuVmFsaWRhdG9yLFxuICBWYWxpZGF0b3Jcbn0gZnJvbSAnLi9mb3Jtcy9kaXJlY3RpdmVzL3ZhbGlkYXRvcnMnO1xuZXhwb3J0IHtGb3JtQnVpbGRlcn0gZnJvbSAnLi9mb3Jtcy9mb3JtX2J1aWxkZXInO1xuaW1wb3J0IHtGb3JtQnVpbGRlcn0gZnJvbSAnLi9mb3Jtcy9mb3JtX2J1aWxkZXInO1xuaW1wb3J0IHtSYWRpb0NvbnRyb2xSZWdpc3RyeX0gZnJvbSAnLi9mb3Jtcy9kaXJlY3RpdmVzL3JhZGlvX2NvbnRyb2xfdmFsdWVfYWNjZXNzb3InO1xuaW1wb3J0IHtUeXBlLCBDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG4vKipcbiAqIFNob3J0aGFuZCBzZXQgb2YgcHJvdmlkZXJzIHVzZWQgZm9yIGJ1aWxkaW5nIEFuZ3VsYXIgZm9ybXMuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBib290c3RyYXAoTXlBcHAsIFtGT1JNX1BST1ZJREVSU10pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBGT1JNX1BST1ZJREVSUzogVHlwZVtdID0gQ09OU1RfRVhQUihbRm9ybUJ1aWxkZXIsIFJhZGlvQ29udHJvbFJlZ2lzdHJ5XSk7XG5cbi8qKlxuICogU2VlIHtAbGluayBGT1JNX1BST1ZJREVSU30gaW5zdGVhZC5cbiAqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgRk9STV9CSU5ESU5HUyA9IEZPUk1fUFJPVklERVJTO1xuIl19","/* */ \n\"format global\";\n'use strict';// TS does not have Observables\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZV9saXN0X2RpZmYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL2RpcmVjdGl2ZXMvb2JzZXJ2YWJsZV9saXN0X2RpZmYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBU3VCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVFMgZG9lcyBub3QgaGF2ZSBPYnNlcnZhYmxlc1xuXG4vLyBJIG5lZWQgdG8gYmUgaGVyZSB0byBtYWtlIFR5cGVTY3JpcHQgdGhpbmsgdGhpcyBpcyBhIG1vZHVsZS5cbmltcG9ydCB7fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG4vKipcbiAqIFRoaXMgbW9kdWxlIGV4aXN0cyBpbiBEYXJ0LCBidXQgbm90IGluIFR5cGVzY3JpcHQuIFRoaXMgZXhwb3J0ZWQgc3ltYm9sXG4gKiBpcyBvbmx5IGhlcmUgdG8gaGVscCBUeXBlc2NyaXB0IHRoaW5rIHRoaXMgaXMgYSBtb2R1bGUuXG4gKi9cbmV4cG9ydCB2YXIgd29ya2Fyb3VuZF9lbXB0eV9vYnNlcnZhYmxlX2xpc3RfZGlmZjogYW55O1xuIl19","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar core_1 = require('angular2/core');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\n/**\r\n * The `NgClass` directive conditionally adds and removes CSS classes on an HTML element based on\r\n * an expression's evaluation result.\r\n *\r\n * The result of an expression evaluation is interpreted differently depending on type of\r\n * the expression evaluation result:\r\n * - `string` - all the CSS classes listed in a string (space delimited) are added\r\n * - `Array` - all the CSS classes (Array elements) are added\r\n * - `Object` - each key corresponds to a CSS class name while values are interpreted as expressions\r\n * evaluating to `Boolean`. If a given expression evaluates to `true` a corresponding CSS class\r\n * is added - otherwise it is removed.\r\n *\r\n * While the `NgClass` directive can interpret expressions evaluating to `string`, `Array`\r\n * or `Object`, the `Object`-based version is the most often used and has an advantage of keeping\r\n * all the CSS class names in a template.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/a4YdtmWywhJ33uqfpPPn?p=preview)):\r\n *\r\n * ```\r\n * import {Component} from 'angular2/core';\r\n * import {NgClass} from 'angular2/common';\r\n *\r\n * @Component({\r\n * selector: 'toggle-button',\r\n * inputs: ['isDisabled'],\r\n * template: `\r\n * <div class=\"button\" [ngClass]=\"{active: isOn, disabled: isDisabled}\"\r\n * (click)=\"toggle(!isOn)\">\r\n * Click me!\r\n * </div>`,\r\n * styles: [`\r\n * .button {\r\n * width: 120px;\r\n * border: medium solid black;\r\n * }\r\n *\r\n * .active {\r\n * background-color: red;\r\n * }\r\n *\r\n * .disabled {\r\n * color: gray;\r\n * border: medium solid gray;\r\n * }\r\n * `]\r\n * directives: [NgClass]\r\n * })\r\n * class ToggleButton {\r\n * isOn = false;\r\n * isDisabled = false;\r\n *\r\n * toggle(newState) {\r\n * if (!this.isDisabled) {\r\n * this.isOn = newState;\r\n * }\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar NgClass = (function () {\r\n function NgClass(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\r\n this._iterableDiffers = _iterableDiffers;\r\n this._keyValueDiffers = _keyValueDiffers;\r\n this._ngEl = _ngEl;\r\n this._renderer = _renderer;\r\n this._initialClasses = [];\r\n }\r\n Object.defineProperty(NgClass.prototype, \"initialClasses\", {\r\n set: function (v) {\r\n this._applyInitialClasses(true);\r\n this._initialClasses = lang_1.isPresent(v) && lang_1.isString(v) ? v.split(' ') : [];\r\n this._applyInitialClasses(false);\r\n this._applyClasses(this._rawClass, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgClass.prototype, \"rawClass\", {\r\n set: function (v) {\r\n this._cleanupClasses(this._rawClass);\r\n if (lang_1.isString(v)) {\r\n v = v.split(' ');\r\n }\r\n this._rawClass = v;\r\n this._iterableDiffer = null;\r\n this._keyValueDiffer = null;\r\n if (lang_1.isPresent(v)) {\r\n if (collection_1.isListLikeIterable(v)) {\r\n this._iterableDiffer = this._iterableDiffers.find(v).create(null);\r\n }\r\n else {\r\n this._keyValueDiffer = this._keyValueDiffers.find(v).create(null);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgClass.prototype.ngDoCheck = function () {\r\n if (lang_1.isPresent(this._iterableDiffer)) {\r\n var changes = this._iterableDiffer.diff(this._rawClass);\r\n if (lang_1.isPresent(changes)) {\r\n this._applyIterableChanges(changes);\r\n }\r\n }\r\n if (lang_1.isPresent(this._keyValueDiffer)) {\r\n var changes = this._keyValueDiffer.diff(this._rawClass);\r\n if (lang_1.isPresent(changes)) {\r\n this._applyKeyValueChanges(changes);\r\n }\r\n }\r\n };\r\n NgClass.prototype.ngOnDestroy = function () { this._cleanupClasses(this._rawClass); };\r\n NgClass.prototype._cleanupClasses = function (rawClassVal) {\r\n this._applyClasses(rawClassVal, true);\r\n this._applyInitialClasses(false);\r\n };\r\n NgClass.prototype._applyKeyValueChanges = function (changes) {\r\n var _this = this;\r\n changes.forEachAddedItem(function (record) { _this._toggleClass(record.key, record.currentValue); });\r\n changes.forEachChangedItem(function (record) { _this._toggleClass(record.key, record.currentValue); });\r\n changes.forEachRemovedItem(function (record) {\r\n if (record.previousValue) {\r\n _this._toggleClass(record.key, false);\r\n }\r\n });\r\n };\r\n NgClass.prototype._applyIterableChanges = function (changes) {\r\n var _this = this;\r\n changes.forEachAddedItem(function (record) { _this._toggleClass(record.item, true); });\r\n changes.forEachRemovedItem(function (record) { _this._toggleClass(record.item, false); });\r\n };\r\n NgClass.prototype._applyInitialClasses = function (isCleanup) {\r\n var _this = this;\r\n this._initialClasses.forEach(function (className) { return _this._toggleClass(className, !isCleanup); });\r\n };\r\n NgClass.prototype._applyClasses = function (rawClassVal, isCleanup) {\r\n var _this = this;\r\n if (lang_1.isPresent(rawClassVal)) {\r\n if (lang_1.isArray(rawClassVal)) {\r\n rawClassVal.forEach(function (className) { return _this._toggleClass(className, !isCleanup); });\r\n }\r\n else if (rawClassVal instanceof Set) {\r\n rawClassVal.forEach(function (className) { return _this._toggleClass(className, !isCleanup); });\r\n }\r\n else {\r\n collection_1.StringMapWrapper.forEach(rawClassVal, function (expVal, className) {\r\n if (lang_1.isPresent(expVal))\r\n _this._toggleClass(className, !isCleanup);\r\n });\r\n }\r\n }\r\n };\r\n NgClass.prototype._toggleClass = function (className, enabled) {\r\n className = className.trim();\r\n if (className.length > 0) {\r\n if (className.indexOf(' ') > -1) {\r\n var classes = className.split(/\\s+/g);\r\n for (var i = 0, len = classes.length; i < len; i++) {\r\n this._renderer.setElementClass(this._ngEl.nativeElement, classes[i], enabled);\r\n }\r\n }\r\n else {\r\n this._renderer.setElementClass(this._ngEl.nativeElement, className, enabled);\r\n }\r\n }\r\n };\r\n NgClass = __decorate([\r\n core_1.Directive({ selector: '[ngClass]', inputs: ['rawClass: ngClass', 'initialClasses: class'] }), \r\n __metadata('design:paramtypes', [core_1.IterableDiffers, core_1.KeyValueDiffers, core_1.ElementRef, core_1.Renderer])\r\n ], NgClass);\r\n return NgClass;\r\n})();\r\nexports.NgClass = NgClass;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL2RpcmVjdGl2ZXMvbmdfY2xhc3MudHMiXSwibmFtZXMiOlsiTmdDbGFzcyIsIk5nQ2xhc3MuY29uc3RydWN0b3IiLCJOZ0NsYXNzLmluaXRpYWxDbGFzc2VzIiwiTmdDbGFzcy5yYXdDbGFzcyIsIk5nQ2xhc3MubmdEb0NoZWNrIiwiTmdDbGFzcy5uZ09uRGVzdHJveSIsIk5nQ2xhc3MuX2NsZWFudXBDbGFzc2VzIiwiTmdDbGFzcy5fYXBwbHlLZXlWYWx1ZUNoYW5nZXMiLCJOZ0NsYXNzLl9hcHBseUl0ZXJhYmxlQ2hhbmdlcyIsIk5nQ2xhc3MuX2FwcGx5SW5pdGlhbENsYXNzZXMiLCJOZ0NsYXNzLl9hcHBseUNsYXNzZXMiLCJOZ0NsYXNzLl90b2dnbGVDbGFzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEscUJBQTJDLDBCQUEwQixDQUFDLENBQUE7QUFDdEUscUJBWU8sZUFBZSxDQUFDLENBQUE7QUFDdkIsMkJBQW1ELGdDQUFnQyxDQUFDLENBQUE7QUFFcEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwREc7QUFDSDtJQU9FQSxpQkFBb0JBLGdCQUFpQ0EsRUFBVUEsZ0JBQWlDQSxFQUM1RUEsS0FBaUJBLEVBQVVBLFNBQW1CQTtRQUQ5Q0MscUJBQWdCQSxHQUFoQkEsZ0JBQWdCQSxDQUFpQkE7UUFBVUEscUJBQWdCQSxHQUFoQkEsZ0JBQWdCQSxDQUFpQkE7UUFDNUVBLFVBQUtBLEdBQUxBLEtBQUtBLENBQVlBO1FBQVVBLGNBQVNBLEdBQVRBLFNBQVNBLENBQVVBO1FBSjFEQSxvQkFBZUEsR0FBYUEsRUFBRUEsQ0FBQ0E7SUFJOEJBLENBQUNBO0lBRXRFRCxzQkFBSUEsbUNBQWNBO2FBQWxCQSxVQUFtQkEsQ0FBU0E7WUFDMUJFLElBQUlBLENBQUNBLG9CQUFvQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFDaENBLElBQUlBLENBQUNBLGVBQWVBLEdBQUdBLGdCQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxJQUFJQSxlQUFRQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxLQUFLQSxDQUFDQSxHQUFHQSxDQUFDQSxHQUFHQSxFQUFFQSxDQUFDQTtZQUN2RUEsSUFBSUEsQ0FBQ0Esb0JBQW9CQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQTtZQUNqQ0EsSUFBSUEsQ0FBQ0EsYUFBYUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsU0FBU0EsRUFBRUEsS0FBS0EsQ0FBQ0EsQ0FBQ0E7UUFDNUNBLENBQUNBOzs7T0FBQUY7SUFFREEsc0JBQUlBLDZCQUFRQTthQUFaQSxVQUFhQSxDQUF3REE7WUFDbkVHLElBQUlBLENBQUNBLGVBQWVBLENBQUNBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBO1lBRXJDQSxFQUFFQSxDQUFDQSxDQUFDQSxlQUFRQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDaEJBLENBQUNBLEdBQVlBLENBQUVBLENBQUNBLEtBQUtBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBO1lBQzdCQSxDQUFDQTtZQUVEQSxJQUFJQSxDQUFDQSxTQUFTQSxHQUEyQkEsQ0FBQ0EsQ0FBQ0E7WUFDM0NBLElBQUlBLENBQUNBLGVBQWVBLEdBQUdBLElBQUlBLENBQUNBO1lBQzVCQSxJQUFJQSxDQUFDQSxlQUFlQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUM1QkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUNqQkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsK0JBQWtCQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtvQkFDMUJBLElBQUlBLENBQUNBLGVBQWVBLEdBQUdBLElBQUlBLENBQUNBLGdCQUFnQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7Z0JBQ3BFQSxDQUFDQTtnQkFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7b0JBQ05BLElBQUlBLENBQUNBLGVBQWVBLEdBQUdBLElBQUlBLENBQUNBLGdCQUFnQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7Z0JBQ3BFQSxDQUFDQTtZQUNIQSxDQUFDQTtRQUNIQSxDQUFDQTs7O09BQUFIO0lBRURBLDJCQUFTQSxHQUFUQTtRQUNFSSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsZUFBZUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDcENBLElBQUlBLE9BQU9BLEdBQUdBLElBQUlBLENBQUNBLGVBQWVBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBO1lBQ3hEQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ3ZCQSxJQUFJQSxDQUFDQSxxQkFBcUJBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBO1lBQ3RDQSxDQUFDQTtRQUNIQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsZUFBZUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDcENBLElBQUlBLE9BQU9BLEdBQUdBLElBQUlBLENBQUNBLGVBQWVBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBO1lBQ3hEQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ3ZCQSxJQUFJQSxDQUFDQSxxQkFBcUJBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBO1lBQ3RDQSxDQUFDQTtRQUNIQSxDQUFDQTtJQUNIQSxDQUFDQTtJ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QSxFQUFFQSxFQUFFQSxDQUFDQTtvQkFDbkRBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLGVBQWVBLENBQUNBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBLGFBQWFBLEVBQUVBLE9BQU9BLENBQUNBLENBQUNBLENBQUNBLEVBQUVBLE9BQU9BLENBQUNBLENBQUNBO2dCQUNoRkEsQ0FBQ0E7WUFDSEEsQ0FBQ0E7WUFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7Z0JBQ05BLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLGVBQWVBLENBQUNBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBLGFBQWFBLEVBQUVBLFNBQVNBLEVBQUVBLE9BQU9BLENBQUNBLENBQUNBO1lBQy9FQSxDQUFDQTtRQUNIQSxDQUFDQTtJQUNIQSxDQUFDQTtJQTdHSFg7UUFBQ0EsZ0JBQVNBLENBQUNBLEVBQUNBLFFBQVFBLEVBQUVBLFdBQVdBLEVBQUVBLE1BQU1BLEVBQUVBLENBQUNBLG1CQUFtQkEsRUFBRUEsdUJBQXVCQSxDQUFDQSxFQUFDQSxDQUFDQTs7Z0JBOEcxRkE7SUFBREEsY0FBQ0E7QUFBREEsQ0FBQ0EsQUE5R0QsSUE4R0M7QUE3R1ksZUFBTyxVQTZHbkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNQcmVzZW50LCBpc1N0cmluZywgaXNBcnJheX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7XG4gIERvQ2hlY2ssXG4gIE9uRGVzdHJveSxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgUmVuZGVyZXIsXG4gIEl0ZXJhYmxlRGlmZmVyLFxuICBLZXlWYWx1ZURpZmZlcixcbiAgQ29sbGVjdGlvbkNoYW5nZVJlY29yZCxcbiAgS2V5VmFsdWVDaGFuZ2VSZWNvcmRcbn0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge1N0cmluZ01hcFdyYXBwZXIsIGlzTGlzdExpa2VJdGVyYWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxuLyoqXG4gKiBUaGUgYE5nQ2xhc3NgIGRpcmVjdGl2ZSBjb25kaXRpb25hbGx5IGFkZHMgYW5kIHJlbW92ZXMgQ1NTIGNsYXNzZXMgb24gYW4gSFRNTCBlbGVtZW50IGJhc2VkIG9uXG4gKiBhbiBleHByZXNzaW9uJ3MgZXZhbHVhdGlvbiByZXN1bHQuXG4gKlxuICogVGhlIHJlc3VsdCBvZiBhbiBleHByZXNzaW9uIGV2YWx1YXRpb24gaXMgaW50ZXJwcmV0ZWQgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHR5cGUgb2ZcbiAqIHRoZSBleHByZXNzaW9uIGV2YWx1YXRpb24gcmVzdWx0OlxuICogLSBgc3RyaW5nYCAtIGFsbCB0aGUgQ1NTIGNsYXNzZXMgbGlzdGVkIGluIGEgc3RyaW5nIChzcGFjZSBkZWxpbWl0ZWQpIGFyZSBhZGRlZFxuICogLSBgQXJyYXlgIC0gYWxsIHRoZSBDU1MgY2xhc3NlcyAoQXJyYXkgZWxlbWVudHMpIGFyZSBhZGRlZFxuICogLSBgT2JqZWN0YCAtIGVhY2gga2V5IGNvcnJlc3BvbmRzIHRvIGEgQ1NTIGNsYXNzIG5hbWUgd2hpbGUgdmFsdWVzIGFyZSBpbnRlcnByZXRlZCBhcyBleHByZXNzaW9uc1xuICogZXZhbHVhdGluZyB0byBgQm9vbGVhbmAuIElmIGEgZ2l2ZW4gZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gYHRydWVgIGEgY29ycmVzcG9uZGluZyBDU1MgY2xhc3NcbiAqIGlzIGFkZGVkIC0gb3RoZXJ3aXNlIGl0IGlzIHJlbW92ZWQuXG4gKlxuICogV2hpbGUgdGhlIGBOZ0NsYXNzYCBkaXJlY3RpdmUgY2FuIGludGVycHJldCBleHByZXNzaW9ucyBldmFsdWF0aW5nIHRvIGBzdHJpbmdgLCBgQXJyYXlgXG4gKiBvciBgT2JqZWN0YCwgdGhlIGBPYmplY3RgLWJhc2VkIHZlcnNpb24gaXMgdGhlIG1vc3Qgb2Z0ZW4gdXNlZCBhbmQgaGFzIGFuIGFkdmFudGFnZSBvZiBrZWVwaW5nXG4gKiBhbGwgdGhlIENTUyBjbGFzcyBuYW1lcyBpbiBhIHRlbXBsYXRlLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9hNFlkdG1XeXdoSjMzdXFmcFBQbj9wPXByZXZpZXcpKTpcbiAqXG4gKiBgYGBcbiAqIGltcG9ydCB7Q29tcG9uZW50fSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbiAqIGltcG9ydCB7TmdDbGFzc30gZnJvbSAnYW5ndWxhcjIvY29tbW9uJztcbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICd0b2dnbGUtYnV0dG9uJyxcbiAqICAgaW5wdXRzOiBbJ2lzRGlzYWJsZWQnXSxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cInthY3RpdmU6IGlzT24sIGRpc2FibGVkOiBpc0Rpc2FibGVkfVwiXG4gKiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlKCFpc09uKVwiPlxuICogICAgICAgICAgQ2xpY2sgbWUhXG4gKiAgICAgIDwvZGl2PmAsXG4gKiAgIHN0eWxlczogW2BcbiAqICAgICAuYnV0dG9uIHtcbiAqICAgICAgIHdpZHRoOiAxMjBweDtcbiAqICAgICAgIGJvcmRlcjogbWVkaXVtIHNvbGlkIGJsYWNrO1xuICogICAgIH1cbiAqXG4gKiAgICAgLmFjdGl2ZSB7XG4gKiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XG4gKiAgICB9XG4gKlxuICogICAgIC5kaXNhYmxlZCB7XG4gKiAgICAgICBjb2xvcjogZ3JheTtcbiAqICAgICAgIGJvcmRlcjogbWVkaXVtIHNvbGlkIGdyYXk7XG4gKiAgICAgfVxuICogICBgXVxuICogICBkaXJlY3RpdmVzOiBbTmdDbGFzc11cbiAqIH0pXG4gKiBjbGFzcyBUb2dnbGVCdXR0b24ge1xuICogICBpc09uID0gZmFsc2U7XG4gKiAgIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAqXG4gKiAgIHRvZ2dsZShuZXdTdGF0ZSkge1xuICogICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKSB7XG4gKiAgICAgICB0aGlzLmlzT24gPSBuZXdTdGF0ZTtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tuZ0NsYXNzXScsIGlucHV0czogWydyYXdDbGFzczogbmdDbGFzcycsICdpbml0aWFsQ2xhc3NlczogY2xhc3MnXX0pXG5leHBvcnQgY2xhc3MgTmdDbGFzcyBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2l0ZXJhYmxlRGlmZmVyOiBJdGVyYWJsZURpZmZlcjtcbiAgcHJpdmF0ZSBfa2V5VmFsdWVEaWZmZXI6IEtleVZhbHVlRGlmZmVyO1xuICBwcml2YXRlIF9pbml0aWFsQ2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBfcmF3Q2xhc3M6IHN0cmluZ1tdIHwgU2V0PHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaXRlcmFibGVEaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsIHByaXZhdGUgX2tleVZhbHVlRGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxuICAgICAgICAgICAgICBwcml2YXRlIF9uZ0VsOiBFbGVtZW50UmVmLCBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIpIHt9XG5cbiAgc2V0IGluaXRpYWxDbGFzc2VzKHY6IHN0cmluZykge1xuICAgIHRoaXMuX2FwcGx5SW5pdGlhbENsYXNzZXModHJ1ZSk7XG4gICAgdGhpcy5faW5pdGlhbENsYXNzZXMgPSBpc1ByZXNlbnQodikgJiYgaXNTdHJpbmcodikgPyB2LnNwbGl0KCcgJykgOiBbXTtcbiAgICB0aGlzLl9hcHBseUluaXRpYWxDbGFzc2VzKGZhbHNlKTtcbiAgICB0aGlzLl9hcHBseUNsYXNzZXModGhpcy5fcmF3Q2xhc3MsIGZhbHNlKTtcbiAgfVxuXG4gIHNldCByYXdDbGFzcyh2OiBzdHJpbmcgfCBzdHJpbmdbXSB8IFNldDxzdHJpbmc+fCB7W2tleTogc3RyaW5nXTogYW55fSkge1xuICAgIHRoaXMuX2NsZWFudXBDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzKTtcblxuICAgIGlmIChpc1N0cmluZyh2KSkge1xuICAgICAgdiA9ICg8c3RyaW5nPnYpLnNwbGl0KCcgJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmF3Q2xhc3MgPSA8c3RyaW5nW10gfCBTZXQ8c3RyaW5nPj52O1xuICAgIHRoaXMuX2l0ZXJhYmxlRGlmZmVyID0gbnVsbDtcbiAgICB0aGlzLl9rZXlWYWx1ZURpZmZlciA9IG51bGw7XG4gICAgaWYgKGlzUHJlc2VudCh2KSkge1xuICAgICAgaWYgKGlzTGlzdExpa2VJdGVyYWJsZSh2KSkge1xuICAgICAgICB0aGlzLl9pdGVyYWJsZURpZmZlciA9IHRoaXMuX2l0ZXJhYmxlRGlmZmVycy5maW5kKHYpLmNyZWF0ZShudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2tleVZhbHVlRGlmZmVyID0gdGhpcy5fa2V5VmFsdWVEaWZmZXJzLmZpbmQodikuY3JlYXRlKG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX2l0ZXJhYmxlRGlmZmVyKSkge1xuICAgICAgdmFyIGNoYW5nZXMgPSB0aGlzLl9pdGVyYWJsZURpZmZlci5kaWZmKHRoaXMuX3Jhd0NsYXNzKTtcbiAgICAgIGlmIChpc1ByZXNlbnQoY2hhbmdlcykpIHtcbiAgICAgICAgdGhpcy5fYXBwbHlJdGVyYWJsZUNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fa2V5VmFsdWVEaWZmZXIpKSB7XG4gICAgICB2YXIgY2hhbmdlcyA9IHRoaXMuX2tleVZhbHVlRGlmZmVyLmRpZmYodGhpcy5fcmF3Q2xhc3MpO1xuICAgICAgaWYgKGlzUHJlc2VudChjaGFuZ2VzKSkge1xuICAgICAgICB0aGlzLl9hcHBseUtleVZhbHVlQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHsgdGhpcy5fY2xlYW51cENsYXNzZXModGhpcy5fcmF3Q2xhc3MpOyB9XG5cbiAgcHJpdmF0ZSBfY2xlYW51cENsYXNzZXMocmF3Q2xhc3NWYWw6IHN0cmluZ1tdIHwgU2V0PHN0cmluZz58IHtba2V5OiBzdHJpbmddOiBhbnl9KTogdm9pZCB7XG4gICAgdGhpcy5fYXBwbHlDbGFzc2VzKHJhd0NsYXNzVmFsLCB0cnVlKTtcbiAgICB0aGlzLl9hcHBseUluaXRpYWxDbGFzc2VzKGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5S2V5VmFsdWVDaGFuZ2VzKGNoYW5nZXM6IGFueSk6IHZvaWQge1xuICAgIGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbShcbiAgICAgICAgKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQpID0+IHsgdGhpcy5fdG9nZ2xlQ2xhc3MocmVjb3JkLmtleSwgcmVjb3JkLmN1cnJlbnRWYWx1ZSk7IH0pO1xuICAgIGNoYW5nZXMuZm9yRWFjaENoYW5nZWRJdGVtKFxuICAgICAgICAocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCkgPT4geyB0aGlzLl90b2dnbGVDbGFzcyhyZWNvcmQua2V5LCByZWNvcmQuY3VycmVudFZhbHVlKTsgfSk7XG4gICAgY2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQpID0+IHtcbiAgICAgIGlmIChyZWNvcmQucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICB0aGlzLl90b2dnbGVDbGFzcyhyZWNvcmQua2V5LCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUl0ZXJhYmxlQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICBjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oXG4gICAgICAgIChyZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQpID0+IHsgdGhpcy5fdG9nZ2xlQ2xhc3MocmVjb3JkLml0ZW0sIHRydWUpOyB9KTtcbiAgICBjaGFuZ2VzLmZvckVhY2hSZW1vdmVkSXRlbShcbiAgICAgICAgKHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCkgPT4geyB0aGlzLl90b2dnbGVDbGFzcyhyZWNvcmQuaXRlbSwgZmFsc2UpOyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5SW5pdGlhbENsYXNzZXMoaXNDbGVhbnVwOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5pdGlhbENsYXNzZXMuZm9yRWFjaChjbGFzc05hbWUgPT4gdGhpcy5fdG9nZ2xlQ2xhc3MoY2xhc3NOYW1lLCAhaXNDbGVhbnVwKSk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUNsYXNzZXMocmF3Q2xhc3NWYWw6IHN0cmluZ1tdIHwgU2V0PHN0cmluZz58IHtba2V5OiBzdHJpbmddOiBhbnl9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNDbGVhbnVwOiBib29sZWFuKSB7XG4gICAgaWYgKGlzUHJlc2VudChyYXdDbGFzc1ZhbCkpIHtcbiAgICAgIGlmIChpc0FycmF5KHJhd0NsYXNzVmFsKSkge1xuICAgICAgICAoPHN0cmluZ1tdPnJhd0NsYXNzVmFsKS5mb3JFYWNoKGNsYXNzTmFtZSA9PiB0aGlzLl90b2dnbGVDbGFzcyhjbGFzc05hbWUsICFpc0NsZWFudXApKTtcbiAgICAgIH0gZWxzZSBpZiAocmF3Q2xhc3NWYWwgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgKDxTZXQ8c3RyaW5nPj5yYXdDbGFzc1ZhbCkuZm9yRWFjaChjbGFzc05hbWUgPT4gdGhpcy5fdG9nZ2xlQ2xhc3MoY2xhc3NOYW1lLCAhaXNDbGVhbnVwKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2goPHtbazogc3RyaW5nXTogYW55fT5yYXdDbGFzc1ZhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHBWYWw6IGFueSwgY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUHJlc2VudChleHBWYWwpKSB0aGlzLl90b2dnbGVDbGFzcyhjbGFzc05hbWUsICFpc0NsZWFudXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdG9nZ2xlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcsIGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjbGFzc05hbWUgPSBjbGFzc05hbWUudHJpbSgpO1xuICAgIGlmIChjbGFzc05hbWUubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKGNsYXNzTmFtZS5pbmRleE9mKCcgJykgPiAtMSkge1xuICAgICAgICB2YXIgY2xhc3NlcyA9IGNsYXNzTmFtZS5zcGxpdCgvXFxzKy9nKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGNsYXNzZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRFbGVtZW50Q2xhc3ModGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LCBjbGFzc2VzW2ldLCBlbmFibGVkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0RWxlbWVudENsYXNzKHRoaXMuX25nRWwubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lLCBlbmFibGVkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * The `NgFor` directive instantiates a template once per item from an iterable. The context for\r\n * each instantiated template inherits from the outer context with the given loop variable set\r\n * to the current item from the iterable.\r\n *\r\n * # Local Variables\r\n *\r\n * `NgFor` provides several exported values that can be aliased to local variables:\r\n *\r\n * * `index` will be set to the current loop iteration for each template context.\r\n * * `last` will be set to a boolean value indicating whether the item is the last one in the\r\n * iteration.\r\n * * `even` will be set to a boolean value indicating whether this item has an even index.\r\n * * `odd` will be set to a boolean value indicating whether this item has an odd index.\r\n *\r\n * # Change Propagation\r\n *\r\n * When the contents of the iterator changes, `NgFor` makes the corresponding changes to the DOM:\r\n *\r\n * * When an item is added, a new instance of the template is added to the DOM.\r\n * * When an item is removed, its template instance is removed from the DOM.\r\n * * When items are reordered, their respective templates are reordered in the DOM.\r\n * * Otherwise, the DOM element for that item will remain the same.\r\n *\r\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\r\n * those changes in the DOM. This has important implications for animations and any stateful\r\n * controls\r\n * (such as `<input>` elements which accept user input) that are present. Inserted rows can be\r\n * animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state such\r\n * as user input.\r\n *\r\n * It is possible for the identities of elements in the iterator to change while the data does not.\r\n * This can happen, for example, if the iterator produced from an RPC to the server, and that\r\n * RPC is re-run. Even if the data hasn't changed, the second response will produce objects with\r\n * different identities, and Angular will tear down the entire DOM and rebuild it (as if all old\r\n * elements were deleted and all new elements inserted). This is an expensive operation and should\r\n * be avoided if possible.\r\n *\r\n * # Syntax\r\n *\r\n * - `<li *ngFor=\"#item of items; #i = index\">...</li>`\r\n * - `<li template=\"ngFor #item of items; #i = index\">...</li>`\r\n * - `<template ngFor #item [ngForOf]=\"items\" #i=\"index\"><li>...</li></template>`\r\n *\r\n * ### Example\r\n *\r\n * See a [live demo](http://plnkr.co/edit/KVuXxDp0qinGDyo307QW?p=preview) for a more detailed\r\n * example.\r\n */\r\nvar NgFor = (function () {\r\n function NgFor(_viewContainer, _templateRef, _iterableDiffers, _cdr) {\r\n this._viewContainer = _viewContainer;\r\n this._templateRef = _templateRef;\r\n this._iterableDiffers = _iterableDiffers;\r\n this._cdr = _cdr;\r\n }\r\n Object.defineProperty(NgFor.prototype, \"ngForOf\", {\r\n set: function (value) {\r\n this._ngForOf = value;\r\n if (lang_1.isBlank(this._differ) && lang_1.isPresent(value)) {\r\n this._differ = this._iterableDiffers.find(value).create(this._cdr, this._ngForTrackBy);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFor.prototype, \"ngForTemplate\", {\r\n set: function (value) {\r\n if (lang_1.isPresent(value)) {\r\n this._templateRef = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgFor.prototype, \"ngForTrackBy\", {\r\n set: function (value) { this._ngForTrackBy = value; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgFor.prototype.ngDoCheck = function () {\r\n if (lang_1.isPresent(this._differ)) {\r\n var changes = this._differ.diff(this._ngForOf);\r\n if (lang_1.isPresent(changes))\r\n this._applyChanges(changes);\r\n }\r\n };\r\n NgFor.prototype._applyChanges = function (changes) {\r\n var _this = this;\r\n // TODO(rado): check if change detection can produce a change record that is\r\n // easier to consume than current.\r\n var recordViewTuples = [];\r\n changes.forEachRemovedItem(function (removedRecord) {\r\n return recordViewTuples.push(new RecordViewTuple(removedRecord, null));\r\n });\r\n changes.forEachMovedItem(function (movedRecord) {\r\n return recordViewTuples.push(new RecordViewTuple(movedRecord, null));\r\n });\r\n var insertTuples = this._bulkRemove(recordViewTuples);\r\n changes.forEachAddedItem(function (addedRecord) {\r\n return insertTuples.push(new RecordViewTuple(addedRecord, null));\r\n });\r\n this._bulkInsert(insertTuples);\r\n for (var i = 0; i < insertTuples.length; i++) {\r\n this._perViewChange(insertTuples[i].view, insertTuples[i].record);\r\n }\r\n for (var i = 0, ilen = this._viewContainer.length; i < ilen; i++) {\r\n var viewRef = this._viewContainer.get(i);\r\n viewRef.setLocal('last', i === ilen - 1);\r\n }\r\n changes.forEachIdentityChange(function (record) {\r\n var viewRef = _this._viewContainer.get(record.currentIndex);\r\n viewRef.setLocal('\\$implicit', record.item);\r\n });\r\n };\r\n NgFor.prototype._perViewChange = function (view, record) {\r\n view.setLocal('\\$implicit', record.item);\r\n view.setLocal('index', record.currentIndex);\r\n view.setLocal('even', (record.currentIndex % 2 == 0));\r\n view.setLocal('odd', (record.currentIndex % 2 == 1));\r\n };\r\n NgFor.prototype._bulkRemove = function (tuples) {\r\n tuples.sort(function (a, b) {\r\n return a.record.previousIndex - b.record.previousIndex;\r\n });\r\n var movedTuples = [];\r\n for (var i = tuples.length - 1; i >= 0; i--) {\r\n var tuple = tuples[i];\r\n // separate moved views from removed views.\r\n if (lang_1.isPresent(tuple.record.currentIndex)) {\r\n tuple.view = this._viewContainer.detach(tuple.record.previousIndex);\r\n movedTuples.push(tuple);\r\n }\r\n else {\r\n this._viewContainer.remove(tuple.record.previousIndex);\r\n }\r\n }\r\n return movedTuples;\r\n };\r\n NgFor.prototype._bulkInsert = function (tuples) {\r\n tuples.sort(function (a, b) { return a.record.currentIndex - b.record.currentIndex; });\r\n for (var i = 0; i < tuples.length; i++) {\r\n var tuple = tuples[i];\r\n if (lang_1.isPresent(tuple.view)) {\r\n this._viewContainer.insert(tuple.view, tuple.record.currentIndex);\r\n }\r\n else {\r\n tuple.view =\r\n this._viewContainer.createEmbeddedView(this._templateRef, tuple.record.currentIndex);\r\n }\r\n }\r\n return tuples;\r\n };\r\n NgFor = __decorate([\r\n core_1.Directive({ selector: '[ngFor][ngForOf]', inputs: ['ngForTrackBy', 'ngForOf', 'ngForTemplate'] }), \r\n __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.TemplateRef, core_1.IterableDiffers, core_1.ChangeDetectorRef])\r\n ], NgFor);\r\n return NgFor;\r\n})();\r\nexports.NgFor = NgFor;\r\nvar RecordViewTuple = (function () {\r\n function RecordViewTuple(record, view) {\r\n this.record = record;\r\n this.view = view;\r\n }\r\n return RecordViewTuple;\r\n})();\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfZm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbW1vbi9kaXJlY3RpdmVzL25nX2Zvci50cyJdLCJuYW1lcyI6WyJOZ0ZvciIsIk5nRm9yLmNvbnN0cnVjdG9yIiwiTmdGb3IubmdGb3JPZiIsIk5nRm9yLm5nRm9yVGVtcGxhdGUiLCJOZ0Zvci5uZ0ZvclRyYWNrQnkiLCJOZ0Zvci5uZ0RvQ2hlY2siLCJOZ0Zvci5fYXBwbHlDaGFuZ2VzIiwiTmdGb3IuX3BlclZpZXdDaGFuZ2UiLCJOZ0Zvci5fYnVsa1JlbW92ZSIsIk5nRm9yLl9idWxrSW5zZXJ0IiwiUmVjb3JkVmlld1R1cGxlIiwiUmVjb3JkVmlld1R1cGxlLmNvbnN0cnVjdG9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxxQkFVTyxlQUFlLENBQUMsQ0FBQTtBQUN2QixxQkFBaUMsMEJBQTBCLENBQUMsQ0FBQTtBQU01RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0RHO0FBQ0g7SUFPRUEsZUFBb0JBLGNBQWdDQSxFQUFVQSxZQUF5QkEsRUFDbkVBLGdCQUFpQ0EsRUFBVUEsSUFBdUJBO1FBRGxFQyxtQkFBY0EsR0FBZEEsY0FBY0EsQ0FBa0JBO1FBQVVBLGlCQUFZQSxHQUFaQSxZQUFZQSxDQUFhQTtRQUNuRUEscUJBQWdCQSxHQUFoQkEsZ0JBQWdCQSxDQUFpQkE7UUFBVUEsU0FBSUEsR0FBSkEsSUFBSUEsQ0FBbUJBO0lBQUdBLENBQUNBO0lBRTFGRCxzQkFBSUEsMEJBQU9BO2FBQVhBLFVBQVlBLEtBQVVBO1lBQ3BCRSxJQUFJQSxDQUFDQSxRQUFRQSxHQUFHQSxLQUFLQSxDQUFDQTtZQUN0QkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsY0FBT0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsSUFBSUEsZ0JBQVNBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUM5Q0EsSUFB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SUEsR0FBR0EsSUFBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsTUFBTUEsRUFBRUEsQ0FBQ0EsR0FBR0EsSUFBSUEsRUFBRUEsQ0FBQ0EsRUFBRUEsRUFBRUEsQ0FBQ0E7WUFDakVBLElBQUlBLE9BQU9BLEdBQW9CQSxJQUFJQSxDQUFDQSxjQUFjQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUMxREEsT0FBT0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsTUFBTUEsRUFBRUEsQ0FBQ0EsS0FBS0EsSUFBSUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDM0NBLENBQUNBO1FBRURBLE9BQU9BLENBQUNBLHFCQUFxQkEsQ0FBQ0EsVUFBQ0EsTUFBTUE7WUFDbkNBLElBQUlBLE9BQU9BLEdBQW9CQSxLQUFJQSxDQUFDQSxjQUFjQSxDQUFDQSxHQUFHQSxDQUFDQSxNQUFNQSxDQUFDQSxZQUFZQSxDQUFDQSxDQUFDQTtZQUM1RUEsT0FBT0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsWUFBWUEsRUFBRUEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDOUNBLENBQUNBLENBQUNBLENBQUNBO0lBQ0xBLENBQUNBO0lBRU9OLDhCQUFjQSxHQUF0QkEsVUFBdUJBLElBQXFCQSxFQUFFQSxNQUE4QkE7UUFDMUVPLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLFlBQVlBLEVBQUVBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ3pDQSxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxPQUFPQSxFQUFFQSxNQUFNQSxDQUFDQSxZQUFZQSxDQUFDQSxDQUFDQTtRQUM1Q0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsTUFBTUEsRUFBRUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsWUFBWUEsR0FBR0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDdERBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLEtBQUtBLEVBQUVBLENBQUNBLE1BQU1BLENBQUNBLFlBQVlBLEdBQUdBLENBQUNBLElB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RUEsU0FBU0EsRUFBRUEsZUFBZUEsQ0FBQ0EsRUFBQ0EsQ0FBQ0E7O2NBcUcvRkE7SUFBREEsWUFBQ0E7QUFBREEsQ0FBQ0EsQUFyR0QsSUFxR0M7QUFwR1ksYUFBSyxRQW9HakIsQ0FBQTtBQUVEO0lBR0VVLHlCQUFZQSxNQUFXQSxFQUFFQSxJQUFxQkE7UUFDNUNDLElBQUlBLENBQUNBLE1BQU1BLEdBQUdBLE1BQU1BLENBQUNBO1FBQ3JCQSxJQUFJQSxDQUFDQSxJQUFJQSxHQUFHQSxJQUFJQSxDQUFDQTtJQUNuQkEsQ0FBQ0E7SUFDSEQsc0JBQUNBO0FBQURBLENBQUNBLEFBUEQsSUFPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERvQ2hlY2ssXG4gIERpcmVjdGl2ZSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEl0ZXJhYmxlRGlmZmVyLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFRlbXBsYXRlUmVmLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIFRyYWNrQnlGblxufSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7aXNQcmVzZW50LCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEl0ZXJhYmxlRGlmZmVyLFxuICBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkXG59IGZyb20gXCIuLi8uLi9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vZGlmZmVycy9kZWZhdWx0X2l0ZXJhYmxlX2RpZmZlclwiO1xuXG4vKipcbiAqIFRoZSBgTmdGb3JgIGRpcmVjdGl2ZSBpbnN0YW50aWF0ZXMgYSB0ZW1wbGF0ZSBvbmNlIHBlciBpdGVtIGZyb20gYW4gaXRlcmFibGUuIFRoZSBjb250ZXh0IGZvclxuICogZWFjaCBpbnN0YW50aWF0ZWQgdGVtcGxhdGUgaW5oZXJpdHMgZnJvbSB0aGUgb3V0ZXIgY29udGV4dCB3aXRoIHRoZSBnaXZlbiBsb29wIHZhcmlhYmxlIHNldFxuICogdG8gdGhlIGN1cnJlbnQgaXRlbSBmcm9tIHRoZSBpdGVyYWJsZS5cbiAqXG4gKiAjIExvY2FsIFZhcmlhYmxlc1xuICpcbiAqIGBOZ0ZvcmAgcHJvdmlkZXMgc2V2ZXJhbCBleHBvcnRlZCB2YWx1ZXMgdGhhdCBjYW4gYmUgYWxpYXNlZCB0byBsb2NhbCB2YXJpYWJsZXM6XG4gKlxuICogKiBgaW5kZXhgIHdpbGwgYmUgc2V0IHRvIHRoZSBjdXJyZW50IGxvb3AgaXRlcmF0aW9uIGZvciBlYWNoIHRlbXBsYXRlIGNvbnRleHQuXG4gKiAqIGBsYXN0YCB3aWxsIGJlIHNldCB0byBhIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBpdGVtIGlzIHRoZSBsYXN0IG9uZSBpbiB0aGVcbiAqICAgaXRlcmF0aW9uLlxuICogKiBgZXZlbmAgd2lsbCBiZSBzZXQgdG8gYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGlzIGl0ZW0gaGFzIGFuIGV2ZW4gaW5kZXguXG4gKiAqIGBvZGRgIHdpbGwgYmUgc2V0IHRvIGEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyBpdGVtIGhhcyBhbiBvZGQgaW5kZXguXG4gKlxuICogIyBDaGFuZ2UgUHJvcGFnYXRpb25cbiAqXG4gKiBXaGVuIHRoZSBjb250ZW50cyBvZiB0aGUgaXRlcmF0b3IgY2hhbmdlcywgYE5nRm9yYCBtYWtlcyB0aGUgY29ycmVzcG9uZGluZyBjaGFuZ2VzIHRvIHRoZSBET006XG4gKlxuICogKiBXaGVuIGFuIGl0ZW0gaXMgYWRkZWQsIGEgbmV3IGluc3RhbmNlIG9mIHRoZSB0ZW1wbGF0ZSBpcyBhZGRlZCB0byB0aGUgRE9NLlxuICogKiBXaGVuIGFuIGl0ZW0gaXMgcmVtb3ZlZCwgaXRzIHRlbXBsYXRlIGluc3RhbmNlIGlzIHJlbW92ZWQgZnJvbSB0aGUgRE9NLlxuICogKiBXaGVuIGl0ZW1zIGFyZSByZW9yZGVyZWQsIHRoZWlyIHJlc3BlY3RpdmUgdGVtcGxhdGVzIGFyZSByZW9yZGVyZWQgaW4gdGhlIERPTS5cbiAqICogT3RoZXJ3aXNlLCB0aGUgRE9NIGVsZW1lbnQgZm9yIHRoYXQgaXRlbSB3aWxsIHJlbWFpbiB0aGUgc2FtZS5cbiAqXG4gKiBBbmd1bGFyIHVzZXMgb2JqZWN0IGlkZW50aXR5IHRvIHRyYWNrIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucyB3aXRoaW4gdGhlIGl0ZXJhdG9yIGFuZCByZXByb2R1Y2VcbiAqIHRob3NlIGNoYW5nZXMgaW4gdGhlIERPTS4gVGhpcyBoYXMgaW1wb3J0YW50IGltcGxpY2F0aW9ucyBmb3IgYW5pbWF0aW9ucyBhbmQgYW55IHN0YXRlZnVsXG4gKiBjb250cm9sc1xuICogKHN1Y2ggYXMgYDxpbnB1dD5gIGVsZW1lbnRzIHdoaWNoIGFjY2VwdCB1c2VyIGlucHV0KSB0aGF0IGFyZSBwcmVzZW50LiBJbnNlcnRlZCByb3dzIGNhbiBiZVxuICogYW5pbWF0ZWQgaW4sIGRlbGV0ZWQgcm93cyBjYW4gYmUgYW5pbWF0ZWQgb3V0LCBhbmQgdW5jaGFuZ2VkIHJvd3MgcmV0YWluIGFueSB1bnNhdmVkIHN0YXRlIHN1Y2hcbiAqIGFzIHVzZXIgaW5wdXQuXG4gKlxuICogSXQgaXMgcG9zc2libGUgZm9yIHRoZSBpZGVudGl0aWVzIG9mIGVsZW1lbnRzIGluIHRoZSBpdGVyYXRvciB0byBjaGFuZ2Ugd2hpbGUgdGhlIGRhdGEgZG9lcyBub3QuXG4gKiBUaGlzIGNhbiBoYXBwZW4sIGZvciBleGFtcGxlLCBpZiB0aGUgaXRlcmF0b3IgcHJvZHVjZWQgZnJvbSBhbiBSUEMgdG8gdGhlIHNlcnZlciwgYW5kIHRoYXRcbiAqIFJQQyBpcyByZS1ydW4uIEV2ZW4gaWYgdGhlIGRhdGEgaGFzbid0IGNoYW5nZWQsIHRoZSBzZWNvbmQgcmVzcG9uc2Ugd2lsbCBwcm9kdWNlIG9iamVjdHMgd2l0aFxuICogZGlmZmVyZW50IGlkZW50aXRpZXMsIGFuZCBBbmd1bGFyIHdpbGwgdGVhciBkb3duIHRoZSBlbnRpcmUgRE9NIGFuZCByZWJ1aWxkIGl0IChhcyBpZiBhbGwgb2xkXG4gKiBlbGVtZW50cyB3ZXJlIGRlbGV0ZWQgYW5kIGFsbCBuZXcgZWxlbWVudHMgaW5zZXJ0ZWQpLiBUaGlzIGlzIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24gYW5kIHNob3VsZFxuICogYmUgYXZvaWRlZCBpZiBwb3NzaWJsZS5cbiAqXG4gKiAjIFN5bnRheFxuICpcbiAqIC0gYDxsaSAqbmdGb3I9XCIjaXRlbSBvZiBpdGVtczsgI2kgPSBpbmRleFwiPi4uLjwvbGk+YFxuICogLSBgPGxpIHRlbXBsYXRlPVwibmdGb3IgI2l0ZW0gb2YgaXRlbXM7ICNpID0gaW5kZXhcIj4uLi48L2xpPmBcbiAqIC0gYDx0ZW1wbGF0ZSBuZ0ZvciAjaXRlbSBbbmdGb3JPZl09XCJpdGVtc1wiICNpPVwiaW5kZXhcIj48bGk+Li4uPC9saT48L3RlbXBsYXRlPmBcbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIFNlZSBhIFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0tWdVh4RHAwcWluR0R5bzMwN1FXP3A9cHJldmlldykgZm9yIGEgbW9yZSBkZXRhaWxlZFxuICogZXhhbXBsZS5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmdGb3JdW25nRm9yT2ZdJywgaW5wdXRzOiBbJ25nRm9yVHJhY2tCeScsICduZ0Zvck9mJywgJ25nRm9yVGVtcGxhdGUnXX0pXG5leHBvcnQgY2xhc3MgTmdGb3IgaW1wbGVtZW50cyBEb0NoZWNrIHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbmdGb3JPZjogYW55O1xuICBfbmdGb3JUcmFja0J5OiBUcmFja0J5Rm47XG4gIHByaXZhdGUgX2RpZmZlcjogSXRlcmFibGVEaWZmZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBfdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIF9pdGVyYWJsZURpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycywgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBzZXQgbmdGb3JPZih2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fbmdGb3JPZiA9IHZhbHVlO1xuICAgIGlmIChpc0JsYW5rKHRoaXMuX2RpZmZlcikgJiYgaXNQcmVzZW50KHZhbHVlKSkge1xuICAgICAgdGhpcy5fZGlmZmVyID0gdGhpcy5faXRlcmFibGVEaWZmZXJzLmZpbmQodmFsdWUpLmNyZWF0ZSh0aGlzLl9jZHIsIHRoaXMuX25nRm9yVHJhY2tCeSk7XG4gICAgfVxuICB9XG5cbiAgc2V0IG5nRm9yVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmKSB7XG4gICAgaWYgKGlzUHJlc2VudCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3RlbXBsYXRlUmVmID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgc2V0IG5nRm9yVHJhY2tCeSh2YWx1ZTogVHJhY2tCeUZuKSB7IHRoaXMuX25nRm9yVHJhY2tCeSA9IHZhbHVlOyB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fZGlmZmVyKSkge1xuICAgICAgdmFyIGNoYW5nZXMgPSB0aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9uZ0Zvck9mKTtcbiAgICAgIGlmIChpc1ByZXNlbnQoY2hhbmdlcykpIHRoaXMuX2FwcGx5Q2hhbmdlcyhjaGFuZ2VzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUNoYW5nZXMoY2hhbmdlczogRGVmYXVsdEl0ZXJhYmxlRGlmZmVyKSB7XG4gICAgLy8gVE9ETyhyYWRvKTogY2hlY2sgaWYgY2hhbmdlIGRldGVjdGlvbiBjYW4gcHJvZHVjZSBhIGNoYW5nZSByZWNvcmQgdGhhdCBpc1xuICAgIC8vIGVhc2llciB0byBjb25zdW1lIHRoYW4gY3VycmVudC5cbiAgICB2YXIgcmVjb3JkVmlld1R1cGxlczogUmVjb3JkVmlld1R1cGxlW10gPSBbXTtcbiAgICBjaGFuZ2VzLmZvckVhY2hSZW1vdmVkSXRlbSgocmVtb3ZlZFJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkVmlld1R1cGxlcy5wdXNoKG5ldyBSZWNvcmRWaWV3VHVwbGUocmVtb3ZlZFJlY29yZCwgbnVsbCkpKTtcblxuICAgIGNoYW5nZXMuZm9yRWFjaE1vdmVkSXRlbSgobW92ZWRSZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRWaWV3VHVwbGVzLnB1c2gobmV3IFJlY29yZFZpZXdUdXBsZShtb3ZlZFJlY29yZCwgbnVsbCkpKTtcblxuICAgIHZhciBpbnNlcnRUdXBsZXMgPSB0aGlzLl9idWxrUmVtb3ZlKHJlY29yZFZpZXdUdXBsZXMpO1xuXG4gICAgY2hhbmdlcy5mb3JFYWNoQWRkZWRJdGVtKChhZGRlZFJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydFR1cGxlcy5wdXNoKG5ldyBSZWNvcmRWaWV3VHVwbGUoYWRkZWRSZWNvcmQsIG51bGwpKSk7XG5cbiAgICB0aGlzLl9idWxrSW5zZXJ0KGluc2VydFR1cGxlcyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluc2VydFR1cGxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5fcGVyVmlld0NoYW5nZShpbnNlcnRUdXBsZXNbaV0udmlldywgaW5zZXJ0VHVwbGVzW2ldLnJlY29yZCk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDAsIGlsZW4gPSB0aGlzLl92aWV3Q29udGFpbmVyLmxlbmd0aDsgaSA8IGlsZW47IGkrKykge1xuICAgICAgdmFyIHZpZXdSZWYgPSA8RW1iZWRkZWRWaWV3UmVmPnRoaXMuX3ZpZXdDb250YWluZXIuZ2V0KGkpO1xuICAgICAgdmlld1JlZi5zZXRMb2NhbCgnbGFzdCcsIGkgPT09IGlsZW4gLSAxKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VzLmZvckVhY2hJZGVudGl0eUNoYW5nZSgocmVjb3JkKSA9PiB7XG4gICAgICB2YXIgdmlld1JlZiA9IDxFbWJlZGRlZFZpZXdSZWY+dGhpcy5fdmlld0NvbnRhaW5lci5nZXQocmVjb3JkLmN1cnJlbnRJbmRleCk7XG4gICAgICB2aWV3UmVmLnNldExvY2FsKCdcXCRpbXBsaWNpdCcsIHJlY29yZC5pdGVtKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3BlclZpZXdDaGFuZ2UodmlldzogRW1iZWRkZWRWaWV3UmVmLCByZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQpIHtcbiAgICB2aWV3LnNldExvY2FsKCdcXCRpbXBsaWNpdCcsIHJlY29yZC5pdGVtKTtcbiAgICB2aWV3LnNldExvY2FsKCdpbmRleCcsIHJlY29yZC5jdXJyZW50SW5kZXgpO1xuICAgIHZpZXcuc2V0TG9jYWwoJ2V2ZW4nLCAocmVjb3JkLmN1cnJlbnRJbmRleCAlIDIgPT0gMCkpO1xuICAgIHZpZXcuc2V0TG9jYWwoJ29kZCcsIChyZWNvcmQuY3VycmVudEluZGV4ICUgMiA9PSAxKSk7XG4gIH1cblxuICBwcml2YXRlIF9idWxrUmVtb3ZlKHR1cGxlczogUmVjb3JkVmlld1R1cGxlW10pOiBSZWNvcmRWaWV3VHVwbGVbXSB7XG4gICAgdHVwbGVzLnNvcnQoKGE6IFJlY29yZFZpZXdUdXBsZSwgYjogUmVjb3JkVmlld1R1cGxlKSA9PlxuICAgICAgICAgICAgICAgICAgICBhLnJlY29yZC5wcmV2aW91c0luZGV4IC0gYi5yZWNvcmQucHJldmlvdXNJbmRleCk7XG4gICAgdmFyIG1vdmVkVHVwbGVzOiBSZWNvcmRWaWV3VHVwbGVbXSA9IFtdO1xuICAgIGZvciAodmFyIGkgPSB0dXBsZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB0dXBsZSA9IHR1cGxlc1tpXTtcbiAgICAgIC8vIHNlcGFyYXRlIG1vdmVkIHZpZXdzIGZyb20gcmVtb3ZlZCB2aWV3cy5cbiAgICAgIGlmIChpc1ByZXNlbnQodHVwbGUucmVjb3JkLmN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgdHVwbGUudmlldyA9IHRoaXMuX3ZpZXdDb250YWluZXIuZGV0YWNoKHR1cGxlLnJlY29yZC5wcmV2aW91c0luZGV4KTtcbiAgICAgICAgbW92ZWRUdXBsZXMucHVzaCh0dXBsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyLnJlbW92ZSh0dXBsZS5yZWNvcmQucHJldmlvdXNJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtb3ZlZFR1cGxlcztcbiAgfVxuXG4gIHByaXZhdGUgX2J1bGtJbnNlcnQodHVwbGVzOiBSZWNvcmRWaWV3VHVwbGVbXSk6IFJlY29yZFZpZXdUdXBsZVtdIHtcbiAgICB0dXBsZXMuc29ydCgoYSwgYikgPT4gYS5yZWNvcmQuY3VycmVudEluZGV4IC0gYi5yZWNvcmQuY3VycmVudEluZGV4KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR1cGxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHR1cGxlID0gdHVwbGVzW2ldO1xuICAgICAgaWYgKGlzUHJlc2VudCh0dXBsZS52aWV3KSkge1xuICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyLmluc2VydCh0dXBsZS52aWV3LCB0dXBsZS5yZWNvcmQuY3VycmVudEluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHR1cGxlLnZpZXcgPVxuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGVSZWYsIHR1cGxlLnJlY29yZC5jdXJyZW50SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHVwbGVzO1xuICB9XG59XG5cbmNsYXNzIFJlY29yZFZpZXdUdXBsZSB7XG4gIHZpZXc6IEVtYmVkZGVkVmlld1JlZjtcbiAgcmVjb3JkOiBhbnk7XG4gIGNvbnN0cnVjdG9yKHJlY29yZDogYW55LCB2aWV3OiBFbWJlZGRlZFZpZXdSZWYpIHtcbiAgICB0aGlzLnJlY29yZCA9IHJlY29yZDtcbiAgICB0aGlzLnZpZXcgPSB2aWV3O1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Removes or recreates a portion of the DOM tree based on an {expression}.\r\n *\r\n * If the expression assigned to `ngIf` evaluates to a false value then the element\r\n * is removed from the DOM, otherwise a clone of the element is reinserted into the DOM.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/fe0kgemFBtmQOY31b4tw?p=preview)):\r\n *\r\n * ```\r\n * <div *ngIf=\"errorCount > 0\" class=\"error\">\r\n * <!-- Error message displayed when the errorCount property on the current context is greater\r\n * than 0. -->\r\n * {{errorCount}} errors detected\r\n * </div>\r\n * ```\r\n *\r\n * ### Syntax\r\n *\r\n * - `<div *ngIf=\"condition\">...</div>`\r\n * - `<div template=\"ngIf condition\">...</div>`\r\n * - `<template [ngIf]=\"condition\"><div>...</div></template>`\r\n */\r\nvar NgIf = (function () {\r\n function NgIf(_viewContainer, _templateRef) {\r\n this._viewContainer = _viewContainer;\r\n this._templateRef = _templateRef;\r\n this._prevCondition = null;\r\n }\r\n Object.defineProperty(NgIf.prototype, \"ngIf\", {\r\n set: function (newCondition /* boolean */) {\r\n if (newCondition && (lang_1.isBlank(this._prevCondition) || !this._prevCondition)) {\r\n this._prevCondition = true;\r\n this._viewContainer.createEmbeddedView(this._templateRef);\r\n }\r\n else if (!newCondition && (lang_1.isBlank(this._prevCondition) || this._prevCondition)) {\r\n this._prevCondition = false;\r\n this._viewContainer.clear();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgIf = __decorate([\r\n core_1.Directive({ selector: '[ngIf]', inputs: ['ngIf'] }), \r\n __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.TemplateRef])\r\n ], NgIf);\r\n return NgIf;\r\n})();\r\nexports.NgIf = NgIf;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfaWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL2RpcmVjdGl2ZXMvbmdfaWYudHMiXSwibmFtZXMiOlsiTmdJZiIsIk5nSWYuY29uc3RydWN0b3IiLCJOZ0lmLm5nSWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHFCQUF1RCxlQUFlLENBQUMsQ0FBQTtBQUN2RSxxQkFBc0IsMEJBQTBCLENBQUMsQ0FBQTtBQUVqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0g7SUFJRUEsY0FBb0JBLGNBQWdDQSxFQUFVQSxZQUF5QkE7UUFBbkVDLG1CQUFjQSxHQUFkQSxjQUFjQSxDQUFrQkE7UUFBVUEsaUJBQVlBLEdBQVpBLFlBQVlBLENBQWFBO1FBRi9FQSxtQkFBY0EsR0FBWUEsSUFBSUEsQ0FBQ0E7SUFFbURBLENBQUNBO0lBRTNGRCxzQkFBSUEsc0JBQUlBO2FBQVJBLFVBQVNBLFlBQWlCQSxDQUFDQSxhQUFhQTtZQUN0Q0UsRUFBRUEsQ0FBQ0EsQ0FBQ0EsWUFBWUEsSUFBSUEsQ0FBQ0EsY0FBT0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzNFQSxJQUFJQSxDQUFDQSxjQUFjQSxHQUFHQSxJQUFJQSxDQUFDQTtnQkFDM0JBLElBQUlBLENBQUNBLGNBQWNBLENBQUNBLGtCQUFrQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsQ0FBQ0E7WUFDNURBLENBQUNBO1lBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLFlBQVlBLElBQUlBLENBQUNBLGNBQU9BLENBQUNBLElBQUlBLENBQUNBLGNBQWNBLENBQUNBLElBQUlBLElBQUlBLENBQUNBLGNBQWNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUNsRkEsSUFBSUEsQ0FBQ0EsY0FBY0EsR0FBR0EsS0FBS0EsQ0FBQ0E7Z0JBQzVCQSxJQUFJQSxDQUFDQSxjQUFjQSxDQUFDQSxLQUFLQSxFQUFFQSxDQUFDQTtZQUM5QkEsQ0FBQ0E7UUFDSEEsQ0FBQ0E7OztPQUFBRjtJQWRIQTtRQUFDQSxnQkFBU0EsQ0FBQ0EsRUFBQ0EsUUFBUUEsRUFBRUEsUUFBUUEsRUFBRUEsTUFBTUEsRUFBRUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsRUFBQ0EsQ0FBQ0E7O2FBZWpEQTtJQUFEQSxXQUFDQTtBQUFEQSxDQUFDQSxBQWZELElBZUM7QUFkWSxZQUFJLE9BY2hCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgVmlld0NvbnRhaW5lclJlZiwgVGVtcGxhdGVSZWZ9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuaW1wb3J0IHtpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG4vKipcbiAqIFJlbW92ZXMgb3IgcmVjcmVhdGVzIGEgcG9ydGlvbiBvZiB0aGUgRE9NIHRyZWUgYmFzZWQgb24gYW4ge2V4cHJlc3Npb259LlxuICpcbiAqIElmIHRoZSBleHByZXNzaW9uIGFzc2lnbmVkIHRvIGBuZ0lmYCBldmFsdWF0ZXMgdG8gYSBmYWxzZSB2YWx1ZSB0aGVuIHRoZSBlbGVtZW50XG4gKiBpcyByZW1vdmVkIGZyb20gdGhlIERPTSwgb3RoZXJ3aXNlIGEgY2xvbmUgb2YgdGhlIGVsZW1lbnQgaXMgcmVpbnNlcnRlZCBpbnRvIHRoZSBET00uXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L2ZlMGtnZW1GQnRtUU9ZMzFiNHR3P3A9cHJldmlldykpOlxuICpcbiAqIGBgYFxuICogPGRpdiAqbmdJZj1cImVycm9yQ291bnQgPiAwXCIgY2xhc3M9XCJlcnJvclwiPlxuICogICA8IS0tIEVycm9yIG1lc3NhZ2UgZGlzcGxheWVkIHdoZW4gdGhlIGVycm9yQ291bnQgcHJvcGVydHkgb24gdGhlIGN1cnJlbnQgY29udGV4dCBpcyBncmVhdGVyXG4gKiB0aGFuIDAuIC0tPlxuICogICB7e2Vycm9yQ291bnR9fSBlcnJvcnMgZGV0ZWN0ZWRcbiAqIDwvZGl2PlxuICogYGBgXG4gKlxuICogIyMjIFN5bnRheFxuICpcbiAqIC0gYDxkaXYgKm5nSWY9XCJjb25kaXRpb25cIj4uLi48L2Rpdj5gXG4gKiAtIGA8ZGl2IHRlbXBsYXRlPVwibmdJZiBjb25kaXRpb25cIj4uLi48L2Rpdj5gXG4gKiAtIGA8dGVtcGxhdGUgW25nSWZdPVwiY29uZGl0aW9uXCI+PGRpdj4uLi48L2Rpdj48L3RlbXBsYXRlPmBcbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmdJZl0nLCBpbnB1dHM6IFsnbmdJZiddfSlcbmV4cG9ydCBjbGFzcyBOZ0lmIHtcbiAgcHJpdmF0ZSBfcHJldkNvbmRpdGlvbjogYm9vbGVhbiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBfdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmKSB7fVxuXG4gIHNldCBuZ0lmKG5ld0NvbmRpdGlvbjogYW55IC8qIGJvb2xlYW4gKi8pIHtcbiAgICBpZiAobmV3Q29uZGl0aW9uICYmIChpc0JsYW5rKHRoaXMuX3ByZXZDb25kaXRpb24pIHx8ICF0aGlzLl9wcmV2Q29uZGl0aW9uKSkge1xuICAgICAgdGhpcy5fcHJldkNvbmRpdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZik7XG4gICAgfSBlbHNlIGlmICghbmV3Q29uZGl0aW9uICYmIChpc0JsYW5rKHRoaXMuX3ByZXZDb25kaXRpb24pIHx8IHRoaXMuX3ByZXZDb25kaXRpb24pKSB7XG4gICAgICB0aGlzLl9wcmV2Q29uZGl0aW9uID0gZmFsc2U7XG4gICAgICB0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgfVxuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * The `NgStyle` directive changes styles based on a result of expression evaluation.\r\n *\r\n * An expression assigned to the `ngStyle` property must evaluate to an object and the\r\n * corresponding element styles are updated based on changes to this object. Style names to update\r\n * are taken from the object's keys, and values - from the corresponding object's values.\r\n *\r\n * ### Syntax\r\n *\r\n * - `<div [ngStyle]=\"{'font-style': style}\"></div>`\r\n * - `<div [ngStyle]=\"styleExp\"></div>` - here the `styleExp` must evaluate to an object\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/YamGS6GkUh9GqWNQhCyM?p=preview)):\r\n *\r\n * ```\r\n * import {Component} from 'angular2/core';\r\n * import {NgStyle} from 'angular2/common';\r\n *\r\n * @Component({\r\n * selector: 'ngStyle-example',\r\n * template: `\r\n * <h1 [ngStyle]=\"{'font-style': style, 'font-size': size, 'font-weight': weight}\">\r\n * Change style of this text!\r\n * </h1>\r\n *\r\n * <hr>\r\n *\r\n * <label>Italic: <input type=\"checkbox\" (change)=\"changeStyle($event)\"></label>\r\n * <label>Bold: <input type=\"checkbox\" (change)=\"changeWeight($event)\"></label>\r\n * <label>Size: <input type=\"text\" [value]=\"size\" (change)=\"size = $event.target.value\"></label>\r\n * `,\r\n * directives: [NgStyle]\r\n * })\r\n * export class NgStyleExample {\r\n * style = 'normal';\r\n * weight = 'normal';\r\n * size = '20px';\r\n *\r\n * changeStyle($event: any) {\r\n * this.style = $event.target.checked ? 'italic' : 'normal';\r\n * }\r\n *\r\n * changeWeight($event: any) {\r\n * this.weight = $event.target.checked ? 'bold' : 'normal';\r\n * }\r\n * }\r\n * ```\r\n *\r\n * In this example the `font-style`, `font-size` and `font-weight` styles will be updated\r\n * based on the `style` property's value changes.\r\n */\r\nvar NgStyle = (function () {\r\n function NgStyle(_differs, _ngEl, _renderer) {\r\n this._differs = _differs;\r\n this._ngEl = _ngEl;\r\n this._renderer = _renderer;\r\n }\r\n Object.defineProperty(NgStyle.prototype, \"rawStyle\", {\r\n set: function (v) {\r\n this._rawStyle = v;\r\n if (lang_1.isBlank(this._differ) && lang_1.isPresent(v)) {\r\n this._differ = this._differs.find(this._rawStyle).create(null);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgStyle.prototype.ngDoCheck = function () {\r\n if (lang_1.isPresent(this._differ)) {\r\n var changes = this._differ.diff(this._rawStyle);\r\n if (lang_1.isPresent(changes)) {\r\n this._applyChanges(changes);\r\n }\r\n }\r\n };\r\n NgStyle.prototype._applyChanges = function (changes) {\r\n var _this = this;\r\n changes.forEachAddedItem(function (record) { _this._setStyle(record.key, record.currentValue); });\r\n changes.forEachChangedItem(function (record) { _this._setStyle(record.key, record.currentValue); });\r\n changes.forEachRemovedItem(function (record) { _this._setStyle(record.key, null); });\r\n };\r\n NgStyle.prototype._setStyle = function (name, val) {\r\n this._renderer.setElementStyle(this._ngEl.nativeElement, name, val);\r\n };\r\n NgStyle = __decorate([\r\n core_1.Directive({ selector: '[ngStyle]', inputs: ['rawStyle: ngStyle'] }), \r\n __metadata('design:paramtypes', [core_1.KeyValueDiffers, core_1.ElementRef, core_1.Renderer])\r\n ], NgStyle);\r\n return NgStyle;\r\n})();\r\nexports.NgStyle = NgStyle;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfc3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL2RpcmVjdGl2ZXMvbmdfc3R5bGUudHMiXSwibmFtZXMiOlsiTmdTdHlsZSIsIk5nU3R5bGUuY29uc3RydWN0b3IiLCJOZ1N0eWxlLnJhd1N0eWxlIiwiTmdTdHlsZS5uZ0RvQ2hlY2siLCJOZ1N0eWxlLl9hcHBseUNoYW5nZXMiLCJOZ1N0eWxlLl9zZXRTdHlsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEscUJBT08sZUFBZSxDQUFDLENBQUE7QUFDdkIscUJBQXdDLDBCQUEwQixDQUFDLENBQUE7QUFHbkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0RHO0FBQ0g7SUFPRUEsaUJBQW9CQSxRQUF5QkEsRUFBVUEsS0FBaUJBLEVBQ3BEQSxTQUFtQkE7UUFEbkJDLGFBQVFBLEdBQVJBLFFBQVFBLENBQWlCQTtRQUFVQSxVQUFLQSxHQUFMQSxLQUFLQSxDQUFZQTtRQUNwREEsY0FBU0EsR0FBVEEsU0FBU0EsQ0FBVUE7SUFBR0EsQ0FBQ0E7SUFFM0NELHNCQUFJQSw2QkFBUUE7YUFBWkEsVUFBYUEsQ0FBMEJBO1lBQ3JDRSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxDQUFDQSxDQUFDQTtZQUNuQkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsY0FBT0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsSUFBSUEsZ0JBQVNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUMxQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsR0FBR0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFDakVBLENBQUNBO1FBQ0hBLENBQUNBOzs7T0FBQUY7SUFFREEsMkJBQVNBLEdBQVRBO1FBQ0VHLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUM1QkEsSUFBSUEsT0FBT0EsR0FBR0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0E7WUFDaERBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDdkJBLElBQUlBLENBQUNBLGFBQWFBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBO1lBQzlCQSxDQUFDQTtRQUNIQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUVPSCwrQkFBYUEsR0FBckJBLFVBQXNCQSxPQUFZQTtRQUFsQ0ksaUJBT0NBO1FBTkNBLE9BQU9BLENBQUNBLGdCQUFnQkEsQ0FDcEJBLFVBQUNBLE1BQTRCQSxJQUFPQSxLQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxNQUFNQSxDQUFDQSxHQUFHQSxFQUFFQSxNQUFNQSxDQUFDQSxZQUFZQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUM1RkEsT0FBT0EsQ0FBQ0Esa0JBQWtCQSxDQUN0QkEsVUFBQ0EsTUFBNEJBLElBQU9BLEtBQUlBLENBQUNBLFNBQVNBLENBQUNBLE1BQU1BLENBQUNBLEdBQUdBLEVBQUVBLE1BQU1BLENBQUNBLFlBQVlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQzVGQSxPQUFPQSxDQUFDQSxrQkFBa0JBLENBQ3RCQSxVQUFDQSxNQUE0QkEsSUFBT0EsS0FBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsR0FBR0EsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDL0VBLENBQUNBO0lBRU9KLDJCQUFTQSxHQUFqQkEsVUFBa0JBLElBQVlBLEVBQUVBLEdBQVdBO1FBQ3pDSyxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxlQUFlQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxhQUFhQSxFQUFFQSxJQUFJQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQTtJQUN0RUEsQ0FBQ0E7SUFyQ0hMO1FBQUNBLGdCQUFTQSxDQUFDQSxFQUFDQSxRQUFRQSxFQUFFQSxXQUFXQSxFQUFFQSxNQUFNQSxFQUFFQSxDQUFDQSxtQkFBbUJBLENBQUNBLEVBQUNBLENBQUNBOztnQkFzQ2pFQTtJQUFEQSxjQUFDQTtBQUFEQSxDQUFDQSxBQXRDRCxJQXNDQztBQXJDWSxlQUFPLFVBcUNuQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRG9DaGVjayxcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgRWxlbWVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBSZW5kZXJlclxufSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbmltcG9ydCB7aXNQcmVzZW50LCBpc0JsYW5rLCBwcmludH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7S2V5VmFsdWVDaGFuZ2VSZWNvcmR9IGZyb20gXCIuLi8uLi9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vZGlmZmVycy9kZWZhdWx0X2tleXZhbHVlX2RpZmZlclwiO1xuXG4vKipcbiAqIFRoZSBgTmdTdHlsZWAgZGlyZWN0aXZlIGNoYW5nZXMgc3R5bGVzIGJhc2VkIG9uIGEgcmVzdWx0IG9mIGV4cHJlc3Npb24gZXZhbHVhdGlvbi5cbiAqXG4gKiBBbiBleHByZXNzaW9uIGFzc2lnbmVkIHRvIHRoZSBgbmdTdHlsZWAgcHJvcGVydHkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3QgYW5kIHRoZVxuICogY29ycmVzcG9uZGluZyBlbGVtZW50IHN0eWxlcyBhcmUgdXBkYXRlZCBiYXNlZCBvbiBjaGFuZ2VzIHRvIHRoaXMgb2JqZWN0LiBTdHlsZSBuYW1lcyB0byB1cGRhdGVcbiAqIGFyZSB0YWtlbiBmcm9tIHRoZSBvYmplY3QncyBrZXlzLCBhbmQgdmFsdWVzIC0gZnJvbSB0aGUgY29ycmVzcG9uZGluZyBvYmplY3QncyB2YWx1ZXMuXG4gKlxuICogIyMjIFN5bnRheFxuICpcbiAqIC0gYDxkaXYgW25nU3R5bGVdPVwieydmb250LXN0eWxlJzogc3R5bGV9XCI+PC9kaXY+YFxuICogLSBgPGRpdiBbbmdTdHlsZV09XCJzdHlsZUV4cFwiPjwvZGl2PmAgLSBoZXJlIHRoZSBgc3R5bGVFeHBgIG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0XG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1lhbUdTNkdrVWg5R3FXTlFoQ3lNP3A9cHJldmlldykpOlxuICpcbiAqIGBgYFxuICogaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuICogaW1wb3J0IHtOZ1N0eWxlfSBmcm9tICdhbmd1bGFyMi9jb21tb24nO1xuICpcbiAqIEBDb21wb25lbnQoe1xuICogIHNlbGVjdG9yOiAnbmdTdHlsZS1leGFtcGxlJyxcbiAqICB0ZW1wbGF0ZTogYFxuICogICAgPGgxIFtuZ1N0eWxlXT1cInsnZm9udC1zdHlsZSc6IHN0eWxlLCAnZm9udC1zaXplJzogc2l6ZSwgJ2ZvbnQtd2VpZ2h0Jzogd2VpZ2h0fVwiPlxuICogICAgICBDaGFuZ2Ugc3R5bGUgb2YgdGhpcyB0ZXh0IVxuICogICAgPC9oMT5cbiAqXG4gKiAgICA8aHI+XG4gKlxuICogICAgPGxhYmVsPkl0YWxpYzogPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjaGFuZ2UpPVwiY2hhbmdlU3R5bGUoJGV2ZW50KVwiPjwvbGFiZWw+XG4gKiAgICA8bGFiZWw+Qm9sZDogPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjaGFuZ2UpPVwiY2hhbmdlV2VpZ2h0KCRldmVudClcIj48L2xhYmVsPlxuICogICAgPGxhYmVsPlNpemU6IDxpbnB1dCB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJzaXplXCIgKGNoYW5nZSk9XCJzaXplID0gJGV2ZW50LnRhcmdldC52YWx1ZVwiPjwvbGFiZWw+XG4gKiAgYCxcbiAqICBkaXJlY3RpdmVzOiBbTmdTdHlsZV1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgTmdTdHlsZUV4YW1wbGUge1xuICogICAgc3R5bGUgPSAnbm9ybWFsJztcbiAqICAgIHdlaWdodCA9ICdub3JtYWwnO1xuICogICAgc2l6ZSA9ICcyMHB4JztcbiAqXG4gKiAgICBjaGFuZ2VTdHlsZSgkZXZlbnQ6IGFueSkge1xuICogICAgICB0aGlzLnN0eWxlID0gJGV2ZW50LnRhcmdldC5jaGVja2VkID8gJ2l0YWxpYycgOiAnbm9ybWFsJztcbiAqICAgIH1cbiAqXG4gKiAgICBjaGFuZ2VXZWlnaHQoJGV2ZW50OiBhbnkpIHtcbiAqICAgICAgdGhpcy53ZWlnaHQgPSAkZXZlbnQudGFyZ2V0LmNoZWNrZWQgPyAnYm9sZCcgOiAnbm9ybWFsJztcbiAqICAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEluIHRoaXMgZXhhbXBsZSB0aGUgYGZvbnQtc3R5bGVgLCBgZm9udC1zaXplYCBhbmQgYGZvbnQtd2VpZ2h0YCBzdHlsZXMgd2lsbCBiZSB1cGRhdGVkXG4gKiBiYXNlZCBvbiB0aGUgYHN0eWxlYCBwcm9wZXJ0eSdzIHZhbHVlIGNoYW5nZXMuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW25nU3R5bGVdJywgaW5wdXRzOiBbJ3Jhd1N0eWxlOiBuZ1N0eWxlJ119KVxuZXhwb3J0IGNsYXNzIE5nU3R5bGUgaW1wbGVtZW50cyBEb0NoZWNrIHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcmF3U3R5bGU6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xuICAvKiogQGludGVybmFsICovXG4gIF9kaWZmZXI6IEtleVZhbHVlRGlmZmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RpZmZlcnM6IEtleVZhbHVlRGlmZmVycywgcHJpdmF0ZSBfbmdFbDogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyKSB7fVxuXG4gIHNldCByYXdTdHlsZSh2OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSkge1xuICAgIHRoaXMuX3Jhd1N0eWxlID0gdjtcbiAgICBpZiAoaXNCbGFuayh0aGlzLl9kaWZmZXIpICYmIGlzUHJlc2VudCh2KSkge1xuICAgICAgdGhpcy5fZGlmZmVyID0gdGhpcy5fZGlmZmVycy5maW5kKHRoaXMuX3Jhd1N0eWxlKS5jcmVhdGUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fZGlmZmVyKSkge1xuICAgICAgdmFyIGNoYW5nZXMgPSB0aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9yYXdTdHlsZSk7XG4gICAgICBpZiAoaXNQcmVzZW50KGNoYW5nZXMpKSB7XG4gICAgICAgIHRoaXMuX2FwcGx5Q2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUNoYW5nZXMoY2hhbmdlczogYW55KTogdm9pZCB7XG4gICAgY2hhbmdlcy5mb3JFYWNoQWRkZWRJdGVtKFxuICAgICAgICAocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCkgPT4geyB0aGlzLl9zZXRTdHlsZShyZWNvcmQua2V5LCByZWNvcmQuY3VycmVudFZhbHVlKTsgfSk7XG4gICAgY2hhbmdlcy5mb3JFYWNoQ2hhbmdlZEl0ZW0oXG4gICAgICAgIChyZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkKSA9PiB7IHRoaXMuX3NldFN0eWxlKHJlY29yZC5rZXksIHJlY29yZC5jdXJyZW50VmFsdWUpOyB9KTtcbiAgICBjaGFuZ2VzLmZvckVhY2hSZW1vdmVkSXRlbShcbiAgICAgICAgKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQpID0+IHsgdGhpcy5fc2V0U3R5bGUocmVjb3JkLmtleSwgbnVsbCk7IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0U3R5bGUobmFtZTogc3RyaW5nLCB2YWw6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlcmVyLnNldEVsZW1lbnRTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsIG5hbWUsIHZhbCk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';// Public API for util\r\nvar decorators_1 = require('./util/decorators');\r\nexports.Class = decorators_1.Class;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCO0FBQ3RCLDJCQUFvRCxtQkFBbUIsQ0FBQztBQUFoRSxtQ0FBZ0UiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQdWJsaWMgQVBJIGZvciB1dGlsXG5leHBvcnQge0NsYXNzLCBDbGFzc0RlZmluaXRpb24sIFR5cGVEZWNvcmF0b3J9IGZyb20gJy4vdXRpbC9kZWNvcmF0b3JzJzsiXX0=","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nexports.enableProdMode = lang_1.enableProdMode;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZF9tb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvcHJvZF9tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUE2QiwwQkFBMEIsQ0FBQztBQUFoRCwrQ0FBZ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2VuYWJsZVByb2RNb2RlfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnOyJdfQ==","/* */ \n\"format cjs\";\n'use strict';// Public API for Facade\r\nvar lang_1 = require('./lang');\r\nexports.Type = lang_1.Type;\r\nvar async_1 = require('./async');\r\nexports.EventEmitter = async_1.EventEmitter;\r\nvar exceptions_1 = require('./exceptions');\r\nexports.WrappedException = exceptions_1.WrappedException;\r\nvar exception_handler_1 = require('./exception_handler');\r\nexports.ExceptionHandler = exception_handler_1.ExceptionHandler;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjYWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2ZhY2FkZS9mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0JBQXdCO0FBQ3hCLHFCQUFpQyxRQUFRLENBQUM7QUFBcEIsMkJBQW9CO0FBQzFDLHNCQUEyQixTQUFTLENBQUM7QUFBN0IsNENBQTZCO0FBQ3JDLDJCQUErQixjQUFjLENBQUM7QUFBdEMseURBQXNDO0FBQzlDLGtDQUErQixxQkFBcUIsQ0FBQztBQUE3QyxnRUFBNkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQdWJsaWMgQVBJIGZvciBGYWNhZGVcbmV4cG9ydCB7Q29uY3JldGVUeXBlLCBUeXBlfSBmcm9tICcuL2xhbmcnO1xuZXhwb3J0IHtFdmVudEVtaXR0ZXJ9IGZyb20gJy4vYXN5bmMnO1xuZXhwb3J0IHtXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICcuL2V4Y2VwdGlvbnMnO1xuZXhwb3J0IHtFeGNlcHRpb25IYW5kbGVyfSBmcm9tICcuL2V4Y2VwdGlvbl9oYW5kbGVyJztcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar ng_zone_1 = require('angular2/src/core/zone/ng_zone');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar application_tokens_1 = require('./application_tokens');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar testability_1 = require('angular2/src/core/testability/testability');\r\nvar dynamic_component_loader_1 = require('angular2/src/core/linker/dynamic_component_loader');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar console_1 = require('angular2/src/core/console');\r\nvar profile_1 = require('./profile/profile');\r\nvar lang_2 = require('angular2/src/facade/lang');\r\n/**\r\n * Construct providers specific to an individual root component.\r\n */\r\nfunction _componentProviders(appComponentType) {\r\n return [\r\n di_1.provide(application_tokens_1.APP_COMPONENT, { useValue: appComponentType }),\r\n di_1.provide(application_tokens_1.APP_COMPONENT_REF_PROMISE, {\r\n useFactory: function (dynamicComponentLoader, appRef, injector) {\r\n // Save the ComponentRef for disposal later.\r\n var ref;\r\n // TODO(rado): investigate whether to support providers on root component.\r\n return dynamicComponentLoader.loadAsRoot(appComponentType, null, injector, function () { appRef._unloadComponent(ref); })\r\n .then(function (componentRef) {\r\n ref = componentRef;\r\n var testability = injector.getOptional(testability_1.Testability);\r\n if (lang_1.isPresent(testability)) {\r\n injector.get(testability_1.TestabilityRegistry)\r\n .registerApplication(componentRef.location.nativeElement, testability);\r\n }\r\n return componentRef;\r\n });\r\n },\r\n deps: [dynamic_component_loader_1.DynamicComponentLoader, ApplicationRef, di_1.Injector]\r\n }),\r\n di_1.provide(appComponentType, {\r\n useFactory: function (p) { return p.then(function (ref) { return ref.instance; }); },\r\n deps: [application_tokens_1.APP_COMPONENT_REF_PROMISE]\r\n }),\r\n ];\r\n}\r\n/**\r\n * Create an Angular zone.\r\n */\r\nfunction createNgZone() {\r\n return new ng_zone_1.NgZone({ enableLongStackTrace: lang_1.assertionsEnabled() });\r\n}\r\nexports.createNgZone = createNgZone;\r\nvar _platform;\r\nvar _platformProviders;\r\n/**\r\n * Initialize the Angular 'platform' on the page.\r\n *\r\n * See {@link PlatformRef} for details on the Angular platform.\r\n *\r\n * It is also possible to specify providers to be made in the new platform. These providers\r\n * will be shared between all applications on the page. For example, an abstraction for\r\n * the browser cookie jar should be bound at the platform level, because there is only one\r\n * cookie jar regardless of how many applications on the page will be accessing it.\r\n *\r\n * The platform function can be called multiple times as long as the same list of providers\r\n * is passed into each call. If the platform function is called with a different set of\r\n * provides, Angular will throw an exception.\r\n */\r\nfunction platform(providers) {\r\n lang_2.lockMode();\r\n if (lang_1.isPresent(_platform)) {\r\n if (collection_1.ListWrapper.equals(_platformProviders, providers)) {\r\n return _platform;\r\n }\r\n else {\r\n throw new exceptions_1.BaseException(\"platform cannot be initialized with different sets of providers.\");\r\n }\r\n }\r\n else {\r\n return _createPlatform(providers);\r\n }\r\n}\r\nexports.platform = platform;\r\n/**\r\n * Dispose the existing platform.\r\n */\r\nfunction disposePlatform() {\r\n if (lang_1.isPresent(_platform)) {\r\n _platform.dispose();\r\n _platform = null;\r\n }\r\n}\r\nexports.disposePlatform = disposePlatform;\r\nfunction _createPlatform(providers) {\r\n _platformProviders = providers;\r\n var injector = di_1.Injector.resolveAndCreate(providers);\r\n _platform = new PlatformRef_(injector, function () {\r\n _platform = null;\r\n _platformProviders = null;\r\n });\r\n _runPlatformInitializers(injector);\r\n return _platform;\r\n}\r\nfunction _runPlatformInitializers(injector) {\r\n var inits = injector.getOptional(application_tokens_1.PLATFORM_INITIALIZER);\r\n if (lang_1.isPresent(inits))\r\n inits.forEach(function (init) { return init(); });\r\n}\r\n/**\r\n * The Angular platform is the entry point for Angular on a web page. Each page\r\n * has exactly one platform, and services (such as reflection) which are common\r\n * to every Angular application running on the page are bound in its scope.\r\n *\r\n * A page's platform is initialized implicitly when {@link bootstrap}() is called, or\r\n * explicitly by calling {@link platform}().\r\n */\r\nvar PlatformRef = (function () {\r\n function PlatformRef() {\r\n }\r\n Object.defineProperty(PlatformRef.prototype, \"injector\", {\r\n /**\r\n * Retrieve the platform {@link Injector}, which is the parent injector for\r\n * every Angular application on the page and provides singleton providers.\r\n */\r\n get: function () { throw exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n return PlatformRef;\r\n})();\r\nexports.PlatformRef = PlatformRef;\r\nvar PlatformRef_ = (function (_super) {\r\n __extends(PlatformRef_, _super);\r\n function PlatformRef_(_injector, _dispose) {\r\n _super.call(this);\r\n this._injector = _injector;\r\n this._dispose = _dispose;\r\n /** @internal */\r\n this._applications = [];\r\n /** @internal */\r\n this._disposeListeners = [];\r\n }\r\n PlatformRef_.prototype.registerDisposeListener = function (dispose) { this._disposeListeners.push(dispose); };\r\n Object.defineProperty(PlatformRef_.prototype, \"injector\", {\r\n get: function () { return this._injector; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n PlatformRef_.prototype.application = function (providers) {\r\n var app = this._initApp(createNgZone(), providers);\r\n if (async_1.PromiseWrapper.isPromise(app)) {\r\n throw new exceptions_1.BaseException(\"Cannot use asyncronous app initializers with application. Use asyncApplication instead.\");\r\n }\r\n return app;\r\n };\r\n PlatformRef_.prototype.asyncApplication = function (bindingFn, additionalProviders) {\r\n var _this = this;\r\n var zone = createNgZone();\r\n var completer = async_1.PromiseWrapper.completer();\r\n if (bindingFn === null) {\r\n completer.resolve(this._initApp(zone, additionalProviders));\r\n }\r\n else {\r\n zone.run(function () {\r\n async_1.PromiseWrapper.then(bindingFn(zone), function (providers) {\r\n if (lang_1.isPresent(additionalProviders)) {\r\n providers = collection_1.ListWrapper.concat(providers, additionalProviders);\r\n }\r\n var promise = _this._initApp(zone, providers);\r\n completer.resolve(promise);\r\n });\r\n });\r\n }\r\n return completer.promise;\r\n };\r\n PlatformRef_.prototype._initApp = function (zone, providers) {\r\n var _this = this;\r\n var injector;\r\n var app;\r\n zone.run(function () {\r\n providers = collection_1.ListWrapper.concat(providers, [\r\n di_1.provide(ng_zone_1.NgZone, { useValue: zone }),\r\n di_1.provide(ApplicationRef, { useFactory: function () { return app; }, deps: [] })\r\n ]);\r\n var exceptionHandler;\r\n try {\r\n injector = _this.injector.resolveAndCreateChild(providers);\r\n exceptionHandler = injector.get(exceptions_1.ExceptionHandler);\r\n async_1.ObservableWrapper.subscribe(zone.onError, function (error) {\r\n exceptionHandler.call(error.error, error.stackTrace);\r\n });\r\n }\r\n catch (e) {\r\n if (lang_1.isPresent(exceptionHandler)) {\r\n exceptionHandler.call(e, e.stack);\r\n }\r\n else {\r\n lang_1.print(e.toString());\r\n }\r\n }\r\n });\r\n app = new ApplicationRef_(this, zone, injector);\r\n this._applications.push(app);\r\n var promise = _runAppInitializers(injector);\r\n if (promise !== null) {\r\n return async_1.PromiseWrapper.then(promise, function (_) { return app; });\r\n }\r\n else {\r\n return app;\r\n }\r\n };\r\n PlatformRef_.prototype.dispose = function () {\r\n collection_1.ListWrapper.clone(this._applications).forEach(function (app) { return app.dispose(); });\r\n this._disposeListeners.forEach(function (dispose) { return dispose(); });\r\n this._dispose();\r\n };\r\n /** @internal */\r\n PlatformRef_.prototype._applicationDisposed = function (app) { collection_1.ListWrapper.remove(this._applications, app); };\r\n return PlatformRef_;\r\n})(PlatformRef);\r\nexports.PlatformRef_ = PlatformRef_;\r\nfunction _runAppInitializers(injector) {\r\n var inits = injector.getOptional(application_tokens_1.APP_INITIALIZER);\r\n var promises = [];\r\n if (lang_1.isPresent(inits)) {\r\n inits.forEach(function (init) {\r\n var retVal = init();\r\n if (async_1.PromiseWrapper.isPromise(retVal)) {\r\n promises.push(retVal);\r\n }\r\n });\r\n }\r\n if (promises.length > 0) {\r\n return async_1.PromiseWrapper.all(promises);\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n/**\r\n * A reference to an Angular application running on a page.\r\n *\r\n * For more about Angular applications, see the documentation for {@link bootstrap}.\r\n */\r\nvar ApplicationRef = (function () {\r\n function ApplicationRef() {\r\n }\r\n Object.defineProperty(ApplicationRef.prototype, \"injector\", {\r\n /**\r\n * Retrieve the application {@link Injector}.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(ApplicationRef.prototype, \"zone\", {\r\n /**\r\n * Retrieve the application {@link NgZone}.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(ApplicationRef.prototype, \"componentTypes\", {\r\n /**\r\n * Get a list of component types registered to this application.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n return ApplicationRef;\r\n})();\r\nexports.ApplicationRef = ApplicationRef;\r\nvar ApplicationRef_ = (function (_super) {\r\n __extends(ApplicationRef_, _super);\r\n function ApplicationRef_(_platform, _zone, _injector) {\r\n var _this = this;\r\n _super.call(this);\r\n this._platform = _platform;\r\n this._zone = _zone;\r\n this._injector = _injector;\r\n /** @internal */\r\n this._bootstrapListeners = [];\r\n /** @internal */\r\n this._disposeListeners = [];\r\n /** @internal */\r\n this._rootComponents = [];\r\n /** @internal */\r\n this._rootComponentTypes = [];\r\n /** @internal */\r\n this._changeDetectorRefs = [];\r\n /** @internal */\r\n this._runningTick = false;\r\n /** @internal */\r\n this._enforceNoNewChanges = false;\r\n if (lang_1.isPresent(this._zone)) {\r\n async_1.ObservableWrapper.subscribe(this._zone.onMicrotaskEmpty, function (_) { _this._zone.run(function () { _this.tick(); }); });\r\n }\r\n this._enforceNoNewChanges = lang_1.assertionsEnabled();\r\n }\r\n ApplicationRef_.prototype.registerBootstrapListener = function (listener) {\r\n this._bootstrapListeners.push(listener);\r\n };\r\n ApplicationRef_.prototype.registerDisposeListener = function (dispose) { this._disposeListeners.push(dispose); };\r\n ApplicationRef_.prototype.registerChangeDetector = function (changeDetector) {\r\n this._changeDetectorRefs.push(changeDetector);\r\n };\r\n ApplicationRef_.prototype.unregisterChangeDetector = function (changeDetector) {\r\n collection_1.ListWrapper.remove(this._changeDetectorRefs, changeDetector);\r\n };\r\n ApplicationRef_.prototype.bootstrap = function (componentType, providers) {\r\n var _this = this;\r\n var completer = async_1.PromiseWrapper.completer();\r\n this._zone.run(function () {\r\n var componentProviders = _componentProviders(componentType);\r\n if (lang_1.isPresent(providers)) {\r\n componentProviders.push(providers);\r\n }\r\n var exceptionHandler = _this._injector.get(exceptions_1.ExceptionHandler);\r\n _this._rootComponentTypes.push(componentType);\r\n try {\r\n var injector = _this._injector.resolveAndCreateChild(componentProviders);\r\n var compRefToken = injector.get(application_tokens_1.APP_COMPONENT_REF_PROMISE);\r\n var tick = function (componentRef) {\r\n _this._loadComponent(componentRef);\r\n completer.resolve(componentRef);\r\n };\r\n var tickResult = async_1.PromiseWrapper.then(compRefToken, tick);\r\n async_1.PromiseWrapper.then(tickResult, null, function (err, stackTrace) {\r\n completer.reject(err, stackTrace);\r\n exceptionHandler.call(err, stackTrace);\r\n });\r\n }\r\n catch (e) {\r\n exceptionHandler.call(e, e.stack);\r\n completer.reject(e, e.stack);\r\n }\r\n });\r\n return completer.promise.then(function (ref) {\r\n var c = _this._injector.get(console_1.Console);\r\n if (lang_1.assertionsEnabled()) {\r\n c.log(\"Angular 2 is running in the development mode. Call enableProdMode() to enable the production mode.\");\r\n }\r\n return ref;\r\n });\r\n };\r\n /** @internal */\r\n ApplicationRef_.prototype._loadComponent = function (componentRef) {\r\n var appChangeDetector = componentRef.location.internalElement.parentView.changeDetector;\r\n this._changeDetectorRefs.push(appChangeDetector.ref);\r\n this.tick();\r\n this._rootComponents.push(componentRef);\r\n this._bootstrapListeners.forEach(function (listener) { return listener(componentRef); });\r\n };\r\n /** @internal */\r\n ApplicationRef_.prototype._unloadComponent = function (componentRef) {\r\n if (!collection_1.ListWrapper.contains(this._rootComponents, componentRef)) {\r\n return;\r\n }\r\n this.unregisterChangeDetector(componentRef.location.internalElement.parentView.changeDetector.ref);\r\n collection_1.ListWrapper.remove(this._rootComponents, componentRef);\r\n };\r\n Object.defineProperty(ApplicationRef_.prototype, \"injector\", {\r\n get: function () { return this._injector; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ApplicationRef_.prototype, \"zone\", {\r\n get: function () { return this._zone; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ApplicationRef_.prototype.tick = function () {\r\n if (this._runningTick) {\r\n throw new exceptions_1.BaseException(\"ApplicationRef.tick is called recursively\");\r\n }\r\n var s = ApplicationRef_._tickScope();\r\n try {\r\n this._runningTick = true;\r\n this._changeDetectorRefs.forEach(function (detector) { return detector.detectChanges(); });\r\n if (this._enforceNoNewChanges) {\r\n this._changeDetectorRefs.forEach(function (detector) { return detector.checkNoChanges(); });\r\n }\r\n }\r\n finally {\r\n this._runningTick = false;\r\n profile_1.wtfLeave(s);\r\n }\r\n };\r\n ApplicationRef_.prototype.dispose = function () {\r\n // TODO(alxhub): Dispose of the NgZone.\r\n collection_1.ListWrapper.clone(this._rootComponents).forEach(function (ref) { return ref.dispose(); });\r\n this._disposeListeners.forEach(function (dispose) { return dispose(); });\r\n this._platform._applicationDisposed(this);\r\n };\r\n Object.defineProperty(ApplicationRef_.prototype, \"componentTypes\", {\r\n get: function () { return this._rootComponentTypes; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** @internal */\r\n ApplicationRef_._tickScope = profile_1.wtfCreateScope('ApplicationRef#tick()');\r\n return ApplicationRef_;\r\n})(ApplicationRef);\r\nexports.ApplicationRef_ = ApplicationRef_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25fcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvYXBwbGljYXRpb25fcmVmLnRzIl0sIm5hbWVzIjpbIl9jb21wb25lbnRQcm92aWRlcnMiLCJjcmVhdGVOZ1pvbmUiLCJwbGF0Zm9ybSIsImRpc3Bvc2VQbGF0Zm9ybSIsIl9jcmVhdGVQbGF0Zm9ybSIsIl9ydW5QbGF0Zm9ybUluaXRpYWxpemVycyIsIlBsYXRmb3JtUmVmIiwiUGxhdGZvcm1SZWYuY29uc3RydWN0b3IiLCJQbGF0Zm9ybVJlZi5pbmplY3RvciIsIlBsYXRmb3JtUmVmXyIsIlBsYXRmb3JtUmVmXy5jb25zdHJ1Y3RvciIsIlBsYXRmb3JtUmVmXy5yZWdpc3RlckRpc3Bvc2VMaXN0ZW5lciIsIlBsYXRmb3JtUmVmXy5pbmplY3RvciIsIlBsYXRmb3JtUmVmXy5hcHBsaWNhdGlvbiIsIlBsYXRmb3JtUmVmXy5hc3luY0FwcGxpY2F0aW9uIiwiUGxhdGZvcm1SZWZfLl9pbml0QXBwIiwiUGxhdGZvcm1SZWZfLmRpc3Bvc2UiLCJQbGF0Zm9ybVJlZl8uX2FwcGxpY2F0aW9uRGlzcG9zZWQiLCJfcnVuQXBwSW5pdGlhbGl6ZXJzIiwiQXBwbGljYXRpb25SZWYiLCJBcHBsaWNhdGlvblJlZi5jb25zdHJ1Y3RvciIsIkFwcGxpY2F0aW9uUmVmLmluamVjdG9yIiwiQXBwbGljYXRpb25SZWYuem9uZSIsIkFwcGxpY2F0aW9uUmVmLmNvbXBvbmVudFR5cGVzIiwiQXBwbGljYXRpb25SZWZfIiwiQXBwbGljYXRpb25SZWZfLmNvbnN0cnVjdG9yIiwiQXBwbGljYXRpb25SZWZfLnJlZ2lzdGVyQm9vdHN0cmFwTGlzdGVuZXIiLCJBcHBsaWNhdGlvblJlZl8ucmVnaXN0ZXJEaXNwb3NlTGlzdGVuZXIiLCJBcHBsaWNhdGlvblJlZl8ucmVnaXN0ZXJDaGFuZ2VEZXRlY3RvciIsIkFwcGxpY2F0aW9uUmVmXy51bnJlZ2lzdGVyQ2hhbmdlRGV0ZWN0b3IiLCJBcHBsaWNhdGlvblJlZl8uYm9vdHN0cmFwIiwiQXBwbGljYXRpb25SZWZfLl9sb2FkQ29tcG9uZW50IiwiQXBwbGljYXRpb25SZWZfLl91bmxvYWRDb21wb25lbnQiLCJBcHBsaWNhdGlvblJlZl8uaW5qZWN0b3IiLCJBcHBsaWNhdGlvblJlZl8uem9uZSIsIkFwcGxpY2F0aW9uUmVmXy50aWNrIiwiQXBwbGljYXRpb25SZWZfLmRpc3Bvc2UiLCJBcHBsaWNhdGlvblJlZl8uY29tcG9uZW50VHlwZXMiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsd0JBQWtDLGdDQUFnQyxDQUFDLENBQUE7QUFDbkUscUJBT08sMEJBQTBCLENBQUMsQ0FBQTtBQUNsQyxtQkFBdUQsc0JBQXNCLENBQUMsQ0FBQTtBQUM5RSxtQ0FNTyxzQkFBc0IsQ0FBQyxDQUFBO0FBQzlCLHNCQUFrRSwyQkFBMkIsQ0FBQyxDQUFBO0FBQzlGLDJCQUEwQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzNELDRCQUErQywyQ0FBMkMsQ0FBQyxDQUFBO0FBQzNGLHlDQUdPLG1EQUFtRCxDQUFDLENBQUE7QUFDM0QsMkJBS08sZ0NBQWdDLENBQUMsQ0FBQTtBQUN4Qyx3QkFBc0IsMkJBQTJCLENBQUMsQ0FBQTtBQUNsRCx3QkFBbUQsbUJBQW1CLENBQUMsQ0FBQTtBQUV2RSxxQkFBdUIsMEJBQTBCLENBQUMsQ0FBQTtBQUdsRDs7R0FFRztBQUNILDZCQUE2QixnQkFBc0I7SUFDakRBLE1BQU1BLENBQUNBO1FBQ0xBLFlBQU9BLENBQUNBLGtDQUFhQSxFQUFFQSxFQUFDQSxRQUFRQSxFQUFFQSxnQkFBZ0JBLEVBQUNBLENBQUNBO1FBQ3BEQSxZQUFPQSxDQUFDQSw4Q0FBeUJBLEVBQ3pCQTtZQUNFQSxVQUFVQSxFQUFFQSxVQUFDQSxzQkFBOENBLEVBQUVBLE1BQXVCQSxFQUN2RUEsUUFBa0JBO2dCQUM3QkEsNENBQTRDQTtnQkFDNUNBLElBQUlBLEdBQWlCQSxDQUFDQTtnQkFDdEJBLDBFQUEwRUE7Z0JBQzFFQSxNQUFNQSxDQUFDQSxzQkFBc0JBLENBQUNBLFVBQVVBLENBQUNBLGdCQUFnQkEsRUFBRUEsSUFBSUEsRUFBRUEsUUFBUUEsRUFDaENBLGNBQVFBLE1BQU1BLENBQUNBLGdCQUFnQkEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7cUJBQzVFQSxJQUFJQSxDQUFDQSxVQUFDQSxZQUFZQTtvQkFDakJBLEdBQUdBLEdBQUdBLFlBQVlBLENBQUNBO29CQUNuQkEsSUFBSUEsV0FBV0EsR0FBR0EsUUFBUUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EseUJBQVdBLENBQUNBLENBQUNBO29CQUNwREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO3dCQUMzQkEsUUFBUUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsaUNBQW1CQSxDQUFDQTs2QkFDNUJBLG1CQUFtQkEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsYUFBYUEsRUFBRUEsV0FBV0EsQ0FBQ0EsQ0FBQ0E7b0JBQzdFQSxDQUFDQTtvQkFDREEsTUFBTUEsQ0FBQ0EsWUFBWUEsQ0FBQ0E7Z0JBQ3RCQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNUQSxDQUFDQTtZQUNEQSxJQUFJQSxFQUFFQSxDQUFDQSxpREFBc0JBLEVBQUVBLGNBQWNBLEVBQUVBLGFBQVFBLENBQUNBO1NBQ3pEQSxDQUFDQTtRQUNWQSxZQUFPQSxDQUFDQSxnQkFBZ0JBLEVBQ2hCQTtZQUNFQSxVQUFVQSxFQUFFQSxVQUFDQSxDQUFlQSxJQUFLQSxPQUFBQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFBQSxHQUFHQSxJQUFJQSxPQUFBQSxHQUFHQSxDQUFDQSxRQUFRQSxFQUFaQSxDQUFZQSxDQUFDQSxFQUEzQkEsQ0FBMkJBO1lBQzVEQSxJQUFJQSxFQUFFQSxDQUFDQSw4Q0FBeUJBLENBQUNBO1NBQ2xDQSxDQUFDQTtLQUNYQSxDQUFDQTtBQUNKQSxDQUFDQTtBQUVEOztHQUVHO0FBQ0g7SUFDRUMsTUFBTUEsQ0FBQ0EsSUFBSUEsZ0JBQU1BLENBQUNBLEVBQUNBLG9CQUFvQkEsRUFBRUEsd0JBQWlCQSxFQUFFQSxFQUFDQSxDQUFDQSxDQUFDQTtBQUNqRUEsQ0FBQ0E7QUFGZSxvQkFBWSxlQUUzQixDQUFBO0FBRUQsSUFBSSxTQUFzQixDQUFDO0FBQzNCLElBQUksa0JBQXlCLENBQUM7QUFFOUI7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILGtCQUF5QixTQUEwQztJQUNqRUMsZUFBUUEsRUFBRUEsQ0FBQ0E7SUFDWEEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQ3pCQSxFQUFFQSxDQUFDQSxDQUFDQSx3QkFBV0EsQ0FBQ0EsTUFBTUEsQ0FBQ0Esa0JBQWtCQSxFQUFFQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN0REEsTUFBTUEsQ0FBQ0EsU0FBU0EsQ0FBQ0E7UUFDbkJBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ05BLE1BQU1BLElBQUlBLDBCQUFhQSxDQUFDQSxrRUFBa0VBLENBQUNBLENBQUNBO1FBQzlGQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNOQSxNQUFNQSxDQUFDQSxlQUFlQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQTtJQUNwQ0EsQ0FBQ0E7QUFDSEEsQ0FBQ0E7QUFYZSxnQkFBUSxXQVd2QixDQUFBO0FBRUQ7O0dBRUc7QUFDSDtJQUNFQyxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDekJBLFNBQVNBLENBQUNBLE9BQU9BLEVBQUVBLENBQUNBO1FBQ3BCQSxTQUFTQSxHQUFHQSxJQUFJQSxDQUFDQTtJQUNuQkEsQ0FBQ0E7QUFDSEEsQ0FBQ0E7QUFMZSx1QkFBZSxrQkFLOUIsQ0FBQTtBQUVELHlCQUF5QixTQUEwQztJQUNqRUMsa0JBQWtCQSxHQUFHQSxTQUFTQSxDQUFDQTtJQUMvQkEsSUFBSUEsUUFBUUEsR0FBR0EsYUFBUUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQTtJQUNwREEsU0FBU0EsR0FBR0EsSUFBSUEsWUFBWUEsQ0FBQ0EsUUFBUUEsRUFBRUE7UUFDckNBLFNBQVNBLEdBQUdBLElBQUlBLENBQUNBO1FBQ2pCQSxrQkFBa0JBLEdBQUdBLElBQUlBLENBQUNBO0lBQzVCQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNIQSx3QkFBd0JBLENBQUNBLFFBQVFBLENBQUNBLENBQUNBO0lBQ25DQSxNQUFNQSxDQUFDQSxTQUFTQSxDQUFDQTtBQUNuQkEsQ0FBQ0E7QUFFRCxrQ0FBa0MsUUFBa0I7SUFDbERDLElBQUlBLEtBQUtBLEdBQTJCQSxRQUFRQSxDQUFDQSxXQUFXQSxDQUFDQSx5Q0FBb0JBLENBQUNBLENBQUNBO0lBQy9FQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0E7UUFBQ0EsS0FBS0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsVUFBQUEsSUFBSUEsSUFBSUEsT0FBQUEsSUFBSUEsRUFBRUEsRUFBTkEsQ0FBTUEsQ0FBQ0EsQ0FBQ0E7QUFDdERBLENBQUNBO0FBRUQ7Ozs7Ozs7R0FPRztBQUNIO0lBQUFDO0lBd0RBQyxDQUFDQTtJQTlDQ0Qsc0JBQUlBLGlDQUFRQTtRQUpaQTs7O1dBR0dBO2FBQ0hBLGNBQTJCRSxNQUFNQSwwQkFBYUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBRjs7SUE4Q3JEQSxrQkFBQ0E7QUFBREEsQ0FBQ0EsQUF4REQsSUF3REM7QUF4RHFCLG1CQUFXLGNBd0RoQyxDQUFBO0FBRUQ7SUFBa0NHLGdDQUFXQTtJQU0zQ0Esc0JBQW9CQSxTQUFtQkEsRUFBVUEsUUFBb0JBO1FBQUlDLGlCQUFPQSxDQUFDQTtRQUE3REEsY0FBU0EsR0FBVEEsU0FBU0EsQ0FBVUE7UUFBVUEsYUFBUUEsR0FBUkEsUUFBUUEsQ0FBWUE7UUFMckVBLGdCQUFnQkE7UUFDaEJBLGtCQUFhQSxHQUFxQkEsRUFBRUEsQ0FBQ0E7UUFDckNBLGdCQUFnQkE7UUFDaEJBLHNCQUFpQkEsR0FBZUEsRUFBRUEsQ0FBQ0E7SUFFK0NBLENBQUNBO0lBRW5GRCw4Q0FBdUJBLEdBQXZCQSxVQUF3QkEsT0FBbUJBLElBQVVFLElBQUlBLENBQUNBLGlCQUFpQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFNUZGLHNCQUFJQSxrQ0FBUUE7YUFBWkEsY0FBMkJHLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUg7SUFFbkRBLGtDQUFXQSxHQUFYQSxVQUFZQSxTQUF5Q0E7UUFDbkRJLElBQUlBLEdBQUdBLEdBQUdBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLFlBQVlBLEVBQUVBLEVBQUVBLFNBQVNBLENBQUNBLENBQUNBO1FBQ25EQSxFQUFFQSxDQUFDQSxDQUFDQSxzQkFBY0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDbENBLE1BQU1BLElBQUlBLDBCQUFhQSxDQUNuQkEseUZBQXlGQSxDQUFDQSxDQUFDQTtRQUNqR0EsQ0FBQ0E7UUFDREEsTUFBTUEsQ0FBaUJBLEdBQUdBLENBQUNBO0lBQzdCQSxDQUFDQTtJQUVESix1Q0FBZ0JBLEdBQWhCQSxVQUFpQkEsU0FBb0VBLEVBQ3BFQSxtQkFBb0RBO1FBRHJFSyxpQkFrQkNBO1FBaEJDQSxJQUFJQSxJQUFJQSxHQUFHQSxZQUFZQSxFQUFFQSxDQUFDQTtRQUMxQkEsSUFBSUEsU0FBU0EsR0FBR0Esc0JBQWNBLENBQUNBLFNBQVNBLEVBQWtCQSxDQUFDQTtRQUMzREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsU0FBU0EsS0FBS0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDdkJBLFNBQVNBLENBQUNBLE9BQU9BLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLElBQUlBLEVBQUVBLG1CQUFtQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDOURBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ05BLElBQUlBLENBQUNBLEdBQUdBLENBQUNBO2dCQUNQQSxzQkFBY0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsVUFBQ0EsU0FBeUNBO29CQUM3RUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLG1CQUFtQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7d0JBQ25DQSxTQUFTQSxHQUFHQSx3QkFBV0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsU0FBU0EsRUFBRUEsbUJBQW1CQSxDQUFDQSxDQUFDQTtvQkFDakVBLENBQUNBO29CQUNEQSxJQUFJQSxPQUFPQSxHQUFHQSxLQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxJQUFJQSxFQUFFQSxTQUFTQSxDQUFDQSxDQUFDQTtvQkFDN0NBLFNBQVNBLENBQUNBLE9BQU9BLENBQUNBLE9BQU9BLENBQUNBLENBQUNBO2dCQUM3QkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDTEEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDTEEsQ0FBQ0E7UUFDREEsTUFBTUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsT0FBT0EsQ0FBQ0E7SUFDM0JBLENBQUNBO0lBRU9MLCtCQUFRQSxHQUFoQkEsVUFBaUJBLElBQVlBLEVBQ1pBLFNBQXlDQTtRQUQxRE0saUJBa0NDQTtRQS9CQ0EsSUFBSUEsUUFBa0JBLENBQUNBO1FBQ3ZCQSxJQUFJQSxHQUFtQkEsQ0FBQ0E7UUFDeEJBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBO1lBQ1BBLFNBQVNBLEdBQUdBLHdCQUFXQSxDQUFDQSxNQUFNQSxDQUFDQSxTQUFTQSxFQUFFQTtnQkFDeENBLFlBQU9BLENBQUNBLGdCQUFNQSxFQUFFQSxFQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxFQUFDQSxDQUFDQTtnQkFDakNBLFlBQU9BLENBQUNBLGNBQWNBLEVBQUVBLEVBQUNBLFVBQVVBLEVBQUVBLGNBQXNCQSxPQUFBQSxHQUFHQSxFQUFIQSxDQUFHQSxFQUFFQSxJQUFJQSxFQUFFQSxFQUFFQSxFQUFDQSxDQUFDQTthQUMzRUEsQ0FBQ0EsQ0FBQ0E7WUFFSEEsSUFBSUEsZ0JBQTBCQSxDQUFDQTtZQUMvQkEsSUFBSUEsQ0FBQ0E7Z0JBQ0hBLFFBQVFBLEdBQUdBLEtBQUlBLENBQUNBLFFBQVFBLENBQUNBLHFCQUFxQkEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzFEQSxnQkFBZ0JBLEdBQUdBLFFBQVFBLENBQUNBLEdBQUdBLENBQUNBLDZCQUFnQkEsQ0FBQ0EsQ0FBQ0E7Z0JBQ2xEQSx5QkFBaUJBLENBQUNBLFNBQVNBLENBQUNBLElBQUlBLENBQUNBLE9BQU9BLEVBQUVBLFVBQUNBLEtBQWtCQTtvQkFDM0RBLGdCQUFnQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsS0FBS0EsRUFBRUEsS0FBS0EsQ0FBQ0EsVUFBVUEsQ0FBQ0EsQ0FBQ0E7Z0JBQ3ZEQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNMQSxDQUFFQTtZQUFBQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDWEEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLGdCQUFnQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7b0JBQ2hDQSxnQkFBZ0JBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO2dCQUNwQ0EsQ0FBQ0E7Z0JBQUNBLElBQUlBLENBQUNBLENBQUNBO29CQUNOQSxZQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxRQUFRQSxFQUFFQSxDQUFDQSxDQUFDQTtnQkFDdEJBLENBQUNBO1lBQ0hBLENBQUNBO1FBQ0hBLENBQUNBLENBQUNBLENBQUNBO1FBQ0hBLEdBQUdBLEdBQUdBLElBQUlBLGVBQWVBLENBQUNBLElBQUlBLEVBQUVBLElBQUlBLEVBQUVBLFFBQVFBLENBQUNBLENBQUNBO1FBQ2hEQSxJQUFJQSxDQUFDQSxhQUFhQSxDQUFDQSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQTtRQUM3QkEsSUFBSUEsT0FBT0EsR0FBR0EsbUJBQW1CQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQTtRQUM1Q0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsT0FBT0EsS0FBS0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDckJBLE1BQU1BLENBQUNBLHNCQUFjQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxFQUFFQSxVQUFDQSxDQUFDQSxJQUFLQSxPQUFBQSxHQUFHQSxFQUFIQSxDQUFHQSxDQUFDQSxDQUFDQTtRQUNsREEsQ0FBQ0E7UUFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFDTkEsTUFBTUEsQ0FBQ0EsR0FBR0EsQ0FBQ0E7UUFDYkEsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUFFRE4sOEJBQU9BLEdBQVBBO1FBQ0VPLHdCQUFXQSxDQUFDQSxLQUFLQSxDQUFDQSxJQUFJQSxDQUFDQSxhQUFhQSxDQUFDQSxDQUFDQSxPQUFPQSxDQUFDQSxVQUFDQSxHQUFHQSxJQUFLQSxPQUFBQSxHQUFHQSxDQUFDQSxPQUFPQSxFQUFFQSxFQUFiQSxDQUFhQSxDQUFDQSxDQUFDQTtRQUN0RUEsSUFBSUEsQ0FBQ0EsaUJBQWlCQSxDQUFDQSxPQUFPQSxDQUFDQSxVQUFDQSxPQUFPQSxJQUFLQSxPQUFBQSxPQUFPQSxFQUFFQSxFQUFUQSxDQUFTQSxDQUFDQSxDQUFDQTtRQUN2REEsSUFBSUEsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0E7SUFDbEJBLENBQUNBO0lBRURQLGdCQUFnQkE7SUFDaEJBLDJDQUFvQkEsR0FBcEJBLFVBQXFCQSxHQUFtQkEsSUFBVVEsd0JBQVdBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLGFBQWFBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQ2xHUixtQkFBQ0E7QUFBREEsQ0FBQ0EsQUFyRkQsRUFBa0MsV0FBVyxFQXFGNUM7QUFyRlksb0JBQVksZUFxRnhCLENBQUE7QUFFRCw2QkFBNkIsUUFBa0I7SUFDN0NTLElBQUlBLEtBQUtBLEdBQWVBLFFBQVFBLENBQUNBLFdBQVdBLENBQUNBLG9DQUFlQSxDQUFDQSxDQUFDQTtJQUM5REEsSUFBSUEsUUFBUUEsR0FBbUJBLEVBQUVBLENBQUNBO0lBQ2xDQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDckJBLEtBQUtBLENBQUNBLE9BQU9BLENBQUNBLFVBQUFBLElBQUlBO1lBQ2hCQSxJQUFJQSxNQUFNQSxHQUFHQSxJQUFJQSxFQUFFQSxDQUFDQTtZQUNwQkEsRUFBRUEsQ0FBQ0EsQ0FBQ0Esc0JBQWNBLENBQUNBLFNBQVNBLENBQUNBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUNyQ0EsUUFBUUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0E7WUFDeEJBLENBQUNBO1FBQ0hBLENBQUNBLENBQUNBLENBQUNBO0lBQ0xBLENBQUNBO0lBQ0RBLEVBQUVBLENBQUNBLENBQUNBLFFBQVFBLENBQUNBLE1BQU1BLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQ3hCQSxNQUFNQSxDQUFDQSxzQkFBY0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0E7SUFDdENBLENBQUNBO0lBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ05BLE1BQU1BLENBQUNBLElBQUlBLENBQUNBO0lBQ2RBLENBQUNBO0FBQ0hBLENBQUNBO0FBRUQ7Ozs7R0FJRztBQUNIO0lBQUFDO0lBZ0VBQyxDQUFDQTtJQTVCQ0Qsc0JBQUlBLG9DQUFRQTtRQUhaQTs7V0FFR0E7YUFDSEEsY0FBMkJFLE1BQU1BLENBQVdBLDBCQUFhQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFGOztJQUs5REEsc0JBQUlBLGdDQUFJQTtRQUhSQTs7V0FFR0E7YUFDSEEsY0FBcUJHLE1BQU1BLENBQVNBLDBCQUFhQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFIOztJQXNCdERBLHNCQUFJQSwwQ0FBY0E7UUFIbEJBOztXQUVHQTthQUNIQSxjQUErQkksTUFBTUEsQ0FBU0EsMEJBQWFBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUo7O0lBQ2xFQSxxQkFBQ0E7QUFBREEsQ0FBQ0EsQUFoRUQsSUFnRUM7QUFoRXFCLHNCQUFjLGlCQWdFbkMsQ0FBQTtBQUVEO0lBQXFDSyxtQ0FBY0E7SUFtQmpEQSx5QkFBb0JBLFNBQXVCQSxFQUFVQSxLQUFhQSxFQUFVQSxTQUFtQkE7UUFuQmpHQyxpQkFtSUNBO1FBL0dHQSxpQkFBT0EsQ0FBQ0E7UUFEVUEsY0FBU0EsR0FBVEEsU0FBU0EsQ0FBY0E7UUFBVUEsVUFBS0EsR0FBTEEsS0FBS0EsQ0FBUUE7UUFBVUEsY0FBU0EsR0FBVEEsU0FBU0EsQ0FBVUE7UUFmL0ZBLGdCQUFnQkE7UUFDUkEsd0JBQW1CQSxHQUFlQSxFQUFFQSxDQUFDQTtRQUM3Q0EsZ0JBQWdCQTtRQUNSQSxzQkFBaUJBLEdBQWVBLEVBQUVBLENBQUNBO1FBQzNDQSxnQkFBZ0JBO1FBQ1JBLG9CQUFlQSxHQUFtQkEsRUFBRUEsQ0FBQ0E7UUFDN0NBLGdCQUFnQkE7UUFDUkEsd0JBQW1CQSxHQUFXQSxFQUFFQSxDQUFDQTtRQUN6Q0EsZ0JBQWdCQTtRQUNSQSx3QkFBbUJBLEdBQXdCQSxFQUFFQSxDQUFDQTtRQUN0REEsZ0JBQWdCQTtRQUNSQSxpQkFBWUEsR0FBWUEsS0FBS0EsQ0FBQ0E7UUFDdENBLGdCQUFnQkE7UUFDUkEseUJBQW9CQSxHQUFZQSxLQUFLQSxDQUFDQTtRQUk1Q0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzFCQSx5QkFBaUJBLENBQUNBLFNBQVNBLENBQUNBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBLGdCQUFnQkEsRUFDM0JBLFVBQUNBLENBQUNBLElBQU9BLEtBQUlBLENBQUNBLEtBQUtBLENBQUNBLEdBQUdBLENBQUNBLGNBQVFBLEtBQUlBLENBQUNBLElBQUlBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQ2xGQSxDQUFDQTtRQUNEQSxJQUFJQSxDQUFDQSxvQkFBb0JBLEdBQUdBLHdCQUFpQkEsRUFBRUEsQ0FBQ0E7SUFDbERBLENBQUNBO0lBRURELG1EQUF5QkEsR0FBekJBLFVBQTBCQSxRQUFxQ0E7UUFDN0RFLElBQUlBLENBQUNBLG1CQUFtQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0E7SUFDMUNBLENBQUNBO0lBRURGLGlEQUF1QkEsR0FBdkJBLFVBQXdCQSxPQUFtQkEsSUFBVUcsSUFBSUEsQ0FBQ0EsaUJBQWlCQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUU1RkgsZ0RBQXNCQSxHQUF0QkEsVUFBdUJBLGNBQWlDQTtRQUN0REksSUFBSUEsQ0FBQ0EsbUJBQW1CQSxDQUFDQSxJQUFJQSxDQUFDQSxjQUFjQSxDQUFDQSxDQUFDQTtJQUNoREEsQ0FBQ0E7SUFFREosa0RBQXdCQSxHQUF4QkEsVUFBeUJBLGNBQWlDQTtRQUN4REssd0JBQVdBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLG1CQUFtQkEsRUFBRUEsY0FBY0EsQ0FBQ0EsQ0FBQ0E7SUFDL0RBLENBQUNBO0lBRURMLG1DQUFTQSxHQUFUQSxVQUFVQSxhQUFtQkEsRUFDbkJBLFNBQTBDQTtRQURwRE0saUJBcUNDQTtRQW5DQ0EsSUFBSUEsU0FBU0EsR0FBR0Esc0JBQWNBLENBQUNBLFNBQVNBLEVBQUVBLENBQUNBO1FBQzNDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxHQUFHQSxDQUFDQTtZQUNiQSxJQUFJQSxrQkFBa0JBLEdBQUdBLG1CQUFtQkEsQ0FBQ0EsYUFBYUEsQ0FBQ0EsQ0FBQ0E7WUFDNURBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDekJBLGtCQUFrQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0E7WUFDckNBLENBQUNBO1lBQ0RBLElBQUlBLGdCQUFnQkEsR0FBR0EsS0FBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsNkJBQWdCQSxDQUFDQSxDQUFDQTtZQUM1REEsS0FBSUEsQ0FBQ0EsbUJBQW1CQSxDQUFDQSxJQUFJQSxDQUFDQSxhQUFhQSxDQUFDQSxDQUFDQTtZQUM3Q0EsSUFBSUEsQ0FBQ0E7Z0JBQ0hBLElBQUlBLFFBQVFBLEdBQWFBLEtBQUlBLENBQUNBLFNBQVNBLENBQUNBLHFCQUFxQkEsQ0FBQ0Esa0JBQWtCQSxDQUFDQSxDQUFDQTtnQkFDbEZBLElBQUlBLFlBQVlBLEdBQTBCQSxRQUFRQSxDQUFDQSxHQUFHQSxDQUFDQSw4Q0FBeUJBLENBQUNBLENBQUNBO2dCQUNsRkEsSUFBSUEsSUFBSUEsR0FBR0EsVUFBQ0EsWUFBMEJBO29CQUNwQ0EsS0FBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsWUFBWUEsQ0FBQ0EsQ0FBQ0E7b0JBQ2xDQSxTQUFTQSxDQUFDQSxPQUFPQSxDQUFDQSxZQUFZQSxDQUFDQSxDQUFDQTtnQkFDbENBLENBQUNBLENBQUNBO2dCQUVGQSxJQUFJQSxVQUFVQSxHQUFHQSxzQkFBY0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsWUFBWUEsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0E7Z0JBRXpEQSxzQkFBY0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsVUFBVUEsRUFBRUEsSUFBSUEsRUFBRUEsVUFBQ0EsR0FBR0EsRUFBRUEsVUFBVUE7b0JBQ3BEQSxTQUFTQSxDQUFDQSxNQUFNQSxDQUFDQSxHQUFHQSxFQUFFQSxVQUFVQSxDQUFDQSxDQUFDQTtvQkFDbENBLGdCQUFnQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsRUFBRUEsVUFBVUEsQ0FBQ0EsQ0FBQ0E7Z0JBQ3pDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNMQSxDQUFFQTtZQUFBQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDWEEsZ0JBQWdCQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQTtnQkFDbENBLFNBQVNBLENBQUNBLE1BQU1BLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO1lBQy9CQSxDQUFDQTtRQUNIQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNIQSxNQUFNQSxDQUFDQSxTQUFTQSxDQUFDQSxPQUFPQSxDQUFDQSxJQUFJQSxDQUFlQSxVQUFDQSxHQUFpQkE7WUFDNURBLElBQUlBLENBQUNBLEdBQUdBLEtBQUlBLENBQUNBLFNBQVNBLENBQUNBLEdBQUdBLENBQUNBLGlCQUFPQSxDQUFDQSxDQUFDQTtZQUNwQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0Esd0JBQWlCQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDeEJBLENBQUNBLENBQUNBLEdBQUdBLENBQ0RBLG9HQUFvR0EsQ0FBQ0EsQ0FBQ0E7WUFDNUdBLENBQUNBO1lBQ0RBLE1BQU1BLENBQUNBLEdBQUdBLENBQUNBO1FBQ2JBLENBQUNBLENBQUNBLENBQUNBO0lBQ0xBLENBQUNBO0lBRUROLGdCQUFnQkE7SUFDaEJBLHdDQUFjQSxHQUFkQSxVQUFlQSxZQUEwQkE7UUFDdkNPLElBQUlBLGlCQUFpQkEsR0FDSEEsWUFBWUEsQ0FBQ0EsUUFBU0EsQ0FBQ0EsZUFBZUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsY0FBY0EsQ0FBQ0E7UUFDbkZBLElBQUlBLENBQUNBLG1CQUFtQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsaUJBQWlCQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQTtRQUNyREEsSUFBSUEsQ0FBQ0EsSUFBSUEsRUFBRUEsQ0FBQ0E7UUFDWkEsSUFBSUEsQ0FBQ0EsZUFBZUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsQ0FBQ0E7UUFDeENBLElBQUlBLENBQUNBLG1CQUFtQkEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsVUFBQ0EsUUFBUUEsSUFBS0EsT0FBQUEsUUFBUUEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsRUFBdEJBLENBQXNCQSxDQUFDQSxDQUFDQTtJQUN6RUEsQ0FBQ0E7SUFFRFAsZ0JBQWdCQTtJQUNoQkEsMENBQWdCQSxHQUFoQkEsVUFBaUJBLFlBQTBCQTtRQUN6Q1EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0Esd0JBQVdBLENBQUNBLFFBQVFBLENBQUNBLElBQUlBLENBQUNBLGVBQWVBLEVBQUVBLFlBQVlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzlEQSxNQUFNQSxDQUFDQTtRQUNUQSxDQUFDQTtRQUNEQSxJQUFJQSxDQUFDQSx3QkFBd0JBLENBQ1hBLFlBQVlBLENBQUNBLFFBQVNBLENBQUNBLGVBQWVBLENBQUNBLFVBQVVBLENBQUNBLGNBQWNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBO1FBQ3hGQSx3QkFBV0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsZUFBZUEsRUFBRUEsWUFBWUEsQ0FBQ0EsQ0FBQ0E7SUFDekRBLENBQUNBO0lBRURSLHNCQUFJQSxxQ0FBUUE7YUFBWkEsY0FBMkJTLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQVQ7SUFFbkRBLHNCQUFJQSxpQ0FBSUE7YUFBUkEsY0FBcUJVLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQVY7SUFFekNBLDhCQUFJQSxHQUFKQTtRQUNFVyxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxZQUFZQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN0QkEsTUFBTUEsSUFBSUEsMEJBQWFBLENBQUNBLDJDQUEyQ0EsQ0FBQ0EsQ0FBQ0E7UUFDdkVBLENBQUNBO1FBRURBLElBQUlBLENBQUNBLEdBQUdBLGVBQWVBLENBQUNBLFVBQVVBLEVBQUVBLENBQUNBO1FBQ3JDQSxJQUFJQSxDQUFDQTtZQUNIQSxJQUFJQSxDQUFDQSxZQUFZQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUN6QkEsSUFBSUEsQ0FBQ0EsbUJBQW1CQSxDQUFDQSxPQUFPQSxDQUFDQSxVQUFDQSxRQUFRQSxJQUFLQSxPQUFBQSxRQUFRQSxDQUFDQSxhQUFhQSxFQUFFQSxFQUF4QkEsQ0FBd0JBLENBQUNBLENBQUNBO1lBQ3pFQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxvQkFBb0JBLENBQUNBLENBQUNBLENBQUNBO2dCQUM5QkEsSUFBSUEsQ0FBQ0EsbUJBQW1CQSxDQUFDQSxPQUFPQSxDQUFDQSxVQUFDQSxRQUFRQSxJQUFLQSxPQUFBQSxRQUFRQSxDQUFDQSxjQUFjQSxFQUFFQSxFQUF6QkEsQ0FBeUJBLENBQUNBLENBQUNBO1lBQzVFQSxDQUFDQTtRQUNIQSxDQUFDQTtnQkFBU0EsQ0FBQ0E7WUFDVEEsSUFBSUEsQ0FBQ0EsWUFBWUEsR0FBR0EsS0FBS0EsQ0FBQ0E7WUFDMUJBLGtCQUFRQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNkQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUVEWCxpQ0FBT0EsR0FBUEE7UUFDRVksdUNBQXVDQTtRQUN2Q0Esd0JBQVdBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLGVBQWVBLENBQUNBLENBQUNBLE9BQU9BLENBQUNBLFVBQUNBLEdBQUdBLElBQUtBLE9BQUFBLEdBQUdBLENBQUNBLE9BQU9BLEVBQUVBLEVBQWJBLENBQWFBLENBQUNBLENBQUNBO1FBQ3hFQSxJQUFJQSxDQUFDQSxpQkFBaUJBLENBQUNBLE9BQU9BLENBQUNBLFVBQUNBLE9BQU9BLElBQUtBLE9BQUFBLE9BQU9BLEVBQUVBLEVBQVRBLENBQVNBLENBQUNBLENBQUNBO1FBQ3ZEQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxvQkFBb0JBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO0lBQzVDQSxDQUFDQTtJQUVEWixzQkFBSUEsMkNBQWNBO2FBQWxCQSxjQUErQmEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsbUJBQW1CQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFiO0lBaklqRUEsZ0JBQWdCQTtJQUNUQSwwQkFBVUEsR0FBZUEsd0JBQWNBLENBQUNBLHVCQUF1QkEsQ0FBQ0EsQ0FBQ0E7SUFpSTFFQSxzQkFBQ0E7QUFBREEsQ0FBQ0EsQUFuSUQsRUFBcUMsY0FBYyxFQW1JbEQ7QUFuSVksdUJBQWUsa0JBbUkzQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ1pvbmUsIE5nWm9uZUVycm9yfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS96b25lL25nX3pvbmUnO1xuaW1wb3J0IHtcbiAgVHlwZSxcbiAgaXNCbGFuayxcbiAgaXNQcmVzZW50LFxuICBhc3NlcnRpb25zRW5hYmxlZCxcbiAgcHJpbnQsXG4gIElTX0RBUlRcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7cHJvdmlkZSwgUHJvdmlkZXIsIEluamVjdG9yLCBPcGFxdWVUb2tlbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtcbiAgQVBQX0NPTVBPTkVOVF9SRUZfUFJPTUlTRSxcbiAgQVBQX0NPTVBPTkVOVCxcbiAgQVBQX0lEX1JBTkRPTV9QUk9WSURFUixcbiAgUExBVEZPUk1fSU5JVElBTElaRVIsXG4gIEFQUF9JTklUSUFMSVpFUlxufSBmcm9tICcuL2FwcGxpY2F0aW9uX3Rva2Vucyc7XG5pbXBvcnQge1Byb21pc2VXcmFwcGVyLCBQcm9taXNlQ29tcGxldGVyLCBPYnNlcnZhYmxlV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtUZXN0YWJpbGl0eVJlZ2lzdHJ5LCBUZXN0YWJpbGl0eX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvdGVzdGFiaWxpdHkvdGVzdGFiaWxpdHknO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50UmVmLFxuICBEeW5hbWljQ29tcG9uZW50TG9hZGVyXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9keW5hbWljX2NvbXBvbmVudF9sb2FkZXInO1xuaW1wb3J0IHtcbiAgQmFzZUV4Y2VwdGlvbixcbiAgV3JhcHBlZEV4Y2VwdGlvbixcbiAgRXhjZXB0aW9uSGFuZGxlcixcbiAgdW5pbXBsZW1lbnRlZFxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtDb25zb2xlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jb25zb2xlJztcbmltcG9ydCB7d3RmTGVhdmUsIHd0ZkNyZWF0ZVNjb3BlLCBXdGZTY29wZUZufSBmcm9tICcuL3Byb2ZpbGUvcHJvZmlsZSc7XG5pbXBvcnQge0NoYW5nZURldGVjdG9yUmVmfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rvcl9yZWYnO1xuaW1wb3J0IHtsb2NrTW9kZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7RWxlbWVudFJlZl99IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9lbGVtZW50X3JlZic7XG5cbi8qKlxuICogQ29uc3RydWN0IHByb3ZpZGVycyBzcGVjaWZpYyB0byBhbiBpbmRpdmlkdWFsIHJvb3QgY29tcG9uZW50LlxuICovXG5mdW5jdGlvbiBfY29tcG9uZW50UHJvdmlkZXJzKGFwcENvbXBvbmVudFR5cGU6IFR5cGUpOiBBcnJheTxUeXBlIHwgUHJvdmlkZXIgfCBhbnlbXT4ge1xuICByZXR1cm4gW1xuICAgIHByb3ZpZGUoQVBQX0NPTVBPTkVOVCwge3VzZVZhbHVlOiBhcHBDb21wb25lbnRUeXBlfSksXG4gICAgcHJvdmlkZShBUFBfQ09NUE9ORU5UX1JFRl9QUk9NSVNFLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB1c2VGYWN0b3J5OiAoZHluYW1pY0NvbXBvbmVudExvYWRlcjogRHluYW1pY0NvbXBvbmVudExvYWRlciwgYXBwUmVmOiBBcHBsaWNhdGlvblJlZl8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBTYXZlIHRoZSBDb21wb25lbnRSZWYgZm9yIGRpc3Bvc2FsIGxhdGVyLlxuICAgICAgICAgICAgICAgIHZhciByZWY6IENvbXBvbmVudFJlZjtcbiAgICAgICAgICAgICAgICAvLyBUT0RPKHJhZG8pOiBpbnZlc3RpZ2F0ZSB3aGV0aGVyIHRvIHN1cHBvcnQgcHJvdmlkZXJzIG9uIHJvb3QgY29tcG9uZW50LlxuICAgICAgICAgICAgICAgIHJldHVybiBkeW5hbWljQ29tcG9uZW50TG9hZGVyLmxvYWRBc1Jvb3QoYXBwQ29tcG9uZW50VHlwZSwgbnVsbCwgaW5qZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7IGFwcFJlZi5fdW5sb2FkQ29tcG9uZW50KHJlZik7IH0pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChjb21wb25lbnRSZWYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICByZWYgPSBjb21wb25lbnRSZWY7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHRlc3RhYmlsaXR5ID0gaW5qZWN0b3IuZ2V0T3B0aW9uYWwoVGVzdGFiaWxpdHkpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1ByZXNlbnQodGVzdGFiaWxpdHkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmplY3Rvci5nZXQoVGVzdGFiaWxpdHlSZWdpc3RyeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVnaXN0ZXJBcHBsaWNhdGlvbihjb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCwgdGVzdGFiaWxpdHkpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZGVwczogW0R5bmFtaWNDb21wb25lbnRMb2FkZXIsIEFwcGxpY2F0aW9uUmVmLCBJbmplY3Rvcl1cbiAgICAgICAgICAgIH0pLFxuICAgIHByb3ZpZGUoYXBwQ29tcG9uZW50VHlwZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdXNlRmFjdG9yeTogKHA6IFByb21pc2U8YW55PikgPT4gcC50aGVuKHJlZiA9PiByZWYuaW5zdGFuY2UpLFxuICAgICAgICAgICAgICBkZXBzOiBbQVBQX0NPTVBPTkVOVF9SRUZfUFJPTUlTRV1cbiAgICAgICAgICAgIH0pLFxuICBdO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBBbmd1bGFyIHpvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZ1pvbmUoKTogTmdab25lIHtcbiAgcmV0dXJuIG5ldyBOZ1pvbmUoe2VuYWJsZUxvbmdTdGFja1RyYWNlOiBhc3NlcnRpb25zRW5hYmxlZCgpfSk7XG59XG5cbnZhciBfcGxhdGZvcm06IFBsYXRmb3JtUmVmO1xudmFyIF9wbGF0Zm9ybVByb3ZpZGVyczogYW55W107XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgQW5ndWxhciAncGxhdGZvcm0nIG9uIHRoZSBwYWdlLlxuICpcbiAqIFNlZSB7QGxpbmsgUGxhdGZvcm1SZWZ9IGZvciBkZXRhaWxzIG9uIHRoZSBBbmd1bGFyIHBsYXRmb3JtLlxuICpcbiAqIEl0IGlzIGFsc28gcG9zc2libGUgdG8gc3BlY2lmeSBwcm92aWRlcnMgdG8gYmUgbWFkZSBpbiB0aGUgbmV3IHBsYXRmb3JtLiBUaGVzZSBwcm92aWRlcnNcbiAqIHdpbGwgYmUgc2hhcmVkIGJldHdlZW4gYWxsIGFwcGxpY2F0aW9ucyBvbiB0aGUgcGFnZS4gRm9yIGV4YW1wbGUsIGFuIGFic3RyYWN0aW9uIGZvclxuICogdGhlIGJyb3dzZXIgY29va2llIGphciBzaG91bGQgYmUgYm91bmQgYXQgdGhlIHBsYXRmb3JtIGxldmVsLCBiZWNhdXNlIHRoZXJlIGlzIG9ubHkgb25lXG4gKiBjb29raWUgamFyIHJlZ2FyZGxlc3Mgb2YgaG93IG1hbnkgYXBwbGljYXRpb25zIG9uIHRoZSBwYWdlIHdpbGwgYmUgYWNjZXNzaW5nIGl0LlxuICpcbiAqIFRoZSBwbGF0Zm9ybSBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFzIGxvbmcgYXMgdGhlIHNhbWUgbGlzdCBvZiBwcm92aWRlcnNcbiAqIGlzIHBhc3NlZCBpbnRvIGVhY2ggY2FsbC4gSWYgdGhlIHBsYXRmb3JtIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEgZGlmZmVyZW50IHNldCBvZlxuICogcHJvdmlkZXMsIEFuZ3VsYXIgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbGF0Zm9ybShwcm92aWRlcnM/OiBBcnJheTxUeXBlIHwgUHJvdmlkZXIgfCBhbnlbXT4pOiBQbGF0Zm9ybVJlZiB7XG4gIGxvY2tNb2RlKCk7XG4gIGlmIChpc1ByZXNlbnQoX3BsYXRmb3JtKSkge1xuICAgIGlmIChMaXN0V3JhcHBlci5lcXVhbHMoX3BsYXRmb3JtUHJvdmlkZXJzLCBwcm92aWRlcnMpKSB7XG4gICAgICByZXR1cm4gX3BsYXRmb3JtO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihcInBsYXRmb3JtIGNhbm5vdCBiZSBpbml0aWFsaXplZCB3aXRoIGRpZmZlcmVudCBzZXRzIG9mIHByb3ZpZGVycy5cIik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBfY3JlYXRlUGxhdGZvcm0ocHJvdmlkZXJzKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3Bvc2UgdGhlIGV4aXN0aW5nIHBsYXRmb3JtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlzcG9zZVBsYXRmb3JtKCk6IHZvaWQge1xuICBpZiAoaXNQcmVzZW50KF9wbGF0Zm9ybSkpIHtcbiAgICBfcGxhdGZvcm0uZGlzcG9zZSgpO1xuICAgIF9wbGF0Zm9ybSA9IG51bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2NyZWF0ZVBsYXRmb3JtKHByb3ZpZGVycz86IEFycmF5PFR5cGUgfCBQcm92aWRlciB8IGFueVtdPik6IFBsYXRmb3JtUmVmIHtcbiAgX3BsYXRmb3JtUHJvdmlkZXJzID0gcHJvdmlkZXJzO1xuICBsZXQgaW5qZWN0b3IgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKHByb3ZpZGVycyk7XG4gIF9wbGF0Zm9ybSA9IG5ldyBQbGF0Zm9ybVJlZl8oaW5qZWN0b3IsICgpID0+IHtcbiAgICBfcGxhdGZvcm0gPSBudWxsO1xuICAgIF9wbGF0Zm9ybVByb3ZpZGVycyA9IG51bGw7XG4gIH0pO1xuICBfcnVuUGxhdGZvcm1Jbml0aWFsaXplcnMoaW5qZWN0b3IpO1xuICByZXR1cm4gX3BsYXRmb3JtO1xufVxuXG5mdW5jdGlvbiBfcnVuUGxhdGZvcm1Jbml0aWFsaXplcnMoaW5qZWN0b3I6IEluamVjdG9yKTogdm9pZCB7XG4gIGxldCBpbml0czogRnVuY3Rpb25bXSA9IDxGdW5jdGlvbltdPmluamVjdG9yLmdldE9wdGlvbmFsKFBMQVRGT1JNX0lOSVRJQUxJWkVSKTtcbiAgaWYgKGlzUHJlc2VudChpbml0cykpIGluaXRzLmZvckVhY2goaW5pdCA9PiBpbml0KCkpO1xufVxuXG4vKipcbiAqIFRoZSBBbmd1bGFyIHBsYXRmb3JtIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgQW5ndWxhciBvbiBhIHdlYiBwYWdlLiBFYWNoIHBhZ2VcbiAqIGhhcyBleGFjdGx5IG9uZSBwbGF0Zm9ybSwgYW5kIHNlcnZpY2VzIChzdWNoIGFzIHJlZmxlY3Rpb24pIHdoaWNoIGFyZSBjb21tb25cbiAqIHRvIGV2ZXJ5IEFuZ3VsYXIgYXBwbGljYXRpb24gcnVubmluZyBvbiB0aGUgcGFnZSBhcmUgYm91bmQgaW4gaXRzIHNjb3BlLlxuICpcbiAqIEEgcGFnZSdzIHBsYXRmb3JtIGlzIGluaXRpYWxpemVkIGltcGxpY2l0bHkgd2hlbiB7QGxpbmsgYm9vdHN0cmFwfSgpIGlzIGNhbGxlZCwgb3JcbiAqIGV4cGxpY2l0bHkgYnkgY2FsbGluZyB7QGxpbmsgcGxhdGZvcm19KCkuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbGF0Zm9ybVJlZiB7XG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGxpc3RlbmVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBwbGF0Zm9ybSBpcyBkaXNwb3NlZC5cbiAgICovXG4gIGFic3RyYWN0IHJlZ2lzdGVyRGlzcG9zZUxpc3RlbmVyKGRpc3Bvc2U6ICgpID0+IHZvaWQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgcGxhdGZvcm0ge0BsaW5rIEluamVjdG9yfSwgd2hpY2ggaXMgdGhlIHBhcmVudCBpbmplY3RvciBmb3JcbiAgICogZXZlcnkgQW5ndWxhciBhcHBsaWNhdGlvbiBvbiB0aGUgcGFnZSBhbmQgcHJvdmlkZXMgc2luZ2xldG9uIHByb3ZpZGVycy5cbiAgICovXG4gIGdldCBpbmplY3RvcigpOiBJbmplY3RvciB7IHRocm93IHVuaW1wbGVtZW50ZWQoKTsgfTtcblxuICAvKipcbiAgICogSW5zdGFudGlhdGUgYSBuZXcgQW5ndWxhciBhcHBsaWNhdGlvbiBvbiB0aGUgcGFnZS5cbiAgICpcbiAgICogIyMjIFdoYXQgaXMgYW4gYXBwbGljYXRpb24/XG4gICAqXG4gICAqIEVhY2ggQW5ndWxhciBhcHBsaWNhdGlvbiBoYXMgaXRzIG93biB6b25lLCBjaGFuZ2UgZGV0ZWN0aW9uLCBjb21waWxlcixcbiAgICogcmVuZGVyZXIsIGFuZCBvdGhlciBmcmFtZXdvcmsgY29tcG9uZW50cy4gQW4gYXBwbGljYXRpb24gaG9zdHMgb25lIG9yIG1vcmVcbiAgICogcm9vdCBjb21wb25lbnRzLCB3aGljaCBjYW4gYmUgaW5pdGlhbGl6ZWQgdmlhIGBBcHBsaWNhdGlvblJlZi5ib290c3RyYXAoKWAuXG4gICAqXG4gICAqICMjIyBBcHBsaWNhdGlvbiBQcm92aWRlcnNcbiAgICpcbiAgICogQW5ndWxhciBhcHBsaWNhdGlvbnMgcmVxdWlyZSBudW1lcm91cyBwcm92aWRlcnMgdG8gYmUgcHJvcGVybHkgaW5zdGFudGlhdGVkLlxuICAgKiBXaGVuIHVzaW5nIGBhcHBsaWNhdGlvbigpYCB0byBjcmVhdGUgYSBuZXcgYXBwIG9uIHRoZSBwYWdlLCB0aGVzZSBwcm92aWRlcnNcbiAgICogbXVzdCBiZSBwcm92aWRlZC4gRm9ydHVuYXRlbHksIHRoZXJlIGFyZSBoZWxwZXIgZnVuY3Rpb25zIHRvIGNvbmZpZ3VyZVxuICAgKiB0eXBpY2FsIHByb3ZpZGVycywgYXMgc2hvd24gaW4gdGhlIGV4YW1wbGUgYmVsb3cuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlXG4gICAqXG4gICAqIHtAZXhhbXBsZSBjb3JlL3RzL3BsYXRmb3JtL3BsYXRmb3JtLnRzIHJlZ2lvbj0nbG9uZ2Zvcm0nfVxuICAgKiAjIyMgU2VlIEFsc29cbiAgICpcbiAgICogU2VlIHRoZSB7QGxpbmsgYm9vdHN0cmFwfSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuXG4gICAqL1xuICBhYnN0cmFjdCBhcHBsaWNhdGlvbihwcm92aWRlcnM6IEFycmF5PFR5cGUgfCBQcm92aWRlciB8IGFueVtdPik6IEFwcGxpY2F0aW9uUmVmO1xuXG4gIC8qKlxuICAgKiBJbnN0YW50aWF0ZSBhIG5ldyBBbmd1bGFyIGFwcGxpY2F0aW9uIG9uIHRoZSBwYWdlLCB1c2luZyBwcm92aWRlcnMgd2hpY2hcbiAgICogYXJlIG9ubHkgYXZhaWxhYmxlIGFzeW5jaHJvbm91c2x5LiBPbmUgc3VjaCB1c2UgY2FzZSBpcyB0byBpbml0aWFsaXplIGFuXG4gICAqIGFwcGxpY2F0aW9uIHJ1bm5pbmcgaW4gYSB3ZWIgd29ya2VyLlxuICAgKlxuICAgKiAjIyMgVXNhZ2VcbiAgICpcbiAgICogYGJpbmRpbmdGbmAgaXMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGluIHRoZSBuZXcgYXBwbGljYXRpb24ncyB6b25lLlxuICAgKiBJdCBzaG91bGQgcmV0dXJuIGEgYFByb21pc2VgIHRvIGEgbGlzdCBvZiBwcm92aWRlcnMgdG8gYmUgdXNlZCBmb3IgdGhlXG4gICAqIG5ldyBhcHBsaWNhdGlvbi4gT25jZSB0aGlzIHByb21pc2UgcmVzb2x2ZXMsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGJlXG4gICAqIGNvbnN0cnVjdGVkIGluIHRoZSBzYW1lIG1hbm5lciBhcyBhIG5vcm1hbCBgYXBwbGljYXRpb24oKWAuXG4gICAqL1xuICBhYnN0cmFjdCBhc3luY0FwcGxpY2F0aW9uKGJpbmRpbmdGbjogKHpvbmU6IE5nWm9uZSkgPT4gUHJvbWlzZTxBcnJheTxUeXBlIHwgUHJvdmlkZXIgfCBhbnlbXT4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVycz86IEFycmF5PFR5cGUgfCBQcm92aWRlciB8IGFueVtdPik6IFByb21pc2U8QXBwbGljYXRpb25SZWY+O1xuXG4gIC8qKlxuICAgKiBEZXN0cm95IHRoZSBBbmd1bGFyIHBsYXRmb3JtIGFuZCBhbGwgQW5ndWxhciBhcHBsaWNhdGlvbnMgb24gdGhlIHBhZ2UuXG4gICAqL1xuICBhYnN0cmFjdCBkaXNwb3NlKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybVJlZl8gZXh0ZW5kcyBQbGF0Zm9ybVJlZiB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FwcGxpY2F0aW9uczogQXBwbGljYXRpb25SZWZbXSA9IFtdO1xuICAvKiogQGludGVybmFsICovXG4gIF9kaXNwb3NlTGlzdGVuZXJzOiBGdW5jdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIF9kaXNwb3NlOiAoKSA9PiB2b2lkKSB7IHN1cGVyKCk7IH1cblxuICByZWdpc3RlckRpc3Bvc2VMaXN0ZW5lcihkaXNwb3NlOiAoKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMuX2Rpc3Bvc2VMaXN0ZW5lcnMucHVzaChkaXNwb3NlKTsgfVxuXG4gIGdldCBpbmplY3RvcigpOiBJbmplY3RvciB7IHJldHVybiB0aGlzLl9pbmplY3RvcjsgfVxuXG4gIGFwcGxpY2F0aW9uKHByb3ZpZGVyczogQXJyYXk8VHlwZSB8IFByb3ZpZGVyIHwgYW55W10+KTogQXBwbGljYXRpb25SZWYge1xuICAgIHZhciBhcHAgPSB0aGlzLl9pbml0QXBwKGNyZWF0ZU5nWm9uZSgpLCBwcm92aWRlcnMpO1xuICAgIGlmIChQcm9taXNlV3JhcHBlci5pc1Byb21pc2UoYXBwKSkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXG4gICAgICAgICAgXCJDYW5ub3QgdXNlIGFzeW5jcm9ub3VzIGFwcCBpbml0aWFsaXplcnMgd2l0aCBhcHBsaWNhdGlvbi4gVXNlIGFzeW5jQXBwbGljYXRpb24gaW5zdGVhZC5cIik7XG4gICAgfVxuICAgIHJldHVybiA8QXBwbGljYXRpb25SZWY+YXBwO1xuICB9XG5cbiAgYXN5bmNBcHBsaWNhdGlvbihiaW5kaW5nRm46ICh6b25lOiBOZ1pvbmUpID0+IFByb21pc2U8QXJyYXk8VHlwZSB8IFByb3ZpZGVyIHwgYW55W10+PixcbiAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvdmlkZXJzPzogQXJyYXk8VHlwZSB8IFByb3ZpZGVyIHwgYW55W10+KTogUHJvbWlzZTxBcHBsaWNhdGlvblJlZj4ge1xuICAgIHZhciB6b25lID0gY3JlYXRlTmdab25lKCk7XG4gICAgdmFyIGNvbXBsZXRlciA9IFByb21pc2VXcmFwcGVyLmNvbXBsZXRlcjxBcHBsaWNhdGlvblJlZj4oKTtcbiAgICBpZiAoYmluZGluZ0ZuID09PSBudWxsKSB7XG4gICAgICBjb21wbGV0ZXIucmVzb2x2ZSh0aGlzLl9pbml0QXBwKHpvbmUsIGFkZGl0aW9uYWxQcm92aWRlcnMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBQcm9taXNlV3JhcHBlci50aGVuKGJpbmRpbmdGbih6b25lKSwgKHByb3ZpZGVyczogQXJyYXk8VHlwZSB8IFByb3ZpZGVyIHwgYW55W10+KSA9PiB7XG4gICAgICAgICAgaWYgKGlzUHJlc2VudChhZGRpdGlvbmFsUHJvdmlkZXJzKSkge1xuICAgICAgICAgICAgcHJvdmlkZXJzID0gTGlzdFdyYXBwZXIuY29uY2F0KHByb3ZpZGVycywgYWRkaXRpb25hbFByb3ZpZGVycyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBwcm9taXNlID0gdGhpcy5faW5pdEFwcCh6b25lLCBwcm92aWRlcnMpO1xuICAgICAgICAgIGNvbXBsZXRlci5yZXNvbHZlKHByb21pc2UpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29tcGxldGVyLnByb21pc2U7XG4gIH1cblxuICBwcml2YXRlIF9pbml0QXBwKHpvbmU6IE5nWm9uZSxcbiAgICAgICAgICAgICAgICAgICBwcm92aWRlcnM6IEFycmF5PFR5cGUgfCBQcm92aWRlciB8IGFueVtdPik6IFByb21pc2U8QXBwbGljYXRpb25SZWY+fFxuICAgICAgQXBwbGljYXRpb25SZWYge1xuICAgIHZhciBpbmplY3RvcjogSW5qZWN0b3I7XG4gICAgdmFyIGFwcDogQXBwbGljYXRpb25SZWY7XG4gICAgem9uZS5ydW4oKCkgPT4ge1xuICAgICAgcHJvdmlkZXJzID0gTGlzdFdyYXBwZXIuY29uY2F0KHByb3ZpZGVycywgW1xuICAgICAgICBwcm92aWRlKE5nWm9uZSwge3VzZVZhbHVlOiB6b25lfSksXG4gICAgICAgIHByb3ZpZGUoQXBwbGljYXRpb25SZWYsIHt1c2VGYWN0b3J5OiAoKTogQXBwbGljYXRpb25SZWYgPT4gYXBwLCBkZXBzOiBbXX0pXG4gICAgICBdKTtcblxuICAgICAgdmFyIGV4Y2VwdGlvbkhhbmRsZXI6IEZ1bmN0aW9uO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaW5qZWN0b3IgPSB0aGlzLmluamVjdG9yLnJlc29sdmVBbmRDcmVhdGVDaGlsZChwcm92aWRlcnMpO1xuICAgICAgICBleGNlcHRpb25IYW5kbGVyID0gaW5qZWN0b3IuZ2V0KEV4Y2VwdGlvbkhhbmRsZXIpO1xuICAgICAgICBPYnNlcnZhYmxlV3JhcHBlci5zdWJzY3JpYmUoem9uZS5vbkVycm9yLCAoZXJyb3I6IE5nWm9uZUVycm9yKSA9PiB7XG4gICAgICAgICAgZXhjZXB0aW9uSGFuZGxlci5jYWxsKGVycm9yLmVycm9yLCBlcnJvci5zdGFja1RyYWNlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChpc1ByZXNlbnQoZXhjZXB0aW9uSGFuZGxlcikpIHtcbiAgICAgICAgICBleGNlcHRpb25IYW5kbGVyLmNhbGwoZSwgZS5zdGFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJpbnQoZS50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGFwcCA9IG5ldyBBcHBsaWNhdGlvblJlZl8odGhpcywgem9uZSwgaW5qZWN0b3IpO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9ucy5wdXNoKGFwcCk7XG4gICAgdmFyIHByb21pc2UgPSBfcnVuQXBwSW5pdGlhbGl6ZXJzKGluamVjdG9yKTtcbiAgICBpZiAocHJvbWlzZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFByb21pc2VXcmFwcGVyLnRoZW4ocHJvbWlzZSwgKF8pID0+IGFwcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhcHA7XG4gICAgfVxuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBMaXN0V3JhcHBlci5jbG9uZSh0aGlzLl9hcHBsaWNhdGlvbnMpLmZvckVhY2goKGFwcCkgPT4gYXBwLmRpc3Bvc2UoKSk7XG4gICAgdGhpcy5fZGlzcG9zZUxpc3RlbmVycy5mb3JFYWNoKChkaXNwb3NlKSA9PiBkaXNwb3NlKCkpO1xuICAgIHRoaXMuX2Rpc3Bvc2UoKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FwcGxpY2F0aW9uRGlzcG9zZWQoYXBwOiBBcHBsaWNhdGlvblJlZik6IHZvaWQgeyBMaXN0V3JhcHBlci5yZW1vdmUodGhpcy5fYXBwbGljYXRpb25zLCBhcHApOyB9XG59XG5cbmZ1bmN0aW9uIF9ydW5BcHBJbml0aWFsaXplcnMoaW5qZWN0b3I6IEluamVjdG9yKTogUHJvbWlzZTxhbnk+IHtcbiAgbGV0IGluaXRzOiBGdW5jdGlvbltdID0gaW5qZWN0b3IuZ2V0T3B0aW9uYWwoQVBQX0lOSVRJQUxJWkVSKTtcbiAgbGV0IHByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuICBpZiAoaXNQcmVzZW50KGluaXRzKSkge1xuICAgIGluaXRzLmZvckVhY2goaW5pdCA9PiB7XG4gICAgICB2YXIgcmV0VmFsID0gaW5pdCgpO1xuICAgICAgaWYgKFByb21pc2VXcmFwcGVyLmlzUHJvbWlzZShyZXRWYWwpKSB7XG4gICAgICAgIHByb21pc2VzLnB1c2gocmV0VmFsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBpZiAocHJvbWlzZXMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBQcm9taXNlV3JhcHBlci5hbGwocHJvbWlzZXMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gYW4gQW5ndWxhciBhcHBsaWNhdGlvbiBydW5uaW5nIG9uIGEgcGFnZS5cbiAqXG4gKiBGb3IgbW9yZSBhYm91dCBBbmd1bGFyIGFwcGxpY2F0aW9ucywgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB7QGxpbmsgYm9vdHN0cmFwfS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcGxpY2F0aW9uUmVmIHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgbGlzdGVuZXIgdG8gYmUgY2FsbGVkIGVhY2ggdGltZSBgYm9vdHN0cmFwKClgIGlzIGNhbGxlZCB0byBib290c3RyYXBcbiAgICogYSBuZXcgcm9vdCBjb21wb25lbnQuXG4gICAqL1xuICBhYnN0cmFjdCByZWdpc3RlckJvb3RzdHJhcExpc3RlbmVyKGxpc3RlbmVyOiAocmVmOiBDb21wb25lbnRSZWYpID0+IHZvaWQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGxpc3RlbmVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBkaXNwb3NlZC5cbiAgICovXG4gIGFic3RyYWN0IHJlZ2lzdGVyRGlzcG9zZUxpc3RlbmVyKGRpc3Bvc2U6ICgpID0+IHZvaWQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBCb290c3RyYXAgYSBuZXcgY29tcG9uZW50IGF0IHRoZSByb290IGxldmVsIG9mIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogIyMjIEJvb3RzdHJhcCBwcm9jZXNzXG4gICAqXG4gICAqIFdoZW4gYm9vdHN0cmFwcGluZyBhIG5ldyByb290IGNvbXBvbmVudCBpbnRvIGFuIGFwcGxpY2F0aW9uLCBBbmd1bGFyIG1vdW50cyB0aGVcbiAgICogc3BlY2lmaWVkIGFwcGxpY2F0aW9uIGNvbXBvbmVudCBvbnRvIERPTSBlbGVtZW50cyBpZGVudGlmaWVkIGJ5IHRoZSBbY29tcG9uZW50VHlwZV0nc1xuICAgKiBzZWxlY3RvciBhbmQga2lja3Mgb2ZmIGF1dG9tYXRpYyBjaGFuZ2UgZGV0ZWN0aW9uIHRvIGZpbmlzaCBpbml0aWFsaXppbmcgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogIyMjIE9wdGlvbmFsIFByb3ZpZGVyc1xuICAgKlxuICAgKiBQcm92aWRlcnMgZm9yIHRoZSBnaXZlbiBjb21wb25lbnQgY2FuIG9wdGlvbmFsbHkgYmUgb3ZlcnJpZGRlbiB2aWEgdGhlIGBwcm92aWRlcnNgXG4gICAqIHBhcmFtZXRlci4gVGhlc2UgcHJvdmlkZXJzIHdpbGwgb25seSBhcHBseSBmb3IgdGhlIHJvb3QgY29tcG9uZW50IGJlaW5nIGFkZGVkIGFuZCBhbnlcbiAgICogY2hpbGQgY29tcG9uZW50cyB1bmRlciBpdC5cbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICoge0BleGFtcGxlIGNvcmUvdHMvcGxhdGZvcm0vcGxhdGZvcm0udHMgcmVnaW9uPSdsb25nZm9ybSd9XG4gICAqL1xuICBhYnN0cmFjdCBib290c3RyYXAoY29tcG9uZW50VHlwZTogVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVycz86IEFycmF5PFR5cGUgfCBQcm92aWRlciB8IGFueVtdPik6IFByb21pc2U8Q29tcG9uZW50UmVmPjtcblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIGFwcGxpY2F0aW9uIHtAbGluayBJbmplY3Rvcn0uXG4gICAqL1xuICBnZXQgaW5qZWN0b3IoKTogSW5qZWN0b3IgeyByZXR1cm4gPEluamVjdG9yPnVuaW1wbGVtZW50ZWQoKTsgfTtcblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIGFwcGxpY2F0aW9uIHtAbGluayBOZ1pvbmV9LlxuICAgKi9cbiAgZ2V0IHpvbmUoKTogTmdab25lIHsgcmV0dXJuIDxOZ1pvbmU+dW5pbXBsZW1lbnRlZCgpOyB9O1xuXG4gIC8qKlxuICAgKiBEaXNwb3NlIG9mIHRoaXMgYXBwbGljYXRpb24gYW5kIGFsbCBvZiBpdHMgY29tcG9uZW50cy5cbiAgICovXG4gIGFic3RyYWN0IGRpc3Bvc2UoKTogdm9pZDtcblxuICAvKipcbiAgICogSW52b2tlIHRoaXMgbWV0aG9kIHRvIGV4cGxpY2l0bHkgcHJvY2VzcyBjaGFuZ2UgZGV0ZWN0aW9uIGFuZCBpdHMgc2lkZS1lZmZlY3RzLlxuICAgKlxuICAgKiBJbiBkZXZlbG9wbWVudCBtb2RlLCBgdGljaygpYCBhbHNvIHBlcmZvcm1zIGEgc2Vjb25kIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgdG8gZW5zdXJlIHRoYXQgbm9cbiAgICogZnVydGhlciBjaGFuZ2VzIGFyZSBkZXRlY3RlZC4gSWYgYWRkaXRpb25hbCBjaGFuZ2VzIGFyZSBwaWNrZWQgdXAgZHVyaW5nIHRoaXMgc2Vjb25kIGN5Y2xlLFxuICAgKiBiaW5kaW5ncyBpbiB0aGUgYXBwIGhhdmUgc2lkZS1lZmZlY3RzIHRoYXQgY2Fubm90IGJlIHJlc29sdmVkIGluIGEgc2luZ2xlIGNoYW5nZSBkZXRlY3Rpb25cbiAgICogcGFzcy5cbiAgICogSW4gdGhpcyBjYXNlLCBBbmd1bGFyIHRocm93cyBhbiBlcnJvciwgc2luY2UgYW4gQW5ndWxhciBhcHBsaWNhdGlvbiBjYW4gb25seSBoYXZlIG9uZSBjaGFuZ2VcbiAgICogZGV0ZWN0aW9uIHBhc3MgZHVyaW5nIHdoaWNoIGFsbCBjaGFuZ2UgZGV0ZWN0aW9uIG11c3QgY29tcGxldGUuXG4gICAqL1xuICBhYnN0cmFjdCB0aWNrKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgY29tcG9uZW50IHR5cGVzIHJlZ2lzdGVyZWQgdG8gdGhpcyBhcHBsaWNhdGlvbi5cbiAgICovXG4gIGdldCBjb21wb25lbnRUeXBlcygpOiBUeXBlW10geyByZXR1cm4gPFR5cGVbXT51bmltcGxlbWVudGVkKCk7IH07XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblJlZl8gZXh0ZW5kcyBBcHBsaWNhdGlvblJlZiB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgc3RhdGljIF90aWNrU2NvcGU6IFd0ZlNjb3BlRm4gPSB3dGZDcmVhdGVTY29wZSgnQXBwbGljYXRpb25SZWYjdGljaygpJyk7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9ib290c3RyYXBMaXN0ZW5lcnM6IEZ1bmN0aW9uW10gPSBbXTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9kaXNwb3NlTGlzdGVuZXJzOiBGdW5jdGlvbltdID0gW107XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBfcm9vdENvbXBvbmVudHM6IENvbXBvbmVudFJlZltdID0gW107XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBfcm9vdENvbXBvbmVudFR5cGVzOiBUeXBlW10gPSBbXTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZnM6IENoYW5nZURldGVjdG9yUmVmW10gPSBbXTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9ydW5uaW5nVGljazogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgX2VuZm9yY2VOb05ld0NoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9wbGF0Zm9ybTogUGxhdGZvcm1SZWZfLCBwcml2YXRlIF96b25lOiBOZ1pvbmUsIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl96b25lKSkge1xuICAgICAgT2JzZXJ2YWJsZVdyYXBwZXIuc3Vic2NyaWJlKHRoaXMuX3pvbmUub25NaWNyb3Rhc2tFbXB0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXykgPT4geyB0aGlzLl96b25lLnJ1bigoKSA9PiB7IHRoaXMudGljaygpOyB9KTsgfSk7XG4gICAgfVxuICAgIHRoaXMuX2VuZm9yY2VOb05ld0NoYW5nZXMgPSBhc3NlcnRpb25zRW5hYmxlZCgpO1xuICB9XG5cbiAgcmVnaXN0ZXJCb290c3RyYXBMaXN0ZW5lcihsaXN0ZW5lcjogKHJlZjogQ29tcG9uZW50UmVmKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fYm9vdHN0cmFwTGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICB9XG5cbiAgcmVnaXN0ZXJEaXNwb3NlTGlzdGVuZXIoZGlzcG9zZTogKCkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLl9kaXNwb3NlTGlzdGVuZXJzLnB1c2goZGlzcG9zZSk7IH1cblxuICByZWdpc3RlckNoYW5nZURldGVjdG9yKGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmcy5wdXNoKGNoYW5nZURldGVjdG9yKTtcbiAgfVxuXG4gIHVucmVnaXN0ZXJDaGFuZ2VEZXRlY3RvcihjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcbiAgICBMaXN0V3JhcHBlci5yZW1vdmUodGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWZzLCBjaGFuZ2VEZXRlY3Rvcik7XG4gIH1cblxuICBib290c3RyYXAoY29tcG9uZW50VHlwZTogVHlwZSxcbiAgICAgICAgICAgIHByb3ZpZGVycz86IEFycmF5PFR5cGUgfCBQcm92aWRlciB8IGFueVtdPik6IFByb21pc2U8Q29tcG9uZW50UmVmPiB7XG4gICAgdmFyIGNvbXBsZXRlciA9IFByb21pc2VXcmFwcGVyLmNvbXBsZXRlcigpO1xuICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgIHZhciBjb21wb25lbnRQcm92aWRlcnMgPSBfY29tcG9uZW50UHJvdmlkZXJzKGNvbXBvbmVudFR5cGUpO1xuICAgICAgaWYgKGlzUHJlc2VudChwcm92aWRlcnMpKSB7XG4gICAgICAgIGNvbXBvbmVudFByb3ZpZGVycy5wdXNoKHByb3ZpZGVycyk7XG4gICAgICB9XG4gICAgICB2YXIgZXhjZXB0aW9uSGFuZGxlciA9IHRoaXMuX2luamVjdG9yLmdldChFeGNlcHRpb25IYW5kbGVyKTtcbiAgICAgIHRoaXMuX3Jvb3RDb21wb25lbnRUeXBlcy5wdXNoKGNvbXBvbmVudFR5cGUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGluamVjdG9yOiBJbmplY3RvciA9IHRoaXMuX2luamVjdG9yLnJlc29sdmVBbmRDcmVhdGVDaGlsZChjb21wb25lbnRQcm92aWRlcnMpO1xuICAgICAgICB2YXIgY29tcFJlZlRva2VuOiBQcm9taXNlPENvbXBvbmVudFJlZj4gPSBpbmplY3Rvci5nZXQoQVBQX0NPTVBPTkVOVF9SRUZfUFJPTUlTRSk7XG4gICAgICAgIHZhciB0aWNrID0gKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9hZENvbXBvbmVudChjb21wb25lbnRSZWYpO1xuICAgICAgICAgIGNvbXBsZXRlci5yZXNvbHZlKGNvbXBvbmVudFJlZik7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIHRpY2tSZXN1bHQgPSBQcm9taXNlV3JhcHBlci50aGVuKGNvbXBSZWZUb2tlbiwgdGljayk7XG5cbiAgICAgICAgUHJvbWlzZVdyYXBwZXIudGhlbih0aWNrUmVzdWx0LCBudWxsLCAoZXJyLCBzdGFja1RyYWNlKSA9PiB7XG4gICAgICAgICAgY29tcGxldGVyLnJlamVjdChlcnIsIHN0YWNrVHJhY2UpO1xuICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZXIuY2FsbChlcnIsIHN0YWNrVHJhY2UpO1xuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZXhjZXB0aW9uSGFuZGxlci5jYWxsKGUsIGUuc3RhY2spO1xuICAgICAgICBjb21wbGV0ZXIucmVqZWN0KGUsIGUuc3RhY2spO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjb21wbGV0ZXIucHJvbWlzZS50aGVuPENvbXBvbmVudFJlZj4oKHJlZjogQ29tcG9uZW50UmVmKSA9PiB7XG4gICAgICBsZXQgYyA9IHRoaXMuX2luamVjdG9yLmdldChDb25zb2xlKTtcbiAgICAgIGlmIChhc3NlcnRpb25zRW5hYmxlZCgpKSB7XG4gICAgICAgIGMubG9nKFxuICAgICAgICAgICAgXCJBbmd1bGFyIDIgaXMgcnVubmluZyBpbiB0aGUgZGV2ZWxvcG1lbnQgbW9kZS4gQ2FsbCBlbmFibGVQcm9kTW9kZSgpIHRvIGVuYWJsZSB0aGUgcHJvZHVjdGlvbiBtb2RlLlwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZWY7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9sb2FkQ29tcG9uZW50KGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmKTogdm9pZCB7XG4gICAgdmFyIGFwcENoYW5nZURldGVjdG9yID1cbiAgICAgICAgKDxFbGVtZW50UmVmXz5jb21wb25lbnRSZWYubG9jYXRpb24pLmludGVybmFsRWxlbWVudC5wYXJlbnRWaWV3LmNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmcy5wdXNoKGFwcENoYW5nZURldGVjdG9yLnJlZik7XG4gICAgdGhpcy50aWNrKCk7XG4gICAgdGhpcy5fcm9vdENvbXBvbmVudHMucHVzaChjb21wb25lbnRSZWYpO1xuICAgIHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoY29tcG9uZW50UmVmKSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF91bmxvYWRDb21wb25lbnQoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWYpOiB2b2lkIHtcbiAgICBpZiAoIUxpc3RXcmFwcGVyLmNvbnRhaW5zKHRoaXMuX3Jvb3RDb21wb25lbnRzLCBjb21wb25lbnRSZWYpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudW5yZWdpc3RlckNoYW5nZURldGVjdG9yKFxuICAgICAgICAoPEVsZW1lbnRSZWZfPmNvbXBvbmVudFJlZi5sb2NhdGlvbikuaW50ZXJuYWxFbGVtZW50LnBhcmVudFZpZXcuY2hhbmdlRGV0ZWN0b3IucmVmKTtcbiAgICBMaXN0V3JhcHBlci5yZW1vdmUodGhpcy5fcm9vdENvbXBvbmVudHMsIGNvbXBvbmVudFJlZik7XG4gIH1cblxuICBnZXQgaW5qZWN0b3IoKTogSW5qZWN0b3IgeyByZXR1cm4gdGhpcy5faW5qZWN0b3I7IH1cblxuICBnZXQgem9uZSgpOiBOZ1pvbmUgeyByZXR1cm4gdGhpcy5fem9uZTsgfVxuXG4gIHRpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3J1bm5pbmdUaWNrKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihcIkFwcGxpY2F0aW9uUmVmLnRpY2sgaXMgY2FsbGVkIHJlY3Vyc2l2ZWx5XCIpO1xuICAgIH1cblxuICAgIHZhciBzID0gQXBwbGljYXRpb25SZWZfLl90aWNrU2NvcGUoKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5fcnVubmluZ1RpY2sgPSB0cnVlO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWZzLmZvckVhY2goKGRldGVjdG9yKSA9PiBkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCkpO1xuICAgICAgaWYgKHRoaXMuX2VuZm9yY2VOb05ld0NoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWZzLmZvckVhY2goKGRldGVjdG9yKSA9PiBkZXRlY3Rvci5jaGVja05vQ2hhbmdlcygpKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fcnVubmluZ1RpY2sgPSBmYWxzZTtcbiAgICAgIHd0ZkxlYXZlKHMpO1xuICAgIH1cbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgLy8gVE9ETyhhbHhodWIpOiBEaXNwb3NlIG9mIHRoZSBOZ1pvbmUuXG4gICAgTGlzdFdyYXBwZXIuY2xvbmUodGhpcy5fcm9vdENvbXBvbmVudHMpLmZvckVhY2goKHJlZikgPT4gcmVmLmRpc3Bvc2UoKSk7XG4gICAgdGhpcy5fZGlzcG9zZUxpc3RlbmVycy5mb3JFYWNoKChkaXNwb3NlKSA9PiBkaXNwb3NlKCkpO1xuICAgIHRoaXMuX3BsYXRmb3JtLl9hcHBsaWNhdGlvbkRpc3Bvc2VkKHRoaXMpO1xuICB9XG5cbiAgZ2V0IGNvbXBvbmVudFR5cGVzKCk6IFR5cGVbXSB7IHJldHVybiB0aGlzLl9yb290Q29tcG9uZW50VHlwZXM7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';// Public API for Zone\r\nvar ng_zone_1 = require('./zone/ng_zone');\r\nexports.NgZone = ng_zone_1.NgZone;\r\nexports.NgZoneError = ng_zone_1.NgZoneError;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL3pvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCO0FBQ3RCLHdCQUFrQyxnQkFBZ0IsQ0FBQztBQUEzQyxrQ0FBTTtBQUFFLDRDQUFtQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFB1YmxpYyBBUEkgZm9yIFpvbmVcbmV4cG9ydCB7Tmdab25lLCBOZ1pvbmVFcnJvcn0gZnJvbSAnLi96b25lL25nX3pvbmUnO1xuIl19","/* */ \n\"format cjs\";\n'use strict';// Public API for render\r\nvar api_1 = require('./render/api');\r\nexports.RootRenderer = api_1.RootRenderer;\r\nexports.Renderer = api_1.Renderer;\r\nexports.RenderComponentType = api_1.RenderComponentType;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvcmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdCQUF3QjtBQUN4QixvQkFBMEQsY0FBYyxDQUFDO0FBQWpFLDBDQUFZO0FBQUUsa0NBQVE7QUFBRSx3REFBeUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQdWJsaWMgQVBJIGZvciByZW5kZXJcbmV4cG9ydCB7Um9vdFJlbmRlcmVyLCBSZW5kZXJlciwgUmVuZGVyQ29tcG9uZW50VHlwZX0gZnJvbSAnLi9yZW5kZXIvYXBpJztcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';// Public API for compiler\r\nvar directive_resolver_1 = require('./linker/directive_resolver');\r\nexports.DirectiveResolver = directive_resolver_1.DirectiveResolver;\r\nvar view_resolver_1 = require('./linker/view_resolver');\r\nexports.ViewResolver = view_resolver_1.ViewResolver;\r\nvar compiler_1 = require('./linker/compiler');\r\nexports.Compiler = compiler_1.Compiler;\r\nvar view_manager_1 = require('./linker/view_manager');\r\nexports.AppViewManager = view_manager_1.AppViewManager;\r\nvar query_list_1 = require('./linker/query_list');\r\nexports.QueryList = query_list_1.QueryList;\r\nvar dynamic_component_loader_1 = require('./linker/dynamic_component_loader');\r\nexports.DynamicComponentLoader = dynamic_component_loader_1.DynamicComponentLoader;\r\nvar element_ref_1 = require('./linker/element_ref');\r\nexports.ElementRef = element_ref_1.ElementRef;\r\nvar template_ref_1 = require('./linker/template_ref');\r\nexports.TemplateRef = template_ref_1.TemplateRef;\r\nvar view_ref_1 = require('./linker/view_ref');\r\nexports.EmbeddedViewRef = view_ref_1.EmbeddedViewRef;\r\nexports.HostViewRef = view_ref_1.HostViewRef;\r\nexports.ViewRef = view_ref_1.ViewRef;\r\nexports.HostViewFactoryRef = view_ref_1.HostViewFactoryRef;\r\nvar view_container_ref_1 = require('./linker/view_container_ref');\r\nexports.ViewContainerRef = view_container_ref_1.ViewContainerRef;\r\nvar dynamic_component_loader_2 = require('./linker/dynamic_component_loader');\r\nexports.ComponentRef = dynamic_component_loader_2.ComponentRef;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBCQUEwQjtBQVcxQixtQ0FBZ0MsNkJBQTZCLENBQUM7QUFBdEQsbUVBQXNEO0FBQzlELDhCQUEyQix3QkFBd0IsQ0FBQztBQUE1QyxvREFBNEM7QUFDcEQseUJBQXVCLG1CQUFtQixDQUFDO0FBQW5DLHVDQUFtQztBQUMzQyw2QkFBNkIsdUJBQXVCLENBQUM7QUFBN0MsdURBQTZDO0FBQ3JELDJCQUF3QixxQkFBcUIsQ0FBQztBQUF0QywyQ0FBc0M7QUFDOUMseUNBQXFDLG1DQUFtQyxDQUFDO0FBQWpFLG1GQUFpRTtBQUN6RSw0QkFBeUIsc0JBQXNCLENBQUM7QUFBeEMsOENBQXdDO0FBQ2hELDZCQUEwQix1QkFBdUIsQ0FBQztBQUExQyxpREFBMEM7QUFDbEQseUJBQXdFLG1CQUFtQixDQUFDO0FBQXBGLHFEQUFlO0FBQUUsNkNBQVc7QUFBRSxxQ0FBTztBQUFFLDJEQUE2QztBQUM1RixtQ0FBK0IsNkJBQTZCLENBQUM7QUFBckQsaUVBQXFEO0FBQzdELHlDQUEyQixtQ0FBbUMsQ0FBQztBQUF2RCwrREFBdUQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQdWJsaWMgQVBJIGZvciBjb21waWxlclxuZXhwb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgRG9DaGVja1xufSBmcm9tICcuL2xpbmtlci9pbnRlcmZhY2VzJztcbmV4cG9ydCB7RGlyZWN0aXZlUmVzb2x2ZXJ9IGZyb20gJy4vbGlua2VyL2RpcmVjdGl2ZV9yZXNvbHZlcic7XG5leHBvcnQge1ZpZXdSZXNvbHZlcn0gZnJvbSAnLi9saW5rZXIvdmlld19yZXNvbHZlcic7XG5leHBvcnQge0NvbXBpbGVyfSBmcm9tICcuL2xpbmtlci9jb21waWxlcic7XG5leHBvcnQge0FwcFZpZXdNYW5hZ2VyfSBmcm9tICcuL2xpbmtlci92aWV3X21hbmFnZXInO1xuZXhwb3J0IHtRdWVyeUxpc3R9IGZyb20gJy4vbGlua2VyL3F1ZXJ5X2xpc3QnO1xuZXhwb3J0IHtEeW5hbWljQ29tcG9uZW50TG9hZGVyfSBmcm9tICcuL2xpbmtlci9keW5hbWljX2NvbXBvbmVudF9sb2FkZXInO1xuZXhwb3J0IHtFbGVtZW50UmVmfSBmcm9tICcuL2xpbmtlci9lbGVtZW50X3JlZic7XG5leHBvcnQge1RlbXBsYXRlUmVmfSBmcm9tICcuL2xpbmtlci90ZW1wbGF0ZV9yZWYnO1xuZXhwb3J0IHtFbWJlZGRlZFZpZXdSZWYsIEhvc3RWaWV3UmVmLCBWaWV3UmVmLCBIb3N0Vmlld0ZhY3RvcnlSZWZ9IGZyb20gJy4vbGlua2VyL3ZpZXdfcmVmJztcbmV4cG9ydCB7Vmlld0NvbnRhaW5lclJlZn0gZnJvbSAnLi9saW5rZXIvdmlld19jb250YWluZXJfcmVmJztcbmV4cG9ydCB7Q29tcG9uZW50UmVmfSBmcm9tICcuL2xpbmtlci9keW5hbWljX2NvbXBvbmVudF9sb2FkZXInOyJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar EventListener = (function () {\r\n function EventListener(name, callback) {\r\n this.name = name;\r\n this.callback = callback;\r\n }\r\n ;\r\n return EventListener;\r\n})();\r\nexports.EventListener = EventListener;\r\nvar DebugNode = (function () {\r\n function DebugNode(nativeNode, parent) {\r\n this.nativeNode = nativeNode;\r\n if (lang_1.isPresent(parent) && parent instanceof DebugElement) {\r\n parent.addChild(this);\r\n }\r\n else {\r\n this.parent = null;\r\n }\r\n this.listeners = [];\r\n this.providerTokens = [];\r\n }\r\n DebugNode.prototype.setDebugInfo = function (info) {\r\n this.injector = info.injector;\r\n this.providerTokens = info.providerTokens;\r\n this.locals = info.locals;\r\n this.componentInstance = info.component;\r\n };\r\n DebugNode.prototype.inject = function (token) { return this.injector.get(token); };\r\n DebugNode.prototype.getLocal = function (name) { return this.locals.get(name); };\r\n return DebugNode;\r\n})();\r\nexports.DebugNode = DebugNode;\r\nvar DebugElement = (function (_super) {\r\n __extends(DebugElement, _super);\r\n function DebugElement(nativeNode, parent) {\r\n _super.call(this, nativeNode, parent);\r\n this.properties = new Map();\r\n this.attributes = new Map();\r\n this.childNodes = [];\r\n this.nativeElement = nativeNode;\r\n }\r\n DebugElement.prototype.addChild = function (child) {\r\n if (lang_1.isPresent(child)) {\r\n this.childNodes.push(child);\r\n child.parent = this;\r\n }\r\n };\r\n DebugElement.prototype.removeChild = function (child) {\r\n var childIndex = this.childNodes.indexOf(child);\r\n if (childIndex !== -1) {\r\n child.parent = null;\r\n this.childNodes.splice(childIndex, 1);\r\n }\r\n };\r\n DebugElement.prototype.insertChildrenAfter = function (child, newChildren) {\r\n var siblingIndex = this.childNodes.indexOf(child);\r\n if (siblingIndex !== -1) {\r\n var previousChildren = this.childNodes.slice(0, siblingIndex + 1);\r\n var nextChildren = this.childNodes.slice(siblingIndex + 1);\r\n this.childNodes =\r\n collection_1.ListWrapper.concat(collection_1.ListWrapper.concat(previousChildren, newChildren), nextChildren);\r\n for (var i = 0; i < newChildren.length; ++i) {\r\n var newChild = newChildren[i];\r\n if (lang_1.isPresent(newChild.parent)) {\r\n newChild.parent.removeChild(newChild);\r\n }\r\n newChild.parent = this;\r\n }\r\n }\r\n };\r\n DebugElement.prototype.query = function (predicate) {\r\n var results = this.queryAll(predicate);\r\n return results.length > 0 ? results[0] : null;\r\n };\r\n DebugElement.prototype.queryAll = function (predicate) {\r\n var matches = [];\r\n _queryElementChildren(this, predicate, matches);\r\n return matches;\r\n };\r\n DebugElement.prototype.queryAllNodes = function (predicate) {\r\n var matches = [];\r\n _queryNodeChildren(this, predicate, matches);\r\n return matches;\r\n };\r\n Object.defineProperty(DebugElement.prototype, \"children\", {\r\n get: function () {\r\n var children = [];\r\n this.childNodes.forEach(function (node) {\r\n if (node instanceof DebugElement) {\r\n children.push(node);\r\n }\r\n });\r\n return children;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DebugElement.prototype.triggerEventHandler = function (eventName, eventObj) {\r\n this.listeners.forEach(function (listener) {\r\n if (listener.name == eventName) {\r\n listener.callback(eventObj);\r\n }\r\n });\r\n };\r\n return DebugElement;\r\n})(DebugNode);\r\nexports.DebugElement = DebugElement;\r\nfunction asNativeElements(debugEls) {\r\n return debugEls.map(function (el) { return el.nativeElement; });\r\n}\r\nexports.asNativeElements = asNativeElements;\r\nfunction _queryElementChildren(element, predicate, matches) {\r\n element.childNodes.forEach(function (node) {\r\n if (node instanceof DebugElement) {\r\n if (predicate(node)) {\r\n matches.push(node);\r\n }\r\n _queryElementChildren(node, predicate, matches);\r\n }\r\n });\r\n}\r\nfunction _queryNodeChildren(parentNode, predicate, matches) {\r\n if (parentNode instanceof DebugElement) {\r\n parentNode.childNodes.forEach(function (node) {\r\n if (predicate(node)) {\r\n matches.push(node);\r\n }\r\n if (node instanceof DebugElement) {\r\n _queryNodeChildren(node, predicate, matches);\r\n }\r\n });\r\n }\r\n}\r\n// Need to keep the nodes in a global Map so that multiple angular apps are supported.\r\nvar _nativeNodeToDebugNode = new Map();\r\nfunction getDebugNode(nativeNode) {\r\n return _nativeNodeToDebugNode.get(nativeNode);\r\n}\r\nexports.getDebugNode = getDebugNode;\r\nfunction getAllDebugNodes() {\r\n return collection_1.MapWrapper.values(_nativeNodeToDebugNode);\r\n}\r\nexports.getAllDebugNodes = getAllDebugNodes;\r\nfunction indexDebugNode(node) {\r\n _nativeNodeToDebugNode.set(node.nativeNode, node);\r\n}\r\nexports.indexDebugNode = indexDebugNode;\r\nfunction removeDebugNodeFromIndex(node) {\r\n _nativeNodeToDebugNode.delete(node.nativeNode);\r\n}\r\nexports.removeDebugNodeFromIndex = removeDebugNodeFromIndex;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWdfbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2RlYnVnL2RlYnVnX25vZGUudHMiXSwibmFtZXMiOlsiRXZlbnRMaXN0ZW5lciIsIkV2ZW50TGlzdGVuZXIuY29uc3RydWN0b3IiLCJEZWJ1Z05vZGUiLCJEZWJ1Z05vZGUuY29uc3RydWN0b3IiLCJEZWJ1Z05vZGUuc2V0RGVidWdJbmZvIiwiRGVidWdOb2RlLmluamVjdCIsIkRlYnVnTm9kZS5nZXRMb2NhbCIsIkRlYnVnRWxlbWVudCIsIkRlYnVnRWxlbWVudC5jb25zdHJ1Y3RvciIsIkRlYnVnRWxlbWVudC5hZGRDaGlsZCIsIkRlYnVnRWxlbWVudC5yZW1vdmVDaGlsZCIsIkRlYnVnRWxlbWVudC5pbnNlcnRDaGlsZHJlbkFmdGVyIiwiRGVidWdFbGVtZW50LnF1ZXJ5IiwiRGVidWdFbGVtZW50LnF1ZXJ5QWxsIiwiRGVidWdFbGVtZW50LnF1ZXJ5QWxsTm9kZXMiLCJEZWJ1Z0VsZW1lbnQuY2hpbGRyZW4iLCJEZWJ1Z0VsZW1lbnQudHJpZ2dlckV2ZW50SGFuZGxlciIsImFzTmF0aXZlRWxlbWVudHMiLCJfcXVlcnlFbGVtZW50Q2hpbGRyZW4iLCJfcXVlcnlOb2RlQ2hpbGRyZW4iLCJnZXREZWJ1Z05vZGUiLCJnZXRBbGxEZWJ1Z05vZGVzIiwiaW5kZXhEZWJ1Z05vZGUiLCJyZW1vdmVEZWJ1Z05vZGVGcm9tSW5kZXgiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUJBQXdCLDBCQUEwQixDQUFDLENBQUE7QUFHbkQsMkJBQXNDLGdDQUFnQyxDQUFDLENBQUE7QUFHdkU7SUFBNkJBLHVCQUFtQkEsSUFBWUEsRUFBU0EsUUFBa0JBO1FBQXZDQyxTQUFJQSxHQUFKQSxJQUFJQSxDQUFRQTtRQUFTQSxhQUFRQSxHQUFSQSxRQUFRQSxDQUFVQTtJQUFFQSxDQUFDQTs7SUFBRUQsb0JBQUNBO0FBQURBLENBQUNBLEFBQTdGLElBQTZGO0FBQWhGLHFCQUFh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LENBQUNBO0FBQ3BEQSxDQUFDQTtBQUZlLHNCQUFjLGlCQUU3QixDQUFBO0FBRUQsa0NBQXlDLElBQWU7SUFDdERDLHNCQUFzQkEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsQ0FBQ0E7QUFDakRBLENBQUNBO0FBRmUsZ0NBQXdCLDJCQUV2QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1ByZXNlbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge1ByZWRpY2F0ZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7SW5qZWN0b3J9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7TGlzdFdyYXBwZXIsIE1hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1JlbmRlckRlYnVnSW5mb30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVuZGVyL2FwaSc7XG5cbmV4cG9ydCBjbGFzcyBFdmVudExpc3RlbmVyIHsgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIGNhbGxiYWNrOiBGdW5jdGlvbil7fTsgfVxuXG5leHBvcnQgY2xhc3MgRGVidWdOb2RlIHtcbiAgbmF0aXZlTm9kZTogYW55O1xuICBsaXN0ZW5lcnM6IEV2ZW50TGlzdGVuZXJbXTtcbiAgcGFyZW50OiBEZWJ1Z0VsZW1lbnQ7XG4gIHByb3ZpZGVyVG9rZW5zOiBhbnlbXTtcbiAgbG9jYWxzOiBNYXA8c3RyaW5nLCBhbnk+O1xuICBpbmplY3RvcjogSW5qZWN0b3I7XG4gIGNvbXBvbmVudEluc3RhbmNlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IobmF0aXZlTm9kZTogYW55LCBwYXJlbnQ6IERlYnVnTm9kZSkge1xuICAgIHRoaXMubmF0aXZlTm9kZSA9IG5hdGl2ZU5vZGU7XG4gICAgaWYgKGlzUHJlc2VudChwYXJlbnQpICYmIHBhcmVudCBpbnN0YW5jZW9mIERlYnVnRWxlbWVudCkge1xuICAgICAgcGFyZW50LmFkZENoaWxkKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhcmVudCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMubGlzdGVuZXJzID0gW107XG4gICAgdGhpcy5wcm92aWRlclRva2VucyA9IFtdO1xuICB9XG5cbiAgc2V0RGVidWdJbmZvKGluZm86IFJlbmRlckRlYnVnSW5mbykge1xuICAgIHRoaXMuaW5qZWN0b3IgPSBpbmZvLmluamVjdG9yO1xuICAgIHRoaXMucHJvdmlkZXJUb2tlbnMgPSBpbmZvLnByb3ZpZGVyVG9rZW5zO1xuICAgIHRoaXMubG9jYWxzID0gaW5mby5sb2NhbHM7XG4gICAgdGhpcy5jb21wb25lbnRJbnN0YW5jZSA9IGluZm8uY29tcG9uZW50O1xuICB9XG5cbiAgaW5qZWN0KHRva2VuOiBhbnkpOiBhbnkgeyByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQodG9rZW4pOyB9XG5cbiAgZ2V0TG9jYWwobmFtZTogc3RyaW5nKTogYW55IHsgcmV0dXJuIHRoaXMubG9jYWxzLmdldChuYW1lKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgRGVidWdFbGVtZW50IGV4dGVuZHMgRGVidWdOb2RlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBwcm9wZXJ0aWVzOiBNYXA8c3RyaW5nLCBhbnk+O1xuICBhdHRyaWJ1dGVzOiBNYXA8c3RyaW5nLCBhbnk+O1xuICBjaGlsZE5vZGVzOiBEZWJ1Z05vZGVbXTtcbiAgbmF0aXZlRWxlbWVudDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKG5hdGl2ZU5vZGU6IGFueSwgcGFyZW50OiBhbnkpIHtcbiAgICBzdXBlcihuYXRpdmVOb2RlLCBwYXJlbnQpO1xuICAgIHRoaXMucHJvcGVydGllcyA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbXTtcbiAgICB0aGlzLm5hdGl2ZUVsZW1lbnQgPSBuYXRpdmVOb2RlO1xuICB9XG5cbiAgYWRkQ2hpbGQoY2hpbGQ6IERlYnVnTm9kZSkge1xuICAgIGlmIChpc1ByZXNlbnQoY2hpbGQpKSB7XG4gICAgICB0aGlzLmNoaWxkTm9kZXMucHVzaChjaGlsZCk7XG4gICAgICBjaGlsZC5wYXJlbnQgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUNoaWxkKGNoaWxkOiBEZWJ1Z05vZGUpIHtcbiAgICB2YXIgY2hpbGRJbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGNoaWxkKTtcbiAgICBpZiAoY2hpbGRJbmRleCAhPT0gLTEpIHtcbiAgICAgIGNoaWxkLnBhcmVudCA9IG51bGw7XG4gICAgICB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGNoaWxkSW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIGluc2VydENoaWxkcmVuQWZ0ZXIoY2hpbGQ6IERlYnVnTm9kZSwgbmV3Q2hpbGRyZW46IERlYnVnTm9kZVtdKSB7XG4gICAgdmFyIHNpYmxpbmdJbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGNoaWxkKTtcbiAgICBpZiAoc2libGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgdmFyIHByZXZpb3VzQ2hpbGRyZW4gPSB0aGlzLmNoaWxkTm9kZXMuc2xpY2UoMCwgc2libGluZ0luZGV4ICsgMSk7XG4gICAgICB2YXIgbmV4dENoaWxkcmVuID0gdGhpcy5jaGlsZE5vZGVzLnNsaWNlKHNpYmxpbmdJbmRleCArIDEpO1xuICAgICAgdGhpcy5jaGlsZE5vZGVzID1cbiAgICAgICAgICBMaXN0V3JhcHBlci5jb25jYXQoTGlzdFdyYXBwZXIuY29uY2F0KHByZXZpb3VzQ2hpbGRyZW4sIG5ld0NoaWxkcmVuKSwgbmV4dENoaWxkcmVuKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIG5ld0NoaWxkID0gbmV3Q2hpbGRyZW5baV07XG4gICAgICAgIGlmIChpc1ByZXNlbnQobmV3Q2hpbGQucGFyZW50KSkge1xuICAgICAgICAgIG5ld0NoaWxkLnBhcmVudC5yZW1vdmVDaGlsZChuZXdDaGlsZCk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3Q2hpbGQucGFyZW50ID0gdGhpcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBxdWVyeShwcmVkaWNhdGU6IFByZWRpY2F0ZTxEZWJ1Z0VsZW1lbnQ+KTogRGVidWdFbGVtZW50IHtcbiAgICB2YXIgcmVzdWx0cyA9IHRoaXMucXVlcnlBbGwocHJlZGljYXRlKTtcbiAgICByZXR1cm4gcmVzdWx0cy5sZW5ndGggPiAwID8gcmVzdWx0c1swXSA6IG51bGw7XG4gIH1cblxuICBxdWVyeUFsbChwcmVkaWNhdGU6IFByZWRpY2F0ZTxEZWJ1Z0VsZW1lbnQ+KTogRGVidWdFbGVtZW50W10ge1xuICAgIHZhciBtYXRjaGVzOiBEZWJ1Z0VsZW1lbnRbXSA9IFtdO1xuICAgIF9xdWVyeUVsZW1lbnRDaGlsZHJlbih0aGlzLCBwcmVkaWNhdGUsIG1hdGNoZXMpO1xuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgcXVlcnlBbGxOb2RlcyhwcmVkaWNhdGU6IFByZWRpY2F0ZTxEZWJ1Z05vZGU+KTogRGVidWdOb2RlW10ge1xuICAgIHZhciBtYXRjaGVzOiBEZWJ1Z05vZGVbXSA9IFtdO1xuICAgIF9xdWVyeU5vZGVDaGlsZHJlbih0aGlzLCBwcmVkaWNhdGUsIG1hdGNoZXMpO1xuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgZ2V0IGNoaWxkcmVuKCk6IERlYnVnRWxlbWVudFtdIHtcbiAgICB2YXIgY2hpbGRyZW46IERlYnVnRWxlbWVudFtdID0gW107XG4gICAgdGhpcy5jaGlsZE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgRGVidWdFbGVtZW50KSB7XG4gICAgICAgIGNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG5cbiAgdHJpZ2dlckV2ZW50SGFuZGxlcihldmVudE5hbWU6IHN0cmluZywgZXZlbnRPYmo6IEV2ZW50KSB7XG4gICAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IHtcbiAgICAgIGlmIChsaXN0ZW5lci5uYW1lID09IGV2ZW50TmFtZSkge1xuICAgICAgICBsaXN0ZW5lci5jYWxsYmFjayhldmVudE9iaik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzTmF0aXZlRWxlbWVudHMoZGVidWdFbHM6IERlYnVnRWxlbWVudFtdKTogYW55IHtcbiAgcmV0dXJuIGRlYnVnRWxzLm1hcCgoZWwpID0+IGVsLm5hdGl2ZUVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBfcXVlcnlFbGVtZW50Q2hpbGRyZW4oZWxlbWVudDogRGVidWdFbGVtZW50LCBwcmVkaWNhdGU6IFByZWRpY2F0ZTxEZWJ1Z0VsZW1lbnQ+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXM6IERlYnVnRWxlbWVudFtdKSB7XG4gIGVsZW1lbnQuY2hpbGROb2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgIGlmIChub2RlIGluc3RhbmNlb2YgRGVidWdFbGVtZW50KSB7XG4gICAgICBpZiAocHJlZGljYXRlKG5vZGUpKSB7XG4gICAgICAgIG1hdGNoZXMucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICAgIF9xdWVyeUVsZW1lbnRDaGlsZHJlbihub2RlLCBwcmVkaWNhdGUsIG1hdGNoZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIF9xdWVyeU5vZGVDaGlsZHJlbihwYXJlbnROb2RlOiBEZWJ1Z05vZGUsIHByZWRpY2F0ZTogUHJlZGljYXRlPERlYnVnTm9kZT4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlczogRGVidWdOb2RlW10pIHtcbiAgaWYgKHBhcmVudE5vZGUgaW5zdGFuY2VvZiBEZWJ1Z0VsZW1lbnQpIHtcbiAgICBwYXJlbnROb2RlLmNoaWxkTm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgIGlmIChwcmVkaWNhdGUobm9kZSkpIHtcbiAgICAgICAgbWF0Y2hlcy5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBEZWJ1Z0VsZW1lbnQpIHtcbiAgICAgICAgX3F1ZXJ5Tm9kZUNoaWxkcmVuKG5vZGUsIHByZWRpY2F0ZSwgbWF0Y2hlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuLy8gTmVlZCB0byBrZWVwIHRoZSBub2RlcyBpbiBhIGdsb2JhbCBNYXAgc28gdGhhdCBtdWx0aXBsZSBhbmd1bGFyIGFwcHMgYXJlIHN1cHBvcnRlZC5cbnZhciBfbmF0aXZlTm9kZVRvRGVidWdOb2RlID0gbmV3IE1hcDxhbnksIERlYnVnTm9kZT4oKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlYnVnTm9kZShuYXRpdmVOb2RlOiBhbnkpOiBEZWJ1Z05vZGUge1xuICByZXR1cm4gX25hdGl2ZU5vZGVUb0RlYnVnTm9kZS5nZXQobmF0aXZlTm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxEZWJ1Z05vZGVzKCk6IERlYnVnTm9kZVtdIHtcbiAgcmV0dXJuIE1hcFdyYXBwZXIudmFsdWVzKF9uYXRpdmVOb2RlVG9EZWJ1Z05vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhEZWJ1Z05vZGUobm9kZTogRGVidWdOb2RlKSB7XG4gIF9uYXRpdmVOb2RlVG9EZWJ1Z05vZGUuc2V0KG5vZGUubmF0aXZlTm9kZSwgbm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEZWJ1Z05vZGVGcm9tSW5kZXgobm9kZTogRGVidWdOb2RlKSB7XG4gIF9uYXRpdmVOb2RlVG9EZWJ1Z05vZGUuZGVsZXRlKG5vZGUubmF0aXZlTm9kZSk7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var di_1 = require(\"angular2/src/core/di\");\r\nvar lang_1 = require(\"angular2/src/facade/lang\");\r\n/**\r\n * A token that can be provided when bootstraping an application to make an array of directives\r\n * available in every component of the application.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * import {PLATFORM_DIRECTIVES} from 'angular2/core';\r\n * import {OtherDirective} from './myDirectives';\r\n *\r\n * @Component({\r\n * selector: 'my-component',\r\n * template: `\r\n * <!-- can use other directive even though the component does not list it in `directives` -->\r\n * <other-directive></other-directive>\r\n * `\r\n * })\r\n * export class MyComponent {\r\n * ...\r\n * }\r\n *\r\n * bootstrap(MyComponent, [provide(PLATFORM_DIRECTIVES, {useValue: [OtherDirective], multi:true})]);\r\n * ```\r\n */\r\nexports.PLATFORM_DIRECTIVES = lang_1.CONST_EXPR(new di_1.OpaqueToken(\"Platform Directives\"));\r\n/**\r\n * A token that can be provided when bootstraping an application to make an array of pipes\r\n * available in every component of the application.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * import {PLATFORM_PIPES} from 'angular2/core';\r\n * import {OtherPipe} from './myPipe';\r\n *\r\n * @Component({\r\n * selector: 'my-component',\r\n * template: `\r\n * {{123 | other-pipe}}\r\n * `\r\n * })\r\n * export class MyComponent {\r\n * ...\r\n * }\r\n *\r\n * bootstrap(MyComponent, [provide(PLATFORM_PIPES, {useValue: [OtherPipe], multi:true})]);\r\n * ```\r\n */\r\nexports.PLATFORM_PIPES = lang_1.CONST_EXPR(new di_1.OpaqueToken(\"Platform Pipes\"));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm1fZGlyZWN0aXZlc19hbmRfcGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9wbGF0Zm9ybV9kaXJlY3RpdmVzX2FuZF9waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBMEIsc0JBQXNCLENBQUMsQ0FBQTtBQUNqRCxxQkFBeUIsMEJBQTBCLENBQUMsQ0FBQTtBQUVwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDVSwyQkFBbUIsR0FBZ0IsaUJBQVUsQ0FBQyxJQUFJLGdCQUFXLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0FBRW5HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ1Usc0JBQWMsR0FBZ0IsaUJBQVUsQ0FBQyxJQUFJLGdCQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPcGFxdWVUb2tlbn0gZnJvbSBcImFuZ3VsYXIyL3NyYy9jb3JlL2RpXCI7XG5pbXBvcnQge0NPTlNUX0VYUFJ9IGZyb20gXCJhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmdcIjtcblxuLyoqXG4gKiBBIHRva2VuIHRoYXQgY2FuIGJlIHByb3ZpZGVkIHdoZW4gYm9vdHN0cmFwaW5nIGFuIGFwcGxpY2F0aW9uIHRvIG1ha2UgYW4gYXJyYXkgb2YgZGlyZWN0aXZlc1xuICogYXZhaWxhYmxlIGluIGV2ZXJ5IGNvbXBvbmVudCBvZiB0aGUgYXBwbGljYXRpb24uXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQge1BMQVRGT1JNX0RJUkVDVElWRVN9IGZyb20gJ2FuZ3VsYXIyL2NvcmUnO1xuICogaW1wb3J0IHtPdGhlckRpcmVjdGl2ZX0gZnJvbSAnLi9teURpcmVjdGl2ZXMnO1xuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ215LWNvbXBvbmVudCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPCEtLSBjYW4gdXNlIG90aGVyIGRpcmVjdGl2ZSBldmVuIHRob3VnaCB0aGUgY29tcG9uZW50IGRvZXMgbm90IGxpc3QgaXQgaW4gYGRpcmVjdGl2ZXNgIC0tPlxuICogICAgIDxvdGhlci1kaXJlY3RpdmU+PC9vdGhlci1kaXJlY3RpdmU+XG4gKiAgIGBcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge1xuICogICAuLi5cbiAqIH1cbiAqXG4gKiBib290c3RyYXAoTXlDb21wb25lbnQsIFtwcm92aWRlKFBMQVRGT1JNX0RJUkVDVElWRVMsIHt1c2VWYWx1ZTogW090aGVyRGlyZWN0aXZlXSwgbXVsdGk6dHJ1ZX0pXSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX0RJUkVDVElWRVM6IE9wYXF1ZVRva2VuID0gQ09OU1RfRVhQUihuZXcgT3BhcXVlVG9rZW4oXCJQbGF0Zm9ybSBEaXJlY3RpdmVzXCIpKTtcblxuLyoqXG4gKiBBIHRva2VuIHRoYXQgY2FuIGJlIHByb3ZpZGVkIHdoZW4gYm9vdHN0cmFwaW5nIGFuIGFwcGxpY2F0aW9uIHRvIG1ha2UgYW4gYXJyYXkgb2YgcGlwZXNcbiAqIGF2YWlsYWJsZSBpbiBldmVyeSBjb21wb25lbnQgb2YgdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHtQTEFURk9STV9QSVBFU30gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG4gKiBpbXBvcnQge090aGVyUGlwZX0gZnJvbSAnLi9teVBpcGUnO1xuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ215LWNvbXBvbmVudCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAge3sxMjMgfCBvdGhlci1waXBlfX1cbiAqICAgYFxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIC4uLlxuICogfVxuICpcbiAqIGJvb3RzdHJhcChNeUNvbXBvbmVudCwgW3Byb3ZpZGUoUExBVEZPUk1fUElQRVMsIHt1c2VWYWx1ZTogW090aGVyUGlwZV0sIG11bHRpOnRydWV9KV0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBQTEFURk9STV9QSVBFUzogT3BhcXVlVG9rZW4gPSBDT05TVF9FWFBSKG5ldyBPcGFxdWVUb2tlbihcIlBsYXRmb3JtIFBpcGVzXCIpKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar Console = (function () {\r\n function Console() {\r\n }\r\n Console.prototype.log = function (message) { lang_1.print(message); };\r\n Console = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], Console);\r\n return Console;\r\n})();\r\nexports.Console = Console;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2NvbnNvbGUudHMiXSwibmFtZXMiOlsiQ29uc29sZSIsIkNvbnNvbGUuY29uc3RydWN0b3IiLCJDb25zb2xlLmxvZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsbUJBQXlCLHNCQUFzQixDQUFDLENBQUE7QUFDaEQscUJBQW9CLDBCQUEwQixDQUFDLENBQUE7QUFFL0M7SUFBQUE7SUFHQUMsQ0FBQ0E7SUFEQ0QscUJBQUdBLEdBQUhBLFVBQUlBLE9BQWVBLElBQVVFLFlBQUtBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBRmhERjtRQUFDQSxlQUFVQSxFQUFFQTs7Z0JBR1pBO0lBQURBLGNBQUNBO0FBQURBLENBQUNBLEFBSEQsSUFHQztBQUZZLGVBQU8sVUFFbkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtwcmludH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbnNvbGUge1xuICBsb2cobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7IHByaW50KG1lc3NhZ2UpOyB9XG59Il19","/* */ \n\"format cjs\";\n'use strict';/**\r\n * Stores error information; delivered via [NgZone.onError] stream.\r\n */\r\nvar NgZoneError = (function () {\r\n function NgZoneError(error, stackTrace) {\r\n this.error = error;\r\n this.stackTrace = stackTrace;\r\n }\r\n return NgZoneError;\r\n})();\r\nexports.NgZoneError = NgZoneError;\r\nvar NgZoneImpl = (function () {\r\n function NgZoneImpl(_a) {\r\n var _this = this;\r\n var trace = _a.trace, onEnter = _a.onEnter, onLeave = _a.onLeave, setMicrotask = _a.setMicrotask, setMacrotask = _a.setMacrotask, onError = _a.onError;\r\n this.onEnter = onEnter;\r\n this.onLeave = onLeave;\r\n this.setMicrotask = setMicrotask;\r\n this.setMacrotask = setMacrotask;\r\n this.onError = onError;\r\n if (Zone) {\r\n this.outer = this.inner = Zone.current;\r\n if (Zone['wtfZoneSpec']) {\r\n this.inner = this.inner.fork(Zone['wtfZoneSpec']);\r\n }\r\n if (trace && Zone['longStackTraceZoneSpec']) {\r\n this.inner = this.inner.fork(Zone['longStackTraceZoneSpec']);\r\n }\r\n this.inner = this.inner.fork({\r\n name: 'angular',\r\n properties: { 'isAngularZone': true },\r\n onInvokeTask: function (delegate, current, target, task, applyThis, applyArgs) {\r\n try {\r\n _this.onEnter();\r\n return delegate.invokeTask(target, task, applyThis, applyArgs);\r\n }\r\n finally {\r\n _this.onLeave();\r\n }\r\n },\r\n onInvoke: function (delegate, current, target, callback, applyThis, applyArgs, source) {\r\n try {\r\n _this.onEnter();\r\n return delegate.invoke(target, callback, applyThis, applyArgs, source);\r\n }\r\n finally {\r\n _this.onLeave();\r\n }\r\n },\r\n onHasTask: function (delegate, current, target, hasTaskState) {\r\n delegate.hasTask(target, hasTaskState);\r\n if (current == target) {\r\n // We are only interested in hasTask events which originate from our zone\r\n // (A child hasTask event is not interesting to us)\r\n if (hasTaskState.change == 'microTask') {\r\n _this.setMicrotask(hasTaskState.microTask);\r\n }\r\n else if (hasTaskState.change == 'macroTask') {\r\n _this.setMacrotask(hasTaskState.macroTask);\r\n }\r\n }\r\n },\r\n onHandleError: function (delegate, current, target, error) {\r\n delegate.handleError(target, error);\r\n _this.onError(new NgZoneError(error, error.stack));\r\n return false;\r\n }\r\n });\r\n }\r\n else {\r\n throw new Error('Angular2 needs to be run with Zone.js polyfill.');\r\n }\r\n }\r\n NgZoneImpl.isInAngularZone = function () { return Zone.current.get('isAngularZone') === true; };\r\n NgZoneImpl.prototype.runInner = function (fn) { return this.inner.runGuarded(fn); };\r\n ;\r\n NgZoneImpl.prototype.runOuter = function (fn) { return this.outer.run(fn); };\r\n ;\r\n return NgZoneImpl;\r\n})();\r\nexports.NgZoneImpl = NgZoneImpl;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfem9uZV9pbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvem9uZS9uZ196b25lX2ltcGwudHMiXSwibmFtZXMiOlsiTmdab25lRXJyb3IiLCJOZ1pvbmVFcnJvci5jb25zdHJ1Y3RvciIsIk5nWm9uZUltcGwiLCJOZ1pvbmVJbXBsLmNvbnN0cnVjdG9yIiwiTmdab25lSW1wbC5pc0luQW5ndWxhclpvbmUiLCJOZ1pvbmVJbXBsLnJ1bklubmVyIiwiTmdab25lSW1wbC5ydW5PdXRlciJdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSDtJQUNFQSxxQkFBbUJBLEtBQVVBLEVBQVNBLFVBQWVBO1FBQWxDQyxVQUFLQSxHQUFMQSxLQUFLQSxDQUFLQTtRQUFTQSxlQUFVQSxHQUFWQSxVQUFVQSxDQUFLQTtJQUFHQSxDQUFDQTtJQUMzREQsa0JBQUNBO0FBQURBLENBQUNBLEFBRkQsSUFFQztBQUZZLG1CQUFXLGNBRXZCLENBQUE7QUFHRDtJQWNFRSxvQkFBWUEsRUFPWEE7UUFyQkhDLGlCQXdGQ0E7WUExRWNBLEtBQUtBLGFBQUVBLE9BQU9BLGVBQUVBLE9BQU9BLGVBQUVBLFlBQVlBLG9CQUFFQSxZQUFZQSxvQkFBRUEsT0FBT0E7UUFRdkVBLElBQUlBLENBQUNBLE9BQU9BLEdBQUdBLE9BQU9BLENBQUNBO1FBQ3ZCQSxJQUFJQSxDQUFDQSxPQUFPQSxHQUFHQSxPQUFPQSxDQUFDQTtRQUN2QkEsSUFBSUEsQ0FBQ0EsWUFBWUEsR0FBR0EsWUFBWUEsQ0FBQ0E7UUFDakNBLElBQUlBLENBQUNBLFlBQVlBLEdBQUdBLFlBQVlBLENBQUNBO1FBQ2pDQSxJQUFJQSxDQUFDQSxPQUFPQSxHQUFHQSxPQUFPQSxDQUFDQTtRQUV2QkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDVEEsSUFBSUEsQ0FBQ0EsS0FBS0EsR0FBR0EsSUFBSUEsQ0FBQ0EsS0FBS0EsR0FBR0EsSUFBSUEsQ0FB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QUNBO2dCQUVMQSxhQUFhQSxFQUFFQSxVQUFDQSxRQUFzQkEsRUFBRUEsT0FBYUEsRUFBRUEsTUFBWUEsRUFBRUEsS0FBVUE7b0JBRTFEQSxRQUFRQSxDQUFDQSxXQUFXQSxDQUFDQSxNQUFNQSxFQUFFQSxLQUFLQSxDQUFDQSxDQUFDQTtvQkFDcENBLEtBQUlBLENBQUNBLE9BQU9BLENBQUNBLElBQUlBLFdBQVdBLENBQUNBLEtBQUtBLEVBQUVBLEtBQUtBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBO29CQUNsREEsTUFBTUEsQ0FBQ0EsS0FBS0EsQ0FBQ0E7Z0JBQ2ZBLENBQUNBO2FBQ3JCQSxDQUFDQSxDQUFDQTtRQUNMQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUNOQSxNQUFNQSxJQUFJQSxLQUFLQSxDQUFDQSxpREFBaURBLENBQUNBLENBQUNBO1FBQ3JFQSxDQUFDQTtJQUNIQSxDQUFDQTtJQW5GTUQsMEJBQWVBLEdBQXRCQSxjQUFvQ0UsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsZUFBZUEsQ0FBQ0EsS0FBS0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFxRnhGRiw2QkFBUUEsR0FBUkEsVUFBU0EsRUFBYUEsSUFBU0csTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsVUFBVUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7O0lBQ2xFSCw2QkFBUUEsR0FBUkEsVUFBU0EsRUFBYUEsSUFBU0ksTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7O0lBQzdESixpQkFBQ0E7QUFBREEsQ0FBQ0EsQUF4RkQsSUF3RkM7QUF4Rlksa0JBQVUsYUF3RnRCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dsb2JhbH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBTdG9yZXMgZXJyb3IgaW5mb3JtYXRpb247IGRlbGl2ZXJlZCB2aWEgW05nWm9uZS5vbkVycm9yXSBzdHJlYW0uXG4gKi9cbmV4cG9ydCBjbGFzcyBOZ1pvbmVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlcnJvcjogYW55LCBwdWJsaWMgc3RhY2tUcmFjZTogYW55KSB7fVxufVxuXG5cbmV4cG9ydCBjbGFzcyBOZ1pvbmVJbXBsIHtcbiAgc3RhdGljIGlzSW5Bbmd1bGFyWm9uZSgpOiBib29sZWFuIHsgcmV0dXJuIFpvbmUuY3VycmVudC5nZXQoJ2lzQW5ndWxhclpvbmUnKSA9PT0gdHJ1ZTsgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBvdXRlcjogWm9uZTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIGlubmVyOiBab25lO1xuXG4gIHByaXZhdGUgb25FbnRlcjogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvbkxlYXZlOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHNldE1pY3JvdGFzazogKGhhc01pY3JvdGFza3M6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHByaXZhdGUgc2V0TWFjcm90YXNrOiAoaGFzTWFjcm90YXNrczogYm9vbGVhbikgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvbkVycm9yOiAoZXJyb3I6IE5nWm9uZUVycm9yKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHt0cmFjZSwgb25FbnRlciwgb25MZWF2ZSwgc2V0TWljcm90YXNrLCBzZXRNYWNyb3Rhc2ssIG9uRXJyb3J9OiB7XG4gICAgdHJhY2U6IGJvb2xlYW4sXG4gICAgb25FbnRlcjogKCkgPT4gdm9pZCxcbiAgICBvbkxlYXZlOiAoKSA9PiB2b2lkLFxuICAgIHNldE1pY3JvdGFzazogKGhhc01pY3JvdGFza3M6IGJvb2xlYW4pID0+IHZvaWQsXG4gICAgc2V0TWFjcm90YXNrOiAoaGFzTWFjcm90YXNrczogYm9vbGVhbikgPT4gdm9pZCxcbiAgICBvbkVycm9yOiAoZXJyb3I6IE5nWm9uZUVycm9yKSA9PiB2b2lkXG4gIH0pIHtcbiAgICB0aGlzLm9uRW50ZXIgPSBvbkVudGVyO1xuICAgIHRoaXMub25MZWF2ZSA9IG9uTGVhdmU7XG4gICAgdGhpcy5zZXRNaWNyb3Rhc2sgPSBzZXRNaWNyb3Rhc2s7XG4gICAgdGhpcy5zZXRNYWNyb3Rhc2sgPSBzZXRNYWNyb3Rhc2s7XG4gICAgdGhpcy5vbkVycm9yID0gb25FcnJvcjtcblxuICAgIGlmIChab25lKSB7XG4gICAgICB0aGlzLm91dGVyID0gdGhpcy5pbm5lciA9IFpvbmUuY3VycmVudDtcbiAgICAgIGlmIChab25lWyd3dGZab25lU3BlYyddKSB7XG4gICAgICAgIHRoaXMuaW5uZXIgPSB0aGlzLmlubmVyLmZvcmsoWm9uZVsnd3RmWm9uZVNwZWMnXSk7XG4gICAgICB9XG4gICAgICBpZiAodHJhY2UgJiYgWm9uZVsnbG9uZ1N0YWNrVHJhY2Vab25lU3BlYyddKSB7XG4gICAgICAgIHRoaXMuaW5uZXIgPSB0aGlzLmlubmVyLmZvcmsoWm9uZVsnbG9uZ1N0YWNrVHJhY2Vab25lU3BlYyddKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW5uZXIgPSB0aGlzLmlubmVyLmZvcmsoe1xuICAgICAgICBuYW1lOiAnYW5ndWxhcicsXG4gICAgICAgIHByb3BlcnRpZXM6PGFueT57J2lzQW5ndWxhclpvbmUnOiB0cnVlfSxcbiAgICAgICAgb25JbnZva2VUYXNrOiAoZGVsZWdhdGU6IFpvbmVEZWxlZ2F0ZSwgY3VycmVudDogWm9uZSwgdGFyZ2V0OiBab25lLCB0YXNrOiBUYXNrLFxuICAgICAgICAgICAgICAgICAgICAgICBhcHBseVRoaXM6IGFueSwgYXBwbHlBcmdzOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLm9uRW50ZXIoKTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5pbnZva2VUYXNrKHRhcmdldCwgdGFzaywgYXBwbHlUaGlzLCBhcHBseUFyZ3MpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLm9uTGVhdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cblxuICAgICAgICBvbkludm9rZTogKGRlbGVnYXRlOiBab25lRGVsZWdhdGUsIGN1cnJlbnQ6IFpvbmUsIHRhcmdldDogWm9uZSwgY2FsbGJhY2s6IEZ1bmN0aW9uLFxuICAgICAgICAgICAgICAgICAgIGFwcGx5VGhpczogYW55LCBhcHBseUFyZ3M6IGFueVtdLCBzb3VyY2U6IHN0cmluZyk6IGFueSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMub25FbnRlcigpO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmludm9rZSh0YXJnZXQsIGNhbGxiYWNrLCBhcHBseVRoaXMsIGFwcGx5QXJncywgc291cmNlKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5vbkxlYXZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG9uSGFzVGFzazpcbiAgICAgICAgICAgIChkZWxlZ2F0ZTogWm9uZURlbGVnYXRlLCBjdXJyZW50OiBab25lLCB0YXJnZXQ6IFpvbmUsIGhhc1Rhc2tTdGF0ZTogSGFzVGFza1N0YXRlKSA9PiB7XG4gICAgICAgICAgICAgIGRlbGVnYXRlLmhhc1Rhc2sodGFyZ2V0LCBoYXNUYXNrU3RhdGUpO1xuICAgICAgICAgICAgICBpZiAoY3VycmVudCA9PSB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIGhhc1Rhc2sgZXZlbnRzIHdoaWNoIG9yaWdpbmF0ZSBmcm9tIG91ciB6b25lXG4gICAgICAgICAgICAgICAgLy8gKEEgY2hpbGQgaGFzVGFzayBldmVudCBpcyBub3QgaW50ZXJlc3RpbmcgdG8gdXMpXG4gICAgICAgICAgICAgICAgaWYgKGhhc1Rhc2tTdGF0ZS5jaGFuZ2UgPT0gJ21pY3JvVGFzaycpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TWljcm90YXNrKGhhc1Rhc2tTdGF0ZS5taWNyb1Rhc2spO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzVGFza1N0YXRlLmNoYW5nZSA9PSAnbWFjcm9UYXNrJykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRNYWNyb3Rhc2soaGFzVGFza1N0YXRlLm1hY3JvVGFzayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgIG9uSGFuZGxlRXJyb3I6IChkZWxlZ2F0ZTogWm9uZURlbGVnYXRlLCBjdXJyZW50OiBab25lLCB0YXJnZXQ6IFpvbmUsIGVycm9yOiBhbnkpOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlLmhhbmRsZUVycm9yKHRhcmdldCwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IobmV3IE5nWm9uZUVycm9yKGVycm9yLCBlcnJvci5zdGFjaykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBbmd1bGFyMiBuZWVkcyB0byBiZSBydW4gd2l0aCBab25lLmpzIHBvbHlmaWxsLicpO1xuICAgIH1cbiAgfVxuXG4gIHJ1bklubmVyKGZuOiAoKSA9PiBhbnkpOiBhbnkgeyByZXR1cm4gdGhpcy5pbm5lci5ydW5HdWFyZGVkKGZuKTsgfTtcbiAgcnVuT3V0ZXIoZm46ICgpID0+IGFueSk6IGFueSB7IHJldHVybiB0aGlzLm91dGVyLnJ1bihmbik7IH07XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var async_1 = require('angular2/src/facade/async');\r\nvar ng_zone_impl_1 = require('./ng_zone_impl');\r\nvar exceptions_1 = require('../../facade/exceptions');\r\nvar ng_zone_impl_2 = require('./ng_zone_impl');\r\nexports.NgZoneError = ng_zone_impl_2.NgZoneError;\r\n/**\r\n * An injectable service for executing work inside or outside of the Angular zone.\r\n *\r\n * The most common use of this service is to optimize performance when starting a work consisting of\r\n * one or more asynchronous tasks that don't require UI updates or error handling to be handled by\r\n * Angular. Such tasks can be kicked off via {@link #runOutsideAngular} and if needed, these tasks\r\n * can reenter the Angular zone via {@link #run}.\r\n *\r\n * <!-- TODO: add/fix links to:\r\n * - docs explaining zones and the use of zones in Angular and change-detection\r\n * - link to runOutsideAngular/run (throughout this file!)\r\n * -->\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/lY9m8HLy7z06vDoUaSN2?p=preview))\r\n * ```\r\n * import {Component, View, NgZone} from 'angular2/core';\r\n * import {NgIf} from 'angular2/common';\r\n *\r\n * @Component({\r\n * selector: 'ng-zone-demo'.\r\n * template: `\r\n * <h2>Demo: NgZone</h2>\r\n *\r\n * <p>Progress: {{progress}}%</p>\r\n * <p *ngIf=\"progress >= 100\">Done processing {{label}} of Angular zone!</p>\r\n *\r\n * <button (click)=\"processWithinAngularZone()\">Process within Angular zone</button>\r\n * <button (click)=\"processOutsideOfAngularZone()\">Process outside of Angular zone</button>\r\n * `,\r\n * directives: [NgIf]\r\n * })\r\n * export class NgZoneDemo {\r\n * progress: number = 0;\r\n * label: string;\r\n *\r\n * constructor(private _ngZone: NgZone) {}\r\n *\r\n * // Loop inside the Angular zone\r\n * // so the UI DOES refresh after each setTimeout cycle\r\n * processWithinAngularZone() {\r\n * this.label = 'inside';\r\n * this.progress = 0;\r\n * this._increaseProgress(() => console.log('Inside Done!'));\r\n * }\r\n *\r\n * // Loop outside of the Angular zone\r\n * // so the UI DOES NOT refresh after each setTimeout cycle\r\n * processOutsideOfAngularZone() {\r\n * this.label = 'outside';\r\n * this.progress = 0;\r\n * this._ngZone.runOutsideAngular(() => {\r\n * this._increaseProgress(() => {\r\n * // reenter the Angular zone and display done\r\n * this._ngZone.run(() => {console.log('Outside Done!') });\r\n * }}));\r\n * }\r\n *\r\n *\r\n * _increaseProgress(doneCallback: () => void) {\r\n * this.progress += 1;\r\n * console.log(`Current progress: ${this.progress}%`);\r\n *\r\n * if (this.progress < 100) {\r\n * window.setTimeout(() => this._increaseProgress(doneCallback)), 10)\r\n * } else {\r\n * doneCallback();\r\n * }\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar NgZone = (function () {\r\n /**\r\n * @param {bool} enableLongStackTrace whether to enable long stack trace. They should only be\r\n * enabled in development mode as they significantly impact perf.\r\n */\r\n function NgZone(_a) {\r\n var _this = this;\r\n var _b = _a.enableLongStackTrace, enableLongStackTrace = _b === void 0 ? false : _b;\r\n this._hasPendingMicrotasks = false;\r\n this._hasPendingMacrotasks = false;\r\n /** @internal */\r\n this._isStable = true;\r\n /** @internal */\r\n this._nesting = 0;\r\n /** @internal */\r\n this._onUnstable = new async_1.EventEmitter(false);\r\n /** @internal */\r\n this._onMicrotaskEmpty = new async_1.EventEmitter(false);\r\n /** @internal */\r\n this._onStable = new async_1.EventEmitter(false);\r\n /** @internal */\r\n this._onErrorEvents = new async_1.EventEmitter(false);\r\n this._zoneImpl = new ng_zone_impl_1.NgZoneImpl({\r\n trace: enableLongStackTrace,\r\n onEnter: function () {\r\n // console.log('ZONE.enter', this._nesting, this._isStable);\r\n _this._nesting++;\r\n if (_this._isStable) {\r\n _this._isStable = false;\r\n _this._onUnstable.emit(null);\r\n }\r\n },\r\n onLeave: function () {\r\n _this._nesting--;\r\n // console.log('ZONE.leave', this._nesting, this._isStable);\r\n _this._checkStable();\r\n },\r\n setMicrotask: function (hasMicrotasks) {\r\n _this._hasPendingMicrotasks = hasMicrotasks;\r\n _this._checkStable();\r\n },\r\n setMacrotask: function (hasMacrotasks) { _this._hasPendingMacrotasks = hasMacrotasks; },\r\n onError: function (error) { return _this._onErrorEvents.emit(error); }\r\n });\r\n }\r\n NgZone.isInAngularZone = function () { return ng_zone_impl_1.NgZoneImpl.isInAngularZone(); };\r\n NgZone.assertInAngularZone = function () {\r\n if (!ng_zone_impl_1.NgZoneImpl.isInAngularZone()) {\r\n throw new exceptions_1.BaseException('Expected to be in Angular Zone, but it is not!');\r\n }\r\n };\r\n NgZone.assertNotInAngularZone = function () {\r\n if (ng_zone_impl_1.NgZoneImpl.isInAngularZone()) {\r\n throw new exceptions_1.BaseException('Expected to not be in Angular Zone, but it is!');\r\n }\r\n };\r\n NgZone.prototype._checkStable = function () {\r\n var _this = this;\r\n if (this._nesting == 0) {\r\n if (!this._hasPendingMicrotasks && !this._isStable) {\r\n try {\r\n // console.log('ZONE.microtaskEmpty');\r\n this._nesting++;\r\n this._onMicrotaskEmpty.emit(null);\r\n }\r\n finally {\r\n this._nesting--;\r\n if (!this._hasPendingMicrotasks) {\r\n try {\r\n // console.log('ZONE.stable', this._nesting, this._isStable);\r\n this.runOutsideAngular(function () { return _this._onStable.emit(null); });\r\n }\r\n finally {\r\n this._isStable = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n ;\r\n Object.defineProperty(NgZone.prototype, \"onUnstable\", {\r\n /**\r\n * Notifies when code enters Angular Zone. This gets fired first on VM Turn.\r\n */\r\n get: function () { return this._onUnstable; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgZone.prototype, \"onMicrotaskEmpty\", {\r\n /**\r\n * Notifies when there is no more microtasks enqueue in the current VM Turn.\r\n * This is a hint for Angular to do change detection, which may enqueue more microtasks.\r\n * For this reason this event can fire multiple times per VM Turn.\r\n */\r\n get: function () { return this._onMicrotaskEmpty; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgZone.prototype, \"onStable\", {\r\n /**\r\n * Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which\r\n * implies we are about to relinquish VM turn.\r\n * This event gets called just once.\r\n */\r\n get: function () { return this._onStable; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgZone.prototype, \"onError\", {\r\n /**\r\n * Notify that an error has been delivered.\r\n */\r\n get: function () { return this._onErrorEvents; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgZone.prototype, \"hasPendingMicrotasks\", {\r\n /**\r\n * Whether there are any outstanding microtasks.\r\n */\r\n get: function () { return this._hasPendingMicrotasks; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(NgZone.prototype, \"hasPendingMacrotasks\", {\r\n /**\r\n * Whether there are any outstanding microtasks.\r\n */\r\n get: function () { return this._hasPendingMacrotasks; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Executes the `fn` function synchronously within the Angular zone and returns value returned by\r\n * the function.\r\n *\r\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\r\n * outside of the Angular zone (typically started via {@link #runOutsideAngular}).\r\n *\r\n * Any future tasks or microtasks scheduled from within this function will continue executing from\r\n * within the Angular zone.\r\n */\r\n NgZone.prototype.run = function (fn) { return this._zoneImpl.runInner(fn); };\r\n /**\r\n * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by\r\n * the function.\r\n *\r\n * Running functions via `runOutsideAngular` allows you to escape Angular's zone and do work that\r\n * doesn't trigger Angular change-detection or is subject to Angular's error handling.\r\n *\r\n * Any future tasks or microtasks scheduled from within this function will continue executing from\r\n * outside of the Angular zone.\r\n *\r\n * Use {@link #run} to reenter the Angular zone and do work that updates the application model.\r\n */\r\n NgZone.prototype.runOutsideAngular = function (fn) { return this._zoneImpl.runOuter(fn); };\r\n return NgZone;\r\n})();\r\nexports.NgZone = NgZone;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfem9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL3pvbmUvbmdfem9uZS50cyJdLCJuYW1lcyI6WyJOZ1pvbmUiLCJOZ1pvbmUuY29uc3RydWN0b3IiLCJOZ1pvbmUuaXNJbkFuZ3VsYXJab25lIiwiTmdab25lLmFzc2VydEluQW5ndWxhclpvbmUiLCJOZ1pvbmUuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSIsIk5nWm9uZS5fY2hlY2tTdGFibGUiLCJOZ1pvbmUub25VbnN0YWJsZSIsIk5nWm9uZS5vbk1pY3JvdGFza0VtcHR5IiwiTmdab25lLm9uU3RhYmxlIiwiTmdab25lLm9uRXJyb3IiLCJOZ1pvbmUuaGFzUGVuZGluZ01pY3JvdGFza3MiLCJOZ1pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3MiLCJOZ1pvbmUucnVuIiwiTmdab25lLnJ1bk91dHNpZGVBbmd1bGFyIl0sIm1hcHBpbmdzIjoiQUFBQSxzQkFBMkIsMkJBQTJCLENBQUMsQ0FBQTtBQUN2RCw2QkFBc0MsZ0JBQWdCLENBQUMsQ0FBQTtBQUN2RCwyQkFBNEIseUJBQXlCLENBQUMsQ0FBQTtBQUN0RCw2QkFBMEIsZ0JBQWdCLENBQUM7QUFBbkMsaURBQW1DO0FBRzNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0VHO0FBQ0g7SUErQkVBOzs7T0FHR0E7SUFDSEEsZ0JBQVlBLEVBQThCQTtRQW5DNUNDLGlCQTZJQ0E7MENBMUdjQSxvQkFBb0JBLG1CQUFHQSxLQUFLQTtRQXBCakNBLDBCQUFxQkEsR0FBWUEsS0FBS0EsQ0FBQ0E7UUFDdkNBLDBCQUFxQkEsR0FBWUEsS0FBS0EsQ0FBQ0E7UUFFL0NBLGdCQUFnQkE7UUFDUkEsY0FBU0EsR0FBR0EsSUFBSUEsQ0FBQ0E7UUFDekJBLGdCQUFnQkE7UUFDUkEsYUFBUUEsR0FBR0EsQ0FBQ0EsQ0FBQ0E7UUFDckJBLGdCQUFn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QUNBOzs7T0FBQVQ7SUFLaEVBLHNCQUFJQSx3Q0FBb0JBO1FBSHhCQTs7V0FFR0E7YUFDSEEsY0FBc0NVLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLHFCQUFxQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBVjtJQUsxRUEsc0JBQUlBLHdDQUFvQkE7UUFIeEJBOztXQUVHQTthQUNIQSxjQUFzQ1csTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EscUJBQXFCQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFYO0lBRTFFQTs7Ozs7Ozs7O09BU0dBO0lBQ0hBLG9CQUFHQSxHQUFIQSxVQUFJQSxFQUFhQSxJQUFTWSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxRQUFRQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUUvRFo7Ozs7Ozs7Ozs7O09BV0dBO0lBQ0hBLGtDQUFpQkEsR0FBakJBLFVBQWtCQSxFQUFhQSxJQUFTYSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxRQUFRQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUMvRWIsYUFBQ0E7QUFBREEsQ0FBQ0EsQUE3SUQsSUE2SUM7QUE3SVksY0FBTSxTQTZJbEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcbmltcG9ydCB7Tmdab25lSW1wbCwgTmdab25lRXJyb3J9IGZyb20gJy4vbmdfem9uZV9pbXBsJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnLi4vLi4vZmFjYWRlL2V4Y2VwdGlvbnMnO1xuZXhwb3J0IHtOZ1pvbmVFcnJvcn0gZnJvbSAnLi9uZ196b25lX2ltcGwnO1xuXG5cbi8qKlxuICogQW4gaW5qZWN0YWJsZSBzZXJ2aWNlIGZvciBleGVjdXRpbmcgd29yayBpbnNpZGUgb3Igb3V0c2lkZSBvZiB0aGUgQW5ndWxhciB6b25lLlxuICpcbiAqIFRoZSBtb3N0IGNvbW1vbiB1c2Ugb2YgdGhpcyBzZXJ2aWNlIGlzIHRvIG9wdGltaXplIHBlcmZvcm1hbmNlIHdoZW4gc3RhcnRpbmcgYSB3b3JrIGNvbnNpc3Rpbmcgb2ZcbiAqIG9uZSBvciBtb3JlIGFzeW5jaHJvbm91cyB0YXNrcyB0aGF0IGRvbid0IHJlcXVpcmUgVUkgdXBkYXRlcyBvciBlcnJvciBoYW5kbGluZyB0byBiZSBoYW5kbGVkIGJ5XG4gKiBBbmd1bGFyLiBTdWNoIHRhc2tzIGNhbiBiZSBraWNrZWQgb2ZmIHZpYSB7QGxpbmsgI3J1bk91dHNpZGVBbmd1bGFyfSBhbmQgaWYgbmVlZGVkLCB0aGVzZSB0YXNrc1xuICogY2FuIHJlZW50ZXIgdGhlIEFuZ3VsYXIgem9uZSB2aWEge0BsaW5rICNydW59LlxuICpcbiAqIDwhLS0gVE9ETzogYWRkL2ZpeCBsaW5rcyB0bzpcbiAqICAgLSBkb2NzIGV4cGxhaW5pbmcgem9uZXMgYW5kIHRoZSB1c2Ugb2Ygem9uZXMgaW4gQW5ndWxhciBhbmQgY2hhbmdlLWRldGVjdGlvblxuICogICAtIGxpbmsgdG8gcnVuT3V0c2lkZUFuZ3VsYXIvcnVuICh0aHJvdWdob3V0IHRoaXMgZmlsZSEpXG4gKiAgIC0tPlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9sWTltOEhMeTd6MDZ2RG9VYVNOMj9wPXByZXZpZXcpKVxuICogYGBgXG4gKiBpbXBvcnQge0NvbXBvbmVudCwgVmlldywgTmdab25lfSBmcm9tICdhbmd1bGFyMi9jb3JlJztcbiAqIGltcG9ydCB7TmdJZn0gZnJvbSAnYW5ndWxhcjIvY29tbW9uJztcbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICduZy16b25lLWRlbW8nLlxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxoMj5EZW1vOiBOZ1pvbmU8L2gyPlxuICpcbiAqICAgICA8cD5Qcm9ncmVzczoge3twcm9ncmVzc319JTwvcD5cbiAqICAgICA8cCAqbmdJZj1cInByb2dyZXNzID49IDEwMFwiPkRvbmUgcHJvY2Vzc2luZyB7e2xhYmVsfX0gb2YgQW5ndWxhciB6b25lITwvcD5cbiAqXG4gKiAgICAgPGJ1dHRvbiAoY2xpY2spPVwicHJvY2Vzc1dpdGhpbkFuZ3VsYXJab25lKClcIj5Qcm9jZXNzIHdpdGhpbiBBbmd1bGFyIHpvbmU8L2J1dHRvbj5cbiAqICAgICA8YnV0dG9uIChjbGljayk9XCJwcm9jZXNzT3V0c2lkZU9mQW5ndWxhclpvbmUoKVwiPlByb2Nlc3Mgb3V0c2lkZSBvZiBBbmd1bGFyIHpvbmU8L2J1dHRvbj5cbiAqICAgYCxcbiAqICAgZGlyZWN0aXZlczogW05nSWZdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIE5nWm9uZURlbW8ge1xuICogICBwcm9ncmVzczogbnVtYmVyID0gMDtcbiAqICAgbGFiZWw6IHN0cmluZztcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX25nWm9uZTogTmdab25lKSB7fVxuICpcbiAqICAgLy8gTG9vcCBpbnNpZGUgdGhlIEFuZ3VsYXIgem9uZVxuICogICAvLyBzbyB0aGUgVUkgRE9FUyByZWZyZXNoIGFmdGVyIGVhY2ggc2V0VGltZW91dCBjeWNsZVxuICogICBwcm9jZXNzV2l0aGluQW5ndWxhclpvbmUoKSB7XG4gKiAgICAgdGhpcy5sYWJlbCA9ICdpbnNpZGUnO1xuICogICAgIHRoaXMucHJvZ3Jlc3MgPSAwO1xuICogICAgIHRoaXMuX2luY3JlYXNlUHJvZ3Jlc3MoKCkgPT4gY29uc29sZS5sb2coJ0luc2lkZSBEb25lIScpKTtcbiAqICAgfVxuICpcbiAqICAgLy8gTG9vcCBvdXRzaWRlIG9mIHRoZSBBbmd1bGFyIHpvbmVcbiAqICAgLy8gc28gdGhlIFVJIERPRVMgTk9UIHJlZnJlc2ggYWZ0ZXIgZWFjaCBzZXRUaW1lb3V0IGN5Y2xlXG4gKiAgIHByb2Nlc3NPdXRzaWRlT2ZBbmd1bGFyWm9uZSgpIHtcbiAqICAgICB0aGlzLmxhYmVsID0gJ291dHNpZGUnO1xuICogICAgIHRoaXMucHJvZ3Jlc3MgPSAwO1xuICogICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gKiAgICAgICB0aGlzLl9pbmNyZWFzZVByb2dyZXNzKCgpID0+IHtcbiAqICAgICAgIC8vIHJlZW50ZXIgdGhlIEFuZ3VsYXIgem9uZSBhbmQgZGlzcGxheSBkb25lXG4gKiAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtjb25zb2xlLmxvZygnT3V0c2lkZSBEb25lIScpIH0pO1xuICogICAgIH19KSk7XG4gKiAgIH1cbiAqXG4gKlxuICogICBfaW5jcmVhc2VQcm9ncmVzcyhkb25lQ2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAqICAgICB0aGlzLnByb2dyZXNzICs9IDE7XG4gKiAgICAgY29uc29sZS5sb2coYEN1cnJlbnQgcHJvZ3Jlc3M6ICR7dGhpcy5wcm9ncmVzc30lYCk7XG4gKlxuICogICAgIGlmICh0aGlzLnByb2dyZXNzIDwgMTAwKSB7XG4gKiAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLl9pbmNyZWFzZVByb2dyZXNzKGRvbmVDYWxsYmFjaykpLCAxMClcbiAqICAgICB9IGVsc2Uge1xuICogICAgICAgZG9uZUNhbGxiYWNrKCk7XG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIE5nWm9uZSB7XG4gIHN0YXRpYyBpc0luQW5ndWxhclpvbmUoKTogYm9vbGVhbiB7IHJldHVybiBOZ1pvbmVJbXBsLmlzSW5Bbmd1bGFyWm9uZSgpOyB9XG4gIHN0YXRpYyBhc3NlcnRJbkFuZ3VsYXJab25lKCk6IHZvaWQge1xuICAgIGlmICghTmdab25lSW1wbC5pc0luQW5ndWxhclpvbmUoKSkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ0V4cGVjdGVkIHRvIGJlIGluIEFuZ3VsYXIgWm9uZSwgYnV0IGl0IGlzIG5vdCEnKTtcbiAgICB9XG4gIH1cbiAgc3RhdGljIGFzc2VydE5vdEluQW5ndWxhclpvbmUoKTogdm9pZCB7XG4gICAgaWYgKE5nWm9uZUltcGwuaXNJbkFuZ3VsYXJab25lKCkpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKCdFeHBlY3RlZCB0byBub3QgYmUgaW4gQW5ndWxhciBab25lLCBidXQgaXQgaXMhJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfem9uZUltcGw6IE5nWm9uZUltcGw7XG5cbiAgcHJpdmF0ZSBfaGFzUGVuZGluZ01pY3JvdGFza3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaGFzUGVuZGluZ01hY3JvdGFza3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgX2lzU3RhYmxlID0gdHJ1ZTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9uZXN0aW5nID0gMDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9vblVuc3RhYmxlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoZmFsc2UpO1xuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgX29uTWljcm90YXNrRW1wdHk6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcihmYWxzZSk7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBfb25TdGFibGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcihmYWxzZSk7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBfb25FcnJvckV2ZW50czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKGZhbHNlKTtcblxuICAvKipcbiAgICogQHBhcmFtIHtib29sfSBlbmFibGVMb25nU3RhY2tUcmFjZSB3aGV0aGVyIHRvIGVuYWJsZSBsb25nIHN0YWNrIHRyYWNlLiBUaGV5IHNob3VsZCBvbmx5IGJlXG4gICAqICAgICAgICAgICAgICAgZW5hYmxlZCBpbiBkZXZlbG9wbWVudCBtb2RlIGFzIHRoZXkgc2lnbmlmaWNhbnRseSBpbXBhY3QgcGVyZi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtlbmFibGVMb25nU3RhY2tUcmFjZSA9IGZhbHNlfSkge1xuICAgIHRoaXMuX3pvbmVJbXBsID0gbmV3IE5nWm9uZUltcGwoe1xuICAgICAgdHJhY2U6IGVuYWJsZUxvbmdTdGFja1RyYWNlLFxuICAgICAgb25FbnRlcjogKCkgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnWk9ORS5lbnRlcicsIHRoaXMuX25lc3RpbmcsIHRoaXMuX2lzU3RhYmxlKTtcbiAgICAgICAgdGhpcy5fbmVzdGluZysrO1xuICAgICAgICBpZiAodGhpcy5faXNTdGFibGUpIHtcbiAgICAgICAgICB0aGlzLl9pc1N0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX29uVW5zdGFibGUuZW1pdChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9uTGVhdmU6ICgpID0+IHtcbiAgICAgICAgdGhpcy5fbmVzdGluZy0tO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnWk9ORS5sZWF2ZScsIHRoaXMuX25lc3RpbmcsIHRoaXMuX2lzU3RhYmxlKTtcbiAgICAgICAgdGhpcy5fY2hlY2tTdGFibGUoKTtcbiAgICAgIH0sXG4gICAgICBzZXRNaWNyb3Rhc2s6IChoYXNNaWNyb3Rhc2tzOiBib29sZWFuKSA9PiB7XG4gICAgICAgIHRoaXMuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzID0gaGFzTWljcm90YXNrcztcbiAgICAgICAgdGhpcy5fY2hlY2tTdGFibGUoKTtcbiAgICAgIH0sXG4gICAgICBzZXRNYWNyb3Rhc2s6IChoYXNNYWNyb3Rhc2tzOiBib29sZWFuKSA9PiB7IHRoaXMuX2hhc1BlbmRpbmdNYWNyb3Rhc2tzID0gaGFzTWFjcm90YXNrczsgfSxcbiAgICAgIG9uRXJyb3I6IChlcnJvcjogTmdab25lRXJyb3IpID0+IHRoaXMuX29uRXJyb3JFdmVudHMuZW1pdChlcnJvcilcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrU3RhYmxlKCkge1xuICAgIGlmICh0aGlzLl9uZXN0aW5nID09IDApIHtcbiAgICAgIGlmICghdGhpcy5faGFzUGVuZGluZ01pY3JvdGFza3MgJiYgIXRoaXMuX2lzU3RhYmxlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ1pPTkUubWljcm90YXNrRW1wdHknKTtcbiAgICAgICAgICB0aGlzLl9uZXN0aW5nKys7XG4gICAgICAgICAgdGhpcy5fb25NaWNyb3Rhc2tFbXB0eS5lbWl0KG51bGwpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRoaXMuX25lc3RpbmctLTtcbiAgICAgICAgICBpZiAoIXRoaXMuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnWk9ORS5zdGFibGUnLCB0aGlzLl9uZXN0aW5nLCB0aGlzLl9pc1N0YWJsZSk7XG4gICAgICAgICAgICAgIHRoaXMucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5fb25TdGFibGUuZW1pdChudWxsKSk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICB0aGlzLl9pc1N0YWJsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBOb3RpZmllcyB3aGVuIGNvZGUgZW50ZXJzIEFuZ3VsYXIgWm9uZS4gVGhpcyBnZXRzIGZpcmVkIGZpcnN0IG9uIFZNIFR1cm4uXG4gICAqL1xuICBnZXQgb25VbnN0YWJsZSgpOiBFdmVudEVtaXR0ZXI8YW55PiB7IHJldHVybiB0aGlzLl9vblVuc3RhYmxlOyB9XG5cbiAgLyoqXG4gICAqIE5vdGlmaWVzIHdoZW4gdGhlcmUgaXMgbm8gbW9yZSBtaWNyb3Rhc2tzIGVucXVldWUgaW4gdGhlIGN1cnJlbnQgVk0gVHVybi5cbiAgICogVGhpcyBpcyBhIGhpbnQgZm9yIEFuZ3VsYXIgdG8gZG8gY2hhbmdlIGRldGVjdGlvbiwgd2hpY2ggbWF5IGVucXVldWUgbW9yZSBtaWNyb3Rhc2tzLlxuICAgKiBGb3IgdGhpcyByZWFzb24gdGhpcyBldmVudCBjYW4gZmlyZSBtdWx0aXBsZSB0aW1lcyBwZXIgVk0gVHVybi5cbiAgICovXG4gIGdldCBvbk1pY3JvdGFza0VtcHR5KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHsgcmV0dXJuIHRoaXMuX29uTWljcm90YXNrRW1wdHk7IH1cblxuICAvKipcbiAgICogTm90aWZpZXMgd2hlbiB0aGUgbGFzdCBgb25NaWNyb3Rhc2tFbXB0eWAgaGFzIHJ1biBhbmQgdGhlcmUgYXJlIG5vIG1vcmUgbWljcm90YXNrcywgd2hpY2hcbiAgICogaW1wbGllcyB3ZSBhcmUgYWJvdXQgdG8gcmVsaW5xdWlzaCBWTSB0dXJuLlxuICAgKiBUaGlzIGV2ZW50IGdldHMgY2FsbGVkIGp1c3Qgb25jZS5cbiAgICovXG4gIGdldCBvblN0YWJsZSgpOiBFdmVudEVtaXR0ZXI8YW55PiB7IHJldHVybiB0aGlzLl9vblN0YWJsZTsgfVxuXG4gIC8qKlxuICAgKiBOb3RpZnkgdGhhdCBhbiBlcnJvciBoYXMgYmVlbiBkZWxpdmVyZWQuXG4gICAqL1xuICBnZXQgb25FcnJvcigpOiBFdmVudEVtaXR0ZXI8YW55PiB7IHJldHVybiB0aGlzLl9vbkVycm9yRXZlbnRzOyB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlcmUgYXJlIGFueSBvdXRzdGFuZGluZyBtaWNyb3Rhc2tzLlxuICAgKi9cbiAgZ2V0IGhhc1BlbmRpbmdNaWNyb3Rhc2tzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faGFzUGVuZGluZ01pY3JvdGFza3M7IH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGVyZSBhcmUgYW55IG91dHN0YW5kaW5nIG1pY3JvdGFza3MuXG4gICAqL1xuICBnZXQgaGFzUGVuZGluZ01hY3JvdGFza3MoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9oYXNQZW5kaW5nTWFjcm90YXNrczsgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgYGZuYCBmdW5jdGlvbiBzeW5jaHJvbm91c2x5IHdpdGhpbiB0aGUgQW5ndWxhciB6b25lIGFuZCByZXR1cm5zIHZhbHVlIHJldHVybmVkIGJ5XG4gICAqIHRoZSBmdW5jdGlvbi5cbiAgICpcbiAgICogUnVubmluZyBmdW5jdGlvbnMgdmlhIGBydW5gIGFsbG93cyB5b3UgdG8gcmVlbnRlciBBbmd1bGFyIHpvbmUgZnJvbSBhIHRhc2sgdGhhdCB3YXMgZXhlY3V0ZWRcbiAgICogb3V0c2lkZSBvZiB0aGUgQW5ndWxhciB6b25lICh0eXBpY2FsbHkgc3RhcnRlZCB2aWEge0BsaW5rICNydW5PdXRzaWRlQW5ndWxhcn0pLlxuICAgKlxuICAgKiBBbnkgZnV0dXJlIHRhc2tzIG9yIG1pY3JvdGFza3Mgc2NoZWR1bGVkIGZyb20gd2l0aGluIHRoaXMgZnVuY3Rpb24gd2lsbCBjb250aW51ZSBleGVjdXRpbmcgZnJvbVxuICAgKiB3aXRoaW4gdGhlIEFuZ3VsYXIgem9uZS5cbiAgICovXG4gIHJ1bihmbjogKCkgPT4gYW55KTogYW55IHsgcmV0dXJuIHRoaXMuX3pvbmVJbXBsLnJ1bklubmVyKGZuKTsgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgYGZuYCBmdW5jdGlvbiBzeW5jaHJvbm91c2x5IGluIEFuZ3VsYXIncyBwYXJlbnQgem9uZSBhbmQgcmV0dXJucyB2YWx1ZSByZXR1cm5lZCBieVxuICAgKiB0aGUgZnVuY3Rpb24uXG4gICAqXG4gICAqIFJ1bm5pbmcgZnVuY3Rpb25zIHZpYSBgcnVuT3V0c2lkZUFuZ3VsYXJgIGFsbG93cyB5b3UgdG8gZXNjYXBlIEFuZ3VsYXIncyB6b25lIGFuZCBkbyB3b3JrIHRoYXRcbiAgICogZG9lc24ndCB0cmlnZ2VyIEFuZ3VsYXIgY2hhbmdlLWRldGVjdGlvbiBvciBpcyBzdWJqZWN0IHRvIEFuZ3VsYXIncyBlcnJvciBoYW5kbGluZy5cbiAgICpcbiAgICogQW55IGZ1dHVyZSB0YXNrcyBvciBtaWNyb3Rhc2tzIHNjaGVkdWxlZCBmcm9tIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udGludWUgZXhlY3V0aW5nIGZyb21cbiAgICogb3V0c2lkZSBvZiB0aGUgQW5ndWxhciB6b25lLlxuICAgKlxuICAgKiBVc2Uge0BsaW5rICNydW59IHRvIHJlZW50ZXIgdGhlIEFuZ3VsYXIgem9uZSBhbmQgZG8gd29yayB0aGF0IHVwZGF0ZXMgdGhlIGFwcGxpY2F0aW9uIG1vZGVsLlxuICAgKi9cbiAgcnVuT3V0c2lkZUFuZ3VsYXIoZm46ICgpID0+IGFueSk6IGFueSB7IHJldHVybiB0aGlzLl96b25lSW1wbC5ydW5PdXRlcihmbik7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar ng_zone_1 = require('../zone/ng_zone');\r\nvar async_1 = require('angular2/src/facade/async');\r\n/**\r\n * The Testability service provides testing hooks that can be accessed from\r\n * the browser and by services such as Protractor. Each bootstrapped Angular\r\n * application on the page will have an instance of Testability.\r\n */\r\nvar Testability = (function () {\r\n function Testability(_ngZone) {\r\n this._ngZone = _ngZone;\r\n /** @internal */\r\n this._pendingCount = 0;\r\n this._isZoneStable = true;\r\n /**\r\n * Whether any work was done since the last 'whenStable' callback. This is\r\n * useful to detect if this could have potentially destabilized another\r\n * component while it is stabilizing.\r\n * @internal\r\n */\r\n this._didWork = false;\r\n /** @internal */\r\n this._callbacks = [];\r\n this._watchAngularEvents();\r\n }\r\n /** @internal */\r\n Testability.prototype._watchAngularEvents = function () {\r\n var _this = this;\r\n async_1.ObservableWrapper.subscribe(this._ngZone.onUnstable, function (_) {\r\n _this._didWork = true;\r\n _this._isZoneStable = false;\r\n });\r\n this._ngZone.runOutsideAngular(function () {\r\n async_1.ObservableWrapper.subscribe(_this._ngZone.onStable, function (_) {\r\n ng_zone_1.NgZone.assertNotInAngularZone();\r\n lang_1.scheduleMicroTask(function () {\r\n _this._isZoneStable = true;\r\n _this._runCallbacksIfReady();\r\n });\r\n });\r\n });\r\n };\r\n Testability.prototype.increasePendingRequestCount = function () {\r\n this._pendingCount += 1;\r\n this._didWork = true;\r\n return this._pendingCount;\r\n };\r\n Testability.prototype.decreasePendingRequestCount = function () {\r\n this._pendingCount -= 1;\r\n if (this._pendingCount < 0) {\r\n throw new exceptions_1.BaseException('pending async requests below zero');\r\n }\r\n this._runCallbacksIfReady();\r\n return this._pendingCount;\r\n };\r\n Testability.prototype.isStable = function () {\r\n return this._isZoneStable && this._pendingCount == 0 && !this._ngZone.hasPendingMacrotasks;\r\n };\r\n /** @internal */\r\n Testability.prototype._runCallbacksIfReady = function () {\r\n var _this = this;\r\n if (this.isStable()) {\r\n // Schedules the call backs in a new frame so that it is always async.\r\n lang_1.scheduleMicroTask(function () {\r\n while (_this._callbacks.length !== 0) {\r\n (_this._callbacks.pop())(_this._didWork);\r\n }\r\n _this._didWork = false;\r\n });\r\n }\r\n else {\r\n // Not Ready\r\n this._didWork = true;\r\n }\r\n };\r\n Testability.prototype.whenStable = function (callback) {\r\n this._callbacks.push(callback);\r\n this._runCallbacksIfReady();\r\n };\r\n Testability.prototype.getPendingRequestCount = function () { return this._pendingCount; };\r\n Testability.prototype.findBindings = function (using, provider, exactMatch) {\r\n // TODO(juliemr): implement.\r\n return [];\r\n };\r\n Testability.prototype.findProviders = function (using, provider, exactMatch) {\r\n // TODO(juliemr): implement.\r\n return [];\r\n };\r\n Testability = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [ng_zone_1.NgZone])\r\n ], Testability);\r\n return Testability;\r\n})();\r\nexports.Testability = Testability;\r\n/**\r\n * A global registry of {@link Testability} instances for specific elements.\r\n */\r\nvar TestabilityRegistry = (function () {\r\n function TestabilityRegistry() {\r\n /** @internal */\r\n this._applications = new collection_1.Map();\r\n _testabilityGetter.addToWindow(this);\r\n }\r\n TestabilityRegistry.prototype.registerApplication = function (token, testability) {\r\n this._applications.set(token, testability);\r\n };\r\n TestabilityRegistry.prototype.getTestability = function (elem) { return this._applications.get(elem); };\r\n TestabilityRegistry.prototype.getAllTestabilities = function () { return collection_1.MapWrapper.values(this._applications); };\r\n TestabilityRegistry.prototype.getAllRootElements = function () { return collection_1.MapWrapper.keys(this._applications); };\r\n TestabilityRegistry.prototype.findTestabilityInTree = function (elem, findInAncestors) {\r\n if (findInAncestors === void 0) { findInAncestors = true; }\r\n return _testabilityGetter.findTestabilityInTree(this, elem, findInAncestors);\r\n };\r\n TestabilityRegistry = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], TestabilityRegistry);\r\n return TestabilityRegistry;\r\n})();\r\nexports.TestabilityRegistry = TestabilityRegistry;\r\nvar _NoopGetTestability = (function () {\r\n function _NoopGetTestability() {\r\n }\r\n _NoopGetTestability.prototype.addToWindow = function (registry) { };\r\n _NoopGetTestability.prototype.findTestabilityInTree = function (registry, elem, findInAncestors) {\r\n return null;\r\n };\r\n _NoopGetTestability = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], _NoopGetTestability);\r\n return _NoopGetTestability;\r\n})();\r\n/**\r\n * Set the {@link GetTestability} implementation used by the Angular testing framework.\r\n */\r\nfunction setTestabilityGetter(getter) {\r\n _testabilityGetter = getter;\r\n}\r\nexports.setTestabilityGetter = setTestabilityGetter;\r\nvar _testabilityGetter = lang_1.CONST_EXPR(new _NoopGetTestability());\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGFiaWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS90ZXN0YWJpbGl0eS90ZXN0YWJpbGl0eS50cyJdLCJuYW1lcyI6WyJUZXN0YWJpbGl0eSIsIlRlc3RhYmlsaXR5LmNvbnN0cnVjdG9yIiwiVGVzdGFiaWxpdHkuX3dhdGNoQW5ndWxhckV2ZW50cyIsIlRlc3RhYmlsaXR5LmluY3JlYXNlUGVuZGluZ1JlcXVlc3RDb3VudCIsIlRlc3RhYmlsaXR5LmRlY3JlYXNlUGVuZGluZ1JlcXVlc3RDb3VudCIsIlRlc3RhYmlsaXR5LmlzU3RhYmxlIiwiVGVzdGFiaWxpdHkuX3J1bkNhbGxiYWNrc0lmUmVhZHkiLCJUZXN0YWJpbGl0eS53aGVuU3RhYmxlIiwiVGVzdGFiaWxpdHkuZ2V0UGVuZGluZ1JlcXVlc3RDb3VudCIsIlRlc3RhYmlsaXR5LmZpbmRCaW5kaW5ncyIsIlRlc3RhYmlsaXR5LmZpbmRQcm92aWRlcnMiLCJUZXN0YWJpbGl0eVJlZ2lzdHJ5IiwiVGVzdGFiaWxpdHlSZWdpc3RyeS5jb25zdHJ1Y3RvciIsIlRlc3RhYmlsaXR5UmVnaXN0cnkucmVnaXN0ZXJBcHBsaWNhdGlvbiIsIlRlc3RhYmlsaXR5UmVnaXN0cnkuZ2V0VGVzdGFiaWxpdHkiLCJUZXN0YWJpbGl0eVJlZ2lzdHJ5LmdldEFsbFRlc3RhYmlsaXRpZXMiLCJUZXN0YWJpbGl0eVJlZ2lzdHJ5LmdldEFsbFJvb3RFbGVtZW50cyIsIlRlc3RhYmlsaXR5UmVnaXN0cnkuZmluZFRlc3RhYmlsaXR5SW5UcmVlIiwiX05vb3BHZXRUZXN0YWJpbGl0eSIsIl9Ob29wR2V0VGVzdGFiaWxpdHkuY29uc3RydWN0b3IiLCJfTm9vcEdldFRlc3RhYmlsaXR5LmFkZFRvV2luZG93IiwiX05vb3BHZXRUZXN0YWJpbGl0eS5maW5kVGVzdGFiaWxpdHlJblRyZWUiLCJzZXRUZXN0YWJpbGl0eUdldHRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEs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QUFtQixzQkFtQi9CLENBQUE7QUFZRDtJQUFBTztJQU9BQyxDQUFDQTtJQUxDRCx5Q0FBV0EsR0FBWEEsVUFBWUEsUUFBNkJBLElBQVNFLENBQUNBO0lBQ25ERixtREFBcUJBLEdBQXJCQSxVQUFzQkEsUUFBNkJBLEVBQUVBLElBQVNBLEVBQ3hDQSxlQUF3QkE7UUFDNUNHLE1BQU1BLENBQUNBLElBQUlBLENBQUNBO0lBQ2RBLENBQUNBO0lBTkhIO1FBQUNBLFlBQUtBLEVBQUVBOzs0QkFPUEE7SUFBREEsMEJBQUNBO0FBQURBLENBQUNBLEFBUEQsSUFPQztBQUVEOztHQUVHO0FBQ0gsOEJBQXFDLE1BQXNCO0lBQ3pESSxrQkFBa0JBLEdBQUdBLE1BQU1BLENBQUNBO0FBQzlCQSxDQUFDQTtBQUZlLDRCQUFvQix1QkFFbkMsQ0FBQTtBQUVELElBQUksa0JBQWtCLEdBQW1CLGlCQUFVLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7TWFwLCBNYXBXcmFwcGVyLCBMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7Q09OU1QsIENPTlNUX0VYUFIsIHNjaGVkdWxlTWljcm9UYXNrfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtOZ1pvbmV9IGZyb20gJy4uL3pvbmUvbmdfem9uZSc7XG5pbXBvcnQge09ic2VydmFibGVXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcblxuXG4vKipcbiAqIFRoZSBUZXN0YWJpbGl0eSBzZXJ2aWNlIHByb3ZpZGVzIHRlc3RpbmcgaG9va3MgdGhhdCBjYW4gYmUgYWNjZXNzZWQgZnJvbVxuICogdGhlIGJyb3dzZXIgYW5kIGJ5IHNlcnZpY2VzIHN1Y2ggYXMgUHJvdHJhY3Rvci4gRWFjaCBib290c3RyYXBwZWQgQW5ndWxhclxuICogYXBwbGljYXRpb24gb24gdGhlIHBhZ2Ugd2lsbCBoYXZlIGFuIGluc3RhbmNlIG9mIFRlc3RhYmlsaXR5LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGVzdGFiaWxpdHkge1xuICAvKiogQGludGVybmFsICovXG4gIF9wZW5kaW5nQ291bnQ6IG51bWJlciA9IDA7XG4gIF9pc1pvbmVTdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICAvKipcbiAgICogV2hldGhlciBhbnkgd29yayB3YXMgZG9uZSBzaW5jZSB0aGUgbGFzdCAnd2hlblN0YWJsZScgY2FsbGJhY2suIFRoaXMgaXNcbiAgICogdXNlZnVsIHRvIGRldGVjdCBpZiB0aGlzIGNvdWxkIGhhdmUgcG90ZW50aWFsbHkgZGVzdGFiaWxpemVkIGFub3RoZXJcbiAgICogY29tcG9uZW50IHdoaWxlIGl0IGlzIHN0YWJpbGl6aW5nLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9kaWRXb3JrOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2NhbGxiYWNrczogRnVuY3Rpb25bXSA9IFtdO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSkgeyB0aGlzLl93YXRjaEFuZ3VsYXJFdmVudHMoKTsgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3dhdGNoQW5ndWxhckV2ZW50cygpOiB2b2lkIHtcbiAgICBPYnNlcnZhYmxlV3JhcHBlci5zdWJzY3JpYmUodGhpcy5fbmdab25lLm9uVW5zdGFibGUsIChfKSA9PiB7XG4gICAgICB0aGlzLl9kaWRXb3JrID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2lzWm9uZVN0YWJsZSA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIE9ic2VydmFibGVXcmFwcGVyLnN1YnNjcmliZSh0aGlzLl9uZ1pvbmUub25TdGFibGUsIChfKSA9PiB7XG4gICAgICAgIE5nWm9uZS5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCk7XG4gICAgICAgIHNjaGVkdWxlTWljcm9UYXNrKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9pc1pvbmVTdGFibGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGluY3JlYXNlUGVuZGluZ1JlcXVlc3RDb3VudCgpOiBudW1iZXIge1xuICAgIHRoaXMuX3BlbmRpbmdDb3VudCArPSAxO1xuICAgIHRoaXMuX2RpZFdvcmsgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQ291bnQ7XG4gIH1cblxuICBkZWNyZWFzZVBlbmRpbmdSZXF1ZXN0Q291bnQoKTogbnVtYmVyIHtcbiAgICB0aGlzLl9wZW5kaW5nQ291bnQgLT0gMTtcbiAgICBpZiAodGhpcy5fcGVuZGluZ0NvdW50IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ3BlbmRpbmcgYXN5bmMgcmVxdWVzdHMgYmVsb3cgemVybycpO1xuICAgIH1cbiAgICB0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCk7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudDtcbiAgfVxuXG4gIGlzU3RhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1pvbmVTdGFibGUgJiYgdGhpcy5fcGVuZGluZ0NvdW50ID09IDAgJiYgIXRoaXMuX25nWm9uZS5oYXNQZW5kaW5nTWFjcm90YXNrcztcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3J1bkNhbGxiYWNrc0lmUmVhZHkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTdGFibGUoKSkge1xuICAgICAgLy8gU2NoZWR1bGVzIHRoZSBjYWxsIGJhY2tzIGluIGEgbmV3IGZyYW1lIHNvIHRoYXQgaXQgaXMgYWx3YXlzIGFzeW5jLlxuICAgICAgc2NoZWR1bGVNaWNyb1Rhc2soKCkgPT4ge1xuICAgICAgICB3aGlsZSAodGhpcy5fY2FsbGJhY2tzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICh0aGlzLl9jYWxsYmFja3MucG9wKCkpKHRoaXMuX2RpZFdvcmspO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RpZFdvcmsgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOb3QgUmVhZHlcbiAgICAgIHRoaXMuX2RpZFdvcmsgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHdoZW5TdGFibGUoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgIHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKTtcbiAgfVxuXG4gIGdldFBlbmRpbmdSZXF1ZXN0Q291bnQoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudDsgfVxuXG4gIGZpbmRCaW5kaW5ncyh1c2luZzogYW55LCBwcm92aWRlcjogc3RyaW5nLCBleGFjdE1hdGNoOiBib29sZWFuKTogYW55W10ge1xuICAgIC8vIFRPRE8oanVsaWVtcik6IGltcGxlbWVudC5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBmaW5kUHJvdmlkZXJzKHVzaW5nOiBhbnksIHByb3ZpZGVyOiBzdHJpbmcsIGV4YWN0TWF0Y2g6IGJvb2xlYW4pOiBhbnlbXSB7XG4gICAgLy8gVE9ETyhqdWxpZW1yKTogaW1wbGVtZW50LlxuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG4vKipcbiAqIEEgZ2xvYmFsIHJlZ2lzdHJ5IG9mIHtAbGluayBUZXN0YWJpbGl0eX0gaW5zdGFuY2VzIGZvciBzcGVjaWZpYyBlbGVtZW50cy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRlc3RhYmlsaXR5UmVnaXN0cnkge1xuICAvKiogQGludGVybmFsICovXG4gIF9hcHBsaWNhdGlvbnMgPSBuZXcgTWFwPGFueSwgVGVzdGFiaWxpdHk+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7IF90ZXN0YWJpbGl0eUdldHRlci5hZGRUb1dpbmRvdyh0aGlzKTsgfVxuXG4gIHJlZ2lzdGVyQXBwbGljYXRpb24odG9rZW46IGFueSwgdGVzdGFiaWxpdHk6IFRlc3RhYmlsaXR5KSB7XG4gICAgdGhpcy5fYXBwbGljYXRpb25zLnNldCh0b2tlbiwgdGVzdGFiaWxpdHkpO1xuICB9XG5cbiAgZ2V0VGVzdGFiaWxpdHkoZWxlbTogYW55KTogVGVzdGFiaWxpdHkgeyByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25zLmdldChlbGVtKTsgfVxuXG4gIGdldEFsbFRlc3RhYmlsaXRpZXMoKTogVGVzdGFiaWxpdHlbXSB7IHJldHVybiBNYXBXcmFwcGVyLnZhbHVlcyh0aGlzLl9hcHBsaWNhdGlvbnMpOyB9XG5cbiAgZ2V0QWxsUm9vdEVsZW1lbnRzKCk6IGFueVtdIHsgcmV0dXJuIE1hcFdyYXBwZXIua2V5cyh0aGlzLl9hcHBsaWNhdGlvbnMpOyB9XG5cbiAgZmluZFRlc3RhYmlsaXR5SW5UcmVlKGVsZW06IE5vZGUsIGZpbmRJbkFuY2VzdG9yczogYm9vbGVhbiA9IHRydWUpOiBUZXN0YWJpbGl0eSB7XG4gICAgcmV0dXJuIF90ZXN0YWJpbGl0eUdldHRlci5maW5kVGVzdGFiaWxpdHlJblRyZWUodGhpcywgZWxlbSwgZmluZEluQW5jZXN0b3JzKTtcbiAgfVxufVxuXG4vKipcbiAqIEFkYXB0ZXIgaW50ZXJmYWNlIGZvciByZXRyaWV2aW5nIHRoZSBgVGVzdGFiaWxpdHlgIHNlcnZpY2UgYXNzb2NpYXRlZCBmb3IgYVxuICogcGFydGljdWxhciBjb250ZXh0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldFRlc3RhYmlsaXR5IHtcbiAgYWRkVG9XaW5kb3cocmVnaXN0cnk6IFRlc3RhYmlsaXR5UmVnaXN0cnkpOiB2b2lkO1xuICBmaW5kVGVzdGFiaWxpdHlJblRyZWUocmVnaXN0cnk6IFRlc3RhYmlsaXR5UmVnaXN0cnksIGVsZW06IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRJbkFuY2VzdG9yczogYm9vbGVhbik6IFRlc3RhYmlsaXR5O1xufVxuXG5AQ09OU1QoKVxuY2xhc3MgX05vb3BHZXRUZXN0YWJpbGl0eSBpbXBsZW1lbnRzIEdldFRlc3RhYmlsaXR5IHtcbiAgYWRkVG9XaW5kb3cocmVnaXN0cnk6IFRlc3RhYmlsaXR5UmVnaXN0cnkpOiB2b2lkIHt9XG4gIGZpbmRUZXN0YWJpbGl0eUluVHJlZShyZWdpc3RyeTogVGVzdGFiaWxpdHlSZWdpc3RyeSwgZWxlbTogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmluZEluQW5jZXN0b3JzOiBib29sZWFuKTogVGVzdGFiaWxpdHkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogU2V0IHRoZSB7QGxpbmsgR2V0VGVzdGFiaWxpdHl9IGltcGxlbWVudGF0aW9uIHVzZWQgYnkgdGhlIEFuZ3VsYXIgdGVzdGluZyBmcmFtZXdvcmsuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRUZXN0YWJpbGl0eUdldHRlcihnZXR0ZXI6IEdldFRlc3RhYmlsaXR5KTogdm9pZCB7XG4gIF90ZXN0YWJpbGl0eUdldHRlciA9IGdldHRlcjtcbn1cblxudmFyIF90ZXN0YWJpbGl0eUdldHRlcjogR2V0VGVzdGFiaWxpdHkgPSBDT05TVF9FWFBSKG5ldyBfTm9vcEdldFRlc3RhYmlsaXR5KCkpO1xuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar console_1 = require('angular2/src/core/console');\r\nvar reflection_1 = require('./reflection/reflection');\r\nvar testability_1 = require('angular2/src/core/testability/testability');\r\nfunction _reflector() {\r\n return reflection_1.reflector;\r\n}\r\n/**\r\n * A default set of providers which should be included in any Angular platform.\r\n */\r\nexports.PLATFORM_COMMON_PROVIDERS = lang_1.CONST_EXPR([new di_1.Provider(reflection_1.Reflector, { useFactory: _reflector, deps: [] }), testability_1.TestabilityRegistry, console_1.Console]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm1fY29tbW9uX3Byb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL3BsYXRmb3JtX2NvbW1vbl9wcm92aWRlcnMudHMiXSwibmFtZXMiOlsiX3JlZmxlY3RvciJdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXNFLDBCQUEwQixDQUFDLENBQUE7QUFDakcsbUJBQXVELHNCQUFzQixDQUFDLENBQUE7QUFDOUUsd0JBQXNCLDJCQUEyQixDQUFDLENBQUE7QUFDbEQsMkJBQW1DLHlCQUF5QixDQUFDLENBQUE7QUFDN0QsNEJBQWtDLDJDQUEyQyxDQUFDLENBQUE7QUFFOUU7SUFDRUEsTUFBTUEsQ0FBQ0Esc0JBQVNBLENBQUNBO0FBQ25CQSxDQUFDQTtBQUVEOztHQUVHO0FBQ1UsaUNBQXlCLEdBQW1DLGlCQUFVLENBQy9FLENBQUMsSUFBSSxhQUFRLENBQUMsc0JBQVMsRUFBRSxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDLEVBQUUsaUNBQW1CLEVBQUUsaUJBQU8sQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGUsIGlzQmxhbmssIGlzUHJlc2VudCwgYXNzZXJ0aW9uc0VuYWJsZWQsIENPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge3Byb3ZpZGUsIFByb3ZpZGVyLCBJbmplY3RvciwgT3BhcXVlVG9rZW59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7Q29uc29sZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvY29uc29sZSc7XG5pbXBvcnQge1JlZmxlY3RvciwgcmVmbGVjdG9yfSBmcm9tICcuL3JlZmxlY3Rpb24vcmVmbGVjdGlvbic7XG5pbXBvcnQge1Rlc3RhYmlsaXR5UmVnaXN0cnl9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3Rlc3RhYmlsaXR5L3Rlc3RhYmlsaXR5JztcblxuZnVuY3Rpb24gX3JlZmxlY3RvcigpOiBSZWZsZWN0b3Ige1xuICByZXR1cm4gcmVmbGVjdG9yO1xufVxuXG4vKipcbiAqIEEgZGVmYXVsdCBzZXQgb2YgcHJvdmlkZXJzIHdoaWNoIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBhbnkgQW5ndWxhciBwbGF0Zm9ybS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX0NPTU1PTl9QUk9WSURFUlM6IEFycmF5PFR5cGUgfCBQcm92aWRlciB8IGFueVtdPiA9IENPTlNUX0VYUFIoXG4gICAgW25ldyBQcm92aWRlcihSZWZsZWN0b3IsIHt1c2VGYWN0b3J5OiBfcmVmbGVjdG9yLCBkZXBzOiBbXX0pLCBUZXN0YWJpbGl0eVJlZ2lzdHJ5LCBDb25zb2xlXSk7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('../di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar element_1 = require('./element');\r\nvar directive_resolver_1 = require('./directive_resolver');\r\nvar pipe_provider_1 = require('../pipes/pipe_provider');\r\nvar pipe_resolver_1 = require('./pipe_resolver');\r\nvar ResolvedMetadataCache = (function () {\r\n function ResolvedMetadataCache(_directiveResolver, _pipeResolver) {\r\n this._directiveResolver = _directiveResolver;\r\n this._pipeResolver = _pipeResolver;\r\n this._directiveCache = new Map();\r\n this._pipeCache = new Map();\r\n }\r\n ResolvedMetadataCache.prototype.getResolvedDirectiveMetadata = function (type) {\r\n var result = this._directiveCache.get(type);\r\n if (lang_1.isBlank(result)) {\r\n result = element_1.DirectiveProvider.createFromType(type, this._directiveResolver.resolve(type));\r\n this._directiveCache.set(type, result);\r\n }\r\n return result;\r\n };\r\n ResolvedMetadataCache.prototype.getResolvedPipeMetadata = function (type) {\r\n var result = this._pipeCache.get(type);\r\n if (lang_1.isBlank(result)) {\r\n result = pipe_provider_1.PipeProvider.createFromType(type, this._pipeResolver.resolve(type));\r\n this._pipeCache.set(type, result);\r\n }\r\n return result;\r\n };\r\n ResolvedMetadataCache = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [directive_resolver_1.DirectiveResolver, pipe_resolver_1.PipeResolver])\r\n ], ResolvedMetadataCache);\r\n return ResolvedMetadataCache;\r\n})();\r\nexports.ResolvedMetadataCache = ResolvedMetadataCache;\r\nexports.CODEGEN_RESOLVED_METADATA_CACHE = new ResolvedMetadataCache(directive_resolver_1.CODEGEN_DIRECTIVE_RESOLVER, pipe_resolver_1.CODEGEN_PIPE_RESOLVER);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZWRfbWV0YWRhdGFfY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvcmVzb2x2ZWRfbWV0YWRhdGFfY2FjaGUudHMiXSwibmFtZXMiOlsiUmVzb2x2ZWRNZXRhZGF0YUNhY2hlIiwiUmVzb2x2ZWRNZXRhZGF0YUNhY2hlLmNvbnN0cnVjdG9yIiwiUmVzb2x2ZWRNZXRhZGF0YUNhY2hlLmdldFJlc29sdmVkRGlyZWN0aXZlTWV0YWRhdGEiLCJSZXNvbHZlZE1ldGFkYXRhQ2FjaGUuZ2V0UmVzb2x2ZWRQaXBlTWV0YWRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLG1CQUF5QixPQUFPLENBQUMsQ0FBQTtBQUNqQyxxQkFBNEIsMEJBQTBCLENBQUMsQ0FBQTtBQUN2RCx3QkFBZ0MsV0FBVyxDQUFDLENBQUE7QUFDNUMsbUNBQTRELHNCQUFzQixDQUFDLENBQUE7QUFDbkYsOEJBQTJCLHdCQUF3QixDQUFDLENBQUE7QUFDcEQsOEJBQWtELGlCQUFpQixDQUFDLENBQUE7QUFFcEU7SUFLRUEsK0JBQW9CQSxrQkFBcUNBLEVBQVVBLGFBQTJCQTtRQUExRUMsdUJBQWtCQSxHQUFsQkEsa0JBQWtCQSxDQUFtQkE7UUFBVUEsa0JBQWFBLEdBQWJBLGFBQWFBLENBQWNBO1FBSHRGQSxvQkFBZUEsR0FBaUNBLElBQUlBLEdBQUdBLEVBQTJCQSxDQUFDQTtRQUNuRkEsZUFBVUEsR0FBNEJBLElBQUlBLEdBQUdBLEVBQXNCQSxDQUFDQTtJQUVxQkEsQ0FBQ0E7SUFFbEdELDREQUE0QkEsR0FBNUJBLFVBQTZCQSxJQUFVQTtRQUNyQ0UsSUFBSUEsTUFBTUEsR0FBR0EsSUFBSUEsQ0FBQ0EsZUFBZUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDNUNBLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ3BCQSxNQUFNQSxHQUFHQSwyQkFBaUJBLENBQUNBLGNBQWNBLENBQUNBLElBQUlBLEVBQUVBLElBQUlBLENBQUNBLGtCQUFrQkEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDdkZBLElBQUlBLENBQUNBLGVBQWVBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLEVBQUVBLE1BQU1BLENBQUNBLENBQUNBO1FBQ3pDQSxDQUFDQTtRQUNEQSxNQUFNQSxDQUFDQSxNQUFNQSxDQUFDQTtJQUNoQkEsQ0FBQ0E7SUFFREYsdURBQXVCQSxHQUF2QkEsVUFBd0JBLElBQVVBO1FBQ2hDRyxJQUFJQSxNQUFNQSxHQUFHQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUN2Q0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsY0FBT0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDcEJBLE1BQU1BLEdBQUdBLDRCQUFZQSxDQUFDQSxjQUFjQSxDQUFDQSxJQUFJQSxFQUFFQSxJQUFJQSxDQUFDQSxhQUFhQSxDQUFDQSxPQUFPQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUM3RUEsSUFBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsRUFBRUEsTUFBTUEsQ0FBQ0EsQ0FBQ0E7UUFDcENBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBO0lBQ2hCQSxDQUFDQTtJQXZCSEg7UUFBQ0EsZUFBVUEsRUFBRUE7OzhCQXdCWkE7SUFBREEsNEJBQUNBO0FBQURBLENBQUNBLEFBeEJELElBd0JDO0FBdkJZLDZCQUFxQix3QkF1QmpDLENBQUE7QUFFVSx1Q0FBK0IsR0FDdEMsSUFBSSxxQkFBcUIsQ0FBQywrQ0FBMEIsRUFBRSxxQ0FBcUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICcuLi9kaSc7XG5pbXBvcnQge1R5cGUsIGlzQmxhbmt9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0RpcmVjdGl2ZVByb3ZpZGVyfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHtEaXJlY3RpdmVSZXNvbHZlciwgQ09ERUdFTl9ESVJFQ1RJVkVfUkVTT0xWRVJ9IGZyb20gJy4vZGlyZWN0aXZlX3Jlc29sdmVyJztcbmltcG9ydCB7UGlwZVByb3ZpZGVyfSBmcm9tICcuLi9waXBlcy9waXBlX3Byb3ZpZGVyJztcbmltcG9ydCB7UGlwZVJlc29sdmVyLCBDT0RFR0VOX1BJUEVfUkVTT0xWRVJ9IGZyb20gJy4vcGlwZV9yZXNvbHZlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZXNvbHZlZE1ldGFkYXRhQ2FjaGUge1xuICBwcml2YXRlIF9kaXJlY3RpdmVDYWNoZTogTWFwPFR5cGUsIERpcmVjdGl2ZVByb3ZpZGVyPiA9IG5ldyBNYXA8VHlwZSwgRGlyZWN0aXZlUHJvdmlkZXI+KCk7XG4gIHByaXZhdGUgX3BpcGVDYWNoZTogTWFwPFR5cGUsIFBpcGVQcm92aWRlcj4gPSBuZXcgTWFwPFR5cGUsIFBpcGVQcm92aWRlcj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kaXJlY3RpdmVSZXNvbHZlcjogRGlyZWN0aXZlUmVzb2x2ZXIsIHByaXZhdGUgX3BpcGVSZXNvbHZlcjogUGlwZVJlc29sdmVyKSB7fVxuXG4gIGdldFJlc29sdmVkRGlyZWN0aXZlTWV0YWRhdGEodHlwZTogVHlwZSk6IERpcmVjdGl2ZVByb3ZpZGVyIHtcbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5fZGlyZWN0aXZlQ2FjaGUuZ2V0KHR5cGUpO1xuICAgIGlmIChpc0JsYW5rKHJlc3VsdCkpIHtcbiAgICAgIHJlc3VsdCA9IERpcmVjdGl2ZVByb3ZpZGVyLmNyZWF0ZUZyb21UeXBlKHR5cGUsIHRoaXMuX2RpcmVjdGl2ZVJlc29sdmVyLnJlc29sdmUodHlwZSkpO1xuICAgICAgdGhpcy5fZGlyZWN0aXZlQ2FjaGUuc2V0KHR5cGUsIHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRSZXNvbHZlZFBpcGVNZXRhZGF0YSh0eXBlOiBUeXBlKTogUGlwZVByb3ZpZGVyIHtcbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5fcGlwZUNhY2hlLmdldCh0eXBlKTtcbiAgICBpZiAoaXNCbGFuayhyZXN1bHQpKSB7XG4gICAgICByZXN1bHQgPSBQaXBlUHJvdmlkZXIuY3JlYXRlRnJvbVR5cGUodHlwZSwgdGhpcy5fcGlwZVJlc29sdmVyLnJlc29sdmUodHlwZSkpO1xuICAgICAgdGhpcy5fcGlwZUNhY2hlLnNldCh0eXBlLCByZXN1bHQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmV4cG9ydCB2YXIgQ09ERUdFTl9SRVNPTFZFRF9NRVRBREFUQV9DQUNIRSA9XG4gICAgbmV3IFJlc29sdmVkTWV0YWRhdGFDYWNoZShDT0RFR0VOX0RJUkVDVElWRV9SRVNPTFZFUiwgQ09ERUdFTl9QSVBFX1JFU09MVkVSKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar view_1 = require('../metadata/view');\r\nvar directives_1 = require('../metadata/directives');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\n/**\r\n * Resolves types to {@link ViewMetadata}.\r\n */\r\nvar ViewResolver = (function () {\r\n function ViewResolver() {\r\n /** @internal */\r\n this._cache = new collection_1.Map();\r\n }\r\n ViewResolver.prototype.resolve = function (component) {\r\n var view = this._cache.get(component);\r\n if (lang_1.isBlank(view)) {\r\n view = this._resolve(component);\r\n this._cache.set(component, view);\r\n }\r\n return view;\r\n };\r\n /** @internal */\r\n ViewResolver.prototype._resolve = function (component) {\r\n var compMeta;\r\n var viewMeta;\r\n reflection_1.reflector.annotations(component).forEach(function (m) {\r\n if (m instanceof view_1.ViewMetadata) {\r\n viewMeta = m;\r\n }\r\n if (m instanceof directives_1.ComponentMetadata) {\r\n compMeta = m;\r\n }\r\n });\r\n if (lang_1.isPresent(compMeta)) {\r\n if (lang_1.isBlank(compMeta.template) && lang_1.isBlank(compMeta.templateUrl) && lang_1.isBlank(viewMeta)) {\r\n throw new exceptions_1.BaseException(\"Component '\" + lang_1.stringify(component) + \"' must have either 'template' or 'templateUrl' set.\");\r\n }\r\n else if (lang_1.isPresent(compMeta.template) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"template\", component);\r\n }\r\n else if (lang_1.isPresent(compMeta.templateUrl) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"templateUrl\", component);\r\n }\r\n else if (lang_1.isPresent(compMeta.directives) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"directives\", component);\r\n }\r\n else if (lang_1.isPresent(compMeta.pipes) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"pipes\", component);\r\n }\r\n else if (lang_1.isPresent(compMeta.encapsulation) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"encapsulation\", component);\r\n }\r\n else if (lang_1.isPresent(compMeta.styles) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"styles\", component);\r\n }\r\n else if (lang_1.isPresent(compMeta.styleUrls) && lang_1.isPresent(viewMeta)) {\r\n this._throwMixingViewAndComponent(\"styleUrls\", component);\r\n }\r\n else if (lang_1.isPresent(viewMeta)) {\r\n return viewMeta;\r\n }\r\n else {\r\n return new view_1.ViewMetadata({\r\n templateUrl: compMeta.templateUrl,\r\n template: compMeta.template,\r\n directives: compMeta.directives,\r\n pipes: compMeta.pipes,\r\n encapsulation: compMeta.encapsulation,\r\n styles: compMeta.styles,\r\n styleUrls: compMeta.styleUrls\r\n });\r\n }\r\n }\r\n else {\r\n if (lang_1.isBlank(viewMeta)) {\r\n throw new exceptions_1.BaseException(\"Could not compile '\" + lang_1.stringify(component) + \"' because it is not a component.\");\r\n }\r\n else {\r\n return viewMeta;\r\n }\r\n }\r\n return null;\r\n };\r\n /** @internal */\r\n ViewResolver.prototype._throwMixingViewAndComponent = function (propertyName, component) {\r\n throw new exceptions_1.BaseException(\"Component '\" + lang_1.stringify(component) + \"' cannot have both '\" + propertyName + \"' and '@View' set at the same time\\\"\");\r\n };\r\n ViewResolver = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], ViewResolver);\r\n return ViewResolver;\r\n})();\r\nexports.ViewResolver = ViewResolver;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld19yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3X3Jlc29sdmVyLnRzIl0sIm5hbWVzIjpbIlZpZXdSZXNvbHZlciIsIlZpZXdSZXNvbHZlci5jb25zdHJ1Y3RvciIsIlZpZXdSZXNvbHZlci5yZXNvbHZlIiwiVmlld1Jlc29sdmVyLl9yZXNvbHZlIiwiVmlld1Jlc29sdmVyLl90aHJvd01peGluZ1ZpZXdBbmRDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLG1CQUF5QixzQkFBc0IsQ0FBQyxDQUFBO0FBQ2hELHFCQUEyQixrQkFBa0IsQ0FBQyxDQUFBO0FBQzlDLDJCQUFnQyx3QkFBd0IsQ0FBQyxDQUFBO0FBRXpELHFCQUFrRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQzdFLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELDJCQUFrQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRW5ELDJCQUF3Qix5Q0FBeUMsQ0FBQyxDQUFBO0FBR2xFOztHQUVHO0FBQ0g7SUFBQUE7UUFFRUMsZ0JBQWdCQTtRQUNoQkEsV0FBTUEsR0FBR0EsSUFBSUEsZ0JBQUdBLEVBQXNCQSxDQUFDQTtJQW1GekNBLENBQUNBO0lBakZDRCw4QkFBT0EsR0FBUEEsVUFBUUEsU0FBZUE7UUFDckJFLElBQUlBLElBQUlBLEdBQUdBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLEdBQUdBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBO1FBRXRDQSxFQUFFQSxDQUFDQSxDQUFDQSxjQUFPQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNsQkEsSUFBSUEsR0FBR0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0E7WUFDaENBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLEdBQUdBLENBQUNBLFNBQVNBLEVBQUVBLElBQUlBLENBQUNBLENBQUNBO1FBQ25DQSxDQUFDQTtRQUVEQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNkQSxDQUFDQTtJQUVERixnQkFBZ0JBO0lBQ2hCQSwrQkFBUUEsR0FBUkEsVUFBU0EsU0FBZUE7UUFDdEJHLElBQUlBLFFBQTJCQSxDQUFDQTtRQUNoQ0EsSUFBSUEsUUFBc0JBLENBQUNBO1FBRTNCQSxzQkFBU0EsQ0FBQ0EsV0FBV0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsVUFBQUEsQ0FBQ0E7WUFDeENBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLFlBQVlBLG1CQUFZQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDOUJBLFFBQVFBLEdBQUdBLENBQUNBLENBQUNBO1lBQ2ZBLENBQUNBO1lBQ0RBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLFlBQVlBLDhCQUFpQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ25DQSxRQUFRQSxHQUFHQSxDQUFDQSxDQUFDQTtZQUNmQSxDQUFDQTtRQUNIQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUVIQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDeEJBLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLFFBQVFBLENBQUNBLFFBQVFBLENBQUNBLElBQUlBLGNBQU9BLENBQUNBLFFBQVFBLENBQUNBLFdBQVdBLENBQUNBLElBQUlBLGNBQU9BLENBQUNBLFFBQVFBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUNyRkEsTUFBTUEsSUFBSUEsMEJBQWFBLENBQ25CQSxnQkFBY0EsZ0JBQVNBLENBQUNBLFNBQVNBLENBQUNBLHdEQUFxREEsQ0FBQ0EsQ0FBQ0E7WUFFL0ZBLENBQUNBO1lBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxRQUFRQSxDQUFDQSxRQUFRQSxDQUFDQSxJQUFJQSxnQkFBU0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQy9EQSxJQUFJQSxDQUFDQSw0QkFBNEJBLENBQUNBLFVBQVVBLEVBQUVBLFNBQVNBLENBQUNBLENBQUNBO1lBRTNEQSxDQUFDQTtZQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EsSUFBSUEsZ0JBQVNBLENBQUNBLFFBQVFBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUNsRUEsSUFBSUEsQ0FBQ0EsNEJBQTRCQSxDQUFDQSxhQUFhQSxFQUFFQSxTQUFTQSxDQUFDQSxDQUFDQTtZQUU5REEsQ0FBQ0E7WUFBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLFFBQVFBLENBQUNBLFVBQVVBLENBQUNBLElBQUlBLGdCQUFTQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDakVBLElBQUlBLENBQUNBLDRCQUE0QkEsQ0FBQ0EsWUFBWUEsRUFBRUEsU0FBU0EsQ0FBQ0EsQ0FBQ0E7WUFFN0RBLENBQUNBO1lBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxRQUFRQSxDQUFDQSxLQUFLQSxDQUFDQSxJQUFJQSxnQkFBU0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzVEQSxJQUFJQSxDQUFDQSw0QkFBNEJBLENBQUNBLE9BQU9BLEVBQUVBLFNBQVNBLENBQUNBLENBQUNBO1lBRXhEQSxDQUFDQTtZQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsYUFBYUEsQ0FBQ0EsSUFBSUEsZ0JBQVNBLENBQUNBLFFBQVFBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUNwRUEsSUFBSUEsQ0FBQ0EsNEJBQTRCQSxDQUFDQSxlQUFlQSxFQUFFQSxTQUFTQSxDQUFDQSxDQUFDQTtZQUVoRUEsQ0FBQ0E7WUFBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLFFBQVFBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLGdCQUFTQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDN0RBLElBQUlBLENBQUNBLDRCQUE0QkEsQ0FBQ0EsUUFBUUEsRUFBRUEsU0FBU0EsQ0FBQ0EsQ0FBQ0E7WUFFekRBLENBQUNBO1lBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxRQUFRQSxDQUFDQSxTQUFTQSxDQUFDQSxJQUFJQSxnQkFBU0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ2hFQSxJQUFJQSxDQUFDQSw0QkFBNEJBLENBQUNBLFdBQVdBLEVBQUVBLFNBQVNBLENBQUNBLENBQUNBO1lBRTVEQSxDQUFDQTtZQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQy9CQSxNQUFNQSxDQUFDQSxRQUFRQSxDQUFDQTtZQUVsQkEsQ0FBQ0E7WUFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7Z0JBQ05BLE1BQU1BLENBQUNBLElBQUlBLG1CQUFZQSxDQUFDQTtvQkFDdEJBLFdBQVdBLEVBQUVBLFFBQVFBLENBQUNBLFdBQVdBO29CQUNqQ0EsUUFBUUEsRUFBRUEsUUFBUUEsQ0FBQ0EsUUFBUUE7b0JBQzNCQSxVQUFVQSxFQUFFQSxRQUFRQSxDQUFDQSxVQUFVQTtvQkFDL0JBLEtBQUtBLEVBQUVBLFFBQVFBLENBQUNBLEtBQUtBO29CQUNyQkEsYUFBYUEsRUFBRUEsUUFBUUEsQ0FBQ0EsYUFBYUE7b0JBQ3JDQSxNQUFNQSxFQUFFQSxRQUFRQSxDQUFDQSxNQUFNQTtvQkFDdkJBLFNBQVNBLEVBQUVBLFFBQVFBLENBQUNBLFNBQVNBO2lCQUM5QkEsQ0FBQ0EsQ0FBQ0E7WUFDTEEsQ0FBQ0E7UUFDSEEsQ0FBQ0E7UUFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFDTkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsY0FBT0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ3RCQSxNQUFNQSxJQUFJQSwwQkFBYUEsQ0FDbkJBLHdCQUFzQkEsZ0JBQVNBLENBQUNBLFNBQVNBLENBQUNBLHFDQUFrQ0EsQ0FBQ0EsQ0FBQ0E7WUFDcEZBLENBQUNBO1lBQUNBLElBQUlBLENBQUNBLENBQUNBO2dCQUNOQSxNQUFNQSxDQUFDQSxRQUFRQSxDQUFDQTtZQUNsQkEsQ0FBQ0E7UUFDSEEsQ0FBQ0E7UUFDREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7SUFDZEEsQ0FBQ0E7SUFFREgsZ0JBQWdCQTtJQUNoQkEsbURBQTRCQSxHQUE1QkEsVUFBNkJBLFlBQW9CQSxFQUFFQSxTQUFlQTtRQUNoRUksTUFBTUEsSUFBSUEsMEJBQWFBLENBQ25CQSxnQkFBY0EsZ0JBQVNBLENBQUNBLFNBQVNBLENBQUNBLDRCQUF1QkEsWUFBWUEseUNBQXFDQSxDQUFDQSxDQUFDQTtJQUNsSEEsQ0FBQ0E7SUFyRkhKO1FBQUNBLGVBQVVBLEVBQUVBOztxQkFzRlpBO0lBQURBLG1CQUFDQTtBQUFEQSxDQUFDQSxBQXRGRCxJQXNGQztBQXJGWSxvQkFBWSxlQXFGeEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtWaWV3TWV0YWRhdGF9IGZyb20gJy4uL21ldGFkYXRhL3ZpZXcnO1xuaW1wb3J0IHtDb21wb25lbnRNZXRhZGF0YX0gZnJvbSAnLi4vbWV0YWRhdGEvZGlyZWN0aXZlcyc7XG5cbmltcG9ydCB7VHlwZSwgc3RyaW5naWZ5LCBpc0JsYW5rLCBpc1ByZXNlbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge01hcH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxuaW1wb3J0IHtyZWZsZWN0b3J9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3JlZmxlY3Rpb24vcmVmbGVjdGlvbic7XG5cblxuLyoqXG4gKiBSZXNvbHZlcyB0eXBlcyB0byB7QGxpbmsgVmlld01ldGFkYXRhfS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFZpZXdSZXNvbHZlciB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2NhY2hlID0gbmV3IE1hcDxUeXBlLCBWaWV3TWV0YWRhdGE+KCk7XG5cbiAgcmVzb2x2ZShjb21wb25lbnQ6IFR5cGUpOiBWaWV3TWV0YWRhdGEge1xuICAgIHZhciB2aWV3ID0gdGhpcy5fY2FjaGUuZ2V0KGNvbXBvbmVudCk7XG5cbiAgICBpZiAoaXNCbGFuayh2aWV3KSkge1xuICAgICAgdmlldyA9IHRoaXMuX3Jlc29sdmUoY29tcG9uZW50KTtcbiAgICAgIHRoaXMuX2NhY2hlLnNldChjb21wb25lbnQsIHZpZXcpO1xuICAgIH1cblxuICAgIHJldHVybiB2aWV3O1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcmVzb2x2ZShjb21wb25lbnQ6IFR5cGUpOiBWaWV3TWV0YWRhdGEge1xuICAgIHZhciBjb21wTWV0YTogQ29tcG9uZW50TWV0YWRhdGE7XG4gICAgdmFyIHZpZXdNZXRhOiBWaWV3TWV0YWRhdGE7XG5cbiAgICByZWZsZWN0b3IuYW5ub3RhdGlvbnMoY29tcG9uZW50KS5mb3JFYWNoKG0gPT4ge1xuICAgICAgaWYgKG0gaW5zdGFuY2VvZiBWaWV3TWV0YWRhdGEpIHtcbiAgICAgICAgdmlld01ldGEgPSBtO1xuICAgICAgfVxuICAgICAgaWYgKG0gaW5zdGFuY2VvZiBDb21wb25lbnRNZXRhZGF0YSkge1xuICAgICAgICBjb21wTWV0YSA9IG07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoaXNQcmVzZW50KGNvbXBNZXRhKSkge1xuICAgICAgaWYgKGlzQmxhbmsoY29tcE1ldGEudGVtcGxhdGUpICYmIGlzQmxhbmsoY29tcE1ldGEudGVtcGxhdGVVcmwpICYmIGlzQmxhbmsodmlld01ldGEpKSB7XG4gICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFxuICAgICAgICAgICAgYENvbXBvbmVudCAnJHtzdHJpbmdpZnkoY29tcG9uZW50KX0nIG11c3QgaGF2ZSBlaXRoZXIgJ3RlbXBsYXRlJyBvciAndGVtcGxhdGVVcmwnIHNldC5gKTtcblxuICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQoY29tcE1ldGEudGVtcGxhdGUpICYmIGlzUHJlc2VudCh2aWV3TWV0YSkpIHtcbiAgICAgICAgdGhpcy5fdGhyb3dNaXhpbmdWaWV3QW5kQ29tcG9uZW50KFwidGVtcGxhdGVcIiwgY29tcG9uZW50KTtcblxuICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQoY29tcE1ldGEudGVtcGxhdGVVcmwpICYmIGlzUHJlc2VudCh2aWV3TWV0YSkpIHtcbiAgICAgICAgdGhpcy5fdGhyb3dNaXhpbmdWaWV3QW5kQ29tcG9uZW50KFwidGVtcGxhdGVVcmxcIiwgY29tcG9uZW50KTtcblxuICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQoY29tcE1ldGEuZGlyZWN0aXZlcykgJiYgaXNQcmVzZW50KHZpZXdNZXRhKSkge1xuICAgICAgICB0aGlzLl90aHJvd01peGluZ1ZpZXdBbmRDb21wb25lbnQoXCJkaXJlY3RpdmVzXCIsIGNvbXBvbmVudCk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KGNvbXBNZXRhLnBpcGVzKSAmJiBpc1ByZXNlbnQodmlld01ldGEpKSB7XG4gICAgICAgIHRoaXMuX3Rocm93TWl4aW5nVmlld0FuZENvbXBvbmVudChcInBpcGVzXCIsIGNvbXBvbmVudCk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KGNvbXBNZXRhLmVuY2Fwc3VsYXRpb24pICYmIGlzUHJlc2VudCh2aWV3TWV0YSkpIHtcbiAgICAgICAgdGhpcy5fdGhyb3dNaXhpbmdWaWV3QW5kQ29tcG9uZW50KFwiZW5jYXBzdWxhdGlvblwiLCBjb21wb25lbnQpO1xuXG4gICAgICB9IGVsc2UgaWYgKGlzUHJlc2VudChjb21wTWV0YS5zdHlsZXMpICYmIGlzUHJlc2VudCh2aWV3TWV0YSkpIHtcbiAgICAgICAgdGhpcy5fdGhyb3dNaXhpbmdWaWV3QW5kQ29tcG9uZW50KFwic3R5bGVzXCIsIGNvbXBvbmVudCk7XG5cbiAgICAgIH0gZWxzZSBpZiAoaXNQcmVzZW50KGNvbXBNZXRhLnN0eWxlVXJscykgJiYgaXNQcmVzZW50KHZpZXdNZXRhKSkge1xuICAgICAgICB0aGlzLl90aHJvd01peGluZ1ZpZXdBbmRDb21wb25lbnQoXCJzdHlsZVVybHNcIiwgY29tcG9uZW50KTtcblxuICAgICAgfSBlbHNlIGlmIChpc1ByZXNlbnQodmlld01ldGEpKSB7XG4gICAgICAgIHJldHVybiB2aWV3TWV0YTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWaWV3TWV0YWRhdGEoe1xuICAgICAgICAgIHRlbXBsYXRlVXJsOiBjb21wTWV0YS50ZW1wbGF0ZVVybCxcbiAgICAgICAgICB0ZW1wbGF0ZTogY29tcE1ldGEudGVtcGxhdGUsXG4gICAgICAgICAgZGlyZWN0aXZlczogY29tcE1ldGEuZGlyZWN0aXZlcyxcbiAgICAgICAgICBwaXBlczogY29tcE1ldGEucGlwZXMsXG4gICAgICAgICAgZW5jYXBzdWxhdGlvbjogY29tcE1ldGEuZW5jYXBzdWxhdGlvbixcbiAgICAgICAgICBzdHlsZXM6IGNvbXBNZXRhLnN0eWxlcyxcbiAgICAgICAgICBzdHlsZVVybHM6IGNvbXBNZXRhLnN0eWxlVXJsc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzQmxhbmsodmlld01ldGEpKSB7XG4gICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFxuICAgICAgICAgICAgYENvdWxkIG5vdCBjb21waWxlICcke3N0cmluZ2lmeShjb21wb25lbnQpfScgYmVjYXVzZSBpdCBpcyBub3QgYSBjb21wb25lbnQuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmlld01ldGE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfdGhyb3dNaXhpbmdWaWV3QW5kQ29tcG9uZW50KHByb3BlcnR5TmFtZTogc3RyaW5nLCBjb21wb25lbnQ6IFR5cGUpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihcbiAgICAgICAgYENvbXBvbmVudCAnJHtzdHJpbmdpZnkoY29tcG9uZW50KX0nIGNhbm5vdCBoYXZlIGJvdGggJyR7cHJvcGVydHlOYW1lfScgYW5kICdAVmlldycgc2V0IGF0IHRoZSBzYW1lIHRpbWVcImApO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar metadata_1 = require('angular2/src/core/metadata');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nfunction _isDirectiveMetadata(type) {\r\n return type instanceof metadata_1.DirectiveMetadata;\r\n}\r\n/*\r\n * Resolve a `Type` for {@link DirectiveMetadata}.\r\n *\r\n * This interface can be overridden by the application developer to create custom behavior.\r\n *\r\n * See {@link Compiler}\r\n */\r\nvar DirectiveResolver = (function () {\r\n function DirectiveResolver() {\r\n }\r\n /**\r\n * Return {@link DirectiveMetadata} for a given `Type`.\r\n */\r\n DirectiveResolver.prototype.resolve = function (type) {\r\n var typeMetadata = reflection_1.reflector.annotations(di_1.resolveForwardRef(type));\r\n if (lang_1.isPresent(typeMetadata)) {\r\n var metadata = typeMetadata.find(_isDirectiveMetadata);\r\n if (lang_1.isPresent(metadata)) {\r\n var propertyMetadata = reflection_1.reflector.propMetadata(type);\r\n return this._mergeWithPropertyMetadata(metadata, propertyMetadata, type);\r\n }\r\n }\r\n throw new exceptions_1.BaseException(\"No Directive annotation found on \" + lang_1.stringify(type));\r\n };\r\n DirectiveResolver.prototype._mergeWithPropertyMetadata = function (dm, propertyMetadata, directiveType) {\r\n var inputs = [];\r\n var outputs = [];\r\n var host = {};\r\n var queries = {};\r\n collection_1.StringMapWrapper.forEach(propertyMetadata, function (metadata, propName) {\r\n metadata.forEach(function (a) {\r\n if (a instanceof metadata_1.InputMetadata) {\r\n if (lang_1.isPresent(a.bindingPropertyName)) {\r\n inputs.push(propName + \": \" + a.bindingPropertyName);\r\n }\r\n else {\r\n inputs.push(propName);\r\n }\r\n }\r\n if (a instanceof metadata_1.OutputMetadata) {\r\n if (lang_1.isPresent(a.bindingPropertyName)) {\r\n outputs.push(propName + \": \" + a.bindingPropertyName);\r\n }\r\n else {\r\n outputs.push(propName);\r\n }\r\n }\r\n if (a instanceof metadata_1.HostBindingMetadata) {\r\n if (lang_1.isPresent(a.hostPropertyName)) {\r\n host[(\"[\" + a.hostPropertyName + \"]\")] = propName;\r\n }\r\n else {\r\n host[(\"[\" + propName + \"]\")] = propName;\r\n }\r\n }\r\n if (a instanceof metadata_1.HostListenerMetadata) {\r\n var args = lang_1.isPresent(a.args) ? a.args.join(', ') : '';\r\n host[(\"(\" + a.eventName + \")\")] = propName + \"(\" + args + \")\";\r\n }\r\n if (a instanceof metadata_1.ContentChildrenMetadata) {\r\n queries[propName] = a;\r\n }\r\n if (a instanceof metadata_1.ViewChildrenMetadata) {\r\n queries[propName] = a;\r\n }\r\n if (a instanceof metadata_1.ContentChildMetadata) {\r\n queries[propName] = a;\r\n }\r\n if (a instanceof metadata_1.ViewChildMetadata) {\r\n queries[propName] = a;\r\n }\r\n });\r\n });\r\n return this._merge(dm, inputs, outputs, host, queries, directiveType);\r\n };\r\n DirectiveResolver.prototype._merge = function (dm, inputs, outputs, host, queries, directiveType) {\r\n var mergedInputs = lang_1.isPresent(dm.inputs) ? collection_1.ListWrapper.concat(dm.inputs, inputs) : inputs;\r\n var mergedOutputs;\r\n if (lang_1.isPresent(dm.outputs)) {\r\n dm.outputs.forEach(function (propName) {\r\n if (collection_1.ListWrapper.contains(outputs, propName)) {\r\n throw new exceptions_1.BaseException(\"Output event '\" + propName + \"' defined multiple times in '\" + lang_1.stringify(directiveType) + \"'\");\r\n }\r\n });\r\n mergedOutputs = collection_1.ListWrapper.concat(dm.outputs, outputs);\r\n }\r\n else {\r\n mergedOutputs = outputs;\r\n }\r\n var mergedHost = lang_1.isPresent(dm.host) ? collection_1.StringMapWrapper.merge(dm.host, host) : host;\r\n var mergedQueries = lang_1.isPresent(dm.queries) ? collection_1.StringMapWrapper.merge(dm.queries, queries) : queries;\r\n if (dm instanceof metadata_1.ComponentMetadata) {\r\n return new metadata_1.ComponentMetadata({\r\n selector: dm.selector,\r\n inputs: mergedInputs,\r\n outputs: mergedOutputs,\r\n host: mergedHost,\r\n exportAs: dm.exportAs,\r\n moduleId: dm.moduleId,\r\n queries: mergedQueries,\r\n changeDetection: dm.changeDetection,\r\n providers: dm.providers,\r\n viewProviders: dm.viewProviders\r\n });\r\n }\r\n else {\r\n return new metadata_1.DirectiveMetadata({\r\n selector: dm.selector,\r\n inputs: mergedInputs,\r\n outputs: mergedOutputs,\r\n host: mergedHost,\r\n exportAs: dm.exportAs,\r\n queries: mergedQueries,\r\n providers: dm.providers\r\n });\r\n }\r\n };\r\n DirectiveResolver = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], DirectiveResolver);\r\n return DirectiveResolver;\r\n})();\r\nexports.DirectiveResolver = DirectiveResolver;\r\nexports.CODEGEN_DIRECTIVE_RESOLVER = new DirectiveResolver();\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlX3Jlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL2RpcmVjdGl2ZV9yZXNvbHZlci50cyJdLCJuYW1lcyI6WyJfaXNEaXJlY3RpdmVNZXRhZGF0YSIsIkRpcmVjdGl2ZVJlc29sdmVyIiwiRGlyZWN0aXZlUmVzb2x2ZXIuY29uc3RydWN0b3IiLCJEaXJlY3RpdmVSZXNvbHZlci5yZXNvbHZlIiwiRGlyZWN0aXZlUmVzb2x2ZXIuX21lcmdlV2l0aFByb3BlcnR5TWV0YWRhdGEiLCJEaXJlY3RpdmVSZXNvbHZlci5fbWVyZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLG1CQUE0QyxzQkFBc0IsQ0FBQyxDQUFBO0FBQ25FLHFCQUFrRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQzdFLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELDJCQUE0QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTdFLHlCQVdPLDRCQUE0QixDQUFDLENBQUE7QUFDcEMsMkJBQXdCLHlDQUF5QyxDQUFDLENBQUE7QUFFbEUsOEJBQThCLElBQVM7SUFDckNBLE1BQU1BLENBQUNBLElBQUlBLFlBQVlBLDRCQUFpQkEsQ0FBQ0E7QUFDM0NBLENBQUNBO0FBRUQ7Ozs7OztHQU1HO0FBQ0g7SUFBQUM7SUE2SEFDLENBQUNBO0lBM0hDRDs7T0FFR0E7SUFDSEEsbUNBQU9BLEdBQVBBLFVBQVFBLElBQVVBO1FBQ2hCRSxJQUFJQSxZQUFZQSxHQUFHQSxzQkFBU0EsQ0FBQ0EsV0FBV0EsQ0FBQ0Esc0JBQWlCQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNsRUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLFlBQVlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzVCQSxJQUFJQSxRQUFRQSxHQUFHQSxZQUFZQSxDQUFDQSxJQUFJQSxDQUFDQSxvQkFBb0JBLENBQUNBLENBQUNBO1lBQ3ZEQSxF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RUEsRUFBRUEsQ0FBQ0EsU0FBU0E7YUFDeEJBLENBQUNBLENBQUNBO1FBQ0xBLENBQUNBO0lBQ0hBLENBQUNBO0lBNUhISjtRQUFDQSxlQUFVQSxFQUFFQTs7MEJBNkhaQTtJQUFEQSx3QkFBQ0E7QUFBREEsQ0FBQ0EsQUE3SEQsSUE2SEM7QUE1SFkseUJBQWlCLG9CQTRIN0IsQ0FBQTtBQUVVLGtDQUEwQixHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cmVzb2x2ZUZvcndhcmRSZWYsIEluamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7VHlwZSwgaXNQcmVzZW50LCBpc0JsYW5rLCBzdHJpbmdpZnl9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyLCBTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuXG5pbXBvcnQge1xuICBEaXJlY3RpdmVNZXRhZGF0YSxcbiAgQ29tcG9uZW50TWV0YWRhdGEsXG4gIElucHV0TWV0YWRhdGEsXG4gIE91dHB1dE1ldGFkYXRhLFxuICBIb3N0QmluZGluZ01ldGFkYXRhLFxuICBIb3N0TGlzdGVuZXJNZXRhZGF0YSxcbiAgQ29udGVudENoaWxkcmVuTWV0YWRhdGEsXG4gIFZpZXdDaGlsZHJlbk1ldGFkYXRhLFxuICBDb250ZW50Q2hpbGRNZXRhZGF0YSxcbiAgVmlld0NoaWxkTWV0YWRhdGFcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEnO1xuaW1wb3J0IHtyZWZsZWN0b3J9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3JlZmxlY3Rpb24vcmVmbGVjdGlvbic7XG5cbmZ1bmN0aW9uIF9pc0RpcmVjdGl2ZU1ldGFkYXRhKHR5cGU6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZSBpbnN0YW5jZW9mIERpcmVjdGl2ZU1ldGFkYXRhO1xufVxuXG4vKlxuICogUmVzb2x2ZSBhIGBUeXBlYCBmb3Ige0BsaW5rIERpcmVjdGl2ZU1ldGFkYXRhfS5cbiAqXG4gKiBUaGlzIGludGVyZmFjZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVyIHRvIGNyZWF0ZSBjdXN0b20gYmVoYXZpb3IuXG4gKlxuICogU2VlIHtAbGluayBDb21waWxlcn1cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERpcmVjdGl2ZVJlc29sdmVyIHtcbiAgLyoqXG4gICAqIFJldHVybiB7QGxpbmsgRGlyZWN0aXZlTWV0YWRhdGF9IGZvciBhIGdpdmVuIGBUeXBlYC5cbiAgICovXG4gIHJlc29sdmUodHlwZTogVHlwZSk6IERpcmVjdGl2ZU1ldGFkYXRhIHtcbiAgICB2YXIgdHlwZU1ldGFkYXRhID0gcmVmbGVjdG9yLmFubm90YXRpb25zKHJlc29sdmVGb3J3YXJkUmVmKHR5cGUpKTtcbiAgICBpZiAoaXNQcmVzZW50KHR5cGVNZXRhZGF0YSkpIHtcbiAgICAgIHZhciBtZXRhZGF0YSA9IHR5cGVNZXRhZGF0YS5maW5kKF9pc0RpcmVjdGl2ZU1ldGFkYXRhKTtcbiAgICAgIGlmIChpc1ByZXNlbnQobWV0YWRhdGEpKSB7XG4gICAgICAgIHZhciBwcm9wZXJ0eU1ldGFkYXRhID0gcmVmbGVjdG9yLnByb3BNZXRhZGF0YSh0eXBlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lcmdlV2l0aFByb3BlcnR5TWV0YWRhdGEobWV0YWRhdGEsIHByb3BlcnR5TWV0YWRhdGEsIHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBObyBEaXJlY3RpdmUgYW5ub3RhdGlvbiBmb3VuZCBvbiAke3N0cmluZ2lmeSh0eXBlKX1gKTtcbiAgfVxuXG4gIHByaXZhdGUgX21lcmdlV2l0aFByb3BlcnR5TWV0YWRhdGEoZG06IERpcmVjdGl2ZU1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TWV0YWRhdGE6IHtba2V5OiBzdHJpbmddOiBhbnlbXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlVHlwZTogVHlwZSk6IERpcmVjdGl2ZU1ldGFkYXRhIHtcbiAgICB2YXIgaW5wdXRzID0gW107XG4gICAgdmFyIG91dHB1dHMgPSBbXTtcbiAgICB2YXIgaG9zdDoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcbiAgICB2YXIgcXVlcmllczoge1trZXk6IHN0cmluZ106IGFueX0gPSB7fTtcblxuICAgIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChwcm9wZXJ0eU1ldGFkYXRhLCAobWV0YWRhdGE6IGFueVtdLCBwcm9wTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBtZXRhZGF0YS5mb3JFYWNoKGEgPT4ge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIElucHV0TWV0YWRhdGEpIHtcbiAgICAgICAgICBpZiAoaXNQcmVzZW50KGEuYmluZGluZ1Byb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGlucHV0cy5wdXNoKGAke3Byb3BOYW1lfTogJHthLmJpbmRpbmdQcm9wZXJ0eU5hbWV9YCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlucHV0cy5wdXNoKHByb3BOYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIE91dHB1dE1ldGFkYXRhKSB7XG4gICAgICAgICAgaWYgKGlzUHJlc2VudChhLmJpbmRpbmdQcm9wZXJ0eU5hbWUpKSB7XG4gICAgICAgICAgICBvdXRwdXRzLnB1c2goYCR7cHJvcE5hbWV9OiAke2EuYmluZGluZ1Byb3BlcnR5TmFtZX1gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0cHV0cy5wdXNoKHByb3BOYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIEhvc3RCaW5kaW5nTWV0YWRhdGEpIHtcbiAgICAgICAgICBpZiAoaXNQcmVzZW50KGEuaG9zdFByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGhvc3RbYFske2EuaG9zdFByb3BlcnR5TmFtZX1dYF0gPSBwcm9wTmFtZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaG9zdFtgWyR7cHJvcE5hbWV9XWBdID0gcHJvcE5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBIb3N0TGlzdGVuZXJNZXRhZGF0YSkge1xuICAgICAgICAgIHZhciBhcmdzID0gaXNQcmVzZW50KGEuYXJncykgPyAoPGFueVtdPmEuYXJncykuam9pbignLCAnKSA6ICcnO1xuICAgICAgICAgIGhvc3RbYCgke2EuZXZlbnROYW1lfSlgXSA9IGAke3Byb3BOYW1lfSgke2FyZ3N9KWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIENvbnRlbnRDaGlsZHJlbk1ldGFkYXRhKSB7XG4gICAgICAgICAgcXVlcmllc1twcm9wTmFtZV0gPSBhO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBWaWV3Q2hpbGRyZW5NZXRhZGF0YSkge1xuICAgICAgICAgIHF1ZXJpZXNbcHJvcE5hbWVdID0gYTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgQ29udGVudENoaWxkTWV0YWRhdGEpIHtcbiAgICAgICAgICBxdWVyaWVzW3Byb3BOYW1lXSA9IGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFZpZXdDaGlsZE1ldGFkYXRhKSB7XG4gICAgICAgICAgcXVlcmllc1twcm9wTmFtZV0gPSBhO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2UoZG0sIGlucHV0cywgb3V0cHV0cywgaG9zdCwgcXVlcmllcywgZGlyZWN0aXZlVHlwZSk7XG4gIH1cblxuICBwcml2YXRlIF9tZXJnZShkbTogRGlyZWN0aXZlTWV0YWRhdGEsIGlucHV0czogc3RyaW5nW10sIG91dHB1dHM6IHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgICBob3N0OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSwgcXVlcmllczoge1trZXk6IHN0cmluZ106IGFueX0sXG4gICAgICAgICAgICAgICAgIGRpcmVjdGl2ZVR5cGU6IFR5cGUpOiBEaXJlY3RpdmVNZXRhZGF0YSB7XG4gICAgdmFyIG1lcmdlZElucHV0cyA9IGlzUHJlc2VudChkbS5pbnB1dHMpID8gTGlzdFdyYXBwZXIuY29uY2F0KGRtLmlucHV0cywgaW5wdXRzKSA6IGlucHV0cztcblxuICAgIHZhciBtZXJnZWRPdXRwdXRzO1xuICAgIGlmIChpc1ByZXNlbnQoZG0ub3V0cHV0cykpIHtcbiAgICAgIGRtLm91dHB1dHMuZm9yRWFjaCgocHJvcE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoTGlzdFdyYXBwZXIuY29udGFpbnMob3V0cHV0cywgcHJvcE5hbWUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXG4gICAgICAgICAgICAgIGBPdXRwdXQgZXZlbnQgJyR7cHJvcE5hbWV9JyBkZWZpbmVkIG11bHRpcGxlIHRpbWVzIGluICcke3N0cmluZ2lmeShkaXJlY3RpdmVUeXBlKX0nYCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbWVyZ2VkT3V0cHV0cyA9IExpc3RXcmFwcGVyLmNvbmNhdChkbS5vdXRwdXRzLCBvdXRwdXRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVyZ2VkT3V0cHV0cyA9IG91dHB1dHM7XG4gICAgfVxuXG4gICAgdmFyIG1lcmdlZEhvc3QgPSBpc1ByZXNlbnQoZG0uaG9zdCkgPyBTdHJpbmdNYXBXcmFwcGVyLm1lcmdlKGRtLmhvc3QsIGhvc3QpIDogaG9zdDtcbiAgICB2YXIgbWVyZ2VkUXVlcmllcyA9XG4gICAgICAgIGlzUHJlc2VudChkbS5xdWVyaWVzKSA/IFN0cmluZ01hcFdyYXBwZXIubWVyZ2UoZG0ucXVlcmllcywgcXVlcmllcykgOiBxdWVyaWVzO1xuXG4gICAgaWYgKGRtIGluc3RhbmNlb2YgQ29tcG9uZW50TWV0YWRhdGEpIHtcbiAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50TWV0YWRhdGEoe1xuICAgICAgICBzZWxlY3RvcjogZG0uc2VsZWN0b3IsXG4gICAgICAgIGlucHV0czogbWVyZ2VkSW5wdXRzLFxuICAgICAgICBvdXRwdXRzOiBtZXJnZWRPdXRwdXRzLFxuICAgICAgICBob3N0OiBtZXJnZWRIb3N0LFxuICAgICAgICBleHBvcnRBczogZG0uZXhwb3J0QXMsXG4gICAgICAgIG1vZHVsZUlkOiBkbS5tb2R1bGVJZCxcbiAgICAgICAgcXVlcmllczogbWVyZ2VkUXVlcmllcyxcbiAgICAgICAgY2hhbmdlRGV0ZWN0aW9uOiBkbS5jaGFuZ2VEZXRlY3Rpb24sXG4gICAgICAgIHByb3ZpZGVyczogZG0ucHJvdmlkZXJzLFxuICAgICAgICB2aWV3UHJvdmlkZXJzOiBkbS52aWV3UHJvdmlkZXJzXG4gICAgICB9KTtcblxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IERpcmVjdGl2ZU1ldGFkYXRhKHtcbiAgICAgICAgc2VsZWN0b3I6IGRtLnNlbGVjdG9yLFxuICAgICAgICBpbnB1dHM6IG1lcmdlZElucHV0cyxcbiAgICAgICAgb3V0cHV0czogbWVyZ2VkT3V0cHV0cyxcbiAgICAgICAgaG9zdDogbWVyZ2VkSG9zdCxcbiAgICAgICAgZXhwb3J0QXM6IGRtLmV4cG9ydEFzLFxuICAgICAgICBxdWVyaWVzOiBtZXJnZWRRdWVyaWVzLFxuICAgICAgICBwcm92aWRlcnM6IGRtLnByb3ZpZGVyc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB2YXIgQ09ERUdFTl9ESVJFQ1RJVkVfUkVTT0xWRVIgPSBuZXcgRGlyZWN0aXZlUmVzb2x2ZXIoKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Defines template and style encapsulation options available for Component's {@link View}.\r\n *\r\n * See {@link ViewMetadata#encapsulation}.\r\n */\r\n(function (ViewEncapsulation) {\r\n /**\r\n * Emulate `Native` scoping of styles by adding an attribute containing surrogate id to the Host\r\n * Element and pre-processing the style rules provided via\r\n * {@link ViewMetadata#styles} or {@link ViewMetadata#stylesUrls}, and adding the new Host Element\r\n * attribute to all selectors.\r\n *\r\n * This is the default option.\r\n */\r\n ViewEncapsulation[ViewEncapsulation[\"Emulated\"] = 0] = \"Emulated\";\r\n /**\r\n * Use the native encapsulation mechanism of the renderer.\r\n *\r\n * For the DOM this means using [Shadow DOM](https://w3c.github.io/webcomponents/spec/shadow/) and\r\n * creating a ShadowRoot for Component's Host Element.\r\n */\r\n ViewEncapsulation[ViewEncapsulation[\"Native\"] = 1] = \"Native\";\r\n /**\r\n * Don't provide any template or style encapsulation.\r\n */\r\n ViewEncapsulation[ViewEncapsulation[\"None\"] = 2] = \"None\";\r\n})(exports.ViewEncapsulation || (exports.ViewEncapsulation = {}));\r\nvar ViewEncapsulation = exports.ViewEncapsulation;\r\nexports.VIEW_ENCAPSULATION_VALUES = [ViewEncapsulation.Emulated, ViewEncapsulation.Native, ViewEncapsulation.None];\r\n/**\r\n * Metadata properties available for configuring Views.\r\n *\r\n * Each Angular component requires a single `@Component` and at least one `@View` annotation. The\r\n * `@View` annotation specifies the HTML template to use, and lists the directives that are active\r\n * within the template.\r\n *\r\n * When a component is instantiated, the template is loaded into the component's shadow root, and\r\n * the expressions and statements in the template are evaluated against the component.\r\n *\r\n * For details on the `@Component` annotation, see {@link ComponentMetadata}.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'greet',\r\n * template: 'Hello {{name}}!',\r\n * directives: [GreetUser, Bold]\r\n * })\r\n * class Greet {\r\n * name: string;\r\n *\r\n * constructor() {\r\n * this.name = 'World';\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar ViewMetadata = (function () {\r\n function ViewMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, templateUrl = _b.templateUrl, template = _b.template, directives = _b.directives, pipes = _b.pipes, encapsulation = _b.encapsulation, styles = _b.styles, styleUrls = _b.styleUrls;\r\n this.templateUrl = templateUrl;\r\n this.template = template;\r\n this.styleUrls = styleUrls;\r\n this.styles = styles;\r\n this.directives = directives;\r\n this.pipes = pipes;\r\n this.encapsulation = encapsulation;\r\n }\r\n ViewMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object])\r\n ], ViewMetadata);\r\n return ViewMetadata;\r\n})();\r\nexports.ViewMetadata = ViewMetadata;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL3ZpZXcudHMiXSwibmFtZXMiOlsiVmlld0VuY2Fwc3VsYXRpb24iLCJWaWV3TWV0YWRhdGEiLCJWaWV3TWV0YWRhdGEuY29uc3RydWN0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHFCQUEwQiwwQkFBMEIsQ0FBQyxDQUFBO0FBRXJEOzs7O0dBSUc7QUFDSCxXQUFZLGlCQUFpQjtJQUMzQkE7Ozs7Ozs7T0FPR0E7SUFDSEEsaUVBQVFBLENBQUFBO0lBQ1JBOzs7OztPQUtHQTtJQUNIQSw2REFBTUEsQ0FBQUE7SUFDTkE7O09BRUdBO0lBQ0hBLHlEQUFJQSxDQUFBQTtBQUNOQSxDQUFDQSxFQXJCVyx5QkFBaUIsS0FBakIseUJBQWlCLFFBcUI1QjtBQXJCRCxJQUFZLGlCQUFpQixHQUFqQix5QkFxQlgsQ0FBQTtBQUVVLGlDQUF5QixHQUNoQyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFHbkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSDtJQThERUMsc0JBQVlBLEVBUU5BO2lDQUFGQyxFQUFFQSxPQVJPQSxXQUFXQSxtQkFBRUEsUUFBUUEsZ0JBQUVBLFVBQVVBLGtCQUFFQSxLQUFLQSxhQUFFQSxhQUFhQSxxQkFBRUEsTUFBTUEsY0FBRUEsU0FBU0E7UUFTckZBLElBQUlBLENBQUNBLFdBQVdBLEdBQUdBLFdBQVdBLENBQUNBO1FBQy9CQSxJQUFJQSxDQUFDQSxRQUFRQSxHQUFHQSxRQUFRQSxDQUFDQTtRQUN6QkEsSUFBSUEsQ0FBQ0EsU0FBU0EsR0FBR0EsU0FBU0EsQ0FBQ0E7UUFDM0JBLElBQUlBLENBQUNBLE1BQU1BLEdBQUdBLE1BQU1BLENBQUNBO1FBQ3JCQSxJQUFJQSxDQUFDQSxVQUFVQSxHQUFHQSxVQUFVQSxDQUFDQTtRQUM3QkEsSUFBSUEsQ0FBQ0EsS0FBS0EsR0FBR0EsS0FBS0EsQ0FBQ0E7UUFDbkJBLElBQUlBLENBQUNBLGFBQWFBLEdBQUdBLGFBQWFBLENBQUNBO0lBQ3JDQSxDQUFDQTtJQTlFSEQ7UUFBQ0EsWUFBS0EsRUFBRUE7O3FCQStFUEE7SUFBREEsbUJBQUNBO0FBQURBLENBQUNBLEFBL0VELElBK0VDO0FBOUVZLG9CQUFZLGVBOEV4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVCwgVHlwZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBEZWZpbmVzIHRlbXBsYXRlIGFuZCBzdHlsZSBlbmNhcHN1bGF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlIGZvciBDb21wb25lbnQncyB7QGxpbmsgVmlld30uXG4gKlxuICogU2VlIHtAbGluayBWaWV3TWV0YWRhdGEjZW5jYXBzdWxhdGlvbn0uXG4gKi9cbmV4cG9ydCBlbnVtIFZpZXdFbmNhcHN1bGF0aW9uIHtcbiAgLyoqXG4gICAqIEVtdWxhdGUgYE5hdGl2ZWAgc2NvcGluZyBvZiBzdHlsZXMgYnkgYWRkaW5nIGFuIGF0dHJpYnV0ZSBjb250YWluaW5nIHN1cnJvZ2F0ZSBpZCB0byB0aGUgSG9zdFxuICAgKiBFbGVtZW50IGFuZCBwcmUtcHJvY2Vzc2luZyB0aGUgc3R5bGUgcnVsZXMgcHJvdmlkZWQgdmlhXG4gICAqIHtAbGluayBWaWV3TWV0YWRhdGEjc3R5bGVzfSBvciB7QGxpbmsgVmlld01ldGFkYXRhI3N0eWxlc1VybHN9LCBhbmQgYWRkaW5nIHRoZSBuZXcgSG9zdCBFbGVtZW50XG4gICAqIGF0dHJpYnV0ZSB0byBhbGwgc2VsZWN0b3JzLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbi5cbiAgICovXG4gIEVtdWxhdGVkLFxuICAvKipcbiAgICogVXNlIHRoZSBuYXRpdmUgZW5jYXBzdWxhdGlvbiBtZWNoYW5pc20gb2YgdGhlIHJlbmRlcmVyLlxuICAgKlxuICAgKiBGb3IgdGhlIERPTSB0aGlzIG1lYW5zIHVzaW5nIFtTaGFkb3cgRE9NXShodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8pIGFuZFxuICAgKiBjcmVhdGluZyBhIFNoYWRvd1Jvb3QgZm9yIENvbXBvbmVudCdzIEhvc3QgRWxlbWVudC5cbiAgICovXG4gIE5hdGl2ZSxcbiAgLyoqXG4gICAqIERvbid0IHByb3ZpZGUgYW55IHRlbXBsYXRlIG9yIHN0eWxlIGVuY2Fwc3VsYXRpb24uXG4gICAqL1xuICBOb25lXG59XG5cbmV4cG9ydCB2YXIgVklFV19FTkNBUFNVTEFUSU9OX1ZBTFVFUyA9XG4gICAgW1ZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLCBWaWV3RW5jYXBzdWxhdGlvbi5OYXRpdmUsIFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVdO1xuXG5cbi8qKlxuICogTWV0YWRhdGEgcHJvcGVydGllcyBhdmFpbGFibGUgZm9yIGNvbmZpZ3VyaW5nIFZpZXdzLlxuICpcbiAqIEVhY2ggQW5ndWxhciBjb21wb25lbnQgcmVxdWlyZXMgYSBzaW5nbGUgYEBDb21wb25lbnRgIGFuZCBhdCBsZWFzdCBvbmUgYEBWaWV3YCBhbm5vdGF0aW9uLiBUaGVcbiAqIGBAVmlld2AgYW5ub3RhdGlvbiBzcGVjaWZpZXMgdGhlIEhUTUwgdGVtcGxhdGUgdG8gdXNlLCBhbmQgbGlzdHMgdGhlIGRpcmVjdGl2ZXMgdGhhdCBhcmUgYWN0aXZlXG4gKiB3aXRoaW4gdGhlIHRlbXBsYXRlLlxuICpcbiAqIFdoZW4gYSBjb21wb25lbnQgaXMgaW5zdGFudGlhdGVkLCB0aGUgdGVtcGxhdGUgaXMgbG9hZGVkIGludG8gdGhlIGNvbXBvbmVudCdzIHNoYWRvdyByb290LCBhbmRcbiAqIHRoZSBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBpbiB0aGUgdGVtcGxhdGUgYXJlIGV2YWx1YXRlZCBhZ2FpbnN0IHRoZSBjb21wb25lbnQuXG4gKlxuICogRm9yIGRldGFpbHMgb24gdGhlIGBAQ29tcG9uZW50YCBhbm5vdGF0aW9uLCBzZWUge0BsaW5rIENvbXBvbmVudE1ldGFkYXRhfS5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnZ3JlZXQnLFxuICogICB0ZW1wbGF0ZTogJ0hlbGxvIHt7bmFtZX19IScsXG4gKiAgIGRpcmVjdGl2ZXM6IFtHcmVldFVzZXIsIEJvbGRdXG4gKiB9KVxuICogY2xhc3MgR3JlZXQge1xuICogICBuYW1lOiBzdHJpbmc7XG4gKlxuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgICB0aGlzLm5hbWUgPSAnV29ybGQnO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBWaWV3TWV0YWRhdGEge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGEgdGVtcGxhdGUgVVJMIGZvciBhbiBBbmd1bGFyIGNvbXBvbmVudC5cbiAgICpcbiAgICogTk9URTogT25seSBvbmUgb2YgYHRlbXBsYXRlVXJsYCBvciBgdGVtcGxhdGVgIGNhbiBiZSBkZWZpbmVkIHBlciBWaWV3LlxuICAgKlxuICAgKiA8IS0tIFRPRE86IHdoYXQncyB0aGUgdXJsIHJlbGF0aXZlIHRvPyAtLT5cbiAgICovXG4gIHRlbXBsYXRlVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBpbmxpbmUgdGVtcGxhdGUgZm9yIGFuIEFuZ3VsYXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBOT1RFOiBPbmx5IG9uZSBvZiBgdGVtcGxhdGVVcmxgIG9yIGB0ZW1wbGF0ZWAgY2FuIGJlIGRlZmluZWQgcGVyIFZpZXcuXG4gICAqL1xuICB0ZW1wbGF0ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgc3R5bGVzaGVldCBVUkxzIGZvciBhbiBBbmd1bGFyIGNvbXBvbmVudC5cbiAgICpcbiAgICogPCEtLSBUT0RPOiB3aGF0J3MgdGhlIHVybCByZWxhdGl2ZSB0bz8gLS0+XG4gICAqL1xuICBzdHlsZVVybHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gaW5saW5lIHN0eWxlc2hlZXQgZm9yIGFuIEFuZ3VsYXIgY29tcG9uZW50LlxuICAgKi9cbiAgc3R5bGVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgbGlzdCBvZiBkaXJlY3RpdmVzIHRoYXQgY2FuIGJlIHVzZWQgd2l0aGluIGEgdGVtcGxhdGUuXG4gICAqXG4gICAqIERpcmVjdGl2ZXMgbXVzdCBiZSBsaXN0ZWQgZXhwbGljaXRseSB0byBwcm92aWRlIHByb3BlciBjb21wb25lbnQgZW5jYXBzdWxhdGlvbi5cbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICpcbiAgICogYGBgamF2YXNjcmlwdFxuICAgKiBAQ29tcG9uZW50KHtcbiAgICogICBzZWxlY3RvcjogJ215LWNvbXBvbmVudCcsXG4gICAqICAgZGlyZWN0aXZlczogW05nRm9yXVxuICAgKiAgIHRlbXBsYXRlOiAnXG4gICAqICAgPHVsPlxuICAgKiAgICAgPGxpICpuZ0Zvcj1cIiNpdGVtIG9mIGl0ZW1zXCI+e3tpdGVtfX08L2xpPlxuICAgKiAgIDwvdWw+J1xuICAgKiB9KVxuICAgKiBjbGFzcyBNeUNvbXBvbmVudCB7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBkaXJlY3RpdmVzOiBBcnJheTxUeXBlIHwgYW55W10+O1xuXG4gIHBpcGVzOiBBcnJheTxUeXBlIHwgYW55W10+O1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGhvdyB0aGUgdGVtcGxhdGUgYW5kIHRoZSBzdHlsZXMgc2hvdWxkIGJlIGVuY2Fwc3VsYXRlZC5cbiAgICogVGhlIGRlZmF1bHQgaXMge0BsaW5rIFZpZXdFbmNhcHN1bGF0aW9uI0VtdWxhdGVkIGBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZGB9IGlmIHRoZSB2aWV3XG4gICAqIGhhcyBzdHlsZXMsXG4gICAqIG90aGVyd2lzZSB7QGxpbmsgVmlld0VuY2Fwc3VsYXRpb24jTm9uZSBgVmlld0VuY2Fwc3VsYXRpb24uTm9uZWB9LlxuICAgKi9cbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb247XG5cbiAgY29uc3RydWN0b3Ioe3RlbXBsYXRlVXJsLCB0ZW1wbGF0ZSwgZGlyZWN0aXZlcywgcGlwZXMsIGVuY2Fwc3VsYXRpb24sIHN0eWxlcywgc3R5bGVVcmxzfToge1xuICAgIHRlbXBsYXRlVXJsPzogc3RyaW5nLFxuICAgIHRlbXBsYXRlPzogc3RyaW5nLFxuICAgIGRpcmVjdGl2ZXM/OiBBcnJheTxUeXBlIHwgYW55W10+LFxuICAgIHBpcGVzPzogQXJyYXk8VHlwZSB8IGFueVtdPixcbiAgICBlbmNhcHN1bGF0aW9uPzogVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgc3R5bGVzPzogc3RyaW5nW10sXG4gICAgc3R5bGVVcmxzPzogc3RyaW5nW10sXG4gIH0gPSB7fSkge1xuICAgIHRoaXMudGVtcGxhdGVVcmwgPSB0ZW1wbGF0ZVVybDtcbiAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgdGhpcy5zdHlsZVVybHMgPSBzdHlsZVVybHM7XG4gICAgdGhpcy5zdHlsZXMgPSBzdHlsZXM7XG4gICAgdGhpcy5kaXJlY3RpdmVzID0gZGlyZWN0aXZlcztcbiAgICB0aGlzLnBpcGVzID0gcGlwZXM7XG4gICAgdGhpcy5lbmNhcHN1bGF0aW9uID0gZW5jYXBzdWxhdGlvbjtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';/**\r\n * This indirection is needed to free up Component, etc symbols in the public API\r\n * to be used by the decorator versions of these annotations.\r\n */\r\nvar di_1 = require('./metadata/di');\r\nexports.QueryMetadata = di_1.QueryMetadata;\r\nexports.ContentChildrenMetadata = di_1.ContentChildrenMetadata;\r\nexports.ContentChildMetadata = di_1.ContentChildMetadata;\r\nexports.ViewChildrenMetadata = di_1.ViewChildrenMetadata;\r\nexports.ViewQueryMetadata = di_1.ViewQueryMetadata;\r\nexports.ViewChildMetadata = di_1.ViewChildMetadata;\r\nexports.AttributeMetadata = di_1.AttributeMetadata;\r\nvar directives_1 = require('./metadata/directives');\r\nexports.ComponentMetadata = directives_1.ComponentMetadata;\r\nexports.DirectiveMetadata = directives_1.DirectiveMetadata;\r\nexports.PipeMetadata = directives_1.PipeMetadata;\r\nexports.InputMetadata = directives_1.InputMetadata;\r\nexports.OutputMetadata = directives_1.OutputMetadata;\r\nexports.HostBindingMetadata = directives_1.HostBindingMetadata;\r\nexports.HostListenerMetadata = directives_1.HostListenerMetadata;\r\nvar view_1 = require('./metadata/view');\r\nexports.ViewMetadata = view_1.ViewMetadata;\r\nexports.ViewEncapsulation = view_1.ViewEncapsulation;\r\nvar di_2 = require('./metadata/di');\r\nvar directives_2 = require('./metadata/directives');\r\nvar view_2 = require('./metadata/view');\r\nvar decorators_1 = require('./util/decorators');\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ComponentMetadata.\r\n/**\r\n * Declare reusable UI building blocks for an application.\r\n *\r\n * Each Angular component requires a single `@Component` annotation. The `@Component`\r\n * annotation specifies when a component is instantiated, and which properties and hostListeners it\r\n * binds to.\r\n *\r\n * When a component is instantiated, Angular\r\n * - creates a shadow DOM for the component.\r\n * - loads the selected template into the shadow DOM.\r\n * - creates all the injectable objects configured with `providers` and `viewProviders`.\r\n *\r\n * All template expressions and statements are then evaluated against the component instance.\r\n *\r\n * ## Lifecycle hooks\r\n *\r\n * When the component class implements some {@link angular2/lifecycle_hooks} the callbacks are\r\n * called by the change detection at defined points in time during the life of the component.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/ts/metadata/metadata.ts region='component'}\r\n */\r\nexports.Component = decorators_1.makeDecorator(directives_2.ComponentMetadata, function (fn) { return fn.View = View; });\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from DirectiveMetadata.\r\n/**\r\n * Directives allow you to attach behavior to elements in the DOM.\r\n *\r\n * {@link DirectiveMetadata}s with an embedded view are called {@link ComponentMetadata}s.\r\n *\r\n * A directive consists of a single directive annotation and a controller class. When the\r\n * directive's `selector` matches\r\n * elements in the DOM, the following steps occur:\r\n *\r\n * 1. For each directive, the `ElementInjector` attempts to resolve the directive's constructor\r\n * arguments.\r\n * 2. Angular instantiates directives for each matched element using `ElementInjector` in a\r\n * depth-first order,\r\n * as declared in the HTML.\r\n *\r\n * ## Understanding How Injection Works\r\n *\r\n * There are three stages of injection resolution.\r\n * - *Pre-existing Injectors*:\r\n * - The terminal {@link Injector} cannot resolve dependencies. It either throws an error or, if\r\n * the dependency was\r\n * specified as `@Optional`, returns `null`.\r\n * - The platform injector resolves browser singleton resources, such as: cookies, title,\r\n * location, and others.\r\n * - *Component Injectors*: Each component instance has its own {@link Injector}, and they follow\r\n * the same parent-child hierarchy\r\n * as the component instances in the DOM.\r\n * - *Element Injectors*: Each component instance has a Shadow DOM. Within the Shadow DOM each\r\n * element has an `ElementInjector`\r\n * which follow the same parent-child hierarchy as the DOM elements themselves.\r\n *\r\n * When a template is instantiated, it also must instantiate the corresponding directives in a\r\n * depth-first order. The\r\n * current `ElementInjector` resolves the constructor dependencies for each directive.\r\n *\r\n * Angular then resolves dependencies as follows, according to the order in which they appear in the\r\n * {@link ViewMetadata}:\r\n *\r\n * 1. Dependencies on the current element\r\n * 2. Dependencies on element injectors and their parents until it encounters a Shadow DOM boundary\r\n * 3. Dependencies on component injectors and their parents until it encounters the root component\r\n * 4. Dependencies on pre-existing injectors\r\n *\r\n *\r\n * The `ElementInjector` can inject other directives, element-specific special objects, or it can\r\n * delegate to the parent\r\n * injector.\r\n *\r\n * To inject other directives, declare the constructor parameter as:\r\n * - `directive:DirectiveType`: a directive on the current element only\r\n * - `@Host() directive:DirectiveType`: any directive that matches the type between the current\r\n * element and the\r\n * Shadow DOM root.\r\n * - `@Query(DirectiveType) query:QueryList<DirectiveType>`: A live collection of direct child\r\n * directives.\r\n * - `@QueryDescendants(DirectiveType) query:QueryList<DirectiveType>`: A live collection of any\r\n * child directives.\r\n *\r\n * To inject element-specific special objects, declare the constructor parameter as:\r\n * - `element: ElementRef` to obtain a reference to logical element in the view.\r\n * - `viewContainer: ViewContainerRef` to control child template instantiation, for\r\n * {@link DirectiveMetadata} directives only\r\n * - `bindingPropagation: BindingPropagation` to control change detection in a more granular way.\r\n *\r\n * ### Example\r\n *\r\n * The following example demonstrates how dependency injection resolves constructor arguments in\r\n * practice.\r\n *\r\n *\r\n * Assume this HTML template:\r\n *\r\n * ```\r\n * <div dependency=\"1\">\r\n * <div dependency=\"2\">\r\n * <div dependency=\"3\" my-directive>\r\n * <div dependency=\"4\">\r\n * <div dependency=\"5\"></div>\r\n * </div>\r\n * <div dependency=\"6\"></div>\r\n * </div>\r\n * </div>\r\n * </div>\r\n * ```\r\n *\r\n * With the following `dependency` decorator and `SomeService` injectable class.\r\n *\r\n * ```\r\n * @Injectable()\r\n * class SomeService {\r\n * }\r\n *\r\n * @Directive({\r\n * selector: '[dependency]',\r\n * inputs: [\r\n * 'id: dependency'\r\n * ]\r\n * })\r\n * class Dependency {\r\n * id:string;\r\n * }\r\n * ```\r\n *\r\n * Let's step through the different ways in which `MyDirective` could be declared...\r\n *\r\n *\r\n * ### No injection\r\n *\r\n * Here the constructor is declared with no arguments, therefore nothing is injected into\r\n * `MyDirective`.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor() {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with no dependencies.\r\n *\r\n *\r\n * ### Component-level injection\r\n *\r\n * Directives can inject any injectable instance from the closest component injector or any of its\r\n * parents.\r\n *\r\n * Here, the constructor declares a parameter, `someService`, and injects the `SomeService` type\r\n * from the parent\r\n * component's injector.\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(someService: SomeService) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a dependency on `SomeService`.\r\n *\r\n *\r\n * ### Injecting a directive from the current element\r\n *\r\n * Directives can inject other directives declared on the current element.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(dependency: Dependency) {\r\n * expect(dependency.id).toEqual(3);\r\n * }\r\n * }\r\n * ```\r\n * This directive would be instantiated with `Dependency` declared at the same element, in this case\r\n * `dependency=\"3\"`.\r\n *\r\n * ### Injecting a directive from any ancestor elements\r\n *\r\n * Directives can inject other directives declared on any ancestor element (in the current Shadow\r\n * DOM), i.e. on the current element, the\r\n * parent element, or its parents.\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Host() dependency: Dependency) {\r\n * expect(dependency.id).toEqual(2);\r\n * }\r\n * }\r\n * ```\r\n *\r\n * `@Host` checks the current element, the parent, as well as its parents recursively. If\r\n * `dependency=\"2\"` didn't\r\n * exist on the direct parent, this injection would\r\n * have returned\r\n * `dependency=\"1\"`.\r\n *\r\n *\r\n * ### Injecting a live collection of direct child directives\r\n *\r\n *\r\n * A directive can also query for other child directives. Since parent directives are instantiated\r\n * before child directives, a directive can't simply inject the list of child directives. Instead,\r\n * the directive injects a {@link QueryList}, which updates its contents as children are added,\r\n * removed, or moved by a directive that uses a {@link ViewContainerRef} such as a `ngFor`, an\r\n * `ngIf`, or an `ngSwitch`.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Query(Dependency) dependencies:QueryList<Dependency>) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a {@link QueryList} which contains `Dependency` 4 and\r\n * 6. Here, `Dependency` 5 would not be included, because it is not a direct child.\r\n *\r\n * ### Injecting a live collection of descendant directives\r\n *\r\n * By passing the descendant flag to `@Query` above, we can include the children of the child\r\n * elements.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Query(Dependency, {descendants: true}) dependencies:QueryList<Dependency>) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a Query which would contain `Dependency` 4, 5 and 6.\r\n *\r\n * ### Optional injection\r\n *\r\n * The normal behavior of directives is to return an error when a specified dependency cannot be\r\n * resolved. If you\r\n * would like to inject `null` on unresolved dependency instead, you can annotate that dependency\r\n * with `@Optional()`.\r\n * This explicitly permits the author of a template to treat some of the surrounding directives as\r\n * optional.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Optional() dependency:Dependency) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a `Dependency` directive found on the current element.\r\n * If none can be\r\n * found, the injector supplies `null` instead of throwing an error.\r\n *\r\n * ### Example\r\n *\r\n * Here we use a decorator directive to simply define basic tool-tip behavior.\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: '[tooltip]',\r\n * inputs: [\r\n * 'text: tooltip'\r\n * ],\r\n * host: {\r\n * '(mouseenter)': 'onMouseEnter()',\r\n * '(mouseleave)': 'onMouseLeave()'\r\n * }\r\n * })\r\n * class Tooltip{\r\n * text:string;\r\n * overlay:Overlay; // NOT YET IMPLEMENTED\r\n * overlayManager:OverlayManager; // NOT YET IMPLEMENTED\r\n *\r\n * constructor(overlayManager:OverlayManager) {\r\n * this.overlay = overlay;\r\n * }\r\n *\r\n * onMouseEnter() {\r\n * // exact signature to be determined\r\n * this.overlay = this.overlayManager.open(text, ...);\r\n * }\r\n *\r\n * onMouseLeave() {\r\n * this.overlay.close();\r\n * this.overlay = null;\r\n * }\r\n * }\r\n * ```\r\n * In our HTML template, we can then add this behavior to a `<div>` or any other element with the\r\n * `tooltip` selector,\r\n * like so:\r\n *\r\n * ```\r\n * <div tooltip=\"some text here\"></div>\r\n * ```\r\n *\r\n * Directives can also control the instantiation, destruction, and positioning of inline template\r\n * elements:\r\n *\r\n * A directive uses a {@link ViewContainerRef} to instantiate, insert, move, and destroy views at\r\n * runtime.\r\n * The {@link ViewContainerRef} is created as a result of `<template>` element, and represents a\r\n * location in the current view\r\n * where these actions are performed.\r\n *\r\n * Views are always created as children of the current {@link ViewMetadata}, and as siblings of the\r\n * `<template>` element. Thus a\r\n * directive in a child view cannot inject the directive that created it.\r\n *\r\n * Since directives that create views via ViewContainers are common in Angular, and using the full\r\n * `<template>` element syntax is wordy, Angular\r\n * also supports a shorthand notation: `<li *foo=\"bar\">` and `<li template=\"foo: bar\">` are\r\n * equivalent.\r\n *\r\n * Thus,\r\n *\r\n * ```\r\n * <ul>\r\n * <li *foo=\"bar\" title=\"text\"></li>\r\n * </ul>\r\n * ```\r\n *\r\n * Expands in use to:\r\n *\r\n * ```\r\n * <ul>\r\n * <template [foo]=\"bar\">\r\n * <li title=\"text\"></li>\r\n * </template>\r\n * </ul>\r\n * ```\r\n *\r\n * Notice that although the shorthand places `*foo=\"bar\"` within the `<li>` element, the binding for\r\n * the directive\r\n * controller is correctly instantiated on the `<template>` element rather than the `<li>` element.\r\n *\r\n * ## Lifecycle hooks\r\n *\r\n * When the directive class implements some {@link angular2/lifecycle_hooks} the callbacks are\r\n * called by the change detection at defined points in time during the life of the directive.\r\n *\r\n * ### Example\r\n *\r\n * Let's suppose we want to implement the `unless` behavior, to conditionally include a template.\r\n *\r\n * Here is a simple directive that triggers on an `unless` selector:\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: '[unless]',\r\n * inputs: ['unless']\r\n * })\r\n * export class Unless {\r\n * viewContainer: ViewContainerRef;\r\n * templateRef: TemplateRef;\r\n * prevCondition: boolean;\r\n *\r\n * constructor(viewContainer: ViewContainerRef, templateRef: TemplateRef) {\r\n * this.viewContainer = viewContainer;\r\n * this.templateRef = templateRef;\r\n * this.prevCondition = null;\r\n * }\r\n *\r\n * set unless(newCondition) {\r\n * if (newCondition && (isBlank(this.prevCondition) || !this.prevCondition)) {\r\n * this.prevCondition = true;\r\n * this.viewContainer.clear();\r\n * } else if (!newCondition && (isBlank(this.prevCondition) || this.prevCondition)) {\r\n * this.prevCondition = false;\r\n * this.viewContainer.create(this.templateRef);\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * We can then use this `unless` selector in a template:\r\n * ```\r\n * <ul>\r\n * <li *unless=\"expr\"></li>\r\n * </ul>\r\n * ```\r\n *\r\n * Once the directive instantiates the child view, the shorthand notation for the template expands\r\n * and the result is:\r\n *\r\n * ```\r\n * <ul>\r\n * <template [unless]=\"exp\">\r\n * <li></li>\r\n * </template>\r\n * <li></li>\r\n * </ul>\r\n * ```\r\n *\r\n * Note also that although the `<li></li>` template still exists inside the `<template></template>`,\r\n * the instantiated\r\n * view occurs on the second `<li></li>` which is a sibling to the `<template>` element.\r\n */\r\nexports.Directive = decorators_1.makeDecorator(directives_2.DirectiveMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ViewMetadata.\r\n/**\r\n * Metadata properties available for configuring Views.\r\n *\r\n * Each Angular component requires a single `@Component` and at least one `@View` annotation. The\r\n * `@View` annotation specifies the HTML template to use, and lists the directives that are active\r\n * within the template.\r\n *\r\n * When a component is instantiated, the template is loaded into the component's shadow root, and\r\n * the expressions and statements in the template are evaluated against the component.\r\n *\r\n * For details on the `@Component` annotation, see {@link ComponentMetadata}.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'greet',\r\n * template: 'Hello {{name}}!',\r\n * directives: [GreetUser, Bold]\r\n * })\r\n * class Greet {\r\n * name: string;\r\n *\r\n * constructor() {\r\n * this.name = 'World';\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar View = decorators_1.makeDecorator(view_2.ViewMetadata, function (fn) { return fn.View = View; });\r\n/**\r\n * Specifies that a constant attribute value should be injected.\r\n *\r\n * The directive can inject constant string literals of host element attributes.\r\n *\r\n * ### Example\r\n *\r\n * Suppose we have an `<input>` element and want to know its `type`.\r\n *\r\n * ```html\r\n * <input type=\"text\">\r\n * ```\r\n *\r\n * A decorator can inject string literal `text` like so:\r\n *\r\n * {@example core/ts/metadata/metadata.ts region='attributeMetadata'}\r\n */\r\nexports.Attribute = decorators_1.makeParamDecorator(di_2.AttributeMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from QueryMetadata.\r\n/**\r\n * Declares an injectable parameter to be a live list of directives or variable\r\n * bindings from the content children of a directive.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/lY9m8HLy7z06vDoUaSN2?p=preview))\r\n *\r\n * Assume that `<tabs>` component would like to get a list its children `<pane>`\r\n * components as shown in this example:\r\n *\r\n * ```html\r\n * <tabs>\r\n * <pane title=\"Overview\">...</pane>\r\n * <pane *ngFor=\"#o of objects\" [title]=\"o.title\">{{o.text}}</pane>\r\n * </tabs>\r\n * ```\r\n *\r\n * The preferred solution is to query for `Pane` directives using this decorator.\r\n *\r\n * ```javascript\r\n * @Component({\r\n * selector: 'pane',\r\n * inputs: ['title']\r\n * })\r\n * class Pane {\r\n * title:string;\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'tabs',\r\n * template: `\r\n * <ul>\r\n * <li *ngFor=\"#pane of panes\">{{pane.title}}</li>\r\n * </ul>\r\n * <ng-content></ng-content>\r\n * `\r\n * })\r\n * class Tabs {\r\n * panes: QueryList<Pane>;\r\n * constructor(@Query(Pane) panes:QueryList<Pane>) {\r\n * this.panes = panes;\r\n * }\r\n * }\r\n * ```\r\n *\r\n * A query can look for variable bindings by passing in a string with desired binding symbol.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/sT2j25cH1dURAyBRCKx1?p=preview))\r\n * ```html\r\n * <seeker>\r\n * <div #findme>...</div>\r\n * </seeker>\r\n *\r\n * @Component({ selector: 'foo' })\r\n * class seeker {\r\n * constructor(@Query('findme') elList: QueryList<ElementRef>) {...}\r\n * }\r\n * ```\r\n *\r\n * In this case the object that is injected depend on the type of the variable\r\n * binding. It can be an ElementRef, a directive or a component.\r\n *\r\n * Passing in a comma separated list of variable bindings will query for all of them.\r\n *\r\n * ```html\r\n * <seeker>\r\n * <div #findMe>...</div>\r\n * <div #findMeToo>...</div>\r\n * </seeker>\r\n *\r\n * @Component({\r\n * selector: 'foo'\r\n * })\r\n * class Seeker {\r\n * constructor(@Query('findMe, findMeToo') elList: QueryList<ElementRef>) {...}\r\n * }\r\n * ```\r\n *\r\n * Configure whether query looks for direct children or all descendants\r\n * of the querying element, by using the `descendants` parameter.\r\n * It is set to `false` by default.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/wtGeB977bv7qvA5FTYl9?p=preview))\r\n * ```html\r\n * <container #first>\r\n * <item>a</item>\r\n * <item>b</item>\r\n * <container #second>\r\n * <item>c</item>\r\n * </container>\r\n * </container>\r\n * ```\r\n *\r\n * When querying for items, the first container will see only `a` and `b` by default,\r\n * but with `Query(TextDirective, {descendants: true})` it will see `c` too.\r\n *\r\n * The queried directives are kept in a depth-first pre-order with respect to their\r\n * positions in the DOM.\r\n *\r\n * Query does not look deep into any subcomponent views.\r\n *\r\n * Query is updated as part of the change-detection cycle. Since change detection\r\n * happens after construction of a directive, QueryList will always be empty when observed in the\r\n * constructor.\r\n *\r\n * The injected object is an unmodifiable live list.\r\n * See {@link QueryList} for more details.\r\n */\r\nexports.Query = decorators_1.makeParamDecorator(di_2.QueryMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ContentChildrenMetadata.\r\n/**\r\n * Configures a content query.\r\n *\r\n * Content queries are set before the `ngAfterContentInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: 'someDir'\r\n * })\r\n * class SomeDir {\r\n * @ContentChildren(ChildDirective) contentChildren: QueryList<ChildDirective>;\r\n *\r\n * ngAfterContentInit() {\r\n * // contentChildren is set\r\n * }\r\n * }\r\n * ```\r\n */\r\nexports.ContentChildren = decorators_1.makePropDecorator(di_2.ContentChildrenMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ContentChildMetadata.\r\n/**\r\n * Configures a content query.\r\n *\r\n * Content queries are set before the `ngAfterContentInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: 'someDir'\r\n * })\r\n * class SomeDir {\r\n * @ContentChild(ChildDirective) contentChild;\r\n *\r\n * ngAfterContentInit() {\r\n * // contentChild is set\r\n * }\r\n * }\r\n * ```\r\n */\r\nexports.ContentChild = decorators_1.makePropDecorator(di_2.ContentChildMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ViewChildrenMetadata.\r\n/**\r\n * Configures a view query.\r\n *\r\n * View queries are set before the `ngAfterViewInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'someDir',\r\n * templateUrl: 'someTemplate',\r\n * directives: [ItemDirective]\r\n * })\r\n * class SomeDir {\r\n * @ViewChildren(ItemDirective) viewChildren: QueryList<ItemDirective>;\r\n *\r\n * ngAfterViewInit() {\r\n * // viewChildren is set\r\n * }\r\n * }\r\n * ```\r\n */\r\nexports.ViewChildren = decorators_1.makePropDecorator(di_2.ViewChildrenMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ViewChildMetadata.\r\n/**\r\n * Configures a view query.\r\n *\r\n * View queries are set before the `ngAfterViewInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'someDir',\r\n * templateUrl: 'someTemplate',\r\n * directives: [ItemDirective]\r\n * })\r\n * class SomeDir {\r\n * @ViewChild(ItemDirective) viewChild:ItemDirective;\r\n *\r\n * ngAfterViewInit() {\r\n * // viewChild is set\r\n * }\r\n * }\r\n * ```\r\n */\r\nexports.ViewChild = decorators_1.makePropDecorator(di_2.ViewChildMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from ViewQueryMetadata.\r\n/**\r\n * Similar to {@link QueryMetadata}, but querying the component view, instead of\r\n * the content children.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/eNsFHDf7YjyM6IzKxM1j?p=preview))\r\n *\r\n * ```javascript\r\n * @Component({\r\n * ...,\r\n * template: `\r\n * <item> a </item>\r\n * <item> b </item>\r\n * <item> c </item>\r\n * `\r\n * })\r\n * class MyComponent {\r\n * shown: boolean;\r\n *\r\n * constructor(private @Query(Item) items:QueryList<Item>) {\r\n * items.changes.subscribe(() => console.log(items.length));\r\n * }\r\n * }\r\n * ```\r\n *\r\n * Supports the same querying parameters as {@link QueryMetadata}, except\r\n * `descendants`. This always queries the whole view.\r\n *\r\n * As `shown` is flipped between true and false, items will contain zero of one\r\n * items.\r\n *\r\n * Specifies that a {@link QueryList} should be injected.\r\n *\r\n * The injected object is an iterable and observable live list.\r\n * See {@link QueryList} for more details.\r\n */\r\nexports.ViewQuery = decorators_1.makeParamDecorator(di_2.ViewQueryMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from PipeMetadata.\r\n/**\r\n * Declare reusable pipe function.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/ts/metadata/metadata.ts region='pipe'}\r\n */\r\nexports.Pipe = decorators_1.makeDecorator(directives_2.PipeMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from InputMetadata.\r\n/**\r\n * Declares a data-bound input property.\r\n *\r\n * Angular automatically updates data-bound properties during change detection.\r\n *\r\n * `InputMetadata` takes an optional parameter that specifies the name\r\n * used when instantiating a component in the template. When not provided,\r\n * the name of the decorated property is used.\r\n *\r\n * ### Example\r\n *\r\n * The following example creates a component with two input properties.\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'bank-account',\r\n * template: `\r\n * Bank Name: {{bankName}}\r\n * Account Id: {{id}}\r\n * `\r\n * })\r\n * class BankAccount {\r\n * @Input() bankName: string;\r\n * @Input('account-id') id: string;\r\n *\r\n * // this property is not bound, and won't be automatically updated by Angular\r\n * normalizedBankName: string;\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <bank-account bank-name=\"RBC\" account-id=\"4747\"></bank-account>\r\n * `,\r\n * directives: [BankAccount]\r\n * })\r\n * class App {}\r\n *\r\n * bootstrap(App);\r\n * ```\r\n */\r\nexports.Input = decorators_1.makePropDecorator(directives_2.InputMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from OutputMetadata.\r\n/**\r\n * Declares an event-bound output property.\r\n *\r\n * When an output property emits an event, an event handler attached to that event\r\n * the template is invoked.\r\n *\r\n * `OutputMetadata` takes an optional parameter that specifies the name\r\n * used when instantiating a component in the template. When not provided,\r\n * the name of the decorated property is used.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * @Directive({\r\n * selector: 'interval-dir',\r\n * })\r\n * class IntervalDir {\r\n * @Output() everySecond = new EventEmitter();\r\n * @Output('everyFiveSeconds') five5Secs = new EventEmitter();\r\n *\r\n * constructor() {\r\n * setInterval(() => this.everySecond.emit(\"event\"), 1000);\r\n * setInterval(() => this.five5Secs.emit(\"event\"), 5000);\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <interval-dir (everySecond)=\"everySecond()\" (everyFiveSeconds)=\"everyFiveSeconds()\">\r\n * </interval-dir>\r\n * `,\r\n * directives: [IntervalDir]\r\n * })\r\n * class App {\r\n * everySecond() { console.log('second'); }\r\n * everyFiveSeconds() { console.log('five seconds'); }\r\n * }\r\n * bootstrap(App);\r\n * ```\r\n */\r\nexports.Output = decorators_1.makePropDecorator(directives_2.OutputMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from HostBindingMetadata.\r\n/**\r\n * Declares a host property binding.\r\n *\r\n * Angular automatically checks host property bindings during change detection.\r\n * If a binding changes, it will update the host element of the directive.\r\n *\r\n * `HostBindingMetadata` takes an optional parameter that specifies the property\r\n * name of the host element that will be updated. When not provided,\r\n * the class property name is used.\r\n *\r\n * ### Example\r\n *\r\n * The following example creates a directive that sets the `valid` and `invalid` classes\r\n * on the DOM element that has ngModel directive on it.\r\n *\r\n * ```typescript\r\n * @Directive({selector: '[ngModel]'})\r\n * class NgModelStatus {\r\n * constructor(public control:NgModel) {}\r\n * @HostBinding('[class.valid]') get valid { return this.control.valid; }\r\n * @HostBinding('[class.invalid]') get invalid { return this.control.invalid; }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `<input [(ngModel)]=\"prop\">`,\r\n * directives: [FORM_DIRECTIVES, NgModelStatus]\r\n * })\r\n * class App {\r\n * prop;\r\n * }\r\n *\r\n * bootstrap(App);\r\n * ```\r\n */\r\nexports.HostBinding = decorators_1.makePropDecorator(directives_2.HostBindingMetadata);\r\n// TODO(alexeagle): remove the duplication of this doc. It is copied from HostListenerMetadata.\r\n/**\r\n * Declares a host listener.\r\n *\r\n * Angular will invoke the decorated method when the host element emits the specified event.\r\n *\r\n * If the decorated method returns `false`, then `preventDefault` is applied on the DOM\r\n * event.\r\n *\r\n * ### Example\r\n *\r\n * The following example declares a directive that attaches a click listener to the button and\r\n * counts clicks.\r\n *\r\n * ```typescript\r\n * @Directive({selector: 'button[counting]'})\r\n * class CountClicks {\r\n * numberOfClicks = 0;\r\n *\r\n * @HostListener('click', ['$event.target'])\r\n * onClick(btn) {\r\n * console.log(\"button\", btn, \"number of clicks:\", this.numberOfClicks++);\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `<button counting>Increment</button>`,\r\n * directives: [CountClicks]\r\n * })\r\n * class App {}\r\n *\r\n * bootstrap(App);\r\n * ```\r\n */\r\nexports.HostListener = decorators_1.makePropDecorator(directives_2.HostListenerMetadata);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxtQkFRTyxlQUFlLENBQUM7QUFQckIsMkNBQWE7QUFDYiwrREFBdUI7QUFDdkIseURBQW9CO0FBQ3BCLHlEQUFvQjtBQUNwQixtREFBaUI7QUFDakIsbURBQWlCO0FBQ2pCLG1EQUNxQjtBQUV2QiwyQkFRTyx1QkFBdUIsQ0FBQztBQVA3QiwyREFBaUI7QUFDakIsMkRBQWlCO0FBQ2pCLGlEQUFZO0FBQ1osbURBQWE7QUFDYixxREFBYztBQUNkLCtEQUFtQjtBQUNuQixpRUFDNkI7QUFFL0IscUJBQThDLGlCQUFpQixDQUFDO0FBQXhELDJDQUFZO0FBQUUscURBQTBDO0FBRWhFLG1CQVFPLGVBQWUsQ0FBQyxDQUFBO0FBRXZCLDJCQVFPLHVCQUF1QixDQUFDLENBQUE7QUFFL0IscUJBQThDLGlCQUFpQixDQUFDLENBQUE7QUFHaEUsMkJBTU8sbUJBQW1CLENBQUMsQ0FBQTtBQXNhM0IsNEZBQTRGO0FBQzVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ1EsaUJBQVMsR0FDRSwwQkFBYSxDQUFDLDhCQUFpQixFQUFFLFVBQUMsRUFBTyxJQUFLLE9BQUEsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQWQsQ0FBYyxDQUFDLENBQUM7QUFFcEYsNEZBQTRGO0FBQzVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlYRztBQUNRLGlCQUFTLEdBQXVDLDBCQUFhLENBQUMsOEJBQWlCLENBQUMsQ0FBQztBQUU1Rix1RkFBdUY7QUFDdkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxJQUFJLElBQUksR0FBNkIsMEJBQWEsQ0FBQyxtQkFBWSxFQUFFLFVBQUMsRUFBTyxJQUFLLE9BQUEsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQWQsQ0FBYyxDQUFDLENBQUM7QUFFOUY7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDUSxpQkFBUyxHQUFxQiwrQkFBa0IsQ0FBQyxzQkFBaUIsQ0FBQyxDQUFDO0FBRS9FLHdGQUF3RjtBQUN4Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBHRztBQUNRLGFBQUssR0FBaUIsK0JBQWtCLENBQUMsa0JBQWEsQ0FBQyxDQUFDO0FBRW5FLGtHQUFrRztBQUNsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNRLHVCQUFlLEdBQTJCLDhCQUFpQixDQUFDLDRCQUF1QixDQUFDLENBQUM7QUFFaEcsK0ZBQStGO0FBQy9GOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ1Esb0JBQVksR0FBd0IsOEJBQWlCLENBQUMseUJBQW9CLENBQUMsQ0FBQztBQUV2RiwrRkFBK0Y7QUFDL0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNRLG9CQUFZLEdBQXdCLDhCQUFpQixDQUFDLHlCQUFvQixDQUFDLENBQUM7QUFFdkYsNEZBQTRGO0FBQzVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDUSxpQkFBUyxHQUFxQiw4QkFBaUIsQ0FBQyxzQkFBaUIsQ0FBQyxDQUFDO0FBRTlFLDRGQUE0RjtBQUM1Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDRztBQUNRLGlCQUFTLEdBQWlCLCtCQUFrQixDQUFDLHNCQUFpQixDQUFDLENBQUM7QUFFM0UsdUZBQXVGO0FBQ3ZGOzs7Ozs7R0FNRztBQUNRLFlBQUksR0FBNkIsMEJBQWEsQ0FBQyx5QkFBWSxDQUFDLENBQUM7QUFFeEUsd0ZBQXdGO0FBQ3hGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NHO0FBQ1EsYUFBSyxHQUFpQiw4QkFBaUIsQ0FBQywwQkFBYSxDQUFDLENBQUM7QUFFbEUseUZBQXlGO0FBQ3pGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NHO0FBQ1EsY0FBTSxHQUFrQiw4QkFBaUIsQ0FBQywyQkFBYyxDQUFDLENBQUM7QUFFckUsOEZBQThGO0FBQzlGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NHO0FBQ1EsbUJBQVcsR0FBdUIsOEJBQWlCLENBQUMsZ0NBQW1CLENBQUMsQ0FBQztBQUVwRiwrRkFBK0Y7QUFDL0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlDRztBQUNRLG9CQUFZLEdBQXdCLDhCQUFpQixDQUFDLGlDQUFvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgaW5kaXJlY3Rpb24gaXMgbmVlZGVkIHRvIGZyZWUgdXAgQ29tcG9uZW50LCBldGMgc3ltYm9scyBpbiB0aGUgcHVibGljIEFQSVxuICogdG8gYmUgdXNlZCBieSB0aGUgZGVjb3JhdG9yIHZlcnNpb25zIG9mIHRoZXNlIGFubm90YXRpb25zLlxuICovXG5cbmV4cG9ydCB7XG4gIFF1ZXJ5TWV0YWRhdGEsXG4gIENvbnRlbnRDaGlsZHJlbk1ldGFkYXRhLFxuICBDb250ZW50Q2hpbGRNZXRhZGF0YSxcbiAgVmlld0NoaWxkcmVuTWV0YWRhdGEsXG4gIFZpZXdRdWVyeU1ldGFkYXRhLFxuICBWaWV3Q2hpbGRNZXRhZGF0YSxcbiAgQXR0cmlidXRlTWV0YWRhdGFcbn0gZnJvbSAnLi9tZXRhZGF0YS9kaSc7XG5cbmV4cG9ydCB7XG4gIENvbXBvbmVudE1ldGFkYXRhLFxuICBEaXJlY3RpdmVNZXRhZGF0YSxcbiAgUGlwZU1ldGFkYXRhLFxuICBJbnB1dE1ldGFkYXRhLFxuICBPdXRwdXRNZXRhZGF0YSxcbiAgSG9zdEJpbmRpbmdNZXRhZGF0YSxcbiAgSG9zdExpc3RlbmVyTWV0YWRhdGFcbn0gZnJvbSAnLi9tZXRhZGF0YS9kaXJlY3RpdmVzJztcblxuZXhwb3J0IHtWaWV3TWV0YWRhdGEsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICcuL21ldGFkYXRhL3ZpZXcnO1xuXG5pbXBvcnQge1xuICBRdWVyeU1ldGFkYXRhLFxuICBDb250ZW50Q2hpbGRyZW5NZXRhZGF0YSxcbiAgQ29udGVudENoaWxkTWV0YWRhdGEsXG4gIFZpZXdDaGlsZHJlbk1ldGFkYXRhLFxuICBWaWV3Q2hpbGRNZXRhZGF0YSxcbiAgVmlld1F1ZXJ5TWV0YWRhdGEsXG4gIEF0dHJpYnV0ZU1ldGFkYXRhXG59IGZyb20gJy4vbWV0YWRhdGEvZGknO1xuXG5pbXBvcnQge1xuICBDb21wb25lbnRNZXRhZGF0YSxcbiAgRGlyZWN0aXZlTWV0YWRhdGEsXG4gIFBpcGVNZXRhZGF0YSxcbiAgSW5wdXRNZXRhZGF0YSxcbiAgT3V0cHV0TWV0YWRhdGEsXG4gIEhvc3RCaW5kaW5nTWV0YWRhdGEsXG4gIEhvc3RMaXN0ZW5lck1ldGFkYXRhXG59IGZyb20gJy4vbWV0YWRhdGEvZGlyZWN0aXZlcyc7XG5cbmltcG9ydCB7Vmlld01ldGFkYXRhLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnLi9tZXRhZGF0YS92aWV3JztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3l9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vY2hhbmdlX2RldGVjdGlvbic7XG5cbmltcG9ydCB7XG4gIG1ha2VEZWNvcmF0b3IsXG4gIG1ha2VQYXJhbURlY29yYXRvcixcbiAgbWFrZVByb3BEZWNvcmF0b3IsXG4gIFR5cGVEZWNvcmF0b3IsXG4gIENsYXNzXG59IGZyb20gJy4vdXRpbC9kZWNvcmF0b3JzJztcbmltcG9ydCB7VHlwZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIHRoZSB7QGxpbmsgRGlyZWN0aXZlTWV0YWRhdGF9IGRlY29yYXRvciBmdW5jdGlvbi5cbiAqXG4gKiBTZWUge0BsaW5rIERpcmVjdGl2ZUZhY3Rvcnl9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdGl2ZURlY29yYXRvciBleHRlbmRzIFR5cGVEZWNvcmF0b3Ige31cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIHRoZSB7QGxpbmsgQ29tcG9uZW50TWV0YWRhdGF9IGRlY29yYXRvciBmdW5jdGlvbi5cbiAqXG4gKiBTZWUge0BsaW5rIENvbXBvbmVudEZhY3Rvcnl9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERlY29yYXRvciBleHRlbmRzIFR5cGVEZWNvcmF0b3Ige1xuICAvKipcbiAgICogQ2hhaW4ge0BsaW5rIFZpZXdNZXRhZGF0YX0gYW5ub3RhdGlvbi5cbiAgICovXG4gIFZpZXcob2JqOiB7XG4gICAgdGVtcGxhdGVVcmw/OiBzdHJpbmcsXG4gICAgdGVtcGxhdGU/OiBzdHJpbmcsXG4gICAgZGlyZWN0aXZlcz86IEFycmF5PFR5cGUgfCBhbnlbXT4sXG4gICAgcGlwZXM/OiBBcnJheTxUeXBlIHwgYW55W10+LFxuICAgIHJlbmRlcmVyPzogc3RyaW5nLFxuICAgIHN0eWxlcz86IHN0cmluZ1tdLFxuICAgIHN0eWxlVXJscz86IHN0cmluZ1tdLFxuICB9KTogVmlld0RlY29yYXRvcjtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIHRoZSB7QGxpbmsgVmlld01ldGFkYXRhfSBkZWNvcmF0b3IgZnVuY3Rpb24uXG4gKlxuICogU2VlIHtAbGluayBWaWV3RmFjdG9yeX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlld0RlY29yYXRvciBleHRlbmRzIFR5cGVEZWNvcmF0b3Ige1xuICAvKipcbiAgICogQ2hhaW4ge0BsaW5rIFZpZXdNZXRhZGF0YX0gYW5ub3RhdGlvbi5cbiAgICovXG4gIFZpZXcob2JqOiB7XG4gICAgdGVtcGxhdGVVcmw/OiBzdHJpbmcsXG4gICAgdGVtcGxhdGU/OiBzdHJpbmcsXG4gICAgZGlyZWN0aXZlcz86IEFycmF5PFR5cGUgfCBhbnlbXT4sXG4gICAgcGlwZXM/OiBBcnJheTxUeXBlIHwgYW55W10+LFxuICAgIHJlbmRlcmVyPzogc3RyaW5nLFxuICAgIHN0eWxlcz86IHN0cmluZ1tdLFxuICAgIHN0eWxlVXJscz86IHN0cmluZ1tdLFxuICB9KTogVmlld0RlY29yYXRvcjtcbn1cblxuLyoqXG4gKiB7QGxpbmsgRGlyZWN0aXZlTWV0YWRhdGF9IGZhY3RvcnkgZm9yIGNyZWF0aW5nIGFubm90YXRpb25zLCBkZWNvcmF0b3JzIG9yIERTTC5cbiAqXG4gKiAjIyMgRXhhbXBsZSBhcyBUeXBlU2NyaXB0IERlY29yYXRvclxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3RzL21ldGFkYXRhL21ldGFkYXRhLnRzIHJlZ2lvbj0nZGlyZWN0aXZlJ31cbiAqXG4gKiAjIyMgRXhhbXBsZSBhcyBFUzUgRFNMXG4gKlxuICogYGBgXG4gKiB2YXIgTXlEaXJlY3RpdmUgPSBuZ1xuICogICAuRGlyZWN0aXZlKHsuLi59KVxuICogICAuQ2xhc3Moe1xuICogICAgIGNvbnN0cnVjdG9yOiBmdW5jdGlvbigpIHtcbiAqICAgICAgIC4uLlxuICogICAgIH1cbiAqICAgfSlcbiAqIGBgYFxuICpcbiAqICMjIyBFeGFtcGxlIGFzIEVTNSBhbm5vdGF0aW9uXG4gKlxuICogYGBgXG4gKiB2YXIgTXlEaXJlY3RpdmUgPSBmdW5jdGlvbigpIHtcbiAqICAgLi4uXG4gKiB9O1xuICpcbiAqIE15RGlyZWN0aXZlLmFubm90YXRpb25zID0gW1xuICogICBuZXcgbmcuRGlyZWN0aXZlKHsuLi59KVxuICogXVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0aXZlRmFjdG9yeSB7XG4gIChvYmo6IHtcbiAgICBzZWxlY3Rvcj86IHN0cmluZyxcbiAgICBpbnB1dHM/OiBzdHJpbmdbXSxcbiAgICBvdXRwdXRzPzogc3RyaW5nW10sXG4gICAgcHJvcGVydGllcz86IHN0cmluZ1tdLFxuICAgIGV2ZW50cz86IHN0cmluZ1tdLFxuICAgIGhvc3Q/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSxcbiAgICBiaW5kaW5ncz86IGFueVtdLFxuICAgIHByb3ZpZGVycz86IGFueVtdLFxuICAgIGV4cG9ydEFzPzogc3RyaW5nLFxuICAgIHF1ZXJpZXM/OiB7W2tleTogc3RyaW5nXTogYW55fVxuICB9KTogRGlyZWN0aXZlRGVjb3JhdG9yO1xuICBuZXcgKG9iajoge1xuICAgIHNlbGVjdG9yPzogc3RyaW5nLFxuICAgIGlucHV0cz86IHN0cmluZ1tdLFxuICAgIG91dHB1dHM/OiBzdHJpbmdbXSxcbiAgICBwcm9wZXJ0aWVzPzogc3RyaW5nW10sXG4gICAgZXZlbnRzPzogc3RyaW5nW10sXG4gICAgaG9zdD86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LFxuICAgIGJpbmRpbmdzPzogYW55W10sXG4gICAgcHJvdmlkZXJzPzogYW55W10sXG4gICAgZXhwb3J0QXM/OiBzdHJpbmcsXG4gICAgcXVlcmllcz86IHtba2V5OiBzdHJpbmddOiBhbnl9XG4gIH0pOiBEaXJlY3RpdmVNZXRhZGF0YTtcbn1cblxuLyoqXG4gKiB7QGxpbmsgQ29tcG9uZW50TWV0YWRhdGF9IGZhY3RvcnkgZm9yIGNyZWF0aW5nIGFubm90YXRpb25zLCBkZWNvcmF0b3JzIG9yIERTTC5cbiAqXG4gKiAjIyMgRXhhbXBsZSBhcyBUeXBlU2NyaXB0IERlY29yYXRvclxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3RzL21ldGFkYXRhL21ldGFkYXRhLnRzIHJlZ2lvbj0nY29tcG9uZW50J31cbiAqXG4gKiAjIyMgRXhhbXBsZSBhcyBFUzUgRFNMXG4gKlxuICogYGBgXG4gKiB2YXIgTXlDb21wb25lbnQgPSBuZ1xuICogICAuQ29tcG9uZW50KHsuLi59KVxuICogICAuQ2xhc3Moe1xuICogICAgIGNvbnN0cnVjdG9yOiBmdW5jdGlvbigpIHtcbiAqICAgICAgIC4uLlxuICogICAgIH1cbiAqICAgfSlcbiAqIGBgYFxuICpcbiAqICMjIyBFeGFtcGxlIGFzIEVTNSBhbm5vdGF0aW9uXG4gKlxuICogYGBgXG4gKiB2YXIgTXlDb21wb25lbnQgPSBmdW5jdGlvbigpIHtcbiAqICAgLi4uXG4gKiB9O1xuICpcbiAqIE15Q29tcG9uZW50LmFubm90YXRpb25zID0gW1xuICogICBuZXcgbmcuQ29tcG9uZW50KHsuLi59KVxuICogXVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RmFjdG9yeSB7XG4gIChvYmo6IHtcbiAgICBzZWxlY3Rvcj86IHN0cmluZyxcbiAgICBpbnB1dHM/OiBzdHJpbmdbXSxcbiAgICBvdXRwdXRzPzogc3RyaW5nW10sXG4gICAgcHJvcGVydGllcz86IHN0cmluZ1tdLFxuICAgIGV2ZW50cz86IHN0cmluZ1tdLFxuICAgIGhvc3Q/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSxcbiAgICAvKiBAZGVwcmVjYXRlZCAqL1xuICAgIGJpbmRpbmdzPzogYW55W10sXG4gICAgcHJvdmlkZXJzPzogYW55W10sXG4gICAgZXhwb3J0QXM/OiBzdHJpbmcsXG4gICAgbW9kdWxlSWQ/OiBzdHJpbmcsXG4gICAgcXVlcmllcz86IHtba2V5OiBzdHJpbmddOiBhbnl9LFxuICAgIHZpZXdCaW5kaW5ncz86IGFueVtdLFxuICAgIHZpZXdQcm92aWRlcnM/OiBhbnlbXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb24/OiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICB0ZW1wbGF0ZVVybD86IHN0cmluZyxcbiAgICB0ZW1wbGF0ZT86IHN0cmluZyxcbiAgICBzdHlsZVVybHM/OiBzdHJpbmdbXSxcbiAgICBzdHlsZXM/OiBzdHJpbmdbXSxcbiAgICBkaXJlY3RpdmVzPzogQXJyYXk8VHlwZSB8IGFueVtdPixcbiAgICBwaXBlcz86IEFycmF5PFR5cGUgfCBhbnlbXT4sXG4gICAgZW5jYXBzdWxhdGlvbj86IFZpZXdFbmNhcHN1bGF0aW9uXG4gIH0pOiBDb21wb25lbnREZWNvcmF0b3I7XG4gIG5ldyAob2JqOiB7XG4gICAgc2VsZWN0b3I/OiBzdHJpbmcsXG4gICAgaW5wdXRzPzogc3RyaW5nW10sXG4gICAgb3V0cHV0cz86IHN0cmluZ1tdLFxuICAgIHByb3BlcnRpZXM/OiBzdHJpbmdbXSxcbiAgICBldmVudHM/OiBzdHJpbmdbXSxcbiAgICBob3N0Pzoge1trZXk6IHN0cmluZ106IHN0cmluZ30sXG4gICAgLyogQGRlcHJlY2F0ZWQgKi9cbiAgICBiaW5kaW5ncz86IGFueVtdLFxuICAgIHByb3ZpZGVycz86IGFueVtdLFxuICAgIGV4cG9ydEFzPzogc3RyaW5nLFxuICAgIG1vZHVsZUlkPzogc3RyaW5nLFxuICAgIHF1ZXJpZXM/OiB7W2tleTogc3RyaW5nXTogYW55fSxcbiAgICAvKiBAZGVwcmVjYXRlZCAqL1xuICAgIHZpZXdCaW5kaW5ncz86IGFueVtdLFxuICAgIHZpZXdQcm92aWRlcnM/OiBhbnlbXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb24/OiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICB0ZW1wbGF0ZVVybD86IHN0cmluZyxcbiAgICB0ZW1wbGF0ZT86IHN0cmluZyxcbiAgICBzdHlsZVVybHM/OiBzdHJpbmdbXSxcbiAgICBzdHlsZXM/OiBzdHJpbmdbXSxcbiAgICBkaXJlY3RpdmVzPzogQXJyYXk8VHlwZSB8IGFueVtdPixcbiAgICBwaXBlcz86IEFycmF5PFR5cGUgfCBhbnlbXT4sXG4gICAgZW5jYXBzdWxhdGlvbj86IFZpZXdFbmNhcHN1bGF0aW9uXG4gIH0pOiBDb21wb25lbnRNZXRhZGF0YTtcbn1cblxuLyoqXG4gKiB7QGxpbmsgVmlld01ldGFkYXRhfSBmYWN0b3J5IGZvciBjcmVhdGluZyBhbm5vdGF0aW9ucywgZGVjb3JhdG9ycyBvciBEU0wuXG4gKlxuICogIyMjIEV4YW1wbGUgYXMgVHlwZVNjcmlwdCBEZWNvcmF0b3JcbiAqXG4gKiBgYGBcbiAqIGltcG9ydCB7Q29tcG9uZW50LCBWaWV3fSBmcm9tIFwiYW5ndWxhcjIvY29yZVwiO1xuICpcbiAqIEBDb21wb25lbnQoey4uLn0pXG4gKiBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIGNvbnN0cnVjdG9yKCkge1xuICogICAgIC4uLlxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgRXhhbXBsZSBhcyBFUzUgRFNMXG4gKlxuICogYGBgXG4gKiB2YXIgTXlDb21wb25lbnQgPSBuZ1xuICogICAuQ29tcG9uZW50KHsuLi59KVxuICogICAuVmlldyh7Li4ufSlcbiAqICAgLkNsYXNzKHtcbiAqICAgICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24oKSB7XG4gKiAgICAgICAuLi5cbiAqICAgICB9XG4gKiAgIH0pXG4gKiBgYGBcbiAqXG4gKiAjIyMgRXhhbXBsZSBhcyBFUzUgYW5ub3RhdGlvblxuICpcbiAqIGBgYFxuICogdmFyIE15Q29tcG9uZW50ID0gZnVuY3Rpb24oKSB7XG4gKiAgIC4uLlxuICogfTtcbiAqXG4gKiBNeUNvbXBvbmVudC5hbm5vdGF0aW9ucyA9IFtcbiAqICAgbmV3IG5nLkNvbXBvbmVudCh7Li4ufSksXG4gKiAgIG5ldyBuZy5WaWV3KHsuLi59KVxuICogXVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlld0ZhY3Rvcnkge1xuICAob2JqOiB7XG4gICAgdGVtcGxhdGVVcmw/OiBzdHJpbmcsXG4gICAgdGVtcGxhdGU/OiBzdHJpbmcsXG4gICAgZGlyZWN0aXZlcz86IEFycmF5PFR5cGUgfCBhbnlbXT4sXG4gICAgcGlwZXM/OiBBcnJheTxUeXBlIHwgYW55W10+LFxuICAgIGVuY2Fwc3VsYXRpb24/OiBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBzdHlsZXM/OiBzdHJpbmdbXSxcbiAgICBzdHlsZVVybHM/OiBzdHJpbmdbXSxcbiAgfSk6IFZpZXdEZWNvcmF0b3I7XG4gIG5ldyAob2JqOiB7XG4gICAgdGVtcGxhdGVVcmw/OiBzdHJpbmcsXG4gICAgdGVtcGxhdGU/OiBzdHJpbmcsXG4gICAgZGlyZWN0aXZlcz86IEFycmF5PFR5cGUgfCBhbnlbXT4sXG4gICAgcGlwZXM/OiBBcnJheTxUeXBlIHwgYW55W10+LFxuICAgIGVuY2Fwc3VsYXRpb24/OiBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBzdHlsZXM/OiBzdHJpbmdbXSxcbiAgICBzdHlsZVVybHM/OiBzdHJpbmdbXSxcbiAgfSk6IFZpZXdNZXRhZGF0YTtcbn1cblxuLyoqXG4gKiB7QGxpbmsgQXR0cmlidXRlTWV0YWRhdGF9IGZhY3RvcnkgZm9yIGNyZWF0aW5nIGFubm90YXRpb25zLCBkZWNvcmF0b3JzIG9yIERTTC5cbiAqXG4gKiAjIyMgRXhhbXBsZSBhcyBUeXBlU2NyaXB0IERlY29yYXRvclxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3RzL21ldGFkYXRhL21ldGFkYXRhLnRzIHJlZ2lvbj0nYXR0cmlidXRlRmFjdG9yeSd9XG4gKlxuICogIyMjIEV4YW1wbGUgYXMgRVM1IERTTFxuICpcbiAqIGBgYFxuICogdmFyIE15Q29tcG9uZW50ID0gbmdcbiAqICAgLkNvbXBvbmVudCh7Li4ufSlcbiAqICAgLkNsYXNzKHtcbiAqICAgICBjb25zdHJ1Y3RvcjogW25ldyBuZy5BdHRyaWJ1dGUoJ3RpdGxlJyksIGZ1bmN0aW9uKHRpdGxlKSB7XG4gKiAgICAgICAuLi5cbiAqICAgICB9XVxuICogICB9KVxuICogYGBgXG4gKlxuICogIyMjIEV4YW1wbGUgYXMgRVM1IGFubm90YXRpb25cbiAqXG4gKiBgYGBcbiAqIHZhciBNeUNvbXBvbmVudCA9IGZ1bmN0aW9uKHRpdGxlKSB7XG4gKiAgIC4uLlxuICogfTtcbiAqXG4gKiBNeUNvbXBvbmVudC5hbm5vdGF0aW9ucyA9IFtcbiAqICAgbmV3IG5nLkNvbXBvbmVudCh7Li4ufSlcbiAqIF1cbiAqIE15Q29tcG9uZW50LnBhcmFtZXRlcnMgPSBbXG4gKiAgIFtuZXcgbmcuQXR0cmlidXRlKCd0aXRsZScpXVxuICogXVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlRmFjdG9yeSB7XG4gIChuYW1lOiBzdHJpbmcpOiBUeXBlRGVjb3JhdG9yO1xuICBuZXcgKG5hbWU6IHN0cmluZyk6IEF0dHJpYnV0ZU1ldGFkYXRhO1xufVxuXG4vKipcbiAqIHtAbGluayBRdWVyeU1ldGFkYXRhfSBmYWN0b3J5IGZvciBjcmVhdGluZyBhbm5vdGF0aW9ucywgZGVjb3JhdG9ycyBvciBEU0wuXG4gKlxuICogIyMjIEV4YW1wbGUgYXMgVHlwZVNjcmlwdCBEZWNvcmF0b3JcbiAqXG4gKiBgYGBcbiAqIGltcG9ydCB7UXVlcnksIFF1ZXJ5TGlzdCwgQ29tcG9uZW50fSBmcm9tIFwiYW5ndWxhcjIvY29yZVwiO1xuICpcbiAqIEBDb21wb25lbnQoey4uLn0pXG4gKiBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIGNvbnN0cnVjdG9yKEBRdWVyeShTb21lVHlwZSkgcXVlcnlMaXN0OiBRdWVyeUxpc3Q8U29tZVR5cGU+KSB7XG4gKiAgICAgLi4uXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyBFeGFtcGxlIGFzIEVTNSBEU0xcbiAqXG4gKiBgYGBcbiAqIHZhciBNeUNvbXBvbmVudCA9IG5nXG4gKiAgIC5Db21wb25lbnQoey4uLn0pXG4gKiAgIC5DbGFzcyh7XG4gKiAgICAgY29uc3RydWN0b3I6IFtuZXcgbmcuUXVlcnkoU29tZVR5cGUpLCBmdW5jdGlvbihxdWVyeUxpc3QpIHtcbiAqICAgICAgIC4uLlxuICogICAgIH1dXG4gKiAgIH0pXG4gKiBgYGBcbiAqXG4gKiAjIyMgRXhhbXBsZSBhcyBFUzUgYW5ub3RhdGlvblxuICpcbiAqIGBgYFxuICogdmFyIE15Q29tcG9uZW50ID0gZnVuY3Rpb24ocXVlcnlMaXN0KSB7XG4gKiAgIC4uLlxuICogfTtcbiAqXG4gKiBNeUNvbXBvbmVudC5hbm5vdGF0aW9ucyA9IFtcbiAqICAgbmV3IG5nLkNvbXBvbmVudCh7Li4ufSlcbiAqIF1cbiAqIE15Q29tcG9uZW50LnBhcmFtZXRlcnMgPSBbXG4gKiAgIFtuZXcgbmcuUXVlcnkoU29tZVR5cGUpXVxuICogXVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlGYWN0b3J5IHtcbiAgKHNlbGVjdG9yOiBUeXBlIHwgc3RyaW5nLCB7ZGVzY2VuZGFudHN9Pzoge2Rlc2NlbmRhbnRzPzogYm9vbGVhbn0pOiBQYXJhbWV0ZXJEZWNvcmF0b3I7XG4gIG5ldyAoc2VsZWN0b3I6IFR5cGUgfCBzdHJpbmcsIHtkZXNjZW5kYW50c30/OiB7ZGVzY2VuZGFudHM/OiBib29sZWFufSk6IFF1ZXJ5TWV0YWRhdGE7XG59XG5cbi8qKlxuICogRmFjdG9yeSBmb3Ige0BsaW5rIENvbnRlbnRDaGlsZHJlbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudENoaWxkcmVuRmFjdG9yeSB7XG4gIChzZWxlY3RvcjogVHlwZSB8IHN0cmluZywge2Rlc2NlbmRhbnRzfT86IHtkZXNjZW5kYW50cz86IGJvb2xlYW59KTogYW55O1xuICBuZXcgKHNlbGVjdG9yOiBUeXBlIHwgc3RyaW5nLCB7ZGVzY2VuZGFudHN9Pzoge2Rlc2NlbmRhbnRzPzogYm9vbGVhbn0pOiBDb250ZW50Q2hpbGRyZW5NZXRhZGF0YTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZvciB7QGxpbmsgQ29udGVudENoaWxkfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250ZW50Q2hpbGRGYWN0b3J5IHtcbiAgKHNlbGVjdG9yOiBUeXBlIHwgc3RyaW5nKTogYW55O1xuICBuZXcgKHNlbGVjdG9yOiBUeXBlIHwgc3RyaW5nKTogQ29udGVudENoaWxkRmFjdG9yeTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZvciB7QGxpbmsgVmlld0NoaWxkcmVufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaWV3Q2hpbGRyZW5GYWN0b3J5IHtcbiAgKHNlbGVjdG9yOiBUeXBlIHwgc3RyaW5nKTogYW55O1xuICBuZXcgKHNlbGVjdG9yOiBUeXBlIHwgc3RyaW5nKTogVmlld0NoaWxkcmVuTWV0YWRhdGE7XG59XG5cbi8qKlxuICogRmFjdG9yeSBmb3Ige0BsaW5rIFZpZXdDaGlsZH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlld0NoaWxkRmFjdG9yeSB7XG4gIChzZWxlY3RvcjogVHlwZSB8IHN0cmluZyk6IGFueTtcbiAgbmV3IChzZWxlY3RvcjogVHlwZSB8IHN0cmluZyk6IFZpZXdDaGlsZEZhY3Rvcnk7XG59XG5cblxuLyoqXG4gKiB7QGxpbmsgUGlwZU1ldGFkYXRhfSBmYWN0b3J5IGZvciBjcmVhdGluZyBkZWNvcmF0b3JzLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICoge0BleGFtcGxlIGNvcmUvdHMvbWV0YWRhdGEvbWV0YWRhdGEudHMgcmVnaW9uPSdwaXBlJ31cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlRmFjdG9yeSB7XG4gIChvYmo6IHtuYW1lOiBzdHJpbmcsIHB1cmU/OiBib29sZWFufSk6IGFueTtcbiAgbmV3IChvYmo6IHtuYW1lOiBzdHJpbmcsIHB1cmU/OiBib29sZWFufSk6IGFueTtcbn1cblxuLyoqXG4gKiB7QGxpbmsgSW5wdXRNZXRhZGF0YX0gZmFjdG9yeSBmb3IgY3JlYXRpbmcgZGVjb3JhdG9ycy5cbiAqXG4gKiBTZWUge0BsaW5rIElucHV0TWV0YWRhdGF9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0RmFjdG9yeSB7XG4gIChiaW5kaW5nUHJvcGVydHlOYW1lPzogc3RyaW5nKTogYW55O1xuICBuZXcgKGJpbmRpbmdQcm9wZXJ0eU5hbWU/OiBzdHJpbmcpOiBhbnk7XG59XG5cbi8qKlxuICoge0BsaW5rIE91dHB1dE1ldGFkYXRhfSBmYWN0b3J5IGZvciBjcmVhdGluZyBkZWNvcmF0b3JzLlxuICpcbiAqIFNlZSB7QGxpbmsgT3V0cHV0TWV0YWRhdGF9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dEZhY3Rvcnkge1xuICAoYmluZGluZ1Byb3BlcnR5TmFtZT86IHN0cmluZyk6IGFueTtcbiAgbmV3IChiaW5kaW5nUHJvcGVydHlOYW1lPzogc3RyaW5nKTogYW55O1xufVxuXG4vKipcbiAqIHtAbGluayBIb3N0QmluZGluZ01ldGFkYXRhfSBmYWN0b3J5IGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RCaW5kaW5nRmFjdG9yeSB7XG4gIChob3N0UHJvcGVydHlOYW1lPzogc3RyaW5nKTogYW55O1xuICBuZXcgKGhvc3RQcm9wZXJ0eU5hbWU/OiBzdHJpbmcpOiBhbnk7XG59XG5cbi8qKlxuICoge0BsaW5rIEhvc3RMaXN0ZW5lck1ldGFkYXRhfSBmYWN0b3J5IGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RMaXN0ZW5lckZhY3Rvcnkge1xuICAoZXZlbnROYW1lOiBzdHJpbmcsIGFyZ3M/OiBzdHJpbmdbXSk6IGFueTtcbiAgbmV3IChldmVudE5hbWU6IHN0cmluZywgYXJncz86IHN0cmluZ1tdKTogYW55O1xufVxuXG4vLyBUT0RPKGFsZXhlYWdsZSk6IHJlbW92ZSB0aGUgZHVwbGljYXRpb24gb2YgdGhpcyBkb2MuIEl0IGlzIGNvcGllZCBmcm9tIENvbXBvbmVudE1ldGFkYXRhLlxuLyoqXG4gKiBEZWNsYXJlIHJldXNhYmxlIFVJIGJ1aWxkaW5nIGJsb2NrcyBmb3IgYW4gYXBwbGljYXRpb24uXG4gKlxuICogRWFjaCBBbmd1bGFyIGNvbXBvbmVudCByZXF1aXJlcyBhIHNpbmdsZSBgQENvbXBvbmVudGAgYW5ub3RhdGlvbi4gVGhlIGBAQ29tcG9uZW50YFxuICogYW5ub3RhdGlvbiBzcGVjaWZpZXMgd2hlbiBhIGNvbXBvbmVudCBpcyBpbnN0YW50aWF0ZWQsIGFuZCB3aGljaCBwcm9wZXJ0aWVzIGFuZCBob3N0TGlzdGVuZXJzIGl0XG4gKiBiaW5kcyB0by5cbiAqXG4gKiBXaGVuIGEgY29tcG9uZW50IGlzIGluc3RhbnRpYXRlZCwgQW5ndWxhclxuICogLSBjcmVhdGVzIGEgc2hhZG93IERPTSBmb3IgdGhlIGNvbXBvbmVudC5cbiAqIC0gbG9hZHMgdGhlIHNlbGVjdGVkIHRlbXBsYXRlIGludG8gdGhlIHNoYWRvdyBET00uXG4gKiAtIGNyZWF0ZXMgYWxsIHRoZSBpbmplY3RhYmxlIG9iamVjdHMgY29uZmlndXJlZCB3aXRoIGBwcm92aWRlcnNgIGFuZCBgdmlld1Byb3ZpZGVyc2AuXG4gKlxuICogQWxsIHRlbXBsYXRlIGV4cHJlc3Npb25zIGFuZCBzdGF0ZW1lbnRzIGFyZSB0aGVuIGV2YWx1YXRlZCBhZ2FpbnN0IHRoZSBjb21wb25lbnQgaW5zdGFuY2UuXG4gKlxuICogIyMgTGlmZWN5Y2xlIGhvb2tzXG4gKlxuICogV2hlbiB0aGUgY29tcG9uZW50IGNsYXNzIGltcGxlbWVudHMgc29tZSB7QGxpbmsgYW5ndWxhcjIvbGlmZWN5Y2xlX2hvb2tzfSB0aGUgY2FsbGJhY2tzIGFyZVxuICogY2FsbGVkIGJ5IHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIGF0IGRlZmluZWQgcG9pbnRzIGluIHRpbWUgZHVyaW5nIHRoZSBsaWZlIG9mIHRoZSBjb21wb25lbnQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiB7QGV4YW1wbGUgY29yZS90cy9tZXRhZGF0YS9tZXRhZGF0YS50cyByZWdpb249J2NvbXBvbmVudCd9XG4gKi9cbmV4cG9ydCB2YXIgQ29tcG9uZW50OiBDb21wb25lbnRGYWN0b3J5ID1cbiAgICA8Q29tcG9uZW50RmFjdG9yeT5tYWtlRGVjb3JhdG9yKENvbXBvbmVudE1ldGFkYXRhLCAoZm46IGFueSkgPT4gZm4uVmlldyA9IFZpZXcpO1xuXG4vLyBUT0RPKGFsZXhlYWdsZSk6IHJlbW92ZSB0aGUgZHVwbGljYXRpb24gb2YgdGhpcyBkb2MuIEl0IGlzIGNvcGllZCBmcm9tIERpcmVjdGl2ZU1ldGFkYXRhLlxuLyoqXG4gKiBEaXJlY3RpdmVzIGFsbG93IHlvdSB0byBhdHRhY2ggYmVoYXZpb3IgdG8gZWxlbWVudHMgaW4gdGhlIERPTS5cbiAqXG4gKiB7QGxpbmsgRGlyZWN0aXZlTWV0YWRhdGF9cyB3aXRoIGFuIGVtYmVkZGVkIHZpZXcgYXJlIGNhbGxlZCB7QGxpbmsgQ29tcG9uZW50TWV0YWRhdGF9cy5cbiAqXG4gKiBBIGRpcmVjdGl2ZSBjb25zaXN0cyBvZiBhIHNpbmdsZSBkaXJlY3RpdmUgYW5ub3RhdGlvbiBhbmQgYSBjb250cm9sbGVyIGNsYXNzLiBXaGVuIHRoZVxuICogZGlyZWN0aXZlJ3MgYHNlbGVjdG9yYCBtYXRjaGVzXG4gKiBlbGVtZW50cyBpbiB0aGUgRE9NLCB0aGUgZm9sbG93aW5nIHN0ZXBzIG9jY3VyOlxuICpcbiAqIDEuIEZvciBlYWNoIGRpcmVjdGl2ZSwgdGhlIGBFbGVtZW50SW5qZWN0b3JgIGF0dGVtcHRzIHRvIHJlc29sdmUgdGhlIGRpcmVjdGl2ZSdzIGNvbnN0cnVjdG9yXG4gKiBhcmd1bWVudHMuXG4gKiAyLiBBbmd1bGFyIGluc3RhbnRpYXRlcyBkaXJlY3RpdmVzIGZvciBlYWNoIG1hdGNoZWQgZWxlbWVudCB1c2luZyBgRWxlbWVudEluamVjdG9yYCBpbiBhXG4gKiBkZXB0aC1maXJzdCBvcmRlcixcbiAqICAgIGFzIGRlY2xhcmVkIGluIHRoZSBIVE1MLlxuICpcbiAqICMjIFVuZGVyc3RhbmRpbmcgSG93IEluamVjdGlvbiBXb3Jrc1xuICpcbiAqIFRoZXJlIGFyZSB0aHJlZSBzdGFnZXMgb2YgaW5qZWN0aW9uIHJlc29sdXRpb24uXG4gKiAtICpQcmUtZXhpc3RpbmcgSW5qZWN0b3JzKjpcbiAqICAgLSBUaGUgdGVybWluYWwge0BsaW5rIEluamVjdG9yfSBjYW5ub3QgcmVzb2x2ZSBkZXBlbmRlbmNpZXMuIEl0IGVpdGhlciB0aHJvd3MgYW4gZXJyb3Igb3IsIGlmXG4gKiB0aGUgZGVwZW5kZW5jeSB3YXNcbiAqICAgICBzcGVjaWZpZWQgYXMgYEBPcHRpb25hbGAsIHJldHVybnMgYG51bGxgLlxuICogICAtIFRoZSBwbGF0Zm9ybSBpbmplY3RvciByZXNvbHZlcyBicm93c2VyIHNpbmdsZXRvbiByZXNvdXJjZXMsIHN1Y2ggYXM6IGNvb2tpZXMsIHRpdGxlLFxuICogbG9jYXRpb24sIGFuZCBvdGhlcnMuXG4gKiAtICpDb21wb25lbnQgSW5qZWN0b3JzKjogRWFjaCBjb21wb25lbnQgaW5zdGFuY2UgaGFzIGl0cyBvd24ge0BsaW5rIEluamVjdG9yfSwgYW5kIHRoZXkgZm9sbG93XG4gKiB0aGUgc2FtZSBwYXJlbnQtY2hpbGQgaGllcmFyY2h5XG4gKiAgICAgYXMgdGhlIGNvbXBvbmVudCBpbnN0YW5jZXMgaW4gdGhlIERPTS5cbiAqIC0gKkVsZW1lbnQgSW5qZWN0b3JzKjogRWFjaCBjb21wb25lbnQgaW5zdGFuY2UgaGFzIGEgU2hhZG93IERPTS4gV2l0aGluIHRoZSBTaGFkb3cgRE9NIGVhY2hcbiAqIGVsZW1lbnQgaGFzIGFuIGBFbGVtZW50SW5qZWN0b3JgXG4gKiAgICAgd2hpY2ggZm9sbG93IHRoZSBzYW1lIHBhcmVudC1jaGlsZCBoaWVyYXJjaHkgYXMgdGhlIERPTSBlbGVtZW50cyB0aGVtc2VsdmVzLlxuICpcbiAqIFdoZW4gYSB0ZW1wbGF0ZSBpcyBpbnN0YW50aWF0ZWQsIGl0IGFsc28gbXVzdCBpbnN0YW50aWF0ZSB0aGUgY29ycmVzcG9uZGluZyBkaXJlY3RpdmVzIGluIGFcbiAqIGRlcHRoLWZpcnN0IG9yZGVyLiBUaGVcbiAqIGN1cnJlbnQgYEVsZW1lbnRJbmplY3RvcmAgcmVzb2x2ZXMgdGhlIGNvbnN0cnVjdG9yIGRlcGVuZGVuY2llcyBmb3IgZWFjaCBkaXJlY3RpdmUuXG4gKlxuICogQW5ndWxhciB0aGVuIHJlc29sdmVzIGRlcGVuZGVuY2llcyBhcyBmb2xsb3dzLCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXBwZWFyIGluIHRoZVxuICoge0BsaW5rIFZpZXdNZXRhZGF0YX06XG4gKlxuICogMS4gRGVwZW5kZW5jaWVzIG9uIHRoZSBjdXJyZW50IGVsZW1lbnRcbiAqIDIuIERlcGVuZGVuY2llcyBvbiBlbGVtZW50IGluamVjdG9ycyBhbmQgdGhlaXIgcGFyZW50cyB1bnRpbCBpdCBlbmNvdW50ZXJzIGEgU2hhZG93IERPTSBib3VuZGFyeVxuICogMy4gRGVwZW5kZW5jaWVzIG9uIGNvbXBvbmVudCBpbmplY3RvcnMgYW5kIHRoZWlyIHBhcmVudHMgdW50aWwgaXQgZW5jb3VudGVycyB0aGUgcm9vdCBjb21wb25lbnRcbiAqIDQuIERlcGVuZGVuY2llcyBvbiBwcmUtZXhpc3RpbmcgaW5qZWN0b3JzXG4gKlxuICpcbiAqIFRoZSBgRWxlbWVudEluamVjdG9yYCBjYW4gaW5qZWN0IG90aGVyIGRpcmVjdGl2ZXMsIGVsZW1lbnQtc3BlY2lmaWMgc3BlY2lhbCBvYmplY3RzLCBvciBpdCBjYW5cbiAqIGRlbGVnYXRlIHRvIHRoZSBwYXJlbnRcbiAqIGluamVjdG9yLlxuICpcbiAqIFRvIGluamVjdCBvdGhlciBkaXJlY3RpdmVzLCBkZWNsYXJlIHRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgYXM6XG4gKiAtIGBkaXJlY3RpdmU6RGlyZWN0aXZlVHlwZWA6IGEgZGlyZWN0aXZlIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQgb25seVxuICogLSBgQEhvc3QoKSBkaXJlY3RpdmU6RGlyZWN0aXZlVHlwZWA6IGFueSBkaXJlY3RpdmUgdGhhdCBtYXRjaGVzIHRoZSB0eXBlIGJldHdlZW4gdGhlIGN1cnJlbnRcbiAqIGVsZW1lbnQgYW5kIHRoZVxuICogICAgU2hhZG93IERPTSByb290LlxuICogLSBgQFF1ZXJ5KERpcmVjdGl2ZVR5cGUpIHF1ZXJ5OlF1ZXJ5TGlzdDxEaXJlY3RpdmVUeXBlPmA6IEEgbGl2ZSBjb2xsZWN0aW9uIG9mIGRpcmVjdCBjaGlsZFxuICogZGlyZWN0aXZlcy5cbiAqIC0gYEBRdWVyeURlc2NlbmRhbnRzKERpcmVjdGl2ZVR5cGUpIHF1ZXJ5OlF1ZXJ5TGlzdDxEaXJlY3RpdmVUeXBlPmA6IEEgbGl2ZSBjb2xsZWN0aW9uIG9mIGFueVxuICogY2hpbGQgZGlyZWN0aXZlcy5cbiAqXG4gKiBUbyBpbmplY3QgZWxlbWVudC1zcGVjaWZpYyBzcGVjaWFsIG9iamVjdHMsIGRlY2xhcmUgdGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBhczpcbiAqIC0gYGVsZW1lbnQ6IEVsZW1lbnRSZWZgIHRvIG9idGFpbiBhIHJlZmVyZW5jZSB0byBsb2dpY2FsIGVsZW1lbnQgaW4gdGhlIHZpZXcuXG4gKiAtIGB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmYCB0byBjb250cm9sIGNoaWxkIHRlbXBsYXRlIGluc3RhbnRpYXRpb24sIGZvclxuICoge0BsaW5rIERpcmVjdGl2ZU1ldGFkYXRhfSBkaXJlY3RpdmVzIG9ubHlcbiAqIC0gYGJpbmRpbmdQcm9wYWdhdGlvbjogQmluZGluZ1Byb3BhZ2F0aW9uYCB0byBjb250cm9sIGNoYW5nZSBkZXRlY3Rpb24gaW4gYSBtb3JlIGdyYW51bGFyIHdheS5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgaG93IGRlcGVuZGVuY3kgaW5qZWN0aW9uIHJlc29sdmVzIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBpblxuICogcHJhY3RpY2UuXG4gKlxuICpcbiAqIEFzc3VtZSB0aGlzIEhUTUwgdGVtcGxhdGU6XG4gKlxuICogYGBgXG4gKiA8ZGl2IGRlcGVuZGVuY3k9XCIxXCI+XG4gKiAgIDxkaXYgZGVwZW5kZW5jeT1cIjJcIj5cbiAqICAgICA8ZGl2IGRlcGVuZGVuY3k9XCIzXCIgbXktZGlyZWN0aXZlPlxuICogICAgICAgPGRpdiBkZXBlbmRlbmN5PVwiNFwiPlxuICogICAgICAgICA8ZGl2IGRlcGVuZGVuY3k9XCI1XCI+PC9kaXY+XG4gKiAgICAgICA8L2Rpdj5cbiAqICAgICAgIDxkaXYgZGVwZW5kZW5jeT1cIjZcIj48L2Rpdj5cbiAqICAgICA8L2Rpdj5cbiAqICAgPC9kaXY+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICpcbiAqIFdpdGggdGhlIGZvbGxvd2luZyBgZGVwZW5kZW5jeWAgZGVjb3JhdG9yIGFuZCBgU29tZVNlcnZpY2VgIGluamVjdGFibGUgY2xhc3MuXG4gKlxuICogYGBgXG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBTb21lU2VydmljZSB7XG4gKiB9XG4gKlxuICogQERpcmVjdGl2ZSh7XG4gKiAgIHNlbGVjdG9yOiAnW2RlcGVuZGVuY3ldJyxcbiAqICAgaW5wdXRzOiBbXG4gKiAgICAgJ2lkOiBkZXBlbmRlbmN5J1xuICogICBdXG4gKiB9KVxuICogY2xhc3MgRGVwZW5kZW5jeSB7XG4gKiAgIGlkOnN0cmluZztcbiAqIH1cbiAqIGBgYFxuICpcbiAqIExldCdzIHN0ZXAgdGhyb3VnaCB0aGUgZGlmZmVyZW50IHdheXMgaW4gd2hpY2ggYE15RGlyZWN0aXZlYCBjb3VsZCBiZSBkZWNsYXJlZC4uLlxuICpcbiAqXG4gKiAjIyMgTm8gaW5qZWN0aW9uXG4gKlxuICogSGVyZSB0aGUgY29uc3RydWN0b3IgaXMgZGVjbGFyZWQgd2l0aCBubyBhcmd1bWVudHMsIHRoZXJlZm9yZSBub3RoaW5nIGlzIGluamVjdGVkIGludG9cbiAqIGBNeURpcmVjdGl2ZWAuXG4gKlxuICogYGBgXG4gKiBARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbXktZGlyZWN0aXZlXScgfSlcbiAqIGNsYXNzIE15RGlyZWN0aXZlIHtcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIHdvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIG5vIGRlcGVuZGVuY2llcy5cbiAqXG4gKlxuICogIyMjIENvbXBvbmVudC1sZXZlbCBpbmplY3Rpb25cbiAqXG4gKiBEaXJlY3RpdmVzIGNhbiBpbmplY3QgYW55IGluamVjdGFibGUgaW5zdGFuY2UgZnJvbSB0aGUgY2xvc2VzdCBjb21wb25lbnQgaW5qZWN0b3Igb3IgYW55IG9mIGl0c1xuICogcGFyZW50cy5cbiAqXG4gKiBIZXJlLCB0aGUgY29uc3RydWN0b3IgZGVjbGFyZXMgYSBwYXJhbWV0ZXIsIGBzb21lU2VydmljZWAsIGFuZCBpbmplY3RzIHRoZSBgU29tZVNlcnZpY2VgIHR5cGVcbiAqIGZyb20gdGhlIHBhcmVudFxuICogY29tcG9uZW50J3MgaW5qZWN0b3IuXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tteS1kaXJlY3RpdmVdJyB9KVxuICogY2xhc3MgTXlEaXJlY3RpdmUge1xuICogICBjb25zdHJ1Y3Rvcihzb21lU2VydmljZTogU29tZVNlcnZpY2UpIHtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgd291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkZXBlbmRlbmN5IG9uIGBTb21lU2VydmljZWAuXG4gKlxuICpcbiAqICMjIyBJbmplY3RpbmcgYSBkaXJlY3RpdmUgZnJvbSB0aGUgY3VycmVudCBlbGVtZW50XG4gKlxuICogRGlyZWN0aXZlcyBjYW4gaW5qZWN0IG90aGVyIGRpcmVjdGl2ZXMgZGVjbGFyZWQgb24gdGhlIGN1cnJlbnQgZWxlbWVudC5cbiAqXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tteS1kaXJlY3RpdmVdJyB9KVxuICogY2xhc3MgTXlEaXJlY3RpdmUge1xuICogICBjb25zdHJ1Y3RvcihkZXBlbmRlbmN5OiBEZXBlbmRlbmN5KSB7XG4gKiAgICAgZXhwZWN0KGRlcGVuZGVuY3kuaWQpLnRvRXF1YWwoMyk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICogVGhpcyBkaXJlY3RpdmUgd291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYERlcGVuZGVuY3lgIGRlY2xhcmVkIGF0IHRoZSBzYW1lIGVsZW1lbnQsIGluIHRoaXMgY2FzZVxuICogYGRlcGVuZGVuY3k9XCIzXCJgLlxuICpcbiAqICMjIyBJbmplY3RpbmcgYSBkaXJlY3RpdmUgZnJvbSBhbnkgYW5jZXN0b3IgZWxlbWVudHNcbiAqXG4gKiBEaXJlY3RpdmVzIGNhbiBpbmplY3Qgb3RoZXIgZGlyZWN0aXZlcyBkZWNsYXJlZCBvbiBhbnkgYW5jZXN0b3IgZWxlbWVudCAoaW4gdGhlIGN1cnJlbnQgU2hhZG93XG4gKiBET00pLCBpLmUuIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQsIHRoZVxuICogcGFyZW50IGVsZW1lbnQsIG9yIGl0cyBwYXJlbnRzLlxuICogYGBgXG4gKiBARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbXktZGlyZWN0aXZlXScgfSlcbiAqIGNsYXNzIE15RGlyZWN0aXZlIHtcbiAqICAgY29uc3RydWN0b3IoQEhvc3QoKSBkZXBlbmRlbmN5OiBEZXBlbmRlbmN5KSB7XG4gKiAgICAgZXhwZWN0KGRlcGVuZGVuY3kuaWQpLnRvRXF1YWwoMik7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIGBASG9zdGAgY2hlY2tzIHRoZSBjdXJyZW50IGVsZW1lbnQsIHRoZSBwYXJlbnQsIGFzIHdlbGwgYXMgaXRzIHBhcmVudHMgcmVjdXJzaXZlbHkuIElmXG4gKiBgZGVwZW5kZW5jeT1cIjJcImAgZGlkbid0XG4gKiBleGlzdCBvbiB0aGUgZGlyZWN0IHBhcmVudCwgdGhpcyBpbmplY3Rpb24gd291bGRcbiAqIGhhdmUgcmV0dXJuZWRcbiAqIGBkZXBlbmRlbmN5PVwiMVwiYC5cbiAqXG4gKlxuICogIyMjIEluamVjdGluZyBhIGxpdmUgY29sbGVjdGlvbiBvZiBkaXJlY3QgY2hpbGQgZGlyZWN0aXZlc1xuICpcbiAqXG4gKiBBIGRpcmVjdGl2ZSBjYW4gYWxzbyBxdWVyeSBmb3Igb3RoZXIgY2hpbGQgZGlyZWN0aXZlcy4gU2luY2UgcGFyZW50IGRpcmVjdGl2ZXMgYXJlIGluc3RhbnRpYXRlZFxuICogYmVmb3JlIGNoaWxkIGRpcmVjdGl2ZXMsIGEgZGlyZWN0aXZlIGNhbid0IHNpbXBseSBpbmplY3QgdGhlIGxpc3Qgb2YgY2hpbGQgZGlyZWN0aXZlcy4gSW5zdGVhZCxcbiAqIHRoZSBkaXJlY3RpdmUgaW5qZWN0cyBhIHtAbGluayBRdWVyeUxpc3R9LCB3aGljaCB1cGRhdGVzIGl0cyBjb250ZW50cyBhcyBjaGlsZHJlbiBhcmUgYWRkZWQsXG4gKiByZW1vdmVkLCBvciBtb3ZlZCBieSBhIGRpcmVjdGl2ZSB0aGF0IHVzZXMgYSB7QGxpbmsgVmlld0NvbnRhaW5lclJlZn0gc3VjaCBhcyBhIGBuZ0ZvcmAsIGFuXG4gKiBgbmdJZmAsIG9yIGFuIGBuZ1N3aXRjaGAuXG4gKlxuICogYGBgXG4gKiBARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbXktZGlyZWN0aXZlXScgfSlcbiAqIGNsYXNzIE15RGlyZWN0aXZlIHtcbiAqICAgY29uc3RydWN0b3IoQFF1ZXJ5KERlcGVuZGVuY3kpIGRlcGVuZGVuY2llczpRdWVyeUxpc3Q8RGVwZW5kZW5jeT4pIHtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgd291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSB7QGxpbmsgUXVlcnlMaXN0fSB3aGljaCBjb250YWlucyBgRGVwZW5kZW5jeWAgNCBhbmRcbiAqIDYuIEhlcmUsIGBEZXBlbmRlbmN5YCA1IHdvdWxkIG5vdCBiZSBpbmNsdWRlZCwgYmVjYXVzZSBpdCBpcyBub3QgYSBkaXJlY3QgY2hpbGQuXG4gKlxuICogIyMjIEluamVjdGluZyBhIGxpdmUgY29sbGVjdGlvbiBvZiBkZXNjZW5kYW50IGRpcmVjdGl2ZXNcbiAqXG4gKiBCeSBwYXNzaW5nIHRoZSBkZXNjZW5kYW50IGZsYWcgdG8gYEBRdWVyeWAgYWJvdmUsIHdlIGNhbiBpbmNsdWRlIHRoZSBjaGlsZHJlbiBvZiB0aGUgY2hpbGRcbiAqIGVsZW1lbnRzLlxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW215LWRpcmVjdGl2ZV0nIH0pXG4gKiBjbGFzcyBNeURpcmVjdGl2ZSB7XG4gKiAgIGNvbnN0cnVjdG9yKEBRdWVyeShEZXBlbmRlbmN5LCB7ZGVzY2VuZGFudHM6IHRydWV9KSBkZXBlbmRlbmNpZXM6UXVlcnlMaXN0PERlcGVuZGVuY3k+KSB7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIHdvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgUXVlcnkgd2hpY2ggd291bGQgY29udGFpbiBgRGVwZW5kZW5jeWAgNCwgNSBhbmQgNi5cbiAqXG4gKiAjIyMgT3B0aW9uYWwgaW5qZWN0aW9uXG4gKlxuICogVGhlIG5vcm1hbCBiZWhhdmlvciBvZiBkaXJlY3RpdmVzIGlzIHRvIHJldHVybiBhbiBlcnJvciB3aGVuIGEgc3BlY2lmaWVkIGRlcGVuZGVuY3kgY2Fubm90IGJlXG4gKiByZXNvbHZlZC4gSWYgeW91XG4gKiB3b3VsZCBsaWtlIHRvIGluamVjdCBgbnVsbGAgb24gdW5yZXNvbHZlZCBkZXBlbmRlbmN5IGluc3RlYWQsIHlvdSBjYW4gYW5ub3RhdGUgdGhhdCBkZXBlbmRlbmN5XG4gKiB3aXRoIGBAT3B0aW9uYWwoKWAuXG4gKiBUaGlzIGV4cGxpY2l0bHkgcGVybWl0cyB0aGUgYXV0aG9yIG9mIGEgdGVtcGxhdGUgdG8gdHJlYXQgc29tZSBvZiB0aGUgc3Vycm91bmRpbmcgZGlyZWN0aXZlcyBhc1xuICogb3B0aW9uYWwuXG4gKlxuICogYGBgXG4gKiBARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbXktZGlyZWN0aXZlXScgfSlcbiAqIGNsYXNzIE15RGlyZWN0aXZlIHtcbiAqICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgZGVwZW5kZW5jeTpEZXBlbmRlbmN5KSB7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIHdvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgYERlcGVuZGVuY3lgIGRpcmVjdGl2ZSBmb3VuZCBvbiB0aGUgY3VycmVudCBlbGVtZW50LlxuICogSWYgbm9uZSBjYW4gYmVcbiAqIGZvdW5kLCB0aGUgaW5qZWN0b3Igc3VwcGxpZXMgYG51bGxgIGluc3RlYWQgb2YgdGhyb3dpbmcgYW4gZXJyb3IuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBIZXJlIHdlIHVzZSBhIGRlY29yYXRvciBkaXJlY3RpdmUgdG8gc2ltcGx5IGRlZmluZSBiYXNpYyB0b29sLXRpcCBiZWhhdmlvci5cbiAqXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoe1xuICogICBzZWxlY3RvcjogJ1t0b29sdGlwXScsXG4gKiAgIGlucHV0czogW1xuICogICAgICd0ZXh0OiB0b29sdGlwJ1xuICogICBdLFxuICogICBob3N0OiB7XG4gKiAgICAgJyhtb3VzZWVudGVyKSc6ICdvbk1vdXNlRW50ZXIoKScsXG4gKiAgICAgJyhtb3VzZWxlYXZlKSc6ICdvbk1vdXNlTGVhdmUoKSdcbiAqICAgfVxuICogfSlcbiAqIGNsYXNzIFRvb2x0aXB7XG4gKiAgIHRleHQ6c3RyaW5nO1xuICogICBvdmVybGF5Ok92ZXJsYXk7IC8vIE5PVCBZRVQgSU1QTEVNRU5URURcbiAqICAgb3ZlcmxheU1hbmFnZXI6T3ZlcmxheU1hbmFnZXI7IC8vIE5PVCBZRVQgSU1QTEVNRU5URURcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKG92ZXJsYXlNYW5hZ2VyOk92ZXJsYXlNYW5hZ2VyKSB7XG4gKiAgICAgdGhpcy5vdmVybGF5ID0gb3ZlcmxheTtcbiAqICAgfVxuICpcbiAqICAgb25Nb3VzZUVudGVyKCkge1xuICogICAgIC8vIGV4YWN0IHNpZ25hdHVyZSB0byBiZSBkZXRlcm1pbmVkXG4gKiAgICAgdGhpcy5vdmVybGF5ID0gdGhpcy5vdmVybGF5TWFuYWdlci5vcGVuKHRleHQsIC4uLik7XG4gKiAgIH1cbiAqXG4gKiAgIG9uTW91c2VMZWF2ZSgpIHtcbiAqICAgICB0aGlzLm92ZXJsYXkuY2xvc2UoKTtcbiAqICAgICB0aGlzLm92ZXJsYXkgPSBudWxsO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqIEluIG91ciBIVE1MIHRlbXBsYXRlLCB3ZSBjYW4gdGhlbiBhZGQgdGhpcyBiZWhhdmlvciB0byBhIGA8ZGl2PmAgb3IgYW55IG90aGVyIGVsZW1lbnQgd2l0aCB0aGVcbiAqIGB0b29sdGlwYCBzZWxlY3RvcixcbiAqIGxpa2Ugc286XG4gKlxuICogYGBgXG4gKiA8ZGl2IHRvb2x0aXA9XCJzb21lIHRleHQgaGVyZVwiPjwvZGl2PlxuICogYGBgXG4gKlxuICogRGlyZWN0aXZlcyBjYW4gYWxzbyBjb250cm9sIHRoZSBpbnN0YW50aWF0aW9uLCBkZXN0cnVjdGlvbiwgYW5kIHBvc2l0aW9uaW5nIG9mIGlubGluZSB0ZW1wbGF0ZVxuICogZWxlbWVudHM6XG4gKlxuICogQSBkaXJlY3RpdmUgdXNlcyBhIHtAbGluayBWaWV3Q29udGFpbmVyUmVmfSB0byBpbnN0YW50aWF0ZSwgaW5zZXJ0LCBtb3ZlLCBhbmQgZGVzdHJveSB2aWV3cyBhdFxuICogcnVudGltZS5cbiAqIFRoZSB7QGxpbmsgVmlld0NvbnRhaW5lclJlZn0gaXMgY3JlYXRlZCBhcyBhIHJlc3VsdCBvZiBgPHRlbXBsYXRlPmAgZWxlbWVudCwgYW5kIHJlcHJlc2VudHMgYVxuICogbG9jYXRpb24gaW4gdGhlIGN1cnJlbnQgdmlld1xuICogd2hlcmUgdGhlc2UgYWN0aW9ucyBhcmUgcGVyZm9ybWVkLlxuICpcbiAqIFZpZXdzIGFyZSBhbHdheXMgY3JlYXRlZCBhcyBjaGlsZHJlbiBvZiB0aGUgY3VycmVudCB7QGxpbmsgVmlld01ldGFkYXRhfSwgYW5kIGFzIHNpYmxpbmdzIG9mIHRoZVxuICogYDx0ZW1wbGF0ZT5gIGVsZW1lbnQuIFRodXMgYVxuICogZGlyZWN0aXZlIGluIGEgY2hpbGQgdmlldyBjYW5ub3QgaW5qZWN0IHRoZSBkaXJlY3RpdmUgdGhhdCBjcmVhdGVkIGl0LlxuICpcbiAqIFNpbmNlIGRpcmVjdGl2ZXMgdGhhdCBjcmVhdGUgdmlld3MgdmlhIFZpZXdDb250YWluZXJzIGFyZSBjb21tb24gaW4gQW5ndWxhciwgYW5kIHVzaW5nIHRoZSBmdWxsXG4gKiBgPHRlbXBsYXRlPmAgZWxlbWVudCBzeW50YXggaXMgd29yZHksIEFuZ3VsYXJcbiAqIGFsc28gc3VwcG9ydHMgYSBzaG9ydGhhbmQgbm90YXRpb246IGA8bGkgKmZvbz1cImJhclwiPmAgYW5kIGA8bGkgdGVtcGxhdGU9XCJmb286IGJhclwiPmAgYXJlXG4gKiBlcXVpdmFsZW50LlxuICpcbiAqIFRodXMsXG4gKlxuICogYGBgXG4gKiA8dWw+XG4gKiAgIDxsaSAqZm9vPVwiYmFyXCIgdGl0bGU9XCJ0ZXh0XCI+PC9saT5cbiAqIDwvdWw+XG4gKiBgYGBcbiAqXG4gKiBFeHBhbmRzIGluIHVzZSB0bzpcbiAqXG4gKiBgYGBcbiAqIDx1bD5cbiAqICAgPHRlbXBsYXRlIFtmb29dPVwiYmFyXCI+XG4gKiAgICAgPGxpIHRpdGxlPVwidGV4dFwiPjwvbGk+XG4gKiAgIDwvdGVtcGxhdGU+XG4gKiA8L3VsPlxuICogYGBgXG4gKlxuICogTm90aWNlIHRoYXQgYWx0aG91Z2ggdGhlIHNob3J0aGFuZCBwbGFjZXMgYCpmb289XCJiYXJcImAgd2l0aGluIHRoZSBgPGxpPmAgZWxlbWVudCwgdGhlIGJpbmRpbmcgZm9yXG4gKiB0aGUgZGlyZWN0aXZlXG4gKiBjb250cm9sbGVyIGlzIGNvcnJlY3RseSBpbnN0YW50aWF0ZWQgb24gdGhlIGA8dGVtcGxhdGU+YCBlbGVtZW50IHJhdGhlciB0aGFuIHRoZSBgPGxpPmAgZWxlbWVudC5cbiAqXG4gKiAjIyBMaWZlY3ljbGUgaG9va3NcbiAqXG4gKiBXaGVuIHRoZSBkaXJlY3RpdmUgY2xhc3MgaW1wbGVtZW50cyBzb21lIHtAbGluayBhbmd1bGFyMi9saWZlY3ljbGVfaG9va3N9IHRoZSBjYWxsYmFja3MgYXJlXG4gKiBjYWxsZWQgYnkgdGhlIGNoYW5nZSBkZXRlY3Rpb24gYXQgZGVmaW5lZCBwb2ludHMgaW4gdGltZSBkdXJpbmcgdGhlIGxpZmUgb2YgdGhlIGRpcmVjdGl2ZS5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIExldCdzIHN1cHBvc2Ugd2Ugd2FudCB0byBpbXBsZW1lbnQgdGhlIGB1bmxlc3NgIGJlaGF2aW9yLCB0byBjb25kaXRpb25hbGx5IGluY2x1ZGUgYSB0ZW1wbGF0ZS5cbiAqXG4gKiBIZXJlIGlzIGEgc2ltcGxlIGRpcmVjdGl2ZSB0aGF0IHRyaWdnZXJzIG9uIGFuIGB1bmxlc3NgIHNlbGVjdG9yOlxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7XG4gKiAgIHNlbGVjdG9yOiAnW3VubGVzc10nLFxuICogICBpbnB1dHM6IFsndW5sZXNzJ11cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgVW5sZXNzIHtcbiAqICAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcbiAqICAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmO1xuICogICBwcmV2Q29uZGl0aW9uOiBib29sZWFuO1xuICpcbiAqICAgY29uc3RydWN0b3Iodmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmKSB7XG4gKiAgICAgdGhpcy52aWV3Q29udGFpbmVyID0gdmlld0NvbnRhaW5lcjtcbiAqICAgICB0aGlzLnRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG4gKiAgICAgdGhpcy5wcmV2Q29uZGl0aW9uID0gbnVsbDtcbiAqICAgfVxuICpcbiAqICAgc2V0IHVubGVzcyhuZXdDb25kaXRpb24pIHtcbiAqICAgICBpZiAobmV3Q29uZGl0aW9uICYmIChpc0JsYW5rKHRoaXMucHJldkNvbmRpdGlvbikgfHwgIXRoaXMucHJldkNvbmRpdGlvbikpIHtcbiAqICAgICAgIHRoaXMucHJldkNvbmRpdGlvbiA9IHRydWU7XG4gKiAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAqICAgICB9IGVsc2UgaWYgKCFuZXdDb25kaXRpb24gJiYgKGlzQmxhbmsodGhpcy5wcmV2Q29uZGl0aW9uKSB8fCB0aGlzLnByZXZDb25kaXRpb24pKSB7XG4gKiAgICAgICB0aGlzLnByZXZDb25kaXRpb24gPSBmYWxzZTtcbiAqICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGUodGhpcy50ZW1wbGF0ZVJlZik7XG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBXZSBjYW4gdGhlbiB1c2UgdGhpcyBgdW5sZXNzYCBzZWxlY3RvciBpbiBhIHRlbXBsYXRlOlxuICogYGBgXG4gKiA8dWw+XG4gKiAgIDxsaSAqdW5sZXNzPVwiZXhwclwiPjwvbGk+XG4gKiA8L3VsPlxuICogYGBgXG4gKlxuICogT25jZSB0aGUgZGlyZWN0aXZlIGluc3RhbnRpYXRlcyB0aGUgY2hpbGQgdmlldywgdGhlIHNob3J0aGFuZCBub3RhdGlvbiBmb3IgdGhlIHRlbXBsYXRlIGV4cGFuZHNcbiAqIGFuZCB0aGUgcmVzdWx0IGlzOlxuICpcbiAqIGBgYFxuICogPHVsPlxuICogICA8dGVtcGxhdGUgW3VubGVzc109XCJleHBcIj5cbiAqICAgICA8bGk+PC9saT5cbiAqICAgPC90ZW1wbGF0ZT5cbiAqICAgPGxpPjwvbGk+XG4gKiA8L3VsPlxuICogYGBgXG4gKlxuICogTm90ZSBhbHNvIHRoYXQgYWx0aG91Z2ggdGhlIGA8bGk+PC9saT5gIHRlbXBsYXRlIHN0aWxsIGV4aXN0cyBpbnNpZGUgdGhlIGA8dGVtcGxhdGU+PC90ZW1wbGF0ZT5gLFxuICogdGhlIGluc3RhbnRpYXRlZFxuICogdmlldyBvY2N1cnMgb24gdGhlIHNlY29uZCBgPGxpPjwvbGk+YCB3aGljaCBpcyBhIHNpYmxpbmcgdG8gdGhlIGA8dGVtcGxhdGU+YCBlbGVtZW50LlxuICovXG5leHBvcnQgdmFyIERpcmVjdGl2ZTogRGlyZWN0aXZlRmFjdG9yeSA9IDxEaXJlY3RpdmVGYWN0b3J5Pm1ha2VEZWNvcmF0b3IoRGlyZWN0aXZlTWV0YWRhdGEpO1xuXG4vLyBUT0RPKGFsZXhlYWdsZSk6IHJlbW92ZSB0aGUgZHVwbGljYXRpb24gb2YgdGhpcyBkb2MuIEl0IGlzIGNvcGllZCBmcm9tIFZpZXdNZXRhZGF0YS5cbi8qKlxuICogTWV0YWRhdGEgcHJvcGVydGllcyBhdmFpbGFibGUgZm9yIGNvbmZpZ3VyaW5nIFZpZXdzLlxuICpcbiAqIEVhY2ggQW5ndWxhciBjb21wb25lbnQgcmVxdWlyZXMgYSBzaW5nbGUgYEBDb21wb25lbnRgIGFuZCBhdCBsZWFzdCBvbmUgYEBWaWV3YCBhbm5vdGF0aW9uLiBUaGVcbiAqIGBAVmlld2AgYW5ub3RhdGlvbiBzcGVjaWZpZXMgdGhlIEhUTUwgdGVtcGxhdGUgdG8gdXNlLCBhbmQgbGlzdHMgdGhlIGRpcmVjdGl2ZXMgdGhhdCBhcmUgYWN0aXZlXG4gKiB3aXRoaW4gdGhlIHRlbXBsYXRlLlxuICpcbiAqIFdoZW4gYSBjb21wb25lbnQgaXMgaW5zdGFudGlhdGVkLCB0aGUgdGVtcGxhdGUgaXMgbG9hZGVkIGludG8gdGhlIGNvbXBvbmVudCdzIHNoYWRvdyByb290LCBhbmRcbiAqIHRoZSBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBpbiB0aGUgdGVtcGxhdGUgYXJlIGV2YWx1YXRlZCBhZ2FpbnN0IHRoZSBjb21wb25lbnQuXG4gKlxuICogRm9yIGRldGFpbHMgb24gdGhlIGBAQ29tcG9uZW50YCBhbm5vdGF0aW9uLCBzZWUge0BsaW5rIENvbXBvbmVudE1ldGFkYXRhfS5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnZ3JlZXQnLFxuICogICB0ZW1wbGF0ZTogJ0hlbGxvIHt7bmFtZX19IScsXG4gKiAgIGRpcmVjdGl2ZXM6IFtHcmVldFVzZXIsIEJvbGRdXG4gKiB9KVxuICogY2xhc3MgR3JlZXQge1xuICogICBuYW1lOiBzdHJpbmc7XG4gKlxuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgICB0aGlzLm5hbWUgPSAnV29ybGQnO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xudmFyIFZpZXc6IFZpZXdGYWN0b3J5ID0gPFZpZXdGYWN0b3J5Pm1ha2VEZWNvcmF0b3IoVmlld01ldGFkYXRhLCAoZm46IGFueSkgPT4gZm4uVmlldyA9IFZpZXcpO1xuXG4vKipcbiAqIFNwZWNpZmllcyB0aGF0IGEgY29uc3RhbnQgYXR0cmlidXRlIHZhbHVlIHNob3VsZCBiZSBpbmplY3RlZC5cbiAqXG4gKiBUaGUgZGlyZWN0aXZlIGNhbiBpbmplY3QgY29uc3RhbnQgc3RyaW5nIGxpdGVyYWxzIG9mIGhvc3QgZWxlbWVudCBhdHRyaWJ1dGVzLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogU3VwcG9zZSB3ZSBoYXZlIGFuIGA8aW5wdXQ+YCBlbGVtZW50IGFuZCB3YW50IHRvIGtub3cgaXRzIGB0eXBlYC5cbiAqXG4gKiBgYGBodG1sXG4gKiA8aW5wdXQgdHlwZT1cInRleHRcIj5cbiAqIGBgYFxuICpcbiAqIEEgZGVjb3JhdG9yIGNhbiBpbmplY3Qgc3RyaW5nIGxpdGVyYWwgYHRleHRgIGxpa2Ugc286XG4gKlxuICoge0BleGFtcGxlIGNvcmUvdHMvbWV0YWRhdGEvbWV0YWRhdGEudHMgcmVnaW9uPSdhdHRyaWJ1dGVNZXRhZGF0YSd9XG4gKi9cbmV4cG9ydCB2YXIgQXR0cmlidXRlOiBBdHRyaWJ1dGVGYWN0b3J5ID0gbWFrZVBhcmFtRGVjb3JhdG9yKEF0dHJpYnV0ZU1ldGFkYXRhKTtcblxuLy8gVE9ETyhhbGV4ZWFnbGUpOiByZW1vdmUgdGhlIGR1cGxpY2F0aW9uIG9mIHRoaXMgZG9jLiBJdCBpcyBjb3BpZWQgZnJvbSBRdWVyeU1ldGFkYXRhLlxuLyoqXG4gKiBEZWNsYXJlcyBhbiBpbmplY3RhYmxlIHBhcmFtZXRlciB0byBiZSBhIGxpdmUgbGlzdCBvZiBkaXJlY3RpdmVzIG9yIHZhcmlhYmxlXG4gKiBiaW5kaW5ncyBmcm9tIHRoZSBjb250ZW50IGNoaWxkcmVuIG9mIGEgZGlyZWN0aXZlLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9sWTltOEhMeTd6MDZ2RG9VYVNOMj9wPXByZXZpZXcpKVxuICpcbiAqIEFzc3VtZSB0aGF0IGA8dGFicz5gIGNvbXBvbmVudCB3b3VsZCBsaWtlIHRvIGdldCBhIGxpc3QgaXRzIGNoaWxkcmVuIGA8cGFuZT5gXG4gKiBjb21wb25lbnRzIGFzIHNob3duIGluIHRoaXMgZXhhbXBsZTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8dGFicz5cbiAqICAgPHBhbmUgdGl0bGU9XCJPdmVydmlld1wiPi4uLjwvcGFuZT5cbiAqICAgPHBhbmUgKm5nRm9yPVwiI28gb2Ygb2JqZWN0c1wiIFt0aXRsZV09XCJvLnRpdGxlXCI+e3tvLnRleHR9fTwvcGFuZT5cbiAqIDwvdGFicz5cbiAqIGBgYFxuICpcbiAqIFRoZSBwcmVmZXJyZWQgc29sdXRpb24gaXMgdG8gcXVlcnkgZm9yIGBQYW5lYCBkaXJlY3RpdmVzIHVzaW5nIHRoaXMgZGVjb3JhdG9yLlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3BhbmUnLFxuICogICBpbnB1dHM6IFsndGl0bGUnXVxuICogfSlcbiAqIGNsYXNzIFBhbmUge1xuICogICB0aXRsZTpzdHJpbmc7XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgc2VsZWN0b3I6ICd0YWJzJyxcbiAqICB0ZW1wbGF0ZTogYFxuICogICAgPHVsPlxuICogICAgICA8bGkgKm5nRm9yPVwiI3BhbmUgb2YgcGFuZXNcIj57e3BhbmUudGl0bGV9fTwvbGk+XG4gKiAgICA8L3VsPlxuICogICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICogIGBcbiAqIH0pXG4gKiBjbGFzcyBUYWJzIHtcbiAqICAgcGFuZXM6IFF1ZXJ5TGlzdDxQYW5lPjtcbiAqICAgY29uc3RydWN0b3IoQFF1ZXJ5KFBhbmUpIHBhbmVzOlF1ZXJ5TGlzdDxQYW5lPikge1xuICogICAgIHRoaXMucGFuZXMgPSBwYW5lcztcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogQSBxdWVyeSBjYW4gbG9vayBmb3IgdmFyaWFibGUgYmluZGluZ3MgYnkgcGFzc2luZyBpbiBhIHN0cmluZyB3aXRoIGRlc2lyZWQgYmluZGluZyBzeW1ib2wuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3NUMmoyNWNIMWRVUkF5QlJDS3gxP3A9cHJldmlldykpXG4gKiBgYGBodG1sXG4gKiA8c2Vla2VyPlxuICogICA8ZGl2ICNmaW5kbWU+Li4uPC9kaXY+XG4gKiA8L3NlZWtlcj5cbiAqXG4gKiBAQ29tcG9uZW50KHsgc2VsZWN0b3I6ICdmb28nIH0pXG4gKiBjbGFzcyBzZWVrZXIge1xuICogICBjb25zdHJ1Y3RvcihAUXVlcnkoJ2ZpbmRtZScpIGVsTGlzdDogUXVlcnlMaXN0PEVsZW1lbnRSZWY+KSB7Li4ufVxuICogfVxuICogYGBgXG4gKlxuICogSW4gdGhpcyBjYXNlIHRoZSBvYmplY3QgdGhhdCBpcyBpbmplY3RlZCBkZXBlbmQgb24gdGhlIHR5cGUgb2YgdGhlIHZhcmlhYmxlXG4gKiBiaW5kaW5nLiBJdCBjYW4gYmUgYW4gRWxlbWVudFJlZiwgYSBkaXJlY3RpdmUgb3IgYSBjb21wb25lbnQuXG4gKlxuICogUGFzc2luZyBpbiBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHZhcmlhYmxlIGJpbmRpbmdzIHdpbGwgcXVlcnkgZm9yIGFsbCBvZiB0aGVtLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxzZWVrZXI+XG4gKiAgIDxkaXYgI2ZpbmRNZT4uLi48L2Rpdj5cbiAqICAgPGRpdiAjZmluZE1lVG9vPi4uLjwvZGl2PlxuICogPC9zZWVrZXI+XG4gKlxuICogIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2ZvbydcbiAqIH0pXG4gKiBjbGFzcyBTZWVrZXIge1xuICogICBjb25zdHJ1Y3RvcihAUXVlcnkoJ2ZpbmRNZSwgZmluZE1lVG9vJykgZWxMaXN0OiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4pIHsuLi59XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBDb25maWd1cmUgd2hldGhlciBxdWVyeSBsb29rcyBmb3IgZGlyZWN0IGNoaWxkcmVuIG9yIGFsbCBkZXNjZW5kYW50c1xuICogb2YgdGhlIHF1ZXJ5aW5nIGVsZW1lbnQsIGJ5IHVzaW5nIHRoZSBgZGVzY2VuZGFudHNgIHBhcmFtZXRlci5cbiAqIEl0IGlzIHNldCB0byBgZmFsc2VgIGJ5IGRlZmF1bHQuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3d0R2VCOTc3YnY3cXZBNUZUWWw5P3A9cHJldmlldykpXG4gKiBgYGBodG1sXG4gKiA8Y29udGFpbmVyICNmaXJzdD5cbiAqICAgPGl0ZW0+YTwvaXRlbT5cbiAqICAgPGl0ZW0+YjwvaXRlbT5cbiAqICAgPGNvbnRhaW5lciAjc2Vjb25kPlxuICogICAgIDxpdGVtPmM8L2l0ZW0+XG4gKiAgIDwvY29udGFpbmVyPlxuICogPC9jb250YWluZXI+XG4gKiBgYGBcbiAqXG4gKiBXaGVuIHF1ZXJ5aW5nIGZvciBpdGVtcywgdGhlIGZpcnN0IGNvbnRhaW5lciB3aWxsIHNlZSBvbmx5IGBhYCBhbmQgYGJgIGJ5IGRlZmF1bHQsXG4gKiBidXQgd2l0aCBgUXVlcnkoVGV4dERpcmVjdGl2ZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSlgIGl0IHdpbGwgc2VlIGBjYCB0b28uXG4gKlxuICogVGhlIHF1ZXJpZWQgZGlyZWN0aXZlcyBhcmUga2VwdCBpbiBhIGRlcHRoLWZpcnN0IHByZS1vcmRlciB3aXRoIHJlc3BlY3QgdG8gdGhlaXJcbiAqIHBvc2l0aW9ucyBpbiB0aGUgRE9NLlxuICpcbiAqIFF1ZXJ5IGRvZXMgbm90IGxvb2sgZGVlcCBpbnRvIGFueSBzdWJjb21wb25lbnQgdmlld3MuXG4gKlxuICogUXVlcnkgaXMgdXBkYXRlZCBhcyBwYXJ0IG9mIHRoZSBjaGFuZ2UtZGV0ZWN0aW9uIGN5Y2xlLiBTaW5jZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gKiBoYXBwZW5zIGFmdGVyIGNvbnN0cnVjdGlvbiBvZiBhIGRpcmVjdGl2ZSwgUXVlcnlMaXN0IHdpbGwgYWx3YXlzIGJlIGVtcHR5IHdoZW4gb2JzZXJ2ZWQgaW4gdGhlXG4gKiBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBUaGUgaW5qZWN0ZWQgb2JqZWN0IGlzIGFuIHVubW9kaWZpYWJsZSBsaXZlIGxpc3QuXG4gKiBTZWUge0BsaW5rIFF1ZXJ5TGlzdH0gZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IHZhciBRdWVyeTogUXVlcnlGYWN0b3J5ID0gbWFrZVBhcmFtRGVjb3JhdG9yKFF1ZXJ5TWV0YWRhdGEpO1xuXG4vLyBUT0RPKGFsZXhlYWdsZSk6IHJlbW92ZSB0aGUgZHVwbGljYXRpb24gb2YgdGhpcyBkb2MuIEl0IGlzIGNvcGllZCBmcm9tIENvbnRlbnRDaGlsZHJlbk1ldGFkYXRhLlxuLyoqXG4gKiBDb25maWd1cmVzIGEgY29udGVudCBxdWVyeS5cbiAqXG4gKiBDb250ZW50IHF1ZXJpZXMgYXJlIHNldCBiZWZvcmUgdGhlIGBuZ0FmdGVyQ29udGVudEluaXRgIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7XG4gKiAgIHNlbGVjdG9yOiAnc29tZURpcidcbiAqIH0pXG4gKiBjbGFzcyBTb21lRGlyIHtcbiAqICAgQENvbnRlbnRDaGlsZHJlbihDaGlsZERpcmVjdGl2ZSkgY29udGVudENoaWxkcmVuOiBRdWVyeUxpc3Q8Q2hpbGREaXJlY3RpdmU+O1xuICpcbiAqICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICogICAgIC8vIGNvbnRlbnRDaGlsZHJlbiBpcyBzZXRcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCB2YXIgQ29udGVudENoaWxkcmVuOiBDb250ZW50Q2hpbGRyZW5GYWN0b3J5ID0gbWFrZVByb3BEZWNvcmF0b3IoQ29udGVudENoaWxkcmVuTWV0YWRhdGEpO1xuXG4vLyBUT0RPKGFsZXhlYWdsZSk6IHJlbW92ZSB0aGUgZHVwbGljYXRpb24gb2YgdGhpcyBkb2MuIEl0IGlzIGNvcGllZCBmcm9tIENvbnRlbnRDaGlsZE1ldGFkYXRhLlxuLyoqXG4gKiBDb25maWd1cmVzIGEgY29udGVudCBxdWVyeS5cbiAqXG4gKiBDb250ZW50IHF1ZXJpZXMgYXJlIHNldCBiZWZvcmUgdGhlIGBuZ0FmdGVyQ29udGVudEluaXRgIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7XG4gKiAgIHNlbGVjdG9yOiAnc29tZURpcidcbiAqIH0pXG4gKiBjbGFzcyBTb21lRGlyIHtcbiAqICAgQENvbnRlbnRDaGlsZChDaGlsZERpcmVjdGl2ZSkgY29udGVudENoaWxkO1xuICpcbiAqICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICogICAgIC8vIGNvbnRlbnRDaGlsZCBpcyBzZXRcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCB2YXIgQ29udGVudENoaWxkOiBDb250ZW50Q2hpbGRGYWN0b3J5ID0gbWFrZVByb3BEZWNvcmF0b3IoQ29udGVudENoaWxkTWV0YWRhdGEpO1xuXG4vLyBUT0RPKGFsZXhlYWdsZSk6IHJlbW92ZSB0aGUgZHVwbGljYXRpb24gb2YgdGhpcyBkb2MuIEl0IGlzIGNvcGllZCBmcm9tIFZpZXdDaGlsZHJlbk1ldGFkYXRhLlxuLyoqXG4gKiBDb25maWd1cmVzIGEgdmlldyBxdWVyeS5cbiAqXG4gKiBWaWV3IHF1ZXJpZXMgYXJlIHNldCBiZWZvcmUgdGhlIGBuZ0FmdGVyVmlld0luaXRgIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnc29tZURpcicsXG4gKiAgIHRlbXBsYXRlVXJsOiAnc29tZVRlbXBsYXRlJyxcbiAqICAgZGlyZWN0aXZlczogW0l0ZW1EaXJlY3RpdmVdXG4gKiB9KVxuICogY2xhc3MgU29tZURpciB7XG4gKiAgIEBWaWV3Q2hpbGRyZW4oSXRlbURpcmVjdGl2ZSkgdmlld0NoaWxkcmVuOiBRdWVyeUxpc3Q8SXRlbURpcmVjdGl2ZT47XG4gKlxuICogICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gKiAgICAgLy8gdmlld0NoaWxkcmVuIGlzIHNldFxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHZhciBWaWV3Q2hpbGRyZW46IFZpZXdDaGlsZHJlbkZhY3RvcnkgPSBtYWtlUHJvcERlY29yYXRvcihWaWV3Q2hpbGRyZW5NZXRhZGF0YSk7XG5cbi8vIFRPRE8oYWxleGVhZ2xlKTogcmVtb3ZlIHRoZSBkdXBsaWNhdGlvbiBvZiB0aGlzIGRvYy4gSXQgaXMgY29waWVkIGZyb20gVmlld0NoaWxkTWV0YWRhdGEuXG4vKipcbiAqIENvbmZpZ3VyZXMgYSB2aWV3IHF1ZXJ5LlxuICpcbiAqIFZpZXcgcXVlcmllcyBhcmUgc2V0IGJlZm9yZSB0aGUgYG5nQWZ0ZXJWaWV3SW5pdGAgY2FsbGJhY2sgaXMgY2FsbGVkLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdzb21lRGlyJyxcbiAqICAgdGVtcGxhdGVVcmw6ICdzb21lVGVtcGxhdGUnLFxuICogICBkaXJlY3RpdmVzOiBbSXRlbURpcmVjdGl2ZV1cbiAqIH0pXG4gKiBjbGFzcyBTb21lRGlyIHtcbiAqICAgQFZpZXdDaGlsZChJdGVtRGlyZWN0aXZlKSB2aWV3Q2hpbGQ6SXRlbURpcmVjdGl2ZTtcbiAqXG4gKiAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAqICAgICAvLyB2aWV3Q2hpbGQgaXMgc2V0XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgdmFyIFZpZXdDaGlsZDogVmlld0NoaWxkRmFjdG9yeSA9IG1ha2VQcm9wRGVjb3JhdG9yKFZpZXdDaGlsZE1ldGFkYXRhKTtcblxuLy8gVE9ETyhhbGV4ZWFnbGUpOiByZW1vdmUgdGhlIGR1cGxpY2F0aW9uIG9mIHRoaXMgZG9jLiBJdCBpcyBjb3BpZWQgZnJvbSBWaWV3UXVlcnlNZXRhZGF0YS5cbi8qKlxuICogU2ltaWxhciB0byB7QGxpbmsgUXVlcnlNZXRhZGF0YX0sIGJ1dCBxdWVyeWluZyB0aGUgY29tcG9uZW50IHZpZXcsIGluc3RlYWQgb2ZcbiAqIHRoZSBjb250ZW50IGNoaWxkcmVuLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9lTnNGSERmN1lqeU02SXpLeE0xaj9wPXByZXZpZXcpKVxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICAuLi4sXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGl0ZW0+IGEgPC9pdGVtPlxuICogICAgIDxpdGVtPiBiIDwvaXRlbT5cbiAqICAgICA8aXRlbT4gYyA8L2l0ZW0+XG4gKiAgIGBcbiAqIH0pXG4gKiBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIHNob3duOiBib29sZWFuO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBAUXVlcnkoSXRlbSkgaXRlbXM6UXVlcnlMaXN0PEl0ZW0+KSB7XG4gKiAgICAgaXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gY29uc29sZS5sb2coaXRlbXMubGVuZ3RoKSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFN1cHBvcnRzIHRoZSBzYW1lIHF1ZXJ5aW5nIHBhcmFtZXRlcnMgYXMge0BsaW5rIFF1ZXJ5TWV0YWRhdGF9LCBleGNlcHRcbiAqIGBkZXNjZW5kYW50c2AuIFRoaXMgYWx3YXlzIHF1ZXJpZXMgdGhlIHdob2xlIHZpZXcuXG4gKlxuICogQXMgYHNob3duYCBpcyBmbGlwcGVkIGJldHdlZW4gdHJ1ZSBhbmQgZmFsc2UsIGl0ZW1zIHdpbGwgY29udGFpbiB6ZXJvIG9mIG9uZVxuICogaXRlbXMuXG4gKlxuICogU3BlY2lmaWVzIHRoYXQgYSB7QGxpbmsgUXVlcnlMaXN0fSBzaG91bGQgYmUgaW5qZWN0ZWQuXG4gKlxuICogVGhlIGluamVjdGVkIG9iamVjdCBpcyBhbiBpdGVyYWJsZSBhbmQgb2JzZXJ2YWJsZSBsaXZlIGxpc3QuXG4gKiBTZWUge0BsaW5rIFF1ZXJ5TGlzdH0gZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IHZhciBWaWV3UXVlcnk6IFF1ZXJ5RmFjdG9yeSA9IG1ha2VQYXJhbURlY29yYXRvcihWaWV3UXVlcnlNZXRhZGF0YSk7XG5cbi8vIFRPRE8oYWxleGVhZ2xlKTogcmVtb3ZlIHRoZSBkdXBsaWNhdGlvbiBvZiB0aGlzIGRvYy4gSXQgaXMgY29waWVkIGZyb20gUGlwZU1ldGFkYXRhLlxuLyoqXG4gKiBEZWNsYXJlIHJldXNhYmxlIHBpcGUgZnVuY3Rpb24uXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiB7QGV4YW1wbGUgY29yZS90cy9tZXRhZGF0YS9tZXRhZGF0YS50cyByZWdpb249J3BpcGUnfVxuICovXG5leHBvcnQgdmFyIFBpcGU6IFBpcGVGYWN0b3J5ID0gPFBpcGVGYWN0b3J5Pm1ha2VEZWNvcmF0b3IoUGlwZU1ldGFkYXRhKTtcblxuLy8gVE9ETyhhbGV4ZWFnbGUpOiByZW1vdmUgdGhlIGR1cGxpY2F0aW9uIG9mIHRoaXMgZG9jLiBJdCBpcyBjb3BpZWQgZnJvbSBJbnB1dE1ldGFkYXRhLlxuLyoqXG4gKiBEZWNsYXJlcyBhIGRhdGEtYm91bmQgaW5wdXQgcHJvcGVydHkuXG4gKlxuICogQW5ndWxhciBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uLlxuICpcbiAqIGBJbnB1dE1ldGFkYXRhYCB0YWtlcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBzcGVjaWZpZXMgdGhlIG5hbWVcbiAqIHVzZWQgd2hlbiBpbnN0YW50aWF0aW5nIGEgY29tcG9uZW50IGluIHRoZSB0ZW1wbGF0ZS4gV2hlbiBub3QgcHJvdmlkZWQsXG4gKiB0aGUgbmFtZSBvZiB0aGUgZGVjb3JhdGVkIHByb3BlcnR5IGlzIHVzZWQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY3JlYXRlcyBhIGNvbXBvbmVudCB3aXRoIHR3byBpbnB1dCBwcm9wZXJ0aWVzLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2JhbmstYWNjb3VudCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgQmFuayBOYW1lOiB7e2JhbmtOYW1lfX1cbiAqICAgICBBY2NvdW50IElkOiB7e2lkfX1cbiAqICAgYFxuICogfSlcbiAqIGNsYXNzIEJhbmtBY2NvdW50IHtcbiAqICAgQElucHV0KCkgYmFua05hbWU6IHN0cmluZztcbiAqICAgQElucHV0KCdhY2NvdW50LWlkJykgaWQ6IHN0cmluZztcbiAqXG4gKiAgIC8vIHRoaXMgcHJvcGVydHkgaXMgbm90IGJvdW5kLCBhbmQgd29uJ3QgYmUgYXV0b21hdGljYWxseSB1cGRhdGVkIGJ5IEFuZ3VsYXJcbiAqICAgbm9ybWFsaXplZEJhbmtOYW1lOiBzdHJpbmc7XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8YmFuay1hY2NvdW50IGJhbmstbmFtZT1cIlJCQ1wiIGFjY291bnQtaWQ9XCI0NzQ3XCI+PC9iYW5rLWFjY291bnQ+XG4gKiAgIGAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtCYW5rQWNjb3VudF1cbiAqIH0pXG4gKiBjbGFzcyBBcHAge31cbiAqXG4gKiBib290c3RyYXAoQXBwKTtcbiAqIGBgYFxuICovXG5leHBvcnQgdmFyIElucHV0OiBJbnB1dEZhY3RvcnkgPSBtYWtlUHJvcERlY29yYXRvcihJbnB1dE1ldGFkYXRhKTtcblxuLy8gVE9ETyhhbGV4ZWFnbGUpOiByZW1vdmUgdGhlIGR1cGxpY2F0aW9uIG9mIHRoaXMgZG9jLiBJdCBpcyBjb3BpZWQgZnJvbSBPdXRwdXRNZXRhZGF0YS5cbi8qKlxuICogRGVjbGFyZXMgYW4gZXZlbnQtYm91bmQgb3V0cHV0IHByb3BlcnR5LlxuICpcbiAqIFdoZW4gYW4gb3V0cHV0IHByb3BlcnR5IGVtaXRzIGFuIGV2ZW50LCBhbiBldmVudCBoYW5kbGVyIGF0dGFjaGVkIHRvIHRoYXQgZXZlbnRcbiAqIHRoZSB0ZW1wbGF0ZSBpcyBpbnZva2VkLlxuICpcbiAqIGBPdXRwdXRNZXRhZGF0YWAgdGFrZXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgc3BlY2lmaWVzIHRoZSBuYW1lXG4gKiB1c2VkIHdoZW4gaW5zdGFudGlhdGluZyBhIGNvbXBvbmVudCBpbiB0aGUgdGVtcGxhdGUuIFdoZW4gbm90IHByb3ZpZGVkLFxuICogdGhlIG5hbWUgb2YgdGhlIGRlY29yYXRlZCBwcm9wZXJ0eSBpcyB1c2VkLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQERpcmVjdGl2ZSh7XG4gKiAgIHNlbGVjdG9yOiAnaW50ZXJ2YWwtZGlyJyxcbiAqIH0pXG4gKiBjbGFzcyBJbnRlcnZhbERpciB7XG4gKiAgIEBPdXRwdXQoKSBldmVyeVNlY29uZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAqICAgQE91dHB1dCgnZXZlcnlGaXZlU2Vjb25kcycpIGZpdmU1U2VjcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKCkge1xuICogICAgIHNldEludGVydmFsKCgpID0+IHRoaXMuZXZlcnlTZWNvbmQuZW1pdChcImV2ZW50XCIpLCAxMDAwKTtcbiAqICAgICBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLmZpdmU1U2Vjcy5lbWl0KFwiZXZlbnRcIiksIDUwMDApO1xuICogICB9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8aW50ZXJ2YWwtZGlyIChldmVyeVNlY29uZCk9XCJldmVyeVNlY29uZCgpXCIgKGV2ZXJ5Rml2ZVNlY29uZHMpPVwiZXZlcnlGaXZlU2Vjb25kcygpXCI+XG4gKiAgICAgPC9pbnRlcnZhbC1kaXI+XG4gKiAgIGAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtJbnRlcnZhbERpcl1cbiAqIH0pXG4gKiBjbGFzcyBBcHAge1xuICogICBldmVyeVNlY29uZCgpIHsgY29uc29sZS5sb2coJ3NlY29uZCcpOyB9XG4gKiAgIGV2ZXJ5Rml2ZVNlY29uZHMoKSB7IGNvbnNvbGUubG9nKCdmaXZlIHNlY29uZHMnKTsgfVxuICogfVxuICogYm9vdHN0cmFwKEFwcCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHZhciBPdXRwdXQ6IE91dHB1dEZhY3RvcnkgPSBtYWtlUHJvcERlY29yYXRvcihPdXRwdXRNZXRhZGF0YSk7XG5cbi8vIFRPRE8oYWxleGVhZ2xlKTogcmVtb3ZlIHRoZSBkdXBsaWNhdGlvbiBvZiB0aGlzIGRvYy4gSXQgaXMgY29waWVkIGZyb20gSG9zdEJpbmRpbmdNZXRhZGF0YS5cbi8qKlxuICogRGVjbGFyZXMgYSBob3N0IHByb3BlcnR5IGJpbmRpbmcuXG4gKlxuICogQW5ndWxhciBhdXRvbWF0aWNhbGx5IGNoZWNrcyBob3N0IHByb3BlcnR5IGJpbmRpbmdzIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uLlxuICogSWYgYSBiaW5kaW5nIGNoYW5nZXMsIGl0IHdpbGwgdXBkYXRlIHRoZSBob3N0IGVsZW1lbnQgb2YgdGhlIGRpcmVjdGl2ZS5cbiAqXG4gKiBgSG9zdEJpbmRpbmdNZXRhZGF0YWAgdGFrZXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgc3BlY2lmaWVzIHRoZSBwcm9wZXJ0eVxuICogbmFtZSBvZiB0aGUgaG9zdCBlbGVtZW50IHRoYXQgd2lsbCBiZSB1cGRhdGVkLiBXaGVuIG5vdCBwcm92aWRlZCxcbiAqIHRoZSBjbGFzcyBwcm9wZXJ0eSBuYW1lIGlzIHVzZWQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY3JlYXRlcyBhIGRpcmVjdGl2ZSB0aGF0IHNldHMgdGhlIGB2YWxpZGAgYW5kIGBpbnZhbGlkYCBjbGFzc2VzXG4gKiBvbiB0aGUgRE9NIGVsZW1lbnQgdGhhdCBoYXMgbmdNb2RlbCBkaXJlY3RpdmUgb24gaXQuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmdNb2RlbF0nfSlcbiAqIGNsYXNzIE5nTW9kZWxTdGF0dXMge1xuICogICBjb25zdHJ1Y3RvcihwdWJsaWMgY29udHJvbDpOZ01vZGVsKSB7fVxuICogICBASG9zdEJpbmRpbmcoJ1tjbGFzcy52YWxpZF0nKSBnZXQgdmFsaWQgeyByZXR1cm4gdGhpcy5jb250cm9sLnZhbGlkOyB9XG4gKiAgIEBIb3N0QmluZGluZygnW2NsYXNzLmludmFsaWRdJykgZ2V0IGludmFsaWQgeyByZXR1cm4gdGhpcy5jb250cm9sLmludmFsaWQ7IH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICogICB0ZW1wbGF0ZTogYDxpbnB1dCBbKG5nTW9kZWwpXT1cInByb3BcIj5gLFxuICogICBkaXJlY3RpdmVzOiBbRk9STV9ESVJFQ1RJVkVTLCBOZ01vZGVsU3RhdHVzXVxuICogfSlcbiAqIGNsYXNzIEFwcCB7XG4gKiAgIHByb3A7XG4gKiB9XG4gKlxuICogYm9vdHN0cmFwKEFwcCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHZhciBIb3N0QmluZGluZzogSG9zdEJpbmRpbmdGYWN0b3J5ID0gbWFrZVByb3BEZWNvcmF0b3IoSG9zdEJpbmRpbmdNZXRhZGF0YSk7XG5cbi8vIFRPRE8oYWxleGVhZ2xlKTogcmVtb3ZlIHRoZSBkdXBsaWNhdGlvbiBvZiB0aGlzIGRvYy4gSXQgaXMgY29waWVkIGZyb20gSG9zdExpc3RlbmVyTWV0YWRhdGEuXG4vKipcbiAqIERlY2xhcmVzIGEgaG9zdCBsaXN0ZW5lci5cbiAqXG4gKiBBbmd1bGFyIHdpbGwgaW52b2tlIHRoZSBkZWNvcmF0ZWQgbWV0aG9kIHdoZW4gdGhlIGhvc3QgZWxlbWVudCBlbWl0cyB0aGUgc3BlY2lmaWVkIGV2ZW50LlxuICpcbiAqIElmIHRoZSBkZWNvcmF0ZWQgbWV0aG9kIHJldHVybnMgYGZhbHNlYCwgdGhlbiBgcHJldmVudERlZmF1bHRgIGlzIGFwcGxpZWQgb24gdGhlIERPTVxuICogZXZlbnQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVjbGFyZXMgYSBkaXJlY3RpdmUgdGhhdCBhdHRhY2hlcyBhIGNsaWNrIGxpc3RlbmVyIHRvIHRoZSBidXR0b24gYW5kXG4gKiBjb3VudHMgY2xpY2tzLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnYnV0dG9uW2NvdW50aW5nXSd9KVxuICogY2xhc3MgQ291bnRDbGlja3Mge1xuICogICBudW1iZXJPZkNsaWNrcyA9IDA7XG4gKlxuICogICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICogICBvbkNsaWNrKGJ0bikge1xuICogICAgIGNvbnNvbGUubG9nKFwiYnV0dG9uXCIsIGJ0biwgXCJudW1iZXIgb2YgY2xpY2tzOlwiLCB0aGlzLm51bWJlck9mQ2xpY2tzKyspO1xuICogICB9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAqICAgdGVtcGxhdGU6IGA8YnV0dG9uIGNvdW50aW5nPkluY3JlbWVudDwvYnV0dG9uPmAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtDb3VudENsaWNrc11cbiAqIH0pXG4gKiBjbGFzcyBBcHAge31cbiAqXG4gKiBib290c3RyYXAoQXBwKTtcbiAqIGBgYFxuICovXG5leHBvcnQgdmFyIEhvc3RMaXN0ZW5lcjogSG9zdExpc3RlbmVyRmFjdG9yeSA9IG1ha2VQcm9wRGVjb3JhdG9yKEhvc3RMaXN0ZW5lck1ldGFkYXRhKTtcbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar metadata_1 = require('angular2/src/core/metadata');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nfunction _isPipeMetadata(type) {\r\n return type instanceof metadata_1.PipeMetadata;\r\n}\r\n/**\r\n * Resolve a `Type` for {@link PipeMetadata}.\r\n *\r\n * This interface can be overridden by the application developer to create custom behavior.\r\n *\r\n * See {@link Compiler}\r\n */\r\nvar PipeResolver = (function () {\r\n function PipeResolver() {\r\n }\r\n /**\r\n * Return {@link PipeMetadata} for a given `Type`.\r\n */\r\n PipeResolver.prototype.resolve = function (type) {\r\n var metas = reflection_1.reflector.annotations(di_1.resolveForwardRef(type));\r\n if (lang_1.isPresent(metas)) {\r\n var annotation = metas.find(_isPipeMetadata);\r\n if (lang_1.isPresent(annotation)) {\r\n return annotation;\r\n }\r\n }\r\n throw new exceptions_1.BaseException(\"No Pipe decorator found on \" + lang_1.stringify(type));\r\n };\r\n PipeResolver = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], PipeResolver);\r\n return PipeResolver;\r\n})();\r\nexports.PipeResolver = PipeResolver;\r\nexports.CODEGEN_PIPE_RESOLVER = new PipeResolver();\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZV9yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9waXBlX3Jlc29sdmVyLnRzIl0sIm5hbWVzIjpbIl9pc1BpcGVNZXRhZGF0YSIsIlBpcGVSZXNvbHZlciIsIlBpcGVSZXNvbHZlci5jb25zdHJ1Y3RvciIsIlBpcGVSZXNvbHZlci5yZXNvbHZlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxtQkFBNEMsc0JBQXNCLENBQUMsQ0FBQTtBQUNuRSxxQkFBeUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNwRSwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RCx5QkFBMkIsNEJBQTRCLENBQUMsQ0FBQTtBQUN4RCwyQkFBd0IseUNBQXlDLENBQUMsQ0FBQTtBQUVsRSx5QkFBeUIsSUFBUztJQUNoQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsWUFBWUEsdUJBQVlBLENBQUNBO0FBQ3RDQSxDQUFDQTtBQUVEOzs7Ozs7R0FNRztBQUNIO0lBQUFDO0lBZUFDLENBQUNBO0lBYkNEOztPQUVHQTtJQUNIQSw4QkFBT0EsR0FBUEEsVUFBUUEsSUFBVUE7UUFDaEJFLElBQUlBLEtBQUtBLEdBQUdBLHNCQUFTQSxDQUFDQSxXQUFXQSxDQUFDQSxzQkFBaUJBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBO1FBQzNEQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDckJBLElBQUlBLFVBQVVBLEdBQUdBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLGVBQWVBLENBQUNBLENBQUNBO1lBQzdDQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsVUFBVUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzFCQSxNQUFNQSxDQUFDQSxVQUFVQSxDQUFDQTtZQUNwQkEsQ0FBQ0E7UUFDSEEsQ0FBQ0E7UUFDREEsTUFBTUEsSUFBSUEsMEJBQWFBLENBQUNBLGdDQUE4QkEsZ0JBQVNBLENBQUNBLElBQUlBLENBQUdBLENBQUNBLENBQUNBO0lBQzNFQSxDQUFDQTtJQWRIRjtRQUFDQSxlQUFVQSxFQUFFQTs7cUJBZVpBO0lBQURBLG1CQUFDQTtBQUFEQSxDQUFDQSxBQWZELElBZUM7QUFkWSxvQkFBWSxlQWN4QixDQUFBO0FBRVUsNkJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cmVzb2x2ZUZvcndhcmRSZWYsIEluamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7VHlwZSwgaXNQcmVzZW50LCBzdHJpbmdpZnl9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge1BpcGVNZXRhZGF0YX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEnO1xuaW1wb3J0IHtyZWZsZWN0b3J9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3JlZmxlY3Rpb24vcmVmbGVjdGlvbic7XG5cbmZ1bmN0aW9uIF9pc1BpcGVNZXRhZGF0YSh0eXBlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgaW5zdGFuY2VvZiBQaXBlTWV0YWRhdGE7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIGBUeXBlYCBmb3Ige0BsaW5rIFBpcGVNZXRhZGF0YX0uXG4gKlxuICogVGhpcyBpbnRlcmZhY2UgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGFwcGxpY2F0aW9uIGRldmVsb3BlciB0byBjcmVhdGUgY3VzdG9tIGJlaGF2aW9yLlxuICpcbiAqIFNlZSB7QGxpbmsgQ29tcGlsZXJ9XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQaXBlUmVzb2x2ZXIge1xuICAvKipcbiAgICogUmV0dXJuIHtAbGluayBQaXBlTWV0YWRhdGF9IGZvciBhIGdpdmVuIGBUeXBlYC5cbiAgICovXG4gIHJlc29sdmUodHlwZTogVHlwZSk6IFBpcGVNZXRhZGF0YSB7XG4gICAgdmFyIG1ldGFzID0gcmVmbGVjdG9yLmFubm90YXRpb25zKHJlc29sdmVGb3J3YXJkUmVmKHR5cGUpKTtcbiAgICBpZiAoaXNQcmVzZW50KG1ldGFzKSkge1xuICAgICAgdmFyIGFubm90YXRpb24gPSBtZXRhcy5maW5kKF9pc1BpcGVNZXRhZGF0YSk7XG4gICAgICBpZiAoaXNQcmVzZW50KGFubm90YXRpb24pKSB7XG4gICAgICAgIHJldHVybiBhbm5vdGF0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgTm8gUGlwZSBkZWNvcmF0b3IgZm91bmQgb24gJHtzdHJpbmdpZnkodHlwZSl9YCk7XG4gIH1cbn1cblxuZXhwb3J0IHZhciBDT0RFR0VOX1BJUEVfUkVTT0xWRVIgPSBuZXcgUGlwZVJlc29sdmVyKCk7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nvar view_1 = require('angular2/src/core/linker/view');\r\nvar view_ref_1 = require('angular2/src/core/linker/view_ref');\r\n/**\r\n * Low-level service for compiling {@link Component}s into {@link ProtoViewRef ProtoViews}s, which\r\n * can later be used to create and render a Component instance.\r\n *\r\n * Most applications should instead use higher-level {@link DynamicComponentLoader} service, which\r\n * both compiles and instantiates a Component.\r\n */\r\nvar Compiler = (function () {\r\n function Compiler() {\r\n }\r\n return Compiler;\r\n})();\r\nexports.Compiler = Compiler;\r\nfunction isHostViewFactory(type) {\r\n return type instanceof view_1.HostViewFactory;\r\n}\r\nvar Compiler_ = (function (_super) {\r\n __extends(Compiler_, _super);\r\n function Compiler_() {\r\n _super.apply(this, arguments);\r\n }\r\n Compiler_.prototype.compileInHost = function (componentType) {\r\n var metadatas = reflection_1.reflector.annotations(componentType);\r\n var hostViewFactory = metadatas.find(isHostViewFactory);\r\n if (lang_1.isBlank(hostViewFactory)) {\r\n throw new exceptions_1.BaseException(\"No precompiled component \" + lang_1.stringify(componentType) + \" found\");\r\n }\r\n return async_1.PromiseWrapper.resolve(new view_ref_1.HostViewFactoryRef_(hostViewFactory));\r\n };\r\n Compiler_.prototype.clearCache = function () { };\r\n Compiler_ = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], Compiler_);\r\n return Compiler_;\r\n})(Compiler);\r\nexports.Compiler_ = Compiler_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvY29tcGlsZXIudHMiXSwibmFtZXMiOlsiQ29tcGlsZXIiLCJDb21waWxlci5jb25zdHJ1Y3RvciIsImlzSG9zdFZpZXdGYWN0b3J5IiwiQ29tcGlsZXJfIiwiQ29tcGlsZXJfLmNvbnN0cnVjdG9yIiwiQ29tcGlsZXJfLmNvbXBpbGVJbkhvc3QiLCJDb21waWxlcl8uY2xlYXJDYWNoZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFFQSxtQkFBeUIsc0JBQXNCLENBQUMsQ0FBQTtBQUNoRCxxQkFBdUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNsRSwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RCxzQkFBNkIsMkJBQTJCLENBQUMsQ0FBQTtBQUN6RCwyQkFBd0IseUNBQXlDLENBQUMsQ0FBQTtBQUNsRSxxQkFBOEIsK0JBQStCLENBQUMsQ0FBQTtBQUM5RCx5QkFBa0MsbUNBQW1DLENBQUMsQ0FBQTtBQUV0RTs7Ozs7O0dBTUc7QUFDSDtJQUFBQTtJQUdBQyxDQUFDQTtJQUFERCxlQUFDQTtBQUFEQSxDQUFDQSxBQUhELElBR0M7QUFIcUIsZ0JBQVEsV0FHN0IsQ0FBQTtBQUVELDJCQUEyQixJQUFTO0lBQ2xDRSxNQUFNQSxDQUFDQSxJQUFJQSxZQUFZQSxzQkFBZUEsQ0FBQ0E7QUFDekNBLENBQUNBO0FBRUQ7SUFDK0JDLDZCQUFRQTtJQUR2Q0E7UUFDK0JDLDhCQUFRQTtJQVl2Q0EsQ0FBQ0E7SUFYQ0QsaUNBQWFBLEdBQWJBLFVBQWNBLGFBQW1CQTtRQUMvQkUsSUFBSUEsU0FBU0EsR0FBR0Esc0JBQVNBLENBQUNBLFdBQVdBLENBQUNBLGFBQWFBLENBQUNBLENBQUNBO1FBQ3JEQSxJQUFJQSxlQUFlQSxHQUFHQSxTQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxpQkFBaUJBLENBQUNBLENBQUNBO1FBRXhEQSxFQUFFQSxDQUFDQSxDQUFDQSxjQUFPQSxDQUFDQSxlQUFlQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUM3QkEsTUFBTUEsSUFBSUEsMEJBQWFBLENBQUNBLDhCQUE0QkEsZ0JBQVNBLENBQUNBLGFBQWFBLENBQUNBLFdBQVFBLENBQUNBLENBQUNBO1FBQ3hGQSxDQUFDQTtRQUNEQSxNQUFNQSxDQUFDQSxzQkFBY0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsSUFBSUEsOEJBQW1CQSxDQUFDQSxlQUFlQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUMxRUEsQ0FBQ0E7SUFFREYsOEJBQVVBLEdBQVZBLGNBQWNHLENBQUNBO0lBWmpCSDtRQUFDQSxlQUFVQSxFQUFFQTs7a0JBYVpBO0lBQURBLGdCQUFDQTtBQUFEQSxDQUFDQSxBQWJELEVBQytCLFFBQVEsRUFZdEM7QUFaWSxpQkFBUyxZQVlyQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIb3N0Vmlld0ZhY3RvcnlSZWZ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3X3JlZic7XG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtUeXBlLCBpc0JsYW5rLCBzdHJpbmdpZnl9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge1Byb21pc2VXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jJztcbmltcG9ydCB7cmVmbGVjdG9yfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZWZsZWN0aW9uL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtIb3N0Vmlld0ZhY3Rvcnl9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3JztcbmltcG9ydCB7SG9zdFZpZXdGYWN0b3J5UmVmX30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL3ZpZXdfcmVmJztcblxuLyoqXG4gKiBMb3ctbGV2ZWwgc2VydmljZSBmb3IgY29tcGlsaW5nIHtAbGluayBDb21wb25lbnR9cyBpbnRvIHtAbGluayBQcm90b1ZpZXdSZWYgUHJvdG9WaWV3c31zLCB3aGljaFxuICogY2FuIGxhdGVyIGJlIHVzZWQgdG8gY3JlYXRlIGFuZCByZW5kZXIgYSBDb21wb25lbnQgaW5zdGFuY2UuXG4gKlxuICogTW9zdCBhcHBsaWNhdGlvbnMgc2hvdWxkIGluc3RlYWQgdXNlIGhpZ2hlci1sZXZlbCB7QGxpbmsgRHluYW1pY0NvbXBvbmVudExvYWRlcn0gc2VydmljZSwgd2hpY2hcbiAqIGJvdGggY29tcGlsZXMgYW5kIGluc3RhbnRpYXRlcyBhIENvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXBpbGVyIHtcbiAgYWJzdHJhY3QgY29tcGlsZUluSG9zdChjb21wb25lbnRUeXBlOiBUeXBlKTogUHJvbWlzZTxIb3N0Vmlld0ZhY3RvcnlSZWY+O1xuICBhYnN0cmFjdCBjbGVhckNhY2hlKCk7XG59XG5cbmZ1bmN0aW9uIGlzSG9zdFZpZXdGYWN0b3J5KHR5cGU6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZSBpbnN0YW5jZW9mIEhvc3RWaWV3RmFjdG9yeTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbXBpbGVyXyBleHRlbmRzIENvbXBpbGVyIHtcbiAgY29tcGlsZUluSG9zdChjb21wb25lbnRUeXBlOiBUeXBlKTogUHJvbWlzZTxIb3N0Vmlld0ZhY3RvcnlSZWZfPiB7XG4gICAgdmFyIG1ldGFkYXRhcyA9IHJlZmxlY3Rvci5hbm5vdGF0aW9ucyhjb21wb25lbnRUeXBlKTtcbiAgICB2YXIgaG9zdFZpZXdGYWN0b3J5ID0gbWV0YWRhdGFzLmZpbmQoaXNIb3N0Vmlld0ZhY3RvcnkpO1xuXG4gICAgaWYgKGlzQmxhbmsoaG9zdFZpZXdGYWN0b3J5KSkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYE5vIHByZWNvbXBpbGVkIGNvbXBvbmVudCAke3N0cmluZ2lmeShjb21wb25lbnRUeXBlKX0gZm91bmRgKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2VXcmFwcGVyLnJlc29sdmUobmV3IEhvc3RWaWV3RmFjdG9yeVJlZl8oaG9zdFZpZXdGYWN0b3J5KSk7XG4gIH1cblxuICBjbGVhckNhY2hlKCkge31cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar metadata_1 = require('angular2/src/core/di/metadata');\r\n/**\r\n * Specifies that a constant attribute value should be injected.\r\n *\r\n * The directive can inject constant string literals of host element attributes.\r\n *\r\n * ### Example\r\n *\r\n * Suppose we have an `<input>` element and want to know its `type`.\r\n *\r\n * ```html\r\n * <input type=\"text\">\r\n * ```\r\n *\r\n * A decorator can inject string literal `text` like so:\r\n *\r\n * {@example core/ts/metadata/metadata.ts region='attributeMetadata'}\r\n */\r\nvar AttributeMetadata = (function (_super) {\r\n __extends(AttributeMetadata, _super);\r\n function AttributeMetadata(attributeName) {\r\n _super.call(this);\r\n this.attributeName = attributeName;\r\n }\r\n Object.defineProperty(AttributeMetadata.prototype, \"token\", {\r\n get: function () {\r\n // Normally one would default a token to a type of an injected value but here\r\n // the type of a variable is \"string\" and we can't use primitive type as a return value\r\n // so we use instance of Attribute instead. This doesn't matter much in practice as arguments\r\n // with @Attribute annotation are injected by ElementInjector that doesn't take tokens into\r\n // account.\r\n return this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AttributeMetadata.prototype.toString = function () { return \"@Attribute(\" + lang_1.stringify(this.attributeName) + \")\"; };\r\n AttributeMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String])\r\n ], AttributeMetadata);\r\n return AttributeMetadata;\r\n})(metadata_1.DependencyMetadata);\r\nexports.AttributeMetadata = AttributeMetadata;\r\n/**\r\n * Declares an injectable parameter to be a live list of directives or variable\r\n * bindings from the content children of a directive.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/lY9m8HLy7z06vDoUaSN2?p=preview))\r\n *\r\n * Assume that `<tabs>` component would like to get a list its children `<pane>`\r\n * components as shown in this example:\r\n *\r\n * ```html\r\n * <tabs>\r\n * <pane title=\"Overview\">...</pane>\r\n * <pane *ngFor=\"#o of objects\" [title]=\"o.title\">{{o.text}}</pane>\r\n * </tabs>\r\n * ```\r\n *\r\n * The preferred solution is to query for `Pane` directives using this decorator.\r\n *\r\n * ```javascript\r\n * @Component({\r\n * selector: 'pane',\r\n * inputs: ['title']\r\n * })\r\n * class Pane {\r\n * title:string;\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'tabs',\r\n * template: `\r\n * <ul>\r\n * <li *ngFor=\"#pane of panes\">{{pane.title}}</li>\r\n * </ul>\r\n * <ng-content></ng-content>\r\n * `\r\n * })\r\n * class Tabs {\r\n * panes: QueryList<Pane>;\r\n * constructor(@Query(Pane) panes:QueryList<Pane>) {\r\n * this.panes = panes;\r\n * }\r\n * }\r\n * ```\r\n *\r\n * A query can look for variable bindings by passing in a string with desired binding symbol.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/sT2j25cH1dURAyBRCKx1?p=preview))\r\n * ```html\r\n * <seeker>\r\n * <div #findme>...</div>\r\n * </seeker>\r\n *\r\n * @Component({ selector: 'seeker' })\r\n * class Seeker {\r\n * constructor(@Query('findme') elList: QueryList<ElementRef>) {...}\r\n * }\r\n * ```\r\n *\r\n * In this case the object that is injected depend on the type of the variable\r\n * binding. It can be an ElementRef, a directive or a component.\r\n *\r\n * Passing in a comma separated list of variable bindings will query for all of them.\r\n *\r\n * ```html\r\n * <seeker>\r\n * <div #find-me>...</div>\r\n * <div #find-me-too>...</div>\r\n * </seeker>\r\n *\r\n * @Component({\r\n * selector: 'seeker'\r\n * })\r\n * class Seeker {\r\n * constructor(@Query('findMe, findMeToo') elList: QueryList<ElementRef>) {...}\r\n * }\r\n * ```\r\n *\r\n * Configure whether query looks for direct children or all descendants\r\n * of the querying element, by using the `descendants` parameter.\r\n * It is set to `false` by default.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/wtGeB977bv7qvA5FTYl9?p=preview))\r\n * ```html\r\n * <container #first>\r\n * <item>a</item>\r\n * <item>b</item>\r\n * <container #second>\r\n * <item>c</item>\r\n * </container>\r\n * </container>\r\n * ```\r\n *\r\n * When querying for items, the first container will see only `a` and `b` by default,\r\n * but with `Query(TextDirective, {descendants: true})` it will see `c` too.\r\n *\r\n * The queried directives are kept in a depth-first pre-order with respect to their\r\n * positions in the DOM.\r\n *\r\n * Query does not look deep into any subcomponent views.\r\n *\r\n * Query is updated as part of the change-detection cycle. Since change detection\r\n * happens after construction of a directive, QueryList will always be empty when observed in the\r\n * constructor.\r\n *\r\n * The injected object is an unmodifiable live list.\r\n * See {@link QueryList} for more details.\r\n */\r\nvar QueryMetadata = (function (_super) {\r\n __extends(QueryMetadata, _super);\r\n function QueryMetadata(_selector, _a) {\r\n var _b = _a === void 0 ? {} : _a, _c = _b.descendants, descendants = _c === void 0 ? false : _c, _d = _b.first, first = _d === void 0 ? false : _d;\r\n _super.call(this);\r\n this._selector = _selector;\r\n this.descendants = descendants;\r\n this.first = first;\r\n }\r\n Object.defineProperty(QueryMetadata.prototype, \"isViewQuery\", {\r\n /**\r\n * always `false` to differentiate it with {@link ViewQueryMetadata}.\r\n */\r\n get: function () { return false; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryMetadata.prototype, \"selector\", {\r\n /**\r\n * what this is querying for.\r\n */\r\n get: function () { return di_1.resolveForwardRef(this._selector); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryMetadata.prototype, \"isVarBindingQuery\", {\r\n /**\r\n * whether this is querying for a variable binding or a directive.\r\n */\r\n get: function () { return lang_1.isString(this.selector); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryMetadata.prototype, \"varBindings\", {\r\n /**\r\n * returns a list of variable bindings this is querying for.\r\n * Only applicable if this is a variable bindings query.\r\n */\r\n get: function () { return this.selector.split(','); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n QueryMetadata.prototype.toString = function () { return \"@Query(\" + lang_1.stringify(this.selector) + \")\"; };\r\n QueryMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object, Object])\r\n ], QueryMetadata);\r\n return QueryMetadata;\r\n})(metadata_1.DependencyMetadata);\r\nexports.QueryMetadata = QueryMetadata;\r\n// TODO: add an example after ContentChildren and ViewChildren are in master\r\n/**\r\n * Configures a content query.\r\n *\r\n * Content queries are set before the `ngAfterContentInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: 'someDir'\r\n * })\r\n * class SomeDir {\r\n * @ContentChildren(ChildDirective) contentChildren: QueryList<ChildDirective>;\r\n *\r\n * ngAfterContentInit() {\r\n * // contentChildren is set\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar ContentChildrenMetadata = (function (_super) {\r\n __extends(ContentChildrenMetadata, _super);\r\n function ContentChildrenMetadata(_selector, _a) {\r\n var _b = (_a === void 0 ? {} : _a).descendants, descendants = _b === void 0 ? false : _b;\r\n _super.call(this, _selector, { descendants: descendants });\r\n }\r\n ContentChildrenMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object, Object])\r\n ], ContentChildrenMetadata);\r\n return ContentChildrenMetadata;\r\n})(QueryMetadata);\r\nexports.ContentChildrenMetadata = ContentChildrenMetadata;\r\n// TODO: add an example after ContentChild and ViewChild are in master\r\n/**\r\n * Configures a content query.\r\n *\r\n * Content queries are set before the `ngAfterContentInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: 'someDir'\r\n * })\r\n * class SomeDir {\r\n * @ContentChild(ChildDirective) contentChild;\r\n *\r\n * ngAfterContentInit() {\r\n * // contentChild is set\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar ContentChildMetadata = (function (_super) {\r\n __extends(ContentChildMetadata, _super);\r\n function ContentChildMetadata(_selector) {\r\n _super.call(this, _selector, { descendants: true, first: true });\r\n }\r\n ContentChildMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object])\r\n ], ContentChildMetadata);\r\n return ContentChildMetadata;\r\n})(QueryMetadata);\r\nexports.ContentChildMetadata = ContentChildMetadata;\r\n/**\r\n * Similar to {@link QueryMetadata}, but querying the component view, instead of\r\n * the content children.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/eNsFHDf7YjyM6IzKxM1j?p=preview))\r\n *\r\n * ```javascript\r\n * @Component({\r\n * ...,\r\n * template: `\r\n * <item> a </item>\r\n * <item> b </item>\r\n * <item> c </item>\r\n * `\r\n * })\r\n * class MyComponent {\r\n * shown: boolean;\r\n *\r\n * constructor(private @Query(Item) items:QueryList<Item>) {\r\n * items.changes.subscribe(() => console.log(items.length));\r\n * }\r\n * }\r\n * ```\r\n *\r\n * Supports the same querying parameters as {@link QueryMetadata}, except\r\n * `descendants`. This always queries the whole view.\r\n *\r\n * As `shown` is flipped between true and false, items will contain zero of one\r\n * items.\r\n *\r\n * Specifies that a {@link QueryList} should be injected.\r\n *\r\n * The injected object is an iterable and observable live list.\r\n * See {@link QueryList} for more details.\r\n */\r\nvar ViewQueryMetadata = (function (_super) {\r\n __extends(ViewQueryMetadata, _super);\r\n function ViewQueryMetadata(_selector, _a) {\r\n var _b = _a === void 0 ? {} : _a, _c = _b.descendants, descendants = _c === void 0 ? false : _c, _d = _b.first, first = _d === void 0 ? false : _d;\r\n _super.call(this, _selector, { descendants: descendants, first: first });\r\n }\r\n Object.defineProperty(ViewQueryMetadata.prototype, \"isViewQuery\", {\r\n /**\r\n * always `true` to differentiate it with {@link QueryMetadata}.\r\n */\r\n get: function () { return true; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ViewQueryMetadata.prototype.toString = function () { return \"@ViewQuery(\" + lang_1.stringify(this.selector) + \")\"; };\r\n ViewQueryMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object, Object])\r\n ], ViewQueryMetadata);\r\n return ViewQueryMetadata;\r\n})(QueryMetadata);\r\nexports.ViewQueryMetadata = ViewQueryMetadata;\r\n/**\r\n * Configures a view query.\r\n *\r\n * View queries are set before the `ngAfterViewInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'someDir',\r\n * templateUrl: 'someTemplate',\r\n * directives: [ItemDirective]\r\n * })\r\n * class SomeDir {\r\n * @ViewChildren(ItemDirective) viewChildren: QueryList<ItemDirective>;\r\n *\r\n * ngAfterViewInit() {\r\n * // viewChildren is set\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar ViewChildrenMetadata = (function (_super) {\r\n __extends(ViewChildrenMetadata, _super);\r\n function ViewChildrenMetadata(_selector) {\r\n _super.call(this, _selector, { descendants: true });\r\n }\r\n ViewChildrenMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object])\r\n ], ViewChildrenMetadata);\r\n return ViewChildrenMetadata;\r\n})(ViewQueryMetadata);\r\nexports.ViewChildrenMetadata = ViewChildrenMetadata;\r\n/**\r\n * Configures a view query.\r\n *\r\n * View queries are set before the `ngAfterViewInit` callback is called.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'someDir',\r\n * templateUrl: 'someTemplate',\r\n * directives: [ItemDirective]\r\n * })\r\n * class SomeDir {\r\n * @ViewChild(ItemDirective) viewChild:ItemDirective;\r\n *\r\n * ngAfterViewInit() {\r\n * // viewChild is set\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar ViewChildMetadata = (function (_super) {\r\n __extends(ViewChildMetadata, _super);\r\n function ViewChildMetadata(_selector) {\r\n _super.call(this, _selector, { descendants: true, first: true });\r\n }\r\n ViewChildMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object])\r\n ], ViewChildMetadata);\r\n return ViewChildMetadata;\r\n})(ViewQueryMetadata);\r\nexports.ViewChildMetadata = ViewChildMetadata;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9tZXRhZGF0YS9kaS50cyJdLCJuYW1lcyI6WyJBdHRyaWJ1dGVNZXRhZGF0YSIsIkF0dHJpYnV0ZU1ldGFkYXRhLmNvbnN0cnVjdG9yIiwiQXR0cmlidXRlTWV0YWRhdGEudG9rZW4iLCJBdHRyaWJ1dGVNZXRhZGF0YS50b1N0cmluZyIsIlF1ZXJ5TWV0YWRhdGEiLCJRdWVyeU1ldGFkYXRhLmNvbnN0cnVjdG9yIiwiUXVlcnlNZXRhZGF0YS5pc1ZpZXdRdWVyeSIsIlF1ZXJ5TWV0YWRhdGEuc2VsZWN0b3IiLCJRdWVyeU1ldGFkYXRhLmlzVmFyQmluZGluZ1F1ZXJ5IiwiUXVlcnlNZXRhZGF0YS52YXJCaW5kaW5ncyIsIlF1ZXJ5TWV0YWRhdGEudG9TdHJpbmciLCJDb250ZW50Q2hpbGRyZW5NZXRhZGF0YSIsIkNvbnRlbnRDaGlsZHJlbk1ldGFkYXRhLmNvbnN0cnVjdG9yIiwiQ29udGVudENoaWxkTWV0YWRhdGEiLCJDb250ZW50Q2hpbGRNZXRhZGF0YS5jb25zdHJ1Y3RvciIsIlZpZXdRdWVyeU1ldGFkYXRhIiwiVmlld1F1ZXJ5TWV0YWRhdGEuY29uc3RydWN0b3IiLCJWaWV3UXVlcnlNZXRhZGF0YS5pc1ZpZXdRdWVyeSIsIlZpZXdRdWVyeU1ldGFkYXRhLnRvU3RyaW5nIiwiVmlld0NoaWxkcmVuTWV0YWRhdGEiLCJWaWV3Q2hpbGRyZW5NZXRhZGF0YS5jb25zdHJ1Y3RvciIsIlZpZXdDaGlsZE1ldGFkYXRhIiwiVmlld0NoaWxkTWV0YWRhdGEuY29uc3RydWN0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUJBQTBELDBCQUEwQixDQUFDLENBQUE7QUFDckYsbUJBQWdDLHNCQUFzQixDQUFDLENBQUE7QUFDdkQseUJBQWlDLCtCQUErQixDQUFDLENBQUE7QUFFakU7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSDtJQUN1Q0EscUNBQWtCQTtJQUN2REEsMkJBQW1CQSxhQUFxQkE7UUFBSUMsaUJBQU9BLENBQUNBO1FBQWpDQSxrQkFBYUEsR0FBYkEsYUFBYUEsQ0FBUUE7SUFBYUEsQ0FBQ0E7SUFFdERELHNCQUFJQSxvQ0FBS0E7YUFBVEE7WUFDRUUsNkVBQTZFQTtZQUM3RUEsdUZBQXVGQTtZQUN2RkEsNkZBQTZGQTtZQUM3RkEsMkZBQTJGQTtZQUMzRkEsV0FBV0E7WUFDWEEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDZEEsQ0FBQ0E7OztPQUFBRjtJQUNEQSxvQ0FBUUEsR0FBUkEsY0FBcUJHLE1BQU1BLENBQUNBLGdCQUFjQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsYUFBYUEsQ0FBQ0EsTUFBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFaL0VIO1FBQUNBLFlBQUtBLEVBQUVBOzswQkFhUEE7SUFBREEsd0JBQUNBO0FBQURBLENBQUNBLEFBYkQsRUFDdUMsNkJBQWtCLEVBWXhEO0FBWlkseUJBQWlCLG9CQVk3QixDQUFBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwR0c7QUFDSDtJQUNtQ0ksaUNBQWtCQTtJQVFuREEsdUJBQW9CQSxTQUF3QkEsRUFDaENBLEVBQW1GQTtpQ0FBRkMsRUFBRUEsNEJBQWxGQSxXQUFXQSxtQkFBR0EsS0FBS0Esc0JBQUVBLEtBQUtBLG1CQUFHQSxLQUFLQTtRQUM3Q0EsaUJBQU9BLENBQUNBO1FBRlVBLGNBQVNBLEdBQVRBLFNBQVNBLENBQWVBO1FBRzFDQSxJQUFJQSxDQUFDQSxXQUFXQSxHQUFHQSxXQUFXQSxDQUFDQTtRQUMvQkEsSUFBSUEsQ0FBQ0EsS0FBS0EsR0FBR0EsS0FBS0EsQ0FBQ0E7SUFDckJBLENBQUNBO0lBS0RELHNCQUFJQSxzQ0FBV0E7UUFIZkE7O1dBRUdBO2FBQ0hBLGNBQTZCRSxNQUFNQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFGO0lBSzVDQSxzQkFBSUEsbUNBQVFBO1FBSFpBOztXQUVHQTthQUNIQSxjQUFpQkcsTUFBTUEsQ0FBQ0Esc0JBQWlCQSxDQUFDQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFIO0lBSzVEQSxzQkFBSUEsNENBQWlCQTtRQUhyQkE7O1dBRUdBO2FBQ0hBLGNBQW1DSSxNQUFNQSxDQUFDQSxlQUFRQSxDQUFDQSxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFKO0lBTXBFQSxzQkFBSUEsc0NBQVdBO1FBSmZBOzs7V0FHR0E7YUFDSEEsY0FBOEJLLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLEtBQUtBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUw7SUFFaEVBLGdDQUFRQSxHQUFSQSxjQUFxQk0sTUFBTUEsQ0FBQ0EsWUFBVUEsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLE1BQUdBLENBQUNBLENBQUNBLENBQUNBO0lBckN0RU47UUFBQ0EsWUFBS0EsRUFBRUE7O3NCQXNDUEE7SUFBREEsb0JBQUNBO0FBQURBLENBQUNBLEFBdENELEVBQ21DLDZCQUFrQixFQXFDcEQ7QUFyQ1kscUJBQWEsZ0JBcUN6QixDQUFBO0FBRUQsNEVBQTRFO0FBQzVFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0g7SUFDNkNPLDJDQUFhQTtJQUN4REEsaUNBQVlBLFNBQXdCQSxFQUFFQSxFQUFtREE7a0NBQUZDLEVBQUVBLG9CQUFsREEsV0FBV0EsbUJBQUdBLEtBQUtBO1FBQ3hEQSxrQkFBTUEsU0FBU0EsRUFBRUEsRUFBQ0EsV0FBV0EsRUFBRUEsV0FBV0EsRUFBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDL0NBLENBQUNBO0lBSkhEO1FBQUNBLFlBQUtBLEVBQUVBOztnQ0FLUEE7SUFBREEsOEJBQUNBO0FBQURBLENBQUNBLEFBTEQsRUFDNkMsYUFBYSxFQUl6RDtBQUpZLCtCQUF1QiwwQkFJbkMsQ0FBQTtBQUVELHNFQUFzRTtBQUN0RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNIO0lBQzBDRSx3Q0FBYUE7SUFDckRBLDhCQUFZQSxTQUF3QkE7UUFBSUMsa0JBQU1BLFNBQVNBLEVBQUVBLEVBQUNBLFdBQVdBLEVBQUVBLElBQUlBLEVBQUVBLEtBQUtBLEVBQUVBLElBQUlBLEVBQUNBLENBQUNBLENBQUNBO0lBQUNBLENBQUNBO0lBRi9GRDtRQUFDQSxZQUFLQSxFQUFFQTs7NkJBR1BBO0lBQURBLDJCQUFDQTtBQUFEQSxDQUFDQSxBQUhELEVBQzBDLGFBQWEsRUFFdEQ7QUFGWSw0QkFBb0IsdUJBRWhDLENBQUE7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDRztBQUNIO0lBQ3VDRSxxQ0FBYUE7SUFDbERBLDJCQUFZQSxTQUF3QkEsRUFDeEJBLEVBQW1GQTtpQ0FBRkMsRUFBRUEsNEJBQWxGQSxXQUFXQSxtQkFBR0EsS0FBS0Esc0JBQUVBLEtBQUtBLG1CQUFHQSxLQUFLQTtRQUM3Q0Esa0JBQU1BLFNBQVNBLEVBQUVBLEVBQUNBLFdBQVdBLEVBQUVBLFdBQVdBLEVBQUVBLEtBQUtBLEVBQUVBLEtBQUtBLEVBQUNBLENBQUNBLENBQUNBO0lBQzdEQSxDQUFDQTtJQUtERCxzQkFBSUEsMENBQVdBO1FBSGZBOztXQUVHQTthQUNIQSxjQUFvQkUsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBRjtJQUNsQ0Esb0NBQVFBLEdBQVJBLGNBQXFCRyxNQUFNQSxDQUFDQSxnQkFBY0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLE1BQUdBLENBQUNBLENBQUNBLENBQUNBO0lBWDFFSDtRQUFDQSxZQUFLQSxFQUFFQTs7MEJBWVBBO0lBQURBLHdCQUFDQTtBQUFEQSxDQUFDQSxBQVpELEVBQ3VDLGFBQWEsRUFXbkQ7QUFYWSx5QkFBaUIsb0JBVzdCLENBQUE7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0g7SUFDMENJLHdDQUFpQkE7SUFDekRBLDhCQUFZQSxTQUF3QkE7UUFBSUMsa0JBQU1BLFNBQVNBLEVBQUVBLEVBQUNBLFdBQVdBLEVBQUVBLElBQUlBLEVBQUNBLENBQUNBLENBQUNBO0lBQUNBLENBQUNBO0lBRmxGRDtRQUFDQSxZQUFLQSxFQUFFQTs7NkJBR1BBO0lBQURBLDJCQUFDQTtBQUFEQSxDQUFDQSxBQUhELEVBQzBDLGlCQUFpQixFQUUxRDtBQUZZLDRCQUFvQix1QkFFaEMsQ0FBQTtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSDtJQUN1Q0UscUNBQWlCQTtJQUN0REEsMkJBQVlBLFNBQXdCQTtRQUFJQyxrQkFBTUEsU0FBU0EsRUFBRUEsRUFBQ0EsV0FBV0EsRUFBRUEsSUFBSUEsRUFBRUEsS0FBS0EsRUFBRUEsSUFBSUEsRUFBQ0EsQ0FBQ0EsQ0FBQ0E7SUFBQ0EsQ0FBQ0E7SUFGL0ZEO1FBQUNBLFlBQUtBLEVBQUVBOzswQkFHUEE7SUFBREEsd0JBQUNBO0FBQURBLENBQUNBLEFBSEQsRUFDdUMsaUJBQWlCLEVBRXZEO0FBRlkseUJBQWlCLG9CQUU3QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVCwgVHlwZSwgc3RyaW5naWZ5LCBpc1ByZXNlbnQsIGlzU3RyaW5nfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtyZXNvbHZlRm9yd2FyZFJlZn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtEZXBlbmRlbmN5TWV0YWRhdGF9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpL21ldGFkYXRhJztcblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhhdCBhIGNvbnN0YW50IGF0dHJpYnV0ZSB2YWx1ZSBzaG91bGQgYmUgaW5qZWN0ZWQuXG4gKlxuICogVGhlIGRpcmVjdGl2ZSBjYW4gaW5qZWN0IGNvbnN0YW50IHN0cmluZyBsaXRlcmFscyBvZiBob3N0IGVsZW1lbnQgYXR0cmlidXRlcy5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIFN1cHBvc2Ugd2UgaGF2ZSBhbiBgPGlucHV0PmAgZWxlbWVudCBhbmQgd2FudCB0byBrbm93IGl0cyBgdHlwZWAuXG4gKlxuICogYGBgaHRtbFxuICogPGlucHV0IHR5cGU9XCJ0ZXh0XCI+XG4gKiBgYGBcbiAqXG4gKiBBIGRlY29yYXRvciBjYW4gaW5qZWN0IHN0cmluZyBsaXRlcmFsIGB0ZXh0YCBsaWtlIHNvOlxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3RzL21ldGFkYXRhL21ldGFkYXRhLnRzIHJlZ2lvbj0nYXR0cmlidXRlTWV0YWRhdGEnfVxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZU1ldGFkYXRhIGV4dGVuZHMgRGVwZW5kZW5jeU1ldGFkYXRhIHtcbiAgY29uc3RydWN0b3IocHVibGljIGF0dHJpYnV0ZU5hbWU6IHN0cmluZykgeyBzdXBlcigpOyB9XG5cbiAgZ2V0IHRva2VuKCk6IEF0dHJpYnV0ZU1ldGFkYXRhIHtcbiAgICAvLyBOb3JtYWxseSBvbmUgd291bGQgZGVmYXVsdCBhIHRva2VuIHRvIGEgdHlwZSBvZiBhbiBpbmplY3RlZCB2YWx1ZSBidXQgaGVyZVxuICAgIC8vIHRoZSB0eXBlIG9mIGEgdmFyaWFibGUgaXMgXCJzdHJpbmdcIiBhbmQgd2UgY2FuJ3QgdXNlIHByaW1pdGl2ZSB0eXBlIGFzIGEgcmV0dXJuIHZhbHVlXG4gICAgLy8gc28gd2UgdXNlIGluc3RhbmNlIG9mIEF0dHJpYnV0ZSBpbnN0ZWFkLiBUaGlzIGRvZXNuJ3QgbWF0dGVyIG11Y2ggaW4gcHJhY3RpY2UgYXMgYXJndW1lbnRzXG4gICAgLy8gd2l0aCBAQXR0cmlidXRlIGFubm90YXRpb24gYXJlIGluamVjdGVkIGJ5IEVsZW1lbnRJbmplY3RvciB0aGF0IGRvZXNuJ3QgdGFrZSB0b2tlbnMgaW50b1xuICAgIC8vIGFjY291bnQuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuIGBAQXR0cmlidXRlKCR7c3RyaW5naWZ5KHRoaXMuYXR0cmlidXRlTmFtZSl9KWA7IH1cbn1cblxuLyoqXG4gKiBEZWNsYXJlcyBhbiBpbmplY3RhYmxlIHBhcmFtZXRlciB0byBiZSBhIGxpdmUgbGlzdCBvZiBkaXJlY3RpdmVzIG9yIHZhcmlhYmxlXG4gKiBiaW5kaW5ncyBmcm9tIHRoZSBjb250ZW50IGNoaWxkcmVuIG9mIGEgZGlyZWN0aXZlLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9sWTltOEhMeTd6MDZ2RG9VYVNOMj9wPXByZXZpZXcpKVxuICpcbiAqIEFzc3VtZSB0aGF0IGA8dGFicz5gIGNvbXBvbmVudCB3b3VsZCBsaWtlIHRvIGdldCBhIGxpc3QgaXRzIGNoaWxkcmVuIGA8cGFuZT5gXG4gKiBjb21wb25lbnRzIGFzIHNob3duIGluIHRoaXMgZXhhbXBsZTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8dGFicz5cbiAqICAgPHBhbmUgdGl0bGU9XCJPdmVydmlld1wiPi4uLjwvcGFuZT5cbiAqICAgPHBhbmUgKm5nRm9yPVwiI28gb2Ygb2JqZWN0c1wiIFt0aXRsZV09XCJvLnRpdGxlXCI+e3tvLnRleHR9fTwvcGFuZT5cbiAqIDwvdGFicz5cbiAqIGBgYFxuICpcbiAqIFRoZSBwcmVmZXJyZWQgc29sdXRpb24gaXMgdG8gcXVlcnkgZm9yIGBQYW5lYCBkaXJlY3RpdmVzIHVzaW5nIHRoaXMgZGVjb3JhdG9yLlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3BhbmUnLFxuICogICBpbnB1dHM6IFsndGl0bGUnXVxuICogfSlcbiAqIGNsYXNzIFBhbmUge1xuICogICB0aXRsZTpzdHJpbmc7XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgc2VsZWN0b3I6ICd0YWJzJyxcbiAqICB0ZW1wbGF0ZTogYFxuICogICAgPHVsPlxuICogICAgICA8bGkgKm5nRm9yPVwiI3BhbmUgb2YgcGFuZXNcIj57e3BhbmUudGl0bGV9fTwvbGk+XG4gKiAgICA8L3VsPlxuICogICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICogIGBcbiAqIH0pXG4gKiBjbGFzcyBUYWJzIHtcbiAqICAgcGFuZXM6IFF1ZXJ5TGlzdDxQYW5lPjtcbiAqICAgY29uc3RydWN0b3IoQFF1ZXJ5KFBhbmUpIHBhbmVzOlF1ZXJ5TGlzdDxQYW5lPikge1xuICAqICAgIHRoaXMucGFuZXMgPSBwYW5lcztcbiAgKiAgfVxuICogfVxuICogYGBgXG4gKlxuICogQSBxdWVyeSBjYW4gbG9vayBmb3IgdmFyaWFibGUgYmluZGluZ3MgYnkgcGFzc2luZyBpbiBhIHN0cmluZyB3aXRoIGRlc2lyZWQgYmluZGluZyBzeW1ib2wuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3NUMmoyNWNIMWRVUkF5QlJDS3gxP3A9cHJldmlldykpXG4gKiBgYGBodG1sXG4gKiA8c2Vla2VyPlxuICogICA8ZGl2ICNmaW5kbWU+Li4uPC9kaXY+XG4gKiA8L3NlZWtlcj5cbiAqXG4gKiBAQ29tcG9uZW50KHsgc2VsZWN0b3I6ICdzZWVrZXInIH0pXG4gKiBjbGFzcyBTZWVrZXIge1xuICogICBjb25zdHJ1Y3RvcihAUXVlcnkoJ2ZpbmRtZScpIGVsTGlzdDogUXVlcnlMaXN0PEVsZW1lbnRSZWY+KSB7Li4ufVxuICogfVxuICogYGBgXG4gKlxuICogSW4gdGhpcyBjYXNlIHRoZSBvYmplY3QgdGhhdCBpcyBpbmplY3RlZCBkZXBlbmQgb24gdGhlIHR5cGUgb2YgdGhlIHZhcmlhYmxlXG4gKiBiaW5kaW5nLiBJdCBjYW4gYmUgYW4gRWxlbWVudFJlZiwgYSBkaXJlY3RpdmUgb3IgYSBjb21wb25lbnQuXG4gKlxuICogUGFzc2luZyBpbiBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHZhcmlhYmxlIGJpbmRpbmdzIHdpbGwgcXVlcnkgZm9yIGFsbCBvZiB0aGVtLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxzZWVrZXI+XG4gKiAgIDxkaXYgI2ZpbmQtbWU+Li4uPC9kaXY+XG4gKiAgIDxkaXYgI2ZpbmQtbWUtdG9vPi4uLjwvZGl2PlxuICogPC9zZWVrZXI+XG4gKlxuICogIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3NlZWtlcidcbiAqIH0pXG4gKiBjbGFzcyBTZWVrZXIge1xuICogICBjb25zdHJ1Y3RvcihAUXVlcnkoJ2ZpbmRNZSwgZmluZE1lVG9vJykgZWxMaXN0OiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4pIHsuLi59XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBDb25maWd1cmUgd2hldGhlciBxdWVyeSBsb29rcyBmb3IgZGlyZWN0IGNoaWxkcmVuIG9yIGFsbCBkZXNjZW5kYW50c1xuICogb2YgdGhlIHF1ZXJ5aW5nIGVsZW1lbnQsIGJ5IHVzaW5nIHRoZSBgZGVzY2VuZGFudHNgIHBhcmFtZXRlci5cbiAqIEl0IGlzIHNldCB0byBgZmFsc2VgIGJ5IGRlZmF1bHQuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3d0R2VCOTc3YnY3cXZBNUZUWWw5P3A9cHJldmlldykpXG4gKiBgYGBodG1sXG4gKiA8Y29udGFpbmVyICNmaXJzdD5cbiAqICAgPGl0ZW0+YTwvaXRlbT5cbiAqICAgPGl0ZW0+YjwvaXRlbT5cbiAqICAgPGNvbnRhaW5lciAjc2Vjb25kPlxuICogICAgIDxpdGVtPmM8L2l0ZW0+XG4gKiAgIDwvY29udGFpbmVyPlxuICogPC9jb250YWluZXI+XG4gKiBgYGBcbiAqXG4gKiBXaGVuIHF1ZXJ5aW5nIGZvciBpdGVtcywgdGhlIGZpcnN0IGNvbnRhaW5lciB3aWxsIHNlZSBvbmx5IGBhYCBhbmQgYGJgIGJ5IGRlZmF1bHQsXG4gKiBidXQgd2l0aCBgUXVlcnkoVGV4dERpcmVjdGl2ZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSlgIGl0IHdpbGwgc2VlIGBjYCB0b28uXG4gKlxuICogVGhlIHF1ZXJpZWQgZGlyZWN0aXZlcyBhcmUga2VwdCBpbiBhIGRlcHRoLWZpcnN0IHByZS1vcmRlciB3aXRoIHJlc3BlY3QgdG8gdGhlaXJcbiAqIHBvc2l0aW9ucyBpbiB0aGUgRE9NLlxuICpcbiAqIFF1ZXJ5IGRvZXMgbm90IGxvb2sgZGVlcCBpbnRvIGFueSBzdWJjb21wb25lbnQgdmlld3MuXG4gKlxuICogUXVlcnkgaXMgdXBkYXRlZCBhcyBwYXJ0IG9mIHRoZSBjaGFuZ2UtZGV0ZWN0aW9uIGN5Y2xlLiBTaW5jZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gKiBoYXBwZW5zIGFmdGVyIGNvbnN0cnVjdGlvbiBvZiBhIGRpcmVjdGl2ZSwgUXVlcnlMaXN0IHdpbGwgYWx3YXlzIGJlIGVtcHR5IHdoZW4gb2JzZXJ2ZWQgaW4gdGhlXG4gKiBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBUaGUgaW5qZWN0ZWQgb2JqZWN0IGlzIGFuIHVubW9kaWZpYWJsZSBsaXZlIGxpc3QuXG4gKiBTZWUge0BsaW5rIFF1ZXJ5TGlzdH0gZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBRdWVyeU1ldGFkYXRhIGV4dGVuZHMgRGVwZW5kZW5jeU1ldGFkYXRhIHtcbiAgLyoqXG4gICAqIHdoZXRoZXIgd2Ugd2FudCB0byBxdWVyeSBvbmx5IGRpcmVjdCBjaGlsZHJlbiAoZmFsc2UpIG9yIGFsbFxuICAgKiBjaGlsZHJlbiAodHJ1ZSkuXG4gICAqL1xuICBkZXNjZW5kYW50czogYm9vbGVhbjtcbiAgZmlyc3Q6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2VsZWN0b3I6IFR5cGUgfCBzdHJpbmcsXG4gICAgICAgICAgICAgIHtkZXNjZW5kYW50cyA9IGZhbHNlLCBmaXJzdCA9IGZhbHNlfToge2Rlc2NlbmRhbnRzPzogYm9vbGVhbiwgZmlyc3Q/OiBib29sZWFufSA9IHt9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHM7XG4gICAgdGhpcy5maXJzdCA9IGZpcnN0O1xuICB9XG5cbiAgLyoqXG4gICAqIGFsd2F5cyBgZmFsc2VgIHRvIGRpZmZlcmVudGlhdGUgaXQgd2l0aCB7QGxpbmsgVmlld1F1ZXJ5TWV0YWRhdGF9LlxuICAgKi9cbiAgZ2V0IGlzVmlld1F1ZXJ5KCk6IGJvb2xlYW4geyByZXR1cm4gZmFsc2U7IH1cblxuICAvKipcbiAgICogd2hhdCB0aGlzIGlzIHF1ZXJ5aW5nIGZvci5cbiAgICovXG4gIGdldCBzZWxlY3RvcigpIHsgcmV0dXJuIHJlc29sdmVGb3J3YXJkUmVmKHRoaXMuX3NlbGVjdG9yKTsgfVxuXG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoaXMgaXMgcXVlcnlpbmcgZm9yIGEgdmFyaWFibGUgYmluZGluZyBvciBhIGRpcmVjdGl2ZS5cbiAgICovXG4gIGdldCBpc1ZhckJpbmRpbmdRdWVyeSgpOiBib29sZWFuIHsgcmV0dXJuIGlzU3RyaW5nKHRoaXMuc2VsZWN0b3IpOyB9XG5cbiAgLyoqXG4gICAqIHJldHVybnMgYSBsaXN0IG9mIHZhcmlhYmxlIGJpbmRpbmdzIHRoaXMgaXMgcXVlcnlpbmcgZm9yLlxuICAgKiBPbmx5IGFwcGxpY2FibGUgaWYgdGhpcyBpcyBhIHZhcmlhYmxlIGJpbmRpbmdzIHF1ZXJ5LlxuICAgKi9cbiAgZ2V0IHZhckJpbmRpbmdzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMuc2VsZWN0b3Iuc3BsaXQoJywnKTsgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiBgQFF1ZXJ5KCR7c3RyaW5naWZ5KHRoaXMuc2VsZWN0b3IpfSlgOyB9XG59XG5cbi8vIFRPRE86IGFkZCBhbiBleGFtcGxlIGFmdGVyIENvbnRlbnRDaGlsZHJlbiBhbmQgVmlld0NoaWxkcmVuIGFyZSBpbiBtYXN0ZXJcbi8qKlxuICogQ29uZmlndXJlcyBhIGNvbnRlbnQgcXVlcnkuXG4gKlxuICogQ29udGVudCBxdWVyaWVzIGFyZSBzZXQgYmVmb3JlIHRoZSBgbmdBZnRlckNvbnRlbnRJbml0YCBjYWxsYmFjayBpcyBjYWxsZWQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoe1xuICogICBzZWxlY3RvcjogJ3NvbWVEaXInXG4gKiB9KVxuICogY2xhc3MgU29tZURpciB7XG4gKiAgIEBDb250ZW50Q2hpbGRyZW4oQ2hpbGREaXJlY3RpdmUpIGNvbnRlbnRDaGlsZHJlbjogUXVlcnlMaXN0PENoaWxkRGlyZWN0aXZlPjtcbiAqXG4gKiAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAqICAgICAvLyBjb250ZW50Q2hpbGRyZW4gaXMgc2V0XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIENvbnRlbnRDaGlsZHJlbk1ldGFkYXRhIGV4dGVuZHMgUXVlcnlNZXRhZGF0YSB7XG4gIGNvbnN0cnVjdG9yKF9zZWxlY3RvcjogVHlwZSB8IHN0cmluZywge2Rlc2NlbmRhbnRzID0gZmFsc2V9OiB7ZGVzY2VuZGFudHM/OiBib29sZWFufSA9IHt9KSB7XG4gICAgc3VwZXIoX3NlbGVjdG9yLCB7ZGVzY2VuZGFudHM6IGRlc2NlbmRhbnRzfSk7XG4gIH1cbn1cblxuLy8gVE9ETzogYWRkIGFuIGV4YW1wbGUgYWZ0ZXIgQ29udGVudENoaWxkIGFuZCBWaWV3Q2hpbGQgYXJlIGluIG1hc3RlclxuLyoqXG4gKiBDb25maWd1cmVzIGEgY29udGVudCBxdWVyeS5cbiAqXG4gKiBDb250ZW50IHF1ZXJpZXMgYXJlIHNldCBiZWZvcmUgdGhlIGBuZ0FmdGVyQ29udGVudEluaXRgIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7XG4gKiAgIHNlbGVjdG9yOiAnc29tZURpcidcbiAqIH0pXG4gKiBjbGFzcyBTb21lRGlyIHtcbiAqICAgQENvbnRlbnRDaGlsZChDaGlsZERpcmVjdGl2ZSkgY29udGVudENoaWxkO1xuICpcbiAqICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICogICAgIC8vIGNvbnRlbnRDaGlsZCBpcyBzZXRcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgQ29udGVudENoaWxkTWV0YWRhdGEgZXh0ZW5kcyBRdWVyeU1ldGFkYXRhIHtcbiAgY29uc3RydWN0b3IoX3NlbGVjdG9yOiBUeXBlIHwgc3RyaW5nKSB7IHN1cGVyKF9zZWxlY3Rvciwge2Rlc2NlbmRhbnRzOiB0cnVlLCBmaXJzdDogdHJ1ZX0pOyB9XG59XG5cbi8qKlxuICogU2ltaWxhciB0byB7QGxpbmsgUXVlcnlNZXRhZGF0YX0sIGJ1dCBxdWVyeWluZyB0aGUgY29tcG9uZW50IHZpZXcsIGluc3RlYWQgb2ZcbiAqIHRoZSBjb250ZW50IGNoaWxkcmVuLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9lTnNGSERmN1lqeU02SXpLeE0xaj9wPXByZXZpZXcpKVxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICAuLi4sXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGl0ZW0+IGEgPC9pdGVtPlxuICogICAgIDxpdGVtPiBiIDwvaXRlbT5cbiAqICAgICA8aXRlbT4gYyA8L2l0ZW0+XG4gKiAgIGBcbiAqIH0pXG4gKiBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIHNob3duOiBib29sZWFuO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBAUXVlcnkoSXRlbSkgaXRlbXM6UXVlcnlMaXN0PEl0ZW0+KSB7XG4gKiAgICAgaXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gY29uc29sZS5sb2coaXRlbXMubGVuZ3RoKSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFN1cHBvcnRzIHRoZSBzYW1lIHF1ZXJ5aW5nIHBhcmFtZXRlcnMgYXMge0BsaW5rIFF1ZXJ5TWV0YWRhdGF9LCBleGNlcHRcbiAqIGBkZXNjZW5kYW50c2AuIFRoaXMgYWx3YXlzIHF1ZXJpZXMgdGhlIHdob2xlIHZpZXcuXG4gKlxuICogQXMgYHNob3duYCBpcyBmbGlwcGVkIGJldHdlZW4gdHJ1ZSBhbmQgZmFsc2UsIGl0ZW1zIHdpbGwgY29udGFpbiB6ZXJvIG9mIG9uZVxuICogaXRlbXMuXG4gKlxuICogU3BlY2lmaWVzIHRoYXQgYSB7QGxpbmsgUXVlcnlMaXN0fSBzaG91bGQgYmUgaW5qZWN0ZWQuXG4gKlxuICogVGhlIGluamVjdGVkIG9iamVjdCBpcyBhbiBpdGVyYWJsZSBhbmQgb2JzZXJ2YWJsZSBsaXZlIGxpc3QuXG4gKiBTZWUge0BsaW5rIFF1ZXJ5TGlzdH0gZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBWaWV3UXVlcnlNZXRhZGF0YSBleHRlbmRzIFF1ZXJ5TWV0YWRhdGEge1xuICBjb25zdHJ1Y3Rvcihfc2VsZWN0b3I6IFR5cGUgfCBzdHJpbmcsXG4gICAgICAgICAgICAgIHtkZXNjZW5kYW50cyA9IGZhbHNlLCBmaXJzdCA9IGZhbHNlfToge2Rlc2NlbmRhbnRzPzogYm9vbGVhbiwgZmlyc3Q/OiBib29sZWFufSA9IHt9KSB7XG4gICAgc3VwZXIoX3NlbGVjdG9yLCB7ZGVzY2VuZGFudHM6IGRlc2NlbmRhbnRzLCBmaXJzdDogZmlyc3R9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhbHdheXMgYHRydWVgIHRvIGRpZmZlcmVudGlhdGUgaXQgd2l0aCB7QGxpbmsgUXVlcnlNZXRhZGF0YX0uXG4gICAqL1xuICBnZXQgaXNWaWV3UXVlcnkoKSB7IHJldHVybiB0cnVlOyB9XG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiBgQFZpZXdRdWVyeSgke3N0cmluZ2lmeSh0aGlzLnNlbGVjdG9yKX0pYDsgfVxufVxuXG4vKipcbiAqIENvbmZpZ3VyZXMgYSB2aWV3IHF1ZXJ5LlxuICpcbiAqIFZpZXcgcXVlcmllcyBhcmUgc2V0IGJlZm9yZSB0aGUgYG5nQWZ0ZXJWaWV3SW5pdGAgY2FsbGJhY2sgaXMgY2FsbGVkLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdzb21lRGlyJyxcbiAqICAgdGVtcGxhdGVVcmw6ICdzb21lVGVtcGxhdGUnLFxuICogICBkaXJlY3RpdmVzOiBbSXRlbURpcmVjdGl2ZV1cbiAqIH0pXG4gKiBjbGFzcyBTb21lRGlyIHtcbiAqICAgQFZpZXdDaGlsZHJlbihJdGVtRGlyZWN0aXZlKSB2aWV3Q2hpbGRyZW46IFF1ZXJ5TGlzdDxJdGVtRGlyZWN0aXZlPjtcbiAqXG4gKiAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAqICAgICAvLyB2aWV3Q2hpbGRyZW4gaXMgc2V0XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIFZpZXdDaGlsZHJlbk1ldGFkYXRhIGV4dGVuZHMgVmlld1F1ZXJ5TWV0YWRhdGEge1xuICBjb25zdHJ1Y3Rvcihfc2VsZWN0b3I6IFR5cGUgfCBzdHJpbmcpIHsgc3VwZXIoX3NlbGVjdG9yLCB7ZGVzY2VuZGFudHM6IHRydWV9KTsgfVxufVxuXG4vKipcbiAqIENvbmZpZ3VyZXMgYSB2aWV3IHF1ZXJ5LlxuICpcbiAqIFZpZXcgcXVlcmllcyBhcmUgc2V0IGJlZm9yZSB0aGUgYG5nQWZ0ZXJWaWV3SW5pdGAgY2FsbGJhY2sgaXMgY2FsbGVkLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdzb21lRGlyJyxcbiAqICAgdGVtcGxhdGVVcmw6ICdzb21lVGVtcGxhdGUnLFxuICogICBkaXJlY3RpdmVzOiBbSXRlbURpcmVjdGl2ZV1cbiAqIH0pXG4gKiBjbGFzcyBTb21lRGlyIHtcbiAqICAgQFZpZXdDaGlsZChJdGVtRGlyZWN0aXZlKSB2aWV3Q2hpbGQ6SXRlbURpcmVjdGl2ZTtcbiAqXG4gKiAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAqICAgICAvLyB2aWV3Q2hpbGQgaXMgc2V0XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIFZpZXdDaGlsZE1ldGFkYXRhIGV4dGVuZHMgVmlld1F1ZXJ5TWV0YWRhdGEge1xuICBjb25zdHJ1Y3Rvcihfc2VsZWN0b3I6IFR5cGUgfCBzdHJpbmcpIHsgc3VwZXIoX3NlbGVjdG9yLCB7ZGVzY2VuZGFudHM6IHRydWUsIGZpcnN0OiB0cnVlfSk7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var exceptions_1 = require('angular2/src/facade/exceptions');\r\n/**\r\n * Represents a location in a View that has an injection, change-detection and render context\r\n * associated with it.\r\n *\r\n * An `ElementRef` is created for each element in the Template that contains a Directive, Component\r\n * or data-binding.\r\n *\r\n * An `ElementRef` is backed by a render-specific element. In the browser, this is usually a DOM\r\n * element.\r\n */\r\nvar ElementRef = (function () {\r\n function ElementRef() {\r\n }\r\n Object.defineProperty(ElementRef.prototype, \"nativeElement\", {\r\n /**\r\n * The underlying native element or `null` if direct access to native elements is not supported\r\n * (e.g. when the application runs in a web worker).\r\n *\r\n * <div class=\"callout is-critical\">\r\n * <header>Use with caution</header>\r\n * <p>\r\n * Use this API as the last resort when direct access to DOM is needed. Use templating and\r\n * data-binding provided by Angular instead. Alternatively you take a look at {@link Renderer}\r\n * which provides API that can safely be used even when direct access to native elements is not\r\n * supported.\r\n * </p>\r\n * <p>\r\n * Relying on direct DOM access creates tight coupling between your application and rendering\r\n * layers which will make it impossible to separate the two and deploy your application into a\r\n * web worker.\r\n * </p>\r\n * </div>\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ElementRef;\r\n})();\r\nexports.ElementRef = ElementRef;\r\nvar ElementRef_ = (function () {\r\n function ElementRef_(_appElement) {\r\n this._appElement = _appElement;\r\n }\r\n Object.defineProperty(ElementRef_.prototype, \"internalElement\", {\r\n get: function () { return this._appElement; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ElementRef_.prototype, \"nativeElement\", {\r\n get: function () { return this._appElement.nativeElement; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ElementRef_;\r\n})();\r\nexports.ElementRef_ = ElementRef_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudF9yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvZWxlbWVudF9yZWYudHMiXSwibmFtZXMiOlsiRWxlbWVudFJlZiIsIkVsZW1lbnRSZWYuY29uc3RydWN0b3IiLCJFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQiLCJFbGVtZW50UmVmXyIsIkVsZW1lbnRSZWZfLmNvbnN0cnVjdG9yIiwiRWxlbWVudFJlZl8uaW50ZXJuYWxFbGVtZW50IiwiRWxlbWVudFJlZl8ubmF0aXZlRWxlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUEsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFHN0Q7Ozs7Ozs7OztHQVNHO0FBQ0g7SUFBQUE7SUFxQkFDLENBQUNBO0lBRENELHNCQUFJQSxxQ0FBYUE7UUFuQmpCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBa0JHQTthQUNIQSxjQUEyQkUsTUFBTUEsQ0FBQ0EsMEJBQWFBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUY7SUFDdERBLGlCQUFDQTtBQUFEQSxDQUFDQSxBQXJCRCxJQXFCQztBQXJCcUIsa0JBQVUsYUFxQi9CLENBQUE7QUFFRDtJQUNFRyxxQkFBb0JBLFdBQXVCQTtRQUF2QkMsZ0JBQVdBLEdBQVhBLFdBQVdBLENBQVlBO0lBQUdBLENBQUNBO0lBRS9DRCxzQkFBSUEsd0NBQWVBO2FBQW5CQSxjQUFvQ0UsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBRjtJQUU5REEsc0JBQUlBLHNDQUFhQTthQUFqQkEsY0FBc0JHLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFdBQVdBLENBQUNBLGFBQWFBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUg7SUFDaEVBLGtCQUFDQTtBQUFEQSxDQUFDQSxBQU5ELElBTUM7QUFOWSxtQkFBVyxjQU12QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1bmltcGxlbWVudGVkfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtBcHBFbGVtZW50fSBmcm9tICcuL2VsZW1lbnQnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBsb2NhdGlvbiBpbiBhIFZpZXcgdGhhdCBoYXMgYW4gaW5qZWN0aW9uLCBjaGFuZ2UtZGV0ZWN0aW9uIGFuZCByZW5kZXIgY29udGV4dFxuICogYXNzb2NpYXRlZCB3aXRoIGl0LlxuICpcbiAqIEFuIGBFbGVtZW50UmVmYCBpcyBjcmVhdGVkIGZvciBlYWNoIGVsZW1lbnQgaW4gdGhlIFRlbXBsYXRlIHRoYXQgY29udGFpbnMgYSBEaXJlY3RpdmUsIENvbXBvbmVudFxuICogb3IgZGF0YS1iaW5kaW5nLlxuICpcbiAqIEFuIGBFbGVtZW50UmVmYCBpcyBiYWNrZWQgYnkgYSByZW5kZXItc3BlY2lmaWMgZWxlbWVudC4gSW4gdGhlIGJyb3dzZXIsIHRoaXMgaXMgdXN1YWxseSBhIERPTVxuICogZWxlbWVudC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVsZW1lbnRSZWYge1xuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgbmF0aXZlIGVsZW1lbnQgb3IgYG51bGxgIGlmIGRpcmVjdCBhY2Nlc3MgdG8gbmF0aXZlIGVsZW1lbnRzIGlzIG5vdCBzdXBwb3J0ZWRcbiAgICogKGUuZy4gd2hlbiB0aGUgYXBwbGljYXRpb24gcnVucyBpbiBhIHdlYiB3b3JrZXIpLlxuICAgKlxuICAgKiA8ZGl2IGNsYXNzPVwiY2FsbG91dCBpcy1jcml0aWNhbFwiPlxuICAgKiAgIDxoZWFkZXI+VXNlIHdpdGggY2F1dGlvbjwvaGVhZGVyPlxuICAgKiAgIDxwPlxuICAgKiAgICBVc2UgdGhpcyBBUEkgYXMgdGhlIGxhc3QgcmVzb3J0IHdoZW4gZGlyZWN0IGFjY2VzcyB0byBET00gaXMgbmVlZGVkLiBVc2UgdGVtcGxhdGluZyBhbmRcbiAgICogICAgZGF0YS1iaW5kaW5nIHByb3ZpZGVkIGJ5IEFuZ3VsYXIgaW5zdGVhZC4gQWx0ZXJuYXRpdmVseSB5b3UgdGFrZSBhIGxvb2sgYXQge0BsaW5rIFJlbmRlcmVyfVxuICAgKiAgICB3aGljaCBwcm92aWRlcyBBUEkgdGhhdCBjYW4gc2FmZWx5IGJlIHVzZWQgZXZlbiB3aGVuIGRpcmVjdCBhY2Nlc3MgdG8gbmF0aXZlIGVsZW1lbnRzIGlzIG5vdFxuICAgKiAgICBzdXBwb3J0ZWQuXG4gICAqICAgPC9wPlxuICAgKiAgIDxwPlxuICAgKiAgICBSZWx5aW5nIG9uIGRpcmVjdCBET00gYWNjZXNzIGNyZWF0ZXMgdGlnaHQgY291cGxpbmcgYmV0d2VlbiB5b3VyIGFwcGxpY2F0aW9uIGFuZCByZW5kZXJpbmdcbiAgICogICAgbGF5ZXJzIHdoaWNoIHdpbGwgbWFrZSBpdCBpbXBvc3NpYmxlIHRvIHNlcGFyYXRlIHRoZSB0d28gYW5kIGRlcGxveSB5b3VyIGFwcGxpY2F0aW9uIGludG8gYVxuICAgKiAgICB3ZWIgd29ya2VyLlxuICAgKiAgIDwvcD5cbiAgICogPC9kaXY+XG4gICAqL1xuICBnZXQgbmF0aXZlRWxlbWVudCgpOiBhbnkgeyByZXR1cm4gdW5pbXBsZW1lbnRlZCgpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50UmVmXyBpbXBsZW1lbnRzIEVsZW1lbnRSZWYge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hcHBFbGVtZW50OiBBcHBFbGVtZW50KSB7fVxuXG4gIGdldCBpbnRlcm5hbEVsZW1lbnQoKTogQXBwRWxlbWVudCB7IHJldHVybiB0aGlzLl9hcHBFbGVtZW50OyB9XG5cbiAgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7IHJldHVybiB0aGlzLl9hcHBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Represents a container where one or more Views can be attached.\r\n *\r\n * The container can contain two kinds of Views. Host Views, created by instantiating a\r\n * {@link Component} via {@link #createHostView}, and Embedded Views, created by instantiating an\r\n * {@link TemplateRef Embedded Template} via {@link #createEmbeddedView}.\r\n *\r\n * The location of the View Container within the containing View is specified by the Anchor\r\n * `element`. Each View Container can have only one Anchor Element and each Anchor Element can only\r\n * have a single View Container.\r\n *\r\n * Root elements of Views attached to this container become siblings of the Anchor Element in\r\n * the Rendered View.\r\n *\r\n * To access a `ViewContainerRef` of an Element, you can either place a {@link Directive} injected\r\n * with `ViewContainerRef` on the Element, or you obtain it via\r\n * {@link AppViewManager#getViewContainer}.\r\n *\r\n * <!-- TODO(i): we are also considering ElementRef#viewContainer api -->\r\n */\r\nvar ViewContainerRef = (function () {\r\n function ViewContainerRef() {\r\n }\r\n Object.defineProperty(ViewContainerRef.prototype, \"element\", {\r\n /**\r\n * Anchor element that specifies the location of this container in the containing View.\r\n * <!-- TODO: rename to anchorElement -->\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Destroys all Views in this container.\r\n */\r\n ViewContainerRef.prototype.clear = function () {\r\n for (var i = this.length - 1; i >= 0; i--) {\r\n this.remove(i);\r\n }\r\n };\r\n Object.defineProperty(ViewContainerRef.prototype, \"length\", {\r\n /**\r\n * Returns the number of Views currently attached to this container.\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n return ViewContainerRef;\r\n})();\r\nexports.ViewContainerRef = ViewContainerRef;\r\nvar ViewContainerRef_ = (function (_super) {\r\n __extends(ViewContainerRef_, _super);\r\n function ViewContainerRef_(_element) {\r\n _super.call(this);\r\n this._element = _element;\r\n }\r\n ViewContainerRef_.prototype.get = function (index) { return this._element.nestedViews[index].ref; };\r\n Object.defineProperty(ViewContainerRef_.prototype, \"length\", {\r\n get: function () {\r\n var views = this._element.nestedViews;\r\n return lang_1.isPresent(views) ? views.length : 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ViewContainerRef_.prototype, \"element\", {\r\n get: function () { return this._element.ref; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n // TODO(rado): profile and decide whether bounds checks should be added\r\n // to the methods below.\r\n ViewContainerRef_.prototype.createEmbeddedView = function (templateRef, index) {\r\n if (index === void 0) { index = -1; }\r\n if (index == -1)\r\n index = this.length;\r\n var vm = this._element.parentView.viewManager;\r\n return vm.createEmbeddedViewInContainer(this._element.ref, index, templateRef);\r\n };\r\n ViewContainerRef_.prototype.createHostView = function (hostViewFactoryRef, index, dynamicallyCreatedProviders, projectableNodes) {\r\n if (index === void 0) { index = -1; }\r\n if (dynamicallyCreatedProviders === void 0) { dynamicallyCreatedProviders = null; }\r\n if (projectableNodes === void 0) { projectableNodes = null; }\r\n if (index == -1)\r\n index = this.length;\r\n var vm = this._element.parentView.viewManager;\r\n return vm.createHostViewInContainer(this._element.ref, index, hostViewFactoryRef, dynamicallyCreatedProviders, projectableNodes);\r\n };\r\n // TODO(i): refactor insert+remove into move\r\n ViewContainerRef_.prototype.insert = function (viewRef, index) {\r\n if (index === void 0) { index = -1; }\r\n if (index == -1)\r\n index = this.length;\r\n var vm = this._element.parentView.viewManager;\r\n return vm.attachViewInContainer(this._element.ref, index, viewRef);\r\n };\r\n ViewContainerRef_.prototype.indexOf = function (viewRef) {\r\n return collection_1.ListWrapper.indexOf(this._element.nestedViews, viewRef.internalView);\r\n };\r\n // TODO(i): rename to destroy\r\n ViewContainerRef_.prototype.remove = function (index) {\r\n if (index === void 0) { index = -1; }\r\n if (index == -1)\r\n index = this.length - 1;\r\n var vm = this._element.parentView.viewManager;\r\n return vm.destroyViewInContainer(this._element.ref, index);\r\n // view is intentionally not returned to the client.\r\n };\r\n // TODO(i): refactor insert+remove into move\r\n ViewContainerRef_.prototype.detach = function (index) {\r\n if (index === void 0) { index = -1; }\r\n if (index == -1)\r\n index = this.length - 1;\r\n var vm = this._element.parentView.viewManager;\r\n return vm.detachViewInContainer(this._element.ref, index);\r\n };\r\n return ViewContainerRef_;\r\n})(ViewContainerRef);\r\nexports.ViewContainerRef_ = ViewContainerRef_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld19jb250YWluZXJfcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL3ZpZXdfY29udGFpbmVyX3JlZi50cyJdLCJuYW1lcyI6WyJWaWV3Q29udGFpbmVyUmVmIiwiVmlld0NvbnRhaW5lclJlZi5jb25zdHJ1Y3RvciIsIlZpZXdDb250YWluZXJSZWYuZWxlbWVudCIsIlZpZXdDb250YWluZXJSZWYuY2xlYXIiLCJWaWV3Q29udGFpbmVyUmVmLmxlbmd0aCIsIlZpZXdDb250YWluZXJSZWZfIiwiVmlld0NvbnRhaW5lclJlZl8uY29uc3RydWN0b3IiLCJWaWV3Q29udGFpbmVyUmVmXy5nZXQiLCJWaWV3Q29udGFpbmVyUmVmXy5sZW5ndGgiLCJWaWV3Q29udGFpbmVyUmVmXy5lbGVtZW50IiwiVmlld0NvbnRhaW5lclJlZl8uY3JlYXRlRW1iZWRkZWRWaWV3IiwiVmlld0NvbnRhaW5lclJlZl8uY3JlYXRlSG9zdFZpZXciLCJWaWV3Q29udGFpbmVyUmVmXy5pbnNlcnQiLCJWaWV3Q29udGFpbmVyUmVmXy5pbmRleE9mIiwiVmlld0NvbnRhaW5lclJlZl8ucmVtb3ZlIiwiVmlld0NvbnRhaW5lclJlZl8uZGV0YWNoIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJCQUEwQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzNELDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTdELHFCQUFpQywwQkFBMEIsQ0FBQyxDQUFBO0FBZTVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0g7SUFBQUE7SUFrRkFDLENBQUNBO0lBN0VDRCxzQkFBSUEscUNBQU9BO1FBSlhBOzs7V0FHR0E7YUFDSEEsY0FBNEJFLE1BQU1BLENBQWFBLDBCQUFhQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFGO0lBRWpFQTs7T0FFR0E7SUFDSEEsZ0NBQUtBLEdBQUxBO1FBQ0VHLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNB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O0lBRURULDRDQUE0Q0E7SUFDNUNBLGtDQUFNQSxHQUFOQSxVQUFPQSxLQUFrQkE7UUFBbEJVLHFCQUFrQkEsR0FBbEJBLFNBQWlCQSxDQUFDQTtRQUN2QkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFBQ0EsS0FBS0EsR0FBR0EsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsQ0FBQ0EsQ0FBQ0E7UUFDekNBLElBQUlBLEVBQUVBLEdBQUdBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLFVBQVVBLENBQUNBLFdBQVdBLENBQUNBO1FBQzlDQSxNQUFNQSxDQUFDQSxFQUFFQSxDQUFDQSxxQkFBcUJBLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLEdBQUdBLEVBQUVBLEtBQUtBLENBQUNBLENBQUNBO0lBQzVEQSxDQUFDQTtJQUNIVix3QkFBQ0E7QUFBREEsQ0FBQ0EsQUFyREQsRUFBdUMsZ0JBQWdCLEVBcUR0RDtBQXJEWSx5QkFBaUIsb0JBcUQ3QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7dW5pbXBsZW1lbnRlZH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7UmVzb2x2ZWRQcm92aWRlciwgSW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtpc1ByZXNlbnQsIGlzQmxhbmt9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbmltcG9ydCB7QXBwRWxlbWVudH0gZnJvbSAnLi9lbGVtZW50JztcblxuaW1wb3J0IHtFbGVtZW50UmVmLCBFbGVtZW50UmVmX30gZnJvbSAnLi9lbGVtZW50X3JlZic7XG5pbXBvcnQge1RlbXBsYXRlUmVmLCBUZW1wbGF0ZVJlZl99IGZyb20gJy4vdGVtcGxhdGVfcmVmJztcbmltcG9ydCB7XG4gIEVtYmVkZGVkVmlld1JlZixcbiAgSG9zdFZpZXdSZWYsXG4gIEhvc3RWaWV3RmFjdG9yeVJlZixcbiAgSG9zdFZpZXdGYWN0b3J5UmVmXyxcbiAgVmlld1JlZixcbiAgVmlld1JlZl9cbn0gZnJvbSAnLi92aWV3X3JlZic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbnRhaW5lciB3aGVyZSBvbmUgb3IgbW9yZSBWaWV3cyBjYW4gYmUgYXR0YWNoZWQuXG4gKlxuICogVGhlIGNvbnRhaW5lciBjYW4gY29udGFpbiB0d28ga2luZHMgb2YgVmlld3MuIEhvc3QgVmlld3MsIGNyZWF0ZWQgYnkgaW5zdGFudGlhdGluZyBhXG4gKiB7QGxpbmsgQ29tcG9uZW50fSB2aWEge0BsaW5rICNjcmVhdGVIb3N0Vmlld30sIGFuZCBFbWJlZGRlZCBWaWV3cywgY3JlYXRlZCBieSBpbnN0YW50aWF0aW5nIGFuXG4gKiB7QGxpbmsgVGVtcGxhdGVSZWYgRW1iZWRkZWQgVGVtcGxhdGV9IHZpYSB7QGxpbmsgI2NyZWF0ZUVtYmVkZGVkVmlld30uXG4gKlxuICogVGhlIGxvY2F0aW9uIG9mIHRoZSBWaWV3IENvbnRhaW5lciB3aXRoaW4gdGhlIGNvbnRhaW5pbmcgVmlldyBpcyBzcGVjaWZpZWQgYnkgdGhlIEFuY2hvclxuICogYGVsZW1lbnRgLiBFYWNoIFZpZXcgQ29udGFpbmVyIGNhbiBoYXZlIG9ubHkgb25lIEFuY2hvciBFbGVtZW50IGFuZCBlYWNoIEFuY2hvciBFbGVtZW50IGNhbiBvbmx5XG4gKiBoYXZlIGEgc2luZ2xlIFZpZXcgQ29udGFpbmVyLlxuICpcbiAqIFJvb3QgZWxlbWVudHMgb2YgVmlld3MgYXR0YWNoZWQgdG8gdGhpcyBjb250YWluZXIgYmVjb21lIHNpYmxpbmdzIG9mIHRoZSBBbmNob3IgRWxlbWVudCBpblxuICogdGhlIFJlbmRlcmVkIFZpZXcuXG4gKlxuICogVG8gYWNjZXNzIGEgYFZpZXdDb250YWluZXJSZWZgIG9mIGFuIEVsZW1lbnQsIHlvdSBjYW4gZWl0aGVyIHBsYWNlIGEge0BsaW5rIERpcmVjdGl2ZX0gaW5qZWN0ZWRcbiAqIHdpdGggYFZpZXdDb250YWluZXJSZWZgIG9uIHRoZSBFbGVtZW50LCBvciB5b3Ugb2J0YWluIGl0IHZpYVxuICoge0BsaW5rIEFwcFZpZXdNYW5hZ2VyI2dldFZpZXdDb250YWluZXJ9LlxuICpcbiAqIDwhLS0gVE9ETyhpKTogd2UgYXJlIGFsc28gY29uc2lkZXJpbmcgRWxlbWVudFJlZiN2aWV3Q29udGFpbmVyIGFwaSAtLT5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZpZXdDb250YWluZXJSZWYge1xuICAvKipcbiAgICogQW5jaG9yIGVsZW1lbnQgdGhhdCBzcGVjaWZpZXMgdGhlIGxvY2F0aW9uIG9mIHRoaXMgY29udGFpbmVyIGluIHRoZSBjb250YWluaW5nIFZpZXcuXG4gICAqIDwhLS0gVE9ETzogcmVuYW1lIHRvIGFuY2hvckVsZW1lbnQgLS0+XG4gICAqL1xuICBnZXQgZWxlbWVudCgpOiBFbGVtZW50UmVmIHsgcmV0dXJuIDxFbGVtZW50UmVmPnVuaW1wbGVtZW50ZWQoKTsgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBhbGwgVmlld3MgaW4gdGhpcyBjb250YWluZXIuXG4gICAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdGhpcy5yZW1vdmUoaSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHtAbGluayBWaWV3UmVmfSBmb3IgdGhlIFZpZXcgbG9jYXRlZCBpbiB0aGlzIGNvbnRhaW5lciBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LlxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0KGluZGV4OiBudW1iZXIpOiBWaWV3UmVmO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgVmlld3MgY3VycmVudGx5IGF0dGFjaGVkIHRvIHRoaXMgY29udGFpbmVyLlxuICAgKi9cbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIgeyByZXR1cm4gPG51bWJlcj51bmltcGxlbWVudGVkKCk7IH07XG5cbiAgLyoqXG4gICAqIEluc3RhbnRpYXRlcyBhbiBFbWJlZGRlZCBWaWV3IGJhc2VkIG9uIHRoZSB7QGxpbmsgVGVtcGxhdGVSZWYgYHRlbXBsYXRlUmVmYH0gYW5kIGluc2VydHMgaXRcbiAgICogaW50byB0aGlzIGNvbnRhaW5lciBhdCB0aGUgc3BlY2lmaWVkIGBpbmRleGAuXG4gICAqXG4gICAqIElmIGBpbmRleGAgaXMgbm90IHNwZWNpZmllZCwgdGhlIG5ldyBWaWV3IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgdGhlIGxhc3QgVmlldyBpbiB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSB7QGxpbmsgVmlld1JlZn0gZm9yIHRoZSBuZXdseSBjcmVhdGVkIFZpZXcuXG4gICAqL1xuICBhYnN0cmFjdCBjcmVhdGVFbWJlZGRlZFZpZXcodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmLCBpbmRleD86IG51bWJlcik6IEVtYmVkZGVkVmlld1JlZjtcblxuICAvKipcbiAgICogSW5zdGFudGlhdGVzIGEgc2luZ2xlIHtAbGluayBDb21wb25lbnR9IGFuZCBpbnNlcnRzIGl0cyBIb3N0IFZpZXcgaW50byB0aGlzIGNvbnRhaW5lciBhdCB0aGVcbiAgICogc3BlY2lmaWVkIGBpbmRleGAuXG4gICAqXG4gICAqIFRoZSBjb21wb25lbnQgaXMgaW5zdGFudGlhdGVkIHVzaW5nIGl0cyB7QGxpbmsgUHJvdG9WaWV3UmVmIGBwcm90b1ZpZXdgfSB3aGljaCBjYW4gYmVcbiAgICogb2J0YWluZWQgdmlhIHtAbGluayBDb21waWxlciNjb21waWxlSW5Ib3N0fS5cbiAgICpcbiAgICogSWYgYGluZGV4YCBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbmV3IFZpZXcgd2lsbCBiZSBpbnNlcnRlZCBhcyB0aGUgbGFzdCBWaWV3IGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIFlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGBkeW5hbWljYWxseUNyZWF0ZWRQcm92aWRlcnNgLCB3aGljaCBjb25maWd1cmUgdGhlIHtAbGluayBJbmplY3Rvcn1cbiAgICogdGhhdCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHRoZSBIb3N0IFZpZXcuXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHtAbGluayBIb3N0Vmlld1JlZn0gb2YgdGhlIEhvc3QgVmlldyBjcmVhdGVkIGZvciB0aGUgbmV3bHkgaW5zdGFudGlhdGVkIENvbXBvbmVudC5cbiAgICovXG4gIGFic3RyYWN0IGNyZWF0ZUhvc3RWaWV3KGhvc3RWaWV3RmFjdG9yeVJlZjogSG9zdFZpZXdGYWN0b3J5UmVmLCBpbmRleD86IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZHluYW1pY2FsbHlDcmVhdGVkUHJvdmlkZXJzPzogUmVzb2x2ZWRQcm92aWRlcltdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0YWJsZU5vZGVzPzogYW55W11bXSk6IEhvc3RWaWV3UmVmO1xuXG4gIC8qKlxuICAgKiBJbnNlcnRzIGEgVmlldyBpZGVudGlmaWVkIGJ5IGEge0BsaW5rIFZpZXdSZWZ9IGludG8gdGhlIGNvbnRhaW5lciBhdCB0aGUgc3BlY2lmaWVkIGBpbmRleGAuXG4gICAqXG4gICAqIElmIGBpbmRleGAgaXMgbm90IHNwZWNpZmllZCwgdGhlIG5ldyBWaWV3IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgdGhlIGxhc3QgVmlldyBpbiB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBpbnNlcnRlZCB7QGxpbmsgVmlld1JlZn0uXG4gICAqL1xuICBhYnN0cmFjdCBpbnNlcnQodmlld1JlZjogRW1iZWRkZWRWaWV3UmVmLCBpbmRleD86IG51bWJlcik6IEVtYmVkZGVkVmlld1JlZjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIFZpZXcsIHNwZWNpZmllZCB2aWEge0BsaW5rIFZpZXdSZWZ9LCB3aXRoaW4gdGhlIGN1cnJlbnQgY29udGFpbmVyIG9yXG4gICAqIGAtMWAgaWYgdGhpcyBjb250YWluZXIgZG9lc24ndCBjb250YWluIHRoZSBWaWV3LlxuICAgKi9cbiAgYWJzdHJhY3QgaW5kZXhPZih2aWV3UmVmOiBWaWV3UmVmKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBhIFZpZXcgYXR0YWNoZWQgdG8gdGhpcyBjb250YWluZXIgYXQgdGhlIHNwZWNpZmllZCBgaW5kZXhgLlxuICAgKlxuICAgKiBJZiBgaW5kZXhgIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBsYXN0IFZpZXcgaW4gdGhlIGNvbnRhaW5lciB3aWxsIGJlIHJlbW92ZWQuXG4gICAqL1xuICBhYnN0cmFjdCByZW1vdmUoaW5kZXg/OiBudW1iZXIpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBVc2UgYWxvbmcgd2l0aCB7QGxpbmsgI2luc2VydH0gdG8gbW92ZSBhIFZpZXcgd2l0aGluIHRoZSBjdXJyZW50IGNvbnRhaW5lci5cbiAgICpcbiAgICogSWYgdGhlIGBpbmRleGAgcGFyYW0gaXMgb21pdHRlZCwgdGhlIGxhc3Qge0BsaW5rIFZpZXdSZWZ9IGlzIGRldGFjaGVkLlxuICAgKi9cbiAgYWJzdHJhY3QgZGV0YWNoKGluZGV4PzogbnVtYmVyKTogRW1iZWRkZWRWaWV3UmVmO1xufVxuXG5leHBvcnQgY2xhc3MgVmlld0NvbnRhaW5lclJlZl8gZXh0ZW5kcyBWaWV3Q29udGFpbmVyUmVmIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudDogQXBwRWxlbWVudCkgeyBzdXBlcigpOyB9XG5cbiAgZ2V0KGluZGV4OiBudW1iZXIpOiBFbWJlZGRlZFZpZXdSZWYgeyByZXR1cm4gdGhpcy5fZWxlbWVudC5uZXN0ZWRWaWV3c1tpbmRleF0ucmVmOyB9XG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICB2YXIgdmlld3MgPSB0aGlzLl9lbGVtZW50Lm5lc3RlZFZpZXdzO1xuICAgIHJldHVybiBpc1ByZXNlbnQodmlld3MpID8gdmlld3MubGVuZ3RoIDogMDtcbiAgfVxuXG4gIGdldCBlbGVtZW50KCk6IEVsZW1lbnRSZWZfIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnQucmVmOyB9XG5cbiAgLy8gVE9ETyhyYWRvKTogcHJvZmlsZSBhbmQgZGVjaWRlIHdoZXRoZXIgYm91bmRzIGNoZWNrcyBzaG91bGQgYmUgYWRkZWRcbiAgLy8gdG8gdGhlIG1ldGhvZHMgYmVsb3cuXG4gIGNyZWF0ZUVtYmVkZGVkVmlldyh0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWYsIGluZGV4OiBudW1iZXIgPSAtMSk6IEVtYmVkZGVkVmlld1JlZiB7XG4gICAgaWYgKGluZGV4ID09IC0xKSBpbmRleCA9IHRoaXMubGVuZ3RoO1xuICAgIHZhciB2bSA9IHRoaXMuX2VsZW1lbnQucGFyZW50Vmlldy52aWV3TWFuYWdlcjtcbiAgICByZXR1cm4gdm0uY3JlYXRlRW1iZWRkZWRWaWV3SW5Db250YWluZXIodGhpcy5fZWxlbWVudC5yZWYsIGluZGV4LCB0ZW1wbGF0ZVJlZik7XG4gIH1cblxuICBjcmVhdGVIb3N0Vmlldyhob3N0Vmlld0ZhY3RvcnlSZWY6IEhvc3RWaWV3RmFjdG9yeVJlZiwgaW5kZXg6IG51bWJlciA9IC0xLFxuICAgICAgICAgICAgICAgICBkeW5hbWljYWxseUNyZWF0ZWRQcm92aWRlcnM6IFJlc29sdmVkUHJvdmlkZXJbXSA9IG51bGwsXG4gICAgICAgICAgICAgICAgIHByb2plY3RhYmxlTm9kZXM6IGFueVtdW10gPSBudWxsKTogSG9zdFZpZXdSZWYge1xuICAgIGlmIChpbmRleCA9PSAtMSkgaW5kZXggPSB0aGlzLmxlbmd0aDtcbiAgICB2YXIgdm0gPSB0aGlzLl9lbGVtZW50LnBhcmVudFZpZXcudmlld01hbmFnZXI7XG4gICAgcmV0dXJuIHZtLmNyZWF0ZUhvc3RWaWV3SW5Db250YWluZXIodGhpcy5fZWxlbWVudC5yZWYsIGluZGV4LCBob3N0Vmlld0ZhY3RvcnlSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHluYW1pY2FsbHlDcmVhdGVkUHJvdmlkZXJzLCBwcm9qZWN0YWJsZU5vZGVzKTtcbiAgfVxuXG4gIC8vIFRPRE8oaSk6IHJlZmFjdG9yIGluc2VydCtyZW1vdmUgaW50byBtb3ZlXG4gIGluc2VydCh2aWV3UmVmOiBWaWV3UmVmLCBpbmRleDogbnVtYmVyID0gLTEpOiBFbWJlZGRlZFZpZXdSZWYge1xuICAgIGlmIChpbmRleCA9PSAtMSkgaW5kZXggPSB0aGlzLmxlbmd0aDtcbiAgICB2YXIgdm0gPSB0aGlzLl9lbGVtZW50LnBhcmVudFZpZXcudmlld01hbmFnZXI7XG4gICAgcmV0dXJuIHZtLmF0dGFjaFZpZXdJbkNvbnRhaW5lcih0aGlzLl9lbGVtZW50LnJlZiwgaW5kZXgsIHZpZXdSZWYpO1xuICB9XG5cbiAgaW5kZXhPZih2aWV3UmVmOiBWaWV3UmVmKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTGlzdFdyYXBwZXIuaW5kZXhPZih0aGlzLl9lbGVtZW50Lm5lc3RlZFZpZXdzLCAoPFZpZXdSZWZfPnZpZXdSZWYpLmludGVybmFsVmlldyk7XG4gIH1cblxuICAvLyBUT0RPKGkpOiByZW5hbWUgdG8gZGVzdHJveVxuICByZW1vdmUoaW5kZXg6IG51bWJlciA9IC0xKTogdm9pZCB7XG4gICAgaWYgKGluZGV4ID09IC0xKSBpbmRleCA9IHRoaXMubGVuZ3RoIC0gMTtcbiAgICB2YXIgdm0gPSB0aGlzLl9lbGVtZW50LnBhcmVudFZpZXcudmlld01hbmFnZXI7XG4gICAgcmV0dXJuIHZtLmRlc3Ryb3lWaWV3SW5Db250YWluZXIodGhpcy5fZWxlbWVudC5yZWYsIGluZGV4KTtcbiAgICAvLyB2aWV3IGlzIGludGVudGlvbmFsbHkgbm90IHJldHVybmVkIHRvIHRoZSBjbGllbnQuXG4gIH1cblxuICAvLyBUT0RPKGkpOiByZWZhY3RvciBpbnNlcnQrcmVtb3ZlIGludG8gbW92ZVxuICBkZXRhY2goaW5kZXg6IG51bWJlciA9IC0xKTogRW1iZWRkZWRWaWV3UmVmIHtcbiAgICBpZiAoaW5kZXggPT0gLTEpIGluZGV4ID0gdGhpcy5sZW5ndGggLSAxO1xuICAgIHZhciB2bSA9IHRoaXMuX2VsZW1lbnQucGFyZW50Vmlldy52aWV3TWFuYWdlcjtcbiAgICByZXR1cm4gdm0uZGV0YWNoVmlld0luQ29udGFpbmVyKHRoaXMuX2VsZW1lbnQucmVmLCBpbmRleCk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n/**\r\n * Represents an Embedded Template that can be used to instantiate Embedded Views.\r\n *\r\n * You can access a `TemplateRef`, in two ways. Via a directive placed on a `<template>` element (or\r\n * directive prefixed with `*`) and have the `TemplateRef` for this Embedded View injected into the\r\n * constructor of the directive using the `TemplateRef` Token. Alternatively you can query for the\r\n * `TemplateRef` from a Component or a Directive via {@link Query}.\r\n *\r\n * To instantiate Embedded Views based on a Template, use\r\n * {@link ViewContainerRef#createEmbeddedView}, which will create the View and attach it to the\r\n * View Container.\r\n */\r\nvar TemplateRef = (function () {\r\n function TemplateRef() {\r\n }\r\n Object.defineProperty(TemplateRef.prototype, \"elementRef\", {\r\n /**\r\n * The location in the View where the Embedded View logically belongs to.\r\n *\r\n * The data-binding and injection contexts of Embedded Views created from this `TemplateRef`\r\n * inherit from the contexts of this location.\r\n *\r\n * Typically new Embedded Views are attached to the View Container of this location, but in\r\n * advanced use-cases, the View can be attached to a different container while keeping the\r\n * data-binding and injection context from the original location.\r\n *\r\n */\r\n // TODO(i): rename to anchor or location\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return TemplateRef;\r\n})();\r\nexports.TemplateRef = TemplateRef;\r\nvar TemplateRef_ = (function (_super) {\r\n __extends(TemplateRef_, _super);\r\n function TemplateRef_(_elementRef) {\r\n _super.call(this);\r\n this._elementRef = _elementRef;\r\n }\r\n Object.defineProperty(TemplateRef_.prototype, \"elementRef\", {\r\n get: function () { return this._elementRef; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return TemplateRef_;\r\n})(TemplateRef);\r\nexports.TemplateRef_ = TemplateRef_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL3RlbXBsYXRlX3JlZi50cyJdLCJuYW1lcyI6WyJUZW1wbGF0ZVJlZiIsIlRlbXBsYXRlUmVmLmNvbnN0cnVjdG9yIiwiVGVtcGxhdGVSZWYuZWxlbWVudFJlZiIsIlRlbXBsYXRlUmVmXyIsIlRlbXBsYXRlUmVmXy5jb25zdHJ1Y3RvciIsIlRlbXBsYXRlUmVmXy5lbGVtZW50UmVmIl0sIm1hcHBpbmdzIjoiOzs7OztBQUVBOzs7Ozs7Ozs7OztHQVdHO0FBQ0g7SUFBQUE7SUFjQUMsQ0FBQ0E7SUFEQ0Qsc0JBQUlBLG1DQUFVQTtRQVpkQTs7Ozs7Ozs7OztXQVVHQTtRQUNIQSx3Q0FBd0NBO2FBQ3hDQSxjQUErQkUsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBRjtJQUMvQ0Esa0JBQUNBO0FBQURBLENBQUNBLEFBZEQsSUFjQztBQWRxQixtQkFBVyxjQWNoQyxDQUFBO0FBRUQ7SUFBa0NHLGdDQUFXQTtJQUMzQ0Esc0JBQW9CQSxXQUF3QkE7UUFBSUMsaUJBQU9BLENBQUNBO1FBQXBDQSxnQkFBV0EsR0FBWEEsV0FBV0EsQ0FBYUE7SUFBYUEsQ0FBQ0E7SUFFMURELHNCQUFJQSxvQ0FBVUE7YUFBZEEsY0FBZ0NFLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUY7SUFDNURBLG1CQUFDQTtBQUFEQSxDQUFDQSxBQUpELEVBQWtDLFdBQVcsRUFJNUM7QUFKWSxvQkFBWSxlQUl4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFbGVtZW50UmVmLCBFbGVtZW50UmVmX30gZnJvbSAnLi9lbGVtZW50X3JlZic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFbWJlZGRlZCBUZW1wbGF0ZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGluc3RhbnRpYXRlIEVtYmVkZGVkIFZpZXdzLlxuICpcbiAqIFlvdSBjYW4gYWNjZXNzIGEgYFRlbXBsYXRlUmVmYCwgaW4gdHdvIHdheXMuIFZpYSBhIGRpcmVjdGl2ZSBwbGFjZWQgb24gYSBgPHRlbXBsYXRlPmAgZWxlbWVudCAob3JcbiAqIGRpcmVjdGl2ZSBwcmVmaXhlZCB3aXRoIGAqYCkgYW5kIGhhdmUgdGhlIGBUZW1wbGF0ZVJlZmAgZm9yIHRoaXMgRW1iZWRkZWQgVmlldyBpbmplY3RlZCBpbnRvIHRoZVxuICogY29uc3RydWN0b3Igb2YgdGhlIGRpcmVjdGl2ZSB1c2luZyB0aGUgYFRlbXBsYXRlUmVmYCBUb2tlbi4gQWx0ZXJuYXRpdmVseSB5b3UgY2FuIHF1ZXJ5IGZvciB0aGVcbiAqIGBUZW1wbGF0ZVJlZmAgZnJvbSBhIENvbXBvbmVudCBvciBhIERpcmVjdGl2ZSB2aWEge0BsaW5rIFF1ZXJ5fS5cbiAqXG4gKiBUbyBpbnN0YW50aWF0ZSBFbWJlZGRlZCBWaWV3cyBiYXNlZCBvbiBhIFRlbXBsYXRlLCB1c2VcbiAqIHtAbGluayBWaWV3Q29udGFpbmVyUmVmI2NyZWF0ZUVtYmVkZGVkVmlld30sIHdoaWNoIHdpbGwgY3JlYXRlIHRoZSBWaWV3IGFuZCBhdHRhY2ggaXQgdG8gdGhlXG4gKiBWaWV3IENvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRlbXBsYXRlUmVmIHtcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBpbiB0aGUgVmlldyB3aGVyZSB0aGUgRW1iZWRkZWQgVmlldyBsb2dpY2FsbHkgYmVsb25ncyB0by5cbiAgICpcbiAgICogVGhlIGRhdGEtYmluZGluZyBhbmQgaW5qZWN0aW9uIGNvbnRleHRzIG9mIEVtYmVkZGVkIFZpZXdzIGNyZWF0ZWQgZnJvbSB0aGlzIGBUZW1wbGF0ZVJlZmBcbiAgICogaW5oZXJpdCBmcm9tIHRoZSBjb250ZXh0cyBvZiB0aGlzIGxvY2F0aW9uLlxuICAgKlxuICAgKiBUeXBpY2FsbHkgbmV3IEVtYmVkZGVkIFZpZXdzIGFyZSBhdHRhY2hlZCB0byB0aGUgVmlldyBDb250YWluZXIgb2YgdGhpcyBsb2NhdGlvbiwgYnV0IGluXG4gICAqIGFkdmFuY2VkIHVzZS1jYXNlcywgdGhlIFZpZXcgY2FuIGJlIGF0dGFjaGVkIHRvIGEgZGlmZmVyZW50IGNvbnRhaW5lciB3aGlsZSBrZWVwaW5nIHRoZVxuICAgKiBkYXRhLWJpbmRpbmcgYW5kIGluamVjdGlvbiBjb250ZXh0IGZyb20gdGhlIG9yaWdpbmFsIGxvY2F0aW9uLlxuICAgKlxuICAgKi9cbiAgLy8gVE9ETyhpKTogcmVuYW1lIHRvIGFuY2hvciBvciBsb2NhdGlvblxuICBnZXQgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmIHsgcmV0dXJuIG51bGw7IH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlUmVmXyBleHRlbmRzIFRlbXBsYXRlUmVmIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZl8pIHsgc3VwZXIoKTsgfVxuXG4gIGdldCBlbGVtZW50UmVmKCk6IEVsZW1lbnRSZWZfIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWY7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';/**\r\n * @module\r\n * @description\r\n * Change detection enables data binding in Angular.\r\n */\r\nvar change_detection_1 = require('./change_detection/change_detection');\r\nexports.ChangeDetectionStrategy = change_detection_1.ChangeDetectionStrategy;\r\nexports.ExpressionChangedAfterItHasBeenCheckedException = change_detection_1.ExpressionChangedAfterItHasBeenCheckedException;\r\nexports.ChangeDetectionError = change_detection_1.ChangeDetectionError;\r\nexports.ChangeDetectorRef = change_detection_1.ChangeDetectorRef;\r\nexports.WrappedValue = change_detection_1.WrappedValue;\r\nexports.SimpleChange = change_detection_1.SimpleChange;\r\nexports.IterableDiffers = change_detection_1.IterableDiffers;\r\nexports.KeyValueDiffers = change_detection_1.KeyValueDiffers;\r\nexports.CollectionChangeRecord = change_detection_1.CollectionChangeRecord;\r\nexports.KeyValueChangeRecord = change_detection_1.KeyValueChangeRecord;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RldGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILGlDQW9CTyxxQ0FBcUMsQ0FBQztBQW5CM0MsNkVBQXVCO0FBRXZCLDZIQUErQztBQUMvQyx1RUFBb0I7QUFFcEIsaUVBQWlCO0FBRWpCLHVEQUFZO0FBQ1osdURBQVk7QUFFWiw2REFBZTtBQUdmLDZEQUFlO0FBR2YsMkVBQXNCO0FBQ3RCLHVFQUUyQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZVxuICogQGRlc2NyaXB0aW9uXG4gKiBDaGFuZ2UgZGV0ZWN0aW9uIGVuYWJsZXMgZGF0YSBiaW5kaW5nIGluIEFuZ3VsYXIuXG4gKi9cblxuZXhwb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cbiAgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFeGNlcHRpb24sXG4gIENoYW5nZURldGVjdGlvbkVycm9yLFxuXG4gIENoYW5nZURldGVjdG9yUmVmLFxuXG4gIFdyYXBwZWRWYWx1ZSxcbiAgU2ltcGxlQ2hhbmdlLFxuICBQaXBlVHJhbnNmb3JtLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIEl0ZXJhYmxlRGlmZmVyLFxuICBJdGVyYWJsZURpZmZlckZhY3RvcnksXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIEtleVZhbHVlRGlmZmVyRmFjdG9yeSxcbiAgQ29sbGVjdGlvbkNoYW5nZVJlY29yZCxcbiAgS2V5VmFsdWVDaGFuZ2VSZWNvcmQsXG4gIFRyYWNrQnlGblxufSBmcm9tICcuL2NoYW5nZV9kZXRlY3Rpb24vY2hhbmdlX2RldGVjdGlvbic7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar metadata_1 = require('angular2/src/core/di/metadata');\r\nvar change_detection_1 = require('angular2/src/core/change_detection');\r\n/**\r\n * Directives allow you to attach behavior to elements in the DOM.\r\n *\r\n * {@link DirectiveMetadata}s with an embedded view are called {@link ComponentMetadata}s.\r\n *\r\n * A directive consists of a single directive annotation and a controller class. When the\r\n * directive's `selector` matches\r\n * elements in the DOM, the following steps occur:\r\n *\r\n * 1. For each directive, the `ElementInjector` attempts to resolve the directive's constructor\r\n * arguments.\r\n * 2. Angular instantiates directives for each matched element using `ElementInjector` in a\r\n * depth-first order,\r\n * as declared in the HTML.\r\n *\r\n * ## Understanding How Injection Works\r\n *\r\n * There are three stages of injection resolution.\r\n * - *Pre-existing Injectors*:\r\n * - The terminal {@link Injector} cannot resolve dependencies. It either throws an error or, if\r\n * the dependency was\r\n * specified as `@Optional`, returns `null`.\r\n * - The platform injector resolves browser singleton resources, such as: cookies, title,\r\n * location, and others.\r\n * - *Component Injectors*: Each component instance has its own {@link Injector}, and they follow\r\n * the same parent-child hierarchy\r\n * as the component instances in the DOM.\r\n * - *Element Injectors*: Each component instance has a Shadow DOM. Within the Shadow DOM each\r\n * element has an `ElementInjector`\r\n * which follow the same parent-child hierarchy as the DOM elements themselves.\r\n *\r\n * When a template is instantiated, it also must instantiate the corresponding directives in a\r\n * depth-first order. The\r\n * current `ElementInjector` resolves the constructor dependencies for each directive.\r\n *\r\n * Angular then resolves dependencies as follows, according to the order in which they appear in the\r\n * {@link ViewMetadata}:\r\n *\r\n * 1. Dependencies on the current element\r\n * 2. Dependencies on element injectors and their parents until it encounters a Shadow DOM boundary\r\n * 3. Dependencies on component injectors and their parents until it encounters the root component\r\n * 4. Dependencies on pre-existing injectors\r\n *\r\n *\r\n * The `ElementInjector` can inject other directives, element-specific special objects, or it can\r\n * delegate to the parent\r\n * injector.\r\n *\r\n * To inject other directives, declare the constructor parameter as:\r\n * - `directive:DirectiveType`: a directive on the current element only\r\n * - `@Host() directive:DirectiveType`: any directive that matches the type between the current\r\n * element and the\r\n * Shadow DOM root.\r\n * - `@Query(DirectiveType) query:QueryList<DirectiveType>`: A live collection of direct child\r\n * directives.\r\n * - `@QueryDescendants(DirectiveType) query:QueryList<DirectiveType>`: A live collection of any\r\n * child directives.\r\n *\r\n * To inject element-specific special objects, declare the constructor parameter as:\r\n * - `element: ElementRef` to obtain a reference to logical element in the view.\r\n * - `viewContainer: ViewContainerRef` to control child template instantiation, for\r\n * {@link DirectiveMetadata} directives only\r\n * - `bindingPropagation: BindingPropagation` to control change detection in a more granular way.\r\n *\r\n * ### Example\r\n *\r\n * The following example demonstrates how dependency injection resolves constructor arguments in\r\n * practice.\r\n *\r\n *\r\n * Assume this HTML template:\r\n *\r\n * ```\r\n * <div dependency=\"1\">\r\n * <div dependency=\"2\">\r\n * <div dependency=\"3\" my-directive>\r\n * <div dependency=\"4\">\r\n * <div dependency=\"5\"></div>\r\n * </div>\r\n * <div dependency=\"6\"></div>\r\n * </div>\r\n * </div>\r\n * </div>\r\n * ```\r\n *\r\n * With the following `dependency` decorator and `SomeService` injectable class.\r\n *\r\n * ```\r\n * @Injectable()\r\n * class SomeService {\r\n * }\r\n *\r\n * @Directive({\r\n * selector: '[dependency]',\r\n * inputs: [\r\n * 'id: dependency'\r\n * ]\r\n * })\r\n * class Dependency {\r\n * id:string;\r\n * }\r\n * ```\r\n *\r\n * Let's step through the different ways in which `MyDirective` could be declared...\r\n *\r\n *\r\n * ### No injection\r\n *\r\n * Here the constructor is declared with no arguments, therefore nothing is injected into\r\n * `MyDirective`.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor() {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with no dependencies.\r\n *\r\n *\r\n * ### Component-level injection\r\n *\r\n * Directives can inject any injectable instance from the closest component injector or any of its\r\n * parents.\r\n *\r\n * Here, the constructor declares a parameter, `someService`, and injects the `SomeService` type\r\n * from the parent\r\n * component's injector.\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(someService: SomeService) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a dependency on `SomeService`.\r\n *\r\n *\r\n * ### Injecting a directive from the current element\r\n *\r\n * Directives can inject other directives declared on the current element.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(dependency: Dependency) {\r\n * expect(dependency.id).toEqual(3);\r\n * }\r\n * }\r\n * ```\r\n * This directive would be instantiated with `Dependency` declared at the same element, in this case\r\n * `dependency=\"3\"`.\r\n *\r\n * ### Injecting a directive from any ancestor elements\r\n *\r\n * Directives can inject other directives declared on any ancestor element (in the current Shadow\r\n * DOM), i.e. on the current element, the\r\n * parent element, or its parents.\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Host() dependency: Dependency) {\r\n * expect(dependency.id).toEqual(2);\r\n * }\r\n * }\r\n * ```\r\n *\r\n * `@Host` checks the current element, the parent, as well as its parents recursively. If\r\n * `dependency=\"2\"` didn't\r\n * exist on the direct parent, this injection would\r\n * have returned\r\n * `dependency=\"1\"`.\r\n *\r\n *\r\n * ### Injecting a live collection of direct child directives\r\n *\r\n *\r\n * A directive can also query for other child directives. Since parent directives are instantiated\r\n * before child directives, a directive can't simply inject the list of child directives. Instead,\r\n * the directive injects a {@link QueryList}, which updates its contents as children are added,\r\n * removed, or moved by a directive that uses a {@link ViewContainerRef} such as a `ngFor`, an\r\n * `ngIf`, or an `ngSwitch`.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Query(Dependency) dependencies:QueryList<Dependency>) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a {@link QueryList} which contains `Dependency` 4 and\r\n * `Dependency` 6. Here, `Dependency` 5 would not be included, because it is not a direct child.\r\n *\r\n * ### Injecting a live collection of descendant directives\r\n *\r\n * By passing the descendant flag to `@Query` above, we can include the children of the child\r\n * elements.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Query(Dependency, {descendants: true}) dependencies:QueryList<Dependency>) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a Query which would contain `Dependency` 4, 5 and 6.\r\n *\r\n * ### Optional injection\r\n *\r\n * The normal behavior of directives is to return an error when a specified dependency cannot be\r\n * resolved. If you\r\n * would like to inject `null` on unresolved dependency instead, you can annotate that dependency\r\n * with `@Optional()`.\r\n * This explicitly permits the author of a template to treat some of the surrounding directives as\r\n * optional.\r\n *\r\n * ```\r\n * @Directive({ selector: '[my-directive]' })\r\n * class MyDirective {\r\n * constructor(@Optional() dependency:Dependency) {\r\n * }\r\n * }\r\n * ```\r\n *\r\n * This directive would be instantiated with a `Dependency` directive found on the current element.\r\n * If none can be\r\n * found, the injector supplies `null` instead of throwing an error.\r\n *\r\n * ### Example\r\n *\r\n * Here we use a decorator directive to simply define basic tool-tip behavior.\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: '[tooltip]',\r\n * inputs: [\r\n * 'text: tooltip'\r\n * ],\r\n * host: {\r\n * '(mouseenter)': 'onMouseEnter()',\r\n * '(mouseleave)': 'onMouseLeave()'\r\n * }\r\n * })\r\n * class Tooltip{\r\n * text:string;\r\n * overlay:Overlay; // NOT YET IMPLEMENTED\r\n * overlayManager:OverlayManager; // NOT YET IMPLEMENTED\r\n *\r\n * constructor(overlayManager:OverlayManager) {\r\n * this.overlay = overlay;\r\n * }\r\n *\r\n * onMouseEnter() {\r\n * // exact signature to be determined\r\n * this.overlay = this.overlayManager.open(text, ...);\r\n * }\r\n *\r\n * onMouseLeave() {\r\n * this.overlay.close();\r\n * this.overlay = null;\r\n * }\r\n * }\r\n * ```\r\n * In our HTML template, we can then add this behavior to a `<div>` or any other element with the\r\n * `tooltip` selector,\r\n * like so:\r\n *\r\n * ```\r\n * <div tooltip=\"some text here\"></div>\r\n * ```\r\n *\r\n * Directives can also control the instantiation, destruction, and positioning of inline template\r\n * elements:\r\n *\r\n * A directive uses a {@link ViewContainerRef} to instantiate, insert, move, and destroy views at\r\n * runtime.\r\n * The {@link ViewContainerRef} is created as a result of `<template>` element, and represents a\r\n * location in the current view\r\n * where these actions are performed.\r\n *\r\n * Views are always created as children of the current {@link ViewMetadata}, and as siblings of the\r\n * `<template>` element. Thus a\r\n * directive in a child view cannot inject the directive that created it.\r\n *\r\n * Since directives that create views via ViewContainers are common in Angular, and using the full\r\n * `<template>` element syntax is wordy, Angular\r\n * also supports a shorthand notation: `<li *foo=\"bar\">` and `<li template=\"foo: bar\">` are\r\n * equivalent.\r\n *\r\n * Thus,\r\n *\r\n * ```\r\n * <ul>\r\n * <li *foo=\"bar\" title=\"text\"></li>\r\n * </ul>\r\n * ```\r\n *\r\n * Expands in use to:\r\n *\r\n * ```\r\n * <ul>\r\n * <template [foo]=\"bar\">\r\n * <li title=\"text\"></li>\r\n * </template>\r\n * </ul>\r\n * ```\r\n *\r\n * Notice that although the shorthand places `*foo=\"bar\"` within the `<li>` element, the binding for\r\n * the directive\r\n * controller is correctly instantiated on the `<template>` element rather than the `<li>` element.\r\n *\r\n * ## Lifecycle hooks\r\n *\r\n * When the directive class implements some {@link angular2/lifecycle_hooks} the callbacks are\r\n * called by the change detection at defined points in time during the life of the directive.\r\n *\r\n * ### Example\r\n *\r\n * Let's suppose we want to implement the `unless` behavior, to conditionally include a template.\r\n *\r\n * Here is a simple directive that triggers on an `unless` selector:\r\n *\r\n * ```\r\n * @Directive({\r\n * selector: '[unless]',\r\n * inputs: ['unless']\r\n * })\r\n * export class Unless {\r\n * viewContainer: ViewContainerRef;\r\n * templateRef: TemplateRef;\r\n * prevCondition: boolean;\r\n *\r\n * constructor(viewContainer: ViewContainerRef, templateRef: TemplateRef) {\r\n * this.viewContainer = viewContainer;\r\n * this.templateRef = templateRef;\r\n * this.prevCondition = null;\r\n * }\r\n *\r\n * set unless(newCondition) {\r\n * if (newCondition && (isBlank(this.prevCondition) || !this.prevCondition)) {\r\n * this.prevCondition = true;\r\n * this.viewContainer.clear();\r\n * } else if (!newCondition && (isBlank(this.prevCondition) || this.prevCondition)) {\r\n * this.prevCondition = false;\r\n * this.viewContainer.create(this.templateRef);\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * We can then use this `unless` selector in a template:\r\n * ```\r\n * <ul>\r\n * <li *unless=\"expr\"></li>\r\n * </ul>\r\n * ```\r\n *\r\n * Once the directive instantiates the child view, the shorthand notation for the template expands\r\n * and the result is:\r\n *\r\n * ```\r\n * <ul>\r\n * <template [unless]=\"exp\">\r\n * <li></li>\r\n * </template>\r\n * <li></li>\r\n * </ul>\r\n * ```\r\n *\r\n * Note also that although the `<li></li>` template still exists inside the `<template></template>`,\r\n * the instantiated\r\n * view occurs on the second `<li></li>` which is a sibling to the `<template>` element.\r\n */\r\nvar DirectiveMetadata = (function (_super) {\r\n __extends(DirectiveMetadata, _super);\r\n function DirectiveMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, selector = _b.selector, inputs = _b.inputs, outputs = _b.outputs, properties = _b.properties, events = _b.events, host = _b.host, bindings = _b.bindings, providers = _b.providers, exportAs = _b.exportAs, queries = _b.queries;\r\n _super.call(this);\r\n this.selector = selector;\r\n this._inputs = inputs;\r\n this._properties = properties;\r\n this._outputs = outputs;\r\n this._events = events;\r\n this.host = host;\r\n this.exportAs = exportAs;\r\n this.queries = queries;\r\n this._providers = providers;\r\n this._bindings = bindings;\r\n }\r\n Object.defineProperty(DirectiveMetadata.prototype, \"inputs\", {\r\n /**\r\n * Enumerates the set of data-bound input properties for a directive\r\n *\r\n * Angular automatically updates input properties during change detection.\r\n *\r\n * The `inputs` property defines a set of `directiveProperty` to `bindingProperty`\r\n * configuration:\r\n *\r\n * - `directiveProperty` specifies the component property where the value is written.\r\n * - `bindingProperty` specifies the DOM property where the value is read from.\r\n *\r\n * When `bindingProperty` is not provided, it is assumed to be equal to `directiveProperty`.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/ivhfXY?p=preview))\r\n *\r\n * The following example creates a component with two data-bound properties.\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'bank-account',\r\n * inputs: ['bankName', 'id: account-id'],\r\n * template: `\r\n * Bank Name: {{bankName}}\r\n * Account Id: {{id}}\r\n * `\r\n * })\r\n * class BankAccount {\r\n * bankName: string;\r\n * id: string;\r\n *\r\n * // this property is not bound, and won't be automatically updated by Angular\r\n * normalizedBankName: string;\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <bank-account bank-name=\"RBC\" account-id=\"4747\"></bank-account>\r\n * `,\r\n * directives: [BankAccount]\r\n * })\r\n * class App {}\r\n *\r\n * bootstrap(App);\r\n * ```\r\n *\r\n */\r\n get: function () {\r\n return lang_1.isPresent(this._properties) && this._properties.length > 0 ? this._properties :\r\n this._inputs;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectiveMetadata.prototype, \"properties\", {\r\n get: function () { return this.inputs; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectiveMetadata.prototype, \"outputs\", {\r\n /**\r\n * Enumerates the set of event-bound output properties.\r\n *\r\n * When an output property emits an event, an event handler attached to that event\r\n * the template is invoked.\r\n *\r\n * The `outputs` property defines a set of `directiveProperty` to `bindingProperty`\r\n * configuration:\r\n *\r\n * - `directiveProperty` specifies the component property that emits events.\r\n * - `bindingProperty` specifies the DOM property the event handler is attached to.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/d5CNq7?p=preview))\r\n *\r\n * ```typescript\r\n * @Directive({\r\n * selector: 'interval-dir',\r\n * outputs: ['everySecond', 'five5Secs: everyFiveSeconds']\r\n * })\r\n * class IntervalDir {\r\n * everySecond = new EventEmitter();\r\n * five5Secs = new EventEmitter();\r\n *\r\n * constructor() {\r\n * setInterval(() => this.everySecond.emit(\"event\"), 1000);\r\n * setInterval(() => this.five5Secs.emit(\"event\"), 5000);\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <interval-dir (everySecond)=\"everySecond()\" (everyFiveSeconds)=\"everyFiveSeconds()\">\r\n * </interval-dir>\r\n * `,\r\n * directives: [IntervalDir]\r\n * })\r\n * class App {\r\n * everySecond() { console.log('second'); }\r\n * everyFiveSeconds() { console.log('five seconds'); }\r\n * }\r\n * bootstrap(App);\r\n * ```\r\n *\r\n */\r\n get: function () {\r\n return lang_1.isPresent(this._events) && this._events.length > 0 ? this._events : this._outputs;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectiveMetadata.prototype, \"events\", {\r\n get: function () { return this.outputs; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectiveMetadata.prototype, \"providers\", {\r\n /**\r\n * Defines the set of injectable objects that are visible to a Directive and its light DOM\r\n * children.\r\n *\r\n * ## Simple Example\r\n *\r\n * Here is an example of a class that can be injected:\r\n *\r\n * ```\r\n * class Greeter {\r\n * greet(name:string) {\r\n * return 'Hello ' + name + '!';\r\n * }\r\n * }\r\n *\r\n * @Directive({\r\n * selector: 'greet',\r\n * bindings: [\r\n * Greeter\r\n * ]\r\n * })\r\n * class HelloWorld {\r\n * greeter:Greeter;\r\n *\r\n * constructor(greeter:Greeter) {\r\n * this.greeter = greeter;\r\n * }\r\n * }\r\n * ```\r\n */\r\n get: function () {\r\n return lang_1.isPresent(this._bindings) && this._bindings.length > 0 ? this._bindings :\r\n this._providers;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DirectiveMetadata.prototype, \"bindings\", {\r\n /** @deprecated */\r\n get: function () { return this.providers; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DirectiveMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object])\r\n ], DirectiveMetadata);\r\n return DirectiveMetadata;\r\n})(metadata_1.InjectableMetadata);\r\nexports.DirectiveMetadata = DirectiveMetadata;\r\n/**\r\n * Declare reusable UI building blocks for an application.\r\n *\r\n * Each Angular component requires a single `@Component` annotation. The\r\n * `@Component`\r\n * annotation specifies when a component is instantiated, and which properties and hostListeners it\r\n * binds to.\r\n *\r\n * When a component is instantiated, Angular\r\n * - creates a shadow DOM for the component.\r\n * - loads the selected template into the shadow DOM.\r\n * - creates all the injectable objects configured with `providers` and `viewProviders`.\r\n *\r\n * All template expressions and statements are then evaluated against the component instance.\r\n *\r\n * For details on the `@View` annotation, see {@link ViewMetadata}.\r\n *\r\n * ## Lifecycle hooks\r\n *\r\n * When the component class implements some {@link angular2/lifecycle_hooks} the callbacks are\r\n * called by the change detection at defined points in time during the life of the component.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/ts/metadata/metadata.ts region='component'}\r\n */\r\nvar ComponentMetadata = (function (_super) {\r\n __extends(ComponentMetadata, _super);\r\n function ComponentMetadata(_a) {\r\n var _b = _a === void 0 ? {} : _a, selector = _b.selector, inputs = _b.inputs, outputs = _b.outputs, properties = _b.properties, events = _b.events, host = _b.host, exportAs = _b.exportAs, moduleId = _b.moduleId, bindings = _b.bindings, providers = _b.providers, viewBindings = _b.viewBindings, viewProviders = _b.viewProviders, _c = _b.changeDetection, changeDetection = _c === void 0 ? change_detection_1.ChangeDetectionStrategy.Default : _c, queries = _b.queries, templateUrl = _b.templateUrl, template = _b.template, styleUrls = _b.styleUrls, styles = _b.styles, directives = _b.directives, pipes = _b.pipes, encapsulation = _b.encapsulation;\r\n _super.call(this, {\r\n selector: selector,\r\n inputs: inputs,\r\n outputs: outputs,\r\n properties: properties,\r\n events: events,\r\n host: host,\r\n exportAs: exportAs,\r\n bindings: bindings,\r\n providers: providers,\r\n queries: queries\r\n });\r\n this.changeDetection = changeDetection;\r\n this._viewProviders = viewProviders;\r\n this._viewBindings = viewBindings;\r\n this.templateUrl = templateUrl;\r\n this.template = template;\r\n this.styleUrls = styleUrls;\r\n this.styles = styles;\r\n this.directives = directives;\r\n this.pipes = pipes;\r\n this.encapsulation = encapsulation;\r\n this.moduleId = moduleId;\r\n }\r\n Object.defineProperty(ComponentMetadata.prototype, \"viewProviders\", {\r\n /**\r\n * Defines the set of injectable objects that are visible to its view DOM children.\r\n *\r\n * ## Simple Example\r\n *\r\n * Here is an example of a class that can be injected:\r\n *\r\n * ```\r\n * class Greeter {\r\n * greet(name:string) {\r\n * return 'Hello ' + name + '!';\r\n * }\r\n * }\r\n *\r\n * @Directive({\r\n * selector: 'needs-greeter'\r\n * })\r\n * class NeedsGreeter {\r\n * greeter:Greeter;\r\n *\r\n * constructor(greeter:Greeter) {\r\n * this.greeter = greeter;\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'greet',\r\n * viewProviders: [\r\n * Greeter\r\n * ],\r\n * template: `<needs-greeter></needs-greeter>`,\r\n * directives: [NeedsGreeter]\r\n * })\r\n * class HelloWorld {\r\n * }\r\n *\r\n * ```\r\n */\r\n get: function () {\r\n return lang_1.isPresent(this._viewBindings) && this._viewBindings.length > 0 ? this._viewBindings :\r\n this._viewProviders;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ComponentMetadata.prototype, \"viewBindings\", {\r\n get: function () { return this.viewProviders; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ComponentMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object])\r\n ], ComponentMetadata);\r\n return ComponentMetadata;\r\n})(DirectiveMetadata);\r\nexports.ComponentMetadata = ComponentMetadata;\r\n/**\r\n * Declare reusable pipe function.\r\n *\r\n * A \"pure\" pipe is only re-evaluated when either the input or any of the arguments change.\r\n *\r\n * When not specified, pipes default to being pure.\r\n *\r\n * ### Example\r\n *\r\n * {@example core/ts/metadata/metadata.ts region='pipe'}\r\n */\r\nvar PipeMetadata = (function (_super) {\r\n __extends(PipeMetadata, _super);\r\n function PipeMetadata(_a) {\r\n var name = _a.name, pure = _a.pure;\r\n _super.call(this);\r\n this.name = name;\r\n this._pure = pure;\r\n }\r\n Object.defineProperty(PipeMetadata.prototype, \"pure\", {\r\n get: function () { return lang_1.isPresent(this._pure) ? this._pure : true; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n PipeMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object])\r\n ], PipeMetadata);\r\n return PipeMetadata;\r\n})(metadata_1.InjectableMetadata);\r\nexports.PipeMetadata = PipeMetadata;\r\n/**\r\n * Declares a data-bound input property.\r\n *\r\n * Angular automatically updates data-bound properties during change detection.\r\n *\r\n * `InputMetadata` takes an optional parameter that specifies the name\r\n * used when instantiating a component in the template. When not provided,\r\n * the name of the decorated property is used.\r\n *\r\n * ### Example\r\n *\r\n * The following example creates a component with two input properties.\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'bank-account',\r\n * template: `\r\n * Bank Name: {{bankName}}\r\n * Account Id: {{id}}\r\n * `\r\n * })\r\n * class BankAccount {\r\n * @Input() bankName: string;\r\n * @Input('account-id') id: string;\r\n *\r\n * // this property is not bound, and won't be automatically updated by Angular\r\n * normalizedBankName: string;\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <bank-account bank-name=\"RBC\" account-id=\"4747\"></bank-account>\r\n * `,\r\n * directives: [BankAccount]\r\n * })\r\n * class App {}\r\n *\r\n * bootstrap(App);\r\n * ```\r\n */\r\nvar InputMetadata = (function () {\r\n function InputMetadata(\r\n /**\r\n * Name used when instantiating a component in the template.\r\n */\r\n bindingPropertyName) {\r\n this.bindingPropertyName = bindingPropertyName;\r\n }\r\n InputMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String])\r\n ], InputMetadata);\r\n return InputMetadata;\r\n})();\r\nexports.InputMetadata = InputMetadata;\r\n/**\r\n * Declares an event-bound output property.\r\n *\r\n * When an output property emits an event, an event handler attached to that event\r\n * the template is invoked.\r\n *\r\n * `OutputMetadata` takes an optional parameter that specifies the name\r\n * used when instantiating a component in the template. When not provided,\r\n * the name of the decorated property is used.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * @Directive({\r\n * selector: 'interval-dir',\r\n * })\r\n * class IntervalDir {\r\n * @Output() everySecond = new EventEmitter();\r\n * @Output('everyFiveSeconds') five5Secs = new EventEmitter();\r\n *\r\n * constructor() {\r\n * setInterval(() => this.everySecond.emit(\"event\"), 1000);\r\n * setInterval(() => this.five5Secs.emit(\"event\"), 5000);\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <interval-dir (everySecond)=\"everySecond()\" (everyFiveSeconds)=\"everyFiveSeconds()\">\r\n * </interval-dir>\r\n * `,\r\n * directives: [IntervalDir]\r\n * })\r\n * class App {\r\n * everySecond() { console.log('second'); }\r\n * everyFiveSeconds() { console.log('five seconds'); }\r\n * }\r\n * bootstrap(App);\r\n * ```\r\n */\r\nvar OutputMetadata = (function () {\r\n function OutputMetadata(bindingPropertyName) {\r\n this.bindingPropertyName = bindingPropertyName;\r\n }\r\n OutputMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String])\r\n ], OutputMetadata);\r\n return OutputMetadata;\r\n})();\r\nexports.OutputMetadata = OutputMetadata;\r\n/**\r\n * Declares a host property binding.\r\n *\r\n * Angular automatically checks host property bindings during change detection.\r\n * If a binding changes, it will update the host element of the directive.\r\n *\r\n * `HostBindingMetadata` takes an optional parameter that specifies the property\r\n * name of the host element that will be updated. When not provided,\r\n * the class property name is used.\r\n *\r\n * ### Example\r\n *\r\n * The following example creates a directive that sets the `valid` and `invalid` classes\r\n * on the DOM element that has ngModel directive on it.\r\n *\r\n * ```typescript\r\n * @Directive({selector: '[ngModel]'})\r\n * class NgModelStatus {\r\n * constructor(public control:NgModel) {}\r\n * @HostBinding('class.valid') get valid { return this.control.valid; }\r\n * @HostBinding('class.invalid') get invalid { return this.control.invalid; }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `<input [(ngModel)]=\"prop\">`,\r\n * directives: [FORM_DIRECTIVES, NgModelStatus]\r\n * })\r\n * class App {\r\n * prop;\r\n * }\r\n *\r\n * bootstrap(App);\r\n * ```\r\n */\r\nvar HostBindingMetadata = (function () {\r\n function HostBindingMetadata(hostPropertyName) {\r\n this.hostPropertyName = hostPropertyName;\r\n }\r\n HostBindingMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String])\r\n ], HostBindingMetadata);\r\n return HostBindingMetadata;\r\n})();\r\nexports.HostBindingMetadata = HostBindingMetadata;\r\n/**\r\n * Declares a host listener.\r\n *\r\n * Angular will invoke the decorated method when the host element emits the specified event.\r\n *\r\n * If the decorated method returns `false`, then `preventDefault` is applied on the DOM\r\n * event.\r\n *\r\n * ### Example\r\n *\r\n * The following example declares a directive that attaches a click listener to the button and\r\n * counts clicks.\r\n *\r\n * ```typescript\r\n * @Directive({selector: 'button[counting]'})\r\n * class CountClicks {\r\n * numberOfClicks = 0;\r\n *\r\n * @HostListener('click', ['$event.target'])\r\n * onClick(btn) {\r\n * console.log(\"button\", btn, \"number of clicks:\", this.numberOfClicks++);\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `<button counting>Increment</button>`,\r\n * directives: [CountClicks]\r\n * })\r\n * class App {}\r\n *\r\n * bootstrap(App);\r\n * ```\r\n */\r\nvar HostListenerMetadata = (function () {\r\n function HostListenerMetadata(eventName, args) {\r\n this.eventName = eventName;\r\n this.args = args;\r\n }\r\n HostListenerMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String, Array])\r\n ], HostListenerMetadata);\r\n return HostListenerMetadata;\r\n})();\r\nexports.HostListenerMetadata = HostListenerMetadata;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL2RpcmVjdGl2ZXMudHMiXSwibmFtZXMiOlsiRGlyZWN0aXZlTWV0YWRhdGEiLCJEaXJlY3RpdmVNZXRhZGF0YS5jb25zdHJ1Y3RvciIsIkRpcmVjdGl2ZU1ldGFkYXRhLmlucHV0cyIsIkRpcmVjdGl2ZU1ldGFkYXRhLnByb3BlcnRpZXMiLCJEaXJlY3RpdmVNZXRhZGF0YS5vdXRwdXRzIiwiRGlyZWN0aXZlTWV0YWRhdGEuZXZlbnRzIiwiRGlyZWN0aXZlTWV0YWRhdGEucHJvdmlkZXJzIiwiRGlyZWN0aXZlTWV0YWRhdGEuYmluZGluZ3MiLCJDb21wb25lbnRNZXRhZGF0YSIsIkNvbXBvbmVudE1ldGFkYXRhLmNvbnN0cnVjdG9yIiwiQ29tcG9uZW50TWV0YWRhdGEudmlld1Byb3ZpZGVycyIsIkNvbXBvbmVudE1ldGFkYXRhLnZpZXdCaW5kaW5ncyIsIlBpcGVNZXRhZGF0YSIsIlBpcGVNZXRhZGF0YS5jb25zdHJ1Y3RvciIsIlBpcGVNZXRhZGF0YS5wdXJlIiwiSW5wdXRNZXRhZGF0YSIsIklucHV0TWV0YWRhdGEuY29uc3RydWN0b3IiLCJPdXRwdXRNZXRhZGF0YSIsIk91dHB1dE1ldGFkYXRhLmNvbnN0cnVjdG9yIiwiSG9zdEJpbmRpbmdNZXRhZGF0YSIsIkhvc3RCaW5kaW5nTWV0YWRhdGEuY29uc3RydWN0b3IiLCJIb3N0TGlzdGVuZXJNZXRhZGF0YSIsIkhvc3RMaXN0ZW5lck1ldGFkYXRhLmNvbnN0cnVjdG9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLHFCQUFpRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQzVFLHlCQUFpQywrQkFBK0IsQ0FBQyxDQUFBO0FBQ2pFLGlDQUFzQyxvQ0FBb0MsQ0FBQyxDQUFBO0FBRzNFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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bUJBQTRCQTtRQUE1QkMsd0JBQW1CQSxHQUFuQkEsbUJBQW1CQSxDQUFTQTtJQUFHQSxDQUFDQTtJQUZyREQ7UUFBQ0EsWUFBS0EsRUFBRUE7O3VCQUdQQTtJQUFEQSxxQkFBQ0E7QUFBREEsQ0FBQ0EsQUFIRCxJQUdDO0FBRlksc0JBQWMsaUJBRTFCLENBQUE7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDRztBQUNIO0lBRUVFLDZCQUFtQkEsZ0JBQXlCQTtRQUF6QkMscUJBQWdCQSxHQUFoQkEsZ0JBQWdCQSxDQUFTQTtJQUFHQSxDQUFDQTtJQUZsREQ7UUFBQ0EsWUFBS0EsRUFBRUE7OzRCQUdQQTtJQUFEQSwwQkFBQ0E7QUFBREEsQ0FBQ0EsQUFIRCxJQUdDO0FBRlksMkJBQW1CLHNCQUUvQixDQUFBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlDRztBQUNIO0lBRUVFLDhCQUFtQkEsU0FBaUJBLEVBQVNBLElBQWVBO1FBQXpDQyxjQUFTQSxHQUFUQSxTQUFTQSxDQUFRQTtRQUFTQSxTQUFJQSxHQUFKQSxJQUFJQSxDQUFXQTtJQUFHQSxDQUFDQTtJQUZsRUQ7UUFBQ0EsWUFBS0EsRUFBRUE7OzZCQUdQQTtJQUFEQSwyQkFBQ0E7QUFBREEsQ0FBQ0EsQUFIRCxJQUdDO0FBRlksNEJBQW9CLHVCQUVoQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1ByZXNlbnQsIENPTlNULCBDT05TVF9FWFBSLCBUeXBlfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtJbmplY3RhYmxlTWV0YWRhdGF9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpL21ldGFkYXRhJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3l9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24nO1xuaW1wb3J0IHtWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEvdmlldyc7XG5cbi8qKlxuICogRGlyZWN0aXZlcyBhbGxvdyB5b3UgdG8gYXR0YWNoIGJlaGF2aW9yIHRvIGVsZW1lbnRzIGluIHRoZSBET00uXG4gKlxuICoge0BsaW5rIERpcmVjdGl2ZU1ldGFkYXRhfXMgd2l0aCBhbiBlbWJlZGRlZCB2aWV3IGFyZSBjYWxsZWQge0BsaW5rIENvbXBvbmVudE1ldGFkYXRhfXMuXG4gKlxuICogQSBkaXJlY3RpdmUgY29uc2lzdHMgb2YgYSBzaW5nbGUgZGlyZWN0aXZlIGFubm90YXRpb24gYW5kIGEgY29udHJvbGxlciBjbGFzcy4gV2hlbiB0aGVcbiAqIGRpcmVjdGl2ZSdzIGBzZWxlY3RvcmAgbWF0Y2hlc1xuICogZWxlbWVudHMgaW4gdGhlIERPTSwgdGhlIGZvbGxvd2luZyBzdGVwcyBvY2N1cjpcbiAqXG4gKiAxLiBGb3IgZWFjaCBkaXJlY3RpdmUsIHRoZSBgRWxlbWVudEluamVjdG9yYCBhdHRlbXB0cyB0byByZXNvbHZlIHRoZSBkaXJlY3RpdmUncyBjb25zdHJ1Y3RvclxuICogYXJndW1lbnRzLlxuICogMi4gQW5ndWxhciBpbnN0YW50aWF0ZXMgZGlyZWN0aXZlcyBmb3IgZWFjaCBtYXRjaGVkIGVsZW1lbnQgdXNpbmcgYEVsZW1lbnRJbmplY3RvcmAgaW4gYVxuICogZGVwdGgtZmlyc3Qgb3JkZXIsXG4gKiAgICBhcyBkZWNsYXJlZCBpbiB0aGUgSFRNTC5cbiAqXG4gKiAjIyBVbmRlcnN0YW5kaW5nIEhvdyBJbmplY3Rpb24gV29ya3NcbiAqXG4gKiBUaGVyZSBhcmUgdGhyZWUgc3RhZ2VzIG9mIGluamVjdGlvbiByZXNvbHV0aW9uLlxuICogLSAqUHJlLWV4aXN0aW5nIEluamVjdG9ycyo6XG4gKiAgIC0gVGhlIHRlcm1pbmFsIHtAbGluayBJbmplY3Rvcn0gY2Fubm90IHJlc29sdmUgZGVwZW5kZW5jaWVzLiBJdCBlaXRoZXIgdGhyb3dzIGFuIGVycm9yIG9yLCBpZlxuICogdGhlIGRlcGVuZGVuY3kgd2FzXG4gKiAgICAgc3BlY2lmaWVkIGFzIGBAT3B0aW9uYWxgLCByZXR1cm5zIGBudWxsYC5cbiAqICAgLSBUaGUgcGxhdGZvcm0gaW5qZWN0b3IgcmVzb2x2ZXMgYnJvd3NlciBzaW5nbGV0b24gcmVzb3VyY2VzLCBzdWNoIGFzOiBjb29raWVzLCB0aXRsZSxcbiAqIGxvY2F0aW9uLCBhbmQgb3RoZXJzLlxuICogLSAqQ29tcG9uZW50IEluamVjdG9ycyo6IEVhY2ggY29tcG9uZW50IGluc3RhbmNlIGhhcyBpdHMgb3duIHtAbGluayBJbmplY3Rvcn0sIGFuZCB0aGV5IGZvbGxvd1xuICogdGhlIHNhbWUgcGFyZW50LWNoaWxkIGhpZXJhcmNoeVxuICogICAgIGFzIHRoZSBjb21wb25lbnQgaW5zdGFuY2VzIGluIHRoZSBET00uXG4gKiAtICpFbGVtZW50IEluamVjdG9ycyo6IEVhY2ggY29tcG9uZW50IGluc3RhbmNlIGhhcyBhIFNoYWRvdyBET00uIFdpdGhpbiB0aGUgU2hhZG93IERPTSBlYWNoXG4gKiBlbGVtZW50IGhhcyBhbiBgRWxlbWVudEluamVjdG9yYFxuICogICAgIHdoaWNoIGZvbGxvdyB0aGUgc2FtZSBwYXJlbnQtY2hpbGQgaGllcmFyY2h5IGFzIHRoZSBET00gZWxlbWVudHMgdGhlbXNlbHZlcy5cbiAqXG4gKiBXaGVuIGEgdGVtcGxhdGUgaXMgaW5zdGFudGlhdGVkLCBpdCBhbHNvIG11c3QgaW5zdGFudGlhdGUgdGhlIGNvcnJlc3BvbmRpbmcgZGlyZWN0aXZlcyBpbiBhXG4gKiBkZXB0aC1maXJzdCBvcmRlci4gVGhlXG4gKiBjdXJyZW50IGBFbGVtZW50SW5qZWN0b3JgIHJlc29sdmVzIHRoZSBjb25zdHJ1Y3RvciBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggZGlyZWN0aXZlLlxuICpcbiAqIEFuZ3VsYXIgdGhlbiByZXNvbHZlcyBkZXBlbmRlbmNpZXMgYXMgZm9sbG93cywgYWNjb3JkaW5nIHRvIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFwcGVhciBpbiB0aGVcbiAqIHtAbGluayBWaWV3TWV0YWRhdGF9OlxuICpcbiAqIDEuIERlcGVuZGVuY2llcyBvbiB0aGUgY3VycmVudCBlbGVtZW50XG4gKiAyLiBEZXBlbmRlbmNpZXMgb24gZWxlbWVudCBpbmplY3RvcnMgYW5kIHRoZWlyIHBhcmVudHMgdW50aWwgaXQgZW5jb3VudGVycyBhIFNoYWRvdyBET00gYm91bmRhcnlcbiAqIDMuIERlcGVuZGVuY2llcyBvbiBjb21wb25lbnQgaW5qZWN0b3JzIGFuZCB0aGVpciBwYXJlbnRzIHVudGlsIGl0IGVuY291bnRlcnMgdGhlIHJvb3QgY29tcG9uZW50XG4gKiA0LiBEZXBlbmRlbmNpZXMgb24gcHJlLWV4aXN0aW5nIGluamVjdG9yc1xuICpcbiAqXG4gKiBUaGUgYEVsZW1lbnRJbmplY3RvcmAgY2FuIGluamVjdCBvdGhlciBkaXJlY3RpdmVzLCBlbGVtZW50LXNwZWNpZmljIHNwZWNpYWwgb2JqZWN0cywgb3IgaXQgY2FuXG4gKiBkZWxlZ2F0ZSB0byB0aGUgcGFyZW50XG4gKiBpbmplY3Rvci5cbiAqXG4gKiBUbyBpbmplY3Qgb3RoZXIgZGlyZWN0aXZlcywgZGVjbGFyZSB0aGUgY29uc3RydWN0b3IgcGFyYW1ldGVyIGFzOlxuICogLSBgZGlyZWN0aXZlOkRpcmVjdGl2ZVR5cGVgOiBhIGRpcmVjdGl2ZSBvbiB0aGUgY3VycmVudCBlbGVtZW50IG9ubHlcbiAqIC0gYEBIb3N0KCkgZGlyZWN0aXZlOkRpcmVjdGl2ZVR5cGVgOiBhbnkgZGlyZWN0aXZlIHRoYXQgbWF0Y2hlcyB0aGUgdHlwZSBiZXR3ZWVuIHRoZSBjdXJyZW50XG4gKiBlbGVtZW50IGFuZCB0aGVcbiAqICAgIFNoYWRvdyBET00gcm9vdC5cbiAqIC0gYEBRdWVyeShEaXJlY3RpdmVUeXBlKSBxdWVyeTpRdWVyeUxpc3Q8RGlyZWN0aXZlVHlwZT5gOiBBIGxpdmUgY29sbGVjdGlvbiBvZiBkaXJlY3QgY2hpbGRcbiAqIGRpcmVjdGl2ZXMuXG4gKiAtIGBAUXVlcnlEZXNjZW5kYW50cyhEaXJlY3RpdmVUeXBlKSBxdWVyeTpRdWVyeUxpc3Q8RGlyZWN0aXZlVHlwZT5gOiBBIGxpdmUgY29sbGVjdGlvbiBvZiBhbnlcbiAqIGNoaWxkIGRpcmVjdGl2ZXMuXG4gKlxuICogVG8gaW5qZWN0IGVsZW1lbnQtc3BlY2lmaWMgc3BlY2lhbCBvYmplY3RzLCBkZWNsYXJlIHRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgYXM6XG4gKiAtIGBlbGVtZW50OiBFbGVtZW50UmVmYCB0byBvYnRhaW4gYSByZWZlcmVuY2UgdG8gbG9naWNhbCBlbGVtZW50IGluIHRoZSB2aWV3LlxuICogLSBgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZmAgdG8gY29udHJvbCBjaGlsZCB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uLCBmb3JcbiAqIHtAbGluayBEaXJlY3RpdmVNZXRhZGF0YX0gZGlyZWN0aXZlcyBvbmx5XG4gKiAtIGBiaW5kaW5nUHJvcGFnYXRpb246IEJpbmRpbmdQcm9wYWdhdGlvbmAgdG8gY29udHJvbCBjaGFuZ2UgZGV0ZWN0aW9uIGluIGEgbW9yZSBncmFudWxhciB3YXkuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVtb25zdHJhdGVzIGhvdyBkZXBlbmRlbmN5IGluamVjdGlvbiByZXNvbHZlcyBjb25zdHJ1Y3RvciBhcmd1bWVudHMgaW5cbiAqIHByYWN0aWNlLlxuICpcbiAqXG4gKiBBc3N1bWUgdGhpcyBIVE1MIHRlbXBsYXRlOlxuICpcbiAqIGBgYFxuICogPGRpdiBkZXBlbmRlbmN5PVwiMVwiPlxuICogICA8ZGl2IGRlcGVuZGVuY3k9XCIyXCI+XG4gKiAgICAgPGRpdiBkZXBlbmRlbmN5PVwiM1wiIG15LWRpcmVjdGl2ZT5cbiAqICAgICAgIDxkaXYgZGVwZW5kZW5jeT1cIjRcIj5cbiAqICAgICAgICAgPGRpdiBkZXBlbmRlbmN5PVwiNVwiPjwvZGl2PlxuICogICAgICAgPC9kaXY+XG4gKiAgICAgICA8ZGl2IGRlcGVuZGVuY3k9XCI2XCI+PC9kaXY+XG4gKiAgICAgPC9kaXY+XG4gKiAgIDwvZGl2PlxuICogPC9kaXY+XG4gKiBgYGBcbiAqXG4gKiBXaXRoIHRoZSBmb2xsb3dpbmcgYGRlcGVuZGVuY3lgIGRlY29yYXRvciBhbmQgYFNvbWVTZXJ2aWNlYCBpbmplY3RhYmxlIGNsYXNzLlxuICpcbiAqIGBgYFxuICogQEluamVjdGFibGUoKVxuICogY2xhc3MgU29tZVNlcnZpY2Uge1xuICogfVxuICpcbiAqIEBEaXJlY3RpdmUoe1xuICogICBzZWxlY3RvcjogJ1tkZXBlbmRlbmN5XScsXG4gKiAgIGlucHV0czogW1xuICogICAgICdpZDogZGVwZW5kZW5jeSdcbiAqICAgXVxuICogfSlcbiAqIGNsYXNzIERlcGVuZGVuY3kge1xuICogICBpZDpzdHJpbmc7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBMZXQncyBzdGVwIHRocm91Z2ggdGhlIGRpZmZlcmVudCB3YXlzIGluIHdoaWNoIGBNeURpcmVjdGl2ZWAgY291bGQgYmUgZGVjbGFyZWQuLi5cbiAqXG4gKlxuICogIyMjIE5vIGluamVjdGlvblxuICpcbiAqIEhlcmUgdGhlIGNvbnN0cnVjdG9yIGlzIGRlY2xhcmVkIHdpdGggbm8gYXJndW1lbnRzLCB0aGVyZWZvcmUgbm90aGluZyBpcyBpbmplY3RlZCBpbnRvXG4gKiBgTXlEaXJlY3RpdmVgLlxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW215LWRpcmVjdGl2ZV0nIH0pXG4gKiBjbGFzcyBNeURpcmVjdGl2ZSB7XG4gKiAgIGNvbnN0cnVjdG9yKCkge1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGRpcmVjdGl2ZSB3b3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBubyBkZXBlbmRlbmNpZXMuXG4gKlxuICpcbiAqICMjIyBDb21wb25lbnQtbGV2ZWwgaW5qZWN0aW9uXG4gKlxuICogRGlyZWN0aXZlcyBjYW4gaW5qZWN0IGFueSBpbmplY3RhYmxlIGluc3RhbmNlIGZyb20gdGhlIGNsb3Nlc3QgY29tcG9uZW50IGluamVjdG9yIG9yIGFueSBvZiBpdHNcbiAqIHBhcmVudHMuXG4gKlxuICogSGVyZSwgdGhlIGNvbnN0cnVjdG9yIGRlY2xhcmVzIGEgcGFyYW1ldGVyLCBgc29tZVNlcnZpY2VgLCBhbmQgaW5qZWN0cyB0aGUgYFNvbWVTZXJ2aWNlYCB0eXBlXG4gKiBmcm9tIHRoZSBwYXJlbnRcbiAqIGNvbXBvbmVudCdzIGluamVjdG9yLlxuICogYGBgXG4gKiBARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbXktZGlyZWN0aXZlXScgfSlcbiAqIGNsYXNzIE15RGlyZWN0aXZlIHtcbiAqICAgY29uc3RydWN0b3Ioc29tZVNlcnZpY2U6IFNvbWVTZXJ2aWNlKSB7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIHdvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGVwZW5kZW5jeSBvbiBgU29tZVNlcnZpY2VgLlxuICpcbiAqXG4gKiAjIyMgSW5qZWN0aW5nIGEgZGlyZWN0aXZlIGZyb20gdGhlIGN1cnJlbnQgZWxlbWVudFxuICpcbiAqIERpcmVjdGl2ZXMgY2FuIGluamVjdCBvdGhlciBkaXJlY3RpdmVzIGRlY2xhcmVkIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gKlxuICogYGBgXG4gKiBARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbXktZGlyZWN0aXZlXScgfSlcbiAqIGNsYXNzIE15RGlyZWN0aXZlIHtcbiAqICAgY29uc3RydWN0b3IoZGVwZW5kZW5jeTogRGVwZW5kZW5jeSkge1xuICogICAgIGV4cGVjdChkZXBlbmRlbmN5LmlkKS50b0VxdWFsKDMpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqIFRoaXMgZGlyZWN0aXZlIHdvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGBEZXBlbmRlbmN5YCBkZWNsYXJlZCBhdCB0aGUgc2FtZSBlbGVtZW50LCBpbiB0aGlzIGNhc2VcbiAqIGBkZXBlbmRlbmN5PVwiM1wiYC5cbiAqXG4gKiAjIyMgSW5qZWN0aW5nIGEgZGlyZWN0aXZlIGZyb20gYW55IGFuY2VzdG9yIGVsZW1lbnRzXG4gKlxuICogRGlyZWN0aXZlcyBjYW4gaW5qZWN0IG90aGVyIGRpcmVjdGl2ZXMgZGVjbGFyZWQgb24gYW55IGFuY2VzdG9yIGVsZW1lbnQgKGluIHRoZSBjdXJyZW50IFNoYWRvd1xuICogRE9NKSwgaS5lLiBvbiB0aGUgY3VycmVudCBlbGVtZW50LCB0aGVcbiAqIHBhcmVudCBlbGVtZW50LCBvciBpdHMgcGFyZW50cy5cbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW215LWRpcmVjdGl2ZV0nIH0pXG4gKiBjbGFzcyBNeURpcmVjdGl2ZSB7XG4gKiAgIGNvbnN0cnVjdG9yKEBIb3N0KCkgZGVwZW5kZW5jeTogRGVwZW5kZW5jeSkge1xuICogICAgIGV4cGVjdChkZXBlbmRlbmN5LmlkKS50b0VxdWFsKDIpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBgQEhvc3RgIGNoZWNrcyB0aGUgY3VycmVudCBlbGVtZW50LCB0aGUgcGFyZW50LCBhcyB3ZWxsIGFzIGl0cyBwYXJlbnRzIHJlY3Vyc2l2ZWx5LiBJZlxuICogYGRlcGVuZGVuY3k9XCIyXCJgIGRpZG4ndFxuICogZXhpc3Qgb24gdGhlIGRpcmVjdCBwYXJlbnQsIHRoaXMgaW5qZWN0aW9uIHdvdWxkXG4gKiBoYXZlIHJldHVybmVkXG4gKiBgZGVwZW5kZW5jeT1cIjFcImAuXG4gKlxuICpcbiAqICMjIyBJbmplY3RpbmcgYSBsaXZlIGNvbGxlY3Rpb24gb2YgZGlyZWN0IGNoaWxkIGRpcmVjdGl2ZXNcbiAqXG4gKlxuICogQSBkaXJlY3RpdmUgY2FuIGFsc28gcXVlcnkgZm9yIG90aGVyIGNoaWxkIGRpcmVjdGl2ZXMuIFNpbmNlIHBhcmVudCBkaXJlY3RpdmVzIGFyZSBpbnN0YW50aWF0ZWRcbiAqIGJlZm9yZSBjaGlsZCBkaXJlY3RpdmVzLCBhIGRpcmVjdGl2ZSBjYW4ndCBzaW1wbHkgaW5qZWN0IHRoZSBsaXN0IG9mIGNoaWxkIGRpcmVjdGl2ZXMuIEluc3RlYWQsXG4gKiB0aGUgZGlyZWN0aXZlIGluamVjdHMgYSB7QGxpbmsgUXVlcnlMaXN0fSwgd2hpY2ggdXBkYXRlcyBpdHMgY29udGVudHMgYXMgY2hpbGRyZW4gYXJlIGFkZGVkLFxuICogcmVtb3ZlZCwgb3IgbW92ZWQgYnkgYSBkaXJlY3RpdmUgdGhhdCB1c2VzIGEge0BsaW5rIFZpZXdDb250YWluZXJSZWZ9IHN1Y2ggYXMgYSBgbmdGb3JgLCBhblxuICogYG5nSWZgLCBvciBhbiBgbmdTd2l0Y2hgLlxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW215LWRpcmVjdGl2ZV0nIH0pXG4gKiBjbGFzcyBNeURpcmVjdGl2ZSB7XG4gKiAgIGNvbnN0cnVjdG9yKEBRdWVyeShEZXBlbmRlbmN5KSBkZXBlbmRlbmNpZXM6UXVlcnlMaXN0PERlcGVuZGVuY3k+KSB7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIHdvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEge0BsaW5rIFF1ZXJ5TGlzdH0gd2hpY2ggY29udGFpbnMgYERlcGVuZGVuY3lgIDQgYW5kXG4gKiBgRGVwZW5kZW5jeWAgNi4gSGVyZSwgYERlcGVuZGVuY3lgIDUgd291bGQgbm90IGJlIGluY2x1ZGVkLCBiZWNhdXNlIGl0IGlzIG5vdCBhIGRpcmVjdCBjaGlsZC5cbiAqXG4gKiAjIyMgSW5qZWN0aW5nIGEgbGl2ZSBjb2xsZWN0aW9uIG9mIGRlc2NlbmRhbnQgZGlyZWN0aXZlc1xuICpcbiAqIEJ5IHBhc3NpbmcgdGhlIGRlc2NlbmRhbnQgZmxhZyB0byBgQFF1ZXJ5YCBhYm92ZSwgd2UgY2FuIGluY2x1ZGUgdGhlIGNoaWxkcmVuIG9mIHRoZSBjaGlsZFxuICogZWxlbWVudHMuXG4gKlxuICogYGBgXG4gKiBARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbXktZGlyZWN0aXZlXScgfSlcbiAqIGNsYXNzIE15RGlyZWN0aXZlIHtcbiAqICAgY29uc3RydWN0b3IoQFF1ZXJ5KERlcGVuZGVuY3ksIHtkZXNjZW5kYW50czogdHJ1ZX0pIGRlcGVuZGVuY2llczpRdWVyeUxpc3Q8RGVwZW5kZW5jeT4pIHtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgd291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBRdWVyeSB3aGljaCB3b3VsZCBjb250YWluIGBEZXBlbmRlbmN5YCA0LCA1IGFuZCA2LlxuICpcbiAqICMjIyBPcHRpb25hbCBpbmplY3Rpb25cbiAqXG4gKiBUaGUgbm9ybWFsIGJlaGF2aW9yIG9mIGRpcmVjdGl2ZXMgaXMgdG8gcmV0dXJuIGFuIGVycm9yIHdoZW4gYSBzcGVjaWZpZWQgZGVwZW5kZW5jeSBjYW5ub3QgYmVcbiAqIHJlc29sdmVkLiBJZiB5b3VcbiAqIHdvdWxkIGxpa2UgdG8gaW5qZWN0IGBudWxsYCBvbiB1bnJlc29sdmVkIGRlcGVuZGVuY3kgaW5zdGVhZCwgeW91IGNhbiBhbm5vdGF0ZSB0aGF0IGRlcGVuZGVuY3lcbiAqIHdpdGggYEBPcHRpb25hbCgpYC5cbiAqIFRoaXMgZXhwbGljaXRseSBwZXJtaXRzIHRoZSBhdXRob3Igb2YgYSB0ZW1wbGF0ZSB0byB0cmVhdCBzb21lIG9mIHRoZSBzdXJyb3VuZGluZyBkaXJlY3RpdmVzIGFzXG4gKiBvcHRpb25hbC5cbiAqXG4gKiBgYGBcbiAqIEBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tteS1kaXJlY3RpdmVdJyB9KVxuICogY2xhc3MgTXlEaXJlY3RpdmUge1xuICogICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBkZXBlbmRlbmN5OkRlcGVuZGVuY3kpIHtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgd291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBgRGVwZW5kZW5jeWAgZGlyZWN0aXZlIGZvdW5kIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gKiBJZiBub25lIGNhbiBiZVxuICogZm91bmQsIHRoZSBpbmplY3RvciBzdXBwbGllcyBgbnVsbGAgaW5zdGVhZCBvZiB0aHJvd2luZyBhbiBlcnJvci5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIEhlcmUgd2UgdXNlIGEgZGVjb3JhdG9yIGRpcmVjdGl2ZSB0byBzaW1wbHkgZGVmaW5lIGJhc2ljIHRvb2wtdGlwIGJlaGF2aW9yLlxuICpcbiAqIGBgYFxuICogQERpcmVjdGl2ZSh7XG4gKiAgIHNlbGVjdG9yOiAnW3Rvb2x0aXBdJyxcbiAqICAgaW5wdXRzOiBbXG4gKiAgICAgJ3RleHQ6IHRvb2x0aXAnXG4gKiAgIF0sXG4gKiAgIGhvc3Q6IHtcbiAqICAgICAnKG1vdXNlZW50ZXIpJzogJ29uTW91c2VFbnRlcigpJyxcbiAqICAgICAnKG1vdXNlbGVhdmUpJzogJ29uTW91c2VMZWF2ZSgpJ1xuICogICB9XG4gKiB9KVxuICogY2xhc3MgVG9vbHRpcHtcbiAqICAgdGV4dDpzdHJpbmc7XG4gKiAgIG92ZXJsYXk6T3ZlcmxheTsgLy8gTk9UIFlFVCBJTVBMRU1FTlRFRFxuICogICBvdmVybGF5TWFuYWdlcjpPdmVybGF5TWFuYWdlcjsgLy8gTk9UIFlFVCBJTVBMRU1FTlRFRFxuICpcbiAqICAgY29uc3RydWN0b3Iob3ZlcmxheU1hbmFnZXI6T3ZlcmxheU1hbmFnZXIpIHtcbiAqICAgICB0aGlzLm92ZXJsYXkgPSBvdmVybGF5O1xuICogICB9XG4gKlxuICogICBvbk1vdXNlRW50ZXIoKSB7XG4gKiAgICAgLy8gZXhhY3Qgc2lnbmF0dXJlIHRvIGJlIGRldGVybWluZWRcbiAqICAgICB0aGlzLm92ZXJsYXkgPSB0aGlzLm92ZXJsYXlNYW5hZ2VyLm9wZW4odGV4dCwgLi4uKTtcbiAqICAgfVxuICpcbiAqICAgb25Nb3VzZUxlYXZlKCkge1xuICogICAgIHRoaXMub3ZlcmxheS5jbG9zZSgpO1xuICogICAgIHRoaXMub3ZlcmxheSA9IG51bGw7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICogSW4gb3VyIEhUTUwgdGVtcGxhdGUsIHdlIGNhbiB0aGVuIGFkZCB0aGlzIGJlaGF2aW9yIHRvIGEgYDxkaXY+YCBvciBhbnkgb3RoZXIgZWxlbWVudCB3aXRoIHRoZVxuICogYHRvb2x0aXBgIHNlbGVjdG9yLFxuICogbGlrZSBzbzpcbiAqXG4gKiBgYGBcbiAqIDxkaXYgdG9vbHRpcD1cInNvbWUgdGV4dCBoZXJlXCI+PC9kaXY+XG4gKiBgYGBcbiAqXG4gKiBEaXJlY3RpdmVzIGNhbiBhbHNvIGNvbnRyb2wgdGhlIGluc3RhbnRpYXRpb24sIGRlc3RydWN0aW9uLCBhbmQgcG9zaXRpb25pbmcgb2YgaW5saW5lIHRlbXBsYXRlXG4gKiBlbGVtZW50czpcbiAqXG4gKiBBIGRpcmVjdGl2ZSB1c2VzIGEge0BsaW5rIFZpZXdDb250YWluZXJSZWZ9IHRvIGluc3RhbnRpYXRlLCBpbnNlcnQsIG1vdmUsIGFuZCBkZXN0cm95IHZpZXdzIGF0XG4gKiBydW50aW1lLlxuICogVGhlIHtAbGluayBWaWV3Q29udGFpbmVyUmVmfSBpcyBjcmVhdGVkIGFzIGEgcmVzdWx0IG9mIGA8dGVtcGxhdGU+YCBlbGVtZW50LCBhbmQgcmVwcmVzZW50cyBhXG4gKiBsb2NhdGlvbiBpbiB0aGUgY3VycmVudCB2aWV3XG4gKiB3aGVyZSB0aGVzZSBhY3Rpb25zIGFyZSBwZXJmb3JtZWQuXG4gKlxuICogVmlld3MgYXJlIGFsd2F5cyBjcmVhdGVkIGFzIGNoaWxkcmVuIG9mIHRoZSBjdXJyZW50IHtAbGluayBWaWV3TWV0YWRhdGF9LCBhbmQgYXMgc2libGluZ3Mgb2YgdGhlXG4gKiBgPHRlbXBsYXRlPmAgZWxlbWVudC4gVGh1cyBhXG4gKiBkaXJlY3RpdmUgaW4gYSBjaGlsZCB2aWV3IGNhbm5vdCBpbmplY3QgdGhlIGRpcmVjdGl2ZSB0aGF0IGNyZWF0ZWQgaXQuXG4gKlxuICogU2luY2UgZGlyZWN0aXZlcyB0aGF0IGNyZWF0ZSB2aWV3cyB2aWEgVmlld0NvbnRhaW5lcnMgYXJlIGNvbW1vbiBpbiBBbmd1bGFyLCBhbmQgdXNpbmcgdGhlIGZ1bGxcbiAqIGA8dGVtcGxhdGU+YCBlbGVtZW50IHN5bnRheCBpcyB3b3JkeSwgQW5ndWxhclxuICogYWxzbyBzdXBwb3J0cyBhIHNob3J0aGFuZCBub3RhdGlvbjogYDxsaSAqZm9vPVwiYmFyXCI+YCBhbmQgYDxsaSB0ZW1wbGF0ZT1cImZvbzogYmFyXCI+YCBhcmVcbiAqIGVxdWl2YWxlbnQuXG4gKlxuICogVGh1cyxcbiAqXG4gKiBgYGBcbiAqIDx1bD5cbiAqICAgPGxpICpmb289XCJiYXJcIiB0aXRsZT1cInRleHRcIj48L2xpPlxuICogPC91bD5cbiAqIGBgYFxuICpcbiAqIEV4cGFuZHMgaW4gdXNlIHRvOlxuICpcbiAqIGBgYFxuICogPHVsPlxuICogICA8dGVtcGxhdGUgW2Zvb109XCJiYXJcIj5cbiAqICAgICA8bGkgdGl0bGU9XCJ0ZXh0XCI+PC9saT5cbiAqICAgPC90ZW1wbGF0ZT5cbiAqIDwvdWw+XG4gKiBgYGBcbiAqXG4gKiBOb3RpY2UgdGhhdCBhbHRob3VnaCB0aGUgc2hvcnRoYW5kIHBsYWNlcyBgKmZvbz1cImJhclwiYCB3aXRoaW4gdGhlIGA8bGk+YCBlbGVtZW50LCB0aGUgYmluZGluZyBmb3JcbiAqIHRoZSBkaXJlY3RpdmVcbiAqIGNvbnRyb2xsZXIgaXMgY29ycmVjdGx5IGluc3RhbnRpYXRlZCBvbiB0aGUgYDx0ZW1wbGF0ZT5gIGVsZW1lbnQgcmF0aGVyIHRoYW4gdGhlIGA8bGk+YCBlbGVtZW50LlxuICpcbiAqICMjIExpZmVjeWNsZSBob29rc1xuICpcbiAqIFdoZW4gdGhlIGRpcmVjdGl2ZSBjbGFzcyBpbXBsZW1lbnRzIHNvbWUge0BsaW5rIGFuZ3VsYXIyL2xpZmVjeWNsZV9ob29rc30gdGhlIGNhbGxiYWNrcyBhcmVcbiAqIGNhbGxlZCBieSB0aGUgY2hhbmdlIGRldGVjdGlvbiBhdCBkZWZpbmVkIHBvaW50cyBpbiB0aW1lIGR1cmluZyB0aGUgbGlmZSBvZiB0aGUgZGlyZWN0aXZlLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogTGV0J3Mgc3VwcG9zZSB3ZSB3YW50IHRvIGltcGxlbWVudCB0aGUgYHVubGVzc2AgYmVoYXZpb3IsIHRvIGNvbmRpdGlvbmFsbHkgaW5jbHVkZSBhIHRlbXBsYXRlLlxuICpcbiAqIEhlcmUgaXMgYSBzaW1wbGUgZGlyZWN0aXZlIHRoYXQgdHJpZ2dlcnMgb24gYW4gYHVubGVzc2Agc2VsZWN0b3I6XG4gKlxuICogYGBgXG4gKiBARGlyZWN0aXZlKHtcbiAqICAgc2VsZWN0b3I6ICdbdW5sZXNzXScsXG4gKiAgIGlucHV0czogWyd1bmxlc3MnXVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBVbmxlc3Mge1xuICogICB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuICogICB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY7XG4gKiAgIHByZXZDb25kaXRpb246IGJvb2xlYW47XG4gKlxuICogICBjb25zdHJ1Y3Rvcih2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWYpIHtcbiAqICAgICB0aGlzLnZpZXdDb250YWluZXIgPSB2aWV3Q29udGFpbmVyO1xuICogICAgIHRoaXMudGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZVJlZjtcbiAqICAgICB0aGlzLnByZXZDb25kaXRpb24gPSBudWxsO1xuICogICB9XG4gKlxuICogICBzZXQgdW5sZXNzKG5ld0NvbmRpdGlvbikge1xuICogICAgIGlmIChuZXdDb25kaXRpb24gJiYgKGlzQmxhbmsodGhpcy5wcmV2Q29uZGl0aW9uKSB8fCAhdGhpcy5wcmV2Q29uZGl0aW9uKSkge1xuICogICAgICAgdGhpcy5wcmV2Q29uZGl0aW9uID0gdHJ1ZTtcbiAqICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICogICAgIH0gZWxzZSBpZiAoIW5ld0NvbmRpdGlvbiAmJiAoaXNCbGFuayh0aGlzLnByZXZDb25kaXRpb24pIHx8IHRoaXMucHJldkNvbmRpdGlvbikpIHtcbiAqICAgICAgIHRoaXMucHJldkNvbmRpdGlvbiA9IGZhbHNlO1xuICogICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZSh0aGlzLnRlbXBsYXRlUmVmKTtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFdlIGNhbiB0aGVuIHVzZSB0aGlzIGB1bmxlc3NgIHNlbGVjdG9yIGluIGEgdGVtcGxhdGU6XG4gKiBgYGBcbiAqIDx1bD5cbiAqICAgPGxpICp1bmxlc3M9XCJleHByXCI+PC9saT5cbiAqIDwvdWw+XG4gKiBgYGBcbiAqXG4gKiBPbmNlIHRoZSBkaXJlY3RpdmUgaW5zdGFudGlhdGVzIHRoZSBjaGlsZCB2aWV3LCB0aGUgc2hvcnRoYW5kIG5vdGF0aW9uIGZvciB0aGUgdGVtcGxhdGUgZXhwYW5kc1xuICogYW5kIHRoZSByZXN1bHQgaXM6XG4gKlxuICogYGBgXG4gKiA8dWw+XG4gKiAgIDx0ZW1wbGF0ZSBbdW5sZXNzXT1cImV4cFwiPlxuICogICAgIDxsaT48L2xpPlxuICogICA8L3RlbXBsYXRlPlxuICogICA8bGk+PC9saT5cbiAqIDwvdWw+XG4gKiBgYGBcbiAqXG4gKiBOb3RlIGFsc28gdGhhdCBhbHRob3VnaCB0aGUgYDxsaT48L2xpPmAgdGVtcGxhdGUgc3RpbGwgZXhpc3RzIGluc2lkZSB0aGUgYDx0ZW1wbGF0ZT48L3RlbXBsYXRlPmAsXG4gKiB0aGUgaW5zdGFudGlhdGVkXG4gKiB2aWV3IG9jY3VycyBvbiB0aGUgc2Vjb25kIGA8bGk+PC9saT5gIHdoaWNoIGlzIGEgc2libGluZyB0byB0aGUgYDx0ZW1wbGF0ZT5gIGVsZW1lbnQuXG4gKi9cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgRGlyZWN0aXZlTWV0YWRhdGEgZXh0ZW5kcyBJbmplY3RhYmxlTWV0YWRhdGEge1xuICAvKipcbiAgICogVGhlIENTUyBzZWxlY3RvciB0aGF0IHRyaWdnZXJzIHRoZSBpbnN0YW50aWF0aW9uIG9mIGEgZGlyZWN0aXZlLlxuICAgKlxuICAgKiBBbmd1bGFyIG9ubHkgYWxsb3dzIGRpcmVjdGl2ZXMgdG8gdHJpZ2dlciBvbiBDU1Mgc2VsZWN0b3JzIHRoYXQgZG8gbm90IGNyb3NzIGVsZW1lbnRcbiAgICogYm91bmRhcmllcy5cbiAgICpcbiAgICogYHNlbGVjdG9yYCBtYXkgYmUgZGVjbGFyZWQgYXMgb25lIG9mIHRoZSBmb2xsb3dpbmc6XG4gICAqXG4gICAqIC0gYGVsZW1lbnQtbmFtZWA6IHNlbGVjdCBieSBlbGVtZW50IG5hbWUuXG4gICAqIC0gYC5jbGFzc2A6IHNlbGVjdCBieSBjbGFzcyBuYW1lLlxuICAgKiAtIGBbYXR0cmlidXRlXWA6IHNlbGVjdCBieSBhdHRyaWJ1dGUgbmFtZS5cbiAgICogLSBgW2F0dHJpYnV0ZT12YWx1ZV1gOiBzZWxlY3QgYnkgYXR0cmlidXRlIG5hbWUgYW5kIHZhbHVlLlxuICAgKiAtIGA6bm90KHN1Yl9zZWxlY3RvcilgOiBzZWxlY3Qgb25seSBpZiB0aGUgZWxlbWVudCBkb2VzIG5vdCBtYXRjaCB0aGUgYHN1Yl9zZWxlY3RvcmAuXG4gICAqIC0gYHNlbGVjdG9yMSwgc2VsZWN0b3IyYDogc2VsZWN0IGlmIGVpdGhlciBgc2VsZWN0b3IxYCBvciBgc2VsZWN0b3IyYCBtYXRjaGVzLlxuICAgKlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBTdXBwb3NlIHdlIGhhdmUgYSBkaXJlY3RpdmUgd2l0aCBhbiBgaW5wdXRbdHlwZT10ZXh0XWAgc2VsZWN0b3IuXG4gICAqXG4gICAqIEFuZCB0aGUgZm9sbG93aW5nIEhUTUw6XG4gICAqXG4gICAqIGBgYGh0bWxcbiAgICogPGZvcm0+XG4gICAqICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCI+XG4gICAqICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiPlxuICAgKiA8Zm9ybT5cbiAgICogYGBgXG4gICAqXG4gICAqIFRoZSBkaXJlY3RpdmUgd291bGQgb25seSBiZSBpbnN0YW50aWF0ZWQgb24gdGhlIGA8aW5wdXQgdHlwZT1cInRleHRcIj5gIGVsZW1lbnQuXG4gICAqXG4gICAqL1xuICBzZWxlY3Rvcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbnVtZXJhdGVzIHRoZSBzZXQgb2YgZGF0YS1ib3VuZCBpbnB1dCBwcm9wZXJ0aWVzIGZvciBhIGRpcmVjdGl2ZVxuICAgKlxuICAgKiBBbmd1bGFyIGF1dG9tYXRpY2FsbHkgdXBkYXRlcyBpbnB1dCBwcm9wZXJ0aWVzIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgKlxuICAgKiBUaGUgYGlucHV0c2AgcHJvcGVydHkgZGVmaW5lcyBhIHNldCBvZiBgZGlyZWN0aXZlUHJvcGVydHlgIHRvIGBiaW5kaW5nUHJvcGVydHlgXG4gICAqIGNvbmZpZ3VyYXRpb246XG4gICAqXG4gICAqIC0gYGRpcmVjdGl2ZVByb3BlcnR5YCBzcGVjaWZpZXMgdGhlIGNvbXBvbmVudCBwcm9wZXJ0eSB3aGVyZSB0aGUgdmFsdWUgaXMgd3JpdHRlbi5cbiAgICogLSBgYmluZGluZ1Byb3BlcnR5YCBzcGVjaWZpZXMgdGhlIERPTSBwcm9wZXJ0eSB3aGVyZSB0aGUgdmFsdWUgaXMgcmVhZCBmcm9tLlxuICAgKlxuICAgKiBXaGVuIGBiaW5kaW5nUHJvcGVydHlgIGlzIG5vdCBwcm92aWRlZCwgaXQgaXMgYXNzdW1lZCB0byBiZSBlcXVhbCB0byBgZGlyZWN0aXZlUHJvcGVydHlgLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvaXZoZlhZP3A9cHJldmlldykpXG4gICAqXG4gICAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjcmVhdGVzIGEgY29tcG9uZW50IHdpdGggdHdvIGRhdGEtYm91bmQgcHJvcGVydGllcy5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBAQ29tcG9uZW50KHtcbiAgICogICBzZWxlY3RvcjogJ2JhbmstYWNjb3VudCcsXG4gICAqICAgaW5wdXRzOiBbJ2JhbmtOYW1lJywgJ2lkOiBhY2NvdW50LWlkJ10sXG4gICAqICAgdGVtcGxhdGU6IGBcbiAgICogICAgIEJhbmsgTmFtZToge3tiYW5rTmFtZX19XG4gICAqICAgICBBY2NvdW50IElkOiB7e2lkfX1cbiAgICogICBgXG4gICAqIH0pXG4gICAqIGNsYXNzIEJhbmtBY2NvdW50IHtcbiAgICogICBiYW5rTmFtZTogc3RyaW5nO1xuICAgKiAgIGlkOiBzdHJpbmc7XG4gICAqXG4gICAqICAgLy8gdGhpcyBwcm9wZXJ0eSBpcyBub3QgYm91bmQsIGFuZCB3b24ndCBiZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgYnkgQW5ndWxhclxuICAgKiAgIG5vcm1hbGl6ZWRCYW5rTmFtZTogc3RyaW5nO1xuICAgKiB9XG4gICAqXG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAgICogICB0ZW1wbGF0ZTogYFxuICAgKiAgICAgPGJhbmstYWNjb3VudCBiYW5rLW5hbWU9XCJSQkNcIiBhY2NvdW50LWlkPVwiNDc0N1wiPjwvYmFuay1hY2NvdW50PlxuICAgKiAgIGAsXG4gICAqICAgZGlyZWN0aXZlczogW0JhbmtBY2NvdW50XVxuICAgKiB9KVxuICAgKiBjbGFzcyBBcHAge31cbiAgICpcbiAgICogYm9vdHN0cmFwKEFwcCk7XG4gICAqIGBgYFxuICAgKlxuICAgKi9cbiAgZ2V0IGlucHV0cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLl9wcm9wZXJ0aWVzKSAmJiB0aGlzLl9wcm9wZXJ0aWVzLmxlbmd0aCA+IDAgPyB0aGlzLl9wcm9wZXJ0aWVzIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0cztcbiAgfVxuICBnZXQgcHJvcGVydGllcygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLmlucHV0czsgfVxuICBwcml2YXRlIF9pbnB1dHM6IHN0cmluZ1tdO1xuICBwcml2YXRlIF9wcm9wZXJ0aWVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRW51bWVyYXRlcyB0aGUgc2V0IG9mIGV2ZW50LWJvdW5kIG91dHB1dCBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBXaGVuIGFuIG91dHB1dCBwcm9wZXJ0eSBlbWl0cyBhbiBldmVudCwgYW4gZXZlbnQgaGFuZGxlciBhdHRhY2hlZCB0byB0aGF0IGV2ZW50XG4gICAqIHRoZSB0ZW1wbGF0ZSBpcyBpbnZva2VkLlxuICAgKlxuICAgKiBUaGUgYG91dHB1dHNgIHByb3BlcnR5IGRlZmluZXMgYSBzZXQgb2YgYGRpcmVjdGl2ZVByb3BlcnR5YCB0byBgYmluZGluZ1Byb3BlcnR5YFxuICAgKiBjb25maWd1cmF0aW9uOlxuICAgKlxuICAgKiAtIGBkaXJlY3RpdmVQcm9wZXJ0eWAgc3BlY2lmaWVzIHRoZSBjb21wb25lbnQgcHJvcGVydHkgdGhhdCBlbWl0cyBldmVudHMuXG4gICAqIC0gYGJpbmRpbmdQcm9wZXJ0eWAgc3BlY2lmaWVzIHRoZSBET00gcHJvcGVydHkgdGhlIGV2ZW50IGhhbmRsZXIgaXMgYXR0YWNoZWQgdG8uXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9kNUNOcTc/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBARGlyZWN0aXZlKHtcbiAgICogICBzZWxlY3RvcjogJ2ludGVydmFsLWRpcicsXG4gICAqICAgb3V0cHV0czogWydldmVyeVNlY29uZCcsICdmaXZlNVNlY3M6IGV2ZXJ5Rml2ZVNlY29uZHMnXVxuICAgKiB9KVxuICAgKiBjbGFzcyBJbnRlcnZhbERpciB7XG4gICAqICAgZXZlcnlTZWNvbmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAqICAgZml2ZTVTZWNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgKlxuICAgKiAgIGNvbnN0cnVjdG9yKCkge1xuICAgKiAgICAgc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5ldmVyeVNlY29uZC5lbWl0KFwiZXZlbnRcIiksIDEwMDApO1xuICAgKiAgICAgc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5maXZlNVNlY3MuZW1pdChcImV2ZW50XCIpLCA1MDAwKTtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICAgKiAgIHRlbXBsYXRlOiBgXG4gICAqICAgICA8aW50ZXJ2YWwtZGlyIChldmVyeVNlY29uZCk9XCJldmVyeVNlY29uZCgpXCIgKGV2ZXJ5Rml2ZVNlY29uZHMpPVwiZXZlcnlGaXZlU2Vjb25kcygpXCI+XG4gICAqICAgICA8L2ludGVydmFsLWRpcj5cbiAgICogICBgLFxuICAgKiAgIGRpcmVjdGl2ZXM6IFtJbnRlcnZhbERpcl1cbiAgICogfSlcbiAgICogY2xhc3MgQXBwIHtcbiAgICogICBldmVyeVNlY29uZCgpIHsgY29uc29sZS5sb2coJ3NlY29uZCcpOyB9XG4gICAqICAgZXZlcnlGaXZlU2Vjb25kcygpIHsgY29uc29sZS5sb2coJ2ZpdmUgc2Vjb25kcycpOyB9XG4gICAqIH1cbiAgICogYm9vdHN0cmFwKEFwcCk7XG4gICAqIGBgYFxuICAgKlxuICAgKi9cbiAgZ2V0IG91dHB1dHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBpc1ByZXNlbnQodGhpcy5fZXZlbnRzKSAmJiB0aGlzLl9ldmVudHMubGVuZ3RoID4gMCA/IHRoaXMuX2V2ZW50cyA6IHRoaXMuX291dHB1dHM7XG4gIH1cbiAgZ2V0IGV2ZW50cygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLm91dHB1dHM7IH1cbiAgcHJpdmF0ZSBfb3V0cHV0czogc3RyaW5nW107XG4gIHByaXZhdGUgX2V2ZW50czogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGV2ZW50cywgYWN0aW9ucywgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyByZWxhdGVkIHRvIHRoZSBob3N0IGVsZW1lbnQuXG4gICAqXG4gICAqICMjIEhvc3QgTGlzdGVuZXJzXG4gICAqXG4gICAqIFNwZWNpZmllcyB3aGljaCBET00gZXZlbnRzIGEgZGlyZWN0aXZlIGxpc3RlbnMgdG8gdmlhIGEgc2V0IG9mIGAoZXZlbnQpYCB0byBgbWV0aG9kYFxuICAgKiBrZXktdmFsdWUgcGFpcnM6XG4gICAqXG4gICAqIC0gYGV2ZW50YDogdGhlIERPTSBldmVudCB0aGF0IHRoZSBkaXJlY3RpdmUgbGlzdGVucyB0by5cbiAgICogLSBgc3RhdGVtZW50YDogdGhlIHN0YXRlbWVudCB0byBleGVjdXRlIHdoZW4gdGhlIGV2ZW50IG9jY3Vycy5cbiAgICogSWYgdGhlIGV2YWx1YXRpb24gb2YgdGhlIHN0YXRlbWVudCByZXR1cm5zIGBmYWxzZWAsIHRoZW4gYHByZXZlbnREZWZhdWx0YGlzIGFwcGxpZWQgb24gdGhlIERPTVxuICAgKiBldmVudC5cbiAgICpcbiAgICogVG8gbGlzdGVuIHRvIGdsb2JhbCBldmVudHMsIGEgdGFyZ2V0IG11c3QgYmUgYWRkZWQgdG8gdGhlIGV2ZW50IG5hbWUuXG4gICAqIFRoZSB0YXJnZXQgY2FuIGJlIGB3aW5kb3dgLCBgZG9jdW1lbnRgIG9yIGBib2R5YC5cbiAgICpcbiAgICogV2hlbiB3cml0aW5nIGEgZGlyZWN0aXZlIGV2ZW50IGJpbmRpbmcsIHlvdSBjYW4gYWxzbyByZWZlciB0byB0aGUgJGV2ZW50IGxvY2FsIHZhcmlhYmxlLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvRGxBNUtVP3A9cHJldmlldykpXG4gICAqXG4gICAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZWNsYXJlcyBhIGRpcmVjdGl2ZSB0aGF0IGF0dGFjaGVzIGEgY2xpY2sgbGlzdGVuZXIgdG8gdGhlIGJ1dHRvbiBhbmRcbiAgICogY291bnRzIGNsaWNrcy5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBARGlyZWN0aXZlKHtcbiAgICogICBzZWxlY3RvcjogJ2J1dHRvbltjb3VudGluZ10nLFxuICAgKiAgIGhvc3Q6IHtcbiAgICogICAgICcoY2xpY2spJzogJ29uQ2xpY2soJGV2ZW50LnRhcmdldCknXG4gICAqICAgfVxuICAgKiB9KVxuICAgKiBjbGFzcyBDb3VudENsaWNrcyB7XG4gICAqICAgbnVtYmVyT2ZDbGlja3MgPSAwO1xuICAgKlxuICAgKiAgIG9uQ2xpY2soYnRuKSB7XG4gICAqICAgICBjb25zb2xlLmxvZyhcImJ1dHRvblwiLCBidG4sIFwibnVtYmVyIG9mIGNsaWNrczpcIiwgdGhpcy5udW1iZXJPZkNsaWNrcysrKTtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICAgKiAgIHRlbXBsYXRlOiBgPGJ1dHRvbiBjb3VudGluZz5JbmNyZW1lbnQ8L2J1dHRvbj5gLFxuICAgKiAgIGRpcmVjdGl2ZXM6IFtDb3VudENsaWNrc11cbiAgICogfSlcbiAgICogY2xhc3MgQXBwIHt9XG4gICAqXG4gICAqIGJvb3RzdHJhcChBcHApO1xuICAgKiBgYGBcbiAgICpcbiAgICogIyMgSG9zdCBQcm9wZXJ0eSBCaW5kaW5nc1xuICAgKlxuICAgKiBTcGVjaWZpZXMgd2hpY2ggRE9NIHByb3BlcnRpZXMgYSBkaXJlY3RpdmUgdXBkYXRlcy5cbiAgICpcbiAgICogQW5ndWxhciBhdXRvbWF0aWNhbGx5IGNoZWNrcyBob3N0IHByb3BlcnR5IGJpbmRpbmdzIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgKiBJZiBhIGJpbmRpbmcgY2hhbmdlcywgaXQgd2lsbCB1cGRhdGUgdGhlIGhvc3QgZWxlbWVudCBvZiB0aGUgZGlyZWN0aXZlLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvZ05nMEVEP3A9cHJldmlldykpXG4gICAqXG4gICAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjcmVhdGVzIGEgZGlyZWN0aXZlIHRoYXQgc2V0cyB0aGUgYHZhbGlkYCBhbmQgYGludmFsaWRgIGNsYXNzZXNcbiAgICogb24gdGhlIERPTSBlbGVtZW50IHRoYXQgaGFzIG5nTW9kZWwgZGlyZWN0aXZlIG9uIGl0LlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBEaXJlY3RpdmUoe1xuICAgKiAgIHNlbGVjdG9yOiAnW25nTW9kZWxdJyxcbiAgICogICBob3N0OiB7XG4gICAqICAgICAnW2NsYXNzLnZhbGlkXSc6ICd2YWxpZCcsXG4gICAqICAgICAnW2NsYXNzLmludmFsaWRdJzogJ2ludmFsaWQnXG4gICAqICAgfVxuICAgKiB9KVxuICAgKiBjbGFzcyBOZ01vZGVsU3RhdHVzIHtcbiAgICogICBjb25zdHJ1Y3RvcihwdWJsaWMgY29udHJvbDpOZ01vZGVsKSB7fVxuICAgKiAgIGdldCB2YWxpZCB7IHJldHVybiB0aGlzLmNvbnRyb2wudmFsaWQ7IH1cbiAgICogICBnZXQgaW52YWxpZCB7IHJldHVybiB0aGlzLmNvbnRyb2wuaW52YWxpZDsgfVxuICAgKiB9XG4gICAqXG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAgICogICB0ZW1wbGF0ZTogYDxpbnB1dCBbKG5nTW9kZWwpXT1cInByb3BcIj5gLFxuICAgKiAgIGRpcmVjdGl2ZXM6IFtGT1JNX0RJUkVDVElWRVMsIE5nTW9kZWxTdGF0dXNdXG4gICAqIH0pXG4gICAqIGNsYXNzIEFwcCB7XG4gICAqICAgcHJvcDtcbiAgICogfVxuICAgKlxuICAgKiBib290c3RyYXAoQXBwKTtcbiAgICogYGBgXG4gICAqXG4gICAqICMjIEF0dHJpYnV0ZXNcbiAgICpcbiAgICogU3BlY2lmaWVzIHN0YXRpYyBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGJlIHByb3BhZ2F0ZWQgdG8gYSBob3N0IGVsZW1lbnQuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlXG4gICAqXG4gICAqIEluIHRoaXMgZXhhbXBsZSB1c2luZyBgbXktYnV0dG9uYCBkaXJlY3RpdmUgKGV4LjogYDxkaXYgbXktYnV0dG9uPjwvZGl2PmApIG9uIGEgaG9zdCBlbGVtZW50XG4gICAqIChoZXJlOiBgPGRpdj5gICkgd2lsbCBlbnN1cmUgdGhhdCB0aGlzIGVsZW1lbnQgd2lsbCBnZXQgdGhlIFwiYnV0dG9uXCIgcm9sZS5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBARGlyZWN0aXZlKHtcbiAgICogICBzZWxlY3RvcjogJ1tteS1idXR0b25dJyxcbiAgICogICBob3N0OiB7XG4gICAqICAgICAncm9sZSc6ICdidXR0b24nXG4gICAqICAgfVxuICAgKiB9KVxuICAgKiBjbGFzcyBNeUJ1dHRvbiB7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBob3N0OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgc2V0IG9mIGluamVjdGFibGUgb2JqZWN0cyB0aGF0IGFyZSB2aXNpYmxlIHRvIGEgRGlyZWN0aXZlIGFuZCBpdHMgbGlnaHQgRE9NXG4gICAqIGNoaWxkcmVuLlxuICAgKlxuICAgKiAjIyBTaW1wbGUgRXhhbXBsZVxuICAgKlxuICAgKiBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBjbGFzcyB0aGF0IGNhbiBiZSBpbmplY3RlZDpcbiAgICpcbiAgICogYGBgXG4gICAqIGNsYXNzIEdyZWV0ZXIge1xuICAgKiAgICBncmVldChuYW1lOnN0cmluZykge1xuICAgKiAgICAgIHJldHVybiAnSGVsbG8gJyArIG5hbWUgKyAnISc7XG4gICAqICAgIH1cbiAgICogfVxuICAgKlxuICAgKiBARGlyZWN0aXZlKHtcbiAgICogICBzZWxlY3RvcjogJ2dyZWV0JyxcbiAgICogICBiaW5kaW5nczogW1xuICAgKiAgICAgR3JlZXRlclxuICAgKiAgIF1cbiAgICogfSlcbiAgICogY2xhc3MgSGVsbG9Xb3JsZCB7XG4gICAqICAgZ3JlZXRlcjpHcmVldGVyO1xuICAgKlxuICAgKiAgIGNvbnN0cnVjdG9yKGdyZWV0ZXI6R3JlZXRlcikge1xuICAgKiAgICAgdGhpcy5ncmVldGVyID0gZ3JlZXRlcjtcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBnZXQgcHJvdmlkZXJzKCk6IGFueVtdIHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuX2JpbmRpbmdzKSAmJiB0aGlzLl9iaW5kaW5ncy5sZW5ndGggPiAwID8gdGhpcy5fYmluZGluZ3MgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcm92aWRlcnM7XG4gIH1cbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIGdldCBiaW5kaW5ncygpOiBhbnlbXSB7IHJldHVybiB0aGlzLnByb3ZpZGVyczsgfVxuICBwcml2YXRlIF9wcm92aWRlcnM6IGFueVtdO1xuICBwcml2YXRlIF9iaW5kaW5nczogYW55W107XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIG5hbWUgdGhhdCBjYW4gYmUgdXNlZCBpbiB0aGUgdGVtcGxhdGUgdG8gYXNzaWduIHRoaXMgZGlyZWN0aXZlIHRvIGEgdmFyaWFibGUuXG4gICAqXG4gICAqICMjIFNpbXBsZSBFeGFtcGxlXG4gICAqXG4gICAqIGBgYFxuICAgKiBARGlyZWN0aXZlKHtcbiAgICogICBzZWxlY3RvcjogJ2NoaWxkLWRpcicsXG4gICAqICAgZXhwb3J0QXM6ICdjaGlsZCdcbiAgICogfSlcbiAgICogY2xhc3MgQ2hpbGREaXIge1xuICAgKiB9XG4gICAqXG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnbWFpbicsXG4gICAqICAgdGVtcGxhdGU6IGA8Y2hpbGQtZGlyICNjPVwiY2hpbGRcIj48L2NoaWxkLWRpcj5gLFxuICAgKiAgIGRpcmVjdGl2ZXM6IFtDaGlsZERpcl1cbiAgICogfSlcbiAgICogY2xhc3MgTWFpbkNvbXBvbmVudCB7XG4gICAqIH1cbiAgICpcbiAgICogYGBgXG4gICAqL1xuICBleHBvcnRBczogc3RyaW5nO1xuXG4gIC8vIFRPRE86IGFkZCBhbiBleGFtcGxlIGFmdGVyIENvbnRlbnRDaGlsZHJlbiBhbmQgVmlld0NoaWxkcmVuIGFyZSBpbiBtYXN0ZXJcbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgdGhlIHF1ZXJpZXMgdGhhdCB3aWxsIGJlIGluamVjdGVkIGludG8gdGhlIGRpcmVjdGl2ZS5cbiAgICpcbiAgICogQ29udGVudCBxdWVyaWVzIGFyZSBzZXQgYmVmb3JlIHRoZSBgbmdBZnRlckNvbnRlbnRJbml0YCBjYWxsYmFjayBpcyBjYWxsZWQuXG4gICAqIFZpZXcgcXVlcmllcyBhcmUgc2V0IGJlZm9yZSB0aGUgYG5nQWZ0ZXJWaWV3SW5pdGAgY2FsbGJhY2sgaXMgY2FsbGVkLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBgYGBcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdzb21lRGlyJyxcbiAgICogICBxdWVyaWVzOiB7XG4gICAqICAgICBjb250ZW50Q2hpbGRyZW46IG5ldyBDb250ZW50Q2hpbGRyZW4oQ2hpbGREaXJlY3RpdmUpLFxuICAgKiAgICAgdmlld0NoaWxkcmVuOiBuZXcgVmlld0NoaWxkcmVuKENoaWxkRGlyZWN0aXZlKVxuICAgKiAgIH0sXG4gICAqICAgdGVtcGxhdGU6ICc8Y2hpbGQtZGlyZWN0aXZlPjwvY2hpbGQtZGlyZWN0aXZlPicsXG4gICAqICAgZGlyZWN0aXZlczogW0NoaWxkRGlyZWN0aXZlXVxuICAgKiB9KVxuICAgKiBjbGFzcyBTb21lRGlyIHtcbiAgICogICBjb250ZW50Q2hpbGRyZW46IFF1ZXJ5TGlzdDxDaGlsZERpcmVjdGl2ZT4sXG4gICAqICAgdmlld0NoaWxkcmVuOiBRdWVyeUxpc3Q8Q2hpbGREaXJlY3RpdmU+XG4gICAqXG4gICAqICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgKiAgICAgLy8gY29udGVudENoaWxkcmVuIGlzIHNldFxuICAgKiAgIH1cbiAgICpcbiAgICogICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAqICAgICAvLyB2aWV3Q2hpbGRyZW4gaXMgc2V0XG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgcXVlcmllczoge1trZXk6IHN0cmluZ106IGFueX07XG5cbiAgY29uc3RydWN0b3Ioe3NlbGVjdG9yLCBpbnB1dHMsIG91dHB1dHMsIHByb3BlcnRpZXMsIGV2ZW50cywgaG9zdCwgYmluZGluZ3MsIHByb3ZpZGVycywgZXhwb3J0QXMsXG4gICAgICAgICAgICAgICBxdWVyaWVzfToge1xuICAgIHNlbGVjdG9yPzogc3RyaW5nLFxuICAgIGlucHV0cz86IHN0cmluZ1tdLFxuICAgIG91dHB1dHM/OiBzdHJpbmdbXSxcbiAgICBwcm9wZXJ0aWVzPzogc3RyaW5nW10sXG4gICAgZXZlbnRzPzogc3RyaW5nW10sXG4gICAgaG9zdD86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LFxuICAgIHByb3ZpZGVycz86IGFueVtdLFxuICAgIC8qKiBAZGVwcmVjYXRlZCAqLyBiaW5kaW5ncz86IGFueVtdLFxuICAgIGV4cG9ydEFzPzogc3RyaW5nLFxuICAgIHF1ZXJpZXM/OiB7W2tleTogc3RyaW5nXTogYW55fVxuICB9ID0ge30pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgICB0aGlzLl9pbnB1dHMgPSBpbnB1dHM7XG4gICAgdGhpcy5fcHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgdGhpcy5fb3V0cHV0cyA9IG91dHB1dHM7XG4gICAgdGhpcy5fZXZlbnRzID0gZXZlbnRzO1xuICAgIHRoaXMuaG9zdCA9IGhvc3Q7XG4gICAgdGhpcy5leHBvcnRBcyA9IGV4cG9ydEFzO1xuICAgIHRoaXMucXVlcmllcyA9IHF1ZXJpZXM7XG4gICAgdGhpcy5fcHJvdmlkZXJzID0gcHJvdmlkZXJzO1xuICAgIHRoaXMuX2JpbmRpbmdzID0gYmluZGluZ3M7XG4gIH1cbn1cblxuLyoqXG4gKiBEZWNsYXJlIHJldXNhYmxlIFVJIGJ1aWxkaW5nIGJsb2NrcyBmb3IgYW4gYXBwbGljYXRpb24uXG4gKlxuICogRWFjaCBBbmd1bGFyIGNvbXBvbmVudCByZXF1aXJlcyBhIHNpbmdsZSBgQENvbXBvbmVudGAgYW5ub3RhdGlvbi4gVGhlXG4gKiBgQENvbXBvbmVudGBcbiAqIGFubm90YXRpb24gc3BlY2lmaWVzIHdoZW4gYSBjb21wb25lbnQgaXMgaW5zdGFudGlhdGVkLCBhbmQgd2hpY2ggcHJvcGVydGllcyBhbmQgaG9zdExpc3RlbmVycyBpdFxuICogYmluZHMgdG8uXG4gKlxuICogV2hlbiBhIGNvbXBvbmVudCBpcyBpbnN0YW50aWF0ZWQsIEFuZ3VsYXJcbiAqIC0gY3JlYXRlcyBhIHNoYWRvdyBET00gZm9yIHRoZSBjb21wb25lbnQuXG4gKiAtIGxvYWRzIHRoZSBzZWxlY3RlZCB0ZW1wbGF0ZSBpbnRvIHRoZSBzaGFkb3cgRE9NLlxuICogLSBjcmVhdGVzIGFsbCB0aGUgaW5qZWN0YWJsZSBvYmplY3RzIGNvbmZpZ3VyZWQgd2l0aCBgcHJvdmlkZXJzYCBhbmQgYHZpZXdQcm92aWRlcnNgLlxuICpcbiAqIEFsbCB0ZW1wbGF0ZSBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBhcmUgdGhlbiBldmFsdWF0ZWQgYWdhaW5zdCB0aGUgY29tcG9uZW50IGluc3RhbmNlLlxuICpcbiAqIEZvciBkZXRhaWxzIG9uIHRoZSBgQFZpZXdgIGFubm90YXRpb24sIHNlZSB7QGxpbmsgVmlld01ldGFkYXRhfS5cbiAqXG4gKiAjIyBMaWZlY3ljbGUgaG9va3NcbiAqXG4gKiBXaGVuIHRoZSBjb21wb25lbnQgY2xhc3MgaW1wbGVtZW50cyBzb21lIHtAbGluayBhbmd1bGFyMi9saWZlY3ljbGVfaG9va3N9IHRoZSBjYWxsYmFja3MgYXJlXG4gKiBjYWxsZWQgYnkgdGhlIGNoYW5nZSBkZXRlY3Rpb24gYXQgZGVmaW5lZCBwb2ludHMgaW4gdGltZSBkdXJpbmcgdGhlIGxpZmUgb2YgdGhlIGNvbXBvbmVudC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL3RzL21ldGFkYXRhL21ldGFkYXRhLnRzIHJlZ2lvbj0nY29tcG9uZW50J31cbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRNZXRhZGF0YSBleHRlbmRzIERpcmVjdGl2ZU1ldGFkYXRhIHtcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHVzZWQgY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneS5cbiAgICpcbiAgICogV2hlbiBhIGNvbXBvbmVudCBpcyBpbnN0YW50aWF0ZWQsIEFuZ3VsYXIgY3JlYXRlcyBhIGNoYW5nZSBkZXRlY3Rvciwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yXG4gICAqIHByb3BhZ2F0aW5nIHRoZSBjb21wb25lbnQncyBiaW5kaW5ncy5cbiAgICpcbiAgICogVGhlIGBjaGFuZ2VEZXRlY3Rpb25gIHByb3BlcnR5IGRlZmluZXMsIHdoZXRoZXIgdGhlIGNoYW5nZSBkZXRlY3Rpb24gd2lsbCBiZSBjaGVja2VkIGV2ZXJ5IHRpbWVcbiAgICogb3Igb25seSB3aGVuIHRoZSBjb21wb25lbnQgdGVsbHMgaXQgdG8gZG8gc28uXG4gICAqL1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5O1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBzZXQgb2YgaW5qZWN0YWJsZSBvYmplY3RzIHRoYXQgYXJlIHZpc2libGUgdG8gaXRzIHZpZXcgRE9NIGNoaWxkcmVuLlxuICAgKlxuICAgKiAjIyBTaW1wbGUgRXhhbXBsZVxuICAgKlxuICAgKiBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBjbGFzcyB0aGF0IGNhbiBiZSBpbmplY3RlZDpcbiAgICpcbiAgICogYGBgXG4gICAqIGNsYXNzIEdyZWV0ZXIge1xuICAgKiAgICBncmVldChuYW1lOnN0cmluZykge1xuICAgKiAgICAgIHJldHVybiAnSGVsbG8gJyArIG5hbWUgKyAnISc7XG4gICAqICAgIH1cbiAgICogfVxuICAgKlxuICAgKiBARGlyZWN0aXZlKHtcbiAgICogICBzZWxlY3RvcjogJ25lZWRzLWdyZWV0ZXInXG4gICAqIH0pXG4gICAqIGNsYXNzIE5lZWRzR3JlZXRlciB7XG4gICAqICAgZ3JlZXRlcjpHcmVldGVyO1xuICAgKlxuICAgKiAgIGNvbnN0cnVjdG9yKGdyZWV0ZXI6R3JlZXRlcikge1xuICAgKiAgICAgdGhpcy5ncmVldGVyID0gZ3JlZXRlcjtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdncmVldCcsXG4gICAqICAgdmlld1Byb3ZpZGVyczogW1xuICAgKiAgICAgR3JlZXRlclxuICAgKiAgIF0sXG4gICAqICAgdGVtcGxhdGU6IGA8bmVlZHMtZ3JlZXRlcj48L25lZWRzLWdyZWV0ZXI+YCxcbiAgICogICBkaXJlY3RpdmVzOiBbTmVlZHNHcmVldGVyXVxuICAgKiB9KVxuICAgKiBjbGFzcyBIZWxsb1dvcmxkIHtcbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICovXG4gIGdldCB2aWV3UHJvdmlkZXJzKCk6IGFueVtdIHtcbiAgICByZXR1cm4gaXNQcmVzZW50KHRoaXMuX3ZpZXdCaW5kaW5ncykgJiYgdGhpcy5fdmlld0JpbmRpbmdzLmxlbmd0aCA+IDAgPyB0aGlzLl92aWV3QmluZGluZ3MgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZpZXdQcm92aWRlcnM7XG4gIH1cbiAgZ2V0IHZpZXdCaW5kaW5ncygpOiBhbnlbXSB7IHJldHVybiB0aGlzLnZpZXdQcm92aWRlcnM7IH1cbiAgcHJpdmF0ZSBfdmlld1Byb3ZpZGVyczogYW55W107XG4gIHByaXZhdGUgX3ZpZXdCaW5kaW5nczogYW55W107XG5cbiAgLyoqXG4gICAqIFRoZSBtb2R1bGUgaWQgb2YgdGhlIG1vZHVsZSB0aGF0IGNvbnRhaW5zIHRoZSBjb21wb25lbnQuXG4gICAqIE5lZWRlZCB0byBiZSBhYmxlIHRvIHJlc29sdmUgcmVsYXRpdmUgdXJscyBmb3IgdGVtcGxhdGVzIGFuZCBzdHlsZXMuXG4gICAqIEluIERhcnQsIHRoaXMgY2FuIGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseSBhbmQgZG9lcyBub3QgbmVlZCB0byBiZSBzZXQuXG4gICAqIEluIENvbW1vbkpTLCB0aGlzIGNhbiBhbHdheXMgYmUgc2V0IHRvIGBtb2R1bGUuaWRgLlxuICAgKlxuICAgKiAjIyBTaW1wbGUgRXhhbXBsZVxuICAgKlxuICAgKiBgYGBcbiAgICogQERpcmVjdGl2ZSh7XG4gICAqICAgc2VsZWN0b3I6ICdzb21lRGlyJyxcbiAgICogICBtb2R1bGVJZDogbW9kdWxlLmlkXG4gICAqIH0pXG4gICAqIGNsYXNzIFNvbWVEaXIge1xuICAgKiB9XG4gICAqXG4gICAqIGBgYFxuICAgKi9cbiAgbW9kdWxlSWQ6IHN0cmluZztcblxuICB0ZW1wbGF0ZVVybDogc3RyaW5nO1xuXG4gIHRlbXBsYXRlOiBzdHJpbmc7XG5cbiAgc3R5bGVVcmxzOiBzdHJpbmdbXTtcblxuICBzdHlsZXM6IHN0cmluZ1tdO1xuXG4gIGRpcmVjdGl2ZXM6IEFycmF5PFR5cGUgfCBhbnlbXT47XG5cbiAgcGlwZXM6IEFycmF5PFR5cGUgfCBhbnlbXT47XG5cbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb247XG5cbiAgY29uc3RydWN0b3Ioe3NlbGVjdG9yLCBpbnB1dHMsIG91dHB1dHMsIHByb3BlcnRpZXMsIGV2ZW50cywgaG9zdCwgZXhwb3J0QXMsIG1vZHVsZUlkLCBiaW5kaW5ncyxcbiAgICAgICAgICAgICAgIHByb3ZpZGVycywgdmlld0JpbmRpbmdzLCB2aWV3UHJvdmlkZXJzLFxuICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0aW9uID0gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCwgcXVlcmllcywgdGVtcGxhdGVVcmwsIHRlbXBsYXRlLFxuICAgICAgICAgICAgICAgc3R5bGVVcmxzLCBzdHlsZXMsIGRpcmVjdGl2ZXMsIHBpcGVzLCBlbmNhcHN1bGF0aW9ufToge1xuICAgIHNlbGVjdG9yPzogc3RyaW5nLFxuICAgIGlucHV0cz86IHN0cmluZ1tdLFxuICAgIG91dHB1dHM/OiBzdHJpbmdbXSxcbiAgICBwcm9wZXJ0aWVzPzogc3RyaW5nW10sXG4gICAgZXZlbnRzPzogc3RyaW5nW10sXG4gICAgaG9zdD86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LFxuICAgIC8qKiBAZGVwcmVjYXRlZCAqLyBiaW5kaW5ncz86IGFueVtdLFxuICAgIHByb3ZpZGVycz86IGFueVtdLFxuICAgIGV4cG9ydEFzPzogc3RyaW5nLFxuICAgIG1vZHVsZUlkPzogc3RyaW5nLFxuICAgIC8qKiBAZGVwcmVjYXRlZCAqLyB2aWV3QmluZGluZ3M/OiBhbnlbXSxcbiAgICB2aWV3UHJvdmlkZXJzPzogYW55W10sXG4gICAgcXVlcmllcz86IHtba2V5OiBzdHJpbmddOiBhbnl9LFxuICAgIGNoYW5nZURldGVjdGlvbj86IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIHRlbXBsYXRlVXJsPzogc3RyaW5nLFxuICAgIHRlbXBsYXRlPzogc3RyaW5nLFxuICAgIHN0eWxlVXJscz86IHN0cmluZ1tdLFxuICAgIHN0eWxlcz86IHN0cmluZ1tdLFxuICAgIGRpcmVjdGl2ZXM/OiBBcnJheTxUeXBlIHwgYW55W10+LFxuICAgIHBpcGVzPzogQXJyYXk8VHlwZSB8IGFueVtdPixcbiAgICBlbmNhcHN1bGF0aW9uPzogVmlld0VuY2Fwc3VsYXRpb25cbiAgfSA9IHt9KSB7XG4gICAgc3VwZXIoe1xuICAgICAgc2VsZWN0b3I6IHNlbGVjdG9yLFxuICAgICAgaW5wdXRzOiBpbnB1dHMsXG4gICAgICBvdXRwdXRzOiBvdXRwdXRzLFxuICAgICAgcHJvcGVydGllczogcHJvcGVydGllcyxcbiAgICAgIGV2ZW50czogZXZlbnRzLFxuICAgICAgaG9zdDogaG9zdCxcbiAgICAgIGV4cG9ydEFzOiBleHBvcnRBcyxcbiAgICAgIGJpbmRpbmdzOiBiaW5kaW5ncyxcbiAgICAgIHByb3ZpZGVyczogcHJvdmlkZXJzLFxuICAgICAgcXVlcmllczogcXVlcmllc1xuICAgIH0pO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24gPSBjaGFuZ2VEZXRlY3Rpb247XG4gICAgdGhpcy5fdmlld1Byb3ZpZGVycyA9IHZpZXdQcm92aWRlcnM7XG4gICAgdGhpcy5fdmlld0JpbmRpbmdzID0gdmlld0JpbmRpbmdzO1xuICAgIHRoaXMudGVtcGxhdGVVcmwgPSB0ZW1wbGF0ZVVybDtcbiAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgdGhpcy5zdHlsZVVybHMgPSBzdHlsZVVybHM7XG4gICAgdGhpcy5zdHlsZXMgPSBzdHlsZXM7XG4gICAgdGhpcy5kaXJlY3RpdmVzID0gZGlyZWN0aXZlcztcbiAgICB0aGlzLnBpcGVzID0gcGlwZXM7XG4gICAgdGhpcy5lbmNhcHN1bGF0aW9uID0gZW5jYXBzdWxhdGlvbjtcbiAgICB0aGlzLm1vZHVsZUlkID0gbW9kdWxlSWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBEZWNsYXJlIHJldXNhYmxlIHBpcGUgZnVuY3Rpb24uXG4gKlxuICogQSBcInB1cmVcIiBwaXBlIGlzIG9ubHkgcmUtZXZhbHVhdGVkIHdoZW4gZWl0aGVyIHRoZSBpbnB1dCBvciBhbnkgb2YgdGhlIGFyZ3VtZW50cyBjaGFuZ2UuXG4gKlxuICogV2hlbiBub3Qgc3BlY2lmaWVkLCBwaXBlcyBkZWZhdWx0IHRvIGJlaW5nIHB1cmUuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiB7QGV4YW1wbGUgY29yZS90cy9tZXRhZGF0YS9tZXRhZGF0YS50cyByZWdpb249J3BpcGUnfVxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIFBpcGVNZXRhZGF0YSBleHRlbmRzIEluamVjdGFibGVNZXRhZGF0YSB7XG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcHVyZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7bmFtZSwgcHVyZX06IHtuYW1lOiBzdHJpbmcsIHB1cmU/OiBib29sZWFufSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLl9wdXJlID0gcHVyZTtcbiAgfVxuXG4gIGdldCBwdXJlKCk6IGJvb2xlYW4geyByZXR1cm4gaXNQcmVzZW50KHRoaXMuX3B1cmUpID8gdGhpcy5fcHVyZSA6IHRydWU7IH1cbn1cblxuLyoqXG4gKiBEZWNsYXJlcyBhIGRhdGEtYm91bmQgaW5wdXQgcHJvcGVydHkuXG4gKlxuICogQW5ndWxhciBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uLlxuICpcbiAqIGBJbnB1dE1ldGFkYXRhYCB0YWtlcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBzcGVjaWZpZXMgdGhlIG5hbWVcbiAqIHVzZWQgd2hlbiBpbnN0YW50aWF0aW5nIGEgY29tcG9uZW50IGluIHRoZSB0ZW1wbGF0ZS4gV2hlbiBub3QgcHJvdmlkZWQsXG4gKiB0aGUgbmFtZSBvZiB0aGUgZGVjb3JhdGVkIHByb3BlcnR5IGlzIHVzZWQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY3JlYXRlcyBhIGNvbXBvbmVudCB3aXRoIHR3byBpbnB1dCBwcm9wZXJ0aWVzLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2JhbmstYWNjb3VudCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgQmFuayBOYW1lOiB7e2JhbmtOYW1lfX1cbiAqICAgICBBY2NvdW50IElkOiB7e2lkfX1cbiAqICAgYFxuICogfSlcbiAqIGNsYXNzIEJhbmtBY2NvdW50IHtcbiAqICAgQElucHV0KCkgYmFua05hbWU6IHN0cmluZztcbiAqICAgQElucHV0KCdhY2NvdW50LWlkJykgaWQ6IHN0cmluZztcbiAqXG4gKiAgIC8vIHRoaXMgcHJvcGVydHkgaXMgbm90IGJvdW5kLCBhbmQgd29uJ3QgYmUgYXV0b21hdGljYWxseSB1cGRhdGVkIGJ5IEFuZ3VsYXJcbiAqICAgbm9ybWFsaXplZEJhbmtOYW1lOiBzdHJpbmc7XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8YmFuay1hY2NvdW50IGJhbmstbmFtZT1cIlJCQ1wiIGFjY291bnQtaWQ9XCI0NzQ3XCI+PC9iYW5rLWFjY291bnQ+XG4gKiAgIGAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtCYW5rQWNjb3VudF1cbiAqIH0pXG4gKiBjbGFzcyBBcHAge31cbiAqXG4gKiBib290c3RyYXAoQXBwKTtcbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIElucHV0TWV0YWRhdGEge1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIC8qKlxuICAgICAgICogTmFtZSB1c2VkIHdoZW4gaW5zdGFudGlhdGluZyBhIGNvbXBvbmVudCBpbiB0aGUgdGVtcGxhdGUuXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyBiaW5kaW5nUHJvcGVydHlOYW1lPzogc3RyaW5nKSB7fVxufVxuXG4vKipcbiAqIERlY2xhcmVzIGFuIGV2ZW50LWJvdW5kIG91dHB1dCBwcm9wZXJ0eS5cbiAqXG4gKiBXaGVuIGFuIG91dHB1dCBwcm9wZXJ0eSBlbWl0cyBhbiBldmVudCwgYW4gZXZlbnQgaGFuZGxlciBhdHRhY2hlZCB0byB0aGF0IGV2ZW50XG4gKiB0aGUgdGVtcGxhdGUgaXMgaW52b2tlZC5cbiAqXG4gKiBgT3V0cHV0TWV0YWRhdGFgIHRha2VzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IHNwZWNpZmllcyB0aGUgbmFtZVxuICogdXNlZCB3aGVuIGluc3RhbnRpYXRpbmcgYSBjb21wb25lbnQgaW4gdGhlIHRlbXBsYXRlLiBXaGVuIG5vdCBwcm92aWRlZCxcbiAqIHRoZSBuYW1lIG9mIHRoZSBkZWNvcmF0ZWQgcHJvcGVydHkgaXMgdXNlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBEaXJlY3RpdmUoe1xuICogICBzZWxlY3RvcjogJ2ludGVydmFsLWRpcicsXG4gKiB9KVxuICogY2xhc3MgSW50ZXJ2YWxEaXIge1xuICogICBAT3V0cHV0KCkgZXZlcnlTZWNvbmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gKiAgIEBPdXRwdXQoJ2V2ZXJ5Rml2ZVNlY29uZHMnKSBmaXZlNVNlY3MgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gKlxuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgICBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLmV2ZXJ5U2Vjb25kLmVtaXQoXCJldmVudFwiKSwgMTAwMCk7XG4gKiAgICAgc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5maXZlNVNlY3MuZW1pdChcImV2ZW50XCIpLCA1MDAwKTtcbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGludGVydmFsLWRpciAoZXZlcnlTZWNvbmQpPVwiZXZlcnlTZWNvbmQoKVwiIChldmVyeUZpdmVTZWNvbmRzKT1cImV2ZXJ5Rml2ZVNlY29uZHMoKVwiPlxuICogICAgIDwvaW50ZXJ2YWwtZGlyPlxuICogICBgLFxuICogICBkaXJlY3RpdmVzOiBbSW50ZXJ2YWxEaXJdXG4gKiB9KVxuICogY2xhc3MgQXBwIHtcbiAqICAgZXZlcnlTZWNvbmQoKSB7IGNvbnNvbGUubG9nKCdzZWNvbmQnKTsgfVxuICogICBldmVyeUZpdmVTZWNvbmRzKCkgeyBjb25zb2xlLmxvZygnZml2ZSBzZWNvbmRzJyk7IH1cbiAqIH1cbiAqIGJvb3RzdHJhcChBcHApO1xuICogYGBgXG4gKi9cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgT3V0cHV0TWV0YWRhdGEge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgYmluZGluZ1Byb3BlcnR5TmFtZT86IHN0cmluZykge31cbn1cblxuLyoqXG4gKiBEZWNsYXJlcyBhIGhvc3QgcHJvcGVydHkgYmluZGluZy5cbiAqXG4gKiBBbmd1bGFyIGF1dG9tYXRpY2FsbHkgY2hlY2tzIGhvc3QgcHJvcGVydHkgYmluZGluZ3MgZHVyaW5nIGNoYW5nZSBkZXRlY3Rpb24uXG4gKiBJZiBhIGJpbmRpbmcgY2hhbmdlcywgaXQgd2lsbCB1cGRhdGUgdGhlIGhvc3QgZWxlbWVudCBvZiB0aGUgZGlyZWN0aXZlLlxuICpcbiAqIGBIb3N0QmluZGluZ01ldGFkYXRhYCB0YWtlcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHByb3BlcnR5XG4gKiBuYW1lIG9mIHRoZSBob3N0IGVsZW1lbnQgdGhhdCB3aWxsIGJlIHVwZGF0ZWQuIFdoZW4gbm90IHByb3ZpZGVkLFxuICogdGhlIGNsYXNzIHByb3BlcnR5IG5hbWUgaXMgdXNlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjcmVhdGVzIGEgZGlyZWN0aXZlIHRoYXQgc2V0cyB0aGUgYHZhbGlkYCBhbmQgYGludmFsaWRgIGNsYXNzZXNcbiAqIG9uIHRoZSBET00gZWxlbWVudCB0aGF0IGhhcyBuZ01vZGVsIGRpcmVjdGl2ZSBvbiBpdC5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tuZ01vZGVsXSd9KVxuICogY2xhc3MgTmdNb2RlbFN0YXR1cyB7XG4gKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjb250cm9sOk5nTW9kZWwpIHt9XG4gKiAgIEBIb3N0QmluZGluZygnY2xhc3MudmFsaWQnKSBnZXQgdmFsaWQgeyByZXR1cm4gdGhpcy5jb250cm9sLnZhbGlkOyB9XG4gKiAgIEBIb3N0QmluZGluZygnY2xhc3MuaW52YWxpZCcpIGdldCBpbnZhbGlkIHsgcmV0dXJuIHRoaXMuY29udHJvbC5pbnZhbGlkOyB9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAqICAgdGVtcGxhdGU6IGA8aW5wdXQgWyhuZ01vZGVsKV09XCJwcm9wXCI+YCxcbiAqICAgZGlyZWN0aXZlczogW0ZPUk1fRElSRUNUSVZFUywgTmdNb2RlbFN0YXR1c11cbiAqIH0pXG4gKiBjbGFzcyBBcHAge1xuICogICBwcm9wO1xuICogfVxuICpcbiAqIGJvb3RzdHJhcChBcHApO1xuICogYGBgXG4gKi9cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgSG9zdEJpbmRpbmdNZXRhZGF0YSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBob3N0UHJvcGVydHlOYW1lPzogc3RyaW5nKSB7fVxufVxuXG4vKipcbiAqIERlY2xhcmVzIGEgaG9zdCBsaXN0ZW5lci5cbiAqXG4gKiBBbmd1bGFyIHdpbGwgaW52b2tlIHRoZSBkZWNvcmF0ZWQgbWV0aG9kIHdoZW4gdGhlIGhvc3QgZWxlbWVudCBlbWl0cyB0aGUgc3BlY2lmaWVkIGV2ZW50LlxuICpcbiAqIElmIHRoZSBkZWNvcmF0ZWQgbWV0aG9kIHJldHVybnMgYGZhbHNlYCwgdGhlbiBgcHJldmVudERlZmF1bHRgIGlzIGFwcGxpZWQgb24gdGhlIERPTVxuICogZXZlbnQuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVjbGFyZXMgYSBkaXJlY3RpdmUgdGhhdCBhdHRhY2hlcyBhIGNsaWNrIGxpc3RlbmVyIHRvIHRoZSBidXR0b24gYW5kXG4gKiBjb3VudHMgY2xpY2tzLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnYnV0dG9uW2NvdW50aW5nXSd9KVxuICogY2xhc3MgQ291bnRDbGlja3Mge1xuICogICBudW1iZXJPZkNsaWNrcyA9IDA7XG4gKlxuICogICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICogICBvbkNsaWNrKGJ0bikge1xuICogICAgIGNvbnNvbGUubG9nKFwiYnV0dG9uXCIsIGJ0biwgXCJudW1iZXIgb2YgY2xpY2tzOlwiLCB0aGlzLm51bWJlck9mQ2xpY2tzKyspO1xuICogICB9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwJyxcbiAqICAgdGVtcGxhdGU6IGA8YnV0dG9uIGNvdW50aW5nPkluY3JlbWVudDwvYnV0dG9uPmAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtDb3VudENsaWNrc11cbiAqIH0pXG4gKiBjbGFzcyBBcHAge31cbiAqXG4gKiBib290c3RyYXAoQXBwKTtcbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIEhvc3RMaXN0ZW5lck1ldGFkYXRhIHtcbiAgY29uc3RydWN0b3IocHVibGljIGV2ZW50TmFtZTogc3RyaW5nLCBwdWJsaWMgYXJncz86IHN0cmluZ1tdKSB7fVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar di_1 = require('angular2/src/core/di');\r\n/**\r\n * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.\r\n */\r\nvar IterableDiffers = (function () {\r\n function IterableDiffers(factories) {\r\n this.factories = factories;\r\n }\r\n IterableDiffers.create = function (factories, parent) {\r\n if (lang_1.isPresent(parent)) {\r\n var copied = collection_1.ListWrapper.clone(parent.factories);\r\n factories = factories.concat(copied);\r\n return new IterableDiffers(factories);\r\n }\r\n else {\r\n return new IterableDiffers(factories);\r\n }\r\n };\r\n /**\r\n * Takes an array of {@link IterableDifferFactory} and returns a provider used to extend the\r\n * inherited {@link IterableDiffers} instance with the provided factories and return a new\r\n * {@link IterableDiffers} instance.\r\n *\r\n * The following example shows how to extend an existing list of factories,\r\n * which will only be applied to the injector for this component and its children.\r\n * This step is all that's required to make a new {@link IterableDiffer} available.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Component({\r\n * viewProviders: [\r\n * IterableDiffers.extend([new ImmutableListDiffer()])\r\n * ]\r\n * })\r\n * ```\r\n */\r\n IterableDiffers.extend = function (factories) {\r\n return new di_1.Provider(IterableDiffers, {\r\n useFactory: function (parent) {\r\n if (lang_1.isBlank(parent)) {\r\n // Typically would occur when calling IterableDiffers.extend inside of dependencies passed\r\n // to\r\n // bootstrap(), which would override default pipes instead of extending them.\r\n throw new exceptions_1.BaseException('Cannot extend IterableDiffers without a parent injector');\r\n }\r\n return IterableDiffers.create(factories, parent);\r\n },\r\n // Dependency technically isn't optional, but we can provide a better error message this way.\r\n deps: [[IterableDiffers, new di_1.SkipSelfMetadata(), new di_1.OptionalMetadata()]]\r\n });\r\n };\r\n IterableDiffers.prototype.find = function (iterable) {\r\n var factory = this.factories.find(function (f) { return f.supports(iterable); });\r\n if (lang_1.isPresent(factory)) {\r\n return factory;\r\n }\r\n else {\r\n throw new exceptions_1.BaseException(\"Cannot find a differ supporting object '\" + iterable + \"'\");\r\n }\r\n };\r\n IterableDiffers = __decorate([\r\n di_1.Injectable(),\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Array])\r\n ], IterableDiffers);\r\n return IterableDiffers;\r\n})();\r\nexports.IterableDiffers = IterableDiffers;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmFibGVfZGlmZmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vZGlmZmVycy9pdGVyYWJsZV9kaWZmZXJzLnRzIl0sIm5hbWVzIjpbIkl0ZXJhYmxlRGlmZmVycyIsIkl0ZXJhYmxlRGlmZmVycy5jb25zdHJ1Y3RvciIsIkl0ZXJhYmxlRGlmZmVycy5jcmVhdGUiLCJJdGVyYWJsZURpZmZlcnMuZXh0ZW5kIiwiSXRlcmFibGVEaWZmZXJzLmZpbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHFCQUF3QywwQkFBMEIsQ0FBQyxDQUFBO0FBQ25FLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELDJCQUEwQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTNELG1CQUF1RSxzQkFBc0IsQ0FBQyxDQUFBO0FBMEI5Rjs7R0FFRztBQUNIO0lBR0VBLHlCQUFtQkEsU0FBa0NBO1FBQWxDQyxjQUFTQSxHQUFUQSxTQUFTQSxDQUF5QkE7SUFBR0EsQ0FBQ0E7SUFFbERELHNCQUFNQSxHQUFiQSxVQUFjQSxTQUFrQ0EsRUFBRUEsTUFBd0JBO1FBQ3hFRSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDdEJBLElBQUlBLE1BQU1BLEdBQUdBLHdCQUFXQSxDQUFDQSxLQUFLQSxDQUFDQSxNQUFNQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQTtZQUNqREEsU0FBU0EsR0FBR0EsU0FBU0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0E7WUFDckNBLE1BQU1BLENBQUNBLElBQUlBLGVBQWVBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBO1FBQ3hDQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUNOQSxNQUFNQSxDQUFDQSxJQUFJQSxlQUFlQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQTtRQUN4Q0EsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUFFREY7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtCR0E7SUFDSUEsc0JBQU1BLEdBQWJBLFVBQWNBLFNBQWtDQTtRQUM5Q0csTUFBTUEsQ0FBQ0EsSUFBSUEsYUFBUUEsQ0FBQ0EsZUFBZUEsRUFBRUE7WUFDbkNBLFVBQVVBLEVBQUVBLFVBQUNBLE1BQXVCQTtnQkFDbENBLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLENBQUNBO29CQUNwQkEsMEZBQTBGQTtvQkFDMUZBLEtBQUtBO29CQUNMQSw2RUFBNkVBO29CQUM3RUEsTUFBTUEsSUFBSUEsMEJBQWFBLENBQUNBLHlEQUF5REEsQ0FBQ0EsQ0FBQ0E7Z0JBQ3JGQSxDQUFDQTtnQkFDREEsTUFBTUEsQ0FBQ0EsZUFBZUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsU0FBU0EsRUFBRUEsTUFBTUEsQ0FBQ0EsQ0FBQ0E7WUFDbkRBLENBQUNBO1lBQ0RBLDZGQUE2RkE7WUFDN0ZBLElBQUlBLEVBQUVBLENBQUNBLENBQUNBLGVBQWVBLEVBQUVBLElBQUlBLHFCQUFnQkEsRUFBRUEsRUFBRUEsSUFBSUEscUJBQWdCQSxFQUFFQSxDQUFDQSxDQUFDQTtTQUMxRUEsQ0FBQ0EsQ0FBQ0E7SUFDTEEsQ0FBQ0E7SUFFREgsOEJBQUlBLEdBQUpBLFVBQUtBLFFBQWFBO1FBQ2hCSSxJQUFJQSxPQUFPQSxHQUFHQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFBQSxDQUFDQSxJQUFJQSxPQUFBQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQSxRQUFRQSxDQUFDQSxFQUFwQkEsQ0FBb0JBLENBQUNBLENBQUNBO1FBQzdEQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDdkJBLE1BQU1BLENBQUNBLE9BQU9BLENBQUNBO1FBQ2pCQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUNOQSxNQUFNQSxJQUFJQSwwQkFBYUEsQ0FBQ0EsNkNBQTJDQSxRQUFRQSxNQUFHQSxDQUFDQSxDQUFDQTtRQUNsRkEsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUF6REhKO1FBQUNBLGVBQVVBLEVBQUVBO1FBQ1pBLFlBQUtBLEVBQUVBOzt3QkF5RFBBO0lBQURBLHNCQUFDQTtBQUFEQSxDQUFDQSxBQTFERCxJQTBEQztBQXhEWSx1QkFBZSxrQkF3RDNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzQmxhbmssIGlzUHJlc2VudCwgQ09OU1R9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZn0gZnJvbSAnLi4vY2hhbmdlX2RldGVjdG9yX3JlZic7XG5pbXBvcnQge1Byb3ZpZGVyLCBTa2lwU2VsZk1ldGFkYXRhLCBPcHRpb25hbE1ldGFkYXRhLCBJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5cbi8qKlxuICogQSBzdHJhdGVneSBmb3IgdHJhY2tpbmcgY2hhbmdlcyBvdmVyIHRpbWUgdG8gYW4gaXRlcmFibGUuIFVzZWQgZm9yIHtAbGluayBOZ0Zvcn0gdG9cbiAqIHJlc3BvbmQgdG8gY2hhbmdlcyBpbiBhbiBpdGVyYWJsZSBieSBlZmZlY3RpbmcgZXF1aXZhbGVudCBjaGFuZ2VzIGluIHRoZSBET00uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXRlcmFibGVEaWZmZXIge1xuICBkaWZmKG9iamVjdDogYW55KTogYW55O1xuICBvbkRlc3Ryb3koKTtcbn1cblxuLyoqXG4gICogQW4gb3B0aW9uYWwgZnVuY3Rpb24gcGFzc2VkIGludG8ge0BsaW5rIE5nRm9yfSB0aGF0IGRlZmluZXMgaG93IHRvIHRyYWNrXG4gICogaXRlbXMgaW4gYW4gaXRlcmFibGUgKGUuZy4gYnkgaW5kZXggb3IgaWQpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2tCeUZuIHsgKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSk6IGFueTsgfVxuXG5cbi8qKlxuICogUHJvdmlkZXMgYSBmYWN0b3J5IGZvciB7QGxpbmsgSXRlcmFibGVEaWZmZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEl0ZXJhYmxlRGlmZmVyRmFjdG9yeSB7XG4gIHN1cHBvcnRzKG9iamVjdHM6IGFueSk6IGJvb2xlYW47XG4gIGNyZWF0ZShjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHRyYWNrQnlGbj86IFRyYWNrQnlGbik6IEl0ZXJhYmxlRGlmZmVyO1xufVxuXG4vKipcbiAqIEEgcmVwb3NpdG9yeSBvZiBkaWZmZXJlbnQgaXRlcmFibGUgZGlmZmluZyBzdHJhdGVnaWVzIHVzZWQgYnkgTmdGb3IsIE5nQ2xhc3MsIGFuZCBvdGhlcnMuXG4gKi9cbkBJbmplY3RhYmxlKClcbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgSXRlcmFibGVEaWZmZXJzIHtcbiAgY29uc3RydWN0b3IocHVibGljIGZhY3RvcmllczogSXRlcmFibGVEaWZmZXJGYWN0b3J5W10pIHt9XG5cbiAgc3RhdGljIGNyZWF0ZShmYWN0b3JpZXM6IEl0ZXJhYmxlRGlmZmVyRmFjdG9yeVtdLCBwYXJlbnQ/OiBJdGVyYWJsZURpZmZlcnMpOiBJdGVyYWJsZURpZmZlcnMge1xuICAgIGlmIChpc1ByZXNlbnQocGFyZW50KSkge1xuICAgICAgdmFyIGNvcGllZCA9IExpc3RXcmFwcGVyLmNsb25lKHBhcmVudC5mYWN0b3JpZXMpO1xuICAgICAgZmFjdG9yaWVzID0gZmFjdG9yaWVzLmNvbmNhdChjb3BpZWQpO1xuICAgICAgcmV0dXJuIG5ldyBJdGVyYWJsZURpZmZlcnMoZmFjdG9yaWVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBJdGVyYWJsZURpZmZlcnMoZmFjdG9yaWVzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGFrZXMgYW4gYXJyYXkgb2Yge0BsaW5rIEl0ZXJhYmxlRGlmZmVyRmFjdG9yeX0gYW5kIHJldHVybnMgYSBwcm92aWRlciB1c2VkIHRvIGV4dGVuZCB0aGVcbiAgICogaW5oZXJpdGVkIHtAbGluayBJdGVyYWJsZURpZmZlcnN9IGluc3RhbmNlIHdpdGggdGhlIHByb3ZpZGVkIGZhY3RvcmllcyBhbmQgcmV0dXJuIGEgbmV3XG4gICAqIHtAbGluayBJdGVyYWJsZURpZmZlcnN9IGluc3RhbmNlLlxuICAgKlxuICAgKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93IHRvIGV4dGVuZCBhbiBleGlzdGluZyBsaXN0IG9mIGZhY3RvcmllcyxcbiAgICAgICAgICogd2hpY2ggd2lsbCBvbmx5IGJlIGFwcGxpZWQgdG8gdGhlIGluamVjdG9yIGZvciB0aGlzIGNvbXBvbmVudCBhbmQgaXRzIGNoaWxkcmVuLlxuICAgICAgICAgKiBUaGlzIHN0ZXAgaXMgYWxsIHRoYXQncyByZXF1aXJlZCB0byBtYWtlIGEgbmV3IHtAbGluayBJdGVyYWJsZURpZmZlcn0gYXZhaWxhYmxlLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBgYGBcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgdmlld1Byb3ZpZGVyczogW1xuICAgKiAgICAgSXRlcmFibGVEaWZmZXJzLmV4dGVuZChbbmV3IEltbXV0YWJsZUxpc3REaWZmZXIoKV0pXG4gICAqICAgXVxuICAgKiB9KVxuICAgKiBgYGBcbiAgICovXG4gIHN0YXRpYyBleHRlbmQoZmFjdG9yaWVzOiBJdGVyYWJsZURpZmZlckZhY3RvcnlbXSk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gbmV3IFByb3ZpZGVyKEl0ZXJhYmxlRGlmZmVycywge1xuICAgICAgdXNlRmFjdG9yeTogKHBhcmVudDogSXRlcmFibGVEaWZmZXJzKSA9PiB7XG4gICAgICAgIGlmIChpc0JsYW5rKHBhcmVudCkpIHtcbiAgICAgICAgICAvLyBUeXBpY2FsbHkgd291bGQgb2NjdXIgd2hlbiBjYWxsaW5nIEl0ZXJhYmxlRGlmZmVycy5leHRlbmQgaW5zaWRlIG9mIGRlcGVuZGVuY2llcyBwYXNzZWRcbiAgICAgICAgICAvLyB0b1xuICAgICAgICAgIC8vIGJvb3RzdHJhcCgpLCB3aGljaCB3b3VsZCBvdmVycmlkZSBkZWZhdWx0IHBpcGVzIGluc3RlYWQgb2YgZXh0ZW5kaW5nIHRoZW0uXG4gICAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ0Nhbm5vdCBleHRlbmQgSXRlcmFibGVEaWZmZXJzIHdpdGhvdXQgYSBwYXJlbnQgaW5qZWN0b3InKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSXRlcmFibGVEaWZmZXJzLmNyZWF0ZShmYWN0b3JpZXMsIHBhcmVudCk7XG4gICAgICB9LFxuICAgICAgLy8gRGVwZW5kZW5jeSB0ZWNobmljYWxseSBpc24ndCBvcHRpb25hbCwgYnV0IHdlIGNhbiBwcm92aWRlIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2UgdGhpcyB3YXkuXG4gICAgICBkZXBzOiBbW0l0ZXJhYmxlRGlmZmVycywgbmV3IFNraXBTZWxmTWV0YWRhdGEoKSwgbmV3IE9wdGlvbmFsTWV0YWRhdGEoKV1dXG4gICAgfSk7XG4gIH1cblxuICBmaW5kKGl0ZXJhYmxlOiBhbnkpOiBJdGVyYWJsZURpZmZlckZhY3Rvcnkge1xuICAgIHZhciBmYWN0b3J5ID0gdGhpcy5mYWN0b3JpZXMuZmluZChmID0+IGYuc3VwcG9ydHMoaXRlcmFibGUpKTtcbiAgICBpZiAoaXNQcmVzZW50KGZhY3RvcnkpKSB7XG4gICAgICByZXR1cm4gZmFjdG9yeTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYENhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRpbmcgb2JqZWN0ICcke2l0ZXJhYmxlfSdgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_2 = require('angular2/src/facade/lang');\r\nvar DefaultIterableDifferFactory = (function () {\r\n function DefaultIterableDifferFactory() {\r\n }\r\n DefaultIterableDifferFactory.prototype.supports = function (obj) { return collection_1.isListLikeIterable(obj); };\r\n DefaultIterableDifferFactory.prototype.create = function (cdRef, trackByFn) {\r\n return new DefaultIterableDiffer(trackByFn);\r\n };\r\n DefaultIterableDifferFactory = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], DefaultIterableDifferFactory);\r\n return DefaultIterableDifferFactory;\r\n})();\r\nexports.DefaultIterableDifferFactory = DefaultIterableDifferFactory;\r\nvar trackByIdentity = function (index, item) { return item; };\r\nvar DefaultIterableDiffer = (function () {\r\n function DefaultIterableDiffer(_trackByFn) {\r\n this._trackByFn = _trackByFn;\r\n this._length = null;\r\n this._collection = null;\r\n // Keeps track of the used records at any point in time (during & across `_check()` calls)\r\n this._linkedRecords = null;\r\n // Keeps track of the removed records at any point in time during `_check()` calls.\r\n this._unlinkedRecords = null;\r\n this._previousItHead = null;\r\n this._itHead = null;\r\n this._itTail = null;\r\n this._additionsHead = null;\r\n this._additionsTail = null;\r\n this._movesHead = null;\r\n this._movesTail = null;\r\n this._removalsHead = null;\r\n this._removalsTail = null;\r\n // Keeps track of records where custom track by is the same, but item identity has changed\r\n this._identityChangesHead = null;\r\n this._identityChangesTail = null;\r\n this._trackByFn = lang_2.isPresent(this._trackByFn) ? this._trackByFn : trackByIdentity;\r\n }\r\n Object.defineProperty(DefaultIterableDiffer.prototype, \"collection\", {\r\n get: function () { return this._collection; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DefaultIterableDiffer.prototype, \"length\", {\r\n get: function () { return this._length; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DefaultIterableDiffer.prototype.forEachItem = function (fn) {\r\n var record;\r\n for (record = this._itHead; record !== null; record = record._next) {\r\n fn(record);\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.forEachPreviousItem = function (fn) {\r\n var record;\r\n for (record = this._previousItHead; record !== null; record = record._nextPrevious) {\r\n fn(record);\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.forEachAddedItem = function (fn) {\r\n var record;\r\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\r\n fn(record);\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.forEachMovedItem = function (fn) {\r\n var record;\r\n for (record = this._movesHead; record !== null; record = record._nextMoved) {\r\n fn(record);\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.forEachRemovedItem = function (fn) {\r\n var record;\r\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\r\n fn(record);\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.forEachIdentityChange = function (fn) {\r\n var record;\r\n for (record = this._identityChangesHead; record !== null; record = record._nextIdentityChange) {\r\n fn(record);\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.diff = function (collection) {\r\n if (lang_2.isBlank(collection))\r\n collection = [];\r\n if (!collection_1.isListLikeIterable(collection)) {\r\n throw new exceptions_1.BaseException(\"Error trying to diff '\" + collection + \"'\");\r\n }\r\n if (this.check(collection)) {\r\n return this;\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n DefaultIterableDiffer.prototype.onDestroy = function () { };\r\n DefaultIterableDiffer.prototype.check = function (collection) {\r\n var _this = this;\r\n this._reset();\r\n var record = this._itHead;\r\n var mayBeDirty = false;\r\n var index;\r\n var item;\r\n var itemTrackBy;\r\n if (lang_2.isArray(collection)) {\r\n if (collection !== this._collection || !collection_1.ListWrapper.isImmutable(collection)) {\r\n var list = collection;\r\n this._length = collection.length;\r\n for (index = 0; index < this._length; index++) {\r\n item = list[index];\r\n itemTrackBy = this._trackByFn(index, item);\r\n if (record === null || !lang_2.looseIdentical(record.trackById, itemTrackBy)) {\r\n record = this._mismatch(record, item, itemTrackBy, index);\r\n mayBeDirty = true;\r\n }\r\n else {\r\n if (mayBeDirty) {\r\n // TODO(misko): can we limit this to duplicates only?\r\n record = this._verifyReinsertion(record, item, itemTrackBy, index);\r\n }\r\n if (!lang_2.looseIdentical(record.item, item))\r\n this._addIdentityChange(record, item);\r\n }\r\n record = record._next;\r\n }\r\n this._truncate(record);\r\n }\r\n }\r\n else {\r\n index = 0;\r\n collection_1.iterateListLike(collection, function (item) {\r\n itemTrackBy = _this._trackByFn(index, item);\r\n if (record === null || !lang_2.looseIdentical(record.trackById, itemTrackBy)) {\r\n record = _this._mismatch(record, item, itemTrackBy, index);\r\n mayBeDirty = true;\r\n }\r\n else {\r\n if (mayBeDirty) {\r\n // TODO(misko): can we limit this to duplicates only?\r\n record = _this._verifyReinsertion(record, item, itemTrackBy, index);\r\n }\r\n if (!lang_2.looseIdentical(record.item, item))\r\n _this._addIdentityChange(record, item);\r\n }\r\n record = record._next;\r\n index++;\r\n });\r\n this._length = index;\r\n this._truncate(record);\r\n }\r\n this._collection = collection;\r\n return this.isDirty;\r\n };\r\n Object.defineProperty(DefaultIterableDiffer.prototype, \"isDirty\", {\r\n /* CollectionChanges is considered dirty if it has any additions, moves, removals, or identity\r\n * changes.\r\n */\r\n get: function () {\r\n return this._additionsHead !== null || this._movesHead !== null ||\r\n this._removalsHead !== null || this._identityChangesHead !== null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Reset the state of the change objects to show no changes. This means set previousKey to\r\n * currentKey, and clear all of the queues (additions, moves, removals).\r\n * Set the previousIndexes of moved and added items to their currentIndexes\r\n * Reset the list of additions, moves and removals\r\n *\r\n * @internal\r\n */\r\n DefaultIterableDiffer.prototype._reset = function () {\r\n if (this.isDirty) {\r\n var record;\r\n var nextRecord;\r\n for (record = this._previousItHead = this._itHead; record !== null; record = record._next) {\r\n record._nextPrevious = record._next;\r\n }\r\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\r\n record.previousIndex = record.currentIndex;\r\n }\r\n this._additionsHead = this._additionsTail = null;\r\n for (record = this._movesHead; record !== null; record = nextRecord) {\r\n record.previousIndex = record.currentIndex;\r\n nextRecord = record._nextMoved;\r\n }\r\n this._movesHead = this._movesTail = null;\r\n this._removalsHead = this._removalsTail = null;\r\n this._identityChangesHead = this._identityChangesTail = null;\r\n }\r\n };\r\n /**\r\n * This is the core function which handles differences between collections.\r\n *\r\n * - `record` is the record which we saw at this position last time. If null then it is a new\r\n * item.\r\n * - `item` is the current item in the collection\r\n * - `index` is the position of the item in the collection\r\n *\r\n * @internal\r\n */\r\n DefaultIterableDiffer.prototype._mismatch = function (record, item, itemTrackBy, index) {\r\n // The previous record after which we will append the current one.\r\n var previousRecord;\r\n if (record === null) {\r\n previousRecord = this._itTail;\r\n }\r\n else {\r\n previousRecord = record._prev;\r\n // Remove the record from the collection since we know it does not match the item.\r\n this._remove(record);\r\n }\r\n // Attempt to see if we have seen the item before.\r\n record = this._linkedRecords === null ? null : this._linkedRecords.get(itemTrackBy, index);\r\n if (record !== null) {\r\n // We have seen this before, we need to move it forward in the collection.\r\n // But first we need to check if identity changed, so we can update in view if necessary\r\n if (!lang_2.looseIdentical(record.item, item))\r\n this._addIdentityChange(record, item);\r\n this._moveAfter(record, previousRecord, index);\r\n }\r\n else {\r\n // Never seen it, check evicted list.\r\n record = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy);\r\n if (record !== null) {\r\n // It is an item which we have evicted earlier: reinsert it back into the list.\r\n // But first we need to check if identity changed, so we can update in view if necessary\r\n if (!lang_2.looseIdentical(record.item, item))\r\n this._addIdentityChange(record, item);\r\n this._reinsertAfter(record, previousRecord, index);\r\n }\r\n else {\r\n // It is a new item: add it.\r\n record =\r\n this._addAfter(new CollectionChangeRecord(item, itemTrackBy), previousRecord, index);\r\n }\r\n }\r\n return record;\r\n };\r\n /**\r\n * This check is only needed if an array contains duplicates. (Short circuit of nothing dirty)\r\n *\r\n * Use case: `[a, a]` => `[b, a, a]`\r\n *\r\n * If we did not have this check then the insertion of `b` would:\r\n * 1) evict first `a`\r\n * 2) insert `b` at `0` index.\r\n * 3) leave `a` at index `1` as is. <-- this is wrong!\r\n * 3) reinsert `a` at index 2. <-- this is wrong!\r\n *\r\n * The correct behavior is:\r\n * 1) evict first `a`\r\n * 2) insert `b` at `0` index.\r\n * 3) reinsert `a` at index 1.\r\n * 3) move `a` at from `1` to `2`.\r\n *\r\n *\r\n * Double check that we have not evicted a duplicate item. We need to check if the item type may\r\n * have already been removed:\r\n * The insertion of b will evict the first 'a'. If we don't reinsert it now it will be reinserted\r\n * at the end. Which will show up as the two 'a's switching position. This is incorrect, since a\r\n * better way to think of it is as insert of 'b' rather then switch 'a' with 'b' and then add 'a'\r\n * at the end.\r\n *\r\n * @internal\r\n */\r\n DefaultIterableDiffer.prototype._verifyReinsertion = function (record, item, itemTrackBy, index) {\r\n var reinsertRecord = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy);\r\n if (reinsertRecord !== null) {\r\n record = this._reinsertAfter(reinsertRecord, record._prev, index);\r\n }\r\n else if (record.currentIndex != index) {\r\n record.currentIndex = index;\r\n this._addToMoves(record, index);\r\n }\r\n return record;\r\n };\r\n /**\r\n * Get rid of any excess {@link CollectionChangeRecord}s from the previous collection\r\n *\r\n * - `record` The first excess {@link CollectionChangeRecord}.\r\n *\r\n * @internal\r\n */\r\n DefaultIterableDiffer.prototype._truncate = function (record) {\r\n // Anything after that needs to be removed;\r\n while (record !== null) {\r\n var nextRecord = record._next;\r\n this._addToRemovals(this._unlink(record));\r\n record = nextRecord;\r\n }\r\n if (this._unlinkedRecords !== null) {\r\n this._unlinkedRecords.clear();\r\n }\r\n if (this._additionsTail !== null) {\r\n this._additionsTail._nextAdded = null;\r\n }\r\n if (this._movesTail !== null) {\r\n this._movesTail._nextMoved = null;\r\n }\r\n if (this._itTail !== null) {\r\n this._itTail._next = null;\r\n }\r\n if (this._removalsTail !== null) {\r\n this._removalsTail._nextRemoved = null;\r\n }\r\n if (this._identityChangesTail !== null) {\r\n this._identityChangesTail._nextIdentityChange = null;\r\n }\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._reinsertAfter = function (record, prevRecord, index) {\r\n if (this._unlinkedRecords !== null) {\r\n this._unlinkedRecords.remove(record);\r\n }\r\n var prev = record._prevRemoved;\r\n var next = record._nextRemoved;\r\n if (prev === null) {\r\n this._removalsHead = next;\r\n }\r\n else {\r\n prev._nextRemoved = next;\r\n }\r\n if (next === null) {\r\n this._removalsTail = prev;\r\n }\r\n else {\r\n next._prevRemoved = prev;\r\n }\r\n this._insertAfter(record, prevRecord, index);\r\n this._addToMoves(record, index);\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._moveAfter = function (record, prevRecord, index) {\r\n this._unlink(record);\r\n this._insertAfter(record, prevRecord, index);\r\n this._addToMoves(record, index);\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._addAfter = function (record, prevRecord, index) {\r\n this._insertAfter(record, prevRecord, index);\r\n if (this._additionsTail === null) {\r\n // todo(vicb)\r\n // assert(this._additionsHead === null);\r\n this._additionsTail = this._additionsHead = record;\r\n }\r\n else {\r\n // todo(vicb)\r\n // assert(_additionsTail._nextAdded === null);\r\n // assert(record._nextAdded === null);\r\n this._additionsTail = this._additionsTail._nextAdded = record;\r\n }\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._insertAfter = function (record, prevRecord, index) {\r\n // todo(vicb)\r\n // assert(record != prevRecord);\r\n // assert(record._next === null);\r\n // assert(record._prev === null);\r\n var next = prevRecord === null ? this._itHead : prevRecord._next;\r\n // todo(vicb)\r\n // assert(next != record);\r\n // assert(prevRecord != record);\r\n record._next = next;\r\n record._prev = prevRecord;\r\n if (next === null) {\r\n this._itTail = record;\r\n }\r\n else {\r\n next._prev = record;\r\n }\r\n if (prevRecord === null) {\r\n this._itHead = record;\r\n }\r\n else {\r\n prevRecord._next = record;\r\n }\r\n if (this._linkedRecords === null) {\r\n this._linkedRecords = new _DuplicateMap();\r\n }\r\n this._linkedRecords.put(record);\r\n record.currentIndex = index;\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._remove = function (record) {\r\n return this._addToRemovals(this._unlink(record));\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._unlink = function (record) {\r\n if (this._linkedRecords !== null) {\r\n this._linkedRecords.remove(record);\r\n }\r\n var prev = record._prev;\r\n var next = record._next;\r\n // todo(vicb)\r\n // assert((record._prev = null) === null);\r\n // assert((record._next = null) === null);\r\n if (prev === null) {\r\n this._itHead = next;\r\n }\r\n else {\r\n prev._next = next;\r\n }\r\n if (next === null) {\r\n this._itTail = prev;\r\n }\r\n else {\r\n next._prev = prev;\r\n }\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._addToMoves = function (record, toIndex) {\r\n // todo(vicb)\r\n // assert(record._nextMoved === null);\r\n if (record.previousIndex === toIndex) {\r\n return record;\r\n }\r\n if (this._movesTail === null) {\r\n // todo(vicb)\r\n // assert(_movesHead === null);\r\n this._movesTail = this._movesHead = record;\r\n }\r\n else {\r\n // todo(vicb)\r\n // assert(_movesTail._nextMoved === null);\r\n this._movesTail = this._movesTail._nextMoved = record;\r\n }\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._addToRemovals = function (record) {\r\n if (this._unlinkedRecords === null) {\r\n this._unlinkedRecords = new _DuplicateMap();\r\n }\r\n this._unlinkedRecords.put(record);\r\n record.currentIndex = null;\r\n record._nextRemoved = null;\r\n if (this._removalsTail === null) {\r\n // todo(vicb)\r\n // assert(_removalsHead === null);\r\n this._removalsTail = this._removalsHead = record;\r\n record._prevRemoved = null;\r\n }\r\n else {\r\n // todo(vicb)\r\n // assert(_removalsTail._nextRemoved === null);\r\n // assert(record._nextRemoved === null);\r\n record._prevRemoved = this._removalsTail;\r\n this._removalsTail = this._removalsTail._nextRemoved = record;\r\n }\r\n return record;\r\n };\r\n /** @internal */\r\n DefaultIterableDiffer.prototype._addIdentityChange = function (record, item) {\r\n record.item = item;\r\n if (this._identityChangesTail === null) {\r\n this._identityChangesTail = this._identityChangesHead = record;\r\n }\r\n else {\r\n this._identityChangesTail = this._identityChangesTail._nextIdentityChange = record;\r\n }\r\n return record;\r\n };\r\n DefaultIterableDiffer.prototype.toString = function () {\r\n var list = [];\r\n this.forEachItem(function (record) { return list.push(record); });\r\n var previous = [];\r\n this.forEachPreviousItem(function (record) { return previous.push(record); });\r\n var additions = [];\r\n this.forEachAddedItem(function (record) { return additions.push(record); });\r\n var moves = [];\r\n this.forEachMovedItem(function (record) { return moves.push(record); });\r\n var removals = [];\r\n this.forEachRemovedItem(function (record) { return removals.push(record); });\r\n var identityChanges = [];\r\n this.forEachIdentityChange(function (record) { return identityChanges.push(record); });\r\n return \"collection: \" + list.join(', ') + \"\\n\" + \"previous: \" + previous.join(', ') + \"\\n\" +\r\n \"additions: \" + additions.join(', ') + \"\\n\" + \"moves: \" + moves.join(', ') + \"\\n\" +\r\n \"removals: \" + removals.join(', ') + \"\\n\" + \"identityChanges: \" +\r\n identityChanges.join(', ') + \"\\n\";\r\n };\r\n return DefaultIterableDiffer;\r\n})();\r\nexports.DefaultIterableDiffer = DefaultIterableDiffer;\r\nvar CollectionChangeRecord = (function () {\r\n function CollectionChangeRecord(item, trackById) {\r\n this.item = item;\r\n this.trackById = trackById;\r\n this.currentIndex = null;\r\n this.previousIndex = null;\r\n /** @internal */\r\n this._nextPrevious = null;\r\n /** @internal */\r\n this._prev = null;\r\n /** @internal */\r\n this._next = null;\r\n /** @internal */\r\n this._prevDup = null;\r\n /** @internal */\r\n this._nextDup = null;\r\n /** @internal */\r\n this._prevRemoved = null;\r\n /** @internal */\r\n this._nextRemoved = null;\r\n /** @internal */\r\n this._nextAdded = null;\r\n /** @internal */\r\n this._nextMoved = null;\r\n /** @internal */\r\n this._nextIdentityChange = null;\r\n }\r\n CollectionChangeRecord.prototype.toString = function () {\r\n return this.previousIndex === this.currentIndex ?\r\n lang_2.stringify(this.item) :\r\n lang_2.stringify(this.item) + '[' + lang_2.stringify(this.previousIndex) + '->' +\r\n lang_2.stringify(this.currentIndex) + ']';\r\n };\r\n return CollectionChangeRecord;\r\n})();\r\nexports.CollectionChangeRecord = CollectionChangeRecord;\r\n// A linked list of CollectionChangeRecords with the same CollectionChangeRecord.item\r\nvar _DuplicateItemRecordList = (function () {\r\n function _DuplicateItemRecordList() {\r\n /** @internal */\r\n this._head = null;\r\n /** @internal */\r\n this._tail = null;\r\n }\r\n /**\r\n * Append the record to the list of duplicates.\r\n *\r\n * Note: by design all records in the list of duplicates hold the same value in record.item.\r\n */\r\n _DuplicateItemRecordList.prototype.add = function (record) {\r\n if (this._head === null) {\r\n this._head = this._tail = record;\r\n record._nextDup = null;\r\n record._prevDup = null;\r\n }\r\n else {\r\n // todo(vicb)\r\n // assert(record.item == _head.item ||\r\n // record.item is num && record.item.isNaN && _head.item is num && _head.item.isNaN);\r\n this._tail._nextDup = record;\r\n record._prevDup = this._tail;\r\n record._nextDup = null;\r\n this._tail = record;\r\n }\r\n };\r\n // Returns a CollectionChangeRecord having CollectionChangeRecord.trackById == trackById and\r\n // CollectionChangeRecord.currentIndex >= afterIndex\r\n _DuplicateItemRecordList.prototype.get = function (trackById, afterIndex) {\r\n var record;\r\n for (record = this._head; record !== null; record = record._nextDup) {\r\n if ((afterIndex === null || afterIndex < record.currentIndex) &&\r\n lang_2.looseIdentical(record.trackById, trackById)) {\r\n return record;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Remove one {@link CollectionChangeRecord} from the list of duplicates.\r\n *\r\n * Returns whether the list of duplicates is empty.\r\n */\r\n _DuplicateItemRecordList.prototype.remove = function (record) {\r\n // todo(vicb)\r\n // assert(() {\r\n // // verify that the record being removed is in the list.\r\n // for (CollectionChangeRecord cursor = _head; cursor != null; cursor = cursor._nextDup) {\r\n // if (identical(cursor, record)) return true;\r\n // }\r\n // return false;\r\n //});\r\n var prev = record._prevDup;\r\n var next = record._nextDup;\r\n if (prev === null) {\r\n this._head = next;\r\n }\r\n else {\r\n prev._nextDup = next;\r\n }\r\n if (next === null) {\r\n this._tail = prev;\r\n }\r\n else {\r\n next._prevDup = prev;\r\n }\r\n return this._head === null;\r\n };\r\n return _DuplicateItemRecordList;\r\n})();\r\nvar _DuplicateMap = (function () {\r\n function _DuplicateMap() {\r\n this.map = new Map();\r\n }\r\n _DuplicateMap.prototype.put = function (record) {\r\n // todo(vicb) handle corner cases\r\n var key = lang_2.getMapKey(record.trackById);\r\n var duplicates = this.map.get(key);\r\n if (!lang_2.isPresent(duplicates)) {\r\n duplicates = new _DuplicateItemRecordList();\r\n this.map.set(key, duplicates);\r\n }\r\n duplicates.add(record);\r\n };\r\n /**\r\n * Retrieve the `value` using key. Because the CollectionChangeRecord value may be one which we\r\n * have already iterated over, we use the afterIndex to pretend it is not there.\r\n *\r\n * Use case: `[a, b, c, a, a]` if we are at index `3` which is the second `a` then asking if we\r\n * have any more `a`s needs to return the last `a` not the first or second.\r\n */\r\n _DuplicateMap.prototype.get = function (trackById, afterIndex) {\r\n if (afterIndex === void 0) { afterIndex = null; }\r\n var key = lang_2.getMapKey(trackById);\r\n var recordList = this.map.get(key);\r\n return lang_2.isBlank(recordList) ? null : recordList.get(trackById, afterIndex);\r\n };\r\n /**\r\n * Removes a {@link CollectionChangeRecord} from the list of duplicates.\r\n *\r\n * The list of duplicates also is removed from the map if it gets empty.\r\n */\r\n _DuplicateMap.prototype.remove = function (record) {\r\n var key = lang_2.getMapKey(record.trackById);\r\n // todo(vicb)\r\n // assert(this.map.containsKey(key));\r\n var recordList = this.map.get(key);\r\n // Remove the list of duplicates when it gets empty\r\n if (recordList.remove(record)) {\r\n this.map.delete(key);\r\n }\r\n return record;\r\n };\r\n Object.defineProperty(_DuplicateMap.prototype, \"isEmpty\", {\r\n get: function () { return this.map.size === 0; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n _DuplicateMap.prototype.clear = function () { this.map.clear(); };\r\n _DuplicateMap.prototype.toString = function () { return '_DuplicateMap(' + lang_2.stringify(this.map) + ')'; };\r\n return _DuplicateMap;\r\n})();\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF9pdGVyYWJsZV9kaWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2RpZmZlcnMvZGVmYXVsdF9pdGVyYWJsZV9kaWZmZXIudHMiXSwibmFtZXMiOlsiRGVmYXVsdEl0ZXJhYmxlRGlmZmVyRmFjdG9yeSIsIkRlZmF1bHRJdGVyYWJsZURpZmZlckZhY3RvcnkuY29uc3RydWN0b3IiLCJEZWZhdWx0SXRlcmFibGVEaWZmZXJGYWN0b3J5LnN1cHBvcnRzIiwiRGVmYXVsdEl0ZXJhYmxlRGlmZmVyRmFjdG9yeS5jcmVhdGUiLCJEZWZhdWx0SXRlcmFibGVEaWZmZXIiLCJEZWZhdWx0SXRlcmFibGVEaWZmZXIuY29uc3RydWN0b3IiLCJEZWZhdWx0SXRlcmFibGVEaWZmZXIuY29sbGVjdGlvbiIsIkRlZmF1bHRJdGVyYWJsZURpZmZlci5sZW5ndGgiLCJEZWZhdWx0SXRlcmFibGVEaWZmZXIuZm9yRWFjaEl0ZW0iLCJEZWZhdWx0SXRlcmFibGVEaWZmZXIuZm9yRWFjaFByZXZpb3VzSXRlbSIsIkRlZmF1bHRJdGVyYWJsZURpZmZlci5mb3JFYWNoQWRkZWRJdGVtIiwiRGVmYXVsdEl0ZXJhYmxlRGlmZmVyLmZvckVhY2hNb3ZlZEl0ZW0iLCJEZWZhdWx0SXRlcmFibGVEaWZmZXIuZm9yRWFjaFJlbW92ZWRJdGVtIiwiRGVmYXVsdEl0ZXJhYmxlRGlmZmVyLmZvckVhY2hJZGVudGl0eUNoYW5nZSIsIkRlZmF1bHRJdGVyYWJsZURpZmZlci5kaWZmIiwiRGVmYXVsdEl0ZXJhYmxlRGlmZmVyLm9uRGVzdHJveSIsIkRlZmF1bHRJdGVyYWJsZURpZmZlci5jaGVjayIsIkRlZmF1bHRJdGVyYWJsZURpZmZlci5pc0RpcnR5IiwiRGVmYXVsdEl0ZXJhYmxlRGlmZmVyLl9yZXNldCIsIkRlZmF1bHRJdGVyYWJsZURpZmZlci5fbWlzbWF0Y2giLCJEZWZhdWx0SXRlcmFibGVEaWZmZXIuX3ZlcmlmeVJlaW5zZXJ0aW9uIiwiRGVmYXVsdEl0ZXJhYmxlRGlmZmVyLl90cnVuY2F0ZSIsIkRlZmF1bHRJdGVyYWJsZURpZmZlci5fcmVpbnNlcnRBZnRlciIsIkRlZmF1bHRJdGVyYWJsZURpZmZlci5fbW92ZUFmdGVyIiwiRGVmYXVsdEl0ZXJhYmxlRGlmZmVyLl9hZGRBZnRlciIsIkRlZmF1bHRJdGVyYWJsZURpZmZlci5faW5zZXJ0QWZ0ZXIiLCJEZWZhdWx0SXRlcmFibGVEaWZmZXIuX3JlbW92ZSIsIkRlZmF1bHRJdGVyYWJsZURpZmZlci5fdW5saW5rIiwiRGVmYXVsdEl0ZXJhYmxlRGlmZmVyLl9hZGRUb01vdmVzIiwiRGVmYXVsdEl0ZXJhYmxlRGlmZmVyLl9hZGRUb1JlbW92YWxzIiwiRGVmYXVsdEl0ZXJhYmxlRGlmZmVyLl9hZGRJZGVudGl0eUNoYW5nZSIsIkRlZmF1bHRJdGVyYWJsZURpZmZlci50b1N0cmluZyIsIkNvbGxlY3Rpb25DaGFuZ2VSZWNvcmQiLCJDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkLmNvbnN0cnVjdG9yIiwiQ29sbGVjdGlvbkNoYW5nZVJlY29yZC50b1N0cmluZyIsIl9EdXBsaWNhdGVJdGVtUmVjb3JkTGlzdCIsIl9EdXBsaWNhdGVJdGVtUmVjb3JkTGlzdC5jb25zdHJ1Y3RvciIsIl9EdXBsaWNhdGVJdGVtUmVjb3JkTGlzdC5hZGQiLCJfRHVwbGljYXRlSXRlbVJlY29yZExpc3QuZ2V0IiwiX0R1cGxpY2F0ZUl0ZW1SZWNvcmRMaXN0LnJlbW92ZSIsIl9EdXBsaWNhdGVNYXAiLCJfRHVwbGljYXRlTWFwLmNvbnN0cnVjdG9yIiwiX0R1cGxpY2F0ZU1hcC5wdXQiLCJfRHVwbGljYXRlTWFwLmdldCIsIl9EdXBsaWNhdGVNYXAucmVtb3ZlIiwiX0R1cGxpY2F0ZU1hcC5pc0VtcHR5IiwiX0R1cGxpY2F0ZU1hcC5jbGVhciIsIl9EdXBsaWNhdGVNYXAudG9TdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHFCQUFvQiwwQkFBMEIsQ0FBQyxDQUFB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QSxDQUFDQTtRQUN0Q0EsYUFBYUE7UUFDYkEscUNBQXFDQTtRQUNyQ0EsSUFBSUEsVUFBVUEsR0FBNkJBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLEdBQUdBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBO1FBQzdEQSxtREFBbURBO1FBQ25EQSxFQUFFQSxDQUFDQSxDQUFDQSxVQUFVQSxDQUFDQSxNQUFNQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUM5QkEsSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0E7UUFDdkJBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBO0lBQ2hCQSxDQUFDQTtJQUVESixzQkFBSUEsa0NBQU9BO2FBQVhBLGNBQXlCSyxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFMO0lBRXREQSw2QkFBS0EsR0FBTEEsY0FBVU0sSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsS0FBS0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFN0JOLGdDQUFRQSxHQUFSQSxjQUFxQk8sTUFBTUEsQ0FBQ0EsZ0JBQWdCQSxHQUFHQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDN0VQLG9CQUFDQTtBQUFEQSxDQUFDQSxBQW5ERCxJQW1EQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09OU1R9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge2lzTGlzdExpa2VJdGVyYWJsZSwgaXRlcmF0ZUxpc3RMaWtlLCBMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxuaW1wb3J0IHtcbiAgaXNCbGFuayxcbiAgaXNQcmVzZW50LFxuICBzdHJpbmdpZnksXG4gIGdldE1hcEtleSxcbiAgbG9vc2VJZGVudGljYWwsXG4gIGlzQXJyYXlcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZn0gZnJvbSAnLi4vY2hhbmdlX2RldGVjdG9yX3JlZic7XG5pbXBvcnQge0l0ZXJhYmxlRGlmZmVyLCBJdGVyYWJsZURpZmZlckZhY3RvcnksIFRyYWNrQnlGbn0gZnJvbSAnLi4vZGlmZmVycy9pdGVyYWJsZV9kaWZmZXJzJztcblxuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBEZWZhdWx0SXRlcmFibGVEaWZmZXJGYWN0b3J5IGltcGxlbWVudHMgSXRlcmFibGVEaWZmZXJGYWN0b3J5IHtcbiAgc3VwcG9ydHMob2JqOiBPYmplY3QpOiBib29sZWFuIHsgcmV0dXJuIGlzTGlzdExpa2VJdGVyYWJsZShvYmopOyB9XG4gIGNyZWF0ZShjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHRyYWNrQnlGbj86IFRyYWNrQnlGbik6IERlZmF1bHRJdGVyYWJsZURpZmZlciB7XG4gICAgcmV0dXJuIG5ldyBEZWZhdWx0SXRlcmFibGVEaWZmZXIodHJhY2tCeUZuKTtcbiAgfVxufVxuXG52YXIgdHJhY2tCeUlkZW50aXR5ID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbTtcblxuZXhwb3J0IGNsYXNzIERlZmF1bHRJdGVyYWJsZURpZmZlciBpbXBsZW1lbnRzIEl0ZXJhYmxlRGlmZmVyIHtcbiAgcHJpdmF0ZSBfbGVuZ3RoOiBudW1iZXIgPSBudWxsO1xuICBwcml2YXRlIF9jb2xsZWN0aW9uID0gbnVsbDtcbiAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIHVzZWQgcmVjb3JkcyBhdCBhbnkgcG9pbnQgaW4gdGltZSAoZHVyaW5nICYgYWNyb3NzIGBfY2hlY2soKWAgY2FsbHMpXG4gIHByaXZhdGUgX2xpbmtlZFJlY29yZHM6IF9EdXBsaWNhdGVNYXAgPSBudWxsO1xuICAvLyBLZWVwcyB0cmFjayBvZiB0aGUgcmVtb3ZlZCByZWNvcmRzIGF0IGFueSBwb2ludCBpbiB0aW1lIGR1cmluZyBgX2NoZWNrKClgIGNhbGxzLlxuICBwcml2YXRlIF91bmxpbmtlZFJlY29yZHM6IF9EdXBsaWNhdGVNYXAgPSBudWxsO1xuICBwcml2YXRlIF9wcmV2aW91c0l0SGVhZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIHByaXZhdGUgX2l0SGVhZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIHByaXZhdGUgX2l0VGFpbDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIHByaXZhdGUgX2FkZGl0aW9uc0hlYWQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuICBwcml2YXRlIF9hZGRpdGlvbnNUYWlsOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgcHJpdmF0ZSBfbW92ZXNIZWFkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgcHJpdmF0ZSBfbW92ZXNUYWlsOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVtb3ZhbHNIZWFkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVtb3ZhbHNUYWlsOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgLy8gS2VlcHMgdHJhY2sgb2YgcmVjb3JkcyB3aGVyZSBjdXN0b20gdHJhY2sgYnkgaXMgdGhlIHNhbWUsIGJ1dCBpdGVtIGlkZW50aXR5IGhhcyBjaGFuZ2VkXG4gIHByaXZhdGUgX2lkZW50aXR5Q2hhbmdlc0hlYWQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuICBwcml2YXRlIF9pZGVudGl0eUNoYW5nZXNUYWlsOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF90cmFja0J5Rm4/OiBUcmFja0J5Rm4pIHtcbiAgICB0aGlzLl90cmFja0J5Rm4gPSBpc1ByZXNlbnQodGhpcy5fdHJhY2tCeUZuKSA/IHRoaXMuX3RyYWNrQnlGbiA6IHRyYWNrQnlJZGVudGl0eTtcbiAgfVxuXG4gIGdldCBjb2xsZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fY29sbGVjdGlvbjsgfVxuXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX2xlbmd0aDsgfVxuXG4gIGZvckVhY2hJdGVtKGZuOiBGdW5jdGlvbikge1xuICAgIHZhciByZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQ7XG4gICAgZm9yIChyZWNvcmQgPSB0aGlzLl9pdEhlYWQ7IHJlY29yZCAhPT0gbnVsbDsgcmVjb3JkID0gcmVjb3JkLl9uZXh0KSB7XG4gICAgICBmbihyZWNvcmQpO1xuICAgIH1cbiAgfVxuXG4gIGZvckVhY2hQcmV2aW91c0l0ZW0oZm46IEZ1bmN0aW9uKSB7XG4gICAgdmFyIHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZDtcbiAgICBmb3IgKHJlY29yZCA9IHRoaXMuX3ByZXZpb3VzSXRIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dFByZXZpb3VzKSB7XG4gICAgICBmbihyZWNvcmQpO1xuICAgIH1cbiAgfVxuXG4gIGZvckVhY2hBZGRlZEl0ZW0oZm46IEZ1bmN0aW9uKSB7XG4gICAgdmFyIHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZDtcbiAgICBmb3IgKHJlY29yZCA9IHRoaXMuX2FkZGl0aW9uc0hlYWQ7IHJlY29yZCAhPT0gbnVsbDsgcmVjb3JkID0gcmVjb3JkLl9uZXh0QWRkZWQpIHtcbiAgICAgIGZuKHJlY29yZCk7XG4gICAgfVxuICB9XG5cbiAgZm9yRWFjaE1vdmVkSXRlbShmbjogRnVuY3Rpb24pIHtcbiAgICB2YXIgcmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkO1xuICAgIGZvciAocmVjb3JkID0gdGhpcy5fbW92ZXNIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dE1vdmVkKSB7XG4gICAgICBmbihyZWNvcmQpO1xuICAgIH1cbiAgfVxuXG4gIGZvckVhY2hSZW1vdmVkSXRlbShmbjogRnVuY3Rpb24pIHtcbiAgICB2YXIgcmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkO1xuICAgIGZvciAocmVjb3JkID0gdGhpcy5fcmVtb3ZhbHNIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dFJlbW92ZWQpIHtcbiAgICAgIGZuKHJlY29yZCk7XG4gICAgfVxuICB9XG5cbiAgZm9yRWFjaElkZW50aXR5Q2hhbmdlKGZuOiBGdW5jdGlvbikge1xuICAgIHZhciByZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQ7XG4gICAgZm9yIChyZWNvcmQgPSB0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dElkZW50aXR5Q2hhbmdlKSB7XG4gICAgICBmbihyZWNvcmQpO1xuICAgIH1cbiAgfVxuXG4gIGRpZmYoY29sbGVjdGlvbjogYW55KTogRGVmYXVsdEl0ZXJhYmxlRGlmZmVyIHtcbiAgICBpZiAoaXNCbGFuayhjb2xsZWN0aW9uKSkgY29sbGVjdGlvbiA9IFtdO1xuICAgIGlmICghaXNMaXN0TGlrZUl0ZXJhYmxlKGNvbGxlY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgRXJyb3IgdHJ5aW5nIHRvIGRpZmYgJyR7Y29sbGVjdGlvbn0nYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2hlY2soY29sbGVjdGlvbikpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBvbkRlc3Ryb3koKSB7fVxuXG4gIGNoZWNrKGNvbGxlY3Rpb246IGFueSk6IGJvb2xlYW4ge1xuICAgIHRoaXMuX3Jlc2V0KCk7XG5cbiAgICB2YXIgcmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gdGhpcy5faXRIZWFkO1xuICAgIHZhciBtYXlCZURpcnR5OiBib29sZWFuID0gZmFsc2U7XG4gICAgdmFyIGluZGV4OiBudW1iZXI7XG4gICAgdmFyIGl0ZW07XG4gICAgdmFyIGl0ZW1UcmFja0J5O1xuICAgIGlmIChpc0FycmF5KGNvbGxlY3Rpb24pKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiAhPT0gdGhpcy5fY29sbGVjdGlvbiB8fCAhTGlzdFdyYXBwZXIuaXNJbW11dGFibGUoY29sbGVjdGlvbikpIHtcbiAgICAgICAgdmFyIGxpc3QgPSBjb2xsZWN0aW9uO1xuICAgICAgICB0aGlzLl9sZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcblxuICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLl9sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpdGVtID0gbGlzdFtpbmRleF07XG4gICAgICAgICAgaXRlbVRyYWNrQnkgPSB0aGlzLl90cmFja0J5Rm4oaW5kZXgsIGl0ZW0pO1xuICAgICAgICAgIGlmIChyZWNvcmQgPT09IG51bGwgfHwgIWxvb3NlSWRlbnRpY2FsKHJlY29yZC50cmFja0J5SWQsIGl0ZW1UcmFja0J5KSkge1xuICAgICAgICAgICAgcmVjb3JkID0gdGhpcy5fbWlzbWF0Y2gocmVjb3JkLCBpdGVtLCBpdGVtVHJhY2tCeSwgaW5kZXgpO1xuICAgICAgICAgICAgbWF5QmVEaXJ0eSA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChtYXlCZURpcnR5KSB7XG4gICAgICAgICAgICAgIC8vIFRPRE8obWlza28pOiBjYW4gd2UgbGltaXQgdGhpcyB0byBkdXBsaWNhdGVzIG9ubHk/XG4gICAgICAgICAgICAgIHJlY29yZCA9IHRoaXMuX3ZlcmlmeVJlaW5zZXJ0aW9uKHJlY29yZCwgaXRlbSwgaXRlbVRyYWNrQnksIGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9vc2VJZGVudGljYWwocmVjb3JkLml0ZW0sIGl0ZW0pKSB0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShyZWNvcmQsIGl0ZW0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlY29yZCA9IHJlY29yZC5fbmV4dDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90cnVuY2F0ZShyZWNvcmQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IDA7XG4gICAgICBpdGVyYXRlTGlzdExpa2UoY29sbGVjdGlvbiwgKGl0ZW0pID0+IHtcbiAgICAgICAgaXRlbVRyYWNrQnkgPSB0aGlzLl90cmFja0J5Rm4oaW5kZXgsIGl0ZW0pO1xuICAgICAgICBpZiAocmVjb3JkID09PSBudWxsIHx8ICFsb29zZUlkZW50aWNhbChyZWNvcmQudHJhY2tCeUlkLCBpdGVtVHJhY2tCeSkpIHtcbiAgICAgICAgICByZWNvcmQgPSB0aGlzLl9taXNtYXRjaChyZWNvcmQsIGl0ZW0sIGl0ZW1UcmFja0J5LCBpbmRleCk7XG4gICAgICAgICAgbWF5QmVEaXJ0eSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKG1heUJlRGlydHkpIHtcbiAgICAgICAgICAgIC8vIFRPRE8obWlza28pOiBjYW4gd2UgbGltaXQgdGhpcyB0byBkdXBsaWNhdGVzIG9ubHk/XG4gICAgICAgICAgICByZWNvcmQgPSB0aGlzLl92ZXJpZnlSZWluc2VydGlvbihyZWNvcmQsIGl0ZW0sIGl0ZW1UcmFja0J5LCBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghbG9vc2VJZGVudGljYWwocmVjb3JkLml0ZW0sIGl0ZW0pKSB0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShyZWNvcmQsIGl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJlY29yZCA9IHJlY29yZC5fbmV4dDtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fbGVuZ3RoID0gaW5kZXg7XG4gICAgICB0aGlzLl90cnVuY2F0ZShyZWNvcmQpO1xuICAgIH1cblxuICAgIHRoaXMuX2NvbGxlY3Rpb24gPSBjb2xsZWN0aW9uO1xuICAgIHJldHVybiB0aGlzLmlzRGlydHk7XG4gIH1cblxuICAvKiBDb2xsZWN0aW9uQ2hhbmdlcyBpcyBjb25zaWRlcmVkIGRpcnR5IGlmIGl0IGhhcyBhbnkgYWRkaXRpb25zLCBtb3ZlcywgcmVtb3ZhbHMsIG9yIGlkZW50aXR5XG4gICAqIGNoYW5nZXMuXG4gICAqL1xuICBnZXQgaXNEaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkaXRpb25zSGVhZCAhPT0gbnVsbCB8fCB0aGlzLl9tb3Zlc0hlYWQgIT09IG51bGwgfHxcbiAgICAgICAgICAgdGhpcy5fcmVtb3ZhbHNIZWFkICE9PSBudWxsIHx8IHRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQgIT09IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhlIHN0YXRlIG9mIHRoZSBjaGFuZ2Ugb2JqZWN0cyB0byBzaG93IG5vIGNoYW5nZXMuIFRoaXMgbWVhbnMgc2V0IHByZXZpb3VzS2V5IHRvXG4gICAqIGN1cnJlbnRLZXksIGFuZCBjbGVhciBhbGwgb2YgdGhlIHF1ZXVlcyAoYWRkaXRpb25zLCBtb3ZlcywgcmVtb3ZhbHMpLlxuICAgKiBTZXQgdGhlIHByZXZpb3VzSW5kZXhlcyBvZiBtb3ZlZCBhbmQgYWRkZWQgaXRlbXMgdG8gdGhlaXIgY3VycmVudEluZGV4ZXNcbiAgICogUmVzZXQgdGhlIGxpc3Qgb2YgYWRkaXRpb25zLCBtb3ZlcyBhbmQgcmVtb3ZhbHNcbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfcmVzZXQoKSB7XG4gICAgaWYgKHRoaXMuaXNEaXJ0eSkge1xuICAgICAgdmFyIHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZDtcbiAgICAgIHZhciBuZXh0UmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkO1xuXG4gICAgICBmb3IgKHJlY29yZCA9IHRoaXMuX3ByZXZpb3VzSXRIZWFkID0gdGhpcy5faXRIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dCkge1xuICAgICAgICByZWNvcmQuX25leHRQcmV2aW91cyA9IHJlY29yZC5fbmV4dDtcbiAgICAgIH1cblxuICAgICAgZm9yIChyZWNvcmQgPSB0aGlzLl9hZGRpdGlvbnNIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dEFkZGVkKSB7XG4gICAgICAgIHJlY29yZC5wcmV2aW91c0luZGV4ID0gcmVjb3JkLmN1cnJlbnRJbmRleDtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2FkZGl0aW9uc0hlYWQgPSB0aGlzLl9hZGRpdGlvbnNUYWlsID0gbnVsbDtcblxuICAgICAgZm9yIChyZWNvcmQgPSB0aGlzLl9tb3Zlc0hlYWQ7IHJlY29yZCAhPT0gbnVsbDsgcmVjb3JkID0gbmV4dFJlY29yZCkge1xuICAgICAgICByZWNvcmQucHJldmlvdXNJbmRleCA9IHJlY29yZC5jdXJyZW50SW5kZXg7XG4gICAgICAgIG5leHRSZWNvcmQgPSByZWNvcmQuX25leHRNb3ZlZDtcbiAgICAgIH1cbiAgICAgIHRoaXMuX21vdmVzSGVhZCA9IHRoaXMuX21vdmVzVGFpbCA9IG51bGw7XG4gICAgICB0aGlzLl9yZW1vdmFsc0hlYWQgPSB0aGlzLl9yZW1vdmFsc1RhaWwgPSBudWxsO1xuICAgICAgdGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZCA9IHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwgPSBudWxsO1xuXG4gICAgICAvLyB0b2RvKHZpY2IpIHdoZW4gYXNzZXJ0IGdldHMgc3VwcG9ydGVkXG4gICAgICAvLyBhc3NlcnQoIXRoaXMuaXNEaXJ0eSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIGNvcmUgZnVuY3Rpb24gd2hpY2ggaGFuZGxlcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIGNvbGxlY3Rpb25zLlxuICAgKlxuICAgKiAtIGByZWNvcmRgIGlzIHRoZSByZWNvcmQgd2hpY2ggd2Ugc2F3IGF0IHRoaXMgcG9zaXRpb24gbGFzdCB0aW1lLiBJZiBudWxsIHRoZW4gaXQgaXMgYSBuZXdcbiAgICogICBpdGVtLlxuICAgKiAtIGBpdGVtYCBpcyB0aGUgY3VycmVudCBpdGVtIGluIHRoZSBjb2xsZWN0aW9uXG4gICAqIC0gYGluZGV4YCBpcyB0aGUgcG9zaXRpb24gb2YgdGhlIGl0ZW0gaW4gdGhlIGNvbGxlY3Rpb25cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfbWlzbWF0Y2gocmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkLCBpdGVtOiBhbnksIGl0ZW1UcmFja0J5OiBhbnksXG4gICAgICAgICAgICBpbmRleDogbnVtYmVyKTogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCB7XG4gICAgLy8gVGhlIHByZXZpb3VzIHJlY29yZCBhZnRlciB3aGljaCB3ZSB3aWxsIGFwcGVuZCB0aGUgY3VycmVudCBvbmUuXG4gICAgdmFyIHByZXZpb3VzUmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkO1xuXG4gICAgaWYgKHJlY29yZCA9PT0gbnVsbCkge1xuICAgICAgcHJldmlvdXNSZWNvcmQgPSB0aGlzLl9pdFRhaWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZXZpb3VzUmVjb3JkID0gcmVjb3JkLl9wcmV2O1xuICAgICAgLy8gUmVtb3ZlIHRoZSByZWNvcmQgZnJvbSB0aGUgY29sbGVjdGlvbiBzaW5jZSB3ZSBrbm93IGl0IGRvZXMgbm90IG1hdGNoIHRoZSBpdGVtLlxuICAgICAgdGhpcy5fcmVtb3ZlKHJlY29yZCk7XG4gICAgfVxuXG4gICAgLy8gQXR0ZW1wdCB0byBzZWUgaWYgd2UgaGF2ZSBzZWVuIHRoZSBpdGVtIGJlZm9yZS5cbiAgICByZWNvcmQgPSB0aGlzLl9saW5rZWRSZWNvcmRzID09PSBudWxsID8gbnVsbCA6IHRoaXMuX2xpbmtlZFJlY29yZHMuZ2V0KGl0ZW1UcmFja0J5LCBpbmRleCk7XG4gICAgaWYgKHJlY29yZCAhPT0gbnVsbCkge1xuICAgICAgLy8gV2UgaGF2ZSBzZWVuIHRoaXMgYmVmb3JlLCB3ZSBuZWVkIHRvIG1vdmUgaXQgZm9yd2FyZCBpbiB0aGUgY29sbGVjdGlvbi5cbiAgICAgIC8vIEJ1dCBmaXJzdCB3ZSBuZWVkIHRvIGNoZWNrIGlmIGlkZW50aXR5IGNoYW5nZWQsIHNvIHdlIGNhbiB1cGRhdGUgaW4gdmlldyBpZiBuZWNlc3NhcnlcbiAgICAgIGlmICghbG9vc2VJZGVudGljYWwocmVjb3JkLml0ZW0sIGl0ZW0pKSB0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShyZWNvcmQsIGl0ZW0pO1xuXG4gICAgICB0aGlzLl9tb3ZlQWZ0ZXIocmVjb3JkLCBwcmV2aW91c1JlY29yZCwgaW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOZXZlciBzZWVuIGl0LCBjaGVjayBldmljdGVkIGxpc3QuXG4gICAgICByZWNvcmQgPSB0aGlzLl91bmxpbmtlZFJlY29yZHMgPT09IG51bGwgPyBudWxsIDogdGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldChpdGVtVHJhY2tCeSk7XG4gICAgICBpZiAocmVjb3JkICE9PSBudWxsKSB7XG4gICAgICAgIC8vIEl0IGlzIGFuIGl0ZW0gd2hpY2ggd2UgaGF2ZSBldmljdGVkIGVhcmxpZXI6IHJlaW5zZXJ0IGl0IGJhY2sgaW50byB0aGUgbGlzdC5cbiAgICAgICAgLy8gQnV0IGZpcnN0IHdlIG5lZWQgdG8gY2hlY2sgaWYgaWRlbnRpdHkgY2hhbmdlZCwgc28gd2UgY2FuIHVwZGF0ZSBpbiB2aWV3IGlmIG5lY2Vzc2FyeVxuICAgICAgICBpZiAoIWxvb3NlSWRlbnRpY2FsKHJlY29yZC5pdGVtLCBpdGVtKSkgdGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UocmVjb3JkLCBpdGVtKTtcblxuICAgICAgICB0aGlzLl9yZWluc2VydEFmdGVyKHJlY29yZCwgcHJldmlvdXNSZWNvcmQsIGluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEl0IGlzIGEgbmV3IGl0ZW06IGFkZCBpdC5cbiAgICAgICAgcmVjb3JkID1cbiAgICAgICAgICAgIHRoaXMuX2FkZEFmdGVyKG5ldyBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkKGl0ZW0sIGl0ZW1UcmFja0J5KSwgcHJldmlvdXNSZWNvcmQsIGluZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGNoZWNrIGlzIG9ubHkgbmVlZGVkIGlmIGFuIGFycmF5IGNvbnRhaW5zIGR1cGxpY2F0ZXMuIChTaG9ydCBjaXJjdWl0IG9mIG5vdGhpbmcgZGlydHkpXG4gICAqXG4gICAqIFVzZSBjYXNlOiBgW2EsIGFdYCA9PiBgW2IsIGEsIGFdYFxuICAgKlxuICAgKiBJZiB3ZSBkaWQgbm90IGhhdmUgdGhpcyBjaGVjayB0aGVuIHRoZSBpbnNlcnRpb24gb2YgYGJgIHdvdWxkOlxuICAgKiAgIDEpIGV2aWN0IGZpcnN0IGBhYFxuICAgKiAgIDIpIGluc2VydCBgYmAgYXQgYDBgIGluZGV4LlxuICAgKiAgIDMpIGxlYXZlIGBhYCBhdCBpbmRleCBgMWAgYXMgaXMuIDwtLSB0aGlzIGlzIHdyb25nIVxuICAgKiAgIDMpIHJlaW5zZXJ0IGBhYCBhdCBpbmRleCAyLiA8LS0gdGhpcyBpcyB3cm9uZyFcbiAgICpcbiAgICogVGhlIGNvcnJlY3QgYmVoYXZpb3IgaXM6XG4gICAqICAgMSkgZXZpY3QgZmlyc3QgYGFgXG4gICAqICAgMikgaW5zZXJ0IGBiYCBhdCBgMGAgaW5kZXguXG4gICAqICAgMykgcmVpbnNlcnQgYGFgIGF0IGluZGV4IDEuXG4gICAqICAgMykgbW92ZSBgYWAgYXQgZnJvbSBgMWAgdG8gYDJgLlxuICAgKlxuICAgKlxuICAgKiBEb3VibGUgY2hlY2sgdGhhdCB3ZSBoYXZlIG5vdCBldmljdGVkIGEgZHVwbGljYXRlIGl0ZW0uIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGl0ZW0gdHlwZSBtYXlcbiAgICogaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZDpcbiAgICogVGhlIGluc2VydGlvbiBvZiBiIHdpbGwgZXZpY3QgdGhlIGZpcnN0ICdhJy4gSWYgd2UgZG9uJ3QgcmVpbnNlcnQgaXQgbm93IGl0IHdpbGwgYmUgcmVpbnNlcnRlZFxuICAgKiBhdCB0aGUgZW5kLiBXaGljaCB3aWxsIHNob3cgdXAgYXMgdGhlIHR3byAnYSdzIHN3aXRjaGluZyBwb3NpdGlvbi4gVGhpcyBpcyBpbmNvcnJlY3QsIHNpbmNlIGFcbiAgICogYmV0dGVyIHdheSB0byB0aGluayBvZiBpdCBpcyBhcyBpbnNlcnQgb2YgJ2InIHJhdGhlciB0aGVuIHN3aXRjaCAnYScgd2l0aCAnYicgYW5kIHRoZW4gYWRkICdhJ1xuICAgKiBhdCB0aGUgZW5kLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF92ZXJpZnlSZWluc2VydGlvbihyZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQsIGl0ZW06IGFueSwgaXRlbVRyYWNrQnk6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBudW1iZXIpOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkIHtcbiAgICB2YXIgcmVpbnNlcnRSZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPVxuICAgICAgICB0aGlzLl91bmxpbmtlZFJlY29yZHMgPT09IG51bGwgPyBudWxsIDogdGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldChpdGVtVHJhY2tCeSk7XG4gICAgaWYgKHJlaW5zZXJ0UmVjb3JkICE9PSBudWxsKSB7XG4gICAgICByZWNvcmQgPSB0aGlzLl9yZWluc2VydEFmdGVyKHJlaW5zZXJ0UmVjb3JkLCByZWNvcmQuX3ByZXYsIGluZGV4KTtcbiAgICB9IGVsc2UgaWYgKHJlY29yZC5jdXJyZW50SW5kZXggIT0gaW5kZXgpIHtcbiAgICAgIHJlY29yZC5jdXJyZW50SW5kZXggPSBpbmRleDtcbiAgICAgIHRoaXMuX2FkZFRvTW92ZXMocmVjb3JkLCBpbmRleCk7XG4gICAgfVxuICAgIHJldHVybiByZWNvcmQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJpZCBvZiBhbnkgZXhjZXNzIHtAbGluayBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkfXMgZnJvbSB0aGUgcHJldmlvdXMgY29sbGVjdGlvblxuICAgKlxuICAgKiAtIGByZWNvcmRgIFRoZSBmaXJzdCBleGNlc3Mge0BsaW5rIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmR9LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF90cnVuY2F0ZShyZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQpIHtcbiAgICAvLyBBbnl0aGluZyBhZnRlciB0aGF0IG5lZWRzIHRvIGJlIHJlbW92ZWQ7XG4gICAgd2hpbGUgKHJlY29yZCAhPT0gbnVsbCkge1xuICAgICAgdmFyIG5leHRSZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSByZWNvcmQuX25leHQ7XG4gICAgICB0aGlzLl9hZGRUb1JlbW92YWxzKHRoaXMuX3VubGluayhyZWNvcmQpKTtcbiAgICAgIHJlY29yZCA9IG5leHRSZWNvcmQ7XG4gICAgfVxuICAgIGlmICh0aGlzLl91bmxpbmtlZFJlY29yZHMgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3VubGlua2VkUmVjb3Jkcy5jbGVhcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9hZGRpdGlvbnNUYWlsICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbW92ZXNUYWlsICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9tb3Zlc1RhaWwuX25leHRNb3ZlZCA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLl9pdFRhaWwgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2l0VGFpbC5fbmV4dCA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLl9yZW1vdmFsc1RhaWwgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9yZWluc2VydEFmdGVyKHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCwgcHJldlJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCxcbiAgICAgICAgICAgICAgICAgaW5kZXg6IG51bWJlcik6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQge1xuICAgIGlmICh0aGlzLl91bmxpbmtlZFJlY29yZHMgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3VubGlua2VkUmVjb3Jkcy5yZW1vdmUocmVjb3JkKTtcbiAgICB9XG4gICAgdmFyIHByZXYgPSByZWNvcmQuX3ByZXZSZW1vdmVkO1xuICAgIHZhciBuZXh0ID0gcmVjb3JkLl9uZXh0UmVtb3ZlZDtcblxuICAgIGlmIChwcmV2ID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9yZW1vdmFsc0hlYWQgPSBuZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmV2Ll9uZXh0UmVtb3ZlZCA9IG5leHQ7XG4gICAgfVxuICAgIGlmIChuZXh0ID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9yZW1vdmFsc1RhaWwgPSBwcmV2O1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0Ll9wcmV2UmVtb3ZlZCA9IHByZXY7XG4gICAgfVxuXG4gICAgdGhpcy5faW5zZXJ0QWZ0ZXIocmVjb3JkLCBwcmV2UmVjb3JkLCBpbmRleCk7XG4gICAgdGhpcy5fYWRkVG9Nb3ZlcyhyZWNvcmQsIGluZGV4KTtcbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbW92ZUFmdGVyKHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCwgcHJldlJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCxcbiAgICAgICAgICAgICBpbmRleDogbnVtYmVyKTogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCB7XG4gICAgdGhpcy5fdW5saW5rKHJlY29yZCk7XG4gICAgdGhpcy5faW5zZXJ0QWZ0ZXIocmVjb3JkLCBwcmV2UmVjb3JkLCBpbmRleCk7XG4gICAgdGhpcy5fYWRkVG9Nb3ZlcyhyZWNvcmQsIGluZGV4KTtcbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfYWRkQWZ0ZXIocmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkLCBwcmV2UmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkLFxuICAgICAgICAgICAgaW5kZXg6IG51bWJlcik6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQge1xuICAgIHRoaXMuX2luc2VydEFmdGVyKHJlY29yZCwgcHJldlJlY29yZCwgaW5kZXgpO1xuXG4gICAgaWYgKHRoaXMuX2FkZGl0aW9uc1RhaWwgPT09IG51bGwpIHtcbiAgICAgIC8vIHRvZG8odmljYilcbiAgICAgIC8vIGFzc2VydCh0aGlzLl9hZGRpdGlvbnNIZWFkID09PSBudWxsKTtcbiAgICAgIHRoaXMuX2FkZGl0aW9uc1RhaWwgPSB0aGlzLl9hZGRpdGlvbnNIZWFkID0gcmVjb3JkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0b2RvKHZpY2IpXG4gICAgICAvLyBhc3NlcnQoX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZCA9PT0gbnVsbCk7XG4gICAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0QWRkZWQgPT09IG51bGwpO1xuICAgICAgdGhpcy5fYWRkaXRpb25zVGFpbCA9IHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZCA9IHJlY29yZDtcbiAgICB9XG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2luc2VydEFmdGVyKHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCwgcHJldlJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCxcbiAgICAgICAgICAgICAgIGluZGV4OiBudW1iZXIpOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkIHtcbiAgICAvLyB0b2RvKHZpY2IpXG4gICAgLy8gYXNzZXJ0KHJlY29yZCAhPSBwcmV2UmVjb3JkKTtcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0ID09PSBudWxsKTtcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9wcmV2ID09PSBudWxsKTtcblxuICAgIHZhciBuZXh0OiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gcHJldlJlY29yZCA9PT0gbnVsbCA/IHRoaXMuX2l0SGVhZCA6IHByZXZSZWNvcmQuX25leHQ7XG4gICAgLy8gdG9kbyh2aWNiKVxuICAgIC8vIGFzc2VydChuZXh0ICE9IHJlY29yZCk7XG4gICAgLy8gYXNzZXJ0KHByZXZSZWNvcmQgIT0gcmVjb3JkKTtcbiAgICByZWNvcmQuX25leHQgPSBuZXh0O1xuICAgIHJlY29yZC5fcHJldiA9IHByZXZSZWNvcmQ7XG4gICAgaWYgKG5leHQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2l0VGFpbCA9IHJlY29yZDtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dC5fcHJldiA9IHJlY29yZDtcbiAgICB9XG4gICAgaWYgKHByZXZSZWNvcmQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2l0SGVhZCA9IHJlY29yZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJldlJlY29yZC5fbmV4dCA9IHJlY29yZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fbGlua2VkUmVjb3JkcyA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fbGlua2VkUmVjb3JkcyA9IG5ldyBfRHVwbGljYXRlTWFwKCk7XG4gICAgfVxuICAgIHRoaXMuX2xpbmtlZFJlY29yZHMucHV0KHJlY29yZCk7XG5cbiAgICByZWNvcmQuY3VycmVudEluZGV4ID0gaW5kZXg7XG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3JlbW92ZShyZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQpOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkVG9SZW1vdmFscyh0aGlzLl91bmxpbmsocmVjb3JkKSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF91bmxpbmsocmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkKTogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCB7XG4gICAgaWYgKHRoaXMuX2xpbmtlZFJlY29yZHMgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2xpbmtlZFJlY29yZHMucmVtb3ZlKHJlY29yZCk7XG4gICAgfVxuXG4gICAgdmFyIHByZXYgPSByZWNvcmQuX3ByZXY7XG4gICAgdmFyIG5leHQgPSByZWNvcmQuX25leHQ7XG5cbiAgICAvLyB0b2RvKHZpY2IpXG4gICAgLy8gYXNzZXJ0KChyZWNvcmQuX3ByZXYgPSBudWxsKSA9PT0gbnVsbCk7XG4gICAgLy8gYXNzZXJ0KChyZWNvcmQuX25leHQgPSBudWxsKSA9PT0gbnVsbCk7XG5cbiAgICBpZiAocHJldiA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5faXRIZWFkID0gbmV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJldi5fbmV4dCA9IG5leHQ7XG4gICAgfVxuICAgIGlmIChuZXh0ID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9pdFRhaWwgPSBwcmV2O1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0Ll9wcmV2ID0gcHJldjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfYWRkVG9Nb3ZlcyhyZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQsIHRvSW5kZXg6IG51bWJlcik6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQge1xuICAgIC8vIHRvZG8odmljYilcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0TW92ZWQgPT09IG51bGwpO1xuXG4gICAgaWYgKHJlY29yZC5wcmV2aW91c0luZGV4ID09PSB0b0luZGV4KSB7XG4gICAgICByZXR1cm4gcmVjb3JkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9tb3Zlc1RhaWwgPT09IG51bGwpIHtcbiAgICAgIC8vIHRvZG8odmljYilcbiAgICAgIC8vIGFzc2VydChfbW92ZXNIZWFkID09PSBudWxsKTtcbiAgICAgIHRoaXMuX21vdmVzVGFpbCA9IHRoaXMuX21vdmVzSGVhZCA9IHJlY29yZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdG9kbyh2aWNiKVxuICAgICAgLy8gYXNzZXJ0KF9tb3Zlc1RhaWwuX25leHRNb3ZlZCA9PT0gbnVsbCk7XG4gICAgICB0aGlzLl9tb3Zlc1RhaWwgPSB0aGlzLl9tb3Zlc1RhaWwuX25leHRNb3ZlZCA9IHJlY29yZDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfYWRkVG9SZW1vdmFscyhyZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQpOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkIHtcbiAgICBpZiAodGhpcy5fdW5saW5rZWRSZWNvcmRzID09PSBudWxsKSB7XG4gICAgICB0aGlzLl91bmxpbmtlZFJlY29yZHMgPSBuZXcgX0R1cGxpY2F0ZU1hcCgpO1xuICAgIH1cbiAgICB0aGlzLl91bmxpbmtlZFJlY29yZHMucHV0KHJlY29yZCk7XG4gICAgcmVjb3JkLmN1cnJlbnRJbmRleCA9IG51bGw7XG4gICAgcmVjb3JkLl9uZXh0UmVtb3ZlZCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5fcmVtb3ZhbHNUYWlsID09PSBudWxsKSB7XG4gICAgICAvLyB0b2RvKHZpY2IpXG4gICAgICAvLyBhc3NlcnQoX3JlbW92YWxzSGVhZCA9PT0gbnVsbCk7XG4gICAgICB0aGlzLl9yZW1vdmFsc1RhaWwgPSB0aGlzLl9yZW1vdmFsc0hlYWQgPSByZWNvcmQ7XG4gICAgICByZWNvcmQuX3ByZXZSZW1vdmVkID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdG9kbyh2aWNiKVxuICAgICAgLy8gYXNzZXJ0KF9yZW1vdmFsc1RhaWwuX25leHRSZW1vdmVkID09PSBudWxsKTtcbiAgICAgIC8vIGFzc2VydChyZWNvcmQuX25leHRSZW1vdmVkID09PSBudWxsKTtcbiAgICAgIHJlY29yZC5fcHJldlJlbW92ZWQgPSB0aGlzLl9yZW1vdmFsc1RhaWw7XG4gICAgICB0aGlzLl9yZW1vdmFsc1RhaWwgPSB0aGlzLl9yZW1vdmFsc1RhaWwuX25leHRSZW1vdmVkID0gcmVjb3JkO1xuICAgIH1cbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfYWRkSWRlbnRpdHlDaGFuZ2UocmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkLCBpdGVtOiBhbnkpIHtcbiAgICByZWNvcmQuaXRlbSA9IGl0ZW07XG4gICAgaWYgKHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwgPSB0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkID0gcmVjb3JkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsID0gdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlID0gcmVjb3JkO1xuICAgIH1cbiAgICByZXR1cm4gcmVjb3JkO1xuICB9XG5cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHZhciBsaXN0ID0gW107XG4gICAgdGhpcy5mb3JFYWNoSXRlbSgocmVjb3JkKSA9PiBsaXN0LnB1c2gocmVjb3JkKSk7XG5cbiAgICB2YXIgcHJldmlvdXMgPSBbXTtcbiAgICB0aGlzLmZvckVhY2hQcmV2aW91c0l0ZW0oKHJlY29yZCkgPT4gcHJldmlvdXMucHVzaChyZWNvcmQpKTtcblxuICAgIHZhciBhZGRpdGlvbnMgPSBbXTtcbiAgICB0aGlzLmZvckVhY2hBZGRlZEl0ZW0oKHJlY29yZCkgPT4gYWRkaXRpb25zLnB1c2gocmVjb3JkKSk7XG5cbiAgICB2YXIgbW92ZXMgPSBbXTtcbiAgICB0aGlzLmZvckVhY2hNb3ZlZEl0ZW0oKHJlY29yZCkgPT4gbW92ZXMucHVzaChyZWNvcmQpKTtcblxuICAgIHZhciByZW1vdmFscyA9IFtdO1xuICAgIHRoaXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQpID0+IHJlbW92YWxzLnB1c2gocmVjb3JkKSk7XG5cbiAgICB2YXIgaWRlbnRpdHlDaGFuZ2VzID0gW107XG4gICAgdGhpcy5mb3JFYWNoSWRlbnRpdHlDaGFuZ2UoKHJlY29yZCkgPT4gaWRlbnRpdHlDaGFuZ2VzLnB1c2gocmVjb3JkKSk7XG5cbiAgICByZXR1cm4gXCJjb2xsZWN0aW9uOiBcIiArIGxpc3Quam9pbignLCAnKSArIFwiXFxuXCIgKyBcInByZXZpb3VzOiBcIiArIHByZXZpb3VzLmpvaW4oJywgJykgKyBcIlxcblwiICtcbiAgICAgICAgICAgXCJhZGRpdGlvbnM6IFwiICsgYWRkaXRpb25zLmpvaW4oJywgJykgKyBcIlxcblwiICsgXCJtb3ZlczogXCIgKyBtb3Zlcy5qb2luKCcsICcpICsgXCJcXG5cIiArXG4gICAgICAgICAgIFwicmVtb3ZhbHM6IFwiICsgcmVtb3ZhbHMuam9pbignLCAnKSArIFwiXFxuXCIgKyBcImlkZW50aXR5Q2hhbmdlczogXCIgK1xuICAgICAgICAgICBpZGVudGl0eUNoYW5nZXMuam9pbignLCAnKSArIFwiXFxuXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQge1xuICBjdXJyZW50SW5kZXg6IG51bWJlciA9IG51bGw7XG4gIHByZXZpb3VzSW5kZXg6IG51bWJlciA9IG51bGw7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbmV4dFByZXZpb3VzOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcHJldjogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX25leHQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuICAvKiogQGludGVybmFsICovXG4gIF9wcmV2RHVwOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbmV4dER1cDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3ByZXZSZW1vdmVkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbmV4dFJlbW92ZWQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuICAvKiogQGludGVybmFsICovXG4gIF9uZXh0QWRkZWQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuICAvKiogQGludGVybmFsICovXG4gIF9uZXh0TW92ZWQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuICAvKiogQGludGVybmFsICovXG4gIF9uZXh0SWRlbnRpdHlDaGFuZ2U6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuXG5cbiAgY29uc3RydWN0b3IocHVibGljIGl0ZW06IGFueSwgcHVibGljIHRyYWNrQnlJZDogYW55KSB7fVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJldmlvdXNJbmRleCA9PT0gdGhpcy5jdXJyZW50SW5kZXggP1xuICAgICAgICAgICAgICAgc3RyaW5naWZ5KHRoaXMuaXRlbSkgOlxuICAgICAgICAgICAgICAgc3RyaW5naWZ5KHRoaXMuaXRlbSkgKyAnWycgKyBzdHJpbmdpZnkodGhpcy5wcmV2aW91c0luZGV4KSArICctPicgK1xuICAgICAgICAgICAgICAgICAgIHN0cmluZ2lmeSh0aGlzLmN1cnJlbnRJbmRleCkgKyAnXSc7XG4gIH1cbn1cblxuLy8gQSBsaW5rZWQgbGlzdCBvZiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkcyB3aXRoIHRoZSBzYW1lIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQuaXRlbVxuY2xhc3MgX0R1cGxpY2F0ZUl0ZW1SZWNvcmRMaXN0IHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfaGVhZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IG51bGw7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3RhaWw6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBBcHBlbmQgdGhlIHJlY29yZCB0byB0aGUgbGlzdCBvZiBkdXBsaWNhdGVzLlxuICAgKlxuICAgKiBOb3RlOiBieSBkZXNpZ24gYWxsIHJlY29yZHMgaW4gdGhlIGxpc3Qgb2YgZHVwbGljYXRlcyBob2xkIHRoZSBzYW1lIHZhbHVlIGluIHJlY29yZC5pdGVtLlxuICAgKi9cbiAgYWRkKHJlY29yZDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9oZWFkID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9oZWFkID0gdGhpcy5fdGFpbCA9IHJlY29yZDtcbiAgICAgIHJlY29yZC5fbmV4dER1cCA9IG51bGw7XG4gICAgICByZWNvcmQuX3ByZXZEdXAgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0b2RvKHZpY2IpXG4gICAgICAvLyBhc3NlcnQocmVjb3JkLml0ZW0gPT0gIF9oZWFkLml0ZW0gfHxcbiAgICAgIC8vICAgICAgIHJlY29yZC5pdGVtIGlzIG51bSAmJiByZWNvcmQuaXRlbS5pc05hTiAmJiBfaGVhZC5pdGVtIGlzIG51bSAmJiBfaGVhZC5pdGVtLmlzTmFOKTtcbiAgICAgIHRoaXMuX3RhaWwuX25leHREdXAgPSByZWNvcmQ7XG4gICAgICByZWNvcmQuX3ByZXZEdXAgPSB0aGlzLl90YWlsO1xuICAgICAgcmVjb3JkLl9uZXh0RHVwID0gbnVsbDtcbiAgICAgIHRoaXMuX3RhaWwgPSByZWNvcmQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUmV0dXJucyBhIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgaGF2aW5nIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQudHJhY2tCeUlkID09IHRyYWNrQnlJZCBhbmRcbiAgLy8gQ29sbGVjdGlvbkNoYW5nZVJlY29yZC5jdXJyZW50SW5kZXggPj0gYWZ0ZXJJbmRleFxuICBnZXQodHJhY2tCeUlkOiBhbnksIGFmdGVySW5kZXg6IG51bWJlcik6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQge1xuICAgIHZhciByZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQ7XG4gICAgZm9yIChyZWNvcmQgPSB0aGlzLl9oZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dER1cCkge1xuICAgICAgaWYgKChhZnRlckluZGV4ID09PSBudWxsIHx8IGFmdGVySW5kZXggPCByZWNvcmQuY3VycmVudEluZGV4KSAmJlxuICAgICAgICAgIGxvb3NlSWRlbnRpY2FsKHJlY29yZC50cmFja0J5SWQsIHRyYWNrQnlJZCkpIHtcbiAgICAgICAgcmV0dXJuIHJlY29yZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIG9uZSB7QGxpbmsgQ29sbGVjdGlvbkNoYW5nZVJlY29yZH0gZnJvbSB0aGUgbGlzdCBvZiBkdXBsaWNhdGVzLlxuICAgKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGxpc3Qgb2YgZHVwbGljYXRlcyBpcyBlbXB0eS5cbiAgICovXG4gIHJlbW92ZShyZWNvcmQ6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQpOiBib29sZWFuIHtcbiAgICAvLyB0b2RvKHZpY2IpXG4gICAgLy8gYXNzZXJ0KCgpIHtcbiAgICAvLyAgLy8gdmVyaWZ5IHRoYXQgdGhlIHJlY29yZCBiZWluZyByZW1vdmVkIGlzIGluIHRoZSBsaXN0LlxuICAgIC8vICBmb3IgKENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgY3Vyc29yID0gX2hlYWQ7IGN1cnNvciAhPSBudWxsOyBjdXJzb3IgPSBjdXJzb3IuX25leHREdXApIHtcbiAgICAvLyAgICBpZiAoaWRlbnRpY2FsKGN1cnNvciwgcmVjb3JkKSkgcmV0dXJuIHRydWU7XG4gICAgLy8gIH1cbiAgICAvLyAgcmV0dXJuIGZhbHNlO1xuICAgIC8vfSk7XG5cbiAgICB2YXIgcHJldjogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IHJlY29yZC5fcHJldkR1cDtcbiAgICB2YXIgbmV4dDogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCA9IHJlY29yZC5fbmV4dER1cDtcbiAgICBpZiAocHJldiA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5faGVhZCA9IG5leHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZXYuX25leHREdXAgPSBuZXh0O1xuICAgIH1cbiAgICBpZiAobmV4dCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fdGFpbCA9IHByZXY7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQuX3ByZXZEdXAgPSBwcmV2O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faGVhZCA9PT0gbnVsbDtcbiAgfVxufVxuXG5jbGFzcyBfRHVwbGljYXRlTWFwIHtcbiAgbWFwID0gbmV3IE1hcDxhbnksIF9EdXBsaWNhdGVJdGVtUmVjb3JkTGlzdD4oKTtcblxuICBwdXQocmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkKSB7XG4gICAgLy8gdG9kbyh2aWNiKSBoYW5kbGUgY29ybmVyIGNhc2VzXG4gICAgdmFyIGtleSA9IGdldE1hcEtleShyZWNvcmQudHJhY2tCeUlkKTtcblxuICAgIHZhciBkdXBsaWNhdGVzID0gdGhpcy5tYXAuZ2V0KGtleSk7XG4gICAgaWYgKCFpc1ByZXNlbnQoZHVwbGljYXRlcykpIHtcbiAgICAgIGR1cGxpY2F0ZXMgPSBuZXcgX0R1cGxpY2F0ZUl0ZW1SZWNvcmRMaXN0KCk7XG4gICAgICB0aGlzLm1hcC5zZXQoa2V5LCBkdXBsaWNhdGVzKTtcbiAgICB9XG4gICAgZHVwbGljYXRlcy5hZGQocmVjb3JkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgYHZhbHVlYCB1c2luZyBrZXkuIEJlY2F1c2UgdGhlIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQgdmFsdWUgbWF5IGJlIG9uZSB3aGljaCB3ZVxuICAgKiBoYXZlIGFscmVhZHkgaXRlcmF0ZWQgb3Zlciwgd2UgdXNlIHRoZSBhZnRlckluZGV4IHRvIHByZXRlbmQgaXQgaXMgbm90IHRoZXJlLlxuICAgKlxuICAgKiBVc2UgY2FzZTogYFthLCBiLCBjLCBhLCBhXWAgaWYgd2UgYXJlIGF0IGluZGV4IGAzYCB3aGljaCBpcyB0aGUgc2Vjb25kIGBhYCB0aGVuIGFza2luZyBpZiB3ZVxuICAgKiBoYXZlIGFueSBtb3JlIGBhYHMgbmVlZHMgdG8gcmV0dXJuIHRoZSBsYXN0IGBhYCBub3QgdGhlIGZpcnN0IG9yIHNlY29uZC5cbiAgICovXG4gIGdldCh0cmFja0J5SWQ6IGFueSwgYWZ0ZXJJbmRleDogbnVtYmVyID0gbnVsbCk6IENvbGxlY3Rpb25DaGFuZ2VSZWNvcmQge1xuICAgIHZhciBrZXkgPSBnZXRNYXBLZXkodHJhY2tCeUlkKTtcblxuICAgIHZhciByZWNvcmRMaXN0ID0gdGhpcy5tYXAuZ2V0KGtleSk7XG4gICAgcmV0dXJuIGlzQmxhbmsocmVjb3JkTGlzdCkgPyBudWxsIDogcmVjb3JkTGlzdC5nZXQodHJhY2tCeUlkLCBhZnRlckluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEge0BsaW5rIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmR9IGZyb20gdGhlIGxpc3Qgb2YgZHVwbGljYXRlcy5cbiAgICpcbiAgICogVGhlIGxpc3Qgb2YgZHVwbGljYXRlcyBhbHNvIGlzIHJlbW92ZWQgZnJvbSB0aGUgbWFwIGlmIGl0IGdldHMgZW1wdHkuXG4gICAqL1xuICByZW1vdmUocmVjb3JkOiBDb2xsZWN0aW9uQ2hhbmdlUmVjb3JkKTogQ29sbGVjdGlvbkNoYW5nZVJlY29yZCB7XG4gICAgdmFyIGtleSA9IGdldE1hcEtleShyZWNvcmQudHJhY2tCeUlkKTtcbiAgICAvLyB0b2RvKHZpY2IpXG4gICAgLy8gYXNzZXJ0KHRoaXMubWFwLmNvbnRhaW5zS2V5KGtleSkpO1xuICAgIHZhciByZWNvcmRMaXN0OiBfRHVwbGljYXRlSXRlbVJlY29yZExpc3QgPSB0aGlzLm1hcC5nZXQoa2V5KTtcbiAgICAvLyBSZW1vdmUgdGhlIGxpc3Qgb2YgZHVwbGljYXRlcyB3aGVuIGl0IGdldHMgZW1wdHlcbiAgICBpZiAocmVjb3JkTGlzdC5yZW1vdmUocmVjb3JkKSkge1xuICAgICAgdGhpcy5tYXAuZGVsZXRlKGtleSk7XG4gICAgfVxuICAgIHJldHVybiByZWNvcmQ7XG4gIH1cblxuICBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubWFwLnNpemUgPT09IDA7IH1cblxuICBjbGVhcigpIHsgdGhpcy5tYXAuY2xlYXIoKTsgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiAnX0R1cGxpY2F0ZU1hcCgnICsgc3RyaW5naWZ5KHRoaXMubWFwKSArICcpJzsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar di_1 = require('angular2/src/core/di');\r\n/**\r\n * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.\r\n */\r\nvar KeyValueDiffers = (function () {\r\n function KeyValueDiffers(factories) {\r\n this.factories = factories;\r\n }\r\n KeyValueDiffers.create = function (factories, parent) {\r\n if (lang_1.isPresent(parent)) {\r\n var copied = collection_1.ListWrapper.clone(parent.factories);\r\n factories = factories.concat(copied);\r\n return new KeyValueDiffers(factories);\r\n }\r\n else {\r\n return new KeyValueDiffers(factories);\r\n }\r\n };\r\n /**\r\n * Takes an array of {@link KeyValueDifferFactory} and returns a provider used to extend the\r\n * inherited {@link KeyValueDiffers} instance with the provided factories and return a new\r\n * {@link KeyValueDiffers} instance.\r\n *\r\n * The following example shows how to extend an existing list of factories,\r\n * which will only be applied to the injector for this component and its children.\r\n * This step is all that's required to make a new {@link KeyValueDiffer} available.\r\n *\r\n * ### Example\r\n *\r\n * ```\r\n * @Component({\r\n * viewProviders: [\r\n * KeyValueDiffers.extend([new ImmutableMapDiffer()])\r\n * ]\r\n * })\r\n * ```\r\n */\r\n KeyValueDiffers.extend = function (factories) {\r\n return new di_1.Provider(KeyValueDiffers, {\r\n useFactory: function (parent) {\r\n if (lang_1.isBlank(parent)) {\r\n // Typically would occur when calling KeyValueDiffers.extend inside of dependencies passed\r\n // to\r\n // bootstrap(), which would override default pipes instead of extending them.\r\n throw new exceptions_1.BaseException('Cannot extend KeyValueDiffers without a parent injector');\r\n }\r\n return KeyValueDiffers.create(factories, parent);\r\n },\r\n // Dependency technically isn't optional, but we can provide a better error message this way.\r\n deps: [[KeyValueDiffers, new di_1.SkipSelfMetadata(), new di_1.OptionalMetadata()]]\r\n });\r\n };\r\n KeyValueDiffers.prototype.find = function (kv) {\r\n var factory = this.factories.find(function (f) { return f.supports(kv); });\r\n if (lang_1.isPresent(factory)) {\r\n return factory;\r\n }\r\n else {\r\n throw new exceptions_1.BaseException(\"Cannot find a differ supporting object '\" + kv + \"'\");\r\n }\r\n };\r\n KeyValueDiffers = __decorate([\r\n di_1.Injectable(),\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Array])\r\n ], KeyValueDiffers);\r\n return KeyValueDiffers;\r\n})();\r\nexports.KeyValueDiffers = KeyValueDiffers;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5dmFsdWVfZGlmZmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vZGlmZmVycy9rZXl2YWx1ZV9kaWZmZXJzLnRzIl0sIm5hbWVzIjpbIktleVZhbHVlRGlmZmVycyIsIktleVZhbHVlRGlmZmVycy5jb25zdHJ1Y3RvciIsIktleVZhbHVlRGlmZmVycy5jcmVhdGUiLCJLZXlWYWx1ZURpZmZlcnMuZXh0ZW5kIiwiS2V5VmFsdWVEaWZmZXJzLmZpbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHFCQUF3QywwQkFBMEIsQ0FBQyxDQUFBO0FBQ25FLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELDJCQUEwQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRTNELG1CQUF1RSxzQkFBc0IsQ0FBQyxDQUFBO0FBa0I5Rjs7R0FFRztBQUNIO0lBR0VBLHlCQUFtQkEsU0FBa0NBO1FBQWxDQyxjQUFTQSxHQUFUQSxTQUFTQSxDQUF5QkE7SUFBR0EsQ0FBQ0E7SUFFbERELHNCQUFNQSxHQUFiQSxVQUFjQSxTQUFrQ0EsRUFBRUEsTUFBd0JBO1FBQ3hFRSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDdEJBLElBQUlBLE1BQU1BLEdBQUdBLHdCQUFXQSxDQUFDQSxLQUFLQSxDQUFDQSxNQUFNQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQTtZQUNqREEsU0FBU0EsR0FBR0EsU0FBU0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0E7WUFDckNBLE1BQU1BLENBQUNBLElBQUlBLGVBQWVBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBO1FBQ3hDQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUNOQSxNQUFNQSxDQUFDQSxJQUFJQSxlQUFlQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQTtRQUN4Q0EsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUFFREY7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtCR0E7SUFDSUEsc0JBQU1BLEdBQWJBLFVBQWNBLFNBQWtDQTtRQUM5Q0csTUFBTUEsQ0FBQ0EsSUFBSUEsYUFBUUEsQ0FBQ0EsZUFBZUEsRUFBRUE7WUFDbkNBLFVBQVVBLEVBQUVBLFVBQUNBLE1BQXVCQTtnQkFDbENBLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLENBQUNBO29CQUNwQkEsMEZBQTBGQTtvQkFDMUZBLEtBQUtBO29CQUNMQSw2RUFBNkVBO29CQUM3RUEsTUFBTUEsSUFBSUEsMEJBQWFBLENBQUNBLHlEQUF5REEsQ0FBQ0EsQ0FBQ0E7Z0JBQ3JGQSxDQUFDQTtnQkFDREEsTUFBTUEsQ0FBQ0EsZUFBZUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsU0FBU0EsRUFBRUEsTUFBTUEsQ0FBQ0EsQ0FBQ0E7WUFDbkRBLENBQUNBO1lBQ0RBLDZGQUE2RkE7WUFDN0ZBLElBQUlBLEVBQUVBLENBQUNBLENBQUNBLGVBQWVBLEVBQUVBLElBQUlBLHFCQUFnQkEsRUFBRUEsRUFBRUEsSUFBSUEscUJBQWdCQSxFQUFFQSxDQUFDQSxDQUFDQTtTQUMxRUEsQ0FBQ0EsQ0FBQ0E7SUFDTEEsQ0FBQ0E7SUFFREgsOEJBQUlBLEdBQUpBLFVBQUtBLEVBQVVBO1FBQ2JJLElBQUlBLE9BQU9BLEdBQUdBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLElBQUlBLENBQUNBLFVBQUFBLENBQUNBLElBQUlBLE9BQUFBLENBQUNBLENBQUNBLFFBQVFBLENBQUNBLEVBQUVBLENBQUNBLEVBQWRBLENBQWNBLENBQUNBLENBQUNBO1FBQ3ZEQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDdkJBLE1BQU1BLENBQUNBLE9BQU9BLENBQUNBO1FBQ2pCQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUNOQSxNQUFNQSxJQUFJQSwwQkFBYUEsQ0FBQ0EsNkNBQTJDQSxFQUFFQSxNQUFHQSxDQUFDQSxDQUFDQTtRQUM1RUEsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUF6REhKO1FBQUNBLGVBQVVBLEVBQUVBO1FBQ1pBLFlBQUtBLEVBQUVBOzt3QkF5RFBBO0lBQURBLHNCQUFDQTtBQUFEQSxDQUFDQSxBQTFERCxJQTBEQztBQXhEWSx1QkFBZSxrQkF3RDNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzQmxhbmssIGlzUHJlc2VudCwgQ09OU1R9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZn0gZnJvbSAnLi4vY2hhbmdlX2RldGVjdG9yX3JlZic7XG5pbXBvcnQge1Byb3ZpZGVyLCBTa2lwU2VsZk1ldGFkYXRhLCBPcHRpb25hbE1ldGFkYXRhLCBJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5cbi8qKlxuICogQSBkaWZmZXIgdGhhdCB0cmFja3MgY2hhbmdlcyBtYWRlIHRvIGFuIG9iamVjdCBvdmVyIHRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5VmFsdWVEaWZmZXIge1xuICBkaWZmKG9iamVjdDogYW55KTtcbiAgb25EZXN0cm95KCk7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYSBmYWN0b3J5IGZvciB7QGxpbmsgS2V5VmFsdWVEaWZmZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleVZhbHVlRGlmZmVyRmFjdG9yeSB7XG4gIHN1cHBvcnRzKG9iamVjdHM6IGFueSk6IGJvb2xlYW47XG4gIGNyZWF0ZShjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiBLZXlWYWx1ZURpZmZlcjtcbn1cblxuLyoqXG4gKiBBIHJlcG9zaXRvcnkgb2YgZGlmZmVyZW50IE1hcCBkaWZmaW5nIHN0cmF0ZWdpZXMgdXNlZCBieSBOZ0NsYXNzLCBOZ1N0eWxlLCBhbmQgb3RoZXJzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIEtleVZhbHVlRGlmZmVycyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmYWN0b3JpZXM6IEtleVZhbHVlRGlmZmVyRmFjdG9yeVtdKSB7fVxuXG4gIHN0YXRpYyBjcmVhdGUoZmFjdG9yaWVzOiBLZXlWYWx1ZURpZmZlckZhY3RvcnlbXSwgcGFyZW50PzogS2V5VmFsdWVEaWZmZXJzKTogS2V5VmFsdWVEaWZmZXJzIHtcbiAgICBpZiAoaXNQcmVzZW50KHBhcmVudCkpIHtcbiAgICAgIHZhciBjb3BpZWQgPSBMaXN0V3JhcHBlci5jbG9uZShwYXJlbnQuZmFjdG9yaWVzKTtcbiAgICAgIGZhY3RvcmllcyA9IGZhY3Rvcmllcy5jb25jYXQoY29waWVkKTtcbiAgICAgIHJldHVybiBuZXcgS2V5VmFsdWVEaWZmZXJzKGZhY3Rvcmllcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgS2V5VmFsdWVEaWZmZXJzKGZhY3Rvcmllcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRha2VzIGFuIGFycmF5IG9mIHtAbGluayBLZXlWYWx1ZURpZmZlckZhY3Rvcnl9IGFuZCByZXR1cm5zIGEgcHJvdmlkZXIgdXNlZCB0byBleHRlbmQgdGhlXG4gICAqIGluaGVyaXRlZCB7QGxpbmsgS2V5VmFsdWVEaWZmZXJzfSBpbnN0YW5jZSB3aXRoIHRoZSBwcm92aWRlZCBmYWN0b3JpZXMgYW5kIHJldHVybiBhIG5ld1xuICAgKiB7QGxpbmsgS2V5VmFsdWVEaWZmZXJzfSBpbnN0YW5jZS5cbiAgICpcbiAgICogVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyB0byBleHRlbmQgYW4gZXhpc3RpbmcgbGlzdCBvZiBmYWN0b3JpZXMsXG4gICAgICAgICAqIHdoaWNoIHdpbGwgb25seSBiZSBhcHBsaWVkIHRvIHRoZSBpbmplY3RvciBmb3IgdGhpcyBjb21wb25lbnQgYW5kIGl0cyBjaGlsZHJlbi5cbiAgICAgICAgICogVGhpcyBzdGVwIGlzIGFsbCB0aGF0J3MgcmVxdWlyZWQgdG8gbWFrZSBhIG5ldyB7QGxpbmsgS2V5VmFsdWVEaWZmZXJ9IGF2YWlsYWJsZS5cbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICpcbiAgICogYGBgXG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHZpZXdQcm92aWRlcnM6IFtcbiAgICogICAgIEtleVZhbHVlRGlmZmVycy5leHRlbmQoW25ldyBJbW11dGFibGVNYXBEaWZmZXIoKV0pXG4gICAqICAgXVxuICAgKiB9KVxuICAgKiBgYGBcbiAgICovXG4gIHN0YXRpYyBleHRlbmQoZmFjdG9yaWVzOiBLZXlWYWx1ZURpZmZlckZhY3RvcnlbXSk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gbmV3IFByb3ZpZGVyKEtleVZhbHVlRGlmZmVycywge1xuICAgICAgdXNlRmFjdG9yeTogKHBhcmVudDogS2V5VmFsdWVEaWZmZXJzKSA9PiB7XG4gICAgICAgIGlmIChpc0JsYW5rKHBhcmVudCkpIHtcbiAgICAgICAgICAvLyBUeXBpY2FsbHkgd291bGQgb2NjdXIgd2hlbiBjYWxsaW5nIEtleVZhbHVlRGlmZmVycy5leHRlbmQgaW5zaWRlIG9mIGRlcGVuZGVuY2llcyBwYXNzZWRcbiAgICAgICAgICAvLyB0b1xuICAgICAgICAgIC8vIGJvb3RzdHJhcCgpLCB3aGljaCB3b3VsZCBvdmVycmlkZSBkZWZhdWx0IHBpcGVzIGluc3RlYWQgb2YgZXh0ZW5kaW5nIHRoZW0uXG4gICAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ0Nhbm5vdCBleHRlbmQgS2V5VmFsdWVEaWZmZXJzIHdpdGhvdXQgYSBwYXJlbnQgaW5qZWN0b3InKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gS2V5VmFsdWVEaWZmZXJzLmNyZWF0ZShmYWN0b3JpZXMsIHBhcmVudCk7XG4gICAgICB9LFxuICAgICAgLy8gRGVwZW5kZW5jeSB0ZWNobmljYWxseSBpc24ndCBvcHRpb25hbCwgYnV0IHdlIGNhbiBwcm92aWRlIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2UgdGhpcyB3YXkuXG4gICAgICBkZXBzOiBbW0tleVZhbHVlRGlmZmVycywgbmV3IFNraXBTZWxmTWV0YWRhdGEoKSwgbmV3IE9wdGlvbmFsTWV0YWRhdGEoKV1dXG4gICAgfSk7XG4gIH1cblxuICBmaW5kKGt2OiBPYmplY3QpOiBLZXlWYWx1ZURpZmZlckZhY3Rvcnkge1xuICAgIHZhciBmYWN0b3J5ID0gdGhpcy5mYWN0b3JpZXMuZmluZChmID0+IGYuc3VwcG9ydHMoa3YpKTtcbiAgICBpZiAoaXNQcmVzZW50KGZhY3RvcnkpKSB7XG4gICAgICByZXR1cm4gZmFjdG9yeTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYENhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRpbmcgb2JqZWN0ICcke2t2fSdgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar DefaultKeyValueDifferFactory = (function () {\r\n function DefaultKeyValueDifferFactory() {\r\n }\r\n DefaultKeyValueDifferFactory.prototype.supports = function (obj) { return obj instanceof Map || lang_1.isJsObject(obj); };\r\n DefaultKeyValueDifferFactory.prototype.create = function (cdRef) { return new DefaultKeyValueDiffer(); };\r\n DefaultKeyValueDifferFactory = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], DefaultKeyValueDifferFactory);\r\n return DefaultKeyValueDifferFactory;\r\n})();\r\nexports.DefaultKeyValueDifferFactory = DefaultKeyValueDifferFactory;\r\nvar DefaultKeyValueDiffer = (function () {\r\n function DefaultKeyValueDiffer() {\r\n this._records = new Map();\r\n this._mapHead = null;\r\n this._previousMapHead = null;\r\n this._changesHead = null;\r\n this._changesTail = null;\r\n this._additionsHead = null;\r\n this._additionsTail = null;\r\n this._removalsHead = null;\r\n this._removalsTail = null;\r\n }\r\n Object.defineProperty(DefaultKeyValueDiffer.prototype, \"isDirty\", {\r\n get: function () {\r\n return this._additionsHead !== null || this._changesHead !== null ||\r\n this._removalsHead !== null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DefaultKeyValueDiffer.prototype.forEachItem = function (fn) {\r\n var record;\r\n for (record = this._mapHead; record !== null; record = record._next) {\r\n fn(record);\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.forEachPreviousItem = function (fn) {\r\n var record;\r\n for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\r\n fn(record);\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.forEachChangedItem = function (fn) {\r\n var record;\r\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\r\n fn(record);\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.forEachAddedItem = function (fn) {\r\n var record;\r\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\r\n fn(record);\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.forEachRemovedItem = function (fn) {\r\n var record;\r\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\r\n fn(record);\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.diff = function (map) {\r\n if (lang_1.isBlank(map))\r\n map = collection_1.MapWrapper.createFromPairs([]);\r\n if (!(map instanceof Map || lang_1.isJsObject(map))) {\r\n throw new exceptions_1.BaseException(\"Error trying to diff '\" + map + \"'\");\r\n }\r\n if (this.check(map)) {\r\n return this;\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.onDestroy = function () { };\r\n DefaultKeyValueDiffer.prototype.check = function (map) {\r\n var _this = this;\r\n this._reset();\r\n var records = this._records;\r\n var oldSeqRecord = this._mapHead;\r\n var lastOldSeqRecord = null;\r\n var lastNewSeqRecord = null;\r\n var seqChanged = false;\r\n this._forEach(map, function (value, key) {\r\n var newSeqRecord;\r\n if (oldSeqRecord !== null && key === oldSeqRecord.key) {\r\n newSeqRecord = oldSeqRecord;\r\n if (!lang_1.looseIdentical(value, oldSeqRecord.currentValue)) {\r\n oldSeqRecord.previousValue = oldSeqRecord.currentValue;\r\n oldSeqRecord.currentValue = value;\r\n _this._addToChanges(oldSeqRecord);\r\n }\r\n }\r\n else {\r\n seqChanged = true;\r\n if (oldSeqRecord !== null) {\r\n oldSeqRecord._next = null;\r\n _this._removeFromSeq(lastOldSeqRecord, oldSeqRecord);\r\n _this._addToRemovals(oldSeqRecord);\r\n }\r\n if (records.has(key)) {\r\n newSeqRecord = records.get(key);\r\n }\r\n else {\r\n newSeqRecord = new KeyValueChangeRecord(key);\r\n records.set(key, newSeqRecord);\r\n newSeqRecord.currentValue = value;\r\n _this._addToAdditions(newSeqRecord);\r\n }\r\n }\r\n if (seqChanged) {\r\n if (_this._isInRemovals(newSeqRecord)) {\r\n _this._removeFromRemovals(newSeqRecord);\r\n }\r\n if (lastNewSeqRecord == null) {\r\n _this._mapHead = newSeqRecord;\r\n }\r\n else {\r\n lastNewSeqRecord._next = newSeqRecord;\r\n }\r\n }\r\n lastOldSeqRecord = oldSeqRecord;\r\n lastNewSeqRecord = newSeqRecord;\r\n oldSeqRecord = oldSeqRecord === null ? null : oldSeqRecord._next;\r\n });\r\n this._truncate(lastOldSeqRecord, oldSeqRecord);\r\n return this.isDirty;\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._reset = function () {\r\n if (this.isDirty) {\r\n var record;\r\n // Record the state of the mapping\r\n for (record = this._previousMapHead = this._mapHead; record !== null; record = record._next) {\r\n record._nextPrevious = record._next;\r\n }\r\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\r\n record.previousValue = record.currentValue;\r\n }\r\n for (record = this._additionsHead; record != null; record = record._nextAdded) {\r\n record.previousValue = record.currentValue;\r\n }\r\n // todo(vicb) once assert is supported\r\n // assert(() {\r\n // var r = _changesHead;\r\n // while (r != null) {\r\n // var nextRecord = r._nextChanged;\r\n // r._nextChanged = null;\r\n // r = nextRecord;\r\n // }\r\n //\r\n // r = _additionsHead;\r\n // while (r != null) {\r\n // var nextRecord = r._nextAdded;\r\n // r._nextAdded = null;\r\n // r = nextRecord;\r\n // }\r\n //\r\n // r = _removalsHead;\r\n // while (r != null) {\r\n // var nextRecord = r._nextRemoved;\r\n // r._nextRemoved = null;\r\n // r = nextRecord;\r\n // }\r\n //\r\n // return true;\r\n //});\r\n this._changesHead = this._changesTail = null;\r\n this._additionsHead = this._additionsTail = null;\r\n this._removalsHead = this._removalsTail = null;\r\n }\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._truncate = function (lastRecord, record) {\r\n while (record !== null) {\r\n if (lastRecord === null) {\r\n this._mapHead = null;\r\n }\r\n else {\r\n lastRecord._next = null;\r\n }\r\n var nextRecord = record._next;\r\n // todo(vicb) assert\r\n // assert((() {\r\n // record._next = null;\r\n // return true;\r\n //}));\r\n this._addToRemovals(record);\r\n lastRecord = record;\r\n record = nextRecord;\r\n }\r\n for (var rec = this._removalsHead; rec !== null; rec = rec._nextRemoved) {\r\n rec.previousValue = rec.currentValue;\r\n rec.currentValue = null;\r\n this._records.delete(rec.key);\r\n }\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._isInRemovals = function (record) {\r\n return record === this._removalsHead || record._nextRemoved !== null ||\r\n record._prevRemoved !== null;\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._addToRemovals = function (record) {\r\n // todo(vicb) assert\r\n // assert(record._next == null);\r\n // assert(record._nextAdded == null);\r\n // assert(record._nextChanged == null);\r\n // assert(record._nextRemoved == null);\r\n // assert(record._prevRemoved == null);\r\n if (this._removalsHead === null) {\r\n this._removalsHead = this._removalsTail = record;\r\n }\r\n else {\r\n this._removalsTail._nextRemoved = record;\r\n record._prevRemoved = this._removalsTail;\r\n this._removalsTail = record;\r\n }\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._removeFromSeq = function (prev, record) {\r\n var next = record._next;\r\n if (prev === null) {\r\n this._mapHead = next;\r\n }\r\n else {\r\n prev._next = next;\r\n }\r\n // todo(vicb) assert\r\n // assert((() {\r\n // record._next = null;\r\n // return true;\r\n //})());\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._removeFromRemovals = function (record) {\r\n // todo(vicb) assert\r\n // assert(record._next == null);\r\n // assert(record._nextAdded == null);\r\n // assert(record._nextChanged == null);\r\n var prev = record._prevRemoved;\r\n var next = record._nextRemoved;\r\n if (prev === null) {\r\n this._removalsHead = next;\r\n }\r\n else {\r\n prev._nextRemoved = next;\r\n }\r\n if (next === null) {\r\n this._removalsTail = prev;\r\n }\r\n else {\r\n next._prevRemoved = prev;\r\n }\r\n record._prevRemoved = record._nextRemoved = null;\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._addToAdditions = function (record) {\r\n // todo(vicb): assert\r\n // assert(record._next == null);\r\n // assert(record._nextAdded == null);\r\n // assert(record._nextChanged == null);\r\n // assert(record._nextRemoved == null);\r\n // assert(record._prevRemoved == null);\r\n if (this._additionsHead === null) {\r\n this._additionsHead = this._additionsTail = record;\r\n }\r\n else {\r\n this._additionsTail._nextAdded = record;\r\n this._additionsTail = record;\r\n }\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._addToChanges = function (record) {\r\n // todo(vicb) assert\r\n // assert(record._nextAdded == null);\r\n // assert(record._nextChanged == null);\r\n // assert(record._nextRemoved == null);\r\n // assert(record._prevRemoved == null);\r\n if (this._changesHead === null) {\r\n this._changesHead = this._changesTail = record;\r\n }\r\n else {\r\n this._changesTail._nextChanged = record;\r\n this._changesTail = record;\r\n }\r\n };\r\n DefaultKeyValueDiffer.prototype.toString = function () {\r\n var items = [];\r\n var previous = [];\r\n var changes = [];\r\n var additions = [];\r\n var removals = [];\r\n var record;\r\n for (record = this._mapHead; record !== null; record = record._next) {\r\n items.push(lang_1.stringify(record));\r\n }\r\n for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\r\n previous.push(lang_1.stringify(record));\r\n }\r\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\r\n changes.push(lang_1.stringify(record));\r\n }\r\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\r\n additions.push(lang_1.stringify(record));\r\n }\r\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\r\n removals.push(lang_1.stringify(record));\r\n }\r\n return \"map: \" + items.join(', ') + \"\\n\" + \"previous: \" + previous.join(', ') + \"\\n\" +\r\n \"additions: \" + additions.join(', ') + \"\\n\" + \"changes: \" + changes.join(', ') + \"\\n\" +\r\n \"removals: \" + removals.join(', ') + \"\\n\";\r\n };\r\n /** @internal */\r\n DefaultKeyValueDiffer.prototype._forEach = function (obj, fn) {\r\n if (obj instanceof Map) {\r\n obj.forEach(fn);\r\n }\r\n else {\r\n collection_1.StringMapWrapper.forEach(obj, fn);\r\n }\r\n };\r\n return DefaultKeyValueDiffer;\r\n})();\r\nexports.DefaultKeyValueDiffer = DefaultKeyValueDiffer;\r\nvar KeyValueChangeRecord = (function () {\r\n function KeyValueChangeRecord(key) {\r\n this.key = key;\r\n this.previousValue = null;\r\n this.currentValue = null;\r\n /** @internal */\r\n this._nextPrevious = null;\r\n /** @internal */\r\n this._next = null;\r\n /** @internal */\r\n this._nextAdded = null;\r\n /** @internal */\r\n this._nextRemoved = null;\r\n /** @internal */\r\n this._prevRemoved = null;\r\n /** @internal */\r\n this._nextChanged = null;\r\n }\r\n KeyValueChangeRecord.prototype.toString = function () {\r\n return lang_1.looseIdentical(this.previousValue, this.currentValue) ?\r\n lang_1.stringify(this.key) :\r\n (lang_1.stringify(this.key) + '[' + lang_1.stringify(this.previousValue) + '->' +\r\n lang_1.stringify(this.currentValue) + ']');\r\n };\r\n return KeyValueChangeRecord;\r\n})();\r\nexports.KeyValueChangeRecord = KeyValueChangeRecord;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF9rZXl2YWx1ZV9kaWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2RpZmZlcnMvZGVmYXVsdF9rZXl2YWx1ZV9kaWZmZXIudHMiXSwibmFtZXMiOlsiRGVmYXVsdEtleVZhbHVlRGlmZmVyRmFjdG9yeSIsIkRlZmF1bHRLZXlWYWx1ZURpZmZlckZhY3RvcnkuY29uc3RydWN0b3IiLCJEZWZhdWx0S2V5VmFsdWVEaWZmZXJGYWN0b3J5LnN1cHBvcnRzIiwiRGVmYXVsdEtleVZhbHVlRGlmZmVyRmFjdG9yeS5jcmVhdGUiLCJEZWZhdWx0S2V5VmFsdWVEaWZmZXIiLCJEZWZhdWx0S2V5VmFsdWVEaWZmZXIuY29uc3RydWN0b3IiLCJEZWZhdWx0S2V5VmFsdWVEaWZmZXIuaXNEaXJ0eSIsIkRlZmF1bHRLZXlWYWx1ZURpZmZlci5mb3JFYWNoSXRlbSIsIkRlZmF1bHRLZXlWYWx1ZURpZmZlci5mb3JFYWNoUHJldmlvdXNJdGVtIiwiRGVmYXVsdEtleVZhbHVlRGlmZmVyLmZvckVhY2hDaGFuZ2VkSXRlbSIsIkRlZmF1bHRLZXlWYWx1ZURpZmZlci5mb3JFYWNoQWRkZWRJdGVtIiwiRGVmYXVsdEtleVZhbHVlRGlmZmVyLmZvckVhY2hSZW1vdmVkSXRlbSIsIkRlZmF1bHRLZXlWYWx1ZURpZmZlci5kaWZmIiwiRGVmYXVsdEtleVZhbHVlRGlmZmVyLm9uRGVzdHJveSIsIkRlZmF1bHRLZXlWYWx1ZURpZmZlci5jaGVjayIsIkRlZmF1bHRLZXlWYWx1ZURpZmZlci5fcmVzZXQiLCJEZWZhdWx0S2V5VmFsdWVEaWZmZXIuX3RydW5jYXRlIiwiRGVmYXVsdEtleVZhbHVlRGlmZmVyLl9pc0luUmVtb3ZhbHMiLCJEZWZhdWx0S2V5VmFsdWVEaWZmZXIuX2FkZFRvUmVtb3ZhbHMiLCJEZWZhdWx0S2V5VmFsdWVEaWZmZXIuX3JlbW92ZUZyb21TZXEiLCJEZWZhdWx0S2V5VmFsdWVEaWZmZXIuX3JlbW92ZUZyb21SZW1vdmFscyIsIkRlZmF1bHRLZXlWYWx1ZURpZmZlci5fYWRkVG9BZGRpdGlvbnMiLCJEZWZhdWx0S2V5VmFsdWVEaWZmZXIuX2FkZFRvQ2hhbmdlcyIsIkRlZmF1bHRLZXlWYWx1ZURpZmZlci50b1N0cmluZyIsIkRlZmF1bHRLZXlWYWx1ZURpZmZlci5fZm9yRWFjaCIsIktleVZhbHVlQ2hhbmdlUmVjb3JkIiwiS2V5VmFsdWVDaGFuZ2VSZWNvcmQuY29uc3RydWN0b3IiLCJLZXlWYWx1ZUNoYW5nZVJlY29yZC50b1N0cmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsMkJBQTJDLGdDQUFnQyxDQUFDLENBQUE7QUFDNUUscUJBQW9FLDBCQUEwQixDQUFDLENBQUE7QUFDL0YsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFJN0Q7SUFBQUE7SUFLQUMsQ0FBQ0E7SUFIQ0QsK0NBQVFBLEdBQVJBLFVBQVNBLEdBQVFBLElBQWFFLE1BQU1BLENBQUNBLEdBQUdBLFlBQVlBLEdBQUdBLElBQUlBLGlCQUFVQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUU3RUYsNkNBQU1BLEdBQU5BLFVBQU9BLEtBQXdCQSxJQUFvQkcsTUFBTUEsQ0FBQ0EsSUFBSUEscUJBQXFCQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUoxRkg7UUFBQ0EsWUFBS0EsRUFBRUE7O3FDQUtQQTtJQUFEQSxtQ0FBQ0E7QUFBREEsQ0FBQ0EsQUFMRCxJQUtDO0FBSlksb0NBQTRCLCtCQUl4QyxDQUFBO0FBRUQ7SUFBQUk7UUFDVUMsYUFBUUEsR0FBa0JBLElBQUlBLEdBQUdBLEVBQUVBLENBQUNBO1FBQ3BDQSxhQUFRQSxHQUF5QkEsSUFBSUEsQ0FBQ0E7UUFDdENBLHFCQUFnQkEsR0FBeUJBLElBQUlBLENBQUNBO1FBQzlDQSxpQkFBWUEsR0FBeUJBLElBQUlBLENBQUNBO1FBQzFDQSxpQkFBWUEsR0FBeUJBLElBQUlBLENBQUNBO1FBQzFDQSxtQkFBY0EsR0FBeUJB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QUNBLElBQUlBLENBQUNBLGdCQUFTQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNsQ0EsQ0FBQ0E7UUFDREEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsTUFBTUEsR0FBR0EsSUFBSUEsQ0FBQ0EsY0FBY0EsRUFBRUEsTUFBTUEsS0FBS0EsSUFBSUEsRUFBRUEsTUFBTUEsR0FBR0EsTUFBTUEsQ0FBQ0EsVUFBVUEsRUFBRUEsQ0FBQ0E7WUFDL0VBLFNBQVNBLENBQUNBLElBQUlBLENBQUNBLGdCQUFTQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNwQ0EsQ0FBQ0E7UUFDREEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsTUFBTUEsR0FBR0EsSUFBSUEsQ0FBQ0EsYUFBYUEsRUFBRUEsTUFBTUEsS0FBS0EsSUFBSUEsRUFBRUEsTUFBTUEsR0FBR0EsTUFBTUEsQ0FBQ0EsWUFBWUEsRUFBRUEsQ0FBQ0E7WUFDaEZBLFFBQVFBLENBQUNBLElBQUlBLENBQUNBLGdCQUFTQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNuQ0EsQ0FBQ0E7UUFFREEsTUFBTUEsQ0FBQ0EsT0FBT0EsR0FBR0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsSUFBSUEsR0FBR0EsWUFBWUEsR0FBR0EsUUFBUUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsSUFBSUE7WUFDN0VBLGFBQWFBLEdBQUdBLFNBQVNBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLEdBQUdBLElBQUlBLEdBQUdBLFdBQVdBLEdBQUdBLE9BQU9BLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLEdBQUdBLElBQUlBO1lBQ3JGQSxZQUFZQSxHQUFHQSxRQUFRQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtJQUNuREEsQ0FBQ0E7SUFFRG5CLGdCQUFnQkE7SUFDaEJBLHdDQUFRQSxHQUFSQSxVQUFTQSxHQUFHQSxFQUFFQSxFQUFZQTtRQUN4Qm9CLEVBQUVBLENBQUNBLENBQUNBLEdBQUdBLFlBQVlBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBO1lBQ1BBLEdBQUlBLENBQUNBLE9BQU9BLENBQU1BLEVBQUVBLENBQUNBLENBQUNBO1FBQ3hDQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUNOQSw2QkFBZ0JBLENBQUNBLE9BQU9BLENBQUNBLEdBQUdBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBO1FBQ3BDQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUNIcEIsNEJBQUNBO0FBQURBLENBQUNBLEFBaFVELElBZ1VDO0FBaFVZLDZCQUFxQix3QkFnVWpDLENBQUE7QUFHRDtJQWlCRXFCLDhCQUFtQkEsR0FBUUE7UUFBUkMsUUFBR0EsR0FBSEEsR0FBR0EsQ0FBS0E7UUFoQjNCQSxrQkFBYUEsR0FBUUEsSUFBSUEsQ0FBQ0E7UUFDMUJBLGlCQUFZQSxHQUFRQSxJQUFJQSxDQUFDQTtRQUV6QkEsZ0JBQWdCQTtRQUNoQkEsa0JBQWFBLEdBQXlCQSxJQUFJQSxDQUFDQTtRQUMzQ0EsZ0JBQWdCQTtRQUNoQkEsVUFBS0EsR0FBeUJBLElBQUlBLENBQUNBO1FBQ25DQSxnQkFBZ0JBO1FBQ2hCQSxlQUFVQSxHQUF5QkEsSUFBSUEsQ0FBQ0E7UUFDeENBLGdCQUFnQkE7UUFDaEJBLGlCQUFZQSxHQUF5QkEsSUFBSUEsQ0FBQ0E7UUFDMUNBLGdCQUFnQkE7UUFDaEJBLGlCQUFZQSxHQUF5QkEsSUFBSUEsQ0FBQ0E7UUFDMUNBLGdCQUFnQkE7UUFDaEJBLGlCQUFZQSxHQUF5QkEsSUFBSUEsQ0FBQ0E7SUFFWkEsQ0FBQ0E7SUFFL0JELHVDQUFRQSxHQUFSQTtRQUNFRSxNQUFNQSxDQUFDQSxxQkFBY0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsYUFBYUEsRUFBRUEsSUFBSUEsQ0FBQ0EsWUFBWUEsQ0FBQ0E7WUFDakRBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQTtZQUNuQkEsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLEdBQUdBLEdBQUdBLEdBQUdBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxhQUFhQSxDQUFDQSxHQUFHQSxJQUFJQTtnQkFDaEVBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxZQUFZQSxDQUFDQSxHQUFHQSxHQUFHQSxDQUFDQSxDQUFDQTtJQUNsREEsQ0FBQ0E7SUFDSEYsMkJBQUNBO0FBQURBLENBQUNBLEFBekJELElBeUJDO0FBekJZLDRCQUFvQix1QkF5QmhDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01hcFdyYXBwZXIsIFN0cmluZ01hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge3N0cmluZ2lmeSwgbG9vc2VJZGVudGljYWwsIGlzSnNPYmplY3QsIENPTlNULCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZn0gZnJvbSAnLi4vY2hhbmdlX2RldGVjdG9yX3JlZic7XG5pbXBvcnQge0tleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlckZhY3Rvcnl9IGZyb20gJy4uL2RpZmZlcnMva2V5dmFsdWVfZGlmZmVycyc7XG5cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgRGVmYXVsdEtleVZhbHVlRGlmZmVyRmFjdG9yeSBpbXBsZW1lbnRzIEtleVZhbHVlRGlmZmVyRmFjdG9yeSB7XG4gIHN1cHBvcnRzKG9iajogYW55KTogYm9vbGVhbiB7IHJldHVybiBvYmogaW5zdGFuY2VvZiBNYXAgfHwgaXNKc09iamVjdChvYmopOyB9XG5cbiAgY3JlYXRlKGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IEtleVZhbHVlRGlmZmVyIHsgcmV0dXJuIG5ldyBEZWZhdWx0S2V5VmFsdWVEaWZmZXIoKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgRGVmYXVsdEtleVZhbHVlRGlmZmVyIGltcGxlbWVudHMgS2V5VmFsdWVEaWZmZXIge1xuICBwcml2YXRlIF9yZWNvcmRzOiBNYXA8YW55LCBhbnk+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIF9tYXBIZWFkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCA9IG51bGw7XG4gIHByaXZhdGUgX3ByZXZpb3VzTWFwSGVhZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuICBwcml2YXRlIF9jaGFuZ2VzSGVhZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuICBwcml2YXRlIF9jaGFuZ2VzVGFpbDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuICBwcml2YXRlIF9hZGRpdGlvbnNIZWFkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCA9IG51bGw7XG4gIHByaXZhdGUgX2FkZGl0aW9uc1RhaWw6IEtleVZhbHVlQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVtb3ZhbHNIZWFkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCA9IG51bGw7XG4gIHByaXZhdGUgX3JlbW92YWxzVGFpbDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuXG4gIGdldCBpc0RpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hZGRpdGlvbnNIZWFkICE9PSBudWxsIHx8IHRoaXMuX2NoYW5nZXNIZWFkICE9PSBudWxsIHx8XG4gICAgICAgICAgIHRoaXMuX3JlbW92YWxzSGVhZCAhPT0gbnVsbDtcbiAgfVxuXG4gIGZvckVhY2hJdGVtKGZuOiBGdW5jdGlvbikge1xuICAgIHZhciByZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkO1xuICAgIGZvciAocmVjb3JkID0gdGhpcy5fbWFwSGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHQpIHtcbiAgICAgIGZuKHJlY29yZCk7XG4gICAgfVxuICB9XG5cbiAgZm9yRWFjaFByZXZpb3VzSXRlbShmbjogRnVuY3Rpb24pIHtcbiAgICB2YXIgcmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDtcbiAgICBmb3IgKHJlY29yZCA9IHRoaXMuX3ByZXZpb3VzTWFwSGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHRQcmV2aW91cykge1xuICAgICAgZm4ocmVjb3JkKTtcbiAgICB9XG4gIH1cblxuICBmb3JFYWNoQ2hhbmdlZEl0ZW0oZm46IEZ1bmN0aW9uKSB7XG4gICAgdmFyIHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ7XG4gICAgZm9yIChyZWNvcmQgPSB0aGlzLl9jaGFuZ2VzSGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHRDaGFuZ2VkKSB7XG4gICAgICBmbihyZWNvcmQpO1xuICAgIH1cbiAgfVxuXG4gIGZvckVhY2hBZGRlZEl0ZW0oZm46IEZ1bmN0aW9uKSB7XG4gICAgdmFyIHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ7XG4gICAgZm9yIChyZWNvcmQgPSB0aGlzLl9hZGRpdGlvbnNIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dEFkZGVkKSB7XG4gICAgICBmbihyZWNvcmQpO1xuICAgIH1cbiAgfVxuXG4gIGZvckVhY2hSZW1vdmVkSXRlbShmbjogRnVuY3Rpb24pIHtcbiAgICB2YXIgcmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDtcbiAgICBmb3IgKHJlY29yZCA9IHRoaXMuX3JlbW92YWxzSGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHRSZW1vdmVkKSB7XG4gICAgICBmbihyZWNvcmQpO1xuICAgIH1cbiAgfVxuXG4gIGRpZmYobWFwOiBNYXA8YW55LCBhbnk+KTogYW55IHtcbiAgICBpZiAoaXNCbGFuayhtYXApKSBtYXAgPSBNYXBXcmFwcGVyLmNyZWF0ZUZyb21QYWlycyhbXSk7XG4gICAgaWYgKCEobWFwIGluc3RhbmNlb2YgTWFwIHx8IGlzSnNPYmplY3QobWFwKSkpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBFcnJvciB0cnlpbmcgdG8gZGlmZiAnJHttYXB9J2ApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNoZWNrKG1hcCkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBvbkRlc3Ryb3koKSB7fVxuXG4gIGNoZWNrKG1hcDogTWFwPGFueSwgYW55Pik6IGJvb2xlYW4ge1xuICAgIHRoaXMuX3Jlc2V0KCk7XG4gICAgdmFyIHJlY29yZHMgPSB0aGlzLl9yZWNvcmRzO1xuICAgIHZhciBvbGRTZXFSZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkID0gdGhpcy5fbWFwSGVhZDtcbiAgICB2YXIgbGFzdE9sZFNlcVJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSBudWxsO1xuICAgIHZhciBsYXN0TmV3U2VxUmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCA9IG51bGw7XG4gICAgdmFyIHNlcUNoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHRoaXMuX2ZvckVhY2gobWFwLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgdmFyIG5ld1NlcVJlY29yZDtcbiAgICAgIGlmIChvbGRTZXFSZWNvcmQgIT09IG51bGwgJiYga2V5ID09PSBvbGRTZXFSZWNvcmQua2V5KSB7XG4gICAgICAgIG5ld1NlcVJlY29yZCA9IG9sZFNlcVJlY29yZDtcbiAgICAgICAgaWYgKCFsb29zZUlkZW50aWNhbCh2YWx1ZSwgb2xkU2VxUmVjb3JkLmN1cnJlbnRWYWx1ZSkpIHtcbiAgICAgICAgICBvbGRTZXFSZWNvcmQucHJldmlvdXNWYWx1ZSA9IG9sZFNlcVJlY29yZC5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgb2xkU2VxUmVjb3JkLmN1cnJlbnRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMuX2FkZFRvQ2hhbmdlcyhvbGRTZXFSZWNvcmQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXFDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgaWYgKG9sZFNlcVJlY29yZCAhPT0gbnVsbCkge1xuICAgICAgICAgIG9sZFNlcVJlY29yZC5fbmV4dCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fcmVtb3ZlRnJvbVNlcShsYXN0T2xkU2VxUmVjb3JkLCBvbGRTZXFSZWNvcmQpO1xuICAgICAgICAgIHRoaXMuX2FkZFRvUmVtb3ZhbHMob2xkU2VxUmVjb3JkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVjb3Jkcy5oYXMoa2V5KSkge1xuICAgICAgICAgIG5ld1NlcVJlY29yZCA9IHJlY29yZHMuZ2V0KGtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3U2VxUmVjb3JkID0gbmV3IEtleVZhbHVlQ2hhbmdlUmVjb3JkKGtleSk7XG4gICAgICAgICAgcmVjb3Jkcy5zZXQoa2V5LCBuZXdTZXFSZWNvcmQpO1xuICAgICAgICAgIG5ld1NlcVJlY29yZC5jdXJyZW50VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLl9hZGRUb0FkZGl0aW9ucyhuZXdTZXFSZWNvcmQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzZXFDaGFuZ2VkKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc0luUmVtb3ZhbHMobmV3U2VxUmVjb3JkKSkge1xuICAgICAgICAgIHRoaXMuX3JlbW92ZUZyb21SZW1vdmFscyhuZXdTZXFSZWNvcmQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsYXN0TmV3U2VxUmVjb3JkID09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLl9tYXBIZWFkID0gbmV3U2VxUmVjb3JkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxhc3ROZXdTZXFSZWNvcmQuX25leHQgPSBuZXdTZXFSZWNvcmQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxhc3RPbGRTZXFSZWNvcmQgPSBvbGRTZXFSZWNvcmQ7XG4gICAgICBsYXN0TmV3U2VxUmVjb3JkID0gbmV3U2VxUmVjb3JkO1xuICAgICAgb2xkU2VxUmVjb3JkID0gb2xkU2VxUmVjb3JkID09PSBudWxsID8gbnVsbCA6IG9sZFNlcVJlY29yZC5fbmV4dDtcbiAgICB9KTtcbiAgICB0aGlzLl90cnVuY2F0ZShsYXN0T2xkU2VxUmVjb3JkLCBvbGRTZXFSZWNvcmQpO1xuICAgIHJldHVybiB0aGlzLmlzRGlydHk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9yZXNldCgpIHtcbiAgICBpZiAodGhpcy5pc0RpcnR5KSB7XG4gICAgICB2YXIgcmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDtcbiAgICAgIC8vIFJlY29yZCB0aGUgc3RhdGUgb2YgdGhlIG1hcHBpbmdcbiAgICAgIGZvciAocmVjb3JkID0gdGhpcy5fcHJldmlvdXNNYXBIZWFkID0gdGhpcy5fbWFwSGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHQpIHtcbiAgICAgICAgcmVjb3JkLl9uZXh0UHJldmlvdXMgPSByZWNvcmQuX25leHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAocmVjb3JkID0gdGhpcy5fY2hhbmdlc0hlYWQ7IHJlY29yZCAhPT0gbnVsbDsgcmVjb3JkID0gcmVjb3JkLl9uZXh0Q2hhbmdlZCkge1xuICAgICAgICByZWNvcmQucHJldmlvdXNWYWx1ZSA9IHJlY29yZC5jdXJyZW50VmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGZvciAocmVjb3JkID0gdGhpcy5fYWRkaXRpb25zSGVhZDsgcmVjb3JkICE9IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dEFkZGVkKSB7XG4gICAgICAgIHJlY29yZC5wcmV2aW91c1ZhbHVlID0gcmVjb3JkLmN1cnJlbnRWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gdG9kbyh2aWNiKSBvbmNlIGFzc2VydCBpcyBzdXBwb3J0ZWRcbiAgICAgIC8vIGFzc2VydCgoKSB7XG4gICAgICAvLyAgdmFyIHIgPSBfY2hhbmdlc0hlYWQ7XG4gICAgICAvLyAgd2hpbGUgKHIgIT0gbnVsbCkge1xuICAgICAgLy8gICAgdmFyIG5leHRSZWNvcmQgPSByLl9uZXh0Q2hhbmdlZDtcbiAgICAgIC8vICAgIHIuX25leHRDaGFuZ2VkID0gbnVsbDtcbiAgICAgIC8vICAgIHIgPSBuZXh0UmVjb3JkO1xuICAgICAgLy8gIH1cbiAgICAgIC8vXG4gICAgICAvLyAgciA9IF9hZGRpdGlvbnNIZWFkO1xuICAgICAgLy8gIHdoaWxlIChyICE9IG51bGwpIHtcbiAgICAgIC8vICAgIHZhciBuZXh0UmVjb3JkID0gci5fbmV4dEFkZGVkO1xuICAgICAgLy8gICAgci5fbmV4dEFkZGVkID0gbnVsbDtcbiAgICAgIC8vICAgIHIgPSBuZXh0UmVjb3JkO1xuICAgICAgLy8gIH1cbiAgICAgIC8vXG4gICAgICAvLyAgciA9IF9yZW1vdmFsc0hlYWQ7XG4gICAgICAvLyAgd2hpbGUgKHIgIT0gbnVsbCkge1xuICAgICAgLy8gICAgdmFyIG5leHRSZWNvcmQgPSByLl9uZXh0UmVtb3ZlZDtcbiAgICAgIC8vICAgIHIuX25leHRSZW1vdmVkID0gbnVsbDtcbiAgICAgIC8vICAgIHIgPSBuZXh0UmVjb3JkO1xuICAgICAgLy8gIH1cbiAgICAgIC8vXG4gICAgICAvLyAgcmV0dXJuIHRydWU7XG4gICAgICAvL30pO1xuICAgICAgdGhpcy5fY2hhbmdlc0hlYWQgPSB0aGlzLl9jaGFuZ2VzVGFpbCA9IG51bGw7XG4gICAgICB0aGlzLl9hZGRpdGlvbnNIZWFkID0gdGhpcy5fYWRkaXRpb25zVGFpbCA9IG51bGw7XG4gICAgICB0aGlzLl9yZW1vdmFsc0hlYWQgPSB0aGlzLl9yZW1vdmFsc1RhaWwgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3RydW5jYXRlKGxhc3RSZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkLCByZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkKSB7XG4gICAgd2hpbGUgKHJlY29yZCAhPT0gbnVsbCkge1xuICAgICAgaWYgKGxhc3RSZWNvcmQgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fbWFwSGVhZCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYXN0UmVjb3JkLl9uZXh0ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBuZXh0UmVjb3JkID0gcmVjb3JkLl9uZXh0O1xuICAgICAgLy8gdG9kbyh2aWNiKSBhc3NlcnRcbiAgICAgIC8vIGFzc2VydCgoKCkge1xuICAgICAgLy8gIHJlY29yZC5fbmV4dCA9IG51bGw7XG4gICAgICAvLyAgcmV0dXJuIHRydWU7XG4gICAgICAvL30pKTtcbiAgICAgIHRoaXMuX2FkZFRvUmVtb3ZhbHMocmVjb3JkKTtcbiAgICAgIGxhc3RSZWNvcmQgPSByZWNvcmQ7XG4gICAgICByZWNvcmQgPSBuZXh0UmVjb3JkO1xuICAgIH1cblxuICAgIGZvciAodmFyIHJlYzogS2V5VmFsdWVDaGFuZ2VSZWNvcmQgPSB0aGlzLl9yZW1vdmFsc0hlYWQ7IHJlYyAhPT0gbnVsbDsgcmVjID0gcmVjLl9uZXh0UmVtb3ZlZCkge1xuICAgICAgcmVjLnByZXZpb3VzVmFsdWUgPSByZWMuY3VycmVudFZhbHVlO1xuICAgICAgcmVjLmN1cnJlbnRWYWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLl9yZWNvcmRzLmRlbGV0ZShyZWMua2V5KTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9pc0luUmVtb3ZhbHMocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCkge1xuICAgIHJldHVybiByZWNvcmQgPT09IHRoaXMuX3JlbW92YWxzSGVhZCB8fCByZWNvcmQuX25leHRSZW1vdmVkICE9PSBudWxsIHx8XG4gICAgICAgICAgIHJlY29yZC5fcHJldlJlbW92ZWQgIT09IG51bGw7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9hZGRUb1JlbW92YWxzKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQpIHtcbiAgICAvLyB0b2RvKHZpY2IpIGFzc2VydFxuICAgIC8vIGFzc2VydChyZWNvcmQuX25leHQgPT0gbnVsbCk7XG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fbmV4dEFkZGVkID09IG51bGwpO1xuICAgIC8vIGFzc2VydChyZWNvcmQuX25leHRDaGFuZ2VkID09IG51bGwpO1xuICAgIC8vIGFzc2VydChyZWNvcmQuX25leHRSZW1vdmVkID09IG51bGwpO1xuICAgIC8vIGFzc2VydChyZWNvcmQuX3ByZXZSZW1vdmVkID09IG51bGwpO1xuICAgIGlmICh0aGlzLl9yZW1vdmFsc0hlYWQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3JlbW92YWxzSGVhZCA9IHRoaXMuX3JlbW92YWxzVGFpbCA9IHJlY29yZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcmVtb3ZhbHNUYWlsLl9uZXh0UmVtb3ZlZCA9IHJlY29yZDtcbiAgICAgIHJlY29yZC5fcHJldlJlbW92ZWQgPSB0aGlzLl9yZW1vdmFsc1RhaWw7XG4gICAgICB0aGlzLl9yZW1vdmFsc1RhaWwgPSByZWNvcmQ7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcmVtb3ZlRnJvbVNlcShwcmV2OiBLZXlWYWx1ZUNoYW5nZVJlY29yZCwgcmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCkge1xuICAgIHZhciBuZXh0ID0gcmVjb3JkLl9uZXh0O1xuICAgIGlmIChwcmV2ID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9tYXBIZWFkID0gbmV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJldi5fbmV4dCA9IG5leHQ7XG4gICAgfVxuICAgIC8vIHRvZG8odmljYikgYXNzZXJ0XG4gICAgLy8gYXNzZXJ0KCgoKSB7XG4gICAgLy8gIHJlY29yZC5fbmV4dCA9IG51bGw7XG4gICAgLy8gIHJldHVybiB0cnVlO1xuICAgIC8vfSkoKSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9yZW1vdmVGcm9tUmVtb3ZhbHMocmVjb3JkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCkge1xuICAgIC8vIHRvZG8odmljYikgYXNzZXJ0XG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fbmV4dCA9PSBudWxsKTtcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0QWRkZWQgPT0gbnVsbCk7XG4gICAgLy8gYXNzZXJ0KHJlY29yZC5fbmV4dENoYW5nZWQgPT0gbnVsbCk7XG5cbiAgICB2YXIgcHJldiA9IHJlY29yZC5fcHJldlJlbW92ZWQ7XG4gICAgdmFyIG5leHQgPSByZWNvcmQuX25leHRSZW1vdmVkO1xuICAgIGlmIChwcmV2ID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9yZW1vdmFsc0hlYWQgPSBuZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmV2Ll9uZXh0UmVtb3ZlZCA9IG5leHQ7XG4gICAgfVxuICAgIGlmIChuZXh0ID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9yZW1vdmFsc1RhaWwgPSBwcmV2O1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0Ll9wcmV2UmVtb3ZlZCA9IHByZXY7XG4gICAgfVxuICAgIHJlY29yZC5fcHJldlJlbW92ZWQgPSByZWNvcmQuX25leHRSZW1vdmVkID0gbnVsbDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FkZFRvQWRkaXRpb25zKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQpIHtcbiAgICAvLyB0b2RvKHZpY2IpOiBhc3NlcnRcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0ID09IG51bGwpO1xuICAgIC8vIGFzc2VydChyZWNvcmQuX25leHRBZGRlZCA9PSBudWxsKTtcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0Q2hhbmdlZCA9PSBudWxsKTtcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0UmVtb3ZlZCA9PSBudWxsKTtcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9wcmV2UmVtb3ZlZCA9PSBudWxsKTtcbiAgICBpZiAodGhpcy5fYWRkaXRpb25zSGVhZCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fYWRkaXRpb25zSGVhZCA9IHRoaXMuX2FkZGl0aW9uc1RhaWwgPSByZWNvcmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZCA9IHJlY29yZDtcbiAgICAgIHRoaXMuX2FkZGl0aW9uc1RhaWwgPSByZWNvcmQ7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfYWRkVG9DaGFuZ2VzKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQpIHtcbiAgICAvLyB0b2RvKHZpY2IpIGFzc2VydFxuICAgIC8vIGFzc2VydChyZWNvcmQuX25leHRBZGRlZCA9PSBudWxsKTtcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0Q2hhbmdlZCA9PSBudWxsKTtcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9uZXh0UmVtb3ZlZCA9PSBudWxsKTtcbiAgICAvLyBhc3NlcnQocmVjb3JkLl9wcmV2UmVtb3ZlZCA9PSBudWxsKTtcbiAgICBpZiAodGhpcy5fY2hhbmdlc0hlYWQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2NoYW5nZXNIZWFkID0gdGhpcy5fY2hhbmdlc1RhaWwgPSByZWNvcmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NoYW5nZXNUYWlsLl9uZXh0Q2hhbmdlZCA9IHJlY29yZDtcbiAgICAgIHRoaXMuX2NoYW5nZXNUYWlsID0gcmVjb3JkO1xuICAgIH1cbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgdmFyIGl0ZW1zID0gW107XG4gICAgdmFyIHByZXZpb3VzID0gW107XG4gICAgdmFyIGNoYW5nZXMgPSBbXTtcbiAgICB2YXIgYWRkaXRpb25zID0gW107XG4gICAgdmFyIHJlbW92YWxzID0gW107XG4gICAgdmFyIHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ7XG5cbiAgICBmb3IgKHJlY29yZCA9IHRoaXMuX21hcEhlYWQ7IHJlY29yZCAhPT0gbnVsbDsgcmVjb3JkID0gcmVjb3JkLl9uZXh0KSB7XG4gICAgICBpdGVtcy5wdXNoKHN0cmluZ2lmeShyZWNvcmQpKTtcbiAgICB9XG4gICAgZm9yIChyZWNvcmQgPSB0aGlzLl9wcmV2aW91c01hcEhlYWQ7IHJlY29yZCAhPT0gbnVsbDsgcmVjb3JkID0gcmVjb3JkLl9uZXh0UHJldmlvdXMpIHtcbiAgICAgIHByZXZpb3VzLnB1c2goc3RyaW5naWZ5KHJlY29yZCkpO1xuICAgIH1cbiAgICBmb3IgKHJlY29yZCA9IHRoaXMuX2NoYW5nZXNIZWFkOyByZWNvcmQgIT09IG51bGw7IHJlY29yZCA9IHJlY29yZC5fbmV4dENoYW5nZWQpIHtcbiAgICAgIGNoYW5nZXMucHVzaChzdHJpbmdpZnkocmVjb3JkKSk7XG4gICAgfVxuICAgIGZvciAocmVjb3JkID0gdGhpcy5fYWRkaXRpb25zSGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHRBZGRlZCkge1xuICAgICAgYWRkaXRpb25zLnB1c2goc3RyaW5naWZ5KHJlY29yZCkpO1xuICAgIH1cbiAgICBmb3IgKHJlY29yZCA9IHRoaXMuX3JlbW92YWxzSGVhZDsgcmVjb3JkICE9PSBudWxsOyByZWNvcmQgPSByZWNvcmQuX25leHRSZW1vdmVkKSB7XG4gICAgICByZW1vdmFscy5wdXNoKHN0cmluZ2lmeShyZWNvcmQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJtYXA6IFwiICsgaXRlbXMuam9pbignLCAnKSArIFwiXFxuXCIgKyBcInByZXZpb3VzOiBcIiArIHByZXZpb3VzLmpvaW4oJywgJykgKyBcIlxcblwiICtcbiAgICAgICAgICAgXCJhZGRpdGlvbnM6IFwiICsgYWRkaXRpb25zLmpvaW4oJywgJykgKyBcIlxcblwiICsgXCJjaGFuZ2VzOiBcIiArIGNoYW5nZXMuam9pbignLCAnKSArIFwiXFxuXCIgK1xuICAgICAgICAgICBcInJlbW92YWxzOiBcIiArIHJlbW92YWxzLmpvaW4oJywgJykgKyBcIlxcblwiO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZm9yRWFjaChvYmosIGZuOiBGdW5jdGlvbikge1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICg8TWFwPGFueSwgYW55Pj5vYmopLmZvckVhY2goPGFueT5mbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChvYmosIGZuKTtcbiAgICB9XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgS2V5VmFsdWVDaGFuZ2VSZWNvcmQge1xuICBwcmV2aW91c1ZhbHVlOiBhbnkgPSBudWxsO1xuICBjdXJyZW50VmFsdWU6IGFueSA9IG51bGw7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbmV4dFByZXZpb3VzOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCA9IG51bGw7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX25leHQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkID0gbnVsbDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbmV4dEFkZGVkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCA9IG51bGw7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX25leHRSZW1vdmVkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCA9IG51bGw7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3ByZXZSZW1vdmVkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCA9IG51bGw7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX25leHRDaGFuZ2VkOiBLZXlWYWx1ZUNoYW5nZVJlY29yZCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGtleTogYW55KSB7fVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxvb3NlSWRlbnRpY2FsKHRoaXMucHJldmlvdXNWYWx1ZSwgdGhpcy5jdXJyZW50VmFsdWUpID9cbiAgICAgICAgICAgICAgIHN0cmluZ2lmeSh0aGlzLmtleSkgOlxuICAgICAgICAgICAgICAgKHN0cmluZ2lmeSh0aGlzLmtleSkgKyAnWycgKyBzdHJpbmdpZnkodGhpcy5wcmV2aW91c1ZhbHVlKSArICctPicgK1xuICAgICAgICAgICAgICAgIHN0cmluZ2lmeSh0aGlzLmN1cnJlbnRWYWx1ZSkgKyAnXScpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar decorators_1 = require('angular2/src/core/di/decorators');\r\nvar collection_1 = require(\"angular2/src/facade/collection\");\r\nvar lang_1 = require(\"angular2/src/facade/lang\");\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\n(function (TokenType) {\r\n TokenType[TokenType[\"Character\"] = 0] = \"Character\";\r\n TokenType[TokenType[\"Identifier\"] = 1] = \"Identifier\";\r\n TokenType[TokenType[\"Keyword\"] = 2] = \"Keyword\";\r\n TokenType[TokenType[\"String\"] = 3] = \"String\";\r\n TokenType[TokenType[\"Operator\"] = 4] = \"Operator\";\r\n TokenType[TokenType[\"Number\"] = 5] = \"Number\";\r\n})(exports.TokenType || (exports.TokenType = {}));\r\nvar TokenType = exports.TokenType;\r\nvar Lexer = (function () {\r\n function Lexer() {\r\n }\r\n Lexer.prototype.tokenize = function (text) {\r\n var scanner = new _Scanner(text);\r\n var tokens = [];\r\n var token = scanner.scanToken();\r\n while (token != null) {\r\n tokens.push(token);\r\n token = scanner.scanToken();\r\n }\r\n return tokens;\r\n };\r\n Lexer = __decorate([\r\n decorators_1.Injectable(), \r\n __metadata('design:paramtypes', [])\r\n ], Lexer);\r\n return Lexer;\r\n})();\r\nexports.Lexer = Lexer;\r\nvar Token = (function () {\r\n function Token(index, type, numValue, strValue) {\r\n this.index = index;\r\n this.type = type;\r\n this.numValue = numValue;\r\n this.strValue = strValue;\r\n }\r\n Token.prototype.isCharacter = function (code) {\r\n return (this.type == TokenType.Character && this.numValue == code);\r\n };\r\n Token.prototype.isNumber = function () { return (this.type == TokenType.Number); };\r\n Token.prototype.isString = function () { return (this.type == TokenType.String); };\r\n Token.prototype.isOperator = function (operater) {\r\n return (this.type == TokenType.Operator && this.strValue == operater);\r\n };\r\n Token.prototype.isIdentifier = function () { return (this.type == TokenType.Identifier); };\r\n Token.prototype.isKeyword = function () { return (this.type == TokenType.Keyword); };\r\n Token.prototype.isKeywordVar = function () { return (this.type == TokenType.Keyword && this.strValue == \"var\"); };\r\n Token.prototype.isKeywordNull = function () { return (this.type == TokenType.Keyword && this.strValue == \"null\"); };\r\n Token.prototype.isKeywordUndefined = function () {\r\n return (this.type == TokenType.Keyword && this.strValue == \"undefined\");\r\n };\r\n Token.prototype.isKeywordTrue = function () { return (this.type == TokenType.Keyword && this.strValue == \"true\"); };\r\n Token.prototype.isKeywordFalse = function () { return (this.type == TokenType.Keyword && this.strValue == \"false\"); };\r\n Token.prototype.toNumber = function () {\r\n // -1 instead of NULL ok?\r\n return (this.type == TokenType.Number) ? this.numValue : -1;\r\n };\r\n Token.prototype.toString = function () {\r\n switch (this.type) {\r\n case TokenType.Character:\r\n case TokenType.Identifier:\r\n case TokenType.Keyword:\r\n case TokenType.Operator:\r\n case TokenType.String:\r\n return this.strValue;\r\n case TokenType.Number:\r\n return this.numValue.toString();\r\n default:\r\n return null;\r\n }\r\n };\r\n return Token;\r\n})();\r\nexports.Token = Token;\r\nfunction newCharacterToken(index, code) {\r\n return new Token(index, TokenType.Character, code, lang_1.StringWrapper.fromCharCode(code));\r\n}\r\nfunction newIdentifierToken(index, text) {\r\n return new Token(index, TokenType.Identifier, 0, text);\r\n}\r\nfunction newKeywordToken(index, text) {\r\n return new Token(index, TokenType.Keyword, 0, text);\r\n}\r\nfunction newOperatorToken(index, text) {\r\n return new Token(index, TokenType.Operator, 0, text);\r\n}\r\nfunction newStringToken(index, text) {\r\n return new Token(index, TokenType.String, 0, text);\r\n}\r\nfunction newNumberToken(index, n) {\r\n return new Token(index, TokenType.Number, n, \"\");\r\n}\r\nexports.EOF = new Token(-1, TokenType.Character, 0, \"\");\r\nexports.$EOF = 0;\r\nexports.$TAB = 9;\r\nexports.$LF = 10;\r\nexports.$VTAB = 11;\r\nexports.$FF = 12;\r\nexports.$CR = 13;\r\nexports.$SPACE = 32;\r\nexports.$BANG = 33;\r\nexports.$DQ = 34;\r\nexports.$HASH = 35;\r\nexports.$$ = 36;\r\nexports.$PERCENT = 37;\r\nexports.$AMPERSAND = 38;\r\nexports.$SQ = 39;\r\nexports.$LPAREN = 40;\r\nexports.$RPAREN = 41;\r\nexports.$STAR = 42;\r\nexports.$PLUS = 43;\r\nexports.$COMMA = 44;\r\nexports.$MINUS = 45;\r\nexports.$PERIOD = 46;\r\nexports.$SLASH = 47;\r\nexports.$COLON = 58;\r\nexports.$SEMICOLON = 59;\r\nexports.$LT = 60;\r\nexports.$EQ = 61;\r\nexports.$GT = 62;\r\nexports.$QUESTION = 63;\r\nvar $0 = 48;\r\nvar $9 = 57;\r\nvar $A = 65, $E = 69, $Z = 90;\r\nexports.$LBRACKET = 91;\r\nexports.$BACKSLASH = 92;\r\nexports.$RBRACKET = 93;\r\nvar $CARET = 94;\r\nvar $_ = 95;\r\nvar $a = 97, $e = 101, $f = 102, $n = 110, $r = 114, $t = 116, $u = 117, $v = 118, $z = 122;\r\nexports.$LBRACE = 123;\r\nexports.$BAR = 124;\r\nexports.$RBRACE = 125;\r\nvar $NBSP = 160;\r\nvar ScannerError = (function (_super) {\r\n __extends(ScannerError, _super);\r\n function ScannerError(message) {\r\n _super.call(this);\r\n this.message = message;\r\n }\r\n ScannerError.prototype.toString = function () { return this.message; };\r\n return ScannerError;\r\n})(exceptions_1.BaseException);\r\nexports.ScannerError = ScannerError;\r\nvar _Scanner = (function () {\r\n function _Scanner(input) {\r\n this.input = input;\r\n this.peek = 0;\r\n this.index = -1;\r\n this.length = input.length;\r\n this.advance();\r\n }\r\n _Scanner.prototype.advance = function () {\r\n this.peek =\r\n ++this.index >= this.length ? exports.$EOF : lang_1.StringWrapper.charCodeAt(this.input, this.index);\r\n };\r\n _Scanner.prototype.scanToken = function () {\r\n var input = this.input, length = this.length, peek = this.peek, index = this.index;\r\n // Skip whitespace.\r\n while (peek <= exports.$SPACE) {\r\n if (++index >= length) {\r\n peek = exports.$EOF;\r\n break;\r\n }\r\n else {\r\n peek = lang_1.StringWrapper.charCodeAt(input, index);\r\n }\r\n }\r\n this.peek = peek;\r\n this.index = index;\r\n if (index >= length) {\r\n return null;\r\n }\r\n // Handle identifiers and numbers.\r\n if (isIdentifierStart(peek))\r\n return this.scanIdentifier();\r\n if (isDigit(peek))\r\n return this.scanNumber(index);\r\n var start = index;\r\n switch (peek) {\r\n case exports.$PERIOD:\r\n this.advance();\r\n return isDigit(this.peek) ? this.scanNumber(start) : newCharacterToken(start, exports.$PERIOD);\r\n case exports.$LPAREN:\r\n case exports.$RPAREN:\r\n case exports.$LBRACE:\r\n case exports.$RBRACE:\r\n case exports.$LBRACKET:\r\n case exports.$RBRACKET:\r\n case exports.$COMMA:\r\n case exports.$COLON:\r\n case exports.$SEMICOLON:\r\n return this.scanCharacter(start, peek);\r\n case exports.$SQ:\r\n case exports.$DQ:\r\n return this.scanString();\r\n case exports.$HASH:\r\n case exports.$PLUS:\r\n case exports.$MINUS:\r\n case exports.$STAR:\r\n case exports.$SLASH:\r\n case exports.$PERCENT:\r\n case $CARET:\r\n return this.scanOperator(start, lang_1.StringWrapper.fromCharCode(peek));\r\n case exports.$QUESTION:\r\n return this.scanComplexOperator(start, '?', exports.$PERIOD, '.');\r\n case exports.$LT:\r\n case exports.$GT:\r\n return this.scanComplexOperator(start, lang_1.StringWrapper.fromCharCode(peek), exports.$EQ, '=');\r\n case exports.$BANG:\r\n case exports.$EQ:\r\n return this.scanComplexOperator(start, lang_1.StringWrapper.fromCharCode(peek), exports.$EQ, '=', exports.$EQ, '=');\r\n case exports.$AMPERSAND:\r\n return this.scanComplexOperator(start, '&', exports.$AMPERSAND, '&');\r\n case exports.$BAR:\r\n return this.scanComplexOperator(start, '|', exports.$BAR, '|');\r\n case $NBSP:\r\n while (isWhitespace(this.peek))\r\n this.advance();\r\n return this.scanToken();\r\n }\r\n this.error(\"Unexpected character [\" + lang_1.StringWrapper.fromCharCode(peek) + \"]\", 0);\r\n return null;\r\n };\r\n _Scanner.prototype.scanCharacter = function (start, code) {\r\n this.advance();\r\n return newCharacterToken(start, code);\r\n };\r\n _Scanner.prototype.scanOperator = function (start, str) {\r\n this.advance();\r\n return newOperatorToken(start, str);\r\n };\r\n /**\r\n * Tokenize a 2/3 char long operator\r\n *\r\n * @param start start index in the expression\r\n * @param one first symbol (always part of the operator)\r\n * @param twoCode code point for the second symbol\r\n * @param two second symbol (part of the operator when the second code point matches)\r\n * @param threeCode code point for the third symbol\r\n * @param three third symbol (part of the operator when provided and matches source expression)\r\n * @returns {Token}\r\n */\r\n _Scanner.prototype.scanComplexOperator = function (start, one, twoCode, two, threeCode, three) {\r\n this.advance();\r\n var str = one;\r\n if (this.peek == twoCode) {\r\n this.advance();\r\n str += two;\r\n }\r\n if (lang_1.isPresent(threeCode) && this.peek == threeCode) {\r\n this.advance();\r\n str += three;\r\n }\r\n return newOperatorToken(start, str);\r\n };\r\n _Scanner.prototype.scanIdentifier = function () {\r\n var start = this.index;\r\n this.advance();\r\n while (isIdentifierPart(this.peek))\r\n this.advance();\r\n var str = this.input.substring(start, this.index);\r\n if (collection_1.SetWrapper.has(KEYWORDS, str)) {\r\n return newKeywordToken(start, str);\r\n }\r\n else {\r\n return newIdentifierToken(start, str);\r\n }\r\n };\r\n _Scanner.prototype.scanNumber = function (start) {\r\n var simple = (this.index === start);\r\n this.advance(); // Skip initial digit.\r\n while (true) {\r\n if (isDigit(this.peek)) {\r\n }\r\n else if (this.peek == exports.$PERIOD) {\r\n simple = false;\r\n }\r\n else if (isExponentStart(this.peek)) {\r\n this.advance();\r\n if (isExponentSign(this.peek))\r\n this.advance();\r\n if (!isDigit(this.peek))\r\n this.error('Invalid exponent', -1);\r\n simple = false;\r\n }\r\n else {\r\n break;\r\n }\r\n this.advance();\r\n }\r\n var str = this.input.substring(start, this.index);\r\n // TODO\r\n var value = simple ? lang_1.NumberWrapper.parseIntAutoRadix(str) : lang_1.NumberWrapper.parseFloat(str);\r\n return newNumberToken(start, value);\r\n };\r\n _Scanner.prototype.scanString = function () {\r\n var start = this.index;\r\n var quote = this.peek;\r\n this.advance(); // Skip initial quote.\r\n var buffer;\r\n var marker = this.index;\r\n var input = this.input;\r\n while (this.peek != quote) {\r\n if (this.peek == exports.$BACKSLASH) {\r\n if (buffer == null)\r\n buffer = new lang_1.StringJoiner();\r\n buffer.add(input.substring(marker, this.index));\r\n this.advance();\r\n var unescapedCode;\r\n if (this.peek == $u) {\r\n // 4 character hex code for unicode character.\r\n var hex = input.substring(this.index + 1, this.index + 5);\r\n try {\r\n unescapedCode = lang_1.NumberWrapper.parseInt(hex, 16);\r\n }\r\n catch (e) {\r\n this.error(\"Invalid unicode escape [\\\\u\" + hex + \"]\", 0);\r\n }\r\n for (var i = 0; i < 5; i++) {\r\n this.advance();\r\n }\r\n }\r\n else {\r\n unescapedCode = unescape(this.peek);\r\n this.advance();\r\n }\r\n buffer.add(lang_1.StringWrapper.fromCharCode(unescapedCode));\r\n marker = this.index;\r\n }\r\n else if (this.peek == exports.$EOF) {\r\n this.error('Unterminated quote', 0);\r\n }\r\n else {\r\n this.advance();\r\n }\r\n }\r\n var last = input.substring(marker, this.index);\r\n this.advance(); // Skip terminating quote.\r\n // Compute the unescaped string value.\r\n var unescaped = last;\r\n if (buffer != null) {\r\n buffer.add(last);\r\n unescaped = buffer.toString();\r\n }\r\n return newStringToken(start, unescaped);\r\n };\r\n _Scanner.prototype.error = function (message, offset) {\r\n var position = this.index + offset;\r\n throw new ScannerError(\"Lexer Error: \" + message + \" at column \" + position + \" in expression [\" + this.input + \"]\");\r\n };\r\n return _Scanner;\r\n})();\r\nfunction isWhitespace(code) {\r\n return (code >= exports.$TAB && code <= exports.$SPACE) || (code == $NBSP);\r\n}\r\nfunction isIdentifierStart(code) {\r\n return ($a <= code && code <= $z) || ($A <= code && code <= $Z) || (code == $_) || (code == exports.$$);\r\n}\r\nfunction isIdentifier(input) {\r\n if (input.length == 0)\r\n return false;\r\n var scanner = new _Scanner(input);\r\n if (!isIdentifierStart(scanner.peek))\r\n return false;\r\n scanner.advance();\r\n while (scanner.peek !== exports.$EOF) {\r\n if (!isIdentifierPart(scanner.peek))\r\n return false;\r\n scanner.advance();\r\n }\r\n return true;\r\n}\r\nexports.isIdentifier = isIdentifier;\r\nfunction isIdentifierPart(code) {\r\n return ($a <= code && code <= $z) || ($A <= code && code <= $Z) || ($0 <= code && code <= $9) ||\r\n (code == $_) || (code == exports.$$);\r\n}\r\nfunction isDigit(code) {\r\n return $0 <= code && code <= $9;\r\n}\r\nfunction isExponentStart(code) {\r\n return code == $e || code == $E;\r\n}\r\nfunction isExponentSign(code) {\r\n return code == exports.$MINUS || code == exports.$PLUS;\r\n}\r\nfunction unescape(code) {\r\n switch (code) {\r\n case $n:\r\n return exports.$LF;\r\n case $f:\r\n return exports.$FF;\r\n case $r:\r\n return exports.$CR;\r\n case $t:\r\n return exports.$TAB;\r\n case $v:\r\n return exports.$VTAB;\r\n default:\r\n return code;\r\n }\r\n}\r\nvar OPERATORS = collection_1.SetWrapper.createFromList([\r\n '+',\r\n '-',\r\n '*',\r\n '/',\r\n '%',\r\n '^',\r\n '=',\r\n '==',\r\n '!=',\r\n '===',\r\n '!==',\r\n '<',\r\n '>',\r\n '<=',\r\n '>=',\r\n '&&',\r\n '||',\r\n '&',\r\n '|',\r\n '!',\r\n '?',\r\n '#',\r\n '?.'\r\n]);\r\nvar KEYWORDS = collection_1.SetWrapper.createFromList(['var', 'null', 'undefined', 'true', 'false', 'if', 'else']);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV4ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL3BhcnNlci9sZXhlci50cyJdLCJuYW1lcyI6WyJUb2tlblR5cGUiLCJMZXhlciIsIkxleGVyLmNvbnN0cnVjdG9yIiwiTGV4ZXIudG9rZW5pemUiLCJUb2tlbiIsIlRva2VuLmNvbnN0cnVjdG9yIiwiVG9rZW4uaXNDaGFyYWN0ZXIiLCJUb2tlbi5pc051bWJlciIsIlRva2VuLmlzU3RyaW5nIiwiVG9rZW4uaXNPcGVyYXRvciIsIlRva2VuLmlzSWRlbnRpZmllciIsIlRva2VuLmlzS2V5d29yZCIsIlRva2VuLmlzS2V5d29yZFZhciIsIlRva2VuLmlzS2V5d29yZE51bGwiLCJUb2tlbi5pc0tleXdvcmRVbmRlZmluZWQiLCJUb2tlbi5pc0tleXdvcmRUcnVlIiwiVG9rZW4uaXNLZXl3b3JkRmFsc2UiLCJUb2tlbi50b051bWJlciIsIlRva2VuLnRvU3RyaW5nIiwibmV3Q2hhcmFjdGVyVG9rZW4iLCJuZXdJZGVudGlmaWVyVG9rZW4iLCJuZXdLZXl3b3JkVG9rZW4iLCJuZXdPcGVyYXRvclRva2VuIiwibmV3U3RyaW5nVG9rZW4iLCJuZXdOdW1iZXJUb2tlbiIsIlNjYW5uZXJFcnJvciIsIlNjYW5uZXJFcnJvci5jb25zdHJ1Y3RvciIsIlNjYW5uZXJFcnJvci50b1N0cmluZyIsIl9TY2FubmVyIiwiX1NjYW5uZXIuY29uc3RydWN0b3IiLCJfU2Nhbm5lci5hZHZhbmNlIiwiX1NjYW5uZXIuc2NhblRva2VuIiwiX1NjYW5uZXIuc2NhbkNoYXJhY3RlciIsIl9TY2FubmVyLnNjYW5PcGVyYXRvciIsIl9TY2FubmVyLnNjYW5Db21wbGV4T3BlcmF0b3IiLCJfU2Nhbm5lci5zY2FuSWRlbnRpZmllciIsIl9TY2FubmVyLnNjYW5OdW1iZXIiLCJfU2Nhbm5lci5zY2FuU3RyaW5nIiwiX1NjYW5uZXIuZXJyb3IiLCJpc1doaXRlc3BhY2UiLCJpc0lkZW50aWZpZXJTdGFydCIsImlzSWRlbnRpZmllciIsImlzSWRlbnRpZmllclBhcnQiLCJpc0RpZ2l0IiwiaXNFeHBvbmVudFN0YXJ0IiwiaXNFeHBvbmVudFNpZ24iLCJ1bmVzY2FwZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQkFBeUIsaUNBQWlDLENBQUMsQ0FBQTtBQUMzRCwyQkFBc0MsZ0NBQWdDLENBQUMsQ0FBQTtBQUN2RSxxQkFBb0UsMEJBQTBCLENBQUMsQ0FBQTtBQUMvRiwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUU3RCxXQUFZLFNBQVM7SUFDbkJBLG1EQUFTQSxDQUFBQTtJQUNUQSxxREFBVUEsQ0FBQUE7SUFDVkEsK0NBQU9BLENBQUFBO0lBQ1BBLDZDQUFNQSxDQUFBQTtJQUNOQSxpREFBUUEsQ0FBQUE7SUFDUkEsNkNBQU1BLENBQUFBO0FBQ1JBLENBQUNBLEVBUFcsaUJBQVMsS0FBVCxpQkFBUyxRQU9wQjtBQVBELElBQVksU0FBUyxHQUFULGlCQU9YLENBQUE7QUFFRDtJQUFBQztJQVlBQyxDQUFDQTtJQVZDRCx3QkFBUUEsR0FBUkEsVUFBU0EsSUFBWUE7UUFDbkJFLElBQUlBLE9BQU9BLEdBQUdBLElBQUlBLFFBQVFBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ2pDQSxJQUFJQSxNQUFNQSxHQUFHQSxFQUFFQSxDQUFDQTtRQUNoQkEsSUFBSUEsS0FBS0EsR0FBR0EsT0FBT0EsQ0FBQ0EsU0FBU0EsRUFBRUEsQ0FBQ0E7UUFDaENBLE9BQU9BLEtBQUtBLElBQUlBLElBQUlBLEVBQUVBLENBQUNBO1lBQ3JCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQTtZQUNuQkEsS0FBS0EsR0FBR0EsT0FBT0EsQ0FBQ0EsU0FBU0EsRUFBRUEsQ0FBQ0E7UUFDOUJBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBO0lBQ2hCQSxDQUFDQTtJQVhIRjtRQUFDQSx1QkFBVUEsRUFBRUE7O2NBWVpBO0lBQURB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T0FBT0EsSUFBSUEsRUFBRUEsQ0FBQ0E7WUFDWkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFFekJBLENBQUNBO1lBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLElBQUlBLGVBQU9BLENBQUNBLENBQUNBLENBQUNBO2dCQUNoQ0EsTUFBTUEsR0FBR0EsS0FBS0EsQ0FBQ0E7WUFDakJBLENBQUNBO1lBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLGVBQWVBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUN0Q0EsSUFBSUEsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0E7Z0JBQ2ZBLEVBQUVBLENBQUNBLENBQUNBLGNBQWNBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO29CQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxFQUFFQSxDQUFDQTtnQkFDOUNBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLE9BQU9BLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO29CQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxrQkFBa0JBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUM1REEsTUFBTUEsR0FBR0EsS0FBS0EsQ0FBQ0E7WUFDakJBLENBQUNBO1lBQUNBLElBQUlBLENBQUNBLENBQUNBO2dCQUNOQSxLQUFLQSxDQUFDQTtZQUNSQSxDQUFDQTtZQUNEQSxJQUFJQSxDQUFDQSxPQUFPQSxFQUFFQSxDQUFDQTtRQUNqQkEsQ0FBQ0E7UUFDREEsSUFBSUEsR0FBR0EsR0FBV0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsS0FBS0EsRUFBRUEsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0E7UUFDMURBLE9BQU9BO1FBQ1BBLElBQUlBLEtBQUtBLEdBQ0xBLE1BQU1BLEdBQUdBLG9CQUFhQSxDQUFDQSxpQkFBaUJBLENBQUNBLEdBQUdBLENBQUNBLEdBQUdBLG9CQUFhQSxDQUFDQSxVQUFVQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQTtRQUNsRkEsTUFBTUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsS0FBS0EsRUFBRUEsS0FBS0EsQ0FBQ0EsQ0FBQ0E7SUFDdENBLENBQUNBO0lBRURSLDZCQUFVQSxHQUFWQTtRQUNFUyxJQUFJQSxLQUFLQSxHQUFXQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQTtRQUMvQkEsSUFBSUEsS0FBS0EsR0FBV0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDOUJBLElBQUlBLENBQUNBLE9BQU9BLEVBQUVBLENBQUNBLENBQUVBLHNCQUFzQkE7UUFFdkNBLElBQUlBLE1BQW9CQSxDQUFDQTtRQUN6QkEsSUFBSUEsTUFBTUEsR0FBV0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0E7UUFDaENBLElBQUlBLEtBQUtBLEdBQVdBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBO1FBRS9CQSxPQUFPQSxJQUFJQSxDQUFDQSxJQUFJQSxJQUFJQSxLQUFLQSxFQUFFQSxDQUFDQTtZQUMxQkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsSUFBSUEsa0JBQVVBLENBQUNBLENBQUNBLENBQUNBO2dCQUM1QkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsSUFBSUEsSUFBSUEsQ0FBQ0E7b0JBQUNBLE1BQU1BLEdBQUdBLElBQUlBLG1CQUFZQSxFQUFFQSxDQUFDQTtnQkFDaERBLE1BQU1BLENBQUNBLEdBQUdBLENBQUNBLEtBQUtBLENBQUNBLFNBQVNBLENBQUNBLE1BQU1BLEVBQUVBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBO2dCQUNoREEsSUFBSUEsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0E7Z0JBQ2ZBLElBQUlBLGFBQXFCQSxDQUFDQTtnQkFDMUJBLEVBQUVBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLElBQUlBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO29CQUNwQkEsOENBQThDQTtvQkFDOUNBLElBQUlBLEdBQUdBLEdBQVdBLEtBQUtBLENBQUNBLFNBQVNBLENBQUNBLElBQUlBLENBQUNBLEtBQUtBLEdBQUdBLENBQUNBLEVBQUVBLElBQUlBLENBQUNBLEtBQUtBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBO29CQUNsRUEsSUFBSUEsQ0FBQ0E7d0JBQ0hBLGFBQWFBLEdBQUdBLG9CQUFhQSxDQUFDQSxRQUFRQSxDQUFDQSxHQUFHQSxFQUFFQSxFQUFFQSxDQUFDQSxDQUFDQTtvQkFDbERBLENBQUVBO29CQUFBQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTt3QkFDWEEsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsZ0NBQThCQSxHQUFHQSxNQUFHQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtvQkFDdERBLENBQUNBO29CQUNEQSxHQUFHQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxHQUFXQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxDQUFDQSxFQUFFQSxDQUFDQSxFQUFFQSxFQUFFQSxDQUFDQTt3QkFDbkNBLElBQUlBLENBQUNBLE9BQU9BLEVBQUVBLENBQUNBO29CQUNqQkEsQ0FBQ0E7Z0JBQ0hBLENBQUNBO2dCQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtvQkFDTkEsYUFBYUEsR0FBR0EsUUFBUUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7b0JBQ3BDQSxJQUFJQSxDQUFDQSxPQUFPQSxFQUFFQSxDQUFDQTtnQkFDakJBLENBQUNBO2dCQUNEQSxNQUFNQSxDQUFDQSxHQUFHQSxDQUFDQSxvQkFBYUEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsYUFBYUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ3REQSxNQUFNQSxHQUFHQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQTtZQUN0QkEsQ0FBQ0E7WUFBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsSUFBSUEsWUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzdCQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxvQkFBb0JBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO1lBQ3RDQSxDQUFDQTtZQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtnQkFDTkEsSUFBSUEsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0E7WUFDakJBLENBQUNBO1FBQ0hBLENBQUNBO1FBRURBLElBQUlBLElBQUlBLEdBQVdBLEtBQUtBLENBQUNBLFNBQVNBLENBQUNBLE1BQU1BLEVBQUVBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO1FBQ3ZEQSxJQUFJQSxDQUFDQSxPQUFPQSxFQUFFQSxDQUFDQSxDQUFFQSwwQkFBMEJBO1FBRTNDQSxzQ0FBc0NBO1FBQ3RDQSxJQUFJQSxTQUFTQSxHQUFXQSxJQUFJQSxDQUFDQTtRQUM3QkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsSUFBSUEsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDbkJBLE1BQU1BLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ2pCQSxTQUFTQSxHQUFHQSxNQUFNQSxDQUFDQSxRQUFRQSxFQUFFQSxDQUFDQTtRQUNoQ0EsQ0FBQ0E7UUFDREEsTUFBTUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsS0FBS0EsRUFBRUEsU0FBU0EsQ0FBQ0EsQ0FBQ0E7SUFDMUNBLENBQUNBO0lBRURULHdCQUFLQSxHQUFMQSxVQUFNQSxPQUFlQSxFQUFFQSxNQUFjQTtRQUNuQ1UsSUFBSUEsUUFBUUEsR0FBV0EsSUFBSUEsQ0FBQ0EsS0FBS0EsR0FBR0EsTUFBTUEsQ0FBQ0E7UUFDM0NBLE1BQU1BLElBQUlBLFlBQVlBLENBQ2xCQSxrQkFBZ0JBLE9BQU9BLG1CQUFjQSxRQUFRQSx3QkFBbUJBLElBQUlBLENBQUNBLEtBQUtBLE1BQUdBLENBQUNBLENBQUNBO0lBQ3JGQSxDQUFDQTtJQUNIVixlQUFDQTtBQUFEQSxDQUFDQSxBQXpORCxJQXlOQztBQUVELHNCQUFzQixJQUFZO0lBQ2hDVyxNQUFNQSxDQUFDQSxDQUFDQSxJQUFJQSxJQUFJQSxZQUFJQSxJQUFJQSxJQUFJQSxJQUFJQSxjQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxJQUFJQSxLQUFLQSxDQUFDQSxDQUFDQTtBQUM3REEsQ0FBQ0E7QUFFRCwyQkFBMkIsSUFBWTtJQUNyQ0MsTUFBTUEsQ0FBQ0EsQ0FBQ0EsRUFBRUEsSUFBSUEsSUFBSUEsSUFBSUEsSUFBSUEsSUFBSUEsRUFBRUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsSUFBSUEsSUFBSUEsSUFBSUEsSUFBSUEsSUFBSUEsRUFBRUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsSUFBSUEsRUFBRUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsSUFBSUEsVUFBRUEsQ0FBQ0EsQ0FBQ0E7QUFDbEdBLENBQUNBO0FBRUQsc0JBQTZCLEtBQWE7SUFDeENDLEVBQUVBLENBQUNBLENBQUNBLEtBQUtBLENBQUNBLE1BQU1BLElBQUlBLENBQUNBLENBQUNBO1FBQUNBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO0lBQ3BDQSxJQUFJQSxPQUFPQSxHQUFHQSxJQUFJQSxRQUFRQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQTtJQUNsQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsaUJBQWlCQSxDQUFDQSxPQUFPQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUFDQSxNQUFNQSxDQUFDQSxLQUFLQSxDQUFDQTtJQUNuREEsT0FBT0EsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0E7SUFDbEJBLE9BQU9BLE9BQU9BLENBQUNBLElBQUlBLEtBQUtBLFlBQUlBLEVBQUVBLENBQUNBO1FBQzdCQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxnQkFBZ0JBLENBQUNBLE9BQU9BLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQUNBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO1FBQ2xEQSxPQUFPQSxDQUFDQSxPQUFPQSxFQUFFQSxDQUFDQTtJQUNwQkEsQ0FBQ0E7SUFDREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7QUFDZEEsQ0FBQ0E7QUFWZSxvQkFBWSxlQVUzQixDQUFBO0FBRUQsMEJBQTBCLElBQVk7SUFDcENDLE1BQU1BLENBQUNBLENBQUNBLEVBQUVBLElBQUlBLElBQUlBLElBQUlBLElBQUlBLElBQUlBLEVBQUVBLENBQUNBLElBQUlBLENBQUNBLEVBQUVBLElBQUlBLElBQUlBLElBQUlBLElBQUlBLElBQUlBLEVBQUVBLENBQUNBLElBQUlBLENBQUNBLEVBQUVBLElBQUlBLElBQUlBLElBQUlBLElBQUlBLElBQUlBLEVBQUVBLENBQUNBO1FBQ3RGQSxDQUFDQSxJQUFJQSxJQUFJQSxFQUFFQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxJQUFJQSxVQUFFQSxDQUFDQSxDQUFDQTtBQUN0Q0EsQ0FBQ0E7QUFFRCxpQkFBaUIsSUFBWTtJQUMzQkMsTUFBTUEsQ0FBQ0EsRUFBRUEsSUFBSUEsSUFBSUEsSUFBSUEsSUFBSUEsSUFBSUEsRUFBRUEsQ0FBQ0E7QUFDbENBLENBQUNBO0FBRUQseUJBQXlCLElBQVk7SUFDbkNDLE1BQU1BLENBQUNBLElBQUlBLElBQUlBLEVBQUVBLElBQUlBLElBQUlBLElBQUlBLEVBQUVBLENBQUNBO0FBQ2xDQSxDQUFDQTtBQUVELHdCQUF3QixJQUFZO0lBQ2xDQyxNQUFNQSxDQUFDQSxJQUFJQSxJQUFJQSxjQUFNQSxJQUFJQSxJQUFJQSxJQUFJQSxhQUFLQSxDQUFDQTtBQUN6Q0EsQ0FBQ0E7QUFFRCxrQkFBa0IsSUFBWTtJQUM1QkMsTUFBTUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDYkEsS0FBS0EsRUFBRUE7WUFDTEEsTUFBTUEsQ0FBQ0EsV0FBR0EsQ0FBQ0E7UUFDYkEsS0FBS0EsRUFBRUE7WUFDTEEsTUFBTUEsQ0FBQ0EsV0FBR0EsQ0FBQ0E7UUFDYkEsS0FBS0EsRUFBRUE7WUFDTEEsTUFBTUEsQ0FBQ0EsV0FBR0EsQ0FBQ0E7UUFDYkEsS0FBS0EsRUFBRUE7WUFDTEEsTUFBTUEsQ0FBQ0EsWUFBSUEsQ0FBQ0E7UUFDZEEsS0FBS0EsRUFBRUE7WUFDTEEsTUFBTUEsQ0FBQ0EsYUFBS0EsQ0FBQ0E7UUFDZkE7WUFDRUEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7SUFDaEJBLENBQUNBO0FBQ0hBLENBQUNBO0FBRUQsSUFBSSxTQUFTLEdBQUcsdUJBQVUsQ0FBQyxjQUFjLENBQUM7SUFDeEMsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILElBQUk7SUFDSixJQUFJO0lBQ0osS0FBSztJQUNMLEtBQUs7SUFDTCxHQUFHO0lBQ0gsR0FBRztJQUNILElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILElBQUk7Q0FDTCxDQUFDLENBQUM7QUFHSCxJQUFJLFFBQVEsR0FDUix1QkFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpL2RlY29yYXRvcnMnO1xuaW1wb3J0IHtMaXN0V3JhcHBlciwgU2V0V3JhcHBlcn0gZnJvbSBcImFuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvblwiO1xuaW1wb3J0IHtOdW1iZXJXcmFwcGVyLCBTdHJpbmdKb2luZXIsIFN0cmluZ1dyYXBwZXIsIGlzUHJlc2VudH0gZnJvbSBcImFuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZ1wiO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuXG5leHBvcnQgZW51bSBUb2tlblR5cGUge1xuICBDaGFyYWN0ZXIsXG4gIElkZW50aWZpZXIsXG4gIEtleXdvcmQsXG4gIFN0cmluZyxcbiAgT3BlcmF0b3IsXG4gIE51bWJlclxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTGV4ZXIge1xuICB0b2tlbml6ZSh0ZXh0OiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgdmFyIHNjYW5uZXIgPSBuZXcgX1NjYW5uZXIodGV4dCk7XG4gICAgdmFyIHRva2VucyA9IFtdO1xuICAgIHZhciB0b2tlbiA9IHNjYW5uZXIuc2NhblRva2VuKCk7XG4gICAgd2hpbGUgKHRva2VuICE9IG51bGwpIHtcbiAgICAgIHRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgIHRva2VuID0gc2Nhbm5lci5zY2FuVG9rZW4oKTtcbiAgICB9XG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVG9rZW4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgaW5kZXg6IG51bWJlciwgcHVibGljIHR5cGU6IFRva2VuVHlwZSwgcHVibGljIG51bVZhbHVlOiBudW1iZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyBzdHJWYWx1ZTogc3RyaW5nKSB7fVxuXG4gIGlzQ2hhcmFjdGVyKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy50eXBlID09IFRva2VuVHlwZS5DaGFyYWN0ZXIgJiYgdGhpcy5udW1WYWx1ZSA9PSBjb2RlKTtcbiAgfVxuXG4gIGlzTnVtYmVyKCk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMudHlwZSA9PSBUb2tlblR5cGUuTnVtYmVyKTsgfVxuXG4gIGlzU3RyaW5nKCk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMudHlwZSA9PSBUb2tlblR5cGUuU3RyaW5nKTsgfVxuXG4gIGlzT3BlcmF0b3Iob3BlcmF0ZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy50eXBlID09IFRva2VuVHlwZS5PcGVyYXRvciAmJiB0aGlzLnN0clZhbHVlID09IG9wZXJhdGVyKTtcbiAgfVxuXG4gIGlzSWRlbnRpZmllcigpOiBib29sZWFuIHsgcmV0dXJuICh0aGlzLnR5cGUgPT0gVG9rZW5UeXBlLklkZW50aWZpZXIpOyB9XG5cbiAgaXNLZXl3b3JkKCk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMudHlwZSA9PSBUb2tlblR5cGUuS2V5d29yZCk7IH1cblxuICBpc0tleXdvcmRWYXIoKTogYm9vbGVhbiB7IHJldHVybiAodGhpcy50eXBlID09IFRva2VuVHlwZS5LZXl3b3JkICYmIHRoaXMuc3RyVmFsdWUgPT0gXCJ2YXJcIik7IH1cblxuICBpc0tleXdvcmROdWxsKCk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMudHlwZSA9PSBUb2tlblR5cGUuS2V5d29yZCAmJiB0aGlzLnN0clZhbHVlID09IFwibnVsbFwiKTsgfVxuXG4gIGlzS2V5d29yZFVuZGVmaW5lZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMudHlwZSA9PSBUb2tlblR5cGUuS2V5d29yZCAmJiB0aGlzLnN0clZhbHVlID09IFwidW5kZWZpbmVkXCIpO1xuICB9XG5cbiAgaXNLZXl3b3JkVHJ1ZSgpOiBib29sZWFuIHsgcmV0dXJuICh0aGlzLnR5cGUgPT0gVG9rZW5UeXBlLktleXdvcmQgJiYgdGhpcy5zdHJWYWx1ZSA9PSBcInRydWVcIik7IH1cblxuICBpc0tleXdvcmRGYWxzZSgpOiBib29sZWFuIHsgcmV0dXJuICh0aGlzLnR5cGUgPT0gVG9rZW5UeXBlLktleXdvcmQgJiYgdGhpcy5zdHJWYWx1ZSA9PSBcImZhbHNlXCIpOyB9XG5cbiAgdG9OdW1iZXIoKTogbnVtYmVyIHtcbiAgICAvLyAtMSBpbnN0ZWFkIG9mIE5VTEwgb2s/XG4gICAgcmV0dXJuICh0aGlzLnR5cGUgPT0gVG9rZW5UeXBlLk51bWJlcikgPyB0aGlzLm51bVZhbHVlIDogLTE7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRva2VuVHlwZS5DaGFyYWN0ZXI6XG4gICAgICBjYXNlIFRva2VuVHlwZS5JZGVudGlmaWVyOlxuICAgICAgY2FzZSBUb2tlblR5cGUuS2V5d29yZDpcbiAgICAgIGNhc2UgVG9rZW5UeXBlLk9wZXJhdG9yOlxuICAgICAgY2FzZSBUb2tlblR5cGUuU3RyaW5nOlxuICAgICAgICByZXR1cm4gdGhpcy5zdHJWYWx1ZTtcbiAgICAgIGNhc2UgVG9rZW5UeXBlLk51bWJlcjpcbiAgICAgICAgcmV0dXJuIHRoaXMubnVtVmFsdWUudG9TdHJpbmcoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBuZXdDaGFyYWN0ZXJUb2tlbihpbmRleDogbnVtYmVyLCBjb2RlOiBudW1iZXIpOiBUb2tlbiB7XG4gIHJldHVybiBuZXcgVG9rZW4oaW5kZXgsIFRva2VuVHlwZS5DaGFyYWN0ZXIsIGNvZGUsIFN0cmluZ1dyYXBwZXIuZnJvbUNoYXJDb2RlKGNvZGUpKTtcbn1cblxuZnVuY3Rpb24gbmV3SWRlbnRpZmllclRva2VuKGluZGV4OiBudW1iZXIsIHRleHQ6IHN0cmluZyk6IFRva2VuIHtcbiAgcmV0dXJuIG5ldyBUb2tlbihpbmRleCwgVG9rZW5UeXBlLklkZW50aWZpZXIsIDAsIHRleHQpO1xufVxuXG5mdW5jdGlvbiBuZXdLZXl3b3JkVG9rZW4oaW5kZXg6IG51bWJlciwgdGV4dDogc3RyaW5nKTogVG9rZW4ge1xuICByZXR1cm4gbmV3IFRva2VuKGluZGV4LCBUb2tlblR5cGUuS2V5d29yZCwgMCwgdGV4dCk7XG59XG5cbmZ1bmN0aW9uIG5ld09wZXJhdG9yVG9rZW4oaW5kZXg6IG51bWJlciwgdGV4dDogc3RyaW5nKTogVG9rZW4ge1xuICByZXR1cm4gbmV3IFRva2VuKGluZGV4LCBUb2tlblR5cGUuT3BlcmF0b3IsIDAsIHRleHQpO1xufVxuXG5mdW5jdGlvbiBuZXdTdHJpbmdUb2tlbihpbmRleDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpOiBUb2tlbiB7XG4gIHJldHVybiBuZXcgVG9rZW4oaW5kZXgsIFRva2VuVHlwZS5TdHJpbmcsIDAsIHRleHQpO1xufVxuXG5mdW5jdGlvbiBuZXdOdW1iZXJUb2tlbihpbmRleDogbnVtYmVyLCBuOiBudW1iZXIpOiBUb2tlbiB7XG4gIHJldHVybiBuZXcgVG9rZW4oaW5kZXgsIFRva2VuVHlwZS5OdW1iZXIsIG4sIFwiXCIpO1xufVxuXG5cbmV4cG9ydCB2YXIgRU9GOiBUb2tlbiA9IG5ldyBUb2tlbigtMSwgVG9rZW5UeXBlLkNoYXJhY3RlciwgMCwgXCJcIik7XG5cbmV4cG9ydCBjb25zdCAkRU9GID0gMDtcbmV4cG9ydCBjb25zdCAkVEFCID0gOTtcbmV4cG9ydCBjb25zdCAkTEYgPSAxMDtcbmV4cG9ydCBjb25zdCAkVlRBQiA9IDExO1xuZXhwb3J0IGNvbnN0ICRGRiA9IDEyO1xuZXhwb3J0IGNvbnN0ICRDUiA9IDEzO1xuZXhwb3J0IGNvbnN0ICRTUEFDRSA9IDMyO1xuZXhwb3J0IGNvbnN0ICRCQU5HID0gMzM7XG5leHBvcnQgY29uc3QgJERRID0gMzQ7XG5leHBvcnQgY29uc3QgJEhBU0ggPSAzNTtcbmV4cG9ydCBjb25zdCAkJCA9IDM2O1xuZXhwb3J0IGNvbnN0ICRQRVJDRU5UID0gMzc7XG5leHBvcnQgY29uc3QgJEFNUEVSU0FORCA9IDM4O1xuZXhwb3J0IGNvbnN0ICRTUSA9IDM5O1xuZXhwb3J0IGNvbnN0ICRMUEFSRU4gPSA0MDtcbmV4cG9ydCBjb25zdCAkUlBBUkVOID0gNDE7XG5leHBvcnQgY29uc3QgJFNUQVIgPSA0MjtcbmV4cG9ydCBjb25zdCAkUExVUyA9IDQzO1xuZXhwb3J0IGNvbnN0ICRDT01NQSA9IDQ0O1xuZXhwb3J0IGNvbnN0ICRNSU5VUyA9IDQ1O1xuZXhwb3J0IGNvbnN0ICRQRVJJT0QgPSA0NjtcbmV4cG9ydCBjb25zdCAkU0xBU0ggPSA0NztcbmV4cG9ydCBjb25zdCAkQ09MT04gPSA1ODtcbmV4cG9ydCBjb25zdCAkU0VNSUNPTE9OID0gNTk7XG5leHBvcnQgY29uc3QgJExUID0gNjA7XG5leHBvcnQgY29uc3QgJEVRID0gNjE7XG5leHBvcnQgY29uc3QgJEdUID0gNjI7XG5leHBvcnQgY29uc3QgJFFVRVNUSU9OID0gNjM7XG5cbmNvbnN0ICQwID0gNDg7XG5jb25zdCAkOSA9IDU3O1xuXG5jb25zdCAkQSA9IDY1LCAkRSA9IDY5LCAkWiA9IDkwO1xuXG5leHBvcnQgY29uc3QgJExCUkFDS0VUID0gOTE7XG5leHBvcnQgY29uc3QgJEJBQ0tTTEFTSCA9IDkyO1xuZXhwb3J0IGNvbnN0ICRSQlJBQ0tFVCA9IDkzO1xuY29uc3QgJENBUkVUID0gOTQ7XG5jb25zdCAkXyA9IDk1O1xuXG5jb25zdCAkYSA9IDk3LCAkZSA9IDEwMSwgJGYgPSAxMDIsICRuID0gMTEwLCAkciA9IDExNCwgJHQgPSAxMTYsICR1ID0gMTE3LCAkdiA9IDExOCwgJHogPSAxMjI7XG5cbmV4cG9ydCBjb25zdCAkTEJSQUNFID0gMTIzO1xuZXhwb3J0IGNvbnN0ICRCQVIgPSAxMjQ7XG5leHBvcnQgY29uc3QgJFJCUkFDRSA9IDEyNTtcbmNvbnN0ICROQlNQID0gMTYwO1xuXG5leHBvcnQgY2xhc3MgU2Nhbm5lckVycm9yIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtZXNzYWdlKSB7IHN1cGVyKCk7IH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5tZXNzYWdlOyB9XG59XG5cbmNsYXNzIF9TY2FubmVyIHtcbiAgbGVuZ3RoOiBudW1iZXI7XG4gIHBlZWs6IG51bWJlciA9IDA7XG4gIGluZGV4OiBudW1iZXIgPSAtMTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaW5wdXQ6IHN0cmluZykge1xuICAgIHRoaXMubGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuICAgIHRoaXMuYWR2YW5jZSgpO1xuICB9XG5cbiAgYWR2YW5jZSgpIHtcbiAgICB0aGlzLnBlZWsgPVxuICAgICAgICArK3RoaXMuaW5kZXggPj0gdGhpcy5sZW5ndGggPyAkRU9GIDogU3RyaW5nV3JhcHBlci5jaGFyQ29kZUF0KHRoaXMuaW5wdXQsIHRoaXMuaW5kZXgpO1xuICB9XG5cbiAgc2NhblRva2VuKCk6IFRva2VuIHtcbiAgICB2YXIgaW5wdXQgPSB0aGlzLmlucHV0LCBsZW5ndGggPSB0aGlzLmxlbmd0aCwgcGVlayA9IHRoaXMucGVlaywgaW5kZXggPSB0aGlzLmluZGV4O1xuXG4gICAgLy8gU2tpcCB3aGl0ZXNwYWNlLlxuICAgIHdoaWxlIChwZWVrIDw9ICRTUEFDRSkge1xuICAgICAgaWYgKCsraW5kZXggPj0gbGVuZ3RoKSB7XG4gICAgICAgIHBlZWsgPSAkRU9GO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZWsgPSBTdHJpbmdXcmFwcGVyLmNoYXJDb2RlQXQoaW5wdXQsIGluZGV4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnBlZWsgPSBwZWVrO1xuICAgIHRoaXMuaW5kZXggPSBpbmRleDtcblxuICAgIGlmIChpbmRleCA+PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBpZGVudGlmaWVycyBhbmQgbnVtYmVycy5cbiAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQocGVlaykpIHJldHVybiB0aGlzLnNjYW5JZGVudGlmaWVyKCk7XG4gICAgaWYgKGlzRGlnaXQocGVlaykpIHJldHVybiB0aGlzLnNjYW5OdW1iZXIoaW5kZXgpO1xuXG4gICAgdmFyIHN0YXJ0OiBudW1iZXIgPSBpbmRleDtcbiAgICBzd2l0Y2ggKHBlZWspIHtcbiAgICAgIGNhc2UgJFBFUklPRDpcbiAgICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICAgIHJldHVybiBpc0RpZ2l0KHRoaXMucGVlaykgPyB0aGlzLnNjYW5OdW1iZXIoc3RhcnQpIDogbmV3Q2hhcmFjdGVyVG9rZW4oc3RhcnQsICRQRVJJT0QpO1xuICAgICAgY2FzZSAkTFBBUkVOOlxuICAgICAgY2FzZSAkUlBBUkVOOlxuICAgICAgY2FzZSAkTEJSQUNFOlxuICAgICAgY2FzZSAkUkJSQUNFOlxuICAgICAgY2FzZSAkTEJSQUNLRVQ6XG4gICAgICBjYXNlICRSQlJBQ0tFVDpcbiAgICAgIGNhc2UgJENPTU1BOlxuICAgICAgY2FzZSAkQ09MT046XG4gICAgICBjYXNlICRTRU1JQ09MT046XG4gICAgICAgIHJldHVybiB0aGlzLnNjYW5DaGFyYWN0ZXIoc3RhcnQsIHBlZWspO1xuICAgICAgY2FzZSAkU1E6XG4gICAgICBjYXNlICREUTpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhblN0cmluZygpO1xuICAgICAgY2FzZSAkSEFTSDpcbiAgICAgIGNhc2UgJFBMVVM6XG4gICAgICBjYXNlICRNSU5VUzpcbiAgICAgIGNhc2UgJFNUQVI6XG4gICAgICBjYXNlICRTTEFTSDpcbiAgICAgIGNhc2UgJFBFUkNFTlQ6XG4gICAgICBjYXNlICRDQVJFVDpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Nhbk9wZXJhdG9yKHN0YXJ0LCBTdHJpbmdXcmFwcGVyLmZyb21DaGFyQ29kZShwZWVrKSk7XG4gICAgICBjYXNlICRRVUVTVElPTjpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbkNvbXBsZXhPcGVyYXRvcihzdGFydCwgJz8nLCAkUEVSSU9ELCAnLicpO1xuICAgICAgY2FzZSAkTFQ6XG4gICAgICBjYXNlICRHVDpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbkNvbXBsZXhPcGVyYXRvcihzdGFydCwgU3RyaW5nV3JhcHBlci5mcm9tQ2hhckNvZGUocGVlayksICRFUSwgJz0nKTtcbiAgICAgIGNhc2UgJEJBTkc6XG4gICAgICBjYXNlICRFUTpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbkNvbXBsZXhPcGVyYXRvcihzdGFydCwgU3RyaW5nV3JhcHBlci5mcm9tQ2hhckNvZGUocGVlayksICRFUSwgJz0nLCAkRVEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJz0nKTtcbiAgICAgIGNhc2UgJEFNUEVSU0FORDpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbkNvbXBsZXhPcGVyYXRvcihzdGFydCwgJyYnLCAkQU1QRVJTQU5ELCAnJicpO1xuICAgICAgY2FzZSAkQkFSOlxuICAgICAgICByZXR1cm4gdGhpcy5zY2FuQ29tcGxleE9wZXJhdG9yKHN0YXJ0LCAnfCcsICRCQVIsICd8Jyk7XG4gICAgICBjYXNlICROQlNQOlxuICAgICAgICB3aGlsZSAoaXNXaGl0ZXNwYWNlKHRoaXMucGVlaykpIHRoaXMuYWR2YW5jZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FuVG9rZW4oKTtcbiAgICB9XG5cbiAgICB0aGlzLmVycm9yKGBVbmV4cGVjdGVkIGNoYXJhY3RlciBbJHtTdHJpbmdXcmFwcGVyLmZyb21DaGFyQ29kZShwZWVrKX1dYCwgMCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzY2FuQ2hhcmFjdGVyKHN0YXJ0OiBudW1iZXIsIGNvZGU6IG51bWJlcik6IFRva2VuIHtcbiAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICByZXR1cm4gbmV3Q2hhcmFjdGVyVG9rZW4oc3RhcnQsIGNvZGUpO1xuICB9XG5cblxuICBzY2FuT3BlcmF0b3Ioc3RhcnQ6IG51bWJlciwgc3RyOiBzdHJpbmcpOiBUb2tlbiB7XG4gICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgcmV0dXJuIG5ld09wZXJhdG9yVG9rZW4oc3RhcnQsIHN0cik7XG4gIH1cblxuICAvKipcbiAgICogVG9rZW5pemUgYSAyLzMgY2hhciBsb25nIG9wZXJhdG9yXG4gICAqXG4gICAqIEBwYXJhbSBzdGFydCBzdGFydCBpbmRleCBpbiB0aGUgZXhwcmVzc2lvblxuICAgKiBAcGFyYW0gb25lIGZpcnN0IHN5bWJvbCAoYWx3YXlzIHBhcnQgb2YgdGhlIG9wZXJhdG9yKVxuICAgKiBAcGFyYW0gdHdvQ29kZSBjb2RlIHBvaW50IGZvciB0aGUgc2Vjb25kIHN5bWJvbFxuICAgKiBAcGFyYW0gdHdvIHNlY29uZCBzeW1ib2wgKHBhcnQgb2YgdGhlIG9wZXJhdG9yIHdoZW4gdGhlIHNlY29uZCBjb2RlIHBvaW50IG1hdGNoZXMpXG4gICAqIEBwYXJhbSB0aHJlZUNvZGUgY29kZSBwb2ludCBmb3IgdGhlIHRoaXJkIHN5bWJvbFxuICAgKiBAcGFyYW0gdGhyZWUgdGhpcmQgc3ltYm9sIChwYXJ0IG9mIHRoZSBvcGVyYXRvciB3aGVuIHByb3ZpZGVkIGFuZCBtYXRjaGVzIHNvdXJjZSBleHByZXNzaW9uKVxuICAgKiBAcmV0dXJucyB7VG9rZW59XG4gICAqL1xuICBzY2FuQ29tcGxleE9wZXJhdG9yKHN0YXJ0OiBudW1iZXIsIG9uZTogc3RyaW5nLCB0d29Db2RlOiBudW1iZXIsIHR3bzogc3RyaW5nLCB0aHJlZUNvZGU/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgdGhyZWU/OiBzdHJpbmcpOiBUb2tlbiB7XG4gICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgdmFyIHN0cjogc3RyaW5nID0gb25lO1xuICAgIGlmICh0aGlzLnBlZWsgPT0gdHdvQ29kZSkge1xuICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICBzdHIgKz0gdHdvO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHRocmVlQ29kZSkgJiYgdGhpcy5wZWVrID09IHRocmVlQ29kZSkge1xuICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICBzdHIgKz0gdGhyZWU7XG4gICAgfVxuICAgIHJldHVybiBuZXdPcGVyYXRvclRva2VuKHN0YXJ0LCBzdHIpO1xuICB9XG5cbiAgc2NhbklkZW50aWZpZXIoKTogVG9rZW4ge1xuICAgIHZhciBzdGFydDogbnVtYmVyID0gdGhpcy5pbmRleDtcbiAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICB3aGlsZSAoaXNJZGVudGlmaWVyUGFydCh0aGlzLnBlZWspKSB0aGlzLmFkdmFuY2UoKTtcbiAgICB2YXIgc3RyOiBzdHJpbmcgPSB0aGlzLmlucHV0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5pbmRleCk7XG4gICAgaWYgKFNldFdyYXBwZXIuaGFzKEtFWVdPUkRTLCBzdHIpKSB7XG4gICAgICByZXR1cm4gbmV3S2V5d29yZFRva2VuKHN0YXJ0LCBzdHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3SWRlbnRpZmllclRva2VuKHN0YXJ0LCBzdHIpO1xuICAgIH1cbiAgfVxuXG4gIHNjYW5OdW1iZXIoc3RhcnQ6IG51bWJlcik6IFRva2VuIHtcbiAgICB2YXIgc2ltcGxlOiBib29sZWFuID0gKHRoaXMuaW5kZXggPT09IHN0YXJ0KTtcbiAgICB0aGlzLmFkdmFuY2UoKTsgIC8vIFNraXAgaW5pdGlhbCBkaWdpdC5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGlzRGlnaXQodGhpcy5wZWVrKSkge1xuICAgICAgICAvLyBEbyBub3RoaW5nLlxuICAgICAgfSBlbHNlIGlmICh0aGlzLnBlZWsgPT0gJFBFUklPRCkge1xuICAgICAgICBzaW1wbGUgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoaXNFeHBvbmVudFN0YXJ0KHRoaXMucGVlaykpIHtcbiAgICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICAgIGlmIChpc0V4cG9uZW50U2lnbih0aGlzLnBlZWspKSB0aGlzLmFkdmFuY2UoKTtcbiAgICAgICAgaWYgKCFpc0RpZ2l0KHRoaXMucGVlaykpIHRoaXMuZXJyb3IoJ0ludmFsaWQgZXhwb25lbnQnLCAtMSk7XG4gICAgICAgIHNpbXBsZSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICB9XG4gICAgdmFyIHN0cjogc3RyaW5nID0gdGhpcy5pbnB1dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMuaW5kZXgpO1xuICAgIC8vIFRPRE9cbiAgICB2YXIgdmFsdWU6IG51bWJlciA9XG4gICAgICAgIHNpbXBsZSA/IE51bWJlcldyYXBwZXIucGFyc2VJbnRBdXRvUmFkaXgoc3RyKSA6IE51bWJlcldyYXBwZXIucGFyc2VGbG9hdChzdHIpO1xuICAgIHJldHVybiBuZXdOdW1iZXJUb2tlbihzdGFydCwgdmFsdWUpO1xuICB9XG5cbiAgc2NhblN0cmluZygpOiBUb2tlbiB7XG4gICAgdmFyIHN0YXJ0OiBudW1iZXIgPSB0aGlzLmluZGV4O1xuICAgIHZhciBxdW90ZTogbnVtYmVyID0gdGhpcy5wZWVrO1xuICAgIHRoaXMuYWR2YW5jZSgpOyAgLy8gU2tpcCBpbml0aWFsIHF1b3RlLlxuXG4gICAgdmFyIGJ1ZmZlcjogU3RyaW5nSm9pbmVyO1xuICAgIHZhciBtYXJrZXI6IG51bWJlciA9IHRoaXMuaW5kZXg7XG4gICAgdmFyIGlucHV0OiBzdHJpbmcgPSB0aGlzLmlucHV0O1xuXG4gICAgd2hpbGUgKHRoaXMucGVlayAhPSBxdW90ZSkge1xuICAgICAgaWYgKHRoaXMucGVlayA9PSAkQkFDS1NMQVNIKSB7XG4gICAgICAgIGlmIChidWZmZXIgPT0gbnVsbCkgYnVmZmVyID0gbmV3IFN0cmluZ0pvaW5lcigpO1xuICAgICAgICBidWZmZXIuYWRkKGlucHV0LnN1YnN0cmluZyhtYXJrZXIsIHRoaXMuaW5kZXgpKTtcbiAgICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICAgIHZhciB1bmVzY2FwZWRDb2RlOiBudW1iZXI7XG4gICAgICAgIGlmICh0aGlzLnBlZWsgPT0gJHUpIHtcbiAgICAgICAgICAvLyA0IGNoYXJhY3RlciBoZXggY29kZSBmb3IgdW5pY29kZSBjaGFyYWN0ZXIuXG4gICAgICAgICAgdmFyIGhleDogc3RyaW5nID0gaW5wdXQuc3Vic3RyaW5nKHRoaXMuaW5kZXggKyAxLCB0aGlzLmluZGV4ICsgNSk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHVuZXNjYXBlZENvZGUgPSBOdW1iZXJXcmFwcGVyLnBhcnNlSW50KGhleCwgMTYpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IoYEludmFsaWQgdW5pY29kZSBlc2NhcGUgW1xcXFx1JHtoZXh9XWAsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKHZhciBpOiBudW1iZXIgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdW5lc2NhcGVkQ29kZSA9IHVuZXNjYXBlKHRoaXMucGVlayk7XG4gICAgICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnVmZmVyLmFkZChTdHJpbmdXcmFwcGVyLmZyb21DaGFyQ29kZSh1bmVzY2FwZWRDb2RlKSk7XG4gICAgICAgIG1hcmtlciA9IHRoaXMuaW5kZXg7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGVlayA9PSAkRU9GKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoJ1VudGVybWluYXRlZCBxdW90ZScsIDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxhc3Q6IHN0cmluZyA9IGlucHV0LnN1YnN0cmluZyhtYXJrZXIsIHRoaXMuaW5kZXgpO1xuICAgIHRoaXMuYWR2YW5jZSgpOyAgLy8gU2tpcCB0ZXJtaW5hdGluZyBxdW90ZS5cblxuICAgIC8vIENvbXB1dGUgdGhlIHVuZXNjYXBlZCBzdHJpbmcgdmFsdWUuXG4gICAgdmFyIHVuZXNjYXBlZDogc3RyaW5nID0gbGFzdDtcbiAgICBpZiAoYnVmZmVyICE9IG51bGwpIHtcbiAgICAgIGJ1ZmZlci5hZGQobGFzdCk7XG4gICAgICB1bmVzY2FwZWQgPSBidWZmZXIudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1N0cmluZ1Rva2VuKHN0YXJ0LCB1bmVzY2FwZWQpO1xuICB9XG5cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBvZmZzZXQ6IG51bWJlcikge1xuICAgIHZhciBwb3NpdGlvbjogbnVtYmVyID0gdGhpcy5pbmRleCArIG9mZnNldDtcbiAgICB0aHJvdyBuZXcgU2Nhbm5lckVycm9yKFxuICAgICAgICBgTGV4ZXIgRXJyb3I6ICR7bWVzc2FnZX0gYXQgY29sdW1uICR7cG9zaXRpb259IGluIGV4cHJlc3Npb24gWyR7dGhpcy5pbnB1dH1dYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gKGNvZGUgPj0gJFRBQiAmJiBjb2RlIDw9ICRTUEFDRSkgfHwgKGNvZGUgPT0gJE5CU1ApO1xufVxuXG5mdW5jdGlvbiBpc0lkZW50aWZpZXJTdGFydChjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuICgkYSA8PSBjb2RlICYmIGNvZGUgPD0gJHopIHx8ICgkQSA8PSBjb2RlICYmIGNvZGUgPD0gJFopIHx8IChjb2RlID09ICRfKSB8fCAoY29kZSA9PSAkJCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0lkZW50aWZpZXIoaW5wdXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoaW5wdXQubGVuZ3RoID09IDApIHJldHVybiBmYWxzZTtcbiAgdmFyIHNjYW5uZXIgPSBuZXcgX1NjYW5uZXIoaW5wdXQpO1xuICBpZiAoIWlzSWRlbnRpZmllclN0YXJ0KHNjYW5uZXIucGVlaykpIHJldHVybiBmYWxzZTtcbiAgc2Nhbm5lci5hZHZhbmNlKCk7XG4gIHdoaWxlIChzY2FubmVyLnBlZWsgIT09ICRFT0YpIHtcbiAgICBpZiAoIWlzSWRlbnRpZmllclBhcnQoc2Nhbm5lci5wZWVrKSkgcmV0dXJuIGZhbHNlO1xuICAgIHNjYW5uZXIuYWR2YW5jZSgpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBpc0lkZW50aWZpZXJQYXJ0KGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gKCRhIDw9IGNvZGUgJiYgY29kZSA8PSAkeikgfHwgKCRBIDw9IGNvZGUgJiYgY29kZSA8PSAkWikgfHwgKCQwIDw9IGNvZGUgJiYgY29kZSA8PSAkOSkgfHxcbiAgICAgICAgIChjb2RlID09ICRfKSB8fCAoY29kZSA9PSAkJCk7XG59XG5cbmZ1bmN0aW9uIGlzRGlnaXQoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAkMCA8PSBjb2RlICYmIGNvZGUgPD0gJDk7XG59XG5cbmZ1bmN0aW9uIGlzRXhwb25lbnRTdGFydChjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvZGUgPT0gJGUgfHwgY29kZSA9PSAkRTtcbn1cblxuZnVuY3Rpb24gaXNFeHBvbmVudFNpZ24oY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBjb2RlID09ICRNSU5VUyB8fCBjb2RlID09ICRQTFVTO1xufVxuXG5mdW5jdGlvbiB1bmVzY2FwZShjb2RlOiBudW1iZXIpOiBudW1iZXIge1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlICRuOlxuICAgICAgcmV0dXJuICRMRjtcbiAgICBjYXNlICRmOlxuICAgICAgcmV0dXJuICRGRjtcbiAgICBjYXNlICRyOlxuICAgICAgcmV0dXJuICRDUjtcbiAgICBjYXNlICR0OlxuICAgICAgcmV0dXJuICRUQUI7XG4gICAgY2FzZSAkdjpcbiAgICAgIHJldHVybiAkVlRBQjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGNvZGU7XG4gIH1cbn1cblxudmFyIE9QRVJBVE9SUyA9IFNldFdyYXBwZXIuY3JlYXRlRnJvbUxpc3QoW1xuICAnKycsXG4gICctJyxcbiAgJyonLFxuICAnLycsXG4gICclJyxcbiAgJ14nLFxuICAnPScsXG4gICc9PScsXG4gICchPScsXG4gICc9PT0nLFxuICAnIT09JyxcbiAgJzwnLFxuICAnPicsXG4gICc8PScsXG4gICc+PScsXG4gICcmJicsXG4gICd8fCcsXG4gICcmJyxcbiAgJ3wnLFxuICAnIScsXG4gICc/JyxcbiAgJyMnLFxuICAnPy4nXG5dKTtcblxuXG52YXIgS0VZV09SRFMgPVxuICAgIFNldFdyYXBwZXIuY3JlYXRlRnJvbUxpc3QoWyd2YXInLCAnbnVsbCcsICd1bmRlZmluZWQnLCAndHJ1ZScsICdmYWxzZScsICdpZicsICdlbHNlJ10pO1xuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar decorators_1 = require('angular2/src/core/di/decorators');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lexer_1 = require('./lexer');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nvar ast_1 = require('./ast');\r\nvar _implicitReceiver = new ast_1.ImplicitReceiver();\r\n// TODO(tbosch): Cannot make this const/final right now because of the transpiler...\r\nvar INTERPOLATION_REGEXP = /\\{\\{([\\s\\S]*?)\\}\\}/g;\r\nvar ParseException = (function (_super) {\r\n __extends(ParseException, _super);\r\n function ParseException(message, input, errLocation, ctxLocation) {\r\n _super.call(this, \"Parser Error: \" + message + \" \" + errLocation + \" [\" + input + \"] in \" + ctxLocation);\r\n }\r\n return ParseException;\r\n})(exceptions_1.BaseException);\r\nvar Parser = (function () {\r\n function Parser(/** @internal */ _lexer, providedReflector) {\r\n if (providedReflector === void 0) { providedReflector = null; }\r\n this._lexer = _lexer;\r\n this._reflector = lang_1.isPresent(providedReflector) ? providedReflector : reflection_1.reflector;\r\n }\r\n Parser.prototype.parseAction = function (input, location) {\r\n this._checkNoInterpolation(input, location);\r\n var tokens = this._lexer.tokenize(input);\r\n var ast = new _ParseAST(input, location, tokens, this._reflector, true).parseChain();\r\n return new ast_1.ASTWithSource(ast, input, location);\r\n };\r\n Parser.prototype.parseBinding = function (input, location) {\r\n var ast = this._parseBindingAst(input, location);\r\n return new ast_1.ASTWithSource(ast, input, location);\r\n };\r\n Parser.prototype.parseSimpleBinding = function (input, location) {\r\n var ast = this._parseBindingAst(input, location);\r\n if (!SimpleExpressionChecker.check(ast)) {\r\n throw new ParseException('Host binding expression can only contain field access and constants', input, location);\r\n }\r\n return new ast_1.ASTWithSource(ast, input, location);\r\n };\r\n Parser.prototype._parseBindingAst = function (input, location) {\r\n // Quotes expressions use 3rd-party expression language. We don't want to use\r\n // our lexer or parser for that, so we check for that ahead of time.\r\n var quote = this._parseQuote(input, location);\r\n if (lang_1.isPresent(quote)) {\r\n return quote;\r\n }\r\n this._checkNoInterpolation(input, location);\r\n var tokens = this._lexer.tokenize(input);\r\n return new _ParseAST(input, location, tokens, this._reflector, false).parseChain();\r\n };\r\n Parser.prototype._parseQuote = function (input, location) {\r\n if (lang_1.isBlank(input))\r\n return null;\r\n var prefixSeparatorIndex = input.indexOf(':');\r\n if (prefixSeparatorIndex == -1)\r\n return null;\r\n var prefix = input.substring(0, prefixSeparatorIndex).trim();\r\n if (!lexer_1.isIdentifier(prefix))\r\n return null;\r\n var uninterpretedExpression = input.substring(prefixSeparatorIndex + 1);\r\n return new ast_1.Quote(prefix, uninterpretedExpression, location);\r\n };\r\n Parser.prototype.parseTemplateBindings = function (input, location) {\r\n var tokens = this._lexer.tokenize(input);\r\n return new _ParseAST(input, location, tokens, this._reflector, false).parseTemplateBindings();\r\n };\r\n Parser.prototype.parseInterpolation = function (input, location) {\r\n var parts = lang_1.StringWrapper.split(input, INTERPOLATION_REGEXP);\r\n if (parts.length <= 1) {\r\n return null;\r\n }\r\n var strings = [];\r\n var expressions = [];\r\n for (var i = 0; i < parts.length; i++) {\r\n var part = parts[i];\r\n if (i % 2 === 0) {\r\n // fixed string\r\n strings.push(part);\r\n }\r\n else if (part.trim().length > 0) {\r\n var tokens = this._lexer.tokenize(part);\r\n var ast = new _ParseAST(input, location, tokens, this._reflector, false).parseChain();\r\n expressions.push(ast);\r\n }\r\n else {\r\n throw new ParseException('Blank expressions are not allowed in interpolated strings', input, \"at column \" + this._findInterpolationErrorColumn(parts, i) + \" in\", location);\r\n }\r\n }\r\n return new ast_1.ASTWithSource(new ast_1.Interpolation(strings, expressions), input, location);\r\n };\r\n Parser.prototype.wrapLiteralPrimitive = function (input, location) {\r\n return new ast_1.ASTWithSource(new ast_1.LiteralPrimitive(input), input, location);\r\n };\r\n Parser.prototype._checkNoInterpolation = function (input, location) {\r\n var parts = lang_1.StringWrapper.split(input, INTERPOLATION_REGEXP);\r\n if (parts.length > 1) {\r\n throw new ParseException('Got interpolation ({{}}) where expression was expected', input, \"at column \" + this._findInterpolationErrorColumn(parts, 1) + \" in\", location);\r\n }\r\n };\r\n Parser.prototype._findInterpolationErrorColumn = function (parts, partInErrIdx) {\r\n var errLocation = '';\r\n for (var j = 0; j < partInErrIdx; j++) {\r\n errLocation += j % 2 === 0 ? parts[j] : \"{{\" + parts[j] + \"}}\";\r\n }\r\n return errLocation.length;\r\n };\r\n Parser = __decorate([\r\n decorators_1.Injectable(), \r\n __metadata('design:paramtypes', [lexer_1.Lexer, reflection_1.Reflector])\r\n ], Parser);\r\n return Parser;\r\n})();\r\nexports.Parser = Parser;\r\nvar _ParseAST = (function () {\r\n function _ParseAST(input, location, tokens, reflector, parseAction) {\r\n this.input = input;\r\n this.location = location;\r\n this.tokens = tokens;\r\n this.reflector = reflector;\r\n this.parseAction = parseAction;\r\n this.index = 0;\r\n }\r\n _ParseAST.prototype.peek = function (offset) {\r\n var i = this.index + offset;\r\n return i < this.tokens.length ? this.tokens[i] : lexer_1.EOF;\r\n };\r\n Object.defineProperty(_ParseAST.prototype, \"next\", {\r\n get: function () { return this.peek(0); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(_ParseAST.prototype, \"inputIndex\", {\r\n get: function () {\r\n return (this.index < this.tokens.length) ? this.next.index : this.input.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n _ParseAST.prototype.advance = function () { this.index++; };\r\n _ParseAST.prototype.optionalCharacter = function (code) {\r\n if (this.next.isCharacter(code)) {\r\n this.advance();\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n _ParseAST.prototype.optionalKeywordVar = function () {\r\n if (this.peekKeywordVar()) {\r\n this.advance();\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n _ParseAST.prototype.peekKeywordVar = function () { return this.next.isKeywordVar() || this.next.isOperator('#'); };\r\n _ParseAST.prototype.expectCharacter = function (code) {\r\n if (this.optionalCharacter(code))\r\n return;\r\n this.error(\"Missing expected \" + lang_1.StringWrapper.fromCharCode(code));\r\n };\r\n _ParseAST.prototype.optionalOperator = function (op) {\r\n if (this.next.isOperator(op)) {\r\n this.advance();\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n _ParseAST.prototype.expectOperator = function (operator) {\r\n if (this.optionalOperator(operator))\r\n return;\r\n this.error(\"Missing expected operator \" + operator);\r\n };\r\n _ParseAST.prototype.expectIdentifierOrKeyword = function () {\r\n var n = this.next;\r\n if (!n.isIdentifier() && !n.isKeyword()) {\r\n this.error(\"Unexpected token \" + n + \", expected identifier or keyword\");\r\n }\r\n this.advance();\r\n return n.toString();\r\n };\r\n _ParseAST.prototype.expectIdentifierOrKeywordOrString = function () {\r\n var n = this.next;\r\n if (!n.isIdentifier() && !n.isKeyword() && !n.isString()) {\r\n this.error(\"Unexpected token \" + n + \", expected identifier, keyword, or string\");\r\n }\r\n this.advance();\r\n return n.toString();\r\n };\r\n _ParseAST.prototype.parseChain = function () {\r\n var exprs = [];\r\n while (this.index < this.tokens.length) {\r\n var expr = this.parsePipe();\r\n exprs.push(expr);\r\n if (this.optionalCharacter(lexer_1.$SEMICOLON)) {\r\n if (!this.parseAction) {\r\n this.error(\"Binding expression cannot contain chained expression\");\r\n }\r\n while (this.optionalCharacter(lexer_1.$SEMICOLON)) {\r\n } // read all semicolons\r\n }\r\n else if (this.index < this.tokens.length) {\r\n this.error(\"Unexpected token '\" + this.next + \"'\");\r\n }\r\n }\r\n if (exprs.length == 0)\r\n return new ast_1.EmptyExpr();\r\n if (exprs.length == 1)\r\n return exprs[0];\r\n return new ast_1.Chain(exprs);\r\n };\r\n _ParseAST.prototype.parsePipe = function () {\r\n var result = this.parseExpression();\r\n if (this.optionalOperator(\"|\")) {\r\n if (this.parseAction) {\r\n this.error(\"Cannot have a pipe in an action expression\");\r\n }\r\n do {\r\n var name = this.expectIdentifierOrKeyword();\r\n var args = [];\r\n while (this.optionalCharacter(lexer_1.$COLON)) {\r\n args.push(this.parseExpression());\r\n }\r\n result = new ast_1.BindingPipe(result, name, args);\r\n } while (this.optionalOperator(\"|\"));\r\n }\r\n return result;\r\n };\r\n _ParseAST.prototype.parseExpression = function () { return this.parseConditional(); };\r\n _ParseAST.prototype.parseConditional = function () {\r\n var start = this.inputIndex;\r\n var result = this.parseLogicalOr();\r\n if (this.optionalOperator('?')) {\r\n var yes = this.parsePipe();\r\n if (!this.optionalCharacter(lexer_1.$COLON)) {\r\n var end = this.inputIndex;\r\n var expression = this.input.substring(start, end);\r\n this.error(\"Conditional expression \" + expression + \" requires all 3 expressions\");\r\n }\r\n var no = this.parsePipe();\r\n return new ast_1.Conditional(result, yes, no);\r\n }\r\n else {\r\n return result;\r\n }\r\n };\r\n _ParseAST.prototype.parseLogicalOr = function () {\r\n // '||'\r\n var result = this.parseLogicalAnd();\r\n while (this.optionalOperator('||')) {\r\n result = new ast_1.Binary('||', result, this.parseLogicalAnd());\r\n }\r\n return result;\r\n };\r\n _ParseAST.prototype.parseLogicalAnd = function () {\r\n // '&&'\r\n var result = this.parseEquality();\r\n while (this.optionalOperator('&&')) {\r\n result = new ast_1.Binary('&&', result, this.parseEquality());\r\n }\r\n return result;\r\n };\r\n _ParseAST.prototype.parseEquality = function () {\r\n // '==','!=','===','!=='\r\n var result = this.parseRelational();\r\n while (true) {\r\n if (this.optionalOperator('==')) {\r\n result = new ast_1.Binary('==', result, this.parseRelational());\r\n }\r\n else if (this.optionalOperator('===')) {\r\n result = new ast_1.Binary('===', result, this.parseRelational());\r\n }\r\n else if (this.optionalOperator('!=')) {\r\n result = new ast_1.Binary('!=', result, this.parseRelational());\r\n }\r\n else if (this.optionalOperator('!==')) {\r\n result = new ast_1.Binary('!==', result, this.parseRelational());\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n };\r\n _ParseAST.prototype.parseRelational = function () {\r\n // '<', '>', '<=', '>='\r\n var result = this.parseAdditive();\r\n while (true) {\r\n if (this.optionalOperator('<')) {\r\n result = new ast_1.Binary('<', result, this.parseAdditive());\r\n }\r\n else if (this.optionalOperator('>')) {\r\n result = new ast_1.Binary('>', result, this.parseAdditive());\r\n }\r\n else if (this.optionalOperator('<=')) {\r\n result = new ast_1.Binary('<=', result, this.parseAdditive());\r\n }\r\n else if (this.optionalOperator('>=')) {\r\n result = new ast_1.Binary('>=', result, this.parseAdditive());\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n };\r\n _ParseAST.prototype.parseAdditive = function () {\r\n // '+', '-'\r\n var result = this.parseMultiplicative();\r\n while (true) {\r\n if (this.optionalOperator('+')) {\r\n result = new ast_1.Binary('+', result, this.parseMultiplicative());\r\n }\r\n else if (this.optionalOperator('-')) {\r\n result = new ast_1.Binary('-', result, this.parseMultiplicative());\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n };\r\n _ParseAST.prototype.parseMultiplicative = function () {\r\n // '*', '%', '/'\r\n var result = this.parsePrefix();\r\n while (true) {\r\n if (this.optionalOperator('*')) {\r\n result = new ast_1.Binary('*', result, this.parsePrefix());\r\n }\r\n else if (this.optionalOperator('%')) {\r\n result = new ast_1.Binary('%', result, this.parsePrefix());\r\n }\r\n else if (this.optionalOperator('/')) {\r\n result = new ast_1.Binary('/', result, this.parsePrefix());\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n };\r\n _ParseAST.prototype.parsePrefix = function () {\r\n if (this.optionalOperator('+')) {\r\n return this.parsePrefix();\r\n }\r\n else if (this.optionalOperator('-')) {\r\n return new ast_1.Binary('-', new ast_1.LiteralPrimitive(0), this.parsePrefix());\r\n }\r\n else if (this.optionalOperator('!')) {\r\n return new ast_1.PrefixNot(this.parsePrefix());\r\n }\r\n else {\r\n return this.parseCallChain();\r\n }\r\n };\r\n _ParseAST.prototype.parseCallChain = function () {\r\n var result = this.parsePrimary();\r\n while (true) {\r\n if (this.optionalCharacter(lexer_1.$PERIOD)) {\r\n result = this.parseAccessMemberOrMethodCall(result, false);\r\n }\r\n else if (this.optionalOperator('?.')) {\r\n result = this.parseAccessMemberOrMethodCall(result, true);\r\n }\r\n else if (this.optionalCharacter(lexer_1.$LBRACKET)) {\r\n var key = this.parsePipe();\r\n this.expectCharacter(lexer_1.$RBRACKET);\r\n if (this.optionalOperator(\"=\")) {\r\n var value = this.parseConditional();\r\n result = new ast_1.KeyedWrite(result, key, value);\r\n }\r\n else {\r\n result = new ast_1.KeyedRead(result, key);\r\n }\r\n }\r\n else if (this.optionalCharacter(lexer_1.$LPAREN)) {\r\n var args = this.parseCallArguments();\r\n this.expectCharacter(lexer_1.$RPAREN);\r\n result = new ast_1.FunctionCall(result, args);\r\n }\r\n else {\r\n return result;\r\n }\r\n }\r\n };\r\n _ParseAST.prototype.parsePrimary = function () {\r\n if (this.optionalCharacter(lexer_1.$LPAREN)) {\r\n var result = this.parsePipe();\r\n this.expectCharacter(lexer_1.$RPAREN);\r\n return result;\r\n }\r\n else if (this.next.isKeywordNull() || this.next.isKeywordUndefined()) {\r\n this.advance();\r\n return new ast_1.LiteralPrimitive(null);\r\n }\r\n else if (this.next.isKeywordTrue()) {\r\n this.advance();\r\n return new ast_1.LiteralPrimitive(true);\r\n }\r\n else if (this.next.isKeywordFalse()) {\r\n this.advance();\r\n return new ast_1.LiteralPrimitive(false);\r\n }\r\n else if (this.optionalCharacter(lexer_1.$LBRACKET)) {\r\n var elements = this.parseExpressionList(lexer_1.$RBRACKET);\r\n this.expectCharacter(lexer_1.$RBRACKET);\r\n return new ast_1.LiteralArray(elements);\r\n }\r\n else if (this.next.isCharacter(lexer_1.$LBRACE)) {\r\n return this.parseLiteralMap();\r\n }\r\n else if (this.next.isIdentifier()) {\r\n return this.parseAccessMemberOrMethodCall(_implicitReceiver, false);\r\n }\r\n else if (this.next.isNumber()) {\r\n var value = this.next.toNumber();\r\n this.advance();\r\n return new ast_1.LiteralPrimitive(value);\r\n }\r\n else if (this.next.isString()) {\r\n var literalValue = this.next.toString();\r\n this.advance();\r\n return new ast_1.LiteralPrimitive(literalValue);\r\n }\r\n else if (this.index >= this.tokens.length) {\r\n this.error(\"Unexpected end of expression: \" + this.input);\r\n }\r\n else {\r\n this.error(\"Unexpected token \" + this.next);\r\n }\r\n // error() throws, so we don't reach here.\r\n throw new exceptions_1.BaseException(\"Fell through all cases in parsePrimary\");\r\n };\r\n _ParseAST.prototype.parseExpressionList = function (terminator) {\r\n var result = [];\r\n if (!this.next.isCharacter(terminator)) {\r\n do {\r\n result.push(this.parsePipe());\r\n } while (this.optionalCharacter(lexer_1.$COMMA));\r\n }\r\n return result;\r\n };\r\n _ParseAST.prototype.parseLiteralMap = function () {\r\n var keys = [];\r\n var values = [];\r\n this.expectCharacter(lexer_1.$LBRACE);\r\n if (!this.optionalCharacter(lexer_1.$RBRACE)) {\r\n do {\r\n var key = this.expectIdentifierOrKeywordOrString();\r\n keys.push(key);\r\n this.expectCharacter(lexer_1.$COLON);\r\n values.push(this.parsePipe());\r\n } while (this.optionalCharacter(lexer_1.$COMMA));\r\n this.expectCharacter(lexer_1.$RBRACE);\r\n }\r\n return new ast_1.LiteralMap(keys, values);\r\n };\r\n _ParseAST.prototype.parseAccessMemberOrMethodCall = function (receiver, isSafe) {\r\n if (isSafe === void 0) { isSafe = false; }\r\n var id = this.expectIdentifierOrKeyword();\r\n if (this.optionalCharacter(lexer_1.$LPAREN)) {\r\n var args = this.parseCallArguments();\r\n this.expectCharacter(lexer_1.$RPAREN);\r\n var fn = this.reflector.method(id);\r\n return isSafe ? new ast_1.SafeMethodCall(receiver, id, fn, args) :\r\n new ast_1.MethodCall(receiver, id, fn, args);\r\n }\r\n else {\r\n if (isSafe) {\r\n if (this.optionalOperator(\"=\")) {\r\n this.error(\"The '?.' operator cannot be used in the assignment\");\r\n }\r\n else {\r\n return new ast_1.SafePropertyRead(receiver, id, this.reflector.getter(id));\r\n }\r\n }\r\n else {\r\n if (this.optionalOperator(\"=\")) {\r\n if (!this.parseAction) {\r\n this.error(\"Bindings cannot contain assignments\");\r\n }\r\n var value = this.parseConditional();\r\n return new ast_1.PropertyWrite(receiver, id, this.reflector.setter(id), value);\r\n }\r\n else {\r\n return new ast_1.PropertyRead(receiver, id, this.reflector.getter(id));\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n _ParseAST.prototype.parseCallArguments = function () {\r\n if (this.next.isCharacter(lexer_1.$RPAREN))\r\n return [];\r\n var positionals = [];\r\n do {\r\n positionals.push(this.parsePipe());\r\n } while (this.optionalCharacter(lexer_1.$COMMA));\r\n return positionals;\r\n };\r\n _ParseAST.prototype.parseBlockContent = function () {\r\n if (!this.parseAction) {\r\n this.error(\"Binding expression cannot contain chained expression\");\r\n }\r\n var exprs = [];\r\n while (this.index < this.tokens.length && !this.next.isCharacter(lexer_1.$RBRACE)) {\r\n var expr = this.parseExpression();\r\n exprs.push(expr);\r\n if (this.optionalCharacter(lexer_1.$SEMICOLON)) {\r\n while (this.optionalCharacter(lexer_1.$SEMICOLON)) {\r\n } // read all semicolons\r\n }\r\n }\r\n if (exprs.length == 0)\r\n return new ast_1.EmptyExpr();\r\n if (exprs.length == 1)\r\n return exprs[0];\r\n return new ast_1.Chain(exprs);\r\n };\r\n /**\r\n * An identifier, a keyword, a string with an optional `-` inbetween.\r\n */\r\n _ParseAST.prototype.expectTemplateBindingKey = function () {\r\n var result = '';\r\n var operatorFound = false;\r\n do {\r\n result += this.expectIdentifierOrKeywordOrString();\r\n operatorFound = this.optionalOperator('-');\r\n if (operatorFound) {\r\n result += '-';\r\n }\r\n } while (operatorFound);\r\n return result.toString();\r\n };\r\n _ParseAST.prototype.parseTemplateBindings = function () {\r\n var bindings = [];\r\n var prefix = null;\r\n while (this.index < this.tokens.length) {\r\n var keyIsVar = this.optionalKeywordVar();\r\n var key = this.expectTemplateBindingKey();\r\n if (!keyIsVar) {\r\n if (prefix == null) {\r\n prefix = key;\r\n }\r\n else {\r\n key = prefix + key[0].toUpperCase() + key.substring(1);\r\n }\r\n }\r\n this.optionalCharacter(lexer_1.$COLON);\r\n var name = null;\r\n var expression = null;\r\n if (keyIsVar) {\r\n if (this.optionalOperator(\"=\")) {\r\n name = this.expectTemplateBindingKey();\r\n }\r\n else {\r\n name = '\\$implicit';\r\n }\r\n }\r\n else if (this.next !== lexer_1.EOF && !this.peekKeywordVar()) {\r\n var start = this.inputIndex;\r\n var ast = this.parsePipe();\r\n var source = this.input.substring(start, this.inputIndex);\r\n expression = new ast_1.ASTWithSource(ast, source, this.location);\r\n }\r\n bindings.push(new ast_1.TemplateBinding(key, keyIsVar, name, expression));\r\n if (!this.optionalCharacter(lexer_1.$SEMICOLON)) {\r\n this.optionalCharacter(lexer_1.$COMMA);\r\n }\r\n }\r\n return bindings;\r\n };\r\n _ParseAST.prototype.error = function (message, index) {\r\n if (index === void 0) { index = null; }\r\n if (lang_1.isBlank(index))\r\n index = this.index;\r\n var location = (index < this.tokens.length) ? \"at column \" + (this.tokens[index].index + 1) + \" in\" :\r\n \"at the end of the expression\";\r\n throw new ParseException(message, this.input, location, this.location);\r\n };\r\n return _ParseAST;\r\n})();\r\nexports._ParseAST = _ParseAST;\r\nvar SimpleExpressionChecker = (function () {\r\n function SimpleExpressionChecker() {\r\n this.simple = true;\r\n }\r\n SimpleExpressionChecker.check = function (ast) {\r\n var s = new SimpleExpressionChecker();\r\n ast.visit(s);\r\n return s.simple;\r\n };\r\n SimpleExpressionChecker.prototype.visitImplicitReceiver = function (ast) { };\r\n SimpleExpressionChecker.prototype.visitInterpolation = function (ast) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitLiteralPrimitive = function (ast) { };\r\n SimpleExpressionChecker.prototype.visitPropertyRead = function (ast) { };\r\n SimpleExpressionChecker.prototype.visitPropertyWrite = function (ast) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitSafePropertyRead = function (ast) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitMethodCall = function (ast) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitSafeMethodCall = function (ast) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitFunctionCall = function (ast) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitLiteralArray = function (ast) { this.visitAll(ast.expressions); };\r\n SimpleExpressionChecker.prototype.visitLiteralMap = function (ast) { this.visitAll(ast.values); };\r\n SimpleExpressionChecker.prototype.visitBinary = function (ast) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitPrefixNot = function (ast) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitConditional = function (ast) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitPipe = function (ast) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitKeyedRead = function (ast) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitKeyedWrite = function (ast) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitAll = function (asts) {\r\n var res = collection_1.ListWrapper.createFixedSize(asts.length);\r\n for (var i = 0; i < asts.length; ++i) {\r\n res[i] = asts[i].visit(this);\r\n }\r\n return res;\r\n };\r\n SimpleExpressionChecker.prototype.visitChain = function (ast) { this.simple = false; };\r\n SimpleExpressionChecker.prototype.visitQuote = function (ast) { this.simple = false; };\r\n return SimpleExpressionChecker;\r\n})();\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9wYXJzZXIvcGFyc2VyLnRzIl0sIm5hbWVzIjpbIlBhcnNlRXhjZXB0aW9uIiwiUGFyc2VFeGNlcHRpb24uY29uc3RydWN0b3IiLCJQYXJzZXIiLCJQYXJzZXIuY29uc3RydWN0b3IiLCJQYXJzZXIucGFyc2VBY3Rpb24iLCJQYXJzZXIucGFyc2VCaW5kaW5nIiwiUGFyc2VyLnBhcnNlU2ltcGxlQmluZGluZyIsIlBhcnNlci5fcGFyc2VCaW5kaW5nQXN0IiwiUGFyc2VyLl9wYXJzZVF1b3RlIiwiUGFyc2VyLnBhcnNlVGVtcGxhdGVCaW5kaW5ncyIsIlBhcnNlci5wYXJzZUludGVycG9sYXRpb24iLCJQYXJzZXIud3JhcExpdGVyYWxQcmltaXRpdmUiLCJQYXJzZXIuX2NoZWNrTm9JbnRlcnBvbGF0aW9uIiwiUGFyc2VyLl9maW5kSW50ZXJwb2xhdGlvbkVycm9yQ29sdW1uIiwiX1BhcnNlQVNUIiwiX1BhcnNlQVNULmNvbnN0cnVjdG9yIiwiX1BhcnNlQVNULnBlZWsiLCJfUGFyc2VBU1QubmV4dCIsIl9QYXJzZUFTVC5pbnB1dEluZGV4IiwiX1BhcnNlQVNULmFkdmFuY2UiLCJfUGFyc2VBU1Qub3B0aW9uYWxDaGFyYWN0ZXIiLCJfUGFyc2VBU1Qub3B0aW9uYWxLZXl3b3JkVmFyIiwiX1BhcnNlQVNULnBlZWtLZXl3b3JkVmFyIiwiX1BhcnNlQVNULmV4cGVjdENoYXJhY3RlciIsIl9QYXJzZUFTVC5vcHRpb25hbE9wZXJhdG9yIiwiX1BhcnNlQVNULmV4cGVjdE9wZXJhdG9yIiwiX1BhcnNlQVNULmV4cGVjdElkZW50aWZpZXJPcktleXdvcmQiLCJfUGFyc2VBU1QuZXhwZWN0SWRlbnRpZmllck9yS2V5d29yZE9yU3RyaW5nIiwiX1BhcnNlQVNULnBhcnNlQ2hhaW4iLCJfUGFyc2VBU1QucGFyc2VQaXBlIiwiX1BhcnNlQVNULnBhcnNlRXhwcmVzc2lvbiIsIl9QYXJzZUFTVC5wYXJzZUNvbmRpdGlvbmFsIiwiX1BhcnNlQVNULnBhcnNlTG9naWNhbE9yIiwiX1BhcnNlQVNULnBhcnNlTG9naWNhbEFuZCIsIl9QYXJzZUFTVC5wYXJzZUVxdWFsaXR5IiwiX1BhcnNlQVNULnBhcnNlUmVsYXRpb25hbCIsIl9QYXJzZUFTVC5wYXJzZUFkZGl0aXZlIiwiX1BhcnNlQVNULnBhcnNlTXVsdGlwbGljYXRpdmUiLCJfUGFyc2VBU1QucGFyc2VQcmVmaXgiLCJfUGFyc2VBU1QucGFyc2VDYWxsQ2hhaW4iLCJfUGFyc2VBU1QucGFyc2VQcmltYXJ5IiwiX1BhcnNlQVNULnBhcnNlRXhwcmVzc2lvbkxpc3QiLCJfUGFyc2VBU1QucGFyc2VMaXRlcmFsTWFwIiwiX1BhcnNlQVNULnBhcnNlQWNjZXNzTWVtYmVyT3JNZXRob2RDYWxsIiwiX1BhcnNlQVNULnBhcnNlQ2FsbEFyZ3VtZW50cyIsIl9QYXJzZUFTVC5wYXJzZUJsb2NrQ29udGVudCIsIl9QYXJzZUFTVC5leHBlY3RUZW1wbGF0ZUJpbmRpbmdLZXkiLCJfUGFyc2VBU1QucGFyc2VUZW1wbGF0ZUJpbmRpbmdzIiwiX1BhcnNlQVNULmVycm9yIiwiU2ltcGxlRXhwcmVzc2lvbkNoZWNrZXIiLCJTaW1wbGVFeHByZXNzaW9uQ2hlY2tlci5jb25zdHJ1Y3RvciIsIlNpbXBsZUV4cHJlc3Npb25DaGVja2VyLmNoZWNrIiwiU2ltcGxlRXhwcmVzc2lvbkNoZWNrZXIudmlzaXRJbXBsaWNpdFJlY2VpdmVyIiwiU2ltcGxlRXhwcmVzc2lvbkNoZWNrZXIudmlzaXRJbnRlcnBvbGF0aW9uIiwiU2ltcGxlRXhwcmVzc2lvbkNoZWNrZXIudmlzaXRMaXRlcmFsUHJpbWl0aXZlIiwiU2ltcGxlRXhwcmVzc2lvbkNoZWNrZXIudmlzaXRQcm9wZXJ0eVJlYWQiLCJTaW1wbGVFeHByZXNzaW9uQ2hlY2tlci52aXNpdFByb3BlcnR5V3JpdGUiLCJTaW1wbGVFeHByZXNzaW9uQ2hlY2tlci52aXNpdFNhZmVQcm9wZXJ0eVJlYWQiLCJTaW1wbGVFeHByZXNzaW9uQ2hlY2tlci52aXNpdE1ldGhvZENhbGwiLCJTaW1wbGVFeHByZXNzaW9uQ2hlY2tlci52aXNpdFNhZmVNZXRob2RDYWxsIiwiU2ltcGxlRXhwcmVzc2lvbkNoZWNrZXIudmlzaXRGdW5jdGlvbkNhbGwiLCJTaW1wbGVFeHByZXNzaW9uQ2hlY2tlci52aXNpdExpdGVyYWxBcnJheSIsIlNpbXBsZUV4cHJlc3Npb25DaGVja2VyLnZpc2l0TGl0ZXJhbE1hcCIsIlNpbXBsZUV4cHJlc3Npb25DaGVja2VyLnZpc2l0QmluYXJ5IiwiU2ltcGxlRXhwcmVzc2lvbkNoZWNrZXIudmlzaXRQcmVmaXhOb3QiLCJTaW1wbGVFeHByZXNzaW9uQ2hlY2tlci52aXNpdENvbmRpdGlvbmFsIiwiU2ltcGxlRXhwcmVzc2lvbkNoZWNrZXIudmlzaXRQaXBlIiwiU2ltcGxlRXhwcmVzc2lvbkNoZWNrZXIudmlzaXRLZXllZFJlYWQiLCJTaW1wbGVFeHByZXNzaW9uQ2hlY2tlci52aXNpdEtleWVkV3JpdGUiLCJTaW1wbGVFeHByZXNzaW9uQ2hlY2tlci52aXNpdEFsbCIsIlNpbXBsZUV4cHJlc3Npb25DaGVja2VyLnZpc2l0Q2hhaW4iLCJTaW1wbGVFeHByZXNzaW9uQ2hlY2tlci52aXNpdFF1b3RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLDJCQUF5QixpQ0FBaUMsQ0FBQyxDQUFBO0FBQzNELHFCQUFnRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQzNFLDJCQUE4QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQy9FLDJCQUEwQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzNELHNCQWVPLFNBQVMsQ0FBQyxDQUFBO0FBQ2pCLDJCQUFtQyx5Q0FBeUMsQ0FBQyxDQUFBO0FBQzdFLG9CQXlCTyxPQUFPLENBQUMsQ0FBQTtBQUdmLElBQUksaUJBQWlCLEdBQUcsSUFBSSxzQkFBZ0IsRUFBRSxDQUFDO0FBQy9DLG9GQUFvRjtBQUNwRixJQUFJLG9CQUFvQixHQUFHLHFCQUFx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QWVBLEdBQWZBO1FBQ0VxQix1QkFBdUJBO1FBQ3ZCQSxJQUFJQSxNQUFNQSxHQUFHQSxJQUFJQSxDQUFDQSxhQUFhQSxFQUFFQSxDQUFDQTtRQUNsQ0EsT0FBT0EsSUFBSUEsRUFBRUEsQ0FBQ0E7WUFDWkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDL0JBLE1BQU1BLEdBQUdBLElBQUlBLFlBQU1BLENBQUNBLEdBQUdBLEVBQUVBLE1BQU1BLEVBQUVBLElBQUlBLENBQUNBLGFBQWFBLEVBQUVBLENBQUNBLENBQUNBO1lBQ3pEQSxDQUFDQTtZQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxnQkFBZ0JBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUN0Q0EsTUFBTUEsR0FBR0EsSUFBSUEsWUFBTUEsQ0FBQ0EsR0FBR0EsRUFBRUEsTUFBTUEsRUFBRUEsSUFBSUEsQ0FBQ0EsYUFBYUEsRUFBRUEsQ0FBQ0EsQ0FBQ0E7WUFDekRBLENBQUNBO1lBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLGdCQUFnQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ3ZDQSxNQUFNQSxHQUFHQSxJQUFJQSxZQUFNQSxDQUFDQSxJQUFJQSxFQUFFQSxNQUFNQSxFQUFFQSxJQUFJQSxDQUFDQSxhQUFhQSxFQUFFQSxDQUFDQSxDQUFDQTtZQUMxREEsQ0FBQ0E7WUFBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDdkNBLE1BQU1BLEdBQUdBLElBQUlBLFlBQU1BLENBQUNBLElBQUlBLEVBQUVBLE1BQU1BLEVBQUVBLElBQUlBLENBQUNBLGFBQWFBLEVBQUVBLENBQUNBLENBQUNBO1lB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QUNsQm9CLElBQUlBLEdBQUdBLEdBQUdBLHdCQUFXQSxDQUFDQSxlQUFlQSxDQUFDQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQTtRQUNuREEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsTUFBTUEsRUFBRUEsRUFBRUEsQ0FBQ0EsRUFBRUEsQ0FBQ0E7WUFDckNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQy9CQSxDQUFDQTtRQUNEQSxNQUFNQSxDQUFDQSxHQUFHQSxDQUFDQTtJQUNiQSxDQUFDQTtJQUVEcEIsNENBQVVBLEdBQVZBLFVBQVdBLEdBQVVBLElBQUlxQixJQUFJQSxDQUFDQSxNQUFNQSxHQUFHQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUUvQ3JCLDRDQUFVQSxHQUFWQSxVQUFXQSxHQUFVQSxJQUFJc0IsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDakR0Qiw4QkFBQ0E7QUFBREEsQ0FBQ0EsQUF0REQsSUFzREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpL2RlY29yYXRvcnMnO1xuaW1wb3J0IHtpc0JsYW5rLCBpc1ByZXNlbnQsIFN0cmluZ1dyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb24sIFdyYXBwZWRFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtcbiAgTGV4ZXIsXG4gIEVPRixcbiAgaXNJZGVudGlmaWVyLFxuICBUb2tlbixcbiAgJFBFUklPRCxcbiAgJENPTE9OLFxuICAkU0VNSUNPTE9OLFxuICAkTEJSQUNLRVQsXG4gICRSQlJBQ0tFVCxcbiAgJENPTU1BLFxuICAkTEJSQUNFLFxuICAkUkJSQUNFLFxuICAkTFBBUkVOLFxuICAkUlBBUkVOXG59IGZyb20gJy4vbGV4ZXInO1xuaW1wb3J0IHtyZWZsZWN0b3IsIFJlZmxlY3Rvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVmbGVjdGlvbi9yZWZsZWN0aW9uJztcbmltcG9ydCB7XG4gIEFTVCxcbiAgRW1wdHlFeHByLFxuICBJbXBsaWNpdFJlY2VpdmVyLFxuICBQcm9wZXJ0eVJlYWQsXG4gIFByb3BlcnR5V3JpdGUsXG4gIFNhZmVQcm9wZXJ0eVJlYWQsXG4gIExpdGVyYWxQcmltaXRpdmUsXG4gIEJpbmFyeSxcbiAgUHJlZml4Tm90LFxuICBDb25kaXRpb25hbCxcbiAgQmluZGluZ1BpcGUsXG4gIENoYWluLFxuICBLZXllZFJlYWQsXG4gIEtleWVkV3JpdGUsXG4gIExpdGVyYWxBcnJheSxcbiAgTGl0ZXJhbE1hcCxcbiAgSW50ZXJwb2xhdGlvbixcbiAgTWV0aG9kQ2FsbCxcbiAgU2FmZU1ldGhvZENhbGwsXG4gIEZ1bmN0aW9uQ2FsbCxcbiAgVGVtcGxhdGVCaW5kaW5nLFxuICBBU1RXaXRoU291cmNlLFxuICBBc3RWaXNpdG9yLFxuICBRdW90ZVxufSBmcm9tICcuL2FzdCc7XG5cblxudmFyIF9pbXBsaWNpdFJlY2VpdmVyID0gbmV3IEltcGxpY2l0UmVjZWl2ZXIoKTtcbi8vIFRPRE8odGJvc2NoKTogQ2Fubm90IG1ha2UgdGhpcyBjb25zdC9maW5hbCByaWdodCBub3cgYmVjYXVzZSBvZiB0aGUgdHJhbnNwaWxlci4uLlxudmFyIElOVEVSUE9MQVRJT05fUkVHRVhQID0gL1xce1xceyhbXFxzXFxTXSo/KVxcfVxcfS9nO1xuXG5jbGFzcyBQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGlucHV0OiBzdHJpbmcsIGVyckxvY2F0aW9uOiBzdHJpbmcsIGN0eExvY2F0aW9uPzogYW55KSB7XG4gICAgc3VwZXIoYFBhcnNlciBFcnJvcjogJHttZXNzYWdlfSAke2VyckxvY2F0aW9ufSBbJHtpbnB1dH1dIGluICR7Y3R4TG9jYXRpb259YCk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFBhcnNlciB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3JlZmxlY3RvcjogUmVmbGVjdG9yO1xuXG4gIGNvbnN0cnVjdG9yKC8qKiBAaW50ZXJuYWwgKi9cbiAgICAgICAgICAgICAgcHVibGljIF9sZXhlcjogTGV4ZXIsIHByb3ZpZGVkUmVmbGVjdG9yOiBSZWZsZWN0b3IgPSBudWxsKSB7XG4gICAgdGhpcy5fcmVmbGVjdG9yID0gaXNQcmVzZW50KHByb3ZpZGVkUmVmbGVjdG9yKSA/IHByb3ZpZGVkUmVmbGVjdG9yIDogcmVmbGVjdG9yO1xuICB9XG5cbiAgcGFyc2VBY3Rpb24oaW5wdXQ6IHN0cmluZywgbG9jYXRpb246IGFueSk6IEFTVFdpdGhTb3VyY2Uge1xuICAgIHRoaXMuX2NoZWNrTm9JbnRlcnBvbGF0aW9uKGlucHV0LCBsb2NhdGlvbik7XG4gICAgdmFyIHRva2VucyA9IHRoaXMuX2xleGVyLnRva2VuaXplKGlucHV0KTtcbiAgICB2YXIgYXN0ID0gbmV3IF9QYXJzZUFTVChpbnB1dCwgbG9jYXRpb24sIHRva2VucywgdGhpcy5fcmVmbGVjdG9yLCB0cnVlKS5wYXJzZUNoYWluKCk7XG4gICAgcmV0dXJuIG5ldyBBU1RXaXRoU291cmNlKGFzdCwgaW5wdXQsIGxvY2F0aW9uKTtcbiAgfVxuXG4gIHBhcnNlQmluZGluZyhpbnB1dDogc3RyaW5nLCBsb2NhdGlvbjogYW55KTogQVNUV2l0aFNvdXJjZSB7XG4gICAgdmFyIGFzdCA9IHRoaXMuX3BhcnNlQmluZGluZ0FzdChpbnB1dCwgbG9jYXRpb24pO1xuICAgIHJldHVybiBuZXcgQVNUV2l0aFNvdXJjZShhc3QsIGlucHV0LCBsb2NhdGlvbik7XG4gIH1cblxuICBwYXJzZVNpbXBsZUJpbmRpbmcoaW5wdXQ6IHN0cmluZywgbG9jYXRpb246IHN0cmluZyk6IEFTVFdpdGhTb3VyY2Uge1xuICAgIHZhciBhc3QgPSB0aGlzLl9wYXJzZUJpbmRpbmdBc3QoaW5wdXQsIGxvY2F0aW9uKTtcbiAgICBpZiAoIVNpbXBsZUV4cHJlc3Npb25DaGVja2VyLmNoZWNrKGFzdCkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUV4Y2VwdGlvbihcbiAgICAgICAgICAnSG9zdCBiaW5kaW5nIGV4cHJlc3Npb24gY2FuIG9ubHkgY29udGFpbiBmaWVsZCBhY2Nlc3MgYW5kIGNvbnN0YW50cycsIGlucHV0LCBsb2NhdGlvbik7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQVNUV2l0aFNvdXJjZShhc3QsIGlucHV0LCBsb2NhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUJpbmRpbmdBc3QoaW5wdXQ6IHN0cmluZywgbG9jYXRpb246IHN0cmluZyk6IEFTVCB7XG4gICAgLy8gUXVvdGVzIGV4cHJlc3Npb25zIHVzZSAzcmQtcGFydHkgZXhwcmVzc2lvbiBsYW5ndWFnZS4gV2UgZG9uJ3Qgd2FudCB0byB1c2VcbiAgICAvLyBvdXIgbGV4ZXIgb3IgcGFyc2VyIGZvciB0aGF0LCBzbyB3ZSBjaGVjayBmb3IgdGhhdCBhaGVhZCBvZiB0aW1lLlxuICAgIHZhciBxdW90ZSA9IHRoaXMuX3BhcnNlUXVvdGUoaW5wdXQsIGxvY2F0aW9uKTtcblxuICAgIGlmIChpc1ByZXNlbnQocXVvdGUpKSB7XG4gICAgICByZXR1cm4gcXVvdGU7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hlY2tOb0ludGVycG9sYXRpb24oaW5wdXQsIGxvY2F0aW9uKTtcbiAgICB2YXIgdG9rZW5zID0gdGhpcy5fbGV4ZXIudG9rZW5pemUoaW5wdXQpO1xuICAgIHJldHVybiBuZXcgX1BhcnNlQVNUKGlucHV0LCBsb2NhdGlvbiwgdG9rZW5zLCB0aGlzLl9yZWZsZWN0b3IsIGZhbHNlKS5wYXJzZUNoYWluKCk7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZVF1b3RlKGlucHV0OiBzdHJpbmcsIGxvY2F0aW9uOiBhbnkpOiBBU1Qge1xuICAgIGlmIChpc0JsYW5rKGlucHV0KSkgcmV0dXJuIG51bGw7XG4gICAgdmFyIHByZWZpeFNlcGFyYXRvckluZGV4ID0gaW5wdXQuaW5kZXhPZignOicpO1xuICAgIGlmIChwcmVmaXhTZXBhcmF0b3JJbmRleCA9PSAtMSkgcmV0dXJuIG51bGw7XG4gICAgdmFyIHByZWZpeCA9IGlucHV0LnN1YnN0cmluZygwLCBwcmVmaXhTZXBhcmF0b3JJbmRleCkudHJpbSgpO1xuICAgIGlmICghaXNJZGVudGlmaWVyKHByZWZpeCkpIHJldHVybiBudWxsO1xuICAgIHZhciB1bmludGVycHJldGVkRXhwcmVzc2lvbiA9IGlucHV0LnN1YnN0cmluZyhwcmVmaXhTZXBhcmF0b3JJbmRleCArIDEpO1xuICAgIHJldHVybiBuZXcgUXVvdGUocHJlZml4LCB1bmludGVycHJldGVkRXhwcmVzc2lvbiwgbG9jYXRpb24pO1xuICB9XG5cbiAgcGFyc2VUZW1wbGF0ZUJpbmRpbmdzKGlucHV0OiBzdHJpbmcsIGxvY2F0aW9uOiBhbnkpOiBUZW1wbGF0ZUJpbmRpbmdbXSB7XG4gICAgdmFyIHRva2VucyA9IHRoaXMuX2xleGVyLnRva2VuaXplKGlucHV0KTtcbiAgICByZXR1cm4gbmV3IF9QYXJzZUFTVChpbnB1dCwgbG9jYXRpb24sIHRva2VucywgdGhpcy5fcmVmbGVjdG9yLCBmYWxzZSkucGFyc2VUZW1wbGF0ZUJpbmRpbmdzKCk7XG4gIH1cblxuICBwYXJzZUludGVycG9sYXRpb24oaW5wdXQ6IHN0cmluZywgbG9jYXRpb246IGFueSk6IEFTVFdpdGhTb3VyY2Uge1xuICAgIHZhciBwYXJ0cyA9IFN0cmluZ1dyYXBwZXIuc3BsaXQoaW5wdXQsIElOVEVSUE9MQVRJT05fUkVHRVhQKTtcbiAgICBpZiAocGFydHMubGVuZ3RoIDw9IDEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgc3RyaW5ncyA9IFtdO1xuICAgIHZhciBleHByZXNzaW9ucyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBhcnQ6IHN0cmluZyA9IHBhcnRzW2ldO1xuICAgICAgaWYgKGkgJSAyID09PSAwKSB7XG4gICAgICAgIC8vIGZpeGVkIHN0cmluZ1xuICAgICAgICBzdHJpbmdzLnB1c2gocGFydCk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnQudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIHRva2VucyA9IHRoaXMuX2xleGVyLnRva2VuaXplKHBhcnQpO1xuICAgICAgICB2YXIgYXN0ID0gbmV3IF9QYXJzZUFTVChpbnB1dCwgbG9jYXRpb24sIHRva2VucywgdGhpcy5fcmVmbGVjdG9yLCBmYWxzZSkucGFyc2VDaGFpbigpO1xuICAgICAgICBleHByZXNzaW9ucy5wdXNoKGFzdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2VFeGNlcHRpb24oJ0JsYW5rIGV4cHJlc3Npb25zIGFyZSBub3QgYWxsb3dlZCBpbiBpbnRlcnBvbGF0ZWQgc3RyaW5ncycsIGlucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGF0IGNvbHVtbiAke3RoaXMuX2ZpbmRJbnRlcnBvbGF0aW9uRXJyb3JDb2x1bW4ocGFydHMsIGkpfSBpbmAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgQVNUV2l0aFNvdXJjZShuZXcgSW50ZXJwb2xhdGlvbihzdHJpbmdzLCBleHByZXNzaW9ucyksIGlucHV0LCBsb2NhdGlvbik7XG4gIH1cblxuICB3cmFwTGl0ZXJhbFByaW1pdGl2ZShpbnB1dDogc3RyaW5nLCBsb2NhdGlvbjogYW55KTogQVNUV2l0aFNvdXJjZSB7XG4gICAgcmV0dXJuIG5ldyBBU1RXaXRoU291cmNlKG5ldyBMaXRlcmFsUHJpbWl0aXZlKGlucHV0KSwgaW5wdXQsIGxvY2F0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrTm9JbnRlcnBvbGF0aW9uKGlucHV0OiBzdHJpbmcsIGxvY2F0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICB2YXIgcGFydHMgPSBTdHJpbmdXcmFwcGVyLnNwbGl0KGlucHV0LCBJTlRFUlBPTEFUSU9OX1JFR0VYUCk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZUV4Y2VwdGlvbignR290IGludGVycG9sYXRpb24gKHt7fX0pIHdoZXJlIGV4cHJlc3Npb24gd2FzIGV4cGVjdGVkJywgaW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGF0IGNvbHVtbiAke3RoaXMuX2ZpbmRJbnRlcnBvbGF0aW9uRXJyb3JDb2x1bW4ocGFydHMsIDEpfSBpbmAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmRJbnRlcnBvbGF0aW9uRXJyb3JDb2x1bW4ocGFydHM6IHN0cmluZ1tdLCBwYXJ0SW5FcnJJZHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgdmFyIGVyckxvY2F0aW9uID0gJyc7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBwYXJ0SW5FcnJJZHg7IGorKykge1xuICAgICAgZXJyTG9jYXRpb24gKz0gaiAlIDIgPT09IDAgPyBwYXJ0c1tqXSA6IGB7eyR7cGFydHNbal19fX1gO1xuICAgIH1cblxuICAgIHJldHVybiBlcnJMb2NhdGlvbi5sZW5ndGg7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIF9QYXJzZUFTVCB7XG4gIGluZGV4OiBudW1iZXIgPSAwO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgaW5wdXQ6IHN0cmluZywgcHVibGljIGxvY2F0aW9uOiBhbnksIHB1YmxpYyB0b2tlbnM6IGFueVtdLFxuICAgICAgICAgICAgICBwdWJsaWMgcmVmbGVjdG9yOiBSZWZsZWN0b3IsIHB1YmxpYyBwYXJzZUFjdGlvbjogYm9vbGVhbikge31cblxuICBwZWVrKG9mZnNldDogbnVtYmVyKTogVG9rZW4ge1xuICAgIHZhciBpID0gdGhpcy5pbmRleCArIG9mZnNldDtcbiAgICByZXR1cm4gaSA8IHRoaXMudG9rZW5zLmxlbmd0aCA/IHRoaXMudG9rZW5zW2ldIDogRU9GO1xuICB9XG5cbiAgZ2V0IG5leHQoKTogVG9rZW4geyByZXR1cm4gdGhpcy5wZWVrKDApOyB9XG5cbiAgZ2V0IGlucHV0SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuaW5kZXggPCB0aGlzLnRva2Vucy5sZW5ndGgpID8gdGhpcy5uZXh0LmluZGV4IDogdGhpcy5pbnB1dC5sZW5ndGg7XG4gIH1cblxuICBhZHZhbmNlKCkgeyB0aGlzLmluZGV4Kys7IH1cblxuICBvcHRpb25hbENoYXJhY3Rlcihjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5uZXh0LmlzQ2hhcmFjdGVyKGNvZGUpKSB7XG4gICAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgb3B0aW9uYWxLZXl3b3JkVmFyKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnBlZWtLZXl3b3JkVmFyKCkpIHtcbiAgICAgIHRoaXMuYWR2YW5jZSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwZWVrS2V5d29yZFZhcigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubmV4dC5pc0tleXdvcmRWYXIoKSB8fCB0aGlzLm5leHQuaXNPcGVyYXRvcignIycpOyB9XG5cbiAgZXhwZWN0Q2hhcmFjdGVyKGNvZGU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLm9wdGlvbmFsQ2hhcmFjdGVyKGNvZGUpKSByZXR1cm47XG4gICAgdGhpcy5lcnJvcihgTWlzc2luZyBleHBlY3RlZCAke1N0cmluZ1dyYXBwZXIuZnJvbUNoYXJDb2RlKGNvZGUpfWApO1xuICB9XG5cblxuICBvcHRpb25hbE9wZXJhdG9yKG9wOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5uZXh0LmlzT3BlcmF0b3Iob3ApKSB7XG4gICAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZXhwZWN0T3BlcmF0b3Iob3BlcmF0b3I6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3Iob3BlcmF0b3IpKSByZXR1cm47XG4gICAgdGhpcy5lcnJvcihgTWlzc2luZyBleHBlY3RlZCBvcGVyYXRvciAke29wZXJhdG9yfWApO1xuICB9XG5cbiAgZXhwZWN0SWRlbnRpZmllck9yS2V5d29yZCgpOiBzdHJpbmcge1xuICAgIHZhciBuID0gdGhpcy5uZXh0O1xuICAgIGlmICghbi5pc0lkZW50aWZpZXIoKSAmJiAhbi5pc0tleXdvcmQoKSkge1xuICAgICAgdGhpcy5lcnJvcihgVW5leHBlY3RlZCB0b2tlbiAke259LCBleHBlY3RlZCBpZGVudGlmaWVyIG9yIGtleXdvcmRgKTtcbiAgICB9XG4gICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgcmV0dXJuIG4udG9TdHJpbmcoKTtcbiAgfVxuXG4gIGV4cGVjdElkZW50aWZpZXJPcktleXdvcmRPclN0cmluZygpOiBzdHJpbmcge1xuICAgIHZhciBuID0gdGhpcy5uZXh0O1xuICAgIGlmICghbi5pc0lkZW50aWZpZXIoKSAmJiAhbi5pc0tleXdvcmQoKSAmJiAhbi5pc1N0cmluZygpKSB7XG4gICAgICB0aGlzLmVycm9yKGBVbmV4cGVjdGVkIHRva2VuICR7bn0sIGV4cGVjdGVkIGlkZW50aWZpZXIsIGtleXdvcmQsIG9yIHN0cmluZ2ApO1xuICAgIH1cbiAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICByZXR1cm4gbi50b1N0cmluZygpO1xuICB9XG5cbiAgcGFyc2VDaGFpbigpOiBBU1Qge1xuICAgIHZhciBleHBycyA9IFtdO1xuICAgIHdoaWxlICh0aGlzLmluZGV4IDwgdGhpcy50b2tlbnMubGVuZ3RoKSB7XG4gICAgICB2YXIgZXhwciA9IHRoaXMucGFyc2VQaXBlKCk7XG4gICAgICBleHBycy5wdXNoKGV4cHIpO1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkU0VNSUNPTE9OKSkge1xuICAgICAgICBpZiAoIXRoaXMucGFyc2VBY3Rpb24pIHtcbiAgICAgICAgICB0aGlzLmVycm9yKFwiQmluZGluZyBleHByZXNzaW9uIGNhbm5vdCBjb250YWluIGNoYWluZWQgZXhwcmVzc2lvblwiKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkU0VNSUNPTE9OKSkge1xuICAgICAgICB9ICAvLyByZWFkIGFsbCBzZW1pY29sb25zXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaW5kZXggPCB0aGlzLnRva2Vucy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5lcnJvcihgVW5leHBlY3RlZCB0b2tlbiAnJHt0aGlzLm5leHR9J2ApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXhwcnMubGVuZ3RoID09IDApIHJldHVybiBuZXcgRW1wdHlFeHByKCk7XG4gICAgaWYgKGV4cHJzLmxlbmd0aCA9PSAxKSByZXR1cm4gZXhwcnNbMF07XG4gICAgcmV0dXJuIG5ldyBDaGFpbihleHBycyk7XG4gIH1cblxuICBwYXJzZVBpcGUoKTogQVNUIHtcbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5wYXJzZUV4cHJlc3Npb24oKTtcbiAgICBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKFwifFwiKSkge1xuICAgICAgaWYgKHRoaXMucGFyc2VBY3Rpb24pIHtcbiAgICAgICAgdGhpcy5lcnJvcihcIkNhbm5vdCBoYXZlIGEgcGlwZSBpbiBhbiBhY3Rpb24gZXhwcmVzc2lvblwiKTtcbiAgICAgIH1cblxuICAgICAgZG8ge1xuICAgICAgICB2YXIgbmFtZSA9IHRoaXMuZXhwZWN0SWRlbnRpZmllck9yS2V5d29yZCgpO1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICB3aGlsZSAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkQ09MT04pKSB7XG4gICAgICAgICAgYXJncy5wdXNoKHRoaXMucGFyc2VFeHByZXNzaW9uKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IG5ldyBCaW5kaW5nUGlwZShyZXN1bHQsIG5hbWUsIGFyZ3MpO1xuICAgICAgfSB3aGlsZSAodGhpcy5vcHRpb25hbE9wZXJhdG9yKFwifFwiKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHBhcnNlRXhwcmVzc2lvbigpOiBBU1QgeyByZXR1cm4gdGhpcy5wYXJzZUNvbmRpdGlvbmFsKCk7IH1cblxuICBwYXJzZUNvbmRpdGlvbmFsKCk6IEFTVCB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5pbnB1dEluZGV4O1xuICAgIHZhciByZXN1bHQgPSB0aGlzLnBhcnNlTG9naWNhbE9yKCk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKCc/JykpIHtcbiAgICAgIHZhciB5ZXMgPSB0aGlzLnBhcnNlUGlwZSgpO1xuICAgICAgaWYgKCF0aGlzLm9wdGlvbmFsQ2hhcmFjdGVyKCRDT0xPTikpIHtcbiAgICAgICAgdmFyIGVuZCA9IHRoaXMuaW5wdXRJbmRleDtcbiAgICAgICAgdmFyIGV4cHJlc3Npb24gPSB0aGlzLmlucHV0LnN1YnN0cmluZyhzdGFydCwgZW5kKTtcbiAgICAgICAgdGhpcy5lcnJvcihgQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiAke2V4cHJlc3Npb259IHJlcXVpcmVzIGFsbCAzIGV4cHJlc3Npb25zYCk7XG4gICAgICB9XG4gICAgICB2YXIgbm8gPSB0aGlzLnBhcnNlUGlwZSgpO1xuICAgICAgcmV0dXJuIG5ldyBDb25kaXRpb25hbChyZXN1bHQsIHllcywgbm8pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlTG9naWNhbE9yKCk6IEFTVCB7XG4gICAgLy8gJ3x8J1xuICAgIHZhciByZXN1bHQgPSB0aGlzLnBhcnNlTG9naWNhbEFuZCgpO1xuICAgIHdoaWxlICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJ3x8JykpIHtcbiAgICAgIHJlc3VsdCA9IG5ldyBCaW5hcnkoJ3x8JywgcmVzdWx0LCB0aGlzLnBhcnNlTG9naWNhbEFuZCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHBhcnNlTG9naWNhbEFuZCgpOiBBU1Qge1xuICAgIC8vICcmJidcbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5wYXJzZUVxdWFsaXR5KCk7XG4gICAgd2hpbGUgKHRoaXMub3B0aW9uYWxPcGVyYXRvcignJiYnKSkge1xuICAgICAgcmVzdWx0ID0gbmV3IEJpbmFyeSgnJiYnLCByZXN1bHQsIHRoaXMucGFyc2VFcXVhbGl0eSgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHBhcnNlRXF1YWxpdHkoKTogQVNUIHtcbiAgICAvLyAnPT0nLCchPScsJz09PScsJyE9PSdcbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5wYXJzZVJlbGF0aW9uYWwoKTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcignPT0nKSkge1xuICAgICAgICByZXN1bHQgPSBuZXcgQmluYXJ5KCc9PScsIHJlc3VsdCwgdGhpcy5wYXJzZVJlbGF0aW9uYWwoKSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcignPT09JykpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IEJpbmFyeSgnPT09JywgcmVzdWx0LCB0aGlzLnBhcnNlUmVsYXRpb25hbCgpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKCchPScpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBCaW5hcnkoJyE9JywgcmVzdWx0LCB0aGlzLnBhcnNlUmVsYXRpb25hbCgpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKCchPT0nKSkge1xuICAgICAgICByZXN1bHQgPSBuZXcgQmluYXJ5KCchPT0nLCByZXN1bHQsIHRoaXMucGFyc2VSZWxhdGlvbmFsKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJzZVJlbGF0aW9uYWwoKTogQVNUIHtcbiAgICAvLyAnPCcsICc+JywgJzw9JywgJz49J1xuICAgIHZhciByZXN1bHQgPSB0aGlzLnBhcnNlQWRkaXRpdmUoKTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcignPCcpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBCaW5hcnkoJzwnLCByZXN1bHQsIHRoaXMucGFyc2VBZGRpdGl2ZSgpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKCc+JykpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IEJpbmFyeSgnPicsIHJlc3VsdCwgdGhpcy5wYXJzZUFkZGl0aXZlKCkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJzw9JykpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IEJpbmFyeSgnPD0nLCByZXN1bHQsIHRoaXMucGFyc2VBZGRpdGl2ZSgpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKCc+PScpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBCaW5hcnkoJz49JywgcmVzdWx0LCB0aGlzLnBhcnNlQWRkaXRpdmUoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcnNlQWRkaXRpdmUoKTogQVNUIHtcbiAgICAvLyAnKycsICctJ1xuICAgIHZhciByZXN1bHQgPSB0aGlzLnBhcnNlTXVsdGlwbGljYXRpdmUoKTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcignKycpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBCaW5hcnkoJysnLCByZXN1bHQsIHRoaXMucGFyc2VNdWx0aXBsaWNhdGl2ZSgpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKCctJykpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IEJpbmFyeSgnLScsIHJlc3VsdCwgdGhpcy5wYXJzZU11bHRpcGxpY2F0aXZlKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJzZU11bHRpcGxpY2F0aXZlKCk6IEFTVCB7XG4gICAgLy8gJyonLCAnJScsICcvJ1xuICAgIHZhciByZXN1bHQgPSB0aGlzLnBhcnNlUHJlZml4KCk7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJyonKSkge1xuICAgICAgICByZXN1bHQgPSBuZXcgQmluYXJ5KCcqJywgcmVzdWx0LCB0aGlzLnBhcnNlUHJlZml4KCkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJyUnKSkge1xuICAgICAgICByZXN1bHQgPSBuZXcgQmluYXJ5KCclJywgcmVzdWx0LCB0aGlzLnBhcnNlUHJlZml4KCkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJy8nKSkge1xuICAgICAgICByZXN1bHQgPSBuZXcgQmluYXJ5KCcvJywgcmVzdWx0LCB0aGlzLnBhcnNlUHJlZml4KCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJzZVByZWZpeCgpOiBBU1Qge1xuICAgIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJysnKSkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VQcmVmaXgoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcignLScpKSB7XG4gICAgICByZXR1cm4gbmV3IEJpbmFyeSgnLScsIG5ldyBMaXRlcmFsUHJpbWl0aXZlKDApLCB0aGlzLnBhcnNlUHJlZml4KCkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKCchJykpIHtcbiAgICAgIHJldHVybiBuZXcgUHJlZml4Tm90KHRoaXMucGFyc2VQcmVmaXgoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlQ2FsbENoYWluKCk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VDYWxsQ2hhaW4oKTogQVNUIHtcbiAgICB2YXIgcmVzdWx0ID0gdGhpcy5wYXJzZVByaW1hcnkoKTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKHRoaXMub3B0aW9uYWxDaGFyYWN0ZXIoJFBFUklPRCkpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5wYXJzZUFjY2Vzc01lbWJlck9yTWV0aG9kQ2FsbChyZXN1bHQsIGZhbHNlKTtcblxuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJz8uJykpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5wYXJzZUFjY2Vzc01lbWJlck9yTWV0aG9kQ2FsbChyZXN1bHQsIHRydWUpO1xuXG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9uYWxDaGFyYWN0ZXIoJExCUkFDS0VUKSkge1xuICAgICAgICB2YXIga2V5ID0gdGhpcy5wYXJzZVBpcGUoKTtcbiAgICAgICAgdGhpcy5leHBlY3RDaGFyYWN0ZXIoJFJCUkFDS0VUKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcihcIj1cIikpIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnBhcnNlQ29uZGl0aW9uYWwoKTtcbiAgICAgICAgICByZXN1bHQgPSBuZXcgS2V5ZWRXcml0ZShyZXN1bHQsIGtleSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IG5ldyBLZXllZFJlYWQocmVzdWx0LCBrZXkpO1xuICAgICAgICB9XG5cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkTFBBUkVOKSkge1xuICAgICAgICB2YXIgYXJncyA9IHRoaXMucGFyc2VDYWxsQXJndW1lbnRzKCk7XG4gICAgICAgIHRoaXMuZXhwZWN0Q2hhcmFjdGVyKCRSUEFSRU4pO1xuICAgICAgICByZXN1bHQgPSBuZXcgRnVuY3Rpb25DYWxsKHJlc3VsdCwgYXJncyk7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcGFyc2VQcmltYXJ5KCk6IEFTVCB7XG4gICAgaWYgKHRoaXMub3B0aW9uYWxDaGFyYWN0ZXIoJExQQVJFTikpIHtcbiAgICAgIGxldCByZXN1bHQgPSB0aGlzLnBhcnNlUGlwZSgpO1xuICAgICAgdGhpcy5leHBlY3RDaGFyYWN0ZXIoJFJQQVJFTik7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5uZXh0LmlzS2V5d29yZE51bGwoKSB8fCB0aGlzLm5leHQuaXNLZXl3b3JkVW5kZWZpbmVkKCkpIHtcbiAgICAgIHRoaXMuYWR2YW5jZSgpO1xuICAgICAgcmV0dXJuIG5ldyBMaXRlcmFsUHJpbWl0aXZlKG51bGwpO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLm5leHQuaXNLZXl3b3JkVHJ1ZSgpKSB7XG4gICAgICB0aGlzLmFkdmFuY2UoKTtcbiAgICAgIHJldHVybiBuZXcgTGl0ZXJhbFByaW1pdGl2ZSh0cnVlKTtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5uZXh0LmlzS2V5d29yZEZhbHNlKCkpIHtcbiAgICAgIHRoaXMuYWR2YW5jZSgpO1xuICAgICAgcmV0dXJuIG5ldyBMaXRlcmFsUHJpbWl0aXZlKGZhbHNlKTtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkTEJSQUNLRVQpKSB7XG4gICAgICB2YXIgZWxlbWVudHMgPSB0aGlzLnBhcnNlRXhwcmVzc2lvbkxpc3QoJFJCUkFDS0VUKTtcbiAgICAgIHRoaXMuZXhwZWN0Q2hhcmFjdGVyKCRSQlJBQ0tFVCk7XG4gICAgICByZXR1cm4gbmV3IExpdGVyYWxBcnJheShlbGVtZW50cyk7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMubmV4dC5pc0NoYXJhY3RlcigkTEJSQUNFKSkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VMaXRlcmFsTWFwKCk7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMubmV4dC5pc0lkZW50aWZpZXIoKSkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VBY2Nlc3NNZW1iZXJPck1ldGhvZENhbGwoX2ltcGxpY2l0UmVjZWl2ZXIsIGZhbHNlKTtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5uZXh0LmlzTnVtYmVyKCkpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMubmV4dC50b051bWJlcigpO1xuICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICByZXR1cm4gbmV3IExpdGVyYWxQcmltaXRpdmUodmFsdWUpO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLm5leHQuaXNTdHJpbmcoKSkge1xuICAgICAgdmFyIGxpdGVyYWxWYWx1ZSA9IHRoaXMubmV4dC50b1N0cmluZygpO1xuICAgICAgdGhpcy5hZHZhbmNlKCk7XG4gICAgICByZXR1cm4gbmV3IExpdGVyYWxQcmltaXRpdmUobGl0ZXJhbFZhbHVlKTtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5pbmRleCA+PSB0aGlzLnRva2Vucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZXJyb3IoYFVuZXhwZWN0ZWQgZW5kIG9mIGV4cHJlc3Npb246ICR7dGhpcy5pbnB1dH1gKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVycm9yKGBVbmV4cGVjdGVkIHRva2VuICR7dGhpcy5uZXh0fWApO1xuICAgIH1cbiAgICAvLyBlcnJvcigpIHRocm93cywgc28gd2UgZG9uJ3QgcmVhY2ggaGVyZS5cbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihcIkZlbGwgdGhyb3VnaCBhbGwgY2FzZXMgaW4gcGFyc2VQcmltYXJ5XCIpO1xuICB9XG5cbiAgcGFyc2VFeHByZXNzaW9uTGlzdCh0ZXJtaW5hdG9yOiBudW1iZXIpOiBhbnlbXSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGlmICghdGhpcy5uZXh0LmlzQ2hhcmFjdGVyKHRlcm1pbmF0b3IpKSB7XG4gICAgICBkbyB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHRoaXMucGFyc2VQaXBlKCkpO1xuICAgICAgfSB3aGlsZSAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkQ09NTUEpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHBhcnNlTGl0ZXJhbE1hcCgpOiBMaXRlcmFsTWFwIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICB0aGlzLmV4cGVjdENoYXJhY3RlcigkTEJSQUNFKTtcbiAgICBpZiAoIXRoaXMub3B0aW9uYWxDaGFyYWN0ZXIoJFJCUkFDRSkpIHtcbiAgICAgIGRvIHtcbiAgICAgICAgdmFyIGtleSA9IHRoaXMuZXhwZWN0SWRlbnRpZmllck9yS2V5d29yZE9yU3RyaW5nKCk7XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgICB0aGlzLmV4cGVjdENoYXJhY3RlcigkQ09MT04pO1xuICAgICAgICB2YWx1ZXMucHVzaCh0aGlzLnBhcnNlUGlwZSgpKTtcbiAgICAgIH0gd2hpbGUgKHRoaXMub3B0aW9uYWxDaGFyYWN0ZXIoJENPTU1BKSk7XG4gICAgICB0aGlzLmV4cGVjdENoYXJhY3RlcigkUkJSQUNFKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBMaXRlcmFsTWFwKGtleXMsIHZhbHVlcyk7XG4gIH1cblxuICBwYXJzZUFjY2Vzc01lbWJlck9yTWV0aG9kQ2FsbChyZWNlaXZlcjogQVNULCBpc1NhZmU6IGJvb2xlYW4gPSBmYWxzZSk6IEFTVCB7XG4gICAgbGV0IGlkID0gdGhpcy5leHBlY3RJZGVudGlmaWVyT3JLZXl3b3JkKCk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkTFBBUkVOKSkge1xuICAgICAgbGV0IGFyZ3MgPSB0aGlzLnBhcnNlQ2FsbEFyZ3VtZW50cygpO1xuICAgICAgdGhpcy5leHBlY3RDaGFyYWN0ZXIoJFJQQVJFTik7XG4gICAgICBsZXQgZm4gPSB0aGlzLnJlZmxlY3Rvci5tZXRob2QoaWQpO1xuICAgICAgcmV0dXJuIGlzU2FmZSA/IG5ldyBTYWZlTWV0aG9kQ2FsbChyZWNlaXZlciwgaWQsIGZuLCBhcmdzKSA6XG4gICAgICAgICAgICAgICAgICAgICAgbmV3IE1ldGhvZENhbGwocmVjZWl2ZXIsIGlkLCBmbiwgYXJncyk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzU2FmZSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKFwiPVwiKSkge1xuICAgICAgICAgIHRoaXMuZXJyb3IoXCJUaGUgJz8uJyBvcGVyYXRvciBjYW5ub3QgYmUgdXNlZCBpbiB0aGUgYXNzaWdubWVudFwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFNhZmVQcm9wZXJ0eVJlYWQocmVjZWl2ZXIsIGlkLCB0aGlzLnJlZmxlY3Rvci5nZXR0ZXIoaWQpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9uYWxPcGVyYXRvcihcIj1cIikpIHtcbiAgICAgICAgICBpZiAoIXRoaXMucGFyc2VBY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IoXCJCaW5kaW5ncyBjYW5ub3QgY29udGFpbiBhc3NpZ25tZW50c1wiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBhcnNlQ29uZGl0aW9uYWwoKTtcbiAgICAgICAgICByZXR1cm4gbmV3IFByb3BlcnR5V3JpdGUocmVjZWl2ZXIsIGlkLCB0aGlzLnJlZmxlY3Rvci5zZXR0ZXIoaWQpLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9wZXJ0eVJlYWQocmVjZWl2ZXIsIGlkLCB0aGlzLnJlZmxlY3Rvci5nZXR0ZXIoaWQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcGFyc2VDYWxsQXJndW1lbnRzKCk6IEJpbmRpbmdQaXBlW10ge1xuICAgIGlmICh0aGlzLm5leHQuaXNDaGFyYWN0ZXIoJFJQQVJFTikpIHJldHVybiBbXTtcbiAgICB2YXIgcG9zaXRpb25hbHMgPSBbXTtcbiAgICBkbyB7XG4gICAgICBwb3NpdGlvbmFscy5wdXNoKHRoaXMucGFyc2VQaXBlKCkpO1xuICAgIH0gd2hpbGUgKHRoaXMub3B0aW9uYWxDaGFyYWN0ZXIoJENPTU1BKSk7XG4gICAgcmV0dXJuIHBvc2l0aW9uYWxzO1xuICB9XG5cbiAgcGFyc2VCbG9ja0NvbnRlbnQoKTogQVNUIHtcbiAgICBpZiAoIXRoaXMucGFyc2VBY3Rpb24pIHtcbiAgICAgIHRoaXMuZXJyb3IoXCJCaW5kaW5nIGV4cHJlc3Npb24gY2Fubm90IGNvbnRhaW4gY2hhaW5lZCBleHByZXNzaW9uXCIpO1xuICAgIH1cbiAgICB2YXIgZXhwcnMgPSBbXTtcbiAgICB3aGlsZSAodGhpcy5pbmRleCA8IHRoaXMudG9rZW5zLmxlbmd0aCAmJiAhdGhpcy5uZXh0LmlzQ2hhcmFjdGVyKCRSQlJBQ0UpKSB7XG4gICAgICB2YXIgZXhwciA9IHRoaXMucGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICBleHBycy5wdXNoKGV4cHIpO1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkU0VNSUNPTE9OKSkge1xuICAgICAgICB3aGlsZSAodGhpcy5vcHRpb25hbENoYXJhY3RlcigkU0VNSUNPTE9OKSkge1xuICAgICAgICB9ICAvLyByZWFkIGFsbCBzZW1pY29sb25zXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChleHBycy5sZW5ndGggPT0gMCkgcmV0dXJuIG5ldyBFbXB0eUV4cHIoKTtcbiAgICBpZiAoZXhwcnMubGVuZ3RoID09IDEpIHJldHVybiBleHByc1swXTtcblxuICAgIHJldHVybiBuZXcgQ2hhaW4oZXhwcnMpO1xuICB9XG5cblxuICAvKipcbiAgICogQW4gaWRlbnRpZmllciwgYSBrZXl3b3JkLCBhIHN0cmluZyB3aXRoIGFuIG9wdGlvbmFsIGAtYCBpbmJldHdlZW4uXG4gICAqL1xuICBleHBlY3RUZW1wbGF0ZUJpbmRpbmdLZXkoKTogc3RyaW5nIHtcbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgdmFyIG9wZXJhdG9yRm91bmQgPSBmYWxzZTtcbiAgICBkbyB7XG4gICAgICByZXN1bHQgKz0gdGhpcy5leHBlY3RJZGVudGlmaWVyT3JLZXl3b3JkT3JTdHJpbmcoKTtcbiAgICAgIG9wZXJhdG9yRm91bmQgPSB0aGlzLm9wdGlvbmFsT3BlcmF0b3IoJy0nKTtcbiAgICAgIGlmIChvcGVyYXRvckZvdW5kKSB7XG4gICAgICAgIHJlc3VsdCArPSAnLSc7XG4gICAgICB9XG4gICAgfSB3aGlsZSAob3BlcmF0b3JGb3VuZCk7XG5cbiAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7XG4gIH1cblxuICBwYXJzZVRlbXBsYXRlQmluZGluZ3MoKTogYW55W10ge1xuICAgIHZhciBiaW5kaW5ncyA9IFtdO1xuICAgIHZhciBwcmVmaXggPSBudWxsO1xuICAgIHdoaWxlICh0aGlzLmluZGV4IDwgdGhpcy50b2tlbnMubGVuZ3RoKSB7XG4gICAgICB2YXIga2V5SXNWYXI6IGJvb2xlYW4gPSB0aGlzLm9wdGlvbmFsS2V5d29yZFZhcigpO1xuICAgICAgdmFyIGtleSA9IHRoaXMuZXhwZWN0VGVtcGxhdGVCaW5kaW5nS2V5KCk7XG4gICAgICBpZiAoIWtleUlzVmFyKSB7XG4gICAgICAgIGlmIChwcmVmaXggPT0gbnVsbCkge1xuICAgICAgICAgIHByZWZpeCA9IGtleTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBrZXkgPSBwcmVmaXggKyBrZXlbMF0udG9VcHBlckNhc2UoKSArIGtleS5zdWJzdHJpbmcoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMub3B0aW9uYWxDaGFyYWN0ZXIoJENPTE9OKTtcbiAgICAgIHZhciBuYW1lID0gbnVsbDtcbiAgICAgIHZhciBleHByZXNzaW9uID0gbnVsbDtcbiAgICAgIGlmIChrZXlJc1Zhcikge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25hbE9wZXJhdG9yKFwiPVwiKSkge1xuICAgICAgICAgIG5hbWUgPSB0aGlzLmV4cGVjdFRlbXBsYXRlQmluZGluZ0tleSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5hbWUgPSAnXFwkaW1wbGljaXQnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubmV4dCAhPT0gRU9GICYmICF0aGlzLnBlZWtLZXl3b3JkVmFyKCkpIHtcbiAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5pbnB1dEluZGV4O1xuICAgICAgICB2YXIgYXN0ID0gdGhpcy5wYXJzZVBpcGUoKTtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHRoaXMuaW5wdXQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLmlucHV0SW5kZXgpO1xuICAgICAgICBleHByZXNzaW9uID0gbmV3IEFTVFdpdGhTb3VyY2UoYXN0LCBzb3VyY2UsIHRoaXMubG9jYXRpb24pO1xuICAgICAgfVxuICAgICAgYmluZGluZ3MucHVzaChuZXcgVGVtcGxhdGVCaW5kaW5nKGtleSwga2V5SXNWYXIsIG5hbWUsIGV4cHJlc3Npb24pKTtcbiAgICAgIGlmICghdGhpcy5vcHRpb25hbENoYXJhY3RlcigkU0VNSUNPTE9OKSkge1xuICAgICAgICB0aGlzLm9wdGlvbmFsQ2hhcmFjdGVyKCRDT01NQSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBiaW5kaW5ncztcbiAgfVxuXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgaW5kZXg6IG51bWJlciA9IG51bGwpIHtcbiAgICBpZiAoaXNCbGFuayhpbmRleCkpIGluZGV4ID0gdGhpcy5pbmRleDtcblxuICAgIHZhciBsb2NhdGlvbiA9IChpbmRleCA8IHRoaXMudG9rZW5zLmxlbmd0aCkgPyBgYXQgY29sdW1uICR7dGhpcy50b2tlbnNbaW5kZXhdLmluZGV4ICsgMX0gaW5gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGF0IHRoZSBlbmQgb2YgdGhlIGV4cHJlc3Npb25gO1xuXG4gICAgdGhyb3cgbmV3IFBhcnNlRXhjZXB0aW9uKG1lc3NhZ2UsIHRoaXMuaW5wdXQsIGxvY2F0aW9uLCB0aGlzLmxvY2F0aW9uKTtcbiAgfVxufVxuXG5jbGFzcyBTaW1wbGVFeHByZXNzaW9uQ2hlY2tlciBpbXBsZW1lbnRzIEFzdFZpc2l0b3Ige1xuICBzdGF0aWMgY2hlY2soYXN0OiBBU1QpOiBib29sZWFuIHtcbiAgICB2YXIgcyA9IG5ldyBTaW1wbGVFeHByZXNzaW9uQ2hlY2tlcigpO1xuICAgIGFzdC52aXNpdChzKTtcbiAgICByZXR1cm4gcy5zaW1wbGU7XG4gIH1cblxuICBzaW1wbGUgPSB0cnVlO1xuXG4gIHZpc2l0SW1wbGljaXRSZWNlaXZlcihhc3Q6IEltcGxpY2l0UmVjZWl2ZXIpIHt9XG5cbiAgdmlzaXRJbnRlcnBvbGF0aW9uKGFzdDogSW50ZXJwb2xhdGlvbikgeyB0aGlzLnNpbXBsZSA9IGZhbHNlOyB9XG5cbiAgdmlzaXRMaXRlcmFsUHJpbWl0aXZlKGFzdDogTGl0ZXJhbFByaW1pdGl2ZSkge31cblxuICB2aXNpdFByb3BlcnR5UmVhZChhc3Q6IFByb3BlcnR5UmVhZCkge31cblxuICB2aXNpdFByb3BlcnR5V3JpdGUoYXN0OiBQcm9wZXJ0eVdyaXRlKSB7IHRoaXMuc2ltcGxlID0gZmFsc2U7IH1cblxuICB2aXNpdFNhZmVQcm9wZXJ0eVJlYWQoYXN0OiBTYWZlUHJvcGVydHlSZWFkKSB7IHRoaXMuc2ltcGxlID0gZmFsc2U7IH1cblxuICB2aXNpdE1ldGhvZENhbGwoYXN0OiBNZXRob2RDYWxsKSB7IHRoaXMuc2ltcGxlID0gZmFsc2U7IH1cblxuICB2aXNpdFNhZmVNZXRob2RDYWxsKGFzdDogU2FmZU1ldGhvZENhbGwpIHsgdGhpcy5zaW1wbGUgPSBmYWxzZTsgfVxuXG4gIHZpc2l0RnVuY3Rpb25DYWxsKGFzdDogRnVuY3Rpb25DYWxsKSB7IHRoaXMuc2ltcGxlID0gZmFsc2U7IH1cblxuICB2aXNpdExpdGVyYWxBcnJheShhc3Q6IExpdGVyYWxBcnJheSkgeyB0aGlzLnZpc2l0QWxsKGFzdC5leHByZXNzaW9ucyk7IH1cblxuICB2aXNpdExpdGVyYWxNYXAoYXN0OiBMaXRlcmFsTWFwKSB7IHRoaXMudmlzaXRBbGwoYXN0LnZhbHVlcyk7IH1cblxuICB2aXNpdEJpbmFyeShhc3Q6IEJpbmFyeSkgeyB0aGlzLnNpbXBsZSA9IGZhbHNlOyB9XG5cbiAgdmlzaXRQcmVmaXhOb3QoYXN0OiBQcmVmaXhOb3QpIHsgdGhpcy5zaW1wbGUgPSBmYWxzZTsgfVxuXG4gIHZpc2l0Q29uZGl0aW9uYWwoYXN0OiBDb25kaXRpb25hbCkgeyB0aGlzLnNpbXBsZSA9IGZhbHNlOyB9XG5cbiAgdmlzaXRQaXBlKGFzdDogQmluZGluZ1BpcGUpIHsgdGhpcy5zaW1wbGUgPSBmYWxzZTsgfVxuXG4gIHZpc2l0S2V5ZWRSZWFkKGFzdDogS2V5ZWRSZWFkKSB7IHRoaXMuc2ltcGxlID0gZmFsc2U7IH1cblxuICB2aXNpdEtleWVkV3JpdGUoYXN0OiBLZXllZFdyaXRlKSB7IHRoaXMuc2ltcGxlID0gZmFsc2U7IH1cblxuICB2aXNpdEFsbChhc3RzOiBhbnlbXSk6IGFueVtdIHtcbiAgICB2YXIgcmVzID0gTGlzdFdyYXBwZXIuY3JlYXRlRml4ZWRTaXplKGFzdHMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFzdHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHJlc1tpXSA9IGFzdHNbaV0udmlzaXQodGhpcyk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICB2aXNpdENoYWluKGFzdDogQ2hhaW4pIHsgdGhpcy5zaW1wbGUgPSBmYWxzZTsgfVxuXG4gIHZpc2l0UXVvdGUoYXN0OiBRdW90ZSkgeyB0aGlzLnNpbXBsZSA9IGZhbHNlOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var DebugContext = (function () {\r\n function DebugContext(element, componentElement, directive, context, locals, injector) {\r\n this.element = element;\r\n this.componentElement = componentElement;\r\n this.directive = directive;\r\n this.context = context;\r\n this.locals = locals;\r\n this.injector = injector;\r\n }\r\n return DebugContext;\r\n})();\r\nexports.DebugContext = DebugContext;\r\nvar ChangeDetectorGenConfig = (function () {\r\n function ChangeDetectorGenConfig(genDebugInfo, logBindingUpdate, useJit) {\r\n this.genDebugInfo = genDebugInfo;\r\n this.logBindingUpdate = logBindingUpdate;\r\n this.useJit = useJit;\r\n }\r\n return ChangeDetectorGenConfig;\r\n})();\r\nexports.ChangeDetectorGenConfig = ChangeDetectorGenConfig;\r\nvar ChangeDetectorDefinition = (function () {\r\n function ChangeDetectorDefinition(id, strategy, variableNames, bindingRecords, eventRecords, directiveRecords, genConfig) {\r\n this.id = id;\r\n this.strategy = strategy;\r\n this.variableNames = variableNames;\r\n this.bindingRecords = bindingRecords;\r\n this.eventRecords = eventRecords;\r\n this.directiveRecords = directiveRecords;\r\n this.genConfig = genConfig;\r\n }\r\n return ChangeDetectorDefinition;\r\n})();\r\nexports.ChangeDetectorDefinition = ChangeDetectorDefinition;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6WyJEZWJ1Z0NvbnRleHQiLCJEZWJ1Z0NvbnRleHQuY29uc3RydWN0b3IiLCJDaGFuZ2VEZXRlY3RvckdlbkNvbmZpZyIsIkNoYW5nZURldGVjdG9yR2VuQ29uZmlnLmNvbnN0cnVjdG9yIiwiQ2hhbmdlRGV0ZWN0b3JEZWZpbml0aW9uIiwiQ2hhbmdlRGV0ZWN0b3JEZWZpbml0aW9uLmNvbnN0cnVjdG9yIl0sIm1hcHBpbmdzIjoiQUFNQTtJQUNFQSxzQkFBbUJBLE9BQVlBLEVBQVNBLGdCQUFxQkEsRUFBU0EsU0FBY0EsRUFDakVBLE9BQVlBLEVBQVNBLE1BQVdBLEVBQVNBLFFBQWFBO1FBRHREQyxZQUFPQSxHQUFQQSxPQUFPQSxDQUFLQTtRQUFTQSxxQkFBZ0JBLEdBQWhCQSxnQkFBZ0JBLENBQUtBO1FBQVNBLGNBQVNBLEdBQVRBLFNBQVNBLENBQUtBO1FBQ2pFQSxZQUFPQSxHQUFQQSxPQUFPQSxDQUFLQTtRQUFTQSxXQUFNQSxHQUFOQSxNQUFNQSxDQUFLQTtRQUFTQSxhQUFRQSxHQUFSQSxRQUFRQSxDQUFLQTtJQUFHQSxDQUFDQTtJQUMvRUQsbUJBQUNBO0FBQURBLENBQUNBLEFBSEQsSUFHQztBQUhZLG9CQUFZLGVBR3hCLENBQUE7QUFvQ0Q7SUFDRUUsaUNBQW1CQSxZQUFxQkEsRUFBU0EsZ0JBQXlCQSxFQUN2REEsTUFBZUE7UUFEZkMsaUJBQVlBLEdBQVpBLFlBQVlBLENBQVNBO1FBQVNBLHFCQUFnQkEsR0FBaEJBLGdCQUFnQkEsQ0FBU0E7UUFDdkRBLFdBQU1BLEdBQU5BLE1BQU1BLENBQVNBO0lBQUdBLENBQUNBO0lBQ3hDRCw4QkFBQ0E7QUFBREEsQ0FBQ0EsQUFIRCxJQUdDO0FBSFksK0JBQXVCLDBCQUduQyxDQUFBO0FBRUQ7SUFDRUUsa0NBQW1CQSxFQUFVQSxFQUFTQSxRQUFpQ0EsRUFDcERBLGFBQXVCQSxFQUFTQSxjQUErQkEsRUFDL0RBLFlBQTZCQSxFQUFTQSxnQkFBbUNBLEVBQ3pFQSxTQUFrQ0E7UUFIbENDLE9BQUVBLEdBQUZBLEVBQUVBLENBQVFBO1FBQVNBLGFBQVFBLEdBQVJBLFFBQVFBLENBQXlCQTtRQUNwREEsa0JBQWFBLEdBQWJBLGFBQWFBLENBQVVBO1FBQVNBLG1CQUFjQSxHQUFkQSxjQUFjQSxDQUFpQkE7UUFDL0RBLGlCQUFZQSxHQUFaQSxZQUFZQSxDQUFpQkE7UUFBU0EscUJBQWdCQSxHQUFoQkEsZ0JBQWdCQSxDQUFtQkE7UUFDekVBLGNBQVNBLEdBQVRBLFNBQVNBLENBQXlCQTtJQUFHQSxDQUFDQTtJQUMzREQsK0JBQUNBO0FBQURBLENBQUNBLEFBTEQsSUFLQztBQUxZLGdDQUF3QiwyQkFLcEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TG9jYWxzfSBmcm9tICcuL3BhcnNlci9sb2NhbHMnO1xuaW1wb3J0IHtCaW5kaW5nVGFyZ2V0LCBCaW5kaW5nUmVjb3JkfSBmcm9tICcuL2JpbmRpbmdfcmVjb3JkJztcbmltcG9ydCB7RGlyZWN0aXZlUmVjb3JkLCBEaXJlY3RpdmVJbmRleH0gZnJvbSAnLi9kaXJlY3RpdmVfcmVjb3JkJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3l9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJy4vY2hhbmdlX2RldGVjdG9yX3JlZic7XG5cbmV4cG9ydCBjbGFzcyBEZWJ1Z0NvbnRleHQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudDogYW55LCBwdWJsaWMgY29tcG9uZW50RWxlbWVudDogYW55LCBwdWJsaWMgZGlyZWN0aXZlOiBhbnksXG4gICAgICAgICAgICAgIHB1YmxpYyBjb250ZXh0OiBhbnksIHB1YmxpYyBsb2NhbHM6IGFueSwgcHVibGljIGluamVjdG9yOiBhbnkpIHt9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlRGlzcGF0Y2hlciB7XG4gIGdldERlYnVnQ29udGV4dChhcHBFbGVtZW50OiBhbnksIGVsZW1lbnRJbmRleDogbnVtYmVyLCBkaXJlY3RpdmVJbmRleDogbnVtYmVyKTogRGVidWdDb250ZXh0O1xuICBub3RpZnlPbkJpbmRpbmcoYmluZGluZ1RhcmdldDogQmluZGluZ1RhcmdldCwgdmFsdWU6IGFueSk6IHZvaWQ7XG4gIGxvZ0JpbmRpbmdVcGRhdGUoYmluZGluZ1RhcmdldDogQmluZGluZ1RhcmdldCwgdmFsdWU6IGFueSk6IHZvaWQ7XG4gIG5vdGlmeUFmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZDtcbiAgbm90aWZ5QWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkO1xuICBub3RpZnlPbkRlc3Ryb3koKTogdm9pZDtcbiAgZ2V0RGV0ZWN0b3JGb3IoZGlyZWN0aXZlSW5kZXg6IERpcmVjdGl2ZUluZGV4KTogQ2hhbmdlRGV0ZWN0b3I7XG4gIGdldERpcmVjdGl2ZUZvcihkaXJlY3RpdmVJbmRleDogRGlyZWN0aXZlSW5kZXgpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlRGV0ZWN0b3Ige1xuICBwYXJlbnQ6IENoYW5nZURldGVjdG9yO1xuICBtb2RlOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneTtcbiAgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcblxuICBhZGRDb250ZW50Q2hpbGQoY2Q6IENoYW5nZURldGVjdG9yKTogdm9pZDtcbiAgYWRkVmlld0NoaWxkKGNkOiBDaGFuZ2VEZXRlY3Rvcik6IHZvaWQ7XG4gIHJlbW92ZUNvbnRlbnRDaGlsZChjZDogQ2hhbmdlRGV0ZWN0b3IpOiB2b2lkO1xuICByZW1vdmVWaWV3Q2hpbGQoY2Q6IENoYW5nZURldGVjdG9yKTogdm9pZDtcbiAgcmVtb3ZlKCk6IHZvaWQ7XG4gIGh5ZHJhdGUoY29udGV4dDogYW55LCBsb2NhbHM6IExvY2FscywgZGlzcGF0Y2hlcjogQ2hhbmdlRGlzcGF0Y2hlciwgcGlwZXM6IGFueSk6IHZvaWQ7XG4gIGRlaHlkcmF0ZSgpOiB2b2lkO1xuICBtYXJrUGF0aFRvUm9vdEFzQ2hlY2tPbmNlKCk6IHZvaWQ7XG5cbiAgaGFuZGxlRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIGVsSW5kZXg6IG51bWJlciwgZXZlbnQ6IGFueSk7XG4gIGRldGVjdENoYW5nZXMoKTogdm9pZDtcbiAgY2hlY2tOb0NoYW5nZXMoKTogdm9pZDtcbiAgZGVzdHJveVJlY3Vyc2l2ZSgpOiB2b2lkO1xuICBtYXJrQXNDaGVja09uY2UoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm90b0NoYW5nZURldGVjdG9yIHsgaW5zdGFudGlhdGUoKTogQ2hhbmdlRGV0ZWN0b3I7IH1cblxuZXhwb3J0IGNsYXNzIENoYW5nZURldGVjdG9yR2VuQ29uZmlnIHtcbiAgY29uc3RydWN0b3IocHVibGljIGdlbkRlYnVnSW5mbzogYm9vbGVhbiwgcHVibGljIGxvZ0JpbmRpbmdVcGRhdGU6IGJvb2xlYW4sXG4gICAgICAgICAgICAgIHB1YmxpYyB1c2VKaXQ6IGJvb2xlYW4pIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBDaGFuZ2VEZXRlY3RvckRlZmluaXRpb24ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgaWQ6IHN0cmluZywgcHVibGljIHN0cmF0ZWd5OiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICAgICAgICAgICAgcHVibGljIHZhcmlhYmxlTmFtZXM6IHN0cmluZ1tdLCBwdWJsaWMgYmluZGluZ1JlY29yZHM6IEJpbmRpbmdSZWNvcmRbXSxcbiAgICAgICAgICAgICAgcHVibGljIGV2ZW50UmVjb3JkczogQmluZGluZ1JlY29yZFtdLCBwdWJsaWMgZGlyZWN0aXZlUmVjb3JkczogRGlyZWN0aXZlUmVjb3JkW10sXG4gICAgICAgICAgICAgIHB1YmxpYyBnZW5Db25maWc6IENoYW5nZURldGVjdG9yR2VuQ29uZmlnKSB7fVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\n// The names of these fields must be kept in sync with abstract_change_detector.ts or change\r\n// detection will fail.\r\nvar _STATE_ACCESSOR = \"state\";\r\nvar _CONTEXT_ACCESSOR = \"context\";\r\nvar _PROP_BINDING_INDEX = \"propertyBindingIndex\";\r\nvar _DIRECTIVES_ACCESSOR = \"directiveIndices\";\r\nvar _DISPATCHER_ACCESSOR = \"dispatcher\";\r\nvar _LOCALS_ACCESSOR = \"locals\";\r\nvar _MODE_ACCESSOR = \"mode\";\r\nvar _PIPES_ACCESSOR = \"pipes\";\r\nvar _PROTOS_ACCESSOR = \"protos\";\r\nexports.CONTEXT_ACCESSOR = \"context\";\r\n// `context` is always first.\r\nexports.CONTEXT_INDEX = 0;\r\nvar _FIELD_PREFIX = 'this.';\r\nvar _whiteSpaceRegExp = /\\W/g;\r\n/**\r\n * Returns `s` with all non-identifier characters removed.\r\n */\r\nfunction sanitizeName(s) {\r\n return lang_1.StringWrapper.replaceAll(s, _whiteSpaceRegExp, '');\r\n}\r\nexports.sanitizeName = sanitizeName;\r\n/**\r\n * Class responsible for providing field and local variable names for change detector classes.\r\n * Also provides some convenience functions, for example, declaring variables, destroying pipes,\r\n * and dehydrating the detector.\r\n */\r\nvar CodegenNameUtil = (function () {\r\n function CodegenNameUtil(_records, _eventBindings, _directiveRecords, _utilName) {\r\n this._records = _records;\r\n this._eventBindings = _eventBindings;\r\n this._directiveRecords = _directiveRecords;\r\n this._utilName = _utilName;\r\n /** @internal */\r\n this._sanitizedEventNames = new collection_1.Map();\r\n this._sanitizedNames = collection_1.ListWrapper.createFixedSize(this._records.length + 1);\r\n this._sanitizedNames[exports.CONTEXT_INDEX] = exports.CONTEXT_ACCESSOR;\r\n for (var i = 0, iLen = this._records.length; i < iLen; ++i) {\r\n this._sanitizedNames[i + 1] = sanitizeName(\"\" + this._records[i].name + i);\r\n }\r\n for (var ebIndex = 0; ebIndex < _eventBindings.length; ++ebIndex) {\r\n var eb = _eventBindings[ebIndex];\r\n var names = [exports.CONTEXT_ACCESSOR];\r\n for (var i = 0, iLen = eb.records.length; i < iLen; ++i) {\r\n names.push(sanitizeName(\"\" + eb.records[i].name + i + \"_\" + ebIndex));\r\n }\r\n this._sanitizedEventNames.set(eb, names);\r\n }\r\n }\r\n /** @internal */\r\n CodegenNameUtil.prototype._addFieldPrefix = function (name) { return \"\" + _FIELD_PREFIX + name; };\r\n CodegenNameUtil.prototype.getDispatcherName = function () { return this._addFieldPrefix(_DISPATCHER_ACCESSOR); };\r\n CodegenNameUtil.prototype.getPipesAccessorName = function () { return this._addFieldPrefix(_PIPES_ACCESSOR); };\r\n CodegenNameUtil.prototype.getProtosName = function () { return this._addFieldPrefix(_PROTOS_ACCESSOR); };\r\n CodegenNameUtil.prototype.getDirectivesAccessorName = function () { return this._addFieldPrefix(_DIRECTIVES_ACCESSOR); };\r\n CodegenNameUtil.prototype.getLocalsAccessorName = function () { return this._addFieldPrefix(_LOCALS_ACCESSOR); };\r\n CodegenNameUtil.prototype.getStateName = function () { return this._addFieldPrefix(_STATE_ACCESSOR); };\r\n CodegenNameUtil.prototype.getModeName = function () { return this._addFieldPrefix(_MODE_ACCESSOR); };\r\n CodegenNameUtil.prototype.getPropertyBindingIndex = function () { return this._addFieldPrefix(_PROP_BINDING_INDEX); };\r\n CodegenNameUtil.prototype.getLocalName = function (idx) { return \"l_\" + this._sanitizedNames[idx]; };\r\n CodegenNameUtil.prototype.getEventLocalName = function (eb, idx) {\r\n return \"l_\" + this._sanitizedEventNames.get(eb)[idx];\r\n };\r\n CodegenNameUtil.prototype.getChangeName = function (idx) { return \"c_\" + this._sanitizedNames[idx]; };\r\n /**\r\n * Generate a statement initializing local variables used when detecting changes.\r\n */\r\n CodegenNameUtil.prototype.genInitLocals = function () {\r\n var declarations = [];\r\n var assignments = [];\r\n for (var i = 0, iLen = this.getFieldCount(); i < iLen; ++i) {\r\n if (i == exports.CONTEXT_INDEX) {\r\n declarations.push(this.getLocalName(i) + \" = \" + this.getFieldName(i));\r\n }\r\n else {\r\n var rec = this._records[i - 1];\r\n if (rec.argumentToPureFunction) {\r\n var changeName = this.getChangeName(i);\r\n declarations.push(this.getLocalName(i) + \",\" + changeName);\r\n assignments.push(changeName);\r\n }\r\n else {\r\n declarations.push(\"\" + this.getLocalName(i));\r\n }\r\n }\r\n }\r\n var assignmentsCode = collection_1.ListWrapper.isEmpty(assignments) ? '' : assignments.join('=') + \" = false;\";\r\n return \"var \" + declarations.join(',') + \";\" + assignmentsCode;\r\n };\r\n /**\r\n * Generate a statement initializing local variables for event handlers.\r\n */\r\n CodegenNameUtil.prototype.genInitEventLocals = function () {\r\n var _this = this;\r\n var res = [(this.getLocalName(exports.CONTEXT_INDEX) + \" = \" + this.getFieldName(exports.CONTEXT_INDEX))];\r\n this._sanitizedEventNames.forEach(function (names, eb) {\r\n for (var i = 0; i < names.length; ++i) {\r\n if (i !== exports.CONTEXT_INDEX) {\r\n res.push(\"\" + _this.getEventLocalName(eb, i));\r\n }\r\n }\r\n });\r\n return res.length > 1 ? \"var \" + res.join(',') + \";\" : '';\r\n };\r\n CodegenNameUtil.prototype.getPreventDefaultAccesor = function () { return \"preventDefault\"; };\r\n CodegenNameUtil.prototype.getFieldCount = function () { return this._sanitizedNames.length; };\r\n CodegenNameUtil.prototype.getFieldName = function (idx) { return this._addFieldPrefix(this._sanitizedNames[idx]); };\r\n CodegenNameUtil.prototype.getAllFieldNames = function () {\r\n var fieldList = [];\r\n for (var k = 0, kLen = this.getFieldCount(); k < kLen; ++k) {\r\n if (k === 0 || this._records[k - 1].shouldBeChecked()) {\r\n fieldList.push(this.getFieldName(k));\r\n }\r\n }\r\n for (var i = 0, iLen = this._records.length; i < iLen; ++i) {\r\n var rec = this._records[i];\r\n if (rec.isPipeRecord()) {\r\n fieldList.push(this.getPipeName(rec.selfIndex));\r\n }\r\n }\r\n for (var j = 0, jLen = this._directiveRecords.length; j < jLen; ++j) {\r\n var dRec = this._directiveRecords[j];\r\n fieldList.push(this.getDirectiveName(dRec.directiveIndex));\r\n if (!dRec.isDefaultChangeDetection()) {\r\n fieldList.push(this.getDetectorName(dRec.directiveIndex));\r\n }\r\n }\r\n return fieldList;\r\n };\r\n /**\r\n * Generates statements which clear all fields so that the change detector is dehydrated.\r\n */\r\n CodegenNameUtil.prototype.genDehydrateFields = function () {\r\n var fields = this.getAllFieldNames();\r\n collection_1.ListWrapper.removeAt(fields, exports.CONTEXT_INDEX);\r\n if (collection_1.ListWrapper.isEmpty(fields))\r\n return '';\r\n // At least one assignment.\r\n fields.push(this._utilName + \".uninitialized;\");\r\n return fields.join(' = ');\r\n };\r\n /**\r\n * Generates statements destroying all pipe variables.\r\n */\r\n CodegenNameUtil.prototype.genPipeOnDestroy = function () {\r\n var _this = this;\r\n return this._records.filter(function (r) { return r.isPipeRecord(); })\r\n .map(function (r) { return (_this._utilName + \".callPipeOnDestroy(\" + _this.getPipeName(r.selfIndex) + \");\"); })\r\n .join('\\n');\r\n };\r\n CodegenNameUtil.prototype.getPipeName = function (idx) {\r\n return this._addFieldPrefix(this._sanitizedNames[idx] + \"_pipe\");\r\n };\r\n CodegenNameUtil.prototype.getDirectiveName = function (d) {\r\n return this._addFieldPrefix(\"directive_\" + d.name);\r\n };\r\n CodegenNameUtil.prototype.getDetectorName = function (d) { return this._addFieldPrefix(\"detector_\" + d.name); };\r\n return CodegenNameUtil;\r\n})();\r\nexports.CodegenNameUtil = CodegenNameUtil;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWdlbl9uYW1lX3V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NvZGVnZW5fbmFtZV91dGlsLnRzIl0sIm5hbWVzIjpbInNhbml0aXplTmFtZSIsIkNvZGVnZW5OYW1lVXRpbCIsIkNvZGVnZW5OYW1lVXRpbC5jb25zdHJ1Y3RvciIsIkNvZGVnZW5OYW1lVXRpbC5fYWRkRmllbGRQcmVmaXgiLCJDb2RlZ2VuTmFtZVV0aWwuZ2V0RGlzcGF0Y2hlck5hbWUiLCJDb2RlZ2VuTmFtZVV0aWwuZ2V0UGlwZXNBY2Nlc3Nvck5hbWUiLCJDb2RlZ2VuTmFtZVV0aWwuZ2V0UHJvdG9zTmFtZSIsIkNvZGVnZW5OYW1lVXRpbC5nZXREaXJlY3RpdmVzQWNjZXNzb3JOYW1lIiwiQ29kZWdlbk5hbWVVdGlsLmdldExvY2Fsc0FjY2Vzc29yTmFtZSIsIkNvZGVnZW5OYW1lVXRpbC5nZXRTdGF0ZU5hbWUiLCJDb2RlZ2VuTmFtZVV0aWwuZ2V0TW9kZU5hbWUiLCJDb2RlZ2VuTmFtZVV0aWwuZ2V0UHJvcGVydHlCaW5kaW5nSW5kZXgiLCJDb2RlZ2VuTmFtZVV0aWwuZ2V0TG9jYWxOYW1lIiwiQ29kZWdlbk5hbWVVdGlsLmdldEV2ZW50TG9jYWxOYW1lIiwiQ29kZWdlbk5hbWVVdGlsLmdldENoYW5nZU5hbWUiLCJDb2RlZ2VuTmFtZVV0aWwuZ2VuSW5pdExvY2FscyIsIkNvZGVnZW5OYW1lVXRpbC5nZW5Jbml0RXZlbnRMb2NhbHMiLCJDb2RlZ2VuTmFtZVV0aWwuZ2V0UHJldmVudERlZmF1bHRBY2Nlc29yIiwiQ29kZWdlbk5hbWVVdGlsLmdldEZpZWxkQ291bnQiLCJDb2RlZ2VuTmFtZVV0aWwuZ2V0RmllbGROYW1lIiwiQ29kZWdlbk5hbWVVdGlsLmdldEFsbEZpZWxkTmFtZXMiLCJDb2RlZ2VuTmFtZVV0aWwuZ2VuRGVoeWRyYXRlRmllbGRzIiwiQ29kZWdlbk5hbWVVdGlsLmdlblBpcGVPbkRlc3Ryb3kiLCJDb2RlZ2VuTmFtZVV0aWwuZ2V0UGlwZU5hbWUiLCJDb2RlZ2VuTmFtZVV0aWwuZ2V0RGlyZWN0aXZlTmFtZSIsIkNvZGVnZW5OYW1lVXRpbC5nZXREZXRlY3Rvck5hbWUiXSwibWFwcGluZ3MiOiJBQUFBLHFCQUEyQywwQkFBMEIsQ0FBQyxDQUFBO0FBQ3RFLDJCQUEyQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBTzVFLDRGQUE0RjtBQUM1Rix1QkFBdUI7QUFDdkIsSUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDO0FBQ2hDLElBQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDO0FBQ3BDLElBQU0sbUJBQW1CLEdBQUcsc0JBQXNCLENBQUM7QUFDbkQsSUFBTSxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNoRCxJQUFNLG9CQUFvQixHQUFHLFlBQVksQ0FBQztBQUMxQyxJQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztBQUNsQyxJQUFNLGNBQWMsR0FBRyxNQUFNLENBQUM7QUFDOUIsSUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDO0FBQ2hDLElBQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO0FBQ3JCLHdCQUFnQixHQUFHLFNBQVMsQ0FBQztBQUUxQyw2QkFBNkI7QUFDaEIscUJBQWEsR0FBRyxDQUFDLENBQUM7QUFDL0IsSUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBRTlCLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBRTlCOztHQUVHO0FBQ0gsc0JBQTZCLENBQVM7SUFDcENBLE1BQU1BLENBQUNBLG9CQUFhQSxDQUFDQSxVQUFVQSxDQUFDQSxDQUFDQSxFQUFFQSxpQkFBaUJBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBO0FBQzVEQSxDQUFDQTtBQUZlLG9CQUFZLGVBRTNCLENBQUE7QUFFRDs7OztHQUlHO0FBQ0g7SUFVRUMseUJBQW9CQSxRQUF1QkEsRUFBVUEsY0FBOEJBLEVBQy9EQSxpQkFBd0JBLEVBQVVBLFNBQWlCQTtRQURuREMsYUFBUUEsR0FBUkEsUUFBUUEsQ0FBZUE7UUFB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QUNBLENBQUNBO0lBQ3JEQSxDQUFDQTtJQUVEdkIseUNBQWVBLEdBQWZBLFVBQWdCQSxDQUFpQkEsSUFBWXdCLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLGVBQWVBLENBQUNBLGNBQVlBLENBQUNBLENBQUNBLElBQU1BLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQ25HeEIsc0JBQUNBO0FBQURBLENBQUNBLEFBN0pELElBNkpDO0FBN0pZLHVCQUFlLGtCQTZKM0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVnRXhwV3JhcHBlciwgU3RyaW5nV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7TGlzdFdyYXBwZXIsIE1hcFdyYXBwZXIsIE1hcH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxuaW1wb3J0IHtEaXJlY3RpdmVJbmRleH0gZnJvbSAnLi9kaXJlY3RpdmVfcmVjb3JkJztcblxuaW1wb3J0IHtQcm90b1JlY29yZH0gZnJvbSAnLi9wcm90b19yZWNvcmQnO1xuaW1wb3J0IHtFdmVudEJpbmRpbmd9IGZyb20gJy4vZXZlbnRfYmluZGluZyc7XG5cbi8vIFRoZSBuYW1lcyBvZiB0aGVzZSBmaWVsZHMgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBhYnN0cmFjdF9jaGFuZ2VfZGV0ZWN0b3IudHMgb3IgY2hhbmdlXG4vLyBkZXRlY3Rpb24gd2lsbCBmYWlsLlxuY29uc3QgX1NUQVRFX0FDQ0VTU09SID0gXCJzdGF0ZVwiO1xuY29uc3QgX0NPTlRFWFRfQUNDRVNTT1IgPSBcImNvbnRleHRcIjtcbmNvbnN0IF9QUk9QX0JJTkRJTkdfSU5ERVggPSBcInByb3BlcnR5QmluZGluZ0luZGV4XCI7XG5jb25zdCBfRElSRUNUSVZFU19BQ0NFU1NPUiA9IFwiZGlyZWN0aXZlSW5kaWNlc1wiO1xuY29uc3QgX0RJU1BBVENIRVJfQUNDRVNTT1IgPSBcImRpc3BhdGNoZXJcIjtcbmNvbnN0IF9MT0NBTFNfQUNDRVNTT1IgPSBcImxvY2Fsc1wiO1xuY29uc3QgX01PREVfQUNDRVNTT1IgPSBcIm1vZGVcIjtcbmNvbnN0IF9QSVBFU19BQ0NFU1NPUiA9IFwicGlwZXNcIjtcbmNvbnN0IF9QUk9UT1NfQUNDRVNTT1IgPSBcInByb3Rvc1wiO1xuZXhwb3J0IGNvbnN0IENPTlRFWFRfQUNDRVNTT1IgPSBcImNvbnRleHRcIjtcblxuLy8gYGNvbnRleHRgIGlzIGFsd2F5cyBmaXJzdC5cbmV4cG9ydCBjb25zdCBDT05URVhUX0lOREVYID0gMDtcbmNvbnN0IF9GSUVMRF9QUkVGSVggPSAndGhpcy4nO1xuXG52YXIgX3doaXRlU3BhY2VSZWdFeHAgPSAvXFxXL2c7XG5cbi8qKlxuICogUmV0dXJucyBgc2Agd2l0aCBhbGwgbm9uLWlkZW50aWZpZXIgY2hhcmFjdGVycyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVOYW1lKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGwocywgX3doaXRlU3BhY2VSZWdFeHAsICcnKTtcbn1cblxuLyoqXG4gKiBDbGFzcyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIGZpZWxkIGFuZCBsb2NhbCB2YXJpYWJsZSBuYW1lcyBmb3IgY2hhbmdlIGRldGVjdG9yIGNsYXNzZXMuXG4gKiBBbHNvIHByb3ZpZGVzIHNvbWUgY29udmVuaWVuY2UgZnVuY3Rpb25zLCBmb3IgZXhhbXBsZSwgZGVjbGFyaW5nIHZhcmlhYmxlcywgZGVzdHJveWluZyBwaXBlcyxcbiAqIGFuZCBkZWh5ZHJhdGluZyB0aGUgZGV0ZWN0b3IuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2RlZ2VuTmFtZVV0aWwge1xuICAvKipcbiAgICogUmVjb3JkIG5hbWVzIHNhbml0aXplZCBmb3IgdXNlIGFzIGZpZWxkcy5cbiAgICogU2VlIFtzYW5pdGl6ZU5hbWVdIGZvciBkZXRhaWxzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9zYW5pdGl6ZWROYW1lczogc3RyaW5nW107XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3Nhbml0aXplZEV2ZW50TmFtZXMgPSBuZXcgTWFwPEV2ZW50QmluZGluZywgc3RyaW5nW10+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVjb3JkczogUHJvdG9SZWNvcmRbXSwgcHJpdmF0ZSBfZXZlbnRCaW5kaW5nczogRXZlbnRCaW5kaW5nW10sXG4gICAgICAgICAgICAgIHByaXZhdGUgX2RpcmVjdGl2ZVJlY29yZHM6IGFueVtdLCBwcml2YXRlIF91dGlsTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2FuaXRpemVkTmFtZXMgPSBMaXN0V3JhcHBlci5jcmVhdGVGaXhlZFNpemUodGhpcy5fcmVjb3Jkcy5sZW5ndGggKyAxKTtcbiAgICB0aGlzLl9zYW5pdGl6ZWROYW1lc1tDT05URVhUX0lOREVYXSA9IENPTlRFWFRfQUNDRVNTT1I7XG4gICAgZm9yICh2YXIgaSA9IDAsIGlMZW4gPSB0aGlzLl9yZWNvcmRzLmxlbmd0aDsgaSA8IGlMZW47ICsraSkge1xuICAgICAgdGhpcy5fc2FuaXRpemVkTmFtZXNbaSArIDFdID0gc2FuaXRpemVOYW1lKGAke3RoaXMuX3JlY29yZHNbaV0ubmFtZX0ke2l9YCk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgZWJJbmRleCA9IDA7IGViSW5kZXggPCBfZXZlbnRCaW5kaW5ncy5sZW5ndGg7ICsrZWJJbmRleCkge1xuICAgICAgdmFyIGViID0gX2V2ZW50QmluZGluZ3NbZWJJbmRleF07XG4gICAgICB2YXIgbmFtZXMgPSBbQ09OVEVYVF9BQ0NFU1NPUl07XG4gICAgICBmb3IgKHZhciBpID0gMCwgaUxlbiA9IGViLnJlY29yZHMubGVuZ3RoOyBpIDwgaUxlbjsgKytpKSB7XG4gICAgICAgIG5hbWVzLnB1c2goc2FuaXRpemVOYW1lKGAke2ViLnJlY29yZHNbaV0ubmFtZX0ke2l9XyR7ZWJJbmRleH1gKSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9zYW5pdGl6ZWRFdmVudE5hbWVzLnNldChlYiwgbmFtZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FkZEZpZWxkUHJlZml4KG5hbWU6IHN0cmluZyk6IHN0cmluZyB7IHJldHVybiBgJHtfRklFTERfUFJFRklYfSR7bmFtZX1gOyB9XG5cbiAgZ2V0RGlzcGF0Y2hlck5hbWUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2FkZEZpZWxkUHJlZml4KF9ESVNQQVRDSEVSX0FDQ0VTU09SKTsgfVxuXG4gIGdldFBpcGVzQWNjZXNzb3JOYW1lKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9hZGRGaWVsZFByZWZpeChfUElQRVNfQUNDRVNTT1IpOyB9XG5cbiAgZ2V0UHJvdG9zTmFtZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fYWRkRmllbGRQcmVmaXgoX1BST1RPU19BQ0NFU1NPUik7IH1cblxuICBnZXREaXJlY3RpdmVzQWNjZXNzb3JOYW1lKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9hZGRGaWVsZFByZWZpeChfRElSRUNUSVZFU19BQ0NFU1NPUik7IH1cblxuICBnZXRMb2NhbHNBY2Nlc3Nvck5hbWUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2FkZEZpZWxkUHJlZml4KF9MT0NBTFNfQUNDRVNTT1IpOyB9XG5cbiAgZ2V0U3RhdGVOYW1lKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9hZGRGaWVsZFByZWZpeChfU1RBVEVfQUNDRVNTT1IpOyB9XG5cbiAgZ2V0TW9kZU5hbWUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2FkZEZpZWxkUHJlZml4KF9NT0RFX0FDQ0VTU09SKTsgfVxuXG4gIGdldFByb3BlcnR5QmluZGluZ0luZGV4KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9hZGRGaWVsZFByZWZpeChfUFJPUF9CSU5ESU5HX0lOREVYKTsgfVxuXG4gIGdldExvY2FsTmFtZShpZHg6IG51bWJlcik6IHN0cmluZyB7IHJldHVybiBgbF8ke3RoaXMuX3Nhbml0aXplZE5hbWVzW2lkeF19YDsgfVxuXG4gIGdldEV2ZW50TG9jYWxOYW1lKGViOiBFdmVudEJpbmRpbmcsIGlkeDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGxfJHt0aGlzLl9zYW5pdGl6ZWRFdmVudE5hbWVzLmdldChlYilbaWR4XX1gO1xuICB9XG5cbiAgZ2V0Q2hhbmdlTmFtZShpZHg6IG51bWJlcik6IHN0cmluZyB7IHJldHVybiBgY18ke3RoaXMuX3Nhbml0aXplZE5hbWVzW2lkeF19YDsgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHN0YXRlbWVudCBpbml0aWFsaXppbmcgbG9jYWwgdmFyaWFibGVzIHVzZWQgd2hlbiBkZXRlY3RpbmcgY2hhbmdlcy5cbiAgICovXG4gIGdlbkluaXRMb2NhbHMoKTogc3RyaW5nIHtcbiAgICB2YXIgZGVjbGFyYXRpb25zID0gW107XG4gICAgdmFyIGFzc2lnbm1lbnRzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDAsIGlMZW4gPSB0aGlzLmdldEZpZWxkQ291bnQoKTsgaSA8IGlMZW47ICsraSkge1xuICAgICAgaWYgKGkgPT0gQ09OVEVYVF9JTkRFWCkge1xuICAgICAgICBkZWNsYXJhdGlvbnMucHVzaChgJHt0aGlzLmdldExvY2FsTmFtZShpKX0gPSAke3RoaXMuZ2V0RmllbGROYW1lKGkpfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlYyA9IHRoaXMuX3JlY29yZHNbaSAtIDFdO1xuICAgICAgICBpZiAocmVjLmFyZ3VtZW50VG9QdXJlRnVuY3Rpb24pIHtcbiAgICAgICAgICB2YXIgY2hhbmdlTmFtZSA9IHRoaXMuZ2V0Q2hhbmdlTmFtZShpKTtcbiAgICAgICAgICBkZWNsYXJhdGlvbnMucHVzaChgJHt0aGlzLmdldExvY2FsTmFtZShpKX0sJHtjaGFuZ2VOYW1lfWApO1xuICAgICAgICAgIGFzc2lnbm1lbnRzLnB1c2goY2hhbmdlTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVjbGFyYXRpb25zLnB1c2goYCR7dGhpcy5nZXRMb2NhbE5hbWUoaSl9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGFzc2lnbm1lbnRzQ29kZSA9XG4gICAgICAgIExpc3RXcmFwcGVyLmlzRW1wdHkoYXNzaWdubWVudHMpID8gJycgOiBgJHthc3NpZ25tZW50cy5qb2luKCc9Jyl9ID0gZmFsc2U7YDtcbiAgICByZXR1cm4gYHZhciAke2RlY2xhcmF0aW9ucy5qb2luKCcsJyl9OyR7YXNzaWdubWVudHNDb2RlfWA7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBzdGF0ZW1lbnQgaW5pdGlhbGl6aW5nIGxvY2FsIHZhcmlhYmxlcyBmb3IgZXZlbnQgaGFuZGxlcnMuXG4gICAqL1xuICBnZW5Jbml0RXZlbnRMb2NhbHMoKTogc3RyaW5nIHtcbiAgICB2YXIgcmVzID0gW2Ake3RoaXMuZ2V0TG9jYWxOYW1lKENPTlRFWFRfSU5ERVgpfSA9ICR7dGhpcy5nZXRGaWVsZE5hbWUoQ09OVEVYVF9JTkRFWCl9YF07XG4gICAgdGhpcy5fc2FuaXRpemVkRXZlbnROYW1lcy5mb3JFYWNoKChuYW1lcywgZWIpID0+IHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKGkgIT09IENPTlRFWFRfSU5ERVgpIHtcbiAgICAgICAgICByZXMucHVzaChgJHt0aGlzLmdldEV2ZW50TG9jYWxOYW1lKGViLCBpKX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXMubGVuZ3RoID4gMSA/IGB2YXIgJHtyZXMuam9pbignLCcpfTtgIDogJyc7XG4gIH1cblxuICBnZXRQcmV2ZW50RGVmYXVsdEFjY2Vzb3IoKTogc3RyaW5nIHsgcmV0dXJuIFwicHJldmVudERlZmF1bHRcIjsgfVxuXG4gIGdldEZpZWxkQ291bnQoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3Nhbml0aXplZE5hbWVzLmxlbmd0aDsgfVxuXG4gIGdldEZpZWxkTmFtZShpZHg6IG51bWJlcik6IHN0cmluZyB7IHJldHVybiB0aGlzLl9hZGRGaWVsZFByZWZpeCh0aGlzLl9zYW5pdGl6ZWROYW1lc1tpZHhdKTsgfVxuXG4gIGdldEFsbEZpZWxkTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHZhciBmaWVsZExpc3QgPSBbXTtcbiAgICBmb3IgKHZhciBrID0gMCwga0xlbiA9IHRoaXMuZ2V0RmllbGRDb3VudCgpOyBrIDwga0xlbjsgKytrKSB7XG4gICAgICBpZiAoayA9PT0gMCB8fCB0aGlzLl9yZWNvcmRzW2sgLSAxXS5zaG91bGRCZUNoZWNrZWQoKSkge1xuICAgICAgICBmaWVsZExpc3QucHVzaCh0aGlzLmdldEZpZWxkTmFtZShrKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDAsIGlMZW4gPSB0aGlzLl9yZWNvcmRzLmxlbmd0aDsgaSA8IGlMZW47ICsraSkge1xuICAgICAgdmFyIHJlYyA9IHRoaXMuX3JlY29yZHNbaV07XG4gICAgICBpZiAocmVjLmlzUGlwZVJlY29yZCgpKSB7XG4gICAgICAgIGZpZWxkTGlzdC5wdXNoKHRoaXMuZ2V0UGlwZU5hbWUocmVjLnNlbGZJbmRleCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSAwLCBqTGVuID0gdGhpcy5fZGlyZWN0aXZlUmVjb3Jkcy5sZW5ndGg7IGogPCBqTGVuOyArK2opIHtcbiAgICAgIHZhciBkUmVjID0gdGhpcy5fZGlyZWN0aXZlUmVjb3Jkc1tqXTtcbiAgICAgIGZpZWxkTGlzdC5wdXNoKHRoaXMuZ2V0RGlyZWN0aXZlTmFtZShkUmVjLmRpcmVjdGl2ZUluZGV4KSk7XG4gICAgICBpZiAoIWRSZWMuaXNEZWZhdWx0Q2hhbmdlRGV0ZWN0aW9uKCkpIHtcbiAgICAgICAgZmllbGRMaXN0LnB1c2godGhpcy5nZXREZXRlY3Rvck5hbWUoZFJlYy5kaXJlY3RpdmVJbmRleCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmllbGRMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBzdGF0ZW1lbnRzIHdoaWNoIGNsZWFyIGFsbCBmaWVsZHMgc28gdGhhdCB0aGUgY2hhbmdlIGRldGVjdG9yIGlzIGRlaHlkcmF0ZWQuXG4gICAqL1xuICBnZW5EZWh5ZHJhdGVGaWVsZHMoKTogc3RyaW5nIHtcbiAgICB2YXIgZmllbGRzID0gdGhpcy5nZXRBbGxGaWVsZE5hbWVzKCk7XG4gICAgTGlzdFdyYXBwZXIucmVtb3ZlQXQoZmllbGRzLCBDT05URVhUX0lOREVYKTtcbiAgICBpZiAoTGlzdFdyYXBwZXIuaXNFbXB0eShmaWVsZHMpKSByZXR1cm4gJyc7XG5cbiAgICAvLyBBdCBsZWFzdCBvbmUgYXNzaWdubWVudC5cbiAgICBmaWVsZHMucHVzaChgJHt0aGlzLl91dGlsTmFtZX0udW5pbml0aWFsaXplZDtgKTtcbiAgICByZXR1cm4gZmllbGRzLmpvaW4oJyA9ICcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBzdGF0ZW1lbnRzIGRlc3Ryb3lpbmcgYWxsIHBpcGUgdmFyaWFibGVzLlxuICAgKi9cbiAgZ2VuUGlwZU9uRGVzdHJveSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9yZWNvcmRzLmZpbHRlcihyID0+IHIuaXNQaXBlUmVjb3JkKCkpXG4gICAgICAgIC5tYXAociA9PiBgJHt0aGlzLl91dGlsTmFtZX0uY2FsbFBpcGVPbkRlc3Ryb3koJHt0aGlzLmdldFBpcGVOYW1lKHIuc2VsZkluZGV4KX0pO2ApXG4gICAgICAgIC5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIGdldFBpcGVOYW1lKGlkeDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkRmllbGRQcmVmaXgoYCR7dGhpcy5fc2FuaXRpemVkTmFtZXNbaWR4XX1fcGlwZWApO1xuICB9XG5cbiAgZ2V0RGlyZWN0aXZlTmFtZShkOiBEaXJlY3RpdmVJbmRleCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZEZpZWxkUHJlZml4KGBkaXJlY3RpdmVfJHtkLm5hbWV9YCk7XG4gIH1cblxuICBnZXREZXRlY3Rvck5hbWUoZDogRGlyZWN0aXZlSW5kZXgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fYWRkRmllbGRQcmVmaXgoYGRldGVjdG9yXyR7ZC5uYW1lfWApOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar codegen_facade_1 = require('./codegen_facade');\r\nvar proto_record_1 = require('./proto_record');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\n/**\r\n * Class responsible for providing change detection logic for change detector classes.\r\n */\r\nvar CodegenLogicUtil = (function () {\r\n function CodegenLogicUtil(_names, _utilName, _changeDetectorStateName) {\r\n this._names = _names;\r\n this._utilName = _utilName;\r\n this._changeDetectorStateName = _changeDetectorStateName;\r\n }\r\n /**\r\n * Generates a statement which updates the local variable representing `protoRec` with the current\r\n * value of the record. Used by property bindings.\r\n */\r\n CodegenLogicUtil.prototype.genPropertyBindingEvalValue = function (protoRec) {\r\n var _this = this;\r\n return this._genEvalValue(protoRec, function (idx) { return _this._names.getLocalName(idx); }, this._names.getLocalsAccessorName());\r\n };\r\n /**\r\n * Generates a statement which updates the local variable representing `protoRec` with the current\r\n * value of the record. Used by event bindings.\r\n */\r\n CodegenLogicUtil.prototype.genEventBindingEvalValue = function (eventRecord, protoRec) {\r\n var _this = this;\r\n return this._genEvalValue(protoRec, function (idx) { return _this._names.getEventLocalName(eventRecord, idx); }, \"locals\");\r\n };\r\n CodegenLogicUtil.prototype._genEvalValue = function (protoRec, getLocalName, localsAccessor) {\r\n var context = (protoRec.contextIndex == -1) ?\r\n this._names.getDirectiveName(protoRec.directiveIndex) :\r\n getLocalName(protoRec.contextIndex);\r\n var argString = protoRec.args.map(function (arg) { return getLocalName(arg); }).join(\", \");\r\n var rhs;\r\n switch (protoRec.mode) {\r\n case proto_record_1.RecordType.Self:\r\n rhs = context;\r\n break;\r\n case proto_record_1.RecordType.Const:\r\n rhs = codegen_facade_1.codify(protoRec.funcOrValue);\r\n break;\r\n case proto_record_1.RecordType.PropertyRead:\r\n rhs = context + \".\" + protoRec.name;\r\n break;\r\n case proto_record_1.RecordType.SafeProperty:\r\n var read = context + \".\" + protoRec.name;\r\n rhs = this._utilName + \".isValueBlank(\" + context + \") ? null : \" + read;\r\n break;\r\n case proto_record_1.RecordType.PropertyWrite:\r\n rhs = context + \".\" + protoRec.name + \" = \" + getLocalName(protoRec.args[0]);\r\n break;\r\n case proto_record_1.RecordType.Local:\r\n rhs = localsAccessor + \".get(\" + codegen_facade_1.rawString(protoRec.name) + \")\";\r\n break;\r\n case proto_record_1.RecordType.InvokeMethod:\r\n rhs = context + \".\" + protoRec.name + \"(\" + argString + \")\";\r\n break;\r\n case proto_record_1.RecordType.SafeMethodInvoke:\r\n var invoke = context + \".\" + protoRec.name + \"(\" + argString + \")\";\r\n rhs = this._utilName + \".isValueBlank(\" + context + \") ? null : \" + invoke;\r\n break;\r\n case proto_record_1.RecordType.InvokeClosure:\r\n rhs = context + \"(\" + argString + \")\";\r\n break;\r\n case proto_record_1.RecordType.PrimitiveOp:\r\n rhs = this._utilName + \".\" + protoRec.name + \"(\" + argString + \")\";\r\n break;\r\n case proto_record_1.RecordType.CollectionLiteral:\r\n rhs = this._utilName + \".\" + protoRec.name + \"(\" + argString + \")\";\r\n break;\r\n case proto_record_1.RecordType.Interpolate:\r\n rhs = this._genInterpolation(protoRec);\r\n break;\r\n case proto_record_1.RecordType.KeyedRead:\r\n rhs = context + \"[\" + getLocalName(protoRec.args[0]) + \"]\";\r\n break;\r\n case proto_record_1.RecordType.KeyedWrite:\r\n rhs = context + \"[\" + getLocalName(protoRec.args[0]) + \"] = \" + getLocalName(protoRec.args[1]);\r\n break;\r\n case proto_record_1.RecordType.Chain:\r\n rhs = \"\" + getLocalName(protoRec.args[protoRec.args.length - 1]);\r\n break;\r\n default:\r\n throw new exceptions_1.BaseException(\"Unknown operation \" + protoRec.mode);\r\n }\r\n return getLocalName(protoRec.selfIndex) + \" = \" + rhs + \";\";\r\n };\r\n CodegenLogicUtil.prototype.genPropertyBindingTargets = function (propertyBindingTargets, genDebugInfo) {\r\n var _this = this;\r\n var bs = propertyBindingTargets.map(function (b) {\r\n if (lang_1.isBlank(b))\r\n return \"null\";\r\n var debug = genDebugInfo ? codegen_facade_1.codify(b.debug) : \"null\";\r\n return _this._utilName + \".bindingTarget(\" + codegen_facade_1.codify(b.mode) + \", \" + b.elementIndex + \", \" + codegen_facade_1.codify(b.name) + \", \" + codegen_facade_1.codify(b.unit) + \", \" + debug + \")\";\r\n });\r\n return \"[\" + bs.join(\", \") + \"]\";\r\n };\r\n CodegenLogicUtil.prototype.genDirectiveIndices = function (directiveRecords) {\r\n var _this = this;\r\n var bs = directiveRecords.map(function (b) {\r\n return (_this._utilName + \".directiveIndex(\" + b.directiveIndex.elementIndex + \", \" + b.directiveIndex.directiveIndex + \")\");\r\n });\r\n return \"[\" + bs.join(\", \") + \"]\";\r\n };\r\n /** @internal */\r\n CodegenLogicUtil.prototype._genInterpolation = function (protoRec) {\r\n var iVals = [];\r\n for (var i = 0; i < protoRec.args.length; ++i) {\r\n iVals.push(codegen_facade_1.codify(protoRec.fixedArgs[i]));\r\n iVals.push(this._utilName + \".s(\" + this._names.getLocalName(protoRec.args[i]) + \")\");\r\n }\r\n iVals.push(codegen_facade_1.codify(protoRec.fixedArgs[protoRec.args.length]));\r\n return codegen_facade_1.combineGeneratedStrings(iVals);\r\n };\r\n CodegenLogicUtil.prototype.genHydrateDirectives = function (directiveRecords) {\r\n var _this = this;\r\n var res = [];\r\n var outputCount = 0;\r\n for (var i = 0; i < directiveRecords.length; ++i) {\r\n var r = directiveRecords[i];\r\n var dirVarName = this._names.getDirectiveName(r.directiveIndex);\r\n res.push(dirVarName + \" = \" + this._genReadDirective(i) + \";\");\r\n if (lang_1.isPresent(r.outputs)) {\r\n r.outputs.forEach(function (output) {\r\n var eventHandlerExpr = _this._genEventHandler(r.directiveIndex.elementIndex, output[1]);\r\n var statementStart = \"this.outputSubscriptions[\" + outputCount++ + \"] = \" + dirVarName + \".\" + output[0];\r\n if (lang_1.IS_DART) {\r\n res.push(statementStart + \".listen(\" + eventHandlerExpr + \");\");\r\n }\r\n else {\r\n res.push(statementStart + \".subscribe({next: \" + eventHandlerExpr + \"});\");\r\n }\r\n });\r\n }\r\n }\r\n if (outputCount > 0) {\r\n var statementStart = 'this.outputSubscriptions';\r\n if (lang_1.IS_DART) {\r\n res.unshift(statementStart + \" = new List(\" + outputCount + \");\");\r\n }\r\n else {\r\n res.unshift(statementStart + \" = new Array(\" + outputCount + \");\");\r\n }\r\n }\r\n return res.join(\"\\n\");\r\n };\r\n CodegenLogicUtil.prototype.genDirectivesOnDestroy = function (directiveRecords) {\r\n var res = [];\r\n for (var i = 0; i < directiveRecords.length; ++i) {\r\n var r = directiveRecords[i];\r\n if (r.callOnDestroy) {\r\n var dirVarName = this._names.getDirectiveName(r.directiveIndex);\r\n res.push(dirVarName + \".ngOnDestroy();\");\r\n }\r\n }\r\n return res.join(\"\\n\");\r\n };\r\n CodegenLogicUtil.prototype._genEventHandler = function (boundElementIndex, eventName) {\r\n if (lang_1.IS_DART) {\r\n return \"(event) => this.handleEvent('\" + eventName + \"', \" + boundElementIndex + \", event)\";\r\n }\r\n else {\r\n return \"(function(event) { return this.handleEvent('\" + eventName + \"', \" + boundElementIndex + \", event); }).bind(this)\";\r\n }\r\n };\r\n CodegenLogicUtil.prototype._genReadDirective = function (index) { return \"this.getDirectiveFor(directives, \" + index + \")\"; };\r\n CodegenLogicUtil.prototype.genHydrateDetectors = function (directiveRecords) {\r\n var res = [];\r\n for (var i = 0; i < directiveRecords.length; ++i) {\r\n var r = directiveRecords[i];\r\n if (!r.isDefaultChangeDetection()) {\r\n res.push(this._names.getDetectorName(r.directiveIndex) + \" = this.getDetectorFor(directives, \" + i + \");\");\r\n }\r\n }\r\n return res.join(\"\\n\");\r\n };\r\n CodegenLogicUtil.prototype.genContentLifecycleCallbacks = function (directiveRecords) {\r\n var res = [];\r\n var eq = lang_1.IS_DART ? '==' : '===';\r\n // NOTE(kegluneq): Order is important!\r\n for (var i = directiveRecords.length - 1; i >= 0; --i) {\r\n var dir = directiveRecords[i];\r\n if (dir.callAfterContentInit) {\r\n res.push(\"if(\" + this._names.getStateName() + \" \" + eq + \" \" + this._changeDetectorStateName + \".NeverChecked) \" + this._names.getDirectiveName(dir.directiveIndex) + \".ngAfterContentInit();\");\r\n }\r\n if (dir.callAfterContentChecked) {\r\n res.push(this._names.getDirectiveName(dir.directiveIndex) + \".ngAfterContentChecked();\");\r\n }\r\n }\r\n return res;\r\n };\r\n CodegenLogicUtil.prototype.genViewLifecycleCallbacks = function (directiveRecords) {\r\n var res = [];\r\n var eq = lang_1.IS_DART ? '==' : '===';\r\n // NOTE(kegluneq): Order is important!\r\n for (var i = directiveRecords.length - 1; i >= 0; --i) {\r\n var dir = directiveRecords[i];\r\n if (dir.callAfterViewInit) {\r\n res.push(\"if(\" + this._names.getStateName() + \" \" + eq + \" \" + this._changeDetectorStateName + \".NeverChecked) \" + this._names.getDirectiveName(dir.directiveIndex) + \".ngAfterViewInit();\");\r\n }\r\n if (dir.callAfterViewChecked) {\r\n res.push(this._names.getDirectiveName(dir.directiveIndex) + \".ngAfterViewChecked();\");\r\n }\r\n }\r\n return res;\r\n };\r\n return CodegenLogicUtil;\r\n})();\r\nexports.CodegenLogicUtil = CodegenLogicUtil;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWdlbl9sb2dpY191dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jb2RlZ2VuX2xvZ2ljX3V0aWwudHMiXSwibmFtZXMiOlsiQ29kZWdlbkxvZ2ljVXRpbCIsIkNvZGVnZW5Mb2dpY1V0aWwuY29uc3RydWN0b3IiLCJDb2RlZ2VuTG9naWNVdGlsLmdlblByb3BlcnR5QmluZGluZ0V2YWxWYWx1ZSIsIkNvZGVnZW5Mb2dpY1V0aWwuZ2VuRXZlbnRCaW5kaW5nRXZhbFZhbHVlIiwiQ29kZWdlbkxvZ2ljVXRpbC5fZ2VuRXZhbFZhbHVlIiwiQ29kZWdlbkxvZ2ljVXRpbC5nZW5Qcm9wZXJ0eUJpbmRpbmdUYXJnZXRzIiwiQ29kZWdlbkxvZ2ljVXRpbC5nZW5EaXJlY3RpdmVJbmRpY2VzIiwiQ29kZWdlbkxvZ2ljVXRpbC5fZ2VuSW50ZXJwb2xhdGlvbiIsIkNvZGVnZW5Mb2dpY1V0aWwuZ2VuSHlkcmF0ZURpcmVjdGl2ZXMiLCJDb2RlZ2VuTG9naWNVdGlsLmdlbkRpcmVjdGl2ZXNPbkRlc3Ryb3kiLCJDb2RlZ2VuTG9naWNVdGlsLl9nZW5FdmVudEhhbmRsZXIiLCJDb2RlZ2VuTG9naWNVdGlsLl9nZW5SZWFkRGlyZWN0aXZlIiwiQ29kZWdlbkxvZ2ljVXRpbC5nZW5IeWRyYXRlRGV0ZWN0b3JzIiwiQ29kZWdlbkxvZ2ljVXRpbC5nZW5Db250ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzIiwiQ29kZWdlbkxvZ2ljVXRpbC5nZW5WaWV3TGlmZWN5Y2xlQ2FsbGJhY2tzIl0sIm1hcHBpbmdzIjoiQUFBQSxxQkFBK0QsMEJBQTBCLENBQUMsQ0FBQTtBQUUxRiwrQkFBeUQsa0JBQWtCLENBQUMsQ0FBQTtBQUM1RSw2QkFBc0MsZ0JBQWdCLENBQUMsQ0FBQTtBQUd2RCwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUU3RDs7R0FFRztBQUNIO0lBQ0VBLDBCQUFvQkEsTUFBdUJBLEVBQVVBLFNB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O0FBQURBLENBQUNBLEFBcE9ELElBb09DO0FBcE9ZLHdCQUFnQixtQkFvTzVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lTX0RBUlQsIEpzb24sIFN0cmluZ1dyYXBwZXIsIGlzUHJlc2VudCwgaXNCbGFua30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7Q29kZWdlbk5hbWVVdGlsfSBmcm9tICcuL2NvZGVnZW5fbmFtZV91dGlsJztcbmltcG9ydCB7Y29kaWZ5LCBjb21iaW5lR2VuZXJhdGVkU3RyaW5ncywgcmF3U3RyaW5nfSBmcm9tICcuL2NvZGVnZW5fZmFjYWRlJztcbmltcG9ydCB7UHJvdG9SZWNvcmQsIFJlY29yZFR5cGV9IGZyb20gJy4vcHJvdG9fcmVjb3JkJztcbmltcG9ydCB7QmluZGluZ1RhcmdldH0gZnJvbSAnLi9iaW5kaW5nX3JlY29yZCc7XG5pbXBvcnQge0RpcmVjdGl2ZVJlY29yZH0gZnJvbSAnLi9kaXJlY3RpdmVfcmVjb3JkJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcblxuLyoqXG4gKiBDbGFzcyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIGNoYW5nZSBkZXRlY3Rpb24gbG9naWMgZm9yIGNoYW5nZSBkZXRlY3RvciBjbGFzc2VzLlxuICovXG5leHBvcnQgY2xhc3MgQ29kZWdlbkxvZ2ljVXRpbCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX25hbWVzOiBDb2RlZ2VuTmFtZVV0aWwsIHByaXZhdGUgX3V0aWxOYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yU3RhdGVOYW1lOiBzdHJpbmcpIHt9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHN0YXRlbWVudCB3aGljaCB1cGRhdGVzIHRoZSBsb2NhbCB2YXJpYWJsZSByZXByZXNlbnRpbmcgYHByb3RvUmVjYCB3aXRoIHRoZSBjdXJyZW50XG4gICAqIHZhbHVlIG9mIHRoZSByZWNvcmQuIFVzZWQgYnkgcHJvcGVydHkgYmluZGluZ3MuXG4gICAqL1xuICBnZW5Qcm9wZXJ0eUJpbmRpbmdFdmFsVmFsdWUocHJvdG9SZWM6IFByb3RvUmVjb3JkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZ2VuRXZhbFZhbHVlKHByb3RvUmVjLCBpZHggPT4gdGhpcy5fbmFtZXMuZ2V0TG9jYWxOYW1lKGlkeCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9uYW1lcy5nZXRMb2NhbHNBY2Nlc3Nvck5hbWUoKSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgc3RhdGVtZW50IHdoaWNoIHVwZGF0ZXMgdGhlIGxvY2FsIHZhcmlhYmxlIHJlcHJlc2VudGluZyBgcHJvdG9SZWNgIHdpdGggdGhlIGN1cnJlbnRcbiAgICogdmFsdWUgb2YgdGhlIHJlY29yZC4gVXNlZCBieSBldmVudCBiaW5kaW5ncy5cbiAgICovXG4gIGdlbkV2ZW50QmluZGluZ0V2YWxWYWx1ZShldmVudFJlY29yZDogYW55LCBwcm90b1JlYzogUHJvdG9SZWNvcmQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9nZW5FdmFsVmFsdWUocHJvdG9SZWMsIGlkeCA9PiB0aGlzLl9uYW1lcy5nZXRFdmVudExvY2FsTmFtZShldmVudFJlY29yZCwgaWR4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxzXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2VuRXZhbFZhbHVlKHByb3RvUmVjOiBQcm90b1JlY29yZCwgZ2V0TG9jYWxOYW1lOiBGdW5jdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fsc0FjY2Vzc29yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHZhciBjb250ZXh0ID0gKHByb3RvUmVjLmNvbnRleHRJbmRleCA9PSAtMSkgP1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25hbWVzLmdldERpcmVjdGl2ZU5hbWUocHJvdG9SZWMuZGlyZWN0aXZlSW5kZXgpIDpcbiAgICAgICAgICAgICAgICAgICAgICBnZXRMb2NhbE5hbWUocHJvdG9SZWMuY29udGV4dEluZGV4KTtcbiAgICB2YXIgYXJnU3RyaW5nID0gcHJvdG9SZWMuYXJncy5tYXAoYXJnID0+IGdldExvY2FsTmFtZShhcmcpKS5qb2luKFwiLCBcIik7XG5cbiAgICB2YXIgcmhzOiBzdHJpbmc7XG4gICAgc3dpdGNoIChwcm90b1JlYy5tb2RlKSB7XG4gICAgICBjYXNlIFJlY29yZFR5cGUuU2VsZjpcbiAgICAgICAgcmhzID0gY29udGV4dDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5Db25zdDpcbiAgICAgICAgcmhzID0gY29kaWZ5KHByb3RvUmVjLmZ1bmNPclZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5Qcm9wZXJ0eVJlYWQ6XG4gICAgICAgIHJocyA9IGAke2NvbnRleHR9LiR7cHJvdG9SZWMubmFtZX1gO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZWNvcmRUeXBlLlNhZmVQcm9wZXJ0eTpcbiAgICAgICAgdmFyIHJlYWQgPSBgJHtjb250ZXh0fS4ke3Byb3RvUmVjLm5hbWV9YDtcbiAgICAgICAgcmhzID0gYCR7dGhpcy5fdXRpbE5hbWV9LmlzVmFsdWVCbGFuaygke2NvbnRleHR9KSA/IG51bGwgOiAke3JlYWR9YDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5Qcm9wZXJ0eVdyaXRlOlxuICAgICAgICByaHMgPSBgJHtjb250ZXh0fS4ke3Byb3RvUmVjLm5hbWV9ID0gJHtnZXRMb2NhbE5hbWUocHJvdG9SZWMuYXJnc1swXSl9YDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5Mb2NhbDpcbiAgICAgICAgcmhzID0gYCR7bG9jYWxzQWNjZXNzb3J9LmdldCgke3Jhd1N0cmluZyhwcm90b1JlYy5uYW1lKX0pYDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5JbnZva2VNZXRob2Q6XG4gICAgICAgIHJocyA9IGAke2NvbnRleHR9LiR7cHJvdG9SZWMubmFtZX0oJHthcmdTdHJpbmd9KWA7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJlY29yZFR5cGUuU2FmZU1ldGhvZEludm9rZTpcbiAgICAgICAgdmFyIGludm9rZSA9IGAke2NvbnRleHR9LiR7cHJvdG9SZWMubmFtZX0oJHthcmdTdHJpbmd9KWA7XG4gICAgICAgIHJocyA9IGAke3RoaXMuX3V0aWxOYW1lfS5pc1ZhbHVlQmxhbmsoJHtjb250ZXh0fSkgPyBudWxsIDogJHtpbnZva2V9YDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5JbnZva2VDbG9zdXJlOlxuICAgICAgICByaHMgPSBgJHtjb250ZXh0fSgke2FyZ1N0cmluZ30pYDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5QcmltaXRpdmVPcDpcbiAgICAgICAgcmhzID0gYCR7dGhpcy5fdXRpbE5hbWV9LiR7cHJvdG9SZWMubmFtZX0oJHthcmdTdHJpbmd9KWA7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJlY29yZFR5cGUuQ29sbGVjdGlvbkxpdGVyYWw6XG4gICAgICAgIHJocyA9IGAke3RoaXMuX3V0aWxOYW1lfS4ke3Byb3RvUmVjLm5hbWV9KCR7YXJnU3RyaW5nfSlgO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZWNvcmRUeXBlLkludGVycG9sYXRlOlxuICAgICAgICByaHMgPSB0aGlzLl9nZW5JbnRlcnBvbGF0aW9uKHByb3RvUmVjKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5LZXllZFJlYWQ6XG4gICAgICAgIHJocyA9IGAke2NvbnRleHR9WyR7Z2V0TG9jYWxOYW1lKHByb3RvUmVjLmFyZ3NbMF0pfV1gO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZWNvcmRUeXBlLktleWVkV3JpdGU6XG4gICAgICAgIHJocyA9IGAke2NvbnRleHR9WyR7Z2V0TG9jYWxOYW1lKHByb3RvUmVjLmFyZ3NbMF0pfV0gPSAke2dldExvY2FsTmFtZShwcm90b1JlYy5hcmdzWzFdKX1gO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSZWNvcmRUeXBlLkNoYWluOlxuICAgICAgICByaHMgPSBgJHtnZXRMb2NhbE5hbWUocHJvdG9SZWMuYXJnc1twcm90b1JlYy5hcmdzLmxlbmd0aCAtIDFdKX1gO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYFVua25vd24gb3BlcmF0aW9uICR7cHJvdG9SZWMubW9kZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke2dldExvY2FsTmFtZShwcm90b1JlYy5zZWxmSW5kZXgpfSA9ICR7cmhzfTtgO1xuICB9XG5cbiAgZ2VuUHJvcGVydHlCaW5kaW5nVGFyZ2V0cyhwcm9wZXJ0eUJpbmRpbmdUYXJnZXRzOiBCaW5kaW5nVGFyZ2V0W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuRGVidWdJbmZvOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB2YXIgYnMgPSBwcm9wZXJ0eUJpbmRpbmdUYXJnZXRzLm1hcChiID0+IHtcbiAgICAgIGlmIChpc0JsYW5rKGIpKSByZXR1cm4gXCJudWxsXCI7XG5cbiAgICAgIHZhciBkZWJ1ZyA9IGdlbkRlYnVnSW5mbyA/IGNvZGlmeShiLmRlYnVnKSA6IFwibnVsbFwiO1xuICAgICAgcmV0dXJuIGAke3RoaXMuX3V0aWxOYW1lfS5iaW5kaW5nVGFyZ2V0KCR7Y29kaWZ5KGIubW9kZSl9LCAke2IuZWxlbWVudEluZGV4fSwgJHtjb2RpZnkoYi5uYW1lKX0sICR7Y29kaWZ5KGIudW5pdCl9LCAke2RlYnVnfSlgO1xuICAgIH0pO1xuICAgIHJldHVybiBgWyR7YnMuam9pbihcIiwgXCIpfV1gO1xuICB9XG5cbiAgZ2VuRGlyZWN0aXZlSW5kaWNlcyhkaXJlY3RpdmVSZWNvcmRzOiBEaXJlY3RpdmVSZWNvcmRbXSk6IHN0cmluZyB7XG4gICAgdmFyIGJzID0gZGlyZWN0aXZlUmVjb3Jkcy5tYXAoXG4gICAgICAgIGIgPT5cbiAgICAgICAgICAgIGAke3RoaXMuX3V0aWxOYW1lfS5kaXJlY3RpdmVJbmRleCgke2IuZGlyZWN0aXZlSW5kZXguZWxlbWVudEluZGV4fSwgJHtiLmRpcmVjdGl2ZUluZGV4LmRpcmVjdGl2ZUluZGV4fSlgKTtcbiAgICByZXR1cm4gYFske2JzLmpvaW4oXCIsIFwiKX1dYDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dlbkludGVycG9sYXRpb24ocHJvdG9SZWM6IFByb3RvUmVjb3JkKTogc3RyaW5nIHtcbiAgICB2YXIgaVZhbHMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3RvUmVjLmFyZ3MubGVuZ3RoOyArK2kpIHtcbiAgICAgIGlWYWxzLnB1c2goY29kaWZ5KHByb3RvUmVjLmZpeGVkQXJnc1tpXSkpO1xuICAgICAgaVZhbHMucHVzaChgJHt0aGlzLl91dGlsTmFtZX0ucygke3RoaXMuX25hbWVzLmdldExvY2FsTmFtZShwcm90b1JlYy5hcmdzW2ldKX0pYCk7XG4gICAgfVxuICAgIGlWYWxzLnB1c2goY29kaWZ5KHByb3RvUmVjLmZpeGVkQXJnc1twcm90b1JlYy5hcmdzLmxlbmd0aF0pKTtcbiAgICByZXR1cm4gY29tYmluZUdlbmVyYXRlZFN0cmluZ3MoaVZhbHMpO1xuICB9XG5cbiAgZ2VuSHlkcmF0ZURpcmVjdGl2ZXMoZGlyZWN0aXZlUmVjb3JkczogRGlyZWN0aXZlUmVjb3JkW10pOiBzdHJpbmcge1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgb3V0cHV0Q291bnQgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlyZWN0aXZlUmVjb3Jkcy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHIgPSBkaXJlY3RpdmVSZWNvcmRzW2ldO1xuICAgICAgdmFyIGRpclZhck5hbWUgPSB0aGlzLl9uYW1lcy5nZXREaXJlY3RpdmVOYW1lKHIuZGlyZWN0aXZlSW5kZXgpO1xuICAgICAgcmVzLnB1c2goYCR7ZGlyVmFyTmFtZX0gPSAke3RoaXMuX2dlblJlYWREaXJlY3RpdmUoaSl9O2ApO1xuICAgICAgaWYgKGlzUHJlc2VudChyLm91dHB1dHMpKSB7XG4gICAgICAgIHIub3V0cHV0cy5mb3JFYWNoKG91dHB1dCA9PiB7XG4gICAgICAgICAgdmFyIGV2ZW50SGFuZGxlckV4cHIgPSB0aGlzLl9nZW5FdmVudEhhbmRsZXIoci5kaXJlY3RpdmVJbmRleC5lbGVtZW50SW5kZXgsIG91dHB1dFsxXSk7XG4gICAgICAgICAgdmFyIHN0YXRlbWVudFN0YXJ0ID1cbiAgICAgICAgICAgICAgYHRoaXMub3V0cHV0U3Vic2NyaXB0aW9uc1ske291dHB1dENvdW50Kyt9XSA9ICR7ZGlyVmFyTmFtZX0uJHtvdXRwdXRbMF19YDtcbiAgICAgICAgICBpZiAoSVNfREFSVCkge1xuICAgICAgICAgICAgcmVzLnB1c2goYCR7c3RhdGVtZW50U3RhcnR9Lmxpc3Rlbigke2V2ZW50SGFuZGxlckV4cHJ9KTtgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnB1c2goYCR7c3RhdGVtZW50U3RhcnR9LnN1YnNjcmliZSh7bmV4dDogJHtldmVudEhhbmRsZXJFeHByfX0pO2ApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvdXRwdXRDb3VudCA+IDApIHtcbiAgICAgIHZhciBzdGF0ZW1lbnRTdGFydCA9ICd0aGlzLm91dHB1dFN1YnNjcmlwdGlvbnMnO1xuICAgICAgaWYgKElTX0RBUlQpIHtcbiAgICAgICAgcmVzLnVuc2hpZnQoYCR7c3RhdGVtZW50U3RhcnR9ID0gbmV3IExpc3QoJHtvdXRwdXRDb3VudH0pO2ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzLnVuc2hpZnQoYCR7c3RhdGVtZW50U3RhcnR9ID0gbmV3IEFycmF5KCR7b3V0cHV0Q291bnR9KTtgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcy5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgZ2VuRGlyZWN0aXZlc09uRGVzdHJveShkaXJlY3RpdmVSZWNvcmRzOiBEaXJlY3RpdmVSZWNvcmRbXSk6IHN0cmluZyB7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlyZWN0aXZlUmVjb3Jkcy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHIgPSBkaXJlY3RpdmVSZWNvcmRzW2ldO1xuICAgICAgaWYgKHIuY2FsbE9uRGVzdHJveSkge1xuICAgICAgICB2YXIgZGlyVmFyTmFtZSA9IHRoaXMuX25hbWVzLmdldERpcmVjdGl2ZU5hbWUoci5kaXJlY3RpdmVJbmRleCk7XG4gICAgICAgIHJlcy5wdXNoKGAke2RpclZhck5hbWV9Lm5nT25EZXN0cm95KCk7YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXMuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dlbkV2ZW50SGFuZGxlcihib3VuZEVsZW1lbnRJbmRleDogbnVtYmVyLCBldmVudE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKElTX0RBUlQpIHtcbiAgICAgIHJldHVybiBgKGV2ZW50KSA9PiB0aGlzLmhhbmRsZUV2ZW50KCcke2V2ZW50TmFtZX0nLCAke2JvdW5kRWxlbWVudEluZGV4fSwgZXZlbnQpYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAoZnVuY3Rpb24oZXZlbnQpIHsgcmV0dXJuIHRoaXMuaGFuZGxlRXZlbnQoJyR7ZXZlbnROYW1lfScsICR7Ym91bmRFbGVtZW50SW5kZXh9LCBldmVudCk7IH0pLmJpbmQodGhpcylgO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dlblJlYWREaXJlY3RpdmUoaW5kZXg6IG51bWJlcikgeyByZXR1cm4gYHRoaXMuZ2V0RGlyZWN0aXZlRm9yKGRpcmVjdGl2ZXMsICR7aW5kZXh9KWA7IH1cblxuICBnZW5IeWRyYXRlRGV0ZWN0b3JzKGRpcmVjdGl2ZVJlY29yZHM6IERpcmVjdGl2ZVJlY29yZFtdKTogc3RyaW5nIHtcbiAgICB2YXIgcmVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJlY3RpdmVSZWNvcmRzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgciA9IGRpcmVjdGl2ZVJlY29yZHNbaV07XG4gICAgICBpZiAoIXIuaXNEZWZhdWx0Q2hhbmdlRGV0ZWN0aW9uKCkpIHtcbiAgICAgICAgcmVzLnB1c2goXG4gICAgICAgICAgICBgJHt0aGlzLl9uYW1lcy5nZXREZXRlY3Rvck5hbWUoci5kaXJlY3RpdmVJbmRleCl9ID0gdGhpcy5nZXREZXRlY3RvckZvcihkaXJlY3RpdmVzLCAke2l9KTtgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcy5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgZ2VuQ29udGVudExpZmVjeWNsZUNhbGxiYWNrcyhkaXJlY3RpdmVSZWNvcmRzOiBEaXJlY3RpdmVSZWNvcmRbXSk6IHN0cmluZ1tdIHtcbiAgICB2YXIgcmVzID0gW107XG4gICAgdmFyIGVxID0gSVNfREFSVCA/ICc9PScgOiAnPT09JztcbiAgICAvLyBOT1RFKGtlZ2x1bmVxKTogT3JkZXIgaXMgaW1wb3J0YW50IVxuICAgIGZvciAodmFyIGkgPSBkaXJlY3RpdmVSZWNvcmRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB2YXIgZGlyID0gZGlyZWN0aXZlUmVjb3Jkc1tpXTtcbiAgICAgIGlmIChkaXIuY2FsbEFmdGVyQ29udGVudEluaXQpIHtcbiAgICAgICAgcmVzLnB1c2goXG4gICAgICAgICAgICBgaWYoJHt0aGlzLl9uYW1lcy5nZXRTdGF0ZU5hbWUoKX0gJHtlcX0gJHt0aGlzLl9jaGFuZ2VEZXRlY3RvclN0YXRlTmFtZX0uTmV2ZXJDaGVja2VkKSAke3RoaXMuX25hbWVzLmdldERpcmVjdGl2ZU5hbWUoZGlyLmRpcmVjdGl2ZUluZGV4KX0ubmdBZnRlckNvbnRlbnRJbml0KCk7YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXIuY2FsbEFmdGVyQ29udGVudENoZWNrZWQpIHtcbiAgICAgICAgcmVzLnB1c2goYCR7dGhpcy5fbmFtZXMuZ2V0RGlyZWN0aXZlTmFtZShkaXIuZGlyZWN0aXZlSW5kZXgpfS5uZ0FmdGVyQ29udGVudENoZWNrZWQoKTtgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIGdlblZpZXdMaWZlY3ljbGVDYWxsYmFja3MoZGlyZWN0aXZlUmVjb3JkczogRGlyZWN0aXZlUmVjb3JkW10pOiBzdHJpbmdbXSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHZhciBlcSA9IElTX0RBUlQgPyAnPT0nIDogJz09PSc7XG4gICAgLy8gTk9URShrZWdsdW5lcSk6IE9yZGVyIGlzIGltcG9ydGFudCFcbiAgICBmb3IgKHZhciBpID0gZGlyZWN0aXZlUmVjb3Jkcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgdmFyIGRpciA9IGRpcmVjdGl2ZVJlY29yZHNbaV07XG4gICAgICBpZiAoZGlyLmNhbGxBZnRlclZpZXdJbml0KSB7XG4gICAgICAgIHJlcy5wdXNoKFxuICAgICAgICAgICAgYGlmKCR7dGhpcy5fbmFtZXMuZ2V0U3RhdGVOYW1lKCl9ICR7ZXF9ICR7dGhpcy5fY2hhbmdlRGV0ZWN0b3JTdGF0ZU5hbWV9Lk5ldmVyQ2hlY2tlZCkgJHt0aGlzLl9uYW1lcy5nZXREaXJlY3RpdmVOYW1lKGRpci5kaXJlY3RpdmVJbmRleCl9Lm5nQWZ0ZXJWaWV3SW5pdCgpO2ApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlyLmNhbGxBZnRlclZpZXdDaGVja2VkKSB7XG4gICAgICAgIHJlcy5wdXNoKGAke3RoaXMuX25hbWVzLmdldERpcmVjdGl2ZU5hbWUoZGlyLmRpcmVjdGl2ZUluZGV4KX0ubmdBZnRlclZpZXdDaGVja2VkKCk7YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';/**\r\n * Converts `funcOrValue` to a string which can be used in generated code.\r\n */\r\nfunction codify(obj) {\r\n return JSON.stringify(obj);\r\n}\r\nexports.codify = codify;\r\nfunction rawString(str) {\r\n return \"'\" + str + \"'\";\r\n}\r\nexports.rawString = rawString;\r\n/**\r\n * Combine the strings of generated code into a single interpolated string.\r\n * Each element of `vals` is expected to be a string literal or a codegen'd\r\n * call to a method returning a string.\r\n */\r\nfunction combineGeneratedStrings(vals) {\r\n return vals.join(' + ');\r\n}\r\nexports.combineGeneratedStrings = combineGeneratedStrings;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWdlbl9mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NvZGVnZW5fZmFjYWRlLnRzIl0sIm5hbWVzIjpbImNvZGlmeSIsInJhd1N0cmluZyIsImNvbWJpbmVHZW5lcmF0ZWRTdHJpbmdzIl0sIm1hcHBpbmdzIjoiQUFDQTs7R0FFRztBQUNILGdCQUF1QixHQUFRO0lBQzdCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQTtBQUM3QkEsQ0FBQ0E7QUFGZSxjQUFNLFNBRXJCLENBQUE7QUFFRCxtQkFBMEIsR0FBVztJQUNuQ0MsTUFBTUEsQ0FBQ0EsTUFBSUEsR0FBR0EsTUFBR0EsQ0FBQ0E7QUFDcEJBLENBQUNBO0FBRmUsaUJBQVMsWUFFeEIsQ0FBQTtBQUVEOzs7O0dBSUc7QUFDSCxpQ0FBd0MsSUFBYztJQUNwREMsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0E7QUFDMUJBLENBQUNBO0FBRmUsK0JBQXVCLDBCQUV0QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKipcbiAqIENvbnZlcnRzIGBmdW5jT3JWYWx1ZWAgdG8gYSBzdHJpbmcgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZ2VuZXJhdGVkIGNvZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2RpZnkob2JqOiBhbnkpOiBzdHJpbmcge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJhd1N0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJyR7c3RyfSdgO1xufVxuXG4vKipcbiAqIENvbWJpbmUgdGhlIHN0cmluZ3Mgb2YgZ2VuZXJhdGVkIGNvZGUgaW50byBhIHNpbmdsZSBpbnRlcnBvbGF0ZWQgc3RyaW5nLlxuICogRWFjaCBlbGVtZW50IG9mIGB2YWxzYCBpcyBleHBlY3RlZCB0byBiZSBhIHN0cmluZyBsaXRlcmFsIG9yIGEgY29kZWdlbidkXG4gKiBjYWxsIHRvIGEgbWV0aG9kIHJldHVybmluZyBhIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmVHZW5lcmF0ZWRTdHJpbmdzKHZhbHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHMuam9pbignICsgJyk7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar collection_1 = require(\"angular2/src/facade/collection\");\r\nvar AST = (function () {\r\n function AST() {\r\n }\r\n AST.prototype.visit = function (visitor) { return null; };\r\n AST.prototype.toString = function () { return \"AST\"; };\r\n return AST;\r\n})();\r\nexports.AST = AST;\r\n/**\r\n * Represents a quoted expression of the form:\r\n *\r\n * quote = prefix `:` uninterpretedExpression\r\n * prefix = identifier\r\n * uninterpretedExpression = arbitrary string\r\n *\r\n * A quoted expression is meant to be pre-processed by an AST transformer that\r\n * converts it into another AST that no longer contains quoted expressions.\r\n * It is meant to allow third-party developers to extend Angular template\r\n * expression language. The `uninterpretedExpression` part of the quote is\r\n * therefore not interpreted by the Angular's own expression parser.\r\n */\r\nvar Quote = (function (_super) {\r\n __extends(Quote, _super);\r\n function Quote(prefix, uninterpretedExpression, location) {\r\n _super.call(this);\r\n this.prefix = prefix;\r\n this.uninterpretedExpression = uninterpretedExpression;\r\n this.location = location;\r\n }\r\n Quote.prototype.visit = function (visitor) { return visitor.visitQuote(this); };\r\n Quote.prototype.toString = function () { return \"Quote\"; };\r\n return Quote;\r\n})(AST);\r\nexports.Quote = Quote;\r\nvar EmptyExpr = (function (_super) {\r\n __extends(EmptyExpr, _super);\r\n function EmptyExpr() {\r\n _super.apply(this, arguments);\r\n }\r\n EmptyExpr.prototype.visit = function (visitor) {\r\n // do nothing\r\n };\r\n return EmptyExpr;\r\n})(AST);\r\nexports.EmptyExpr = EmptyExpr;\r\nvar ImplicitReceiver = (function (_super) {\r\n __extends(ImplicitReceiver, _super);\r\n function ImplicitReceiver() {\r\n _super.apply(this, arguments);\r\n }\r\n ImplicitReceiver.prototype.visit = function (visitor) { return visitor.visitImplicitReceiver(this); };\r\n return ImplicitReceiver;\r\n})(AST);\r\nexports.ImplicitReceiver = ImplicitReceiver;\r\n/**\r\n * Multiple expressions separated by a semicolon.\r\n */\r\nvar Chain = (function (_super) {\r\n __extends(Chain, _super);\r\n function Chain(expressions) {\r\n _super.call(this);\r\n this.expressions = expressions;\r\n }\r\n Chain.prototype.visit = function (visitor) { return visitor.visitChain(this); };\r\n return Chain;\r\n})(AST);\r\nexports.Chain = Chain;\r\nvar Conditional = (function (_super) {\r\n __extends(Conditional, _super);\r\n function Conditional(condition, trueExp, falseExp) {\r\n _super.call(this);\r\n this.condition = condition;\r\n this.trueExp = trueExp;\r\n this.falseExp = falseExp;\r\n }\r\n Conditional.prototype.visit = function (visitor) { return visitor.visitConditional(this); };\r\n return Conditional;\r\n})(AST);\r\nexports.Conditional = Conditional;\r\nvar PropertyRead = (function (_super) {\r\n __extends(PropertyRead, _super);\r\n function PropertyRead(receiver, name, getter) {\r\n _super.call(this);\r\n this.receiver = receiver;\r\n this.name = name;\r\n this.getter = getter;\r\n }\r\n PropertyRead.prototype.visit = function (visitor) { return visitor.visitPropertyRead(this); };\r\n return PropertyRead;\r\n})(AST);\r\nexports.PropertyRead = PropertyRead;\r\nvar PropertyWrite = (function (_super) {\r\n __extends(PropertyWrite, _super);\r\n function PropertyWrite(receiver, name, setter, value) {\r\n _super.call(this);\r\n this.receiver = receiver;\r\n this.name = name;\r\n this.setter = setter;\r\n this.value = value;\r\n }\r\n PropertyWrite.prototype.visit = function (visitor) { return visitor.visitPropertyWrite(this); };\r\n return PropertyWrite;\r\n})(AST);\r\nexports.PropertyWrite = PropertyWrite;\r\nvar SafePropertyRead = (function (_super) {\r\n __extends(SafePropertyRead, _super);\r\n function SafePropertyRead(receiver, name, getter) {\r\n _super.call(this);\r\n this.receiver = receiver;\r\n this.name = name;\r\n this.getter = getter;\r\n }\r\n SafePropertyRead.prototype.visit = function (visitor) { return visitor.visitSafePropertyRead(this); };\r\n return SafePropertyRead;\r\n})(AST);\r\nexports.SafePropertyRead = SafePropertyRead;\r\nvar KeyedRead = (function (_super) {\r\n __extends(KeyedRead, _super);\r\n function KeyedRead(obj, key) {\r\n _super.call(this);\r\n this.obj = obj;\r\n this.key = key;\r\n }\r\n KeyedRead.prototype.visit = function (visitor) { return visitor.visitKeyedRead(this); };\r\n return KeyedRead;\r\n})(AST);\r\nexports.KeyedRead = KeyedRead;\r\nvar KeyedWrite = (function (_super) {\r\n __extends(KeyedWrite, _super);\r\n function KeyedWrite(obj, key, value) {\r\n _super.call(this);\r\n this.obj = obj;\r\n this.key = key;\r\n this.value = value;\r\n }\r\n KeyedWrite.prototype.visit = function (visitor) { return visitor.visitKeyedWrite(this); };\r\n return KeyedWrite;\r\n})(AST);\r\nexports.KeyedWrite = KeyedWrite;\r\nvar BindingPipe = (function (_super) {\r\n __extends(BindingPipe, _super);\r\n function BindingPipe(exp, name, args) {\r\n _super.call(this);\r\n this.exp = exp;\r\n this.name = name;\r\n this.args = args;\r\n }\r\n BindingPipe.prototype.visit = function (visitor) { return visitor.visitPipe(this); };\r\n return BindingPipe;\r\n})(AST);\r\nexports.BindingPipe = BindingPipe;\r\nvar LiteralPrimitive = (function (_super) {\r\n __extends(LiteralPrimitive, _super);\r\n function LiteralPrimitive(value) {\r\n _super.call(this);\r\n this.value = value;\r\n }\r\n LiteralPrimitive.prototype.visit = function (visitor) { return visitor.visitLiteralPrimitive(this); };\r\n return LiteralPrimitive;\r\n})(AST);\r\nexports.LiteralPrimitive = LiteralPrimitive;\r\nvar LiteralArray = (function (_super) {\r\n __extends(LiteralArray, _super);\r\n function LiteralArray(expressions) {\r\n _super.call(this);\r\n this.expressions = expressions;\r\n }\r\n LiteralArray.prototype.visit = function (visitor) { return visitor.visitLiteralArray(this); };\r\n return LiteralArray;\r\n})(AST);\r\nexports.LiteralArray = LiteralArray;\r\nvar LiteralMap = (function (_super) {\r\n __extends(LiteralMap, _super);\r\n function LiteralMap(keys, values) {\r\n _super.call(this);\r\n this.keys = keys;\r\n this.values = values;\r\n }\r\n LiteralMap.prototype.visit = function (visitor) { return visitor.visitLiteralMap(this); };\r\n return LiteralMap;\r\n})(AST);\r\nexports.LiteralMap = LiteralMap;\r\nvar Interpolation = (function (_super) {\r\n __extends(Interpolation, _super);\r\n function Interpolation(strings, expressions) {\r\n _super.call(this);\r\n this.strings = strings;\r\n this.expressions = expressions;\r\n }\r\n Interpolation.prototype.visit = function (visitor) { return visitor.visitInterpolation(this); };\r\n return Interpolation;\r\n})(AST);\r\nexports.Interpolation = Interpolation;\r\nvar Binary = (function (_super) {\r\n __extends(Binary, _super);\r\n function Binary(operation, left, right) {\r\n _super.call(this);\r\n this.operation = operation;\r\n this.left = left;\r\n this.right = right;\r\n }\r\n Binary.prototype.visit = function (visitor) { return visitor.visitBinary(this); };\r\n return Binary;\r\n})(AST);\r\nexports.Binary = Binary;\r\nvar PrefixNot = (function (_super) {\r\n __extends(PrefixNot, _super);\r\n function PrefixNot(expression) {\r\n _super.call(this);\r\n this.expression = expression;\r\n }\r\n PrefixNot.prototype.visit = function (visitor) { return visitor.visitPrefixNot(this); };\r\n return PrefixNot;\r\n})(AST);\r\nexports.PrefixNot = PrefixNot;\r\nvar MethodCall = (function (_super) {\r\n __extends(MethodCall, _super);\r\n function MethodCall(receiver, name, fn, args) {\r\n _super.call(this);\r\n this.receiver = receiver;\r\n this.name = name;\r\n this.fn = fn;\r\n this.args = args;\r\n }\r\n MethodCall.prototype.visit = function (visitor) { return visitor.visitMethodCall(this); };\r\n return MethodCall;\r\n})(AST);\r\nexports.MethodCall = MethodCall;\r\nvar SafeMethodCall = (function (_super) {\r\n __extends(SafeMethodCall, _super);\r\n function SafeMethodCall(receiver, name, fn, args) {\r\n _super.call(this);\r\n this.receiver = receiver;\r\n this.name = name;\r\n this.fn = fn;\r\n this.args = args;\r\n }\r\n SafeMethodCall.prototype.visit = function (visitor) { return visitor.visitSafeMethodCall(this); };\r\n return SafeMethodCall;\r\n})(AST);\r\nexports.SafeMethodCall = SafeMethodCall;\r\nvar FunctionCall = (function (_super) {\r\n __extends(FunctionCall, _super);\r\n function FunctionCall(target, args) {\r\n _super.call(this);\r\n this.target = target;\r\n this.args = args;\r\n }\r\n FunctionCall.prototype.visit = function (visitor) { return visitor.visitFunctionCall(this); };\r\n return FunctionCall;\r\n})(AST);\r\nexports.FunctionCall = FunctionCall;\r\nvar ASTWithSource = (function (_super) {\r\n __extends(ASTWithSource, _super);\r\n function ASTWithSource(ast, source, location) {\r\n _super.call(this);\r\n this.ast = ast;\r\n this.source = source;\r\n this.location = location;\r\n }\r\n ASTWithSource.prototype.visit = function (visitor) { return this.ast.visit(visitor); };\r\n ASTWithSource.prototype.toString = function () { return this.source + \" in \" + this.location; };\r\n return ASTWithSource;\r\n})(AST);\r\nexports.ASTWithSource = ASTWithSource;\r\nvar TemplateBinding = (function () {\r\n function TemplateBinding(key, keyIsVar, name, expression) {\r\n this.key = key;\r\n this.keyIsVar = keyIsVar;\r\n this.name = name;\r\n this.expression = expression;\r\n }\r\n return TemplateBinding;\r\n})();\r\nexports.TemplateBinding = TemplateBinding;\r\nvar RecursiveAstVisitor = (function () {\r\n function RecursiveAstVisitor() {\r\n }\r\n RecursiveAstVisitor.prototype.visitBinary = function (ast) {\r\n ast.left.visit(this);\r\n ast.right.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitChain = function (ast) { return this.visitAll(ast.expressions); };\r\n RecursiveAstVisitor.prototype.visitConditional = function (ast) {\r\n ast.condition.visit(this);\r\n ast.trueExp.visit(this);\r\n ast.falseExp.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitPipe = function (ast) {\r\n ast.exp.visit(this);\r\n this.visitAll(ast.args);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitFunctionCall = function (ast) {\r\n ast.target.visit(this);\r\n this.visitAll(ast.args);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitImplicitReceiver = function (ast) { return null; };\r\n RecursiveAstVisitor.prototype.visitInterpolation = function (ast) { return this.visitAll(ast.expressions); };\r\n RecursiveAstVisitor.prototype.visitKeyedRead = function (ast) {\r\n ast.obj.visit(this);\r\n ast.key.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitKeyedWrite = function (ast) {\r\n ast.obj.visit(this);\r\n ast.key.visit(this);\r\n ast.value.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitLiteralArray = function (ast) { return this.visitAll(ast.expressions); };\r\n RecursiveAstVisitor.prototype.visitLiteralMap = function (ast) { return this.visitAll(ast.values); };\r\n RecursiveAstVisitor.prototype.visitLiteralPrimitive = function (ast) { return null; };\r\n RecursiveAstVisitor.prototype.visitMethodCall = function (ast) {\r\n ast.receiver.visit(this);\r\n return this.visitAll(ast.args);\r\n };\r\n RecursiveAstVisitor.prototype.visitPrefixNot = function (ast) {\r\n ast.expression.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitPropertyRead = function (ast) {\r\n ast.receiver.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitPropertyWrite = function (ast) {\r\n ast.receiver.visit(this);\r\n ast.value.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitSafePropertyRead = function (ast) {\r\n ast.receiver.visit(this);\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitSafeMethodCall = function (ast) {\r\n ast.receiver.visit(this);\r\n return this.visitAll(ast.args);\r\n };\r\n RecursiveAstVisitor.prototype.visitAll = function (asts) {\r\n var _this = this;\r\n asts.forEach(function (ast) { return ast.visit(_this); });\r\n return null;\r\n };\r\n RecursiveAstVisitor.prototype.visitQuote = function (ast) { return null; };\r\n return RecursiveAstVisitor;\r\n})();\r\nexports.RecursiveAstVisitor = RecursiveAstVisitor;\r\nvar AstTransformer = (function () {\r\n function AstTransformer() {\r\n }\r\n AstTransformer.prototype.visitImplicitReceiver = function (ast) { return ast; };\r\n AstTransformer.prototype.visitInterpolation = function (ast) {\r\n return new Interpolation(ast.strings, this.visitAll(ast.expressions));\r\n };\r\n AstTransformer.prototype.visitLiteralPrimitive = function (ast) { return new LiteralPrimitive(ast.value); };\r\n AstTransformer.prototype.visitPropertyRead = function (ast) {\r\n return new PropertyRead(ast.receiver.visit(this), ast.name, ast.getter);\r\n };\r\n AstTransformer.prototype.visitPropertyWrite = function (ast) {\r\n return new PropertyWrite(ast.receiver.visit(this), ast.name, ast.setter, ast.value);\r\n };\r\n AstTransformer.prototype.visitSafePropertyRead = function (ast) {\r\n return new SafePropertyRead(ast.receiver.visit(this), ast.name, ast.getter);\r\n };\r\n AstTransformer.prototype.visitMethodCall = function (ast) {\r\n return new MethodCall(ast.receiver.visit(this), ast.name, ast.fn, this.visitAll(ast.args));\r\n };\r\n AstTransformer.prototype.visitSafeMethodCall = function (ast) {\r\n return new SafeMethodCall(ast.receiver.visit(this), ast.name, ast.fn, this.visitAll(ast.args));\r\n };\r\n AstTransformer.prototype.visitFunctionCall = function (ast) {\r\n return new FunctionCall(ast.target.visit(this), this.visitAll(ast.args));\r\n };\r\n AstTransformer.prototype.visitLiteralArray = function (ast) {\r\n return new LiteralArray(this.visitAll(ast.expressions));\r\n };\r\n AstTransformer.prototype.visitLiteralMap = function (ast) {\r\n return new LiteralMap(ast.keys, this.visitAll(ast.values));\r\n };\r\n AstTransformer.prototype.visitBinary = function (ast) {\r\n return new Binary(ast.operation, ast.left.visit(this), ast.right.visit(this));\r\n };\r\n AstTransformer.prototype.visitPrefixNot = function (ast) { return new PrefixNot(ast.expression.visit(this)); };\r\n AstTransformer.prototype.visitConditional = function (ast) {\r\n return new Conditional(ast.condition.visit(this), ast.trueExp.visit(this), ast.falseExp.visit(this));\r\n };\r\n AstTransformer.prototype.visitPipe = function (ast) {\r\n return new BindingPipe(ast.exp.visit(this), ast.name, this.visitAll(ast.args));\r\n };\r\n AstTransformer.prototype.visitKeyedRead = function (ast) {\r\n return new KeyedRead(ast.obj.visit(this), ast.key.visit(this));\r\n };\r\n AstTransformer.prototype.visitKeyedWrite = function (ast) {\r\n return new KeyedWrite(ast.obj.visit(this), ast.key.visit(this), ast.value.visit(this));\r\n };\r\n AstTransformer.prototype.visitAll = function (asts) {\r\n var res = collection_1.ListWrapper.createFixedSize(asts.length);\r\n for (var i = 0; i < asts.length; ++i) {\r\n res[i] = asts[i].visit(this);\r\n }\r\n return res;\r\n };\r\n AstTransformer.prototype.visitChain = function (ast) { return new Chain(this.visitAll(ast.expressions)); };\r\n AstTransformer.prototype.visitQuote = function (ast) {\r\n return new Quote(ast.prefix, ast.uninterpretedExpression, ast.location);\r\n };\r\n return AstTransformer;\r\n})();\r\nexports.AstTransformer = AstTransformer;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9wYXJzZXIvYXN0LnRzIl0sIm5hbWVzIjpbIkFTVCIsIkFTVC5jb25zdHJ1Y3RvciIsIkFTVC52aXNpdCIsIkFTVC50b1N0cmluZyIsIlF1b3RlIiwiUXVvdGUuY29uc3RydWN0b3IiLCJRdW90ZS52aXNpdCIsIlF1b3RlLnRvU3RyaW5nIiwiRW1wdHlFeHByIiwiRW1wdHlFeHByLmNvbnN0cnVjdG9yIiwiRW1wdHlFeHByLnZpc2l0IiwiSW1wbGljaXRSZWNlaXZlciIsIkltcGxpY2l0UmVjZWl2ZXIuY29uc3RydWN0b3IiLCJJbXBsaWNpdFJlY2VpdmVyLnZpc2l0IiwiQ2hhaW4iLCJDaGFpbi5jb25zdHJ1Y3RvciIsIkNoYWluLnZpc2l0IiwiQ29uZGl0aW9uYWwiLCJDb25kaXRpb25hbC5jb25zdHJ1Y3RvciIsIkNvbmRpdGlvbmFsLnZpc2l0IiwiUHJvcGVydHlSZWFkIiwiUHJvcGVydHlSZWFkLmNvbnN0cnVjdG9yIiwiUHJvcGVydHlSZWFkLnZpc2l0IiwiUHJvcGVydHlXcml0ZSIsIlByb3BlcnR5V3JpdGUuY29uc3RydWN0b3IiLCJQcm9wZXJ0eVdyaXRlLnZpc2l0IiwiU2FmZVByb3BlcnR5UmVhZCIsIlNhZmVQcm9wZXJ0eVJlYWQuY29uc3RydWN0b3IiLCJTYWZlUHJvcGVydHlSZWFkLnZpc2l0IiwiS2V5ZWRSZWFkIiwiS2V5ZWRSZWFkLmNvbnN0cnVjdG9yIiwiS2V5ZWRSZWFkLnZpc2l0IiwiS2V5ZWRXcml0ZSIsIktleWVkV3JpdGUuY29uc3RydWN0b3IiLCJLZXllZFdyaXRlLnZpc2l0IiwiQmluZGluZ1BpcGUiLCJCaW5kaW5nUGlwZS5jb25zdHJ1Y3RvciIsIkJpbmRpbmdQaXBlLnZpc2l0IiwiTGl0ZXJhbFByaW1pdGl2ZSIsIkxpdGVyYWxQcmltaXRpdmUuY29uc3RydWN0b3IiLCJMaXRlcmFsUHJpbWl0aXZlLnZpc2l0IiwiTGl0ZXJhbEFycmF5IiwiTGl0ZXJhbEFycmF5LmNvbnN0cnVjdG9yIiwiTGl0ZXJhbEFycmF5LnZpc2l0IiwiTGl0ZXJhbE1hcCIsIkxpdGVyYWxNYXAuY29uc3RydWN0b3IiLCJMaXRlcmFsTWFwLnZpc2l0IiwiSW50ZXJwb2xhdGlvbiIsIkludGVycG9sYXRpb24uY29uc3RydWN0b3IiLCJJbnRlcnBvbGF0aW9uLnZpc2l0IiwiQmluYXJ5IiwiQmluYXJ5LmNvbnN0cnVjdG9yIiwiQmluYXJ5LnZpc2l0IiwiUHJlZml4Tm90IiwiUHJlZml4Tm90LmNvbnN0cnVjdG9yIiwiUHJlZml4Tm90LnZpc2l0IiwiTWV0aG9kQ2FsbCIsIk1ldGhvZENhbGwuY29uc3RydWN0b3IiLCJNZXRob2RDYWxsLnZpc2l0IiwiU2FmZU1ldGhvZENhbGwiLCJTYWZlTWV0aG9kQ2FsbC5jb25zdHJ1Y3RvciIsIlNhZmVNZXRob2RDYWxsLnZpc2l0IiwiRnVuY3Rpb25DYWxsIiwiRnVuY3Rpb25DYWxsLmNvbnN0cnVjdG9yIiwiRnVuY3Rpb25DYWxsLnZpc2l0IiwiQVNUV2l0aFNvdXJjZSIsIkFTVFdpdGhTb3VyY2UuY29uc3RydWN0b3IiLCJBU1RXaXRoU291cmNlLnZpc2l0IiwiQVNUV2l0aFNvdXJjZS50b1N0cmluZyIsIlRlbXBsYXRlQmluZGluZyIsIlRlbXBsYXRlQmluZGluZy5jb25zdHJ1Y3RvciIsIlJlY3Vyc2l2ZUFzdFZpc2l0b3IiLCJSZWN1cnNpdmVBc3RWaXNpdG9yLmNvbnN0cnVjdG9yIiwiUmVjdXJzaXZlQXN0VmlzaXRvci52aXNpdEJpbmFyeSIsIlJlY3Vyc2l2ZUFzdFZpc2l0b3IudmlzaXRDaGFpbiIsIlJlY3Vyc2l2ZUFzdFZpc2l0b3IudmlzaXRDb25kaXRpb25hbCIsIlJlY3Vyc2l2ZUFzdFZpc2l0b3IudmlzaXRQaXBlIiwiUmVjdXJzaXZlQXN0VmlzaXRvci52aXNpdEZ1bmN0aW9uQ2FsbCIsIlJlY3Vyc2l2ZUFzdFZpc2l0b3IudmlzaXRJbXBsaWNpdFJlY2VpdmVyIiwiUmVjdXJzaXZlQXN0VmlzaXRvci52aXNpdEludGVycG9sYXRpb24iLCJSZWN1cnNpdmVBc3RWaXNpdG9yLnZpc2l0S2V5ZWRSZWFkIiwiUmVjdXJzaXZlQXN0VmlzaXRvci52aXNpdEtleWVkV3JpdGUiLCJSZWN1cnNpdmVBc3RWaXNpdG9yLnZpc2l0TGl0ZXJhbEFycmF5IiwiUmVjdXJzaXZlQXN0VmlzaXRvci52aXNpdExpdGVyYWxNYXAiLCJSZWN1cnNpdmVBc3RWaXNpdG9yLnZpc2l0TGl0ZXJhbFByaW1pdGl2ZSIsIlJlY3Vyc2l2ZUFzdFZpc2l0b3IudmlzaXRNZXRob2RDYWxsIiwiUmVjdXJzaXZlQXN0VmlzaXRvci52aXNpdFByZWZpeE5vdCIsIlJlY3Vyc2l2ZUFzdFZpc2l0b3IudmlzaXRQcm9wZXJ0eVJlYWQiLCJSZWN1cnNpdmVBc3RWaXNpdG9yLnZpc2l0UHJvcGVydHlXcml0ZSIsIlJlY3Vyc2l2ZUFzdFZpc2l0b3IudmlzaXRTYWZlUHJvcGVydHlSZWFkIiwiUmVjdXJzaXZlQXN0VmlzaXRvci52aXNpdFNhZmVNZXRob2RDYWxsIiwiUmVjdXJzaXZlQXN0VmlzaXRvci52aXNpdEFsbCIsIlJlY3Vyc2l2ZUFzdFZpc2l0b3IudmlzaXRRdW90ZSIsIkFzdFRyYW5zZm9ybWVyIiwiQXN0VHJhbnNmb3JtZXIuY29uc3RydWN0b3IiLCJBc3RUcmFuc2Zvcm1lci52aXNpdEltcGxpY2l0UmVjZWl2ZXIiLCJBc3RUcmFuc2Zvcm1lci52aXNpdEludGVycG9sYXRpb24iLCJBc3RUcmFuc2Zvcm1lci52aXNpdExpdGVyYWxQcmltaXRpdmUiLCJBc3RUcmFuc2Zvcm1lci52aXNpdFByb3BlcnR5UmVhZCIsIkFzdFRyYW5zZm9ybWVyLnZpc2l0UHJvcGVydHlXcml0ZSIsIkFzdFRyYW5zZm9ybWVyLnZpc2l0U2FmZVByb3BlcnR5UmVhZCIsIkFzdFRyYW5zZm9ybWVyLnZpc2l0TWV0aG9kQ2FsbCIsIkFzdFRyYW5zZm9ybWVyLnZpc2l0U2FmZU1ldGhvZENhbGwiLCJBc3RUcmFuc2Zvcm1lci52aXNpdEZ1bmN0aW9uQ2FsbCIsIkFzdFRyYW5zZm9ybWVyLnZpc2l0TGl0ZXJhbEFycmF5IiwiQXN0VHJhbnNmb3JtZXIudmlzaXRMaXRlcmFsTWFwIiwiQXN0VHJhbnNmb3JtZXIudmlzaXRCaW5hcnkiLCJBc3RUcmFuc2Zvcm1lci52aXNpdFByZWZpeE5vdCIsIkFzdFRyYW5zZm9ybWVyLnZpc2l0Q29uZGl0aW9uYWwiLCJBc3RUcmFuc2Zvcm1lci52aXNpdFBpcGUiLCJBc3RUcmFuc2Zvcm1lci52aXNpdEtleWVkUmVhZCIsIkFzdFRyYW5zZm9ybWVyLnZpc2l0S2V5ZWRXcml0ZSIsIkFzdFRyYW5zZm9ybWVyLnZpc2l0QWxsIiwiQXN0VHJhbnNmb3JtZXIudmlzaXRDaGFpbiIsIkFzdFRyYW5zZm9ybWVyLnZpc2l0UXVvdGUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkJBQTBCLGdDQUFnQyxDQUFDLENBQUE7QUFFM0Q7SUFBQUE7SUFHQUMsQ0FBQ0E7SUFGQ0QsbUJBQUtBLEdBQUxBLFVBQU1BLE9BQW1CQSxJQUFTRSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNoREYsc0JBQVFBLEdBQVJBLGNBQXFCRyxNQUFNQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUN0Q0gsVUFBQ0E7QUFBREEsQ0FBQ0EsQUFIRCxJQUdDO0FBSFksV0FBRyxNQUdmLENBQUE7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSDtJQUEyQkkseUJBQUdBO0lBQzVCQSxlQUFtQkEsTUFBY0EsRUFBU0EsdUJBQStCQSxFQUFTQSxRQUFhQTtRQUM3RkMsaUJBQU9BLENBQUNBO1FBRFNBLFdBQU1BLEdBQU5BLE1BQU1BLENBQVFBO1FBQVNBLDRCQUF1QkEsR0FBdkJBLHVCQUF1QkEsQ0FBUUE7UUFBU0EsYUFBUUEsR0FBUkEsUUFBUUEsQ0FBS0E7SUFFL0ZBLENBQUNBO0lBQ0RELHFCQUFLQSxHQUFMQSxVQUFNQSxPQUFtQkEsSUFBU0UsTUFBTUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsVUFBVUEs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QSxDQUFDQSxHQUFHQSxDQUFDQSxRQUFRQSxDQUFDQSxLQUFLQSxDQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxHQUFHQSxDQUFDQSxJQUFJQSxFQUFFQSxHQUFHQSxDQUFDQSxFQUFFQSxFQUFFQSxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNqR0EsQ0FBQ0E7SUFFRFQsMENBQWlCQSxHQUFqQkEsVUFBa0JBLEdBQWlCQTtRQUNqQ1UsTUFBTUEsQ0FBQ0EsSUFBSUEsWUFBWUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDM0VBLENBQUNBO0lBRURWLDBDQUFpQkEsR0FBakJBLFVBQWtCQSxHQUFpQkE7UUFDakNXLE1BQU1BLENBQUNBLElBQUlBLFlBQVlBLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLEdBQUdBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBLENBQUNBO0lBQzFEQSxDQUFDQTtJQUVEWCx3Q0FBZUEsR0FBZkEsVUFBZ0JBLEdBQWVBO1FBQzdCWSxNQUFNQSxDQUFDQSxJQUFJQSxVQUFVQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxFQUFFQSxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxHQUFHQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUM3REEsQ0FBQ0E7SUFFRFosb0NBQVdBLEdBQVhBLFVBQVlBLEdBQVdBO1FBQ3JCYSxNQUFNQSxDQUFDQSxJQUFJQSxNQUFNQSxDQUFDQSxHQUFHQSxDQUFDQSxTQUFTQSxFQUFFQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxHQUFHQSxDQUFDQSxLQUFLQSxDQUFDQSxLQUFLQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtJ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QTZFQztBQTdFWSxzQkFBYyxpQkE2RTFCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpc3RXcmFwcGVyfSBmcm9tIFwiYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uXCI7XG5cbmV4cG9ydCBjbGFzcyBBU1Qge1xuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yKTogYW55IHsgcmV0dXJuIG51bGw7IH1cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuIFwiQVNUXCI7IH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcXVvdGVkIGV4cHJlc3Npb24gb2YgdGhlIGZvcm06XG4gKlxuICogcXVvdGUgPSBwcmVmaXggYDpgIHVuaW50ZXJwcmV0ZWRFeHByZXNzaW9uXG4gKiBwcmVmaXggPSBpZGVudGlmaWVyXG4gKiB1bmludGVycHJldGVkRXhwcmVzc2lvbiA9IGFyYml0cmFyeSBzdHJpbmdcbiAqXG4gKiBBIHF1b3RlZCBleHByZXNzaW9uIGlzIG1lYW50IHRvIGJlIHByZS1wcm9jZXNzZWQgYnkgYW4gQVNUIHRyYW5zZm9ybWVyIHRoYXRcbiAqIGNvbnZlcnRzIGl0IGludG8gYW5vdGhlciBBU1QgdGhhdCBubyBsb25nZXIgY29udGFpbnMgcXVvdGVkIGV4cHJlc3Npb25zLlxuICogSXQgaXMgbWVhbnQgdG8gYWxsb3cgdGhpcmQtcGFydHkgZGV2ZWxvcGVycyB0byBleHRlbmQgQW5ndWxhciB0ZW1wbGF0ZVxuICogZXhwcmVzc2lvbiBsYW5ndWFnZS4gVGhlIGB1bmludGVycHJldGVkRXhwcmVzc2lvbmAgcGFydCBvZiB0aGUgcXVvdGUgaXNcbiAqIHRoZXJlZm9yZSBub3QgaW50ZXJwcmV0ZWQgYnkgdGhlIEFuZ3VsYXIncyBvd24gZXhwcmVzc2lvbiBwYXJzZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBRdW90ZSBleHRlbmRzIEFTVCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwcmVmaXg6IHN0cmluZywgcHVibGljIHVuaW50ZXJwcmV0ZWRFeHByZXNzaW9uOiBzdHJpbmcsIHB1YmxpYyBsb2NhdGlvbjogYW55KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yKTogYW55IHsgcmV0dXJuIHZpc2l0b3IudmlzaXRRdW90ZSh0aGlzKTsgfVxuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gXCJRdW90ZVwiOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbXB0eUV4cHIgZXh0ZW5kcyBBU1Qge1xuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yKSB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbXBsaWNpdFJlY2VpdmVyIGV4dGVuZHMgQVNUIHtcbiAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvcik6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0SW1wbGljaXRSZWNlaXZlcih0aGlzKTsgfVxufVxuXG4vKipcbiAqIE11bHRpcGxlIGV4cHJlc3Npb25zIHNlcGFyYXRlZCBieSBhIHNlbWljb2xvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENoYWluIGV4dGVuZHMgQVNUIHtcbiAgY29uc3RydWN0b3IocHVibGljIGV4cHJlc3Npb25zOiBhbnlbXSkgeyBzdXBlcigpOyB9XG4gIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IpOiBhbnkgeyByZXR1cm4gdmlzaXRvci52aXNpdENoYWluKHRoaXMpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb25kaXRpb25hbCBleHRlbmRzIEFTVCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25kaXRpb246IEFTVCwgcHVibGljIHRydWVFeHA6IEFTVCwgcHVibGljIGZhbHNlRXhwOiBBU1QpIHsgc3VwZXIoKTsgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yKTogYW55IHsgcmV0dXJuIHZpc2l0b3IudmlzaXRDb25kaXRpb25hbCh0aGlzKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvcGVydHlSZWFkIGV4dGVuZHMgQVNUIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlY2VpdmVyOiBBU1QsIHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBnZXR0ZXI6IEZ1bmN0aW9uKSB7IHN1cGVyKCk7IH1cbiAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvcik6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0UHJvcGVydHlSZWFkKHRoaXMpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eVdyaXRlIGV4dGVuZHMgQVNUIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlY2VpdmVyOiBBU1QsIHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBzZXR0ZXI6IEZ1bmN0aW9uLFxuICAgICAgICAgICAgICBwdWJsaWMgdmFsdWU6IEFTVCkge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvcik6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0UHJvcGVydHlXcml0ZSh0aGlzKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgU2FmZVByb3BlcnR5UmVhZCBleHRlbmRzIEFTVCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWNlaXZlcjogQVNULCBwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgZ2V0dGVyOiBGdW5jdGlvbikgeyBzdXBlcigpOyB9XG4gIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IpOiBhbnkgeyByZXR1cm4gdmlzaXRvci52aXNpdFNhZmVQcm9wZXJ0eVJlYWQodGhpcyk7IH1cbn1cblxuZXhwb3J0IGNsYXNzIEtleWVkUmVhZCBleHRlbmRzIEFTVCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvYmo6IEFTVCwgcHVibGljIGtleTogQVNUKSB7IHN1cGVyKCk7IH1cbiAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvcik6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0S2V5ZWRSZWFkKHRoaXMpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBLZXllZFdyaXRlIGV4dGVuZHMgQVNUIHtcbiAgY29uc3RydWN0b3IocHVibGljIG9iajogQVNULCBwdWJsaWMga2V5OiBBU1QsIHB1YmxpYyB2YWx1ZTogQVNUKSB7IHN1cGVyKCk7IH1cbiAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvcik6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0S2V5ZWRXcml0ZSh0aGlzKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgQmluZGluZ1BpcGUgZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZXhwOiBBU1QsIHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBhcmdzOiBhbnlbXSkgeyBzdXBlcigpOyB9XG4gIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IpOiBhbnkgeyByZXR1cm4gdmlzaXRvci52aXNpdFBpcGUodGhpcyk7IH1cbn1cblxuZXhwb3J0IGNsYXNzIExpdGVyYWxQcmltaXRpdmUgZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWUpIHsgc3VwZXIoKTsgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yKTogYW55IHsgcmV0dXJuIHZpc2l0b3IudmlzaXRMaXRlcmFsUHJpbWl0aXZlKHRoaXMpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXRlcmFsQXJyYXkgZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZXhwcmVzc2lvbnM6IGFueVtdKSB7IHN1cGVyKCk7IH1cbiAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvcik6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0TGl0ZXJhbEFycmF5KHRoaXMpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXRlcmFsTWFwIGV4dGVuZHMgQVNUIHtcbiAgY29uc3RydWN0b3IocHVibGljIGtleXM6IGFueVtdLCBwdWJsaWMgdmFsdWVzOiBhbnlbXSkgeyBzdXBlcigpOyB9XG4gIHZpc2l0KHZpc2l0b3I6IEFzdFZpc2l0b3IpOiBhbnkgeyByZXR1cm4gdmlzaXRvci52aXNpdExpdGVyYWxNYXAodGhpcyk7IH1cbn1cblxuZXhwb3J0IGNsYXNzIEludGVycG9sYXRpb24gZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RyaW5nczogYW55W10sIHB1YmxpYyBleHByZXNzaW9uczogYW55W10pIHsgc3VwZXIoKTsgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yKTogYW55IHsgcmV0dXJuIHZpc2l0b3IudmlzaXRJbnRlcnBvbGF0aW9uKHRoaXMpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBCaW5hcnkgZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3BlcmF0aW9uOiBzdHJpbmcsIHB1YmxpYyBsZWZ0OiBBU1QsIHB1YmxpYyByaWdodDogQVNUKSB7IHN1cGVyKCk7IH1cbiAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvcik6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0QmluYXJ5KHRoaXMpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcmVmaXhOb3QgZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZXhwcmVzc2lvbjogQVNUKSB7IHN1cGVyKCk7IH1cbiAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvcik6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0UHJlZml4Tm90KHRoaXMpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRob2RDYWxsIGV4dGVuZHMgQVNUIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlY2VpdmVyOiBBU1QsIHB1YmxpYyBuYW1lOiBzdHJpbmcsIHB1YmxpYyBmbjogRnVuY3Rpb24sIHB1YmxpYyBhcmdzOiBhbnlbXSkge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgdmlzaXQodmlzaXRvcjogQXN0VmlzaXRvcik6IGFueSB7IHJldHVybiB2aXNpdG9yLnZpc2l0TWV0aG9kQ2FsbCh0aGlzKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgU2FmZU1ldGhvZENhbGwgZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVjZWl2ZXI6IEFTVCwgcHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIGZuOiBGdW5jdGlvbiwgcHVibGljIGFyZ3M6IGFueVtdKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yKTogYW55IHsgcmV0dXJuIHZpc2l0b3IudmlzaXRTYWZlTWV0aG9kQ2FsbCh0aGlzKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25DYWxsIGV4dGVuZHMgQVNUIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRhcmdldDogQVNULCBwdWJsaWMgYXJnczogYW55W10pIHsgc3VwZXIoKTsgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yKTogYW55IHsgcmV0dXJuIHZpc2l0b3IudmlzaXRGdW5jdGlvbkNhbGwodGhpcyk7IH1cbn1cblxuZXhwb3J0IGNsYXNzIEFTVFdpdGhTb3VyY2UgZXh0ZW5kcyBBU1Qge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgYXN0OiBBU1QsIHB1YmxpYyBzb3VyY2U6IHN0cmluZywgcHVibGljIGxvY2F0aW9uOiBzdHJpbmcpIHsgc3VwZXIoKTsgfVxuICB2aXNpdCh2aXNpdG9yOiBBc3RWaXNpdG9yKTogYW55IHsgcmV0dXJuIHRoaXMuYXN0LnZpc2l0KHZpc2l0b3IpOyB9XG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiBgJHt0aGlzLnNvdXJjZX0gaW4gJHt0aGlzLmxvY2F0aW9ufWA7IH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQmluZGluZyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBrZXk6IHN0cmluZywgcHVibGljIGtleUlzVmFyOiBib29sZWFuLCBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICBwdWJsaWMgZXhwcmVzc2lvbjogQVNUV2l0aFNvdXJjZSkge31cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBc3RWaXNpdG9yIHtcbiAgdmlzaXRCaW5hcnkoYXN0OiBCaW5hcnkpOiBhbnk7XG4gIHZpc2l0Q2hhaW4oYXN0OiBDaGFpbik6IGFueTtcbiAgdmlzaXRDb25kaXRpb25hbChhc3Q6IENvbmRpdGlvbmFsKTogYW55O1xuICB2aXNpdEZ1bmN0aW9uQ2FsbChhc3Q6IEZ1bmN0aW9uQ2FsbCk6IGFueTtcbiAgdmlzaXRJbXBsaWNpdFJlY2VpdmVyKGFzdDogSW1wbGljaXRSZWNlaXZlcik6IGFueTtcbiAgdmlzaXRJbnRlcnBvbGF0aW9uKGFzdDogSW50ZXJwb2xhdGlvbik6IGFueTtcbiAgdmlzaXRLZXllZFJlYWQoYXN0OiBLZXllZFJlYWQpOiBhbnk7XG4gIHZpc2l0S2V5ZWRXcml0ZShhc3Q6IEtleWVkV3JpdGUpOiBhbnk7XG4gIHZpc2l0TGl0ZXJhbEFycmF5KGFzdDogTGl0ZXJhbEFycmF5KTogYW55O1xuICB2aXNpdExpdGVyYWxNYXAoYXN0OiBMaXRlcmFsTWFwKTogYW55O1xuICB2aXNpdExpdGVyYWxQcmltaXRpdmUoYXN0OiBMaXRlcmFsUHJpbWl0aXZlKTogYW55O1xuICB2aXNpdE1ldGhvZENhbGwoYXN0OiBNZXRob2RDYWxsKTogYW55O1xuICB2aXNpdFBpcGUoYXN0OiBCaW5kaW5nUGlwZSk6IGFueTtcbiAgdmlzaXRQcmVmaXhOb3QoYXN0OiBQcmVmaXhOb3QpOiBhbnk7XG4gIHZpc2l0UHJvcGVydHlSZWFkKGFzdDogUHJvcGVydHlSZWFkKTogYW55O1xuICB2aXNpdFByb3BlcnR5V3JpdGUoYXN0OiBQcm9wZXJ0eVdyaXRlKTogYW55O1xuICB2aXNpdFF1b3RlKGFzdDogUXVvdGUpOiBhbnk7XG4gIHZpc2l0U2FmZU1ldGhvZENhbGwoYXN0OiBTYWZlTWV0aG9kQ2FsbCk6IGFueTtcbiAgdmlzaXRTYWZlUHJvcGVydHlSZWFkKGFzdDogU2FmZVByb3BlcnR5UmVhZCk6IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIFJlY3Vyc2l2ZUFzdFZpc2l0b3IgaW1wbGVtZW50cyBBc3RWaXNpdG9yIHtcbiAgdmlzaXRCaW5hcnkoYXN0OiBCaW5hcnkpOiBhbnkge1xuICAgIGFzdC5sZWZ0LnZpc2l0KHRoaXMpO1xuICAgIGFzdC5yaWdodC52aXNpdCh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdENoYWluKGFzdDogQ2hhaW4pOiBhbnkgeyByZXR1cm4gdGhpcy52aXNpdEFsbChhc3QuZXhwcmVzc2lvbnMpOyB9XG4gIHZpc2l0Q29uZGl0aW9uYWwoYXN0OiBDb25kaXRpb25hbCk6IGFueSB7XG4gICAgYXN0LmNvbmRpdGlvbi52aXNpdCh0aGlzKTtcbiAgICBhc3QudHJ1ZUV4cC52aXNpdCh0aGlzKTtcbiAgICBhc3QuZmFsc2VFeHAudmlzaXQodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRQaXBlKGFzdDogQmluZGluZ1BpcGUpOiBhbnkge1xuICAgIGFzdC5leHAudmlzaXQodGhpcyk7XG4gICAgdGhpcy52aXNpdEFsbChhc3QuYXJncyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRGdW5jdGlvbkNhbGwoYXN0OiBGdW5jdGlvbkNhbGwpOiBhbnkge1xuICAgIGFzdC50YXJnZXQudmlzaXQodGhpcyk7XG4gICAgdGhpcy52aXNpdEFsbChhc3QuYXJncyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRJbXBsaWNpdFJlY2VpdmVyKGFzdDogSW1wbGljaXRSZWNlaXZlcik6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIHZpc2l0SW50ZXJwb2xhdGlvbihhc3Q6IEludGVycG9sYXRpb24pOiBhbnkgeyByZXR1cm4gdGhpcy52aXNpdEFsbChhc3QuZXhwcmVzc2lvbnMpOyB9XG4gIHZpc2l0S2V5ZWRSZWFkKGFzdDogS2V5ZWRSZWFkKTogYW55IHtcbiAgICBhc3Qub2JqLnZpc2l0KHRoaXMpO1xuICAgIGFzdC5rZXkudmlzaXQodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRLZXllZFdyaXRlKGFzdDogS2V5ZWRXcml0ZSk6IGFueSB7XG4gICAgYXN0Lm9iai52aXNpdCh0aGlzKTtcbiAgICBhc3Qua2V5LnZpc2l0KHRoaXMpO1xuICAgIGFzdC52YWx1ZS52aXNpdCh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdExpdGVyYWxBcnJheShhc3Q6IExpdGVyYWxBcnJheSk6IGFueSB7IHJldHVybiB0aGlzLnZpc2l0QWxsKGFzdC5leHByZXNzaW9ucyk7IH1cbiAgdmlzaXRMaXRlcmFsTWFwKGFzdDogTGl0ZXJhbE1hcCk6IGFueSB7IHJldHVybiB0aGlzLnZpc2l0QWxsKGFzdC52YWx1ZXMpOyB9XG4gIHZpc2l0TGl0ZXJhbFByaW1pdGl2ZShhc3Q6IExpdGVyYWxQcmltaXRpdmUpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICB2aXNpdE1ldGhvZENhbGwoYXN0OiBNZXRob2RDYWxsKTogYW55IHtcbiAgICBhc3QucmVjZWl2ZXIudmlzaXQodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMudmlzaXRBbGwoYXN0LmFyZ3MpO1xuICB9XG4gIHZpc2l0UHJlZml4Tm90KGFzdDogUHJlZml4Tm90KTogYW55IHtcbiAgICBhc3QuZXhwcmVzc2lvbi52aXNpdCh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2aXNpdFByb3BlcnR5UmVhZChhc3Q6IFByb3BlcnR5UmVhZCk6IGFueSB7XG4gICAgYXN0LnJlY2VpdmVyLnZpc2l0KHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0UHJvcGVydHlXcml0ZShhc3Q6IFByb3BlcnR5V3JpdGUpOiBhbnkge1xuICAgIGFzdC5yZWNlaXZlci52aXNpdCh0aGlzKTtcbiAgICBhc3QudmFsdWUudmlzaXQodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmlzaXRTYWZlUHJvcGVydHlSZWFkKGFzdDogU2FmZVByb3BlcnR5UmVhZCk6IGFueSB7XG4gICAgYXN0LnJlY2VpdmVyLnZpc2l0KHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0U2FmZU1ldGhvZENhbGwoYXN0OiBTYWZlTWV0aG9kQ2FsbCk6IGFueSB7XG4gICAgYXN0LnJlY2VpdmVyLnZpc2l0KHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnZpc2l0QWxsKGFzdC5hcmdzKTtcbiAgfVxuICB2aXNpdEFsbChhc3RzOiBBU1RbXSk6IGFueSB7XG4gICAgYXN0cy5mb3JFYWNoKGFzdCA9PiBhc3QudmlzaXQodGhpcykpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZpc2l0UXVvdGUoYXN0OiBRdW90ZSk6IGFueSB7IHJldHVybiBudWxsOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBBc3RUcmFuc2Zvcm1lciBpbXBsZW1lbnRzIEFzdFZpc2l0b3Ige1xuICB2aXNpdEltcGxpY2l0UmVjZWl2ZXIoYXN0OiBJbXBsaWNpdFJlY2VpdmVyKTogQVNUIHsgcmV0dXJuIGFzdDsgfVxuXG4gIHZpc2l0SW50ZXJwb2xhdGlvbihhc3Q6IEludGVycG9sYXRpb24pOiBBU1Qge1xuICAgIHJldHVybiBuZXcgSW50ZXJwb2xhdGlvbihhc3Quc3RyaW5ncywgdGhpcy52aXNpdEFsbChhc3QuZXhwcmVzc2lvbnMpKTtcbiAgfVxuXG4gIHZpc2l0TGl0ZXJhbFByaW1pdGl2ZShhc3Q6IExpdGVyYWxQcmltaXRpdmUpOiBBU1QgeyByZXR1cm4gbmV3IExpdGVyYWxQcmltaXRpdmUoYXN0LnZhbHVlKTsgfVxuXG4gIHZpc2l0UHJvcGVydHlSZWFkKGFzdDogUHJvcGVydHlSZWFkKTogQVNUIHtcbiAgICByZXR1cm4gbmV3IFByb3BlcnR5UmVhZChhc3QucmVjZWl2ZXIudmlzaXQodGhpcyksIGFzdC5uYW1lLCBhc3QuZ2V0dGVyKTtcbiAgfVxuXG4gIHZpc2l0UHJvcGVydHlXcml0ZShhc3Q6IFByb3BlcnR5V3JpdGUpOiBBU1Qge1xuICAgIHJldHVybiBuZXcgUHJvcGVydHlXcml0ZShhc3QucmVjZWl2ZXIudmlzaXQodGhpcyksIGFzdC5uYW1lLCBhc3Quc2V0dGVyLCBhc3QudmFsdWUpO1xuICB9XG5cbiAgdmlzaXRTYWZlUHJvcGVydHlSZWFkKGFzdDogU2FmZVByb3BlcnR5UmVhZCk6IEFTVCB7XG4gICAgcmV0dXJuIG5ldyBTYWZlUHJvcGVydHlSZWFkKGFzdC5yZWNlaXZlci52aXNpdCh0aGlzKSwgYXN0Lm5hbWUsIGFzdC5nZXR0ZXIpO1xuICB9XG5cbiAgdmlzaXRNZXRob2RDYWxsKGFzdDogTWV0aG9kQ2FsbCk6IEFTVCB7XG4gICAgcmV0dXJuIG5ldyBNZXRob2RDYWxsKGFzdC5yZWNlaXZlci52aXNpdCh0aGlzKSwgYXN0Lm5hbWUsIGFzdC5mbiwgdGhpcy52aXNpdEFsbChhc3QuYXJncykpO1xuICB9XG5cbiAgdmlzaXRTYWZlTWV0aG9kQ2FsbChhc3Q6IFNhZmVNZXRob2RDYWxsKTogQVNUIHtcbiAgICByZXR1cm4gbmV3IFNhZmVNZXRob2RDYWxsKGFzdC5yZWNlaXZlci52aXNpdCh0aGlzKSwgYXN0Lm5hbWUsIGFzdC5mbiwgdGhpcy52aXNpdEFsbChhc3QuYXJncykpO1xuICB9XG5cbiAgdmlzaXRGdW5jdGlvbkNhbGwoYXN0OiBGdW5jdGlvbkNhbGwpOiBBU1Qge1xuICAgIHJldHVybiBuZXcgRnVuY3Rpb25DYWxsKGFzdC50YXJnZXQudmlzaXQodGhpcyksIHRoaXMudmlzaXRBbGwoYXN0LmFyZ3MpKTtcbiAgfVxuXG4gIHZpc2l0TGl0ZXJhbEFycmF5KGFzdDogTGl0ZXJhbEFycmF5KTogQVNUIHtcbiAgICByZXR1cm4gbmV3IExpdGVyYWxBcnJheSh0aGlzLnZpc2l0QWxsKGFzdC5leHByZXNzaW9ucykpO1xuICB9XG5cbiAgdmlzaXRMaXRlcmFsTWFwKGFzdDogTGl0ZXJhbE1hcCk6IEFTVCB7XG4gICAgcmV0dXJuIG5ldyBMaXRlcmFsTWFwKGFzdC5rZXlzLCB0aGlzLnZpc2l0QWxsKGFzdC52YWx1ZXMpKTtcbiAgfVxuXG4gIHZpc2l0QmluYXJ5KGFzdDogQmluYXJ5KTogQVNUIHtcbiAgICByZXR1cm4gbmV3IEJpbmFyeShhc3Qub3BlcmF0aW9uLCBhc3QubGVmdC52aXNpdCh0aGlzKSwgYXN0LnJpZ2h0LnZpc2l0KHRoaXMpKTtcbiAgfVxuXG4gIHZpc2l0UHJlZml4Tm90KGFzdDogUHJlZml4Tm90KTogQVNUIHsgcmV0dXJuIG5ldyBQcmVmaXhOb3QoYXN0LmV4cHJlc3Npb24udmlzaXQodGhpcykpOyB9XG5cbiAgdmlzaXRDb25kaXRpb25hbChhc3Q6IENvbmRpdGlvbmFsKTogQVNUIHtcbiAgICByZXR1cm4gbmV3IENvbmRpdGlvbmFsKGFzdC5jb25kaXRpb24udmlzaXQodGhpcyksIGFzdC50cnVlRXhwLnZpc2l0KHRoaXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0LmZhbHNlRXhwLnZpc2l0KHRoaXMpKTtcbiAgfVxuXG4gIHZpc2l0UGlwZShhc3Q6IEJpbmRpbmdQaXBlKTogQVNUIHtcbiAgICByZXR1cm4gbmV3IEJpbmRpbmdQaXBlKGFzdC5leHAudmlzaXQodGhpcyksIGFzdC5uYW1lLCB0aGlzLnZpc2l0QWxsKGFzdC5hcmdzKSk7XG4gIH1cblxuICB2aXNpdEtleWVkUmVhZChhc3Q6IEtleWVkUmVhZCk6IEFTVCB7XG4gICAgcmV0dXJuIG5ldyBLZXllZFJlYWQoYXN0Lm9iai52aXNpdCh0aGlzKSwgYXN0LmtleS52aXNpdCh0aGlzKSk7XG4gIH1cblxuICB2aXNpdEtleWVkV3JpdGUoYXN0OiBLZXllZFdyaXRlKTogQVNUIHtcbiAgICByZXR1cm4gbmV3IEtleWVkV3JpdGUoYXN0Lm9iai52aXNpdCh0aGlzKSwgYXN0LmtleS52aXNpdCh0aGlzKSwgYXN0LnZhbHVlLnZpc2l0KHRoaXMpKTtcbiAgfVxuXG4gIHZpc2l0QWxsKGFzdHM6IGFueVtdKTogYW55W10ge1xuICAgIHZhciByZXMgPSBMaXN0V3JhcHBlci5jcmVhdGVGaXhlZFNpemUoYXN0cy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXN0cy5sZW5ndGg7ICsraSkge1xuICAgICAgcmVzW2ldID0gYXN0c1tpXS52aXNpdCh0aGlzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHZpc2l0Q2hhaW4oYXN0OiBDaGFpbik6IEFTVCB7IHJldHVybiBuZXcgQ2hhaW4odGhpcy52aXNpdEFsbChhc3QuZXhwcmVzc2lvbnMpKTsgfVxuXG4gIHZpc2l0UXVvdGUoYXN0OiBRdW90ZSk6IEFTVCB7XG4gICAgcmV0dXJuIG5ldyBRdW90ZShhc3QucHJlZml4LCBhc3QudW5pbnRlcnByZXRlZEV4cHJlc3Npb24sIGFzdC5sb2NhdGlvbik7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var EventBinding = (function () {\r\n function EventBinding(eventName, elIndex, dirIndex, records) {\r\n this.eventName = eventName;\r\n this.elIndex = elIndex;\r\n this.dirIndex = dirIndex;\r\n this.records = records;\r\n }\r\n return EventBinding;\r\n})();\r\nexports.EventBinding = EventBinding;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfYmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vZXZlbnRfYmluZGluZy50cyJdLCJuYW1lcyI6WyJFdmVudEJpbmRpbmciLCJFdmVudEJpbmRpbmcuY29uc3RydWN0b3IiXSwibWFwcGluZ3MiOiJBQUdBO0lBQ0VBLHNCQUFtQkEsU0FBaUJBLEVBQVNBLE9BQWVBLEVBQVNBLFFBQXdCQSxFQUMxRUEsT0FBc0JBO1FBRHRCQyxjQUFTQSxHQUFUQSxTQUFTQSxDQUFRQTtRQUFTQSxZQUFPQSxHQUFQQSxPQUFPQSxDQUFRQTtRQUFTQSxhQUFRQSxHQUFSQSxRQUFRQSxDQUFnQkE7UUFDMUVBLFlBQU9BLEdBQVBBLE9BQU9BLENBQWVBO0lBQUdBLENBQUNBO0lBQy9DRCxtQkFBQ0E7QUFBREEsQ0FBQ0EsQUFIRCxJQUdDO0FBSFksb0JBQVksZUFHeEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlSW5kZXh9IGZyb20gJy4vZGlyZWN0aXZlX3JlY29yZCc7XG5pbXBvcnQge1Byb3RvUmVjb3JkfSBmcm9tICcuL3Byb3RvX3JlY29yZCc7XG5cbmV4cG9ydCBjbGFzcyBFdmVudEJpbmRpbmcge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZXZlbnROYW1lOiBzdHJpbmcsIHB1YmxpYyBlbEluZGV4OiBudW1iZXIsIHB1YmxpYyBkaXJJbmRleDogRGlyZWN0aXZlSW5kZXgsXG4gICAgICAgICAgICAgIHB1YmxpYyByZWNvcmRzOiBQcm90b1JlY29yZFtdKSB7fVxufSJdfQ==","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar proto_record_1 = require('./proto_record');\r\n/**\r\n * Removes \"duplicate\" records. It assumes that record evaluation does not have side-effects.\r\n *\r\n * Records that are not last in bindings are removed and all the indices of the records that depend\r\n * on them are updated.\r\n *\r\n * Records that are last in bindings CANNOT be removed, and instead are replaced with very cheap\r\n * SELF records.\r\n *\r\n * @internal\r\n */\r\nfunction coalesce(srcRecords) {\r\n var dstRecords = [];\r\n var excludedIdxs = [];\r\n var indexMap = new collection_1.Map();\r\n var skipDepth = 0;\r\n var skipSources = collection_1.ListWrapper.createFixedSize(srcRecords.length);\r\n for (var protoIndex = 0; protoIndex < srcRecords.length; protoIndex++) {\r\n var skipRecord = skipSources[protoIndex];\r\n if (lang_1.isPresent(skipRecord)) {\r\n skipDepth--;\r\n skipRecord.fixedArgs[0] = dstRecords.length;\r\n }\r\n var src = srcRecords[protoIndex];\r\n var dst = _cloneAndUpdateIndexes(src, dstRecords, indexMap);\r\n if (dst.isSkipRecord()) {\r\n dstRecords.push(dst);\r\n skipDepth++;\r\n skipSources[dst.fixedArgs[0]] = dst;\r\n }\r\n else {\r\n var record = _mayBeAddRecord(dst, dstRecords, excludedIdxs, skipDepth > 0);\r\n indexMap.set(src.selfIndex, record.selfIndex);\r\n }\r\n }\r\n return _optimizeSkips(dstRecords);\r\n}\r\nexports.coalesce = coalesce;\r\n/**\r\n * - Conditional skip of 1 record followed by an unconditional skip of N are replaced by a\r\n * conditional skip of N with the negated condition,\r\n * - Skips of 0 records are removed\r\n */\r\nfunction _optimizeSkips(srcRecords) {\r\n var dstRecords = [];\r\n var skipSources = collection_1.ListWrapper.createFixedSize(srcRecords.length);\r\n var indexMap = new collection_1.Map();\r\n for (var protoIndex = 0; protoIndex < srcRecords.length; protoIndex++) {\r\n var skipRecord = skipSources[protoIndex];\r\n if (lang_1.isPresent(skipRecord)) {\r\n skipRecord.fixedArgs[0] = dstRecords.length;\r\n }\r\n var src = srcRecords[protoIndex];\r\n if (src.isSkipRecord()) {\r\n if (src.isConditionalSkipRecord() && src.fixedArgs[0] === protoIndex + 2 &&\r\n protoIndex < srcRecords.length - 1 &&\r\n srcRecords[protoIndex + 1].mode === proto_record_1.RecordType.SkipRecords) {\r\n src.mode = src.mode === proto_record_1.RecordType.SkipRecordsIf ? proto_record_1.RecordType.SkipRecordsIfNot :\r\n proto_record_1.RecordType.SkipRecordsIf;\r\n src.fixedArgs[0] = srcRecords[protoIndex + 1].fixedArgs[0];\r\n protoIndex++;\r\n }\r\n if (src.fixedArgs[0] > protoIndex + 1) {\r\n var dst = _cloneAndUpdateIndexes(src, dstRecords, indexMap);\r\n dstRecords.push(dst);\r\n skipSources[dst.fixedArgs[0]] = dst;\r\n }\r\n }\r\n else {\r\n var dst = _cloneAndUpdateIndexes(src, dstRecords, indexMap);\r\n dstRecords.push(dst);\r\n indexMap.set(src.selfIndex, dst.selfIndex);\r\n }\r\n }\r\n return dstRecords;\r\n}\r\n/**\r\n * Add a new record or re-use one of the existing records.\r\n */\r\nfunction _mayBeAddRecord(record, dstRecords, excludedIdxs, excluded) {\r\n var match = _findFirstMatch(record, dstRecords, excludedIdxs);\r\n if (lang_1.isPresent(match)) {\r\n if (record.lastInBinding) {\r\n dstRecords.push(_createSelfRecord(record, match.selfIndex, dstRecords.length + 1));\r\n match.referencedBySelf = true;\r\n }\r\n else {\r\n if (record.argumentToPureFunction) {\r\n match.argumentToPureFunction = true;\r\n }\r\n }\r\n return match;\r\n }\r\n if (excluded) {\r\n excludedIdxs.push(record.selfIndex);\r\n }\r\n dstRecords.push(record);\r\n return record;\r\n}\r\n/**\r\n * Returns the first `ProtoRecord` that matches the record.\r\n */\r\nfunction _findFirstMatch(record, dstRecords, excludedIdxs) {\r\n return dstRecords.find(\r\n // TODO(vicb): optimize excludedIdxs.indexOf (sorted array)\r\n function (rr) { return excludedIdxs.indexOf(rr.selfIndex) == -1 && rr.mode !== proto_record_1.RecordType.DirectiveLifecycle &&\r\n _haveSameDirIndex(rr, record) && rr.mode === record.mode &&\r\n lang_1.looseIdentical(rr.funcOrValue, record.funcOrValue) &&\r\n rr.contextIndex === record.contextIndex && lang_1.looseIdentical(rr.name, record.name) &&\r\n collection_1.ListWrapper.equals(rr.args, record.args); });\r\n}\r\n/**\r\n * Clone the `ProtoRecord` and changes the indexes for the ones in the destination array for:\r\n * - the arguments,\r\n * - the context,\r\n * - self\r\n */\r\nfunction _cloneAndUpdateIndexes(record, dstRecords, indexMap) {\r\n var args = record.args.map(function (src) { return _srcToDstSelfIndex(indexMap, src); });\r\n var contextIndex = _srcToDstSelfIndex(indexMap, record.contextIndex);\r\n var selfIndex = dstRecords.length + 1;\r\n return new proto_record_1.ProtoRecord(record.mode, record.name, record.funcOrValue, args, record.fixedArgs, contextIndex, record.directiveIndex, selfIndex, record.bindingRecord, record.lastInBinding, record.lastInDirective, record.argumentToPureFunction, record.referencedBySelf, record.propertyBindingIndex);\r\n}\r\n/**\r\n * Returns the index in the destination array corresponding to the index in the src array.\r\n * When the element is not present in the destination array, return the source index.\r\n */\r\nfunction _srcToDstSelfIndex(indexMap, srcIdx) {\r\n var dstIdx = indexMap.get(srcIdx);\r\n return lang_1.isPresent(dstIdx) ? dstIdx : srcIdx;\r\n}\r\nfunction _createSelfRecord(r, contextIndex, selfIndex) {\r\n return new proto_record_1.ProtoRecord(proto_record_1.RecordType.Self, \"self\", null, [], r.fixedArgs, contextIndex, r.directiveIndex, selfIndex, r.bindingRecord, r.lastInBinding, r.lastInDirective, false, false, r.propertyBindingIndex);\r\n}\r\nfunction _haveSameDirIndex(a, b) {\r\n var di1 = lang_1.isBlank(a.directiveIndex) ? null : a.directiveIndex.directiveIndex;\r\n var ei1 = lang_1.isBlank(a.directiveIndex) ? null : a.directiveIndex.elementIndex;\r\n var di2 = lang_1.isBlank(b.directiveIndex) ? null : b.directiveIndex.directiveIndex;\r\n var ei2 = lang_1.isBlank(b.directiveIndex) ? null : b.directiveIndex.elementIndex;\r\n return di1 === di2 && ei1 === ei2;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29hbGVzY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NvYWxlc2NlLnRzIl0sIm5hbWVzIjpbImNvYWxlc2NlIiwiX29wdGltaXplU2tpcHMiLCJfbWF5QmVBZGRSZWNvcmQiLCJfZmluZEZpcnN0TWF0Y2giLCJfY2xvbmVBbmRVcGRhdGVJbmRleGVzIiwiX3NyY1RvRHN0U2VsZkluZGV4IiwiX2NyZWF0ZVNlbGZSZWNvcmQiLCJfaGF2ZVNhbWVEaXJJbmRleCJdLCJtYXBwaW5ncyI6IkFBQUEscUJBQWlELDBCQUEwQixDQUFDLENBQUE7QUFDNUUsMkJBQStCLGdDQUFnQyxDQUFDLENBQUE7QUFDaEUsNkJBQXNDLGdCQUFnQixDQUFDLENBQUE7QUFFdkQ7Ozs7Ozs7Ozs7R0FVRztBQUNILGtCQUF5QixVQUF5QjtJQUNoREEsSUFBSUEsVUFBVUEsR0FBR0EsRUFBRUEsQ0FBQ0E7SUFDcEJBLElBQUlBLFlBQVlBLEdBQUdBLEVBQUVBLENBQUNBO0lBQ3RCQSxJQUFJQSxRQUFRQSxHQUF3QkEsSUFBSUEsZ0JBQUdBLEVBQWtCQSxDQUFDQTtJQUM5REEsSUFBSUEsU0FBU0EsR0FBR0EsQ0FBQ0EsQ0FBQ0E7SUFDbEJBLElBQUlBLFdBQVdBLEdBQWtCQSx3QkFBV0EsQ0FBQ0EsZUFBZUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0E7SUFFaEZBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLFVBQVVBLEdBQUdBLENBQUNBLEVBQUVBLFVBQVVBLEdBQUdBLFVBQVVBLENBQUNBLE1BQU1BLEVBQUVBLFVBQVVBLEVBQUVBLEVBQUVBLENBQUNBO1FBQ3RFQSxJQUFJQSxVQUFVQSxHQUFHQSxXQUFXQSxDQUFDQSxVQUFVQSxDQUFDQSxDQUFDQTtRQUN6Q0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLFVBQVVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lB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QUFvQkEsQ0FBQ0EsQ0FBQ0E7QUFDbEZBLENBQUNBO0FBRUQsMkJBQTJCLENBQWMsRUFBRSxDQUFjO0lBQ3ZEQyxJQUFJQSxHQUFHQSxHQUFHQSxjQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxjQUFjQSxDQUFDQSxHQUFHQSxJQUFJQSxHQUFHQSxDQUFDQSxDQUFDQSxjQUFjQSxDQUFDQSxjQUFjQSxDQUFDQTtJQUM3RUEsSUFBSUEsR0FBR0EsR0FBR0EsY0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsY0FBY0EsQ0FBQ0EsR0FBR0EsSUFBSUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsY0FBY0EsQ0FBQ0EsWUFBWUEsQ0FBQ0E7SUFFM0VBLElBQUlBLEdBQUdBLEdBQUdBLGNBQU9BLENBQUNBLENBQUNBLENBQUNBLGNBQWNBLENBQUNBLEdBQUdBLElBQUlBLEdBQUdBLENBQUNBLENBQUNBLGNBQWNBLENBQUNBLGNBQWNBLENBQUNBO0lBQzdFQSxJQUFJQSxHQUFHQSxHQUFHQSxjQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxjQUFjQSxDQUFDQSxHQUFHQSxJQUFJQSxHQUFHQSxDQUFDQSxDQUFDQSxjQUFjQSxDQUFDQSxZQUFZQSxDQUFDQTtJQUUzRUEsTUFBTUEsQ0FBQ0EsR0FBR0EsS0FBS0EsR0FBR0EsSUFBSUEsR0FBR0EsS0FBS0EsR0FBR0EsQ0FBQ0E7QUFDcENBLENBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1ByZXNlbnQsIGlzQmxhbmssIGxvb3NlSWRlbnRpY2FsfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtMaXN0V3JhcHBlciwgTWFwfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtSZWNvcmRUeXBlLCBQcm90b1JlY29yZH0gZnJvbSAnLi9wcm90b19yZWNvcmQnO1xuXG4vKipcbiAqIFJlbW92ZXMgXCJkdXBsaWNhdGVcIiByZWNvcmRzLiBJdCBhc3N1bWVzIHRoYXQgcmVjb3JkIGV2YWx1YXRpb24gZG9lcyBub3QgaGF2ZSBzaWRlLWVmZmVjdHMuXG4gKlxuICogUmVjb3JkcyB0aGF0IGFyZSBub3QgbGFzdCBpbiBiaW5kaW5ncyBhcmUgcmVtb3ZlZCBhbmQgYWxsIHRoZSBpbmRpY2VzIG9mIHRoZSByZWNvcmRzIHRoYXQgZGVwZW5kXG4gKiBvbiB0aGVtIGFyZSB1cGRhdGVkLlxuICpcbiAqIFJlY29yZHMgdGhhdCBhcmUgbGFzdCBpbiBiaW5kaW5ncyBDQU5OT1QgYmUgcmVtb3ZlZCwgYW5kIGluc3RlYWQgYXJlIHJlcGxhY2VkIHdpdGggdmVyeSBjaGVhcFxuICogU0VMRiByZWNvcmRzLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29hbGVzY2Uoc3JjUmVjb3JkczogUHJvdG9SZWNvcmRbXSk6IFByb3RvUmVjb3JkW10ge1xuICBsZXQgZHN0UmVjb3JkcyA9IFtdO1xuICBsZXQgZXhjbHVkZWRJZHhzID0gW107XG4gIGxldCBpbmRleE1hcDogTWFwPG51bWJlciwgbnVtYmVyPiA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gIGxldCBza2lwRGVwdGggPSAwO1xuICBsZXQgc2tpcFNvdXJjZXM6IFByb3RvUmVjb3JkW10gPSBMaXN0V3JhcHBlci5jcmVhdGVGaXhlZFNpemUoc3JjUmVjb3Jkcy5sZW5ndGgpO1xuXG4gIGZvciAobGV0IHByb3RvSW5kZXggPSAwOyBwcm90b0luZGV4IDwgc3JjUmVjb3Jkcy5sZW5ndGg7IHByb3RvSW5kZXgrKykge1xuICAgIGxldCBza2lwUmVjb3JkID0gc2tpcFNvdXJjZXNbcHJvdG9JbmRleF07XG4gICAgaWYgKGlzUHJlc2VudChza2lwUmVjb3JkKSkge1xuICAgICAgc2tpcERlcHRoLS07XG4gICAgICBza2lwUmVjb3JkLmZpeGVkQXJnc1swXSA9IGRzdFJlY29yZHMubGVuZ3RoO1xuICAgIH1cblxuICAgIGxldCBzcmMgPSBzcmNSZWNvcmRzW3Byb3RvSW5kZXhdO1xuICAgIGxldCBkc3QgPSBfY2xvbmVBbmRVcGRhdGVJbmRleGVzKHNyYywgZHN0UmVjb3JkcywgaW5kZXhNYXApO1xuXG4gICAgaWYgKGRzdC5pc1NraXBSZWNvcmQoKSkge1xuICAgICAgZHN0UmVjb3Jkcy5wdXNoKGRzdCk7XG4gICAgICBza2lwRGVwdGgrKztcbiAgICAgIHNraXBTb3VyY2VzW2RzdC5maXhlZEFyZ3NbMF1dID0gZHN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVjb3JkID0gX21heUJlQWRkUmVjb3JkKGRzdCwgZHN0UmVjb3JkcywgZXhjbHVkZWRJZHhzLCBza2lwRGVwdGggPiAwKTtcbiAgICAgIGluZGV4TWFwLnNldChzcmMuc2VsZkluZGV4LCByZWNvcmQuc2VsZkluZGV4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gX29wdGltaXplU2tpcHMoZHN0UmVjb3Jkcyk7XG59XG5cbi8qKlxuICogLSBDb25kaXRpb25hbCBza2lwIG9mIDEgcmVjb3JkIGZvbGxvd2VkIGJ5IGFuIHVuY29uZGl0aW9uYWwgc2tpcCBvZiBOIGFyZSByZXBsYWNlZCBieSAgYVxuICogICBjb25kaXRpb25hbCBza2lwIG9mIE4gd2l0aCB0aGUgbmVnYXRlZCBjb25kaXRpb24sXG4gKiAtIFNraXBzIG9mIDAgcmVjb3JkcyBhcmUgcmVtb3ZlZFxuICovXG5mdW5jdGlvbiBfb3B0aW1pemVTa2lwcyhzcmNSZWNvcmRzOiBQcm90b1JlY29yZFtdKTogUHJvdG9SZWNvcmRbXSB7XG4gIGxldCBkc3RSZWNvcmRzID0gW107XG4gIGxldCBza2lwU291cmNlcyA9IExpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZShzcmNSZWNvcmRzLmxlbmd0aCk7XG4gIGxldCBpbmRleE1hcDogTWFwPG51bWJlciwgbnVtYmVyPiA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG5cbiAgZm9yIChsZXQgcHJvdG9JbmRleCA9IDA7IHByb3RvSW5kZXggPCBzcmNSZWNvcmRzLmxlbmd0aDsgcHJvdG9JbmRleCsrKSB7XG4gICAgbGV0IHNraXBSZWNvcmQgPSBza2lwU291cmNlc1twcm90b0luZGV4XTtcbiAgICBpZiAoaXNQcmVzZW50KHNraXBSZWNvcmQpKSB7XG4gICAgICBza2lwUmVjb3JkLmZpeGVkQXJnc1swXSA9IGRzdFJlY29yZHMubGVuZ3RoO1xuICAgIH1cblxuICAgIGxldCBzcmMgPSBzcmNSZWNvcmRzW3Byb3RvSW5kZXhdO1xuXG4gICAgaWYgKHNyYy5pc1NraXBSZWNvcmQoKSkge1xuICAgICAgaWYgKHNyYy5pc0NvbmRpdGlvbmFsU2tpcFJlY29yZCgpICYmIHNyYy5maXhlZEFyZ3NbMF0gPT09IHByb3RvSW5kZXggKyAyICYmXG4gICAgICAgICAgcHJvdG9JbmRleCA8IHNyY1JlY29yZHMubGVuZ3RoIC0gMSAmJlxuICAgICAgICAgIHNyY1JlY29yZHNbcHJvdG9JbmRleCArIDFdLm1vZGUgPT09IFJlY29yZFR5cGUuU2tpcFJlY29yZHMpIHtcbiAgICAgICAgc3JjLm1vZGUgPSBzcmMubW9kZSA9PT0gUmVjb3JkVHlwZS5Ta2lwUmVjb3Jkc0lmID8gUmVjb3JkVHlwZS5Ta2lwUmVjb3Jkc0lmTm90IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjb3JkVHlwZS5Ta2lwUmVjb3Jkc0lmO1xuICAgICAgICBzcmMuZml4ZWRBcmdzWzBdID0gc3JjUmVjb3Jkc1twcm90b0luZGV4ICsgMV0uZml4ZWRBcmdzWzBdO1xuICAgICAgICBwcm90b0luZGV4Kys7XG4gICAgICB9XG5cbiAgICAgIGlmIChzcmMuZml4ZWRBcmdzWzBdID4gcHJvdG9JbmRleCArIDEpIHtcbiAgICAgICAgbGV0IGRzdCA9IF9jbG9uZUFuZFVwZGF0ZUluZGV4ZXMoc3JjLCBkc3RSZWNvcmRzLCBpbmRleE1hcCk7XG4gICAgICAgIGRzdFJlY29yZHMucHVzaChkc3QpO1xuICAgICAgICBza2lwU291cmNlc1tkc3QuZml4ZWRBcmdzWzBdXSA9IGRzdDtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZHN0ID0gX2Nsb25lQW5kVXBkYXRlSW5kZXhlcyhzcmMsIGRzdFJlY29yZHMsIGluZGV4TWFwKTtcbiAgICAgIGRzdFJlY29yZHMucHVzaChkc3QpO1xuICAgICAgaW5kZXhNYXAuc2V0KHNyYy5zZWxmSW5kZXgsIGRzdC5zZWxmSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkc3RSZWNvcmRzO1xufVxuXG4vKipcbiAqIEFkZCBhIG5ldyByZWNvcmQgb3IgcmUtdXNlIG9uZSBvZiB0aGUgZXhpc3RpbmcgcmVjb3Jkcy5cbiAqL1xuZnVuY3Rpb24gX21heUJlQWRkUmVjb3JkKHJlY29yZDogUHJvdG9SZWNvcmQsIGRzdFJlY29yZHM6IFByb3RvUmVjb3JkW10sIGV4Y2x1ZGVkSWR4czogbnVtYmVyW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZWQ6IGJvb2xlYW4pOiBQcm90b1JlY29yZCB7XG4gIGxldCBtYXRjaCA9IF9maW5kRmlyc3RNYXRjaChyZWNvcmQsIGRzdFJlY29yZHMsIGV4Y2x1ZGVkSWR4cyk7XG5cbiAgaWYgKGlzUHJlc2VudChtYXRjaCkpIHtcbiAgICBpZiAocmVjb3JkLmxhc3RJbkJpbmRpbmcpIHtcbiAgICAgIGRzdFJlY29yZHMucHVzaChfY3JlYXRlU2VsZlJlY29yZChyZWNvcmQsIG1hdGNoLnNlbGZJbmRleCwgZHN0UmVjb3Jkcy5sZW5ndGggKyAxKSk7XG4gICAgICBtYXRjaC5yZWZlcmVuY2VkQnlTZWxmID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJlY29yZC5hcmd1bWVudFRvUHVyZUZ1bmN0aW9uKSB7XG4gICAgICAgIG1hdGNoLmFyZ3VtZW50VG9QdXJlRnVuY3Rpb24gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXRjaDtcbiAgfVxuXG4gIGlmIChleGNsdWRlZCkge1xuICAgIGV4Y2x1ZGVkSWR4cy5wdXNoKHJlY29yZC5zZWxmSW5kZXgpO1xuICB9XG5cbiAgZHN0UmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gIHJldHVybiByZWNvcmQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgYFByb3RvUmVjb3JkYCB0aGF0IG1hdGNoZXMgdGhlIHJlY29yZC5cbiAqL1xuZnVuY3Rpb24gX2ZpbmRGaXJzdE1hdGNoKHJlY29yZDogUHJvdG9SZWNvcmQsIGRzdFJlY29yZHM6IFByb3RvUmVjb3JkW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZWRJZHhzOiBudW1iZXJbXSk6IFByb3RvUmVjb3JkIHtcbiAgcmV0dXJuIGRzdFJlY29yZHMuZmluZChcbiAgICAgIC8vIFRPRE8odmljYik6IG9wdGltaXplIGV4Y2x1ZGVkSWR4cy5pbmRleE9mIChzb3J0ZWQgYXJyYXkpXG4gICAgICByciA9PiBleGNsdWRlZElkeHMuaW5kZXhPZihyci5zZWxmSW5kZXgpID09IC0xICYmIHJyLm1vZGUgIT09IFJlY29yZFR5cGUuRGlyZWN0aXZlTGlmZWN5Y2xlICYmXG4gICAgICAgICAgICBfaGF2ZVNhbWVEaXJJbmRleChyciwgcmVjb3JkKSAmJiByci5tb2RlID09PSByZWNvcmQubW9kZSAmJlxuICAgICAgICAgICAgbG9vc2VJZGVudGljYWwocnIuZnVuY09yVmFsdWUsIHJlY29yZC5mdW5jT3JWYWx1ZSkgJiZcbiAgICAgICAgICAgIHJyLmNvbnRleHRJbmRleCA9PT0gcmVjb3JkLmNvbnRleHRJbmRleCAmJiBsb29zZUlkZW50aWNhbChyci5uYW1lLCByZWNvcmQubmFtZSkgJiZcbiAgICAgICAgICAgIExpc3RXcmFwcGVyLmVxdWFscyhyci5hcmdzLCByZWNvcmQuYXJncykpO1xufVxuXG4vKipcbiAqIENsb25lIHRoZSBgUHJvdG9SZWNvcmRgIGFuZCBjaGFuZ2VzIHRoZSBpbmRleGVzIGZvciB0aGUgb25lcyBpbiB0aGUgZGVzdGluYXRpb24gYXJyYXkgZm9yOlxuICogLSB0aGUgYXJndW1lbnRzLFxuICogLSB0aGUgY29udGV4dCxcbiAqIC0gc2VsZlxuICovXG5mdW5jdGlvbiBfY2xvbmVBbmRVcGRhdGVJbmRleGVzKHJlY29yZDogUHJvdG9SZWNvcmQsIGRzdFJlY29yZHM6IFByb3RvUmVjb3JkW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4TWFwOiBNYXA8bnVtYmVyLCBudW1iZXI+KTogUHJvdG9SZWNvcmQge1xuICBsZXQgYXJncyA9IHJlY29yZC5hcmdzLm1hcChzcmMgPT4gX3NyY1RvRHN0U2VsZkluZGV4KGluZGV4TWFwLCBzcmMpKTtcbiAgbGV0IGNvbnRleHRJbmRleCA9IF9zcmNUb0RzdFNlbGZJbmRleChpbmRleE1hcCwgcmVjb3JkLmNvbnRleHRJbmRleCk7XG4gIGxldCBzZWxmSW5kZXggPSBkc3RSZWNvcmRzLmxlbmd0aCArIDE7XG5cbiAgcmV0dXJuIG5ldyBQcm90b1JlY29yZChyZWNvcmQubW9kZSwgcmVjb3JkLm5hbWUsIHJlY29yZC5mdW5jT3JWYWx1ZSwgYXJncywgcmVjb3JkLmZpeGVkQXJncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0SW5kZXgsIHJlY29yZC5kaXJlY3RpdmVJbmRleCwgc2VsZkluZGV4LCByZWNvcmQuYmluZGluZ1JlY29yZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQubGFzdEluQmluZGluZywgcmVjb3JkLmxhc3RJbkRpcmVjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuYXJndW1lbnRUb1B1cmVGdW5jdGlvbiwgcmVjb3JkLnJlZmVyZW5jZWRCeVNlbGYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnByb3BlcnR5QmluZGluZ0luZGV4KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleCBpbiB0aGUgZGVzdGluYXRpb24gYXJyYXkgY29ycmVzcG9uZGluZyB0byB0aGUgaW5kZXggaW4gdGhlIHNyYyBhcnJheS5cbiAqIFdoZW4gdGhlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgaW4gdGhlIGRlc3RpbmF0aW9uIGFycmF5LCByZXR1cm4gdGhlIHNvdXJjZSBpbmRleC5cbiAqL1xuZnVuY3Rpb24gX3NyY1RvRHN0U2VsZkluZGV4KGluZGV4TWFwOiBNYXA8bnVtYmVyLCBudW1iZXI+LCBzcmNJZHg6IG51bWJlcik6IG51bWJlciB7XG4gIHZhciBkc3RJZHggPSBpbmRleE1hcC5nZXQoc3JjSWR4KTtcbiAgcmV0dXJuIGlzUHJlc2VudChkc3RJZHgpID8gZHN0SWR4IDogc3JjSWR4O1xufVxuXG5mdW5jdGlvbiBfY3JlYXRlU2VsZlJlY29yZChyOiBQcm90b1JlY29yZCwgY29udGV4dEluZGV4OiBudW1iZXIsIHNlbGZJbmRleDogbnVtYmVyKTogUHJvdG9SZWNvcmQge1xuICByZXR1cm4gbmV3IFByb3RvUmVjb3JkKFJlY29yZFR5cGUuU2VsZiwgXCJzZWxmXCIsIG51bGwsIFtdLCByLmZpeGVkQXJncywgY29udGV4dEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgIHIuZGlyZWN0aXZlSW5kZXgsIHNlbGZJbmRleCwgci5iaW5kaW5nUmVjb3JkLCByLmxhc3RJbkJpbmRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgci5sYXN0SW5EaXJlY3RpdmUsIGZhbHNlLCBmYWxzZSwgci5wcm9wZXJ0eUJpbmRpbmdJbmRleCk7XG59XG5cbmZ1bmN0aW9uIF9oYXZlU2FtZURpckluZGV4KGE6IFByb3RvUmVjb3JkLCBiOiBQcm90b1JlY29yZCk6IGJvb2xlYW4ge1xuICB2YXIgZGkxID0gaXNCbGFuayhhLmRpcmVjdGl2ZUluZGV4KSA/IG51bGwgOiBhLmRpcmVjdGl2ZUluZGV4LmRpcmVjdGl2ZUluZGV4O1xuICB2YXIgZWkxID0gaXNCbGFuayhhLmRpcmVjdGl2ZUluZGV4KSA/IG51bGwgOiBhLmRpcmVjdGl2ZUluZGV4LmVsZW1lbnRJbmRleDtcblxuICB2YXIgZGkyID0gaXNCbGFuayhiLmRpcmVjdGl2ZUluZGV4KSA/IG51bGwgOiBiLmRpcmVjdGl2ZUluZGV4LmRpcmVjdGl2ZUluZGV4O1xuICB2YXIgZWkyID0gaXNCbGFuayhiLmRpcmVjdGl2ZUluZGV4KSA/IG51bGwgOiBiLmRpcmVjdGl2ZUluZGV4LmVsZW1lbnRJbmRleDtcblxuICByZXR1cm4gZGkxID09PSBkaTIgJiYgZWkxID09PSBlaTI7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar ast_1 = require('./parser/ast');\r\nvar change_detection_util_1 = require('./change_detection_util');\r\nvar dynamic_change_detector_1 = require('./dynamic_change_detector');\r\nvar directive_record_1 = require('./directive_record');\r\nvar event_binding_1 = require('./event_binding');\r\nvar coalesce_1 = require('./coalesce');\r\nvar proto_record_1 = require('./proto_record');\r\nvar DynamicProtoChangeDetector = (function () {\r\n function DynamicProtoChangeDetector(_definition) {\r\n this._definition = _definition;\r\n this._propertyBindingRecords = createPropertyRecords(_definition);\r\n this._eventBindingRecords = createEventRecords(_definition);\r\n this._propertyBindingTargets = this._definition.bindingRecords.map(function (b) { return b.target; });\r\n this._directiveIndices = this._definition.directiveRecords.map(function (d) { return d.directiveIndex; });\r\n }\r\n DynamicProtoChangeDetector.prototype.instantiate = function () {\r\n return new dynamic_change_detector_1.DynamicChangeDetector(this._definition.id, this._propertyBindingRecords.length, this._propertyBindingTargets, this._directiveIndices, this._definition.strategy, this._propertyBindingRecords, this._eventBindingRecords, this._definition.directiveRecords, this._definition.genConfig);\r\n };\r\n return DynamicProtoChangeDetector;\r\n})();\r\nexports.DynamicProtoChangeDetector = DynamicProtoChangeDetector;\r\nfunction createPropertyRecords(definition) {\r\n var recordBuilder = new ProtoRecordBuilder();\r\n collection_1.ListWrapper.forEachWithIndex(definition.bindingRecords, function (b, index) { return recordBuilder.add(b, definition.variableNames, index); });\r\n return coalesce_1.coalesce(recordBuilder.records);\r\n}\r\nexports.createPropertyRecords = createPropertyRecords;\r\nfunction createEventRecords(definition) {\r\n // TODO: vsavkin: remove $event when the compiler handles render-side variables properly\r\n var varNames = collection_1.ListWrapper.concat(['$event'], definition.variableNames);\r\n return definition.eventRecords.map(function (er) {\r\n var records = _ConvertAstIntoProtoRecords.create(er, varNames);\r\n var dirIndex = er.implicitReceiver instanceof directive_record_1.DirectiveIndex ? er.implicitReceiver : null;\r\n return new event_binding_1.EventBinding(er.target.name, er.target.elementIndex, dirIndex, records);\r\n });\r\n}\r\nexports.createEventRecords = createEventRecords;\r\nvar ProtoRecordBuilder = (function () {\r\n function ProtoRecordBuilder() {\r\n this.records = [];\r\n }\r\n ProtoRecordBuilder.prototype.add = function (b, variableNames, bindingIndex) {\r\n var oldLast = collection_1.ListWrapper.last(this.records);\r\n if (lang_1.isPresent(oldLast) && oldLast.bindingRecord.directiveRecord == b.directiveRecord) {\r\n oldLast.lastInDirective = false;\r\n }\r\n var numberOfRecordsBefore = this.records.length;\r\n this._appendRecords(b, variableNames, bindingIndex);\r\n var newLast = collection_1.ListWrapper.last(this.records);\r\n if (lang_1.isPresent(newLast) && newLast !== oldLast) {\r\n newLast.lastInBinding = true;\r\n newLast.lastInDirective = true;\r\n this._setArgumentToPureFunction(numberOfRecordsBefore);\r\n }\r\n };\r\n /** @internal */\r\n ProtoRecordBuilder.prototype._setArgumentToPureFunction = function (startIndex) {\r\n var _this = this;\r\n for (var i = startIndex; i < this.records.length; ++i) {\r\n var rec = this.records[i];\r\n if (rec.isPureFunction()) {\r\n rec.args.forEach(function (recordIndex) { return _this.records[recordIndex - 1].argumentToPureFunction =\r\n true; });\r\n }\r\n if (rec.mode === proto_record_1.RecordType.Pipe) {\r\n rec.args.forEach(function (recordIndex) { return _this.records[recordIndex - 1].argumentToPureFunction =\r\n true; });\r\n this.records[rec.contextIndex - 1].argumentToPureFunction = true;\r\n }\r\n }\r\n };\r\n /** @internal */\r\n ProtoRecordBuilder.prototype._appendRecords = function (b, variableNames, bindingIndex) {\r\n if (b.isDirectiveLifecycle()) {\r\n this.records.push(new proto_record_1.ProtoRecord(proto_record_1.RecordType.DirectiveLifecycle, b.lifecycleEvent, null, [], [], -1, null, this.records.length + 1, b, false, false, false, false, null));\r\n }\r\n else {\r\n _ConvertAstIntoProtoRecords.append(this.records, b, variableNames, bindingIndex);\r\n }\r\n };\r\n return ProtoRecordBuilder;\r\n})();\r\nexports.ProtoRecordBuilder = ProtoRecordBuilder;\r\nvar _ConvertAstIntoProtoRecords = (function () {\r\n function _ConvertAstIntoProtoRecords(_records, _bindingRecord, _variableNames, _bindingIndex) {\r\n this._records = _records;\r\n this._bindingRecord = _bindingRecord;\r\n this._variableNames = _variableNames;\r\n this._bindingIndex = _bindingIndex;\r\n }\r\n _ConvertAstIntoProtoRecords.append = function (records, b, variableNames, bindingIndex) {\r\n var c = new _ConvertAstIntoProtoRecords(records, b, variableNames, bindingIndex);\r\n b.ast.visit(c);\r\n };\r\n _ConvertAstIntoProtoRecords.create = function (b, variableNames) {\r\n var rec = [];\r\n _ConvertAstIntoProtoRecords.append(rec, b, variableNames, null);\r\n rec[rec.length - 1].lastInBinding = true;\r\n return rec;\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitImplicitReceiver = function (ast) { return this._bindingRecord.implicitReceiver; };\r\n _ConvertAstIntoProtoRecords.prototype.visitInterpolation = function (ast) {\r\n var args = this._visitAll(ast.expressions);\r\n return this._addRecord(proto_record_1.RecordType.Interpolate, \"interpolate\", _interpolationFn(ast.strings), args, ast.strings, 0);\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitLiteralPrimitive = function (ast) {\r\n return this._addRecord(proto_record_1.RecordType.Const, \"literal\", ast.value, [], null, 0);\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitPropertyRead = function (ast) {\r\n var receiver = ast.receiver.visit(this);\r\n if (lang_1.isPresent(this._variableNames) && collection_1.ListWrapper.contains(this._variableNames, ast.name) &&\r\n ast.receiver instanceof ast_1.ImplicitReceiver) {\r\n return this._addRecord(proto_record_1.RecordType.Local, ast.name, ast.name, [], null, receiver);\r\n }\r\n else {\r\n return this._addRecord(proto_record_1.RecordType.PropertyRead, ast.name, ast.getter, [], null, receiver);\r\n }\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitPropertyWrite = function (ast) {\r\n if (lang_1.isPresent(this._variableNames) && collection_1.ListWrapper.contains(this._variableNames, ast.name) &&\r\n ast.receiver instanceof ast_1.ImplicitReceiver) {\r\n throw new exceptions_1.BaseException(\"Cannot reassign a variable binding \" + ast.name);\r\n }\r\n else {\r\n var receiver = ast.receiver.visit(this);\r\n var value = ast.value.visit(this);\r\n return this._addRecord(proto_record_1.RecordType.PropertyWrite, ast.name, ast.setter, [value], null, receiver);\r\n }\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitKeyedWrite = function (ast) {\r\n var obj = ast.obj.visit(this);\r\n var key = ast.key.visit(this);\r\n var value = ast.value.visit(this);\r\n return this._addRecord(proto_record_1.RecordType.KeyedWrite, null, null, [key, value], null, obj);\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitSafePropertyRead = function (ast) {\r\n var receiver = ast.receiver.visit(this);\r\n return this._addRecord(proto_record_1.RecordType.SafeProperty, ast.name, ast.getter, [], null, receiver);\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitMethodCall = function (ast) {\r\n var receiver = ast.receiver.visit(this);\r\n var args = this._visitAll(ast.args);\r\n if (lang_1.isPresent(this._variableNames) && collection_1.ListWrapper.contains(this._variableNames, ast.name)) {\r\n var target = this._addRecord(proto_record_1.RecordType.Local, ast.name, ast.name, [], null, receiver);\r\n return this._addRecord(proto_record_1.RecordType.InvokeClosure, \"closure\", null, args, null, target);\r\n }\r\n else {\r\n return this._addRecord(proto_record_1.RecordType.InvokeMethod, ast.name, ast.fn, args, null, receiver);\r\n }\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitSafeMethodCall = function (ast) {\r\n var receiver = ast.receiver.visit(this);\r\n var args = this._visitAll(ast.args);\r\n return this._addRecord(proto_record_1.RecordType.SafeMethodInvoke, ast.name, ast.fn, args, null, receiver);\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitFunctionCall = function (ast) {\r\n var target = ast.target.visit(this);\r\n var args = this._visitAll(ast.args);\r\n return this._addRecord(proto_record_1.RecordType.InvokeClosure, \"closure\", null, args, null, target);\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitLiteralArray = function (ast) {\r\n var primitiveName = \"arrayFn\" + ast.expressions.length;\r\n return this._addRecord(proto_record_1.RecordType.CollectionLiteral, primitiveName, _arrayFn(ast.expressions.length), this._visitAll(ast.expressions), null, 0);\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitLiteralMap = function (ast) {\r\n return this._addRecord(proto_record_1.RecordType.CollectionLiteral, _mapPrimitiveName(ast.keys), change_detection_util_1.ChangeDetectionUtil.mapFn(ast.keys), this._visitAll(ast.values), null, 0);\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitBinary = function (ast) {\r\n var left = ast.left.visit(this);\r\n switch (ast.operation) {\r\n case '&&':\r\n var branchEnd = [null];\r\n this._addRecord(proto_record_1.RecordType.SkipRecordsIfNot, \"SkipRecordsIfNot\", null, [], branchEnd, left);\r\n var right = ast.right.visit(this);\r\n branchEnd[0] = right;\r\n return this._addRecord(proto_record_1.RecordType.PrimitiveOp, \"cond\", change_detection_util_1.ChangeDetectionUtil.cond, [left, right, left], null, 0);\r\n case '||':\r\n var branchEnd = [null];\r\n this._addRecord(proto_record_1.RecordType.SkipRecordsIf, \"SkipRecordsIf\", null, [], branchEnd, left);\r\n var right = ast.right.visit(this);\r\n branchEnd[0] = right;\r\n return this._addRecord(proto_record_1.RecordType.PrimitiveOp, \"cond\", change_detection_util_1.ChangeDetectionUtil.cond, [left, left, right], null, 0);\r\n default:\r\n var right = ast.right.visit(this);\r\n return this._addRecord(proto_record_1.RecordType.PrimitiveOp, _operationToPrimitiveName(ast.operation), _operationToFunction(ast.operation), [left, right], null, 0);\r\n }\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitPrefixNot = function (ast) {\r\n var exp = ast.expression.visit(this);\r\n return this._addRecord(proto_record_1.RecordType.PrimitiveOp, \"operation_negate\", change_detection_util_1.ChangeDetectionUtil.operation_negate, [exp], null, 0);\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitConditional = function (ast) {\r\n var condition = ast.condition.visit(this);\r\n var startOfFalseBranch = [null];\r\n var endOfFalseBranch = [null];\r\n this._addRecord(proto_record_1.RecordType.SkipRecordsIfNot, \"SkipRecordsIfNot\", null, [], startOfFalseBranch, condition);\r\n var whenTrue = ast.trueExp.visit(this);\r\n var skip = this._addRecord(proto_record_1.RecordType.SkipRecords, \"SkipRecords\", null, [], endOfFalseBranch, 0);\r\n var whenFalse = ast.falseExp.visit(this);\r\n startOfFalseBranch[0] = skip;\r\n endOfFalseBranch[0] = whenFalse;\r\n return this._addRecord(proto_record_1.RecordType.PrimitiveOp, \"cond\", change_detection_util_1.ChangeDetectionUtil.cond, [condition, whenTrue, whenFalse], null, 0);\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitPipe = function (ast) {\r\n var value = ast.exp.visit(this);\r\n var args = this._visitAll(ast.args);\r\n return this._addRecord(proto_record_1.RecordType.Pipe, ast.name, ast.name, args, null, value);\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitKeyedRead = function (ast) {\r\n var obj = ast.obj.visit(this);\r\n var key = ast.key.visit(this);\r\n return this._addRecord(proto_record_1.RecordType.KeyedRead, \"keyedAccess\", change_detection_util_1.ChangeDetectionUtil.keyedAccess, [key], null, obj);\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitChain = function (ast) {\r\n var _this = this;\r\n var args = ast.expressions.map(function (e) { return e.visit(_this); });\r\n return this._addRecord(proto_record_1.RecordType.Chain, \"chain\", null, args, null, 0);\r\n };\r\n _ConvertAstIntoProtoRecords.prototype.visitQuote = function (ast) {\r\n throw new exceptions_1.BaseException((\"Caught uninterpreted expression at \" + ast.location + \": \" + ast.uninterpretedExpression + \". \") +\r\n (\"Expression prefix \" + ast.prefix + \" did not match a template transformer to interpret the expression.\"));\r\n };\r\n _ConvertAstIntoProtoRecords.prototype._visitAll = function (asts) {\r\n var res = collection_1.ListWrapper.createFixedSize(asts.length);\r\n for (var i = 0; i < asts.length; ++i) {\r\n res[i] = asts[i].visit(this);\r\n }\r\n return res;\r\n };\r\n /**\r\n * Adds a `ProtoRecord` and returns its selfIndex.\r\n */\r\n _ConvertAstIntoProtoRecords.prototype._addRecord = function (type, name, funcOrValue, args, fixedArgs, context) {\r\n var selfIndex = this._records.length + 1;\r\n if (context instanceof directive_record_1.DirectiveIndex) {\r\n this._records.push(new proto_record_1.ProtoRecord(type, name, funcOrValue, args, fixedArgs, -1, context, selfIndex, this._bindingRecord, false, false, false, false, this._bindingIndex));\r\n }\r\n else {\r\n this._records.push(new proto_record_1.ProtoRecord(type, name, funcOrValue, args, fixedArgs, context, null, selfIndex, this._bindingRecord, false, false, false, false, this._bindingIndex));\r\n }\r\n return selfIndex;\r\n };\r\n return _ConvertAstIntoProtoRecords;\r\n})();\r\nfunction _arrayFn(length) {\r\n switch (length) {\r\n case 0:\r\n return change_detection_util_1.ChangeDetectionUtil.arrayFn0;\r\n case 1:\r\n return change_detection_util_1.ChangeDetectionUtil.arrayFn1;\r\n case 2:\r\n return change_detection_util_1.ChangeDetectionUtil.arrayFn2;\r\n case 3:\r\n return change_detection_util_1.ChangeDetectionUtil.arrayFn3;\r\n case 4:\r\n return change_detection_util_1.ChangeDetectionUtil.arrayFn4;\r\n case 5:\r\n return change_detection_util_1.ChangeDetectionUtil.arrayFn5;\r\n case 6:\r\n return change_detection_util_1.ChangeDetectionUtil.arrayFn6;\r\n case 7:\r\n return change_detection_util_1.ChangeDetectionUtil.arrayFn7;\r\n case 8:\r\n return change_detection_util_1.ChangeDetectionUtil.arrayFn8;\r\n case 9:\r\n return change_detection_util_1.ChangeDetectionUtil.arrayFn9;\r\n default:\r\n throw new exceptions_1.BaseException(\"Does not support literal maps with more than 9 elements\");\r\n }\r\n}\r\nfunction _mapPrimitiveName(keys) {\r\n var stringifiedKeys = keys.map(function (k) { return lang_1.isString(k) ? \"\\\"\" + k + \"\\\"\" : \"\" + k; }).join(', ');\r\n return \"mapFn([\" + stringifiedKeys + \"])\";\r\n}\r\nfunction _operationToPrimitiveName(operation) {\r\n switch (operation) {\r\n case '+':\r\n return \"operation_add\";\r\n case '-':\r\n return \"operation_subtract\";\r\n case '*':\r\n return \"operation_multiply\";\r\n case '/':\r\n return \"operation_divide\";\r\n case '%':\r\n return \"operation_remainder\";\r\n case '==':\r\n return \"operation_equals\";\r\n case '!=':\r\n return \"operation_not_equals\";\r\n case '===':\r\n return \"operation_identical\";\r\n case '!==':\r\n return \"operation_not_identical\";\r\n case '<':\r\n return \"operation_less_then\";\r\n case '>':\r\n return \"operation_greater_then\";\r\n case '<=':\r\n return \"operation_less_or_equals_then\";\r\n case '>=':\r\n return \"operation_greater_or_equals_then\";\r\n default:\r\n throw new exceptions_1.BaseException(\"Unsupported operation \" + operation);\r\n }\r\n}\r\nfunction _operationToFunction(operation) {\r\n switch (operation) {\r\n case '+':\r\n return change_detection_util_1.ChangeDetectionUtil.operation_add;\r\n case '-':\r\n return change_detection_util_1.ChangeDetectionUtil.operation_subtract;\r\n case '*':\r\n return change_detection_util_1.ChangeDetectionUtil.operation_multiply;\r\n case '/':\r\n return change_detection_util_1.ChangeDetectionUtil.operation_divide;\r\n case '%':\r\n return change_detection_util_1.ChangeDetectionUtil.operation_remainder;\r\n case '==':\r\n return change_detection_util_1.ChangeDetectionUtil.operation_equals;\r\n case '!=':\r\n return change_detection_util_1.ChangeDetectionUtil.operation_not_equals;\r\n case '===':\r\n return change_detection_util_1.ChangeDetectionUtil.operation_identical;\r\n case '!==':\r\n return change_detection_util_1.ChangeDetectionUtil.operation_not_identical;\r\n case '<':\r\n return change_detection_util_1.ChangeDetectionUtil.operation_less_then;\r\n case '>':\r\n return change_detection_util_1.ChangeDetectionUtil.operation_greater_then;\r\n case '<=':\r\n return change_detection_util_1.ChangeDetectionUtil.operation_less_or_equals_then;\r\n case '>=':\r\n return change_detection_util_1.ChangeDetectionUtil.operation_greater_or_equals_then;\r\n default:\r\n throw new exceptions_1.BaseException(\"Unsupported operation \" + operation);\r\n }\r\n}\r\nfunction s(v) {\r\n return lang_1.isPresent(v) ? \"\" + v : '';\r\n}\r\nfunction _interpolationFn(strings) {\r\n var length = strings.length;\r\n var c0 = length > 0 ? strings[0] : null;\r\n var c1 = length > 1 ? strings[1] : null;\r\n var c2 = length > 2 ? strings[2] : null;\r\n var c3 = length > 3 ? strings[3] : null;\r\n var c4 = length > 4 ? strings[4] : null;\r\n var c5 = length > 5 ? strings[5] : null;\r\n var c6 = length > 6 ? strings[6] : null;\r\n var c7 = length > 7 ? strings[7] : null;\r\n var c8 = length > 8 ? strings[8] : null;\r\n var c9 = length > 9 ? strings[9] : null;\r\n switch (length - 1) {\r\n case 1:\r\n return function (a1) { return c0 + s(a1) + c1; };\r\n case 2:\r\n return function (a1, a2) { return c0 + s(a1) + c1 + s(a2) + c2; };\r\n case 3:\r\n return function (a1, a2, a3) { return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3; };\r\n case 4:\r\n return function (a1, a2, a3, a4) { return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4; };\r\n case 5:\r\n return function (a1, a2, a3, a4, a5) {\r\n return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4 + s(a5) + c5;\r\n };\r\n case 6:\r\n return function (a1, a2, a3, a4, a5, a6) {\r\n return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4 + s(a5) + c5 + s(a6) + c6;\r\n };\r\n case 7:\r\n return function (a1, a2, a3, a4, a5, a6, a7) { return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) +\r\n c4 + s(a5) + c5 + s(a6) + c6 + s(a7) + c7; };\r\n case 8:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8) { return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) +\r\n c4 + s(a5) + c5 + s(a6) + c6 + s(a7) + c7 + s(a8) +\r\n c8; };\r\n case 9:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9) { return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 +\r\n s(a4) + c4 + s(a5) + c5 + s(a6) + c6 + s(a7) +\r\n c7 + s(a8) + c8 + s(a9) + c9; };\r\n default:\r\n throw new exceptions_1.BaseException(\"Does not support more than 9 expressions\");\r\n }\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9fY2hhbmdlX2RldGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9wcm90b19jaGFuZ2VfZGV0ZWN0b3IudHMiXSwibmFtZXMiOlsiRHluYW1pY1Byb3RvQ2hhbmdlRGV0ZWN0b3IiLCJEeW5hbWljUHJvdG9DaGFuZ2VEZXRlY3Rvci5jb25zdHJ1Y3RvciIsIkR5bmFtaWNQcm90b0NoYW5nZURldGVjdG9yLmluc3RhbnRpYXRlIiwiY3JlYXRlUHJvcGVydHlSZWNvcmRzIiwiY3JlYXRlRXZlbnRSZWNvcmRzIiwiUHJvdG9SZWNvcmRCdWlsZGVyIiwiUHJvdG9SZWNvcmRCdWlsZGVyLmNvbnN0cnVjdG9yIiwiUHJvdG9SZWNvcmRCdWlsZGVyLmFkZCIsIlByb3RvUmVjb3JkQnVpbGRlci5fc2V0QXJndW1lbnRUb1B1cmVGdW5jdGlvbiIsIlByb3RvUmVjb3JkQnVpbGRlci5fYXBwZW5kUmVjb3JkcyIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3JkcyIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy5jb25zdHJ1Y3RvciIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy5hcHBlbmQiLCJfQ29udmVydEFzdEludG9Qcm90b1JlY29yZHMuY3JlYXRlIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0SW1wbGljaXRSZWNlaXZlciIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdEludGVycG9sYXRpb24iLCJfQ29udmVydEFzdEludG9Qcm90b1JlY29yZHMudmlzaXRMaXRlcmFsUHJpbWl0aXZlIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0UHJvcGVydHlSZWFkIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0UHJvcGVydHlXcml0ZSIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdEtleWVkV3JpdGUiLCJfQ29udmVydEFzdEludG9Qcm90b1JlY29yZHMudmlzaXRTYWZlUHJvcGVydHlSZWFkIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0TWV0aG9kQ2FsbCIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdFNhZmVNZXRob2RDYWxsIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0RnVuY3Rpb25DYWxsIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0TGl0ZXJhbEFycmF5IiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0TGl0ZXJhbE1hcCIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdEJpbmFyeSIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdFByZWZpeE5vdCIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdENvbmRpdGlvbmFsIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0UGlwZSIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdEtleWVkUmVhZCIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdENoYWluIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0UXVvdGUiLCJfQ29udmVydEFzdEludG9Qcm90b1JlY29yZHMuX3Zpc2l0QWxsIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLl9hZGRSZWNvcmQiLCJfYXJyYXlGbiIsIl9tYXBQcmltaXRpdmVOYW1lIiwiX29wZXJhdGlvblRvUHJpbWl0aXZlTmFtZSIsIl9vcGVyYXRpb25Ub0Z1bmN0aW9uIiwicyIsIl9pbnRlcnBvbGF0aW9uRm4iXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFpRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQzVFLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELDJCQUF3RCxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRXpGLG9CQXVCTyxj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LENBQUNBLFNBQVNBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ3BDQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsSUFBSUEsd0JBQVdBLENBQUNBLFFBQVFBLENBQUNBLElBQUlBLENBQUNBLGNBQWNBLEVBQUVBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzFGQSxJQUFJQSxNQUFNQSxHQUFHQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSx5QkFBVUEsQ0FBQ0EsS0FBS0EsRUFBRUEsR0FBR0EsQ0FBQ0EsSUFBSUEsRUFBRUEsR0FBR0EsQ0FBQ0EsSUFBSUEsRUFBRUEsRUFBRUEsRUFBRUEsSUFBSUEsRUFBRUEsUUFBUUEsQ0FBQ0EsQ0FBQ0E7WUFDdkZBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFVBQVVBLENBQUNBLHlCQUFVQSxDQUFDQSxhQUFhQSxFQUFFQSxTQUFTQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxNQUFNQSxDQUFDQSxDQUFDQTtRQUN4RkEsQ0FBQ0E7UUFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFDTkEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EseUJBQVVBLENBQUNBLFlBQVlBLEVBQUVBLEdBQUdBLENBQUNBLElBQUlBLEVBQUVBLEdBQUdBLENBQUNBLEVBQUVBLEVBQUVBLElBQUlBLEVBQUVBLElBQUlBLEVBQUVBLFFBQVFBLENBQUNBLENBQUNBO1FBQzFGQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUVEWCx5REFBbUJBLEdBQW5CQSxVQUFvQkEsR0FBbUJBO1FBQ3JDWSxJQUFJQSxRQUFRQSxHQUFHQSxHQUFHQSxDQUFDQSxRQUFRQSxDQUFDQSxLQUFLQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUN4Q0EsSUFBSUEsSUFBSUEsR0FBR0EsSUFBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsR0FBR0EsQ0FBQ0Es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SUEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0E7SUFDeENBLElBQUlBLEVBQUVBLEdBQUdBLE1BQU1BLEdBQUdBLENBQUNBLEdBQUdBLE9BQU9BLENBQUNBLENBQUNBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBO0lBQ3hDQSxJQUFJQSxFQUFFQSxHQUFHQSxNQUFNQSxHQUFHQSxDQUFDQSxHQUFHQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtJQUN4Q0EsSUFBSUEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0E7SUFDeENBLElBQUlBLEVBQUVBLEdBQUdBLE1BQU1BLEdBQUdBLENBQUNBLEdBQUdBLE9BQU9BLENBQUNBLENBQUNBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBO0lBQ3hDQSxJQUFJQSxFQUFFQSxHQUFHQSxNQUFNQSxHQUFHQSxDQUFDQSxHQUFHQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtJQUN4Q0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDbkJBLEtBQUtBLENBQUNBO1lBQ0pBLE1BQU1BLENBQUNBLFVBQUNBLEVBQUVBLElBQUtBLE9BQUFBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLEVBQUVBLEVBQWZBLENBQWVBLENBQUNBO1FBQ2pDQSxLQUFLQSxDQUFDQTtZQUNKQSxNQUFNQSxDQUFDQSxVQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxJQUFLQSxPQUFBQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxFQUE1QkEsQ0FBNEJBLENBQUNBO1FBQ2xEQSxLQUFLQSxDQUFDQTtZQUNKQSxNQUFNQSxDQUFDQSxVQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxJQUFLQSxPQUFBQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxFQUF6Q0EsQ0FBeUNBLENBQUNBO1FBQ25FQSxLQUFLQSxDQUFDQTtZQUNKQSxNQUFNQSxDQUFDQSxVQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxJQUFLQSxPQUFBQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxFQUF0REEsQ0FBc0RBLENBQUNBO1FBQ3BGQSxLQUFLQSxDQUFDQTtZQUNKQSxNQUFNQSxDQUFDQSxVQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQTt1QkFDZkEsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUE7WUFBbkVBLENBQW1FQSxDQUFDQTtRQUNqRkEsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsVUFBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUE7dUJBQ25CQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQTtZQUFoRkEsQ0FBZ0ZBLENBQUNBO1FBQzlGQSxLQUFLQSxDQUFDQTtZQUNKQSxNQUFNQSxDQUFDQSxVQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxJQUFLQSxPQUFBQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQTtnQkFDakRBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLEVBQUVBLEVBRHpDQSxDQUN5Q0EsQ0FBQ0E7UUFDbkZBLEtBQUtBLENBQUNBO1lBQ0pBLE1BQU1BLENBQUNBLFVBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLElBQUtBLE9BQUFBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBO2dCQUNqREEsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0E7Z0JBQ2pEQSxFQUFFQSxFQUZGQSxDQUVFQSxDQUFDQTtRQUNoREEsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsVUFBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsSUFBS0EsT0FBQUEsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUE7Z0JBQ3pDQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQTtnQkFDNUNBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLEVBQUVBLEVBRjVCQSxDQUU0QkEsQ0FBQ0E7UUFDOUVBO1lBQ0VBLE1BQU1BLElBQUlBLDBCQUFhQSxDQUFDQSwwQ0FBMENBLENBQUNBLENBQUNBO0lBQ3hFQSxDQUFDQTtBQUNIQSxDQUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZSwgaXNCbGFuaywgaXNQcmVzZW50LCBpc1N0cmluZ30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7TGlzdFdyYXBwZXIsIE1hcFdyYXBwZXIsIFN0cmluZ01hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5cbmltcG9ydCB7XG4gIFByb3BlcnR5UmVhZCxcbiAgUHJvcGVydHlXcml0ZSxcbiAgS2V5ZWRXcml0ZSxcbiAgQVNULFxuICBBU1RXaXRoU291cmNlLFxuICBBc3RWaXNpdG9yLFxuICBCaW5hcnksXG4gIENoYWluLFxuICBDb25kaXRpb25hbCxcbiAgQmluZGluZ1BpcGUsXG4gIEZ1bmN0aW9uQ2FsbCxcbiAgSW1wbGljaXRSZWNlaXZlcixcbiAgSW50ZXJwb2xhdGlvbixcbiAgS2V5ZWRSZWFkLFxuICBMaXRlcmFsQXJyYXksXG4gIExpdGVyYWxNYXAsXG4gIExpdGVyYWxQcmltaXRpdmUsXG4gIE1ldGhvZENhbGwsXG4gIFByZWZpeE5vdCxcbiAgUXVvdGUsXG4gIFNhZmVQcm9wZXJ0eVJlYWQsXG4gIFNhZmVNZXRob2RDYWxsXG59IGZyb20gJy4vcGFyc2VyL2FzdCc7XG5cbmltcG9ydCB7Q2hhbmdlRGV0ZWN0b3IsIFByb3RvQ2hhbmdlRGV0ZWN0b3IsIENoYW5nZURldGVjdG9yRGVmaW5pdGlvbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uVXRpbH0gZnJvbSAnLi9jaGFuZ2VfZGV0ZWN0aW9uX3V0aWwnO1xuaW1wb3J0IHtEeW5hbWljQ2hhbmdlRGV0ZWN0b3J9IGZyb20gJy4vZHluYW1pY19jaGFuZ2VfZGV0ZWN0b3InO1xuaW1wb3J0IHtCaW5kaW5nUmVjb3JkLCBCaW5kaW5nVGFyZ2V0fSBmcm9tICcuL2JpbmRpbmdfcmVjb3JkJztcbmltcG9ydCB7RGlyZWN0aXZlUmVjb3JkLCBEaXJlY3RpdmVJbmRleH0gZnJvbSAnLi9kaXJlY3RpdmVfcmVjb3JkJztcbmltcG9ydCB7RXZlbnRCaW5kaW5nfSBmcm9tICcuL2V2ZW50X2JpbmRpbmcnO1xuXG5pbXBvcnQge2NvYWxlc2NlfSBmcm9tICcuL2NvYWxlc2NlJztcbmltcG9ydCB7UHJvdG9SZWNvcmQsIFJlY29yZFR5cGV9IGZyb20gJy4vcHJvdG9fcmVjb3JkJztcblxuZXhwb3J0IGNsYXNzIER5bmFtaWNQcm90b0NoYW5nZURldGVjdG9yIGltcGxlbWVudHMgUHJvdG9DaGFuZ2VEZXRlY3RvciB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3Byb3BlcnR5QmluZGluZ1JlY29yZHM6IFByb3RvUmVjb3JkW107XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3Byb3BlcnR5QmluZGluZ1RhcmdldHM6IEJpbmRpbmdUYXJnZXRbXTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZXZlbnRCaW5kaW5nUmVjb3JkczogRXZlbnRCaW5kaW5nW107XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2RpcmVjdGl2ZUluZGljZXM6IERpcmVjdGl2ZUluZGV4W107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGVmaW5pdGlvbjogQ2hhbmdlRGV0ZWN0b3JEZWZpbml0aW9uKSB7XG4gICAgdGhpcy5fcHJvcGVydHlCaW5kaW5nUmVjb3JkcyA9IGNyZWF0ZVByb3BlcnR5UmVjb3JkcyhfZGVmaW5pdGlvbik7XG4gICAgdGhpcy5fZXZlbnRCaW5kaW5nUmVjb3JkcyA9IGNyZWF0ZUV2ZW50UmVjb3JkcyhfZGVmaW5pdGlvbik7XG4gICAgdGhpcy5fcHJvcGVydHlCaW5kaW5nVGFyZ2V0cyA9IHRoaXMuX2RlZmluaXRpb24uYmluZGluZ1JlY29yZHMubWFwKGIgPT4gYi50YXJnZXQpO1xuICAgIHRoaXMuX2RpcmVjdGl2ZUluZGljZXMgPSB0aGlzLl9kZWZpbml0aW9uLmRpcmVjdGl2ZVJlY29yZHMubWFwKGQgPT4gZC5kaXJlY3RpdmVJbmRleCk7XG4gIH1cblxuICBpbnN0YW50aWF0ZSgpOiBDaGFuZ2VEZXRlY3RvciB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljQ2hhbmdlRGV0ZWN0b3IoXG4gICAgICAgIHRoaXMuX2RlZmluaXRpb24uaWQsIHRoaXMuX3Byb3BlcnR5QmluZGluZ1JlY29yZHMubGVuZ3RoLCB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdUYXJnZXRzLFxuICAgICAgICB0aGlzLl9kaXJlY3RpdmVJbmRpY2VzLCB0aGlzLl9kZWZpbml0aW9uLnN0cmF0ZWd5LCB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdSZWNvcmRzLFxuICAgICAgICB0aGlzLl9ldmVudEJpbmRpbmdSZWNvcmRzLCB0aGlzLl9kZWZpbml0aW9uLmRpcmVjdGl2ZVJlY29yZHMsIHRoaXMuX2RlZmluaXRpb24uZ2VuQ29uZmlnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJvcGVydHlSZWNvcmRzKGRlZmluaXRpb246IENoYW5nZURldGVjdG9yRGVmaW5pdGlvbik6IFByb3RvUmVjb3JkW10ge1xuICB2YXIgcmVjb3JkQnVpbGRlciA9IG5ldyBQcm90b1JlY29yZEJ1aWxkZXIoKTtcbiAgTGlzdFdyYXBwZXIuZm9yRWFjaFdpdGhJbmRleChcbiAgICAgIGRlZmluaXRpb24uYmluZGluZ1JlY29yZHMsXG4gICAgICAoYjogQmluZGluZ1JlY29yZCwgaW5kZXg6IG51bWJlcikgPT4gcmVjb3JkQnVpbGRlci5hZGQoYiwgZGVmaW5pdGlvbi52YXJpYWJsZU5hbWVzLCBpbmRleCkpO1xuICByZXR1cm4gY29hbGVzY2UocmVjb3JkQnVpbGRlci5yZWNvcmRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUV2ZW50UmVjb3JkcyhkZWZpbml0aW9uOiBDaGFuZ2VEZXRlY3RvckRlZmluaXRpb24pOiBFdmVudEJpbmRpbmdbXSB7XG4gIC8vIFRPRE86IHZzYXZraW46IHJlbW92ZSAkZXZlbnQgd2hlbiB0aGUgY29tcGlsZXIgaGFuZGxlcyByZW5kZXItc2lkZSB2YXJpYWJsZXMgcHJvcGVybHlcbiAgdmFyIHZhck5hbWVzID0gTGlzdFdyYXBwZXIuY29uY2F0KFsnJGV2ZW50J10sIGRlZmluaXRpb24udmFyaWFibGVOYW1lcyk7XG4gIHJldHVybiBkZWZpbml0aW9uLmV2ZW50UmVjb3Jkcy5tYXAoZXIgPT4ge1xuICAgIHZhciByZWNvcmRzID0gX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLmNyZWF0ZShlciwgdmFyTmFtZXMpO1xuICAgIHZhciBkaXJJbmRleCA9IGVyLmltcGxpY2l0UmVjZWl2ZXIgaW5zdGFuY2VvZiBEaXJlY3RpdmVJbmRleCA/IGVyLmltcGxpY2l0UmVjZWl2ZXIgOiBudWxsO1xuICAgIHJldHVybiBuZXcgRXZlbnRCaW5kaW5nKGVyLnRhcmdldC5uYW1lLCBlci50YXJnZXQuZWxlbWVudEluZGV4LCBkaXJJbmRleCwgcmVjb3Jkcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgY2xhc3MgUHJvdG9SZWNvcmRCdWlsZGVyIHtcbiAgcmVjb3JkczogUHJvdG9SZWNvcmRbXSA9IFtdO1xuXG4gIGFkZChiOiBCaW5kaW5nUmVjb3JkLCB2YXJpYWJsZU5hbWVzOiBzdHJpbmdbXSwgYmluZGluZ0luZGV4OiBudW1iZXIpIHtcbiAgICB2YXIgb2xkTGFzdCA9IExpc3RXcmFwcGVyLmxhc3QodGhpcy5yZWNvcmRzKTtcbiAgICBpZiAoaXNQcmVzZW50KG9sZExhc3QpICYmIG9sZExhc3QuYmluZGluZ1JlY29yZC5kaXJlY3RpdmVSZWNvcmQgPT0gYi5kaXJlY3RpdmVSZWNvcmQpIHtcbiAgICAgIG9sZExhc3QubGFzdEluRGlyZWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIHZhciBudW1iZXJPZlJlY29yZHNCZWZvcmUgPSB0aGlzLnJlY29yZHMubGVuZ3RoO1xuICAgIHRoaXMuX2FwcGVuZFJlY29yZHMoYiwgdmFyaWFibGVOYW1lcywgYmluZGluZ0luZGV4KTtcbiAgICB2YXIgbmV3TGFzdCA9IExpc3RXcmFwcGVyLmxhc3QodGhpcy5yZWNvcmRzKTtcbiAgICBpZiAoaXNQcmVzZW50KG5ld0xhc3QpICYmIG5ld0xhc3QgIT09IG9sZExhc3QpIHtcbiAgICAgIG5ld0xhc3QubGFzdEluQmluZGluZyA9IHRydWU7XG4gICAgICBuZXdMYXN0Lmxhc3RJbkRpcmVjdGl2ZSA9IHRydWU7XG4gICAgICB0aGlzLl9zZXRBcmd1bWVudFRvUHVyZUZ1bmN0aW9uKG51bWJlck9mUmVjb3Jkc0JlZm9yZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfc2V0QXJndW1lbnRUb1B1cmVGdW5jdGlvbihzdGFydEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA8IHRoaXMucmVjb3Jkcy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHJlYyA9IHRoaXMucmVjb3Jkc1tpXTtcbiAgICAgIGlmIChyZWMuaXNQdXJlRnVuY3Rpb24oKSkge1xuICAgICAgICByZWMuYXJncy5mb3JFYWNoKHJlY29yZEluZGV4ID0+IHRoaXMucmVjb3Jkc1tyZWNvcmRJbmRleCAtIDFdLmFyZ3VtZW50VG9QdXJlRnVuY3Rpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWMubW9kZSA9PT0gUmVjb3JkVHlwZS5QaXBlKSB7XG4gICAgICAgIHJlYy5hcmdzLmZvckVhY2gocmVjb3JkSW5kZXggPT4gdGhpcy5yZWNvcmRzW3JlY29yZEluZGV4IC0gMV0uYXJndW1lbnRUb1B1cmVGdW5jdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpO1xuICAgICAgICB0aGlzLnJlY29yZHNbcmVjLmNvbnRleHRJbmRleCAtIDFdLmFyZ3VtZW50VG9QdXJlRnVuY3Rpb24gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FwcGVuZFJlY29yZHMoYjogQmluZGluZ1JlY29yZCwgdmFyaWFibGVOYW1lczogc3RyaW5nW10sIGJpbmRpbmdJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGIuaXNEaXJlY3RpdmVMaWZlY3ljbGUoKSkge1xuICAgICAgdGhpcy5yZWNvcmRzLnB1c2gobmV3IFByb3RvUmVjb3JkKFJlY29yZFR5cGUuRGlyZWN0aXZlTGlmZWN5Y2xlLCBiLmxpZmVjeWNsZUV2ZW50LCBudWxsLCBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwgLTEsIG51bGwsIHRoaXMucmVjb3Jkcy5sZW5ndGggKyAxLCBiLCBmYWxzZSwgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGZhbHNlLCBudWxsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy5hcHBlbmQodGhpcy5yZWNvcmRzLCBiLCB2YXJpYWJsZU5hbWVzLCBiaW5kaW5nSW5kZXgpO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBfQ29udmVydEFzdEludG9Qcm90b1JlY29yZHMgaW1wbGVtZW50cyBBc3RWaXNpdG9yIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVjb3JkczogUHJvdG9SZWNvcmRbXSwgcHJpdmF0ZSBfYmluZGluZ1JlY29yZDogQmluZGluZ1JlY29yZCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdmFyaWFibGVOYW1lczogc3RyaW5nW10sIHByaXZhdGUgX2JpbmRpbmdJbmRleDogbnVtYmVyKSB7fVxuXG4gIHN0YXRpYyBhcHBlbmQocmVjb3JkczogUHJvdG9SZWNvcmRbXSwgYjogQmluZGluZ1JlY29yZCwgdmFyaWFibGVOYW1lczogc3RyaW5nW10sXG4gICAgICAgICAgICAgICAgYmluZGluZ0luZGV4OiBudW1iZXIpIHtcbiAgICB2YXIgYyA9IG5ldyBfQ29udmVydEFzdEludG9Qcm90b1JlY29yZHMocmVjb3JkcywgYiwgdmFyaWFibGVOYW1lcywgYmluZGluZ0luZGV4KTtcbiAgICBiLmFzdC52aXNpdChjKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUoYjogQmluZGluZ1JlY29yZCwgdmFyaWFibGVOYW1lczogYW55W10pOiBQcm90b1JlY29yZFtdIHtcbiAgICB2YXIgcmVjID0gW107XG4gICAgX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLmFwcGVuZChyZWMsIGIsIHZhcmlhYmxlTmFtZXMsIG51bGwpO1xuICAgIHJlY1tyZWMubGVuZ3RoIC0gMV0ubGFzdEluQmluZGluZyA9IHRydWU7XG4gICAgcmV0dXJuIHJlYztcbiAgfVxuXG4gIHZpc2l0SW1wbGljaXRSZWNlaXZlcihhc3Q6IEltcGxpY2l0UmVjZWl2ZXIpOiBhbnkgeyByZXR1cm4gdGhpcy5fYmluZGluZ1JlY29yZC5pbXBsaWNpdFJlY2VpdmVyOyB9XG5cbiAgdmlzaXRJbnRlcnBvbGF0aW9uKGFzdDogSW50ZXJwb2xhdGlvbik6IG51bWJlciB7XG4gICAgdmFyIGFyZ3MgPSB0aGlzLl92aXNpdEFsbChhc3QuZXhwcmVzc2lvbnMpO1xuICAgIHJldHVybiB0aGlzLl9hZGRSZWNvcmQoUmVjb3JkVHlwZS5JbnRlcnBvbGF0ZSwgXCJpbnRlcnBvbGF0ZVwiLCBfaW50ZXJwb2xhdGlvbkZuKGFzdC5zdHJpbmdzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGFzdC5zdHJpbmdzLCAwKTtcbiAgfVxuXG4gIHZpc2l0TGl0ZXJhbFByaW1pdGl2ZShhc3Q6IExpdGVyYWxQcmltaXRpdmUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9hZGRSZWNvcmQoUmVjb3JkVHlwZS5Db25zdCwgXCJsaXRlcmFsXCIsIGFzdC52YWx1ZSwgW10sIG51bGwsIDApO1xuICB9XG5cbiAgdmlzaXRQcm9wZXJ0eVJlYWQoYXN0OiBQcm9wZXJ0eVJlYWQpOiBudW1iZXIge1xuICAgIHZhciByZWNlaXZlciA9IGFzdC5yZWNlaXZlci52aXNpdCh0aGlzKTtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX3ZhcmlhYmxlTmFtZXMpICYmIExpc3RXcmFwcGVyLmNvbnRhaW5zKHRoaXMuX3ZhcmlhYmxlTmFtZXMsIGFzdC5uYW1lKSAmJlxuICAgICAgICBhc3QucmVjZWl2ZXIgaW5zdGFuY2VvZiBJbXBsaWNpdFJlY2VpdmVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRkUmVjb3JkKFJlY29yZFR5cGUuTG9jYWwsIGFzdC5uYW1lLCBhc3QubmFtZSwgW10sIG51bGwsIHJlY2VpdmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX2FkZFJlY29yZChSZWNvcmRUeXBlLlByb3BlcnR5UmVhZCwgYXN0Lm5hbWUsIGFzdC5nZXR0ZXIsIFtdLCBudWxsLCByZWNlaXZlcik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRQcm9wZXJ0eVdyaXRlKGFzdDogUHJvcGVydHlXcml0ZSk6IG51bWJlciB7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl92YXJpYWJsZU5hbWVzKSAmJiBMaXN0V3JhcHBlci5jb250YWlucyh0aGlzLl92YXJpYWJsZU5hbWVzLCBhc3QubmFtZSkgJiZcbiAgICAgICAgYXN0LnJlY2VpdmVyIGluc3RhbmNlb2YgSW1wbGljaXRSZWNlaXZlcikge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYENhbm5vdCByZWFzc2lnbiBhIHZhcmlhYmxlIGJpbmRpbmcgJHthc3QubmFtZX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHJlY2VpdmVyID0gYXN0LnJlY2VpdmVyLnZpc2l0KHRoaXMpO1xuICAgICAgdmFyIHZhbHVlID0gYXN0LnZhbHVlLnZpc2l0KHRoaXMpO1xuICAgICAgcmV0dXJuIHRoaXMuX2FkZFJlY29yZChSZWNvcmRUeXBlLlByb3BlcnR5V3JpdGUsIGFzdC5uYW1lLCBhc3Quc2V0dGVyLCBbdmFsdWVdLCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRLZXllZFdyaXRlKGFzdDogS2V5ZWRXcml0ZSk6IG51bWJlciB7XG4gICAgdmFyIG9iaiA9IGFzdC5vYmoudmlzaXQodGhpcyk7XG4gICAgdmFyIGtleSA9IGFzdC5rZXkudmlzaXQodGhpcyk7XG4gICAgdmFyIHZhbHVlID0gYXN0LnZhbHVlLnZpc2l0KHRoaXMpO1xuICAgIHJldHVybiB0aGlzLl9hZGRSZWNvcmQoUmVjb3JkVHlwZS5LZXllZFdyaXRlLCBudWxsLCBudWxsLCBba2V5LCB2YWx1ZV0sIG51bGwsIG9iaik7XG4gIH1cblxuICB2aXNpdFNhZmVQcm9wZXJ0eVJlYWQoYXN0OiBTYWZlUHJvcGVydHlSZWFkKTogbnVtYmVyIHtcbiAgICB2YXIgcmVjZWl2ZXIgPSBhc3QucmVjZWl2ZXIudmlzaXQodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMuX2FkZFJlY29yZChSZWNvcmRUeXBlLlNhZmVQcm9wZXJ0eSwgYXN0Lm5hbWUsIGFzdC5nZXR0ZXIsIFtdLCBudWxsLCByZWNlaXZlcik7XG4gIH1cblxuICB2aXNpdE1ldGhvZENhbGwoYXN0OiBNZXRob2RDYWxsKTogbnVtYmVyIHtcbiAgICB2YXIgcmVjZWl2ZXIgPSBhc3QucmVjZWl2ZXIudmlzaXQodGhpcyk7XG4gICAgdmFyIGFyZ3MgPSB0aGlzLl92aXNpdEFsbChhc3QuYXJncyk7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl92YXJpYWJsZU5hbWVzKSAmJiBMaXN0V3JhcHBlci5jb250YWlucyh0aGlzLl92YXJpYWJsZU5hbWVzLCBhc3QubmFtZSkpIHtcbiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLl9hZGRSZWNvcmQoUmVjb3JkVHlwZS5Mb2NhbCwgYXN0Lm5hbWUsIGFzdC5uYW1lLCBbXSwgbnVsbCwgcmVjZWl2ZXIpO1xuICAgICAgcmV0dXJuIHRoaXMuX2FkZFJlY29yZChSZWNvcmRUeXBlLkludm9rZUNsb3N1cmUsIFwiY2xvc3VyZVwiLCBudWxsLCBhcmdzLCBudWxsLCB0YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fYWRkUmVjb3JkKFJlY29yZFR5cGUuSW52b2tlTWV0aG9kLCBhc3QubmFtZSwgYXN0LmZuLCBhcmdzLCBudWxsLCByZWNlaXZlcik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRTYWZlTWV0aG9kQ2FsbChhc3Q6IFNhZmVNZXRob2RDYWxsKTogbnVtYmVyIHtcbiAgICB2YXIgcmVjZWl2ZXIgPSBhc3QucmVjZWl2ZXIudmlzaXQodGhpcyk7XG4gICAgdmFyIGFyZ3MgPSB0aGlzLl92aXNpdEFsbChhc3QuYXJncyk7XG4gICAgcmV0dXJuIHRoaXMuX2FkZFJlY29yZChSZWNvcmRUeXBlLlNhZmVNZXRob2RJbnZva2UsIGFzdC5uYW1lLCBhc3QuZm4sIGFyZ3MsIG51bGwsIHJlY2VpdmVyKTtcbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25DYWxsKGFzdDogRnVuY3Rpb25DYWxsKTogbnVtYmVyIHtcbiAgICB2YXIgdGFyZ2V0ID0gYXN0LnRhcmdldC52aXNpdCh0aGlzKTtcbiAgICB2YXIgYXJncyA9IHRoaXMuX3Zpc2l0QWxsKGFzdC5hcmdzKTtcbiAgICByZXR1cm4gdGhpcy5fYWRkUmVjb3JkKFJlY29yZFR5cGUuSW52b2tlQ2xvc3VyZSwgXCJjbG9zdXJlXCIsIG51bGwsIGFyZ3MsIG51bGwsIHRhcmdldCk7XG4gIH1cblxuICB2aXNpdExpdGVyYWxBcnJheShhc3Q6IExpdGVyYWxBcnJheSk6IG51bWJlciB7XG4gICAgdmFyIHByaW1pdGl2ZU5hbWUgPSBgYXJyYXlGbiR7YXN0LmV4cHJlc3Npb25zLmxlbmd0aH1gO1xuICAgIHJldHVybiB0aGlzLl9hZGRSZWNvcmQoUmVjb3JkVHlwZS5Db2xsZWN0aW9uTGl0ZXJhbCwgcHJpbWl0aXZlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hcnJheUZuKGFzdC5leHByZXNzaW9ucy5sZW5ndGgpLCB0aGlzLl92aXNpdEFsbChhc3QuZXhwcmVzc2lvbnMpLCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7XG4gIH1cblxuICB2aXNpdExpdGVyYWxNYXAoYXN0OiBMaXRlcmFsTWFwKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkUmVjb3JkKFJlY29yZFR5cGUuQ29sbGVjdGlvbkxpdGVyYWwsIF9tYXBQcmltaXRpdmVOYW1lKGFzdC5rZXlzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYW5nZURldGVjdGlvblV0aWwubWFwRm4oYXN0LmtleXMpLCB0aGlzLl92aXNpdEFsbChhc3QudmFsdWVzKSwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDApO1xuICB9XG5cbiAgdmlzaXRCaW5hcnkoYXN0OiBCaW5hcnkpOiBudW1iZXIge1xuICAgIHZhciBsZWZ0ID0gYXN0LmxlZnQudmlzaXQodGhpcyk7XG4gICAgc3dpdGNoIChhc3Qub3BlcmF0aW9uKSB7XG4gICAgICBjYXNlICcmJic6XG4gICAgICAgIHZhciBicmFuY2hFbmQgPSBbbnVsbF07XG4gICAgICAgIHRoaXMuX2FkZFJlY29yZChSZWNvcmRUeXBlLlNraXBSZWNvcmRzSWZOb3QsIFwiU2tpcFJlY29yZHNJZk5vdFwiLCBudWxsLCBbXSwgYnJhbmNoRW5kLCBsZWZ0KTtcbiAgICAgICAgdmFyIHJpZ2h0ID0gYXN0LnJpZ2h0LnZpc2l0KHRoaXMpO1xuICAgICAgICBicmFuY2hFbmRbMF0gPSByaWdodDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZFJlY29yZChSZWNvcmRUeXBlLlByaW1pdGl2ZU9wLCBcImNvbmRcIiwgQ2hhbmdlRGV0ZWN0aW9uVXRpbC5jb25kLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsZWZ0LCByaWdodCwgbGVmdF0sIG51bGwsIDApO1xuXG4gICAgICBjYXNlICd8fCc6XG4gICAgICAgIHZhciBicmFuY2hFbmQgPSBbbnVsbF07XG4gICAgICAgIHRoaXMuX2FkZFJlY29yZChSZWNvcmRUeXBlLlNraXBSZWNvcmRzSWYsIFwiU2tpcFJlY29yZHNJZlwiLCBudWxsLCBbXSwgYnJhbmNoRW5kLCBsZWZ0KTtcbiAgICAgICAgdmFyIHJpZ2h0ID0gYXN0LnJpZ2h0LnZpc2l0KHRoaXMpO1xuICAgICAgICBicmFuY2hFbmRbMF0gPSByaWdodDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZFJlY29yZChSZWNvcmRUeXBlLlByaW1pdGl2ZU9wLCBcImNvbmRcIiwgQ2hhbmdlRGV0ZWN0aW9uVXRpbC5jb25kLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsZWZ0LCBsZWZ0LCByaWdodF0sIG51bGwsIDApO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YXIgcmlnaHQgPSBhc3QucmlnaHQudmlzaXQodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRSZWNvcmQoUmVjb3JkVHlwZS5QcmltaXRpdmVPcCwgX29wZXJhdGlvblRvUHJpbWl0aXZlTmFtZShhc3Qub3BlcmF0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3BlcmF0aW9uVG9GdW5jdGlvbihhc3Qub3BlcmF0aW9uKSwgW2xlZnQsIHJpZ2h0XSwgbnVsbCwgMCk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRQcmVmaXhOb3QoYXN0OiBQcmVmaXhOb3QpOiBudW1iZXIge1xuICAgIHZhciBleHAgPSBhc3QuZXhwcmVzc2lvbi52aXNpdCh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5fYWRkUmVjb3JkKFJlY29yZFR5cGUuUHJpbWl0aXZlT3AsIFwib3BlcmF0aW9uX25lZ2F0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlRGV0ZWN0aW9uVXRpbC5vcGVyYXRpb25fbmVnYXRlLCBbZXhwXSwgbnVsbCwgMCk7XG4gIH1cblxuICB2aXNpdENvbmRpdGlvbmFsKGFzdDogQ29uZGl0aW9uYWwpOiBudW1iZXIge1xuICAgIHZhciBjb25kaXRpb24gPSBhc3QuY29uZGl0aW9uLnZpc2l0KHRoaXMpO1xuICAgIHZhciBzdGFydE9mRmFsc2VCcmFuY2ggPSBbbnVsbF07XG4gICAgdmFyIGVuZE9mRmFsc2VCcmFuY2ggPSBbbnVsbF07XG4gICAgdGhpcy5fYWRkUmVjb3JkKFJlY29yZFR5cGUuU2tpcFJlY29yZHNJZk5vdCwgXCJTa2lwUmVjb3Jkc0lmTm90XCIsIG51bGwsIFtdLCBzdGFydE9mRmFsc2VCcmFuY2gsXG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbik7XG4gICAgdmFyIHdoZW5UcnVlID0gYXN0LnRydWVFeHAudmlzaXQodGhpcyk7XG4gICAgdmFyIHNraXAgPVxuICAgICAgICB0aGlzLl9hZGRSZWNvcmQoUmVjb3JkVHlwZS5Ta2lwUmVjb3JkcywgXCJTa2lwUmVjb3Jkc1wiLCBudWxsLCBbXSwgZW5kT2ZGYWxzZUJyYW5jaCwgMCk7XG4gICAgdmFyIHdoZW5GYWxzZSA9IGFzdC5mYWxzZUV4cC52aXNpdCh0aGlzKTtcbiAgICBzdGFydE9mRmFsc2VCcmFuY2hbMF0gPSBza2lwO1xuICAgIGVuZE9mRmFsc2VCcmFuY2hbMF0gPSB3aGVuRmFsc2U7XG5cbiAgICByZXR1cm4gdGhpcy5fYWRkUmVjb3JkKFJlY29yZFR5cGUuUHJpbWl0aXZlT3AsIFwiY29uZFwiLCBDaGFuZ2VEZXRlY3Rpb25VdGlsLmNvbmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZGl0aW9uLCB3aGVuVHJ1ZSwgd2hlbkZhbHNlXSwgbnVsbCwgMCk7XG4gIH1cblxuICB2aXNpdFBpcGUoYXN0OiBCaW5kaW5nUGlwZSk6IG51bWJlciB7XG4gICAgdmFyIHZhbHVlID0gYXN0LmV4cC52aXNpdCh0aGlzKTtcbiAgICB2YXIgYXJncyA9IHRoaXMuX3Zpc2l0QWxsKGFzdC5hcmdzKTtcbiAgICByZXR1cm4gdGhpcy5fYWRkUmVjb3JkKFJlY29yZFR5cGUuUGlwZSwgYXN0Lm5hbWUsIGFzdC5uYW1lLCBhcmdzLCBudWxsLCB2YWx1ZSk7XG4gIH1cblxuICB2aXNpdEtleWVkUmVhZChhc3Q6IEtleWVkUmVhZCk6IG51bWJlciB7XG4gICAgdmFyIG9iaiA9IGFzdC5vYmoudmlzaXQodGhpcyk7XG4gICAgdmFyIGtleSA9IGFzdC5rZXkudmlzaXQodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMuX2FkZFJlY29yZChSZWNvcmRUeXBlLktleWVkUmVhZCwgXCJrZXllZEFjY2Vzc1wiLCBDaGFuZ2VEZXRlY3Rpb25VdGlsLmtleWVkQWNjZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tleV0sIG51bGwsIG9iaik7XG4gIH1cblxuICB2aXNpdENoYWluKGFzdDogQ2hhaW4pOiBudW1iZXIge1xuICAgIHZhciBhcmdzID0gYXN0LmV4cHJlc3Npb25zLm1hcChlID0+IGUudmlzaXQodGhpcykpO1xuICAgIHJldHVybiB0aGlzLl9hZGRSZWNvcmQoUmVjb3JkVHlwZS5DaGFpbiwgXCJjaGFpblwiLCBudWxsLCBhcmdzLCBudWxsLCAwKTtcbiAgfVxuXG4gIHZpc2l0UXVvdGUoYXN0OiBRdW90ZSk6IHZvaWQge1xuICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFxuICAgICAgICBgQ2F1Z2h0IHVuaW50ZXJwcmV0ZWQgZXhwcmVzc2lvbiBhdCAke2FzdC5sb2NhdGlvbn06ICR7YXN0LnVuaW50ZXJwcmV0ZWRFeHByZXNzaW9ufS4gYCArXG4gICAgICAgIGBFeHByZXNzaW9uIHByZWZpeCAke2FzdC5wcmVmaXh9IGRpZCBub3QgbWF0Y2ggYSB0ZW1wbGF0ZSB0cmFuc2Zvcm1lciB0byBpbnRlcnByZXQgdGhlIGV4cHJlc3Npb24uYCk7XG4gIH1cblxuICBwcml2YXRlIF92aXNpdEFsbChhc3RzOiBhbnlbXSkge1xuICAgIHZhciByZXMgPSBMaXN0V3JhcHBlci5jcmVhdGVGaXhlZFNpemUoYXN0cy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXN0cy5sZW5ndGg7ICsraSkge1xuICAgICAgcmVzW2ldID0gYXN0c1tpXS52aXNpdCh0aGlzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgYFByb3RvUmVjb3JkYCBhbmQgcmV0dXJucyBpdHMgc2VsZkluZGV4LlxuICAgKi9cbiAgcHJpdmF0ZSBfYWRkUmVjb3JkKHR5cGUsIG5hbWUsIGZ1bmNPclZhbHVlLCBhcmdzLCBmaXhlZEFyZ3MsIGNvbnRleHQpOiBudW1iZXIge1xuICAgIHZhciBzZWxmSW5kZXggPSB0aGlzLl9yZWNvcmRzLmxlbmd0aCArIDE7XG4gICAgaWYgKGNvbnRleHQgaW5zdGFuY2VvZiBEaXJlY3RpdmVJbmRleCkge1xuICAgICAgdGhpcy5fcmVjb3Jkcy5wdXNoKG5ldyBQcm90b1JlY29yZCh0eXBlLCBuYW1lLCBmdW5jT3JWYWx1ZSwgYXJncywgZml4ZWRBcmdzLCAtMSwgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZkluZGV4LCB0aGlzLl9iaW5kaW5nUmVjb3JkLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmluZGluZ0luZGV4KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3JlY29yZHMucHVzaChuZXcgUHJvdG9SZWNvcmQodHlwZSwgbmFtZSwgZnVuY09yVmFsdWUsIGFyZ3MsIGZpeGVkQXJncywgY29udGV4dCwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZkluZGV4LCB0aGlzLl9iaW5kaW5nUmVjb3JkLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmluZGluZ0luZGV4KSk7XG4gICAgfVxuICAgIHJldHVybiBzZWxmSW5kZXg7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBfYXJyYXlGbihsZW5ndGg6IG51bWJlcik6IEZ1bmN0aW9uIHtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hcnJheUZuMDtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hcnJheUZuMTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hcnJheUZuMjtcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hcnJheUZuMztcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hcnJheUZuNDtcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4gQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hcnJheUZuNTtcbiAgICBjYXNlIDY6XG4gICAgICByZXR1cm4gQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hcnJheUZuNjtcbiAgICBjYXNlIDc6XG4gICAgICByZXR1cm4gQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hcnJheUZuNztcbiAgICBjYXNlIDg6XG4gICAgICByZXR1cm4gQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hcnJheUZuODtcbiAgICBjYXNlIDk6XG4gICAgICByZXR1cm4gQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hcnJheUZuOTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYERvZXMgbm90IHN1cHBvcnQgbGl0ZXJhbCBtYXBzIHdpdGggbW9yZSB0aGFuIDkgZWxlbWVudHNgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfbWFwUHJpbWl0aXZlTmFtZShrZXlzOiBhbnlbXSkge1xuICB2YXIgc3RyaW5naWZpZWRLZXlzID0ga2V5cy5tYXAoayA9PiBpc1N0cmluZyhrKSA/IGBcIiR7a31cImAgOiBgJHtrfWApLmpvaW4oJywgJyk7XG4gIHJldHVybiBgbWFwRm4oWyR7c3RyaW5naWZpZWRLZXlzfV0pYDtcbn1cblxuZnVuY3Rpb24gX29wZXJhdGlvblRvUHJpbWl0aXZlTmFtZShvcGVyYXRpb246IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAob3BlcmF0aW9uKSB7XG4gICAgY2FzZSAnKyc6XG4gICAgICByZXR1cm4gXCJvcGVyYXRpb25fYWRkXCI7XG4gICAgY2FzZSAnLSc6XG4gICAgICByZXR1cm4gXCJvcGVyYXRpb25fc3VidHJhY3RcIjtcbiAgICBjYXNlICcqJzpcbiAgICAgIHJldHVybiBcIm9wZXJhdGlvbl9tdWx0aXBseVwiO1xuICAgIGNhc2UgJy8nOlxuICAgICAgcmV0dXJuIFwib3BlcmF0aW9uX2RpdmlkZVwiO1xuICAgIGNhc2UgJyUnOlxuICAgICAgcmV0dXJuIFwib3BlcmF0aW9uX3JlbWFpbmRlclwiO1xuICAgIGNhc2UgJz09JzpcbiAgICAgIHJldHVybiBcIm9wZXJhdGlvbl9lcXVhbHNcIjtcbiAgICBjYXNlICchPSc6XG4gICAgICByZXR1cm4gXCJvcGVyYXRpb25fbm90X2VxdWFsc1wiO1xuICAgIGNhc2UgJz09PSc6XG4gICAgICByZXR1cm4gXCJvcGVyYXRpb25faWRlbnRpY2FsXCI7XG4gICAgY2FzZSAnIT09JzpcbiAgICAgIHJldHVybiBcIm9wZXJhdGlvbl9ub3RfaWRlbnRpY2FsXCI7XG4gICAgY2FzZSAnPCc6XG4gICAgICByZXR1cm4gXCJvcGVyYXRpb25fbGVzc190aGVuXCI7XG4gICAgY2FzZSAnPic6XG4gICAgICByZXR1cm4gXCJvcGVyYXRpb25fZ3JlYXRlcl90aGVuXCI7XG4gICAgY2FzZSAnPD0nOlxuICAgICAgcmV0dXJuIFwib3BlcmF0aW9uX2xlc3Nfb3JfZXF1YWxzX3RoZW5cIjtcbiAgICBjYXNlICc+PSc6XG4gICAgICByZXR1cm4gXCJvcGVyYXRpb25fZ3JlYXRlcl9vcl9lcXVhbHNfdGhlblwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgVW5zdXBwb3J0ZWQgb3BlcmF0aW9uICR7b3BlcmF0aW9ufWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9vcGVyYXRpb25Ub0Z1bmN0aW9uKG9wZXJhdGlvbjogc3RyaW5nKTogRnVuY3Rpb24ge1xuICBzd2l0Y2ggKG9wZXJhdGlvbikge1xuICAgIGNhc2UgJysnOlxuICAgICAgcmV0dXJuIENoYW5nZURldGVjdGlvblV0aWwub3BlcmF0aW9uX2FkZDtcbiAgICBjYXNlICctJzpcbiAgICAgIHJldHVybiBDaGFuZ2VEZXRlY3Rpb25VdGlsLm9wZXJhdGlvbl9zdWJ0cmFjdDtcbiAgICBjYXNlICcqJzpcbiAgICAgIHJldHVybiBDaGFuZ2VEZXRlY3Rpb25VdGlsLm9wZXJhdGlvbl9tdWx0aXBseTtcbiAgICBjYXNlICcvJzpcbiAgICAgIHJldHVybiBDaGFuZ2VEZXRlY3Rpb25VdGlsLm9wZXJhdGlvbl9kaXZpZGU7XG4gICAgY2FzZSAnJSc6XG4gICAgICByZXR1cm4gQ2hhbmdlRGV0ZWN0aW9uVXRpbC5vcGVyYXRpb25fcmVtYWluZGVyO1xuICAgIGNhc2UgJz09JzpcbiAgICAgIHJldHVybiBDaGFuZ2VEZXRlY3Rpb25VdGlsLm9wZXJhdGlvbl9lcXVhbHM7XG4gICAgY2FzZSAnIT0nOlxuICAgICAgcmV0dXJuIENoYW5nZURldGVjdGlvblV0aWwub3BlcmF0aW9uX25vdF9lcXVhbHM7XG4gICAgY2FzZSAnPT09JzpcbiAgICAgIHJldHVybiBDaGFuZ2VEZXRlY3Rpb25VdGlsLm9wZXJhdGlvbl9pZGVudGljYWw7XG4gICAgY2FzZSAnIT09JzpcbiAgICAgIHJldHVybiBDaGFuZ2VEZXRlY3Rpb25VdGlsLm9wZXJhdGlvbl9ub3RfaWRlbnRpY2FsO1xuICAgIGNhc2UgJzwnOlxuICAgICAgcmV0dXJuIENoYW5nZURldGVjdGlvblV0aWwub3BlcmF0aW9uX2xlc3NfdGhlbjtcbiAgICBjYXNlICc+JzpcbiAgICAgIHJldHVybiBDaGFuZ2VEZXRlY3Rpb25VdGlsLm9wZXJhdGlvbl9ncmVhdGVyX3RoZW47XG4gICAgY2FzZSAnPD0nOlxuICAgICAgcmV0dXJuIENoYW5nZURldGVjdGlvblV0aWwub3BlcmF0aW9uX2xlc3Nfb3JfZXF1YWxzX3RoZW47XG4gICAgY2FzZSAnPj0nOlxuICAgICAgcmV0dXJuIENoYW5nZURldGVjdGlvblV0aWwub3BlcmF0aW9uX2dyZWF0ZXJfb3JfZXF1YWxzX3RoZW47XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBVbnN1cHBvcnRlZCBvcGVyYXRpb24gJHtvcGVyYXRpb259YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcyh2KTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzUHJlc2VudCh2KSA/IGAke3Z9YCA6ICcnO1xufVxuXG5mdW5jdGlvbiBfaW50ZXJwb2xhdGlvbkZuKHN0cmluZ3M6IGFueVtdKSB7XG4gIHZhciBsZW5ndGggPSBzdHJpbmdzLmxlbmd0aDtcbiAgdmFyIGMwID0gbGVuZ3RoID4gMCA/IHN0cmluZ3NbMF0gOiBudWxsO1xuICB2YXIgYzEgPSBsZW5ndGggPiAxID8gc3RyaW5nc1sxXSA6IG51bGw7XG4gIHZhciBjMiA9IGxlbmd0aCA+IDIgPyBzdHJpbmdzWzJdIDogbnVsbDtcbiAgdmFyIGMzID0gbGVuZ3RoID4gMyA/IHN0cmluZ3NbM10gOiBudWxsO1xuICB2YXIgYzQgPSBsZW5ndGggPiA0ID8gc3RyaW5nc1s0XSA6IG51bGw7XG4gIHZhciBjNSA9IGxlbmd0aCA+IDUgPyBzdHJpbmdzWzVdIDogbnVsbDtcbiAgdmFyIGM2ID0gbGVuZ3RoID4gNiA/IHN0cmluZ3NbNl0gOiBudWxsO1xuICB2YXIgYzcgPSBsZW5ndGggPiA3ID8gc3RyaW5nc1s3XSA6IG51bGw7XG4gIHZhciBjOCA9IGxlbmd0aCA+IDggPyBzdHJpbmdzWzhdIDogbnVsbDtcbiAgdmFyIGM5ID0gbGVuZ3RoID4gOSA/IHN0cmluZ3NbOV0gOiBudWxsO1xuICBzd2l0Y2ggKGxlbmd0aCAtIDEpIHtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gKGExKSA9PiBjMCArIHMoYTEpICsgYzE7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIChhMSwgYTIpID0+IGMwICsgcyhhMSkgKyBjMSArIHMoYTIpICsgYzI7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIChhMSwgYTIsIGEzKSA9PiBjMCArIHMoYTEpICsgYzEgKyBzKGEyKSArIGMyICsgcyhhMykgKyBjMztcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gKGExLCBhMiwgYTMsIGE0KSA9PiBjMCArIHMoYTEpICsgYzEgKyBzKGEyKSArIGMyICsgcyhhMykgKyBjMyArIHMoYTQpICsgYzQ7XG4gICAgY2FzZSA1OlxuICAgICAgcmV0dXJuIChhMSwgYTIsIGEzLCBhNCwgYTUpID0+XG4gICAgICAgICAgICAgICAgIGMwICsgcyhhMSkgKyBjMSArIHMoYTIpICsgYzIgKyBzKGEzKSArIGMzICsgcyhhNCkgKyBjNCArIHMoYTUpICsgYzU7XG4gICAgY2FzZSA2OlxuICAgICAgcmV0dXJuIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSA9PlxuICAgICAgICAgICAgICAgICBjMCArIHMoYTEpICsgYzEgKyBzKGEyKSArIGMyICsgcyhhMykgKyBjMyArIHMoYTQpICsgYzQgKyBzKGE1KSArIGM1ICsgcyhhNikgKyBjNjtcbiAgICBjYXNlIDc6XG4gICAgICByZXR1cm4gKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSA9PiBjMCArIHMoYTEpICsgYzEgKyBzKGEyKSArIGMyICsgcyhhMykgKyBjMyArIHMoYTQpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM0ICsgcyhhNSkgKyBjNSArIHMoYTYpICsgYzYgKyBzKGE3KSArIGM3O1xuICAgIGNhc2UgODpcbiAgICAgIHJldHVybiAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSA9PiBjMCArIHMoYTEpICsgYzEgKyBzKGEyKSArIGMyICsgcyhhMykgKyBjMyArIHMoYTQpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjNCArIHMoYTUpICsgYzUgKyBzKGE2KSArIGM2ICsgcyhhNykgKyBjNyArIHMoYTgpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjODtcbiAgICBjYXNlIDk6XG4gICAgICByZXR1cm4gKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpID0+IGMwICsgcyhhMSkgKyBjMSArIHMoYTIpICsgYzIgKyBzKGEzKSArIGMzICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyhhNCkgKyBjNCArIHMoYTUpICsgYzUgKyBzKGE2KSArIGM2ICsgcyhhNykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjNyArIHMoYTgpICsgYzggKyBzKGE5KSArIGM5O1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgRG9lcyBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gOSBleHByZXNzaW9uc2ApO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar abstract_change_detector_1 = require('./abstract_change_detector');\r\nvar change_detection_util_1 = require('./change_detection_util');\r\nvar proto_record_1 = require('./proto_record');\r\nvar codegen_name_util_1 = require('./codegen_name_util');\r\nvar codegen_logic_util_1 = require('./codegen_logic_util');\r\nvar codegen_facade_1 = require('./codegen_facade');\r\nvar constants_1 = require('./constants');\r\nvar proto_change_detector_1 = require('./proto_change_detector');\r\n/**\r\n * The code generator takes a list of proto records and creates a function/class\r\n * that \"emulates\" what the developer would write by hand to implement the same\r\n * kind of behaviour.\r\n *\r\n * This code should be kept in sync with the Dart transformer's\r\n * `angular2.transform.template_compiler.change_detector_codegen` library. If you make updates\r\n * here, please make equivalent changes there.\r\n*/\r\nvar IS_CHANGED_LOCAL = \"isChanged\";\r\nvar CHANGES_LOCAL = \"changes\";\r\nvar ChangeDetectorJITGenerator = (function () {\r\n function ChangeDetectorJITGenerator(definition, changeDetectionUtilVarName, abstractChangeDetectorVarName, changeDetectorStateVarName) {\r\n this.changeDetectionUtilVarName = changeDetectionUtilVarName;\r\n this.abstractChangeDetectorVarName = abstractChangeDetectorVarName;\r\n this.changeDetectorStateVarName = changeDetectorStateVarName;\r\n var propertyBindingRecords = proto_change_detector_1.createPropertyRecords(definition);\r\n var eventBindingRecords = proto_change_detector_1.createEventRecords(definition);\r\n var propertyBindingTargets = definition.bindingRecords.map(function (b) { return b.target; });\r\n this.id = definition.id;\r\n this.changeDetectionStrategy = definition.strategy;\r\n this.genConfig = definition.genConfig;\r\n this.records = propertyBindingRecords;\r\n this.propertyBindingTargets = propertyBindingTargets;\r\n this.eventBindings = eventBindingRecords;\r\n this.directiveRecords = definition.directiveRecords;\r\n this._names = new codegen_name_util_1.CodegenNameUtil(this.records, this.eventBindings, this.directiveRecords, this.changeDetectionUtilVarName);\r\n this._logic = new codegen_logic_util_1.CodegenLogicUtil(this._names, this.changeDetectionUtilVarName, this.changeDetectorStateVarName);\r\n this.typeName = codegen_name_util_1.sanitizeName(\"ChangeDetector_\" + this.id);\r\n }\r\n ChangeDetectorJITGenerator.prototype.generate = function () {\r\n var factorySource = \"\\n \" + this.generateSource() + \"\\n return function() {\\n return new \" + this.typeName + \"();\\n }\\n \";\r\n return new Function(this.abstractChangeDetectorVarName, this.changeDetectionUtilVarName, this.changeDetectorStateVarName, factorySource)(abstract_change_detector_1.AbstractChangeDetector, change_detection_util_1.ChangeDetectionUtil, constants_1.ChangeDetectorState);\r\n };\r\n ChangeDetectorJITGenerator.prototype.generateSource = function () {\r\n return \"\\n var \" + this.typeName + \" = function \" + this.typeName + \"() {\\n \" + this.abstractChangeDetectorVarName + \".call(\\n this, \" + JSON.stringify(this.id) + \", \" + this.records.length + \",\\n \" + this.typeName + \".gen_propertyBindingTargets, \" + this.typeName + \".gen_directiveIndices,\\n \" + codegen_facade_1.codify(this.changeDetectionStrategy) + \");\\n this.dehydrateDirectives(false);\\n }\\n\\n \" + this.typeName + \".prototype = Object.create(\" + this.abstractChangeDetectorVarName + \".prototype);\\n\\n \" + this.typeName + \".prototype.detectChangesInRecordsInternal = function(throwOnChange) {\\n \" + this._names.genInitLocals() + \"\\n var \" + IS_CHANGED_LOCAL + \" = false;\\n var \" + CHANGES_LOCAL + \" = null;\\n\\n \" + this._genAllRecords(this.records) + \"\\n }\\n\\n \" + this._maybeGenHandleEventInternal() + \"\\n\\n \" + this._maybeGenAfterContentLifecycleCallbacks() + \"\\n\\n \" + this._maybeGenAfterViewLifecycleCallbacks() + \"\\n\\n \" + this._maybeGenHydrateDirectives() + \"\\n\\n \" + this._maybeGenDehydrateDirectives() + \"\\n\\n \" + this._genPropertyBindingTargets() + \"\\n\\n \" + this._genDirectiveIndices() + \"\\n \";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genPropertyBindingTargets = function () {\r\n var targets = this._logic.genPropertyBindingTargets(this.propertyBindingTargets, this.genConfig.genDebugInfo);\r\n return this.typeName + \".gen_propertyBindingTargets = \" + targets + \";\";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genDirectiveIndices = function () {\r\n var indices = this._logic.genDirectiveIndices(this.directiveRecords);\r\n return this.typeName + \".gen_directiveIndices = \" + indices + \";\";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._maybeGenHandleEventInternal = function () {\r\n var _this = this;\r\n if (this.eventBindings.length > 0) {\r\n var handlers = this.eventBindings.map(function (eb) { return _this._genEventBinding(eb); }).join(\"\\n\");\r\n return \"\\n \" + this.typeName + \".prototype.handleEventInternal = function(eventName, elIndex, locals) {\\n var \" + this._names.getPreventDefaultAccesor() + \" = false;\\n \" + this._names.genInitEventLocals() + \"\\n \" + handlers + \"\\n return \" + this._names.getPreventDefaultAccesor() + \";\\n }\\n \";\r\n }\r\n else {\r\n return '';\r\n }\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genEventBinding = function (eb) {\r\n var _this = this;\r\n var codes = [];\r\n this._endOfBlockIdxs = [];\r\n collection_1.ListWrapper.forEachWithIndex(eb.records, function (r, i) {\r\n var code;\r\n if (r.isConditionalSkipRecord()) {\r\n code = _this._genConditionalSkip(r, _this._names.getEventLocalName(eb, i));\r\n }\r\n else if (r.isUnconditionalSkipRecord()) {\r\n code = _this._genUnconditionalSkip(r);\r\n }\r\n else {\r\n code = _this._genEventBindingEval(eb, r);\r\n }\r\n code += _this._genEndOfSkipBlock(i);\r\n codes.push(code);\r\n });\r\n return \"\\n if (eventName === \\\"\" + eb.eventName + \"\\\" && elIndex === \" + eb.elIndex + \") {\\n \" + codes.join(\"\\n\") + \"\\n }\";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genEventBindingEval = function (eb, r) {\r\n if (r.lastInBinding) {\r\n var evalRecord = this._logic.genEventBindingEvalValue(eb, r);\r\n var markPath = this._genMarkPathToRootAsCheckOnce(r);\r\n var prevDefault = this._genUpdatePreventDefault(eb, r);\r\n return markPath + \"\\n\" + evalRecord + \"\\n\" + prevDefault;\r\n }\r\n else {\r\n return this._logic.genEventBindingEvalValue(eb, r);\r\n }\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genMarkPathToRootAsCheckOnce = function (r) {\r\n var br = r.bindingRecord;\r\n if (br.isDefaultChangeDetection()) {\r\n return \"\";\r\n }\r\n else {\r\n return this._names.getDetectorName(br.directiveRecord.directiveIndex) + \".markPathToRootAsCheckOnce();\";\r\n }\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genUpdatePreventDefault = function (eb, r) {\r\n var local = this._names.getEventLocalName(eb, r.selfIndex);\r\n return \"if (\" + local + \" === false) { \" + this._names.getPreventDefaultAccesor() + \" = true};\";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._maybeGenDehydrateDirectives = function () {\r\n var destroyPipesCode = this._names.genPipeOnDestroy();\r\n var destroyDirectivesCode = this._logic.genDirectivesOnDestroy(this.directiveRecords);\r\n var dehydrateFieldsCode = this._names.genDehydrateFields();\r\n if (!destroyPipesCode && !destroyDirectivesCode && !dehydrateFieldsCode)\r\n return '';\r\n return this.typeName + \".prototype.dehydrateDirectives = function(destroyPipes) {\\n if (destroyPipes) {\\n \" + destroyPipesCode + \"\\n \" + destroyDirectivesCode + \"\\n }\\n \" + dehydrateFieldsCode + \"\\n }\";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._maybeGenHydrateDirectives = function () {\r\n var hydrateDirectivesCode = this._logic.genHydrateDirectives(this.directiveRecords);\r\n var hydrateDetectorsCode = this._logic.genHydrateDetectors(this.directiveRecords);\r\n if (!hydrateDirectivesCode && !hydrateDetectorsCode)\r\n return '';\r\n return this.typeName + \".prototype.hydrateDirectives = function(directives) {\\n \" + hydrateDirectivesCode + \"\\n \" + hydrateDetectorsCode + \"\\n }\";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._maybeGenAfterContentLifecycleCallbacks = function () {\r\n var notifications = this._logic.genContentLifecycleCallbacks(this.directiveRecords);\r\n if (notifications.length > 0) {\r\n var directiveNotifications = notifications.join(\"\\n\");\r\n return \"\\n \" + this.typeName + \".prototype.afterContentLifecycleCallbacksInternal = function() {\\n \" + directiveNotifications + \"\\n }\\n \";\r\n }\r\n else {\r\n return '';\r\n }\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._maybeGenAfterViewLifecycleCallbacks = function () {\r\n var notifications = this._logic.genViewLifecycleCallbacks(this.directiveRecords);\r\n if (notifications.length > 0) {\r\n var directiveNotifications = notifications.join(\"\\n\");\r\n return \"\\n \" + this.typeName + \".prototype.afterViewLifecycleCallbacksInternal = function() {\\n \" + directiveNotifications + \"\\n }\\n \";\r\n }\r\n else {\r\n return '';\r\n }\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genAllRecords = function (rs) {\r\n var codes = [];\r\n this._endOfBlockIdxs = [];\r\n for (var i = 0; i < rs.length; i++) {\r\n var code = void 0;\r\n var r = rs[i];\r\n if (r.isLifeCycleRecord()) {\r\n code = this._genDirectiveLifecycle(r);\r\n }\r\n else if (r.isPipeRecord()) {\r\n code = this._genPipeCheck(r);\r\n }\r\n else if (r.isConditionalSkipRecord()) {\r\n code = this._genConditionalSkip(r, this._names.getLocalName(r.contextIndex));\r\n }\r\n else if (r.isUnconditionalSkipRecord()) {\r\n code = this._genUnconditionalSkip(r);\r\n }\r\n else {\r\n code = this._genReferenceCheck(r);\r\n }\r\n code = \"\\n \" + this._maybeFirstInBinding(r) + \"\\n \" + code + \"\\n \" + this._maybeGenLastInDirective(r) + \"\\n \" + this._genEndOfSkipBlock(i) + \"\\n \";\r\n codes.push(code);\r\n }\r\n return codes.join(\"\\n\");\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genConditionalSkip = function (r, condition) {\r\n var maybeNegate = r.mode === proto_record_1.RecordType.SkipRecordsIf ? '!' : '';\r\n this._endOfBlockIdxs.push(r.fixedArgs[0] - 1);\r\n return \"if (\" + maybeNegate + condition + \") {\";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genUnconditionalSkip = function (r) {\r\n this._endOfBlockIdxs.pop();\r\n this._endOfBlockIdxs.push(r.fixedArgs[0] - 1);\r\n return \"} else {\";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genEndOfSkipBlock = function (protoIndex) {\r\n if (!collection_1.ListWrapper.isEmpty(this._endOfBlockIdxs)) {\r\n var endOfBlock = collection_1.ListWrapper.last(this._endOfBlockIdxs);\r\n if (protoIndex === endOfBlock) {\r\n this._endOfBlockIdxs.pop();\r\n return '}';\r\n }\r\n }\r\n return '';\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genDirectiveLifecycle = function (r) {\r\n if (r.name === \"DoCheck\") {\r\n return this._genOnCheck(r);\r\n }\r\n else if (r.name === \"OnInit\") {\r\n return this._genOnInit(r);\r\n }\r\n else if (r.name === \"OnChanges\") {\r\n return this._genOnChange(r);\r\n }\r\n else {\r\n throw new exceptions_1.BaseException(\"Unknown lifecycle event '\" + r.name + \"'\");\r\n }\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genPipeCheck = function (r) {\r\n var _this = this;\r\n var context = this._names.getLocalName(r.contextIndex);\r\n var argString = r.args.map(function (arg) { return _this._names.getLocalName(arg); }).join(\", \");\r\n var oldValue = this._names.getFieldName(r.selfIndex);\r\n var newValue = this._names.getLocalName(r.selfIndex);\r\n var pipe = this._names.getPipeName(r.selfIndex);\r\n var pipeName = r.name;\r\n var init = \"\\n if (\" + pipe + \" === \" + this.changeDetectionUtilVarName + \".uninitialized) {\\n \" + pipe + \" = \" + this._names.getPipesAccessorName() + \".get('\" + pipeName + \"');\\n }\\n \";\r\n var read = newValue + \" = \" + pipe + \".pipe.transform(\" + context + \", [\" + argString + \"]);\";\r\n var contexOrArgCheck = r.args.map(function (a) { return _this._names.getChangeName(a); });\r\n contexOrArgCheck.push(this._names.getChangeName(r.contextIndex));\r\n var condition = \"!\" + pipe + \".pure || (\" + contexOrArgCheck.join(\" || \") + \")\";\r\n var check = \"\\n \" + this._genThrowOnChangeCheck(oldValue, newValue) + \"\\n if (\" + this.changeDetectionUtilVarName + \".looseNotIdentical(\" + oldValue + \", \" + newValue + \")) {\\n \" + newValue + \" = \" + this.changeDetectionUtilVarName + \".unwrapValue(\" + newValue + \")\\n \" + this._genChangeMarker(r) + \"\\n \" + this._genUpdateDirectiveOrElement(r) + \"\\n \" + this._genAddToChanges(r) + \"\\n \" + oldValue + \" = \" + newValue + \";\\n }\\n \";\r\n var genCode = r.shouldBeChecked() ? \"\" + read + check : read;\r\n if (r.isUsedByOtherRecord()) {\r\n return init + \" if (\" + condition + \") { \" + genCode + \" } else { \" + newValue + \" = \" + oldValue + \"; }\";\r\n }\r\n else {\r\n return init + \" if (\" + condition + \") { \" + genCode + \" }\";\r\n }\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genReferenceCheck = function (r) {\r\n var _this = this;\r\n var oldValue = this._names.getFieldName(r.selfIndex);\r\n var newValue = this._names.getLocalName(r.selfIndex);\r\n var read = \"\\n \" + this._logic.genPropertyBindingEvalValue(r) + \"\\n \";\r\n var check = \"\\n \" + this._genThrowOnChangeCheck(oldValue, newValue) + \"\\n if (\" + this.changeDetectionUtilVarName + \".looseNotIdentical(\" + oldValue + \", \" + newValue + \")) {\\n \" + this._genChangeMarker(r) + \"\\n \" + this._genUpdateDirectiveOrElement(r) + \"\\n \" + this._genAddToChanges(r) + \"\\n \" + oldValue + \" = \" + newValue + \";\\n }\\n \";\r\n var genCode = r.shouldBeChecked() ? \"\" + read + check : read;\r\n if (r.isPureFunction()) {\r\n var condition = r.args.map(function (a) { return _this._names.getChangeName(a); }).join(\" || \");\r\n if (r.isUsedByOtherRecord()) {\r\n return \"if (\" + condition + \") { \" + genCode + \" } else { \" + newValue + \" = \" + oldValue + \"; }\";\r\n }\r\n else {\r\n return \"if (\" + condition + \") { \" + genCode + \" }\";\r\n }\r\n }\r\n else {\r\n return genCode;\r\n }\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genChangeMarker = function (r) {\r\n return r.argumentToPureFunction ? this._names.getChangeName(r.selfIndex) + \" = true\" : \"\";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genUpdateDirectiveOrElement = function (r) {\r\n if (!r.lastInBinding)\r\n return \"\";\r\n var newValue = this._names.getLocalName(r.selfIndex);\r\n var notifyDebug = this.genConfig.logBindingUpdate ? \"this.logBindingUpdate(\" + newValue + \");\" : \"\";\r\n var br = r.bindingRecord;\r\n if (br.target.isDirective()) {\r\n var directiveProperty = this._names.getDirectiveName(br.directiveRecord.directiveIndex) + \".\" + br.target.name;\r\n return \"\\n \" + directiveProperty + \" = \" + newValue + \";\\n \" + notifyDebug + \"\\n \" + IS_CHANGED_LOCAL + \" = true;\\n \";\r\n }\r\n else {\r\n return \"\\n this.notifyDispatcher(\" + newValue + \");\\n \" + notifyDebug + \"\\n \";\r\n }\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genThrowOnChangeCheck = function (oldValue, newValue) {\r\n if (lang_1.assertionsEnabled()) {\r\n return \"\\n if (throwOnChange && !\" + this.changeDetectionUtilVarName + \".devModeEqual(\" + oldValue + \", \" + newValue + \")) {\\n this.throwOnChangeError(\" + oldValue + \", \" + newValue + \");\\n }\\n \";\r\n }\r\n else {\r\n return '';\r\n }\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genAddToChanges = function (r) {\r\n var newValue = this._names.getLocalName(r.selfIndex);\r\n var oldValue = this._names.getFieldName(r.selfIndex);\r\n if (!r.bindingRecord.callOnChanges())\r\n return \"\";\r\n return CHANGES_LOCAL + \" = this.addChange(\" + CHANGES_LOCAL + \", \" + oldValue + \", \" + newValue + \");\";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._maybeFirstInBinding = function (r) {\r\n var prev = change_detection_util_1.ChangeDetectionUtil.protoByIndex(this.records, r.selfIndex - 1);\r\n var firstInBinding = lang_1.isBlank(prev) || prev.bindingRecord !== r.bindingRecord;\r\n return firstInBinding && !r.bindingRecord.isDirectiveLifecycle() ?\r\n this._names.getPropertyBindingIndex() + \" = \" + r.propertyBindingIndex + \";\" :\r\n '';\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._maybeGenLastInDirective = function (r) {\r\n if (!r.lastInDirective)\r\n return \"\";\r\n return \"\\n \" + CHANGES_LOCAL + \" = null;\\n \" + this._genNotifyOnPushDetectors(r) + \"\\n \" + IS_CHANGED_LOCAL + \" = false;\\n \";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genOnCheck = function (r) {\r\n var br = r.bindingRecord;\r\n return \"if (!throwOnChange) \" + this._names.getDirectiveName(br.directiveRecord.directiveIndex) + \".ngDoCheck();\";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genOnInit = function (r) {\r\n var br = r.bindingRecord;\r\n return \"if (!throwOnChange && \" + this._names.getStateName() + \" === \" + this.changeDetectorStateVarName + \".NeverChecked) \" + this._names.getDirectiveName(br.directiveRecord.directiveIndex) + \".ngOnInit();\";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genOnChange = function (r) {\r\n var br = r.bindingRecord;\r\n return \"if (!throwOnChange && \" + CHANGES_LOCAL + \") \" + this._names.getDirectiveName(br.directiveRecord.directiveIndex) + \".ngOnChanges(\" + CHANGES_LOCAL + \");\";\r\n };\r\n /** @internal */\r\n ChangeDetectorJITGenerator.prototype._genNotifyOnPushDetectors = function (r) {\r\n var br = r.bindingRecord;\r\n if (!r.lastInDirective || br.isDefaultChangeDetection())\r\n return \"\";\r\n var retVal = \"\\n if(\" + IS_CHANGED_LOCAL + \") {\\n \" + this._names.getDetectorName(br.directiveRecord.directiveIndex) + \".markAsCheckOnce();\\n }\\n \";\r\n return retVal;\r\n };\r\n return ChangeDetectorJITGenerator;\r\n})();\r\nexports.ChangeDetectorJITGenerator = ChangeDetectorJITGenerator;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RldGVjdGlvbl9qaXRfZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uX2ppdF9nZW5lcmF0b3IudHMiXSwibmFtZXMiOlsiQ2hhbmdlRGV0ZWN0b3JKSVRHZW5lcmF0b3IiLCJDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvci5jb25zdHJ1Y3RvciIsIkNoYW5nZURldGVjdG9ySklUR2VuZXJhdG9yLmdlbmVyYXRlIiwiQ2hhbmdlRGV0ZWN0b3JKSVRHZW5lcmF0b3IuZ2VuZXJhdGVTb3VyY2UiLCJDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvci5fZ2VuUHJvcGVydHlCaW5kaW5nVGFyZ2V0cyIsIkNoYW5nZURldGVjdG9ySklUR2VuZXJhdG9yLl9nZW5EaXJlY3RpdmVJbmRpY2VzIiwiQ2hhbmdlRGV0ZWN0b3JKSVRHZW5lcmF0b3IuX21heWJlR2VuSGFuZGxlRXZlbnRJbnRlcm5hbCIsIkNoYW5nZURldGVjdG9ySklUR2VuZXJhdG9yLl9nZW5FdmVudEJpbmRpbmciLCJDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvci5fZ2VuRXZlbnRCaW5kaW5nRXZhbCIsIkNoYW5nZURldGVjdG9ySklUR2VuZXJhdG9yLl9nZW5NYXJrUGF0aFRvUm9vdEFzQ2hlY2tPbmNlIiwiQ2hhbmdlRGV0ZWN0b3JKSVRHZW5lcmF0b3IuX2dlblVwZGF0ZVByZXZlbnREZWZhdWx0IiwiQ2hhbmdlRGV0ZWN0b3JKSVRHZW5lcmF0b3IuX21heWJlR2VuRGVoeWRyYXRlRGlyZWN0aXZlcyIsIkNoYW5nZURldGVjdG9ySklUR2VuZXJhdG9yLl9tYXliZUdlbkh5ZHJhdGVEaXJlY3RpdmVzIiwiQ2hhbmdlRGV0ZWN0b3JKSVRHZW5lcmF0b3IuX21heWJlR2VuQWZ0ZXJDb250ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzIiwiQ2hhbmdlRGV0ZWN0b3JKSVRHZW5lcmF0b3IuX21heWJlR2VuQWZ0ZXJWaWV3TGlmZWN5Y2xlQ2FsbGJhY2tzIiwiQ2hhbmdlRGV0ZWN0b3JKSVRHZW5lcmF0b3IuX2dlbkFsbFJlY29yZHMiLCJDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvci5fZ2VuQ29uZGl0aW9uYWxTa2lwIiwiQ2hhbmdlRGV0ZWN0b3JKSVRHZW5lcmF0b3IuX2dlblVuY29uZGl0aW9uYWxTa2lwIiwiQ2hhbmdlRGV0ZWN0b3JKSVRHZW5lcmF0b3IuX2dlbkVuZE9mU2tpcEJsb2NrIiwiQ2hhbmdlRGV0ZWN0b3JKSVRHZW5lcmF0b3IuX2dlbkRpcmVjdGl2ZUxpZmVjeWNsZSIsIkNoYW5nZURldGVjdG9ySklUR2VuZXJhdG9yLl9nZW5QaXBlQ2hlY2siLCJDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvci5fZ2VuUmVmZXJlbmNlQ2hlY2siLCJDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvci5fZ2VuQ2hhbmdlTWFya2VyIiwiQ2hhbmdlRGV0ZWN0b3JKSVRHZW5lcmF0b3IuX2dlblVwZGF0ZURpcmVjdGl2ZU9yRWxlbWVudCIsIkNoYW5nZURldGVjdG9ySklUR2VuZXJhdG9yLl9nZW5UaHJvd09uQ2hhbmdlQ2hlY2siLCJDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvci5fZ2VuQWRkVG9DaGFuZ2VzIiwiQ2hhbmdlRGV0ZWN0b3JKSVRHZW5lcmF0b3IuX21heWJlRmlyc3RJbkJpbmRpbmciLCJDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvci5fbWF5YmVHZW5MYXN0SW5EaXJlY3RpdmUiLCJDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvci5fZ2VuT25DaGVjayIsIkNoYW5nZURldGVjdG9ySklUR2VuZXJhdG9yLl9nZW5PbkluaXQiLCJDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvci5fZ2VuT25DaGFuZ2UiLCJDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvci5fZ2VuTm90aWZ5T25QdXNoRGV0ZWN0b3JzIl0sIm1hcHBpbmdzIjoiQUFBQSxxQkFBeUUsMEJBQTBCLENBQUMsQ0FBQTtB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QkE7SUFDaEJBLGlEQUFZQSxHQUFaQSxVQUFhQSxDQUFjQTtRQUN6QjhCLElBQUlBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBLGFBQWFBLENBQUNBO1FBQ3pCQSxNQUFNQSxDQUFDQSwyQkFBeUJBLGFBQWFBLFVBQUtBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLGdCQUFnQkEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsZUFBZUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EscUJBQWdCQSxhQUFhQSxPQUFJQSxDQUFDQTtJQUNySkEsQ0FBQ0E7SUFFRDlCLGdCQUFnQkE7SUFDaEJBLDhEQUF5QkEsR0FBekJBLFVBQTBCQSxDQUFjQTtRQUN0QytCLElBQUlBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBLGFBQWFBLENBQUNBO1FBQ3pCQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxlQUFlQSxJQUFJQSxFQUFFQSxDQUFDQSx3QkFBd0JBLEVBQUVBLENBQUNBO1lBQUNBLE1BQU1BLENBQUNBLEVBQUVBLENBQUNBO1FBQ25FQSxJQUFJQSxNQUFNQSxHQUFHQSxnQkFDTkEsZ0JBQWdCQSxxQkFDakJBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLGVBQWVBLENBQUNBLEVBQUVBLENBQUNBLGVBQWVBLENBQUNBLGNBQWNBLENBQUNBLHVDQUVuRUEsQ0FBQ0E7UUFDRkEsTUFBTUEsQ0FBQ0EsTUFBTUEsQ0FBQ0E7SUFDaEJBLENBQUNBO0lBQ0gvQixpQ0FBQ0E7QUFBREEsQ0FBQ0EsQUF0ZEQsSUFzZEM7QUF0ZFksa0NBQTBCLDZCQXNkdEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZSwgYXNzZXJ0aW9uc0VuYWJsZWQsIGlzQmxhbmssIGlzUHJlc2VudCwgU3RyaW5nV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7TGlzdFdyYXBwZXIsIE1hcFdyYXBwZXIsIFN0cmluZ01hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5cbmltcG9ydCB7QWJzdHJhY3RDaGFuZ2VEZXRlY3Rvcn0gZnJvbSAnLi9hYnN0cmFjdF9jaGFuZ2VfZGV0ZWN0b3InO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25VdGlsfSBmcm9tICcuL2NoYW5nZV9kZXRlY3Rpb25fdXRpbCc7XG5pbXBvcnQge0RpcmVjdGl2ZUluZGV4LCBEaXJlY3RpdmVSZWNvcmR9IGZyb20gJy4vZGlyZWN0aXZlX3JlY29yZCc7XG5cbmltcG9ydCB7UHJvdG9SZWNvcmQsIFJlY29yZFR5cGV9IGZyb20gJy4vcHJvdG9fcmVjb3JkJztcbmltcG9ydCB7Q29kZWdlbk5hbWVVdGlsLCBzYW5pdGl6ZU5hbWV9IGZyb20gJy4vY29kZWdlbl9uYW1lX3V0aWwnO1xuaW1wb3J0IHtDb2RlZ2VuTG9naWNVdGlsfSBmcm9tICcuL2NvZGVnZW5fbG9naWNfdXRpbCc7XG5pbXBvcnQge2NvZGlmeX0gZnJvbSAnLi9jb2RlZ2VuX2ZhY2FkZSc7XG5pbXBvcnQge0V2ZW50QmluZGluZ30gZnJvbSAnLi9ldmVudF9iaW5kaW5nJztcbmltcG9ydCB7QmluZGluZ1RhcmdldH0gZnJvbSAnLi9iaW5kaW5nX3JlY29yZCc7XG5pbXBvcnQge0NoYW5nZURldGVjdG9yR2VuQ29uZmlnLCBDaGFuZ2VEZXRlY3RvckRlZmluaXRpb259IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclN0YXRlfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge2NyZWF0ZVByb3BlcnR5UmVjb3JkcywgY3JlYXRlRXZlbnRSZWNvcmRzfSBmcm9tICcuL3Byb3RvX2NoYW5nZV9kZXRlY3Rvcic7XG5cbi8qKlxuICogVGhlIGNvZGUgZ2VuZXJhdG9yIHRha2VzIGEgbGlzdCBvZiBwcm90byByZWNvcmRzIGFuZCBjcmVhdGVzIGEgZnVuY3Rpb24vY2xhc3NcbiAqIHRoYXQgXCJlbXVsYXRlc1wiIHdoYXQgdGhlIGRldmVsb3BlciB3b3VsZCB3cml0ZSBieSBoYW5kIHRvIGltcGxlbWVudCB0aGUgc2FtZVxuICoga2luZCBvZiBiZWhhdmlvdXIuXG4gKlxuICogVGhpcyBjb2RlIHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgRGFydCB0cmFuc2Zvcm1lcidzXG4gKiBgYW5ndWxhcjIudHJhbnNmb3JtLnRlbXBsYXRlX2NvbXBpbGVyLmNoYW5nZV9kZXRlY3Rvcl9jb2RlZ2VuYCBsaWJyYXJ5LiBJZiB5b3UgbWFrZSB1cGRhdGVzXG4gKiBoZXJlLCBwbGVhc2UgbWFrZSBlcXVpdmFsZW50IGNoYW5nZXMgdGhlcmUuXG4qL1xuY29uc3QgSVNfQ0hBTkdFRF9MT0NBTCA9IFwiaXNDaGFuZ2VkXCI7XG5jb25zdCBDSEFOR0VTX0xPQ0FMID0gXCJjaGFuZ2VzXCI7XG5cbmV4cG9ydCBjbGFzcyBDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvciB7XG4gIHByaXZhdGUgX2xvZ2ljOiBDb2RlZ2VuTG9naWNVdGlsO1xuICBwcml2YXRlIF9uYW1lczogQ29kZWdlbk5hbWVVdGlsO1xuICBwcml2YXRlIF9lbmRPZkJsb2NrSWR4czogbnVtYmVyW107XG4gIHByaXZhdGUgaWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb25TdHJhdGVneTogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3k7XG4gIHByaXZhdGUgcmVjb3JkczogUHJvdG9SZWNvcmRbXTtcbiAgcHJpdmF0ZSBwcm9wZXJ0eUJpbmRpbmdUYXJnZXRzOiBCaW5kaW5nVGFyZ2V0W107XG4gIHByaXZhdGUgZXZlbnRCaW5kaW5nczogRXZlbnRCaW5kaW5nW107XG4gIHByaXZhdGUgZGlyZWN0aXZlUmVjb3JkczogYW55W107XG4gIHByaXZhdGUgZ2VuQ29uZmlnOiBDaGFuZ2VEZXRlY3RvckdlbkNvbmZpZztcbiAgdHlwZU5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkZWZpbml0aW9uOiBDaGFuZ2VEZXRlY3RvckRlZmluaXRpb24sIHByaXZhdGUgY2hhbmdlRGV0ZWN0aW9uVXRpbFZhck5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhYnN0cmFjdENoYW5nZURldGVjdG9yVmFyTmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yU3RhdGVWYXJOYW1lOiBzdHJpbmcpIHtcbiAgICB2YXIgcHJvcGVydHlCaW5kaW5nUmVjb3JkcyA9IGNyZWF0ZVByb3BlcnR5UmVjb3JkcyhkZWZpbml0aW9uKTtcbiAgICB2YXIgZXZlbnRCaW5kaW5nUmVjb3JkcyA9IGNyZWF0ZUV2ZW50UmVjb3JkcyhkZWZpbml0aW9uKTtcbiAgICB2YXIgcHJvcGVydHlCaW5kaW5nVGFyZ2V0cyA9IGRlZmluaXRpb24uYmluZGluZ1JlY29yZHMubWFwKGIgPT4gYi50YXJnZXQpO1xuICAgIHRoaXMuaWQgPSBkZWZpbml0aW9uLmlkO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgPSBkZWZpbml0aW9uLnN0cmF0ZWd5O1xuICAgIHRoaXMuZ2VuQ29uZmlnID0gZGVmaW5pdGlvbi5nZW5Db25maWc7XG5cbiAgICB0aGlzLnJlY29yZHMgPSBwcm9wZXJ0eUJpbmRpbmdSZWNvcmRzO1xuICAgIHRoaXMucHJvcGVydHlCaW5kaW5nVGFyZ2V0cyA9IHByb3BlcnR5QmluZGluZ1RhcmdldHM7XG4gICAgdGhpcy5ldmVudEJpbmRpbmdzID0gZXZlbnRCaW5kaW5nUmVjb3JkcztcbiAgICB0aGlzLmRpcmVjdGl2ZVJlY29yZHMgPSBkZWZpbml0aW9uLmRpcmVjdGl2ZVJlY29yZHM7XG4gICAgdGhpcy5fbmFtZXMgPSBuZXcgQ29kZWdlbk5hbWVVdGlsKHRoaXMucmVjb3JkcywgdGhpcy5ldmVudEJpbmRpbmdzLCB0aGlzLmRpcmVjdGl2ZVJlY29yZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uVXRpbFZhck5hbWUpO1xuICAgIHRoaXMuX2xvZ2ljID0gbmV3IENvZGVnZW5Mb2dpY1V0aWwodGhpcy5fbmFtZXMsIHRoaXMuY2hhbmdlRGV0ZWN0aW9uVXRpbFZhck5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yU3RhdGVWYXJOYW1lKTtcbiAgICB0aGlzLnR5cGVOYW1lID0gc2FuaXRpemVOYW1lKGBDaGFuZ2VEZXRlY3Rvcl8ke3RoaXMuaWR9YCk7XG4gIH1cblxuICBnZW5lcmF0ZSgpOiBGdW5jdGlvbiB7XG4gICAgdmFyIGZhY3RvcnlTb3VyY2UgPSBgXG4gICAgICAke3RoaXMuZ2VuZXJhdGVTb3VyY2UoKX1cbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyAke3RoaXMudHlwZU5hbWV9KCk7XG4gICAgICB9XG4gICAgYDtcbiAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKHRoaXMuYWJzdHJhY3RDaGFuZ2VEZXRlY3RvclZhck5hbWUsIHRoaXMuY2hhbmdlRGV0ZWN0aW9uVXRpbFZhck5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yU3RhdGVWYXJOYW1lLCBmYWN0b3J5U291cmNlKShcbiAgICAgICAgQWJzdHJhY3RDaGFuZ2VEZXRlY3RvciwgQ2hhbmdlRGV0ZWN0aW9uVXRpbCwgQ2hhbmdlRGV0ZWN0b3JTdGF0ZSk7XG4gIH1cblxuICBnZW5lcmF0ZVNvdXJjZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgXG4gICAgICB2YXIgJHt0aGlzLnR5cGVOYW1lfSA9IGZ1bmN0aW9uICR7dGhpcy50eXBlTmFtZX0oKSB7XG4gICAgICAgICR7dGhpcy5hYnN0cmFjdENoYW5nZURldGVjdG9yVmFyTmFtZX0uY2FsbChcbiAgICAgICAgICAgIHRoaXMsICR7SlNPTi5zdHJpbmdpZnkodGhpcy5pZCl9LCAke3RoaXMucmVjb3Jkcy5sZW5ndGh9LFxuICAgICAgICAgICAgJHt0aGlzLnR5cGVOYW1lfS5nZW5fcHJvcGVydHlCaW5kaW5nVGFyZ2V0cywgJHt0aGlzLnR5cGVOYW1lfS5nZW5fZGlyZWN0aXZlSW5kaWNlcyxcbiAgICAgICAgICAgICR7Y29kaWZ5KHRoaXMuY2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kpfSk7XG4gICAgICAgIHRoaXMuZGVoeWRyYXRlRGlyZWN0aXZlcyhmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgICR7dGhpcy50eXBlTmFtZX0ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSgke3RoaXMuYWJzdHJhY3RDaGFuZ2VEZXRlY3RvclZhck5hbWV9LnByb3RvdHlwZSk7XG5cbiAgICAgICR7dGhpcy50eXBlTmFtZX0ucHJvdG90eXBlLmRldGVjdENoYW5nZXNJblJlY29yZHNJbnRlcm5hbCA9IGZ1bmN0aW9uKHRocm93T25DaGFuZ2UpIHtcbiAgICAgICAgJHt0aGlzLl9uYW1lcy5nZW5Jbml0TG9jYWxzKCl9XG4gICAgICAgIHZhciAke0lTX0NIQU5HRURfTE9DQUx9ID0gZmFsc2U7XG4gICAgICAgIHZhciAke0NIQU5HRVNfTE9DQUx9ID0gbnVsbDtcblxuICAgICAgICAke3RoaXMuX2dlbkFsbFJlY29yZHModGhpcy5yZWNvcmRzKX1cbiAgICAgIH1cblxuICAgICAgJHt0aGlzLl9tYXliZUdlbkhhbmRsZUV2ZW50SW50ZXJuYWwoKX1cblxuICAgICAgJHt0aGlzLl9tYXliZUdlbkFmdGVyQ29udGVudExpZmVjeWNsZUNhbGxiYWNrcygpfVxuXG4gICAgICAke3RoaXMuX21heWJlR2VuQWZ0ZXJWaWV3TGlmZWN5Y2xlQ2FsbGJhY2tzKCl9XG5cbiAgICAgICR7dGhpcy5fbWF5YmVHZW5IeWRyYXRlRGlyZWN0aXZlcygpfVxuXG4gICAgICAke3RoaXMuX21heWJlR2VuRGVoeWRyYXRlRGlyZWN0aXZlcygpfVxuXG4gICAgICAke3RoaXMuX2dlblByb3BlcnR5QmluZGluZ1RhcmdldHMoKX1cblxuICAgICAgJHt0aGlzLl9nZW5EaXJlY3RpdmVJbmRpY2VzKCl9XG4gICAgYDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dlblByb3BlcnR5QmluZGluZ1RhcmdldHMoKTogc3RyaW5nIHtcbiAgICB2YXIgdGFyZ2V0cyA9IHRoaXMuX2xvZ2ljLmdlblByb3BlcnR5QmluZGluZ1RhcmdldHModGhpcy5wcm9wZXJ0eUJpbmRpbmdUYXJnZXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbkNvbmZpZy5nZW5EZWJ1Z0luZm8pO1xuICAgIHJldHVybiBgJHt0aGlzLnR5cGVOYW1lfS5nZW5fcHJvcGVydHlCaW5kaW5nVGFyZ2V0cyA9ICR7dGFyZ2V0c307YDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dlbkRpcmVjdGl2ZUluZGljZXMoKTogc3RyaW5nIHtcbiAgICB2YXIgaW5kaWNlcyA9IHRoaXMuX2xvZ2ljLmdlbkRpcmVjdGl2ZUluZGljZXModGhpcy5kaXJlY3RpdmVSZWNvcmRzKTtcbiAgICByZXR1cm4gYCR7dGhpcy50eXBlTmFtZX0uZ2VuX2RpcmVjdGl2ZUluZGljZXMgPSAke2luZGljZXN9O2A7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9tYXliZUdlbkhhbmRsZUV2ZW50SW50ZXJuYWwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5ldmVudEJpbmRpbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBoYW5kbGVycyA9IHRoaXMuZXZlbnRCaW5kaW5ncy5tYXAoZWIgPT4gdGhpcy5fZ2VuRXZlbnRCaW5kaW5nKGViKSkuam9pbihcIlxcblwiKTtcbiAgICAgIHJldHVybiBgXG4gICAgICAgICR7dGhpcy50eXBlTmFtZX0ucHJvdG90eXBlLmhhbmRsZUV2ZW50SW50ZXJuYWwgPSBmdW5jdGlvbihldmVudE5hbWUsIGVsSW5kZXgsIGxvY2Fscykge1xuICAgICAgICAgIHZhciAke3RoaXMuX25hbWVzLmdldFByZXZlbnREZWZhdWx0QWNjZXNvcigpfSA9IGZhbHNlO1xuICAgICAgICAgICR7dGhpcy5fbmFtZXMuZ2VuSW5pdEV2ZW50TG9jYWxzKCl9XG4gICAgICAgICAgJHtoYW5kbGVyc31cbiAgICAgICAgICByZXR1cm4gJHt0aGlzLl9uYW1lcy5nZXRQcmV2ZW50RGVmYXVsdEFjY2Vzb3IoKX07XG4gICAgICAgIH1cbiAgICAgIGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9nZW5FdmVudEJpbmRpbmcoZWI6IEV2ZW50QmluZGluZyk6IHN0cmluZyB7XG4gICAgbGV0IGNvZGVzOiBTdHJpbmdbXSA9IFtdO1xuICAgIHRoaXMuX2VuZE9mQmxvY2tJZHhzID0gW107XG5cbiAgICBMaXN0V3JhcHBlci5mb3JFYWNoV2l0aEluZGV4KGViLnJlY29yZHMsIChyLCBpKSA9PiB7XG4gICAgICBsZXQgY29kZTtcblxuICAgICAgaWYgKHIuaXNDb25kaXRpb25hbFNraXBSZWNvcmQoKSkge1xuICAgICAgICBjb2RlID0gdGhpcy5fZ2VuQ29uZGl0aW9uYWxTa2lwKHIsIHRoaXMuX25hbWVzLmdldEV2ZW50TG9jYWxOYW1lKGViLCBpKSk7XG4gICAgICB9IGVsc2UgaWYgKHIuaXNVbmNvbmRpdGlvbmFsU2tpcFJlY29yZCgpKSB7XG4gICAgICAgIGNvZGUgPSB0aGlzLl9nZW5VbmNvbmRpdGlvbmFsU2tpcChyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvZGUgPSB0aGlzLl9nZW5FdmVudEJpbmRpbmdFdmFsKGViLCByKTtcbiAgICAgIH1cblxuICAgICAgY29kZSArPSB0aGlzLl9nZW5FbmRPZlNraXBCbG9jayhpKTtcblxuICAgICAgY29kZXMucHVzaChjb2RlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBgXG4gICAgaWYgKGV2ZW50TmFtZSA9PT0gXCIke2ViLmV2ZW50TmFtZX1cIiAmJiBlbEluZGV4ID09PSAke2ViLmVsSW5kZXh9KSB7XG4gICAgICAke2NvZGVzLmpvaW4oXCJcXG5cIil9XG4gICAgfWA7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9nZW5FdmVudEJpbmRpbmdFdmFsKGViOiBFdmVudEJpbmRpbmcsIHI6IFByb3RvUmVjb3JkKTogc3RyaW5nIHtcbiAgICBpZiAoci5sYXN0SW5CaW5kaW5nKSB7XG4gICAgICB2YXIgZXZhbFJlY29yZCA9IHRoaXMuX2xvZ2ljLmdlbkV2ZW50QmluZGluZ0V2YWxWYWx1ZShlYiwgcik7XG4gICAgICB2YXIgbWFya1BhdGggPSB0aGlzLl9nZW5NYXJrUGF0aFRvUm9vdEFzQ2hlY2tPbmNlKHIpO1xuICAgICAgdmFyIHByZXZEZWZhdWx0ID0gdGhpcy5fZ2VuVXBkYXRlUHJldmVudERlZmF1bHQoZWIsIHIpO1xuICAgICAgcmV0dXJuIGAke21hcmtQYXRofVxcbiR7ZXZhbFJlY29yZH1cXG4ke3ByZXZEZWZhdWx0fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9sb2dpYy5nZW5FdmVudEJpbmRpbmdFdmFsVmFsdWUoZWIsIHIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dlbk1hcmtQYXRoVG9Sb290QXNDaGVja09uY2UocjogUHJvdG9SZWNvcmQpOiBzdHJpbmcge1xuICAgIHZhciBiciA9IHIuYmluZGluZ1JlY29yZDtcbiAgICBpZiAoYnIuaXNEZWZhdWx0Q2hhbmdlRGV0ZWN0aW9uKCkpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5fbmFtZXMuZ2V0RGV0ZWN0b3JOYW1lKGJyLmRpcmVjdGl2ZVJlY29yZC5kaXJlY3RpdmVJbmRleCl9Lm1hcmtQYXRoVG9Sb290QXNDaGVja09uY2UoKTtgO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dlblVwZGF0ZVByZXZlbnREZWZhdWx0KGViOiBFdmVudEJpbmRpbmcsIHI6IFByb3RvUmVjb3JkKTogc3RyaW5nIHtcbiAgICB2YXIgbG9jYWwgPSB0aGlzLl9uYW1lcy5nZXRFdmVudExvY2FsTmFtZShlYiwgci5zZWxmSW5kZXgpO1xuICAgIHJldHVybiBgaWYgKCR7bG9jYWx9ID09PSBmYWxzZSkgeyAke3RoaXMuX25hbWVzLmdldFByZXZlbnREZWZhdWx0QWNjZXNvcigpfSA9IHRydWV9O2A7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9tYXliZUdlbkRlaHlkcmF0ZURpcmVjdGl2ZXMoKTogc3RyaW5nIHtcbiAgICB2YXIgZGVzdHJveVBpcGVzQ29kZSA9IHRoaXMuX25hbWVzLmdlblBpcGVPbkRlc3Ryb3koKTtcbiAgICB2YXIgZGVzdHJveURpcmVjdGl2ZXNDb2RlID0gdGhpcy5fbG9naWMuZ2VuRGlyZWN0aXZlc09uRGVzdHJveSh0aGlzLmRpcmVjdGl2ZVJlY29yZHMpO1xuICAgIHZhciBkZWh5ZHJhdGVGaWVsZHNDb2RlID0gdGhpcy5fbmFtZXMuZ2VuRGVoeWRyYXRlRmllbGRzKCk7XG4gICAgaWYgKCFkZXN0cm95UGlwZXNDb2RlICYmICFkZXN0cm95RGlyZWN0aXZlc0NvZGUgJiYgIWRlaHlkcmF0ZUZpZWxkc0NvZGUpIHJldHVybiAnJztcbiAgICByZXR1cm4gYCR7dGhpcy50eXBlTmFtZX0ucHJvdG90eXBlLmRlaHlkcmF0ZURpcmVjdGl2ZXMgPSBmdW5jdGlvbihkZXN0cm95UGlwZXMpIHtcbiAgICAgICAgaWYgKGRlc3Ryb3lQaXBlcykge1xuICAgICAgICAgICR7ZGVzdHJveVBpcGVzQ29kZX1cbiAgICAgICAgICAke2Rlc3Ryb3lEaXJlY3RpdmVzQ29kZX1cbiAgICAgICAgfVxuICAgICAgICAke2RlaHlkcmF0ZUZpZWxkc0NvZGV9XG4gICAgfWA7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9tYXliZUdlbkh5ZHJhdGVEaXJlY3RpdmVzKCk6IHN0cmluZyB7XG4gICAgdmFyIGh5ZHJhdGVEaXJlY3RpdmVzQ29kZSA9IHRoaXMuX2xvZ2ljLmdlbkh5ZHJhdGVEaXJlY3RpdmVzKHRoaXMuZGlyZWN0aXZlUmVjb3Jkcyk7XG4gICAgdmFyIGh5ZHJhdGVEZXRlY3RvcnNDb2RlID0gdGhpcy5fbG9naWMuZ2VuSHlkcmF0ZURldGVjdG9ycyh0aGlzLmRpcmVjdGl2ZVJlY29yZHMpO1xuICAgIGlmICghaHlkcmF0ZURpcmVjdGl2ZXNDb2RlICYmICFoeWRyYXRlRGV0ZWN0b3JzQ29kZSkgcmV0dXJuICcnO1xuICAgIHJldHVybiBgJHt0aGlzLnR5cGVOYW1lfS5wcm90b3R5cGUuaHlkcmF0ZURpcmVjdGl2ZXMgPSBmdW5jdGlvbihkaXJlY3RpdmVzKSB7XG4gICAgICAke2h5ZHJhdGVEaXJlY3RpdmVzQ29kZX1cbiAgICAgICR7aHlkcmF0ZURldGVjdG9yc0NvZGV9XG4gICAgfWA7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9tYXliZUdlbkFmdGVyQ29udGVudExpZmVjeWNsZUNhbGxiYWNrcygpOiBzdHJpbmcge1xuICAgIHZhciBub3RpZmljYXRpb25zID0gdGhpcy5fbG9naWMuZ2VuQ29udGVudExpZmVjeWNsZUNhbGxiYWNrcyh0aGlzLmRpcmVjdGl2ZVJlY29yZHMpO1xuICAgIGlmIChub3RpZmljYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBkaXJlY3RpdmVOb3RpZmljYXRpb25zID0gbm90aWZpY2F0aW9ucy5qb2luKFwiXFxuXCIpO1xuICAgICAgcmV0dXJuIGBcbiAgICAgICAgJHt0aGlzLnR5cGVOYW1lfS5wcm90b3R5cGUuYWZ0ZXJDb250ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzSW50ZXJuYWwgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAke2RpcmVjdGl2ZU5vdGlmaWNhdGlvbnN9XG4gICAgICAgIH1cbiAgICAgIGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9tYXliZUdlbkFmdGVyVmlld0xpZmVjeWNsZUNhbGxiYWNrcygpOiBzdHJpbmcge1xuICAgIHZhciBub3RpZmljYXRpb25zID0gdGhpcy5fbG9naWMuZ2VuVmlld0xpZmVjeWNsZUNhbGxiYWNrcyh0aGlzLmRpcmVjdGl2ZVJlY29yZHMpO1xuICAgIGlmIChub3RpZmljYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBkaXJlY3RpdmVOb3RpZmljYXRpb25zID0gbm90aWZpY2F0aW9ucy5qb2luKFwiXFxuXCIpO1xuICAgICAgcmV0dXJuIGBcbiAgICAgICAgJHt0aGlzLnR5cGVOYW1lfS5wcm90b3R5cGUuYWZ0ZXJWaWV3TGlmZWN5Y2xlQ2FsbGJhY2tzSW50ZXJuYWwgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAke2RpcmVjdGl2ZU5vdGlmaWNhdGlvbnN9XG4gICAgICAgIH1cbiAgICAgIGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9nZW5BbGxSZWNvcmRzKHJzOiBQcm90b1JlY29yZFtdKTogc3RyaW5nIHtcbiAgICB2YXIgY29kZXM6IFN0cmluZ1tdID0gW107XG4gICAgdGhpcy5fZW5kT2ZCbG9ja0lkeHMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjb2RlO1xuICAgICAgbGV0IHIgPSByc1tpXTtcblxuICAgICAgaWYgKHIuaXNMaWZlQ3ljbGVSZWNvcmQoKSkge1xuICAgICAgICBjb2RlID0gdGhpcy5fZ2VuRGlyZWN0aXZlTGlmZWN5Y2xlKHIpO1xuICAgICAgfSBlbHNlIGlmIChyLmlzUGlwZVJlY29yZCgpKSB7XG4gICAgICAgIGNvZGUgPSB0aGlzLl9nZW5QaXBlQ2hlY2socik7XG4gICAgICB9IGVsc2UgaWYgKHIuaXNDb25kaXRpb25hbFNraXBSZWNvcmQoKSkge1xuICAgICAgICBjb2RlID0gdGhpcy5fZ2VuQ29uZGl0aW9uYWxTa2lwKHIsIHRoaXMuX25hbWVzLmdldExvY2FsTmFtZShyLmNvbnRleHRJbmRleCkpO1xuICAgICAgfSBlbHNlIGlmIChyLmlzVW5jb25kaXRpb25hbFNraXBSZWNvcmQoKSkge1xuICAgICAgICBjb2RlID0gdGhpcy5fZ2VuVW5jb25kaXRpb25hbFNraXAocik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2RlID0gdGhpcy5fZ2VuUmVmZXJlbmNlQ2hlY2socik7XG4gICAgICB9XG5cbiAgICAgIGNvZGUgPSBgXG4gICAgICAgICR7dGhpcy5fbWF5YmVGaXJzdEluQmluZGluZyhyKX1cbiAgICAgICAgJHtjb2RlfVxuICAgICAgICAke3RoaXMuX21heWJlR2VuTGFzdEluRGlyZWN0aXZlKHIpfVxuICAgICAgICAke3RoaXMuX2dlbkVuZE9mU2tpcEJsb2NrKGkpfVxuICAgICAgYDtcblxuICAgICAgY29kZXMucHVzaChjb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29kZXMuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dlbkNvbmRpdGlvbmFsU2tpcChyOiBQcm90b1JlY29yZCwgY29uZGl0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBtYXliZU5lZ2F0ZSA9IHIubW9kZSA9PT0gUmVjb3JkVHlwZS5Ta2lwUmVjb3Jkc0lmID8gJyEnIDogJyc7XG4gICAgdGhpcy5fZW5kT2ZCbG9ja0lkeHMucHVzaChyLmZpeGVkQXJnc1swXSAtIDEpO1xuXG4gICAgcmV0dXJuIGBpZiAoJHttYXliZU5lZ2F0ZX0ke2NvbmRpdGlvbn0pIHtgO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZ2VuVW5jb25kaXRpb25hbFNraXAocjogUHJvdG9SZWNvcmQpOiBzdHJpbmcge1xuICAgIHRoaXMuX2VuZE9mQmxvY2tJZHhzLnBvcCgpO1xuICAgIHRoaXMuX2VuZE9mQmxvY2tJZHhzLnB1c2goci5maXhlZEFyZ3NbMF0gLSAxKTtcbiAgICByZXR1cm4gYH0gZWxzZSB7YDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dlbkVuZE9mU2tpcEJsb2NrKHByb3RvSW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKCFMaXN0V3JhcHBlci5pc0VtcHR5KHRoaXMuX2VuZE9mQmxvY2tJZHhzKSkge1xuICAgICAgbGV0IGVuZE9mQmxvY2sgPSBMaXN0V3JhcHBlci5sYXN0KHRoaXMuX2VuZE9mQmxvY2tJZHhzKTtcbiAgICAgIGlmIChwcm90b0luZGV4ID09PSBlbmRPZkJsb2NrKSB7XG4gICAgICAgIHRoaXMuX2VuZE9mQmxvY2tJZHhzLnBvcCgpO1xuICAgICAgICByZXR1cm4gJ30nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dlbkRpcmVjdGl2ZUxpZmVjeWNsZShyOiBQcm90b1JlY29yZCk6IHN0cmluZyB7XG4gICAgaWYgKHIubmFtZSA9PT0gXCJEb0NoZWNrXCIpIHtcbiAgICAgIHJldHVybiB0aGlzLl9nZW5PbkNoZWNrKHIpO1xuICAgIH0gZWxzZSBpZiAoci5uYW1lID09PSBcIk9uSW5pdFwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2VuT25Jbml0KHIpO1xuICAgIH0gZWxzZSBpZiAoci5uYW1lID09PSBcIk9uQ2hhbmdlc1wiKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2VuT25DaGFuZ2Uocik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBVbmtub3duIGxpZmVjeWNsZSBldmVudCAnJHtyLm5hbWV9J2ApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dlblBpcGVDaGVjayhyOiBQcm90b1JlY29yZCk6IHN0cmluZyB7XG4gICAgdmFyIGNvbnRleHQgPSB0aGlzLl9uYW1lcy5nZXRMb2NhbE5hbWUoci5jb250ZXh0SW5kZXgpO1xuICAgIHZhciBhcmdTdHJpbmcgPSByLmFyZ3MubWFwKChhcmcpID0+IHRoaXMuX25hbWVzLmdldExvY2FsTmFtZShhcmcpKS5qb2luKFwiLCBcIik7XG5cbiAgICB2YXIgb2xkVmFsdWUgPSB0aGlzLl9uYW1lcy5nZXRGaWVsZE5hbWUoci5zZWxmSW5kZXgpO1xuICAgIHZhciBuZXdWYWx1ZSA9IHRoaXMuX25hbWVzLmdldExvY2FsTmFtZShyLnNlbGZJbmRleCk7XG5cbiAgICB2YXIgcGlwZSA9IHRoaXMuX25hbWVzLmdldFBpcGVOYW1lKHIuc2VsZkluZGV4KTtcbiAgICB2YXIgcGlwZU5hbWUgPSByLm5hbWU7XG5cbiAgICB2YXIgaW5pdCA9IGBcbiAgICAgIGlmICgke3BpcGV9ID09PSAke3RoaXMuY2hhbmdlRGV0ZWN0aW9uVXRpbFZhck5hbWV9LnVuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgJHtwaXBlfSA9ICR7dGhpcy5fbmFtZXMuZ2V0UGlwZXNBY2Nlc3Nvck5hbWUoKX0uZ2V0KCcke3BpcGVOYW1lfScpO1xuICAgICAgfVxuICAgIGA7XG4gICAgdmFyIHJlYWQgPSBgJHtuZXdWYWx1ZX0gPSAke3BpcGV9LnBpcGUudHJhbnNmb3JtKCR7Y29udGV4dH0sIFske2FyZ1N0cmluZ31dKTtgO1xuXG4gICAgdmFyIGNvbnRleE9yQXJnQ2hlY2sgPSByLmFyZ3MubWFwKChhKSA9PiB0aGlzLl9uYW1lcy5nZXRDaGFuZ2VOYW1lKGEpKTtcbiAgICBjb250ZXhPckFyZ0NoZWNrLnB1c2godGhpcy5fbmFtZXMuZ2V0Q2hhbmdlTmFtZShyLmNvbnRleHRJbmRleCkpO1xuICAgIHZhciBjb25kaXRpb24gPSBgISR7cGlwZX0ucHVyZSB8fCAoJHtjb250ZXhPckFyZ0NoZWNrLmpvaW4oXCIgfHwgXCIpfSlgO1xuXG4gICAgdmFyIGNoZWNrID0gYFxuICAgICAgJHt0aGlzLl9nZW5UaHJvd09uQ2hhbmdlQ2hlY2sob2xkVmFsdWUsIG5ld1ZhbHVlKX1cbiAgICAgIGlmICgke3RoaXMuY2hhbmdlRGV0ZWN0aW9uVXRpbFZhck5hbWV9Lmxvb3NlTm90SWRlbnRpY2FsKCR7b2xkVmFsdWV9LCAke25ld1ZhbHVlfSkpIHtcbiAgICAgICAgJHtuZXdWYWx1ZX0gPSAke3RoaXMuY2hhbmdlRGV0ZWN0aW9uVXRpbFZhck5hbWV9LnVud3JhcFZhbHVlKCR7bmV3VmFsdWV9KVxuICAgICAgICAke3RoaXMuX2dlbkNoYW5nZU1hcmtlcihyKX1cbiAgICAgICAgJHt0aGlzLl9nZW5VcGRhdGVEaXJlY3RpdmVPckVsZW1lbnQocil9XG4gICAgICAgICR7dGhpcy5fZ2VuQWRkVG9DaGFuZ2VzKHIpfVxuICAgICAgICAke29sZFZhbHVlfSA9ICR7bmV3VmFsdWV9O1xuICAgICAgfVxuICAgIGA7XG5cbiAgICB2YXIgZ2VuQ29kZSA9IHIuc2hvdWxkQmVDaGVja2VkKCkgPyBgJHtyZWFkfSR7Y2hlY2t9YCA6IHJlYWQ7XG5cbiAgICBpZiAoci5pc1VzZWRCeU90aGVyUmVjb3JkKCkpIHtcbiAgICAgIHJldHVybiBgJHtpbml0fSBpZiAoJHtjb25kaXRpb259KSB7ICR7Z2VuQ29kZX0gfSBlbHNlIHsgJHtuZXdWYWx1ZX0gPSAke29sZFZhbHVlfTsgfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHtpbml0fSBpZiAoJHtjb25kaXRpb259KSB7ICR7Z2VuQ29kZX0gfWA7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZ2VuUmVmZXJlbmNlQ2hlY2socjogUHJvdG9SZWNvcmQpOiBzdHJpbmcge1xuICAgIHZhciBvbGRWYWx1ZSA9IHRoaXMuX25hbWVzLmdldEZpZWxkTmFtZShyLnNlbGZJbmRleCk7XG4gICAgdmFyIG5ld1ZhbHVlID0gdGhpcy5fbmFtZXMuZ2V0TG9jYWxOYW1lKHIuc2VsZkluZGV4KTtcbiAgICB2YXIgcmVhZCA9IGBcbiAgICAgICR7dGhpcy5fbG9naWMuZ2VuUHJvcGVydHlCaW5kaW5nRXZhbFZhbHVlKHIpfVxuICAgIGA7XG5cbiAgICB2YXIgY2hlY2sgPSBgXG4gICAgICAke3RoaXMuX2dlblRocm93T25DaGFuZ2VDaGVjayhvbGRWYWx1ZSwgbmV3VmFsdWUpfVxuICAgICAgaWYgKCR7dGhpcy5jaGFuZ2VEZXRlY3Rpb25VdGlsVmFyTmFtZX0ubG9vc2VOb3RJZGVudGljYWwoJHtvbGRWYWx1ZX0sICR7bmV3VmFsdWV9KSkge1xuICAgICAgICAke3RoaXMuX2dlbkNoYW5nZU1hcmtlcihyKX1cbiAgICAgICAgJHt0aGlzLl9nZW5VcGRhdGVEaXJlY3RpdmVPckVsZW1lbnQocil9XG4gICAgICAgICR7dGhpcy5fZ2VuQWRkVG9DaGFuZ2VzKHIpfVxuICAgICAgICAke29sZFZhbHVlfSA9ICR7bmV3VmFsdWV9O1xuICAgICAgfVxuICAgIGA7XG5cbiAgICB2YXIgZ2VuQ29kZSA9IHIuc2hvdWxkQmVDaGVja2VkKCkgPyBgJHtyZWFkfSR7Y2hlY2t9YCA6IHJlYWQ7XG5cbiAgICBpZiAoci5pc1B1cmVGdW5jdGlvbigpKSB7XG4gICAgICB2YXIgY29uZGl0aW9uID0gci5hcmdzLm1hcCgoYSkgPT4gdGhpcy5fbmFtZXMuZ2V0Q2hhbmdlTmFtZShhKSkuam9pbihcIiB8fCBcIik7XG4gICAgICBpZiAoci5pc1VzZWRCeU90aGVyUmVjb3JkKCkpIHtcbiAgICAgICAgcmV0dXJuIGBpZiAoJHtjb25kaXRpb259KSB7ICR7Z2VuQ29kZX0gfSBlbHNlIHsgJHtuZXdWYWx1ZX0gPSAke29sZFZhbHVlfTsgfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYGlmICgke2NvbmRpdGlvbn0pIHsgJHtnZW5Db2RlfSB9YDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdlbkNvZGU7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZ2VuQ2hhbmdlTWFya2VyKHI6IFByb3RvUmVjb3JkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gci5hcmd1bWVudFRvUHVyZUZ1bmN0aW9uID8gYCR7dGhpcy5fbmFtZXMuZ2V0Q2hhbmdlTmFtZShyLnNlbGZJbmRleCl9ID0gdHJ1ZWAgOiBgYDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dlblVwZGF0ZURpcmVjdGl2ZU9yRWxlbWVudChyOiBQcm90b1JlY29yZCk6IHN0cmluZyB7XG4gICAgaWYgKCFyLmxhc3RJbkJpbmRpbmcpIHJldHVybiBcIlwiO1xuXG4gICAgdmFyIG5ld1ZhbHVlID0gdGhpcy5fbmFtZXMuZ2V0TG9jYWxOYW1lKHIuc2VsZkluZGV4KTtcbiAgICB2YXIgbm90aWZ5RGVidWcgPSB0aGlzLmdlbkNvbmZpZy5sb2dCaW5kaW5nVXBkYXRlID8gYHRoaXMubG9nQmluZGluZ1VwZGF0ZSgke25ld1ZhbHVlfSk7YCA6IFwiXCI7XG5cbiAgICB2YXIgYnIgPSByLmJpbmRpbmdSZWNvcmQ7XG4gICAgaWYgKGJyLnRhcmdldC5pc0RpcmVjdGl2ZSgpKSB7XG4gICAgICB2YXIgZGlyZWN0aXZlUHJvcGVydHkgPVxuICAgICAgICAgIGAke3RoaXMuX25hbWVzLmdldERpcmVjdGl2ZU5hbWUoYnIuZGlyZWN0aXZlUmVjb3JkLmRpcmVjdGl2ZUluZGV4KX0uJHtici50YXJnZXQubmFtZX1gO1xuICAgICAgcmV0dXJuIGBcbiAgICAgICAgJHtkaXJlY3RpdmVQcm9wZXJ0eX0gPSAke25ld1ZhbHVlfTtcbiAgICAgICAgJHtub3RpZnlEZWJ1Z31cbiAgICAgICAgJHtJU19DSEFOR0VEX0xPQ0FMfSA9IHRydWU7XG4gICAgICBgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYFxuICAgICAgICB0aGlzLm5vdGlmeURpc3BhdGNoZXIoJHtuZXdWYWx1ZX0pO1xuICAgICAgICAke25vdGlmeURlYnVnfVxuICAgICAgYDtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9nZW5UaHJvd09uQ2hhbmdlQ2hlY2sob2xkVmFsdWU6IHN0cmluZywgbmV3VmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGFzc2VydGlvbnNFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiBgXG4gICAgICAgIGlmICh0aHJvd09uQ2hhbmdlICYmICEke3RoaXMuY2hhbmdlRGV0ZWN0aW9uVXRpbFZhck5hbWV9LmRldk1vZGVFcXVhbCgke29sZFZhbHVlfSwgJHtuZXdWYWx1ZX0pKSB7XG4gICAgICAgICAgdGhpcy50aHJvd09uQ2hhbmdlRXJyb3IoJHtvbGRWYWx1ZX0sICR7bmV3VmFsdWV9KTtcbiAgICAgICAgfVxuICAgICAgICBgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZ2VuQWRkVG9DaGFuZ2VzKHI6IFByb3RvUmVjb3JkKTogc3RyaW5nIHtcbiAgICB2YXIgbmV3VmFsdWUgPSB0aGlzLl9uYW1lcy5nZXRMb2NhbE5hbWUoci5zZWxmSW5kZXgpO1xuICAgIHZhciBvbGRWYWx1ZSA9IHRoaXMuX25hbWVzLmdldEZpZWxkTmFtZShyLnNlbGZJbmRleCk7XG4gICAgaWYgKCFyLmJpbmRpbmdSZWNvcmQuY2FsbE9uQ2hhbmdlcygpKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gYCR7Q0hBTkdFU19MT0NBTH0gPSB0aGlzLmFkZENoYW5nZSgke0NIQU5HRVNfTE9DQUx9LCAke29sZFZhbHVlfSwgJHtuZXdWYWx1ZX0pO2A7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9tYXliZUZpcnN0SW5CaW5kaW5nKHI6IFByb3RvUmVjb3JkKTogc3RyaW5nIHtcbiAgICB2YXIgcHJldiA9IENoYW5nZURldGVjdGlvblV0aWwucHJvdG9CeUluZGV4KHRoaXMucmVjb3Jkcywgci5zZWxmSW5kZXggLSAxKTtcbiAgICB2YXIgZmlyc3RJbkJpbmRpbmcgPSBpc0JsYW5rKHByZXYpIHx8IHByZXYuYmluZGluZ1JlY29yZCAhPT0gci5iaW5kaW5nUmVjb3JkO1xuICAgIHJldHVybiBmaXJzdEluQmluZGluZyAmJiAhci5iaW5kaW5nUmVjb3JkLmlzRGlyZWN0aXZlTGlmZWN5Y2xlKCkgP1xuICAgICAgICAgICAgICAgYCR7dGhpcy5fbmFtZXMuZ2V0UHJvcGVydHlCaW5kaW5nSW5kZXgoKX0gPSAke3IucHJvcGVydHlCaW5kaW5nSW5kZXh9O2AgOlxuICAgICAgICAgICAgICAgJyc7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9tYXliZUdlbkxhc3RJbkRpcmVjdGl2ZShyOiBQcm90b1JlY29yZCk6IHN0cmluZyB7XG4gICAgaWYgKCFyLmxhc3RJbkRpcmVjdGl2ZSkgcmV0dXJuIFwiXCI7XG4gICAgcmV0dXJuIGBcbiAgICAgICR7Q0hBTkdFU19MT0NBTH0gPSBudWxsO1xuICAgICAgJHt0aGlzLl9nZW5Ob3RpZnlPblB1c2hEZXRlY3RvcnMocil9XG4gICAgICAke0lTX0NIQU5HRURfTE9DQUx9ID0gZmFsc2U7XG4gICAgYDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dlbk9uQ2hlY2socjogUHJvdG9SZWNvcmQpOiBzdHJpbmcge1xuICAgIHZhciBiciA9IHIuYmluZGluZ1JlY29yZDtcbiAgICByZXR1cm4gYGlmICghdGhyb3dPbkNoYW5nZSkgJHt0aGlzLl9uYW1lcy5nZXREaXJlY3RpdmVOYW1lKGJyLmRpcmVjdGl2ZVJlY29yZC5kaXJlY3RpdmVJbmRleCl9Lm5nRG9DaGVjaygpO2A7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9nZW5PbkluaXQocjogUHJvdG9SZWNvcmQpOiBzdHJpbmcge1xuICAgIHZhciBiciA9IHIuYmluZGluZ1JlY29yZDtcbiAgICByZXR1cm4gYGlmICghdGhyb3dPbkNoYW5nZSAmJiAke3RoaXMuX25hbWVzLmdldFN0YXRlTmFtZSgpfSA9PT0gJHt0aGlzLmNoYW5nZURldGVjdG9yU3RhdGVWYXJOYW1lfS5OZXZlckNoZWNrZWQpICR7dGhpcy5fbmFtZXMuZ2V0RGlyZWN0aXZlTmFtZShici5kaXJlY3RpdmVSZWNvcmQuZGlyZWN0aXZlSW5kZXgpfS5uZ09uSW5pdCgpO2A7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9nZW5PbkNoYW5nZShyOiBQcm90b1JlY29yZCk6IHN0cmluZyB7XG4gICAgdmFyIGJyID0gci5iaW5kaW5nUmVjb3JkO1xuICAgIHJldHVybiBgaWYgKCF0aHJvd09uQ2hhbmdlICYmICR7Q0hBTkdFU19MT0NBTH0pICR7dGhpcy5fbmFtZXMuZ2V0RGlyZWN0aXZlTmFtZShici5kaXJlY3RpdmVSZWNvcmQuZGlyZWN0aXZlSW5kZXgpfS5uZ09uQ2hhbmdlcygke0NIQU5HRVNfTE9DQUx9KTtgO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZ2VuTm90aWZ5T25QdXNoRGV0ZWN0b3JzKHI6IFByb3RvUmVjb3JkKTogc3RyaW5nIHtcbiAgICB2YXIgYnIgPSByLmJpbmRpbmdSZWNvcmQ7XG4gICAgaWYgKCFyLmxhc3RJbkRpcmVjdGl2ZSB8fCBici5pc0RlZmF1bHRDaGFuZ2VEZXRlY3Rpb24oKSkgcmV0dXJuIFwiXCI7XG4gICAgdmFyIHJldFZhbCA9IGBcbiAgICAgIGlmKCR7SVNfQ0hBTkdFRF9MT0NBTH0pIHtcbiAgICAgICAgJHt0aGlzLl9uYW1lcy5nZXREZXRlY3Rvck5hbWUoYnIuZGlyZWN0aXZlUmVjb3JkLmRpcmVjdGl2ZUluZGV4KX0ubWFya0FzQ2hlY2tPbmNlKCk7XG4gICAgICB9XG4gICAgYDtcbiAgICByZXR1cm4gcmV0VmFsO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var change_detection_jit_generator_1 = require('./change_detection_jit_generator');\r\nvar JitProtoChangeDetector = (function () {\r\n function JitProtoChangeDetector(definition) {\r\n this.definition = definition;\r\n this._factory = this._createFactory(definition);\r\n }\r\n JitProtoChangeDetector.isSupported = function () { return true; };\r\n JitProtoChangeDetector.prototype.instantiate = function () { return this._factory(); };\r\n /** @internal */\r\n JitProtoChangeDetector.prototype._createFactory = function (definition) {\r\n return new change_detection_jit_generator_1.ChangeDetectorJITGenerator(definition, 'util', 'AbstractChangeDetector', 'ChangeDetectorStatus')\r\n .generate();\r\n };\r\n return JitProtoChangeDetector;\r\n})();\r\nexports.JitProtoChangeDetector = JitProtoChangeDetector;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaml0X3Byb3RvX2NoYW5nZV9kZXRlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vaml0X3Byb3RvX2NoYW5nZV9kZXRlY3Rvci50cyJdLCJuYW1lcyI6WyJKaXRQcm90b0NoYW5nZURldGVjdG9yIiwiSml0UHJvdG9DaGFuZ2VEZXRlY3Rvci5jb25zdHJ1Y3RvciIsIkppdFByb3RvQ2hhbmdlRGV0ZWN0b3IuaXNTdXBwb3J0ZWQiLCJKaXRQcm90b0NoYW5nZURldGVjdG9yLmluc3RhbnRpYXRlIiwiSml0UHJvdG9DaGFuZ2VEZXRlY3Rvci5fY3JlYXRlRmFjdG9yeSJdLCJtYXBwaW5ncyI6IkFBSUEsK0NBQXlDLGtDQUFrQyxDQUFDLENBQUE7QUFFNUU7SUFJRUEsZ0NBQW9CQSxVQUFvQ0E7UUFBcENDLGVBQVVBLEdBQVZBLFVBQVVBLENBQTBCQTtRQUN0REEsSUFBSUEsQ0FBQ0EsUUFBUUEsR0FBR0EsSUFBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsVUFBVUEsQ0FBQ0EsQ0FBQ0E7SUFDbERBLENBQUNBO0lBRU1ELGtDQUFXQSxHQUFsQkEsY0FBZ0NFLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBO0lBRTlDRiw0Q0FBV0EsR0FBWEEsY0FBZ0NHLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO0lBRXpESCxnQkFBZ0JBO0lBQ2hCQSwrQ0FBY0EsR0FBZEEsVUFBZUEsVUFBb0NBO1FBQ2pESSxNQUFNQSxDQUFDQSxJQUFJQSwyREFBMEJBLENBQUNBLFVBQVVBLEVBQUVBLE1BQU1BLEVBQUVBLHdCQUF3QkEsRUFDNUNBLHNCQUFzQkEsQ0FBQ0E7YUFDeERBLFFBQVFBLEVBQUVBLENBQUNBO0lBQ2xCQSxDQUFDQTtJQUNISiw2QkFBQ0E7QUFBREEsQ0FBQ0EsQUFsQkQsSUFrQkM7QUFsQlksOEJBQXNCLHlCQWtCbEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge2lzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuaW1wb3J0IHtQcm90b0NoYW5nZURldGVjdG9yLCBDaGFuZ2VEZXRlY3RvciwgQ2hhbmdlRGV0ZWN0b3JEZWZpbml0aW9ufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvcn0gZnJvbSAnLi9jaGFuZ2VfZGV0ZWN0aW9uX2ppdF9nZW5lcmF0b3InO1xuXG5leHBvcnQgY2xhc3MgSml0UHJvdG9DaGFuZ2VEZXRlY3RvciBpbXBsZW1lbnRzIFByb3RvQ2hhbmdlRGV0ZWN0b3Ige1xuICAvKiogQGludGVybmFsICovXG4gIF9mYWN0b3J5OiBGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlZmluaXRpb246IENoYW5nZURldGVjdG9yRGVmaW5pdGlvbikge1xuICAgIHRoaXMuX2ZhY3RvcnkgPSB0aGlzLl9jcmVhdGVGYWN0b3J5KGRlZmluaXRpb24pO1xuICB9XG5cbiAgc3RhdGljIGlzU3VwcG9ydGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdHJ1ZTsgfVxuXG4gIGluc3RhbnRpYXRlKCk6IENoYW5nZURldGVjdG9yIHsgcmV0dXJuIHRoaXMuX2ZhY3RvcnkoKTsgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2NyZWF0ZUZhY3RvcnkoZGVmaW5pdGlvbjogQ2hhbmdlRGV0ZWN0b3JEZWZpbml0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBDaGFuZ2VEZXRlY3RvckpJVEdlbmVyYXRvcihkZWZpbml0aW9uLCAndXRpbCcsICdBYnN0cmFjdENoYW5nZURldGVjdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDaGFuZ2VEZXRlY3RvclN0YXR1cycpXG4gICAgICAgIC5nZW5lcmF0ZSgpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar exceptions_1 = require(\"angular2/src/facade/exceptions\");\r\n/**\r\n * An error thrown if application changes model breaking the top-down data flow.\r\n *\r\n * This exception is only thrown in dev mode.\r\n *\r\n * <!-- TODO: Add a link once the dev mode option is configurable -->\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'parent',\r\n * template: `\r\n * <child [prop]=\"parentProp\"></child>\r\n * `,\r\n * directives: [forwardRef(() => Child)]\r\n * })\r\n * class Parent {\r\n * parentProp = \"init\";\r\n * }\r\n *\r\n * @Directive({selector: 'child', inputs: ['prop']})\r\n * class Child {\r\n * constructor(public parent: Parent) {}\r\n *\r\n * set prop(v) {\r\n * // this updates the parent property, which is disallowed during change detection\r\n * // this will result in ExpressionChangedAfterItHasBeenCheckedException\r\n * this.parent.parentProp = \"updated\";\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar ExpressionChangedAfterItHasBeenCheckedException = (function (_super) {\r\n __extends(ExpressionChangedAfterItHasBeenCheckedException, _super);\r\n function ExpressionChangedAfterItHasBeenCheckedException(exp, oldValue, currValue, context) {\r\n _super.call(this, (\"Expression '\" + exp + \"' has changed after it was checked. \") +\r\n (\"Previous value: '\" + oldValue + \"'. Current value: '\" + currValue + \"'\"));\r\n }\r\n return ExpressionChangedAfterItHasBeenCheckedException;\r\n})(exceptions_1.BaseException);\r\nexports.ExpressionChangedAfterItHasBeenCheckedException = ExpressionChangedAfterItHasBeenCheckedException;\r\n/**\r\n * Thrown when an expression evaluation raises an exception.\r\n *\r\n * This error wraps the original exception to attach additional contextual information that can\r\n * be useful for debugging.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/2Kywoz?p=preview))\r\n *\r\n * ```typescript\r\n * @Directive({selector: 'child', inputs: ['prop']})\r\n * class Child {\r\n * prop;\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <child [prop]=\"field.first\"></child>\r\n * `,\r\n * directives: [Child]\r\n * })\r\n * class App {\r\n * field = null;\r\n * }\r\n *\r\n * bootstrap(App);\r\n * ```\r\n *\r\n * You can access the original exception and stack through the `originalException` and\r\n * `originalStack` properties.\r\n */\r\nvar ChangeDetectionError = (function (_super) {\r\n __extends(ChangeDetectionError, _super);\r\n function ChangeDetectionError(exp, originalException, originalStack, context) {\r\n _super.call(this, originalException + \" in [\" + exp + \"]\", originalException, originalStack, context);\r\n this.location = exp;\r\n }\r\n return ChangeDetectionError;\r\n})(exceptions_1.WrappedException);\r\nexports.ChangeDetectionError = ChangeDetectionError;\r\n/**\r\n * Thrown when change detector executes on dehydrated view.\r\n *\r\n * This error indicates a bug in the framework.\r\n *\r\n * This is an internal Angular error.\r\n */\r\nvar DehydratedException = (function (_super) {\r\n __extends(DehydratedException, _super);\r\n function DehydratedException(details) {\r\n _super.call(this, \"Attempt to use a dehydrated detector: \" + details);\r\n }\r\n return DehydratedException;\r\n})(exceptions_1.BaseException);\r\nexports.DehydratedException = DehydratedException;\r\n/**\r\n * Wraps an exception thrown by an event handler.\r\n */\r\nvar EventEvaluationError = (function (_super) {\r\n __extends(EventEvaluationError, _super);\r\n function EventEvaluationError(eventName, originalException, originalStack, context) {\r\n _super.call(this, \"Error during evaluation of \\\"\" + eventName + \"\\\"\", originalException, originalStack, context);\r\n }\r\n return EventEvaluationError;\r\n})(exceptions_1.WrappedException);\r\nexports.EventEvaluationError = EventEvaluationError;\r\n/**\r\n * Error context included when an event handler throws an exception.\r\n */\r\nvar EventEvaluationErrorContext = (function () {\r\n function EventEvaluationErrorContext(element, componentElement, context, locals, injector) {\r\n this.element = element;\r\n this.componentElement = componentElement;\r\n this.context = context;\r\n this.locals = locals;\r\n this.injector = injector;\r\n }\r\n return EventEvaluationErrorContext;\r\n})();\r\nexports.EventEvaluationErrorContext = EventEvaluationErrorContext;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vZXhjZXB0aW9ucy50cyJdLCJuYW1lcyI6WyJFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEV4Y2VwdGlvbiIsIkV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXhjZXB0aW9uLmNvbnN0cnVjdG9yIiwiQ2hhbmdlRGV0ZWN0aW9uRXJyb3IiLCJDaGFuZ2VEZXRlY3Rpb25FcnJvci5jb25zdHJ1Y3RvciIsIkRlaHlkcmF0ZWRFeGNlcHRpb24iLCJEZWh5ZHJhdGVkRXhjZXB0aW9uLmNvbnN0cnVjdG9yIiwiRXZlbnRFdmFsdWF0aW9uRXJyb3IiLCJFdmVudEV2YWx1YXRpb25FcnJvci5jb25zdHJ1Y3RvciIsIkV2ZW50RXZhbHVhdGlvbkVycm9yQ29udGV4dCIsIkV2ZW50RXZhbHVhdGlvbkVycm9yQ29udGV4dC5jb25zdHJ1Y3RvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQkFBOEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUUvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFDSDtJQUFxRUEsbUVBQWFBO0lBQ2hGQSx5REFBWUEsR0FBV0EsRUFBRUEsUUFBYUEsRUFBRUEsU0FBY0EsRUFBRUEsT0FBWUE7UUFDbEVDLGtCQUFNQSxrQkFBZUEsR0FBR0EsMENBQXNDQTtZQUN4REEsdUJBQW9CQSxRQUFRQSwyQkFBc0JBLFNBQVNBLE9BQUdBLENBQUNBLENBQUNBO0lBQ3hFQSxDQUFDQTtJQUNIRCxzREFBQ0E7QUFBREEsQ0FBQ0EsQUFMRCxFQUFxRSwwQkFBYSxFQUtqRjtBQUxZLHVEQUErQyxrREFLM0QsQ0FBQTtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSDtJQUEwQ0Usd0NBQWdCQTtJQU14REEsOEJBQVlBLEdBQVdBLEVBQUVBLGlCQUFzQkEsRUFBRUEsYUFBa0JBLEVBQUVBLE9BQVlBO1FBQy9FQyxrQkFBU0EsaUJBQWlCQSxhQUFRQSxHQUFHQSxNQUFHQSxFQUFFQSxpQkFBaUJBLEVBQUVBLGFBQWFBLEVBQUVBLE9BQU9BLENBQUNBLENBQUNBO1FBQ3JGQSxJQUFJQSxDQUFDQSxRQUFRQSxHQUFHQSxHQUFHQSxDQUFDQTtJQUN0QkEsQ0FBQ0E7SUFDSEQsMkJBQUNBO0FBQURBLENBQUNBLEFBVkQsRUFBMEMsNkJBQWdCLEVBVXpEO0FBVlksNEJBQW9CLHVCQVVoQyxDQUFBO0FBRUQ7Ozs7OztHQU1HO0FBQ0g7SUFBeUNFLHVDQUFhQTtJQUNwREEsNkJBQVlBLE9BQWVBO1FBQUlDLGtCQUFNQSwyQ0FBeUNBLE9BQVNBLENBQUNBLENBQUNBO0lBQUNBLENBQUNBO0lBQzdGRCwwQkFBQ0E7QUFBREEsQ0FBQ0EsQUFGRCxFQUF5QywwQkFBYSxFQUVyRDtBQUZZLDJCQUFtQixzQkFFL0IsQ0FBQTtBQUVEOztHQUVHO0FBQ0g7SUFBMENFLHdDQUFnQkE7SUFDeERBLDhCQUFZQSxTQUFpQkEsRUFBRUEsaUJBQXNCQSxFQUFFQSxhQUFrQkEsRUFBRUEsT0FBWUE7UUFDckZDLGtCQUFNQSxrQ0FBK0JBLFNBQVNBLE9BQUdBLEVBQUVBLGlCQUFpQkEsRUFBRUEsYUFBYUEsRUFBRUEsT0FBT0EsQ0FBQ0EsQ0FBQ0E7SUFDaEdBLENBQUNBO0lBQ0hELDJCQUFDQTtBQUFEQSxDQUFDQSxBQUpELEVBQTBDLDZCQUFnQixFQUl6RDtBQUpZLDRCQUFvQix1QkFJaEMsQ0FBQTtBQUVEOztHQUVHO0FBQ0g7SUFDRUUscUNBQW1CQSxPQUFZQSxFQUFTQSxnQkFBcUJBLEVBQVNBLE9BQVlBLEVBQy9EQSxNQUFXQSxFQUFTQSxRQUFhQTtRQURqQ0MsWUFBT0EsR0FBUEEsT0FBT0EsQ0FBS0E7UUFBU0EscUJBQWdCQSxHQUFoQkEsZ0JBQWdCQSxDQUFLQTtRQUFTQSxZQUFPQSxHQUFQQSxPQUFPQSxDQUFLQTtRQUMvREEsV0FBTUEsR0FBTkEsTUFBTUEsQ0FBS0E7UUFBU0EsYUFBUUEsR0FBUkEsUUFBUUEsQ0FBS0E7SUFBR0EsQ0FBQ0E7SUFDMURELGtDQUFDQTtBQUFEQSxDQUFDQSxBQUhELElBR0M7QUFIWSxtQ0FBMkIsOEJBR3ZDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Jhc2VFeGNlcHRpb24sIFdyYXBwZWRFeGNlcHRpb259IGZyb20gXCJhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnNcIjtcblxuLyoqXG4gKiBBbiBlcnJvciB0aHJvd24gaWYgYXBwbGljYXRpb24gY2hhbmdlcyBtb2RlbCBicmVha2luZyB0aGUgdG9wLWRvd24gZGF0YSBmbG93LlxuICpcbiAqIFRoaXMgZXhjZXB0aW9uIGlzIG9ubHkgdGhyb3duIGluIGRldiBtb2RlLlxuICpcbiAqIDwhLS0gVE9ETzogQWRkIGEgbGluayBvbmNlIHRoZSBkZXYgbW9kZSBvcHRpb24gaXMgY29uZmlndXJhYmxlIC0tPlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAncGFyZW50JyxcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8Y2hpbGQgW3Byb3BdPVwicGFyZW50UHJvcFwiPjwvY2hpbGQ+XG4gKiAgIGAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtmb3J3YXJkUmVmKCgpID0+IENoaWxkKV1cbiAqIH0pXG4gKiBjbGFzcyBQYXJlbnQge1xuICogICBwYXJlbnRQcm9wID0gXCJpbml0XCI7XG4gKiB9XG4gKlxuICogQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdjaGlsZCcsIGlucHV0czogWydwcm9wJ119KVxuICogY2xhc3MgQ2hpbGQge1xuICogICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFyZW50OiBQYXJlbnQpIHt9XG4gKlxuICogICBzZXQgcHJvcCh2KSB7XG4gKiAgICAgLy8gdGhpcyB1cGRhdGVzIHRoZSBwYXJlbnQgcHJvcGVydHksIHdoaWNoIGlzIGRpc2FsbG93ZWQgZHVyaW5nIGNoYW5nZSBkZXRlY3Rpb25cbiAqICAgICAvLyB0aGlzIHdpbGwgcmVzdWx0IGluIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXhjZXB0aW9uXG4gKiAgICAgdGhpcy5wYXJlbnQucGFyZW50UHJvcCA9IFwidXBkYXRlZFwiO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGV4cDogc3RyaW5nLCBvbGRWYWx1ZTogYW55LCBjdXJyVmFsdWU6IGFueSwgY29udGV4dDogYW55KSB7XG4gICAgc3VwZXIoYEV4cHJlc3Npb24gJyR7ZXhwfScgaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuIGAgK1xuICAgICAgICAgIGBQcmV2aW91cyB2YWx1ZTogJyR7b2xkVmFsdWV9Jy4gQ3VycmVudCB2YWx1ZTogJyR7Y3VyclZhbHVlfSdgKTtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGFuIGV4cHJlc3Npb24gZXZhbHVhdGlvbiByYWlzZXMgYW4gZXhjZXB0aW9uLlxuICpcbiAqIFRoaXMgZXJyb3Igd3JhcHMgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiB0byBhdHRhY2ggYWRkaXRpb25hbCBjb250ZXh0dWFsIGluZm9ybWF0aW9uIHRoYXQgY2FuXG4gKiBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZy5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvMkt5d296P3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdjaGlsZCcsIGlucHV0czogWydwcm9wJ119KVxuICogY2xhc3MgQ2hpbGQge1xuICogICBwcm9wO1xuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGNoaWxkIFtwcm9wXT1cImZpZWxkLmZpcnN0XCI+PC9jaGlsZD5cbiAqICAgYCxcbiAqICAgZGlyZWN0aXZlczogW0NoaWxkXVxuICogfSlcbiAqIGNsYXNzIEFwcCB7XG4gKiAgIGZpZWxkID0gbnVsbDtcbiAqIH1cbiAqXG4gKiBib290c3RyYXAoQXBwKTtcbiAqIGBgYFxuICpcbiAqIFlvdSBjYW4gYWNjZXNzIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gYW5kIHN0YWNrIHRocm91Z2ggdGhlIGBvcmlnaW5hbEV4Y2VwdGlvbmAgYW5kXG4gKiBgb3JpZ2luYWxTdGFja2AgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGNsYXNzIENoYW5nZURldGVjdGlvbkVycm9yIGV4dGVuZHMgV3JhcHBlZEV4Y2VwdGlvbiB7XG4gIC8qKlxuICAgKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgZXhwcmVzc2lvbiB0aGF0IHRyaWdnZXJlZCB0aGUgZXhjZXB0aW9uLlxuICAgKi9cbiAgbG9jYXRpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihleHA6IHN0cmluZywgb3JpZ2luYWxFeGNlcHRpb246IGFueSwgb3JpZ2luYWxTdGFjazogYW55LCBjb250ZXh0OiBhbnkpIHtcbiAgICBzdXBlcihgJHtvcmlnaW5hbEV4Y2VwdGlvbn0gaW4gWyR7ZXhwfV1gLCBvcmlnaW5hbEV4Y2VwdGlvbiwgb3JpZ2luYWxTdGFjaywgY29udGV4dCk7XG4gICAgdGhpcy5sb2NhdGlvbiA9IGV4cDtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGNoYW5nZSBkZXRlY3RvciBleGVjdXRlcyBvbiBkZWh5ZHJhdGVkIHZpZXcuXG4gKlxuICogVGhpcyBlcnJvciBpbmRpY2F0ZXMgYSBidWcgaW4gdGhlIGZyYW1ld29yay5cbiAqXG4gKiBUaGlzIGlzIGFuIGludGVybmFsIEFuZ3VsYXIgZXJyb3IuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWh5ZHJhdGVkRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGRldGFpbHM6IHN0cmluZykgeyBzdXBlcihgQXR0ZW1wdCB0byB1c2UgYSBkZWh5ZHJhdGVkIGRldGVjdG9yOiAke2RldGFpbHN9YCk7IH1cbn1cblxuLyoqXG4gKiBXcmFwcyBhbiBleGNlcHRpb24gdGhyb3duIGJ5IGFuIGV2ZW50IGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudEV2YWx1YXRpb25FcnJvciBleHRlbmRzIFdyYXBwZWRFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihldmVudE5hbWU6IHN0cmluZywgb3JpZ2luYWxFeGNlcHRpb246IGFueSwgb3JpZ2luYWxTdGFjazogYW55LCBjb250ZXh0OiBhbnkpIHtcbiAgICBzdXBlcihgRXJyb3IgZHVyaW5nIGV2YWx1YXRpb24gb2YgXCIke2V2ZW50TmFtZX1cImAsIG9yaWdpbmFsRXhjZXB0aW9uLCBvcmlnaW5hbFN0YWNrLCBjb250ZXh0KTtcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIGNvbnRleHQgaW5jbHVkZWQgd2hlbiBhbiBldmVudCBoYW5kbGVyIHRocm93cyBhbiBleGNlcHRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudEV2YWx1YXRpb25FcnJvckNvbnRleHQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudDogYW55LCBwdWJsaWMgY29tcG9uZW50RWxlbWVudDogYW55LCBwdWJsaWMgY29udGV4dDogYW55LFxuICAgICAgICAgICAgICBwdWJsaWMgbG9jYWxzOiBhbnksIHB1YmxpYyBpbmplY3RvcjogYW55KSB7fVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar Locals = (function () {\r\n function Locals(parent, current) {\r\n this.parent = parent;\r\n this.current = current;\r\n }\r\n Locals.prototype.contains = function (name) {\r\n if (this.current.has(name)) {\r\n return true;\r\n }\r\n if (lang_1.isPresent(this.parent)) {\r\n return this.parent.contains(name);\r\n }\r\n return false;\r\n };\r\n Locals.prototype.get = function (name) {\r\n if (this.current.has(name)) {\r\n return this.current.get(name);\r\n }\r\n if (lang_1.isPresent(this.parent)) {\r\n return this.parent.get(name);\r\n }\r\n throw new exceptions_1.BaseException(\"Cannot find '\" + name + \"'\");\r\n };\r\n Locals.prototype.set = function (name, value) {\r\n // TODO(rado): consider removing this check if we can guarantee this is not\r\n // exposed to the public API.\r\n // TODO: vsavkin maybe it should check only the local map\r\n if (this.current.has(name)) {\r\n this.current.set(name, value);\r\n }\r\n else {\r\n throw new exceptions_1.BaseException(\"Setting of new keys post-construction is not supported. Key: \" + name + \".\");\r\n }\r\n };\r\n Locals.prototype.clearLocalValues = function () { collection_1.MapWrapper.clearValues(this.current); };\r\n return Locals;\r\n})();\r\nexports.Locals = Locals;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9wYXJzZXIvbG9jYWxzLnRzIl0sIm5hbWVzIjpbIkxvY2FscyIsIkxvY2Fscy5jb25zdHJ1Y3RvciIsIkxvY2Fscy5jb250YWlucyIsIkxvY2Fscy5nZXQiLCJMb2NhbHMuc2V0IiwiTG9jYWxzLmNsZWFyTG9jYWxWYWx1ZXMiXSwibWFwcGluZ3MiOiJBQUFBLHFCQUF3QiwwQkFBMEIsQ0FBQyxDQUFBO0FBQ25ELDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELDJCQUFzQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRXZFO0lBQ0VBLGdCQUFtQkEsTUFBY0EsRUFBU0EsT0FBc0JBO1FBQTdDQyxXQUFNQSxHQUFOQSxNQUFNQSxDQUFRQTtRQUFTQSxZQUFPQSxHQUFQQSxPQUFPQSxDQUFlQTtJQUFHQSxDQUFDQTtJQUVwRUQseUJBQVFBLEdBQVJBLFVBQVNBLElBQVlBO1FBQ25CRSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUMzQkEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDZEEsQ0FBQ0E7UUFFREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzNCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxRQUFRQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNwQ0EsQ0FBQ0E7UUFFREEsTUFBTUEsQ0FBQ0EsS0FBS0EsQ0FBQ0E7SUFDZkEsQ0FBQ0E7SUFFREYsb0JBQUdBLEdBQUhBLFVBQUlBLElBQVlBO1FBQ2RHLEVBQUVBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzNCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNoQ0EsQ0FBQ0E7UUFFREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzNCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUMvQkEsQ0FBQ0E7UUFFREEsTUFBTUEsSUFBSUEsMEJBQWFBLENBQUNBLGtCQUFnQkEsSUFBSUEsTUFBR0EsQ0FBQ0EsQ0FBQ0E7SUFDbkRBLENBQUNBO0lBRURILG9CQUFHQSxHQUFIQSxVQUFJQSxJQUFZQSxFQUFFQSxLQUFVQTtRQUMxQkksMkVBQTJFQTtRQUMzRUEsNkJBQTZCQTtRQUM3QkEseURBQXlEQTtRQUN6REEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDM0JBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLEVBQUVBLEtBQUtBLENBQUNBLENBQUNBO1FBQ2hDQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUNOQSxNQUFNQSxJQUFJQSwwQkFBYUEsQ0FDbkJBLGtFQUFnRUEsSUFBSUEsTUFBR0EsQ0FBQ0EsQ0FBQ0E7UUFDL0VBLENBQUNBO0lBQ0hBLENBQUNBO0lBRURKLGlDQUFnQkEsR0FBaEJBLGNBQTJCSyx1QkFBVUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDcEVMLGFBQUNBO0FBQURBLENBQUNBLEFBeENELElBd0NDO0FBeENZLGNBQU0sU0F3Q2xCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzUHJlc2VudH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7TGlzdFdyYXBwZXIsIE1hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBMb2NhbHMge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFyZW50OiBMb2NhbHMsIHB1YmxpYyBjdXJyZW50OiBNYXA8YW55LCBhbnk+KSB7fVxuXG4gIGNvbnRhaW5zKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmN1cnJlbnQuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMucGFyZW50KSkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmNvbnRhaW5zKG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICh0aGlzLmN1cnJlbnQuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50LmdldChuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMucGFyZW50KSkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmdldChuYW1lKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgQ2Fubm90IGZpbmQgJyR7bmFtZX0nYCk7XG4gIH1cblxuICBzZXQobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgLy8gVE9ETyhyYWRvKTogY29uc2lkZXIgcmVtb3ZpbmcgdGhpcyBjaGVjayBpZiB3ZSBjYW4gZ3VhcmFudGVlIHRoaXMgaXMgbm90XG4gICAgLy8gZXhwb3NlZCB0byB0aGUgcHVibGljIEFQSS5cbiAgICAvLyBUT0RPOiB2c2F2a2luIG1heWJlIGl0IHNob3VsZCBjaGVjayBvbmx5IHRoZSBsb2NhbCBtYXBcbiAgICBpZiAodGhpcy5jdXJyZW50LmhhcyhuYW1lKSkge1xuICAgICAgdGhpcy5jdXJyZW50LnNldChuYW1lLCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFxuICAgICAgICAgIGBTZXR0aW5nIG9mIG5ldyBrZXlzIHBvc3QtY29uc3RydWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuIEtleTogJHtuYW1lfS5gKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckxvY2FsVmFsdWVzKCk6IHZvaWQgeyBNYXBXcmFwcGVyLmNsZWFyVmFsdWVzKHRoaXMuY3VycmVudCk7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar change_detection_util_1 = require('./change_detection_util');\r\nvar change_detector_ref_1 = require('./change_detector_ref');\r\nvar exceptions_1 = require('./exceptions');\r\nvar locals_1 = require('./parser/locals');\r\nvar constants_1 = require('./constants');\r\nvar profile_1 = require('../profile/profile');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar _scope_check = profile_1.wtfCreateScope(\"ChangeDetector#check(ascii id, bool throwOnChange)\");\r\nvar _Context = (function () {\r\n function _Context(element, componentElement, context, locals, injector, expression) {\r\n this.element = element;\r\n this.componentElement = componentElement;\r\n this.context = context;\r\n this.locals = locals;\r\n this.injector = injector;\r\n this.expression = expression;\r\n }\r\n return _Context;\r\n})();\r\nvar AbstractChangeDetector = (function () {\r\n function AbstractChangeDetector(id, numberOfPropertyProtoRecords, bindingTargets, directiveIndices, strategy) {\r\n this.id = id;\r\n this.numberOfPropertyProtoRecords = numberOfPropertyProtoRecords;\r\n this.bindingTargets = bindingTargets;\r\n this.directiveIndices = directiveIndices;\r\n this.strategy = strategy;\r\n this.contentChildren = [];\r\n this.viewChildren = [];\r\n // The names of the below fields must be kept in sync with codegen_name_util.ts or\r\n // change detection will fail.\r\n this.state = constants_1.ChangeDetectorState.NeverChecked;\r\n this.locals = null;\r\n this.mode = null;\r\n this.pipes = null;\r\n this.ref = new change_detector_ref_1.ChangeDetectorRef_(this);\r\n }\r\n AbstractChangeDetector.prototype.addContentChild = function (cd) {\r\n this.contentChildren.push(cd);\r\n cd.parent = this;\r\n };\r\n AbstractChangeDetector.prototype.removeContentChild = function (cd) { collection_1.ListWrapper.remove(this.contentChildren, cd); };\r\n AbstractChangeDetector.prototype.addViewChild = function (cd) {\r\n this.viewChildren.push(cd);\r\n cd.parent = this;\r\n };\r\n AbstractChangeDetector.prototype.removeViewChild = function (cd) { collection_1.ListWrapper.remove(this.viewChildren, cd); };\r\n AbstractChangeDetector.prototype.remove = function () { this.parent.removeContentChild(this); };\r\n AbstractChangeDetector.prototype.handleEvent = function (eventName, elIndex, event) {\r\n if (!this.hydrated()) {\r\n this.throwDehydratedError(this.id + \" -> \" + eventName);\r\n }\r\n try {\r\n var locals = new Map();\r\n locals.set('$event', event);\r\n var res = !this.handleEventInternal(eventName, elIndex, new locals_1.Locals(this.locals, locals));\r\n this.markPathToRootAsCheckOnce();\r\n return res;\r\n }\r\n catch (e) {\r\n var c = this.dispatcher.getDebugContext(null, elIndex, null);\r\n var context = lang_1.isPresent(c) ?\r\n new exceptions_1.EventEvaluationErrorContext(c.element, c.componentElement, c.context, c.locals, c.injector) :\r\n null;\r\n throw new exceptions_1.EventEvaluationError(eventName, e, e.stack, context);\r\n }\r\n };\r\n AbstractChangeDetector.prototype.handleEventInternal = function (eventName, elIndex, locals) { return false; };\r\n AbstractChangeDetector.prototype.detectChanges = function () { this.runDetectChanges(false); };\r\n AbstractChangeDetector.prototype.checkNoChanges = function () {\r\n if (lang_1.assertionsEnabled()) {\r\n this.runDetectChanges(true);\r\n }\r\n };\r\n AbstractChangeDetector.prototype.runDetectChanges = function (throwOnChange) {\r\n if (this.mode === constants_1.ChangeDetectionStrategy.Detached ||\r\n this.mode === constants_1.ChangeDetectionStrategy.Checked || this.state === constants_1.ChangeDetectorState.Errored)\r\n return;\r\n var s = _scope_check(this.id, throwOnChange);\r\n this.detectChangesInRecords(throwOnChange);\r\n this._detectChangesContentChildren(throwOnChange);\r\n if (!throwOnChange)\r\n this.afterContentLifecycleCallbacks();\r\n this._detectChangesInViewChildren(throwOnChange);\r\n if (!throwOnChange)\r\n this.afterViewLifecycleCallbacks();\r\n if (this.mode === constants_1.ChangeDetectionStrategy.CheckOnce)\r\n this.mode = constants_1.ChangeDetectionStrategy.Checked;\r\n this.state = constants_1.ChangeDetectorState.CheckedBefore;\r\n profile_1.wtfLeave(s);\r\n };\r\n // This method is not intended to be overridden. Subclasses should instead provide an\r\n // implementation of `detectChangesInRecordsInternal` which does the work of detecting changes\r\n // and which this method will call.\r\n // This method expects that `detectChangesInRecordsInternal` will set the property\r\n // `this.propertyBindingIndex` to the propertyBindingIndex of the first proto record. This is to\r\n // facilitate error reporting.\r\n AbstractChangeDetector.prototype.detectChangesInRecords = function (throwOnChange) {\r\n if (!this.hydrated()) {\r\n this.throwDehydratedError(this.id);\r\n }\r\n try {\r\n this.detectChangesInRecordsInternal(throwOnChange);\r\n }\r\n catch (e) {\r\n // throwOnChange errors aren't counted as fatal errors.\r\n if (!(e instanceof exceptions_1.ExpressionChangedAfterItHasBeenCheckedException)) {\r\n this.state = constants_1.ChangeDetectorState.Errored;\r\n }\r\n this._throwError(e, e.stack);\r\n }\r\n };\r\n // Subclasses should override this method to perform any work necessary to detect and report\r\n // changes. For example, changes should be reported via `ChangeDetectionUtil.addChange`, lifecycle\r\n // methods should be called, etc.\r\n // This implementation should also set `this.propertyBindingIndex` to the propertyBindingIndex of\r\n // the\r\n // first proto record to facilitate error reporting. See {@link #detectChangesInRecords}.\r\n AbstractChangeDetector.prototype.detectChangesInRecordsInternal = function (throwOnChange) { };\r\n // This method is not intended to be overridden. Subclasses should instead provide an\r\n // implementation of `hydrateDirectives`.\r\n AbstractChangeDetector.prototype.hydrate = function (context, locals, dispatcher, pipes) {\r\n this.dispatcher = dispatcher;\r\n this.mode = change_detection_util_1.ChangeDetectionUtil.changeDetectionMode(this.strategy);\r\n this.context = context;\r\n this.locals = locals;\r\n this.pipes = pipes;\r\n this.hydrateDirectives(dispatcher);\r\n this.state = constants_1.ChangeDetectorState.NeverChecked;\r\n };\r\n // Subclasses should override this method to hydrate any directives.\r\n AbstractChangeDetector.prototype.hydrateDirectives = function (dispatcher) { };\r\n // This method is not intended to be overridden. Subclasses should instead provide an\r\n // implementation of `dehydrateDirectives`.\r\n AbstractChangeDetector.prototype.dehydrate = function () {\r\n this.dehydrateDirectives(true);\r\n this._unsubscribeFromOutputs();\r\n this.dispatcher = null;\r\n this.context = null;\r\n this.locals = null;\r\n this.pipes = null;\r\n };\r\n // Subclasses should override this method to dehydrate any directives. This method should reverse\r\n // any work done in `hydrateDirectives`.\r\n AbstractChangeDetector.prototype.dehydrateDirectives = function (destroyPipes) { };\r\n AbstractChangeDetector.prototype.hydrated = function () { return lang_1.isPresent(this.context); };\r\n AbstractChangeDetector.prototype.destroyRecursive = function () {\r\n this.dispatcher.notifyOnDestroy();\r\n this.dehydrate();\r\n var children = this.contentChildren;\r\n for (var i = 0; i < children.length; i++) {\r\n children[i].destroyRecursive();\r\n }\r\n children = this.viewChildren;\r\n for (var i = 0; i < children.length; i++) {\r\n children[i].destroyRecursive();\r\n }\r\n };\r\n AbstractChangeDetector.prototype.afterContentLifecycleCallbacks = function () {\r\n this.dispatcher.notifyAfterContentChecked();\r\n this.afterContentLifecycleCallbacksInternal();\r\n };\r\n AbstractChangeDetector.prototype.afterContentLifecycleCallbacksInternal = function () { };\r\n AbstractChangeDetector.prototype.afterViewLifecycleCallbacks = function () {\r\n this.dispatcher.notifyAfterViewChecked();\r\n this.afterViewLifecycleCallbacksInternal();\r\n };\r\n AbstractChangeDetector.prototype.afterViewLifecycleCallbacksInternal = function () { };\r\n /** @internal */\r\n AbstractChangeDetector.prototype._detectChangesContentChildren = function (throwOnChange) {\r\n var c = this.contentChildren;\r\n for (var i = 0; i < c.length; ++i) {\r\n c[i].runDetectChanges(throwOnChange);\r\n }\r\n };\r\n /** @internal */\r\n AbstractChangeDetector.prototype._detectChangesInViewChildren = function (throwOnChange) {\r\n var c = this.viewChildren;\r\n for (var i = 0; i < c.length; ++i) {\r\n c[i].runDetectChanges(throwOnChange);\r\n }\r\n };\r\n AbstractChangeDetector.prototype.markAsCheckOnce = function () { this.mode = constants_1.ChangeDetectionStrategy.CheckOnce; };\r\n AbstractChangeDetector.prototype.markPathToRootAsCheckOnce = function () {\r\n var c = this;\r\n while (lang_1.isPresent(c) && c.mode !== constants_1.ChangeDetectionStrategy.Detached) {\r\n if (c.mode === constants_1.ChangeDetectionStrategy.Checked)\r\n c.mode = constants_1.ChangeDetectionStrategy.CheckOnce;\r\n c = c.parent;\r\n }\r\n };\r\n AbstractChangeDetector.prototype._unsubscribeFromOutputs = function () {\r\n if (lang_1.isPresent(this.outputSubscriptions)) {\r\n for (var i = 0; i < this.outputSubscriptions.length; ++i) {\r\n async_1.ObservableWrapper.dispose(this.outputSubscriptions[i]);\r\n this.outputSubscriptions[i] = null;\r\n }\r\n }\r\n };\r\n AbstractChangeDetector.prototype.getDirectiveFor = function (directives, index) {\r\n return directives.getDirectiveFor(this.directiveIndices[index]);\r\n };\r\n AbstractChangeDetector.prototype.getDetectorFor = function (directives, index) {\r\n return directives.getDetectorFor(this.directiveIndices[index]);\r\n };\r\n AbstractChangeDetector.prototype.notifyDispatcher = function (value) {\r\n this.dispatcher.notifyOnBinding(this._currentBinding(), value);\r\n };\r\n AbstractChangeDetector.prototype.logBindingUpdate = function (value) {\r\n this.dispatcher.logBindingUpdate(this._currentBinding(), value);\r\n };\r\n AbstractChangeDetector.prototype.addChange = function (changes, oldValue, newValue) {\r\n if (lang_1.isBlank(changes)) {\r\n changes = {};\r\n }\r\n changes[this._currentBinding().name] = change_detection_util_1.ChangeDetectionUtil.simpleChange(oldValue, newValue);\r\n return changes;\r\n };\r\n AbstractChangeDetector.prototype._throwError = function (exception, stack) {\r\n var error;\r\n try {\r\n var c = this.dispatcher.getDebugContext(null, this._currentBinding().elementIndex, null);\r\n var context = lang_1.isPresent(c) ? new _Context(c.element, c.componentElement, c.context, c.locals, c.injector, this._currentBinding().debug) :\r\n null;\r\n error = new exceptions_1.ChangeDetectionError(this._currentBinding().debug, exception, stack, context);\r\n }\r\n catch (e) {\r\n // if an error happens during getting the debug context, we throw a ChangeDetectionError\r\n // without the extra information.\r\n error = new exceptions_1.ChangeDetectionError(null, exception, stack, null);\r\n }\r\n throw error;\r\n };\r\n AbstractChangeDetector.prototype.throwOnChangeError = function (oldValue, newValue) {\r\n throw new exceptions_1.ExpressionChangedAfterItHasBeenCheckedException(this._currentBinding().debug, oldValue, newValue, null);\r\n };\r\n AbstractChangeDetector.prototype.throwDehydratedError = function (detail) { throw new exceptions_1.DehydratedException(detail); };\r\n AbstractChangeDetector.prototype._currentBinding = function () {\r\n return this.bindingTargets[this.propertyBindingIndex];\r\n };\r\n return AbstractChangeDetector;\r\n})();\r\nexports.AbstractChangeDetector = AbstractChangeDetector;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RfY2hhbmdlX2RldGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9hYnN0cmFjdF9jaGFuZ2VfZGV0ZWN0b3IudHMiXSwibmFtZXMiOlsiX0NvbnRleHQiLCJfQ29udGV4dC5jb25zdHJ1Y3RvciIsIkFic3RyYWN0Q2hhbmdlRGV0ZWN0b3IiLCJBYnN0cmFjdENoYW5nZURldGVjdG9yLmNvbnN0cnVjdG9yIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5hZGRDb250ZW50Q2hpbGQiLCJBYnN0cmFjdENoYW5nZURldGVjdG9yLnJlbW92ZUNvbnRlbnRDaGlsZCIsIkFic3RyYWN0Q2hhbmdlRGV0ZWN0b3IuYWRkVmlld0NoaWxkIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5yZW1vdmVWaWV3Q2hpbGQiLCJBYnN0cmFjdENoYW5nZURldGVjdG9yLnJlbW92ZSIsIkFic3RyYWN0Q2hhbmdlRGV0ZWN0b3IuaGFuZGxlRXZlbnQiLCJBYnN0cmFjdENoYW5nZURldGVjdG9yLmhhbmRsZUV2ZW50SW50ZXJuYWwiLCJBYnN0cmFjdENoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMiLCJBYnN0cmFjdENoYW5nZURldGVjdG9yLmNoZWNrTm9DaGFuZ2VzIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5ydW5EZXRlY3RDaGFuZ2VzIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzSW5SZWNvcmRzIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzSW5SZWNvcmRzSW50ZXJuYWwiLCJBYnN0cmFjdENoYW5nZURldGVjdG9yLmh5ZHJhdGUiLCJBYnN0cmFjdENoYW5nZURldGVjdG9yLmh5ZHJhdGVEaXJlY3RpdmVzIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5kZWh5ZHJhdGUiLCJBYnN0cmFjdENoYW5nZURldGVjdG9yLmRlaHlkcmF0ZURpcmVjdGl2ZXMiLCJBYnN0cmFjdENoYW5nZURldGVjdG9yLmh5ZHJhdGVkIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5kZXN0cm95UmVjdXJzaXZlIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5hZnRlckNvbnRlbnRMaWZlY3ljbGVDYWxsYmFja3MiLCJBYnN0cmFjdENoYW5nZURldGVjdG9yLmFmdGVyQ29udGVudExpZmVjeWNsZUNhbGxiYWNrc0ludGVybmFsIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5hZnRlclZpZXdMaWZlY3ljbGVDYWxsYmFja3MiLCJBYnN0cmFjdENoYW5nZURldGVjdG9yLmFmdGVyVmlld0xpZmVjeWNsZUNhbGxiYWNrc0ludGVybmFsIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5fZGV0ZWN0Q2hhbmdlc0NvbnRlbnRDaGlsZHJlbiIsIkFic3RyYWN0Q2hhbmdlRGV0ZWN0b3IuX2RldGVjdENoYW5nZXNJblZpZXdDaGlsZHJlbiIsIkFic3RyYWN0Q2hhbmdlRGV0ZWN0b3IubWFya0FzQ2hlY2tPbmNlIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5tYXJrUGF0aFRvUm9vdEFzQ2hlY2tPbmNlIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5fdW5zdWJzY3JpYmVGcm9tT3V0cHV0cyIsIkFic3RyYWN0Q2hhbmdlRGV0ZWN0b3IuZ2V0RGlyZWN0aXZlRm9yIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5nZXREZXRlY3RvckZvciIsIkFic3RyYWN0Q2hhbmdlRGV0ZWN0b3Iubm90aWZ5RGlzcGF0Y2hlciIsIkFic3RyYWN0Q2hhbmdlRGV0ZWN0b3IubG9nQmluZGluZ1VwZGF0ZSIsIkFic3RyYWN0Q2hhbmdlRGV0ZWN0b3IuYWRkQ2hhbmdlIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci5fdGhyb3dFcnJvciIsIkFic3RyYWN0Q2hhbmdlRGV0ZWN0b3IudGhyb3dPbkNoYW5nZUVycm9yIiwiQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvci50aHJvd0RlaHlkcmF0ZWRFcnJvciIsIkFic3Ry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U0EsRUFBRUEsS0FBS0EsRUFBRUEsT0FBT0EsQ0FBQ0EsQ0FBQ0E7UUFDNUZBLENBQUVBO1FBQUFBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ1hBLHdGQUF3RkE7WUFDeEZBLGlDQUFpQ0E7WUFDakNBLEtBQUtBLEdBQUdBLElBQUlBLGlDQUFvQkEsQ0FBQ0EsSUFBSUEsRUFBRUEsU0FBU0EsRUFBRUEsS0FBS0EsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDakVBLENBQUNBO1FBQ0RBLE1BQU1BLEtBQUtBLENBQUNBO0lBQ2RBLENBQUNBO0lBRURsQyxtREFBa0JBLEdBQWxCQSxVQUFtQkEsUUFBYUEsRUFBRUEsUUFBYUE7UUFDN0NtQyxNQUFNQSxJQUFJQSw0REFBK0NBLENBQUNBLElBQUlBLENBQUNBLGVBQWVBLEVBQUVBLENBQUNBLEtBQUtBLEVBQzVCQSxRQUFRQSxFQUFFQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQTtJQUN0RkEsQ0FBQ0E7SUFFRG5DLHFEQUFvQkEsR0FBcEJBLFVBQXFCQSxNQUFjQSxJQUFVb0MsTUFBTUEsSUFBSUEsZ0NBQW1CQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUU3RXBDLGdEQUFlQSxHQUF2QkE7UUFDRXFDLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLGNBQWNBLENBQUNBLElBQUlBLENBQUNBLG9CQUFvQkEsQ0FBQ0EsQ0FBQ0E7SUFDeERBLENBQUNBO0lBQ0hyQyw2QkFBQ0E7QUFBREEsQ0FBQ0EsQUE1UUQsSUE0UUM7QUE1UVksOEJBQXNCLHlCQTRRbEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXNzZXJ0aW9uc0VuYWJsZWQsIGlzUHJlc2VudCwgaXNCbGFuaywgU3RyaW5nV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7TGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblV0aWx9IGZyb20gJy4vY2hhbmdlX2RldGVjdGlvbl91dGlsJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdG9yUmVmX30gZnJvbSAnLi9jaGFuZ2VfZGV0ZWN0b3JfcmVmJztcbmltcG9ydCB7RGlyZWN0aXZlSW5kZXh9IGZyb20gJy4vZGlyZWN0aXZlX3JlY29yZCc7XG5pbXBvcnQge0NoYW5nZURldGVjdG9yLCBDaGFuZ2VEaXNwYXRjaGVyfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtQaXBlc30gZnJvbSAnLi9waXBlcyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25FcnJvcixcbiAgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFeGNlcHRpb24sXG4gIERlaHlkcmF0ZWRFeGNlcHRpb24sXG4gIEV2ZW50RXZhbHVhdGlvbkVycm9yQ29udGV4dCxcbiAgRXZlbnRFdmFsdWF0aW9uRXJyb3Jcbn0gZnJvbSAnLi9leGNlcHRpb25zJztcbmltcG9ydCB7QmluZGluZ1RhcmdldH0gZnJvbSAnLi9iaW5kaW5nX3JlY29yZCc7XG5pbXBvcnQge0xvY2Fsc30gZnJvbSAnLi9wYXJzZXIvbG9jYWxzJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yU3RhdGV9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7d3RmQ3JlYXRlU2NvcGUsIHd0ZkxlYXZlLCBXdGZTY29wZUZufSBmcm9tICcuLi9wcm9maWxlL3Byb2ZpbGUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9hc3luYyc7XG5cbnZhciBfc2NvcGVfY2hlY2s6IFd0ZlNjb3BlRm4gPSB3dGZDcmVhdGVTY29wZShgQ2hhbmdlRGV0ZWN0b3IjY2hlY2soYXNjaWkgaWQsIGJvb2wgdGhyb3dPbkNoYW5nZSlgKTtcblxuY2xhc3MgX0NvbnRleHQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudDogYW55LCBwdWJsaWMgY29tcG9uZW50RWxlbWVudDogYW55LCBwdWJsaWMgY29udGV4dDogYW55LFxuICAgICAgICAgICAgICBwdWJsaWMgbG9jYWxzOiBhbnksIHB1YmxpYyBpbmplY3RvcjogYW55LCBwdWJsaWMgZXhwcmVzc2lvbjogYW55KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RDaGFuZ2VEZXRlY3RvcjxUPiBpbXBsZW1lbnRzIENoYW5nZURldGVjdG9yIHtcbiAgY29udGVudENoaWxkcmVuOiBhbnlbXSA9IFtdO1xuICB2aWV3Q2hpbGRyZW46IGFueVtdID0gW107XG4gIHBhcmVudDogQ2hhbmdlRGV0ZWN0b3I7XG4gIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgLy8gVGhlIG5hbWVzIG9mIHRoZSBiZWxvdyBmaWVsZHMgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBjb2RlZ2VuX25hbWVfdXRpbC50cyBvclxuICAvLyBjaGFuZ2UgZGV0ZWN0aW9uIHdpbGwgZmFpbC5cbiAgc3RhdGU6IENoYW5nZURldGVjdG9yU3RhdGUgPSBDaGFuZ2VEZXRlY3RvclN0YXRlLk5ldmVyQ2hlY2tlZDtcbiAgY29udGV4dDogVDtcbiAgbG9jYWxzOiBMb2NhbHMgPSBudWxsO1xuICBtb2RlOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSA9IG51bGw7XG4gIHBpcGVzOiBQaXBlcyA9IG51bGw7XG4gIHByb3BlcnR5QmluZGluZ0luZGV4OiBudW1iZXI7XG4gIG91dHB1dFN1YnNjcmlwdGlvbnM6IGFueVtdO1xuXG4gIGRpc3BhdGNoZXI6IENoYW5nZURpc3BhdGNoZXI7XG5cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaWQ6IHN0cmluZywgcHVibGljIG51bWJlck9mUHJvcGVydHlQcm90b1JlY29yZHM6IG51bWJlcixcbiAgICAgICAgICAgICAgcHVibGljIGJpbmRpbmdUYXJnZXRzOiBCaW5kaW5nVGFyZ2V0W10sIHB1YmxpYyBkaXJlY3RpdmVJbmRpY2VzOiBEaXJlY3RpdmVJbmRleFtdLFxuICAgICAgICAgICAgICBwdWJsaWMgc3RyYXRlZ3k6IENoYW5nZURldGVjdGlvblN0cmF0ZWd5KSB7XG4gICAgdGhpcy5yZWYgPSBuZXcgQ2hhbmdlRGV0ZWN0b3JSZWZfKHRoaXMpO1xuICB9XG5cbiAgYWRkQ29udGVudENoaWxkKGNkOiBDaGFuZ2VEZXRlY3Rvcik6IHZvaWQge1xuICAgIHRoaXMuY29udGVudENoaWxkcmVuLnB1c2goY2QpO1xuICAgIGNkLnBhcmVudCA9IHRoaXM7XG4gIH1cblxuICByZW1vdmVDb250ZW50Q2hpbGQoY2Q6IENoYW5nZURldGVjdG9yKTogdm9pZCB7IExpc3RXcmFwcGVyLnJlbW92ZSh0aGlzLmNvbnRlbnRDaGlsZHJlbiwgY2QpOyB9XG5cbiAgYWRkVmlld0NoaWxkKGNkOiBDaGFuZ2VEZXRlY3Rvcik6IHZvaWQge1xuICAgIHRoaXMudmlld0NoaWxkcmVuLnB1c2goY2QpO1xuICAgIGNkLnBhcmVudCA9IHRoaXM7XG4gIH1cblxuICByZW1vdmVWaWV3Q2hpbGQoY2Q6IENoYW5nZURldGVjdG9yKTogdm9pZCB7IExpc3RXcmFwcGVyLnJlbW92ZSh0aGlzLnZpZXdDaGlsZHJlbiwgY2QpOyB9XG5cbiAgcmVtb3ZlKCk6IHZvaWQgeyB0aGlzLnBhcmVudC5yZW1vdmVDb250ZW50Q2hpbGQodGhpcyk7IH1cblxuICBoYW5kbGVFdmVudChldmVudE5hbWU6IHN0cmluZywgZWxJbmRleDogbnVtYmVyLCBldmVudDogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmh5ZHJhdGVkKCkpIHtcbiAgICAgIHRoaXMudGhyb3dEZWh5ZHJhdGVkRXJyb3IoYCR7dGhpcy5pZH0gLT4gJHtldmVudE5hbWV9YCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB2YXIgbG9jYWxzID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICAgIGxvY2Fscy5zZXQoJyRldmVudCcsIGV2ZW50KTtcbiAgICAgIHZhciByZXMgPSAhdGhpcy5oYW5kbGVFdmVudEludGVybmFsKGV2ZW50TmFtZSwgZWxJbmRleCwgbmV3IExvY2Fscyh0aGlzLmxvY2FscywgbG9jYWxzKSk7XG4gICAgICB0aGlzLm1hcmtQYXRoVG9Sb290QXNDaGVja09uY2UoKTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIGMgPSB0aGlzLmRpc3BhdGNoZXIuZ2V0RGVidWdDb250ZXh0KG51bGwsIGVsSW5kZXgsIG51bGwpO1xuICAgICAgdmFyIGNvbnRleHQgPSBpc1ByZXNlbnQoYykgP1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEV2ZW50RXZhbHVhdGlvbkVycm9yQ29udGV4dChjLmVsZW1lbnQsIGMuY29tcG9uZW50RWxlbWVudCwgYy5jb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmxvY2FscywgYy5pbmplY3RvcikgOlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgICAgIHRocm93IG5ldyBFdmVudEV2YWx1YXRpb25FcnJvcihldmVudE5hbWUsIGUsIGUuc3RhY2ssIGNvbnRleHQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUV2ZW50SW50ZXJuYWwoZXZlbnROYW1lOiBzdHJpbmcsIGVsSW5kZXg6IG51bWJlciwgbG9jYWxzOiBMb2NhbHMpOiBib29sZWFuIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHsgdGhpcy5ydW5EZXRlY3RDaGFuZ2VzKGZhbHNlKTsgfVxuXG4gIGNoZWNrTm9DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmIChhc3NlcnRpb25zRW5hYmxlZCgpKSB7XG4gICAgICB0aGlzLnJ1bkRldGVjdENoYW5nZXModHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcnVuRGV0ZWN0Q2hhbmdlcyh0aHJvd09uQ2hhbmdlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGV0YWNoZWQgfHxcbiAgICAgICAgdGhpcy5tb2RlID09PSBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5DaGVja2VkIHx8IHRoaXMuc3RhdGUgPT09IENoYW5nZURldGVjdG9yU3RhdGUuRXJyb3JlZClcbiAgICAgIHJldHVybjtcbiAgICB2YXIgcyA9IF9zY29wZV9jaGVjayh0aGlzLmlkLCB0aHJvd09uQ2hhbmdlKTtcblxuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlc0luUmVjb3Jkcyh0aHJvd09uQ2hhbmdlKTtcblxuICAgIHRoaXMuX2RldGVjdENoYW5nZXNDb250ZW50Q2hpbGRyZW4odGhyb3dPbkNoYW5nZSk7XG4gICAgaWYgKCF0aHJvd09uQ2hhbmdlKSB0aGlzLmFmdGVyQ29udGVudExpZmVjeWNsZUNhbGxiYWNrcygpO1xuXG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlc0luVmlld0NoaWxkcmVuKHRocm93T25DaGFuZ2UpO1xuICAgIGlmICghdGhyb3dPbkNoYW5nZSkgdGhpcy5hZnRlclZpZXdMaWZlY3ljbGVDYWxsYmFja3MoKTtcblxuICAgIGlmICh0aGlzLm1vZGUgPT09IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkNoZWNrT25jZSlcbiAgICAgIHRoaXMubW9kZSA9IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkNoZWNrZWQ7XG5cbiAgICB0aGlzLnN0YXRlID0gQ2hhbmdlRGV0ZWN0b3JTdGF0ZS5DaGVja2VkQmVmb3JlO1xuICAgIHd0ZkxlYXZlKHMpO1xuICB9XG5cbiAgLy8gVGhpcyBtZXRob2QgaXMgbm90IGludGVuZGVkIHRvIGJlIG92ZXJyaWRkZW4uIFN1YmNsYXNzZXMgc2hvdWxkIGluc3RlYWQgcHJvdmlkZSBhblxuICAvLyBpbXBsZW1lbnRhdGlvbiBvZiBgZGV0ZWN0Q2hhbmdlc0luUmVjb3Jkc0ludGVybmFsYCB3aGljaCBkb2VzIHRoZSB3b3JrIG9mIGRldGVjdGluZyBjaGFuZ2VzXG4gIC8vIGFuZCB3aGljaCB0aGlzIG1ldGhvZCB3aWxsIGNhbGwuXG4gIC8vIFRoaXMgbWV0aG9kIGV4cGVjdHMgdGhhdCBgZGV0ZWN0Q2hhbmdlc0luUmVjb3Jkc0ludGVybmFsYCB3aWxsIHNldCB0aGUgcHJvcGVydHlcbiAgLy8gYHRoaXMucHJvcGVydHlCaW5kaW5nSW5kZXhgIHRvIHRoZSBwcm9wZXJ0eUJpbmRpbmdJbmRleCBvZiB0aGUgZmlyc3QgcHJvdG8gcmVjb3JkLiBUaGlzIGlzIHRvXG4gIC8vIGZhY2lsaXRhdGUgZXJyb3IgcmVwb3J0aW5nLlxuICBkZXRlY3RDaGFuZ2VzSW5SZWNvcmRzKHRocm93T25DaGFuZ2U6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaHlkcmF0ZWQoKSkge1xuICAgICAgdGhpcy50aHJvd0RlaHlkcmF0ZWRFcnJvcih0aGlzLmlkKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlc0luUmVjb3Jkc0ludGVybmFsKHRocm93T25DaGFuZ2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIHRocm93T25DaGFuZ2UgZXJyb3JzIGFyZW4ndCBjb3VudGVkIGFzIGZhdGFsIGVycm9ycy5cbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEV4Y2VwdGlvbikpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IENoYW5nZURldGVjdG9yU3RhdGUuRXJyb3JlZDtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3Rocm93RXJyb3IoZSwgZS5zdGFjayk7XG4gICAgfVxuICB9XG5cbiAgLy8gU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gcGVyZm9ybSBhbnkgd29yayBuZWNlc3NhcnkgdG8gZGV0ZWN0IGFuZCByZXBvcnRcbiAgLy8gY2hhbmdlcy4gRm9yIGV4YW1wbGUsIGNoYW5nZXMgc2hvdWxkIGJlIHJlcG9ydGVkIHZpYSBgQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hZGRDaGFuZ2VgLCBsaWZlY3ljbGVcbiAgLy8gbWV0aG9kcyBzaG91bGQgYmUgY2FsbGVkLCBldGMuXG4gIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsc28gc2V0IGB0aGlzLnByb3BlcnR5QmluZGluZ0luZGV4YCB0byB0aGUgcHJvcGVydHlCaW5kaW5nSW5kZXggb2ZcbiAgLy8gdGhlXG4gIC8vIGZpcnN0IHByb3RvIHJlY29yZCB0byBmYWNpbGl0YXRlIGVycm9yIHJlcG9ydGluZy4gU2VlIHtAbGluayAjZGV0ZWN0Q2hhbmdlc0luUmVjb3Jkc30uXG4gIGRldGVjdENoYW5nZXNJblJlY29yZHNJbnRlcm5hbCh0aHJvd09uQ2hhbmdlOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8vIFRoaXMgbWV0aG9kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBvdmVycmlkZGVuLiBTdWJjbGFzc2VzIHNob3VsZCBpbnN0ZWFkIHByb3ZpZGUgYW5cbiAgLy8gaW1wbGVtZW50YXRpb24gb2YgYGh5ZHJhdGVEaXJlY3RpdmVzYC5cbiAgaHlkcmF0ZShjb250ZXh0OiBULCBsb2NhbHM6IExvY2FscywgZGlzcGF0Y2hlcjogQ2hhbmdlRGlzcGF0Y2hlciwgcGlwZXM6IFBpcGVzKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjtcbiAgICB0aGlzLm1vZGUgPSBDaGFuZ2VEZXRlY3Rpb25VdGlsLmNoYW5nZURldGVjdGlvbk1vZGUodGhpcy5zdHJhdGVneSk7XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcblxuICAgIHRoaXMubG9jYWxzID0gbG9jYWxzO1xuICAgIHRoaXMucGlwZXMgPSBwaXBlcztcbiAgICB0aGlzLmh5ZHJhdGVEaXJlY3RpdmVzKGRpc3BhdGNoZXIpO1xuICAgIHRoaXMuc3RhdGUgPSBDaGFuZ2VEZXRlY3RvclN0YXRlLk5ldmVyQ2hlY2tlZDtcbiAgfVxuXG4gIC8vIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGh5ZHJhdGUgYW55IGRpcmVjdGl2ZXMuXG4gIGh5ZHJhdGVEaXJlY3RpdmVzKGRpc3BhdGNoZXI6IENoYW5nZURpc3BhdGNoZXIpOiB2b2lkIHt9XG5cbiAgLy8gVGhpcyBtZXRob2QgaXMgbm90IGludGVuZGVkIHRvIGJlIG92ZXJyaWRkZW4uIFN1YmNsYXNzZXMgc2hvdWxkIGluc3RlYWQgcHJvdmlkZSBhblxuICAvLyBpbXBsZW1lbnRhdGlvbiBvZiBgZGVoeWRyYXRlRGlyZWN0aXZlc2AuXG4gIGRlaHlkcmF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlaHlkcmF0ZURpcmVjdGl2ZXModHJ1ZSk7XG5cbiAgICB0aGlzLl91bnN1YnNjcmliZUZyb21PdXRwdXRzKCk7XG5cbiAgICB0aGlzLmRpc3BhdGNoZXIgPSBudWxsO1xuICAgIHRoaXMuY29udGV4dCA9IG51bGw7XG4gICAgdGhpcy5sb2NhbHMgPSBudWxsO1xuICAgIHRoaXMucGlwZXMgPSBudWxsO1xuICB9XG5cbiAgLy8gU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gZGVoeWRyYXRlIGFueSBkaXJlY3RpdmVzLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV2ZXJzZVxuICAvLyBhbnkgd29yayBkb25lIGluIGBoeWRyYXRlRGlyZWN0aXZlc2AuXG4gIGRlaHlkcmF0ZURpcmVjdGl2ZXMoZGVzdHJveVBpcGVzOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIGh5ZHJhdGVkKCk6IGJvb2xlYW4geyByZXR1cm4gaXNQcmVzZW50KHRoaXMuY29udGV4dCk7IH1cblxuICBkZXN0cm95UmVjdXJzaXZlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGF0Y2hlci5ub3RpZnlPbkRlc3Ryb3koKTtcbiAgICB0aGlzLmRlaHlkcmF0ZSgpO1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY29udGVudENoaWxkcmVuO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkcmVuW2ldLmRlc3Ryb3lSZWN1cnNpdmUoKTtcbiAgICB9XG4gICAgY2hpbGRyZW4gPSB0aGlzLnZpZXdDaGlsZHJlbjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZHJlbltpXS5kZXN0cm95UmVjdXJzaXZlKCk7XG4gICAgfVxuICB9XG5cbiAgYWZ0ZXJDb250ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGF0Y2hlci5ub3RpZnlBZnRlckNvbnRlbnRDaGVja2VkKCk7XG4gICAgdGhpcy5hZnRlckNvbnRlbnRMaWZlY3ljbGVDYWxsYmFja3NJbnRlcm5hbCgpO1xuICB9XG5cbiAgYWZ0ZXJDb250ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzSW50ZXJuYWwoKTogdm9pZCB7fVxuXG4gIGFmdGVyVmlld0xpZmVjeWNsZUNhbGxiYWNrcygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BhdGNoZXIubm90aWZ5QWZ0ZXJWaWV3Q2hlY2tlZCgpO1xuICAgIHRoaXMuYWZ0ZXJWaWV3TGlmZWN5Y2xlQ2FsbGJhY2tzSW50ZXJuYWwoKTtcbiAgfVxuXG4gIGFmdGVyVmlld0xpZmVjeWNsZUNhbGxiYWNrc0ludGVybmFsKCk6IHZvaWQge31cblxuICAvKiogQGludGVybmFsICovXG4gIF9kZXRlY3RDaGFuZ2VzQ29udGVudENoaWxkcmVuKHRocm93T25DaGFuZ2U6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB2YXIgYyA9IHRoaXMuY29udGVudENoaWxkcmVuO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYy5sZW5ndGg7ICsraSkge1xuICAgICAgY1tpXS5ydW5EZXRlY3RDaGFuZ2VzKHRocm93T25DaGFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2RldGVjdENoYW5nZXNJblZpZXdDaGlsZHJlbih0aHJvd09uQ2hhbmdlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdmFyIGMgPSB0aGlzLnZpZXdDaGlsZHJlbjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGNbaV0ucnVuRGV0ZWN0Q2hhbmdlcyh0aHJvd09uQ2hhbmdlKTtcbiAgICB9XG4gIH1cblxuICBtYXJrQXNDaGVja09uY2UoKTogdm9pZCB7IHRoaXMubW9kZSA9IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkNoZWNrT25jZTsgfVxuXG4gIG1hcmtQYXRoVG9Sb290QXNDaGVja09uY2UoKTogdm9pZCB7XG4gICAgdmFyIGM6IENoYW5nZURldGVjdG9yID0gdGhpcztcbiAgICB3aGlsZSAoaXNQcmVzZW50KGMpICYmIGMubW9kZSAhPT0gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGV0YWNoZWQpIHtcbiAgICAgIGlmIChjLm1vZGUgPT09IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkNoZWNrZWQpIGMubW9kZSA9IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkNoZWNrT25jZTtcbiAgICAgIGMgPSBjLnBhcmVudDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91bnN1YnNjcmliZUZyb21PdXRwdXRzKCk6IHZvaWQge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5vdXRwdXRTdWJzY3JpcHRpb25zKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm91dHB1dFN1YnNjcmlwdGlvbnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgT2JzZXJ2YWJsZVdyYXBwZXIuZGlzcG9zZSh0aGlzLm91dHB1dFN1YnNjcmlwdGlvbnNbaV0pO1xuICAgICAgICB0aGlzLm91dHB1dFN1YnNjcmlwdGlvbnNbaV0gPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldERpcmVjdGl2ZUZvcihkaXJlY3RpdmVzOiBhbnksIGluZGV4OiBudW1iZXIpOiBhbnkge1xuICAgIHJldHVybiBkaXJlY3RpdmVzLmdldERpcmVjdGl2ZUZvcih0aGlzLmRpcmVjdGl2ZUluZGljZXNbaW5kZXhdKTtcbiAgfVxuXG4gIGdldERldGVjdG9yRm9yKGRpcmVjdGl2ZXM6IGFueSwgaW5kZXg6IG51bWJlcik6IENoYW5nZURldGVjdG9yIHtcbiAgICByZXR1cm4gZGlyZWN0aXZlcy5nZXREZXRlY3RvckZvcih0aGlzLmRpcmVjdGl2ZUluZGljZXNbaW5kZXhdKTtcbiAgfVxuXG4gIG5vdGlmeURpc3BhdGNoZXIodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGF0Y2hlci5ub3RpZnlPbkJpbmRpbmcodGhpcy5fY3VycmVudEJpbmRpbmcoKSwgdmFsdWUpO1xuICB9XG5cbiAgbG9nQmluZGluZ1VwZGF0ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5kaXNwYXRjaGVyLmxvZ0JpbmRpbmdVcGRhdGUodGhpcy5fY3VycmVudEJpbmRpbmcoKSwgdmFsdWUpO1xuICB9XG5cbiAgYWRkQ2hhbmdlKGNoYW5nZXM6IHtba2V5OiBzdHJpbmddOiBhbnl9LCBvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KToge1trZXk6IHN0cmluZ106IGFueX0ge1xuICAgIGlmIChpc0JsYW5rKGNoYW5nZXMpKSB7XG4gICAgICBjaGFuZ2VzID0ge307XG4gICAgfVxuICAgIGNoYW5nZXNbdGhpcy5fY3VycmVudEJpbmRpbmcoKS5uYW1lXSA9IENoYW5nZURldGVjdGlvblV0aWwuc2ltcGxlQ2hhbmdlKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgcmV0dXJuIGNoYW5nZXM7XG4gIH1cblxuICBwcml2YXRlIF90aHJvd0Vycm9yKGV4Y2VwdGlvbjogYW55LCBzdGFjazogYW55KTogdm9pZCB7XG4gICAgdmFyIGVycm9yO1xuICAgIHRyeSB7XG4gICAgICB2YXIgYyA9IHRoaXMuZGlzcGF0Y2hlci5nZXREZWJ1Z0NvbnRleHQobnVsbCwgdGhpcy5fY3VycmVudEJpbmRpbmcoKS5lbGVtZW50SW5kZXgsIG51bGwpO1xuICAgICAgdmFyIGNvbnRleHQgPSBpc1ByZXNlbnQoYykgPyBuZXcgX0NvbnRleHQoYy5lbGVtZW50LCBjLmNvbXBvbmVudEVsZW1lbnQsIGMuY29udGV4dCwgYy5sb2NhbHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmluamVjdG9yLCB0aGlzLl9jdXJyZW50QmluZGluZygpLmRlYnVnKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG4gICAgICBlcnJvciA9IG5ldyBDaGFuZ2VEZXRlY3Rpb25FcnJvcih0aGlzLl9jdXJyZW50QmluZGluZygpLmRlYnVnLCBleGNlcHRpb24sIHN0YWNrLCBjb250ZXh0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBpZiBhbiBlcnJvciBoYXBwZW5zIGR1cmluZyBnZXR0aW5nIHRoZSBkZWJ1ZyBjb250ZXh0LCB3ZSB0aHJvdyBhIENoYW5nZURldGVjdGlvbkVycm9yXG4gICAgICAvLyB3aXRob3V0IHRoZSBleHRyYSBpbmZvcm1hdGlvbi5cbiAgICAgIGVycm9yID0gbmV3IENoYW5nZURldGVjdGlvbkVycm9yKG51bGwsIGV4Y2VwdGlvbiwgc3RhY2ssIG51bGwpO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIHRocm93T25DaGFuZ2VFcnJvcihvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXhjZXB0aW9uKHRoaXMuX2N1cnJlbnRCaW5kaW5nKCkuZGVidWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFZhbHVlLCBuZXdWYWx1ZSwgbnVsbCk7XG4gIH1cblxuICB0aHJvd0RlaHlkcmF0ZWRFcnJvcihkZXRhaWw6IHN0cmluZyk6IHZvaWQgeyB0aHJvdyBuZXcgRGVoeWRyYXRlZEV4Y2VwdGlvbihkZXRhaWwpOyB9XG5cbiAgcHJpdmF0ZSBfY3VycmVudEJpbmRpbmcoKTogQmluZGluZ1RhcmdldCB7XG4gICAgcmV0dXJuIHRoaXMuYmluZGluZ1RhcmdldHNbdGhpcy5wcm9wZXJ0eUJpbmRpbmdJbmRleF07XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';(function (RecordType) {\r\n RecordType[RecordType[\"Self\"] = 0] = \"Self\";\r\n RecordType[RecordType[\"Const\"] = 1] = \"Const\";\r\n RecordType[RecordType[\"PrimitiveOp\"] = 2] = \"PrimitiveOp\";\r\n RecordType[RecordType[\"PropertyRead\"] = 3] = \"PropertyRead\";\r\n RecordType[RecordType[\"PropertyWrite\"] = 4] = \"PropertyWrite\";\r\n RecordType[RecordType[\"Local\"] = 5] = \"Local\";\r\n RecordType[RecordType[\"InvokeMethod\"] = 6] = \"InvokeMethod\";\r\n RecordType[RecordType[\"InvokeClosure\"] = 7] = \"InvokeClosure\";\r\n RecordType[RecordType[\"KeyedRead\"] = 8] = \"KeyedRead\";\r\n RecordType[RecordType[\"KeyedWrite\"] = 9] = \"KeyedWrite\";\r\n RecordType[RecordType[\"Pipe\"] = 10] = \"Pipe\";\r\n RecordType[RecordType[\"Interpolate\"] = 11] = \"Interpolate\";\r\n RecordType[RecordType[\"SafeProperty\"] = 12] = \"SafeProperty\";\r\n RecordType[RecordType[\"CollectionLiteral\"] = 13] = \"CollectionLiteral\";\r\n RecordType[RecordType[\"SafeMethodInvoke\"] = 14] = \"SafeMethodInvoke\";\r\n RecordType[RecordType[\"DirectiveLifecycle\"] = 15] = \"DirectiveLifecycle\";\r\n RecordType[RecordType[\"Chain\"] = 16] = \"Chain\";\r\n RecordType[RecordType[\"SkipRecordsIf\"] = 17] = \"SkipRecordsIf\";\r\n RecordType[RecordType[\"SkipRecordsIfNot\"] = 18] = \"SkipRecordsIfNot\";\r\n RecordType[RecordType[\"SkipRecords\"] = 19] = \"SkipRecords\"; // Skip records unconditionally\r\n})(exports.RecordType || (exports.RecordType = {}));\r\nvar RecordType = exports.RecordType;\r\nvar ProtoRecord = (function () {\r\n function ProtoRecord(mode, name, funcOrValue, args, fixedArgs, contextIndex, directiveIndex, selfIndex, bindingRecord, lastInBinding, lastInDirective, argumentToPureFunction, referencedBySelf, propertyBindingIndex) {\r\n this.mode = mode;\r\n this.name = name;\r\n this.funcOrValue = funcOrValue;\r\n this.args = args;\r\n this.fixedArgs = fixedArgs;\r\n this.contextIndex = contextIndex;\r\n this.directiveIndex = directiveIndex;\r\n this.selfIndex = selfIndex;\r\n this.bindingRecord = bindingRecord;\r\n this.lastInBinding = lastInBinding;\r\n this.lastInDirective = lastInDirective;\r\n this.argumentToPureFunction = argumentToPureFunction;\r\n this.referencedBySelf = referencedBySelf;\r\n this.propertyBindingIndex = propertyBindingIndex;\r\n }\r\n ProtoRecord.prototype.isPureFunction = function () {\r\n return this.mode === RecordType.Interpolate || this.mode === RecordType.CollectionLiteral;\r\n };\r\n ProtoRecord.prototype.isUsedByOtherRecord = function () { return !this.lastInBinding || this.referencedBySelf; };\r\n ProtoRecord.prototype.shouldBeChecked = function () {\r\n return this.argumentToPureFunction || this.lastInBinding || this.isPureFunction() ||\r\n this.isPipeRecord();\r\n };\r\n ProtoRecord.prototype.isPipeRecord = function () { return this.mode === RecordType.Pipe; };\r\n ProtoRecord.prototype.isConditionalSkipRecord = function () {\r\n return this.mode === RecordType.SkipRecordsIfNot || this.mode === RecordType.SkipRecordsIf;\r\n };\r\n ProtoRecord.prototype.isUnconditionalSkipRecord = function () { return this.mode === RecordType.SkipRecords; };\r\n ProtoRecord.prototype.isSkipRecord = function () {\r\n return this.isConditionalSkipRecord() || this.isUnconditionalSkipRecord();\r\n };\r\n ProtoRecord.prototype.isLifeCycleRecord = function () { return this.mode === RecordType.DirectiveLifecycle; };\r\n return ProtoRecord;\r\n})();\r\nexports.ProtoRecord = ProtoRecord;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9fcmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9wcm90b19yZWNvcmQudHMiXSwibmFtZXMiOlsiUmVjb3JkVHlwZSIsIlByb3RvUmVjb3JkIiwiUHJvdG9SZWNvcmQuY29uc3RydWN0b3IiLCJQcm90b1JlY29yZC5pc1B1cmVGdW5jdGlvbiIsIlByb3RvUmVjb3JkLmlzVXNlZEJ5T3RoZXJSZWNvcmQiLCJQcm90b1JlY29yZC5zaG91bGRCZUNoZWNrZWQiLCJQcm90b1JlY29yZC5pc1BpcGVSZWNvcmQiLCJQcm90b1JlY29yZC5pc0NvbmRpdGlvbmFsU2tpcFJlY29yZCIsIlByb3RvUmVjb3JkLmlzVW5jb25kaXRpb25hbFNraXBSZWNvcmQiLCJQcm90b1JlY29yZC5pc1NraXBSZWNvcmQiLCJQcm90b1JlY29yZC5pc0xpZmVDeWNsZVJlY29yZCJdLCJtYXBwaW5ncyI6IkFBR0EsV0FBWSxVQUFVO0lBQ3BCQSwyQ0FBSUEsQ0FBQUE7SUFDSkEsNkNBQUtBLENBQUFBO0lBQ0xBLHlEQUFXQSxDQUFBQTtJQUNYQSwyREFBWUEsQ0FBQUE7SUFDWkEsNkRBQWFBLENBQUFBO0lBQ2JBLDZDQUFLQSxDQUFBQTtJQUNMQSwyREFBWUEsQ0FBQUE7SUFDWkEsNkRBQWFBLENBQUFBO0lBQ2JBLHFEQUFTQSxDQUFBQTtJQUNUQSx1REFBVUEsQ0FBQUE7SUFDVkEsNENBQUlBLENBQUFBO0lBQ0pBLDBEQUFXQSxDQUFBQTtJQUNYQSw0REFBWUEsQ0FBQUE7SUFDWkEsc0VBQWlCQSxDQUFBQTtJQUNqQkEsb0VBQWdCQSxDQUFBQTtJQUNoQkEsd0VBQWtCQSxDQUFBQTtJQUNsQkEsOENBQUtBLENBQUFBO0lBQ0xBLDhEQUFhQSxDQUFBQTtJQUNiQSxvRUFBZ0JBLENBQUFBO0lBQ2hCQSwwREFBV0EsQ0FBQUEsQ0FBUUEsK0JBQStCQTtBQUNwREEsQ0FBQ0EsRUFyQlcsa0JBQVUsS0FBVixr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Jy4vYmluZGluZ19yZWNvcmQnO1xuaW1wb3J0IHtEaXJlY3RpdmVJbmRleH0gZnJvbSAnLi9kaXJlY3RpdmVfcmVjb3JkJztcblxuZXhwb3J0IGVudW0gUmVjb3JkVHlwZSB7XG4gIFNlbGYsXG4gIENvbnN0LFxuICBQcmltaXRpdmVPcCxcbiAgUHJvcGVydHlSZWFkLFxuICBQcm9wZXJ0eVdyaXRlLFxuICBMb2NhbCxcbiAgSW52b2tlTWV0aG9kLFxuICBJbnZva2VDbG9zdXJlLFxuICBLZXllZFJlYWQsXG4gIEtleWVkV3JpdGUsXG4gIFBpcGUsXG4gIEludGVycG9sYXRlLFxuICBTYWZlUHJvcGVydHksXG4gIENvbGxlY3Rpb25MaXRlcmFsLFxuICBTYWZlTWV0aG9kSW52b2tlLFxuICBEaXJlY3RpdmVMaWZlY3ljbGUsXG4gIENoYWluLFxuICBTa2lwUmVjb3Jkc0lmLCAgICAgLy8gU2tpcCByZWNvcmRzIHdoZW4gdGhlIGNvbmRpdGlvbiBpcyB0cnVlXG4gIFNraXBSZWNvcmRzSWZOb3QsICAvLyBTa2lwIHJlY29yZHMgd2hlbiB0aGUgY29uZGl0aW9uIGlzIGZhbHNlXG4gIFNraXBSZWNvcmRzICAgICAgICAvLyBTa2lwIHJlY29yZHMgdW5jb25kaXRpb25hbGx5XG59XG5cbmV4cG9ydCBjbGFzcyBQcm90b1JlY29yZCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2RlOiBSZWNvcmRUeXBlLCBwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgZnVuY09yVmFsdWUsIHB1YmxpYyBhcmdzOiBhbnlbXSxcbiAgICAgICAgICAgICAgcHVibGljIGZpeGVkQXJnczogYW55W10sIHB1YmxpYyBjb250ZXh0SW5kZXg6IG51bWJlcixcbiAgICAgICAgICAgICAgcHVibGljIGRpcmVjdGl2ZUluZGV4OiBEaXJlY3RpdmVJbmRleCwgcHVibGljIHNlbGZJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICBwdWJsaWMgYmluZGluZ1JlY29yZDogQmluZGluZ1JlY29yZCwgcHVibGljIGxhc3RJbkJpbmRpbmc6IGJvb2xlYW4sXG4gICAgICAgICAgICAgIHB1YmxpYyBsYXN0SW5EaXJlY3RpdmU6IGJvb2xlYW4sIHB1YmxpYyBhcmd1bWVudFRvUHVyZUZ1bmN0aW9uOiBib29sZWFuLFxuICAgICAgICAgICAgICBwdWJsaWMgcmVmZXJlbmNlZEJ5U2VsZjogYm9vbGVhbiwgcHVibGljIHByb3BlcnR5QmluZGluZ0luZGV4OiBudW1iZXIpIHt9XG5cbiAgaXNQdXJlRnVuY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gUmVjb3JkVHlwZS5JbnRlcnBvbGF0ZSB8fCB0aGlzLm1vZGUgPT09IFJlY29yZFR5cGUuQ29sbGVjdGlvbkxpdGVyYWw7XG4gIH1cblxuICBpc1VzZWRCeU90aGVyUmVjb3JkKCk6IGJvb2xlYW4geyByZXR1cm4gIXRoaXMubGFzdEluQmluZGluZyB8fCB0aGlzLnJlZmVyZW5jZWRCeVNlbGY7IH1cblxuICBzaG91bGRCZUNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXJndW1lbnRUb1B1cmVGdW5jdGlvbiB8fCB0aGlzLmxhc3RJbkJpbmRpbmcgfHwgdGhpcy5pc1B1cmVGdW5jdGlvbigpIHx8XG4gICAgICAgICAgIHRoaXMuaXNQaXBlUmVjb3JkKCk7XG4gIH1cblxuICBpc1BpcGVSZWNvcmQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLm1vZGUgPT09IFJlY29yZFR5cGUuUGlwZTsgfVxuXG4gIGlzQ29uZGl0aW9uYWxTa2lwUmVjb3JkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IFJlY29yZFR5cGUuU2tpcFJlY29yZHNJZk5vdCB8fCB0aGlzLm1vZGUgPT09IFJlY29yZFR5cGUuU2tpcFJlY29yZHNJZjtcbiAgfVxuXG4gIGlzVW5jb25kaXRpb25hbFNraXBSZWNvcmQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLm1vZGUgPT09IFJlY29yZFR5cGUuU2tpcFJlY29yZHM7IH1cblxuICBpc1NraXBSZWNvcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNDb25kaXRpb25hbFNraXBSZWNvcmQoKSB8fCB0aGlzLmlzVW5jb25kaXRpb25hbFNraXBSZWNvcmQoKTtcbiAgfVxuXG4gIGlzTGlmZUN5Y2xlUmVjb3JkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5tb2RlID09PSBSZWNvcmRUeXBlLkRpcmVjdGl2ZUxpZmVjeWNsZTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar abstract_change_detector_1 = require('./abstract_change_detector');\r\nvar change_detection_util_1 = require('./change_detection_util');\r\nvar constants_1 = require('./constants');\r\nvar proto_record_1 = require('./proto_record');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nvar async_1 = require('angular2/src/facade/async');\r\nvar DynamicChangeDetector = (function (_super) {\r\n __extends(DynamicChangeDetector, _super);\r\n function DynamicChangeDetector(id, numberOfPropertyProtoRecords, propertyBindingTargets, directiveIndices, strategy, _records, _eventBindings, _directiveRecords, _genConfig) {\r\n _super.call(this, id, numberOfPropertyProtoRecords, propertyBindingTargets, directiveIndices, strategy);\r\n this._records = _records;\r\n this._eventBindings = _eventBindings;\r\n this._directiveRecords = _directiveRecords;\r\n this._genConfig = _genConfig;\r\n var len = _records.length + 1;\r\n this.values = collection_1.ListWrapper.createFixedSize(len);\r\n this.localPipes = collection_1.ListWrapper.createFixedSize(len);\r\n this.prevContexts = collection_1.ListWrapper.createFixedSize(len);\r\n this.changes = collection_1.ListWrapper.createFixedSize(len);\r\n this.dehydrateDirectives(false);\r\n }\r\n DynamicChangeDetector.prototype.handleEventInternal = function (eventName, elIndex, locals) {\r\n var _this = this;\r\n var preventDefault = false;\r\n this._matchingEventBindings(eventName, elIndex)\r\n .forEach(function (rec) {\r\n var res = _this._processEventBinding(rec, locals);\r\n if (res === false) {\r\n preventDefault = true;\r\n }\r\n });\r\n return preventDefault;\r\n };\r\n /** @internal */\r\n DynamicChangeDetector.prototype._processEventBinding = function (eb, locals) {\r\n var values = collection_1.ListWrapper.createFixedSize(eb.records.length);\r\n values[0] = this.values[0];\r\n for (var protoIdx = 0; protoIdx < eb.records.length; ++protoIdx) {\r\n var proto = eb.records[protoIdx];\r\n if (proto.isSkipRecord()) {\r\n protoIdx += this._computeSkipLength(protoIdx, proto, values);\r\n }\r\n else {\r\n if (proto.lastInBinding) {\r\n this._markPathAsCheckOnce(proto);\r\n }\r\n var res = this._calculateCurrValue(proto, values, locals);\r\n if (proto.lastInBinding) {\r\n return res;\r\n }\r\n else {\r\n this._writeSelf(proto, res, values);\r\n }\r\n }\r\n }\r\n throw new exceptions_1.BaseException(\"Cannot be reached\");\r\n };\r\n DynamicChangeDetector.prototype._computeSkipLength = function (protoIndex, proto, values) {\r\n if (proto.mode === proto_record_1.RecordType.SkipRecords) {\r\n return proto.fixedArgs[0] - protoIndex - 1;\r\n }\r\n if (proto.mode === proto_record_1.RecordType.SkipRecordsIf) {\r\n var condition = this._readContext(proto, values);\r\n return condition ? proto.fixedArgs[0] - protoIndex - 1 : 0;\r\n }\r\n if (proto.mode === proto_record_1.RecordType.SkipRecordsIfNot) {\r\n var condition = this._readContext(proto, values);\r\n return condition ? 0 : proto.fixedArgs[0] - protoIndex - 1;\r\n }\r\n throw new exceptions_1.BaseException(\"Cannot be reached\");\r\n };\r\n /** @internal */\r\n DynamicChangeDetector.prototype._markPathAsCheckOnce = function (proto) {\r\n if (!proto.bindingRecord.isDefaultChangeDetection()) {\r\n var dir = proto.bindingRecord.directiveRecord;\r\n this._getDetectorFor(dir.directiveIndex).markPathToRootAsCheckOnce();\r\n }\r\n };\r\n /** @internal */\r\n DynamicChangeDetector.prototype._matchingEventBindings = function (eventName, elIndex) {\r\n return this._eventBindings.filter(function (eb) { return eb.eventName == eventName && eb.elIndex === elIndex; });\r\n };\r\n DynamicChangeDetector.prototype.hydrateDirectives = function (dispatcher) {\r\n var _this = this;\r\n this.values[0] = this.context;\r\n this.dispatcher = dispatcher;\r\n this.outputSubscriptions = [];\r\n for (var i = 0; i < this._directiveRecords.length; ++i) {\r\n var r = this._directiveRecords[i];\r\n if (lang_1.isPresent(r.outputs)) {\r\n r.outputs.forEach(function (output) {\r\n var eventHandler = _this._createEventHandler(r.directiveIndex.elementIndex, output[1]);\r\n var directive = _this._getDirectiveFor(r.directiveIndex);\r\n var getter = reflection_1.reflector.getter(output[0]);\r\n _this.outputSubscriptions.push(async_1.ObservableWrapper.subscribe(getter(directive), eventHandler));\r\n });\r\n }\r\n }\r\n };\r\n DynamicChangeDetector.prototype._createEventHandler = function (boundElementIndex, eventName) {\r\n var _this = this;\r\n return function (event) { return _this.handleEvent(eventName, boundElementIndex, event); };\r\n };\r\n DynamicChangeDetector.prototype.dehydrateDirectives = function (destroyPipes) {\r\n if (destroyPipes) {\r\n this._destroyPipes();\r\n this._destroyDirectives();\r\n }\r\n this.values[0] = null;\r\n collection_1.ListWrapper.fill(this.values, change_detection_util_1.ChangeDetectionUtil.uninitialized, 1);\r\n collection_1.ListWrapper.fill(this.changes, false);\r\n collection_1.ListWrapper.fill(this.localPipes, null);\r\n collection_1.ListWrapper.fill(this.prevContexts, change_detection_util_1.ChangeDetectionUtil.uninitialized);\r\n };\r\n /** @internal */\r\n DynamicChangeDetector.prototype._destroyPipes = function () {\r\n for (var i = 0; i < this.localPipes.length; ++i) {\r\n if (lang_1.isPresent(this.localPipes[i])) {\r\n change_detection_util_1.ChangeDetectionUtil.callPipeOnDestroy(this.localPipes[i]);\r\n }\r\n }\r\n };\r\n /** @internal */\r\n DynamicChangeDetector.prototype._destroyDirectives = function () {\r\n for (var i = 0; i < this._directiveRecords.length; ++i) {\r\n var record = this._directiveRecords[i];\r\n if (record.callOnDestroy) {\r\n this._getDirectiveFor(record.directiveIndex).ngOnDestroy();\r\n }\r\n }\r\n };\r\n DynamicChangeDetector.prototype.checkNoChanges = function () { this.runDetectChanges(true); };\r\n DynamicChangeDetector.prototype.detectChangesInRecordsInternal = function (throwOnChange) {\r\n var protos = this._records;\r\n var changes = null;\r\n var isChanged = false;\r\n for (var protoIdx = 0; protoIdx < protos.length; ++protoIdx) {\r\n var proto = protos[protoIdx];\r\n var bindingRecord = proto.bindingRecord;\r\n var directiveRecord = bindingRecord.directiveRecord;\r\n if (this._firstInBinding(proto)) {\r\n this.propertyBindingIndex = proto.propertyBindingIndex;\r\n }\r\n if (proto.isLifeCycleRecord()) {\r\n if (proto.name === \"DoCheck\" && !throwOnChange) {\r\n this._getDirectiveFor(directiveRecord.directiveIndex).ngDoCheck();\r\n }\r\n else if (proto.name === \"OnInit\" && !throwOnChange &&\r\n this.state == constants_1.ChangeDetectorState.NeverChecked) {\r\n this._getDirectiveFor(directiveRecord.directiveIndex).ngOnInit();\r\n }\r\n else if (proto.name === \"OnChanges\" && lang_1.isPresent(changes) && !throwOnChange) {\r\n this._getDirectiveFor(directiveRecord.directiveIndex).ngOnChanges(changes);\r\n }\r\n }\r\n else if (proto.isSkipRecord()) {\r\n protoIdx += this._computeSkipLength(protoIdx, proto, this.values);\r\n }\r\n else {\r\n var change = this._check(proto, throwOnChange, this.values, this.locals);\r\n if (lang_1.isPresent(change)) {\r\n this._updateDirectiveOrElement(change, bindingRecord);\r\n isChanged = true;\r\n changes = this._addChange(bindingRecord, change, changes);\r\n }\r\n }\r\n if (proto.lastInDirective) {\r\n changes = null;\r\n if (isChanged && !bindingRecord.isDefaultChangeDetection()) {\r\n this._getDetectorFor(directiveRecord.directiveIndex).markAsCheckOnce();\r\n }\r\n isChanged = false;\r\n }\r\n }\r\n };\r\n /** @internal */\r\n DynamicChangeDetector.prototype._firstInBinding = function (r) {\r\n var prev = change_detection_util_1.ChangeDetectionUtil.protoByIndex(this._records, r.selfIndex - 1);\r\n return lang_1.isBlank(prev) || prev.bindingRecord !== r.bindingRecord;\r\n };\r\n DynamicChangeDetector.prototype.afterContentLifecycleCallbacksInternal = function () {\r\n var dirs = this._directiveRecords;\r\n for (var i = dirs.length - 1; i >= 0; --i) {\r\n var dir = dirs[i];\r\n if (dir.callAfterContentInit && this.state == constants_1.ChangeDetectorState.NeverChecked) {\r\n this._getDirectiveFor(dir.directiveIndex).ngAfterContentInit();\r\n }\r\n if (dir.callAfterContentChecked) {\r\n this._getDirectiveFor(dir.directiveIndex).ngAfterContentChecked();\r\n }\r\n }\r\n };\r\n DynamicChangeDetector.prototype.afterViewLifecycleCallbacksInternal = function () {\r\n var dirs = this._directiveRecords;\r\n for (var i = dirs.length - 1; i >= 0; --i) {\r\n var dir = dirs[i];\r\n if (dir.callAfterViewInit && this.state == constants_1.ChangeDetectorState.NeverChecked) {\r\n this._getDirectiveFor(dir.directiveIndex).ngAfterViewInit();\r\n }\r\n if (dir.callAfterViewChecked) {\r\n this._getDirectiveFor(dir.directiveIndex).ngAfterViewChecked();\r\n }\r\n }\r\n };\r\n /** @internal */\r\n DynamicChangeDetector.prototype._updateDirectiveOrElement = function (change, bindingRecord) {\r\n if (lang_1.isBlank(bindingRecord.directiveRecord)) {\r\n _super.prototype.notifyDispatcher.call(this, change.currentValue);\r\n }\r\n else {\r\n var directiveIndex = bindingRecord.directiveRecord.directiveIndex;\r\n bindingRecord.setter(this._getDirectiveFor(directiveIndex), change.currentValue);\r\n }\r\n if (this._genConfig.logBindingUpdate) {\r\n _super.prototype.logBindingUpdate.call(this, change.currentValue);\r\n }\r\n };\r\n /** @internal */\r\n DynamicChangeDetector.prototype._addChange = function (bindingRecord, change, changes) {\r\n if (bindingRecord.callOnChanges()) {\r\n return _super.prototype.addChange.call(this, changes, change.previousValue, change.currentValue);\r\n }\r\n else {\r\n return changes;\r\n }\r\n };\r\n /** @internal */\r\n DynamicChangeDetector.prototype._getDirectiveFor = function (directiveIndex) {\r\n return this.dispatcher.getDirectiveFor(directiveIndex);\r\n };\r\n /** @internal */\r\n DynamicChangeDetector.prototype._getDetectorFor = function (directiveIndex) {\r\n return this.dispatcher.getDetectorFor(directiveIndex);\r\n };\r\n /** @internal */\r\n DynamicChangeDetector.prototype._check = function (proto, throwOnChange, values, locals) {\r\n if (proto.isPipeRecord()) {\r\n return this._pipeCheck(proto, throwOnChange, values);\r\n }\r\n else {\r\n return this._referenceCheck(proto, throwOnChange, values, locals);\r\n }\r\n };\r\n /** @internal */\r\n DynamicChangeDetector.prototype._referenceCheck = function (proto, throwOnChange, values, locals) {\r\n if (this._pureFuncAndArgsDidNotChange(proto)) {\r\n this._setChanged(proto, false);\r\n return null;\r\n }\r\n var currValue = this._calculateCurrValue(proto, values, locals);\r\n if (proto.shouldBeChecked()) {\r\n var prevValue = this._readSelf(proto, values);\r\n var detectedChange = throwOnChange ?\r\n !change_detection_util_1.ChangeDetectionUtil.devModeEqual(prevValue, currValue) :\r\n change_detection_util_1.ChangeDetectionUtil.looseNotIdentical(prevValue, currValue);\r\n if (detectedChange) {\r\n if (proto.lastInBinding) {\r\n var change = change_detection_util_1.ChangeDetectionUtil.simpleChange(prevValue, currValue);\r\n if (throwOnChange)\r\n this.throwOnChangeError(prevValue, currValue);\r\n this._writeSelf(proto, currValue, values);\r\n this._setChanged(proto, true);\r\n return change;\r\n }\r\n else {\r\n this._writeSelf(proto, currValue, values);\r\n this._setChanged(proto, true);\r\n return null;\r\n }\r\n }\r\n else {\r\n this._setChanged(proto, false);\r\n return null;\r\n }\r\n }\r\n else {\r\n this._writeSelf(proto, currValue, values);\r\n this._setChanged(proto, true);\r\n return null;\r\n }\r\n };\r\n DynamicChangeDetector.prototype._calculateCurrValue = function (proto, values, locals) {\r\n switch (proto.mode) {\r\n case proto_record_1.RecordType.Self:\r\n return this._readContext(proto, values);\r\n case proto_record_1.RecordType.Const:\r\n return proto.funcOrValue;\r\n case proto_record_1.RecordType.PropertyRead:\r\n var context = this._readContext(proto, values);\r\n return proto.funcOrValue(context);\r\n case proto_record_1.RecordType.SafeProperty:\r\n var context = this._readContext(proto, values);\r\n return lang_1.isBlank(context) ? null : proto.funcOrValue(context);\r\n case proto_record_1.RecordType.PropertyWrite:\r\n var context = this._readContext(proto, values);\r\n var value = this._readArgs(proto, values)[0];\r\n proto.funcOrValue(context, value);\r\n return value;\r\n case proto_record_1.RecordType.KeyedWrite:\r\n var context = this._readContext(proto, values);\r\n var key = this._readArgs(proto, values)[0];\r\n var value = this._readArgs(proto, values)[1];\r\n context[key] = value;\r\n return value;\r\n case proto_record_1.RecordType.Local:\r\n return locals.get(proto.name);\r\n case proto_record_1.RecordType.InvokeMethod:\r\n var context = this._readContext(proto, values);\r\n var args = this._readArgs(proto, values);\r\n return proto.funcOrValue(context, args);\r\n case proto_record_1.RecordType.SafeMethodInvoke:\r\n var context = this._readContext(proto, values);\r\n if (lang_1.isBlank(context)) {\r\n return null;\r\n }\r\n var args = this._readArgs(proto, values);\r\n return proto.funcOrValue(context, args);\r\n case proto_record_1.RecordType.KeyedRead:\r\n var arg = this._readArgs(proto, values)[0];\r\n return this._readContext(proto, values)[arg];\r\n case proto_record_1.RecordType.Chain:\r\n var args = this._readArgs(proto, values);\r\n return args[args.length - 1];\r\n case proto_record_1.RecordType.InvokeClosure:\r\n return lang_1.FunctionWrapper.apply(this._readContext(proto, values), this._readArgs(proto, values));\r\n case proto_record_1.RecordType.Interpolate:\r\n case proto_record_1.RecordType.PrimitiveOp:\r\n case proto_record_1.RecordType.CollectionLiteral:\r\n return lang_1.FunctionWrapper.apply(proto.funcOrValue, this._readArgs(proto, values));\r\n default:\r\n throw new exceptions_1.BaseException(\"Unknown operation \" + proto.mode);\r\n }\r\n };\r\n DynamicChangeDetector.prototype._pipeCheck = function (proto, throwOnChange, values) {\r\n var context = this._readContext(proto, values);\r\n var selectedPipe = this._pipeFor(proto, context);\r\n if (!selectedPipe.pure || this._argsOrContextChanged(proto)) {\r\n var args = this._readArgs(proto, values);\r\n var currValue = selectedPipe.pipe.transform(context, args);\r\n if (proto.shouldBeChecked()) {\r\n var prevValue = this._readSelf(proto, values);\r\n var detectedChange = throwOnChange ?\r\n !change_detection_util_1.ChangeDetectionUtil.devModeEqual(prevValue, currValue) :\r\n change_detection_util_1.ChangeDetectionUtil.looseNotIdentical(prevValue, currValue);\r\n if (detectedChange) {\r\n currValue = change_detection_util_1.ChangeDetectionUtil.unwrapValue(currValue);\r\n if (proto.lastInBinding) {\r\n var change = change_detection_util_1.ChangeDetectionUtil.simpleChange(prevValue, currValue);\r\n if (throwOnChange)\r\n this.throwOnChangeError(prevValue, currValue);\r\n this._writeSelf(proto, currValue, values);\r\n this._setChanged(proto, true);\r\n return change;\r\n }\r\n else {\r\n this._writeSelf(proto, currValue, values);\r\n this._setChanged(proto, true);\r\n return null;\r\n }\r\n }\r\n else {\r\n this._setChanged(proto, false);\r\n return null;\r\n }\r\n }\r\n else {\r\n this._writeSelf(proto, currValue, values);\r\n this._setChanged(proto, true);\r\n return null;\r\n }\r\n }\r\n };\r\n DynamicChangeDetector.prototype._pipeFor = function (proto, context) {\r\n var storedPipe = this._readPipe(proto);\r\n if (lang_1.isPresent(storedPipe))\r\n return storedPipe;\r\n var pipe = this.pipes.get(proto.name);\r\n this._writePipe(proto, pipe);\r\n return pipe;\r\n };\r\n DynamicChangeDetector.prototype._readContext = function (proto, values) {\r\n if (proto.contextIndex == -1) {\r\n return this._getDirectiveFor(proto.directiveIndex);\r\n }\r\n return values[proto.contextIndex];\r\n };\r\n DynamicChangeDetector.prototype._readSelf = function (proto, values) { return values[proto.selfIndex]; };\r\n DynamicChangeDetector.prototype._writeSelf = function (proto, value, values) { values[proto.selfIndex] = value; };\r\n DynamicChangeDetector.prototype._readPipe = function (proto) { return this.localPipes[proto.selfIndex]; };\r\n DynamicChangeDetector.prototype._writePipe = function (proto, value) { this.localPipes[proto.selfIndex] = value; };\r\n DynamicChangeDetector.prototype._setChanged = function (proto, value) {\r\n if (proto.argumentToPureFunction)\r\n this.changes[proto.selfIndex] = value;\r\n };\r\n DynamicChangeDetector.prototype._pureFuncAndArgsDidNotChange = function (proto) {\r\n return proto.isPureFunction() && !this._argsChanged(proto);\r\n };\r\n DynamicChangeDetector.prototype._argsChanged = function (proto) {\r\n var args = proto.args;\r\n for (var i = 0; i < args.length; ++i) {\r\n if (this.changes[args[i]]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n DynamicChangeDetector.prototype._argsOrContextChanged = function (proto) {\r\n return this._argsChanged(proto) || this.changes[proto.contextIndex];\r\n };\r\n DynamicChangeDetector.prototype._readArgs = function (proto, values) {\r\n var res = collection_1.ListWrapper.createFixedSize(proto.args.length);\r\n var args = proto.args;\r\n for (var i = 0; i < args.length; ++i) {\r\n res[i] = values[args[i]];\r\n }\r\n return res;\r\n };\r\n return DynamicChangeDetector;\r\n})(abstract_change_detector_1.AbstractChangeDetector);\r\nexports.DynamicChangeDetector = DynamicChangeDetector;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY19jaGFuZ2VfZGV0ZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2R5bmFtaWNfY2hhbmdlX2RldGVjdG9yLnRzIl0sIm5hbWVzIjpbIkR5bmFtaWNDaGFuZ2VEZXRlY3RvciIsIkR5bmFtaWNDaGFuZ2VEZXRlY3Rvci5jb25zdHJ1Y3RvciIsIkR5bmFtaWNDaGFuZ2VEZXRlY3Rvci5oYW5kbGVFdmVudEludGVybmFsIiwiRHluYW1pY0NoYW5nZURldGVjdG9yLl9wcm9jZXNzRXZlbnRCaW5kaW5nIiwiRHluYW1pY0NoYW5nZURldGVjdG9yLl9jb21wdXRlU2tpcExlbmd0aCIsIkR5bmFtaWNDaGFuZ2VEZXRlY3Rvci5fbWFya1BhdGhBc0NoZWNrT25jZSIsIkR5bmFtaWNDaGFuZ2VEZXRlY3Rvci5fbWF0Y2hpbmdFdmVudEJpbmRpbmdzIiwiRHluYW1pY0NoYW5nZURldGVjdG9yLmh5ZHJhdGVEaXJlY3RpdmVzIiwiRHluYW1pY0NoYW5nZURldGVjdG9yLl9jcmVhdGVFdmVudEhhbmRsZXIiLCJEeW5hbWljQ2hhbmdlRGV0ZWN0b3IuZGVoeWRyYXRlRGlyZWN0aXZlcyIsIkR5bmFtaWNDaGFuZ2VEZXRlY3Rvci5fZGVzdHJveVBpcGVzIiwiRHluYW1pY0NoYW5nZURldGVjdG9yLl9kZXN0cm95RGlyZWN0aXZlcyIsIkR5bmFtaWNDaGFuZ2VEZXRlY3Rvci5jaGVja05vQ2hhbmdlcyIsIkR5bmFtaWNDaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzSW5SZWNvcmRzSW50ZXJuYWwiLCJEeW5hbWljQ2hhbmdlRGV0ZWN0b3IuX2ZpcnN0SW5CaW5kaW5nIiwiRHluYW1pY0NoYW5nZURldGVjdG9yLmFmdGVyQ29udGVudExpZmVjeWNsZUNhbGxiYWNrc0ludGVybmFsIiwiRHluYW1pY0NoYW5nZURldGVjdG9yLmFmdGVyVmlld0xpZmVjeWNsZUNhbGxiYWNrc0ludGVybmFsIiwiRHluYW1pY0NoYW5nZURldGVjdG9yLl91cGRhdGVEaXJlY3RpdmVPckVsZW1lbnQiLCJEeW5hbWljQ2hhbmdlRGV0ZWN0b3IuX2FkZENoYW5nZSIsIkR5bmFtaWNDaGFuZ2VEZXRlY3Rvci5fZ2V0RGlyZWN0aXZlRm9yIiwiRHluYW1pY0NoYW5nZURldGVjdG9yLl9nZXREZXRlY3RvckZvciIsIkR5bmFtaWNDaGFuZ2VEZXRlY3Rvci5fY2hlY2siLCJEeW5hbWljQ2hhbmdlRGV0ZWN0b3IuX3JlZmVyZW5jZUNoZWNrIiwiRHluYW1pY0NoYW5nZURldGVjdG9yLl9jYWxjdWxhdGVDdXJyVmFsdWUiLCJEeW5hbWljQ2hhbmdlRGV0ZWN0b3IuX3BpcGVDaGVjayIsIkR5bmFtaWNDaGFuZ2VEZXRlY3Rvci5fcGlwZUZvciIsIkR5bmFtaWNDaGFuZ2VEZXRlY3Rvci5fcmVhZENvbnRleHQiLCJEeW5hbWljQ2hhbmdlRGV0ZWN0b3IuX3JlYWRTZWxmIiwiRHluYW1pY0NoYW5nZURldGVjdG9yLl93cml0ZVNlbGYiLCJEeW5hbWljQ2hhbmdlRGV0ZWN0b3IuX3JlYWRQaXBlIiwiRHluYW1pY0NoYW5nZURldGVjdG9yLl93cml0ZVBpcGUiLCJEeW5hbWljQ2hhbmdlRGV0ZWN0b3IuX3NldENoYW5nZWQiLCJEeW5hbWljQ2hhbmdlRGV0ZWN0b3IuX3B1cmVGdW5jQW5kQXJnc0RpZE5vdENoYW5nZSIsIkR5bmFtaWNDaGFuZ2VEZXRlY3Rvci5fYXJnc0NoYW5nZWQiLCJEeW5hbWljQ2hhbmdlRGV0ZWN0b3IuX2FyZ3NPckNvbnRleHRDaGFuZ2VkIiwiRHluYW1pY0NoYW5nZURldGVjdG9yLl9yZWFkQXJncyJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQkFBaUUsMEJBQTBCLENBQUMsQ0FBQTtBQUM1RiwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RCwyQkFBd0QsZ0NBQWdDLENBQUMsQ0FBQTtBQUV6Rix5Q0FBcUMsNEJBQTRCLENBQUMsQ0FBQTtBQU1sRSxzQ0FBZ0QseUJBQXlCLENBQUMsQ0FBQTtB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QSxJQUFJQSxDQUFDQTtZQUNkQSxDQUFDQTtRQUNIQSxDQUFDQTtRQUNEQSxNQUFNQSxDQUFDQSxLQUFLQSxDQUFDQTtJQUNmQSxDQUFDQTtJQUVPakMscURBQXFCQSxHQUE3QkEsVUFBOEJBLEtBQWtCQTtRQUM5Q2tDLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFlBQVlBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLEtBQUtBLENBQUNBLFlBQVlBLENBQUNBLENBQUNBO0lBQ3RFQSxDQUFDQTtJQUVPbEMseUNBQVNBLEdBQWpCQSxVQUFrQkEsS0FBa0JBLEVBQUVBLE1BQWFBO1FBQ2pEbUMsSUFBSUEsR0FBR0EsR0FBR0Esd0JBQVdBLENBQUNBLGVBQWVBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLENBQUNBO1FBQ3pEQSxJQUFJQSxJQUFJQSxHQUFHQSxLQUFLQSxDQUFDQSxJQUFJQSxDQUFDQTtRQUN0QkEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsTUFBTUEsRUFBRUEsRUFBRUEsQ0FBQ0EsRUFBRUEsQ0FBQ0E7WUFDckNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLEdBQUdBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQzNCQSxDQUFDQTtRQUNEQSxNQUFNQSxDQUFDQSxHQUFHQSxDQUFDQTtJQUNiQSxDQUFDQTtJQUNIbkMsNEJBQUNBO0FBQURBLENBQUNBLEFBemRELEVBQTJDLGlEQUFzQixFQXlkaEU7QUF6ZFksNkJBQXFCLHdCQXlkakMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNQcmVzZW50LCBpc0JsYW5rLCBGdW5jdGlvbldyYXBwZXIsIFN0cmluZ1dyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyLCBNYXBXcmFwcGVyLCBTdHJpbmdNYXBXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuXG5pbXBvcnQge0Fic3RyYWN0Q2hhbmdlRGV0ZWN0b3J9IGZyb20gJy4vYWJzdHJhY3RfY2hhbmdlX2RldGVjdG9yJztcbmltcG9ydCB7RXZlbnRCaW5kaW5nfSBmcm9tICcuL2V2ZW50X2JpbmRpbmcnO1xuaW1wb3J0IHtCaW5kaW5nUmVjb3JkLCBCaW5kaW5nVGFyZ2V0fSBmcm9tICcuL2JpbmRpbmdfcmVjb3JkJztcbmltcG9ydCB7RGlyZWN0aXZlUmVjb3JkLCBEaXJlY3RpdmVJbmRleH0gZnJvbSAnLi9kaXJlY3RpdmVfcmVjb3JkJztcbmltcG9ydCB7TG9jYWxzfSBmcm9tICcuL3BhcnNlci9sb2NhbHMnO1xuaW1wb3J0IHtDaGFuZ2VEaXNwYXRjaGVyLCBDaGFuZ2VEZXRlY3RvckdlbkNvbmZpZ30gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uVXRpbCwgU2ltcGxlQ2hhbmdlfSBmcm9tICcuL2NoYW5nZV9kZXRlY3Rpb25fdXRpbCc7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclN0YXRlfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1Byb3RvUmVjb3JkLCBSZWNvcmRUeXBlfSBmcm9tICcuL3Byb3RvX3JlY29yZCc7XG5pbXBvcnQge3JlZmxlY3Rvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVmbGVjdGlvbi9yZWZsZWN0aW9uJztcbmltcG9ydCB7T2JzZXJ2YWJsZVdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYXN5bmMnO1xuXG5leHBvcnQgY2xhc3MgRHluYW1pY0NoYW5nZURldGVjdG9yIGV4dGVuZHMgQWJzdHJhY3RDaGFuZ2VEZXRlY3Rvcjxhbnk+IHtcbiAgdmFsdWVzOiBhbnlbXTtcbiAgY2hhbmdlczogYW55W107XG4gIGxvY2FsUGlwZXM6IGFueVtdO1xuICBwcmV2Q29udGV4dHM6IGFueVtdO1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIG51bWJlck9mUHJvcGVydHlQcm90b1JlY29yZHM6IG51bWJlcixcbiAgICAgICAgICAgICAgcHJvcGVydHlCaW5kaW5nVGFyZ2V0czogQmluZGluZ1RhcmdldFtdLCBkaXJlY3RpdmVJbmRpY2VzOiBEaXJlY3RpdmVJbmRleFtdLFxuICAgICAgICAgICAgICBzdHJhdGVneTogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIHByaXZhdGUgX3JlY29yZHM6IFByb3RvUmVjb3JkW10sXG4gICAgICAgICAgICAgIHByaXZhdGUgX2V2ZW50QmluZGluZ3M6IEV2ZW50QmluZGluZ1tdLCBwcml2YXRlIF9kaXJlY3RpdmVSZWNvcmRzOiBEaXJlY3RpdmVSZWNvcmRbXSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfZ2VuQ29uZmlnOiBDaGFuZ2VEZXRlY3RvckdlbkNvbmZpZykge1xuICAgIHN1cGVyKGlkLCBudW1iZXJPZlByb3BlcnR5UHJvdG9SZWNvcmRzLCBwcm9wZXJ0eUJpbmRpbmdUYXJnZXRzLCBkaXJlY3RpdmVJbmRpY2VzLCBzdHJhdGVneSk7XG4gICAgdmFyIGxlbiA9IF9yZWNvcmRzLmxlbmd0aCArIDE7XG4gICAgdGhpcy52YWx1ZXMgPSBMaXN0V3JhcHBlci5jcmVhdGVGaXhlZFNpemUobGVuKTtcbiAgICB0aGlzLmxvY2FsUGlwZXMgPSBMaXN0V3JhcHBlci5jcmVhdGVGaXhlZFNpemUobGVuKTtcbiAgICB0aGlzLnByZXZDb250ZXh0cyA9IExpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZShsZW4pO1xuICAgIHRoaXMuY2hhbmdlcyA9IExpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZShsZW4pO1xuXG4gICAgdGhpcy5kZWh5ZHJhdGVEaXJlY3RpdmVzKGZhbHNlKTtcbiAgfVxuXG4gIGhhbmRsZUV2ZW50SW50ZXJuYWwoZXZlbnROYW1lOiBzdHJpbmcsIGVsSW5kZXg6IG51bWJlciwgbG9jYWxzOiBMb2NhbHMpOiBib29sZWFuIHtcbiAgICB2YXIgcHJldmVudERlZmF1bHQgPSBmYWxzZTtcblxuICAgIHRoaXMuX21hdGNoaW5nRXZlbnRCaW5kaW5ncyhldmVudE5hbWUsIGVsSW5kZXgpXG4gICAgICAgIC5mb3JFYWNoKHJlYyA9PiB7XG4gICAgICAgICAgdmFyIHJlcyA9IHRoaXMuX3Byb2Nlc3NFdmVudEJpbmRpbmcocmVjLCBsb2NhbHMpO1xuICAgICAgICAgIGlmIChyZXMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBwcmV2ZW50RGVmYXVsdCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIHJldHVybiBwcmV2ZW50RGVmYXVsdDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3Byb2Nlc3NFdmVudEJpbmRpbmcoZWI6IEV2ZW50QmluZGluZywgbG9jYWxzOiBMb2NhbHMpOiBhbnkge1xuICAgIHZhciB2YWx1ZXMgPSBMaXN0V3JhcHBlci5jcmVhdGVGaXhlZFNpemUoZWIucmVjb3Jkcy5sZW5ndGgpO1xuICAgIHZhbHVlc1swXSA9IHRoaXMudmFsdWVzWzBdO1xuXG4gICAgZm9yICh2YXIgcHJvdG9JZHggPSAwOyBwcm90b0lkeCA8IGViLnJlY29yZHMubGVuZ3RoOyArK3Byb3RvSWR4KSB7XG4gICAgICB2YXIgcHJvdG8gPSBlYi5yZWNvcmRzW3Byb3RvSWR4XTtcblxuICAgICAgaWYgKHByb3RvLmlzU2tpcFJlY29yZCgpKSB7XG4gICAgICAgIHByb3RvSWR4ICs9IHRoaXMuX2NvbXB1dGVTa2lwTGVuZ3RoKHByb3RvSWR4LCBwcm90bywgdmFsdWVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm90by5sYXN0SW5CaW5kaW5nKSB7XG4gICAgICAgICAgdGhpcy5fbWFya1BhdGhBc0NoZWNrT25jZShwcm90byk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlcyA9IHRoaXMuX2NhbGN1bGF0ZUN1cnJWYWx1ZShwcm90bywgdmFsdWVzLCBsb2NhbHMpO1xuICAgICAgICBpZiAocHJvdG8ubGFzdEluQmluZGluZykge1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fd3JpdGVTZWxmKHByb3RvLCByZXMsIHZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihcIkNhbm5vdCBiZSByZWFjaGVkXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcHV0ZVNraXBMZW5ndGgocHJvdG9JbmRleDogbnVtYmVyLCBwcm90bzogUHJvdG9SZWNvcmQsIHZhbHVlczogYW55W10pOiBudW1iZXIge1xuICAgIGlmIChwcm90by5tb2RlID09PSBSZWNvcmRUeXBlLlNraXBSZWNvcmRzKSB7XG4gICAgICByZXR1cm4gcHJvdG8uZml4ZWRBcmdzWzBdIC0gcHJvdG9JbmRleCAtIDE7XG4gICAgfVxuXG4gICAgaWYgKHByb3RvLm1vZGUgPT09IFJlY29yZFR5cGUuU2tpcFJlY29yZHNJZikge1xuICAgICAgbGV0IGNvbmRpdGlvbiA9IHRoaXMuX3JlYWRDb250ZXh0KHByb3RvLCB2YWx1ZXMpO1xuICAgICAgcmV0dXJuIGNvbmRpdGlvbiA/IHByb3RvLmZpeGVkQXJnc1swXSAtIHByb3RvSW5kZXggLSAxIDogMDtcbiAgICB9XG5cbiAgICBpZiAocHJvdG8ubW9kZSA9PT0gUmVjb3JkVHlwZS5Ta2lwUmVjb3Jkc0lmTm90KSB7XG4gICAgICBsZXQgY29uZGl0aW9uID0gdGhpcy5fcmVhZENvbnRleHQocHJvdG8sIHZhbHVlcyk7XG4gICAgICByZXR1cm4gY29uZGl0aW9uID8gMCA6IHByb3RvLmZpeGVkQXJnc1swXSAtIHByb3RvSW5kZXggLSAxO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFwiQ2Fubm90IGJlIHJlYWNoZWRcIik7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9tYXJrUGF0aEFzQ2hlY2tPbmNlKHByb3RvOiBQcm90b1JlY29yZCk6IHZvaWQge1xuICAgIGlmICghcHJvdG8uYmluZGluZ1JlY29yZC5pc0RlZmF1bHRDaGFuZ2VEZXRlY3Rpb24oKSkge1xuICAgICAgdmFyIGRpciA9IHByb3RvLmJpbmRpbmdSZWNvcmQuZGlyZWN0aXZlUmVjb3JkO1xuICAgICAgdGhpcy5fZ2V0RGV0ZWN0b3JGb3IoZGlyLmRpcmVjdGl2ZUluZGV4KS5tYXJrUGF0aFRvUm9vdEFzQ2hlY2tPbmNlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbWF0Y2hpbmdFdmVudEJpbmRpbmdzKGV2ZW50TmFtZTogc3RyaW5nLCBlbEluZGV4OiBudW1iZXIpOiBFdmVudEJpbmRpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50QmluZGluZ3MuZmlsdGVyKGViID0+IGViLmV2ZW50TmFtZSA9PSBldmVudE5hbWUgJiYgZWIuZWxJbmRleCA9PT0gZWxJbmRleCk7XG4gIH1cblxuICBoeWRyYXRlRGlyZWN0aXZlcyhkaXNwYXRjaGVyOiBDaGFuZ2VEaXNwYXRjaGVyKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZXNbMF0gPSB0aGlzLmNvbnRleHQ7XG4gICAgdGhpcy5kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjtcblxuICAgIHRoaXMub3V0cHV0U3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZGlyZWN0aXZlUmVjb3Jkcy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHIgPSB0aGlzLl9kaXJlY3RpdmVSZWNvcmRzW2ldO1xuICAgICAgaWYgKGlzUHJlc2VudChyLm91dHB1dHMpKSB7XG4gICAgICAgIHIub3V0cHV0cy5mb3JFYWNoKG91dHB1dCA9PiB7XG4gICAgICAgICAgdmFyIGV2ZW50SGFuZGxlciA9XG4gICAgICAgICAgICAgIDxhbnk+dGhpcy5fY3JlYXRlRXZlbnRIYW5kbGVyKHIuZGlyZWN0aXZlSW5kZXguZWxlbWVudEluZGV4LCBvdXRwdXRbMV0pO1xuICAgICAgICAgIHZhciBkaXJlY3RpdmUgPSB0aGlzLl9nZXREaXJlY3RpdmVGb3Ioci5kaXJlY3RpdmVJbmRleCk7XG4gICAgICAgICAgdmFyIGdldHRlciA9IHJlZmxlY3Rvci5nZXR0ZXIob3V0cHV0WzBdKTtcbiAgICAgICAgICB0aGlzLm91dHB1dFN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgT2JzZXJ2YWJsZVdyYXBwZXIuc3Vic2NyaWJlKGdldHRlcihkaXJlY3RpdmUpLCBldmVudEhhbmRsZXIpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlRXZlbnRIYW5kbGVyKGJvdW5kRWxlbWVudEluZGV4OiBudW1iZXIsIGV2ZW50TmFtZTogc3RyaW5nKTogRnVuY3Rpb24ge1xuICAgIHJldHVybiAoZXZlbnQpID0+IHRoaXMuaGFuZGxlRXZlbnQoZXZlbnROYW1lLCBib3VuZEVsZW1lbnRJbmRleCwgZXZlbnQpO1xuICB9XG5cblxuICBkZWh5ZHJhdGVEaXJlY3RpdmVzKGRlc3Ryb3lQaXBlczogYm9vbGVhbikge1xuICAgIGlmIChkZXN0cm95UGlwZXMpIHtcbiAgICAgIHRoaXMuX2Rlc3Ryb3lQaXBlcygpO1xuICAgICAgdGhpcy5fZGVzdHJveURpcmVjdGl2ZXMoKTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZXNbMF0gPSBudWxsO1xuICAgIExpc3RXcmFwcGVyLmZpbGwodGhpcy52YWx1ZXMsIENoYW5nZURldGVjdGlvblV0aWwudW5pbml0aWFsaXplZCwgMSk7XG4gICAgTGlzdFdyYXBwZXIuZmlsbCh0aGlzLmNoYW5nZXMsIGZhbHNlKTtcbiAgICBMaXN0V3JhcHBlci5maWxsKHRoaXMubG9jYWxQaXBlcywgbnVsbCk7XG4gICAgTGlzdFdyYXBwZXIuZmlsbCh0aGlzLnByZXZDb250ZXh0cywgQ2hhbmdlRGV0ZWN0aW9uVXRpbC51bmluaXRpYWxpemVkKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2Rlc3Ryb3lQaXBlcygpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubG9jYWxQaXBlcy5sZW5ndGg7ICsraSkge1xuICAgICAgaWYgKGlzUHJlc2VudCh0aGlzLmxvY2FsUGlwZXNbaV0pKSB7XG4gICAgICAgIENoYW5nZURldGVjdGlvblV0aWwuY2FsbFBpcGVPbkRlc3Ryb3kodGhpcy5sb2NhbFBpcGVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9kZXN0cm95RGlyZWN0aXZlcygpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2RpcmVjdGl2ZVJlY29yZHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciByZWNvcmQgPSB0aGlzLl9kaXJlY3RpdmVSZWNvcmRzW2ldO1xuICAgICAgaWYgKHJlY29yZC5jYWxsT25EZXN0cm95KSB7XG4gICAgICAgIHRoaXMuX2dldERpcmVjdGl2ZUZvcihyZWNvcmQuZGlyZWN0aXZlSW5kZXgpLm5nT25EZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hlY2tOb0NoYW5nZXMoKTogdm9pZCB7IHRoaXMucnVuRGV0ZWN0Q2hhbmdlcyh0cnVlKTsgfVxuXG4gIGRldGVjdENoYW5nZXNJblJlY29yZHNJbnRlcm5hbCh0aHJvd09uQ2hhbmdlOiBib29sZWFuKSB7XG4gICAgdmFyIHByb3RvcyA9IHRoaXMuX3JlY29yZHM7XG5cbiAgICB2YXIgY2hhbmdlcyA9IG51bGw7XG4gICAgdmFyIGlzQ2hhbmdlZCA9IGZhbHNlO1xuICAgIGZvciAodmFyIHByb3RvSWR4ID0gMDsgcHJvdG9JZHggPCBwcm90b3MubGVuZ3RoOyArK3Byb3RvSWR4KSB7XG4gICAgICB2YXIgcHJvdG86IFByb3RvUmVjb3JkID0gcHJvdG9zW3Byb3RvSWR4XTtcbiAgICAgIHZhciBiaW5kaW5nUmVjb3JkID0gcHJvdG8uYmluZGluZ1JlY29yZDtcbiAgICAgIHZhciBkaXJlY3RpdmVSZWNvcmQgPSBiaW5kaW5nUmVjb3JkLmRpcmVjdGl2ZVJlY29yZDtcblxuICAgICAgaWYgKHRoaXMuX2ZpcnN0SW5CaW5kaW5nKHByb3RvKSkge1xuICAgICAgICB0aGlzLnByb3BlcnR5QmluZGluZ0luZGV4ID0gcHJvdG8ucHJvcGVydHlCaW5kaW5nSW5kZXg7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm90by5pc0xpZmVDeWNsZVJlY29yZCgpKSB7XG4gICAgICAgIGlmIChwcm90by5uYW1lID09PSBcIkRvQ2hlY2tcIiAmJiAhdGhyb3dPbkNoYW5nZSkge1xuICAgICAgICAgIHRoaXMuX2dldERpcmVjdGl2ZUZvcihkaXJlY3RpdmVSZWNvcmQuZGlyZWN0aXZlSW5kZXgpLm5nRG9DaGVjaygpO1xuICAgICAgICB9IGVsc2UgaWYgKHByb3RvLm5hbWUgPT09IFwiT25Jbml0XCIgJiYgIXRocm93T25DaGFuZ2UgJiZcbiAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID09IENoYW5nZURldGVjdG9yU3RhdGUuTmV2ZXJDaGVja2VkKSB7XG4gICAgICAgICAgdGhpcy5fZ2V0RGlyZWN0aXZlRm9yKGRpcmVjdGl2ZVJlY29yZC5kaXJlY3RpdmVJbmRleCkubmdPbkluaXQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm90by5uYW1lID09PSBcIk9uQ2hhbmdlc1wiICYmIGlzUHJlc2VudChjaGFuZ2VzKSAmJiAhdGhyb3dPbkNoYW5nZSkge1xuICAgICAgICAgIHRoaXMuX2dldERpcmVjdGl2ZUZvcihkaXJlY3RpdmVSZWNvcmQuZGlyZWN0aXZlSW5kZXgpLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHByb3RvLmlzU2tpcFJlY29yZCgpKSB7XG4gICAgICAgIHByb3RvSWR4ICs9IHRoaXMuX2NvbXB1dGVTa2lwTGVuZ3RoKHByb3RvSWR4LCBwcm90bywgdGhpcy52YWx1ZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGNoYW5nZSA9IHRoaXMuX2NoZWNrKHByb3RvLCB0aHJvd09uQ2hhbmdlLCB0aGlzLnZhbHVlcywgdGhpcy5sb2NhbHMpO1xuICAgICAgICBpZiAoaXNQcmVzZW50KGNoYW5nZSkpIHtcbiAgICAgICAgICB0aGlzLl91cGRhdGVEaXJlY3RpdmVPckVsZW1lbnQoY2hhbmdlLCBiaW5kaW5nUmVjb3JkKTtcbiAgICAgICAgICBpc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgIGNoYW5nZXMgPSB0aGlzLl9hZGRDaGFuZ2UoYmluZGluZ1JlY29yZCwgY2hhbmdlLCBjaGFuZ2VzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvdG8ubGFzdEluRGlyZWN0aXZlKSB7XG4gICAgICAgIGNoYW5nZXMgPSBudWxsO1xuICAgICAgICBpZiAoaXNDaGFuZ2VkICYmICFiaW5kaW5nUmVjb3JkLmlzRGVmYXVsdENoYW5nZURldGVjdGlvbigpKSB7XG4gICAgICAgICAgdGhpcy5fZ2V0RGV0ZWN0b3JGb3IoZGlyZWN0aXZlUmVjb3JkLmRpcmVjdGl2ZUluZGV4KS5tYXJrQXNDaGVja09uY2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlzQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2ZpcnN0SW5CaW5kaW5nKHI6IFByb3RvUmVjb3JkKTogYm9vbGVhbiB7XG4gICAgdmFyIHByZXYgPSBDaGFuZ2VEZXRlY3Rpb25VdGlsLnByb3RvQnlJbmRleCh0aGlzLl9yZWNvcmRzLCByLnNlbGZJbmRleCAtIDEpO1xuICAgIHJldHVybiBpc0JsYW5rKHByZXYpIHx8IHByZXYuYmluZGluZ1JlY29yZCAhPT0gci5iaW5kaW5nUmVjb3JkO1xuICB9XG5cbiAgYWZ0ZXJDb250ZW50TGlmZWN5Y2xlQ2FsbGJhY2tzSW50ZXJuYWwoKSB7XG4gICAgdmFyIGRpcnMgPSB0aGlzLl9kaXJlY3RpdmVSZWNvcmRzO1xuICAgIGZvciAodmFyIGkgPSBkaXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB2YXIgZGlyID0gZGlyc1tpXTtcbiAgICAgIGlmIChkaXIuY2FsbEFmdGVyQ29udGVudEluaXQgJiYgdGhpcy5zdGF0ZSA9PSBDaGFuZ2VEZXRlY3RvclN0YXRlLk5ldmVyQ2hlY2tlZCkge1xuICAgICAgICB0aGlzLl9nZXREaXJlY3RpdmVGb3IoZGlyLmRpcmVjdGl2ZUluZGV4KS5uZ0FmdGVyQ29udGVudEluaXQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpci5jYWxsQWZ0ZXJDb250ZW50Q2hlY2tlZCkge1xuICAgICAgICB0aGlzLl9nZXREaXJlY3RpdmVGb3IoZGlyLmRpcmVjdGl2ZUluZGV4KS5uZ0FmdGVyQ29udGVudENoZWNrZWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZnRlclZpZXdMaWZlY3ljbGVDYWxsYmFja3NJbnRlcm5hbCgpIHtcbiAgICB2YXIgZGlycyA9IHRoaXMuX2RpcmVjdGl2ZVJlY29yZHM7XG4gICAgZm9yICh2YXIgaSA9IGRpcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIHZhciBkaXIgPSBkaXJzW2ldO1xuICAgICAgaWYgKGRpci5jYWxsQWZ0ZXJWaWV3SW5pdCAmJiB0aGlzLnN0YXRlID09IENoYW5nZURldGVjdG9yU3RhdGUuTmV2ZXJDaGVja2VkKSB7XG4gICAgICAgIHRoaXMuX2dldERpcmVjdGl2ZUZvcihkaXIuZGlyZWN0aXZlSW5kZXgpLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgfVxuICAgICAgaWYgKGRpci5jYWxsQWZ0ZXJWaWV3Q2hlY2tlZCkge1xuICAgICAgICB0aGlzLl9nZXREaXJlY3RpdmVGb3IoZGlyLmRpcmVjdGl2ZUluZGV4KS5uZ0FmdGVyVmlld0NoZWNrZWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgX3VwZGF0ZURpcmVjdGl2ZU9yRWxlbWVudChjaGFuZ2UsIGJpbmRpbmdSZWNvcmQpIHtcbiAgICBpZiAoaXNCbGFuayhiaW5kaW5nUmVjb3JkLmRpcmVjdGl2ZVJlY29yZCkpIHtcbiAgICAgIHN1cGVyLm5vdGlmeURpc3BhdGNoZXIoY2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBkaXJlY3RpdmVJbmRleCA9IGJpbmRpbmdSZWNvcmQuZGlyZWN0aXZlUmVjb3JkLmRpcmVjdGl2ZUluZGV4O1xuICAgICAgYmluZGluZ1JlY29yZC5zZXR0ZXIodGhpcy5fZ2V0RGlyZWN0aXZlRm9yKGRpcmVjdGl2ZUluZGV4KSwgY2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2dlbkNvbmZpZy5sb2dCaW5kaW5nVXBkYXRlKSB7XG4gICAgICBzdXBlci5sb2dCaW5kaW5nVXBkYXRlKGNoYW5nZS5jdXJyZW50VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBfYWRkQ2hhbmdlKGJpbmRpbmdSZWNvcmQ6IEJpbmRpbmdSZWNvcmQsIGNoYW5nZSwgY2hhbmdlcykge1xuICAgIGlmIChiaW5kaW5nUmVjb3JkLmNhbGxPbkNoYW5nZXMoKSkge1xuICAgICAgcmV0dXJuIHN1cGVyLmFkZENoYW5nZShjaGFuZ2VzLCBjaGFuZ2UucHJldmlvdXNWYWx1ZSwgY2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjaGFuZ2VzO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBfZ2V0RGlyZWN0aXZlRm9yKGRpcmVjdGl2ZUluZGV4OiBEaXJlY3RpdmVJbmRleCkge1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZ2V0RGlyZWN0aXZlRm9yKGRpcmVjdGl2ZUluZGV4KTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSBfZ2V0RGV0ZWN0b3JGb3IoZGlyZWN0aXZlSW5kZXg6IERpcmVjdGl2ZUluZGV4KSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hlci5nZXREZXRlY3RvckZvcihkaXJlY3RpdmVJbmRleCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgX2NoZWNrKHByb3RvOiBQcm90b1JlY29yZCwgdGhyb3dPbkNoYW5nZTogYm9vbGVhbiwgdmFsdWVzOiBhbnlbXSxcbiAgICAgICAgICAgICAgICAgbG9jYWxzOiBMb2NhbHMpOiBTaW1wbGVDaGFuZ2Uge1xuICAgIGlmIChwcm90by5pc1BpcGVSZWNvcmQoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3BpcGVDaGVjayhwcm90bywgdGhyb3dPbkNoYW5nZSwgdmFsdWVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlZmVyZW5jZUNoZWNrKHByb3RvLCB0aHJvd09uQ2hhbmdlLCB2YWx1ZXMsIGxvY2Fscyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIF9yZWZlcmVuY2VDaGVjayhwcm90bzogUHJvdG9SZWNvcmQsIHRocm93T25DaGFuZ2U6IGJvb2xlYW4sIHZhbHVlczogYW55W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsczogTG9jYWxzKSB7XG4gICAgaWYgKHRoaXMuX3B1cmVGdW5jQW5kQXJnc0RpZE5vdENoYW5nZShwcm90bykpIHtcbiAgICAgIHRoaXMuX3NldENoYW5nZWQocHJvdG8sIGZhbHNlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBjdXJyVmFsdWUgPSB0aGlzLl9jYWxjdWxhdGVDdXJyVmFsdWUocHJvdG8sIHZhbHVlcywgbG9jYWxzKTtcblxuICAgIGlmIChwcm90by5zaG91bGRCZUNoZWNrZWQoKSkge1xuICAgICAgdmFyIHByZXZWYWx1ZSA9IHRoaXMuX3JlYWRTZWxmKHByb3RvLCB2YWx1ZXMpO1xuICAgICAgdmFyIGRldGVjdGVkQ2hhbmdlID0gdGhyb3dPbkNoYW5nZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIUNoYW5nZURldGVjdGlvblV0aWwuZGV2TW9kZUVxdWFsKHByZXZWYWx1ZSwgY3VyclZhbHVlKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbmdlRGV0ZWN0aW9uVXRpbC5sb29zZU5vdElkZW50aWNhbChwcmV2VmFsdWUsIGN1cnJWYWx1ZSk7XG4gICAgICBpZiAoZGV0ZWN0ZWRDaGFuZ2UpIHtcbiAgICAgICAgaWYgKHByb3RvLmxhc3RJbkJpbmRpbmcpIHtcbiAgICAgICAgICB2YXIgY2hhbmdlID0gQ2hhbmdlRGV0ZWN0aW9uVXRpbC5zaW1wbGVDaGFuZ2UocHJldlZhbHVlLCBjdXJyVmFsdWUpO1xuICAgICAgICAgIGlmICh0aHJvd09uQ2hhbmdlKSB0aGlzLnRocm93T25DaGFuZ2VFcnJvcihwcmV2VmFsdWUsIGN1cnJWYWx1ZSk7XG5cbiAgICAgICAgICB0aGlzLl93cml0ZVNlbGYocHJvdG8sIGN1cnJWYWx1ZSwgdmFsdWVzKTtcbiAgICAgICAgICB0aGlzLl9zZXRDaGFuZ2VkKHByb3RvLCB0cnVlKTtcbiAgICAgICAgICByZXR1cm4gY2hhbmdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3dyaXRlU2VsZihwcm90bywgY3VyclZhbHVlLCB2YWx1ZXMpO1xuICAgICAgICAgIHRoaXMuX3NldENoYW5nZWQocHJvdG8sIHRydWUpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9zZXRDaGFuZ2VkKHByb3RvLCBmYWxzZSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3dyaXRlU2VsZihwcm90bywgY3VyclZhbHVlLCB2YWx1ZXMpO1xuICAgICAgdGhpcy5fc2V0Q2hhbmdlZChwcm90bywgdHJ1ZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jYWxjdWxhdGVDdXJyVmFsdWUocHJvdG86IFByb3RvUmVjb3JkLCB2YWx1ZXM6IGFueVtdLCBsb2NhbHM6IExvY2Fscykge1xuICAgIHN3aXRjaCAocHJvdG8ubW9kZSkge1xuICAgICAgY2FzZSBSZWNvcmRUeXBlLlNlbGY6XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkQ29udGV4dChwcm90bywgdmFsdWVzKTtcblxuICAgICAgY2FzZSBSZWNvcmRUeXBlLkNvbnN0OlxuICAgICAgICByZXR1cm4gcHJvdG8uZnVuY09yVmFsdWU7XG5cbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5Qcm9wZXJ0eVJlYWQ6XG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5fcmVhZENvbnRleHQocHJvdG8sIHZhbHVlcyk7XG4gICAgICAgIHJldHVybiBwcm90by5mdW5jT3JWYWx1ZShjb250ZXh0KTtcblxuICAgICAgY2FzZSBSZWNvcmRUeXBlLlNhZmVQcm9wZXJ0eTpcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLl9yZWFkQ29udGV4dChwcm90bywgdmFsdWVzKTtcbiAgICAgICAgcmV0dXJuIGlzQmxhbmsoY29udGV4dCkgPyBudWxsIDogcHJvdG8uZnVuY09yVmFsdWUoY29udGV4dCk7XG5cbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5Qcm9wZXJ0eVdyaXRlOlxuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuX3JlYWRDb250ZXh0KHByb3RvLCB2YWx1ZXMpO1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLl9yZWFkQXJncyhwcm90bywgdmFsdWVzKVswXTtcbiAgICAgICAgcHJvdG8uZnVuY09yVmFsdWUoY29udGV4dCwgdmFsdWUpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG5cbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5LZXllZFdyaXRlOlxuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuX3JlYWRDb250ZXh0KHByb3RvLCB2YWx1ZXMpO1xuICAgICAgICB2YXIga2V5ID0gdGhpcy5fcmVhZEFyZ3MocHJvdG8sIHZhbHVlcylbMF07XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX3JlYWRBcmdzKHByb3RvLCB2YWx1ZXMpWzFdO1xuICAgICAgICBjb250ZXh0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuXG4gICAgICBjYXNlIFJlY29yZFR5cGUuTG9jYWw6XG4gICAgICAgIHJldHVybiBsb2NhbHMuZ2V0KHByb3RvLm5hbWUpO1xuXG4gICAgICBjYXNlIFJlY29yZFR5cGUuSW52b2tlTWV0aG9kOlxuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuX3JlYWRDb250ZXh0KHByb3RvLCB2YWx1ZXMpO1xuICAgICAgICB2YXIgYXJncyA9IHRoaXMuX3JlYWRBcmdzKHByb3RvLCB2YWx1ZXMpO1xuICAgICAgICByZXR1cm4gcHJvdG8uZnVuY09yVmFsdWUoY29udGV4dCwgYXJncyk7XG5cbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5TYWZlTWV0aG9kSW52b2tlOlxuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuX3JlYWRDb250ZXh0KHByb3RvLCB2YWx1ZXMpO1xuICAgICAgICBpZiAoaXNCbGFuayhjb250ZXh0KSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhcmdzID0gdGhpcy5fcmVhZEFyZ3MocHJvdG8sIHZhbHVlcyk7XG4gICAgICAgIHJldHVybiBwcm90by5mdW5jT3JWYWx1ZShjb250ZXh0LCBhcmdzKTtcblxuICAgICAgY2FzZSBSZWNvcmRUeXBlLktleWVkUmVhZDpcbiAgICAgICAgdmFyIGFyZyA9IHRoaXMuX3JlYWRBcmdzKHByb3RvLCB2YWx1ZXMpWzBdO1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZENvbnRleHQocHJvdG8sIHZhbHVlcylbYXJnXTtcblxuICAgICAgY2FzZSBSZWNvcmRUeXBlLkNoYWluOlxuICAgICAgICB2YXIgYXJncyA9IHRoaXMuX3JlYWRBcmdzKHByb3RvLCB2YWx1ZXMpO1xuICAgICAgICByZXR1cm4gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuXG4gICAgICBjYXNlIFJlY29yZFR5cGUuSW52b2tlQ2xvc3VyZTpcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uV3JhcHBlci5hcHBseSh0aGlzLl9yZWFkQ29udGV4dChwcm90bywgdmFsdWVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZWFkQXJncyhwcm90bywgdmFsdWVzKSk7XG5cbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5JbnRlcnBvbGF0ZTpcbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5QcmltaXRpdmVPcDpcbiAgICAgIGNhc2UgUmVjb3JkVHlwZS5Db2xsZWN0aW9uTGl0ZXJhbDpcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uV3JhcHBlci5hcHBseShwcm90by5mdW5jT3JWYWx1ZSwgdGhpcy5fcmVhZEFyZ3MocHJvdG8sIHZhbHVlcykpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgVW5rbm93biBvcGVyYXRpb24gJHtwcm90by5tb2RlfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3BpcGVDaGVjayhwcm90bzogUHJvdG9SZWNvcmQsIHRocm93T25DaGFuZ2U6IGJvb2xlYW4sIHZhbHVlczogYW55W10pIHtcbiAgICB2YXIgY29udGV4dCA9IHRoaXMuX3JlYWRDb250ZXh0KHByb3RvLCB2YWx1ZXMpO1xuICAgIHZhciBzZWxlY3RlZFBpcGUgPSB0aGlzLl9waXBlRm9yKHByb3RvLCBjb250ZXh0KTtcbiAgICBpZiAoIXNlbGVjdGVkUGlwZS5wdXJlIHx8IHRoaXMuX2FyZ3NPckNvbnRleHRDaGFuZ2VkKHByb3RvKSkge1xuICAgICAgdmFyIGFyZ3MgPSB0aGlzLl9yZWFkQXJncyhwcm90bywgdmFsdWVzKTtcbiAgICAgIHZhciBjdXJyVmFsdWUgPSBzZWxlY3RlZFBpcGUucGlwZS50cmFuc2Zvcm0oY29udGV4dCwgYXJncyk7XG5cbiAgICAgIGlmIChwcm90by5zaG91bGRCZUNoZWNrZWQoKSkge1xuICAgICAgICB2YXIgcHJldlZhbHVlID0gdGhpcy5fcmVhZFNlbGYocHJvdG8sIHZhbHVlcyk7XG4gICAgICAgIHZhciBkZXRlY3RlZENoYW5nZSA9IHRocm93T25DaGFuZ2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIUNoYW5nZURldGVjdGlvblV0aWwuZGV2TW9kZUVxdWFsKHByZXZWYWx1ZSwgY3VyclZhbHVlKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFuZ2VEZXRlY3Rpb25VdGlsLmxvb3NlTm90SWRlbnRpY2FsKHByZXZWYWx1ZSwgY3VyclZhbHVlKTtcbiAgICAgICAgaWYgKGRldGVjdGVkQ2hhbmdlKSB7XG4gICAgICAgICAgY3VyclZhbHVlID0gQ2hhbmdlRGV0ZWN0aW9uVXRpbC51bndyYXBWYWx1ZShjdXJyVmFsdWUpO1xuXG4gICAgICAgICAgaWYgKHByb3RvLmxhc3RJbkJpbmRpbmcpIHtcbiAgICAgICAgICAgIHZhciBjaGFuZ2UgPSBDaGFuZ2VEZXRlY3Rpb25VdGlsLnNpbXBsZUNoYW5nZShwcmV2VmFsdWUsIGN1cnJWYWx1ZSk7XG4gICAgICAgICAgICBpZiAodGhyb3dPbkNoYW5nZSkgdGhpcy50aHJvd09uQ2hhbmdlRXJyb3IocHJldlZhbHVlLCBjdXJyVmFsdWUpO1xuXG4gICAgICAgICAgICB0aGlzLl93cml0ZVNlbGYocHJvdG8sIGN1cnJWYWx1ZSwgdmFsdWVzKTtcbiAgICAgICAgICAgIHRoaXMuX3NldENoYW5nZWQocHJvdG8sIHRydWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gY2hhbmdlO1xuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3dyaXRlU2VsZihwcm90bywgY3VyclZhbHVlLCB2YWx1ZXMpO1xuICAgICAgICAgICAgdGhpcy5fc2V0Q2hhbmdlZChwcm90bywgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fc2V0Q2hhbmdlZChwcm90bywgZmFsc2UpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl93cml0ZVNlbGYocHJvdG8sIGN1cnJWYWx1ZSwgdmFsdWVzKTtcbiAgICAgICAgdGhpcy5fc2V0Q2hhbmdlZChwcm90bywgdHJ1ZSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3BpcGVGb3IocHJvdG86IFByb3RvUmVjb3JkLCBjb250ZXh0KSB7XG4gICAgdmFyIHN0b3JlZFBpcGUgPSB0aGlzLl9yZWFkUGlwZShwcm90byk7XG4gICAgaWYgKGlzUHJlc2VudChzdG9yZWRQaXBlKSkgcmV0dXJuIHN0b3JlZFBpcGU7XG5cbiAgICB2YXIgcGlwZSA9IHRoaXMucGlwZXMuZ2V0KHByb3RvLm5hbWUpO1xuICAgIHRoaXMuX3dyaXRlUGlwZShwcm90bywgcGlwZSk7XG4gICAgcmV0dXJuIHBpcGU7XG4gIH1cblxuICBwcml2YXRlIF9yZWFkQ29udGV4dChwcm90bzogUHJvdG9SZWNvcmQsIHZhbHVlczogYW55W10pIHtcbiAgICBpZiAocHJvdG8uY29udGV4dEluZGV4ID09IC0xKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0RGlyZWN0aXZlRm9yKHByb3RvLmRpcmVjdGl2ZUluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlc1twcm90by5jb250ZXh0SW5kZXhdO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVhZFNlbGYocHJvdG86IFByb3RvUmVjb3JkLCB2YWx1ZXM6IGFueVtdKSB7IHJldHVybiB2YWx1ZXNbcHJvdG8uc2VsZkluZGV4XTsgfVxuXG4gIHByaXZhdGUgX3dyaXRlU2VsZihwcm90bzogUHJvdG9SZWNvcmQsIHZhbHVlLCB2YWx1ZXM6IGFueVtdKSB7IHZhbHVlc1twcm90by5zZWxmSW5kZXhdID0gdmFsdWU7IH1cblxuICBwcml2YXRlIF9yZWFkUGlwZShwcm90bzogUHJvdG9SZWNvcmQpIHsgcmV0dXJuIHRoaXMubG9jYWxQaXBlc1twcm90by5zZWxmSW5kZXhdOyB9XG5cbiAgcHJpdmF0ZSBfd3JpdGVQaXBlKHByb3RvOiBQcm90b1JlY29yZCwgdmFsdWUpIHsgdGhpcy5sb2NhbFBpcGVzW3Byb3RvLnNlbGZJbmRleF0gPSB2YWx1ZTsgfVxuXG4gIHByaXZhdGUgX3NldENoYW5nZWQocHJvdG86IFByb3RvUmVjb3JkLCB2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmIChwcm90by5hcmd1bWVudFRvUHVyZUZ1bmN0aW9uKSB0aGlzLmNoYW5nZXNbcHJvdG8uc2VsZkluZGV4XSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHVyZUZ1bmNBbmRBcmdzRGlkTm90Q2hhbmdlKHByb3RvOiBQcm90b1JlY29yZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwcm90by5pc1B1cmVGdW5jdGlvbigpICYmICF0aGlzLl9hcmdzQ2hhbmdlZChwcm90byk7XG4gIH1cblxuICBwcml2YXRlIF9hcmdzQ2hhbmdlZChwcm90bzogUHJvdG9SZWNvcmQpOiBib29sZWFuIHtcbiAgICB2YXIgYXJncyA9IHByb3RvLmFyZ3M7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgKytpKSB7XG4gICAgICBpZiAodGhpcy5jaGFuZ2VzW2FyZ3NbaV1dKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9hcmdzT3JDb250ZXh0Q2hhbmdlZChwcm90bzogUHJvdG9SZWNvcmQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYXJnc0NoYW5nZWQocHJvdG8pIHx8IHRoaXMuY2hhbmdlc1twcm90by5jb250ZXh0SW5kZXhdO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVhZEFyZ3MocHJvdG86IFByb3RvUmVjb3JkLCB2YWx1ZXM6IGFueVtdKSB7XG4gICAgdmFyIHJlcyA9IExpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZShwcm90by5hcmdzLmxlbmd0aCk7XG4gICAgdmFyIGFyZ3MgPSBwcm90by5hcmdzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7ICsraSkge1xuICAgICAgcmVzW2ldID0gdmFsdWVzW2FyZ3NbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar constants_1 = require('./constants');\r\nvar ChangeDetectorRef = (function () {\r\n function ChangeDetectorRef() {\r\n }\r\n return ChangeDetectorRef;\r\n})();\r\nexports.ChangeDetectorRef = ChangeDetectorRef;\r\nvar ChangeDetectorRef_ = (function (_super) {\r\n __extends(ChangeDetectorRef_, _super);\r\n function ChangeDetectorRef_(_cd) {\r\n _super.call(this);\r\n this._cd = _cd;\r\n }\r\n ChangeDetectorRef_.prototype.markForCheck = function () { this._cd.markPathToRootAsCheckOnce(); };\r\n ChangeDetectorRef_.prototype.detach = function () { this._cd.mode = constants_1.ChangeDetectionStrategy.Detached; };\r\n ChangeDetectorRef_.prototype.detectChanges = function () { this._cd.detectChanges(); };\r\n ChangeDetectorRef_.prototype.checkNoChanges = function () { this._cd.checkNoChanges(); };\r\n ChangeDetectorRef_.prototype.reattach = function () {\r\n this._cd.mode = constants_1.ChangeDetectionStrategy.CheckAlways;\r\n this.markForCheck();\r\n };\r\n return ChangeDetectorRef_;\r\n})(ChangeDetectorRef);\r\nexports.ChangeDetectorRef_ = ChangeDetectorRef_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RldGVjdG9yX3JlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vY2hhbmdlX2RldGVjdG9yX3JlZi50cyJdLCJuYW1lcyI6WyJDaGFuZ2VEZXRlY3RvclJlZiIsIkNoYW5nZURldGVjdG9yUmVmLmNvbnN0cnVjdG9yIiwiQ2hhbmdlRGV0ZWN0b3JSZWZfIiwiQ2hhbmdlRGV0ZWN0b3JSZWZfLmNvbnN0cnVjdG9yIiwiQ2hhbmdlRGV0ZWN0b3JSZWZfLm1hcmtGb3JDaGVjayIsIkNoYW5nZURldGVjdG9yUmVmXy5kZXRhY2giLCJDaGFuZ2VEZXRlY3RvclJlZl8uZGV0ZWN0Q2hhbmdlcyIsIkNoYW5nZURldGVjdG9yUmVmXy5jaGVja05vQ2hhbmdlcyIsIkNoYW5nZURldGVjdG9yUmVmXy5yZWF0dGFjaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwwQkFBc0MsYUFBYSxDQUFDLENBQUE7QUFFcEQ7SUFBQUE7SUErTEFDLENBQUNBO0lBQURELHdCQUFDQTtBQUFEQSxDQUFDQSxBQS9MRCxJQStMQztBQS9McUIseUJBQWlCLG9CQStMdEMsQ0FBQTtBQUVEO0lBQXdDRSxzQ0FBaUJBO0lBQ3ZEQSw0QkFBb0JBLEdBQW1CQTtRQUFJQyxpQkFBT0EsQ0FBQ0E7UUFBL0JBLFFBQUdBLEdBQUhBLEdBQUdBLENBQWdCQTtJQUFhQSxDQUFDQTtJQUVyREQseUNBQVlBLEdBQVpBLGNBQXVCRSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQSx5QkFBeUJBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO0lBQzlERixtQ0FBTUEsR0FBTkEsY0FBaUJHLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLEdBQUdBLG1DQUF1QkEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDcEVILDBDQUFhQSxHQUFiQSxjQUF3QkksSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsYUFBYUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDbkRKLDJDQUFjQSxHQUFkQSxjQUF5QkssSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsY0FBY0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDckRMLHFDQUFRQSxHQUFSQTtRQUNFTSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxHQUFHQSxtQ0FBdUJBLENBQUNBLFdBQVdBLENBQUNBO1FBQ3BEQSxJQUFJQSxDQUFDQSxZQUFZQSxFQUFFQSxDQUFDQTtJQUN0QkEsQ0FBQ0E7SUFDSE4seUJBQUNBO0FBQURBLENBQUNBLEFBWEQsRUFBd0MsaUJBQWlCLEVBV3hEO0FBWFksMEJBQWtCLHFCQVc5QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rvcn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3l9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENoYW5nZURldGVjdG9yUmVmIHtcbiAgLyoqXG4gICAqIE1hcmtzIGFsbCB7QGxpbmsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kjT25QdXNofSBhbmNlc3RvcnMgYXMgdG8gYmUgY2hlY2tlZC5cbiAgICpcbiAgICogPCEtLSBUT0RPOiBBZGQgYSBsaW5rIHRvIGEgY2hhcHRlciBvbiBPblB1c2ggY29tcG9uZW50cyAtLT5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0dDNTEyYj9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnY21wJyxcbiAgICogICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICogICB0ZW1wbGF0ZTogYE51bWJlciBvZiB0aWNrczoge3tudW1iZXJPZlRpY2tzfX1gXG4gICAqIH0pXG4gICAqIGNsYXNzIENtcCB7XG4gICAqICAgbnVtYmVyT2ZUaWNrcyA9IDA7XG4gICAqXG4gICAqICAgY29uc3RydWN0b3IocmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgKiAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgKiAgICAgICB0aGlzLm51bWJlck9mVGlja3MgKytcbiAgICogICAgICAgLy8gdGhlIGZvbGxvd2luZyBpcyByZXF1aXJlZCwgb3RoZXJ3aXNlIHRoZSB2aWV3IHdpbGwgbm90IGJlIHVwZGF0ZWRcbiAgICogICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAqICAgICB9LCAxMDAwKTtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICAgKiAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgKiAgIHRlbXBsYXRlOiBgXG4gICAqICAgICA8Y21wPjxjbXA+XG4gICAqICAgYCxcbiAgICogICBkaXJlY3RpdmVzOiBbQ21wXVxuICAgKiB9KVxuICAgKiBjbGFzcyBBcHAge1xuICAgKiB9XG4gICAqXG4gICAqIGJvb3RzdHJhcChBcHApO1xuICAgKiBgYGBcbiAgICovXG4gIGFic3RyYWN0IG1hcmtGb3JDaGVjaygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBEZXRhY2hlcyB0aGUgY2hhbmdlIGRldGVjdG9yIGZyb20gdGhlIGNoYW5nZSBkZXRlY3RvciB0cmVlLlxuICAgKlxuICAgKiBUaGUgZGV0YWNoZWQgY2hhbmdlIGRldGVjdG9yIHdpbGwgbm90IGJlIGNoZWNrZWQgdW50aWwgaXQgaXMgcmVhdHRhY2hlZC5cbiAgICpcbiAgICogVGhpcyBjYW4gYWxzbyBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGgge0BsaW5rIENoYW5nZURldGVjdG9yUmVmI2RldGVjdENoYW5nZXN9IHRvIGltcGxlbWVudFxuICAgKiBsb2NhbCBjaGFuZ2VcbiAgICogZGV0ZWN0aW9uIGNoZWNrcy5cbiAgICpcbiAgICogPCEtLSBUT0RPOiBBZGQgYSBsaW5rIHRvIGEgY2hhcHRlciBvbiBkZXRhY2gvcmVhdHRhY2gvbG9jYWwgZGlnZXN0IC0tPlxuICAgKiA8IS0tIFRPRE86IEFkZCBhIGxpdmUgZGVtbyBvbmNlIHJlZi5kZXRlY3RDaGFuZ2VzIGlzIG1lcmdlZCBpbnRvIG1hc3RlciAtLT5cbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICpcbiAgICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlZmluZXMgYSBjb21wb25lbnQgd2l0aCBhIGxhcmdlIGxpc3Qgb2YgcmVhZG9ubHkgZGF0YS5cbiAgICogSW1hZ2luZSB0aGUgZGF0YSBjaGFuZ2VzIGNvbnN0YW50bHksIG1hbnkgdGltZXMgcGVyIHNlY29uZC4gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsXG4gICAqIHdlIHdhbnQgdG8gY2hlY2sgYW5kIHVwZGF0ZSB0aGUgbGlzdCBldmVyeSBmaXZlIHNlY29uZHMuIFdlIGNhbiBkbyB0aGF0IGJ5IGRldGFjaGluZ1xuICAgKiB0aGUgY29tcG9uZW50J3MgY2hhbmdlIGRldGVjdG9yIGFuZCBkb2luZyBhIGxvY2FsIGNoZWNrIGV2ZXJ5IGZpdmUgc2Vjb25kcy5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjbGFzcyBEYXRhUHJvdmlkZXIge1xuICAgKiAgIC8vIGluIGEgcmVhbCBhcHBsaWNhdGlvbiB0aGUgcmV0dXJuZWQgZGF0YSB3aWxsIGJlIGRpZmZlcmVudCBldmVyeSB0aW1lXG4gICAqICAgZ2V0IGRhdGEoKSB7XG4gICAqICAgICByZXR1cm4gWzEsMiwzLDQsNV07XG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnZ2lhbnQtbGlzdCcsXG4gICAqICAgdGVtcGxhdGU6IGBcbiAgICogICAgIDxsaSAqbmdGb3I9XCIjZCBvZiBkYXRhUHJvdmlkZXIuZGF0YVwiPkRhdGEge3tkfX08L2xpZz5cbiAgICogICBgLFxuICAgKiAgIGRpcmVjdGl2ZXM6IFtOZ0Zvcl1cbiAgICogfSlcbiAgICogY2xhc3MgR2lhbnRMaXN0IHtcbiAgICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZGF0YVByb3ZpZGVyOkRhdGFQcm92aWRlcikge1xuICAgKiAgICAgcmVmLmRldGFjaCgpO1xuICAgKiAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgKiAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAqICAgICB9LCA1MDAwKTtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICAgKiAgIHByb3ZpZGVyczogW0RhdGFQcm92aWRlcl0sXG4gICAqICAgdGVtcGxhdGU6IGBcbiAgICogICAgIDxnaWFudC1saXN0PjxnaWFudC1saXN0PlxuICAgKiAgIGAsXG4gICAqICAgZGlyZWN0aXZlczogW0dpYW50TGlzdF1cbiAgICogfSlcbiAgICogY2xhc3MgQXBwIHtcbiAgICogfVxuICAgKlxuICAgKiBib290c3RyYXAoQXBwKTtcbiAgICogYGBgXG4gICAqL1xuICBhYnN0cmFjdCBkZXRhY2goKTogdm9pZDtcblxuICAvKipcbiAgICogQ2hlY2tzIHRoZSBjaGFuZ2UgZGV0ZWN0b3IgYW5kIGl0cyBjaGlsZHJlbi5cbiAgICpcbiAgICogVGhpcyBjYW4gYWxzbyBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGgge0BsaW5rIENoYW5nZURldGVjdG9yUmVmI2RldGFjaH0gdG8gaW1wbGVtZW50IGxvY2FsXG4gICAqIGNoYW5nZSBkZXRlY3Rpb25cbiAgICogY2hlY2tzLlxuICAgKlxuICAgKiA8IS0tIFRPRE86IEFkZCBhIGxpbmsgdG8gYSBjaGFwdGVyIG9uIGRldGFjaC9yZWF0dGFjaC9sb2NhbCBkaWdlc3QgLS0+XG4gICAqIDwhLS0gVE9ETzogQWRkIGEgbGl2ZSBkZW1vIG9uY2UgcmVmLmRldGVjdENoYW5nZXMgaXMgbWVyZ2VkIGludG8gbWFzdGVyIC0tPlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVmaW5lcyBhIGNvbXBvbmVudCB3aXRoIGEgbGFyZ2UgbGlzdCBvZiByZWFkb25seSBkYXRhLlxuICAgKiBJbWFnaW5lLCB0aGUgZGF0YSBjaGFuZ2VzIGNvbnN0YW50bHksIG1hbnkgdGltZXMgcGVyIHNlY29uZC4gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsXG4gICAqIHdlIHdhbnQgdG8gY2hlY2sgYW5kIHVwZGF0ZSB0aGUgbGlzdCBldmVyeSBmaXZlIHNlY29uZHMuXG4gICAqXG4gICAqIFdlIGNhbiBkbyB0aGF0IGJ5IGRldGFjaGluZyB0aGUgY29tcG9uZW50J3MgY2hhbmdlIGRldGVjdG9yIGFuZCBkb2luZyBhIGxvY2FsIGNoYW5nZSBkZXRlY3Rpb25cbiAgICogY2hlY2tcbiAgICogZXZlcnkgZml2ZSBzZWNvbmRzLlxuICAgKlxuICAgKiBTZWUge0BsaW5rIENoYW5nZURldGVjdG9yUmVmI2RldGFjaH0gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqL1xuICBhYnN0cmFjdCBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB0aGUgY2hhbmdlIGRldGVjdG9yIGFuZCBpdHMgY2hpbGRyZW4sIGFuZCB0aHJvd3MgaWYgYW55IGNoYW5nZXMgYXJlIGRldGVjdGVkLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWQgaW4gZGV2ZWxvcG1lbnQgbW9kZSB0byB2ZXJpZnkgdGhhdCBydW5uaW5nIGNoYW5nZSBkZXRlY3Rpb24gZG9lc24ndCBpbnRyb2R1Y2VcbiAgICogb3RoZXIgY2hhbmdlcy5cbiAgICovXG4gIGFic3RyYWN0IGNoZWNrTm9DaGFuZ2VzKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlYXR0YWNoIHRoZSBjaGFuZ2UgZGV0ZWN0b3IgdG8gdGhlIGNoYW5nZSBkZXRlY3RvciB0cmVlLlxuICAgKlxuICAgKiBUaGlzIGFsc28gbWFya3MgT25QdXNoIGFuY2VzdG9ycyBhcyB0byBiZSBjaGVja2VkLiBUaGlzIHJlYXR0YWNoZWQgY2hhbmdlIGRldGVjdG9yIHdpbGwgYmVcbiAgICogY2hlY2tlZCBkdXJpbmcgdGhlIG5leHQgY2hhbmdlIGRldGVjdGlvbiBydW4uXG4gICAqXG4gICAqIDwhLS0gVE9ETzogQWRkIGEgbGluayB0byBhIGNoYXB0ZXIgb24gZGV0YWNoL3JlYXR0YWNoL2xvY2FsIGRpZ2VzdCAtLT5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L2FVaFpoYT9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY3JlYXRlcyBhIGNvbXBvbmVudCBkaXNwbGF5aW5nIGBsaXZlYCBkYXRhLiBUaGUgY29tcG9uZW50IHdpbGwgZGV0YWNoXG4gICAqIGl0cyBjaGFuZ2UgZGV0ZWN0b3IgZnJvbSB0aGUgbWFpbiBjaGFuZ2UgZGV0ZWN0b3IgdHJlZSB3aGVuIHRoZSBjb21wb25lbnQncyBsaXZlIHByb3BlcnR5XG4gICAqIGlzIHNldCB0byBmYWxzZS5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjbGFzcyBEYXRhUHJvdmlkZXIge1xuICAgKiAgIGRhdGEgPSAxO1xuICAgKlxuICAgKiAgIGNvbnN0cnVjdG9yKCkge1xuICAgKiAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgKiAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEgKiAyO1xuICAgKiAgICAgfSwgNTAwKTtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdsaXZlLWRhdGEnLFxuICAgKiAgIGlucHV0czogWydsaXZlJ10sXG4gICAqICAgdGVtcGxhdGU6IGBEYXRhOiB7e2RhdGFQcm92aWRlci5kYXRhfX1gXG4gICAqIH0pXG4gICAqIGNsYXNzIExpdmVEYXRhIHtcbiAgICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZGF0YVByb3ZpZGVyOkRhdGFQcm92aWRlcikge31cbiAgICpcbiAgICogICBzZXQgbGl2ZSh2YWx1ZSkge1xuICAgKiAgICAgaWYgKHZhbHVlKVxuICAgKiAgICAgICB0aGlzLnJlZi5yZWF0dGFjaCgpO1xuICAgKiAgICAgZWxzZVxuICAgKiAgICAgICB0aGlzLnJlZi5kZXRhY2goKTtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICAgKiAgIHByb3ZpZGVyczogW0RhdGFQcm92aWRlcl0sXG4gICAqICAgdGVtcGxhdGU6IGBcbiAgICogICAgIExpdmUgVXBkYXRlOiA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJsaXZlXCI+XG4gICAqICAgICA8bGl2ZS1kYXRhIFtsaXZlXT1cImxpdmVcIj48bGl2ZS1kYXRhPlxuICAgKiAgIGAsXG4gICAqICAgZGlyZWN0aXZlczogW0xpdmVEYXRhLCBGT1JNX0RJUkVDVElWRVNdXG4gICAqIH0pXG4gICAqIGNsYXNzIEFwcCB7XG4gICAqICAgbGl2ZSA9IHRydWU7XG4gICAqIH1cbiAgICpcbiAgICogYm9vdHN0cmFwKEFwcCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYWJzdHJhY3QgcmVhdHRhY2goKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIENoYW5nZURldGVjdG9yUmVmXyBleHRlbmRzIENoYW5nZURldGVjdG9yUmVmIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yKSB7IHN1cGVyKCk7IH1cblxuICBtYXJrRm9yQ2hlY2soKTogdm9pZCB7IHRoaXMuX2NkLm1hcmtQYXRoVG9Sb290QXNDaGVja09uY2UoKTsgfVxuICBkZXRhY2goKTogdm9pZCB7IHRoaXMuX2NkLm1vZGUgPSBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZXRhY2hlZDsgfVxuICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQgeyB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7IH1cbiAgY2hlY2tOb0NoYW5nZXMoKTogdm9pZCB7IHRoaXMuX2NkLmNoZWNrTm9DaGFuZ2VzKCk7IH1cbiAgcmVhdHRhY2goKTogdm9pZCB7XG4gICAgdGhpcy5fY2QubW9kZSA9IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkNoZWNrQWx3YXlzO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cbn0iXX0=","/* */ \n\"format cjs\";\n'use strict';function implementsOnDestroy(pipe) {\r\n return pipe.constructor.prototype.ngOnDestroy;\r\n}\r\nexports.implementsOnDestroy = implementsOnDestroy;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZV9saWZlY3ljbGVfcmVmbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9waXBlX2xpZmVjeWNsZV9yZWZsZWN0b3IudHMiXSwibmFtZXMiOlsiaW1wbGVtZW50c09uRGVzdHJveSJdLCJtYXBwaW5ncyI6IkFBQUEsNkJBQW9DLElBQVM7SUFDM0NBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFdBQVdBLENBQUNBLFNBQVNBLENBQUNBLFdBQVdBLENBQUNBO0FBQ2hEQSxDQUFDQTtBQUZlLDJCQUFtQixzQkFFbEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpbXBsZW1lbnRzT25EZXN0cm95KHBpcGU6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gcGlwZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUubmdPbkRlc3Ryb3k7XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar DIRECTIVE_LIFECYCLE = \"directiveLifecycle\";\r\nvar BINDING = \"native\";\r\nvar DIRECTIVE = \"directive\";\r\nvar ELEMENT_PROPERTY = \"elementProperty\";\r\nvar ELEMENT_ATTRIBUTE = \"elementAttribute\";\r\nvar ELEMENT_CLASS = \"elementClass\";\r\nvar ELEMENT_STYLE = \"elementStyle\";\r\nvar TEXT_NODE = \"textNode\";\r\nvar EVENT = \"event\";\r\nvar HOST_EVENT = \"hostEvent\";\r\nvar BindingTarget = (function () {\r\n function BindingTarget(mode, elementIndex, name, unit, debug) {\r\n this.mode = mode;\r\n this.elementIndex = elementIndex;\r\n this.name = name;\r\n this.unit = unit;\r\n this.debug = debug;\r\n }\r\n BindingTarget.prototype.isDirective = function () { return this.mode === DIRECTIVE; };\r\n BindingTarget.prototype.isElementProperty = function () { return this.mode === ELEMENT_PROPERTY; };\r\n BindingTarget.prototype.isElementAttribute = function () { return this.mode === ELEMENT_ATTRIBUTE; };\r\n BindingTarget.prototype.isElementClass = function () { return this.mode === ELEMENT_CLASS; };\r\n BindingTarget.prototype.isElementStyle = function () { return this.mode === ELEMENT_STYLE; };\r\n BindingTarget.prototype.isTextNode = function () { return this.mode === TEXT_NODE; };\r\n return BindingTarget;\r\n})();\r\nexports.BindingTarget = BindingTarget;\r\nvar BindingRecord = (function () {\r\n function BindingRecord(mode, target, implicitReceiver, ast, setter, lifecycleEvent, directiveRecord) {\r\n this.mode = mode;\r\n this.target = target;\r\n this.implicitReceiver = implicitReceiver;\r\n this.ast = ast;\r\n this.setter = setter;\r\n this.lifecycleEvent = lifecycleEvent;\r\n this.directiveRecord = directiveRecord;\r\n }\r\n BindingRecord.prototype.isDirectiveLifecycle = function () { return this.mode === DIRECTIVE_LIFECYCLE; };\r\n BindingRecord.prototype.callOnChanges = function () {\r\n return lang_1.isPresent(this.directiveRecord) && this.directiveRecord.callOnChanges;\r\n };\r\n BindingRecord.prototype.isDefaultChangeDetection = function () {\r\n return lang_1.isBlank(this.directiveRecord) || this.directiveRecord.isDefaultChangeDetection();\r\n };\r\n BindingRecord.createDirectiveDoCheck = function (directiveRecord) {\r\n return new BindingRecord(DIRECTIVE_LIFECYCLE, null, 0, null, null, \"DoCheck\", directiveRecord);\r\n };\r\n BindingRecord.createDirectiveOnInit = function (directiveRecord) {\r\n return new BindingRecord(DIRECTIVE_LIFECYCLE, null, 0, null, null, \"OnInit\", directiveRecord);\r\n };\r\n BindingRecord.createDirectiveOnChanges = function (directiveRecord) {\r\n return new BindingRecord(DIRECTIVE_LIFECYCLE, null, 0, null, null, \"OnChanges\", directiveRecord);\r\n };\r\n BindingRecord.createForDirective = function (ast, propertyName, setter, directiveRecord) {\r\n var elementIndex = directiveRecord.directiveIndex.elementIndex;\r\n var t = new BindingTarget(DIRECTIVE, elementIndex, propertyName, null, ast.toString());\r\n return new BindingRecord(DIRECTIVE, t, 0, ast, setter, null, directiveRecord);\r\n };\r\n BindingRecord.createForElementProperty = function (ast, elementIndex, propertyName) {\r\n var t = new BindingTarget(ELEMENT_PROPERTY, elementIndex, propertyName, null, ast.toString());\r\n return new BindingRecord(BINDING, t, 0, ast, null, null, null);\r\n };\r\n BindingRecord.createForElementAttribute = function (ast, elementIndex, attributeName) {\r\n var t = new BindingTarget(ELEMENT_ATTRIBUTE, elementIndex, attributeName, null, ast.toString());\r\n return new BindingRecord(BINDING, t, 0, ast, null, null, null);\r\n };\r\n BindingRecord.createForElementClass = function (ast, elementIndex, className) {\r\n var t = new BindingTarget(ELEMENT_CLASS, elementIndex, className, null, ast.toString());\r\n return new BindingRecord(BINDING, t, 0, ast, null, null, null);\r\n };\r\n BindingRecord.createForElementStyle = function (ast, elementIndex, styleName, unit) {\r\n var t = new BindingTarget(ELEMENT_STYLE, elementIndex, styleName, unit, ast.toString());\r\n return new BindingRecord(BINDING, t, 0, ast, null, null, null);\r\n };\r\n BindingRecord.createForHostProperty = function (directiveIndex, ast, propertyName) {\r\n var t = new BindingTarget(ELEMENT_PROPERTY, directiveIndex.elementIndex, propertyName, null, ast.toString());\r\n return new BindingRecord(BINDING, t, directiveIndex, ast, null, null, null);\r\n };\r\n BindingRecord.createForHostAttribute = function (directiveIndex, ast, attributeName) {\r\n var t = new BindingTarget(ELEMENT_ATTRIBUTE, directiveIndex.elementIndex, attributeName, null, ast.toString());\r\n return new BindingRecord(BINDING, t, directiveIndex, ast, null, null, null);\r\n };\r\n BindingRecord.createForHostClass = function (directiveIndex, ast, className) {\r\n var t = new BindingTarget(ELEMENT_CLASS, directiveIndex.elementIndex, className, null, ast.toString());\r\n return new BindingRecord(BINDING, t, directiveIndex, ast, null, null, null);\r\n };\r\n BindingRecord.createForHostStyle = function (directiveIndex, ast, styleName, unit) {\r\n var t = new BindingTarget(ELEMENT_STYLE, directiveIndex.elementIndex, styleName, unit, ast.toString());\r\n return new BindingRecord(BINDING, t, directiveIndex, ast, null, null, null);\r\n };\r\n BindingRecord.createForTextNode = function (ast, elementIndex) {\r\n var t = new BindingTarget(TEXT_NODE, elementIndex, null, null, ast.toString());\r\n return new BindingRecord(BINDING, t, 0, ast, null, null, null);\r\n };\r\n BindingRecord.createForEvent = function (ast, eventName, elementIndex) {\r\n var t = new BindingTarget(EVENT, elementIndex, eventName, null, ast.toString());\r\n return new BindingRecord(EVENT, t, 0, ast, null, null, null);\r\n };\r\n BindingRecord.createForHostEvent = function (ast, eventName, directiveRecord) {\r\n var directiveIndex = directiveRecord.directiveIndex;\r\n var t = new BindingTarget(HOST_EVENT, directiveIndex.elementIndex, eventName, null, ast.toString());\r\n return new BindingRecord(HOST_EVENT, t, directiveIndex, ast, null, null, directiveRecord);\r\n };\r\n return BindingRecord;\r\n})();\r\nexports.BindingRecord = BindingRecord;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZ19yZWNvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2JpbmRpbmdfcmVjb3JkLnRzIl0sIm5hbWVzIjpbIkJpbmRpbmdUYXJnZXQiLCJCaW5kaW5nVGFyZ2V0LmNvbnN0cnVjdG9yIiwiQmluZGluZ1RhcmdldC5pc0RpcmVjdGl2ZSIsIkJpbmRpbmdUYXJnZXQuaXNFbGVtZW50UHJvcGVydHkiLCJCaW5kaW5nVGFyZ2V0LmlzRWxlbWVudEF0dHJpYnV0ZSIsIkJpbmRpbmdUYXJnZXQuaXNFbGVtZW50Q2xhc3MiLCJCaW5kaW5nVGFyZ2V0LmlzRWxlbWVudFN0eWxlIiwiQmluZGluZ1RhcmdldC5pc1RleHROb2RlIiwiQmluZGluZ1JlY29yZCIsIkJpbmRpbmdSZWNvcmQuY29uc3RydWN0b3IiLCJCaW5kaW5nUmVjb3JkLmlzRGlyZWN0aXZlTGlmZWN5Y2xlIiwiQmluZGluZ1JlY29yZC5jYWxsT25DaGFuZ2VzIiwiQmluZGluZ1JlY29yZC5pc0RlZmF1bHRDaGFuZ2VEZXRlY3Rpb24iLCJCaW5kaW5nUmVjb3JkLmNyZWF0ZURpcmVjdGl2ZURvQ2hlY2siLCJCaW5kaW5nUmVjb3JkLmNyZWF0ZURpcmVjdGl2ZU9uSW5pdCIsIkJpbmRpbmdSZWNvcmQuY3JlYXRlRGlyZWN0aXZlT25DaGFuZ2VzIiwiQmluZGluZ1JlY29yZC5jcmVhdGVGb3JEaXJlY3RpdmUiLCJCaW5kaW5nUmVjb3JkLmNyZWF0ZUZvckVsZW1lbnRQcm9wZXJ0eSIsIkJpbmRpbmdSZWNvcmQuY3JlYXRlRm9yRWxlbWVudEF0dHJpYnV0ZSIsIkJpbmRpbmdSZWNvcmQuY3JlYXRlRm9yRWxlbWVudENsYXNzIiwiQmluZGluZ1JlY29yZC5jcmVhdGVGb3JFbGVtZW50U3R5bGUiLCJCaW5kaW5nUmVjb3JkLmNyZWF0ZUZvckhvc3RQcm9wZXJ0eSIsIkJpbmRpbmdSZWNvcmQuY3JlYXRlRm9ySG9zdEF0dHJpYnV0ZSIsIkJpbmRpbmdSZWNvcmQuY3JlYXRlRm9ySG9zdENsYXNzIiwiQmluZGluZ1JlY29yZC5jcmVhdGVGb3JIb3N0U3R5bGUiLCJCaW5kaW5nUmVjb3JkLmNyZWF0ZUZvclRleHROb2RlIiwiQmluZGluZ1JlY29yZC5jcmVhdGVGb3JFdmVudCIsIkJpbmRpbmdSZWNvcmQuY3JlYXRlRm9ySG9zdEV2ZW50Il0sIm1hcHBpbmdzIjoiQUFBQSxxQkFBaUMsMEJBQTBCLENBQUMsQ0FBQTtBQUs1RCxJQUFNLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDO0FBQ2pELElBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQztBQUV6QixJQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFDOUIsSUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQztBQUMzQyxJQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUFDO0FBQzdDLElBQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQztBQUNyQyxJQUFNLGFBQWEsR0FBRyxjQUFjLENBQUM7QUFDckMsSUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDO0FBQzdCLElBQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQztBQUN0QixJQUFNLFVBQVUsR0FBRyxXQUFXLENBQUM7QUFFL0I7SUFDRUEsdUJBQW1CQSxJQUFZQSxFQUFTQSxZQUFvQkEsRUFBU0EsSUFBWUEsRUFDOURBLElBQVlBLEVBQVNBLEtBQWFBO1FBRGxDQyxTQUFJQSxHQUFKQSxJQUFJQSxDQUFRQTtRQUFTQSxpQkFBWUEsR0FBWkEsWUFBWUEsQ0FBUUE7UUFBU0EsU0FBSUEsR0FBSkEsSUFBSUEsQ0FBUUE7UUFDOURBLFNBQUlBLEdBQUpBLElBQUlBLENBQVFBO1FBQVNBLFVBQUtBLEdBQUxBLEtBQUtBLENBQVFBO0lBQUdBLENBQUNBO0lBRXpERCxtQ0FBV0EsR0FBWEEsY0FBeUJFLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLElBQUlBLEtBQUtBLFNBQVNBLENBQUNBLENBQUNBLENBQUNBO0lBRTFERix5Q0FBaUJBLEdBQWpCQSxjQUErQkcsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsS0FBS0EsZ0JBQWdCQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUV2RUgsMENBQWtCQSxHQUFsQkEsY0FBZ0NJLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLElBQUlBLEtBQUtBLGlCQUFpQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFekVKLHNDQUFjQSxHQUFkQSxjQUE0QkssTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsS0FBS0EsYUFBYUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFakVMLHNDQUFjQSxHQUFkQSxjQUE0Qk0sTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsS0FBS0EsYUFBYUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFakVOLGtDQUFVQSxHQUFWQSxjQUF3Qk8sTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsS0FBS0EsU0FBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDM0RQLG9CQUFDQTtBQUFEQSxDQUFDQSxBQWZELElBZUM7QUFmWSxxQkFBYSxnQkFlekIsQ0FBQTtBQUVEO0lBQ0VRLHVCQUFtQkEsSUFBWUEsRUFBU0EsTUFBcUJBLEVBQVNBLGdCQUFxQkEsRUFDeEVBLEdBQVFBLEVBQVNBLE1BQWdCQSxFQUFTQSxjQUFzQkEsRUFDaEVBLGVBQWdDQTtRQUZoQ0MsU0FBSUEsR0FBSkEsSUFBSUEsQ0FBUUE7UUFBU0EsV0FBTUEsR0FBTkEsTUFBTUEsQ0FBZUE7UUFBU0EscUJBQWdCQSxHQUFoQkEsZ0JBQWdCQSxDQUFLQTtRQUN4RUEsUUFBR0EsR0FBSEEsR0FBR0EsQ0FBS0E7UUFBU0EsV0FBTUEsR0FBTkEsTUFBTUEsQ0FBVUE7UUFBU0EsbUJBQWNBLEdBQWRBLGNBQWNBLENBQVFBO1FBQ2hFQSxvQkFBZUEsR0FBZkEsZUFBZUEsQ0FBaUJBO0lBQUdBLENBQUNBO0lBRXZERCw0Q0FBb0JBLEdBQXBCQSxjQUFrQ0UsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsS0FBS0EsbUJBQW1CQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUU3RUYscUNBQWFBLEdBQWJBO1FBQ0VHLE1BQU1BLENBQUNBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxlQUFlQSxDQUFDQSxJQUFJQSxJQUFJQSxDQUFDQSxlQUFlQSxDQUFDQSxhQUFhQSxDQUFDQTtJQUMvRUEsQ0FBQ0E7SUFFREgsZ0RBQXdCQSxHQUF4QkE7UUFDRUksTUFBTUEsQ0FBQ0EsY0FBT0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsZUFBZUEsQ0FBQ0EsSUFBSUEsSUFBSUEsQ0FBQ0EsZUFBZUEsQ0FBQ0Esd0JBQXdCQSxFQUFFQSxDQUFDQTtJQUMxRkEsQ0FBQ0E7SUFFTUosb0NBQXNCQSxHQUE3QkEsVUFBOEJBLGVBQWdDQTtRQUM1REssTUFBTUEsQ0FBQ0EsSUFBSUEsYUFBYUEsQ0FBQ0EsbUJBQW1CQSxFQUFFQSxJQUFJQSxFQUFFQSxDQUFDQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxTQUFTQSxFQUFFQSxlQUFlQSxDQUFDQSxDQUFDQTtJQUNqR0EsQ0FBQ0E7SUFFTUwsbUNBQXFCQSxHQUE1QkEsVUFBNkJBLGVBQWdDQTtRQUMzRE0sTUFBTUEsQ0FBQ0EsSUFBSUEsYUFBYUEsQ0FBQ0EsbUJBQW1CQSxFQUFFQSxJQUFJQSxFQUFFQSxDQUFDQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxRQUFRQSxFQUFFQSxlQUFlQSxDQUFDQSxDQUFDQTtJQUNoR0EsQ0FBQ0E7SUFFTU4sc0NBQXdCQSxHQUEvQkEsVUFBZ0NBLGVBQWdDQTtRQUM5RE8sTUFBTUEsQ0FBQ0EsSUFBSUEsYUFBYUEsQ0FBQ0EsbUJBQW1CQSxFQUFFQSxJQUFJQSxFQUFFQSxDQUFDQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxXQUFXQSxFQUNyREEsZUFBZUEsQ0FBQ0EsQ0FBQ0E7SUFDNUNBLENBQUNBO0lBSU1QLGdDQUFrQkEsR0FBekJBLFVBQTBCQSxHQUFRQSxFQUFFQSxZQUFvQkEsRUFBRUEsTUFBZ0JBLEVBQ2hEQSxlQUFnQ0E7UUFDeERRLElBQUlBLFlBQVlBLEdBQUdBLGVBQWVBLENBQUNBLGNBQWNBLENBQUNBLFlBQVlBLENBQUNBO1FBQy9EQSxJQUFJQSxDQUFDQSxHQUFHQSxJQUFJQSxhQUFhQSxDQUFDQSxTQUFTQSxFQUFFQSxZQUFZQSxFQUFFQSxZQUFZQSxFQUFFQSxJQUFJQSxFQUFFQSxHQUFHQSxDQUFDQSxRQUFRQSxFQUFFQSxDQUFDQSxDQUFDQTtRQUN2RkEsTUFBTUEsQ0FBQ0EsSUFBSUEsYUFBYUEsQ0FBQ0EsU0FBU0EsRUFBRUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsRUFBRUEsR0FBR0EsRUFBRUEsTUFBTUEsRUFBRUEsSUFBSUEsRUFBRUEsZUFBZUEsQ0FBQ0EsQ0FBQ0E7SUFDaEZBLENBQUNBO0lBSU1SLHNDQUF3QkEsR0FBL0JBLFVBQWdDQSxHQUFRQSxFQUFFQSxZQUFvQkEsRUFDOUJBLFlBQW9CQTtRQUNsRFMsSUFBSUEsQ0FBQ0EsR0FBR0EsSUFBSUEsYUFBYUEsQ0FBQ0EsZ0JBQWdCQSxFQUFFQSxZQUFZQSxFQUFFQSxZQUFZQSxFQUFFQSxJQUFJQSxFQUFFQSxHQUFHQSxDQUFDQSxRQUFRQSxFQUFFQSxDQUFDQSxDQUFDQTtRQUM5RkEsTUFBTUEsQ0FBQ0EsSUFBSUEsYUFBYUEsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsRUFBRUEsR0FBR0EsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0E7SUFDakVBLENBQUNBO0lBRU1ULHVDQUF5QkEsR0FBaENBLFVBQWlDQSxHQUFRQSxFQUFFQSxZQUFvQkEsRUFDOUJBLGFBQXFCQTtRQUNwRFUsSUFBSUEsQ0FBQ0EsR0FBR0EsSUFBSUEsYUFBYUEsQ0FBQ0EsaUJBQWlCQSxFQUFFQSxZQUFZQSxFQUFFQSxhQUFhQSxFQUFFQSxJQUFJQSxFQUFFQSxHQUFHQSxDQUFDQSxRQUFRQSxFQUFFQSxDQUFDQSxDQUFDQTtRQUNoR0EsTUFBTUEsQ0FBQ0EsSUFBSUEsYUFBYUEsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsRUFBRUEsR0FBR0EsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0E7SUFDakVBLENBQUNBO0lBRU1WLG1DQUFxQkEsR0FBNUJBLFVBQTZCQSxHQUFRQSxFQUFFQSxZQUFvQkEsRUFBRUEsU0FBaUJBO1FBQzVFVyxJQUFJQSxDQUFDQSxHQUFHQSxJQUFJQSxhQUFhQSxDQUFDQSxhQUFhQSxFQUFFQSxZQUFZQSxFQUFFQSxTQUFTQSxFQUFFQSxJQUFJQSxFQUFFQSxHQUFHQSxDQUFDQSxRQUFRQSxFQUFFQSxDQUFDQSxDQUFDQTtRQUN4RkEsTUFBTUEsQ0FBQ0EsSUFBSUEsYUFBYUEsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsRUFBRUEsR0FBR0EsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0E7SUFDakVBLENBQUNBO0lBRU1YLG1DQUFxQkEsR0FBNUJBLFVBQTZCQSxHQUFRQSxFQUFFQSxZQUFvQkEsRUFBRUEsU0FBaUJBLEVBQ2pEQSxJQUFZQTtRQUN2Q1ksSUFBSUEsQ0FBQ0EsR0FBR0EsSUFBSUEsYUFBYUEsQ0FBQ0EsYUFBYUEsRUFBRUEsWUFBWUEsRUFBRUEsU0FBU0EsRUFBRUEsSUFBSUEsRUFBRUEsR0FBR0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0EsQ0FBQ0E7UUFDeEZBLE1BQU1BLENBQUNBLElBQUlBLGFBQWFBLENBQUNBLE9BQU9BLEVBQUVBLENBQUNBLEVBQUVBLENBQUNBLEVBQUVBLEdBQUdBLEVBQUVBLElBQUlBLEVBQUVBLElBQUlBLEVBQUVBLElBQUlBLENBQUNBLENBQUNBO0lBQ2pFQSxDQUFDQTtJQUlNWixtQ0FBcUJBLEdBQTVCQSxVQUE2QkEsY0FBOEJBLEVBQUVBLEdBQVFBLEVBQ3hDQSxZQUFvQkE7UUFDL0NhLElBQUlBLENBQUNBLEdBQUdBLElBQUlBLGFBQWFBLENBQUNBLGdCQUFnQkEsRUFBRUEsY0FBY0EsQ0FBQ0EsWUFBWUEsRUFBRUEsWUFBWUEsRUFBRUEsSUFBSUEsRUFDakVBLEdBQUdBLENBQUNBLFFBQVFBLEVBQUVBLENBQUNBLENBQUNBO1FBQzFDQSxNQUFNQSxDQUFDQSxJQUFJQSxhQUFhQSxDQUFDQSxPQUFPQSxFQUFFQSxDQUFDQSxFQUFFQSxjQUFjQSxFQUFFQSxHQUFHQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQTtJQUM5RUEsQ0FBQ0E7SUFFTWIsb0NBQXNCQSxHQUE3QkEsVUFBOEJBLGNBQThCQSxFQUFFQSxHQUFRQSxFQUN4Q0EsYUFBcUJBO1FBQ2pEYyxJQUFJQSxDQUFDQSxHQUFHQSxJQUFJQSxhQUFhQSxDQUFDQSxpQkFBaUJBLEVBQUVBLGNBQWNBLENBQUNBLFlBQVlBLEVBQUVBLGFBQWFBLEVBQUVBLElBQUlBLEVBQ25FQSxHQUFHQSxDQUFDQSxRQUFRQSxFQUFFQSxDQUFDQSxDQUFDQTtRQUMxQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsYUFBYUEsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0EsRUFBRUEsY0FBY0EsRUFBRUEsR0FBR0EsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0E7SUFDOUVBLENBQUNBO0lBRU1kLGdDQUFrQkEsR0FBekJBLFVBQTBCQSxjQUE4QkEsRUFBRUEsR0FBUUEsRUFDeENBLFNBQWlCQTtRQUN6Q2UsSUFBSUEsQ0FBQ0EsR0FBR0EsSUFBSUEsYUFBYUEsQ0FBQ0EsYUFBYUEsRUFBRUEsY0FBY0EsQ0FBQ0EsWUFBWUEsRUFBRUEsU0FBU0EsRUFBRUEsSUFBSUEsRUFDM0RBLEdBQUdBLENBQUNBLFFBQVFBLEVBQUVBLENBQUNBLENBQUNBO1FBQzFDQSxNQUFNQSxDQUFDQSxJQUFJQSxhQUFhQSxDQUFDQSxPQUFPQSxFQUFFQSxDQUFDQSxFQUFFQSxjQUFjQSxFQUFFQSxHQUFHQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQTtJQUM5RUEsQ0FBQ0E7SUFFTWYsZ0NBQWtCQSxHQUF6QkEsVUFBMEJBLGNBQThCQSxFQUFFQSxHQUFRQSxFQUFFQSxTQUFpQkEsRUFDM0RBLElBQVlBO1FBQ3BDZ0IsSUFBSUEsQ0FBQ0EsR0FBR0EsSUFBSUEsYUFBYUEsQ0FBQ0EsYUFBYUEsRUFBRUEsY0FBY0EsQ0FBQ0EsWUFBWUEsRUFBRUEsU0FBU0EsRUFBRUEsSUFBSUEsRUFDM0RBLEdBQUdBLENBQUNBLFFBQVFBLEVBQUVBLENBQUNBLENBQUNBO1FBQzFDQSxNQUFNQSxDQUFDQSxJQUFJQSxhQUFhQSxDQUFDQSxPQUFPQSxFQUFFQSxDQUFDQSxFQUFFQSxjQUFjQSxFQUFFQSxHQUFHQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQTtJQUM5RUEsQ0FBQ0E7SUFJTWhCLCtCQUFpQkEsR0FBeEJBLFVBQXlCQSxHQUFRQSxFQUFFQSxZQUFvQkE7UUFDckRpQixJQUFJQSxDQUFDQSxHQUFHQSxJQUFJQSxhQUFhQSxDQUFDQSxTQUFTQSxFQUFFQSxZQUFZQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxHQUFHQSxDQUFDQSxRQUFRQSxFQUFFQSxDQUFDQSxDQUFDQTtRQUMvRUEsTUFBTUEsQ0FBQ0EsSUFBSUEsYUFBYUEsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsRUFBRUEsR0FBR0EsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0E7SUFDakVBLENBQUNBO0lBSU1qQiw0QkFBY0EsR0FBckJBLFVBQXNCQSxHQUFRQSxFQUFFQSxTQUFpQkEsRUFBRUEsWUFBb0JBO1FBQ3JFa0IsSUFBSUEsQ0FBQ0EsR0FBR0EsSUFBSUEsYUFBYUEsQ0FBQ0EsS0FBS0EsRUFBRUEsWUFBWUEsRUFBRUEsU0FBU0EsRUFBRUEsSUFBSUEsRUFBRUEsR0FBR0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0EsQ0FBQ0E7UUFDaEZBLE1BQU1BLENBQUNBLElBQUlBLGFBQWFBLENBQUNBLEtBQUtBLEVBQUVBLENBQUNBLEVBQUVBLENBQUNBLEVBQUVBLEdBQUdBLEVBQUVBLElBQUlBLEVBQUVBLElBQUlBLEVBQUVBLElBQUlBLENBQUNBLENBQUNBO0lBQy9EQSxDQUFDQTtJQUVNbEIsZ0NBQWtCQSxHQUF6QkEsVUFBMEJBLEdBQVFBLEVBQUVBLFNBQWlCQSxFQUMzQkEsZUFBZ0NBO1FBQ3hEbUIsSUFBSUEsY0FBY0EsR0FBR0EsZUFBZUEsQ0FBQ0EsY0FBY0EsQ0FBQ0E7UUFDcERBLElBQUlBLENBQUNBLEdBQ0RBLElBQUlBLGFBQWFBLENBQUNBLFVBQVVBLEVBQUVBLGNBQWNBLENBQUNBLFlBQVlBLEVBQUVBLFNBQVNBLEVBQUVBLElBQUlBLEVBQUVBLEdBQUdBLENBQUNBLFFBQVFBLEVBQUVBLENBQUNBLENBQUNBO1FBQ2hHQSxNQUFNQSxDQUFDQSxJQUFJQSxhQUFhQSxDQUFDQSxVQUFVQSxFQUFFQSxDQUFDQSxFQUFFQSxjQUFjQSxFQUFFQSxHQUFHQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxlQUFlQSxDQUFDQSxDQUFDQTtJQUM1RkEsQ0FBQ0E7SUFDSG5CLG9CQUFDQTtBQUFEQSxDQUFDQSxBQWpIRCxJQWlIQztBQWpIWSxxQkFBYSxnQkFpSHpCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzUHJlc2VudCwgaXNCbGFua30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7U2V0dGVyRm59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3JlZmxlY3Rpb24vdHlwZXMnO1xuaW1wb3J0IHtBU1R9IGZyb20gJy4vcGFyc2VyL2FzdCc7XG5pbXBvcnQge0RpcmVjdGl2ZUluZGV4LCBEaXJlY3RpdmVSZWNvcmR9IGZyb20gJy4vZGlyZWN0aXZlX3JlY29yZCc7XG5cbmNvbnN0IERJUkVDVElWRV9MSUZFQ1lDTEUgPSBcImRpcmVjdGl2ZUxpZmVjeWNsZVwiO1xuY29uc3QgQklORElORyA9IFwibmF0aXZlXCI7XG5cbmNvbnN0IERJUkVDVElWRSA9IFwiZGlyZWN0aXZlXCI7XG5jb25zdCBFTEVNRU5UX1BST1BFUlRZID0gXCJlbGVtZW50UHJvcGVydHlcIjtcbmNvbnN0IEVMRU1FTlRfQVRUUklCVVRFID0gXCJlbGVtZW50QXR0cmlidXRlXCI7XG5jb25zdCBFTEVNRU5UX0NMQVNTID0gXCJlbGVtZW50Q2xhc3NcIjtcbmNvbnN0IEVMRU1FTlRfU1RZTEUgPSBcImVsZW1lbnRTdHlsZVwiO1xuY29uc3QgVEVYVF9OT0RFID0gXCJ0ZXh0Tm9kZVwiO1xuY29uc3QgRVZFTlQgPSBcImV2ZW50XCI7XG5jb25zdCBIT1NUX0VWRU5UID0gXCJob3N0RXZlbnRcIjtcblxuZXhwb3J0IGNsYXNzIEJpbmRpbmdUYXJnZXQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kZTogc3RyaW5nLCBwdWJsaWMgZWxlbWVudEluZGV4OiBudW1iZXIsIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHB1YmxpYyB1bml0OiBzdHJpbmcsIHB1YmxpYyBkZWJ1Zzogc3RyaW5nKSB7fVxuXG4gIGlzRGlyZWN0aXZlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5tb2RlID09PSBESVJFQ1RJVkU7IH1cblxuICBpc0VsZW1lbnRQcm9wZXJ0eSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubW9kZSA9PT0gRUxFTUVOVF9QUk9QRVJUWTsgfVxuXG4gIGlzRWxlbWVudEF0dHJpYnV0ZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubW9kZSA9PT0gRUxFTUVOVF9BVFRSSUJVVEU7IH1cblxuICBpc0VsZW1lbnRDbGFzcygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubW9kZSA9PT0gRUxFTUVOVF9DTEFTUzsgfVxuXG4gIGlzRWxlbWVudFN0eWxlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5tb2RlID09PSBFTEVNRU5UX1NUWUxFOyB9XG5cbiAgaXNUZXh0Tm9kZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubW9kZSA9PT0gVEVYVF9OT0RFOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBCaW5kaW5nUmVjb3JkIHtcbiAgY29uc3RydWN0b3IocHVibGljIG1vZGU6IHN0cmluZywgcHVibGljIHRhcmdldDogQmluZGluZ1RhcmdldCwgcHVibGljIGltcGxpY2l0UmVjZWl2ZXI6IGFueSxcbiAgICAgICAgICAgICAgcHVibGljIGFzdDogQVNULCBwdWJsaWMgc2V0dGVyOiBTZXR0ZXJGbiwgcHVibGljIGxpZmVjeWNsZUV2ZW50OiBzdHJpbmcsXG4gICAgICAgICAgICAgIHB1YmxpYyBkaXJlY3RpdmVSZWNvcmQ6IERpcmVjdGl2ZVJlY29yZCkge31cblxuICBpc0RpcmVjdGl2ZUxpZmVjeWNsZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubW9kZSA9PT0gRElSRUNUSVZFX0xJRkVDWUNMRTsgfVxuXG4gIGNhbGxPbkNoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzUHJlc2VudCh0aGlzLmRpcmVjdGl2ZVJlY29yZCkgJiYgdGhpcy5kaXJlY3RpdmVSZWNvcmQuY2FsbE9uQ2hhbmdlcztcbiAgfVxuXG4gIGlzRGVmYXVsdENoYW5nZURldGVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNCbGFuayh0aGlzLmRpcmVjdGl2ZVJlY29yZCkgfHwgdGhpcy5kaXJlY3RpdmVSZWNvcmQuaXNEZWZhdWx0Q2hhbmdlRGV0ZWN0aW9uKCk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRGlyZWN0aXZlRG9DaGVjayhkaXJlY3RpdmVSZWNvcmQ6IERpcmVjdGl2ZVJlY29yZCk6IEJpbmRpbmdSZWNvcmQge1xuICAgIHJldHVybiBuZXcgQmluZGluZ1JlY29yZChESVJFQ1RJVkVfTElGRUNZQ0xFLCBudWxsLCAwLCBudWxsLCBudWxsLCBcIkRvQ2hlY2tcIiwgZGlyZWN0aXZlUmVjb3JkKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVEaXJlY3RpdmVPbkluaXQoZGlyZWN0aXZlUmVjb3JkOiBEaXJlY3RpdmVSZWNvcmQpOiBCaW5kaW5nUmVjb3JkIHtcbiAgICByZXR1cm4gbmV3IEJpbmRpbmdSZWNvcmQoRElSRUNUSVZFX0xJRkVDWUNMRSwgbnVsbCwgMCwgbnVsbCwgbnVsbCwgXCJPbkluaXRcIiwgZGlyZWN0aXZlUmVjb3JkKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVEaXJlY3RpdmVPbkNoYW5nZXMoZGlyZWN0aXZlUmVjb3JkOiBEaXJlY3RpdmVSZWNvcmQpOiBCaW5kaW5nUmVjb3JkIHtcbiAgICByZXR1cm4gbmV3IEJpbmRpbmdSZWNvcmQoRElSRUNUSVZFX0xJRkVDWUNMRSwgbnVsbCwgMCwgbnVsbCwgbnVsbCwgXCJPbkNoYW5nZXNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlUmVjb3JkKTtcbiAgfVxuXG5cblxuICBzdGF0aWMgY3JlYXRlRm9yRGlyZWN0aXZlKGFzdDogQVNULCBwcm9wZXJ0eU5hbWU6IHN0cmluZywgc2V0dGVyOiBTZXR0ZXJGbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVSZWNvcmQ6IERpcmVjdGl2ZVJlY29yZCk6IEJpbmRpbmdSZWNvcmQge1xuICAgIHZhciBlbGVtZW50SW5kZXggPSBkaXJlY3RpdmVSZWNvcmQuZGlyZWN0aXZlSW5kZXguZWxlbWVudEluZGV4O1xuICAgIHZhciB0ID0gbmV3IEJpbmRpbmdUYXJnZXQoRElSRUNUSVZFLCBlbGVtZW50SW5kZXgsIHByb3BlcnR5TmFtZSwgbnVsbCwgYXN0LnRvU3RyaW5nKCkpO1xuICAgIHJldHVybiBuZXcgQmluZGluZ1JlY29yZChESVJFQ1RJVkUsIHQsIDAsIGFzdCwgc2V0dGVyLCBudWxsLCBkaXJlY3RpdmVSZWNvcmQpO1xuICB9XG5cblxuXG4gIHN0YXRpYyBjcmVhdGVGb3JFbGVtZW50UHJvcGVydHkoYXN0OiBBU1QsIGVsZW1lbnRJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZTogc3RyaW5nKTogQmluZGluZ1JlY29yZCB7XG4gICAgdmFyIHQgPSBuZXcgQmluZGluZ1RhcmdldChFTEVNRU5UX1BST1BFUlRZLCBlbGVtZW50SW5kZXgsIHByb3BlcnR5TmFtZSwgbnVsbCwgYXN0LnRvU3RyaW5nKCkpO1xuICAgIHJldHVybiBuZXcgQmluZGluZ1JlY29yZChCSU5ESU5HLCB0LCAwLCBhc3QsIG51bGwsIG51bGwsIG51bGwpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUZvckVsZW1lbnRBdHRyaWJ1dGUoYXN0OiBBU1QsIGVsZW1lbnRJbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcpOiBCaW5kaW5nUmVjb3JkIHtcbiAgICB2YXIgdCA9IG5ldyBCaW5kaW5nVGFyZ2V0KEVMRU1FTlRfQVRUUklCVVRFLCBlbGVtZW50SW5kZXgsIGF0dHJpYnV0ZU5hbWUsIG51bGwsIGFzdC50b1N0cmluZygpKTtcbiAgICByZXR1cm4gbmV3IEJpbmRpbmdSZWNvcmQoQklORElORywgdCwgMCwgYXN0LCBudWxsLCBudWxsLCBudWxsKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVGb3JFbGVtZW50Q2xhc3MoYXN0OiBBU1QsIGVsZW1lbnRJbmRleDogbnVtYmVyLCBjbGFzc05hbWU6IHN0cmluZyk6IEJpbmRpbmdSZWNvcmQge1xuICAgIHZhciB0ID0gbmV3IEJpbmRpbmdUYXJnZXQoRUxFTUVOVF9DTEFTUywgZWxlbWVudEluZGV4LCBjbGFzc05hbWUsIG51bGwsIGFzdC50b1N0cmluZygpKTtcbiAgICByZXR1cm4gbmV3IEJpbmRpbmdSZWNvcmQoQklORElORywgdCwgMCwgYXN0LCBudWxsLCBudWxsLCBudWxsKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVGb3JFbGVtZW50U3R5bGUoYXN0OiBBU1QsIGVsZW1lbnRJbmRleDogbnVtYmVyLCBzdHlsZU5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0OiBzdHJpbmcpOiBCaW5kaW5nUmVjb3JkIHtcbiAgICB2YXIgdCA9IG5ldyBCaW5kaW5nVGFyZ2V0KEVMRU1FTlRfU1RZTEUsIGVsZW1lbnRJbmRleCwgc3R5bGVOYW1lLCB1bml0LCBhc3QudG9TdHJpbmcoKSk7XG4gICAgcmV0dXJuIG5ldyBCaW5kaW5nUmVjb3JkKEJJTkRJTkcsIHQsIDAsIGFzdCwgbnVsbCwgbnVsbCwgbnVsbCk7XG4gIH1cblxuXG5cbiAgc3RhdGljIGNyZWF0ZUZvckhvc3RQcm9wZXJ0eShkaXJlY3RpdmVJbmRleDogRGlyZWN0aXZlSW5kZXgsIGFzdDogQVNULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZTogc3RyaW5nKTogQmluZGluZ1JlY29yZCB7XG4gICAgdmFyIHQgPSBuZXcgQmluZGluZ1RhcmdldChFTEVNRU5UX1BST1BFUlRZLCBkaXJlY3RpdmVJbmRleC5lbGVtZW50SW5kZXgsIHByb3BlcnR5TmFtZSwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC50b1N0cmluZygpKTtcbiAgICByZXR1cm4gbmV3IEJpbmRpbmdSZWNvcmQoQklORElORywgdCwgZGlyZWN0aXZlSW5kZXgsIGFzdCwgbnVsbCwgbnVsbCwgbnVsbCk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRm9ySG9zdEF0dHJpYnV0ZShkaXJlY3RpdmVJbmRleDogRGlyZWN0aXZlSW5kZXgsIGFzdDogQVNULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcpOiBCaW5kaW5nUmVjb3JkIHtcbiAgICB2YXIgdCA9IG5ldyBCaW5kaW5nVGFyZ2V0KEVMRU1FTlRfQVRUUklCVVRFLCBkaXJlY3RpdmVJbmRleC5lbGVtZW50SW5kZXgsIGF0dHJpYnV0ZU5hbWUsIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QudG9TdHJpbmcoKSk7XG4gICAgcmV0dXJuIG5ldyBCaW5kaW5nUmVjb3JkKEJJTkRJTkcsIHQsIGRpcmVjdGl2ZUluZGV4LCBhc3QsIG51bGwsIG51bGwsIG51bGwpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUZvckhvc3RDbGFzcyhkaXJlY3RpdmVJbmRleDogRGlyZWN0aXZlSW5kZXgsIGFzdDogQVNULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogc3RyaW5nKTogQmluZGluZ1JlY29yZCB7XG4gICAgdmFyIHQgPSBuZXcgQmluZGluZ1RhcmdldChFTEVNRU5UX0NMQVNTLCBkaXJlY3RpdmVJbmRleC5lbGVtZW50SW5kZXgsIGNsYXNzTmFtZSwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC50b1N0cmluZygpKTtcbiAgICByZXR1cm4gbmV3IEJpbmRpbmdSZWNvcmQoQklORElORywgdCwgZGlyZWN0aXZlSW5kZXgsIGFzdCwgbnVsbCwgbnVsbCwgbnVsbCk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRm9ySG9zdFN0eWxlKGRpcmVjdGl2ZUluZGV4OiBEaXJlY3RpdmVJbmRleCwgYXN0OiBBU1QsIHN0eWxlTmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQ6IHN0cmluZyk6IEJpbmRpbmdSZWNvcmQge1xuICAgIHZhciB0ID0gbmV3IEJpbmRpbmdUYXJnZXQoRUxFTUVOVF9TVFlMRSwgZGlyZWN0aXZlSW5kZXguZWxlbWVudEluZGV4LCBzdHlsZU5hbWUsIHVuaXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QudG9TdHJpbmcoKSk7XG4gICAgcmV0dXJuIG5ldyBCaW5kaW5nUmVjb3JkKEJJTkRJTkcsIHQsIGRpcmVjdGl2ZUluZGV4LCBhc3QsIG51bGwsIG51bGwsIG51bGwpO1xuICB9XG5cblxuXG4gIHN0YXRpYyBjcmVhdGVGb3JUZXh0Tm9kZShhc3Q6IEFTVCwgZWxlbWVudEluZGV4OiBudW1iZXIpOiBCaW5kaW5nUmVjb3JkIHtcbiAgICB2YXIgdCA9IG5ldyBCaW5kaW5nVGFyZ2V0KFRFWFRfTk9ERSwgZWxlbWVudEluZGV4LCBudWxsLCBudWxsLCBhc3QudG9TdHJpbmcoKSk7XG4gICAgcmV0dXJuIG5ldyBCaW5kaW5nUmVjb3JkKEJJTkRJTkcsIHQsIDAsIGFzdCwgbnVsbCwgbnVsbCwgbnVsbCk7XG4gIH1cblxuXG5cbiAgc3RhdGljIGNyZWF0ZUZvckV2ZW50KGFzdDogQVNULCBldmVudE5hbWU6IHN0cmluZywgZWxlbWVudEluZGV4OiBudW1iZXIpOiBCaW5kaW5nUmVjb3JkIHtcbiAgICB2YXIgdCA9IG5ldyBCaW5kaW5nVGFyZ2V0KEVWRU5ULCBlbGVtZW50SW5kZXgsIGV2ZW50TmFtZSwgbnVsbCwgYXN0LnRvU3RyaW5nKCkpO1xuICAgIHJldHVybiBuZXcgQmluZGluZ1JlY29yZChFVkVOVCwgdCwgMCwgYXN0LCBudWxsLCBudWxsLCBudWxsKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVGb3JIb3N0RXZlbnQoYXN0OiBBU1QsIGV2ZW50TmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZVJlY29yZDogRGlyZWN0aXZlUmVjb3JkKTogQmluZGluZ1JlY29yZCB7XG4gICAgdmFyIGRpcmVjdGl2ZUluZGV4ID0gZGlyZWN0aXZlUmVjb3JkLmRpcmVjdGl2ZUluZGV4O1xuICAgIHZhciB0ID1cbiAgICAgICAgbmV3IEJpbmRpbmdUYXJnZXQoSE9TVF9FVkVOVCwgZGlyZWN0aXZlSW5kZXguZWxlbWVudEluZGV4LCBldmVudE5hbWUsIG51bGwsIGFzdC50b1N0cmluZygpKTtcbiAgICByZXR1cm4gbmV3IEJpbmRpbmdSZWNvcmQoSE9TVF9FVkVOVCwgdCwgZGlyZWN0aXZlSW5kZXgsIGFzdCwgbnVsbCwgbnVsbCwgZGlyZWN0aXZlUmVjb3JkKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Describes the current state of the change detector.\r\n */\r\n(function (ChangeDetectorState) {\r\n /**\r\n * `NeverChecked` means that the change detector has not been checked yet, and\r\n * initialization methods should be called during detection.\r\n */\r\n ChangeDetectorState[ChangeDetectorState[\"NeverChecked\"] = 0] = \"NeverChecked\";\r\n /**\r\n * `CheckedBefore` means that the change detector has successfully completed at least\r\n * one detection previously.\r\n */\r\n ChangeDetectorState[ChangeDetectorState[\"CheckedBefore\"] = 1] = \"CheckedBefore\";\r\n /**\r\n * `Errored` means that the change detector encountered an error checking a binding\r\n * or calling a directive lifecycle method and is now in an inconsistent state. Change\r\n * detectors in this state will no longer detect changes.\r\n */\r\n ChangeDetectorState[ChangeDetectorState[\"Errored\"] = 2] = \"Errored\";\r\n})(exports.ChangeDetectorState || (exports.ChangeDetectorState = {}));\r\nvar ChangeDetectorState = exports.ChangeDetectorState;\r\n/**\r\n * Describes within the change detector which strategy will be used the next time change\r\n * detection is triggered.\r\n */\r\n(function (ChangeDetectionStrategy) {\r\n /**\r\n * `CheckedOnce` means that after calling detectChanges the mode of the change detector\r\n * will become `Checked`.\r\n */\r\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"CheckOnce\"] = 0] = \"CheckOnce\";\r\n /**\r\n * `Checked` means that the change detector should be skipped until its mode changes to\r\n * `CheckOnce`.\r\n */\r\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"Checked\"] = 1] = \"Checked\";\r\n /**\r\n * `CheckAlways` means that after calling detectChanges the mode of the change detector\r\n * will remain `CheckAlways`.\r\n */\r\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"CheckAlways\"] = 2] = \"CheckAlways\";\r\n /**\r\n * `Detached` means that the change detector sub tree is not a part of the main tree and\r\n * should be skipped.\r\n */\r\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"Detached\"] = 3] = \"Detached\";\r\n /**\r\n * `OnPush` means that the change detector's mode will be set to `CheckOnce` during hydration.\r\n */\r\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"OnPush\"] = 4] = \"OnPush\";\r\n /**\r\n * `Default` means that the change detector's mode will be set to `CheckAlways` during hydration.\r\n */\r\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"Default\"] = 5] = \"Default\";\r\n})(exports.ChangeDetectionStrategy || (exports.ChangeDetectionStrategy = {}));\r\nvar ChangeDetectionStrategy = exports.ChangeDetectionStrategy;\r\n/**\r\n * List of possible {@link ChangeDetectionStrategy} values.\r\n */\r\nexports.CHANGE_DETECTION_STRATEGY_VALUES = [\r\n ChangeDetectionStrategy.CheckOnce,\r\n ChangeDetectionStrategy.Checked,\r\n ChangeDetectionStrategy.CheckAlways,\r\n ChangeDetectionStrategy.Detached,\r\n ChangeDetectionStrategy.OnPush,\r\n ChangeDetectionStrategy.Default\r\n];\r\n/**\r\n * List of possible {@link ChangeDetectorState} values.\r\n */\r\nexports.CHANGE_DETECTOR_STATE_VALUES = [\r\n ChangeDetectorState.NeverChecked,\r\n ChangeDetectorState.CheckedBefore,\r\n ChangeDetectorState.Errored\r\n];\r\nfunction isDefaultChangeDetectionStrategy(changeDetectionStrategy) {\r\n return lang_1.isBlank(changeDetectionStrategy) ||\r\n changeDetectionStrategy === ChangeDetectionStrategy.Default;\r\n}\r\nexports.isDefaultChangeDetectionStrategy = isDefaultChangeDetectionStrategy;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jb25zdGFudHMudHMiXSwibmFtZXMiOlsiQ2hhbmdlRGV0ZWN0b3JTdGF0ZSIsIkNoYW5nZURldGVjdGlvblN0cmF0ZWd5IiwiaXNEZWZhdWx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kiXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFvRCwwQkFBMEIsQ0FBQyxDQUFBO0FBRS9FOztHQUVHO0FBQ0gsV0FBWSxtQkFBbUI7SUFDN0JBOzs7T0FHR0E7SUFDSEEsNkVBQVlBLENBQUFBO0lBRVpBOzs7T0FHR0E7SUFDSEEsK0VBQWFBLENBQUFBO0lBRWJBOzs7O09BSUdBO0lBQ0hBLG1FQUFPQSxDQUFBQTtBQUNUQSxDQUFDQSxFQW5CVywyQkFBbUIsS0FBbkIsMkJBQW1CLFFBbUI5QjtBQW5CRCxJQUFZLG1CQUFtQixHQUFuQiwyQkFtQlgsQ0FBQTtBQUVEOzs7R0FHRztBQUNILFdBQVksdUJBQXVCO0lBQ2pDQzs7O09BR0dBO0lBQ0hBLCtFQUFTQSxDQUFBQTtJQUVUQTs7O09BR0dBO0lBQ0hBLDJFQUFPQSxDQUFBQTtJQUVQQTs7O09BR0dBO0lBQ0hBLG1GQUFXQSxDQUFBQTtJQUVYQTs7O09BR0dBO0lBQ0hBLDZFQUFRQSxDQUFBQTtJQUVSQTs7T0FFR0E7SUFDSEEseUVBQU1BLENBQUFBO0lBRU5BOztPQUVHQTtJQUNIQSwyRUFBT0EsQ0FBQUE7QUFDVEEsQ0FBQ0EsRUFsQ1csK0JBQXVCLEtBQXZCLCtCQUF1QixRQWtDbEM7QUFsQ0QsSUFBWSx1QkFBdUIsR0FBdkIsK0JBa0NYLENBQUE7QUFFRDs7R0FFRztBQUNRLHdDQUFnQyxHQUFHO0lBQzVDLHVCQUF1QixDQUFDLFNBQVM7SUFDakMsdUJBQXVCLENBQUMsT0FBTztJQUMvQix1QkFBdUIsQ0FBQyxXQUFXO0lBQ25DLHVCQUF1QixDQUFDLFFBQVE7SUFDaEMsdUJBQXVCLENBQUMsTUFBTTtJQUM5Qix1QkFBdUIsQ0FBQyxPQUFPO0NBQ2hDLENBQUM7QUFFRjs7R0FFRztBQUNRLG9DQUE0QixHQUFHO0lBQ3hDLG1CQUFtQixDQUFDLFlBQVk7SUFDaEMsbUJBQW1CLENBQUMsYUFBYTtJQUNqQyxtQkFBbUIsQ0FBQyxPQUFPO0NBQzVCLENBQUM7QUFFRiwwQ0FDSSx1QkFBZ0Q7SUFDbERDLE1BQU1BLENBQUNBLGNBQU9BLENBQUNBLHVCQUF1QkEsQ0FBQ0E7UUFDaENBLHVCQUF1QkEsS0FBS0EsdUJBQXVCQSxDQUFDQSxPQUFPQSxDQUFDQTtBQUNyRUEsQ0FBQ0E7QUFKZSx3Q0FBZ0MsbUNBSS9DLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1N0cmluZ1dyYXBwZXIsIG5vcm1hbGl6ZUJvb2wsIGlzQmxhbmt9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjaGFuZ2UgZGV0ZWN0b3IuXG4gKi9cbmV4cG9ydCBlbnVtIENoYW5nZURldGVjdG9yU3RhdGUge1xuICAvKipcbiAgICogYE5ldmVyQ2hlY2tlZGAgbWVhbnMgdGhhdCB0aGUgY2hhbmdlIGRldGVjdG9yIGhhcyBub3QgYmVlbiBjaGVja2VkIHlldCwgYW5kXG4gICAqIGluaXRpYWxpemF0aW9uIG1ldGhvZHMgc2hvdWxkIGJlIGNhbGxlZCBkdXJpbmcgZGV0ZWN0aW9uLlxuICAgKi9cbiAgTmV2ZXJDaGVja2VkLFxuXG4gIC8qKlxuICAgKiBgQ2hlY2tlZEJlZm9yZWAgbWVhbnMgdGhhdCB0aGUgY2hhbmdlIGRldGVjdG9yIGhhcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkIGF0IGxlYXN0XG4gICAqIG9uZSBkZXRlY3Rpb24gcHJldmlvdXNseS5cbiAgICovXG4gIENoZWNrZWRCZWZvcmUsXG5cbiAgLyoqXG4gICAqIGBFcnJvcmVkYCBtZWFucyB0aGF0IHRoZSBjaGFuZ2UgZGV0ZWN0b3IgZW5jb3VudGVyZWQgYW4gZXJyb3IgY2hlY2tpbmcgYSBiaW5kaW5nXG4gICAqIG9yIGNhbGxpbmcgYSBkaXJlY3RpdmUgbGlmZWN5Y2xlIG1ldGhvZCBhbmQgaXMgbm93IGluIGFuIGluY29uc2lzdGVudCBzdGF0ZS4gQ2hhbmdlXG4gICAqIGRldGVjdG9ycyBpbiB0aGlzIHN0YXRlIHdpbGwgbm8gbG9uZ2VyIGRldGVjdCBjaGFuZ2VzLlxuICAgKi9cbiAgRXJyb3JlZFxufVxuXG4vKipcbiAqIERlc2NyaWJlcyB3aXRoaW4gdGhlIGNoYW5nZSBkZXRlY3RvciB3aGljaCBzdHJhdGVneSB3aWxsIGJlIHVzZWQgdGhlIG5leHQgdGltZSBjaGFuZ2VcbiAqIGRldGVjdGlvbiBpcyB0cmlnZ2VyZWQuXG4gKi9cbmV4cG9ydCBlbnVtIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIGBDaGVja2VkT25jZWAgbWVhbnMgdGhhdCBhZnRlciBjYWxsaW5nIGRldGVjdENoYW5nZXMgdGhlIG1vZGUgb2YgdGhlIGNoYW5nZSBkZXRlY3RvclxuICAgKiB3aWxsIGJlY29tZSBgQ2hlY2tlZGAuXG4gICAqL1xuICBDaGVja09uY2UsXG5cbiAgLyoqXG4gICAqIGBDaGVja2VkYCBtZWFucyB0aGF0IHRoZSBjaGFuZ2UgZGV0ZWN0b3Igc2hvdWxkIGJlIHNraXBwZWQgdW50aWwgaXRzIG1vZGUgY2hhbmdlcyB0b1xuICAgKiBgQ2hlY2tPbmNlYC5cbiAgICovXG4gIENoZWNrZWQsXG5cbiAgLyoqXG4gICAqIGBDaGVja0Fsd2F5c2AgbWVhbnMgdGhhdCBhZnRlciBjYWxsaW5nIGRldGVjdENoYW5nZXMgdGhlIG1vZGUgb2YgdGhlIGNoYW5nZSBkZXRlY3RvclxuICAgKiB3aWxsIHJlbWFpbiBgQ2hlY2tBbHdheXNgLlxuICAgKi9cbiAgQ2hlY2tBbHdheXMsXG5cbiAgLyoqXG4gICAqIGBEZXRhY2hlZGAgbWVhbnMgdGhhdCB0aGUgY2hhbmdlIGRldGVjdG9yIHN1YiB0cmVlIGlzIG5vdCBhIHBhcnQgb2YgdGhlIG1haW4gdHJlZSBhbmRcbiAgICogc2hvdWxkIGJlIHNraXBwZWQuXG4gICAqL1xuICBEZXRhY2hlZCxcblxuICAvKipcbiAgICogYE9uUHVzaGAgbWVhbnMgdGhhdCB0aGUgY2hhbmdlIGRldGVjdG9yJ3MgbW9kZSB3aWxsIGJlIHNldCB0byBgQ2hlY2tPbmNlYCBkdXJpbmcgaHlkcmF0aW9uLlxuICAgKi9cbiAgT25QdXNoLFxuXG4gIC8qKlxuICAgKiBgRGVmYXVsdGAgbWVhbnMgdGhhdCB0aGUgY2hhbmdlIGRldGVjdG9yJ3MgbW9kZSB3aWxsIGJlIHNldCB0byBgQ2hlY2tBbHdheXNgIGR1cmluZyBoeWRyYXRpb24uXG4gICAqL1xuICBEZWZhdWx0LFxufVxuXG4vKipcbiAqIExpc3Qgb2YgcG9zc2libGUge0BsaW5rIENoYW5nZURldGVjdGlvblN0cmF0ZWd5fSB2YWx1ZXMuXG4gKi9cbmV4cG9ydCB2YXIgQ0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWV9WQUxVRVMgPSBbXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkNoZWNrT25jZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuQ2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuQ2hlY2tBbHdheXMsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRldGFjaGVkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHRcbl07XG5cbi8qKlxuICogTGlzdCBvZiBwb3NzaWJsZSB7QGxpbmsgQ2hhbmdlRGV0ZWN0b3JTdGF0ZX0gdmFsdWVzLlxuICovXG5leHBvcnQgdmFyIENIQU5HRV9ERVRFQ1RPUl9TVEFURV9WQUxVRVMgPSBbXG4gIENoYW5nZURldGVjdG9yU3RhdGUuTmV2ZXJDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3RvclN0YXRlLkNoZWNrZWRCZWZvcmUsXG4gIENoYW5nZURldGVjdG9yU3RhdGUuRXJyb3JlZFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGVmYXVsdENoYW5nZURldGVjdGlvblN0cmF0ZWd5KFxuICAgIGNoYW5nZURldGVjdGlvblN0cmF0ZWd5OiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNCbGFuayhjaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSkgfHxcbiAgICAgICAgIGNoYW5nZURldGVjdGlvblN0cmF0ZWd5ID09PSBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0O1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar constants_1 = require('./constants');\r\nvar DirectiveIndex = (function () {\r\n function DirectiveIndex(elementIndex, directiveIndex) {\r\n this.elementIndex = elementIndex;\r\n this.directiveIndex = directiveIndex;\r\n }\r\n Object.defineProperty(DirectiveIndex.prototype, \"name\", {\r\n get: function () { return this.elementIndex + \"_\" + this.directiveIndex; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DirectiveIndex;\r\n})();\r\nexports.DirectiveIndex = DirectiveIndex;\r\nvar DirectiveRecord = (function () {\r\n function DirectiveRecord(_a) {\r\n var _b = _a === void 0 ? {} : _a, directiveIndex = _b.directiveIndex, callAfterContentInit = _b.callAfterContentInit, callAfterContentChecked = _b.callAfterContentChecked, callAfterViewInit = _b.callAfterViewInit, callAfterViewChecked = _b.callAfterViewChecked, callOnChanges = _b.callOnChanges, callDoCheck = _b.callDoCheck, callOnInit = _b.callOnInit, callOnDestroy = _b.callOnDestroy, changeDetection = _b.changeDetection, outputs = _b.outputs;\r\n this.directiveIndex = directiveIndex;\r\n this.callAfterContentInit = lang_1.normalizeBool(callAfterContentInit);\r\n this.callAfterContentChecked = lang_1.normalizeBool(callAfterContentChecked);\r\n this.callOnChanges = lang_1.normalizeBool(callOnChanges);\r\n this.callAfterViewInit = lang_1.normalizeBool(callAfterViewInit);\r\n this.callAfterViewChecked = lang_1.normalizeBool(callAfterViewChecked);\r\n this.callDoCheck = lang_1.normalizeBool(callDoCheck);\r\n this.callOnInit = lang_1.normalizeBool(callOnInit);\r\n this.callOnDestroy = lang_1.normalizeBool(callOnDestroy);\r\n this.changeDetection = changeDetection;\r\n this.outputs = outputs;\r\n }\r\n DirectiveRecord.prototype.isDefaultChangeDetection = function () {\r\n return constants_1.isDefaultChangeDetectionStrategy(this.changeDetection);\r\n };\r\n return DirectiveRecord;\r\n})();\r\nexports.DirectiveRecord = DirectiveRecord;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlX3JlY29yZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vZGlyZWN0aXZlX3JlY29yZC50cyJdLCJuYW1lcyI6WyJEaXJlY3RpdmVJbmRleCIsIkRpcmVjdGl2ZUluZGV4LmNvbnN0cnVjdG9yIiwiRGlyZWN0aXZlSW5kZXgubmFtZSIsIkRpcmVjdGl2ZVJlY29yZCIsIkRpcmVjdGl2ZVJlY29yZC5jb25zdHJ1Y3RvciIsIkRpcmVjdGl2ZVJlY29yZC5pc0RlZmF1bHRDaGFuZ2VEZXRlY3Rpb24iXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFvRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQy9FLDBCQUF3RSxhQUFhLENBQUMsQ0FBQTtBQUV0RjtJQUNFQSx3QkFBbUJBLFlBQW9CQSxFQUFTQSxjQUFzQkE7UUFBbkRDLGlCQUFZQSxHQUFaQSxZQUFZQSxDQUFRQTtRQUFTQSxtQkFBY0EsR0FBZEEsY0FBY0EsQ0FBUUE7SUFBR0EsQ0FBQ0E7SUFFMUVELHNCQUFJQSxnQ0FBSUE7YUFBUkEsY0FBYUUsTUFBTUEsQ0FBSUEsSUFBSUEsQ0FBQ0EsWUFBWUEsU0FBSUEsSUFBSUEsQ0FBQ0EsY0FBZ0JBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUY7SUFDdEVBLHFCQUFDQTtBQUFEQSxDQUFDQSxBQUpELElBSUM7QUFKWSxzQkFBYyxpQkFJMUIsQ0FBQTtBQUVEO0lBY0VHLHlCQUFZQSxFQWNOQTtpQ0FBRkMsRUFBRUEsT0FkT0EsY0FBY0Esc0JBQUVBLG9CQUFvQkEsNEJBQUVBLHVCQUF1QkEsK0JBQUVBLGlCQUFpQkEseUJBQ2hGQSxvQkFBb0JBLDRCQUFFQSxhQUFhQSxxQkFBRUEsV0FBV0EsbUJBQUVBLFVBQVVBLGtCQUFFQSxhQUFhQSxxQkFDM0VBLGVBQWVBLHVCQUFFQSxPQUFPQTtRQWFuQ0EsSUFBSUEsQ0FBQ0EsY0FBY0EsR0FBR0EsY0FBY0EsQ0FBQ0E7UUFDckNBLElBQUlBLENBQUNBLG9CQUFvQkEsR0FBR0Esb0JBQWFBLENBQUNBLG9CQUFvQkEsQ0FBQ0EsQ0FBQ0E7UUFDaEVBLElBQUlBLENBQUNBLHVCQUF1QkEsR0FBR0Esb0JBQWFBLENBQUNBLHVCQUF1QkEsQ0FBQ0EsQ0FBQ0E7UUFDdEVBLElBQUlBLENBQUNBLGFBQWFBLEdBQUdBLG9CQUFhQSxDQUFDQSxhQUFhQSxDQUFDQSxDQUFDQTtRQUNsREEsSUFBSUEsQ0FBQ0EsaUJBQWlCQSxHQUFHQSxvQkFBYUEsQ0FBQ0EsaUJBQWlCQSxDQUFDQSxDQUFDQTtRQUMxREEsSUFBSUEsQ0FBQ0Esb0JBQW9CQSxHQUFHQSxvQkFBYUEsQ0FBQ0Esb0JBQW9CQSxDQUFDQSxDQUFDQTtRQUNoRUEsSUFBSUEsQ0FBQ0EsV0FBV0EsR0FBR0Esb0JBQWFBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBO1FBQzlDQSxJQUFJQSxDQUFDQSxVQUFVQSxHQUFHQSxvQkFBYUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsQ0FBQ0E7UUFDNUNBLElBQUlBLENBQUNBLGFBQWFBLEdBQUdBLG9CQUFhQSxDQUFDQSxhQUFhQSxDQUFDQSxDQUFDQTtRQUNsREEsSUFBSUEsQ0FBQ0EsZUFBZUEsR0FBR0EsZUFBZUEsQ0FBQ0E7UUFDdkNBLElBQUlBLENBQUNBLE9BQU9BLEdBQUdBLE9BQU9BLENBQUNBO0lBQ3pCQSxDQUFDQTtJQUVERCxrREFBd0JBLEdBQXhCQTtRQUNFRSxNQUFNQSxDQUFDQSw0Q0FBZ0NBLENBQUNBLElBQUlBLENBQUNBLGVBQWVBLENBQUNBLENBQUNBO0lBQ2hFQSxDQUFDQTtJQUNIRixzQkFBQ0E7QUFBREEsQ0FBQ0EsQUE3Q0QsSUE2Q0M7QUE3Q1ksdUJBQWUsa0JBNkMzQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTdHJpbmdXcmFwcGVyLCBub3JtYWxpemVCb29sLCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtpc0RlZmF1bHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3l9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIERpcmVjdGl2ZUluZGV4IHtcbiAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRJbmRleDogbnVtYmVyLCBwdWJsaWMgZGlyZWN0aXZlSW5kZXg6IG51bWJlcikge31cblxuICBnZXQgbmFtZSgpIHsgcmV0dXJuIGAke3RoaXMuZWxlbWVudEluZGV4fV8ke3RoaXMuZGlyZWN0aXZlSW5kZXh9YDsgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlyZWN0aXZlUmVjb3JkIHtcbiAgZGlyZWN0aXZlSW5kZXg6IERpcmVjdGl2ZUluZGV4O1xuICBjYWxsQWZ0ZXJDb250ZW50SW5pdDogYm9vbGVhbjtcbiAgY2FsbEFmdGVyQ29udGVudENoZWNrZWQ6IGJvb2xlYW47XG4gIGNhbGxBZnRlclZpZXdJbml0OiBib29sZWFuO1xuICBjYWxsQWZ0ZXJWaWV3Q2hlY2tlZDogYm9vbGVhbjtcbiAgY2FsbE9uQ2hhbmdlczogYm9vbGVhbjtcbiAgY2FsbERvQ2hlY2s6IGJvb2xlYW47XG4gIGNhbGxPbkluaXQ6IGJvb2xlYW47XG4gIGNhbGxPbkRlc3Ryb3k6IGJvb2xlYW47XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3k7XG4gIC8vIGFycmF5IG9mIFtlbWl0dGVyIHByb3BlcnR5IG5hbWUsIGV2ZW50TmFtZV1cbiAgb3V0cHV0czogc3RyaW5nW11bXTtcblxuICBjb25zdHJ1Y3Rvcih7ZGlyZWN0aXZlSW5kZXgsIGNhbGxBZnRlckNvbnRlbnRJbml0LCBjYWxsQWZ0ZXJDb250ZW50Q2hlY2tlZCwgY2FsbEFmdGVyVmlld0luaXQsXG4gICAgICAgICAgICAgICBjYWxsQWZ0ZXJWaWV3Q2hlY2tlZCwgY2FsbE9uQ2hhbmdlcywgY2FsbERvQ2hlY2ssIGNhbGxPbkluaXQsIGNhbGxPbkRlc3Ryb3ksXG4gICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3Rpb24sIG91dHB1dHN9OiB7XG4gICAgZGlyZWN0aXZlSW5kZXg/OiBEaXJlY3RpdmVJbmRleCxcbiAgICBjYWxsQWZ0ZXJDb250ZW50SW5pdD86IGJvb2xlYW4sXG4gICAgY2FsbEFmdGVyQ29udGVudENoZWNrZWQ/OiBib29sZWFuLFxuICAgIGNhbGxBZnRlclZpZXdJbml0PzogYm9vbGVhbixcbiAgICBjYWxsQWZ0ZXJWaWV3Q2hlY2tlZD86IGJvb2xlYW4sXG4gICAgY2FsbE9uQ2hhbmdlcz86IGJvb2xlYW4sXG4gICAgY2FsbERvQ2hlY2s/OiBib29sZWFuLFxuICAgIGNhbGxPbkluaXQ/OiBib29sZWFuLFxuICAgIGNhbGxPbkRlc3Ryb3k/OiBib29sZWFuLFxuICAgIGNoYW5nZURldGVjdGlvbj86IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIG91dHB1dHM/OiBzdHJpbmdbXVtdXG4gIH0gPSB7fSkge1xuICAgIHRoaXMuZGlyZWN0aXZlSW5kZXggPSBkaXJlY3RpdmVJbmRleDtcbiAgICB0aGlzLmNhbGxBZnRlckNvbnRlbnRJbml0ID0gbm9ybWFsaXplQm9vbChjYWxsQWZ0ZXJDb250ZW50SW5pdCk7XG4gICAgdGhpcy5jYWxsQWZ0ZXJDb250ZW50Q2hlY2tlZCA9IG5vcm1hbGl6ZUJvb2woY2FsbEFmdGVyQ29udGVudENoZWNrZWQpO1xuICAgIHRoaXMuY2FsbE9uQ2hhbmdlcyA9IG5vcm1hbGl6ZUJvb2woY2FsbE9uQ2hhbmdlcyk7XG4gICAgdGhpcy5jYWxsQWZ0ZXJWaWV3SW5pdCA9IG5vcm1hbGl6ZUJvb2woY2FsbEFmdGVyVmlld0luaXQpO1xuICAgIHRoaXMuY2FsbEFmdGVyVmlld0NoZWNrZWQgPSBub3JtYWxpemVCb29sKGNhbGxBZnRlclZpZXdDaGVja2VkKTtcbiAgICB0aGlzLmNhbGxEb0NoZWNrID0gbm9ybWFsaXplQm9vbChjYWxsRG9DaGVjayk7XG4gICAgdGhpcy5jYWxsT25Jbml0ID0gbm9ybWFsaXplQm9vbChjYWxsT25Jbml0KTtcbiAgICB0aGlzLmNhbGxPbkRlc3Ryb3kgPSBub3JtYWxpemVCb29sKGNhbGxPbkRlc3Ryb3kpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uID0gY2hhbmdlRGV0ZWN0aW9uO1xuICAgIHRoaXMub3V0cHV0cyA9IG91dHB1dHM7XG4gIH1cblxuICBpc0RlZmF1bHRDaGFuZ2VEZXRlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzRGVmYXVsdENoYW5nZURldGVjdGlvblN0cmF0ZWd5KHRoaXMuY2hhbmdlRGV0ZWN0aW9uKTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar constants_1 = require('./constants');\r\nvar pipe_lifecycle_reflector_1 = require('./pipe_lifecycle_reflector');\r\nvar binding_record_1 = require('./binding_record');\r\nvar directive_record_1 = require('./directive_record');\r\n/**\r\n * Indicates that the result of a {@link PipeMetadata} transformation has changed even though the\r\n * reference\r\n * has not changed.\r\n *\r\n * The wrapped value will be unwrapped by change detection, and the unwrapped value will be stored.\r\n *\r\n * Example:\r\n *\r\n * ```\r\n * if (this._latestValue === this._latestReturnedValue) {\r\n * return this._latestReturnedValue;\r\n * } else {\r\n * this._latestReturnedValue = this._latestValue;\r\n * return WrappedValue.wrap(this._latestValue); // this will force update\r\n * }\r\n * ```\r\n */\r\nvar WrappedValue = (function () {\r\n function WrappedValue(wrapped) {\r\n this.wrapped = wrapped;\r\n }\r\n WrappedValue.wrap = function (value) {\r\n var w = _wrappedValues[_wrappedIndex++ % 5];\r\n w.wrapped = value;\r\n return w;\r\n };\r\n return WrappedValue;\r\n})();\r\nexports.WrappedValue = WrappedValue;\r\nvar _wrappedValues = [\r\n new WrappedValue(null),\r\n new WrappedValue(null),\r\n new WrappedValue(null),\r\n new WrappedValue(null),\r\n new WrappedValue(null)\r\n];\r\nvar _wrappedIndex = 0;\r\n/**\r\n * Represents a basic change from a previous to a new value.\r\n */\r\nvar SimpleChange = (function () {\r\n function SimpleChange(previousValue, currentValue) {\r\n this.previousValue = previousValue;\r\n this.currentValue = currentValue;\r\n }\r\n /**\r\n * Check whether the new value is the first value assigned.\r\n */\r\n SimpleChange.prototype.isFirstChange = function () { return this.previousValue === ChangeDetectionUtil.uninitialized; };\r\n return SimpleChange;\r\n})();\r\nexports.SimpleChange = SimpleChange;\r\nfunction _simpleChange(previousValue, currentValue) {\r\n return new SimpleChange(previousValue, currentValue);\r\n}\r\n/* tslint:disable:requireParameterType */\r\nvar ChangeDetectionUtil = (function () {\r\n function ChangeDetectionUtil() {\r\n }\r\n ChangeDetectionUtil.arrayFn0 = function () { return []; };\r\n ChangeDetectionUtil.arrayFn1 = function (a1) { return [a1]; };\r\n ChangeDetectionUtil.arrayFn2 = function (a1, a2) { return [a1, a2]; };\r\n ChangeDetectionUtil.arrayFn3 = function (a1, a2, a3) { return [a1, a2, a3]; };\r\n ChangeDetectionUtil.arrayFn4 = function (a1, a2, a3, a4) { return [a1, a2, a3, a4]; };\r\n ChangeDetectionUtil.arrayFn5 = function (a1, a2, a3, a4, a5) { return [a1, a2, a3, a4, a5]; };\r\n ChangeDetectionUtil.arrayFn6 = function (a1, a2, a3, a4, a5, a6) { return [a1, a2, a3, a4, a5, a6]; };\r\n ChangeDetectionUtil.arrayFn7 = function (a1, a2, a3, a4, a5, a6, a7) { return [a1, a2, a3, a4, a5, a6, a7]; };\r\n ChangeDetectionUtil.arrayFn8 = function (a1, a2, a3, a4, a5, a6, a7, a8) {\r\n return [a1, a2, a3, a4, a5, a6, a7, a8];\r\n };\r\n ChangeDetectionUtil.arrayFn9 = function (a1, a2, a3, a4, a5, a6, a7, a8, a9) {\r\n return [a1, a2, a3, a4, a5, a6, a7, a8, a9];\r\n };\r\n ChangeDetectionUtil.operation_negate = function (value) { return !value; };\r\n ChangeDetectionUtil.operation_add = function (left, right) { return left + right; };\r\n ChangeDetectionUtil.operation_subtract = function (left, right) { return left - right; };\r\n ChangeDetectionUtil.operation_multiply = function (left, right) { return left * right; };\r\n ChangeDetectionUtil.operation_divide = function (left, right) { return left / right; };\r\n ChangeDetectionUtil.operation_remainder = function (left, right) { return left % right; };\r\n ChangeDetectionUtil.operation_equals = function (left, right) { return left == right; };\r\n ChangeDetectionUtil.operation_not_equals = function (left, right) { return left != right; };\r\n ChangeDetectionUtil.operation_identical = function (left, right) { return left === right; };\r\n ChangeDetectionUtil.operation_not_identical = function (left, right) { return left !== right; };\r\n ChangeDetectionUtil.operation_less_then = function (left, right) { return left < right; };\r\n ChangeDetectionUtil.operation_greater_then = function (left, right) { return left > right; };\r\n ChangeDetectionUtil.operation_less_or_equals_then = function (left, right) { return left <= right; };\r\n ChangeDetectionUtil.operation_greater_or_equals_then = function (left, right) { return left >= right; };\r\n ChangeDetectionUtil.cond = function (cond, trueVal, falseVal) { return cond ? trueVal : falseVal; };\r\n ChangeDetectionUtil.mapFn = function (keys) {\r\n function buildMap(values) {\r\n var res = collection_1.StringMapWrapper.create();\r\n for (var i = 0; i < keys.length; ++i) {\r\n collection_1.StringMapWrapper.set(res, keys[i], values[i]);\r\n }\r\n return res;\r\n }\r\n switch (keys.length) {\r\n case 0:\r\n return function () { return []; };\r\n case 1:\r\n return function (a1) { return buildMap([a1]); };\r\n case 2:\r\n return function (a1, a2) { return buildMap([a1, a2]); };\r\n case 3:\r\n return function (a1, a2, a3) { return buildMap([a1, a2, a3]); };\r\n case 4:\r\n return function (a1, a2, a3, a4) { return buildMap([a1, a2, a3, a4]); };\r\n case 5:\r\n return function (a1, a2, a3, a4, a5) { return buildMap([a1, a2, a3, a4, a5]); };\r\n case 6:\r\n return function (a1, a2, a3, a4, a5, a6) { return buildMap([a1, a2, a3, a4, a5, a6]); };\r\n case 7:\r\n return function (a1, a2, a3, a4, a5, a6, a7) { return buildMap([a1, a2, a3, a4, a5, a6, a7]); };\r\n case 8:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8) { return buildMap([a1, a2, a3, a4, a5, a6, a7, a8]); };\r\n case 9:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9) {\r\n return buildMap([a1, a2, a3, a4, a5, a6, a7, a8, a9]);\r\n };\r\n default:\r\n throw new exceptions_1.BaseException(\"Does not support literal maps with more than 9 elements\");\r\n }\r\n };\r\n ChangeDetectionUtil.keyedAccess = function (obj, args) { return obj[args[0]]; };\r\n ChangeDetectionUtil.unwrapValue = function (value) {\r\n if (value instanceof WrappedValue) {\r\n return value.wrapped;\r\n }\r\n else {\r\n return value;\r\n }\r\n };\r\n ChangeDetectionUtil.changeDetectionMode = function (strategy) {\r\n return constants_1.isDefaultChangeDetectionStrategy(strategy) ? constants_1.ChangeDetectionStrategy.CheckAlways :\r\n constants_1.ChangeDetectionStrategy.CheckOnce;\r\n };\r\n ChangeDetectionUtil.simpleChange = function (previousValue, currentValue) {\r\n return _simpleChange(previousValue, currentValue);\r\n };\r\n ChangeDetectionUtil.isValueBlank = function (value) { return lang_1.isBlank(value); };\r\n ChangeDetectionUtil.s = function (value) { return lang_1.isPresent(value) ? \"\" + value : ''; };\r\n ChangeDetectionUtil.protoByIndex = function (protos, selfIndex) {\r\n return selfIndex < 1 ?\r\n null :\r\n protos[selfIndex - 1]; // self index is shifted by one because of context\r\n };\r\n ChangeDetectionUtil.callPipeOnDestroy = function (selectedPipe) {\r\n if (pipe_lifecycle_reflector_1.implementsOnDestroy(selectedPipe.pipe)) {\r\n selectedPipe.pipe.ngOnDestroy();\r\n }\r\n };\r\n ChangeDetectionUtil.bindingTarget = function (mode, elementIndex, name, unit, debug) {\r\n return new binding_record_1.BindingTarget(mode, elementIndex, name, unit, debug);\r\n };\r\n ChangeDetectionUtil.directiveIndex = function (elementIndex, directiveIndex) {\r\n return new directive_record_1.DirectiveIndex(elementIndex, directiveIndex);\r\n };\r\n ChangeDetectionUtil.looseNotIdentical = function (a, b) { return !lang_1.looseIdentical(a, b); };\r\n ChangeDetectionUtil.devModeEqual = function (a, b) {\r\n if (collection_1.isListLikeIterable(a) && collection_1.isListLikeIterable(b)) {\r\n return collection_1.areIterablesEqual(a, b, ChangeDetectionUtil.devModeEqual);\r\n }\r\n else if (!collection_1.isListLikeIterable(a) && !lang_1.isPrimitive(a) && !collection_1.isListLikeIterable(b) &&\r\n !lang_1.isPrimitive(b)) {\r\n return true;\r\n }\r\n else {\r\n return lang_1.looseIdentical(a, b);\r\n }\r\n };\r\n ChangeDetectionUtil.uninitialized = lang_1.CONST_EXPR(new Object());\r\n return ChangeDetectionUtil;\r\n})();\r\nexports.ChangeDetectionUtil = ChangeDetectionUtil;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RldGVjdGlvbl91dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uX3V0aWwudHMiXSwibmFtZXMiOlsiV3JhcHBlZFZhbHVlIiwiV3JhcHBlZFZhbHVlLmNvbnN0cnVjdG9yIiwiV3JhcHBlZFZhbHVlLndyYXAiLCJTaW1wbGVDaGFuZ2UiLCJTaW1wbGVDaGFuZ2UuY29uc3RydWN0b3IiLCJTaW1wbGVDaGFuZ2UuaXNGaXJzdENoYW5nZSIsIl9zaW1wbGVDaGFuZ2UiLCJDaGFuZ2VEZXRlY3Rpb25VdGlsIiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5jb25zdHJ1Y3RvciIsIkNoYW5nZURldGVjdGlvblV0aWwuYXJyYXlGbjAiLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLmFycmF5Rm4xIiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hcnJheUZuMiIsIkNoYW5nZURldGVjdGlvblV0aWwuYXJyYXlGbjMiLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLmFycmF5Rm40IiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hcnJheUZuNSIsIkNoYW5nZURldGVjdGlvblV0aWwuYXJyYXlGbjYiLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLmFycmF5Rm43IiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5hcnJheUZuOCIsIkNoYW5nZURldGVjdGlvblV0aWwuYXJyYXlGbjkiLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLm9wZXJhdGlvbl9uZWdhdGUiLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLm9wZXJhdGlvbl9hZGQiLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLm9wZXJhdGlvbl9zdWJ0cmFjdCIsIkNoYW5nZURldGVjdGlvblV0aWwub3BlcmF0aW9uX211bHRpcGx5IiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5vcGVyYXRpb25fZGl2aWRlIiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5vcGVyYXRpb25fcmVtYWluZGVyIiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5vcGVyYXRpb25fZXF1YWxzIiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5vcGVyYXRpb25fbm90X2VxdWFscyIsIkNoYW5nZURldGVjdGlvblV0aWwub3BlcmF0aW9uX2lkZW50aWNhbCIsIkNoYW5nZURldGVjdGlvblV0aWwub3BlcmF0aW9uX25vdF9pZGVudGljYWwiLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLm9wZXJhdGlvbl9sZXNzX3RoZW4iLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLm9wZXJhdGlvbl9ncmVhdGVyX3RoZW4iLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLm9wZXJhdGlvbl9sZXNzX29yX2VxdWFsc190aGVuIiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5vcGVyYXRpb25fZ3JlYXRlcl9vcl9lcXVhbHNfdGhlbiIsIkNoYW5nZURldGVjdGlvblV0aWwuY29uZCIsIkNoYW5nZURldGVjdGlvblV0aWwubWFwRm4iLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLm1hcEZuLmJ1aWxkTWFwIiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5rZXllZEFjY2VzcyIsIkNoYW5nZURldGVjdGlvblV0aWwudW53cmFwVmFsdWUiLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLmNoYW5nZURldGVjdGlvbk1vZGUiLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLnNpbXBsZUNoYW5nZSIsIkNoYW5nZURldGVjdGlvblV0aWwuaXNWYWx1ZUJsYW5rIiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5zIiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5wcm90b0J5SW5kZXgiLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLmNhbGxQaXBlT25EZXN0cm95IiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5iaW5kaW5nVGFyZ2V0IiwiQ2hhbmdlRGV0ZWN0aW9uVXRpbC5kaXJlY3RpdmVJbmRleCIsIkNoYW5nZURldGVjdGlvblV0aWwubG9vc2VOb3RJZGVudGljYWwiLCJDaGFuZ2VEZXRlY3Rpb25VdGlsLmRldk1vZGVFcXVhbCJdLCJtYXBwaW5ncyI6IkFBQUEs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LEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLElBQVdPLE1BQU1BLENBQUNBLENBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQ3BFUCw0QkFBUUEsR0FBZkEsVUFBZ0JBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLElBQVdRLE1BQU1BLENBQUNBLENBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQzVFUiw0QkFBUUEsR0FBZkEsVUFBZ0JBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLElBQVdTLE1BQU1BLENBQUNBLENBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQ3BGVCw0QkFBUUEsR0FBZkEsVUFBZ0JBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBO1FBQzVDVSxNQUFNQSxDQUFDQSxDQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxDQUFDQSxDQUFDQTtJQUMxQ0EsQ0FBQ0E7SUFDTVYsNEJBQVFBLEdBQWZBLFVBQWdCQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFF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QkEsQ0FBQ0E7WUFDaERBLEtBQUtBLENBQUNBO2dCQUNKQSxNQUFNQSxDQUFDQSxVQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxJQUFLQSxPQUFBQSxRQUFRQSxDQUFDQSxDQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxDQUFDQSxDQUFDQSxFQUExQkEsQ0FBMEJBLENBQUNBO1lBQ3hEQSxLQUFLQSxDQUFDQTtnQkFDSkEsTUFBTUEsQ0FBQ0EsVUFBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsSUFBS0EsT0FBQUEsUUFBUUEsQ0FBQ0EsQ0FBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsRUFBOUJBLENBQThCQSxDQUFDQTtZQUNoRUEsS0FBS0EsQ0FBQ0E7Z0JBQ0pBLE1BQU1BLENBQUNBLFVBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLElBQUtBLE9BQUFBLFFBQVFBLENBQUNBLENBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBLEVBQWxDQSxDQUFrQ0EsQ0FBQ0E7WUFDeEVBLEtBQUtBLENBQUNBO2dCQUNKQSxNQUFNQSxDQUFDQSxVQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxJQUFLQSxPQUFBQSxRQUFRQSxDQUFDQSxDQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxDQUFDQSxDQUFDQSxFQUF0Q0Es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QkFBV0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsK0JBQWtCQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNuRUEsQ0FBQ0Esa0JBQVdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzNCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtRQUVkQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUNOQSxNQUFNQSxDQUFDQSxxQkFBY0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDOUJBLENBQUNBO0lBQ0hBLENBQUNBO0lBOUhNeEMsaUNBQWFBLEdBQVdBLGlCQUFVQSxDQUFTQSxJQUFJQSxNQUFNQSxFQUFFQSxDQUFDQSxDQUFDQTtJQStIbEVBLDBCQUFDQTtBQUFEQSxDQUFDQSxBQWhJRCxJQWdJQztBQWhJWSwyQkFBbUIsc0JBZ0kvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ09OU1RfRVhQUixcbiAgaXNQcmVzZW50LFxuICBpc0JsYW5rLFxuICBUeXBlLFxuICBTdHJpbmdXcmFwcGVyLFxuICBsb29zZUlkZW50aWNhbCxcbiAgaXNQcmltaXRpdmVcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7XG4gIExpc3RXcmFwcGVyLFxuICBNYXBXcmFwcGVyLFxuICBTdHJpbmdNYXBXcmFwcGVyLFxuICBpc0xpc3RMaWtlSXRlcmFibGUsXG4gIGFyZUl0ZXJhYmxlc0VxdWFsXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1Byb3RvUmVjb3JkfSBmcm9tICcuL3Byb3RvX3JlY29yZCc7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBpc0RlZmF1bHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneX0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtpbXBsZW1lbnRzT25EZXN0cm95fSBmcm9tICcuL3BpcGVfbGlmZWN5Y2xlX3JlZmxlY3Rvcic7XG5pbXBvcnQge0JpbmRpbmdUYXJnZXR9IGZyb20gJy4vYmluZGluZ19yZWNvcmQnO1xuaW1wb3J0IHtEaXJlY3RpdmVJbmRleH0gZnJvbSAnLi9kaXJlY3RpdmVfcmVjb3JkJztcbmltcG9ydCB7U2VsZWN0ZWRQaXBlfSBmcm9tICcuL3BpcGVzJztcblxuXG4vKipcbiAqIEluZGljYXRlcyB0aGF0IHRoZSByZXN1bHQgb2YgYSB7QGxpbmsgUGlwZU1ldGFkYXRhfSB0cmFuc2Zvcm1hdGlvbiBoYXMgY2hhbmdlZCBldmVuIHRob3VnaCB0aGVcbiAqIHJlZmVyZW5jZVxuICogaGFzIG5vdCBjaGFuZ2VkLlxuICpcbiAqIFRoZSB3cmFwcGVkIHZhbHVlIHdpbGwgYmUgdW53cmFwcGVkIGJ5IGNoYW5nZSBkZXRlY3Rpb24sIGFuZCB0aGUgdW53cmFwcGVkIHZhbHVlIHdpbGwgYmUgc3RvcmVkLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBgXG4gKiBpZiAodGhpcy5fbGF0ZXN0VmFsdWUgPT09IHRoaXMuX2xhdGVzdFJldHVybmVkVmFsdWUpIHtcbiAqICAgIHJldHVybiB0aGlzLl9sYXRlc3RSZXR1cm5lZFZhbHVlO1xuICogIH0gZWxzZSB7XG4gKiAgICB0aGlzLl9sYXRlc3RSZXR1cm5lZFZhbHVlID0gdGhpcy5fbGF0ZXN0VmFsdWU7XG4gKiAgICByZXR1cm4gV3JhcHBlZFZhbHVlLndyYXAodGhpcy5fbGF0ZXN0VmFsdWUpOyAvLyB0aGlzIHdpbGwgZm9yY2UgdXBkYXRlXG4gKiAgfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBXcmFwcGVkVmFsdWUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgd3JhcHBlZDogYW55KSB7fVxuXG4gIHN0YXRpYyB3cmFwKHZhbHVlOiBhbnkpOiBXcmFwcGVkVmFsdWUge1xuICAgIHZhciB3ID0gX3dyYXBwZWRWYWx1ZXNbX3dyYXBwZWRJbmRleCsrICUgNV07XG4gICAgdy53cmFwcGVkID0gdmFsdWU7XG4gICAgcmV0dXJuIHc7XG4gIH1cbn1cblxudmFyIF93cmFwcGVkVmFsdWVzID0gW1xuICBuZXcgV3JhcHBlZFZhbHVlKG51bGwpLFxuICBuZXcgV3JhcHBlZFZhbHVlKG51bGwpLFxuICBuZXcgV3JhcHBlZFZhbHVlKG51bGwpLFxuICBuZXcgV3JhcHBlZFZhbHVlKG51bGwpLFxuICBuZXcgV3JhcHBlZFZhbHVlKG51bGwpXG5dO1xuXG52YXIgX3dyYXBwZWRJbmRleCA9IDA7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGJhc2ljIGNoYW5nZSBmcm9tIGEgcHJldmlvdXMgdG8gYSBuZXcgdmFsdWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBTaW1wbGVDaGFuZ2Uge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcHJldmlvdXNWYWx1ZTogYW55LCBwdWJsaWMgY3VycmVudFZhbHVlOiBhbnkpIHt9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIG5ldyB2YWx1ZSBpcyB0aGUgZmlyc3QgdmFsdWUgYXNzaWduZWQuXG4gICAqL1xuICBpc0ZpcnN0Q2hhbmdlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5wcmV2aW91c1ZhbHVlID09PSBDaGFuZ2VEZXRlY3Rpb25VdGlsLnVuaW5pdGlhbGl6ZWQ7IH1cbn1cblxuZnVuY3Rpb24gX3NpbXBsZUNoYW5nZShwcmV2aW91c1ZhbHVlLCBjdXJyZW50VmFsdWUpOiBTaW1wbGVDaGFuZ2Uge1xuICByZXR1cm4gbmV3IFNpbXBsZUNoYW5nZShwcmV2aW91c1ZhbHVlLCBjdXJyZW50VmFsdWUpO1xufVxuXG4vKiB0c2xpbnQ6ZGlzYWJsZTpyZXF1aXJlUGFyYW1ldGVyVHlwZSAqL1xuZXhwb3J0IGNsYXNzIENoYW5nZURldGVjdGlvblV0aWwge1xuICBzdGF0aWMgdW5pbml0aWFsaXplZDogT2JqZWN0ID0gQ09OU1RfRVhQUjxPYmplY3Q+KG5ldyBPYmplY3QoKSk7XG5cbiAgc3RhdGljIGFycmF5Rm4wKCk6IGFueVtdIHsgcmV0dXJuIFtdOyB9XG4gIHN0YXRpYyBhcnJheUZuMShhMSk6IGFueVtdIHsgcmV0dXJuIFthMV07IH1cbiAgc3RhdGljIGFycmF5Rm4yKGExLCBhMik6IGFueVtdIHsgcmV0dXJuIFthMSwgYTJdOyB9XG4gIHN0YXRpYyBhcnJheUZuMyhhMSwgYTIsIGEzKTogYW55W10geyByZXR1cm4gW2ExLCBhMiwgYTNdOyB9XG4gIHN0YXRpYyBhcnJheUZuNChhMSwgYTIsIGEzLCBhNCk6IGFueVtdIHsgcmV0dXJuIFthMSwgYTIsIGEzLCBhNF07IH1cbiAgc3RhdGljIGFycmF5Rm41KGExLCBhMiwgYTMsIGE0LCBhNSk6IGFueVtdIHsgcmV0dXJuIFthMSwgYTIsIGEzLCBhNCwgYTVdOyB9XG4gIHN0YXRpYyBhcnJheUZuNihhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTogYW55W10geyByZXR1cm4gW2ExLCBhMiwgYTMsIGE0LCBhNSwgYTZdOyB9XG4gIHN0YXRpYyBhcnJheUZuNyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk6IGFueVtdIHsgcmV0dXJuIFthMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhN107IH1cbiAgc3RhdGljIGFycmF5Rm44KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk6IGFueVtdIHtcbiAgICByZXR1cm4gW2ExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOF07XG4gIH1cbiAgc3RhdGljIGFycmF5Rm45KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOiBhbnlbXSB7XG4gICAgcmV0dXJuIFthMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5XTtcbiAgfVxuXG4gIHN0YXRpYyBvcGVyYXRpb25fbmVnYXRlKHZhbHVlKTogYW55IHsgcmV0dXJuICF2YWx1ZTsgfVxuICBzdGF0aWMgb3BlcmF0aW9uX2FkZChsZWZ0LCByaWdodCk6IGFueSB7IHJldHVybiBsZWZ0ICsgcmlnaHQ7IH1cbiAgc3RhdGljIG9wZXJhdGlvbl9zdWJ0cmFjdChsZWZ0LCByaWdodCk6IGFueSB7IHJldHVybiBsZWZ0IC0gcmlnaHQ7IH1cbiAgc3RhdGljIG9wZXJhdGlvbl9tdWx0aXBseShsZWZ0LCByaWdodCk6IGFueSB7IHJldHVybiBsZWZ0ICogcmlnaHQ7IH1cbiAgc3RhdGljIG9wZXJhdGlvbl9kaXZpZGUobGVmdCwgcmlnaHQpOiBhbnkgeyByZXR1cm4gbGVmdCAvIHJpZ2h0OyB9XG4gIHN0YXRpYyBvcGVyYXRpb25fcmVtYWluZGVyKGxlZnQsIHJpZ2h0KTogYW55IHsgcmV0dXJuIGxlZnQgJSByaWdodDsgfVxuICBzdGF0aWMgb3BlcmF0aW9uX2VxdWFscyhsZWZ0LCByaWdodCk6IGFueSB7IHJldHVybiBsZWZ0ID09IHJpZ2h0OyB9XG4gIHN0YXRpYyBvcGVyYXRpb25fbm90X2VxdWFscyhsZWZ0LCByaWdodCk6IGFueSB7IHJldHVybiBsZWZ0ICE9IHJpZ2h0OyB9XG4gIHN0YXRpYyBvcGVyYXRpb25faWRlbnRpY2FsKGxlZnQsIHJpZ2h0KTogYW55IHsgcmV0dXJuIGxlZnQgPT09IHJpZ2h0OyB9XG4gIHN0YXRpYyBvcGVyYXRpb25fbm90X2lkZW50aWNhbChsZWZ0LCByaWdodCk6IGFueSB7IHJldHVybiBsZWZ0ICE9PSByaWdodDsgfVxuICBzdGF0aWMgb3BlcmF0aW9uX2xlc3NfdGhlbihsZWZ0LCByaWdodCk6IGFueSB7IHJldHVybiBsZWZ0IDwgcmlnaHQ7IH1cbiAgc3RhdGljIG9wZXJhdGlvbl9ncmVhdGVyX3RoZW4obGVmdCwgcmlnaHQpOiBhbnkgeyByZXR1cm4gbGVmdCA+IHJpZ2h0OyB9XG4gIHN0YXRpYyBvcGVyYXRpb25fbGVzc19vcl9lcXVhbHNfdGhlbihsZWZ0LCByaWdodCk6IGFueSB7IHJldHVybiBsZWZ0IDw9IHJpZ2h0OyB9XG4gIHN0YXRpYyBvcGVyYXRpb25fZ3JlYXRlcl9vcl9lcXVhbHNfdGhlbihsZWZ0LCByaWdodCk6IGFueSB7IHJldHVybiBsZWZ0ID49IHJpZ2h0OyB9XG4gIHN0YXRpYyBjb25kKGNvbmQsIHRydWVWYWwsIGZhbHNlVmFsKTogYW55IHsgcmV0dXJuIGNvbmQgPyB0cnVlVmFsIDogZmFsc2VWYWw7IH1cblxuICBzdGF0aWMgbWFwRm4oa2V5czogYW55W10pOiBhbnkge1xuICAgIGZ1bmN0aW9uIGJ1aWxkTWFwKHZhbHVlcyk6IHtbazogLyphbnkqLyBzdHJpbmddOiBhbnl9IHtcbiAgICAgIHZhciByZXMgPSBTdHJpbmdNYXBXcmFwcGVyLmNyZWF0ZSgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIFN0cmluZ01hcFdyYXBwZXIuc2V0KHJlcywga2V5c1tpXSwgdmFsdWVzW2ldKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgc3dpdGNoIChrZXlzLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICByZXR1cm4gKCkgPT4gW107XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiAoYTEpID0+IGJ1aWxkTWFwKFthMV0pO1xuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gKGExLCBhMikgPT4gYnVpbGRNYXAoW2ExLCBhMl0pO1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gKGExLCBhMiwgYTMpID0+IGJ1aWxkTWFwKFthMSwgYTIsIGEzXSk7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHJldHVybiAoYTEsIGEyLCBhMywgYTQpID0+IGJ1aWxkTWFwKFthMSwgYTIsIGEzLCBhNF0pO1xuICAgICAgY2FzZSA1OlxuICAgICAgICByZXR1cm4gKGExLCBhMiwgYTMsIGE0LCBhNSkgPT4gYnVpbGRNYXAoW2ExLCBhMiwgYTMsIGE0LCBhNV0pO1xuICAgICAgY2FzZSA2OlxuICAgICAgICByZXR1cm4gKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpID0+IGJ1aWxkTWFwKFthMSwgYTIsIGEzLCBhNCwgYTUsIGE2XSk7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIHJldHVybiAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpID0+IGJ1aWxkTWFwKFthMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhN10pO1xuICAgICAgY2FzZSA4OlxuICAgICAgICByZXR1cm4gKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkgPT4gYnVpbGRNYXAoW2ExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOF0pO1xuICAgICAgY2FzZSA5OlxuICAgICAgICByZXR1cm4gKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpID0+XG4gICAgICAgICAgICAgICAgICAgYnVpbGRNYXAoW2ExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTldKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBEb2VzIG5vdCBzdXBwb3J0IGxpdGVyYWwgbWFwcyB3aXRoIG1vcmUgdGhhbiA5IGVsZW1lbnRzYCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGtleWVkQWNjZXNzKG9iaiwgYXJncyk6IGFueSB7IHJldHVybiBvYmpbYXJnc1swXV07IH1cblxuICBzdGF0aWMgdW53cmFwVmFsdWUodmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgV3JhcHBlZFZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUud3JhcHBlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjaGFuZ2VEZXRlY3Rpb25Nb2RlKHN0cmF0ZWd5OiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSk6IENoYW5nZURldGVjdGlvblN0cmF0ZWd5IHtcbiAgICByZXR1cm4gaXNEZWZhdWx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3koc3RyYXRlZ3kpID8gQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuQ2hlY2tBbHdheXMgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5DaGVja09uY2U7XG4gIH1cblxuICBzdGF0aWMgc2ltcGxlQ2hhbmdlKHByZXZpb3VzVmFsdWU6IGFueSwgY3VycmVudFZhbHVlOiBhbnkpOiBTaW1wbGVDaGFuZ2Uge1xuICAgIHJldHVybiBfc2ltcGxlQ2hhbmdlKHByZXZpb3VzVmFsdWUsIGN1cnJlbnRWYWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgaXNWYWx1ZUJsYW5rKHZhbHVlOiBhbnkpOiBib29sZWFuIHsgcmV0dXJuIGlzQmxhbmsodmFsdWUpOyB9XG5cbiAgc3RhdGljIHModmFsdWU6IGFueSk6IHN0cmluZyB7IHJldHVybiBpc1ByZXNlbnQodmFsdWUpID8gYCR7dmFsdWV9YCA6ICcnOyB9XG5cbiAgc3RhdGljIHByb3RvQnlJbmRleChwcm90b3M6IFByb3RvUmVjb3JkW10sIHNlbGZJbmRleDogbnVtYmVyKTogUHJvdG9SZWNvcmQge1xuICAgIHJldHVybiBzZWxmSW5kZXggPCAxID9cbiAgICAgICAgICAgICAgIG51bGwgOlxuICAgICAgICAgICAgICAgcHJvdG9zW3NlbGZJbmRleCAtIDFdOyAgLy8gc2VsZiBpbmRleCBpcyBzaGlmdGVkIGJ5IG9uZSBiZWNhdXNlIG9mIGNvbnRleHRcbiAgfVxuXG4gIHN0YXRpYyBjYWxsUGlwZU9uRGVzdHJveShzZWxlY3RlZFBpcGU6IFNlbGVjdGVkUGlwZSk6IHZvaWQge1xuICAgIGlmIChpbXBsZW1lbnRzT25EZXN0cm95KHNlbGVjdGVkUGlwZS5waXBlKSkge1xuICAgICAgKDxhbnk+c2VsZWN0ZWRQaXBlLnBpcGUpLm5nT25EZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGJpbmRpbmdUYXJnZXQobW9kZTogc3RyaW5nLCBlbGVtZW50SW5kZXg6IG51bWJlciwgbmFtZTogc3RyaW5nLCB1bml0OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgIGRlYnVnOiBzdHJpbmcpOiBCaW5kaW5nVGFyZ2V0IHtcbiAgICByZXR1cm4gbmV3IEJpbmRpbmdUYXJnZXQobW9kZSwgZWxlbWVudEluZGV4LCBuYW1lLCB1bml0LCBkZWJ1Zyk7XG4gIH1cblxuICBzdGF0aWMgZGlyZWN0aXZlSW5kZXgoZWxlbWVudEluZGV4OiBudW1iZXIsIGRpcmVjdGl2ZUluZGV4OiBudW1iZXIpOiBEaXJlY3RpdmVJbmRleCB7XG4gICAgcmV0dXJuIG5ldyBEaXJlY3RpdmVJbmRleChlbGVtZW50SW5kZXgsIGRpcmVjdGl2ZUluZGV4KTtcbiAgfVxuXG4gIHN0YXRpYyBsb29zZU5vdElkZW50aWNhbChhOiBhbnksIGI6IGFueSk6IGJvb2xlYW4geyByZXR1cm4gIWxvb3NlSWRlbnRpY2FsKGEsIGIpOyB9XG5cbiAgc3RhdGljIGRldk1vZGVFcXVhbChhOiBhbnksIGI6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChpc0xpc3RMaWtlSXRlcmFibGUoYSkgJiYgaXNMaXN0TGlrZUl0ZXJhYmxlKGIpKSB7XG4gICAgICByZXR1cm4gYXJlSXRlcmFibGVzRXF1YWwoYSwgYiwgQ2hhbmdlRGV0ZWN0aW9uVXRpbC5kZXZNb2RlRXF1YWwpO1xuXG4gICAgfSBlbHNlIGlmICghaXNMaXN0TGlrZUl0ZXJhYmxlKGEpICYmICFpc1ByaW1pdGl2ZShhKSAmJiAhaXNMaXN0TGlrZUl0ZXJhYmxlKGIpICYmXG4gICAgICAgICAgICAgICAhaXNQcmltaXRpdmUoYikpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsb29zZUlkZW50aWNhbChhLCBiKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var iterable_differs_1 = require('./differs/iterable_differs');\r\nvar default_iterable_differ_1 = require('./differs/default_iterable_differ');\r\nvar keyvalue_differs_1 = require('./differs/keyvalue_differs');\r\nvar default_keyvalue_differ_1 = require('./differs/default_keyvalue_differ');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar default_keyvalue_differ_2 = require('./differs/default_keyvalue_differ');\r\nexports.DefaultKeyValueDifferFactory = default_keyvalue_differ_2.DefaultKeyValueDifferFactory;\r\nexports.KeyValueChangeRecord = default_keyvalue_differ_2.KeyValueChangeRecord;\r\nvar default_iterable_differ_2 = require('./differs/default_iterable_differ');\r\nexports.DefaultIterableDifferFactory = default_iterable_differ_2.DefaultIterableDifferFactory;\r\nexports.CollectionChangeRecord = default_iterable_differ_2.CollectionChangeRecord;\r\nvar ast_1 = require('./parser/ast');\r\nexports.ASTWithSource = ast_1.ASTWithSource;\r\nexports.AST = ast_1.AST;\r\nexports.AstTransformer = ast_1.AstTransformer;\r\nexports.PropertyRead = ast_1.PropertyRead;\r\nexports.LiteralArray = ast_1.LiteralArray;\r\nexports.ImplicitReceiver = ast_1.ImplicitReceiver;\r\nvar lexer_1 = require('./parser/lexer');\r\nexports.Lexer = lexer_1.Lexer;\r\nvar parser_1 = require('./parser/parser');\r\nexports.Parser = parser_1.Parser;\r\nvar locals_1 = require('./parser/locals');\r\nexports.Locals = locals_1.Locals;\r\nvar exceptions_1 = require('./exceptions');\r\nexports.DehydratedException = exceptions_1.DehydratedException;\r\nexports.ExpressionChangedAfterItHasBeenCheckedException = exceptions_1.ExpressionChangedAfterItHasBeenCheckedException;\r\nexports.ChangeDetectionError = exceptions_1.ChangeDetectionError;\r\nvar interfaces_1 = require('./interfaces');\r\nexports.ChangeDetectorDefinition = interfaces_1.ChangeDetectorDefinition;\r\nexports.DebugContext = interfaces_1.DebugContext;\r\nexports.ChangeDetectorGenConfig = interfaces_1.ChangeDetectorGenConfig;\r\nvar constants_1 = require('./constants');\r\nexports.ChangeDetectionStrategy = constants_1.ChangeDetectionStrategy;\r\nexports.CHANGE_DETECTION_STRATEGY_VALUES = constants_1.CHANGE_DETECTION_STRATEGY_VALUES;\r\nvar proto_change_detector_1 = require('./proto_change_detector');\r\nexports.DynamicProtoChangeDetector = proto_change_detector_1.DynamicProtoChangeDetector;\r\nvar jit_proto_change_detector_1 = require('./jit_proto_change_detector');\r\nexports.JitProtoChangeDetector = jit_proto_change_detector_1.JitProtoChangeDetector;\r\nvar binding_record_1 = require('./binding_record');\r\nexports.BindingRecord = binding_record_1.BindingRecord;\r\nexports.BindingTarget = binding_record_1.BindingTarget;\r\nvar directive_record_1 = require('./directive_record');\r\nexports.DirectiveIndex = directive_record_1.DirectiveIndex;\r\nexports.DirectiveRecord = directive_record_1.DirectiveRecord;\r\nvar dynamic_change_detector_1 = require('./dynamic_change_detector');\r\nexports.DynamicChangeDetector = dynamic_change_detector_1.DynamicChangeDetector;\r\nvar change_detector_ref_1 = require('./change_detector_ref');\r\nexports.ChangeDetectorRef = change_detector_ref_1.ChangeDetectorRef;\r\nvar iterable_differs_2 = require('./differs/iterable_differs');\r\nexports.IterableDiffers = iterable_differs_2.IterableDiffers;\r\nvar keyvalue_differs_2 = require('./differs/keyvalue_differs');\r\nexports.KeyValueDiffers = keyvalue_differs_2.KeyValueDiffers;\r\nvar change_detection_util_1 = require('./change_detection_util');\r\nexports.WrappedValue = change_detection_util_1.WrappedValue;\r\nexports.SimpleChange = change_detection_util_1.SimpleChange;\r\n/**\r\n * Structural diffing for `Object`s and `Map`s.\r\n */\r\nexports.keyValDiff = lang_1.CONST_EXPR([lang_1.CONST_EXPR(new default_keyvalue_differ_1.DefaultKeyValueDifferFactory())]);\r\n/**\r\n * Structural diffing for `Iterable` types such as `Array`s.\r\n */\r\nexports.iterableDiff = lang_1.CONST_EXPR([lang_1.CONST_EXPR(new default_iterable_differ_1.DefaultIterableDifferFactory())]);\r\nexports.defaultIterableDiffers = lang_1.CONST_EXPR(new iterable_differs_1.IterableDiffers(exports.iterableDiff));\r\nexports.defaultKeyValueDiffers = lang_1.CONST_EXPR(new keyvalue_differs_1.KeyValueDiffers(exports.keyValDiff));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlX2RldGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vY2hhbmdlX2RldGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBcUQsNEJBQTRCLENBQUMsQ0FBQTtBQUNsRix3Q0FBMkMsbUNBQW1DLENBQUMsQ0FBQTtBQUMvRSxpQ0FBcUQsNEJBQTRCLENBQUMsQ0FBQTtBQUNsRix3Q0FHTyxtQ0FBbUMsQ0FBQyxDQUFBO0FBQzNDLHFCQUF5QiwwQkFBMEIsQ0FBQyxDQUFBO0FBRXBELHdDQUdPLG1DQUFtQyxDQUFDO0FBRnpDLDhGQUE0QjtBQUM1Qiw4RUFDeUM7QUFDM0Msd0NBR08sbUNBQW1DLENBQUM7QUFGekMsOEZBQTRCO0FBQzVCLGtGQUN5QztBQUMzQyxvQkFPTyxjQUFjLENBQUM7QUFOcEIsNENBQWE7QUFDYix3QkFBRztBQUNILDhDQUFjO0FBQ2QsMENBQVk7QUFDWiwwQ0FBWTtBQUNaLGtEQUNvQjtBQUV0QixzQkFBb0IsZ0JBQWdCLENBQUM7QUFBN0IsOEJBQTZCO0FBQ3JDLHVCQUFxQixpQkFBaUIsQ0FBQztBQUEvQixpQ0FBK0I7QUFDdkMsdUJBQXFCLGlCQUFpQixDQUFDO0FBQS9CLGlDQUErQjtBQUV2QywyQkFJTyxjQUFjLENBQUM7QUFIcEIsK0RBQW1CO0FBQ25CLHVIQUErQztBQUMvQyxpRUFDb0I7QUFDdEIsMkJBT08sY0FBYyxDQUFDO0FBSHBCLHlFQUF3QjtBQUN4QixpREFBWTtBQUNaLHVFQUNvQjtBQUN0QiwwQkFBd0UsYUFBYSxDQUFDO0FBQTlFLHNFQUF1QjtBQUFFLHdGQUFxRDtBQUN0RixzQ0FBeUMseUJBQXlCLENBQUM7QUFBM0Qsd0ZBQTJEO0FBQ25FLDBDQUFxQyw2QkFBNkIsQ0FBQztBQUEzRCxvRkFBMkQ7QUFDbkUsK0JBQTJDLGtCQUFrQixDQUFDO0FBQXRELHVEQUFhO0FBQUUsdURBQXVDO0FBQzlELGlDQUE4QyxvQkFBb0IsQ0FBQztBQUEzRCwyREFBYztBQUFFLDZEQUEyQztBQUNuRSx3Q0FBb0MsMkJBQTJCLENBQUM7QUFBeEQsZ0ZBQXdEO0FBQ2hFLG9DQUFnQyx1QkFBdUIsQ0FBQztBQUFoRCxvRUFBZ0Q7QUFDeEQsaUNBS08sNEJBQTRCLENBQUM7QUFKbEMsNkRBSWtDO0FBQ3BDLGlDQUFxRSw0QkFBNEIsQ0FBQztBQUExRiw2REFBMEY7QUFFbEcsc0NBQXlDLHlCQUF5QixDQUFDO0FBQTNELDREQUFZO0FBQUUsNERBQTZDO0FBRW5FOztHQUVHO0FBQ1Usa0JBQVUsR0FDbkIsaUJBQVUsQ0FBQyxDQUFDLGlCQUFVLENBQUMsSUFBSSxzREFBNEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWpFOztHQUVHO0FBQ1Usb0JBQVksR0FDckIsaUJBQVUsQ0FBQyxDQUFDLGlCQUFVLENBQUMsSUFBSSxzREFBNEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXBELDhCQUFzQixHQUFHLGlCQUFVLENBQUMsSUFBSSxrQ0FBZSxDQUFDLG9CQUFZLENBQUMsQ0FBQyxDQUFDO0FBRXZFLDhCQUFzQixHQUFHLGlCQUFVLENBQUMsSUFBSSxrQ0FBZSxDQUFDLGtCQUFVLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJdGVyYWJsZURpZmZlcnMsIEl0ZXJhYmxlRGlmZmVyRmFjdG9yeX0gZnJvbSAnLi9kaWZmZXJzL2l0ZXJhYmxlX2RpZmZlcnMnO1xuaW1wb3J0IHtEZWZhdWx0SXRlcmFibGVEaWZmZXJGYWN0b3J5fSBmcm9tICcuL2RpZmZlcnMvZGVmYXVsdF9pdGVyYWJsZV9kaWZmZXInO1xuaW1wb3J0IHtLZXlWYWx1ZURpZmZlcnMsIEtleVZhbHVlRGlmZmVyRmFjdG9yeX0gZnJvbSAnLi9kaWZmZXJzL2tleXZhbHVlX2RpZmZlcnMnO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEtleVZhbHVlRGlmZmVyRmFjdG9yeSxcbiAgS2V5VmFsdWVDaGFuZ2VSZWNvcmRcbn0gZnJvbSAnLi9kaWZmZXJzL2RlZmF1bHRfa2V5dmFsdWVfZGlmZmVyJztcbmltcG9ydCB7Q09OU1RfRVhQUn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuZXhwb3J0IHtcbiAgRGVmYXVsdEtleVZhbHVlRGlmZmVyRmFjdG9yeSxcbiAgS2V5VmFsdWVDaGFuZ2VSZWNvcmRcbn0gZnJvbSAnLi9kaWZmZXJzL2RlZmF1bHRfa2V5dmFsdWVfZGlmZmVyJztcbmV4cG9ydCB7XG4gIERlZmF1bHRJdGVyYWJsZURpZmZlckZhY3RvcnksXG4gIENvbGxlY3Rpb25DaGFuZ2VSZWNvcmRcbn0gZnJvbSAnLi9kaWZmZXJzL2RlZmF1bHRfaXRlcmFibGVfZGlmZmVyJztcbmV4cG9ydCB7XG4gIEFTVFdpdGhTb3VyY2UsXG4gIEFTVCxcbiAgQXN0VHJhbnNmb3JtZXIsXG4gIFByb3BlcnR5UmVhZCxcbiAgTGl0ZXJhbEFycmF5LFxuICBJbXBsaWNpdFJlY2VpdmVyXG59IGZyb20gJy4vcGFyc2VyL2FzdCc7XG5cbmV4cG9ydCB7TGV4ZXJ9IGZyb20gJy4vcGFyc2VyL2xleGVyJztcbmV4cG9ydCB7UGFyc2VyfSBmcm9tICcuL3BhcnNlci9wYXJzZXInO1xuZXhwb3J0IHtMb2NhbHN9IGZyb20gJy4vcGFyc2VyL2xvY2Fscyc7XG5cbmV4cG9ydCB7XG4gIERlaHlkcmF0ZWRFeGNlcHRpb24sXG4gIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXhjZXB0aW9uLFxuICBDaGFuZ2VEZXRlY3Rpb25FcnJvclxufSBmcm9tICcuL2V4Y2VwdGlvbnMnO1xuZXhwb3J0IHtcbiAgUHJvdG9DaGFuZ2VEZXRlY3RvcixcbiAgQ2hhbmdlRGV0ZWN0b3IsXG4gIENoYW5nZURpc3BhdGNoZXIsXG4gIENoYW5nZURldGVjdG9yRGVmaW5pdGlvbixcbiAgRGVidWdDb250ZXh0LFxuICBDaGFuZ2VEZXRlY3RvckdlbkNvbmZpZ1xufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuZXhwb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWV9WQUxVRVN9IGZyb20gJy4vY29uc3RhbnRzJztcbmV4cG9ydCB7RHluYW1pY1Byb3RvQ2hhbmdlRGV0ZWN0b3J9IGZyb20gJy4vcHJvdG9fY2hhbmdlX2RldGVjdG9yJztcbmV4cG9ydCB7Sml0UHJvdG9DaGFuZ2VEZXRlY3Rvcn0gZnJvbSAnLi9qaXRfcHJvdG9fY2hhbmdlX2RldGVjdG9yJztcbmV4cG9ydCB7QmluZGluZ1JlY29yZCwgQmluZGluZ1RhcmdldH0gZnJvbSAnLi9iaW5kaW5nX3JlY29yZCc7XG5leHBvcnQge0RpcmVjdGl2ZUluZGV4LCBEaXJlY3RpdmVSZWNvcmR9IGZyb20gJy4vZGlyZWN0aXZlX3JlY29yZCc7XG5leHBvcnQge0R5bmFtaWNDaGFuZ2VEZXRlY3Rvcn0gZnJvbSAnLi9keW5hbWljX2NoYW5nZV9kZXRlY3Rvcic7XG5leHBvcnQge0NoYW5nZURldGVjdG9yUmVmfSBmcm9tICcuL2NoYW5nZV9kZXRlY3Rvcl9yZWYnO1xuZXhwb3J0IHtcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBJdGVyYWJsZURpZmZlcixcbiAgSXRlcmFibGVEaWZmZXJGYWN0b3J5LFxuICBUcmFja0J5Rm5cbn0gZnJvbSAnLi9kaWZmZXJzL2l0ZXJhYmxlX2RpZmZlcnMnO1xuZXhwb3J0IHtLZXlWYWx1ZURpZmZlcnMsIEtleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlckZhY3Rvcnl9IGZyb20gJy4vZGlmZmVycy9rZXl2YWx1ZV9kaWZmZXJzJztcbmV4cG9ydCB7UGlwZVRyYW5zZm9ybX0gZnJvbSAnLi9waXBlX3RyYW5zZm9ybSc7XG5leHBvcnQge1dyYXBwZWRWYWx1ZSwgU2ltcGxlQ2hhbmdlfSBmcm9tICcuL2NoYW5nZV9kZXRlY3Rpb25fdXRpbCc7XG5cbi8qKlxuICogU3RydWN0dXJhbCBkaWZmaW5nIGZvciBgT2JqZWN0YHMgYW5kIGBNYXBgcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGtleVZhbERpZmY6IEtleVZhbHVlRGlmZmVyRmFjdG9yeVtdID1cbiAgICBDT05TVF9FWFBSKFtDT05TVF9FWFBSKG5ldyBEZWZhdWx0S2V5VmFsdWVEaWZmZXJGYWN0b3J5KCkpXSk7XG5cbi8qKlxuICogU3RydWN0dXJhbCBkaWZmaW5nIGZvciBgSXRlcmFibGVgIHR5cGVzIHN1Y2ggYXMgYEFycmF5YHMuXG4gKi9cbmV4cG9ydCBjb25zdCBpdGVyYWJsZURpZmY6IEl0ZXJhYmxlRGlmZmVyRmFjdG9yeVtdID1cbiAgICBDT05TVF9FWFBSKFtDT05TVF9FWFBSKG5ldyBEZWZhdWx0SXRlcmFibGVEaWZmZXJGYWN0b3J5KCkpXSk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0SXRlcmFibGVEaWZmZXJzID0gQ09OU1RfRVhQUihuZXcgSXRlcmFibGVEaWZmZXJzKGl0ZXJhYmxlRGlmZikpO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEtleVZhbHVlRGlmZmVycyA9IENPTlNUX0VYUFIobmV3IEtleVZhbHVlRGlmZmVycyhrZXlWYWxEaWZmKSk7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var PromiseCompleter = (function () {\r\n function PromiseCompleter() {\r\n var _this = this;\r\n this.promise = new Promise(function (res, rej) {\r\n _this.resolve = res;\r\n _this.reject = rej;\r\n });\r\n }\r\n return PromiseCompleter;\r\n})();\r\nexports.PromiseCompleter = PromiseCompleter;\r\nvar PromiseWrapper = (function () {\r\n function PromiseWrapper() {\r\n }\r\n PromiseWrapper.resolve = function (obj) { return Promise.resolve(obj); };\r\n PromiseWrapper.reject = function (obj, _) { return Promise.reject(obj); };\r\n // Note: We can't rename this method into `catch`, as this is not a valid\r\n // method name in Dart.\r\n PromiseWrapper.catchError = function (promise, onError) {\r\n return promise.catch(onError);\r\n };\r\n PromiseWrapper.all = function (promises) {\r\n if (promises.length == 0)\r\n return Promise.resolve([]);\r\n return Promise.all(promises);\r\n };\r\n PromiseWrapper.then = function (promise, success, rejection) {\r\n return promise.then(success, rejection);\r\n };\r\n PromiseWrapper.wrap = function (computation) {\r\n return new Promise(function (res, rej) {\r\n try {\r\n res(computation());\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n };\r\n PromiseWrapper.scheduleMicrotask = function (computation) {\r\n PromiseWrapper.then(PromiseWrapper.resolve(null), computation, function (_) { });\r\n };\r\n PromiseWrapper.isPromise = function (obj) { return obj instanceof Promise; };\r\n PromiseWrapper.completer = function () { return new PromiseCompleter(); };\r\n return PromiseWrapper;\r\n})();\r\nexports.PromiseWrapper = PromiseWrapper;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9mYWNhZGUvcHJvbWlzZS50cyJdLCJuYW1lcyI6WyJQcm9taXNlQ29tcGxldGVyIiwiUHJvbWlzZUNvbXBsZXRlci5jb25zdHJ1Y3RvciIsIlByb21pc2VXcmFwcGVyIiwiUHJvbWlzZVdyYXBwZXIuY29uc3RydWN0b3IiLCJQcm9taXNlV3JhcHBlci5yZXNvbHZlIiwiUHJvbWlzZVdyYXBwZXIucmVqZWN0IiwiUHJvbWlzZVdyYXBwZXIuY2F0Y2hFcnJvciIsIlByb21pc2VXcmFwcGVyLmFsbCIsIlByb21pc2VXcmFwcGVyLnRoZW4iLCJQcm9taXNlV3JhcHBlci53cmFwIiwiUHJvbWlzZVdyYXBwZXIuc2NoZWR1bGVNaWNyb3Rhc2siLCJQcm9taXNlV3JhcHBlci5pc1Byb21pc2UiLCJQcm9taXNlV3JhcHBlci5jb21wbGV0ZXIiXSwibWFwcGluZ3MiOiJBQUNBO0lBS0VBO1FBTEZDLGlCQVdDQTtRQUxHQSxJQUFJQSxDQUFDQSxPQUFPQSxHQUFHQSxJQUFJQSxPQUFPQSxDQUFDQSxVQUFDQSxHQUFHQSxFQUFFQSxHQUFHQTtZQUNsQ0EsS0FBSUEsQ0FBQ0EsT0FBT0EsR0FBR0EsR0FBR0EsQ0FBQ0E7WUFDbkJBLEtBQUlBLENBQUNBLE1BQU1BLEdBQUdBLEdBQUdBLENBQUNBO1FBQ3BCQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNMQSxDQUFDQTtJQUNIRCx1QkFBQ0E7QUFBREEsQ0FBQ0EsQUFYRCxJQVdDO0FBWFksd0JBQWdCLG1CQVc1QixDQUFBO0FBRUQ7SUFBQUU7SUF1Q0FDLENBQUNBO0lBdENRRCxzQkFBT0EsR0FBZEEsVUFBa0JBLEdBQU1BLElBQWdCRSxNQUFNQSxDQUFDQSxPQUFPQSxDQUFDQSxPQUFPQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUUvREYscUJBQU1BLEdBQWJBLFVBQWNBLEdBQVFBLEVBQUVBLENBQUNBLElBQWtCRyxNQUFNQSxDQUFDQSxPQUFPQSxDQUFDQSxNQUFNQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUV4RUgseUVBQXlFQTtJQUN6RUEsdUJBQXVCQTtJQUNoQkEseUJBQVVBLEdBQWpCQSxVQUFxQkEsT0FBbUJBLEVBQ25CQSxPQUEyQ0E7UUFDOURJLE1BQU1BLENBQUNBLE9BQU9BLENBQUNBLEtBQUtBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBO0lBQ2hDQSxDQUFDQTtJQUVNSixrQkFBR0EsR0FBVkEsVUFBY0EsUUFBNEJBO1FBQ3hDSyxFQUFFQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQSxNQUFNQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUFDQSxNQUFNQSxDQUFDQSxPQUFPQSxDQUFDQSxPQUFPQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQTtRQUNyREEsTUFBTUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0E7SUFDL0JBLENBQUNBO0lBRU1MLG1CQUFJQSxHQUFYQSxVQUFrQkEsT0FBbUJBLEVBQUVBLE9BQXlDQSxFQUM5REEsU0FBMkRBO1FBQzNFTSxNQUFNQSxDQUFDQSxPQUFPQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxFQUFFQSxTQUFTQSxDQUFDQSxDQUFDQTtJQUMxQ0EsQ0FBQ0E7SUFFTU4sbUJBQUlBLEdBQVhBLFVBQWVBLFdBQW9CQTtRQUNqQ08sTUFBTUEsQ0FBQ0EsSUFBSUEsT0FBT0EsQ0FBQ0EsVUFBQ0EsR0FBR0EsRUFBRUEsR0FBR0E7WUFDMUJBLElBQUlBLENBQUNBO2dCQUNIQSxHQUFHQSxDQUFDQSxXQUFXQSxFQUFFQSxDQUFDQSxDQUFDQTtZQUNyQkEsQ0FBRUE7WUFBQUEsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ1hBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ1RBLENBQUNBO1FBQ0hBLENBQUNBLENBQUNBLENBQUNBO0lBQ0xBLENBQUNBO0lBRU1QLGdDQUFpQkEsR0FBeEJBLFVBQXlCQSxXQUFzQkE7UUFDN0NRLGNBQWNBLENBQUNBLElBQUlBLENBQUNBLGNBQWNBLENBQUNBLE9BQU9BLENBQUNBLElBQUlBLENBQUNBLEVBQUVBLFdBQVdBLEVBQUVBLFVBQUNBLENBQUNBLElBQU1BLENBQUNBLENBQUNBLENBQUNBO0lBQzVFQSxDQUFDQTtJQUVNUix3QkFBU0EsR0FBaEJBLFVBQWlCQSxHQUFRQSxJQUFhUyxNQUFNQSxDQUFDQSxHQUFHQSxZQUFZQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUUvRFQsd0JBQVNBLEdBQWhCQSxjQUE2Q1UsTUFBTUEsQ0FBQ0EsSUFBSUEsZ0JBQWdCQSxFQUFLQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNsRlYscUJBQUNBO0FBQURBLENBQUNBLEFBdkNELElBdUNDO0FBdkNZLHNCQUFjLGlCQXVDMUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNsYXNzIFByb21pc2VDb21wbGV0ZXI8Uj4ge1xuICBwcm9taXNlOiBQcm9taXNlPFI+O1xuICByZXNvbHZlOiAodmFsdWU/OiBSIHwgUHJvbWlzZUxpa2U8Uj4pID0+IHZvaWQ7XG4gIHJlamVjdDogKGVycm9yPzogYW55LCBzdGFja1RyYWNlPzogc3RyaW5nKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlID0gcmVzO1xuICAgICAgdGhpcy5yZWplY3QgPSByZWo7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb21pc2VXcmFwcGVyIHtcbiAgc3RhdGljIHJlc29sdmU8VD4ob2JqOiBUKTogUHJvbWlzZTxUPiB7IHJldHVybiBQcm9taXNlLnJlc29sdmUob2JqKTsgfVxuXG4gIHN0YXRpYyByZWplY3Qob2JqOiBhbnksIF8pOiBQcm9taXNlPGFueT4geyByZXR1cm4gUHJvbWlzZS5yZWplY3Qob2JqKTsgfVxuXG4gIC8vIE5vdGU6IFdlIGNhbid0IHJlbmFtZSB0aGlzIG1ldGhvZCBpbnRvIGBjYXRjaGAsIGFzIHRoaXMgaXMgbm90IGEgdmFsaWRcbiAgLy8gbWV0aG9kIG5hbWUgaW4gRGFydC5cbiAgc3RhdGljIGNhdGNoRXJyb3I8VD4ocHJvbWlzZTogUHJvbWlzZTxUPixcbiAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcjogKGVycm9yOiBhbnkpID0+IFQgfCBQcm9taXNlTGlrZTxUPik6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBwcm9taXNlLmNhdGNoKG9uRXJyb3IpO1xuICB9XG5cbiAgc3RhdGljIGFsbDxUPihwcm9taXNlczogKFQgfCBQcm9taXNlPFQ+KVtdKTogUHJvbWlzZTxUW10+IHtcbiAgICBpZiAocHJvbWlzZXMubGVuZ3RoID09IDApIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIH1cblxuICBzdGF0aWMgdGhlbjxULCBVPihwcm9taXNlOiBQcm9taXNlPFQ+LCBzdWNjZXNzOiAodmFsdWU6IFQpID0+IFUgfCBQcm9taXNlTGlrZTxVPixcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0aW9uPzogKGVycm9yOiBhbnksIHN0YWNrPzogYW55KSA9PiBVIHwgUHJvbWlzZUxpa2U8VT4pOiBQcm9taXNlPFU+IHtcbiAgICByZXR1cm4gcHJvbWlzZS50aGVuKHN1Y2Nlc3MsIHJlamVjdGlvbik7XG4gIH1cblxuICBzdGF0aWMgd3JhcDxUPihjb21wdXRhdGlvbjogKCkgPT4gVCk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcyhjb21wdXRhdGlvbigpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqKGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHNjaGVkdWxlTWljcm90YXNrKGNvbXB1dGF0aW9uOiAoKSA9PiBhbnkpOiB2b2lkIHtcbiAgICBQcm9taXNlV3JhcHBlci50aGVuKFByb21pc2VXcmFwcGVyLnJlc29sdmUobnVsbCksIGNvbXB1dGF0aW9uLCAoXykgPT4ge30pO1xuICB9XG5cbiAgc3RhdGljIGlzUHJvbWlzZShvYmo6IGFueSk6IGJvb2xlYW4geyByZXR1cm4gb2JqIGluc3RhbmNlb2YgUHJvbWlzZTsgfVxuXG4gIHN0YXRpYyBjb21wbGV0ZXI8VD4oKTogUHJvbWlzZUNvbXBsZXRlcjxUPiB7IHJldHVybiBuZXcgUHJvbWlzZUNvbXBsZXRlcjxUPigpOyB9XG59XG4iXX0=","/* */ \n\"use strict\";\nvar __extends = (this && this.__extends) || function(d, b) {\n for (var p in b)\n if (b.hasOwnProperty(p))\n d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Subscription_1 = require('../Subscription');\nvar SubjectSubscription = (function(_super) {\n __extends(SubjectSubscription, _super);\n function SubjectSubscription(subject, observer) {\n _super.call(this);\n this.subject = subject;\n this.observer = observer;\n this.isUnsubscribed = false;\n }\n SubjectSubscription.prototype.unsubscribe = function() {\n if (this.isUnsubscribed) {\n return;\n }\n this.isUnsubscribed = true;\n var subject = this.subject;\n var observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isUnsubscribed) {\n return;\n }\n var subscriberIndex = observers.indexOf(this.observer);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n };\n return SubjectSubscription;\n}(Subscription_1.Subscription));\nexports.SubjectSubscription = SubjectSubscription;\n","/* */ \n\"use strict\";\nfunction throwError(e) { throw e; }\nexports.throwError = throwError;\n//# sourceMappingURL=throwError.js.map","/* */ \n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n/**\n * an error thrown when an action is invalid because the object\n * has been unsubscribed\n */\nvar ObjectUnsubscribedError = (function (_super) {\n __extends(ObjectUnsubscribedError, _super);\n function ObjectUnsubscribedError() {\n _super.call(this, 'object unsubscribed');\n this.name = 'ObjectUnsubscribedError';\n }\n return ObjectUnsubscribedError;\n}(Error));\nexports.ObjectUnsubscribedError = ObjectUnsubscribedError;\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","/* */ \n\"use strict\";\nvar __extends = (this && this.__extends) || function(d, b) {\n for (var p in b)\n if (b.hasOwnProperty(p))\n d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar Observable_1 = require('./Observable');\nvar Subscriber_1 = require('./Subscriber');\nvar Subscription_1 = require('./Subscription');\nvar SubjectSubscription_1 = require('./subject/SubjectSubscription');\nvar rxSubscriber_1 = require('./symbol/rxSubscriber');\nvar throwError_1 = require('./util/throwError');\nvar ObjectUnsubscribedError_1 = require('./util/ObjectUnsubscribedError');\nvar Subject = (function(_super) {\n __extends(Subject, _super);\n function Subject(destination, source) {\n _super.call(this);\n this.destination = destination;\n this.source = source;\n this.observers = [];\n this.isUnsubscribed = false;\n this.isStopped = false;\n this.hasErrored = false;\n this.dispatching = false;\n this.hasCompleted = false;\n this.source = source;\n }\n Subject.prototype.lift = function(operator) {\n var subject = new Subject(this.destination || this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype.add = function(subscription) {\n Subscription_1.Subscription.prototype.add.call(this, subscription);\n };\n Subject.prototype.remove = function(subscription) {\n Subscription_1.Subscription.prototype.remove.call(this, subscription);\n };\n Subject.prototype.unsubscribe = function() {\n Subscription_1.Subscription.prototype.unsubscribe.call(this);\n };\n Subject.prototype._subscribe = function(subscriber) {\n if (this.source) {\n return this.source.subscribe(subscriber);\n } else {\n if (subscriber.isUnsubscribed) {\n return;\n } else if (this.hasErrored) {\n return subscriber.error(this.errorValue);\n } else if (this.hasCompleted) {\n return subscriber.complete();\n }\n this.throwIfUnsubscribed();\n var subscription = new SubjectSubscription_1.SubjectSubscription(this, subscriber);\n this.observers.push(subscriber);\n return subscription;\n }\n };\n Subject.prototype._unsubscribe = function() {\n this.source = null;\n this.isStopped = true;\n this.observers = null;\n this.destination = null;\n };\n Subject.prototype.next = function(value) {\n this.throwIfUnsubscribed();\n if (this.isStopped) {\n return;\n }\n this.dispatching = true;\n this._next(value);\n this.dispatching = false;\n if (this.hasErrored) {\n this._error(this.errorValue);\n } else if (this.hasCompleted) {\n this._complete();\n }\n };\n Subject.prototype.error = function(err) {\n this.throwIfUnsubscribed();\n if (this.isStopped) {\n return;\n }\n this.isStopped = true;\n this.hasErrored = true;\n this.errorValue = err;\n if (this.dispatching) {\n return;\n }\n this._error(err);\n };\n Subject.prototype.complete = function() {\n this.throwIfUnsubscribed();\n if (this.isStopped) {\n return;\n }\n this.isStopped = true;\n this.hasCompleted = true;\n if (this.dispatching) {\n return;\n }\n this._complete();\n };\n Subject.prototype.asObservable = function() {\n var observable = new SubjectObservable(this);\n return observable;\n };\n Subject.prototype._next = function(value) {\n if (this.destination) {\n this.destination.next(value);\n } else {\n this._finalNext(value);\n }\n };\n Subject.prototype._finalNext = function(value) {\n var index = -1;\n var observers = this.observers.slice(0);\n var len = observers.length;\n while (++index < len) {\n observers[index].next(value);\n }\n };\n Subject.prototype._error = function(err) {\n if (this.destination) {\n this.destination.error(err);\n } else {\n this._finalError(err);\n }\n };\n Subject.prototype._finalError = function(err) {\n var index = -1;\n var observers = this.observers;\n this.observers = null;\n this.isUnsubscribed = true;\n if (observers) {\n var len = observers.length;\n while (++index < len) {\n observers[index].error(err);\n }\n }\n this.isUnsubscribed = false;\n this.unsubscribe();\n };\n Subject.prototype._complete = function() {\n if (this.destination) {\n this.destination.complete();\n } else {\n this._finalComplete();\n }\n };\n Subject.prototype._finalComplete = function() {\n var index = -1;\n var observers = this.observers;\n this.observers = null;\n this.isUnsubscribed = true;\n if (observers) {\n var len = observers.length;\n while (++index < len) {\n observers[index].complete();\n }\n }\n this.isUnsubscribed = false;\n this.unsubscribe();\n };\n Subject.prototype.throwIfUnsubscribed = function() {\n if (this.isUnsubscribed) {\n throwError_1.throwError(new ObjectUnsubscribedError_1.ObjectUnsubscribedError());\n }\n };\n Subject.prototype[rxSubscriber_1.$$rxSubscriber] = function() {\n return new Subscriber_1.Subscriber(this);\n };\n Subject.create = function(destination, source) {\n return new Subject(destination, source);\n };\n return Subject;\n}(Observable_1.Observable));\nexports.Subject = Subject;\nvar SubjectObservable = (function(_super) {\n __extends(SubjectObservable, _super);\n function SubjectObservable(source) {\n _super.call(this);\n this.source = source;\n }\n return SubjectObservable;\n}(Observable_1.Observable));\n","/* */ \n\"use strict\";\nvar __extends = (this && this.__extends) || function(d, b) {\n for (var p in b)\n if (b.hasOwnProperty(p))\n d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar root_1 = require('../util/root');\nvar Observable_1 = require('../Observable');\nvar PromiseObservable = (function(_super) {\n __extends(PromiseObservable, _super);\n function PromiseObservable(promise, scheduler) {\n if (scheduler === void 0) {\n scheduler = null;\n }\n _super.call(this);\n this.promise = promise;\n this.scheduler = scheduler;\n }\n PromiseObservable.create = function(promise, scheduler) {\n if (scheduler === void 0) {\n scheduler = null;\n }\n return new PromiseObservable(promise, scheduler);\n };\n PromiseObservable.prototype._subscribe = function(subscriber) {\n var _this = this;\n var promise = this.promise;\n var scheduler = this.scheduler;\n if (scheduler == null) {\n if (this._isScalar) {\n if (!subscriber.isUnsubscribed) {\n subscriber.next(this.value);\n subscriber.complete();\n }\n } else {\n promise.then(function(value) {\n _this.value = value;\n _this._isScalar = true;\n if (!subscriber.isUnsubscribed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function(err) {\n if (!subscriber.isUnsubscribed) {\n subscriber.error(err);\n }\n }).then(null, function(err) {\n root_1.root.setTimeout(function() {\n throw err;\n });\n });\n }\n } else {\n if (this._isScalar) {\n if (!subscriber.isUnsubscribed) {\n return scheduler.schedule(dispatchNext, 0, {\n value: this.value,\n subscriber: subscriber\n });\n }\n } else {\n promise.then(function(value) {\n _this.value = value;\n _this._isScalar = true;\n if (!subscriber.isUnsubscribed) {\n subscriber.add(scheduler.schedule(dispatchNext, 0, {\n value: value,\n subscriber: subscriber\n }));\n }\n }, function(err) {\n if (!subscriber.isUnsubscribed) {\n subscriber.add(scheduler.schedule(dispatchError, 0, {\n err: err,\n subscriber: subscriber\n }));\n }\n }).then(null, function(err) {\n root_1.root.setTimeout(function() {\n throw err;\n });\n });\n }\n }\n };\n return PromiseObservable;\n}(Observable_1.Observable));\nexports.PromiseObservable = PromiseObservable;\nfunction dispatchNext(_a) {\n var value = _a.value,\n subscriber = _a.subscriber;\n if (!subscriber.isUnsubscribed) {\n subscriber.next(value);\n subscriber.complete();\n }\n}\nfunction dispatchError(_a) {\n var err = _a.err,\n subscriber = _a.subscriber;\n if (!subscriber.isUnsubscribed) {\n subscriber.error(err);\n }\n}\n","/* */ \n\"use strict\";\nvar root_1 = require('../util/root');\nfunction toPromise(PromiseCtor) {\n var _this = this;\n if (!PromiseCtor) {\n if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {\n PromiseCtor = root_1.root.Rx.config.Promise;\n } else if (root_1.root.Promise) {\n PromiseCtor = root_1.root.Promise;\n }\n }\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n return new PromiseCtor(function(resolve, reject) {\n var value;\n _this.subscribe(function(x) {\n return value = x;\n }, function(err) {\n return reject(err);\n }, function() {\n return resolve(value);\n });\n });\n}\nexports.toPromise = toPromise;\n","/* */ \n\"use strict\";\nvar root_1 = require('../util/root');\nvar Symbol = root_1.root.Symbol;\nif (typeof Symbol === 'function') {\n if (!Symbol.observable) {\n if (typeof Symbol.for === 'function') {\n exports.$$observable = Symbol.for('observable');\n } else {\n exports.$$observable = Symbol('observable');\n }\n Symbol.observable = exports.$$observable;\n }\n} else {\n exports.$$observable = '@@observable';\n}\n","/* */ \n\"use strict\";\nexports.isArray = Array.isArray || (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArray.js.map","/* */ \n\"use strict\";\nfunction isObject(x) {\n return x != null && typeof x === 'object';\n}\nexports.isObject = isObject;\n//# sourceMappingURL=isObject.js.map","/* */ \n\"use strict\";\nfunction isFunction(x) {\n return typeof x === 'function';\n}\nexports.isFunction = isFunction;\n//# sourceMappingURL=isFunction.js.map","/* */ \n\"use strict\";\nvar errorObject_1 = require('./errorObject');\nvar tryCatchTarget;\nfunction tryCatcher() {\n try {\n return tryCatchTarget.apply(this, arguments);\n } catch (e) {\n errorObject_1.errorObject.e = e;\n return errorObject_1.errorObject;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\nexports.tryCatch = tryCatch;\n;\n","/* */ \n\"use strict\";\n// typeof any so that it we don't have to cast when comparing a result to the error object\nexports.errorObject = { e: {} };\n//# sourceMappingURL=errorObject.js.map","/* */ \n\"use strict\";\nvar __extends = (this && this.__extends) || function(d, b) {\n for (var p in b)\n if (b.hasOwnProperty(p))\n d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar isArray_1 = require('./util/isArray');\nvar isObject_1 = require('./util/isObject');\nvar isFunction_1 = require('./util/isFunction');\nvar tryCatch_1 = require('./util/tryCatch');\nvar errorObject_1 = require('./util/errorObject');\nvar Subscription = (function() {\n function Subscription(_unsubscribe) {\n this.isUnsubscribed = false;\n if (_unsubscribe) {\n this._unsubscribe = _unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function() {\n var hasErrors = false;\n var errors;\n if (this.isUnsubscribed) {\n return;\n }\n this.isUnsubscribed = true;\n var _a = this,\n _unsubscribe = _a._unsubscribe,\n _subscriptions = _a._subscriptions;\n this._subscriptions = null;\n if (isFunction_1.isFunction(_unsubscribe)) {\n var trial = tryCatch_1.tryCatch(_unsubscribe).call(this);\n if (trial === errorObject_1.errorObject) {\n hasErrors = true;\n (errors = errors || []).push(errorObject_1.errorObject.e);\n }\n }\n if (isArray_1.isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject_1.isObject(sub)) {\n var trial = tryCatch_1.tryCatch(sub.unsubscribe).call(sub);\n if (trial === errorObject_1.errorObject) {\n hasErrors = true;\n errors = errors || [];\n var err = errorObject_1.errorObject.e;\n if (err instanceof UnsubscriptionError) {\n errors = errors.concat(err.errors);\n } else {\n errors.push(err);\n }\n }\n }\n }\n }\n if (hasErrors) {\n throw new UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function(subscription) {\n if (!subscription || (subscription === this) || (subscription === Subscription.EMPTY)) {\n return;\n }\n var sub = subscription;\n switch (typeof subscription) {\n case 'function':\n sub = new Subscription(subscription);\n case 'object':\n if (sub.isUnsubscribed || typeof sub.unsubscribe !== 'function') {\n break;\n } else if (this.isUnsubscribed) {\n sub.unsubscribe();\n } else {\n (this._subscriptions || (this._subscriptions = [])).push(sub);\n }\n break;\n default:\n throw new Error('Unrecognized subscription ' + subscription + ' added to Subscription.');\n }\n };\n Subscription.prototype.remove = function(subscription) {\n if (subscription == null || (subscription === this) || (subscription === Subscription.EMPTY)) {\n return;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function(empty) {\n empty.isUnsubscribed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexports.Subscription = Subscription;\nvar UnsubscriptionError = (function(_super) {\n __extends(UnsubscriptionError, _super);\n function UnsubscriptionError(errors) {\n _super.call(this, 'unsubscriptoin error(s)');\n this.errors = errors;\n this.name = 'UnsubscriptionError';\n }\n return UnsubscriptionError;\n}(Error));\nexports.UnsubscriptionError = UnsubscriptionError;\n","/* */ \n\"use strict\";\nexports.empty = {\n isUnsubscribed: true,\n next: function (value) { },\n error: function (err) { throw err; },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map","/* */ \n\"use strict\";\nvar __extends = (this && this.__extends) || function(d, b) {\n for (var p in b)\n if (b.hasOwnProperty(p))\n d[p] = b[p];\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar isFunction_1 = require('./util/isFunction');\nvar Subscription_1 = require('./Subscription');\nvar rxSubscriber_1 = require('./symbol/rxSubscriber');\nvar Observer_1 = require('./Observer');\nvar Subscriber = (function(_super) {\n __extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n _super.call(this);\n this.syncErrorValue = null;\n this.syncErrorThrown = false;\n this.syncErrorThrowable = false;\n this.isStopped = false;\n switch (arguments.length) {\n case 0:\n this.destination = Observer_1.empty;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = Observer_1.empty;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.destination = destinationOrNext;\n } else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n break;\n }\n }\n Subscriber.create = function(next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function(value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function(err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function() {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function() {\n if (this.isUnsubscribed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function(value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function(err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function() {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype[rxSubscriber_1.$$rxSubscriber] = function() {\n return this;\n };\n return Subscriber;\n}(Subscription_1.Subscription));\nexports.Subscriber = Subscriber;\nvar SafeSubscriber = (function(_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(_parent, observerOrNext, error, complete) {\n _super.call(this);\n this._parent = _parent;\n var next;\n var context = this;\n if (isFunction_1.isFunction(observerOrNext)) {\n next = observerOrNext;\n } else if (observerOrNext) {\n context = observerOrNext;\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n }\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n SafeSubscriber.prototype.next = function(value) {\n if (!this.isStopped && this._next) {\n var _parent = this._parent;\n if (!_parent.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n } else if (this.__tryOrSetError(_parent, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function(err) {\n if (!this.isStopped) {\n var _parent = this._parent;\n if (this._error) {\n if (!_parent.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parent, this._error, err);\n this.unsubscribe();\n }\n } else if (!_parent.syncErrorThrowable) {\n this.unsubscribe();\n throw err;\n } else {\n _parent.syncErrorValue = err;\n _parent.syncErrorThrown = true;\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function() {\n if (!this.isStopped) {\n var _parent = this._parent;\n if (this._complete) {\n if (!_parent.syncErrorThrowable) {\n this.__tryOrUnsub(this._complete);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parent, this._complete);\n this.unsubscribe();\n }\n } else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function(fn, value) {\n try {\n fn.call(this._context, value);\n } catch (err) {\n this.unsubscribe();\n throw err;\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function(parent, fn, value) {\n try {\n fn.call(this._context, value);\n } catch (err) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function() {\n var _parent = this._parent;\n this._context = null;\n this._parent = null;\n _parent.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\n","/* */ \n\"use strict\";\nvar objectTypes = {\n 'boolean': false,\n 'function': true,\n 'object': true,\n 'number': false,\n 'string': false,\n 'undefined': false\n};\nexports.root = (objectTypes[typeof self] && self) || (objectTypes[typeof window] && window);\n/* tslint:disable:no-unused-variable */\nvar freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;\nvar freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\nvar freeGlobal = objectTypes[typeof global] && global;\nif (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) {\n exports.root = freeGlobal;\n}\n//# sourceMappingURL=root.js.map","/* */ \n\"use strict\";\nvar root_1 = require('../util/root');\nvar Symbol = root_1.root.Symbol;\nexports.$$rxSubscriber = (typeof Symbol === 'function' && typeof Symbol.for === 'function') ? Symbol.for('rxSubscriber') : '@@rxSubscriber';\n","/* */ \n\"use strict\";\nvar Subscriber_1 = require('../Subscriber');\nvar rxSubscriber_1 = require('../symbol/rxSubscriber');\nfunction toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver === 'object') {\n if (nextOrObserver instanceof Subscriber_1.Subscriber) {\n return nextOrObserver;\n } else if (typeof nextOrObserver[rxSubscriber_1.$$rxSubscriber] === 'function') {\n return nextOrObserver[rxSubscriber_1.$$rxSubscriber]();\n }\n }\n return new Subscriber_1.Subscriber(nextOrObserver, error, complete);\n}\nexports.toSubscriber = toSubscriber;\n","/* */ \n\"use strict\";\nvar root_1 = require('./util/root');\nvar observable_1 = require('./symbol/observable');\nvar toSubscriber_1 = require('./util/toSubscriber');\nvar Observable = (function() {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function(operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function(observerOrNext, error, complete) {\n var operator = this.operator;\n var subscriber = toSubscriber_1.toSubscriber(observerOrNext, error, complete);\n if (operator) {\n subscriber.add(this._subscribe(operator.call(subscriber)));\n } else {\n subscriber.add(this._subscribe(subscriber));\n }\n if (subscriber.syncErrorThrowable) {\n subscriber.syncErrorThrowable = false;\n if (subscriber.syncErrorThrown) {\n throw subscriber.syncErrorValue;\n }\n }\n return subscriber;\n };\n Observable.prototype.forEach = function(next, PromiseCtor) {\n var _this = this;\n if (!PromiseCtor) {\n if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {\n PromiseCtor = root_1.root.Rx.config.Promise;\n } else if (root_1.root.Promise) {\n PromiseCtor = root_1.root.Promise;\n }\n }\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n return new PromiseCtor(function(resolve, reject) {\n var subscription = _this.subscribe(function(value) {\n if (subscription) {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscription.unsubscribe();\n }\n } else {\n next(value);\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function(subscriber) {\n return this.source.subscribe(subscriber);\n };\n Observable.prototype[observable_1.$$observable] = function() {\n return this;\n };\n Observable.create = function(subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexports.Observable = Observable;\n","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar promise_1 = require('angular2/src/facade/promise');\r\nexports.PromiseWrapper = promise_1.PromiseWrapper;\r\nexports.PromiseCompleter = promise_1.PromiseCompleter;\r\nvar Subject_1 = require('rxjs/Subject');\r\nvar PromiseObservable_1 = require('rxjs/observable/PromiseObservable');\r\nvar toPromise_1 = require('rxjs/operator/toPromise');\r\nvar Observable_1 = require('rxjs/Observable');\r\nexports.Observable = Observable_1.Observable;\r\nvar Subject_2 = require('rxjs/Subject');\r\nexports.Subject = Subject_2.Subject;\r\nvar TimerWrapper = (function () {\r\n function TimerWrapper() {\r\n }\r\n TimerWrapper.setTimeout = function (fn, millis) {\r\n return lang_1.global.setTimeout(fn, millis);\r\n };\r\n TimerWrapper.clearTimeout = function (id) { lang_1.global.clearTimeout(id); };\r\n TimerWrapper.setInterval = function (fn, millis) {\r\n return lang_1.global.setInterval(fn, millis);\r\n };\r\n TimerWrapper.clearInterval = function (id) { lang_1.global.clearInterval(id); };\r\n return TimerWrapper;\r\n})();\r\nexports.TimerWrapper = TimerWrapper;\r\nvar ObservableWrapper = (function () {\r\n function ObservableWrapper() {\r\n }\r\n // TODO(vsavkin): when we use rxnext, try inferring the generic type from the first arg\r\n ObservableWrapper.subscribe = function (emitter, onNext, onError, onComplete) {\r\n if (onComplete === void 0) { onComplete = function () { }; }\r\n onError = (typeof onError === \"function\") && onError || lang_1.noop;\r\n onComplete = (typeof onComplete === \"function\") && onComplete || lang_1.noop;\r\n return emitter.subscribe({ next: onNext, error: onError, complete: onComplete });\r\n };\r\n ObservableWrapper.isObservable = function (obs) { return !!obs.subscribe; };\r\n /**\r\n * Returns whether `obs` has any subscribers listening to events.\r\n */\r\n ObservableWrapper.hasSubscribers = function (obs) { return obs.observers.length > 0; };\r\n ObservableWrapper.dispose = function (subscription) { subscription.unsubscribe(); };\r\n /**\r\n * @deprecated - use callEmit() instead\r\n */\r\n ObservableWrapper.callNext = function (emitter, value) { emitter.next(value); };\r\n ObservableWrapper.callEmit = function (emitter, value) { emitter.emit(value); };\r\n ObservableWrapper.callError = function (emitter, error) { emitter.error(error); };\r\n ObservableWrapper.callComplete = function (emitter) { emitter.complete(); };\r\n ObservableWrapper.fromPromise = function (promise) {\r\n return PromiseObservable_1.PromiseObservable.create(promise);\r\n };\r\n ObservableWrapper.toPromise = function (obj) { return toPromise_1.toPromise.call(obj); };\r\n return ObservableWrapper;\r\n})();\r\nexports.ObservableWrapper = ObservableWrapper;\r\n/**\r\n * Use by directives and components to emit custom Events.\r\n *\r\n * ### Examples\r\n *\r\n * In the following example, `Zippy` alternatively emits `open` and `close` events when its\r\n * title gets clicked:\r\n *\r\n * ```\r\n * @Component({\r\n * selector: 'zippy',\r\n * template: `\r\n * <div class=\"zippy\">\r\n * <div (click)=\"toggle()\">Toggle</div>\r\n * <div [hidden]=\"!visible\">\r\n * <ng-content></ng-content>\r\n * </div>\r\n * </div>`})\r\n * export class Zippy {\r\n * visible: boolean = true;\r\n * @Output() open: EventEmitter<any> = new EventEmitter();\r\n * @Output() close: EventEmitter<any> = new EventEmitter();\r\n *\r\n * toggle() {\r\n * this.visible = !this.visible;\r\n * if (this.visible) {\r\n * this.open.emit(null);\r\n * } else {\r\n * this.close.emit(null);\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * Use Rx.Observable but provides an adapter to make it work as specified here:\r\n * https://github.com/jhusain/observable-spec\r\n *\r\n * Once a reference implementation of the spec is available, switch to it.\r\n */\r\nvar EventEmitter = (function (_super) {\r\n __extends(EventEmitter, _super);\r\n /**\r\n * Creates an instance of [EventEmitter], which depending on [isAsync],\r\n * delivers events synchronously or asynchronously.\r\n */\r\n function EventEmitter(isAsync) {\r\n if (isAsync === void 0) { isAsync = true; }\r\n _super.call(this);\r\n this._isAsync = isAsync;\r\n }\r\n EventEmitter.prototype.emit = function (value) { _super.prototype.next.call(this, value); };\r\n /**\r\n * @deprecated - use .emit(value) instead\r\n */\r\n EventEmitter.prototype.next = function (value) { _super.prototype.next.call(this, value); };\r\n EventEmitter.prototype.subscribe = function (generatorOrNext, error, complete) {\r\n var schedulerFn;\r\n var errorFn = function (err) { return null; };\r\n var completeFn = function () { return null; };\r\n if (generatorOrNext && typeof generatorOrNext === 'object') {\r\n schedulerFn = this._isAsync ? function (value) { setTimeout(function () { return generatorOrNext.next(value); }); } :\r\n function (value) { generatorOrNext.next(value); };\r\n if (generatorOrNext.error) {\r\n errorFn = this._isAsync ? function (err) { setTimeout(function () { return generatorOrNext.error(err); }); } :\r\n function (err) { generatorOrNext.error(err); };\r\n }\r\n if (generatorOrNext.complete) {\r\n completeFn = this._isAsync ? function () { setTimeout(function () { return generatorOrNext.complete(); }); } :\r\n function () { generatorOrNext.complete(); };\r\n }\r\n }\r\n else {\r\n schedulerFn = this._isAsync ? function (value) { setTimeout(function () { return generatorOrNext(value); }); } :\r\n function (value) { generatorOrNext(value); };\r\n if (error) {\r\n errorFn =\r\n this._isAsync ? function (err) { setTimeout(function () { return error(err); }); } : function (err) { error(err); };\r\n }\r\n if (complete) {\r\n completeFn =\r\n this._isAsync ? function () { setTimeout(function () { return complete(); }); } : function () { complete(); };\r\n }\r\n }\r\n return _super.prototype.subscribe.call(this, schedulerFn, errorFn, completeFn);\r\n };\r\n return EventEmitter;\r\n})(Subject_1.Subject);\r\nexports.EventEmitter = EventEmitter;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvZmFjYWRlL2FzeW5jLnRzIl0sIm5hbWVzIjpbIlRpbWVyV3JhcHBlciIsIlRpbWVyV3JhcHBlci5jb25zdHJ1Y3RvciIsIlRpbWVyV3JhcHBlci5zZXRUaW1lb3V0IiwiVGltZXJXcmFwcGVyLmNsZWFyVGltZW91dCIsIlRpbWVyV3JhcHBlci5zZXRJbnRlcnZhbCIsIlRpbWVyV3JhcHBlci5jbGVhckludGVydmFsIiwiT2JzZXJ2YWJsZVdyYXBwZXIiLCJPYnNlcnZhYmxlV3JhcHBlci5jb25zdHJ1Y3RvciIsIk9ic2VydmFibGVXcmFwcGVyLnN1YnNjcmliZSIsIk9ic2VydmFibGVXcmFwcGVyLmlzT2JzZXJ2YWJsZSIsIk9ic2VydmFibGVXcmFwcGVyLmhhc1N1YnNjcmliZXJzIiwiT2JzZXJ2YWJsZVdyYXBwZXIuZGlzcG9zZSIsIk9ic2VydmFibGVXcmFwcGVyLmNhbGxOZXh0IiwiT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQiLCJPYnNlcnZhYmxlV3JhcHBlci5jYWxsRXJyb3IiLCJPYnNlcnZhYmxlV3JhcHBlci5jYWxsQ29tcGxldGUiLCJPYnNlcnZhYmxlV3JhcHBlci5mcm9tUHJvbWlzZSIsIk9ic2VydmFibGVXcmFwcGVyLnRvUHJvbWlzZSIsIkV2ZW50RW1pdHRlciIsIkV2ZW50RW1pdHRlci5jb25zdHJ1Y3RvciIsIkV2ZW50RW1pdHRlci5lbWl0IiwiRXZlbnRFbWl0dGVyLm5leHQiLCJFdmVudEVtaXR0ZXIuc3Vic2NyaWJlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFCQUEyQiwwQkFBMEIsQ0FBQyxDQUFBO0FBQ3RELHdCQUErQyw2QkFBNkIsQ0FBQztBQUFyRSxrREFBYztBQUFFLHNEQUFxRDtBQUc3RSx3QkFBc0IsY0FBYyxDQUFDLENBQUE7QUFFckMsa0NBQWdDLG1DQUFtQyxDQUFDLENBQUE7QUFDcEUsMEJBQXdCLHlCQUF5QixDQUFDLENB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QUNBO1FBRTVCQSxFQUFFQSxDQUFDQSxDQUFDQSxlQUFlQSxJQUFJQSxPQUFPQSxlQUFlQSxLQUFLQSxRQUFRQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUMzREEsV0FBV0EsR0FBR0EsSUFBSUEsQ0FBQ0EsUUFBUUEsR0FBR0EsVUFBQ0EsS0FBS0EsSUFBT0EsVUFBVUEsQ0FBQ0EsY0FBTUEsT0FBQUEsZUFBZUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsRUFBM0JBLENBQTJCQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDN0RBLFVBQUNBLEtBQUtBLElBQU9BLGVBQWVBLENBQUNBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBRTFFQSxFQUFFQSxDQUFDQSxDQUFDQSxlQUFlQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDMUJBLE9BQU9BLEdBQUdBLElBQUlBLENBQUNBLFFBQVFBLEdBQUdBLFVBQUNBLEdBQUdBLElBQU9BLFVBQVVBLENBQUNBLGNBQU1BLE9BQUFBLGVBQWVBLENBQUNBLEtBQUtBLENBQUNBLEdBQUdBLENBQUNBLEVBQTFCQSxDQUEwQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7b0JBQzFEQSxVQUFDQSxHQUFHQSxJQUFPQSxlQUFlQSxDQUFDQSxLQUFLQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNyRUEsQ0FBQ0E7WUFFREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZUFBZUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzdCQSxVQUFVQSxHQUFHQSxJQUFJQSxDQUFDQSxRQUFRQSxHQUFHQSxjQUFRQSxVQUFVQSxDQUFDQSxjQUFNQSxPQUFBQSxlQUFlQSxDQUFDQSxRQUFRQSxFQUFFQSxFQUExQkEsQ0FBMEJBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO29CQUN2REEsY0FBUUEsZUFBZUEsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDckVBLENBQUNBO1FBQ0hBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ05BLFdBQVdBLEdBQUdBLElBQUlBLENBQUNBLFFBQVFBLEdBQUdBLFVBQUNBLEtBQUtBLElBQU9BLFVBQVVBLENBQUNBLGNBQU1BLE9BQUFBLGVBQWVBLENBQUNBLEtBQUtBLENBQUNBLEVBQXRCQSxDQUFzQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ3hEQSxVQUFDQSxLQUFLQSxJQUFPQSxlQUFlQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUVyRUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ1ZBLE9BQU9BO29CQUNIQSxJQUFJQSxDQUFDQSxRQUFRQSxHQUFHQSxVQUFDQSxHQUFHQSxJQUFPQSxVQUFVQSxDQUFDQSxjQUFNQSxPQUFBQSxLQUFLQSxDQUFDQSxHQUFHQSxDQUFDQSxFQUFWQSxDQUFVQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxVQUFDQSxHQUFHQSxJQUFPQSxLQUFLQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUM1RkEsQ0FBQ0E7WUFFREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ2JBLFVBQVVBO29CQUNOQSxJQUFJQSxDQUFDQSxRQUFRQSxHQUFHQSxjQUFRQSxVQUFVQSxDQUFDQSxjQUFNQSxPQUFBQSxRQUFRQSxFQUFFQSxFQUFWQSxDQUFVQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxjQUFRQSxRQUFRQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN0RkEsQ0FBQ0E7UUFDSEEsQ0FBQ0E7UUFFREEsTUFBTUEsQ0FBQ0EsZ0JBQUtBLENBQUNBLFNBQVNBLFlBQUNBLFdBQVdBLEVBQUVBLE9BQU9BLEVBQUVBLFVBQVVBLENBQUNBLENBQUNBO0lBQzNEQSxDQUFDQTtJQUNISixtQkFBQ0E7QUFBREEsQ0FBQ0EsQUF2REQsRUFBcUMsaUJBQU8sRUF1RDNDO0FBdkRZLG9CQUFZLGVBdUR4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtnbG9iYWwsIG5vb3B9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5leHBvcnQge1Byb21pc2VXcmFwcGVyLCBQcm9taXNlQ29tcGxldGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL3Byb21pc2UnO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMvU3ViamVjdCc7XG5cbmltcG9ydCB7UHJvbWlzZU9ic2VydmFibGV9IGZyb20gJ3J4anMvb2JzZXJ2YWJsZS9Qcm9taXNlT2JzZXJ2YWJsZSc7XG5pbXBvcnQge3RvUHJvbWlzZX0gZnJvbSAncnhqcy9vcGVyYXRvci90b1Byb21pc2UnO1xuXG5leHBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG5leHBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMvU3ViamVjdCc7XG5cbmV4cG9ydCBjbGFzcyBUaW1lcldyYXBwZXIge1xuICBzdGF0aWMgc2V0VGltZW91dChmbjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLCBtaWxsaXM6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGdsb2JhbC5zZXRUaW1lb3V0KGZuLCBtaWxsaXMpO1xuICB9XG4gIHN0YXRpYyBjbGVhclRpbWVvdXQoaWQ6IG51bWJlcik6IHZvaWQgeyBnbG9iYWwuY2xlYXJUaW1lb3V0KGlkKTsgfVxuXG4gIHN0YXRpYyBzZXRJbnRlcnZhbChmbjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLCBtaWxsaXM6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGdsb2JhbC5zZXRJbnRlcnZhbChmbiwgbWlsbGlzKTtcbiAgfVxuICBzdGF0aWMgY2xlYXJJbnRlcnZhbChpZDogbnVtYmVyKTogdm9pZCB7IGdsb2JhbC5jbGVhckludGVydmFsKGlkKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgT2JzZXJ2YWJsZVdyYXBwZXIge1xuICAvLyBUT0RPKHZzYXZraW4pOiB3aGVuIHdlIHVzZSByeG5leHQsIHRyeSBpbmZlcnJpbmcgdGhlIGdlbmVyaWMgdHlwZSBmcm9tIHRoZSBmaXJzdCBhcmdcbiAgc3RhdGljIHN1YnNjcmliZTxUPihlbWl0dGVyOiBhbnksIG9uTmV4dDogKHZhbHVlOiBUKSA9PiB2b2lkLCBvbkVycm9yPzogKGV4Y2VwdGlvbjogYW55KSA9PiB2b2lkLFxuICAgICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGU6ICgpID0+IHZvaWQgPSAoKSA9PiB7fSk6IE9iamVjdCB7XG4gICAgb25FcnJvciA9ICh0eXBlb2Ygb25FcnJvciA9PT0gXCJmdW5jdGlvblwiKSAmJiBvbkVycm9yIHx8IG5vb3A7XG4gICAgb25Db21wbGV0ZSA9ICh0eXBlb2Ygb25Db21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiKSAmJiBvbkNvbXBsZXRlIHx8IG5vb3A7XG4gICAgcmV0dXJuIGVtaXR0ZXIuc3Vic2NyaWJlKHtuZXh0OiBvbk5leHQsIGVycm9yOiBvbkVycm9yLCBjb21wbGV0ZTogb25Db21wbGV0ZX0pO1xuICB9XG5cbiAgc3RhdGljIGlzT2JzZXJ2YWJsZShvYnM6IGFueSk6IGJvb2xlYW4geyByZXR1cm4gISFvYnMuc3Vic2NyaWJlOyB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciBgb2JzYCBoYXMgYW55IHN1YnNjcmliZXJzIGxpc3RlbmluZyB0byBldmVudHMuXG4gICAqL1xuICBzdGF0aWMgaGFzU3Vic2NyaWJlcnMob2JzOiBFdmVudEVtaXR0ZXI8YW55Pik6IGJvb2xlYW4geyByZXR1cm4gb2JzLm9ic2VydmVycy5sZW5ndGggPiAwOyB9XG5cbiAgc3RhdGljIGRpc3Bvc2Uoc3Vic2NyaXB0aW9uOiBhbnkpIHsgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgLSB1c2UgY2FsbEVtaXQoKSBpbnN0ZWFkXG4gICAqL1xuICBzdGF0aWMgY2FsbE5leHQoZW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4sIHZhbHVlOiBhbnkpIHsgZW1pdHRlci5uZXh0KHZhbHVlKTsgfVxuXG4gIHN0YXRpYyBjYWxsRW1pdChlbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiwgdmFsdWU6IGFueSkgeyBlbWl0dGVyLmVtaXQodmFsdWUpOyB9XG5cbiAgc3RhdGljIGNhbGxFcnJvcihlbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiwgZXJyb3I6IGFueSkgeyBlbWl0dGVyLmVycm9yKGVycm9yKTsgfVxuXG4gIHN0YXRpYyBjYWxsQ29tcGxldGUoZW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4pIHsgZW1pdHRlci5jb21wbGV0ZSgpOyB9XG5cbiAgc3RhdGljIGZyb21Qcm9taXNlKHByb21pc2U6IFByb21pc2U8YW55Pik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2VPYnNlcnZhYmxlLmNyZWF0ZShwcm9taXNlKTtcbiAgfVxuXG4gIHN0YXRpYyB0b1Byb21pc2Uob2JqOiBPYnNlcnZhYmxlPGFueT4pOiBQcm9taXNlPGFueT4geyByZXR1cm4gdG9Qcm9taXNlLmNhbGwob2JqKTsgfVxufVxuXG4vKipcbiAqIFVzZSBieSBkaXJlY3RpdmVzIGFuZCBjb21wb25lbnRzIHRvIGVtaXQgY3VzdG9tIEV2ZW50cy5cbiAqXG4gKiAjIyMgRXhhbXBsZXNcbiAqXG4gKiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGBaaXBweWAgYWx0ZXJuYXRpdmVseSBlbWl0cyBgb3BlbmAgYW5kIGBjbG9zZWAgZXZlbnRzIHdoZW4gaXRzXG4gKiB0aXRsZSBnZXRzIGNsaWNrZWQ6XG4gKlxuICogYGBgXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICd6aXBweScsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgIDxkaXYgY2xhc3M9XCJ6aXBweVwiPlxuICogICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZSgpXCI+VG9nZ2xlPC9kaXY+XG4gKiAgICAgPGRpdiBbaGlkZGVuXT1cIiF2aXNpYmxlXCI+XG4gKiAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gKiAgICAgPC9kaXY+XG4gKiAgPC9kaXY+YH0pXG4gKiBleHBvcnQgY2xhc3MgWmlwcHkge1xuICogICB2aXNpYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAqICAgQE91dHB1dCgpIG9wZW46IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICogICBAT3V0cHV0KCkgY2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICpcbiAqICAgdG9nZ2xlKCkge1xuICogICAgIHRoaXMudmlzaWJsZSA9ICF0aGlzLnZpc2libGU7XG4gKiAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xuICogICAgICAgdGhpcy5vcGVuLmVtaXQobnVsbCk7XG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgIHRoaXMuY2xvc2UuZW1pdChudWxsKTtcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFVzZSBSeC5PYnNlcnZhYmxlIGJ1dCBwcm92aWRlcyBhbiBhZGFwdGVyIHRvIG1ha2UgaXQgd29yayBhcyBzcGVjaWZpZWQgaGVyZTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9qaHVzYWluL29ic2VydmFibGUtc3BlY1xuICpcbiAqIE9uY2UgYSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNwZWMgaXMgYXZhaWxhYmxlLCBzd2l0Y2ggdG8gaXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudEVtaXR0ZXI8VD4gZXh0ZW5kcyBTdWJqZWN0PFQ+IHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfaXNBc3luYzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBbRXZlbnRFbWl0dGVyXSwgd2hpY2ggZGVwZW5kaW5nIG9uIFtpc0FzeW5jXSxcbiAgICogZGVsaXZlcnMgZXZlbnRzIHN5bmNocm9ub3VzbHkgb3IgYXN5bmNocm9ub3VzbHkuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihpc0FzeW5jOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5faXNBc3luYyA9IGlzQXN5bmM7XG4gIH1cblxuICBlbWl0KHZhbHVlOiBUKSB7IHN1cGVyLm5leHQodmFsdWUpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIC0gdXNlIC5lbWl0KHZhbHVlKSBpbnN0ZWFkXG4gICAqL1xuICBuZXh0KHZhbHVlOiBhbnkpIHsgc3VwZXIubmV4dCh2YWx1ZSk7IH1cblxuICBzdWJzY3JpYmUoZ2VuZXJhdG9yT3JOZXh0PzogYW55LCBlcnJvcj86IGFueSwgY29tcGxldGU/OiBhbnkpOiBhbnkge1xuICAgIGxldCBzY2hlZHVsZXJGbjtcbiAgICBsZXQgZXJyb3JGbiA9IChlcnI6IGFueSkgPT4gbnVsbDtcbiAgICBsZXQgY29tcGxldGVGbiA9ICgpID0+IG51bGw7XG5cbiAgICBpZiAoZ2VuZXJhdG9yT3JOZXh0ICYmIHR5cGVvZiBnZW5lcmF0b3JPck5leHQgPT09ICdvYmplY3QnKSB7XG4gICAgICBzY2hlZHVsZXJGbiA9IHRoaXMuX2lzQXN5bmMgPyAodmFsdWUpID0+IHsgc2V0VGltZW91dCgoKSA9PiBnZW5lcmF0b3JPck5leHQubmV4dCh2YWx1ZSkpOyB9IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSkgPT4geyBnZW5lcmF0b3JPck5leHQubmV4dCh2YWx1ZSk7IH07XG5cbiAgICAgIGlmIChnZW5lcmF0b3JPck5leHQuZXJyb3IpIHtcbiAgICAgICAgZXJyb3JGbiA9IHRoaXMuX2lzQXN5bmMgPyAoZXJyKSA9PiB7IHNldFRpbWVvdXQoKCkgPT4gZ2VuZXJhdG9yT3JOZXh0LmVycm9yKGVycikpOyB9IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyKSA9PiB7IGdlbmVyYXRvck9yTmV4dC5lcnJvcihlcnIpOyB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2VuZXJhdG9yT3JOZXh0LmNvbXBsZXRlKSB7XG4gICAgICAgIGNvbXBsZXRlRm4gPSB0aGlzLl9pc0FzeW5jID8gKCkgPT4geyBzZXRUaW1lb3V0KCgpID0+IGdlbmVyYXRvck9yTmV4dC5jb21wbGV0ZSgpKTsgfSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4geyBnZW5lcmF0b3JPck5leHQuY29tcGxldGUoKTsgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NoZWR1bGVyRm4gPSB0aGlzLl9pc0FzeW5jID8gKHZhbHVlKSA9PiB7IHNldFRpbWVvdXQoKCkgPT4gZ2VuZXJhdG9yT3JOZXh0KHZhbHVlKSk7IH0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlKSA9PiB7IGdlbmVyYXRvck9yTmV4dCh2YWx1ZSk7IH07XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBlcnJvckZuID1cbiAgICAgICAgICAgIHRoaXMuX2lzQXN5bmMgPyAoZXJyKSA9PiB7IHNldFRpbWVvdXQoKCkgPT4gZXJyb3IoZXJyKSk7IH0gOiAoZXJyKSA9PiB7IGVycm9yKGVycik7IH07XG4gICAgICB9XG5cbiAgICAgIGlmIChjb21wbGV0ZSkge1xuICAgICAgICBjb21wbGV0ZUZuID1cbiAgICAgICAgICAgIHRoaXMuX2lzQXN5bmMgPyAoKSA9PiB7IHNldFRpbWVvdXQoKCkgPT4gY29tcGxldGUoKSk7IH0gOiAoKSA9PiB7IGNvbXBsZXRlKCk7IH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLnN1YnNjcmliZShzY2hlZHVsZXJGbiwgZXJyb3JGbiwgY29tcGxldGVGbik7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar async_1 = require('angular2/src/facade/async');\r\n/**\r\n * An unmodifiable list of items that Angular keeps up to date when the state\r\n * of the application changes.\r\n *\r\n * The type of object that {@link QueryMetadata} and {@link ViewQueryMetadata} provide.\r\n *\r\n * Implements an iterable interface, therefore it can be used in both ES6\r\n * javascript `for (var i of items)` loops as well as in Angular templates with\r\n * `*ngFor=\"#i of myList\"`.\r\n *\r\n * Changes can be observed by subscribing to the changes `Observable`.\r\n *\r\n * NOTE: In the future this class will implement an `Observable` interface.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/RX8sJnQYl9FWuSCWme5z?p=preview))\r\n * ```typescript\r\n * @Component({...})\r\n * class Container {\r\n * constructor(@Query(Item) items: QueryList<Item>) {\r\n * items.changes.subscribe(_ => console.log(items.length));\r\n * }\r\n * }\r\n * ```\r\n */\r\nvar QueryList = (function () {\r\n function QueryList() {\r\n this._results = [];\r\n this._emitter = new async_1.EventEmitter();\r\n }\r\n Object.defineProperty(QueryList.prototype, \"changes\", {\r\n get: function () { return this._emitter; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryList.prototype, \"length\", {\r\n get: function () { return this._results.length; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryList.prototype, \"first\", {\r\n get: function () { return collection_1.ListWrapper.first(this._results); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryList.prototype, \"last\", {\r\n get: function () { return collection_1.ListWrapper.last(this._results); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * returns a new array with the passed in function applied to each element.\r\n */\r\n QueryList.prototype.map = function (fn) { return this._results.map(fn); };\r\n /**\r\n * returns a filtered array.\r\n */\r\n QueryList.prototype.filter = function (fn) { return this._results.filter(fn); };\r\n /**\r\n * returns a reduced value.\r\n */\r\n QueryList.prototype.reduce = function (fn, init) { return this._results.reduce(fn, init); };\r\n /**\r\n * executes function for each element in a query.\r\n */\r\n QueryList.prototype.forEach = function (fn) { this._results.forEach(fn); };\r\n /**\r\n * converts QueryList into an array\r\n */\r\n QueryList.prototype.toArray = function () { return collection_1.ListWrapper.clone(this._results); };\r\n QueryList.prototype[lang_1.getSymbolIterator()] = function () { return this._results[lang_1.getSymbolIterator()](); };\r\n QueryList.prototype.toString = function () { return this._results.toString(); };\r\n /**\r\n * @internal\r\n */\r\n QueryList.prototype.reset = function (res) { this._results = res; };\r\n /** @internal */\r\n QueryList.prototype.notifyOnChanges = function () { this._emitter.emit(this); };\r\n return QueryList;\r\n})();\r\nexports.QueryList = QueryList;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnlfbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9xdWVyeV9saXN0LnRzIl0sIm5hbWVzIjpbIlF1ZXJ5TGlzdCIsIlF1ZXJ5TGlzdC5jb25zdHJ1Y3RvciIsIlF1ZXJ5TGlzdC5jaGFuZ2VzIiwiUXVlcnlMaXN0Lmxlbmd0aCIsIlF1ZXJ5TGlzdC5maXJzdCIsIlF1ZXJ5TGlzdC5sYXN0IiwiUXVlcnlMaXN0Lm1hcCIsIlF1ZXJ5TGlzdC5maWx0ZXIiLCJRdWVyeUxpc3QucmVkdWNlIiwiUXVlcnlMaXN0LmZvckVhY2giLCJRdWVyeUxpc3QudG9BcnJheSIsIlF1ZXJ5TGlzdFtnZXRTeW1ib2xJdGVyYXRvcigpXSIsIlF1ZXJ5TGlzdC50b1N0cmluZyIsIlF1ZXJ5TGlzdC5yZXNldCIsIlF1ZXJ5TGlzdC5ub3RpZnlPbkNoYW5nZXMiXSwibWFwcGluZ3MiOiJBQUFBLDJCQUFzQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ3ZFLHFCQUFnQywwQkFBMEIsQ0FBQyxDQUFBO0FBQzNELHNCQUF1QywyQkFBMkIsQ0FBQyxDQUFBO0FBR25FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNIO0lBQUFBO1FBQ1VDLGFBQVFBLEdBQWFBLEVBQUVBLENBQUNBO1FBQ3hCQSxhQUFRQSxHQUFHQSxJQUFJQSxvQkFBWUEsRUFBRUEsQ0FBQ0E7SUEyQ3hDQSxDQUFDQTtJQXpDQ0Qsc0JBQUlBLDhCQUFPQTthQUFYQSxjQUFpQ0UsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBRjtJQUN4REEsc0JBQUlBLDZCQUFNQTthQUFWQSxjQUF1QkcsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBSDtJQUNyREEsc0JBQUlBLDRCQUFLQTthQUFUQSxjQUFpQkksTUFBTUEsQ0FBQ0Esd0JBQVdBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUo7SUFDM0RBLHNCQUFJQSwyQkFBSUE7YUFBUkEsY0FBZ0JLLE1BQU1BLENBQUNBLHdCQUFXQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFMO0lBRXpEQTs7T0FFR0E7SUFDSEEsdUJBQUdBLEdBQUhBLFVBQU9BLEVBQWtCQSxJQUFTTSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxHQUFHQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUVqRU47O09BRUdBO0lBQ0hBLDBCQUFNQSxHQUFOQSxVQUFPQSxFQUF3QkEsSUFBU08sTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFMUVQOztPQUVHQTtJQUNIQSwwQkFBTUEsR0FBTkEsVUFBVUEsRUFBMEJBLEVBQUVBLElBQU9BLElBQU9RLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLE1BQU1BLENBQUNBLEVBQUVBLEVBQUVBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBRTVGUjs7T0FFR0E7SUFDSEEsMkJBQU9BLEdBQVBBLFVBQVFBLEVBQXFCQSxJQUFVUyxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxPQUFPQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUVuRVQ7O09BRUdBO0lBQ0hBLDJCQUFPQSxHQUFQQSxjQUFpQlUsTUFBTUEsQ0FBQ0Esd0JBQVdBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBRTNEVixvQkFBQ0Esd0JBQWlCQSxFQUFFQSxDQUFDQSxHQUFyQkEsY0FBK0JXLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLHdCQUFpQkEsRUFBRUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFN0VYLDRCQUFRQSxHQUFSQSxjQUFxQlksTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFdkRaOztPQUVHQTtJQUNIQSx5QkFBS0EsR0FBTEEsVUFBTUEsR0FBUUEsSUFBVWEsSUFBSUEsQ0FBQ0EsUUFBUUEsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFOUNiLGdCQUFnQkE7SUFDaEJBLG1DQUFlQSxHQUFmQSxjQUEwQmMsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDdkRkLGdCQUFDQTtBQUFEQSxDQUFDQSxBQTdDRCxJQTZDQztBQTdDWSxpQkFBUyxZQTZDckIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlzdFdyYXBwZXIsIE1hcFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge2dldFN5bWJvbEl0ZXJhdG9yfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBFdmVudEVtaXR0ZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYXN5bmMnO1xuXG5cbi8qKlxuICogQW4gdW5tb2RpZmlhYmxlIGxpc3Qgb2YgaXRlbXMgdGhhdCBBbmd1bGFyIGtlZXBzIHVwIHRvIGRhdGUgd2hlbiB0aGUgc3RhdGVcbiAqIG9mIHRoZSBhcHBsaWNhdGlvbiBjaGFuZ2VzLlxuICpcbiAqIFRoZSB0eXBlIG9mIG9iamVjdCB0aGF0IHtAbGluayBRdWVyeU1ldGFkYXRhfSBhbmQge0BsaW5rIFZpZXdRdWVyeU1ldGFkYXRhfSBwcm92aWRlLlxuICpcbiAqIEltcGxlbWVudHMgYW4gaXRlcmFibGUgaW50ZXJmYWNlLCB0aGVyZWZvcmUgaXQgY2FuIGJlIHVzZWQgaW4gYm90aCBFUzZcbiAqIGphdmFzY3JpcHQgYGZvciAodmFyIGkgb2YgaXRlbXMpYCBsb29wcyBhcyB3ZWxsIGFzIGluIEFuZ3VsYXIgdGVtcGxhdGVzIHdpdGhcbiAqIGAqbmdGb3I9XCIjaSBvZiBteUxpc3RcImAuXG4gKlxuICogQ2hhbmdlcyBjYW4gYmUgb2JzZXJ2ZWQgYnkgc3Vic2NyaWJpbmcgdG8gdGhlIGNoYW5nZXMgYE9ic2VydmFibGVgLlxuICpcbiAqIE5PVEU6IEluIHRoZSBmdXR1cmUgdGhpcyBjbGFzcyB3aWxsIGltcGxlbWVudCBhbiBgT2JzZXJ2YWJsZWAgaW50ZXJmYWNlLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9SWDhzSm5RWWw5Rld1U0NXbWU1ej9wPXByZXZpZXcpKVxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7Li4ufSlcbiAqIGNsYXNzIENvbnRhaW5lciB7XG4gKiAgIGNvbnN0cnVjdG9yKEBRdWVyeShJdGVtKSBpdGVtczogUXVlcnlMaXN0PEl0ZW0+KSB7XG4gKiAgICAgaXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoXyA9PiBjb25zb2xlLmxvZyhpdGVtcy5sZW5ndGgpKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWVyeUxpc3Q8VD4ge1xuICBwcml2YXRlIF9yZXN1bHRzOiBBcnJheTxUPiA9IFtdO1xuICBwcml2YXRlIF9lbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGdldCBjaGFuZ2VzKCk6IE9ic2VydmFibGU8YW55PiB7IHJldHVybiB0aGlzLl9lbWl0dGVyOyB9XG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3Jlc3VsdHMubGVuZ3RoOyB9XG4gIGdldCBmaXJzdCgpOiBUIHsgcmV0dXJuIExpc3RXcmFwcGVyLmZpcnN0KHRoaXMuX3Jlc3VsdHMpOyB9XG4gIGdldCBsYXN0KCk6IFQgeyByZXR1cm4gTGlzdFdyYXBwZXIubGFzdCh0aGlzLl9yZXN1bHRzKTsgfVxuXG4gIC8qKlxuICAgKiByZXR1cm5zIGEgbmV3IGFycmF5IHdpdGggdGhlIHBhc3NlZCBpbiBmdW5jdGlvbiBhcHBsaWVkIHRvIGVhY2ggZWxlbWVudC5cbiAgICovXG4gIG1hcDxVPihmbjogKGl0ZW06IFQpID0+IFUpOiBVW10geyByZXR1cm4gdGhpcy5fcmVzdWx0cy5tYXAoZm4pOyB9XG5cbiAgLyoqXG4gICAqIHJldHVybnMgYSBmaWx0ZXJlZCBhcnJheS5cbiAgICovXG4gIGZpbHRlcihmbjogKGl0ZW06IFQpID0+IGJvb2xlYW4pOiBUW10geyByZXR1cm4gdGhpcy5fcmVzdWx0cy5maWx0ZXIoZm4pOyB9XG5cbiAgLyoqXG4gICAqIHJldHVybnMgYSByZWR1Y2VkIHZhbHVlLlxuICAgKi9cbiAgcmVkdWNlPFU+KGZuOiAoYWNjOiBVLCBpdGVtOiBUKSA9PiBVLCBpbml0OiBVKTogVSB7IHJldHVybiB0aGlzLl9yZXN1bHRzLnJlZHVjZShmbiwgaW5pdCk7IH1cblxuICAvKipcbiAgICogZXhlY3V0ZXMgZnVuY3Rpb24gZm9yIGVhY2ggZWxlbWVudCBpbiBhIHF1ZXJ5LlxuICAgKi9cbiAgZm9yRWFjaChmbjogKGl0ZW06IFQpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5fcmVzdWx0cy5mb3JFYWNoKGZuKTsgfVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0cyBRdWVyeUxpc3QgaW50byBhbiBhcnJheVxuICAgKi9cbiAgdG9BcnJheSgpOiBUW10geyByZXR1cm4gTGlzdFdyYXBwZXIuY2xvbmUodGhpcy5fcmVzdWx0cyk7IH1cblxuICBbZ2V0U3ltYm9sSXRlcmF0b3IoKV0oKTogYW55IHsgcmV0dXJuIHRoaXMuX3Jlc3VsdHNbZ2V0U3ltYm9sSXRlcmF0b3IoKV0oKTsgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9yZXN1bHRzLnRvU3RyaW5nKCk7IH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICByZXNldChyZXM6IFRbXSk6IHZvaWQgeyB0aGlzLl9yZXN1bHRzID0gcmVzOyB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBub3RpZnlPbkNoYW5nZXMoKTogdm9pZCB7IHRoaXMuX2VtaXR0ZXIuZW1pdCh0aGlzKTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar provider_1 = require('angular2/src/core/di/provider');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar PipeProvider = (function (_super) {\r\n __extends(PipeProvider, _super);\r\n function PipeProvider(name, pure, key, resolvedFactories, multiBinding) {\r\n _super.call(this, key, resolvedFactories, multiBinding);\r\n this.name = name;\r\n this.pure = pure;\r\n }\r\n PipeProvider.createFromType = function (type, metadata) {\r\n var provider = new di_1.Provider(type, { useClass: type });\r\n var rb = provider_1.resolveProvider(provider);\r\n return new PipeProvider(metadata.name, metadata.pure, rb.key, rb.resolvedFactories, rb.multiProvider);\r\n };\r\n return PipeProvider;\r\n})(provider_1.ResolvedProvider_);\r\nexports.PipeProvider = PipeProvider;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZV9wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL3BpcGVzL3BpcGVfcHJvdmlkZXIudHMiXSwibmFtZXMiOlsiUGlwZVByb3ZpZGVyIiwiUGlwZVByb3ZpZGVyLmNvbnN0cnVjdG9yIiwiUGlwZVByb3ZpZGVyLmNyZWF0ZUZyb21UeXBlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHlCQUFrRSwrQkFBK0IsQ0FBQyxDQUFBO0FBQ2xHLG1CQUE4QyxzQkFBc0IsQ0FBQyxDQUFBO0FBR3JFO0lBQWtDQSxnQ0FBaUJBO0lBQ2pEQSxzQkFBbUJBLElBQVlBLEVBQVNBLElBQWFBLEVBQUVBLEdBQVFBLEVBQ25EQSxpQkFBb0NBLEVBQUVBLFlBQXFCQTtRQUNyRUMsa0JBQU1BLEdBQUdBLEVBQUVBLGlCQUFpQkEsRUFBRUEsWUFBWUEsQ0FBQ0EsQ0FBQ0E7UUFGM0JBLFNBQUlBLEdBQUpBLElBQUlBLENBQVFBO1FBQVNBLFNBQUlBLEdBQUpBLElBQUlBLENBQVNBO0lBR3JEQSxDQUFDQTtJQUVNRCwyQkFBY0EsR0FBckJBLFVBQXNCQSxJQUFVQSxFQUFFQSxRQUFzQkE7UUFDdERFLElBQUlBLFFBQVFBLEdBQUdBLElBQUlBLGFBQVFBLENBQUNBLElBQUlBLEVBQUVBLEVBQUNBLFFBQVFBLEVBQUVBLElBQUlBLEVBQUNBLENBQUNBLENBQUNBO1FBQ3BEQSxJQUFJQSxFQUFFQSxHQUFHQSwwQkFBZUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0E7UUFDbkNBLE1BQU1BLENBQUNBLElBQUlBLFlBQVlBLENBQUNBLFFBQVFBLENBQUNBLElBQUlBLEVBQUVBLFFBQVFBLENBQUNBLElBQUlBLEVBQUVBLEVBQUVBLENBQUNBLEdBQUdBLEVBQUVBLEVBQUVBLENBQUNBLGlCQUFpQkEsRUFDMURBLEVBQUVBLENBQUNBLGFBQWFBLENBQUNBLENBQUNBO0lBQzVDQSxDQUFDQTtJQUNIRixtQkFBQ0E7QUFBREEsQ0FBQ0EsQUFaRCxFQUFrQyw0QkFBaUIsRUFZbEQ7QUFaWSxvQkFBWSxlQVl4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtSZXNvbHZlZEZhY3RvcnksIHJlc29sdmVQcm92aWRlciwgUmVzb2x2ZWRQcm92aWRlcl99IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpL3Byb3ZpZGVyJztcbmltcG9ydCB7S2V5LCBSZXNvbHZlZFByb3ZpZGVyLCBQcm92aWRlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtQaXBlTWV0YWRhdGF9IGZyb20gJy4uL21ldGFkYXRhL2RpcmVjdGl2ZXMnO1xuXG5leHBvcnQgY2xhc3MgUGlwZVByb3ZpZGVyIGV4dGVuZHMgUmVzb2x2ZWRQcm92aWRlcl8ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgcHVyZTogYm9vbGVhbiwga2V5OiBLZXksXG4gICAgICAgICAgICAgIHJlc29sdmVkRmFjdG9yaWVzOiBSZXNvbHZlZEZhY3RvcnlbXSwgbXVsdGlCaW5kaW5nOiBib29sZWFuKSB7XG4gICAgc3VwZXIoa2V5LCByZXNvbHZlZEZhY3RvcmllcywgbXVsdGlCaW5kaW5nKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVGcm9tVHlwZSh0eXBlOiBUeXBlLCBtZXRhZGF0YTogUGlwZU1ldGFkYXRhKTogUGlwZVByb3ZpZGVyIHtcbiAgICB2YXIgcHJvdmlkZXIgPSBuZXcgUHJvdmlkZXIodHlwZSwge3VzZUNsYXNzOiB0eXBlfSk7XG4gICAgdmFyIHJiID0gcmVzb2x2ZVByb3ZpZGVyKHByb3ZpZGVyKTtcbiAgICByZXR1cm4gbmV3IFBpcGVQcm92aWRlcihtZXRhZGF0YS5uYW1lLCBtZXRhZGF0YS5wdXJlLCByYi5rZXksIHJiLnJlc29sdmVkRmFjdG9yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJiLm11bHRpUHJvdmlkZXIpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar provider_1 = require('angular2/src/core/di/provider');\r\nvar injector_1 = require('angular2/src/core/di/injector');\r\nvar provider_2 = require('angular2/src/core/di/provider');\r\nvar di_2 = require('../metadata/di');\r\nvar view_type_1 = require('./view_type');\r\nvar element_ref_1 = require('./element_ref');\r\nvar view_container_ref_1 = require('./view_container_ref');\r\nvar element_ref_2 = require('./element_ref');\r\nvar api_1 = require('angular2/src/core/render/api');\r\nvar template_ref_1 = require('./template_ref');\r\nvar directives_1 = require('../metadata/directives');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar query_list_1 = require('./query_list');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nvar pipe_provider_1 = require('angular2/src/core/pipes/pipe_provider');\r\nvar view_container_ref_2 = require(\"./view_container_ref\");\r\nvar _staticKeys;\r\nvar StaticKeys = (function () {\r\n function StaticKeys() {\r\n this.templateRefId = di_1.Key.get(template_ref_1.TemplateRef).id;\r\n this.viewContainerId = di_1.Key.get(view_container_ref_1.ViewContainerRef).id;\r\n this.changeDetectorRefId = di_1.Key.get(change_detection_1.ChangeDetectorRef).id;\r\n this.elementRefId = di_1.Key.get(element_ref_2.ElementRef).id;\r\n this.rendererId = di_1.Key.get(api_1.Renderer).id;\r\n }\r\n StaticKeys.instance = function () {\r\n if (lang_1.isBlank(_staticKeys))\r\n _staticKeys = new StaticKeys();\r\n return _staticKeys;\r\n };\r\n return StaticKeys;\r\n})();\r\nexports.StaticKeys = StaticKeys;\r\nvar DirectiveDependency = (function (_super) {\r\n __extends(DirectiveDependency, _super);\r\n function DirectiveDependency(key, optional, lowerBoundVisibility, upperBoundVisibility, properties, attributeName, queryDecorator) {\r\n _super.call(this, key, optional, lowerBoundVisibility, upperBoundVisibility, properties);\r\n this.attributeName = attributeName;\r\n this.queryDecorator = queryDecorator;\r\n this._verify();\r\n }\r\n /** @internal */\r\n DirectiveDependency.prototype._verify = function () {\r\n var count = 0;\r\n if (lang_1.isPresent(this.queryDecorator))\r\n count++;\r\n if (lang_1.isPresent(this.attributeName))\r\n count++;\r\n if (count > 1)\r\n throw new exceptions_1.BaseException('A directive injectable can contain only one of the following @Attribute or @Query.');\r\n };\r\n DirectiveDependency.createFrom = function (d) {\r\n return new DirectiveDependency(d.key, d.optional, d.lowerBoundVisibility, d.upperBoundVisibility, d.properties, DirectiveDependency._attributeName(d.properties), DirectiveDependency._query(d.properties));\r\n };\r\n /** @internal */\r\n DirectiveDependency._attributeName = function (properties) {\r\n var p = properties.find(function (p) { return p instanceof di_2.AttributeMetadata; });\r\n return lang_1.isPresent(p) ? p.attributeName : null;\r\n };\r\n /** @internal */\r\n DirectiveDependency._query = function (properties) {\r\n return properties.find(function (p) { return p instanceof di_2.QueryMetadata; });\r\n };\r\n return DirectiveDependency;\r\n})(di_1.Dependency);\r\nexports.DirectiveDependency = DirectiveDependency;\r\nvar DirectiveProvider = (function (_super) {\r\n __extends(DirectiveProvider, _super);\r\n function DirectiveProvider(key, factory, deps, isComponent, providers, viewProviders, queries) {\r\n _super.call(this, key, [new provider_2.ResolvedFactory(factory, deps)], false);\r\n this.isComponent = isComponent;\r\n this.providers = providers;\r\n this.viewProviders = viewProviders;\r\n this.queries = queries;\r\n }\r\n Object.defineProperty(DirectiveProvider.prototype, \"displayName\", {\r\n get: function () { return this.key.displayName; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DirectiveProvider.createFromType = function (type, meta) {\r\n var provider = new di_1.Provider(type, { useClass: type });\r\n if (lang_1.isBlank(meta)) {\r\n meta = new directives_1.DirectiveMetadata();\r\n }\r\n var rb = provider_2.resolveProvider(provider);\r\n var rf = rb.resolvedFactories[0];\r\n var deps = rf.dependencies.map(DirectiveDependency.createFrom);\r\n var isComponent = meta instanceof directives_1.ComponentMetadata;\r\n var resolvedProviders = lang_1.isPresent(meta.providers) ? di_1.Injector.resolve(meta.providers) : null;\r\n var resolvedViewProviders = meta instanceof directives_1.ComponentMetadata && lang_1.isPresent(meta.viewProviders) ?\r\n di_1.Injector.resolve(meta.viewProviders) :\r\n null;\r\n var queries = [];\r\n if (lang_1.isPresent(meta.queries)) {\r\n collection_1.StringMapWrapper.forEach(meta.queries, function (meta, fieldName) {\r\n var setter = reflection_1.reflector.setter(fieldName);\r\n queries.push(new QueryMetadataWithSetter(setter, meta));\r\n });\r\n }\r\n // queries passed into the constructor.\r\n // TODO: remove this after constructor queries are no longer supported\r\n deps.forEach(function (d) {\r\n if (lang_1.isPresent(d.queryDecorator)) {\r\n queries.push(new QueryMetadataWithSetter(null, d.queryDecorator));\r\n }\r\n });\r\n return new DirectiveProvider(rb.key, rf.factory, deps, isComponent, resolvedProviders, resolvedViewProviders, queries);\r\n };\r\n return DirectiveProvider;\r\n})(provider_2.ResolvedProvider_);\r\nexports.DirectiveProvider = DirectiveProvider;\r\nvar QueryMetadataWithSetter = (function () {\r\n function QueryMetadataWithSetter(setter, metadata) {\r\n this.setter = setter;\r\n this.metadata = metadata;\r\n }\r\n return QueryMetadataWithSetter;\r\n})();\r\nexports.QueryMetadataWithSetter = QueryMetadataWithSetter;\r\nfunction setProvidersVisibility(providers, visibility, result) {\r\n for (var i = 0; i < providers.length; i++) {\r\n result.set(providers[i].key.id, visibility);\r\n }\r\n}\r\nvar AppProtoElement = (function () {\r\n function AppProtoElement(firstProviderIsComponent, index, attributes, pwvs, protoQueryRefs, directiveVariableBindings) {\r\n this.firstProviderIsComponent = firstProviderIsComponent;\r\n this.index = index;\r\n this.attributes = attributes;\r\n this.protoQueryRefs = protoQueryRefs;\r\n this.directiveVariableBindings = directiveVariableBindings;\r\n var length = pwvs.length;\r\n if (length > 0) {\r\n this.protoInjector = new injector_1.ProtoInjector(pwvs);\r\n }\r\n else {\r\n this.protoInjector = null;\r\n this.protoQueryRefs = [];\r\n }\r\n }\r\n AppProtoElement.create = function (metadataCache, index, attributes, directiveTypes, directiveVariableBindings) {\r\n var componentDirProvider = null;\r\n var mergedProvidersMap = new Map();\r\n var providerVisibilityMap = new Map();\r\n var providers = collection_1.ListWrapper.createGrowableSize(directiveTypes.length);\r\n var protoQueryRefs = [];\r\n for (var i = 0; i < directiveTypes.length; i++) {\r\n var dirProvider = metadataCache.getResolvedDirectiveMetadata(directiveTypes[i]);\r\n providers[i] = new injector_1.ProviderWithVisibility(dirProvider, dirProvider.isComponent ? injector_1.Visibility.PublicAndPrivate : injector_1.Visibility.Public);\r\n if (dirProvider.isComponent) {\r\n componentDirProvider = dirProvider;\r\n }\r\n else {\r\n if (lang_1.isPresent(dirProvider.providers)) {\r\n provider_1.mergeResolvedProviders(dirProvider.providers, mergedProvidersMap);\r\n setProvidersVisibility(dirProvider.providers, injector_1.Visibility.Public, providerVisibilityMap);\r\n }\r\n }\r\n if (lang_1.isPresent(dirProvider.viewProviders)) {\r\n provider_1.mergeResolvedProviders(dirProvider.viewProviders, mergedProvidersMap);\r\n setProvidersVisibility(dirProvider.viewProviders, injector_1.Visibility.Private, providerVisibilityMap);\r\n }\r\n for (var queryIdx = 0; queryIdx < dirProvider.queries.length; queryIdx++) {\r\n var q = dirProvider.queries[queryIdx];\r\n protoQueryRefs.push(new ProtoQueryRef(i, q.setter, q.metadata));\r\n }\r\n }\r\n if (lang_1.isPresent(componentDirProvider) && lang_1.isPresent(componentDirProvider.providers)) {\r\n // directive providers need to be prioritized over component providers\r\n provider_1.mergeResolvedProviders(componentDirProvider.providers, mergedProvidersMap);\r\n setProvidersVisibility(componentDirProvider.providers, injector_1.Visibility.Public, providerVisibilityMap);\r\n }\r\n mergedProvidersMap.forEach(function (provider, _) {\r\n providers.push(new injector_1.ProviderWithVisibility(provider, providerVisibilityMap.get(provider.key.id)));\r\n });\r\n return new AppProtoElement(lang_1.isPresent(componentDirProvider), index, attributes, providers, protoQueryRefs, directiveVariableBindings);\r\n };\r\n AppProtoElement.prototype.getProviderAtIndex = function (index) { return this.protoInjector.getProviderAtIndex(index); };\r\n return AppProtoElement;\r\n})();\r\nexports.AppProtoElement = AppProtoElement;\r\nvar _Context = (function () {\r\n function _Context(element, componentElement, injector) {\r\n this.element = element;\r\n this.componentElement = componentElement;\r\n this.injector = injector;\r\n }\r\n return _Context;\r\n})();\r\nvar InjectorWithHostBoundary = (function () {\r\n function InjectorWithHostBoundary(injector, hostInjectorBoundary) {\r\n this.injector = injector;\r\n this.hostInjectorBoundary = hostInjectorBoundary;\r\n }\r\n return InjectorWithHostBoundary;\r\n})();\r\nexports.InjectorWithHostBoundary = InjectorWithHostBoundary;\r\nvar AppElement = (function () {\r\n function AppElement(proto, parentView, parent, nativeElement, embeddedViewFactory) {\r\n var _this = this;\r\n this.proto = proto;\r\n this.parentView = parentView;\r\n this.parent = parent;\r\n this.nativeElement = nativeElement;\r\n this.embeddedViewFactory = embeddedViewFactory;\r\n this.nestedViews = null;\r\n this.componentView = null;\r\n this.ref = new element_ref_1.ElementRef_(this);\r\n var parentInjector = lang_1.isPresent(parent) ? parent._injector : parentView.parentInjector;\r\n if (lang_1.isPresent(this.proto.protoInjector)) {\r\n var isBoundary;\r\n if (lang_1.isPresent(parent) && lang_1.isPresent(parent.proto.protoInjector)) {\r\n isBoundary = false;\r\n }\r\n else {\r\n isBoundary = parentView.hostInjectorBoundary;\r\n }\r\n this._queryStrategy = this._buildQueryStrategy();\r\n this._injector = new di_1.Injector(this.proto.protoInjector, parentInjector, isBoundary, this, function () { return _this._debugContext(); });\r\n // we couple ourselves to the injector strategy to avoid polymorphic calls\r\n var injectorStrategy = this._injector.internalStrategy;\r\n this._strategy = injectorStrategy instanceof injector_1.InjectorInlineStrategy ?\r\n new ElementDirectiveInlineStrategy(injectorStrategy, this) :\r\n new ElementDirectiveDynamicStrategy(injectorStrategy, this);\r\n this._strategy.init();\r\n }\r\n else {\r\n this._queryStrategy = null;\r\n this._injector = parentInjector;\r\n this._strategy = null;\r\n }\r\n }\r\n AppElement.getViewParentInjector = function (parentViewType, containerAppElement, imperativelyCreatedProviders, rootInjector) {\r\n var parentInjector;\r\n var hostInjectorBoundary;\r\n switch (parentViewType) {\r\n case view_type_1.ViewType.COMPONENT:\r\n parentInjector = containerAppElement._injector;\r\n hostInjectorBoundary = true;\r\n break;\r\n case view_type_1.ViewType.EMBEDDED:\r\n parentInjector = lang_1.isPresent(containerAppElement.proto.protoInjector) ?\r\n containerAppElement._injector.parent :\r\n containerAppElement._injector;\r\n hostInjectorBoundary = containerAppElement._injector.hostBoundary;\r\n break;\r\n case view_type_1.ViewType.HOST:\r\n if (lang_1.isPresent(containerAppElement)) {\r\n // host view is attached to a container\r\n parentInjector = lang_1.isPresent(containerAppElement.proto.protoInjector) ?\r\n containerAppElement._injector.parent :\r\n containerAppElement._injector;\r\n if (lang_1.isPresent(imperativelyCreatedProviders)) {\r\n var imperativeProvidersWithVisibility = imperativelyCreatedProviders.map(function (p) { return new injector_1.ProviderWithVisibility(p, injector_1.Visibility.Public); });\r\n // The imperative injector is similar to having an element between\r\n // the dynamic-loaded component and its parent => no boundary between\r\n // the component and imperativelyCreatedInjector.\r\n parentInjector = new di_1.Injector(new injector_1.ProtoInjector(imperativeProvidersWithVisibility), parentInjector, true, null, null);\r\n hostInjectorBoundary = false;\r\n }\r\n else {\r\n hostInjectorBoundary = containerAppElement._injector.hostBoundary;\r\n }\r\n }\r\n else {\r\n // bootstrap\r\n parentInjector = rootInjector;\r\n hostInjectorBoundary = true;\r\n }\r\n break;\r\n }\r\n return new InjectorWithHostBoundary(parentInjector, hostInjectorBoundary);\r\n };\r\n AppElement.prototype.attachComponentView = function (componentView) { this.componentView = componentView; };\r\n AppElement.prototype._debugContext = function () {\r\n var c = this.parentView.getDebugContext(this, null, null);\r\n return lang_1.isPresent(c) ? new _Context(c.element, c.componentElement, c.injector) : null;\r\n };\r\n AppElement.prototype.hasVariableBinding = function (name) {\r\n var vb = this.proto.directiveVariableBindings;\r\n return lang_1.isPresent(vb) && collection_1.StringMapWrapper.contains(vb, name);\r\n };\r\n AppElement.prototype.getVariableBinding = function (name) {\r\n var index = this.proto.directiveVariableBindings[name];\r\n return lang_1.isPresent(index) ? this.getDirectiveAtIndex(index) : this.getElementRef();\r\n };\r\n AppElement.prototype.get = function (token) { return this._injector.get(token); };\r\n AppElement.prototype.hasDirective = function (type) { return lang_1.isPresent(this._injector.getOptional(type)); };\r\n AppElement.prototype.getComponent = function () { return lang_1.isPresent(this._strategy) ? this._strategy.getComponent() : null; };\r\n AppElement.prototype.getInjector = function () { return this._injector; };\r\n AppElement.prototype.getElementRef = function () { return this.ref; };\r\n AppElement.prototype.getViewContainerRef = function () { return new view_container_ref_2.ViewContainerRef_(this); };\r\n AppElement.prototype.getTemplateRef = function () {\r\n if (lang_1.isPresent(this.embeddedViewFactory)) {\r\n return new template_ref_1.TemplateRef_(this.ref);\r\n }\r\n return null;\r\n };\r\n AppElement.prototype.getDependency = function (injector, provider, dep) {\r\n if (provider instanceof DirectiveProvider) {\r\n var dirDep = dep;\r\n if (lang_1.isPresent(dirDep.attributeName))\r\n return this._buildAttribute(dirDep);\r\n if (lang_1.isPresent(dirDep.queryDecorator))\r\n return this._queryStrategy.findQuery(dirDep.queryDecorator).list;\r\n if (dirDep.key.id === StaticKeys.instance().changeDetectorRefId) {\r\n // We provide the component's view change detector to components and\r\n // the surrounding component's change detector to directives.\r\n if (this.proto.firstProviderIsComponent) {\r\n // Note: The component view is not yet created when\r\n // this method is called!\r\n return new _ComponentViewChangeDetectorRef(this);\r\n }\r\n else {\r\n return this.parentView.changeDetector.ref;\r\n }\r\n }\r\n if (dirDep.key.id === StaticKeys.instance().elementRefId) {\r\n return this.getElementRef();\r\n }\r\n if (dirDep.key.id === StaticKeys.instance().viewContainerId) {\r\n return this.getViewContainerRef();\r\n }\r\n if (dirDep.key.id === StaticKeys.instance().templateRefId) {\r\n var tr = this.getTemplateRef();\r\n if (lang_1.isBlank(tr) && !dirDep.optional) {\r\n throw new di_1.NoProviderError(null, dirDep.key);\r\n }\r\n return tr;\r\n }\r\n if (dirDep.key.id === StaticKeys.instance().rendererId) {\r\n return this.parentView.renderer;\r\n }\r\n }\r\n else if (provider instanceof pipe_provider_1.PipeProvider) {\r\n if (dep.key.id === StaticKeys.instance().changeDetectorRefId) {\r\n // We provide the component's view change detector to components and\r\n // the surrounding component's change detector to directives.\r\n if (this.proto.firstProviderIsComponent) {\r\n // Note: The component view is not yet created when\r\n // this method is called!\r\n return new _ComponentViewChangeDetectorRef(this);\r\n }\r\n else {\r\n return this.parentView.changeDetector;\r\n }\r\n }\r\n }\r\n return injector_1.UNDEFINED;\r\n };\r\n AppElement.prototype._buildAttribute = function (dep) {\r\n var attributes = this.proto.attributes;\r\n if (lang_1.isPresent(attributes) && collection_1.StringMapWrapper.contains(attributes, dep.attributeName)) {\r\n return attributes[dep.attributeName];\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n AppElement.prototype.addDirectivesMatchingQuery = function (query, list) {\r\n var templateRef = this.getTemplateRef();\r\n if (query.selector === template_ref_1.TemplateRef && lang_1.isPresent(templateRef)) {\r\n list.push(templateRef);\r\n }\r\n if (this._strategy != null) {\r\n this._strategy.addDirectivesMatchingQuery(query, list);\r\n }\r\n };\r\n AppElement.prototype._buildQueryStrategy = function () {\r\n if (this.proto.protoQueryRefs.length === 0) {\r\n return _emptyQueryStrategy;\r\n }\r\n else if (this.proto.protoQueryRefs.length <=\r\n InlineQueryStrategy.NUMBER_OF_SUPPORTED_QUERIES) {\r\n return new InlineQueryStrategy(this);\r\n }\r\n else {\r\n return new DynamicQueryStrategy(this);\r\n }\r\n };\r\n AppElement.prototype.getDirectiveAtIndex = function (index) { return this._injector.getAt(index); };\r\n AppElement.prototype.ngAfterViewChecked = function () {\r\n if (lang_1.isPresent(this._queryStrategy))\r\n this._queryStrategy.updateViewQueries();\r\n };\r\n AppElement.prototype.ngAfterContentChecked = function () {\r\n if (lang_1.isPresent(this._queryStrategy))\r\n this._queryStrategy.updateContentQueries();\r\n };\r\n AppElement.prototype.traverseAndSetQueriesAsDirty = function () {\r\n var inj = this;\r\n while (lang_1.isPresent(inj)) {\r\n inj._setQueriesAsDirty();\r\n if (lang_1.isBlank(inj.parent) && inj.parentView.proto.type === view_type_1.ViewType.EMBEDDED) {\r\n inj = inj.parentView.containerAppElement;\r\n }\r\n else {\r\n inj = inj.parent;\r\n }\r\n }\r\n };\r\n AppElement.prototype._setQueriesAsDirty = function () {\r\n if (lang_1.isPresent(this._queryStrategy)) {\r\n this._queryStrategy.setContentQueriesAsDirty();\r\n }\r\n if (this.parentView.proto.type === view_type_1.ViewType.COMPONENT) {\r\n this.parentView.containerAppElement._queryStrategy.setViewQueriesAsDirty();\r\n }\r\n };\r\n return AppElement;\r\n})();\r\nexports.AppElement = AppElement;\r\nvar _EmptyQueryStrategy = (function () {\r\n function _EmptyQueryStrategy() {\r\n }\r\n _EmptyQueryStrategy.prototype.setContentQueriesAsDirty = function () { };\r\n _EmptyQueryStrategy.prototype.setViewQueriesAsDirty = function () { };\r\n _EmptyQueryStrategy.prototype.updateContentQueries = function () { };\r\n _EmptyQueryStrategy.prototype.updateViewQueries = function () { };\r\n _EmptyQueryStrategy.prototype.findQuery = function (query) {\r\n throw new exceptions_1.BaseException(\"Cannot find query for directive \" + query + \".\");\r\n };\r\n return _EmptyQueryStrategy;\r\n})();\r\nvar _emptyQueryStrategy = new _EmptyQueryStrategy();\r\nvar InlineQueryStrategy = (function () {\r\n function InlineQueryStrategy(ei) {\r\n var protoRefs = ei.proto.protoQueryRefs;\r\n if (protoRefs.length > 0)\r\n this.query0 = new QueryRef(protoRefs[0], ei);\r\n if (protoRefs.length > 1)\r\n this.query1 = new QueryRef(protoRefs[1], ei);\r\n if (protoRefs.length > 2)\r\n this.query2 = new QueryRef(protoRefs[2], ei);\r\n }\r\n InlineQueryStrategy.prototype.setContentQueriesAsDirty = function () {\r\n if (lang_1.isPresent(this.query0) && !this.query0.isViewQuery)\r\n this.query0.dirty = true;\r\n if (lang_1.isPresent(this.query1) && !this.query1.isViewQuery)\r\n this.query1.dirty = true;\r\n if (lang_1.isPresent(this.query2) && !this.query2.isViewQuery)\r\n this.query2.dirty = true;\r\n };\r\n InlineQueryStrategy.prototype.setViewQueriesAsDirty = function () {\r\n if (lang_1.isPresent(this.query0) && this.query0.isViewQuery)\r\n this.query0.dirty = true;\r\n if (lang_1.isPresent(this.query1) && this.query1.isViewQuery)\r\n this.query1.dirty = true;\r\n if (lang_1.isPresent(this.query2) && this.query2.isViewQuery)\r\n this.query2.dirty = true;\r\n };\r\n InlineQueryStrategy.prototype.updateContentQueries = function () {\r\n if (lang_1.isPresent(this.query0) && !this.query0.isViewQuery) {\r\n this.query0.update();\r\n }\r\n if (lang_1.isPresent(this.query1) && !this.query1.isViewQuery) {\r\n this.query1.update();\r\n }\r\n if (lang_1.isPresent(this.query2) && !this.query2.isViewQuery) {\r\n this.query2.update();\r\n }\r\n };\r\n InlineQueryStrategy.prototype.updateViewQueries = function () {\r\n if (lang_1.isPresent(this.query0) && this.query0.isViewQuery) {\r\n this.query0.update();\r\n }\r\n if (lang_1.isPresent(this.query1) && this.query1.isViewQuery) {\r\n this.query1.update();\r\n }\r\n if (lang_1.isPresent(this.query2) && this.query2.isViewQuery) {\r\n this.query2.update();\r\n }\r\n };\r\n InlineQueryStrategy.prototype.findQuery = function (query) {\r\n if (lang_1.isPresent(this.query0) && this.query0.protoQueryRef.query === query) {\r\n return this.query0;\r\n }\r\n if (lang_1.isPresent(this.query1) && this.query1.protoQueryRef.query === query) {\r\n return this.query1;\r\n }\r\n if (lang_1.isPresent(this.query2) && this.query2.protoQueryRef.query === query) {\r\n return this.query2;\r\n }\r\n throw new exceptions_1.BaseException(\"Cannot find query for directive \" + query + \".\");\r\n };\r\n InlineQueryStrategy.NUMBER_OF_SUPPORTED_QUERIES = 3;\r\n return InlineQueryStrategy;\r\n})();\r\nvar DynamicQueryStrategy = (function () {\r\n function DynamicQueryStrategy(ei) {\r\n this.queries = ei.proto.protoQueryRefs.map(function (p) { return new QueryRef(p, ei); });\r\n }\r\n DynamicQueryStrategy.prototype.setContentQueriesAsDirty = function () {\r\n for (var i = 0; i < this.queries.length; ++i) {\r\n var q = this.queries[i];\r\n if (!q.isViewQuery)\r\n q.dirty = true;\r\n }\r\n };\r\n DynamicQueryStrategy.prototype.setViewQueriesAsDirty = function () {\r\n for (var i = 0; i < this.queries.length; ++i) {\r\n var q = this.queries[i];\r\n if (q.isViewQuery)\r\n q.dirty = true;\r\n }\r\n };\r\n DynamicQueryStrategy.prototype.updateContentQueries = function () {\r\n for (var i = 0; i < this.queries.length; ++i) {\r\n var q = this.queries[i];\r\n if (!q.isViewQuery) {\r\n q.update();\r\n }\r\n }\r\n };\r\n DynamicQueryStrategy.prototype.updateViewQueries = function () {\r\n for (var i = 0; i < this.queries.length; ++i) {\r\n var q = this.queries[i];\r\n if (q.isViewQuery) {\r\n q.update();\r\n }\r\n }\r\n };\r\n DynamicQueryStrategy.prototype.findQuery = function (query) {\r\n for (var i = 0; i < this.queries.length; ++i) {\r\n var q = this.queries[i];\r\n if (q.protoQueryRef.query === query) {\r\n return q;\r\n }\r\n }\r\n throw new exceptions_1.BaseException(\"Cannot find query for directive \" + query + \".\");\r\n };\r\n return DynamicQueryStrategy;\r\n})();\r\n/**\r\n * Strategy used by the `ElementInjector` when the number of providers is 10 or less.\r\n * In such a case, inlining fields is beneficial for performances.\r\n */\r\nvar ElementDirectiveInlineStrategy = (function () {\r\n function ElementDirectiveInlineStrategy(injectorStrategy, _ei) {\r\n this.injectorStrategy = injectorStrategy;\r\n this._ei = _ei;\r\n }\r\n ElementDirectiveInlineStrategy.prototype.init = function () {\r\n var i = this.injectorStrategy;\r\n var p = i.protoStrategy;\r\n i.resetConstructionCounter();\r\n if (p.provider0 instanceof DirectiveProvider && lang_1.isPresent(p.keyId0) && i.obj0 === injector_1.UNDEFINED)\r\n i.obj0 = i.instantiateProvider(p.provider0, p.visibility0);\r\n if (p.provider1 instanceof DirectiveProvider && lang_1.isPresent(p.keyId1) && i.obj1 === injector_1.UNDEFINED)\r\n i.obj1 = i.instantiateProvider(p.provider1, p.visibility1);\r\n if (p.provider2 instanceof DirectiveProvider && lang_1.isPresent(p.keyId2) && i.obj2 === injector_1.UNDEFINED)\r\n i.obj2 = i.instantiateProvider(p.provider2, p.visibility2);\r\n if (p.provider3 instanceof DirectiveProvider && lang_1.isPresent(p.keyId3) && i.obj3 === injector_1.UNDEFINED)\r\n i.obj3 = i.instantiateProvider(p.provider3, p.visibility3);\r\n if (p.provider4 instanceof DirectiveProvider && lang_1.isPresent(p.keyId4) && i.obj4 === injector_1.UNDEFINED)\r\n i.obj4 = i.instantiateProvider(p.provider4, p.visibility4);\r\n if (p.provider5 instanceof DirectiveProvider && lang_1.isPresent(p.keyId5) && i.obj5 === injector_1.UNDEFINED)\r\n i.obj5 = i.instantiateProvider(p.provider5, p.visibility5);\r\n if (p.provider6 instanceof DirectiveProvider && lang_1.isPresent(p.keyId6) && i.obj6 === injector_1.UNDEFINED)\r\n i.obj6 = i.instantiateProvider(p.provider6, p.visibility6);\r\n if (p.provider7 instanceof DirectiveProvider && lang_1.isPresent(p.keyId7) && i.obj7 === injector_1.UNDEFINED)\r\n i.obj7 = i.instantiateProvider(p.provider7, p.visibility7);\r\n if (p.provider8 instanceof DirectiveProvider && lang_1.isPresent(p.keyId8) && i.obj8 === injector_1.UNDEFINED)\r\n i.obj8 = i.instantiateProvider(p.provider8, p.visibility8);\r\n if (p.provider9 instanceof DirectiveProvider && lang_1.isPresent(p.keyId9) && i.obj9 === injector_1.UNDEFINED)\r\n i.obj9 = i.instantiateProvider(p.provider9, p.visibility9);\r\n };\r\n ElementDirectiveInlineStrategy.prototype.getComponent = function () { return this.injectorStrategy.obj0; };\r\n ElementDirectiveInlineStrategy.prototype.isComponentKey = function (key) {\r\n return this._ei.proto.firstProviderIsComponent && lang_1.isPresent(key) &&\r\n key.id === this.injectorStrategy.protoStrategy.keyId0;\r\n };\r\n ElementDirectiveInlineStrategy.prototype.addDirectivesMatchingQuery = function (query, list) {\r\n var i = this.injectorStrategy;\r\n var p = i.protoStrategy;\r\n if (lang_1.isPresent(p.provider0) && p.provider0.key.token === query.selector) {\r\n if (i.obj0 === injector_1.UNDEFINED)\r\n i.obj0 = i.instantiateProvider(p.provider0, p.visibility0);\r\n list.push(i.obj0);\r\n }\r\n if (lang_1.isPresent(p.provider1) && p.provider1.key.token === query.selector) {\r\n if (i.obj1 === injector_1.UNDEFINED)\r\n i.obj1 = i.instantiateProvider(p.provider1, p.visibility1);\r\n list.push(i.obj1);\r\n }\r\n if (lang_1.isPresent(p.provider2) && p.provider2.key.token === query.selector) {\r\n if (i.obj2 === injector_1.UNDEFINED)\r\n i.obj2 = i.instantiateProvider(p.provider2, p.visibility2);\r\n list.push(i.obj2);\r\n }\r\n if (lang_1.isPresent(p.provider3) && p.provider3.key.token === query.selector) {\r\n if (i.obj3 === injector_1.UNDEFINED)\r\n i.obj3 = i.instantiateProvider(p.provider3, p.visibility3);\r\n list.push(i.obj3);\r\n }\r\n if (lang_1.isPresent(p.provider4) && p.provider4.key.token === query.selector) {\r\n if (i.obj4 === injector_1.UNDEFINED)\r\n i.obj4 = i.instantiateProvider(p.provider4, p.visibility4);\r\n list.push(i.obj4);\r\n }\r\n if (lang_1.isPresent(p.provider5) && p.provider5.key.token === query.selector) {\r\n if (i.obj5 === injector_1.UNDEFINED)\r\n i.obj5 = i.instantiateProvider(p.provider5, p.visibility5);\r\n list.push(i.obj5);\r\n }\r\n if (lang_1.isPresent(p.provider6) && p.provider6.key.token === query.selector) {\r\n if (i.obj6 === injector_1.UNDEFINED)\r\n i.obj6 = i.instantiateProvider(p.provider6, p.visibility6);\r\n list.push(i.obj6);\r\n }\r\n if (lang_1.isPresent(p.provider7) && p.provider7.key.token === query.selector) {\r\n if (i.obj7 === injector_1.UNDEFINED)\r\n i.obj7 = i.instantiateProvider(p.provider7, p.visibility7);\r\n list.push(i.obj7);\r\n }\r\n if (lang_1.isPresent(p.provider8) && p.provider8.key.token === query.selector) {\r\n if (i.obj8 === injector_1.UNDEFINED)\r\n i.obj8 = i.instantiateProvider(p.provider8, p.visibility8);\r\n list.push(i.obj8);\r\n }\r\n if (lang_1.isPresent(p.provider9) && p.provider9.key.token === query.selector) {\r\n if (i.obj9 === injector_1.UNDEFINED)\r\n i.obj9 = i.instantiateProvider(p.provider9, p.visibility9);\r\n list.push(i.obj9);\r\n }\r\n };\r\n return ElementDirectiveInlineStrategy;\r\n})();\r\n/**\r\n * Strategy used by the `ElementInjector` when the number of bindings is 11 or more.\r\n * In such a case, there are too many fields to inline (see ElementInjectorInlineStrategy).\r\n */\r\nvar ElementDirectiveDynamicStrategy = (function () {\r\n function ElementDirectiveDynamicStrategy(injectorStrategy, _ei) {\r\n this.injectorStrategy = injectorStrategy;\r\n this._ei = _ei;\r\n }\r\n ElementDirectiveDynamicStrategy.prototype.init = function () {\r\n var inj = this.injectorStrategy;\r\n var p = inj.protoStrategy;\r\n inj.resetConstructionCounter();\r\n for (var i = 0; i < p.keyIds.length; i++) {\r\n if (p.providers[i] instanceof DirectiveProvider && lang_1.isPresent(p.keyIds[i]) &&\r\n inj.objs[i] === injector_1.UNDEFINED) {\r\n inj.objs[i] = inj.instantiateProvider(p.providers[i], p.visibilities[i]);\r\n }\r\n }\r\n };\r\n ElementDirectiveDynamicStrategy.prototype.getComponent = function () { return this.injectorStrategy.objs[0]; };\r\n ElementDirectiveDynamicStrategy.prototype.isComponentKey = function (key) {\r\n var p = this.injectorStrategy.protoStrategy;\r\n return this._ei.proto.firstProviderIsComponent && lang_1.isPresent(key) && key.id === p.keyIds[0];\r\n };\r\n ElementDirectiveDynamicStrategy.prototype.addDirectivesMatchingQuery = function (query, list) {\r\n var ist = this.injectorStrategy;\r\n var p = ist.protoStrategy;\r\n for (var i = 0; i < p.providers.length; i++) {\r\n if (p.providers[i].key.token === query.selector) {\r\n if (ist.objs[i] === injector_1.UNDEFINED) {\r\n ist.objs[i] = ist.instantiateProvider(p.providers[i], p.visibilities[i]);\r\n }\r\n list.push(ist.objs[i]);\r\n }\r\n }\r\n };\r\n return ElementDirectiveDynamicStrategy;\r\n})();\r\nvar ProtoQueryRef = (function () {\r\n function ProtoQueryRef(dirIndex, setter, query) {\r\n this.dirIndex = dirIndex;\r\n this.setter = setter;\r\n this.query = query;\r\n }\r\n Object.defineProperty(ProtoQueryRef.prototype, \"usesPropertySyntax\", {\r\n get: function () { return lang_1.isPresent(this.setter); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ProtoQueryRef;\r\n})();\r\nexports.ProtoQueryRef = ProtoQueryRef;\r\nvar QueryRef = (function () {\r\n function QueryRef(protoQueryRef, originator) {\r\n this.protoQueryRef = protoQueryRef;\r\n this.originator = originator;\r\n this.list = new query_list_1.QueryList();\r\n this.dirty = true;\r\n }\r\n Object.defineProperty(QueryRef.prototype, \"isViewQuery\", {\r\n get: function () { return this.protoQueryRef.query.isViewQuery; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n QueryRef.prototype.update = function () {\r\n if (!this.dirty)\r\n return;\r\n this._update();\r\n this.dirty = false;\r\n // TODO delete the check once only field queries are supported\r\n if (this.protoQueryRef.usesPropertySyntax) {\r\n var dir = this.originator.getDirectiveAtIndex(this.protoQueryRef.dirIndex);\r\n if (this.protoQueryRef.query.first) {\r\n this.protoQueryRef.setter(dir, this.list.length > 0 ? this.list.first : null);\r\n }\r\n else {\r\n this.protoQueryRef.setter(dir, this.list);\r\n }\r\n }\r\n this.list.notifyOnChanges();\r\n };\r\n QueryRef.prototype._update = function () {\r\n var aggregator = [];\r\n if (this.protoQueryRef.query.isViewQuery) {\r\n // intentionally skipping originator for view queries.\r\n var nestedView = this.originator.componentView;\r\n if (lang_1.isPresent(nestedView))\r\n this._visitView(nestedView, aggregator);\r\n }\r\n else {\r\n this._visit(this.originator, aggregator);\r\n }\r\n this.list.reset(aggregator);\r\n };\r\n ;\r\n QueryRef.prototype._visit = function (inj, aggregator) {\r\n var view = inj.parentView;\r\n var startIdx = inj.proto.index;\r\n for (var i = startIdx; i < view.appElements.length; i++) {\r\n var curInj = view.appElements[i];\r\n // The first injector after inj, that is outside the subtree rooted at\r\n // inj has to have a null parent or a parent that is an ancestor of inj.\r\n if (i > startIdx && (lang_1.isBlank(curInj.parent) || curInj.parent.proto.index < startIdx)) {\r\n break;\r\n }\r\n if (!this.protoQueryRef.query.descendants &&\r\n !(curInj.parent == this.originator || curInj == this.originator))\r\n continue;\r\n // We visit the view container(VC) views right after the injector that contains\r\n // the VC. Theoretically, that might not be the right order if there are\r\n // child injectors of said injector. Not clear whether if such case can\r\n // even be constructed with the current apis.\r\n this._visitInjector(curInj, aggregator);\r\n this._visitViewContainerViews(curInj.nestedViews, aggregator);\r\n }\r\n };\r\n QueryRef.prototype._visitInjector = function (inj, aggregator) {\r\n if (this.protoQueryRef.query.isVarBindingQuery) {\r\n this._aggregateVariableBinding(inj, aggregator);\r\n }\r\n else {\r\n this._aggregateDirective(inj, aggregator);\r\n }\r\n };\r\n QueryRef.prototype._visitViewContainerViews = function (views, aggregator) {\r\n if (lang_1.isPresent(views)) {\r\n for (var j = 0; j < views.length; j++) {\r\n this._visitView(views[j], aggregator);\r\n }\r\n }\r\n };\r\n QueryRef.prototype._visitView = function (view, aggregator) {\r\n for (var i = 0; i < view.appElements.length; i++) {\r\n var inj = view.appElements[i];\r\n this._visitInjector(inj, aggregator);\r\n this._visitViewContainerViews(inj.nestedViews, aggregator);\r\n }\r\n };\r\n QueryRef.prototype._aggregateVariableBinding = function (inj, aggregator) {\r\n var vb = this.protoQueryRef.query.varBindings;\r\n for (var i = 0; i < vb.length; ++i) {\r\n if (inj.hasVariableBinding(vb[i])) {\r\n aggregator.push(inj.getVariableBinding(vb[i]));\r\n }\r\n }\r\n };\r\n QueryRef.prototype._aggregateDirective = function (inj, aggregator) {\r\n inj.addDirectivesMatchingQuery(this.protoQueryRef.query, aggregator);\r\n };\r\n return QueryRef;\r\n})();\r\nexports.QueryRef = QueryRef;\r\nvar _ComponentViewChangeDetectorRef = (function (_super) {\r\n __extends(_ComponentViewChangeDetectorRef, _super);\r\n function _ComponentViewChangeDetectorRef(_appElement) {\r\n _super.call(this);\r\n this._appElement = _appElement;\r\n }\r\n _ComponentViewChangeDetectorRef.prototype.markForCheck = function () { this._appElement.componentView.changeDetector.ref.markForCheck(); };\r\n _ComponentViewChangeDetectorRef.prototype.detach = function () { this._appElement.componentView.changeDetector.ref.detach(); };\r\n _ComponentViewChangeDetectorRef.prototype.detectChanges = function () { this._appElement.componentView.changeDetector.ref.detectChanges(); };\r\n _ComponentViewChangeDetectorRef.prototype.checkNoChanges = function () { this._appElement.componentView.changeDetector.ref.checkNoChanges(); };\r\n _ComponentViewChangeDetectorRef.prototype.reattach = function () { this._appElement.componentView.changeDetector.ref.reattach(); };\r\n return _ComponentViewChangeDetectorRef;\r\n})(change_detection_1.ChangeDetectorRef);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9lbGVtZW50LnRzIl0sIm5hbWVzIjpbIlN0YXRpY0tleXMiLCJTdGF0aWNLZXlzLmNvbnN0cnVjdG9yIiwiU3RhdGljS2V5cy5pbnN0YW5jZSIsIkRpcmVjdGl2ZURlcGVuZGVuY3kiLCJEaXJlY3RpdmVEZXBlbmRlbmN5LmNvbnN0cnVjdG9yIiwiRGlyZWN0aXZlRGVwZW5kZW5jeS5fdmVyaWZ5IiwiRGlyZWN0aXZlRGVwZW5kZW5jeS5jcmVhdGVGcm9tIiwiRGlyZWN0aXZlRGVwZW5kZW5jeS5fYXR0cmlidXRlTmFtZSIsIkRpcmVjdGl2ZURlcGVuZGVuY3kuX3F1ZXJ5IiwiRGlyZWN0aXZlUHJvdmlkZXIiLCJEaXJlY3RpdmVQcm92aWRlci5jb25zdHJ1Y3RvciIsIkRpcmVjdGl2ZVByb3ZpZGVyLmRpc3BsYXlOYW1lIiwiRGlyZWN0aXZlUHJvdmlkZXIuY3JlYXRlRnJvbVR5cGUiLCJRdWVyeU1ldGFkYXRhV2l0aFNldHRlciIsIlF1ZXJ5TWV0YWRhdGFXaXRoU2V0dGVyLmNvbnN0cnVjdG9yIiwic2V0UHJvdmlkZXJzVmlzaWJpbGl0eSIsIkFwcFByb3RvRWxlbWVudCIsIkFwcFByb3RvRWxlbWVudC5jb25zdHJ1Y3RvciIsIkFwcFByb3RvRWxlbWVudC5jcmVhdGUiLCJBcHBQcm90b0VsZW1lbnQuZ2V0UHJvdmlkZXJBdEluZGV4IiwiX0NvbnRleHQiLCJfQ29udGV4dC5jb25zdHJ1Y3RvciIsIkluamVjdG9yV2l0aEhvc3RCb3VuZGFyeSIsIkluamVjdG9yV2l0aEhvc3RCb3VuZGFyeS5jb25zdHJ1Y3RvciIsIkFwcEVsZW1lbnQiLCJBcHBFbGVtZW50LmNvbnN0cnVjdG9yIiwiQXBwRWxlbWVudC5nZXRWaWV3UGFyZW50SW5qZWN0b3IiLCJBcHBFbGVtZW50LmF0dGFjaENvbXBvbmVudFZpZXciLCJBcHBFbGVtZW50Ll9kZWJ1Z0NvbnRleHQiLCJBcHBFbGVtZW50Lmhhc1ZhcmlhYmxlQmluZGluZyIsIkFwcEVsZW1lbnQuZ2V0VmFyaWFibGVCaW5kaW5nIiwiQXBwRWxlbWVudC5nZXQiLCJBcHBFbGVtZW50Lmhhc0RpcmVjdGl2ZSIsIkFwcEVsZW1lbnQuZ2V0Q29tcG9uZW50IiwiQXBwRWxlbWVudC5nZXRJbmplY3RvciIsIkFwcEVsZW1lbnQuZ2V0RWxlbWVudFJlZiIsIkFwcEVsZW1lbnQuZ2V0Vmlld0NvbnRhaW5lclJlZiIsIkFwcEVsZW1lbnQuZ2V0VGVtcGxhdGVSZWYiLCJBcHBFbGVtZW50LmdldERlcGVuZGVuY3kiLCJBcHBFbGVtZW50Ll9idWlsZEF0dHJpYnV0ZSIsIkFwcEVsZW1lbnQuYWRkRGlyZWN0aXZlc01hdGNoaW5nUXVlcnkiLCJBcHBFbGVtZW50Ll9idWlsZFF1ZXJ5U3RyYXRlZ3kiLCJBcHBFbGVtZW50LmdldERpcmVjdGl2ZUF0SW5kZXgiLCJBcHBFbGVtZW50Lm5nQWZ0ZXJWaWV3Q2hlY2tlZCIsIkFwcEVsZW1lbnQubmdBZnRlckNvbnRlbnRDaGVja2VkIiwiQXBwRWxlbWVudC50cmF2ZXJzZUFuZFNldFF1ZXJpZXNBc0RpcnR5IiwiQXBwRWxlbWVudC5fc2V0UXVlcmllc0FzRGlydHkiLCJfRW1wdHlRdWVyeVN0cmF0ZWd5IiwiX0VtcHR5UXVlcnlTdHJhdGVneS5jb25zdHJ1Y3RvciIsIl9FbXB0eVF1ZXJ5U3RyYXRlZ3kuc2V0Q29udGVudFF1ZXJpZXNBc0RpcnR5IiwiX0VtcHR5UXVlcnlTdHJhdGVneS5zZXRWaWV3UXVlcmllc0FzRGlydHkiLCJfRW1wdHlRdWVyeVN0cmF0ZWd5LnVwZGF0ZUNvbnRlbnRRdWVyaWVzIiwiX0VtcHR5UXVlcnlTdHJhdGVneS51cGRhdGVWaWV3UXVlcmllcyIsIl9FbXB0eVF1ZXJ5U3RyYXRlZ3kuZmluZFF1ZXJ5IiwiSW5saW5lUXVlcnlTdHJhdGVneSIsIklubGluZVF1ZXJ5U3RyYXRlZ3kuY29uc3RydWN0b3IiLCJJbmxpbmVRdWVyeVN0cmF0ZWd5LnNldENvbnRlbnRRdWVyaWVzQXNEaXJ0eSIsIklubGluZVF1ZXJ5U3RyYXRlZ3kuc2V0Vmlld1F1ZXJpZXNBc0RpcnR5IiwiSW5saW5lUXVlcnlTdHJhdGVneS51cGRhdGVDb250ZW50UXVlcmllcyIsIklubGluZVF1ZXJ5U3RyYXRlZ3kudXBkYXRlVmlld1F1ZXJpZXMiLCJJbmxpbmVRdWVyeVN0cmF0ZWd5LmZpbmRRdWVyeSIsIkR5bmFtaWNRdWVyeVN0cmF0ZWd5IiwiRHluYW1pY1F1ZXJ5U3RyYXRlZ3kuY29uc3RydWN0b3IiLCJEeW5hbWljUXVlcnlTdHJhdGVneS5zZXRDb250ZW50UXVlcmllc0FzRGlydHkiLCJEeW5hbWljUXVlcnlTdHJhdGVneS5zZXRWaWV3UXVlcmllc0FzRGlydHkiLCJEeW5hbWljUXVlcnlTdHJhdGVneS51cGRhdGVDb250ZW50UXVlcmllcyIsIkR5bmFtaWNRdWVyeVN0cmF0ZWd5LnVwZGF0ZVZpZXdRdWVyaWVzIiwiRHluYW1pY1F1ZXJ5U3RyYXRlZ3kuZmluZFF1ZXJ5IiwiRWxlbWVudERpcmVjdGl2ZUlubGluZVN0cmF0ZWd5IiwiRWxlbWVudERpcmVjdGl2ZUlubGluZVN0cmF0ZWd5LmNvbnN0cnVjdG9yIiwiRWxlbWVudERpcmVjdGl2ZUlubGluZVN0cmF0ZWd5LmluaXQiLCJFbGVtZW50RGlyZWN0aXZlSW5saW5lU3RyYXRlZ3kuZ2V0Q29tcG9uZW50IiwiRWxlbWVudERpcmVjdGl2ZUlubGluZVN0cmF0ZWd5LmlzQ29tcG9uZW50S2V5IiwiRWxlbWVudERpcmVjdGl2ZUlubGluZVN0cmF0ZWd5LmFkZERpcmVjdGl2ZXNNYXRjaGluZ1F1ZXJ5IiwiRWxlbWVudERpcmVjdGl2ZUR5bmFtaWNTdHJhdGVneSIsIkVsZW1lbnREaXJlY3RpdmVEeW5hbWljU3RyYXRlZ3kuY29uc3RydWN0b3IiLCJFbGVtZW50RGlyZWN0aXZlRHluYW1pY1N0cmF0ZWd5LmluaXQiLCJFbGVtZW50RGlyZWN0aXZlRHluYW1pY1N0cmF0ZWd5LmdldENvbXBvbmVudCIsIkVsZW1lbnREaXJlY3RpdmVEeW5hbWljU3RyYXRlZ3kuaXNDb21wb25lbnRLZXkiLCJFbGVtZW50RGlyZWN0aXZlRHluYW1pY1N0cmF0ZWd5LmFkZERpcmVjdGl2ZXNNYXRjaGluZ1F1ZXJ5IiwiUHJvdG9RdWVyeVJlZiIsIlByb3RvUXVlcnlSZWYuY29uc3RydWN0b3IiLCJQcm90b1F1ZXJ5UmVmLnVzZXNQcm9wZXJ0eVN5bnRheCIsIlF1ZXJ5UmVmIiwiUXVlcnlSZWYuY29uc3RydWN0b3IiLCJRdWVyeVJlZi5pc1ZpZXdRdWVyeSIsIlF1ZXJ5UmVmLnVwZGF0ZSIsIlF1ZXJ5UmVmLl91cGRhdGUiLCJRdWVyeVJlZi5fdmlzaXQiLCJRdWVyeVJlZi5fdmlzaXRJbmplY3RvciIsIlF1ZXJ5UmVmLl92aXNpdFZpZXdDb250YWluZXJWaWV3cyIsIlF1ZXJ5UmVmLl92aXNpdFZpZXciLCJRdWVyeVJlZi5fYWdncmVnYXRlVmFyaWFibGVCaW5kaW5nIiwiUXVlcnlSZWYuX2FnZ3JlZ2F0ZURpcmVjdGl2ZSIsIl9Db21wb25lbnRWaWV3Q2hhbmdlRGV0ZWN0b3JSZWYiLCJfQ29tcG9uZW50Vmlld0NoYW5nZURldGVjdG9yUmVmLmNvbnN0cnVjdG9yIiwiX0NvbXBvbmVudFZpZXdDaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2siLCJfQ29tcG9uZW50Vmlld0NoYW5nZURldGVjdG9yUmVmLmRldGFjaCIsIl9Db21wb25lbnRWaWV3Q2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcyIsIl9Db21wb25lbnRWaWV3Q2hhbmdlRGV0ZWN0b3JSZWYuY2hlY2tOb0NoYW5nZXMiLCJfQ29tcG9uZW50Vmlld0NoYW5nZURldGVjdG9yUmVmLnJlYXR0YWNoIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFCQU9PLDBCQUEwQixDQUFDLENBQUE7QUFDbEMsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFDN0QsMkJBQXdELGdDQUFnQyxDQUFDLENBQUE7QUFDekYsbUJBWU8sc0JBQXNCLENBQUMsQ0FBQTtBQUM5Qix5QkFBcUMsK0JBQStCLENB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QUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxXQUFXQSxDQUFDQTtZQUFDQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxLQUFLQSxHQUFHQSxJQUFJQSxDQUFDQTtJQUNsRkEsQ0FBQ0E7SUFFREgsa0RBQW9CQSxHQUFwQkE7UUFDRUksRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLFdBQVdBLENBQUNBLENBQUNBLENBQUNBO1lBQ3ZEQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxNQUFNQSxFQUFFQSxDQUFDQTtRQUN2QkEsQ0FBQ0E7UUFDREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLFdBQVdBLENBQUNBLENBQUNBLENBQUNBO1lBQ3ZEQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxNQUFNQSxFQUFFQSxDQUFDQTtRQUN2QkEsQ0FBQ0E7UUFDREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLFdBQVdBLENBQUNBLENBQUNBLENBQUNBO1lBQ3ZEQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxNQUFNQSxFQUFFQSxDQUFDQTtRQUN2QkEsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUFFREosK0NBQWlCQSxHQUFqQkE7UUFDRUssRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLFdBQVdBLENBQUNBLENBQUNBLENBQUNBO1lBQ3REQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxNQUFNQSxFQUFFQSxDQUFDQTtRQUN2QkEsQ0FBQ0E7UUFDREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLFdBQVdBLENBQUNBLENBQUNBLENBQUNBO1lBQ3REQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxNQUFNQSxFQUFFQSxDQUFDQTtRQUN2QkEsQ0FBQ0E7UUFDREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLFdBQVdBLENBQUNBLENBQUNBLENBQUNBO1lBQ3REQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxNQUFNQSxFQUFFQSxDQUFDQTtRQUN2QkEsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUFFREwsdUNBQVNBLEdBQVRBLFVBQVVBLEtBQW9CQTtRQUM1Qk0sRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLGFBQWFBLENBQUNBLEtBQUtBLEtBQUtBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBO1lBQ3hFQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQTtRQUNyQkEsQ0FBQ0E7UUFDREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLGFBQWFBLENBQUNBLEtBQUtBLEtBQUtBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBO1lBQ3hFQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQTtRQUNyQkEsQ0FBQ0E7UUFDREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLGFBQWFBLENB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QUNBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLENBQUNBLElBQUlBLEtBQUtBLG9CQUFTQSxDQUFDQTtZQUMxRkEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsbUJBQW1CQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtRQUM3REEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsU0FBU0EsWUFBWUEsaUJBQWlCQSxJQUFJQSxnQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsS0FBS0Esb0JBQVNBLENBQUNBO1lBQzFGQSxDQUFDQSxDQUFDQSxJQUFJQSxHQUFHQSxDQUFDQSxDQUFDQSxtQkFBbUJBLENBQUNBLENBQUNBLENBQUNBLFNBQVNBLEVBQUVBLENBQUNBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBO1FBQzdEQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxZQUFZQSxpQkFBaUJBLElBQUlBLGdCQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxJQUFJQSxLQUFLQSxvQkFBU0EsQ0FBQ0E7WUFDMUZBLENBQUNBLENBQUNBLElBQUlBLEdBQUdBLENBQUNBLENBQUNBLG1CQUFtQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsU0FBU0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsV0FBV0EsQ0FBQ0EsQ0FBQ0E7UUFDN0RBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFNBQVNBLFlBQVlBLGlCQUFpQkEsSUFBSUEsZ0JBQVNBLENBQUNBLENBQUNBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLENBQUNBLElBQUlBLEtBQUtBLG9CQUFTQSxDQUFDQTtZQUMxRkEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsbUJBQW1CQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtRQUM3REEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsU0FBU0EsWUFBWUEsaUJBQWlCQSxJQUFJQSxnQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsS0FBS0Esb0JBQVNBLENBQUNBO1lBQzFGQSxDQUFDQSxDQUFDQSxJQUFJQSxHQUFHQSxDQUFDQSxDQUFDQSxtQkFBbUJBLENBQUNBLENBQUNBLENBQUNBLFNBQVNBLEVBQUVBLENBQUNBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBO1FBQzdEQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxZQUFZQSxpQkFBaUJBLElBQUlBLGdCQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxJQUFJQSxLQUFLQSxvQkFBU0EsQ0FBQ0E7WUFDMUZBLENBQUNBLENBQUNBLElBQUlBLEdBQUdBLENBQUNBLENBQUNBLG1CQUFtQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsU0FBU0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsV0FBV0EsQ0FBQ0EsQ0FBQ0E7UUFDN0RBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFNBQVNBLFlBQVlBLGlCQUFpQkEsSUFBSUEsZ0JBQVNBLENBQUNBLENBQUNBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLENBQUNBLElBQUlBLEtBQUtBLG9CQUFTQSxDQUFDQTtZQUMxRkEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsbUJBQW1CQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtRQUM3REEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsU0FBU0EsWUFBWUEsaUJBQWlCQSxJQUFJQSxnQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0Es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QUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtZQUNyRkEsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDcEJBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxTQUFTQSxDQUFDQSxHQUFHQSxDQUFDQSxLQUFLQSxLQUFLQSxLQUFLQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN2RUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsS0FBS0Esb0JBQVNBLENBQUNBO2dCQUFDQSxDQUFDQSxDQUFDQSxJQUFJQSxHQUFHQSxDQUFDQSxDQUFDQSxtQkFBbUJBLENBQUNBLENBQUNBLENBQUNBLFNBQVNBLEVBQUVBLENBQUNBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBO1lBQ3JGQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNwQkEsQ0FBQ0E7UUFDREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLENBQUNBLENBQUNBLFNBQVNBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLFNBQVNBLENBQUNBLEdBQUdBLENBQUNBLEtBQUtBLEtBQUtBLEtBQUtBLENBQUNBLFFBQVFBLENBQUNBLENBQUNBLENBQUNBO1lBQ3ZFQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxJQUFJQSxLQUFLQSxvQkFBU0EsQ0FBQ0E7Z0JBQUNBLENBQUNBLENBQUNBLElBQUlBLEdBQUdBLENBQUNBLENBQUNBLG1CQUFtQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsU0FBU0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsV0FBV0EsQ0FBQ0EsQ0FBQ0E7WUFDckZBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ3BCQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsS0FBS0EsS0FBS0EsS0FBS0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDdkVBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLElBQUlBLEtBQUtBLG9CQUFTQSxDQUFDQTtnQkFBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsbUJBQW1CQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtZQUNyRkEsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDcEJBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxTQUFTQSxDQUFDQSxHQUFHQSxDQUFDQSxLQUFLQSxLQUFLQSxLQUFLQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN2RUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsS0FBS0Esb0JBQVNBLENBQUNBO2dCQUFDQSxDQUFDQSxDQUFDQSxJQUFJQSxHQUFHQSxDQUFDQSxDQUFDQSxtQkFBbUJBLENBQUNBLENBQUNBLENBQUNBLFNBQVNBLEVBQUVBLENBQUNBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBO1lBQ3JGQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNwQkEsQ0FBQ0E7UUFDREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLENBQUNBLENBQUNBLFNBQVNBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLFNBQVNBLENBQUNBLEdBQUdBLENBQUNBLEtBQUtBLEtBQUtBLEtBQUtBLENBQUNBLFFBQVFBLENBQUNBLENBQUNBLENBQUNBO1lBQ3ZFQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxJQUFJQSxLQUFLQSxvQkFBU0EsQ0FBQ0E7Z0JBQUNBLENBQUNBLENBQUNBLElBQUlBLEdBQUdBLENBQUNBLENBQUNBLG1CQUFtQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsU0FBU0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsV0FBV0EsQ0FBQ0EsQ0FBQ0E7WUFDckZBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ3BCQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsS0FBS0EsS0FBS0EsS0FBS0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDdkVBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLElBQUlBLEtBQUtBLG9CQUFTQSxDQUFDQTtnQkFBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsbUJBQW1CQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtZQUNyRkEsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDcEJBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxTQUFTQSxDQUFDQSxHQUFHQSxDQUFDQSxLQUFLQSxLQUFLQSxLQUFLQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN2RUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FB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LENBQUNBLGFBQWFBLENBQUNBLGNBQWNBLENBQUNBLEdBQUdBLENBQUNBLFFBQVFBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO0lBQ3BGTixzQ0FBQ0E7QUFBREEsQ0FBQ0EsQUFSRCxFQUE4QyxvQ0FBaUIsRUFROUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc1ByZXNlbnQsXG4gIGlzQmxhbmssXG4gIFR5cGUsXG4gIHN0cmluZ2lmeSxcbiAgQ09OU1RfRVhQUixcbiAgU3RyaW5nV3JhcHBlclxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtMaXN0V3JhcHBlciwgTWFwV3JhcHBlciwgU3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7XG4gIEluamVjdG9yLFxuICBLZXksXG4gIERlcGVuZGVuY3ksXG4gIHByb3ZpZGUsXG4gIFByb3ZpZGVyLFxuICBSZXNvbHZlZFByb3ZpZGVyLFxuICBOb1Byb3ZpZGVyRXJyb3IsXG4gIEFic3RyYWN0UHJvdmlkZXJFcnJvcixcbiAgQ3ljbGljRGVwZW5kZW5jeUVycm9yLFxuICByZXNvbHZlRm9yd2FyZFJlZixcbiAgSW5qZWN0YWJsZVxufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge21lcmdlUmVzb2x2ZWRQcm92aWRlcnN9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpL3Byb3ZpZGVyJztcbmltcG9ydCB7XG4gIFVOREVGSU5FRCxcbiAgUHJvdG9JbmplY3RvcixcbiAgVmlzaWJpbGl0eSxcbiAgSW5qZWN0b3JJbmxpbmVTdHJhdGVneSxcbiAgSW5qZWN0b3JEeW5hbWljU3RyYXRlZ3ksXG4gIFByb3ZpZGVyV2l0aFZpc2liaWxpdHksXG4gIERlcGVuZGVuY3lQcm92aWRlclxufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaS9pbmplY3Rvcic7XG5pbXBvcnQge3Jlc29sdmVQcm92aWRlciwgUmVzb2x2ZWRGYWN0b3J5LCBSZXNvbHZlZFByb3ZpZGVyX30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGkvcHJvdmlkZXInO1xuXG5pbXBvcnQge0F0dHJpYnV0ZU1ldGFkYXRhLCBRdWVyeU1ldGFkYXRhfSBmcm9tICcuLi9tZXRhZGF0YS9kaSc7XG5cbmltcG9ydCB7QXBwVmlld30gZnJvbSAnLi92aWV3JztcbmltcG9ydCB7Vmlld1R5cGV9IGZyb20gJy4vdmlld190eXBlJztcbmltcG9ydCB7RWxlbWVudFJlZl99IGZyb20gJy4vZWxlbWVudF9yZWYnO1xuXG5pbXBvcnQge1ZpZXdDb250YWluZXJSZWZ9IGZyb20gJy4vdmlld19jb250YWluZXJfcmVmJztcbmltcG9ydCB7RWxlbWVudFJlZn0gZnJvbSAnLi9lbGVtZW50X3JlZic7XG5pbXBvcnQge1JlbmRlcmVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZW5kZXIvYXBpJztcbmltcG9ydCB7VGVtcGxhdGVSZWYsIFRlbXBsYXRlUmVmX30gZnJvbSAnLi90ZW1wbGF0ZV9yZWYnO1xuaW1wb3J0IHtEaXJlY3RpdmVNZXRhZGF0YSwgQ29tcG9uZW50TWV0YWRhdGF9IGZyb20gJy4uL21ldGFkYXRhL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3IsXG4gIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vY2hhbmdlX2RldGVjdGlvbic7XG5pbXBvcnQge1F1ZXJ5TGlzdH0gZnJvbSAnLi9xdWVyeV9saXN0JztcbmltcG9ydCB7cmVmbGVjdG9yfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZWZsZWN0aW9uL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtTZXR0ZXJGbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVmbGVjdGlvbi90eXBlcyc7XG5pbXBvcnQge0FmdGVyVmlld0NoZWNrZWR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci9pbnRlcmZhY2VzJztcbmltcG9ydCB7UGlwZVByb3ZpZGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9waXBlcy9waXBlX3Byb3ZpZGVyJztcblxuaW1wb3J0IHtWaWV3Q29udGFpbmVyUmVmX30gZnJvbSBcIi4vdmlld19jb250YWluZXJfcmVmXCI7XG5pbXBvcnQge1Jlc29sdmVkTWV0YWRhdGFDYWNoZX0gZnJvbSAnLi9yZXNvbHZlZF9tZXRhZGF0YV9jYWNoZSc7XG5cbnZhciBfc3RhdGljS2V5cztcblxuZXhwb3J0IGNsYXNzIFN0YXRpY0tleXMge1xuICB0ZW1wbGF0ZVJlZklkOiBudW1iZXI7XG4gIHZpZXdDb250YWluZXJJZDogbnVtYmVyO1xuICBjaGFuZ2VEZXRlY3RvclJlZklkOiBudW1iZXI7XG4gIGVsZW1lbnRSZWZJZDogbnVtYmVyO1xuICByZW5kZXJlcklkOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy50ZW1wbGF0ZVJlZklkID0gS2V5LmdldChUZW1wbGF0ZVJlZikuaWQ7XG4gICAgdGhpcy52aWV3Q29udGFpbmVySWQgPSBLZXkuZ2V0KFZpZXdDb250YWluZXJSZWYpLmlkO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWZJZCA9IEtleS5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpLmlkO1xuICAgIHRoaXMuZWxlbWVudFJlZklkID0gS2V5LmdldChFbGVtZW50UmVmKS5pZDtcbiAgICB0aGlzLnJlbmRlcmVySWQgPSBLZXkuZ2V0KFJlbmRlcmVyKS5pZDtcbiAgfVxuXG4gIHN0YXRpYyBpbnN0YW5jZSgpOiBTdGF0aWNLZXlzIHtcbiAgICBpZiAoaXNCbGFuayhfc3RhdGljS2V5cykpIF9zdGF0aWNLZXlzID0gbmV3IFN0YXRpY0tleXMoKTtcbiAgICByZXR1cm4gX3N0YXRpY0tleXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpcmVjdGl2ZURlcGVuZGVuY3kgZXh0ZW5kcyBEZXBlbmRlbmN5IHtcbiAgY29uc3RydWN0b3Ioa2V5OiBLZXksIG9wdGlvbmFsOiBib29sZWFuLCBsb3dlckJvdW5kVmlzaWJpbGl0eTogT2JqZWN0LFxuICAgICAgICAgICAgICB1cHBlckJvdW5kVmlzaWJpbGl0eTogT2JqZWN0LCBwcm9wZXJ0aWVzOiBhbnlbXSwgcHVibGljIGF0dHJpYnV0ZU5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgcHVibGljIHF1ZXJ5RGVjb3JhdG9yOiBRdWVyeU1ldGFkYXRhKSB7XG4gICAgc3VwZXIoa2V5LCBvcHRpb25hbCwgbG93ZXJCb3VuZFZpc2liaWxpdHksIHVwcGVyQm91bmRWaXNpYmlsaXR5LCBwcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl92ZXJpZnkoKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3ZlcmlmeSgpOiB2b2lkIHtcbiAgICB2YXIgY291bnQgPSAwO1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5xdWVyeURlY29yYXRvcikpIGNvdW50Kys7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLmF0dHJpYnV0ZU5hbWUpKSBjb3VudCsrO1xuICAgIGlmIChjb3VudCA+IDEpXG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihcbiAgICAgICAgICAnQSBkaXJlY3RpdmUgaW5qZWN0YWJsZSBjYW4gY29udGFpbiBvbmx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIEBBdHRyaWJ1dGUgb3IgQFF1ZXJ5LicpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUZyb20oZDogRGVwZW5kZW5jeSk6IERpcmVjdGl2ZURlcGVuZGVuY3kge1xuICAgIHJldHVybiBuZXcgRGlyZWN0aXZlRGVwZW5kZW5jeShcbiAgICAgICAgZC5rZXksIGQub3B0aW9uYWwsIGQubG93ZXJCb3VuZFZpc2liaWxpdHksIGQudXBwZXJCb3VuZFZpc2liaWxpdHksIGQucHJvcGVydGllcyxcbiAgICAgICAgRGlyZWN0aXZlRGVwZW5kZW5jeS5fYXR0cmlidXRlTmFtZShkLnByb3BlcnRpZXMpLCBEaXJlY3RpdmVEZXBlbmRlbmN5Ll9xdWVyeShkLnByb3BlcnRpZXMpKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgc3RhdGljIF9hdHRyaWJ1dGVOYW1lKHByb3BlcnRpZXM6IGFueVtdKTogc3RyaW5nIHtcbiAgICB2YXIgcCA9IDxBdHRyaWJ1dGVNZXRhZGF0YT5wcm9wZXJ0aWVzLmZpbmQocCA9PiBwIGluc3RhbmNlb2YgQXR0cmlidXRlTWV0YWRhdGEpO1xuICAgIHJldHVybiBpc1ByZXNlbnQocCkgPyBwLmF0dHJpYnV0ZU5hbWUgOiBudWxsO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBzdGF0aWMgX3F1ZXJ5KHByb3BlcnRpZXM6IGFueVtdKTogUXVlcnlNZXRhZGF0YSB7XG4gICAgcmV0dXJuIDxRdWVyeU1ldGFkYXRhPnByb3BlcnRpZXMuZmluZChwID0+IHAgaW5zdGFuY2VvZiBRdWVyeU1ldGFkYXRhKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlyZWN0aXZlUHJvdmlkZXIgZXh0ZW5kcyBSZXNvbHZlZFByb3ZpZGVyXyB7XG4gIGNvbnN0cnVjdG9yKGtleTogS2V5LCBmYWN0b3J5OiBGdW5jdGlvbiwgZGVwczogRGVwZW5kZW5jeVtdLCBwdWJsaWMgaXNDb21wb25lbnQ6IGJvb2xlYW4sXG4gICAgICAgICAgICAgIHB1YmxpYyBwcm92aWRlcnM6IFJlc29sdmVkUHJvdmlkZXJbXSwgcHVibGljIHZpZXdQcm92aWRlcnM6IFJlc29sdmVkUHJvdmlkZXJbXSxcbiAgICAgICAgICAgICAgcHVibGljIHF1ZXJpZXM6IFF1ZXJ5TWV0YWRhdGFXaXRoU2V0dGVyW10pIHtcbiAgICBzdXBlcihrZXksIFtuZXcgUmVzb2x2ZWRGYWN0b3J5KGZhY3RvcnksIGRlcHMpXSwgZmFsc2UpO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlOYW1lKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmtleS5kaXNwbGF5TmFtZTsgfVxuXG4gIHN0YXRpYyBjcmVhdGVGcm9tVHlwZSh0eXBlOiBUeXBlLCBtZXRhOiBEaXJlY3RpdmVNZXRhZGF0YSk6IERpcmVjdGl2ZVByb3ZpZGVyIHtcbiAgICB2YXIgcHJvdmlkZXIgPSBuZXcgUHJvdmlkZXIodHlwZSwge3VzZUNsYXNzOiB0eXBlfSk7XG4gICAgaWYgKGlzQmxhbmsobWV0YSkpIHtcbiAgICAgIG1ldGEgPSBuZXcgRGlyZWN0aXZlTWV0YWRhdGEoKTtcbiAgICB9XG4gICAgdmFyIHJiID0gcmVzb2x2ZVByb3ZpZGVyKHByb3ZpZGVyKTtcbiAgICB2YXIgcmYgPSByYi5yZXNvbHZlZEZhY3Rvcmllc1swXTtcbiAgICB2YXIgZGVwczogRGlyZWN0aXZlRGVwZW5kZW5jeVtdID0gcmYuZGVwZW5kZW5jaWVzLm1hcChEaXJlY3RpdmVEZXBlbmRlbmN5LmNyZWF0ZUZyb20pO1xuICAgIHZhciBpc0NvbXBvbmVudCA9IG1ldGEgaW5zdGFuY2VvZiBDb21wb25lbnRNZXRhZGF0YTtcbiAgICB2YXIgcmVzb2x2ZWRQcm92aWRlcnMgPSBpc1ByZXNlbnQobWV0YS5wcm92aWRlcnMpID8gSW5qZWN0b3IucmVzb2x2ZShtZXRhLnByb3ZpZGVycykgOiBudWxsO1xuICAgIHZhciByZXNvbHZlZFZpZXdQcm92aWRlcnMgPSBtZXRhIGluc3RhbmNlb2YgQ29tcG9uZW50TWV0YWRhdGEgJiYgaXNQcmVzZW50KG1ldGEudmlld1Byb3ZpZGVycykgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5qZWN0b3IucmVzb2x2ZShtZXRhLnZpZXdQcm92aWRlcnMpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG4gICAgdmFyIHF1ZXJpZXMgPSBbXTtcbiAgICBpZiAoaXNQcmVzZW50KG1ldGEucXVlcmllcykpIHtcbiAgICAgIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChtZXRhLnF1ZXJpZXMsIChtZXRhLCBmaWVsZE5hbWUpID0+IHtcbiAgICAgICAgdmFyIHNldHRlciA9IHJlZmxlY3Rvci5zZXR0ZXIoZmllbGROYW1lKTtcbiAgICAgICAgcXVlcmllcy5wdXNoKG5ldyBRdWVyeU1ldGFkYXRhV2l0aFNldHRlcihzZXR0ZXIsIG1ldGEpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBxdWVyaWVzIHBhc3NlZCBpbnRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAvLyBUT0RPOiByZW1vdmUgdGhpcyBhZnRlciBjb25zdHJ1Y3RvciBxdWVyaWVzIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkXG4gICAgZGVwcy5mb3JFYWNoKGQgPT4ge1xuICAgICAgaWYgKGlzUHJlc2VudChkLnF1ZXJ5RGVjb3JhdG9yKSkge1xuICAgICAgICBxdWVyaWVzLnB1c2gobmV3IFF1ZXJ5TWV0YWRhdGFXaXRoU2V0dGVyKG51bGwsIGQucXVlcnlEZWNvcmF0b3IpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IERpcmVjdGl2ZVByb3ZpZGVyKHJiLmtleSwgcmYuZmFjdG9yeSwgZGVwcywgaXNDb21wb25lbnQsIHJlc29sdmVkUHJvdmlkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRWaWV3UHJvdmlkZXJzLCBxdWVyaWVzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUXVlcnlNZXRhZGF0YVdpdGhTZXR0ZXIge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc2V0dGVyOiBTZXR0ZXJGbiwgcHVibGljIG1ldGFkYXRhOiBRdWVyeU1ldGFkYXRhKSB7fVxufVxuXG5cbmZ1bmN0aW9uIHNldFByb3ZpZGVyc1Zpc2liaWxpdHkocHJvdmlkZXJzOiBSZXNvbHZlZFByb3ZpZGVyW10sIHZpc2liaWxpdHk6IFZpc2liaWxpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDogTWFwPG51bWJlciwgVmlzaWJpbGl0eT4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm92aWRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICByZXN1bHQuc2V0KHByb3ZpZGVyc1tpXS5rZXkuaWQsIHZpc2liaWxpdHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBQcm90b0VsZW1lbnQge1xuICBwcm90b0luamVjdG9yOiBQcm90b0luamVjdG9yO1xuXG4gIHN0YXRpYyBjcmVhdGUobWV0YWRhdGFDYWNoZTogUmVzb2x2ZWRNZXRhZGF0YUNhY2hlLCBpbmRleDogbnVtYmVyLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LCBkaXJlY3RpdmVUeXBlczogVHlwZVtdLFxuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZVZhcmlhYmxlQmluZGluZ3M6IHtba2V5OiBzdHJpbmddOiBudW1iZXJ9KTogQXBwUHJvdG9FbGVtZW50IHtcbiAgICB2YXIgY29tcG9uZW50RGlyUHJvdmlkZXIgPSBudWxsO1xuICAgIHZhciBtZXJnZWRQcm92aWRlcnNNYXA6IE1hcDxudW1iZXIsIFJlc29sdmVkUHJvdmlkZXI+ID0gbmV3IE1hcDxudW1iZXIsIFJlc29sdmVkUHJvdmlkZXI+KCk7XG4gICAgdmFyIHByb3ZpZGVyVmlzaWJpbGl0eU1hcDogTWFwPG51bWJlciwgVmlzaWJpbGl0eT4gPSBuZXcgTWFwPG51bWJlciwgVmlzaWJpbGl0eT4oKTtcbiAgICB2YXIgcHJvdmlkZXJzID0gTGlzdFdyYXBwZXIuY3JlYXRlR3Jvd2FibGVTaXplKGRpcmVjdGl2ZVR5cGVzLmxlbmd0aCk7XG5cbiAgICB2YXIgcHJvdG9RdWVyeVJlZnMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpcmVjdGl2ZVR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGlyUHJvdmlkZXIgPSBtZXRhZGF0YUNhY2hlLmdldFJlc29sdmVkRGlyZWN0aXZlTWV0YWRhdGEoZGlyZWN0aXZlVHlwZXNbaV0pO1xuICAgICAgcHJvdmlkZXJzW2ldID0gbmV3IFByb3ZpZGVyV2l0aFZpc2liaWxpdHkoXG4gICAgICAgICAgZGlyUHJvdmlkZXIsIGRpclByb3ZpZGVyLmlzQ29tcG9uZW50ID8gVmlzaWJpbGl0eS5QdWJsaWNBbmRQcml2YXRlIDogVmlzaWJpbGl0eS5QdWJsaWMpO1xuXG4gICAgICBpZiAoZGlyUHJvdmlkZXIuaXNDb21wb25lbnQpIHtcbiAgICAgICAgY29tcG9uZW50RGlyUHJvdmlkZXIgPSBkaXJQcm92aWRlcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1ByZXNlbnQoZGlyUHJvdmlkZXIucHJvdmlkZXJzKSkge1xuICAgICAgICAgIG1lcmdlUmVzb2x2ZWRQcm92aWRlcnMoZGlyUHJvdmlkZXIucHJvdmlkZXJzLCBtZXJnZWRQcm92aWRlcnNNYXApO1xuICAgICAgICAgIHNldFByb3ZpZGVyc1Zpc2liaWxpdHkoZGlyUHJvdmlkZXIucHJvdmlkZXJzLCBWaXNpYmlsaXR5LlB1YmxpYywgcHJvdmlkZXJWaXNpYmlsaXR5TWFwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzUHJlc2VudChkaXJQcm92aWRlci52aWV3UHJvdmlkZXJzKSkge1xuICAgICAgICBtZXJnZVJlc29sdmVkUHJvdmlkZXJzKGRpclByb3ZpZGVyLnZpZXdQcm92aWRlcnMsIG1lcmdlZFByb3ZpZGVyc01hcCk7XG4gICAgICAgIHNldFByb3ZpZGVyc1Zpc2liaWxpdHkoZGlyUHJvdmlkZXIudmlld1Byb3ZpZGVycywgVmlzaWJpbGl0eS5Qcml2YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyVmlzaWJpbGl0eU1hcCk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBxdWVyeUlkeCA9IDA7IHF1ZXJ5SWR4IDwgZGlyUHJvdmlkZXIucXVlcmllcy5sZW5ndGg7IHF1ZXJ5SWR4KyspIHtcbiAgICAgICAgdmFyIHEgPSBkaXJQcm92aWRlci5xdWVyaWVzW3F1ZXJ5SWR4XTtcbiAgICAgICAgcHJvdG9RdWVyeVJlZnMucHVzaChuZXcgUHJvdG9RdWVyeVJlZihpLCBxLnNldHRlciwgcS5tZXRhZGF0YSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KGNvbXBvbmVudERpclByb3ZpZGVyKSAmJiBpc1ByZXNlbnQoY29tcG9uZW50RGlyUHJvdmlkZXIucHJvdmlkZXJzKSkge1xuICAgICAgLy8gZGlyZWN0aXZlIHByb3ZpZGVycyBuZWVkIHRvIGJlIHByaW9yaXRpemVkIG92ZXIgY29tcG9uZW50IHByb3ZpZGVyc1xuICAgICAgbWVyZ2VSZXNvbHZlZFByb3ZpZGVycyhjb21wb25lbnREaXJQcm92aWRlci5wcm92aWRlcnMsIG1lcmdlZFByb3ZpZGVyc01hcCk7XG4gICAgICBzZXRQcm92aWRlcnNWaXNpYmlsaXR5KGNvbXBvbmVudERpclByb3ZpZGVyLnByb3ZpZGVycywgVmlzaWJpbGl0eS5QdWJsaWMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyVmlzaWJpbGl0eU1hcCk7XG4gICAgfVxuICAgIG1lcmdlZFByb3ZpZGVyc01hcC5mb3JFYWNoKChwcm92aWRlciwgXykgPT4ge1xuICAgICAgcHJvdmlkZXJzLnB1c2goXG4gICAgICAgICAgbmV3IFByb3ZpZGVyV2l0aFZpc2liaWxpdHkocHJvdmlkZXIsIHByb3ZpZGVyVmlzaWJpbGl0eU1hcC5nZXQocHJvdmlkZXIua2V5LmlkKSkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBBcHBQcm90b0VsZW1lbnQoaXNQcmVzZW50KGNvbXBvbmVudERpclByb3ZpZGVyKSwgaW5kZXgsIGF0dHJpYnV0ZXMsIHByb3ZpZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b1F1ZXJ5UmVmcywgZGlyZWN0aXZlVmFyaWFibGVCaW5kaW5ncyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmlyc3RQcm92aWRlcklzQ29tcG9uZW50OiBib29sZWFuLCBwdWJsaWMgaW5kZXg6IG51bWJlcixcbiAgICAgICAgICAgICAgcHVibGljIGF0dHJpYnV0ZXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LCBwd3ZzOiBQcm92aWRlcldpdGhWaXNpYmlsaXR5W10sXG4gICAgICAgICAgICAgIHB1YmxpYyBwcm90b1F1ZXJ5UmVmczogUHJvdG9RdWVyeVJlZltdLFxuICAgICAgICAgICAgICBwdWJsaWMgZGlyZWN0aXZlVmFyaWFibGVCaW5kaW5nczoge1trZXk6IHN0cmluZ106IG51bWJlcn0pIHtcbiAgICB2YXIgbGVuZ3RoID0gcHd2cy5sZW5ndGg7XG4gICAgaWYgKGxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucHJvdG9JbmplY3RvciA9IG5ldyBQcm90b0luamVjdG9yKHB3dnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb3RvSW5qZWN0b3IgPSBudWxsO1xuICAgICAgdGhpcy5wcm90b1F1ZXJ5UmVmcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldFByb3ZpZGVyQXRJbmRleChpbmRleDogbnVtYmVyKTogYW55IHsgcmV0dXJuIHRoaXMucHJvdG9JbmplY3Rvci5nZXRQcm92aWRlckF0SW5kZXgoaW5kZXgpOyB9XG59XG5cbmNsYXNzIF9Db250ZXh0IHtcbiAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnQ6IGFueSwgcHVibGljIGNvbXBvbmVudEVsZW1lbnQ6IGFueSwgcHVibGljIGluamVjdG9yOiBhbnkpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBJbmplY3RvcldpdGhIb3N0Qm91bmRhcnkge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yLCBwdWJsaWMgaG9zdEluamVjdG9yQm91bmRhcnk6IGJvb2xlYW4pIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBFbGVtZW50IGltcGxlbWVudHMgRGVwZW5kZW5jeVByb3ZpZGVyLCBFbGVtZW50UmVmLCBBZnRlclZpZXdDaGVja2VkIHtcbiAgc3RhdGljIGdldFZpZXdQYXJlbnRJbmplY3RvcihwYXJlbnRWaWV3VHlwZTogVmlld1R5cGUsIGNvbnRhaW5lckFwcEVsZW1lbnQ6IEFwcEVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wZXJhdGl2ZWx5Q3JlYXRlZFByb3ZpZGVyczogUmVzb2x2ZWRQcm92aWRlcltdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RJbmplY3RvcjogSW5qZWN0b3IpOiBJbmplY3RvcldpdGhIb3N0Qm91bmRhcnkge1xuICAgIHZhciBwYXJlbnRJbmplY3RvcjtcbiAgICB2YXIgaG9zdEluamVjdG9yQm91bmRhcnk7XG4gICAgc3dpdGNoIChwYXJlbnRWaWV3VHlwZSkge1xuICAgICAgY2FzZSBWaWV3VHlwZS5DT01QT05FTlQ6XG4gICAgICAgIHBhcmVudEluamVjdG9yID0gY29udGFpbmVyQXBwRWxlbWVudC5faW5qZWN0b3I7XG4gICAgICAgIGhvc3RJbmplY3RvckJvdW5kYXJ5ID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZpZXdUeXBlLkVNQkVEREVEOlxuICAgICAgICBwYXJlbnRJbmplY3RvciA9IGlzUHJlc2VudChjb250YWluZXJBcHBFbGVtZW50LnByb3RvLnByb3RvSW5qZWN0b3IpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyQXBwRWxlbWVudC5faW5qZWN0b3IucGFyZW50IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyQXBwRWxlbWVudC5faW5qZWN0b3I7XG4gICAgICAgIGhvc3RJbmplY3RvckJvdW5kYXJ5ID0gY29udGFpbmVyQXBwRWxlbWVudC5faW5qZWN0b3IuaG9zdEJvdW5kYXJ5O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVmlld1R5cGUuSE9TVDpcbiAgICAgICAgaWYgKGlzUHJlc2VudChjb250YWluZXJBcHBFbGVtZW50KSkge1xuICAgICAgICAgIC8vIGhvc3QgdmlldyBpcyBhdHRhY2hlZCB0byBhIGNvbnRhaW5lclxuICAgICAgICAgIHBhcmVudEluamVjdG9yID0gaXNQcmVzZW50KGNvbnRhaW5lckFwcEVsZW1lbnQucHJvdG8ucHJvdG9JbmplY3RvcikgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckFwcEVsZW1lbnQuX2luamVjdG9yLnBhcmVudCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyQXBwRWxlbWVudC5faW5qZWN0b3I7XG4gICAgICAgICAgaWYgKGlzUHJlc2VudChpbXBlcmF0aXZlbHlDcmVhdGVkUHJvdmlkZXJzKSkge1xuICAgICAgICAgICAgdmFyIGltcGVyYXRpdmVQcm92aWRlcnNXaXRoVmlzaWJpbGl0eSA9IGltcGVyYXRpdmVseUNyZWF0ZWRQcm92aWRlcnMubWFwKFxuICAgICAgICAgICAgICAgIHAgPT4gbmV3IFByb3ZpZGVyV2l0aFZpc2liaWxpdHkocCwgVmlzaWJpbGl0eS5QdWJsaWMpKTtcbiAgICAgICAgICAgIC8vIFRoZSBpbXBlcmF0aXZlIGluamVjdG9yIGlzIHNpbWlsYXIgdG8gaGF2aW5nIGFuIGVsZW1lbnQgYmV0d2VlblxuICAgICAgICAgICAgLy8gdGhlIGR5bmFtaWMtbG9hZGVkIGNvbXBvbmVudCBhbmQgaXRzIHBhcmVudCA9PiBubyBib3VuZGFyeSBiZXR3ZWVuXG4gICAgICAgICAgICAvLyB0aGUgY29tcG9uZW50IGFuZCBpbXBlcmF0aXZlbHlDcmVhdGVkSW5qZWN0b3IuXG4gICAgICAgICAgICBwYXJlbnRJbmplY3RvciA9IG5ldyBJbmplY3RvcihuZXcgUHJvdG9JbmplY3RvcihpbXBlcmF0aXZlUHJvdmlkZXJzV2l0aFZpc2liaWxpdHkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SW5qZWN0b3IsIHRydWUsIG51bGwsIG51bGwpO1xuICAgICAgICAgICAgaG9zdEluamVjdG9yQm91bmRhcnkgPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaG9zdEluamVjdG9yQm91bmRhcnkgPSBjb250YWluZXJBcHBFbGVtZW50Ll9pbmplY3Rvci5ob3N0Qm91bmRhcnk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGJvb3RzdHJhcFxuICAgICAgICAgIHBhcmVudEluamVjdG9yID0gcm9vdEluamVjdG9yO1xuICAgICAgICAgIGhvc3RJbmplY3RvckJvdW5kYXJ5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbmplY3RvcldpdGhIb3N0Qm91bmRhcnkocGFyZW50SW5qZWN0b3IsIGhvc3RJbmplY3RvckJvdW5kYXJ5KTtcbiAgfVxuXG4gIHB1YmxpYyBuZXN0ZWRWaWV3czogQXBwVmlld1tdID0gbnVsbDtcbiAgcHVibGljIGNvbXBvbmVudFZpZXc6IEFwcFZpZXcgPSBudWxsO1xuXG4gIHByaXZhdGUgX3F1ZXJ5U3RyYXRlZ3k6IF9RdWVyeVN0cmF0ZWd5O1xuICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3I7XG4gIHByaXZhdGUgX3N0cmF0ZWd5OiBfRWxlbWVudERpcmVjdGl2ZVN0cmF0ZWd5O1xuICBwdWJsaWMgcmVmOiBFbGVtZW50UmVmXztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcHJvdG86IEFwcFByb3RvRWxlbWVudCwgcHVibGljIHBhcmVudFZpZXc6IEFwcFZpZXcsIHB1YmxpYyBwYXJlbnQ6IEFwcEVsZW1lbnQsXG4gICAgICAgICAgICAgIHB1YmxpYyBuYXRpdmVFbGVtZW50OiBhbnksIHB1YmxpYyBlbWJlZGRlZFZpZXdGYWN0b3J5OiBGdW5jdGlvbikge1xuICAgIHRoaXMucmVmID0gbmV3IEVsZW1lbnRSZWZfKHRoaXMpO1xuICAgIHZhciBwYXJlbnRJbmplY3RvciA9IGlzUHJlc2VudChwYXJlbnQpID8gcGFyZW50Ll9pbmplY3RvciA6IHBhcmVudFZpZXcucGFyZW50SW5qZWN0b3I7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLnByb3RvLnByb3RvSW5qZWN0b3IpKSB7XG4gICAgICB2YXIgaXNCb3VuZGFyeTtcbiAgICAgIGlmIChpc1ByZXNlbnQocGFyZW50KSAmJiBpc1ByZXNlbnQocGFyZW50LnByb3RvLnByb3RvSW5qZWN0b3IpKSB7XG4gICAgICAgIGlzQm91bmRhcnkgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlzQm91bmRhcnkgPSBwYXJlbnRWaWV3Lmhvc3RJbmplY3RvckJvdW5kYXJ5O1xuICAgICAgfVxuICAgICAgdGhpcy5fcXVlcnlTdHJhdGVneSA9IHRoaXMuX2J1aWxkUXVlcnlTdHJhdGVneSgpO1xuICAgICAgdGhpcy5faW5qZWN0b3IgPSBuZXcgSW5qZWN0b3IodGhpcy5wcm90by5wcm90b0luamVjdG9yLCBwYXJlbnRJbmplY3RvciwgaXNCb3VuZGFyeSwgdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHRoaXMuX2RlYnVnQ29udGV4dCgpKTtcblxuICAgICAgLy8gd2UgY291cGxlIG91cnNlbHZlcyB0byB0aGUgaW5qZWN0b3Igc3RyYXRlZ3kgdG8gYXZvaWQgcG9seW1vcnBoaWMgY2FsbHNcbiAgICAgIHZhciBpbmplY3RvclN0cmF0ZWd5ID0gPGFueT50aGlzLl9pbmplY3Rvci5pbnRlcm5hbFN0cmF0ZWd5O1xuICAgICAgdGhpcy5fc3RyYXRlZ3kgPSBpbmplY3RvclN0cmF0ZWd5IGluc3RhbmNlb2YgSW5qZWN0b3JJbmxpbmVTdHJhdGVneSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRWxlbWVudERpcmVjdGl2ZUlubGluZVN0cmF0ZWd5KGluamVjdG9yU3RyYXRlZ3ksIHRoaXMpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBFbGVtZW50RGlyZWN0aXZlRHluYW1pY1N0cmF0ZWd5KGluamVjdG9yU3RyYXRlZ3ksIHRoaXMpO1xuICAgICAgdGhpcy5fc3RyYXRlZ3kuaW5pdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9xdWVyeVN0cmF0ZWd5ID0gbnVsbDtcbiAgICAgIHRoaXMuX2luamVjdG9yID0gcGFyZW50SW5qZWN0b3I7XG4gICAgICB0aGlzLl9zdHJhdGVneSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYXR0YWNoQ29tcG9uZW50Vmlldyhjb21wb25lbnRWaWV3OiBBcHBWaWV3KSB7IHRoaXMuY29tcG9uZW50VmlldyA9IGNvbXBvbmVudFZpZXc7IH1cblxuICBwcml2YXRlIF9kZWJ1Z0NvbnRleHQoKTogYW55IHtcbiAgICB2YXIgYyA9IHRoaXMucGFyZW50Vmlldy5nZXREZWJ1Z0NvbnRleHQodGhpcywgbnVsbCwgbnVsbCk7XG4gICAgcmV0dXJuIGlzUHJlc2VudChjKSA/IG5ldyBfQ29udGV4dChjLmVsZW1lbnQsIGMuY29tcG9uZW50RWxlbWVudCwgYy5pbmplY3RvcikgOiBudWxsO1xuICB9XG5cbiAgaGFzVmFyaWFibGVCaW5kaW5nKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHZhciB2YiA9IHRoaXMucHJvdG8uZGlyZWN0aXZlVmFyaWFibGVCaW5kaW5ncztcbiAgICByZXR1cm4gaXNQcmVzZW50KHZiKSAmJiBTdHJpbmdNYXBXcmFwcGVyLmNvbnRhaW5zKHZiLCBuYW1lKTtcbiAgfVxuXG4gIGdldFZhcmlhYmxlQmluZGluZyhuYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgIHZhciBpbmRleCA9IHRoaXMucHJvdG8uZGlyZWN0aXZlVmFyaWFibGVCaW5kaW5nc1tuYW1lXTtcbiAgICByZXR1cm4gaXNQcmVzZW50KGluZGV4KSA/IHRoaXMuZ2V0RGlyZWN0aXZlQXRJbmRleCg8bnVtYmVyPmluZGV4KSA6IHRoaXMuZ2V0RWxlbWVudFJlZigpO1xuICB9XG5cbiAgZ2V0KHRva2VuOiBhbnkpOiBhbnkgeyByZXR1cm4gdGhpcy5faW5qZWN0b3IuZ2V0KHRva2VuKTsgfVxuXG4gIGhhc0RpcmVjdGl2ZSh0eXBlOiBUeXBlKTogYm9vbGVhbiB7IHJldHVybiBpc1ByZXNlbnQodGhpcy5faW5qZWN0b3IuZ2V0T3B0aW9uYWwodHlwZSkpOyB9XG5cbiAgZ2V0Q29tcG9uZW50KCk6IGFueSB7IHJldHVybiBpc1ByZXNlbnQodGhpcy5fc3RyYXRlZ3kpID8gdGhpcy5fc3RyYXRlZ3kuZ2V0Q29tcG9uZW50KCkgOiBudWxsOyB9XG5cbiAgZ2V0SW5qZWN0b3IoKTogSW5qZWN0b3IgeyByZXR1cm4gdGhpcy5faW5qZWN0b3I7IH1cblxuICBnZXRFbGVtZW50UmVmKCk6IEVsZW1lbnRSZWYgeyByZXR1cm4gdGhpcy5yZWY7IH1cblxuICBnZXRWaWV3Q29udGFpbmVyUmVmKCk6IFZpZXdDb250YWluZXJSZWYgeyByZXR1cm4gbmV3IFZpZXdDb250YWluZXJSZWZfKHRoaXMpOyB9XG5cbiAgZ2V0VGVtcGxhdGVSZWYoKTogVGVtcGxhdGVSZWYge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5lbWJlZGRlZFZpZXdGYWN0b3J5KSkge1xuICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZVJlZl8odGhpcy5yZWYpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldERlcGVuZGVuY3koaW5qZWN0b3I6IEluamVjdG9yLCBwcm92aWRlcjogUmVzb2x2ZWRQcm92aWRlciwgZGVwOiBEZXBlbmRlbmN5KTogYW55IHtcbiAgICBpZiAocHJvdmlkZXIgaW5zdGFuY2VvZiBEaXJlY3RpdmVQcm92aWRlcikge1xuICAgICAgdmFyIGRpckRlcCA9IDxEaXJlY3RpdmVEZXBlbmRlbmN5PmRlcDtcblxuICAgICAgaWYgKGlzUHJlc2VudChkaXJEZXAuYXR0cmlidXRlTmFtZSkpIHJldHVybiB0aGlzLl9idWlsZEF0dHJpYnV0ZShkaXJEZXApO1xuXG4gICAgICBpZiAoaXNQcmVzZW50KGRpckRlcC5xdWVyeURlY29yYXRvcikpXG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVN0cmF0ZWd5LmZpbmRRdWVyeShkaXJEZXAucXVlcnlEZWNvcmF0b3IpLmxpc3Q7XG5cbiAgICAgIGlmIChkaXJEZXAua2V5LmlkID09PSBTdGF0aWNLZXlzLmluc3RhbmNlKCkuY2hhbmdlRGV0ZWN0b3JSZWZJZCkge1xuICAgICAgICAvLyBXZSBwcm92aWRlIHRoZSBjb21wb25lbnQncyB2aWV3IGNoYW5nZSBkZXRlY3RvciB0byBjb21wb25lbnRzIGFuZFxuICAgICAgICAvLyB0aGUgc3Vycm91bmRpbmcgY29tcG9uZW50J3MgY2hhbmdlIGRldGVjdG9yIHRvIGRpcmVjdGl2ZXMuXG4gICAgICAgIGlmICh0aGlzLnByb3RvLmZpcnN0UHJvdmlkZXJJc0NvbXBvbmVudCkge1xuICAgICAgICAgIC8vIE5vdGU6IFRoZSBjb21wb25lbnQgdmlldyBpcyBub3QgeWV0IGNyZWF0ZWQgd2hlblxuICAgICAgICAgIC8vIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCFcbiAgICAgICAgICByZXR1cm4gbmV3IF9Db21wb25lbnRWaWV3Q2hhbmdlRGV0ZWN0b3JSZWYodGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50Vmlldy5jaGFuZ2VEZXRlY3Rvci5yZWY7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGRpckRlcC5rZXkuaWQgPT09IFN0YXRpY0tleXMuaW5zdGFuY2UoKS5lbGVtZW50UmVmSWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RWxlbWVudFJlZigpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlyRGVwLmtleS5pZCA9PT0gU3RhdGljS2V5cy5pbnN0YW5jZSgpLnZpZXdDb250YWluZXJJZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWaWV3Q29udGFpbmVyUmVmKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXJEZXAua2V5LmlkID09PSBTdGF0aWNLZXlzLmluc3RhbmNlKCkudGVtcGxhdGVSZWZJZCkge1xuICAgICAgICB2YXIgdHIgPSB0aGlzLmdldFRlbXBsYXRlUmVmKCk7XG4gICAgICAgIGlmIChpc0JsYW5rKHRyKSAmJiAhZGlyRGVwLm9wdGlvbmFsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IE5vUHJvdmlkZXJFcnJvcihudWxsLCBkaXJEZXAua2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHI7XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXJEZXAua2V5LmlkID09PSBTdGF0aWNLZXlzLmluc3RhbmNlKCkucmVuZGVyZXJJZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnRWaWV3LnJlbmRlcmVyO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmIChwcm92aWRlciBpbnN0YW5jZW9mIFBpcGVQcm92aWRlcikge1xuICAgICAgaWYgKGRlcC5rZXkuaWQgPT09IFN0YXRpY0tleXMuaW5zdGFuY2UoKS5jaGFuZ2VEZXRlY3RvclJlZklkKSB7XG4gICAgICAgIC8vIFdlIHByb3ZpZGUgdGhlIGNvbXBvbmVudCdzIHZpZXcgY2hhbmdlIGRldGVjdG9yIHRvIGNvbXBvbmVudHMgYW5kXG4gICAgICAgIC8vIHRoZSBzdXJyb3VuZGluZyBjb21wb25lbnQncyBjaGFuZ2UgZGV0ZWN0b3IgdG8gZGlyZWN0aXZlcy5cbiAgICAgICAgaWYgKHRoaXMucHJvdG8uZmlyc3RQcm92aWRlcklzQ29tcG9uZW50KSB7XG4gICAgICAgICAgLy8gTm90ZTogVGhlIGNvbXBvbmVudCB2aWV3IGlzIG5vdCB5ZXQgY3JlYXRlZCB3aGVuXG4gICAgICAgICAgLy8gdGhpcyBtZXRob2QgaXMgY2FsbGVkIVxuICAgICAgICAgIHJldHVybiBuZXcgX0NvbXBvbmVudFZpZXdDaGFuZ2VEZXRlY3RvclJlZih0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnRWaWV3LmNoYW5nZURldGVjdG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFVOREVGSU5FRDtcbiAgfVxuXG4gIHByaXZhdGUgX2J1aWxkQXR0cmlidXRlKGRlcDogRGlyZWN0aXZlRGVwZW5kZW5jeSk6IHN0cmluZyB7XG4gICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLnByb3RvLmF0dHJpYnV0ZXM7XG4gICAgaWYgKGlzUHJlc2VudChhdHRyaWJ1dGVzKSAmJiBTdHJpbmdNYXBXcmFwcGVyLmNvbnRhaW5zKGF0dHJpYnV0ZXMsIGRlcC5hdHRyaWJ1dGVOYW1lKSkge1xuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNbZGVwLmF0dHJpYnV0ZU5hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBhZGREaXJlY3RpdmVzTWF0Y2hpbmdRdWVyeShxdWVyeTogUXVlcnlNZXRhZGF0YSwgbGlzdDogYW55W10pOiB2b2lkIHtcbiAgICB2YXIgdGVtcGxhdGVSZWYgPSB0aGlzLmdldFRlbXBsYXRlUmVmKCk7XG4gICAgaWYgKHF1ZXJ5LnNlbGVjdG9yID09PSBUZW1wbGF0ZVJlZiAmJiBpc1ByZXNlbnQodGVtcGxhdGVSZWYpKSB7XG4gICAgICBsaXN0LnB1c2godGVtcGxhdGVSZWYpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc3RyYXRlZ3kgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fc3RyYXRlZ3kuYWRkRGlyZWN0aXZlc01hdGNoaW5nUXVlcnkocXVlcnksIGxpc3QpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2J1aWxkUXVlcnlTdHJhdGVneSgpOiBfUXVlcnlTdHJhdGVneSB7XG4gICAgaWYgKHRoaXMucHJvdG8ucHJvdG9RdWVyeVJlZnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gX2VtcHR5UXVlcnlTdHJhdGVneTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvdG8ucHJvdG9RdWVyeVJlZnMubGVuZ3RoIDw9XG4gICAgICAgICAgICAgICBJbmxpbmVRdWVyeVN0cmF0ZWd5Lk5VTUJFUl9PRl9TVVBQT1JURURfUVVFUklFUykge1xuICAgICAgcmV0dXJuIG5ldyBJbmxpbmVRdWVyeVN0cmF0ZWd5KHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IER5bmFtaWNRdWVyeVN0cmF0ZWd5KHRoaXMpO1xuICAgIH1cbiAgfVxuXG5cbiAgZ2V0RGlyZWN0aXZlQXRJbmRleChpbmRleDogbnVtYmVyKTogYW55IHsgcmV0dXJuIHRoaXMuX2luamVjdG9yLmdldEF0KGluZGV4KTsgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX3F1ZXJ5U3RyYXRlZ3kpKSB0aGlzLl9xdWVyeVN0cmF0ZWd5LnVwZGF0ZVZpZXdRdWVyaWVzKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLl9xdWVyeVN0cmF0ZWd5KSkgdGhpcy5fcXVlcnlTdHJhdGVneS51cGRhdGVDb250ZW50UXVlcmllcygpO1xuICB9XG5cbiAgdHJhdmVyc2VBbmRTZXRRdWVyaWVzQXNEaXJ0eSgpOiB2b2lkIHtcbiAgICB2YXIgaW5qOiBBcHBFbGVtZW50ID0gdGhpcztcbiAgICB3aGlsZSAoaXNQcmVzZW50KGluaikpIHtcbiAgICAgIGluai5fc2V0UXVlcmllc0FzRGlydHkoKTtcbiAgICAgIGlmIChpc0JsYW5rKGluai5wYXJlbnQpICYmIGluai5wYXJlbnRWaWV3LnByb3RvLnR5cGUgPT09IFZpZXdUeXBlLkVNQkVEREVEKSB7XG4gICAgICAgIGluaiA9IGluai5wYXJlbnRWaWV3LmNvbnRhaW5lckFwcEVsZW1lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmogPSBpbmoucGFyZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldFF1ZXJpZXNBc0RpcnR5KCk6IHZvaWQge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5fcXVlcnlTdHJhdGVneSkpIHtcbiAgICAgIHRoaXMuX3F1ZXJ5U3RyYXRlZ3kuc2V0Q29udGVudFF1ZXJpZXNBc0RpcnR5KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnBhcmVudFZpZXcucHJvdG8udHlwZSA9PT0gVmlld1R5cGUuQ09NUE9ORU5UKSB7XG4gICAgICB0aGlzLnBhcmVudFZpZXcuY29udGFpbmVyQXBwRWxlbWVudC5fcXVlcnlTdHJhdGVneS5zZXRWaWV3UXVlcmllc0FzRGlydHkoKTtcbiAgICB9XG4gIH1cbn1cblxuaW50ZXJmYWNlIF9RdWVyeVN0cmF0ZWd5IHtcbiAgc2V0Q29udGVudFF1ZXJpZXNBc0RpcnR5KCk6IHZvaWQ7XG4gIHNldFZpZXdRdWVyaWVzQXNEaXJ0eSgpOiB2b2lkO1xuICB1cGRhdGVDb250ZW50UXVlcmllcygpOiB2b2lkO1xuICB1cGRhdGVWaWV3UXVlcmllcygpOiB2b2lkO1xuICBmaW5kUXVlcnkocXVlcnk6IFF1ZXJ5TWV0YWRhdGEpOiBRdWVyeVJlZjtcbn1cblxuY2xhc3MgX0VtcHR5UXVlcnlTdHJhdGVneSBpbXBsZW1lbnRzIF9RdWVyeVN0cmF0ZWd5IHtcbiAgc2V0Q29udGVudFF1ZXJpZXNBc0RpcnR5KCk6IHZvaWQge31cbiAgc2V0Vmlld1F1ZXJpZXNBc0RpcnR5KCk6IHZvaWQge31cbiAgdXBkYXRlQ29udGVudFF1ZXJpZXMoKTogdm9pZCB7fVxuICB1cGRhdGVWaWV3UXVlcmllcygpOiB2b2lkIHt9XG4gIGZpbmRRdWVyeShxdWVyeTogUXVlcnlNZXRhZGF0YSk6IFF1ZXJ5UmVmIHtcbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgQ2Fubm90IGZpbmQgcXVlcnkgZm9yIGRpcmVjdGl2ZSAke3F1ZXJ5fS5gKTtcbiAgfVxufVxuXG52YXIgX2VtcHR5UXVlcnlTdHJhdGVneSA9IG5ldyBfRW1wdHlRdWVyeVN0cmF0ZWd5KCk7XG5cbmNsYXNzIElubGluZVF1ZXJ5U3RyYXRlZ3kgaW1wbGVtZW50cyBfUXVlcnlTdHJhdGVneSB7XG4gIHN0YXRpYyBOVU1CRVJfT0ZfU1VQUE9SVEVEX1FVRVJJRVMgPSAzO1xuXG4gIHF1ZXJ5MDogUXVlcnlSZWY7XG4gIHF1ZXJ5MTogUXVlcnlSZWY7XG4gIHF1ZXJ5MjogUXVlcnlSZWY7XG5cbiAgY29uc3RydWN0b3IoZWk6IEFwcEVsZW1lbnQpIHtcbiAgICB2YXIgcHJvdG9SZWZzID0gZWkucHJvdG8ucHJvdG9RdWVyeVJlZnM7XG4gICAgaWYgKHByb3RvUmVmcy5sZW5ndGggPiAwKSB0aGlzLnF1ZXJ5MCA9IG5ldyBRdWVyeVJlZihwcm90b1JlZnNbMF0sIGVpKTtcbiAgICBpZiAocHJvdG9SZWZzLmxlbmd0aCA+IDEpIHRoaXMucXVlcnkxID0gbmV3IFF1ZXJ5UmVmKHByb3RvUmVmc1sxXSwgZWkpO1xuICAgIGlmIChwcm90b1JlZnMubGVuZ3RoID4gMikgdGhpcy5xdWVyeTIgPSBuZXcgUXVlcnlSZWYocHJvdG9SZWZzWzJdLCBlaSk7XG4gIH1cblxuICBzZXRDb250ZW50UXVlcmllc0FzRGlydHkoKTogdm9pZCB7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLnF1ZXJ5MCkgJiYgIXRoaXMucXVlcnkwLmlzVmlld1F1ZXJ5KSB0aGlzLnF1ZXJ5MC5kaXJ0eSA9IHRydWU7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLnF1ZXJ5MSkgJiYgIXRoaXMucXVlcnkxLmlzVmlld1F1ZXJ5KSB0aGlzLnF1ZXJ5MS5kaXJ0eSA9IHRydWU7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLnF1ZXJ5MikgJiYgIXRoaXMucXVlcnkyLmlzVmlld1F1ZXJ5KSB0aGlzLnF1ZXJ5Mi5kaXJ0eSA9IHRydWU7XG4gIH1cblxuICBzZXRWaWV3UXVlcmllc0FzRGlydHkoKTogdm9pZCB7XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLnF1ZXJ5MCkgJiYgdGhpcy5xdWVyeTAuaXNWaWV3UXVlcnkpIHRoaXMucXVlcnkwLmRpcnR5ID0gdHJ1ZTtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMucXVlcnkxKSAmJiB0aGlzLnF1ZXJ5MS5pc1ZpZXdRdWVyeSkgdGhpcy5xdWVyeTEuZGlydHkgPSB0cnVlO1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5xdWVyeTIpICYmIHRoaXMucXVlcnkyLmlzVmlld1F1ZXJ5KSB0aGlzLnF1ZXJ5Mi5kaXJ0eSA9IHRydWU7XG4gIH1cblxuICB1cGRhdGVDb250ZW50UXVlcmllcygpIHtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMucXVlcnkwKSAmJiAhdGhpcy5xdWVyeTAuaXNWaWV3UXVlcnkpIHtcbiAgICAgIHRoaXMucXVlcnkwLnVwZGF0ZSgpO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMucXVlcnkxKSAmJiAhdGhpcy5xdWVyeTEuaXNWaWV3UXVlcnkpIHtcbiAgICAgIHRoaXMucXVlcnkxLnVwZGF0ZSgpO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMucXVlcnkyKSAmJiAhdGhpcy5xdWVyeTIuaXNWaWV3UXVlcnkpIHtcbiAgICAgIHRoaXMucXVlcnkyLnVwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVZpZXdRdWVyaWVzKCkge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5xdWVyeTApICYmIHRoaXMucXVlcnkwLmlzVmlld1F1ZXJ5KSB7XG4gICAgICB0aGlzLnF1ZXJ5MC51cGRhdGUoKTtcbiAgICB9XG4gICAgaWYgKGlzUHJlc2VudCh0aGlzLnF1ZXJ5MSkgJiYgdGhpcy5xdWVyeTEuaXNWaWV3UXVlcnkpIHtcbiAgICAgIHRoaXMucXVlcnkxLnVwZGF0ZSgpO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMucXVlcnkyKSAmJiB0aGlzLnF1ZXJ5Mi5pc1ZpZXdRdWVyeSkge1xuICAgICAgdGhpcy5xdWVyeTIudXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZmluZFF1ZXJ5KHF1ZXJ5OiBRdWVyeU1ldGFkYXRhKTogUXVlcnlSZWYge1xuICAgIGlmIChpc1ByZXNlbnQodGhpcy5xdWVyeTApICYmIHRoaXMucXVlcnkwLnByb3RvUXVlcnlSZWYucXVlcnkgPT09IHF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5xdWVyeTA7XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQodGhpcy5xdWVyeTEpICYmIHRoaXMucXVlcnkxLnByb3RvUXVlcnlSZWYucXVlcnkgPT09IHF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5xdWVyeTE7XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQodGhpcy5xdWVyeTIpICYmIHRoaXMucXVlcnkyLnByb3RvUXVlcnlSZWYucXVlcnkgPT09IHF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5xdWVyeTI7XG4gICAgfVxuICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBDYW5ub3QgZmluZCBxdWVyeSBmb3IgZGlyZWN0aXZlICR7cXVlcnl9LmApO1xuICB9XG59XG5cbmNsYXNzIER5bmFtaWNRdWVyeVN0cmF0ZWd5IGltcGxlbWVudHMgX1F1ZXJ5U3RyYXRlZ3kge1xuICBxdWVyaWVzOiBRdWVyeVJlZltdO1xuXG4gIGNvbnN0cnVjdG9yKGVpOiBBcHBFbGVtZW50KSB7XG4gICAgdGhpcy5xdWVyaWVzID0gZWkucHJvdG8ucHJvdG9RdWVyeVJlZnMubWFwKHAgPT4gbmV3IFF1ZXJ5UmVmKHAsIGVpKSk7XG4gIH1cblxuICBzZXRDb250ZW50UXVlcmllc0FzRGlydHkoKTogdm9pZCB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnF1ZXJpZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBxID0gdGhpcy5xdWVyaWVzW2ldO1xuICAgICAgaWYgKCFxLmlzVmlld1F1ZXJ5KSBxLmRpcnR5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZXRWaWV3UXVlcmllc0FzRGlydHkoKTogdm9pZCB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnF1ZXJpZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBxID0gdGhpcy5xdWVyaWVzW2ldO1xuICAgICAgaWYgKHEuaXNWaWV3UXVlcnkpIHEuZGlydHkgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNvbnRlbnRRdWVyaWVzKCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5xdWVyaWVzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgcSA9IHRoaXMucXVlcmllc1tpXTtcbiAgICAgIGlmICghcS5pc1ZpZXdRdWVyeSkge1xuICAgICAgICBxLnVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVZpZXdRdWVyaWVzKCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5xdWVyaWVzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgcSA9IHRoaXMucXVlcmllc1tpXTtcbiAgICAgIGlmIChxLmlzVmlld1F1ZXJ5KSB7XG4gICAgICAgIHEudXBkYXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZmluZFF1ZXJ5KHF1ZXJ5OiBRdWVyeU1ldGFkYXRhKTogUXVlcnlSZWYge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5xdWVyaWVzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgcSA9IHRoaXMucXVlcmllc1tpXTtcbiAgICAgIGlmIChxLnByb3RvUXVlcnlSZWYucXVlcnkgPT09IHF1ZXJ5KSB7XG4gICAgICAgIHJldHVybiBxO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihgQ2Fubm90IGZpbmQgcXVlcnkgZm9yIGRpcmVjdGl2ZSAke3F1ZXJ5fS5gKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgX0VsZW1lbnREaXJlY3RpdmVTdHJhdGVneSB7XG4gIGdldENvbXBvbmVudCgpOiBhbnk7XG4gIGlzQ29tcG9uZW50S2V5KGtleTogS2V5KTogYm9vbGVhbjtcbiAgYWRkRGlyZWN0aXZlc01hdGNoaW5nUXVlcnkocTogUXVlcnlNZXRhZGF0YSwgcmVzOiBhbnlbXSk6IHZvaWQ7XG4gIGluaXQoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBTdHJhdGVneSB1c2VkIGJ5IHRoZSBgRWxlbWVudEluamVjdG9yYCB3aGVuIHRoZSBudW1iZXIgb2YgcHJvdmlkZXJzIGlzIDEwIG9yIGxlc3MuXG4gKiBJbiBzdWNoIGEgY2FzZSwgaW5saW5pbmcgZmllbGRzIGlzIGJlbmVmaWNpYWwgZm9yIHBlcmZvcm1hbmNlcy5cbiAqL1xuY2xhc3MgRWxlbWVudERpcmVjdGl2ZUlubGluZVN0cmF0ZWd5IGltcGxlbWVudHMgX0VsZW1lbnREaXJlY3RpdmVTdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpbmplY3RvclN0cmF0ZWd5OiBJbmplY3RvcklubGluZVN0cmF0ZWd5LCBwdWJsaWMgX2VpOiBBcHBFbGVtZW50KSB7fVxuXG4gIGluaXQoKTogdm9pZCB7XG4gICAgdmFyIGkgPSB0aGlzLmluamVjdG9yU3RyYXRlZ3k7XG4gICAgdmFyIHAgPSBpLnByb3RvU3RyYXRlZ3k7XG4gICAgaS5yZXNldENvbnN0cnVjdGlvbkNvdW50ZXIoKTtcblxuICAgIGlmIChwLnByb3ZpZGVyMCBpbnN0YW5jZW9mIERpcmVjdGl2ZVByb3ZpZGVyICYmIGlzUHJlc2VudChwLmtleUlkMCkgJiYgaS5vYmowID09PSBVTkRFRklORUQpXG4gICAgICBpLm9iajAgPSBpLmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcjAsIHAudmlzaWJpbGl0eTApO1xuICAgIGlmIChwLnByb3ZpZGVyMSBpbnN0YW5jZW9mIERpcmVjdGl2ZVByb3ZpZGVyICYmIGlzUHJlc2VudChwLmtleUlkMSkgJiYgaS5vYmoxID09PSBVTkRFRklORUQpXG4gICAgICBpLm9iajEgPSBpLmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcjEsIHAudmlzaWJpbGl0eTEpO1xuICAgIGlmIChwLnByb3ZpZGVyMiBpbnN0YW5jZW9mIERpcmVjdGl2ZVByb3ZpZGVyICYmIGlzUHJlc2VudChwLmtleUlkMikgJiYgaS5vYmoyID09PSBVTkRFRklORUQpXG4gICAgICBpLm9iajIgPSBpLmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcjIsIHAudmlzaWJpbGl0eTIpO1xuICAgIGlmIChwLnByb3ZpZGVyMyBpbnN0YW5jZW9mIERpcmVjdGl2ZVByb3ZpZGVyICYmIGlzUHJlc2VudChwLmtleUlkMykgJiYgaS5vYmozID09PSBVTkRFRklORUQpXG4gICAgICBpLm9iajMgPSBpLmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcjMsIHAudmlzaWJpbGl0eTMpO1xuICAgIGlmIChwLnByb3ZpZGVyNCBpbnN0YW5jZW9mIERpcmVjdGl2ZVByb3ZpZGVyICYmIGlzUHJlc2VudChwLmtleUlkNCkgJiYgaS5vYmo0ID09PSBVTkRFRklORUQpXG4gICAgICBpLm9iajQgPSBpLmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcjQsIHAudmlzaWJpbGl0eTQpO1xuICAgIGlmIChwLnByb3ZpZGVyNSBpbnN0YW5jZW9mIERpcmVjdGl2ZVByb3ZpZGVyICYmIGlzUHJlc2VudChwLmtleUlkNSkgJiYgaS5vYmo1ID09PSBVTkRFRklORUQpXG4gICAgICBpLm9iajUgPSBpLmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcjUsIHAudmlzaWJpbGl0eTUpO1xuICAgIGlmIChwLnByb3ZpZGVyNiBpbnN0YW5jZW9mIERpcmVjdGl2ZVByb3ZpZGVyICYmIGlzUHJlc2VudChwLmtleUlkNikgJiYgaS5vYmo2ID09PSBVTkRFRklORUQpXG4gICAgICBpLm9iajYgPSBpLmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcjYsIHAudmlzaWJpbGl0eTYpO1xuICAgIGlmIChwLnByb3ZpZGVyNyBpbnN0YW5jZW9mIERpcmVjdGl2ZVByb3ZpZGVyICYmIGlzUHJlc2VudChwLmtleUlkNykgJiYgaS5vYmo3ID09PSBVTkRFRklORUQpXG4gICAgICBpLm9iajcgPSBpLmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcjcsIHAudmlzaWJpbGl0eTcpO1xuICAgIGlmIChwLnByb3ZpZGVyOCBpbnN0YW5jZW9mIERpcmVjdGl2ZVByb3ZpZGVyICYmIGlzUHJlc2VudChwLmtleUlkOCkgJiYgaS5vYmo4ID09PSBVTkRFRklORUQpXG4gICAgICBpLm9iajggPSBpLmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcjgsIHAudmlzaWJpbGl0eTgpO1xuICAgIGlmIChwLnByb3ZpZGVyOSBpbnN0YW5jZW9mIERpcmVjdGl2ZVByb3ZpZGVyICYmIGlzUHJlc2VudChwLmtleUlkOSkgJiYgaS5vYmo5ID09PSBVTkRFRklORUQpXG4gICAgICBpLm9iajkgPSBpLmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcjksIHAudmlzaWJpbGl0eTkpO1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50KCk6IGFueSB7IHJldHVybiB0aGlzLmluamVjdG9yU3RyYXRlZ3kub2JqMDsgfVxuXG4gIGlzQ29tcG9uZW50S2V5KGtleTogS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VpLnByb3RvLmZpcnN0UHJvdmlkZXJJc0NvbXBvbmVudCAmJiBpc1ByZXNlbnQoa2V5KSAmJlxuICAgICAgICAgICBrZXkuaWQgPT09IHRoaXMuaW5qZWN0b3JTdHJhdGVneS5wcm90b1N0cmF0ZWd5LmtleUlkMDtcbiAgfVxuXG4gIGFkZERpcmVjdGl2ZXNNYXRjaGluZ1F1ZXJ5KHF1ZXJ5OiBRdWVyeU1ldGFkYXRhLCBsaXN0OiBhbnlbXSk6IHZvaWQge1xuICAgIHZhciBpID0gdGhpcy5pbmplY3RvclN0cmF0ZWd5O1xuICAgIHZhciBwID0gaS5wcm90b1N0cmF0ZWd5O1xuICAgIGlmIChpc1ByZXNlbnQocC5wcm92aWRlcjApICYmIHAucHJvdmlkZXIwLmtleS50b2tlbiA9PT0gcXVlcnkuc2VsZWN0b3IpIHtcbiAgICAgIGlmIChpLm9iajAgPT09IFVOREVGSU5FRCkgaS5vYmowID0gaS5pbnN0YW50aWF0ZVByb3ZpZGVyKHAucHJvdmlkZXIwLCBwLnZpc2liaWxpdHkwKTtcbiAgICAgIGxpc3QucHVzaChpLm9iajApO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHAucHJvdmlkZXIxKSAmJiBwLnByb3ZpZGVyMS5rZXkudG9rZW4gPT09IHF1ZXJ5LnNlbGVjdG9yKSB7XG4gICAgICBpZiAoaS5vYmoxID09PSBVTkRFRklORUQpIGkub2JqMSA9IGkuaW5zdGFudGlhdGVQcm92aWRlcihwLnByb3ZpZGVyMSwgcC52aXNpYmlsaXR5MSk7XG4gICAgICBsaXN0LnB1c2goaS5vYmoxKTtcbiAgICB9XG4gICAgaWYgKGlzUHJlc2VudChwLnByb3ZpZGVyMikgJiYgcC5wcm92aWRlcjIua2V5LnRva2VuID09PSBxdWVyeS5zZWxlY3Rvcikge1xuICAgICAgaWYgKGkub2JqMiA9PT0gVU5ERUZJTkVEKSBpLm9iajIgPSBpLmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcjIsIHAudmlzaWJpbGl0eTIpO1xuICAgICAgbGlzdC5wdXNoKGkub2JqMik7XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQocC5wcm92aWRlcjMpICYmIHAucHJvdmlkZXIzLmtleS50b2tlbiA9PT0gcXVlcnkuc2VsZWN0b3IpIHtcbiAgICAgIGlmIChpLm9iajMgPT09IFVOREVGSU5FRCkgaS5vYmozID0gaS5pbnN0YW50aWF0ZVByb3ZpZGVyKHAucHJvdmlkZXIzLCBwLnZpc2liaWxpdHkzKTtcbiAgICAgIGxpc3QucHVzaChpLm9iajMpO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHAucHJvdmlkZXI0KSAmJiBwLnByb3ZpZGVyNC5rZXkudG9rZW4gPT09IHF1ZXJ5LnNlbGVjdG9yKSB7XG4gICAgICBpZiAoaS5vYmo0ID09PSBVTkRFRklORUQpIGkub2JqNCA9IGkuaW5zdGFudGlhdGVQcm92aWRlcihwLnByb3ZpZGVyNCwgcC52aXNpYmlsaXR5NCk7XG4gICAgICBsaXN0LnB1c2goaS5vYmo0KTtcbiAgICB9XG4gICAgaWYgKGlzUHJlc2VudChwLnByb3ZpZGVyNSkgJiYgcC5wcm92aWRlcjUua2V5LnRva2VuID09PSBxdWVyeS5zZWxlY3Rvcikge1xuICAgICAgaWYgKGkub2JqNSA9PT0gVU5ERUZJTkVEKSBpLm9iajUgPSBpLmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcjUsIHAudmlzaWJpbGl0eTUpO1xuICAgICAgbGlzdC5wdXNoKGkub2JqNSk7XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQocC5wcm92aWRlcjYpICYmIHAucHJvdmlkZXI2LmtleS50b2tlbiA9PT0gcXVlcnkuc2VsZWN0b3IpIHtcbiAgICAgIGlmIChpLm9iajYgPT09IFVOREVGSU5FRCkgaS5vYmo2ID0gaS5pbnN0YW50aWF0ZVByb3ZpZGVyKHAucHJvdmlkZXI2LCBwLnZpc2liaWxpdHk2KTtcbiAgICAgIGxpc3QucHVzaChpLm9iajYpO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHAucHJvdmlkZXI3KSAmJiBwLnByb3ZpZGVyNy5rZXkudG9rZW4gPT09IHF1ZXJ5LnNlbGVjdG9yKSB7XG4gICAgICBpZiAoaS5vYmo3ID09PSBVTkRFRklORUQpIGkub2JqNyA9IGkuaW5zdGFudGlhdGVQcm92aWRlcihwLnByb3ZpZGVyNywgcC52aXNpYmlsaXR5Nyk7XG4gICAgICBsaXN0LnB1c2goaS5vYmo3KTtcbiAgICB9XG4gICAgaWYgKGlzUHJlc2VudChwLnByb3ZpZGVyOCkgJiYgcC5wcm92aWRlcjgua2V5LnRva2VuID09PSBxdWVyeS5zZWxlY3Rvcikge1xuICAgICAgaWYgKGkub2JqOCA9PT0gVU5ERUZJTkVEKSBpLm9iajggPSBpLmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcjgsIHAudmlzaWJpbGl0eTgpO1xuICAgICAgbGlzdC5wdXNoKGkub2JqOCk7XG4gICAgfVxuICAgIGlmIChpc1ByZXNlbnQocC5wcm92aWRlcjkpICYmIHAucHJvdmlkZXI5LmtleS50b2tlbiA9PT0gcXVlcnkuc2VsZWN0b3IpIHtcbiAgICAgIGlmIChpLm9iajkgPT09IFVOREVGSU5FRCkgaS5vYmo5ID0gaS5pbnN0YW50aWF0ZVByb3ZpZGVyKHAucHJvdmlkZXI5LCBwLnZpc2liaWxpdHk5KTtcbiAgICAgIGxpc3QucHVzaChpLm9iajkpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFN0cmF0ZWd5IHVzZWQgYnkgdGhlIGBFbGVtZW50SW5qZWN0b3JgIHdoZW4gdGhlIG51bWJlciBvZiBiaW5kaW5ncyBpcyAxMSBvciBtb3JlLlxuICogSW4gc3VjaCBhIGNhc2UsIHRoZXJlIGFyZSB0b28gbWFueSBmaWVsZHMgdG8gaW5saW5lIChzZWUgRWxlbWVudEluamVjdG9ySW5saW5lU3RyYXRlZ3kpLlxuICovXG5jbGFzcyBFbGVtZW50RGlyZWN0aXZlRHluYW1pY1N0cmF0ZWd5IGltcGxlbWVudHMgX0VsZW1lbnREaXJlY3RpdmVTdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpbmplY3RvclN0cmF0ZWd5OiBJbmplY3RvckR5bmFtaWNTdHJhdGVneSwgcHVibGljIF9laTogQXBwRWxlbWVudCkge31cblxuICBpbml0KCk6IHZvaWQge1xuICAgIHZhciBpbmogPSB0aGlzLmluamVjdG9yU3RyYXRlZ3k7XG4gICAgdmFyIHAgPSBpbmoucHJvdG9TdHJhdGVneTtcbiAgICBpbmoucmVzZXRDb25zdHJ1Y3Rpb25Db3VudGVyKCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAua2V5SWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocC5wcm92aWRlcnNbaV0gaW5zdGFuY2VvZiBEaXJlY3RpdmVQcm92aWRlciAmJiBpc1ByZXNlbnQocC5rZXlJZHNbaV0pICYmXG4gICAgICAgICAgaW5qLm9ianNbaV0gPT09IFVOREVGSU5FRCkge1xuICAgICAgICBpbmoub2Jqc1tpXSA9IGluai5pbnN0YW50aWF0ZVByb3ZpZGVyKHAucHJvdmlkZXJzW2ldLCBwLnZpc2liaWxpdGllc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29tcG9uZW50KCk6IGFueSB7IHJldHVybiB0aGlzLmluamVjdG9yU3RyYXRlZ3kub2Jqc1swXTsgfVxuXG4gIGlzQ29tcG9uZW50S2V5KGtleTogS2V5KTogYm9vbGVhbiB7XG4gICAgdmFyIHAgPSB0aGlzLmluamVjdG9yU3RyYXRlZ3kucHJvdG9TdHJhdGVneTtcbiAgICByZXR1cm4gdGhpcy5fZWkucHJvdG8uZmlyc3RQcm92aWRlcklzQ29tcG9uZW50ICYmIGlzUHJlc2VudChrZXkpICYmIGtleS5pZCA9PT0gcC5rZXlJZHNbMF07XG4gIH1cblxuICBhZGREaXJlY3RpdmVzTWF0Y2hpbmdRdWVyeShxdWVyeTogUXVlcnlNZXRhZGF0YSwgbGlzdDogYW55W10pOiB2b2lkIHtcbiAgICB2YXIgaXN0ID0gdGhpcy5pbmplY3RvclN0cmF0ZWd5O1xuICAgIHZhciBwID0gaXN0LnByb3RvU3RyYXRlZ3k7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAucHJvdmlkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocC5wcm92aWRlcnNbaV0ua2V5LnRva2VuID09PSBxdWVyeS5zZWxlY3Rvcikge1xuICAgICAgICBpZiAoaXN0Lm9ianNbaV0gPT09IFVOREVGSU5FRCkge1xuICAgICAgICAgIGlzdC5vYmpzW2ldID0gaXN0Lmluc3RhbnRpYXRlUHJvdmlkZXIocC5wcm92aWRlcnNbaV0sIHAudmlzaWJpbGl0aWVzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBsaXN0LnB1c2goaXN0Lm9ianNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvdG9RdWVyeVJlZiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaXJJbmRleDogbnVtYmVyLCBwdWJsaWMgc2V0dGVyOiBTZXR0ZXJGbiwgcHVibGljIHF1ZXJ5OiBRdWVyeU1ldGFkYXRhKSB7fVxuXG4gIGdldCB1c2VzUHJvcGVydHlTeW50YXgoKTogYm9vbGVhbiB7IHJldHVybiBpc1ByZXNlbnQodGhpcy5zZXR0ZXIpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBRdWVyeVJlZiB7XG4gIHB1YmxpYyBsaXN0OiBRdWVyeUxpc3Q8YW55PjtcbiAgcHVibGljIGRpcnR5OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwcm90b1F1ZXJ5UmVmOiBQcm90b1F1ZXJ5UmVmLCBwcml2YXRlIG9yaWdpbmF0b3I6IEFwcEVsZW1lbnQpIHtcbiAgICB0aGlzLmxpc3QgPSBuZXcgUXVlcnlMaXN0PGFueT4oKTtcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBpc1ZpZXdRdWVyeSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMucHJvdG9RdWVyeVJlZi5xdWVyeS5pc1ZpZXdRdWVyeTsgfVxuXG4gIHVwZGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlydHkpIHJldHVybjtcbiAgICB0aGlzLl91cGRhdGUoKTtcbiAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG5cbiAgICAvLyBUT0RPIGRlbGV0ZSB0aGUgY2hlY2sgb25jZSBvbmx5IGZpZWxkIHF1ZXJpZXMgYXJlIHN1cHBvcnRlZFxuICAgIGlmICh0aGlzLnByb3RvUXVlcnlSZWYudXNlc1Byb3BlcnR5U3ludGF4KSB7XG4gICAgICB2YXIgZGlyID0gdGhpcy5vcmlnaW5hdG9yLmdldERpcmVjdGl2ZUF0SW5kZXgodGhpcy5wcm90b1F1ZXJ5UmVmLmRpckluZGV4KTtcbiAgICAgIGlmICh0aGlzLnByb3RvUXVlcnlSZWYucXVlcnkuZmlyc3QpIHtcbiAgICAgICAgdGhpcy5wcm90b1F1ZXJ5UmVmLnNldHRlcihkaXIsIHRoaXMubGlzdC5sZW5ndGggPiAwID8gdGhpcy5saXN0LmZpcnN0IDogbnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByb3RvUXVlcnlSZWYuc2V0dGVyKGRpciwgdGhpcy5saXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxpc3Qubm90aWZ5T25DaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGUoKTogdm9pZCB7XG4gICAgdmFyIGFnZ3JlZ2F0b3IgPSBbXTtcbiAgICBpZiAodGhpcy5wcm90b1F1ZXJ5UmVmLnF1ZXJ5LmlzVmlld1F1ZXJ5KSB7XG4gICAgICAvLyBpbnRlbnRpb25hbGx5IHNraXBwaW5nIG9yaWdpbmF0b3IgZm9yIHZpZXcgcXVlcmllcy5cbiAgICAgIHZhciBuZXN0ZWRWaWV3ID0gdGhpcy5vcmlnaW5hdG9yLmNvbXBvbmVudFZpZXc7XG4gICAgICBpZiAoaXNQcmVzZW50KG5lc3RlZFZpZXcpKSB0aGlzLl92aXNpdFZpZXcobmVzdGVkVmlldywgYWdncmVnYXRvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3Zpc2l0KHRoaXMub3JpZ2luYXRvciwgYWdncmVnYXRvcik7XG4gICAgfVxuICAgIHRoaXMubGlzdC5yZXNldChhZ2dyZWdhdG9yKTtcbiAgfTtcblxuICBwcml2YXRlIF92aXNpdChpbmo6IEFwcEVsZW1lbnQsIGFnZ3JlZ2F0b3I6IGFueVtdKTogdm9pZCB7XG4gICAgdmFyIHZpZXcgPSBpbmoucGFyZW50VmlldztcbiAgICB2YXIgc3RhcnRJZHggPSBpbmoucHJvdG8uaW5kZXg7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0SWR4OyBpIDwgdmlldy5hcHBFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGN1ckluaiA9IHZpZXcuYXBwRWxlbWVudHNbaV07XG4gICAgICAvLyBUaGUgZmlyc3QgaW5qZWN0b3IgYWZ0ZXIgaW5qLCB0aGF0IGlzIG91dHNpZGUgdGhlIHN1YnRyZWUgcm9vdGVkIGF0XG4gICAgICAvLyBpbmogaGFzIHRvIGhhdmUgYSBudWxsIHBhcmVudCBvciBhIHBhcmVudCB0aGF0IGlzIGFuIGFuY2VzdG9yIG9mIGluai5cbiAgICAgIGlmIChpID4gc3RhcnRJZHggJiYgKGlzQmxhbmsoY3VySW5qLnBhcmVudCkgfHwgY3VySW5qLnBhcmVudC5wcm90by5pbmRleCA8IHN0YXJ0SWR4KSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLnByb3RvUXVlcnlSZWYucXVlcnkuZGVzY2VuZGFudHMgJiZcbiAgICAgICAgICAhKGN1ckluai5wYXJlbnQgPT0gdGhpcy5vcmlnaW5hdG9yIHx8IGN1ckluaiA9PSB0aGlzLm9yaWdpbmF0b3IpKVxuICAgICAgICBjb250aW51ZTtcblxuICAgICAgLy8gV2UgdmlzaXQgdGhlIHZpZXcgY29udGFpbmVyKFZDKSB2aWV3cyByaWdodCBhZnRlciB0aGUgaW5qZWN0b3IgdGhhdCBjb250YWluc1xuICAgICAgLy8gdGhlIFZDLiBUaGVvcmV0aWNhbGx5LCB0aGF0IG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQgb3JkZXIgaWYgdGhlcmUgYXJlXG4gICAgICAvLyBjaGlsZCBpbmplY3RvcnMgb2Ygc2FpZCBpbmplY3Rvci4gTm90IGNsZWFyIHdoZXRoZXIgaWYgc3VjaCBjYXNlIGNhblxuICAgICAgLy8gZXZlbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIHRoZSBjdXJyZW50IGFwaXMuXG4gICAgICB0aGlzLl92aXNpdEluamVjdG9yKGN1ckluaiwgYWdncmVnYXRvcik7XG4gICAgICB0aGlzLl92aXNpdFZpZXdDb250YWluZXJWaWV3cyhjdXJJbmoubmVzdGVkVmlld3MsIGFnZ3JlZ2F0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2l0SW5qZWN0b3IoaW5qOiBBcHBFbGVtZW50LCBhZ2dyZWdhdG9yOiBhbnlbXSkge1xuICAgIGlmICh0aGlzLnByb3RvUXVlcnlSZWYucXVlcnkuaXNWYXJCaW5kaW5nUXVlcnkpIHtcbiAgICAgIHRoaXMuX2FnZ3JlZ2F0ZVZhcmlhYmxlQmluZGluZyhpbmosIGFnZ3JlZ2F0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9hZ2dyZWdhdGVEaXJlY3RpdmUoaW5qLCBhZ2dyZWdhdG9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF92aXNpdFZpZXdDb250YWluZXJWaWV3cyh2aWV3czogQXBwVmlld1tdLCBhZ2dyZWdhdG9yOiBhbnlbXSkge1xuICAgIGlmIChpc1ByZXNlbnQodmlld3MpKSB7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZpZXdzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHRoaXMuX3Zpc2l0Vmlldyh2aWV3c1tqXSwgYWdncmVnYXRvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdmlzaXRWaWV3KHZpZXc6IEFwcFZpZXcsIGFnZ3JlZ2F0b3I6IGFueVtdKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aWV3LmFwcEVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaW5qID0gdmlldy5hcHBFbGVtZW50c1tpXTtcbiAgICAgIHRoaXMuX3Zpc2l0SW5qZWN0b3IoaW5qLCBhZ2dyZWdhdG9yKTtcbiAgICAgIHRoaXMuX3Zpc2l0Vmlld0NvbnRhaW5lclZpZXdzKGluai5uZXN0ZWRWaWV3cywgYWdncmVnYXRvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYWdncmVnYXRlVmFyaWFibGVCaW5kaW5nKGluajogQXBwRWxlbWVudCwgYWdncmVnYXRvcjogYW55W10pOiB2b2lkIHtcbiAgICB2YXIgdmIgPSB0aGlzLnByb3RvUXVlcnlSZWYucXVlcnkudmFyQmluZGluZ3M7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2Yi5sZW5ndGg7ICsraSkge1xuICAgICAgaWYgKGluai5oYXNWYXJpYWJsZUJpbmRpbmcodmJbaV0pKSB7XG4gICAgICAgIGFnZ3JlZ2F0b3IucHVzaChpbmouZ2V0VmFyaWFibGVCaW5kaW5nKHZiW2ldKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYWdncmVnYXRlRGlyZWN0aXZlKGluajogQXBwRWxlbWVudCwgYWdncmVnYXRvcjogYW55W10pOiB2b2lkIHtcbiAgICBpbmouYWRkRGlyZWN0aXZlc01hdGNoaW5nUXVlcnkodGhpcy5wcm90b1F1ZXJ5UmVmLnF1ZXJ5LCBhZ2dyZWdhdG9yKTtcbiAgfVxufVxuXG5jbGFzcyBfQ29tcG9uZW50Vmlld0NoYW5nZURldGVjdG9yUmVmIGV4dGVuZHMgQ2hhbmdlRGV0ZWN0b3JSZWYge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hcHBFbGVtZW50OiBBcHBFbGVtZW50KSB7IHN1cGVyKCk7IH1cblxuICBtYXJrRm9yQ2hlY2soKTogdm9pZCB7IHRoaXMuX2FwcEVsZW1lbnQuY29tcG9uZW50Vmlldy5jaGFuZ2VEZXRlY3Rvci5yZWYubWFya0ZvckNoZWNrKCk7IH1cbiAgZGV0YWNoKCk6IHZvaWQgeyB0aGlzLl9hcHBFbGVtZW50LmNvbXBvbmVudFZpZXcuY2hhbmdlRGV0ZWN0b3IucmVmLmRldGFjaCgpOyB9XG4gIGRldGVjdENoYW5nZXMoKTogdm9pZCB7IHRoaXMuX2FwcEVsZW1lbnQuY29tcG9uZW50Vmlldy5jaGFuZ2VEZXRlY3Rvci5yZWYuZGV0ZWN0Q2hhbmdlcygpOyB9XG4gIGNoZWNrTm9DaGFuZ2VzKCk6IHZvaWQgeyB0aGlzLl9hcHBFbGVtZW50LmNvbXBvbmVudFZpZXcuY2hhbmdlRGV0ZWN0b3IucmVmLmNoZWNrTm9DaGFuZ2VzKCk7IH1cbiAgcmVhdHRhY2goKTogdm9pZCB7IHRoaXMuX2FwcEVsZW1lbnQuY29tcG9uZW50Vmlldy5jaGFuZ2VEZXRlY3Rvci5yZWYucmVhdHRhY2goKTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar ViewRef = (function () {\r\n function ViewRef() {\r\n }\r\n Object.defineProperty(ViewRef.prototype, \"changeDetectorRef\", {\r\n /**\r\n * @internal\r\n */\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(ViewRef.prototype, \"destroyed\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ViewRef;\r\n})();\r\nexports.ViewRef = ViewRef;\r\n/**\r\n * Represents a View containing a single Element that is the Host Element of a {@link Component}\r\n * instance.\r\n *\r\n * A Host View is created for every dynamically created Component that was compiled on its own (as\r\n * opposed to as a part of another Component's Template) via {@link Compiler#compileInHost} or one\r\n * of the higher-level APIs: {@link AppViewManager#createRootHostView},\r\n * {@link AppViewManager#createHostViewInContainer}, {@link ViewContainerRef#createHostView}.\r\n */\r\nvar HostViewRef = (function (_super) {\r\n __extends(HostViewRef, _super);\r\n function HostViewRef() {\r\n _super.apply(this, arguments);\r\n }\r\n Object.defineProperty(HostViewRef.prototype, \"rootNodes\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n return HostViewRef;\r\n})(ViewRef);\r\nexports.HostViewRef = HostViewRef;\r\n/**\r\n * Represents an Angular View.\r\n *\r\n * <!-- TODO: move the next two paragraphs to the dev guide -->\r\n * A View is a fundamental building block of the application UI. It is the smallest grouping of\r\n * Elements which are created and destroyed together.\r\n *\r\n * Properties of elements in a View can change, but the structure (number and order) of elements in\r\n * a View cannot. Changing the structure of Elements can only be done by inserting, moving or\r\n * removing nested Views via a {@link ViewContainerRef}. Each View can contain many View Containers.\r\n * <!-- /TODO -->\r\n *\r\n * ### Example\r\n *\r\n * Given this template...\r\n *\r\n * ```\r\n * Count: {{items.length}}\r\n * <ul>\r\n * <li *ngFor=\"var item of items\">{{item}}</li>\r\n * </ul>\r\n * ```\r\n *\r\n * ... we have two {@link ProtoViewRef}s:\r\n *\r\n * Outer {@link ProtoViewRef}:\r\n * ```\r\n * Count: {{items.length}}\r\n * <ul>\r\n * <template ngFor var-item [ngForOf]=\"items\"></template>\r\n * </ul>\r\n * ```\r\n *\r\n * Inner {@link ProtoViewRef}:\r\n * ```\r\n * <li>{{item}}</li>\r\n * ```\r\n *\r\n * Notice that the original template is broken down into two separate {@link ProtoViewRef}s.\r\n *\r\n * The outer/inner {@link ProtoViewRef}s are then assembled into views like so:\r\n *\r\n * ```\r\n * <!-- ViewRef: outer-0 -->\r\n * Count: 2\r\n * <ul>\r\n * <template view-container-ref></template>\r\n * <!-- ViewRef: inner-1 --><li>first</li><!-- /ViewRef: inner-1 -->\r\n * <!-- ViewRef: inner-2 --><li>second</li><!-- /ViewRef: inner-2 -->\r\n * </ul>\r\n * <!-- /ViewRef: outer-0 -->\r\n * ```\r\n */\r\nvar EmbeddedViewRef = (function (_super) {\r\n __extends(EmbeddedViewRef, _super);\r\n function EmbeddedViewRef() {\r\n _super.apply(this, arguments);\r\n }\r\n Object.defineProperty(EmbeddedViewRef.prototype, \"rootNodes\", {\r\n get: function () { return exceptions_1.unimplemented(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n return EmbeddedViewRef;\r\n})(ViewRef);\r\nexports.EmbeddedViewRef = EmbeddedViewRef;\r\nvar ViewRef_ = (function () {\r\n function ViewRef_(_view) {\r\n this._view = _view;\r\n this._view = _view;\r\n }\r\n Object.defineProperty(ViewRef_.prototype, \"internalView\", {\r\n get: function () { return this._view; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ViewRef_.prototype, \"changeDetectorRef\", {\r\n /**\r\n * Return `ChangeDetectorRef`\r\n */\r\n get: function () { return this._view.changeDetector.ref; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ViewRef_.prototype, \"rootNodes\", {\r\n get: function () { return this._view.flatRootNodes; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ViewRef_.prototype.setLocal = function (variableName, value) { this._view.setLocal(variableName, value); };\r\n ViewRef_.prototype.hasLocal = function (variableName) { return this._view.hasLocal(variableName); };\r\n Object.defineProperty(ViewRef_.prototype, \"destroyed\", {\r\n get: function () { return this._view.destroyed; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ViewRef_;\r\n})();\r\nexports.ViewRef_ = ViewRef_;\r\nvar HostViewFactoryRef = (function () {\r\n function HostViewFactoryRef() {\r\n }\r\n return HostViewFactoryRef;\r\n})();\r\nexports.HostViewFactoryRef = HostViewFactoryRef;\r\nvar HostViewFactoryRef_ = (function () {\r\n function HostViewFactoryRef_(_hostViewFactory) {\r\n this._hostViewFactory = _hostViewFactory;\r\n }\r\n Object.defineProperty(HostViewFactoryRef_.prototype, \"internalHostViewFactory\", {\r\n get: function () { return this._hostViewFactory; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return HostViewFactoryRef_;\r\n})();\r\nexports.HostViewFactoryRef_ = HostViewFactoryRef_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld19yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvdmlld19yZWYudHMiXSwibmFtZXMiOlsiVmlld1JlZiIsIlZpZXdSZWYuY29uc3RydWN0b3IiLCJWaWV3UmVmLmNoYW5nZURldGVjdG9yUmVmIiwiVmlld1JlZi5kZXN0cm95ZWQiLCJIb3N0Vmlld1JlZiIsIkhvc3RWaWV3UmVmLmNvbnN0cnVjdG9yIiwiSG9zdFZpZXdSZWYucm9vdE5vZGVzIiwiRW1iZWRkZWRWaWV3UmVmIiwiRW1iZWRkZWRWaWV3UmVmLmNvbnN0cnVjdG9yIiwiRW1iZWRkZWRWaWV3UmVmLnJvb3ROb2RlcyIsIlZpZXdSZWZfIiwiVmlld1JlZl8uY29uc3RydWN0b3IiLCJWaWV3UmVmXy5pbnRlcm5hbFZpZXciLCJWaWV3UmVmXy5jaGFuZ2VEZXRlY3RvclJlZiIsIlZpZXdSZWZfLnJvb3ROb2RlcyIsIlZpZXdSZWZfLnNldExvY2FsIiwiVmlld1JlZl8uaGFzTG9jYWwiLCJWaWV3UmVmXy5kZXN0cm95ZWQiLCJIb3N0Vmlld0ZhY3RvcnlSZWYiLCJIb3N0Vmlld0ZhY3RvcnlSZWYuY29uc3RydWN0b3IiLCJIb3N0Vmlld0ZhY3RvcnlSZWZfIiwiSG9zdFZpZXdGYWN0b3J5UmVmXy5jb25zdHJ1Y3RvciIsIkhvc3RWaWV3RmFjdG9yeVJlZl8uaW50ZXJuYWxIb3N0Vmlld0ZhY3RvcnkiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkJBQTRCLGdDQUFnQyxDQUFDLENBQUE7QUFJN0Q7SUFBQUE7SUFPQUMsQ0FBQ0E7SUFIQ0Qsc0JBQUlBLHNDQUFpQkE7UUFIckJBOztXQUVHQTthQUNIQSxjQUE2Q0UsTUFBTUEsQ0FBb0JBLDBCQUFhQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFGOztJQUV6RkEsc0JBQUlBLDhCQUFTQTthQUFiQSxjQUEyQkcsTUFBTUEsQ0FBVUEsMEJBQWFBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUg7SUFDL0RBLGNBQUNBO0FBQURBLENBQUNBLEFBUEQsSUFPQztBQVBxQixlQUFPLFVBTzVCLENBQUE7QUFFRDs7Ozs7Ozs7R0FRRztBQUNIO0lBQTBDSSwrQkFBT0E7SUFBakRBO1FBQTBDQyw4QkFBT0E7SUFFakRBLENBQUNBO0lBRENELHNCQUFJQSxrQ0FBU0E7YUFBYkEsY0FBeUJFLE1BQU1BLENBQVFBLDBCQUFhQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFGOztJQUMzREEsa0JBQUNBO0FBQURBLENBQUNBLEFBRkQsRUFBMEMsT0FBTyxFQUVoRDtBQUZxQixtQkFBVyxjQUVoQyxDQUFBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvREc7QUFDSDtJQUE4Q0csbUNBQU9BO0lBQXJEQTtRQUE4Q0MsOEJBQU9BO0lBWXJEQSxDQUFDQTtJQURDRCxzQkFBSUEsc0NBQVNBO2FBQWJBLGNBQXlCRSxNQUFNQSxDQUFRQSwwQkFBYUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBRjs7SUFDM0RBLHNCQUFDQTtBQUFEQSxDQUFDQSxBQVpELEVBQThDLE9BQU8sRUFZcEQ7QUFacUIsdUJBQWUsa0JBWXBDLENBQUE7QUFFRDtJQUNFRyxrQkFBb0JBLEtBQWNBO1FBQWRDLFVBQUtBLEdBQUxBLEtBQUtBLENBQVNBO1FBQUlBLElBQUlBLENBQUNBLEtBQUtBLEdBQUdBLEtBQUtBLENBQUNBO0lBQUNBLENBQUNBO0lBRTNERCxzQkFBSUEsa0NBQVlBO2FBQWhCQSxjQUE4QkUsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBRjtJQUtsREEsc0JBQUlBLHVDQUFpQkE7UUFIckJBOztXQUVHQTthQUNIQSxjQUE2Q0csTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsY0FBY0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBSDtJQUVwRkEsc0JBQUlBLCtCQUFTQTthQUFiQSxjQUF5QkksTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsYUFBYUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBSjtJQUUzREEsMkJBQVFBLEdBQVJBLFVBQVNBLFlBQW9CQSxFQUFFQSxLQUFVQSxJQUFVSyxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxRQUFRQSxDQUFDQSxZQUFZQSxFQUFFQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUU5RkwsMkJBQVFBLEdBQVJBLFVBQVNBLFlBQW9CQSxJQUFhTSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxRQUFRQSxDQUFDQSxZQUFZQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUVyRk4sc0JBQUlBLCtCQUFTQTthQUFiQSxjQUEyQk8sTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBUDtJQUMzREEsZUFBQ0E7QUFBREEsQ0FBQ0EsQUFqQkQsSUFpQkM7QUFqQlksZ0JBQVEsV0FpQnBCLENBQUE7QUFFRDtJQUFBUTtJQUEwQ0MsQ0FBQ0E7SUFBREQseUJBQUNBO0FBQURBLENBQUNBLEFBQTNDLElBQTJDO0FBQXJCLDBCQUFrQixxQkFBRyxDQUFBO0FBRTNDO0lBQ0VFLDZCQUFvQkEsZ0JBQWlDQTtRQUFqQ0MscUJBQWdCQSxHQUFoQkEsZ0JBQWdCQSxDQUFpQkE7SUFBR0EsQ0FBQ0E7SUFFekRELHNCQUFJQSx3REFBdUJBO2FBQTNCQSxjQUFpREUsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFGO0lBQ2xGQSwwQkFBQ0E7QUFBREEsQ0FBQ0EsQUFKRCxJQUlDO0FBSlksMkJBQW1CLHNCQUkvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1bmltcGxlbWVudGVkfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZn0gZnJvbSAnLi4vY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0b3JfcmVmJztcbmltcG9ydCB7QXBwVmlldywgSG9zdFZpZXdGYWN0b3J5fSBmcm9tICcuL3ZpZXcnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVmlld1JlZiB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBjaGFuZ2VEZXRlY3RvclJlZigpOiBDaGFuZ2VEZXRlY3RvclJlZiB7IHJldHVybiA8Q2hhbmdlRGV0ZWN0b3JSZWY+dW5pbXBsZW1lbnRlZCgpOyB9O1xuXG4gIGdldCBkZXN0cm95ZWQoKTogYm9vbGVhbiB7IHJldHVybiA8Ym9vbGVhbj51bmltcGxlbWVudGVkKCk7IH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgVmlldyBjb250YWluaW5nIGEgc2luZ2xlIEVsZW1lbnQgdGhhdCBpcyB0aGUgSG9zdCBFbGVtZW50IG9mIGEge0BsaW5rIENvbXBvbmVudH1cbiAqIGluc3RhbmNlLlxuICpcbiAqIEEgSG9zdCBWaWV3IGlzIGNyZWF0ZWQgZm9yIGV2ZXJ5IGR5bmFtaWNhbGx5IGNyZWF0ZWQgQ29tcG9uZW50IHRoYXQgd2FzIGNvbXBpbGVkIG9uIGl0cyBvd24gKGFzXG4gKiBvcHBvc2VkIHRvIGFzIGEgcGFydCBvZiBhbm90aGVyIENvbXBvbmVudCdzIFRlbXBsYXRlKSB2aWEge0BsaW5rIENvbXBpbGVyI2NvbXBpbGVJbkhvc3R9IG9yIG9uZVxuICogb2YgdGhlIGhpZ2hlci1sZXZlbCBBUElzOiB7QGxpbmsgQXBwVmlld01hbmFnZXIjY3JlYXRlUm9vdEhvc3RWaWV3fSxcbiAqIHtAbGluayBBcHBWaWV3TWFuYWdlciNjcmVhdGVIb3N0Vmlld0luQ29udGFpbmVyfSwge0BsaW5rIFZpZXdDb250YWluZXJSZWYjY3JlYXRlSG9zdFZpZXd9LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSG9zdFZpZXdSZWYgZXh0ZW5kcyBWaWV3UmVmIHtcbiAgZ2V0IHJvb3ROb2RlcygpOiBhbnlbXSB7IHJldHVybiA8YW55W10+dW5pbXBsZW1lbnRlZCgpOyB9O1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gQW5ndWxhciBWaWV3LlxuICpcbiAqIDwhLS0gVE9ETzogbW92ZSB0aGUgbmV4dCB0d28gcGFyYWdyYXBocyB0byB0aGUgZGV2IGd1aWRlIC0tPlxuICogQSBWaWV3IGlzIGEgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2sgb2YgdGhlIGFwcGxpY2F0aW9uIFVJLiBJdCBpcyB0aGUgc21hbGxlc3QgZ3JvdXBpbmcgb2ZcbiAqIEVsZW1lbnRzIHdoaWNoIGFyZSBjcmVhdGVkIGFuZCBkZXN0cm95ZWQgdG9nZXRoZXIuXG4gKlxuICogUHJvcGVydGllcyBvZiBlbGVtZW50cyBpbiBhIFZpZXcgY2FuIGNoYW5nZSwgYnV0IHRoZSBzdHJ1Y3R1cmUgKG51bWJlciBhbmQgb3JkZXIpIG9mIGVsZW1lbnRzIGluXG4gKiBhIFZpZXcgY2Fubm90LiBDaGFuZ2luZyB0aGUgc3RydWN0dXJlIG9mIEVsZW1lbnRzIGNhbiBvbmx5IGJlIGRvbmUgYnkgaW5zZXJ0aW5nLCBtb3Zpbmcgb3JcbiAqIHJlbW92aW5nIG5lc3RlZCBWaWV3cyB2aWEgYSB7QGxpbmsgVmlld0NvbnRhaW5lclJlZn0uIEVhY2ggVmlldyBjYW4gY29udGFpbiBtYW55IFZpZXcgQ29udGFpbmVycy5cbiAqIDwhLS0gL1RPRE8gLS0+XG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBHaXZlbiB0aGlzIHRlbXBsYXRlLi4uXG4gKlxuICogYGBgXG4gKiBDb3VudDoge3tpdGVtcy5sZW5ndGh9fVxuICogPHVsPlxuICogICA8bGkgKm5nRm9yPVwidmFyIGl0ZW0gb2YgaXRlbXNcIj57e2l0ZW19fTwvbGk+XG4gKiA8L3VsPlxuICogYGBgXG4gKlxuICogLi4uIHdlIGhhdmUgdHdvIHtAbGluayBQcm90b1ZpZXdSZWZ9czpcbiAqXG4gKiBPdXRlciB7QGxpbmsgUHJvdG9WaWV3UmVmfTpcbiAqIGBgYFxuICogQ291bnQ6IHt7aXRlbXMubGVuZ3RofX1cbiAqIDx1bD5cbiAqICAgPHRlbXBsYXRlIG5nRm9yIHZhci1pdGVtIFtuZ0Zvck9mXT1cIml0ZW1zXCI+PC90ZW1wbGF0ZT5cbiAqIDwvdWw+XG4gKiBgYGBcbiAqXG4gKiBJbm5lciB7QGxpbmsgUHJvdG9WaWV3UmVmfTpcbiAqIGBgYFxuICogICA8bGk+e3tpdGVtfX08L2xpPlxuICogYGBgXG4gKlxuICogTm90aWNlIHRoYXQgdGhlIG9yaWdpbmFsIHRlbXBsYXRlIGlzIGJyb2tlbiBkb3duIGludG8gdHdvIHNlcGFyYXRlIHtAbGluayBQcm90b1ZpZXdSZWZ9cy5cbiAqXG4gKiBUaGUgb3V0ZXIvaW5uZXIge0BsaW5rIFByb3RvVmlld1JlZn1zIGFyZSB0aGVuIGFzc2VtYmxlZCBpbnRvIHZpZXdzIGxpa2Ugc286XG4gKlxuICogYGBgXG4gKiA8IS0tIFZpZXdSZWY6IG91dGVyLTAgLS0+XG4gKiBDb3VudDogMlxuICogPHVsPlxuICogICA8dGVtcGxhdGUgdmlldy1jb250YWluZXItcmVmPjwvdGVtcGxhdGU+XG4gKiAgIDwhLS0gVmlld1JlZjogaW5uZXItMSAtLT48bGk+Zmlyc3Q8L2xpPjwhLS0gL1ZpZXdSZWY6IGlubmVyLTEgLS0+XG4gKiAgIDwhLS0gVmlld1JlZjogaW5uZXItMiAtLT48bGk+c2Vjb25kPC9saT48IS0tIC9WaWV3UmVmOiBpbm5lci0yIC0tPlxuICogPC91bD5cbiAqIDwhLS0gL1ZpZXdSZWY6IG91dGVyLTAgLS0+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVtYmVkZGVkVmlld1JlZiBleHRlbmRzIFZpZXdSZWYge1xuICAvKipcbiAgICogU2V0cyBgdmFsdWVgIG9mIGxvY2FsIHZhcmlhYmxlIGNhbGxlZCBgdmFyaWFibGVOYW1lYCBpbiB0aGlzIFZpZXcuXG4gICAqL1xuICBhYnN0cmFjdCBzZXRMb2NhbCh2YXJpYWJsZU5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoaXMgdmlldyBoYXMgYSBsb2NhbCB2YXJpYWJsZSBjYWxsZWQgYHZhcmlhYmxlTmFtZWAuXG4gICAqL1xuICBhYnN0cmFjdCBoYXNMb2NhbCh2YXJpYWJsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW47XG5cbiAgZ2V0IHJvb3ROb2RlcygpOiBhbnlbXSB7IHJldHVybiA8YW55W10+dW5pbXBsZW1lbnRlZCgpOyB9O1xufVxuXG5leHBvcnQgY2xhc3MgVmlld1JlZl8gaW1wbGVtZW50cyBFbWJlZGRlZFZpZXdSZWYsIEhvc3RWaWV3UmVmIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlldzogQXBwVmlldykgeyB0aGlzLl92aWV3ID0gX3ZpZXc7IH1cblxuICBnZXQgaW50ZXJuYWxWaWV3KCk6IEFwcFZpZXcgeyByZXR1cm4gdGhpcy5fdmlldzsgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYENoYW5nZURldGVjdG9yUmVmYFxuICAgKi9cbiAgZ2V0IGNoYW5nZURldGVjdG9yUmVmKCk6IENoYW5nZURldGVjdG9yUmVmIHsgcmV0dXJuIHRoaXMuX3ZpZXcuY2hhbmdlRGV0ZWN0b3IucmVmOyB9XG5cbiAgZ2V0IHJvb3ROb2RlcygpOiBhbnlbXSB7IHJldHVybiB0aGlzLl92aWV3LmZsYXRSb290Tm9kZXM7IH1cblxuICBzZXRMb2NhbCh2YXJpYWJsZU5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQgeyB0aGlzLl92aWV3LnNldExvY2FsKHZhcmlhYmxlTmFtZSwgdmFsdWUpOyB9XG5cbiAgaGFzTG9jYWwodmFyaWFibGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3ZpZXcuaGFzTG9jYWwodmFyaWFibGVOYW1lKTsgfVxuXG4gIGdldCBkZXN0cm95ZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl92aWV3LmRlc3Ryb3llZDsgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSG9zdFZpZXdGYWN0b3J5UmVmIHt9XG5cbmV4cG9ydCBjbGFzcyBIb3N0Vmlld0ZhY3RvcnlSZWZfIGltcGxlbWVudHMgSG9zdFZpZXdGYWN0b3J5UmVmIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdFZpZXdGYWN0b3J5OiBIb3N0Vmlld0ZhY3RvcnkpIHt9XG5cbiAgZ2V0IGludGVybmFsSG9zdFZpZXdGYWN0b3J5KCk6IEhvc3RWaWV3RmFjdG9yeSB7IHJldHVybiB0aGlzLl9ob3N0Vmlld0ZhY3Rvcnk7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var SelectedPipe = (function () {\r\n function SelectedPipe(pipe, pure) {\r\n this.pipe = pipe;\r\n this.pure = pure;\r\n }\r\n return SelectedPipe;\r\n})();\r\nexports.SelectedPipe = SelectedPipe;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL3BpcGVzLnRzIl0sIm5hbWVzIjpbIlNlbGVjdGVkUGlwZSIsIlNlbGVjdGVkUGlwZS5jb25zdHJ1Y3RvciJdLCJtYXBwaW5ncyI6IkFBSUE7SUFDRUEsc0JBQW1CQSxJQUFtQkEsRUFBU0EsSUFBYUE7UUFBekNDLFNBQUlBLEdBQUpBLElBQUlBLENBQWVBO1FBQVNBLFNBQUlBLEdBQUpBLElBQUlBLENBQVNBO0lBQUdBLENBQUNBO0lBQ2xFRCxtQkFBQ0E7QUFBREEsQ0FBQ0EsQUFGRCxJQUVDO0FBRlksb0JBQVksZUFFeEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZVRyYW5zZm9ybX0gZnJvbSAnLi9waXBlX3RyYW5zZm9ybSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZXMgeyBnZXQobmFtZTogc3RyaW5nKTogU2VsZWN0ZWRQaXBlOyB9XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3RlZFBpcGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGlwZTogUGlwZVRyYW5zZm9ybSwgcHVibGljIHB1cmU6IGJvb2xlYW4pIHt9XG59Il19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar cd = require('angular2/src/core/change_detection/pipes');\r\nvar ProtoPipes = (function () {\r\n function ProtoPipes(\r\n /**\r\n * Map of {@link PipeMetadata} names to {@link PipeMetadata} implementations.\r\n */\r\n config) {\r\n this.config = config;\r\n this.config = config;\r\n }\r\n ProtoPipes.fromProviders = function (providers) {\r\n var config = {};\r\n providers.forEach(function (b) { return config[b.name] = b; });\r\n return new ProtoPipes(config);\r\n };\r\n ProtoPipes.prototype.get = function (name) {\r\n var provider = this.config[name];\r\n if (lang_1.isBlank(provider))\r\n throw new exceptions_1.BaseException(\"Cannot find pipe '\" + name + \"'.\");\r\n return provider;\r\n };\r\n return ProtoPipes;\r\n})();\r\nexports.ProtoPipes = ProtoPipes;\r\nvar Pipes = (function () {\r\n function Pipes(proto, injector) {\r\n this.proto = proto;\r\n this.injector = injector;\r\n /** @internal */\r\n this._config = {};\r\n }\r\n Pipes.prototype.get = function (name) {\r\n var cached = collection_1.StringMapWrapper.get(this._config, name);\r\n if (lang_1.isPresent(cached))\r\n return cached;\r\n var p = this.proto.get(name);\r\n var transform = this.injector.instantiateResolved(p);\r\n var res = new cd.SelectedPipe(transform, p.pure);\r\n if (p.pure) {\r\n collection_1.StringMapWrapper.set(this._config, name, res);\r\n }\r\n return res;\r\n };\r\n return Pipes;\r\n})();\r\nexports.Pipes = Pipes;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9waXBlcy9waXBlcy50cyJdLCJuYW1lcyI6WyJQcm90b1BpcGVzIiwiUHJvdG9QaXBlcy5jb25zdHJ1Y3RvciIsIlByb3RvUGlwZXMuZnJvbVByb3ZpZGVycyIsIlByb3RvUGlwZXMuZ2V0IiwiUGlwZXMiLCJQaXBlcy5jb25zdHJ1Y3RvciIsIlBpcGVzLmdldCJdLCJtYXBwaW5ncyI6IkFBQUEscUJBQThDLDBCQUEwQixDQUFDLENBQUE7QUFDekUsMkJBQThDLGdDQUFnQyxDQUFDLENBQUE7QUFDL0UsMkJBQStCLGdDQUFnQyxDQUFDLENBQUE7QUFVaEUsSUFBWSxFQUFFLFdBQU0sMENBQTBDLENBQUMsQ0FBQTtBQUUvRDtJQU9FQTtRQUNJQTs7VUFFRUE7UUFDS0EsTUFBcUNBO1FBQXJDQyxXQUFNQSxHQUFOQSxNQUFNQSxDQUErQkE7UUFDOUNBLElBQUlBLENBQUNBLE1BQU1BLEdBQUdBLE1BQU1BLENBQUNBO0lBQ3ZCQSxDQUFDQTtJQVpNRCx3QkFBYUEsR0FBcEJBLFVBQXFCQSxTQUF5QkE7UUFDNUNFLElBQUlBLE1BQU1BLEdBQWtDQSxFQUFFQSxDQUFDQTtRQUMvQ0EsU0FBU0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsVUFBQUEsQ0FBQ0EsSUFBSUEsT0FBQUEsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBbEJBLENBQWtCQSxDQUFDQSxDQUFDQTtRQUMzQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsVUFBVUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0E7SUFDaENBLENBQUNBO0lBVURGLHdCQUFHQSxHQUFIQSxVQUFJQSxJQUFZQTtRQUNkRyxJQUFJQSxRQUFRQSxHQUFHQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNqQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsY0FBT0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0E7WUFBQ0EsTUFBTUEsSUFBSUEsMEJBQWFBLENBQUNBLHVCQUFxQkEsSUFBSUEsT0FBSUEsQ0FBQ0EsQ0FBQ0E7UUFDOUVBLE1BQU1BLENBQUNBLFFBQVFBLENBQUNBO0lBQ2xCQSxDQUFDQTtJQUNISCxpQkFBQ0E7QUFBREEsQ0FBQ0EsQUFwQkQsSUFvQkM7QUFwQlksa0JBQVUsYUFvQnRCLENBQUE7QUFJRDtJQUlFSSxlQUFtQkEsS0FBaUJBLEVBQVNBLFFBQWtCQTtRQUE1Q0MsVUFBS0EsR0FBTEEsS0FBS0EsQ0FBWUE7UUFBU0EsYUFBUUEsR0FBUkEsUUFBUUEsQ0FBVUE7UUFIL0RBLGdCQUFnQkE7UUFDaEJBLFlBQU9BLEdBQXFDQSxFQUFFQSxDQUFDQTtJQUVtQkEsQ0FBQ0E7SUFFbkVELG1CQUFHQSxHQUFIQSxVQUFJQSxJQUFZQTtRQUNkRSxJQUFJQSxNQUFNQSxHQUFHQSw2QkFBZ0JBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLE9BQU9BLEVBQUVBLElBQUlBLENBQUNBLENBQUNBO1FBQ3REQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0E7WUFBQ0EsTUFBTUEsQ0FBQ0EsTUFBTUEsQ0FBQ0E7UUFDckNBLElBQUlBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQzdCQSxJQUFJQSxTQUFTQSxHQUFHQSxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxtQkFBbUJBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQ3JEQSxJQUFJQSxHQUFHQSxHQUFHQSxJQUFJQSxFQUFFQSxDQUFDQSxZQUFZQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUVqREEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDWEEsNkJBQWdCQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxFQUFFQSxJQUFJQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQTtRQUNoREEsQ0FBQ0E7UUFFREEsTUFBTUEsQ0FBQ0EsR0FBR0EsQ0FBQ0E7SUFDYkEsQ0FBQ0E7SUFDSEYsWUFBQ0E7QUFBREEsQ0FBQ0EsQUFuQkQsSUFtQkM7QUFuQlksYUFBSyxRQW1CakIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNCbGFuaywgaXNQcmVzZW50LCBDT05TVCwgVHlwZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbiwgV3JhcHBlZEV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7U3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIE9wdGlvbmFsTWV0YWRhdGEsXG4gIFNraXBTZWxmTWV0YWRhdGEsXG4gIFByb3ZpZGVyLFxuICBJbmplY3RvcixcbiAgYmluZFxufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge1BpcGVQcm92aWRlcn0gZnJvbSAnLi9waXBlX3Byb3ZpZGVyJztcbmltcG9ydCAqIGFzIGNkIGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vcGlwZXMnO1xuXG5leHBvcnQgY2xhc3MgUHJvdG9QaXBlcyB7XG4gIHN0YXRpYyBmcm9tUHJvdmlkZXJzKHByb3ZpZGVyczogUGlwZVByb3ZpZGVyW10pOiBQcm90b1BpcGVzIHtcbiAgICB2YXIgY29uZmlnOiB7W2tleTogc3RyaW5nXTogUGlwZVByb3ZpZGVyfSA9IHt9O1xuICAgIHByb3ZpZGVycy5mb3JFYWNoKGIgPT4gY29uZmlnW2IubmFtZV0gPSBiKTtcbiAgICByZXR1cm4gbmV3IFByb3RvUGlwZXMoY29uZmlnKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgLyoqXG4gICAgICAqIE1hcCBvZiB7QGxpbmsgUGlwZU1ldGFkYXRhfSBuYW1lcyB0byB7QGxpbmsgUGlwZU1ldGFkYXRhfSBpbXBsZW1lbnRhdGlvbnMuXG4gICAgICAqL1xuICAgICAgcHVibGljIGNvbmZpZzoge1trZXk6IHN0cmluZ106IFBpcGVQcm92aWRlcn0pIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBQaXBlUHJvdmlkZXIge1xuICAgIHZhciBwcm92aWRlciA9IHRoaXMuY29uZmlnW25hbWVdO1xuICAgIGlmIChpc0JsYW5rKHByb3ZpZGVyKSkgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYENhbm5vdCBmaW5kIHBpcGUgJyR7bmFtZX0nLmApO1xuICAgIHJldHVybiBwcm92aWRlcjtcbiAgfVxufVxuXG5cblxuZXhwb3J0IGNsYXNzIFBpcGVzIGltcGxlbWVudHMgY2QuUGlwZXMge1xuICAvKiogQGludGVybmFsICovXG4gIF9jb25maWc6IHtba2V5OiBzdHJpbmddOiBjZC5TZWxlY3RlZFBpcGV9ID0ge307XG5cbiAgY29uc3RydWN0b3IocHVibGljIHByb3RvOiBQcm90b1BpcGVzLCBwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBjZC5TZWxlY3RlZFBpcGUge1xuICAgIHZhciBjYWNoZWQgPSBTdHJpbmdNYXBXcmFwcGVyLmdldCh0aGlzLl9jb25maWcsIG5hbWUpO1xuICAgIGlmIChpc1ByZXNlbnQoY2FjaGVkKSkgcmV0dXJuIGNhY2hlZDtcbiAgICB2YXIgcCA9IHRoaXMucHJvdG8uZ2V0KG5hbWUpO1xuICAgIHZhciB0cmFuc2Zvcm0gPSB0aGlzLmluamVjdG9yLmluc3RhbnRpYXRlUmVzb2x2ZWQocCk7XG4gICAgdmFyIHJlcyA9IG5ldyBjZC5TZWxlY3RlZFBpcGUodHJhbnNmb3JtLCBwLnB1cmUpO1xuXG4gICAgaWYgKHAucHVyZSkge1xuICAgICAgU3RyaW5nTWFwV3JhcHBlci5zZXQodGhpcy5fY29uZmlnLCBuYW1lLCByZXMpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar CAMEL_CASE_REGEXP = /([A-Z])/g;\r\nvar DASH_CASE_REGEXP = /-([a-z])/g;\r\nfunction camelCaseToDashCase(input) {\r\n return lang_1.StringWrapper.replaceAllMapped(input, CAMEL_CASE_REGEXP, function (m) { return '-' + m[1].toLowerCase(); });\r\n}\r\nexports.camelCaseToDashCase = camelCaseToDashCase;\r\nfunction dashCaseToCamelCase(input) {\r\n return lang_1.StringWrapper.replaceAllMapped(input, DASH_CASE_REGEXP, function (m) { return m[1].toUpperCase(); });\r\n}\r\nexports.dashCaseToCamelCase = dashCaseToCamelCase;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL3JlbmRlci91dGlsLnRzIl0sIm5hbWVzIjpbImNhbWVsQ2FzZVRvRGFzaENhc2UiLCJkYXNoQ2FzZVRvQ2FtZWxDYXNlIl0sIm1hcHBpbmdzIjoiQUFBQSxxQkFBNEIsMEJBQTBCLENBQUMsQ0FBQTtBQUV2RCxJQUFJLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztBQUNuQyxJQUFJLGdCQUFnQixHQUFHLFdBQVcsQ0FBQztBQUduQyw2QkFBb0MsS0FBYTtJQUMvQ0EsTUFBTUEsQ0FBQ0Esb0JBQWFBLENBQUNBLGdCQUFnQkEsQ0FBQ0EsS0FBS0EsRUFBRUEsaUJBQWlCQSxFQUN4QkEsVUFBQ0EsQ0FBQ0EsSUFBT0EsTUFBTUEsQ0FBQ0EsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsV0FBV0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7QUFDckZBLENBQUNBO0FBSGUsMkJBQW1CLHNCQUdsQyxDQUFBO0FBRUQsNkJBQW9DLEtBQWE7SUFDL0NDLE1BQU1BLENBQUNBLG9CQUFhQSxDQUFDQSxnQkFBZ0JBLENBQUNBLEtBQUtBLEVBQUVBLGdCQUFnQkEsRUFDdkJBLFVBQUNBLENBQUNBLElBQU9BLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFdBQVdBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0FBQy9FQSxDQUFDQTtBQUhlLDJCQUFtQixzQkFHbEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3RyaW5nV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxudmFyIENBTUVMX0NBU0VfUkVHRVhQID0gLyhbQS1aXSkvZztcbnZhciBEQVNIX0NBU0VfUkVHRVhQID0gLy0oW2Etel0pL2c7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbWVsQ2FzZVRvRGFzaENhc2UoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBTdHJpbmdXcmFwcGVyLnJlcGxhY2VBbGxNYXBwZWQoaW5wdXQsIENBTUVMX0NBU0VfUkVHRVhQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtKSA9PiB7IHJldHVybiAnLScgKyBtWzFdLnRvTG93ZXJDYXNlKCk7IH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGFzaENhc2VUb0NhbWVsQ2FzZShpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbE1hcHBlZChpbnB1dCwgREFTSF9DQVNFX1JFR0VYUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSkgPT4geyByZXR1cm4gbVsxXS50b1VwcGVyQ2FzZSgpOyB9KTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar change_detection_1 = require('angular2/src/core/change_detection/change_detection');\r\nvar interfaces_1 = require('angular2/src/core/change_detection/interfaces');\r\nvar element_1 = require('./element');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar api_1 = require('angular2/src/core/render/api');\r\nvar view_ref_1 = require('./view_ref');\r\nvar pipes_1 = require('angular2/src/core/pipes/pipes');\r\nvar util_1 = require('angular2/src/core/render/util');\r\nvar interfaces_2 = require('angular2/src/core/change_detection/interfaces');\r\nexports.DebugContext = interfaces_2.DebugContext;\r\nvar pipes_2 = require('angular2/src/core/pipes/pipes');\r\nvar view_type_1 = require('./view_type');\r\nvar REFLECT_PREFIX = 'ng-reflect-';\r\nvar EMPTY_CONTEXT = lang_1.CONST_EXPR(new Object());\r\n/**\r\n * Cost of making objects: http://jsperf.com/instantiate-size-of-object\r\n *\r\n */\r\nvar AppView = (function () {\r\n function AppView(proto, renderer, viewManager, projectableNodes, containerAppElement, imperativelyCreatedProviders, rootInjector, changeDetector) {\r\n this.proto = proto;\r\n this.renderer = renderer;\r\n this.viewManager = viewManager;\r\n this.projectableNodes = projectableNodes;\r\n this.containerAppElement = containerAppElement;\r\n this.changeDetector = changeDetector;\r\n /**\r\n * The context against which data-binding expressions in this view are evaluated against.\r\n * This is always a component instance.\r\n */\r\n this.context = null;\r\n this.destroyed = false;\r\n this.ref = new view_ref_1.ViewRef_(this);\r\n var injectorWithHostBoundary = element_1.AppElement.getViewParentInjector(this.proto.type, containerAppElement, imperativelyCreatedProviders, rootInjector);\r\n this.parentInjector = injectorWithHostBoundary.injector;\r\n this.hostInjectorBoundary = injectorWithHostBoundary.hostInjectorBoundary;\r\n var pipes;\r\n var context;\r\n switch (proto.type) {\r\n case view_type_1.ViewType.COMPONENT:\r\n pipes = new pipes_2.Pipes(proto.protoPipes, containerAppElement.getInjector());\r\n context = containerAppElement.getComponent();\r\n break;\r\n case view_type_1.ViewType.EMBEDDED:\r\n pipes = containerAppElement.parentView.pipes;\r\n context = containerAppElement.parentView.context;\r\n break;\r\n case view_type_1.ViewType.HOST:\r\n pipes = null;\r\n context = EMPTY_CONTEXT;\r\n break;\r\n }\r\n this.pipes = pipes;\r\n this.context = context;\r\n }\r\n AppView.prototype.init = function (rootNodesOrAppElements, allNodes, disposables, appElements) {\r\n this.rootNodesOrAppElements = rootNodesOrAppElements;\r\n this.allNodes = allNodes;\r\n this.disposables = disposables;\r\n this.appElements = appElements;\r\n var localsMap = new collection_1.Map();\r\n collection_1.StringMapWrapper.forEach(this.proto.templateVariableBindings, function (templateName, _) { localsMap.set(templateName, null); });\r\n for (var i = 0; i < appElements.length; i++) {\r\n var appEl = appElements[i];\r\n var providerTokens = [];\r\n if (lang_1.isPresent(appEl.proto.protoInjector)) {\r\n for (var j = 0; j < appEl.proto.protoInjector.numberOfProviders; j++) {\r\n providerTokens.push(appEl.proto.protoInjector.getProviderAtIndex(j).key.token);\r\n }\r\n }\r\n collection_1.StringMapWrapper.forEach(appEl.proto.directiveVariableBindings, function (directiveIndex, name) {\r\n if (lang_1.isBlank(directiveIndex)) {\r\n localsMap.set(name, appEl.nativeElement);\r\n }\r\n else {\r\n localsMap.set(name, appEl.getDirectiveAtIndex(directiveIndex));\r\n }\r\n });\r\n this.renderer.setElementDebugInfo(appEl.nativeElement, new api_1.RenderDebugInfo(appEl.getInjector(), appEl.getComponent(), providerTokens, localsMap));\r\n }\r\n var parentLocals = null;\r\n if (this.proto.type !== view_type_1.ViewType.COMPONENT) {\r\n parentLocals =\r\n lang_1.isPresent(this.containerAppElement) ? this.containerAppElement.parentView.locals : null;\r\n }\r\n if (this.proto.type === view_type_1.ViewType.COMPONENT) {\r\n // Note: the render nodes have been attached to their host element\r\n // in the ViewFactory already.\r\n this.containerAppElement.attachComponentView(this);\r\n this.containerAppElement.parentView.changeDetector.addViewChild(this.changeDetector);\r\n }\r\n this.locals = new change_detection_1.Locals(parentLocals, localsMap);\r\n this.changeDetector.hydrate(this.context, this.locals, this, this.pipes);\r\n this.viewManager.onViewCreated(this);\r\n };\r\n AppView.prototype.destroy = function () {\r\n if (this.destroyed) {\r\n throw new exceptions_1.BaseException('This view has already been destroyed!');\r\n }\r\n this.changeDetector.destroyRecursive();\r\n };\r\n AppView.prototype.notifyOnDestroy = function () {\r\n this.destroyed = true;\r\n var hostElement = this.proto.type === view_type_1.ViewType.COMPONENT ? this.containerAppElement.nativeElement : null;\r\n this.renderer.destroyView(hostElement, this.allNodes);\r\n for (var i = 0; i < this.disposables.length; i++) {\r\n this.disposables[i]();\r\n }\r\n this.viewManager.onViewDestroyed(this);\r\n };\r\n Object.defineProperty(AppView.prototype, \"changeDetectorRef\", {\r\n get: function () { return this.changeDetector.ref; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AppView.prototype, \"flatRootNodes\", {\r\n get: function () { return flattenNestedViewRenderNodes(this.rootNodesOrAppElements); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AppView.prototype.hasLocal = function (contextName) {\r\n return collection_1.StringMapWrapper.contains(this.proto.templateVariableBindings, contextName);\r\n };\r\n AppView.prototype.setLocal = function (contextName, value) {\r\n if (!this.hasLocal(contextName)) {\r\n return;\r\n }\r\n var templateName = this.proto.templateVariableBindings[contextName];\r\n this.locals.set(templateName, value);\r\n };\r\n // dispatch to element injector or text nodes based on context\r\n AppView.prototype.notifyOnBinding = function (b, currentValue) {\r\n if (b.isTextNode()) {\r\n this.renderer.setText(this.allNodes[b.elementIndex], currentValue);\r\n }\r\n else {\r\n var nativeElement = this.appElements[b.elementIndex].nativeElement;\r\n if (b.isElementProperty()) {\r\n this.renderer.setElementProperty(nativeElement, b.name, currentValue);\r\n }\r\n else if (b.isElementAttribute()) {\r\n this.renderer.setElementAttribute(nativeElement, b.name, lang_1.isPresent(currentValue) ? \"\" + currentValue : null);\r\n }\r\n else if (b.isElementClass()) {\r\n this.renderer.setElementClass(nativeElement, b.name, currentValue);\r\n }\r\n else if (b.isElementStyle()) {\r\n var unit = lang_1.isPresent(b.unit) ? b.unit : '';\r\n this.renderer.setElementStyle(nativeElement, b.name, lang_1.isPresent(currentValue) ? \"\" + currentValue + unit : null);\r\n }\r\n else {\r\n throw new exceptions_1.BaseException('Unsupported directive record');\r\n }\r\n }\r\n };\r\n AppView.prototype.logBindingUpdate = function (b, value) {\r\n if (b.isDirective() || b.isElementProperty()) {\r\n var nativeElement = this.appElements[b.elementIndex].nativeElement;\r\n this.renderer.setBindingDebugInfo(nativeElement, \"\" + REFLECT_PREFIX + util_1.camelCaseToDashCase(b.name), \"\" + value);\r\n }\r\n };\r\n AppView.prototype.notifyAfterContentChecked = function () {\r\n var count = this.appElements.length;\r\n for (var i = count - 1; i >= 0; i--) {\r\n this.appElements[i].ngAfterContentChecked();\r\n }\r\n };\r\n AppView.prototype.notifyAfterViewChecked = function () {\r\n var count = this.appElements.length;\r\n for (var i = count - 1; i >= 0; i--) {\r\n this.appElements[i].ngAfterViewChecked();\r\n }\r\n };\r\n AppView.prototype.getDebugContext = function (appElement, elementIndex, directiveIndex) {\r\n try {\r\n if (lang_1.isBlank(appElement) && elementIndex < this.appElements.length) {\r\n appElement = this.appElements[elementIndex];\r\n }\r\n var container = this.containerAppElement;\r\n var element = lang_1.isPresent(appElement) ? appElement.nativeElement : null;\r\n var componentElement = lang_1.isPresent(container) ? container.nativeElement : null;\r\n var directive = lang_1.isPresent(directiveIndex) ? appElement.getDirectiveAtIndex(directiveIndex) : null;\r\n var injector = lang_1.isPresent(appElement) ? appElement.getInjector() : null;\r\n return new interfaces_1.DebugContext(element, componentElement, directive, this.context, _localsToStringMap(this.locals), injector);\r\n }\r\n catch (e) {\r\n // TODO: vsavkin log the exception once we have a good way to log errors and warnings\r\n // if an error happens during getting the debug context, we return null.\r\n return null;\r\n }\r\n };\r\n AppView.prototype.getDirectiveFor = function (directive) {\r\n return this.appElements[directive.elementIndex].getDirectiveAtIndex(directive.directiveIndex);\r\n };\r\n AppView.prototype.getDetectorFor = function (directive) {\r\n var componentView = this.appElements[directive.elementIndex].componentView;\r\n return lang_1.isPresent(componentView) ? componentView.changeDetector : null;\r\n };\r\n /**\r\n * Triggers the event handlers for the element and the directives.\r\n *\r\n * This method is intended to be called from directive EventEmitters.\r\n *\r\n * @param {string} eventName\r\n * @param {*} eventObj\r\n * @param {number} boundElementIndex\r\n * @return false if preventDefault must be applied to the DOM event\r\n */\r\n AppView.prototype.triggerEventHandlers = function (eventName, eventObj, boundElementIndex) {\r\n return this.changeDetector.handleEvent(eventName, boundElementIndex, eventObj);\r\n };\r\n return AppView;\r\n})();\r\nexports.AppView = AppView;\r\nfunction _localsToStringMap(locals) {\r\n var res = {};\r\n var c = locals;\r\n while (lang_1.isPresent(c)) {\r\n res = collection_1.StringMapWrapper.merge(res, collection_1.MapWrapper.toStringMap(c.current));\r\n c = c.parent;\r\n }\r\n return res;\r\n}\r\n/**\r\n *\r\n */\r\nvar AppProtoView = (function () {\r\n function AppProtoView(type, protoPipes, templateVariableBindings) {\r\n this.type = type;\r\n this.protoPipes = protoPipes;\r\n this.templateVariableBindings = templateVariableBindings;\r\n }\r\n AppProtoView.create = function (metadataCache, type, pipes, templateVariableBindings) {\r\n var protoPipes = null;\r\n if (lang_1.isPresent(pipes) && pipes.length > 0) {\r\n var boundPipes = collection_1.ListWrapper.createFixedSize(pipes.length);\r\n for (var i = 0; i < pipes.length; i++) {\r\n boundPipes[i] = metadataCache.getResolvedPipeMetadata(pipes[i]);\r\n }\r\n protoPipes = pipes_1.ProtoPipes.fromProviders(boundPipes);\r\n }\r\n return new AppProtoView(type, protoPipes, templateVariableBindings);\r\n };\r\n return AppProtoView;\r\n})();\r\nexports.AppProtoView = AppProtoView;\r\nvar HostViewFactory = (function () {\r\n function HostViewFactory(selector, viewFactory) {\r\n this.selector = selector;\r\n this.viewFactory = viewFactory;\r\n }\r\n HostViewFactory = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String, Function])\r\n ], HostViewFactory);\r\n return HostViewFactory;\r\n})();\r\nexports.HostViewFactory = HostViewFactory;\r\nfunction flattenNestedViewRenderNodes(nodes) {\r\n return _flattenNestedViewRenderNodes(nodes, []);\r\n}\r\nexports.flattenNestedViewRenderNodes = flattenNestedViewRenderNodes;\r\nfunction _flattenNestedViewRenderNodes(nodes, renderNodes) {\r\n for (var i = 0; i < nodes.length; i++) {\r\n var node = nodes[i];\r\n if (node instanceof element_1.AppElement) {\r\n var appEl = node;\r\n renderNodes.push(appEl.nativeElement);\r\n if (lang_1.isPresent(appEl.nestedViews)) {\r\n for (var k = 0; k < appEl.nestedViews.length; k++) {\r\n _flattenNestedViewRenderNodes(appEl.nestedViews[k].rootNodesOrAppElements, renderNodes);\r\n }\r\n }\r\n }\r\n else {\r\n renderNodes.push(node);\r\n }\r\n }\r\n return renderNodes;\r\n}\r\nfunction findLastRenderNode(node) {\r\n var lastNode;\r\n if (node instanceof element_1.AppElement) {\r\n var appEl = node;\r\n lastNode = appEl.nativeElement;\r\n if (lang_1.isPresent(appEl.nestedViews)) {\r\n // Note: Views might have no root nodes at all!\r\n for (var i = appEl.nestedViews.length - 1; i >= 0; i--) {\r\n var nestedView = appEl.nestedViews[i];\r\n if (nestedView.rootNodesOrAppElements.length > 0) {\r\n lastNode = findLastRenderNode(nestedView.rootNodesOrAppElements[nestedView.rootNodesOrAppElements.length - 1]);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n lastNode = node;\r\n }\r\n return lastNode;\r\n}\r\nexports.findLastRenderNode = findLastRenderNode;\r\nfunction checkSlotCount(componentName, expectedSlotCount, projectableNodes) {\r\n var givenSlotCount = lang_1.isPresent(projectableNodes) ? projectableNodes.length : 0;\r\n if (givenSlotCount < expectedSlotCount) {\r\n throw new exceptions_1.BaseException((\"The component \" + componentName + \" has \" + expectedSlotCount + \" <ng-content> elements,\") +\r\n (\" but only \" + givenSlotCount + \" slots were provided.\"));\r\n }\r\n}\r\nexports.checkSlotCount = checkSlotCount;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2xpbmtlci92aWV3LnRzIl0sIm5hbWVzIjpbIkFwcFZpZXciLCJBcHBWaWV3LmNvbnN0cnVjdG9yIiwiQXBwVmlldy5pbml0IiwiQXBwVmlldy5kZXN0cm95IiwiQXBwVmlldy5ub3RpZnlPbkRlc3Ryb3kiLCJBcHBWaWV3LmNoYW5nZURldGVjdG9yUmVmIiwiQXBwVmlldy5mbGF0Um9vdE5vZGVzIiwiQXBwVmlldy5oYXNMb2NhbCIsIkFwcFZpZXcuc2V0TG9jYWwiLCJBcHBWaWV3Lm5vdGlmeU9uQmluZGluZyIsIkFwcFZpZXcubG9nQmluZGluZ1VwZGF0ZSIsIkFwcFZpZXcubm90aWZ5QWZ0ZXJDb250ZW50Q2hlY2tlZCIsIkFwcFZpZXcubm90aWZ5QWZ0ZXJWaWV3Q2hlY2tlZCIsIkFwcFZpZXcuZ2V0RGVidWdDb250ZXh0IiwiQXBwVmlldy5nZXREaXJlY3RpdmVGb3IiLCJBcHBWaWV3LmdldERldGVjdG9yRm9yIiwiQXBwVmlldy50cmlnZ2VyRXZlbnRIYW5kbGVycyIsIl9sb2NhbHNUb1N0cmluZ01hcCIsIkFwcFByb3RvVmlldyIsIkFwcFByb3RvVmlldy5jb25zdHJ1Y3RvciIsIkFwcFByb3RvVmlldy5jcmVhdGUiLCJIb3N0Vmlld0ZhY3RvcnkiLCJIb3N0Vmlld0ZhY3RvcnkuY29uc3RydWN0b3IiLCJmbGF0dGVuTmVzdGVkVmlld1JlbmRlck5vZGVzIiwiX2ZsYXR0ZW5OZXN0ZWRWaWV3UmVuZGVyTm9kZXMiLCJmaW5kTGFzdFJlbmRlck5vZGUiLCJjaGVja1Nsb3RDb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsMkJBS08sZ0NBQWdDLENBQUMsQ0FBQTtBQUN4QyxpQ0FRTyxxREFBcUQsQ0FBQyxDQUFBO0FBRTdELDJCQUEyQiwrQ0FBK0MsQ0FBQyxDQUFBO0FBRTNFLHdCQUE2RCxXQUFXLENBQUMsQ0FBQTtBQUN6RSxxQkFRTywwQkFB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QSxDQUFDQSxJQUFJQSxFQUFFQSxZQUFZQSxDQUFDQSxDQUFDQTtZQUN4RUEsQ0FBQ0E7WUFBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0Esa0JBQWtCQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDbENBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLG1CQUFtQkEsQ0FBQ0EsYUFBYUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsRUFDckJBLGdCQUFTQSxDQUFDQSxZQUFZQSxDQUFDQSxHQUFHQSxLQUFHQSxZQUFjQSxHQUFHQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUN4RkEsQ0FBQ0E7WUFBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsY0FBY0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzlCQSxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxlQUFlQSxDQUFDQSxhQUFhQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxFQUFFQSxZQUFZQSxDQUFDQSxDQUFDQTtZQUNyRUEsQ0FBQ0E7WUFBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsY0FBY0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzlCQSxJQUFJQSxJQUFJQSxHQUFHQSxnQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsR0FBR0EsRUFBRUEsQ0FBQ0E7Z0JBQzNDQSxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxlQUFlQSxDQUFDQSxhQUFhQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxFQUNyQkEsZ0JBQVNBLENBQUNBLFlBQVlBLENBQUNBLEdBQUdBLEtBQUdBLFlBQVlBLEdBQUdBLElBQU1BLEdBQUdBLElBQUlBLENBQUNBLENBQUNBO1lBQzNGQSxDQUFDQTtZQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtnQkFDTkEsTUFBTUEsSUFBSUEsMEJBQWFBLENBQUNBLDhCQUE4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QUFhQSxhQUFRQSxpQkFBaUJBLDZCQUF5QkE7WUFDaEZBLGdCQUFhQSxjQUFjQSwyQkFBdUJBLENBQUNBLENBQUNBO0lBQzFEQSxDQUFDQTtBQUNIQSxDQUFDQTtBQVJlLHNCQUFjLGlCQVE3QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTGlzdFdyYXBwZXIsXG4gIE1hcFdyYXBwZXIsXG4gIE1hcCxcbiAgU3RyaW5nTWFwV3JhcHBlcixcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yLFxuICBDaGFuZ2VEaXNwYXRjaGVyLFxuICBEaXJlY3RpdmVJbmRleCxcbiAgQmluZGluZ1RhcmdldCxcbiAgTG9jYWxzLFxuICBQcm90b0NoYW5nZURldGVjdG9yLFxuICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rpb24nO1xuaW1wb3J0IHtSZXNvbHZlZFByb3ZpZGVyLCBJbmplY3RhYmxlLCBJbmplY3Rvcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtEZWJ1Z0NvbnRleHR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7QXBwUHJvdG9FbGVtZW50LCBBcHBFbGVtZW50LCBEaXJlY3RpdmVQcm92aWRlcn0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7XG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgVHlwZSxcbiAgaXNBcnJheSxcbiAgaXNOdW1iZXIsXG4gIENPTlNULFxuICBDT05TVF9FWFBSXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0Jhc2VFeGNlcHRpb24sIFdyYXBwZWRFeGNlcHRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucyc7XG5pbXBvcnQge1JlbmRlcmVyLCBSb290UmVuZGVyZXIsIFJlbmRlckRlYnVnSW5mb30gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvcmVuZGVyL2FwaSc7XG5pbXBvcnQge1ZpZXdSZWZfLCBIb3N0Vmlld0ZhY3RvcnlSZWZ9IGZyb20gJy4vdmlld19yZWYnO1xuaW1wb3J0IHtQcm90b1BpcGVzfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9waXBlcy9waXBlcyc7XG5pbXBvcnQge2NhbWVsQ2FzZVRvRGFzaENhc2V9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3JlbmRlci91dGlsJztcblxuZXhwb3J0IHtEZWJ1Z0NvbnRleHR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2NoYW5nZV9kZXRlY3Rpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1BpcGVzfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9waXBlcy9waXBlcyc7XG5pbXBvcnQge0FwcFZpZXdNYW5hZ2VyXywgQXBwVmlld01hbmFnZXJ9IGZyb20gJy4vdmlld19tYW5hZ2VyJztcbmltcG9ydCB7UmVzb2x2ZWRNZXRhZGF0YUNhY2hlfSBmcm9tICcuL3Jlc29sdmVkX21ldGFkYXRhX2NhY2hlJztcbmltcG9ydCB7Vmlld1R5cGV9IGZyb20gJy4vdmlld190eXBlJztcblxuY29uc3QgUkVGTEVDVF9QUkVGSVg6IHN0cmluZyA9ICduZy1yZWZsZWN0LSc7XG5cbmNvbnN0IEVNUFRZX0NPTlRFWFQgPSBDT05TVF9FWFBSKG5ldyBPYmplY3QoKSk7XG5cbi8qKlxuICogQ29zdCBvZiBtYWtpbmcgb2JqZWN0czogaHR0cDovL2pzcGVyZi5jb20vaW5zdGFudGlhdGUtc2l6ZS1vZi1vYmplY3RcbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHBWaWV3IGltcGxlbWVudHMgQ2hhbmdlRGlzcGF0Y2hlciB7XG4gIHJlZjogVmlld1JlZl87XG4gIHJvb3ROb2Rlc09yQXBwRWxlbWVudHM6IGFueVtdO1xuICBhbGxOb2RlczogYW55W107XG4gIGRpc3Bvc2FibGVzOiBGdW5jdGlvbltdO1xuICBhcHBFbGVtZW50czogQXBwRWxlbWVudFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dCBhZ2FpbnN0IHdoaWNoIGRhdGEtYmluZGluZyBleHByZXNzaW9ucyBpbiB0aGlzIHZpZXcgYXJlIGV2YWx1YXRlZCBhZ2FpbnN0LlxuICAgKiBUaGlzIGlzIGFsd2F5cyBhIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICovXG4gIGNvbnRleHQ6IGFueSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFZhcmlhYmxlcywgbG9jYWwgdG8gdGhpcyB2aWV3LCB0aGF0IGNhbiBiZSB1c2VkIGluIGJpbmRpbmcgZXhwcmVzc2lvbnMgKGluIGFkZGl0aW9uIHRvIHRoZVxuICAgKiBjb250ZXh0KS4gVGhpcyBpcyB1c2VkIGZvciB0aGluZyBsaWtlIGA8dmlkZW8gI3BsYXllcj5gIG9yXG4gICAqIGA8bGkgdGVtcGxhdGU9XCJmb3IgI2l0ZW0gb2YgaXRlbXNcIj5gLCB3aGVyZSBcInBsYXllclwiIGFuZCBcIml0ZW1cIiBhcmUgbG9jYWxzLCByZXNwZWN0aXZlbHkuXG4gICAqL1xuICBsb2NhbHM6IExvY2FscztcblxuICBwaXBlczogUGlwZXM7XG5cbiAgcGFyZW50SW5qZWN0b3I6IEluamVjdG9yO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHJvb3QgaW5qZWN0b3JzIG9mIHRoaXMgdmlld1xuICAgKiBoYXZlIGEgaG9zdEJvdW5kYXJ5LlxuICAgKi9cbiAgaG9zdEluamVjdG9yQm91bmRhcnk6IGJvb2xlYW47XG5cbiAgZGVzdHJveWVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHByb3RvOiBBcHBQcm90b1ZpZXcsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIsXG4gICAgICAgICAgICAgIHB1YmxpYyB2aWV3TWFuYWdlcjogQXBwVmlld01hbmFnZXJfLCBwdWJsaWMgcHJvamVjdGFibGVOb2RlczogQXJyYXk8YW55IHwgYW55W10+LFxuICAgICAgICAgICAgICBwdWJsaWMgY29udGFpbmVyQXBwRWxlbWVudDogQXBwRWxlbWVudCxcbiAgICAgICAgICAgICAgaW1wZXJhdGl2ZWx5Q3JlYXRlZFByb3ZpZGVyczogUmVzb2x2ZWRQcm92aWRlcltdLCByb290SW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICAgICAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yKSB7XG4gICAgdGhpcy5yZWYgPSBuZXcgVmlld1JlZl8odGhpcyk7XG4gICAgdmFyIGluamVjdG9yV2l0aEhvc3RCb3VuZGFyeSA9IEFwcEVsZW1lbnQuZ2V0Vmlld1BhcmVudEluamVjdG9yKFxuICAgICAgICB0aGlzLnByb3RvLnR5cGUsIGNvbnRhaW5lckFwcEVsZW1lbnQsIGltcGVyYXRpdmVseUNyZWF0ZWRQcm92aWRlcnMsIHJvb3RJbmplY3Rvcik7XG4gICAgdGhpcy5wYXJlbnRJbmplY3RvciA9IGluamVjdG9yV2l0aEhvc3RCb3VuZGFyeS5pbmplY3RvcjtcbiAgICB0aGlzLmhvc3RJbmplY3RvckJvdW5kYXJ5ID0gaW5qZWN0b3JXaXRoSG9zdEJvdW5kYXJ5Lmhvc3RJbmplY3RvckJvdW5kYXJ5O1xuICAgIHZhciBwaXBlcztcbiAgICB2YXIgY29udGV4dDtcbiAgICBzd2l0Y2ggKHByb3RvLnR5cGUpIHtcbiAgICAgIGNhc2UgVmlld1R5cGUuQ09NUE9ORU5UOlxuICAgICAgICBwaXBlcyA9IG5ldyBQaXBlcyhwcm90by5wcm90b1BpcGVzLCBjb250YWluZXJBcHBFbGVtZW50LmdldEluamVjdG9yKCkpO1xuICAgICAgICBjb250ZXh0ID0gY29udGFpbmVyQXBwRWxlbWVudC5nZXRDb21wb25lbnQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZpZXdUeXBlLkVNQkVEREVEOlxuICAgICAgICBwaXBlcyA9IGNvbnRhaW5lckFwcEVsZW1lbnQucGFyZW50Vmlldy5waXBlcztcbiAgICAgICAgY29udGV4dCA9IGNvbnRhaW5lckFwcEVsZW1lbnQucGFyZW50Vmlldy5jb250ZXh0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVmlld1R5cGUuSE9TVDpcbiAgICAgICAgcGlwZXMgPSBudWxsO1xuICAgICAgICBjb250ZXh0ID0gRU1QVFlfQ09OVEVYVDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMucGlwZXMgPSBwaXBlcztcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB9XG5cbiAgaW5pdChyb290Tm9kZXNPckFwcEVsZW1lbnRzOiBhbnlbXSwgYWxsTm9kZXM6IGFueVtdLCBkaXNwb3NhYmxlczogRnVuY3Rpb25bXSxcbiAgICAgICBhcHBFbGVtZW50czogQXBwRWxlbWVudFtdKSB7XG4gICAgdGhpcy5yb290Tm9kZXNPckFwcEVsZW1lbnRzID0gcm9vdE5vZGVzT3JBcHBFbGVtZW50cztcbiAgICB0aGlzLmFsbE5vZGVzID0gYWxsTm9kZXM7XG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IGRpc3Bvc2FibGVzO1xuICAgIHRoaXMuYXBwRWxlbWVudHMgPSBhcHBFbGVtZW50cztcbiAgICB2YXIgbG9jYWxzTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2goXG4gICAgICAgIHRoaXMucHJvdG8udGVtcGxhdGVWYXJpYWJsZUJpbmRpbmdzLFxuICAgICAgICAodGVtcGxhdGVOYW1lOiBzdHJpbmcsIF86IHN0cmluZykgPT4geyBsb2NhbHNNYXAuc2V0KHRlbXBsYXRlTmFtZSwgbnVsbCk7IH0pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXBwRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBhcHBFbCA9IGFwcEVsZW1lbnRzW2ldO1xuICAgICAgdmFyIHByb3ZpZGVyVG9rZW5zID0gW107XG4gICAgICBpZiAoaXNQcmVzZW50KGFwcEVsLnByb3RvLnByb3RvSW5qZWN0b3IpKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXBwRWwucHJvdG8ucHJvdG9JbmplY3Rvci5udW1iZXJPZlByb3ZpZGVyczsgaisrKSB7XG4gICAgICAgICAgcHJvdmlkZXJUb2tlbnMucHVzaChhcHBFbC5wcm90by5wcm90b0luamVjdG9yLmdldFByb3ZpZGVyQXRJbmRleChqKS5rZXkudG9rZW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBTdHJpbmdNYXBXcmFwcGVyLmZvckVhY2goYXBwRWwucHJvdG8uZGlyZWN0aXZlVmFyaWFibGVCaW5kaW5ncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGlyZWN0aXZlSW5kZXg6IG51bWJlciwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNCbGFuayhkaXJlY3RpdmVJbmRleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzTWFwLnNldChuYW1lLCBhcHBFbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fsc01hcC5zZXQobmFtZSwgYXBwRWwuZ2V0RGlyZWN0aXZlQXRJbmRleChkaXJlY3RpdmVJbmRleCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRFbGVtZW50RGVidWdJbmZvKFxuICAgICAgICAgIGFwcEVsLm5hdGl2ZUVsZW1lbnQsIG5ldyBSZW5kZXJEZWJ1Z0luZm8oYXBwRWwuZ2V0SW5qZWN0b3IoKSwgYXBwRWwuZ2V0Q29tcG9uZW50KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlclRva2VucywgbG9jYWxzTWFwKSk7XG4gICAgfVxuICAgIHZhciBwYXJlbnRMb2NhbHMgPSBudWxsO1xuICAgIGlmICh0aGlzLnByb3RvLnR5cGUgIT09IFZpZXdUeXBlLkNPTVBPTkVOVCkge1xuICAgICAgcGFyZW50TG9jYWxzID1cbiAgICAgICAgICBpc1ByZXNlbnQodGhpcy5jb250YWluZXJBcHBFbGVtZW50KSA/IHRoaXMuY29udGFpbmVyQXBwRWxlbWVudC5wYXJlbnRWaWV3LmxvY2FscyA6IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3RvLnR5cGUgPT09IFZpZXdUeXBlLkNPTVBPTkVOVCkge1xuICAgICAgLy8gTm90ZTogdGhlIHJlbmRlciBub2RlcyBoYXZlIGJlZW4gYXR0YWNoZWQgdG8gdGhlaXIgaG9zdCBlbGVtZW50XG4gICAgICAvLyBpbiB0aGUgVmlld0ZhY3RvcnkgYWxyZWFkeS5cbiAgICAgIHRoaXMuY29udGFpbmVyQXBwRWxlbWVudC5hdHRhY2hDb21wb25lbnRWaWV3KHRoaXMpO1xuICAgICAgdGhpcy5jb250YWluZXJBcHBFbGVtZW50LnBhcmVudFZpZXcuY2hhbmdlRGV0ZWN0b3IuYWRkVmlld0NoaWxkKHRoaXMuY2hhbmdlRGV0ZWN0b3IpO1xuICAgIH1cbiAgICB0aGlzLmxvY2FscyA9IG5ldyBMb2NhbHMocGFyZW50TG9jYWxzLCBsb2NhbHNNYXApO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuaHlkcmF0ZSh0aGlzLmNvbnRleHQsIHRoaXMubG9jYWxzLCB0aGlzLCB0aGlzLnBpcGVzKTtcbiAgICB0aGlzLnZpZXdNYW5hZ2VyLm9uVmlld0NyZWF0ZWQodGhpcyk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ1RoaXMgdmlldyBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZCEnKTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXN0cm95UmVjdXJzaXZlKCk7XG4gIH1cblxuICBub3RpZnlPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIHZhciBob3N0RWxlbWVudCA9XG4gICAgICAgIHRoaXMucHJvdG8udHlwZSA9PT0gVmlld1R5cGUuQ09NUE9ORU5UID8gdGhpcy5jb250YWluZXJBcHBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgOiBudWxsO1xuICAgIHRoaXMucmVuZGVyZXIuZGVzdHJveVZpZXcoaG9zdEVsZW1lbnQsIHRoaXMuYWxsTm9kZXMpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaXNwb3NhYmxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5kaXNwb3NhYmxlc1tpXSgpO1xuICAgIH1cbiAgICB0aGlzLnZpZXdNYW5hZ2VyLm9uVmlld0Rlc3Ryb3llZCh0aGlzKTtcbiAgfVxuXG4gIGdldCBjaGFuZ2VEZXRlY3RvclJlZigpOiBDaGFuZ2VEZXRlY3RvclJlZiB7IHJldHVybiB0aGlzLmNoYW5nZURldGVjdG9yLnJlZjsgfVxuXG4gIGdldCBmbGF0Um9vdE5vZGVzKCk6IGFueVtdIHsgcmV0dXJuIGZsYXR0ZW5OZXN0ZWRWaWV3UmVuZGVyTm9kZXModGhpcy5yb290Tm9kZXNPckFwcEVsZW1lbnRzKTsgfVxuXG4gIGhhc0xvY2FsKGNvbnRleHROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU3RyaW5nTWFwV3JhcHBlci5jb250YWlucyh0aGlzLnByb3RvLnRlbXBsYXRlVmFyaWFibGVCaW5kaW5ncywgY29udGV4dE5hbWUpO1xuICB9XG5cbiAgc2V0TG9jYWwoY29udGV4dE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNMb2NhbChjb250ZXh0TmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRlbXBsYXRlTmFtZSA9IHRoaXMucHJvdG8udGVtcGxhdGVWYXJpYWJsZUJpbmRpbmdzW2NvbnRleHROYW1lXTtcbiAgICB0aGlzLmxvY2Fscy5zZXQodGVtcGxhdGVOYW1lLCB2YWx1ZSk7XG4gIH1cblxuICAvLyBkaXNwYXRjaCB0byBlbGVtZW50IGluamVjdG9yIG9yIHRleHQgbm9kZXMgYmFzZWQgb24gY29udGV4dFxuICBub3RpZnlPbkJpbmRpbmcoYjogQmluZGluZ1RhcmdldCwgY3VycmVudFZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoYi5pc1RleHROb2RlKCkpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0VGV4dCh0aGlzLmFsbE5vZGVzW2IuZWxlbWVudEluZGV4XSwgY3VycmVudFZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5hdGl2ZUVsZW1lbnQgPSB0aGlzLmFwcEVsZW1lbnRzW2IuZWxlbWVudEluZGV4XS5uYXRpdmVFbGVtZW50O1xuICAgICAgaWYgKGIuaXNFbGVtZW50UHJvcGVydHkoKSkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEVsZW1lbnRQcm9wZXJ0eShuYXRpdmVFbGVtZW50LCBiLm5hbWUsIGN1cnJlbnRWYWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGIuaXNFbGVtZW50QXR0cmlidXRlKCkpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRFbGVtZW50QXR0cmlidXRlKG5hdGl2ZUVsZW1lbnQsIGIubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJlc2VudChjdXJyZW50VmFsdWUpID8gYCR7Y3VycmVudFZhbHVlfWAgOiBudWxsKTtcbiAgICAgIH0gZWxzZSBpZiAoYi5pc0VsZW1lbnRDbGFzcygpKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0RWxlbWVudENsYXNzKG5hdGl2ZUVsZW1lbnQsIGIubmFtZSwgY3VycmVudFZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoYi5pc0VsZW1lbnRTdHlsZSgpKSB7XG4gICAgICAgIHZhciB1bml0ID0gaXNQcmVzZW50KGIudW5pdCkgPyBiLnVuaXQgOiAnJztcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRFbGVtZW50U3R5bGUobmF0aXZlRWxlbWVudCwgYi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ByZXNlbnQoY3VycmVudFZhbHVlKSA/IGAke2N1cnJlbnRWYWx1ZX0ke3VuaXR9YCA6IG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGRpcmVjdGl2ZSByZWNvcmQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsb2dCaW5kaW5nVXBkYXRlKGI6IEJpbmRpbmdUYXJnZXQsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoYi5pc0RpcmVjdGl2ZSgpIHx8IGIuaXNFbGVtZW50UHJvcGVydHkoKSkge1xuICAgICAgdmFyIG5hdGl2ZUVsZW1lbnQgPSB0aGlzLmFwcEVsZW1lbnRzW2IuZWxlbWVudEluZGV4XS5uYXRpdmVFbGVtZW50O1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRCaW5kaW5nRGVidWdJbmZvKFxuICAgICAgICAgIG5hdGl2ZUVsZW1lbnQsIGAke1JFRkxFQ1RfUFJFRklYfSR7Y2FtZWxDYXNlVG9EYXNoQ2FzZShiLm5hbWUpfWAsIGAke3ZhbHVlfWApO1xuICAgIH1cbiAgfVxuXG4gIG5vdGlmeUFmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdmFyIGNvdW50ID0gdGhpcy5hcHBFbGVtZW50cy5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IGNvdW50IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHRoaXMuYXBwRWxlbWVudHNbaV0ubmdBZnRlckNvbnRlbnRDaGVja2VkKCk7XG4gICAgfVxuICB9XG5cbiAgbm90aWZ5QWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB2YXIgY291bnQgPSB0aGlzLmFwcEVsZW1lbnRzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gY291bnQgLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdGhpcy5hcHBFbGVtZW50c1tpXS5uZ0FmdGVyVmlld0NoZWNrZWQoKTtcbiAgICB9XG4gIH1cblxuICBnZXREZWJ1Z0NvbnRleHQoYXBwRWxlbWVudDogQXBwRWxlbWVudCwgZWxlbWVudEluZGV4OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICBkaXJlY3RpdmVJbmRleDogbnVtYmVyKTogRGVidWdDb250ZXh0IHtcbiAgICB0cnkge1xuICAgICAgaWYgKGlzQmxhbmsoYXBwRWxlbWVudCkgJiYgZWxlbWVudEluZGV4IDwgdGhpcy5hcHBFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgYXBwRWxlbWVudCA9IHRoaXMuYXBwRWxlbWVudHNbZWxlbWVudEluZGV4XTtcbiAgICAgIH1cbiAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lckFwcEVsZW1lbnQ7XG5cbiAgICAgIHZhciBlbGVtZW50ID0gaXNQcmVzZW50KGFwcEVsZW1lbnQpID8gYXBwRWxlbWVudC5uYXRpdmVFbGVtZW50IDogbnVsbDtcbiAgICAgIHZhciBjb21wb25lbnRFbGVtZW50ID0gaXNQcmVzZW50KGNvbnRhaW5lcikgPyBjb250YWluZXIubmF0aXZlRWxlbWVudCA6IG51bGw7XG4gICAgICB2YXIgZGlyZWN0aXZlID1cbiAgICAgICAgICBpc1ByZXNlbnQoZGlyZWN0aXZlSW5kZXgpID8gYXBwRWxlbWVudC5nZXREaXJlY3RpdmVBdEluZGV4KGRpcmVjdGl2ZUluZGV4KSA6IG51bGw7XG4gICAgICB2YXIgaW5qZWN0b3IgPSBpc1ByZXNlbnQoYXBwRWxlbWVudCkgPyBhcHBFbGVtZW50LmdldEluamVjdG9yKCkgOiBudWxsO1xuXG4gICAgICByZXR1cm4gbmV3IERlYnVnQ29udGV4dChlbGVtZW50LCBjb21wb25lbnRFbGVtZW50LCBkaXJlY3RpdmUsIHRoaXMuY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbHNUb1N0cmluZ01hcCh0aGlzLmxvY2FscyksIGluamVjdG9yKTtcblxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFRPRE86IHZzYXZraW4gbG9nIHRoZSBleGNlcHRpb24gb25jZSB3ZSBoYXZlIGEgZ29vZCB3YXkgdG8gbG9nIGVycm9ycyBhbmQgd2FybmluZ3NcbiAgICAgIC8vIGlmIGFuIGVycm9yIGhhcHBlbnMgZHVyaW5nIGdldHRpbmcgdGhlIGRlYnVnIGNvbnRleHQsIHdlIHJldHVybiBudWxsLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGlyZWN0aXZlRm9yKGRpcmVjdGl2ZTogRGlyZWN0aXZlSW5kZXgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmFwcEVsZW1lbnRzW2RpcmVjdGl2ZS5lbGVtZW50SW5kZXhdLmdldERpcmVjdGl2ZUF0SW5kZXgoZGlyZWN0aXZlLmRpcmVjdGl2ZUluZGV4KTtcbiAgfVxuXG4gIGdldERldGVjdG9yRm9yKGRpcmVjdGl2ZTogRGlyZWN0aXZlSW5kZXgpOiBDaGFuZ2VEZXRlY3RvciB7XG4gICAgdmFyIGNvbXBvbmVudFZpZXcgPSB0aGlzLmFwcEVsZW1lbnRzW2RpcmVjdGl2ZS5lbGVtZW50SW5kZXhdLmNvbXBvbmVudFZpZXc7XG4gICAgcmV0dXJuIGlzUHJlc2VudChjb21wb25lbnRWaWV3KSA/IGNvbXBvbmVudFZpZXcuY2hhbmdlRGV0ZWN0b3IgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJzIHRoZSBldmVudCBoYW5kbGVycyBmb3IgdGhlIGVsZW1lbnQgYW5kIHRoZSBkaXJlY3RpdmVzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgZnJvbSBkaXJlY3RpdmUgRXZlbnRFbWl0dGVycy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVxuICAgKiBAcGFyYW0geyp9IGV2ZW50T2JqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBib3VuZEVsZW1lbnRJbmRleFxuICAgKiBAcmV0dXJuIGZhbHNlIGlmIHByZXZlbnREZWZhdWx0IG11c3QgYmUgYXBwbGllZCB0byB0aGUgRE9NIGV2ZW50XG4gICAqL1xuICB0cmlnZ2VyRXZlbnRIYW5kbGVycyhldmVudE5hbWU6IHN0cmluZywgZXZlbnRPYmo6IEV2ZW50LCBib3VuZEVsZW1lbnRJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlRGV0ZWN0b3IuaGFuZGxlRXZlbnQoZXZlbnROYW1lLCBib3VuZEVsZW1lbnRJbmRleCwgZXZlbnRPYmopO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9sb2NhbHNUb1N0cmluZ01hcChsb2NhbHM6IExvY2Fscyk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgYyA9IGxvY2FscztcbiAgd2hpbGUgKGlzUHJlc2VudChjKSkge1xuICAgIHJlcyA9IFN0cmluZ01hcFdyYXBwZXIubWVyZ2UocmVzLCBNYXBXcmFwcGVyLnRvU3RyaW5nTWFwKGMuY3VycmVudCkpO1xuICAgIGMgPSBjLnBhcmVudDtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHBQcm90b1ZpZXcge1xuICBzdGF0aWMgY3JlYXRlKG1ldGFkYXRhQ2FjaGU6IFJlc29sdmVkTWV0YWRhdGFDYWNoZSwgdHlwZTogVmlld1R5cGUsIHBpcGVzOiBUeXBlW10sXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVWYXJpYWJsZUJpbmRpbmdzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSk6IEFwcFByb3RvVmlldyB7XG4gICAgdmFyIHByb3RvUGlwZXMgPSBudWxsO1xuICAgIGlmIChpc1ByZXNlbnQocGlwZXMpICYmIHBpcGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBib3VuZFBpcGVzID0gTGlzdFdyYXBwZXIuY3JlYXRlRml4ZWRTaXplKHBpcGVzLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBpcGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJvdW5kUGlwZXNbaV0gPSBtZXRhZGF0YUNhY2hlLmdldFJlc29sdmVkUGlwZU1ldGFkYXRhKHBpcGVzW2ldKTtcbiAgICAgIH1cbiAgICAgIHByb3RvUGlwZXMgPSBQcm90b1BpcGVzLmZyb21Qcm92aWRlcnMoYm91bmRQaXBlcyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQXBwUHJvdG9WaWV3KHR5cGUsIHByb3RvUGlwZXMsIHRlbXBsYXRlVmFyaWFibGVCaW5kaW5ncyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdHlwZTogVmlld1R5cGUsIHB1YmxpYyBwcm90b1BpcGVzOiBQcm90b1BpcGVzLFxuICAgICAgICAgICAgICBwdWJsaWMgdGVtcGxhdGVWYXJpYWJsZUJpbmRpbmdzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSkge31cbn1cblxuXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIEhvc3RWaWV3RmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZWxlY3Rvcjogc3RyaW5nLCBwdWJsaWMgdmlld0ZhY3Rvcnk6IEZ1bmN0aW9uKSB7fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbk5lc3RlZFZpZXdSZW5kZXJOb2Rlcyhub2RlczogYW55W10pOiBhbnlbXSB7XG4gIHJldHVybiBfZmxhdHRlbk5lc3RlZFZpZXdSZW5kZXJOb2Rlcyhub2RlcywgW10pO1xufVxuXG5mdW5jdGlvbiBfZmxhdHRlbk5lc3RlZFZpZXdSZW5kZXJOb2Rlcyhub2RlczogYW55W10sIHJlbmRlck5vZGVzOiBhbnlbXSk6IGFueVtdIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBBcHBFbGVtZW50KSB7XG4gICAgICB2YXIgYXBwRWwgPSA8QXBwRWxlbWVudD5ub2RlO1xuICAgICAgcmVuZGVyTm9kZXMucHVzaChhcHBFbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgIGlmIChpc1ByZXNlbnQoYXBwRWwubmVzdGVkVmlld3MpKSB7XG4gICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgYXBwRWwubmVzdGVkVmlld3MubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICBfZmxhdHRlbk5lc3RlZFZpZXdSZW5kZXJOb2RlcyhhcHBFbC5uZXN0ZWRWaWV3c1trXS5yb290Tm9kZXNPckFwcEVsZW1lbnRzLCByZW5kZXJOb2Rlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVuZGVyTm9kZXMucHVzaChub2RlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlbmRlck5vZGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZExhc3RSZW5kZXJOb2RlKG5vZGU6IGFueSk6IGFueSB7XG4gIHZhciBsYXN0Tm9kZTtcbiAgaWYgKG5vZGUgaW5zdGFuY2VvZiBBcHBFbGVtZW50KSB7XG4gICAgdmFyIGFwcEVsID0gPEFwcEVsZW1lbnQ+bm9kZTtcbiAgICBsYXN0Tm9kZSA9IGFwcEVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGlzUHJlc2VudChhcHBFbC5uZXN0ZWRWaWV3cykpIHtcbiAgICAgIC8vIE5vdGU6IFZpZXdzIG1pZ2h0IGhhdmUgbm8gcm9vdCBub2RlcyBhdCBhbGwhXG4gICAgICBmb3IgKHZhciBpID0gYXBwRWwubmVzdGVkVmlld3MubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdmFyIG5lc3RlZFZpZXcgPSBhcHBFbC5uZXN0ZWRWaWV3c1tpXTtcbiAgICAgICAgaWYgKG5lc3RlZFZpZXcucm9vdE5vZGVzT3JBcHBFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbGFzdE5vZGUgPSBmaW5kTGFzdFJlbmRlck5vZGUoXG4gICAgICAgICAgICAgIG5lc3RlZFZpZXcucm9vdE5vZGVzT3JBcHBFbGVtZW50c1tuZXN0ZWRWaWV3LnJvb3ROb2Rlc09yQXBwRWxlbWVudHMubGVuZ3RoIC0gMV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxhc3ROb2RlID0gbm9kZTtcbiAgfVxuICByZXR1cm4gbGFzdE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1Nsb3RDb3VudChjb21wb25lbnROYW1lOiBzdHJpbmcsIGV4cGVjdGVkU2xvdENvdW50OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdGFibGVOb2RlczogYW55W11bXSk6IHZvaWQge1xuICB2YXIgZ2l2ZW5TbG90Q291bnQgPSBpc1ByZXNlbnQocHJvamVjdGFibGVOb2RlcykgPyBwcm9qZWN0YWJsZU5vZGVzLmxlbmd0aCA6IDA7XG4gIGlmIChnaXZlblNsb3RDb3VudCA8IGV4cGVjdGVkU2xvdENvdW50KSB7XG4gICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXG4gICAgICAgIGBUaGUgY29tcG9uZW50ICR7Y29tcG9uZW50TmFtZX0gaGFzICR7ZXhwZWN0ZWRTbG90Q291bnR9IDxuZy1jb250ZW50PiBlbGVtZW50cyxgICtcbiAgICAgICAgYCBidXQgb25seSAke2dpdmVuU2xvdENvdW50fSBzbG90cyB3ZXJlIHByb3ZpZGVkLmApO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var RenderComponentType = (function () {\r\n function RenderComponentType(id, encapsulation, styles) {\r\n this.id = id;\r\n this.encapsulation = encapsulation;\r\n this.styles = styles;\r\n }\r\n return RenderComponentType;\r\n})();\r\nexports.RenderComponentType = RenderComponentType;\r\nvar RenderDebugInfo = (function () {\r\n function RenderDebugInfo(injector, component, providerTokens, locals) {\r\n this.injector = injector;\r\n this.component = component;\r\n this.providerTokens = providerTokens;\r\n this.locals = locals;\r\n }\r\n return RenderDebugInfo;\r\n})();\r\nexports.RenderDebugInfo = RenderDebugInfo;\r\nvar Renderer = (function () {\r\n function Renderer() {\r\n }\r\n return Renderer;\r\n})();\r\nexports.Renderer = Renderer;\r\n/**\r\n * Injectable service that provides a low-level interface for modifying the UI.\r\n *\r\n * Use this service to bypass Angular's templating and make custom UI changes that can't be\r\n * expressed declaratively. For example if you need to set a property or an attribute whose name is\r\n * not statically known, use {@link #setElementProperty} or {@link #setElementAttribute}\r\n * respectively.\r\n *\r\n * If you are implementing a custom renderer, you must implement this interface.\r\n *\r\n * The default Renderer implementation is `DomRenderer`. Also available is `WebWorkerRenderer`.\r\n */\r\nvar RootRenderer = (function () {\r\n function RootRenderer() {\r\n }\r\n return RootRenderer;\r\n})();\r\nexports.RootRenderer = RootRenderer;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvcmVuZGVyL2FwaS50cyJdLCJuYW1lcyI6WyJSZW5kZXJDb21wb25lbnRUeXBlIiwiUmVuZGVyQ29tcG9uZW50VHlwZS5jb25zdHJ1Y3RvciIsIlJlbmRlckRlYnVnSW5mbyIsIlJlbmRlckRlYnVnSW5mby5jb25zdHJ1Y3RvciIsIlJlbmRlcmVyIiwiUmVuZGVyZXIuY29uc3RydWN0b3IiLCJSb290UmVuZGVyZXIiLCJSb290UmVuZGVyZXIuY29uc3RydWN0b3IiXSwibWFwcGluZ3MiOiJBQUdBO0lBQ0VBLDZCQUFtQkEsRUFBVUEsRUFBU0EsYUFBZ0NBLEVBQ25EQSxNQUE2QkE7UUFEN0JDLE9BQUVBLEdBQUZBLEVBQUVBLENBQVFBO1FBQVNBLGtCQUFhQSxHQUFiQSxhQUFhQSxDQUFtQkE7UUFDbkRBLFdBQU1BLEdBQU5BLE1BQU1BLENBQXVCQTtJQUFHQSxDQUFDQTtJQUN0REQsMEJBQUNBO0FBQURBLENBQUNBLEFBSEQsSUFHQztBQUhZLDJCQUFtQixzQkFHL0IsQ0FBQTtBQUVEO0lBQ0VFLHlCQUFtQkEsUUFBa0JBLEVBQVNBLFNBQWNBLEVBQVNBLGNBQXFCQSxFQUN2RUEsTUFBd0JBO1FBRHhCQyxhQUFRQSxHQUFSQSxRQUFRQSxDQUFVQTtRQUFTQSxjQUFTQSxHQUFUQSxTQUFTQSxDQUFLQTtRQUFTQSxtQkFBY0EsR0FBZEEsY0FBY0EsQ0FBT0E7UUFDdkVBLFdBQU1BLEdBQU5BLE1BQU1BLENBQWtCQTtJQUFHQSxDQUFDQTtJQUNqREQsc0JBQUNBO0FBQURBLENBQUNBLEFBSEQsSUFHQztBQUhZLHVCQUFlLGtCQUczQixDQUFBO0FBSUQ7SUFBQUU7SUE0Q0FDLENBQUNBO0lBQURELGVBQUNBO0FBQURBLENBQUNBLEFBNUNELElBNENDO0FBNUNxQixnQkFBUSxXQTRDN0IsQ0FBQTtBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBRUg7SUFBQUU7SUFFQUMsQ0FBQ0E7SUFBREQsbUJBQUNBO0FBQURBLENBQUNBLEFBRkQsSUFFQztBQUZxQixvQkFBWSxlQUVqQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvbWV0YWRhdGEvdmlldyc7XG5pbXBvcnQge0luamVjdG9yLCBJbmplY3RhYmxlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5cbmV4cG9ydCBjbGFzcyBSZW5kZXJDb21wb25lbnRUeXBlIHtcbiAgY29uc3RydWN0b3IocHVibGljIGlkOiBzdHJpbmcsIHB1YmxpYyBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICAgICAgICAgICAgcHVibGljIHN0eWxlczogQXJyYXk8c3RyaW5nIHwgYW55W10+KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgUmVuZGVyRGVidWdJbmZvIHtcbiAgY29uc3RydWN0b3IocHVibGljIGluamVjdG9yOiBJbmplY3RvciwgcHVibGljIGNvbXBvbmVudDogYW55LCBwdWJsaWMgcHJvdmlkZXJUb2tlbnM6IGFueVtdLFxuICAgICAgICAgICAgICBwdWJsaWMgbG9jYWxzOiBNYXA8c3RyaW5nLCBhbnk+KSB7fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmVudFJlbmRlcmVyIHsgcmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudFR5cGU6IFJlbmRlckNvbXBvbmVudFR5cGUpOiBSZW5kZXJlcjsgfVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVuZGVyZXIgaW1wbGVtZW50cyBQYXJlbnRSZW5kZXJlciB7XG4gIGFic3RyYWN0IHJlbmRlckNvbXBvbmVudChjb21wb25lbnRUeXBlOiBSZW5kZXJDb21wb25lbnRUeXBlKTogUmVuZGVyZXI7XG5cbiAgYWJzdHJhY3Qgc2VsZWN0Um9vdEVsZW1lbnQoc2VsZWN0b3I6IHN0cmluZyk6IGFueTtcblxuICBhYnN0cmFjdCBjcmVhdGVFbGVtZW50KHBhcmVudEVsZW1lbnQ6IGFueSwgbmFtZTogc3RyaW5nKTogYW55O1xuXG4gIGFic3RyYWN0IGNyZWF0ZVZpZXdSb290KGhvc3RFbGVtZW50OiBhbnkpOiBhbnk7XG5cbiAgYWJzdHJhY3QgY3JlYXRlVGVtcGxhdGVBbmNob3IocGFyZW50RWxlbWVudDogYW55KTogYW55O1xuXG4gIGFic3RyYWN0IGNyZWF0ZVRleHQocGFyZW50RWxlbWVudDogYW55LCB2YWx1ZTogc3RyaW5nKTogYW55O1xuXG4gIGFic3RyYWN0IHByb2plY3ROb2RlcyhwYXJlbnRFbGVtZW50OiBhbnksIG5vZGVzOiBhbnlbXSk7XG5cbiAgYWJzdHJhY3QgYXR0YWNoVmlld0FmdGVyKG5vZGU6IGFueSwgdmlld1Jvb3ROb2RlczogYW55W10pO1xuXG4gIGFic3RyYWN0IGRldGFjaFZpZXcodmlld1Jvb3ROb2RlczogYW55W10pO1xuXG4gIGFic3RyYWN0IGRlc3Ryb3lWaWV3KGhvc3RFbGVtZW50OiBhbnksIHZpZXdBbGxOb2RlczogYW55W10pO1xuXG4gIGFic3RyYWN0IGxpc3RlbihyZW5kZXJFbGVtZW50OiBhbnksIG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKTogRnVuY3Rpb247XG5cbiAgYWJzdHJhY3QgbGlzdGVuR2xvYmFsKHRhcmdldDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBGdW5jdGlvbik6IEZ1bmN0aW9uO1xuXG4gIGFic3RyYWN0IHNldEVsZW1lbnRQcm9wZXJ0eShyZW5kZXJFbGVtZW50OiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nLCBwcm9wZXJ0eVZhbHVlOiBhbnkpO1xuXG4gIGFic3RyYWN0IHNldEVsZW1lbnRBdHRyaWJ1dGUocmVuZGVyRWxlbWVudDogYW55LCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZVZhbHVlOiBzdHJpbmcpO1xuXG4gIC8qKlxuICAgKiBVc2VkIG9ubHkgaW4gZGVidWcgbW9kZSB0byBzZXJpYWxpemUgcHJvcGVydHkgY2hhbmdlcyB0byBjb21tZW50IG5vZGVzLFxuICAgKiBzdWNoIGFzIDx0ZW1wbGF0ZT4gcGxhY2Vob2xkZXJzLlxuICAgKi9cbiAgYWJzdHJhY3Qgc2V0QmluZGluZ0RlYnVnSW5mbyhyZW5kZXJFbGVtZW50OiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nLCBwcm9wZXJ0eVZhbHVlOiBzdHJpbmcpO1xuXG4gIGFic3RyYWN0IHNldEVsZW1lbnREZWJ1Z0luZm8ocmVuZGVyRWxlbWVudDogYW55LCBpbmZvOiBSZW5kZXJEZWJ1Z0luZm8pO1xuXG4gIGFic3RyYWN0IHNldEVsZW1lbnRDbGFzcyhyZW5kZXJFbGVtZW50OiBhbnksIGNsYXNzTmFtZTogc3RyaW5nLCBpc0FkZDogYm9vbGVhbik7XG5cbiAgYWJzdHJhY3Qgc2V0RWxlbWVudFN0eWxlKHJlbmRlckVsZW1lbnQ6IGFueSwgc3R5bGVOYW1lOiBzdHJpbmcsIHN0eWxlVmFsdWU6IHN0cmluZyk7XG5cbiAgYWJzdHJhY3QgaW52b2tlRWxlbWVudE1ldGhvZChyZW5kZXJFbGVtZW50OiBhbnksIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogYW55W10pO1xuXG4gIGFic3RyYWN0IHNldFRleHQocmVuZGVyTm9kZTogYW55LCB0ZXh0OiBzdHJpbmcpO1xufVxuXG4vKipcbiAqIEluamVjdGFibGUgc2VydmljZSB0aGF0IHByb3ZpZGVzIGEgbG93LWxldmVsIGludGVyZmFjZSBmb3IgbW9kaWZ5aW5nIHRoZSBVSS5cbiAqXG4gKiBVc2UgdGhpcyBzZXJ2aWNlIHRvIGJ5cGFzcyBBbmd1bGFyJ3MgdGVtcGxhdGluZyBhbmQgbWFrZSBjdXN0b20gVUkgY2hhbmdlcyB0aGF0IGNhbid0IGJlXG4gKiBleHByZXNzZWQgZGVjbGFyYXRpdmVseS4gRm9yIGV4YW1wbGUgaWYgeW91IG5lZWQgdG8gc2V0IGEgcHJvcGVydHkgb3IgYW4gYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbiAqIG5vdCBzdGF0aWNhbGx5IGtub3duLCB1c2Uge0BsaW5rICNzZXRFbGVtZW50UHJvcGVydHl9IG9yIHtAbGluayAjc2V0RWxlbWVudEF0dHJpYnV0ZX1cbiAqIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBJZiB5b3UgYXJlIGltcGxlbWVudGluZyBhIGN1c3RvbSByZW5kZXJlciwgeW91IG11c3QgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlLlxuICpcbiAqIFRoZSBkZWZhdWx0IFJlbmRlcmVyIGltcGxlbWVudGF0aW9uIGlzIGBEb21SZW5kZXJlcmAuIEFsc28gYXZhaWxhYmxlIGlzIGBXZWJXb3JrZXJSZW5kZXJlcmAuXG4gKi9cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJvb3RSZW5kZXJlciBpbXBsZW1lbnRzIFBhcmVudFJlbmRlcmVyIHtcbiAgYWJzdHJhY3QgcmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudFR5cGU6IFJlbmRlckNvbXBvbmVudFR5cGUpOiBSZW5kZXJlcjtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar trace;\r\nvar events;\r\nfunction detectWTF() {\r\n var wtf = lang_1.global['wtf'];\r\n if (wtf) {\r\n trace = wtf['trace'];\r\n if (trace) {\r\n events = trace['events'];\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nexports.detectWTF = detectWTF;\r\nfunction createScope(signature, flags) {\r\n if (flags === void 0) { flags = null; }\r\n return events.createScope(signature, flags);\r\n}\r\nexports.createScope = createScope;\r\nfunction leave(scope, returnValue) {\r\n trace.leaveScope(scope, returnValue);\r\n return returnValue;\r\n}\r\nexports.leave = leave;\r\nfunction startTimeRange(rangeType, action) {\r\n return trace.beginTimeRange(rangeType, action);\r\n}\r\nexports.startTimeRange = startTimeRange;\r\nfunction endTimeRange(range) {\r\n trace.endTimeRange(range);\r\n}\r\nexports.endTimeRange = endTimeRange;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3RmX2ltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9wcm9maWxlL3d0Zl9pbXBsLnRzIl0sIm5hbWVzIjpbImRldGVjdFdURiIsImNyZWF0ZVNjb3BlIiwibGVhdmUiLCJzdGFydFRpbWVSYW5nZSIsImVuZFRpbWVSYW5nZSJdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXFCLDBCQUEwQixDQUFDLENBQUE7QUEwQmhELElBQUksS0FBWSxDQUFDO0FBQ2pCLElBQUksTUFBYyxDQUFDO0FBRW5CO0lBQ0VBLElBQUlBLEdBQUdBLEdBQVFBLGFBQU1BLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO0lBQzdCQSxFQUFFQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNSQSxLQUFLQSxHQUFHQSxHQUFHQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQTtRQUNyQkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDVkEsTUFBTUEsR0FBR0EsS0FBS0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0E7WUFDekJBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBO1FBQ2RBLENBQUNBO0lBQ0hBLENBQUNBO0lBQ0RBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO0FBQ2ZBLENBQUNBO0FBVmUsaUJBQVMsWUFVeEIsQ0FBQTtBQUVELHFCQUE0QixTQUFpQixFQUFFLEtBQWlCO0lBQWpCQyxxQkFBaUJBLEdBQWpCQSxZQUFpQkE7SUFDOURBLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBLFdBQVdBLENBQUNBLFNBQVNBLEVBQUVBLEtBQUtBLENBQUNBLENBQUNBO0FBQzlDQSxDQUFDQTtBQUZlLG1CQUFXLGNBRTFCLENBQUE7QUFFRCxlQUF5QixLQUFZLEVBQUUsV0FBZTtJQUNwREMsS0FBS0EsQ0FBQ0EsVUFBVUEsQ0FBQ0EsS0FBS0EsRUFBRUEsV0FBV0EsQ0FBQ0EsQ0FBQ0E7SUFDckNBLE1BQU1BLENBQUNBLFdBQVdBLENBQUNBO0FBQ3JCQSxDQUFDQTtBQUhlLGFBQUssUUFHcEIsQ0FBQTtBQUVELHdCQUErQixTQUFpQixFQUFFLE1BQWM7SUFDOURDLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBLGNBQWNBLENBQUNBLFNBQVNBLEVBQUVBLE1BQU1BLENBQUNBLENBQUNBO0FBQ2pEQSxDQUFDQTtBQUZlLHNCQUFjLGlCQUU3QixDQUFBO0FBRUQsc0JBQTZCLEtBQVk7SUFDdkNDLEtBQUtBLENBQUNBLFlBQVlBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO0FBQzVCQSxDQUFDQTtBQUZlLG9CQUFZLGVBRTNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dsb2JhbH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuLyoqXG4gKiBBIHNjb3BlIGZ1bmN0aW9uIGZvciB0aGUgV2ViIFRyYWNpbmcgRnJhbWV3b3JrIChXVEYpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFd0ZlNjb3BlRm4geyAoYXJnMD86IGFueSwgYXJnMT86IGFueSk6IGFueTsgfVxuXG5pbnRlcmZhY2UgV1RGIHtcbiAgdHJhY2U6IFRyYWNlO1xufVxuXG5pbnRlcmZhY2UgVHJhY2Uge1xuICBldmVudHM6IEV2ZW50cztcbiAgbGVhdmVTY29wZShzY29wZTogU2NvcGUsIHJldHVyblZhbHVlOiBhbnkpO1xuICBiZWdpblRpbWVSYW5nZShyYW5nZVR5cGU6IHN0cmluZywgYWN0aW9uOiBzdHJpbmcpOiBSYW5nZTtcbiAgZW5kVGltZVJhbmdlKHJhbmdlOiBSYW5nZSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFuZ2Uge31cblxuaW50ZXJmYWNlIEV2ZW50cyB7XG4gIGNyZWF0ZVNjb3BlKHNpZ25hdHVyZTogc3RyaW5nLCBmbGFnczogYW55KTogU2NvcGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGUgeyAoLi4uYXJncyk6IGFueTsgfVxuXG52YXIgdHJhY2U6IFRyYWNlO1xudmFyIGV2ZW50czogRXZlbnRzO1xuXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0V1RGKCk6IGJvb2xlYW4ge1xuICB2YXIgd3RmOiBXVEYgPSBnbG9iYWxbJ3d0ZiddO1xuICBpZiAod3RmKSB7XG4gICAgdHJhY2UgPSB3dGZbJ3RyYWNlJ107XG4gICAgaWYgKHRyYWNlKSB7XG4gICAgICBldmVudHMgPSB0cmFjZVsnZXZlbnRzJ107XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2NvcGUoc2lnbmF0dXJlOiBzdHJpbmcsIGZsYWdzOiBhbnkgPSBudWxsKTogYW55IHtcbiAgcmV0dXJuIGV2ZW50cy5jcmVhdGVTY29wZShzaWduYXR1cmUsIGZsYWdzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxlYXZlPFQ+KHNjb3BlOiBTY29wZSwgcmV0dXJuVmFsdWU/OiBUKTogVCB7XG4gIHRyYWNlLmxlYXZlU2NvcGUoc2NvcGUsIHJldHVyblZhbHVlKTtcbiAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRUaW1lUmFuZ2UocmFuZ2VUeXBlOiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nKTogUmFuZ2Uge1xuICByZXR1cm4gdHJhY2UuYmVnaW5UaW1lUmFuZ2UocmFuZ2VUeXBlLCBhY3Rpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5kVGltZVJhbmdlKHJhbmdlOiBSYW5nZSk6IHZvaWQge1xuICB0cmFjZS5lbmRUaW1lUmFuZ2UocmFuZ2UpO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var impl = require(\"./wtf_impl\");\r\n// Change exports to const once https://github.com/angular/ts2dart/issues/150\r\n/**\r\n * True if WTF is enabled.\r\n */\r\nexports.wtfEnabled = impl.detectWTF();\r\nfunction noopScope(arg0, arg1) {\r\n return null;\r\n}\r\n/**\r\n * Create trace scope.\r\n *\r\n * Scopes must be strictly nested and are analogous to stack frames, but\r\n * do not have to follow the stack frames. Instead it is recommended that they follow logical\r\n * nesting. You may want to use\r\n * [Event\r\n * Signatures](http://google.github.io/tracing-framework/instrumenting-code.html#custom-events)\r\n * as they are defined in WTF.\r\n *\r\n * Used to mark scope entry. The return value is used to leave the scope.\r\n *\r\n * var myScope = wtfCreateScope('MyClass#myMethod(ascii someVal)');\r\n *\r\n * someMethod() {\r\n * var s = myScope('Foo'); // 'Foo' gets stored in tracing UI\r\n * // DO SOME WORK HERE\r\n * return wtfLeave(s, 123); // Return value 123\r\n * }\r\n *\r\n * Note, adding try-finally block around the work to ensure that `wtfLeave` gets called can\r\n * negatively impact the performance of your application. For this reason we recommend that\r\n * you don't add them to ensure that `wtfLeave` gets called. In production `wtfLeave` is a noop and\r\n * so try-finally block has no value. When debugging perf issues, skipping `wtfLeave`, do to\r\n * exception, will produce incorrect trace, but presence of exception signifies logic error which\r\n * needs to be fixed before the app should be profiled. Add try-finally only when you expect that\r\n * an exception is expected during normal execution while profiling.\r\n *\r\n */\r\nexports.wtfCreateScope = exports.wtfEnabled ? impl.createScope : function (signature, flags) { return noopScope; };\r\n/**\r\n * Used to mark end of Scope.\r\n *\r\n * - `scope` to end.\r\n * - `returnValue` (optional) to be passed to the WTF.\r\n *\r\n * Returns the `returnValue for easy chaining.\r\n */\r\nexports.wtfLeave = exports.wtfEnabled ? impl.leave : function (s, r) { return r; };\r\n/**\r\n * Used to mark Async start. Async are similar to scope but they don't have to be strictly nested.\r\n * The return value is used in the call to [endAsync]. Async ranges only work if WTF has been\r\n * enabled.\r\n *\r\n * someMethod() {\r\n * var s = wtfStartTimeRange('HTTP:GET', 'some.url');\r\n * var future = new Future.delay(5).then((_) {\r\n * wtfEndTimeRange(s);\r\n * });\r\n * }\r\n */\r\nexports.wtfStartTimeRange = exports.wtfEnabled ? impl.startTimeRange : function (rangeType, action) { return null; };\r\n/**\r\n * Ends a async time range operation.\r\n * [range] is the return value from [wtfStartTimeRange] Async ranges only work if WTF has been\r\n * enabled.\r\n */\r\nexports.wtfEndTimeRange = exports.wtfEnabled ? impl.endTimeRange : function (r) {\r\n return null;\r\n};\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL3Byb2ZpbGUvcHJvZmlsZS50cyJdLCJuYW1lcyI6WyJub29wU2NvcGUiXSwibWFwcGluZ3MiOiJBQUVBLElBQVksSUFBSSxXQUFNLFlBQVksQ0FBQyxDQUFBO0FBRW5DLDZFQUE2RTtBQUU3RTs7R0FFRztBQUNRLGtCQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBRXpDLG1CQUFtQixJQUFVLEVBQUUsSUFBVTtJQUN2Q0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7QUFDZEEsQ0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQUNRLHNCQUFjLEdBQ3JCLGtCQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFDLFNBQWlCLEVBQUUsS0FBVyxJQUFLLE9BQUEsU0FBUyxFQUFULENBQVMsQ0FBQztBQUVsRjs7Ozs7OztHQU9HO0FBQ1EsZ0JBQVEsR0FDZixrQkFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBQyxDQUFNLEVBQUUsQ0FBTyxJQUFLLE9BQUEsQ0FBQyxFQUFELENBQUMsQ0FBQztBQUVyRDs7Ozs7Ozs7Ozs7R0FXRztBQUNRLHlCQUFpQixHQUN4QixrQkFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBQyxTQUFpQixFQUFFLE1BQWMsSUFBSyxPQUFBLElBQUksRUFBSixDQUFJLENBQUM7QUFFbkY7Ozs7R0FJRztBQUNRLHVCQUFlLEdBQXlCLGtCQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFDLENBQU07V0FDSCxJQUFJO0FBQUosQ0FBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtXdGZTY29wZUZufSBmcm9tICcuL3d0Zl9pbXBsJztcblxuaW1wb3J0ICogYXMgaW1wbCBmcm9tIFwiLi93dGZfaW1wbFwiO1xuXG4vLyBDaGFuZ2UgZXhwb3J0cyB0byBjb25zdCBvbmNlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL3RzMmRhcnQvaXNzdWVzLzE1MFxuXG4vKipcbiAqIFRydWUgaWYgV1RGIGlzIGVuYWJsZWQuXG4gKi9cbmV4cG9ydCB2YXIgd3RmRW5hYmxlZCA9IGltcGwuZGV0ZWN0V1RGKCk7XG5cbmZ1bmN0aW9uIG5vb3BTY29wZShhcmcwPzogYW55LCBhcmcxPzogYW55KTogYW55IHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ3JlYXRlIHRyYWNlIHNjb3BlLlxuICpcbiAqIFNjb3BlcyBtdXN0IGJlIHN0cmljdGx5IG5lc3RlZCBhbmQgYXJlIGFuYWxvZ291cyB0byBzdGFjayBmcmFtZXMsIGJ1dFxuICogZG8gbm90IGhhdmUgdG8gZm9sbG93IHRoZSBzdGFjayBmcmFtZXMuIEluc3RlYWQgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGV5IGZvbGxvdyBsb2dpY2FsXG4gKiBuZXN0aW5nLiBZb3UgbWF5IHdhbnQgdG8gdXNlXG4gKiBbRXZlbnRcbiAqIFNpZ25hdHVyZXNdKGh0dHA6Ly9nb29nbGUuZ2l0aHViLmlvL3RyYWNpbmctZnJhbWV3b3JrL2luc3RydW1lbnRpbmctY29kZS5odG1sI2N1c3RvbS1ldmVudHMpXG4gKiBhcyB0aGV5IGFyZSBkZWZpbmVkIGluIFdURi5cbiAqXG4gKiBVc2VkIHRvIG1hcmsgc2NvcGUgZW50cnkuIFRoZSByZXR1cm4gdmFsdWUgaXMgdXNlZCB0byBsZWF2ZSB0aGUgc2NvcGUuXG4gKlxuICogICAgIHZhciBteVNjb3BlID0gd3RmQ3JlYXRlU2NvcGUoJ015Q2xhc3MjbXlNZXRob2QoYXNjaWkgc29tZVZhbCknKTtcbiAqXG4gKiAgICAgc29tZU1ldGhvZCgpIHtcbiAqICAgICAgICB2YXIgcyA9IG15U2NvcGUoJ0ZvbycpOyAvLyAnRm9vJyBnZXRzIHN0b3JlZCBpbiB0cmFjaW5nIFVJXG4gKiAgICAgICAgLy8gRE8gU09NRSBXT1JLIEhFUkVcbiAqICAgICAgICByZXR1cm4gd3RmTGVhdmUocywgMTIzKTsgLy8gUmV0dXJuIHZhbHVlIDEyM1xuICogICAgIH1cbiAqXG4gKiBOb3RlLCBhZGRpbmcgdHJ5LWZpbmFsbHkgYmxvY2sgYXJvdW5kIHRoZSB3b3JrIHRvIGVuc3VyZSB0aGF0IGB3dGZMZWF2ZWAgZ2V0cyBjYWxsZWQgY2FuXG4gKiBuZWdhdGl2ZWx5IGltcGFjdCB0aGUgcGVyZm9ybWFuY2Ugb2YgeW91ciBhcHBsaWNhdGlvbi4gRm9yIHRoaXMgcmVhc29uIHdlIHJlY29tbWVuZCB0aGF0XG4gKiB5b3UgZG9uJ3QgYWRkIHRoZW0gdG8gZW5zdXJlIHRoYXQgYHd0ZkxlYXZlYCBnZXRzIGNhbGxlZC4gSW4gcHJvZHVjdGlvbiBgd3RmTGVhdmVgIGlzIGEgbm9vcCBhbmRcbiAqIHNvIHRyeS1maW5hbGx5IGJsb2NrIGhhcyBubyB2YWx1ZS4gV2hlbiBkZWJ1Z2dpbmcgcGVyZiBpc3N1ZXMsIHNraXBwaW5nIGB3dGZMZWF2ZWAsIGRvIHRvXG4gKiBleGNlcHRpb24sIHdpbGwgcHJvZHVjZSBpbmNvcnJlY3QgdHJhY2UsIGJ1dCBwcmVzZW5jZSBvZiBleGNlcHRpb24gc2lnbmlmaWVzIGxvZ2ljIGVycm9yIHdoaWNoXG4gKiBuZWVkcyB0byBiZSBmaXhlZCBiZWZvcmUgdGhlIGFwcCBzaG91bGQgYmUgcHJvZmlsZWQuIEFkZCB0cnktZmluYWxseSBvbmx5IHdoZW4geW91IGV4cGVjdCB0aGF0XG4gKiBhbiBleGNlcHRpb24gaXMgZXhwZWN0ZWQgZHVyaW5nIG5vcm1hbCBleGVjdXRpb24gd2hpbGUgcHJvZmlsaW5nLlxuICpcbiAqL1xuZXhwb3J0IHZhciB3dGZDcmVhdGVTY29wZTogKHNpZ25hdHVyZTogc3RyaW5nLCBmbGFncz86IGFueSkgPT4gaW1wbC5XdGZTY29wZUZuID1cbiAgICB3dGZFbmFibGVkID8gaW1wbC5jcmVhdGVTY29wZSA6IChzaWduYXR1cmU6IHN0cmluZywgZmxhZ3M/OiBhbnkpID0+IG5vb3BTY29wZTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hcmsgZW5kIG9mIFNjb3BlLlxuICpcbiAqIC0gYHNjb3BlYCB0byBlbmQuXG4gKiAtIGByZXR1cm5WYWx1ZWAgKG9wdGlvbmFsKSB0byBiZSBwYXNzZWQgdG8gdGhlIFdURi5cbiAqXG4gKiBSZXR1cm5zIHRoZSBgcmV0dXJuVmFsdWUgZm9yIGVhc3kgY2hhaW5pbmcuXG4gKi9cbmV4cG9ydCB2YXIgd3RmTGVhdmU6PFQ+KHNjb3BlOiBhbnksIHJldHVyblZhbHVlPzogVCkgPT4gVCA9XG4gICAgd3RmRW5hYmxlZCA/IGltcGwubGVhdmUgOiAoczogYW55LCByPzogYW55KSA9PiByO1xuXG4vKipcbiAqIFVzZWQgdG8gbWFyayBBc3luYyBzdGFydC4gQXN5bmMgYXJlIHNpbWlsYXIgdG8gc2NvcGUgYnV0IHRoZXkgZG9uJ3QgaGF2ZSB0byBiZSBzdHJpY3RseSBuZXN0ZWQuXG4gKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHVzZWQgaW4gdGhlIGNhbGwgdG8gW2VuZEFzeW5jXS4gQXN5bmMgcmFuZ2VzIG9ubHkgd29yayBpZiBXVEYgaGFzIGJlZW5cbiAqIGVuYWJsZWQuXG4gKlxuICogICAgIHNvbWVNZXRob2QoKSB7XG4gKiAgICAgICAgdmFyIHMgPSB3dGZTdGFydFRpbWVSYW5nZSgnSFRUUDpHRVQnLCAnc29tZS51cmwnKTtcbiAqICAgICAgICB2YXIgZnV0dXJlID0gbmV3IEZ1dHVyZS5kZWxheSg1KS50aGVuKChfKSB7XG4gKiAgICAgICAgICB3dGZFbmRUaW1lUmFuZ2Uocyk7XG4gKiAgICAgICAgfSk7XG4gKiAgICAgfVxuICovXG5leHBvcnQgdmFyIHd0ZlN0YXJ0VGltZVJhbmdlOiAocmFuZ2VUeXBlOiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nKSA9PiBhbnkgPVxuICAgIHd0ZkVuYWJsZWQgPyBpbXBsLnN0YXJ0VGltZVJhbmdlIDogKHJhbmdlVHlwZTogc3RyaW5nLCBhY3Rpb246IHN0cmluZykgPT4gbnVsbDtcblxuLyoqXG4gKiBFbmRzIGEgYXN5bmMgdGltZSByYW5nZSBvcGVyYXRpb24uXG4gKiBbcmFuZ2VdIGlzIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBbd3RmU3RhcnRUaW1lUmFuZ2VdIEFzeW5jIHJhbmdlcyBvbmx5IHdvcmsgaWYgV1RGIGhhcyBiZWVuXG4gKiBlbmFibGVkLlxuICovXG5leHBvcnQgdmFyIHd0ZkVuZFRpbWVSYW5nZTogKHJhbmdlOiBhbnkpID0+IHZvaWQgPSB3dGZFbmFibGVkID8gaW1wbC5lbmRUaW1lUmFuZ2UgOiAocjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar _nextClassId = 0;\r\nfunction extractAnnotation(annotation) {\r\n if (lang_1.isFunction(annotation) && annotation.hasOwnProperty('annotation')) {\r\n // it is a decorator, extract annotation\r\n annotation = annotation.annotation;\r\n }\r\n return annotation;\r\n}\r\nfunction applyParams(fnOrArray, key) {\r\n if (fnOrArray === Object || fnOrArray === String || fnOrArray === Function ||\r\n fnOrArray === Number || fnOrArray === Array) {\r\n throw new Error(\"Can not use native \" + lang_1.stringify(fnOrArray) + \" as constructor\");\r\n }\r\n if (lang_1.isFunction(fnOrArray)) {\r\n return fnOrArray;\r\n }\r\n else if (fnOrArray instanceof Array) {\r\n var annotations = fnOrArray;\r\n var fn = fnOrArray[fnOrArray.length - 1];\r\n if (!lang_1.isFunction(fn)) {\r\n throw new Error(\"Last position of Class method array must be Function in key \" + key + \" was '\" + lang_1.stringify(fn) + \"'\");\r\n }\r\n var annoLength = annotations.length - 1;\r\n if (annoLength != fn.length) {\r\n throw new Error(\"Number of annotations (\" + annoLength + \") does not match number of arguments (\" + fn.length + \") in the function: \" + lang_1.stringify(fn));\r\n }\r\n var paramsAnnotations = [];\r\n for (var i = 0, ii = annotations.length - 1; i < ii; i++) {\r\n var paramAnnotations = [];\r\n paramsAnnotations.push(paramAnnotations);\r\n var annotation = annotations[i];\r\n if (annotation instanceof Array) {\r\n for (var j = 0; j < annotation.length; j++) {\r\n paramAnnotations.push(extractAnnotation(annotation[j]));\r\n }\r\n }\r\n else if (lang_1.isFunction(annotation)) {\r\n paramAnnotations.push(extractAnnotation(annotation));\r\n }\r\n else {\r\n paramAnnotations.push(annotation);\r\n }\r\n }\r\n Reflect.defineMetadata('parameters', paramsAnnotations, fn);\r\n return fn;\r\n }\r\n else {\r\n throw new Error(\"Only Function or Array is supported in Class definition for key '\" + key + \"' is '\" + lang_1.stringify(fnOrArray) + \"'\");\r\n }\r\n}\r\n/**\r\n * Provides a way for expressing ES6 classes with parameter annotations in ES5.\r\n *\r\n * ## Basic Example\r\n *\r\n * ```\r\n * var Greeter = ng.Class({\r\n * constructor: function(name) {\r\n * this.name = name;\r\n * },\r\n *\r\n * greet: function() {\r\n * alert('Hello ' + this.name + '!');\r\n * }\r\n * });\r\n * ```\r\n *\r\n * is equivalent to ES6:\r\n *\r\n * ```\r\n * class Greeter {\r\n * constructor(name) {\r\n * this.name = name;\r\n * }\r\n *\r\n * greet() {\r\n * alert('Hello ' + this.name + '!');\r\n * }\r\n * }\r\n * ```\r\n *\r\n * or equivalent to ES5:\r\n *\r\n * ```\r\n * var Greeter = function (name) {\r\n * this.name = name;\r\n * }\r\n *\r\n * Greeter.prototype.greet = function () {\r\n * alert('Hello ' + this.name + '!');\r\n * }\r\n * ```\r\n *\r\n * ### Example with parameter annotations\r\n *\r\n * ```\r\n * var MyService = ng.Class({\r\n * constructor: [String, [new Query(), QueryList], function(name, queryList) {\r\n * ...\r\n * }]\r\n * });\r\n * ```\r\n *\r\n * is equivalent to ES6:\r\n *\r\n * ```\r\n * class MyService {\r\n * constructor(name: string, @Query() queryList: QueryList) {\r\n * ...\r\n * }\r\n * }\r\n * ```\r\n *\r\n * ### Example with inheritance\r\n *\r\n * ```\r\n * var Shape = ng.Class({\r\n * constructor: (color) {\r\n * this.color = color;\r\n * }\r\n * });\r\n *\r\n * var Square = ng.Class({\r\n * extends: Shape,\r\n * constructor: function(color, size) {\r\n * Shape.call(this, color);\r\n * this.size = size;\r\n * }\r\n * });\r\n * ```\r\n */\r\nfunction Class(clsDef) {\r\n var constructor = applyParams(clsDef.hasOwnProperty('constructor') ? clsDef.constructor : undefined, 'constructor');\r\n var proto = constructor.prototype;\r\n if (clsDef.hasOwnProperty('extends')) {\r\n if (lang_1.isFunction(clsDef.extends)) {\r\n constructor.prototype = proto =\r\n Object.create(clsDef.extends.prototype);\r\n }\r\n else {\r\n throw new Error(\"Class definition 'extends' property must be a constructor function was: \" + lang_1.stringify(clsDef.extends));\r\n }\r\n }\r\n for (var key in clsDef) {\r\n if (key != 'extends' && key != 'prototype' && clsDef.hasOwnProperty(key)) {\r\n proto[key] = applyParams(clsDef[key], key);\r\n }\r\n }\r\n if (this && this.annotations instanceof Array) {\r\n Reflect.defineMetadata('annotations', this.annotations, constructor);\r\n }\r\n if (!constructor['name']) {\r\n constructor['overriddenName'] = \"class\" + _nextClassId++;\r\n }\r\n return constructor;\r\n}\r\nexports.Class = Class;\r\nvar Reflect = lang_1.global.Reflect;\r\n// Throw statement at top-level is disallowed by closure compiler in ES6 input.\r\n// Wrap in an IIFE as a work-around.\r\n(function checkReflect() {\r\n if (!(Reflect && Reflect.getMetadata)) {\r\n throw 'reflect-metadata shim is required when using class decorators';\r\n }\r\n})();\r\nfunction makeDecorator(annotationCls, chainFn) {\r\n if (chainFn === void 0) { chainFn = null; }\r\n function DecoratorFactory(objOrType) {\r\n var annotationInstance = new annotationCls(objOrType);\r\n if (this instanceof annotationCls) {\r\n return annotationInstance;\r\n }\r\n else {\r\n var chainAnnotation = lang_1.isFunction(this) && this.annotations instanceof Array ? this.annotations : [];\r\n chainAnnotation.push(annotationInstance);\r\n var TypeDecorator = function TypeDecorator(cls) {\r\n var annotations = Reflect.getOwnMetadata('annotations', cls);\r\n annotations = annotations || [];\r\n annotations.push(annotationInstance);\r\n Reflect.defineMetadata('annotations', annotations, cls);\r\n return cls;\r\n };\r\n TypeDecorator.annotations = chainAnnotation;\r\n TypeDecorator.Class = Class;\r\n if (chainFn)\r\n chainFn(TypeDecorator);\r\n return TypeDecorator;\r\n }\r\n }\r\n DecoratorFactory.prototype = Object.create(annotationCls.prototype);\r\n return DecoratorFactory;\r\n}\r\nexports.makeDecorator = makeDecorator;\r\nfunction makeParamDecorator(annotationCls) {\r\n function ParamDecoratorFactory() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i - 0] = arguments[_i];\r\n }\r\n var annotationInstance = Object.create(annotationCls.prototype);\r\n annotationCls.apply(annotationInstance, args);\r\n if (this instanceof annotationCls) {\r\n return annotationInstance;\r\n }\r\n else {\r\n ParamDecorator.annotation = annotationInstance;\r\n return ParamDecorator;\r\n }\r\n function ParamDecorator(cls, unusedKey, index) {\r\n var parameters = Reflect.getMetadata('parameters', cls);\r\n parameters = parameters || [];\r\n // there might be gaps if some in between parameters do not have annotations.\r\n // we pad with nulls.\r\n while (parameters.length <= index) {\r\n parameters.push(null);\r\n }\r\n parameters[index] = parameters[index] || [];\r\n var annotationsForParam = parameters[index];\r\n annotationsForParam.push(annotationInstance);\r\n Reflect.defineMetadata('parameters', parameters, cls);\r\n return cls;\r\n }\r\n }\r\n ParamDecoratorFactory.prototype = Object.create(annotationCls.prototype);\r\n return ParamDecoratorFactory;\r\n}\r\nexports.makeParamDecorator = makeParamDecorator;\r\nfunction makePropDecorator(decoratorCls) {\r\n function PropDecoratorFactory() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i - 0] = arguments[_i];\r\n }\r\n var decoratorInstance = Object.create(decoratorCls.prototype);\r\n decoratorCls.apply(decoratorInstance, args);\r\n if (this instanceof decoratorCls) {\r\n return decoratorInstance;\r\n }\r\n else {\r\n return function PropDecorator(target, name) {\r\n var meta = Reflect.getOwnMetadata('propMetadata', target.constructor);\r\n meta = meta || {};\r\n meta[name] = meta[name] || [];\r\n meta[name].unshift(decoratorInstance);\r\n Reflect.defineMetadata('propMetadata', meta, target.constructor);\r\n };\r\n }\r\n }\r\n PropDecoratorFactory.prototype = Object.create(decoratorCls.prototype);\r\n return PropDecoratorFactory;\r\n}\r\nexports.makePropDecorator = makePropDecorator;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL3V0aWwvZGVjb3JhdG9ycy50cyJdLCJuYW1lcyI6WyJleHRyYWN0QW5ub3RhdGlvbiIsImFwcGx5UGFyYW1zIiwiQ2xhc3MiLCJjaGVja1JlZmxlY3QiLCJtYWtlRGVjb3JhdG9yIiwibWFrZURlY29yYXRvci5EZWNvcmF0b3JGYWN0b3J5IiwibWFrZURlY29yYXRvci5EZWNvcmF0b3JGYWN0b3J5LlR5cGVEZWNvcmF0b3IiLCJtYWtlUGFyYW1EZWNvcmF0b3IiLCJtYWtlUGFyYW1EZWNvcmF0b3IuUGFyYW1EZWNvcmF0b3JGYWN0b3J5IiwibWFrZVBhcmFtRGVjb3JhdG9yLlBhcmFtRGVjb3JhdG9yRmFjdG9yeS5QYXJhbURlY29yYXRvciIsIm1ha2VQcm9wRGVjb3JhdG9yIiwibWFrZVByb3BEZWNvcmF0b3IuUHJvcERlY29yYXRvckZhY3RvcnkiLCJtYWtlUHJvcERlY29yYXRvci5Qcm9wRGVjb3JhdG9yRmFjdG9yeS5Qcm9wRGVjb3JhdG9yIl0sIm1hcHBpbmdzIjoiQUFBQSxxQkFBZ0UsMEJBQTBCLENBQUMsQ0FBQTtBQUUzRixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUE0RXJCLDJCQUEyQixVQUFlO0lBQ3hDQSxFQUFFQSxDQUFDQSxDQUFDQSxpQkFBVUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsSUFBSUEsVUFBVUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsWUFBWUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDdEVBLHdDQUF3Q0E7UUFDeENBLFVBQVVBLEdBQUdBLFVBQVVBLENBQUNBLFVBQVVBLENBQUNBO0lBQ3JDQSxDQUFDQTtJQUNEQSxNQUFNQSxDQUFDQSxVQUFVQSxDQUFDQTtBQUNwQkEsQ0FBQ0E7QUFFRCxxQkFBcUIsU0FBNkIsRUFBRSxHQUFXO0lBQzdEQyxFQUFFQSxDQUFDQSxDQUFDQSxTQUFTQSxLQUFLQSxNQUFNQSxJQUFJQSxTQUFT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cGUsIGlzRnVuY3Rpb24sIHN0cmluZ2lmeX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxudmFyIF9uZXh0Q2xhc3NJZCA9IDA7XG5cbi8qKlxuICogRGVjbGFyZXMgdGhlIGludGVyZmFjZSB0byBiZSB1c2VkIHdpdGgge0BsaW5rIENsYXNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbGFzc0RlZmluaXRpb24ge1xuICAvKipcbiAgICogT3B0aW9uYWwgYXJndW1lbnQgZm9yIHNwZWNpZnlpbmcgdGhlIHN1cGVyY2xhc3MuXG4gICAqL1xuICBleHRlbmRzPzogVHlwZTtcblxuICAvKipcbiAgICogUmVxdWlyZWQgY29uc3RydWN0b3IgZnVuY3Rpb24gZm9yIGEgY2xhc3MuXG4gICAqXG4gICAqIFRoZSBmdW5jdGlvbiBtYXkgYmUgb3B0aW9uYWxseSB3cmFwcGVkIGluIGFuIGBBcnJheWAsIGluIHdoaWNoIGNhc2UgYWRkaXRpb25hbCBwYXJhbWV0ZXJcbiAgICogYW5ub3RhdGlvbnMgbWF5IGJlIHNwZWNpZmllZC5cbiAgICogVGhlIG51bWJlciBvZiBhcmd1bWVudHMgYW5kIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVyIGFubm90YXRpb25zIG11c3QgbWF0Y2guXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgQ2xhc3N9IGZvciBleGFtcGxlIG9mIHVzYWdlLlxuICAgKi9cbiAgY29uc3RydWN0b3I6IEZ1bmN0aW9uIHwgYW55W107XG5cbiAgLyoqXG4gICAqIE90aGVyIG1ldGhvZHMgb24gdGhlIGNsYXNzLiBOb3RlIHRoYXQgdmFsdWVzIHNob3VsZCBoYXZlIHR5cGUgJ0Z1bmN0aW9uJyBidXQgVFMgcmVxdWlyZXNcbiAgICogYWxsIHByb3BlcnRpZXMgdG8gaGF2ZSBhIG5hcnJvd2VyIHR5cGUgdGhhbiB0aGUgaW5kZXggc2lnbmF0dXJlLlxuICAgKi9cbiAgW3g6IHN0cmluZ106IFR5cGUgfCBGdW5jdGlvbiB8IGFueVtdO1xufVxuXG4vKipcbiAqIEFuIGludGVyZmFjZSBpbXBsZW1lbnRlZCBieSBhbGwgQW5ndWxhciB0eXBlIGRlY29yYXRvcnMsIHdoaWNoIGFsbG93cyB0aGVtIHRvIGJlIHVzZWQgYXMgRVM3XG4gKiBkZWNvcmF0b3JzIGFzIHdlbGwgYXNcbiAqIEFuZ3VsYXIgRFNMIHN5bnRheC5cbiAqXG4gKiBEU0wgc3ludGF4OlxuICpcbiAqIGBgYFxuICogdmFyIE15Q2xhc3MgPSBuZ1xuICogICAuQ29tcG9uZW50KHsuLi59KVxuICogICAuVmlldyh7Li4ufSlcbiAqICAgLkNsYXNzKHsuLi59KTtcbiAqIGBgYFxuICpcbiAqIEVTNyBzeW50YXg6XG4gKlxuICogYGBgXG4gKiBAbmcuQ29tcG9uZW50KHsuLi59KVxuICogQG5nLlZpZXcoey4uLn0pXG4gKiBjbGFzcyBNeUNsYXNzIHsuLi59XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlRGVjb3JhdG9yIHtcbiAgLyoqXG4gICAqIEludm9rZSBhcyBFUzcgZGVjb3JhdG9yLlxuICAgKi9cbiAgPFQgZXh0ZW5kcyBUeXBlPih0eXBlOiBUKTogVDtcblxuICAvLyBNYWtlIFR5cGVEZWNvcmF0b3IgYXNzaWduYWJsZSB0byBidWlsdC1pbiBQYXJhbWV0ZXJEZWNvcmF0b3IgdHlwZS5cbiAgLy8gUGFyYW1ldGVyRGVjb3JhdG9yIGlzIGRlY2xhcmVkIGluIGxpYi5kLnRzIGFzIGEgYGRlY2xhcmUgdHlwZWBcbiAgLy8gc28gd2UgY2Fubm90IGRlY2xhcmUgdGhpcyBpbnRlcmZhY2UgYXMgYSBzdWJ0eXBlLlxuICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMzM3OSNpc3N1ZWNvbW1lbnQtMTI2MTY5NDE3XG4gICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk/OiBzdHJpbmcgfCBzeW1ib2wsIHBhcmFtZXRlckluZGV4PzogbnVtYmVyKTogdm9pZDtcblxuICAvKipcbiAgICogU3RvcmFnZSBmb3IgdGhlIGFjY3VtdWxhdGVkIGFubm90YXRpb25zIHNvIGZhciB1c2VkIGJ5IHRoZSBEU0wgc3ludGF4LlxuICAgKlxuICAgKiBVc2VkIGJ5IHtAbGluayBDbGFzc30gdG8gYW5ub3RhdGUgdGhlIGdlbmVyYXRlZCBjbGFzcy5cbiAgICovXG4gIGFubm90YXRpb25zOiBhbnlbXTtcblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBjbGFzcyBmcm9tIHRoZSBkZWZpbml0aW9uIGFuZCBhbm5vdGF0ZSBpdCB3aXRoIHtAbGluayBUeXBlRGVjb3JhdG9yI2Fubm90YXRpb25zfS5cbiAgICovXG4gIENsYXNzKG9iajogQ2xhc3NEZWZpbml0aW9uKTogQ29uY3JldGVUeXBlO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0QW5ub3RhdGlvbihhbm5vdGF0aW9uOiBhbnkpOiBhbnkge1xuICBpZiAoaXNGdW5jdGlvbihhbm5vdGF0aW9uKSAmJiBhbm5vdGF0aW9uLmhhc093blByb3BlcnR5KCdhbm5vdGF0aW9uJykpIHtcbiAgICAvLyBpdCBpcyBhIGRlY29yYXRvciwgZXh0cmFjdCBhbm5vdGF0aW9uXG4gICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb24uYW5ub3RhdGlvbjtcbiAgfVxuICByZXR1cm4gYW5ub3RhdGlvbjtcbn1cblxuZnVuY3Rpb24gYXBwbHlQYXJhbXMoZm5PckFycmF5OiAoRnVuY3Rpb24gfCBhbnlbXSksIGtleTogc3RyaW5nKTogRnVuY3Rpb24ge1xuICBpZiAoZm5PckFycmF5ID09PSBPYmplY3QgfHwgZm5PckFycmF5ID09PSBTdHJpbmcgfHwgZm5PckFycmF5ID09PSBGdW5jdGlvbiB8fFxuICAgICAgZm5PckFycmF5ID09PSBOdW1iZXIgfHwgZm5PckFycmF5ID09PSBBcnJheSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2FuIG5vdCB1c2UgbmF0aXZlICR7c3RyaW5naWZ5KGZuT3JBcnJheSl9IGFzIGNvbnN0cnVjdG9yYCk7XG4gIH1cbiAgaWYgKGlzRnVuY3Rpb24oZm5PckFycmF5KSkge1xuICAgIHJldHVybiA8RnVuY3Rpb24+Zm5PckFycmF5O1xuICB9IGVsc2UgaWYgKGZuT3JBcnJheSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgdmFyIGFubm90YXRpb25zOiBhbnlbXSA9IGZuT3JBcnJheTtcbiAgICB2YXIgZm46IEZ1bmN0aW9uID0gZm5PckFycmF5W2ZuT3JBcnJheS5sZW5ndGggLSAxXTtcbiAgICBpZiAoIWlzRnVuY3Rpb24oZm4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYExhc3QgcG9zaXRpb24gb2YgQ2xhc3MgbWV0aG9kIGFycmF5IG11c3QgYmUgRnVuY3Rpb24gaW4ga2V5ICR7a2V5fSB3YXMgJyR7c3RyaW5naWZ5KGZuKX0nYCk7XG4gICAgfVxuICAgIHZhciBhbm5vTGVuZ3RoID0gYW5ub3RhdGlvbnMubGVuZ3RoIC0gMTtcbiAgICBpZiAoYW5ub0xlbmd0aCAhPSBmbi5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgTnVtYmVyIG9mIGFubm90YXRpb25zICgke2Fubm9MZW5ndGh9KSBkb2VzIG5vdCBtYXRjaCBudW1iZXIgb2YgYXJndW1lbnRzICgke2ZuLmxlbmd0aH0pIGluIHRoZSBmdW5jdGlvbjogJHtzdHJpbmdpZnkoZm4pfWApO1xuICAgIH1cbiAgICB2YXIgcGFyYW1zQW5ub3RhdGlvbnM6IGFueVtdW10gPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBhbm5vdGF0aW9ucy5sZW5ndGggLSAxOyBpIDwgaWk7IGkrKykge1xuICAgICAgdmFyIHBhcmFtQW5ub3RhdGlvbnM6IGFueVtdID0gW107XG4gICAgICBwYXJhbXNBbm5vdGF0aW9ucy5wdXNoKHBhcmFtQW5ub3RhdGlvbnMpO1xuICAgICAgdmFyIGFubm90YXRpb24gPSBhbm5vdGF0aW9uc1tpXTtcbiAgICAgIGlmIChhbm5vdGF0aW9uIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhbm5vdGF0aW9uLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgcGFyYW1Bbm5vdGF0aW9ucy5wdXNoKGV4dHJhY3RBbm5vdGF0aW9uKGFubm90YXRpb25bal0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKGFubm90YXRpb24pKSB7XG4gICAgICAgIHBhcmFtQW5ub3RhdGlvbnMucHVzaChleHRyYWN0QW5ub3RhdGlvbihhbm5vdGF0aW9uKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJhbUFubm90YXRpb25zLnB1c2goYW5ub3RhdGlvbik7XG4gICAgICB9XG4gICAgfVxuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ3BhcmFtZXRlcnMnLCBwYXJhbXNBbm5vdGF0aW9ucywgZm4pO1xuICAgIHJldHVybiBmbjtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBPbmx5IEZ1bmN0aW9uIG9yIEFycmF5IGlzIHN1cHBvcnRlZCBpbiBDbGFzcyBkZWZpbml0aW9uIGZvciBrZXkgJyR7a2V5fScgaXMgJyR7c3RyaW5naWZ5KGZuT3JBcnJheSl9J2ApO1xuICB9XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYSB3YXkgZm9yIGV4cHJlc3NpbmcgRVM2IGNsYXNzZXMgd2l0aCBwYXJhbWV0ZXIgYW5ub3RhdGlvbnMgaW4gRVM1LlxuICpcbiAqICMjIEJhc2ljIEV4YW1wbGVcbiAqXG4gKiBgYGBcbiAqIHZhciBHcmVldGVyID0gbmcuQ2xhc3Moe1xuICogICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24obmFtZSkge1xuICogICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gKiAgIH0sXG4gKlxuICogICBncmVldDogZnVuY3Rpb24oKSB7XG4gKiAgICAgYWxlcnQoJ0hlbGxvICcgKyB0aGlzLm5hbWUgKyAnIScpO1xuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIGlzIGVxdWl2YWxlbnQgdG8gRVM2OlxuICpcbiAqIGBgYFxuICogY2xhc3MgR3JlZXRlciB7XG4gKiAgIGNvbnN0cnVjdG9yKG5hbWUpIHtcbiAqICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICogICB9XG4gKlxuICogICBncmVldCgpIHtcbiAqICAgICBhbGVydCgnSGVsbG8gJyArIHRoaXMubmFtZSArICchJyk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIG9yIGVxdWl2YWxlbnQgdG8gRVM1OlxuICpcbiAqIGBgYFxuICogdmFyIEdyZWV0ZXIgPSBmdW5jdGlvbiAobmFtZSkge1xuICogICB0aGlzLm5hbWUgPSBuYW1lO1xuICogfVxuICpcbiAqIEdyZWV0ZXIucHJvdG90eXBlLmdyZWV0ID0gZnVuY3Rpb24gKCkge1xuICogICBhbGVydCgnSGVsbG8gJyArIHRoaXMubmFtZSArICchJyk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgRXhhbXBsZSB3aXRoIHBhcmFtZXRlciBhbm5vdGF0aW9uc1xuICpcbiAqIGBgYFxuICogdmFyIE15U2VydmljZSA9IG5nLkNsYXNzKHtcbiAqICAgY29uc3RydWN0b3I6IFtTdHJpbmcsIFtuZXcgUXVlcnkoKSwgUXVlcnlMaXN0XSwgZnVuY3Rpb24obmFtZSwgcXVlcnlMaXN0KSB7XG4gKiAgICAgLi4uXG4gKiAgIH1dXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIGlzIGVxdWl2YWxlbnQgdG8gRVM2OlxuICpcbiAqIGBgYFxuICogY2xhc3MgTXlTZXJ2aWNlIHtcbiAqICAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBAUXVlcnkoKSBxdWVyeUxpc3Q6IFF1ZXJ5TGlzdCkge1xuICogICAgIC4uLlxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgRXhhbXBsZSB3aXRoIGluaGVyaXRhbmNlXG4gKlxuICogYGBgXG4gKiB2YXIgU2hhcGUgPSBuZy5DbGFzcyh7XG4gKiAgIGNvbnN0cnVjdG9yOiAoY29sb3IpIHtcbiAqICAgICB0aGlzLmNvbG9yID0gY29sb3I7XG4gKiAgIH1cbiAqIH0pO1xuICpcbiAqIHZhciBTcXVhcmUgPSBuZy5DbGFzcyh7XG4gKiAgIGV4dGVuZHM6IFNoYXBlLFxuICogICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24oY29sb3IsIHNpemUpIHtcbiAqICAgICBTaGFwZS5jYWxsKHRoaXMsIGNvbG9yKTtcbiAqICAgICB0aGlzLnNpemUgPSBzaXplO1xuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gQ2xhc3MoY2xzRGVmOiBDbGFzc0RlZmluaXRpb24pOiBDb25jcmV0ZVR5cGUge1xuICB2YXIgY29uc3RydWN0b3IgPSBhcHBseVBhcmFtcyhcbiAgICAgIGNsc0RlZi5oYXNPd25Qcm9wZXJ0eSgnY29uc3RydWN0b3InKSA/IGNsc0RlZi5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZCwgJ2NvbnN0cnVjdG9yJyk7XG4gIHZhciBwcm90byA9IGNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgaWYgKGNsc0RlZi5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kcycpKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oY2xzRGVmLmV4dGVuZHMpKSB7XG4gICAgICAoPEZ1bmN0aW9uPmNvbnN0cnVjdG9yKS5wcm90b3R5cGUgPSBwcm90byA9XG4gICAgICAgICAgT2JqZWN0LmNyZWF0ZSgoPEZ1bmN0aW9uPmNsc0RlZi5leHRlbmRzKS5wcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENsYXNzIGRlZmluaXRpb24gJ2V4dGVuZHMnIHByb3BlcnR5IG11c3QgYmUgYSBjb25zdHJ1Y3RvciBmdW5jdGlvbiB3YXM6ICR7c3RyaW5naWZ5KGNsc0RlZi5leHRlbmRzKX1gKTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIga2V5IGluIGNsc0RlZikge1xuICAgIGlmIChrZXkgIT0gJ2V4dGVuZHMnICYmIGtleSAhPSAncHJvdG90eXBlJyAmJiBjbHNEZWYuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgcHJvdG9ba2V5XSA9IGFwcGx5UGFyYW1zKGNsc0RlZltrZXldLCBrZXkpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0aGlzICYmIHRoaXMuYW5ub3RhdGlvbnMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2Fubm90YXRpb25zJywgdGhpcy5hbm5vdGF0aW9ucywgY29uc3RydWN0b3IpO1xuICB9XG5cbiAgaWYgKCFjb25zdHJ1Y3RvclsnbmFtZSddKSB7XG4gICAgY29uc3RydWN0b3JbJ292ZXJyaWRkZW5OYW1lJ10gPSBgY2xhc3Mke19uZXh0Q2xhc3NJZCsrfWA7XG4gIH1cblxuICByZXR1cm4gPENvbmNyZXRlVHlwZT5jb25zdHJ1Y3Rvcjtcbn1cblxudmFyIFJlZmxlY3QgPSBnbG9iYWwuUmVmbGVjdDtcbi8vIFRocm93IHN0YXRlbWVudCBhdCB0b3AtbGV2ZWwgaXMgZGlzYWxsb3dlZCBieSBjbG9zdXJlIGNvbXBpbGVyIGluIEVTNiBpbnB1dC5cbi8vIFdyYXAgaW4gYW4gSUlGRSBhcyBhIHdvcmstYXJvdW5kLlxuKGZ1bmN0aW9uIGNoZWNrUmVmbGVjdCgpIHtcbiAgaWYgKCEoUmVmbGVjdCAmJiBSZWZsZWN0LmdldE1ldGFkYXRhKSkge1xuICAgIHRocm93ICdyZWZsZWN0LW1ldGFkYXRhIHNoaW0gaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBjbGFzcyBkZWNvcmF0b3JzJztcbiAgfVxufSkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VEZWNvcmF0b3IoXG4gICAgYW5ub3RhdGlvbkNscywgY2hhaW5GbjogKGZuOiBGdW5jdGlvbikgPT4gdm9pZCA9IG51bGwpOiAoLi4uYXJnczogYW55W10pID0+IChjbHM6IGFueSkgPT4gYW55IHtcbiAgZnVuY3Rpb24gRGVjb3JhdG9yRmFjdG9yeShvYmpPclR5cGUpOiAoY2xzOiBhbnkpID0+IGFueSB7XG4gICAgdmFyIGFubm90YXRpb25JbnN0YW5jZSA9IG5ldyAoPGFueT5hbm5vdGF0aW9uQ2xzKShvYmpPclR5cGUpO1xuICAgIGlmICh0aGlzIGluc3RhbmNlb2YgYW5ub3RhdGlvbkNscykge1xuICAgICAgcmV0dXJuIGFubm90YXRpb25JbnN0YW5jZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNoYWluQW5ub3RhdGlvbiA9XG4gICAgICAgICAgaXNGdW5jdGlvbih0aGlzKSAmJiB0aGlzLmFubm90YXRpb25zIGluc3RhbmNlb2YgQXJyYXkgPyB0aGlzLmFubm90YXRpb25zIDogW107XG4gICAgICBjaGFpbkFubm90YXRpb24ucHVzaChhbm5vdGF0aW9uSW5zdGFuY2UpO1xuICAgICAgdmFyIFR5cGVEZWNvcmF0b3I6IFR5cGVEZWNvcmF0b3IgPSA8VHlwZURlY29yYXRvcj5mdW5jdGlvbiBUeXBlRGVjb3JhdG9yKGNscykge1xuICAgICAgICB2YXIgYW5ub3RhdGlvbnMgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKCdhbm5vdGF0aW9ucycsIGNscyk7XG4gICAgICAgIGFubm90YXRpb25zID0gYW5ub3RhdGlvbnMgfHwgW107XG4gICAgICAgIGFubm90YXRpb25zLnB1c2goYW5ub3RhdGlvbkluc3RhbmNlKTtcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnYW5ub3RhdGlvbnMnLCBhbm5vdGF0aW9ucywgY2xzKTtcbiAgICAgICAgcmV0dXJuIGNscztcbiAgICAgIH07XG4gICAgICBUeXBlRGVjb3JhdG9yLmFubm90YXRpb25zID0gY2hhaW5Bbm5vdGF0aW9uO1xuICAgICAgVHlwZURlY29yYXRvci5DbGFzcyA9IENsYXNzO1xuICAgICAgaWYgKGNoYWluRm4pIGNoYWluRm4oVHlwZURlY29yYXRvcik7XG4gICAgICByZXR1cm4gVHlwZURlY29yYXRvcjtcbiAgICB9XG4gIH1cbiAgRGVjb3JhdG9yRmFjdG9yeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGFubm90YXRpb25DbHMucHJvdG90eXBlKTtcbiAgcmV0dXJuIERlY29yYXRvckZhY3Rvcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlUGFyYW1EZWNvcmF0b3IoYW5ub3RhdGlvbkNscyk6IGFueSB7XG4gIGZ1bmN0aW9uIFBhcmFtRGVjb3JhdG9yRmFjdG9yeSguLi5hcmdzKTogYW55IHtcbiAgICB2YXIgYW5ub3RhdGlvbkluc3RhbmNlID0gT2JqZWN0LmNyZWF0ZShhbm5vdGF0aW9uQ2xzLnByb3RvdHlwZSk7XG4gICAgYW5ub3RhdGlvbkNscy5hcHBseShhbm5vdGF0aW9uSW5zdGFuY2UsIGFyZ3MpO1xuICAgIGlmICh0aGlzIGluc3RhbmNlb2YgYW5ub3RhdGlvbkNscykge1xuICAgICAgcmV0dXJuIGFubm90YXRpb25JbnN0YW5jZTtcbiAgICB9IGVsc2Uge1xuICAgICAgKDxhbnk+UGFyYW1EZWNvcmF0b3IpLmFubm90YXRpb24gPSBhbm5vdGF0aW9uSW5zdGFuY2U7XG4gICAgICByZXR1cm4gUGFyYW1EZWNvcmF0b3I7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBQYXJhbURlY29yYXRvcihjbHMsIHVudXNlZEtleSwgaW5kZXgpOiBhbnkge1xuICAgICAgdmFyIHBhcmFtZXRlcnM6IGFueVtdW10gPSBSZWZsZWN0LmdldE1ldGFkYXRhKCdwYXJhbWV0ZXJzJywgY2xzKTtcbiAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzIHx8IFtdO1xuXG4gICAgICAvLyB0aGVyZSBtaWdodCBiZSBnYXBzIGlmIHNvbWUgaW4gYmV0d2VlbiBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZlIGFubm90YXRpb25zLlxuICAgICAgLy8gd2UgcGFkIHdpdGggbnVsbHMuXG4gICAgICB3aGlsZSAocGFyYW1ldGVycy5sZW5ndGggPD0gaW5kZXgpIHtcbiAgICAgICAgcGFyYW1ldGVycy5wdXNoKG51bGwpO1xuICAgICAgfVxuXG4gICAgICBwYXJhbWV0ZXJzW2luZGV4XSA9IHBhcmFtZXRlcnNbaW5kZXhdIHx8IFtdO1xuICAgICAgdmFyIGFubm90YXRpb25zRm9yUGFyYW06IGFueVtdID0gcGFyYW1ldGVyc1tpbmRleF07XG4gICAgICBhbm5vdGF0aW9uc0ZvclBhcmFtLnB1c2goYW5ub3RhdGlvbkluc3RhbmNlKTtcblxuICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgncGFyYW1ldGVycycsIHBhcmFtZXRlcnMsIGNscyk7XG4gICAgICByZXR1cm4gY2xzO1xuICAgIH1cbiAgfVxuICBQYXJhbURlY29yYXRvckZhY3RvcnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShhbm5vdGF0aW9uQ2xzLnByb3RvdHlwZSk7XG4gIHJldHVybiBQYXJhbURlY29yYXRvckZhY3Rvcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlUHJvcERlY29yYXRvcihkZWNvcmF0b3JDbHMpOiBhbnkge1xuICBmdW5jdGlvbiBQcm9wRGVjb3JhdG9yRmFjdG9yeSguLi5hcmdzKTogYW55IHtcbiAgICB2YXIgZGVjb3JhdG9ySW5zdGFuY2UgPSBPYmplY3QuY3JlYXRlKGRlY29yYXRvckNscy5wcm90b3R5cGUpO1xuICAgIGRlY29yYXRvckNscy5hcHBseShkZWNvcmF0b3JJbnN0YW5jZSwgYXJncyk7XG5cbiAgICBpZiAodGhpcyBpbnN0YW5jZW9mIGRlY29yYXRvckNscykge1xuICAgICAgcmV0dXJuIGRlY29yYXRvckluc3RhbmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gUHJvcERlY29yYXRvcih0YXJnZXQ6IGFueSwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHZhciBtZXRhID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YSgncHJvcE1ldGFkYXRhJywgdGFyZ2V0LmNvbnN0cnVjdG9yKTtcbiAgICAgICAgbWV0YSA9IG1ldGEgfHwge307XG4gICAgICAgIG1ldGFbbmFtZV0gPSBtZXRhW25hbWVdIHx8IFtdO1xuICAgICAgICBtZXRhW25hbWVdLnVuc2hpZnQoZGVjb3JhdG9ySW5zdGFuY2UpO1xuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdwcm9wTWV0YWRhdGEnLCBtZXRhLCB0YXJnZXQuY29uc3RydWN0b3IpO1xuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgUHJvcERlY29yYXRvckZhY3RvcnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShkZWNvcmF0b3JDbHMucHJvdG90eXBlKTtcbiAgcmV0dXJuIFByb3BEZWNvcmF0b3JGYWN0b3J5O1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var metadata_1 = require('./metadata');\r\nvar decorators_1 = require('../util/decorators');\r\n/**\r\n * Factory for creating {@link InjectMetadata}.\r\n */\r\nexports.Inject = decorators_1.makeParamDecorator(metadata_1.InjectMetadata);\r\n/**\r\n * Factory for creating {@link OptionalMetadata}.\r\n */\r\nexports.Optional = decorators_1.makeParamDecorator(metadata_1.OptionalMetadata);\r\n/**\r\n * Factory for creating {@link InjectableMetadata}.\r\n */\r\nexports.Injectable = decorators_1.makeDecorator(metadata_1.InjectableMetadata);\r\n/**\r\n * Factory for creating {@link SelfMetadata}.\r\n */\r\nexports.Self = decorators_1.makeParamDecorator(metadata_1.SelfMetadata);\r\n/**\r\n * Factory for creating {@link HostMetadata}.\r\n */\r\nexports.Host = decorators_1.makeParamDecorator(metadata_1.HostMetadata);\r\n/**\r\n * Factory for creating {@link SkipSelfMetadata}.\r\n */\r\nexports.SkipSelf = decorators_1.makeParamDecorator(metadata_1.SkipSelfMetadata);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2RpL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUJBT08sWUFBWSxDQUFDLENBQUE7QUFDcEIsMkJBQWdELG9CQUFvQixDQUFDLENBQUE7QUFrRHJFOztHQUVHO0FBQ1EsY0FBTSxHQUFrQiwrQkFBa0IsQ0FBQyx5QkFBYyxDQUFDLENBQUM7QUFFdEU7O0dBRUc7QUFDUSxnQkFBUSxHQUFvQiwrQkFBa0IsQ0FBQywyQkFBZ0IsQ0FBQyxDQUFDO0FBRTVFOztHQUVHO0FBQ1Esa0JBQVUsR0FBeUMsMEJBQWEsQ0FBQyw2QkFBa0IsQ0FBQyxDQUFDO0FBRWhHOztHQUVHO0FBQ1EsWUFBSSxHQUFnQiwrQkFBa0IsQ0FBQyx1QkFBWSxDQUFDLENBQUM7QUFFaEU7O0dBRUc7QUFDUSxZQUFJLEdBQWdCLCtCQUFrQixDQUFDLHVCQUFZLENBQUMsQ0FBQztBQUVoRTs7R0FFRztBQUNRLGdCQUFRLEdBQW9CLCtCQUFrQixDQUFDLDJCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RNZXRhZGF0YSxcbiAgT3B0aW9uYWxNZXRhZGF0YSxcbiAgSW5qZWN0YWJsZU1ldGFkYXRhLFxuICBTZWxmTWV0YWRhdGEsXG4gIEhvc3RNZXRhZGF0YSxcbiAgU2tpcFNlbGZNZXRhZGF0YVxufSBmcm9tICcuL21ldGFkYXRhJztcbmltcG9ydCB7bWFrZURlY29yYXRvciwgbWFrZVBhcmFtRGVjb3JhdG9yfSBmcm9tICcuLi91dGlsL2RlY29yYXRvcnMnO1xuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIHtAbGluayBJbmplY3RNZXRhZGF0YX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5qZWN0RmFjdG9yeSB7XG4gICh0b2tlbjogYW55KTogYW55O1xuICBuZXcgKHRva2VuOiBhbnkpOiBJbmplY3RNZXRhZGF0YTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZvciBjcmVhdGluZyB7QGxpbmsgT3B0aW9uYWxNZXRhZGF0YX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxGYWN0b3J5IHtcbiAgKCk6IGFueTtcbiAgbmV3ICgpOiBPcHRpb25hbE1ldGFkYXRhO1xufVxuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIHtAbGluayBJbmplY3RhYmxlTWV0YWRhdGF9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluamVjdGFibGVGYWN0b3J5IHtcbiAgKCk6IGFueTtcbiAgbmV3ICgpOiBJbmplY3RhYmxlTWV0YWRhdGE7XG59XG5cbi8qKlxuICogRmFjdG9yeSBmb3IgY3JlYXRpbmcge0BsaW5rIFNlbGZNZXRhZGF0YX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZkZhY3Rvcnkge1xuICAoKTogYW55O1xuICBuZXcgKCk6IFNlbGZNZXRhZGF0YTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZvciBjcmVhdGluZyB7QGxpbmsgSG9zdE1ldGFkYXRhfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3N0RmFjdG9yeSB7XG4gICgpOiBhbnk7XG4gIG5ldyAoKTogSG9zdE1ldGFkYXRhO1xufVxuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIHtAbGluayBTa2lwU2VsZk1ldGFkYXRhfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa2lwU2VsZkZhY3Rvcnkge1xuICAoKTogYW55O1xuICBuZXcgKCk6IFNraXBTZWxmTWV0YWRhdGE7XG59XG5cbi8qKlxuICogRmFjdG9yeSBmb3IgY3JlYXRpbmcge0BsaW5rIEluamVjdE1ldGFkYXRhfS5cbiAqL1xuZXhwb3J0IHZhciBJbmplY3Q6IEluamVjdEZhY3RvcnkgPSBtYWtlUGFyYW1EZWNvcmF0b3IoSW5qZWN0TWV0YWRhdGEpO1xuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIHtAbGluayBPcHRpb25hbE1ldGFkYXRhfS5cbiAqL1xuZXhwb3J0IHZhciBPcHRpb25hbDogT3B0aW9uYWxGYWN0b3J5ID0gbWFrZVBhcmFtRGVjb3JhdG9yKE9wdGlvbmFsTWV0YWRhdGEpO1xuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIHtAbGluayBJbmplY3RhYmxlTWV0YWRhdGF9LlxuICovXG5leHBvcnQgdmFyIEluamVjdGFibGU6IEluamVjdGFibGVGYWN0b3J5ID0gPEluamVjdGFibGVGYWN0b3J5Pm1ha2VEZWNvcmF0b3IoSW5qZWN0YWJsZU1ldGFkYXRhKTtcblxuLyoqXG4gKiBGYWN0b3J5IGZvciBjcmVhdGluZyB7QGxpbmsgU2VsZk1ldGFkYXRhfS5cbiAqL1xuZXhwb3J0IHZhciBTZWxmOiBTZWxmRmFjdG9yeSA9IG1ha2VQYXJhbURlY29yYXRvcihTZWxmTWV0YWRhdGEpO1xuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIHtAbGluayBIb3N0TWV0YWRhdGF9LlxuICovXG5leHBvcnQgdmFyIEhvc3Q6IEhvc3RGYWN0b3J5ID0gbWFrZVBhcmFtRGVjb3JhdG9yKEhvc3RNZXRhZGF0YSk7XG5cbi8qKlxuICogRmFjdG9yeSBmb3IgY3JlYXRpbmcge0BsaW5rIFNraXBTZWxmTWV0YWRhdGF9LlxuICovXG5leHBvcnQgdmFyIFNraXBTZWxmOiBTa2lwU2VsZkZhY3RvcnkgPSBtYWtlUGFyYW1EZWNvcmF0b3IoU2tpcFNlbGZNZXRhZGF0YSk7Il19","/* */ \n\"format cjs\";\n'use strict';var collection_1 = require('angular2/src/facade/collection');\r\nvar provider_1 = require('./provider');\r\nvar exceptions_1 = require('./exceptions');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_2 = require('angular2/src/facade/exceptions');\r\nvar key_1 = require('./key');\r\nvar metadata_1 = require('./metadata');\r\n// Threshold for the dynamic version\r\nvar _MAX_CONSTRUCTION_COUNTER = 10;\r\nexports.UNDEFINED = lang_1.CONST_EXPR(new Object());\r\n/**\r\n * Visibility of a {@link Provider}.\r\n */\r\n(function (Visibility) {\r\n /**\r\n * A `Public` {@link Provider} is only visible to regular (as opposed to host) child injectors.\r\n */\r\n Visibility[Visibility[\"Public\"] = 0] = \"Public\";\r\n /**\r\n * A `Private` {@link Provider} is only visible to host (as opposed to regular) child injectors.\r\n */\r\n Visibility[Visibility[\"Private\"] = 1] = \"Private\";\r\n /**\r\n * A `PublicAndPrivate` {@link Provider} is visible to both host and regular child injectors.\r\n */\r\n Visibility[Visibility[\"PublicAndPrivate\"] = 2] = \"PublicAndPrivate\";\r\n})(exports.Visibility || (exports.Visibility = {}));\r\nvar Visibility = exports.Visibility;\r\nfunction canSee(src, dst) {\r\n return (src === dst) ||\r\n (dst === Visibility.PublicAndPrivate || src === Visibility.PublicAndPrivate);\r\n}\r\nvar ProtoInjectorInlineStrategy = (function () {\r\n function ProtoInjectorInlineStrategy(protoEI, bwv) {\r\n this.provider0 = null;\r\n this.provider1 = null;\r\n this.provider2 = null;\r\n this.provider3 = null;\r\n this.provider4 = null;\r\n this.provider5 = null;\r\n this.provider6 = null;\r\n this.provider7 = null;\r\n this.provider8 = null;\r\n this.provider9 = null;\r\n this.keyId0 = null;\r\n this.keyId1 = null;\r\n this.keyId2 = null;\r\n this.keyId3 = null;\r\n this.keyId4 = null;\r\n this.keyId5 = null;\r\n this.keyId6 = null;\r\n this.keyId7 = null;\r\n this.keyId8 = null;\r\n this.keyId9 = null;\r\n this.visibility0 = null;\r\n this.visibility1 = null;\r\n this.visibility2 = null;\r\n this.visibility3 = null;\r\n this.visibility4 = null;\r\n this.visibility5 = null;\r\n this.visibility6 = null;\r\n this.visibility7 = null;\r\n this.visibility8 = null;\r\n this.visibility9 = null;\r\n var length = bwv.length;\r\n if (length > 0) {\r\n this.provider0 = bwv[0].provider;\r\n this.keyId0 = bwv[0].getKeyId();\r\n this.visibility0 = bwv[0].visibility;\r\n }\r\n if (length > 1) {\r\n this.provider1 = bwv[1].provider;\r\n this.keyId1 = bwv[1].getKeyId();\r\n this.visibility1 = bwv[1].visibility;\r\n }\r\n if (length > 2) {\r\n this.provider2 = bwv[2].provider;\r\n this.keyId2 = bwv[2].getKeyId();\r\n this.visibility2 = bwv[2].visibility;\r\n }\r\n if (length > 3) {\r\n this.provider3 = bwv[3].provider;\r\n this.keyId3 = bwv[3].getKeyId();\r\n this.visibility3 = bwv[3].visibility;\r\n }\r\n if (length > 4) {\r\n this.provider4 = bwv[4].provider;\r\n this.keyId4 = bwv[4].getKeyId();\r\n this.visibility4 = bwv[4].visibility;\r\n }\r\n if (length > 5) {\r\n this.provider5 = bwv[5].provider;\r\n this.keyId5 = bwv[5].getKeyId();\r\n this.visibility5 = bwv[5].visibility;\r\n }\r\n if (length > 6) {\r\n this.provider6 = bwv[6].provider;\r\n this.keyId6 = bwv[6].getKeyId();\r\n this.visibility6 = bwv[6].visibility;\r\n }\r\n if (length > 7) {\r\n this.provider7 = bwv[7].provider;\r\n this.keyId7 = bwv[7].getKeyId();\r\n this.visibility7 = bwv[7].visibility;\r\n }\r\n if (length > 8) {\r\n this.provider8 = bwv[8].provider;\r\n this.keyId8 = bwv[8].getKeyId();\r\n this.visibility8 = bwv[8].visibility;\r\n }\r\n if (length > 9) {\r\n this.provider9 = bwv[9].provider;\r\n this.keyId9 = bwv[9].getKeyId();\r\n this.visibility9 = bwv[9].visibility;\r\n }\r\n }\r\n ProtoInjectorInlineStrategy.prototype.getProviderAtIndex = function (index) {\r\n if (index == 0)\r\n return this.provider0;\r\n if (index == 1)\r\n return this.provider1;\r\n if (index == 2)\r\n return this.provider2;\r\n if (index == 3)\r\n return this.provider3;\r\n if (index == 4)\r\n return this.provider4;\r\n if (index == 5)\r\n return this.provider5;\r\n if (index == 6)\r\n return this.provider6;\r\n if (index == 7)\r\n return this.provider7;\r\n if (index == 8)\r\n return this.provider8;\r\n if (index == 9)\r\n return this.provider9;\r\n throw new exceptions_1.OutOfBoundsError(index);\r\n };\r\n ProtoInjectorInlineStrategy.prototype.createInjectorStrategy = function (injector) {\r\n return new InjectorInlineStrategy(injector, this);\r\n };\r\n return ProtoInjectorInlineStrategy;\r\n})();\r\nexports.ProtoInjectorInlineStrategy = ProtoInjectorInlineStrategy;\r\nvar ProtoInjectorDynamicStrategy = (function () {\r\n function ProtoInjectorDynamicStrategy(protoInj, bwv) {\r\n var len = bwv.length;\r\n this.providers = collection_1.ListWrapper.createFixedSize(len);\r\n this.keyIds = collection_1.ListWrapper.createFixedSize(len);\r\n this.visibilities = collection_1.ListWrapper.createFixedSize(len);\r\n for (var i = 0; i < len; i++) {\r\n this.providers[i] = bwv[i].provider;\r\n this.keyIds[i] = bwv[i].getKeyId();\r\n this.visibilities[i] = bwv[i].visibility;\r\n }\r\n }\r\n ProtoInjectorDynamicStrategy.prototype.getProviderAtIndex = function (index) {\r\n if (index < 0 || index >= this.providers.length) {\r\n throw new exceptions_1.OutOfBoundsError(index);\r\n }\r\n return this.providers[index];\r\n };\r\n ProtoInjectorDynamicStrategy.prototype.createInjectorStrategy = function (ei) {\r\n return new InjectorDynamicStrategy(this, ei);\r\n };\r\n return ProtoInjectorDynamicStrategy;\r\n})();\r\nexports.ProtoInjectorDynamicStrategy = ProtoInjectorDynamicStrategy;\r\nvar ProtoInjector = (function () {\r\n function ProtoInjector(bwv) {\r\n this.numberOfProviders = bwv.length;\r\n this._strategy = bwv.length > _MAX_CONSTRUCTION_COUNTER ?\r\n new ProtoInjectorDynamicStrategy(this, bwv) :\r\n new ProtoInjectorInlineStrategy(this, bwv);\r\n }\r\n ProtoInjector.fromResolvedProviders = function (providers) {\r\n var bd = providers.map(function (b) { return new ProviderWithVisibility(b, Visibility.Public); });\r\n return new ProtoInjector(bd);\r\n };\r\n ProtoInjector.prototype.getProviderAtIndex = function (index) {\r\n return this._strategy.getProviderAtIndex(index);\r\n };\r\n return ProtoInjector;\r\n})();\r\nexports.ProtoInjector = ProtoInjector;\r\nvar InjectorInlineStrategy = (function () {\r\n function InjectorInlineStrategy(injector, protoStrategy) {\r\n this.injector = injector;\r\n this.protoStrategy = protoStrategy;\r\n this.obj0 = exports.UNDEFINED;\r\n this.obj1 = exports.UNDEFINED;\r\n this.obj2 = exports.UNDEFINED;\r\n this.obj3 = exports.UNDEFINED;\r\n this.obj4 = exports.UNDEFINED;\r\n this.obj5 = exports.UNDEFINED;\r\n this.obj6 = exports.UNDEFINED;\r\n this.obj7 = exports.UNDEFINED;\r\n this.obj8 = exports.UNDEFINED;\r\n this.obj9 = exports.UNDEFINED;\r\n }\r\n InjectorInlineStrategy.prototype.resetConstructionCounter = function () { this.injector._constructionCounter = 0; };\r\n InjectorInlineStrategy.prototype.instantiateProvider = function (provider, visibility) {\r\n return this.injector._new(provider, visibility);\r\n };\r\n InjectorInlineStrategy.prototype.getObjByKeyId = function (keyId, visibility) {\r\n var p = this.protoStrategy;\r\n var inj = this.injector;\r\n if (p.keyId0 === keyId && canSee(p.visibility0, visibility)) {\r\n if (this.obj0 === exports.UNDEFINED) {\r\n this.obj0 = inj._new(p.provider0, p.visibility0);\r\n }\r\n return this.obj0;\r\n }\r\n if (p.keyId1 === keyId && canSee(p.visibility1, visibility)) {\r\n if (this.obj1 === exports.UNDEFINED) {\r\n this.obj1 = inj._new(p.provider1, p.visibility1);\r\n }\r\n return this.obj1;\r\n }\r\n if (p.keyId2 === keyId && canSee(p.visibility2, visibility)) {\r\n if (this.obj2 === exports.UNDEFINED) {\r\n this.obj2 = inj._new(p.provider2, p.visibility2);\r\n }\r\n return this.obj2;\r\n }\r\n if (p.keyId3 === keyId && canSee(p.visibility3, visibility)) {\r\n if (this.obj3 === exports.UNDEFINED) {\r\n this.obj3 = inj._new(p.provider3, p.visibility3);\r\n }\r\n return this.obj3;\r\n }\r\n if (p.keyId4 === keyId && canSee(p.visibility4, visibility)) {\r\n if (this.obj4 === exports.UNDEFINED) {\r\n this.obj4 = inj._new(p.provider4, p.visibility4);\r\n }\r\n return this.obj4;\r\n }\r\n if (p.keyId5 === keyId && canSee(p.visibility5, visibility)) {\r\n if (this.obj5 === exports.UNDEFINED) {\r\n this.obj5 = inj._new(p.provider5, p.visibility5);\r\n }\r\n return this.obj5;\r\n }\r\n if (p.keyId6 === keyId && canSee(p.visibility6, visibility)) {\r\n if (this.obj6 === exports.UNDEFINED) {\r\n this.obj6 = inj._new(p.provider6, p.visibility6);\r\n }\r\n return this.obj6;\r\n }\r\n if (p.keyId7 === keyId && canSee(p.visibility7, visibility)) {\r\n if (this.obj7 === exports.UNDEFINED) {\r\n this.obj7 = inj._new(p.provider7, p.visibility7);\r\n }\r\n return this.obj7;\r\n }\r\n if (p.keyId8 === keyId && canSee(p.visibility8, visibility)) {\r\n if (this.obj8 === exports.UNDEFINED) {\r\n this.obj8 = inj._new(p.provider8, p.visibility8);\r\n }\r\n return this.obj8;\r\n }\r\n if (p.keyId9 === keyId && canSee(p.visibility9, visibility)) {\r\n if (this.obj9 === exports.UNDEFINED) {\r\n this.obj9 = inj._new(p.provider9, p.visibility9);\r\n }\r\n return this.obj9;\r\n }\r\n return exports.UNDEFINED;\r\n };\r\n InjectorInlineStrategy.prototype.getObjAtIndex = function (index) {\r\n if (index == 0)\r\n return this.obj0;\r\n if (index == 1)\r\n return this.obj1;\r\n if (index == 2)\r\n return this.obj2;\r\n if (index == 3)\r\n return this.obj3;\r\n if (index == 4)\r\n return this.obj4;\r\n if (index == 5)\r\n return this.obj5;\r\n if (index == 6)\r\n return this.obj6;\r\n if (index == 7)\r\n return this.obj7;\r\n if (index == 8)\r\n return this.obj8;\r\n if (index == 9)\r\n return this.obj9;\r\n throw new exceptions_1.OutOfBoundsError(index);\r\n };\r\n InjectorInlineStrategy.prototype.getMaxNumberOfObjects = function () { return _MAX_CONSTRUCTION_COUNTER; };\r\n return InjectorInlineStrategy;\r\n})();\r\nexports.InjectorInlineStrategy = InjectorInlineStrategy;\r\nvar InjectorDynamicStrategy = (function () {\r\n function InjectorDynamicStrategy(protoStrategy, injector) {\r\n this.protoStrategy = protoStrategy;\r\n this.injector = injector;\r\n this.objs = collection_1.ListWrapper.createFixedSize(protoStrategy.providers.length);\r\n collection_1.ListWrapper.fill(this.objs, exports.UNDEFINED);\r\n }\r\n InjectorDynamicStrategy.prototype.resetConstructionCounter = function () { this.injector._constructionCounter = 0; };\r\n InjectorDynamicStrategy.prototype.instantiateProvider = function (provider, visibility) {\r\n return this.injector._new(provider, visibility);\r\n };\r\n InjectorDynamicStrategy.prototype.getObjByKeyId = function (keyId, visibility) {\r\n var p = this.protoStrategy;\r\n for (var i = 0; i < p.keyIds.length; i++) {\r\n if (p.keyIds[i] === keyId && canSee(p.visibilities[i], visibility)) {\r\n if (this.objs[i] === exports.UNDEFINED) {\r\n this.objs[i] = this.injector._new(p.providers[i], p.visibilities[i]);\r\n }\r\n return this.objs[i];\r\n }\r\n }\r\n return exports.UNDEFINED;\r\n };\r\n InjectorDynamicStrategy.prototype.getObjAtIndex = function (index) {\r\n if (index < 0 || index >= this.objs.length) {\r\n throw new exceptions_1.OutOfBoundsError(index);\r\n }\r\n return this.objs[index];\r\n };\r\n InjectorDynamicStrategy.prototype.getMaxNumberOfObjects = function () { return this.objs.length; };\r\n return InjectorDynamicStrategy;\r\n})();\r\nexports.InjectorDynamicStrategy = InjectorDynamicStrategy;\r\nvar ProviderWithVisibility = (function () {\r\n function ProviderWithVisibility(provider, visibility) {\r\n this.provider = provider;\r\n this.visibility = visibility;\r\n }\r\n ;\r\n ProviderWithVisibility.prototype.getKeyId = function () { return this.provider.key.id; };\r\n return ProviderWithVisibility;\r\n})();\r\nexports.ProviderWithVisibility = ProviderWithVisibility;\r\n/**\r\n * A dependency injection container used for instantiating objects and resolving dependencies.\r\n *\r\n * An `Injector` is a replacement for a `new` operator, which can automatically resolve the\r\n * constructor dependencies.\r\n *\r\n * In typical use, application code asks for the dependencies in the constructor and they are\r\n * resolved by the `Injector`.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/jzjec0?p=preview))\r\n *\r\n * The following example creates an `Injector` configured to create `Engine` and `Car`.\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class Engine {\r\n * }\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine:Engine) {}\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([Car, Engine]);\r\n * var car = injector.get(Car);\r\n * expect(car instanceof Car).toBe(true);\r\n * expect(car.engine instanceof Engine).toBe(true);\r\n * ```\r\n *\r\n * Notice, we don't use the `new` operator because we explicitly want to have the `Injector`\r\n * resolve all of the object's dependencies automatically.\r\n */\r\nvar Injector = (function () {\r\n /**\r\n * Private\r\n */\r\n function Injector(_proto /* ProtoInjector */, _parent, _isHostBoundary, _depProvider, _debugContext) {\r\n if (_parent === void 0) { _parent = null; }\r\n if (_isHostBoundary === void 0) { _isHostBoundary = false; }\r\n if (_depProvider === void 0) { _depProvider = null; }\r\n if (_debugContext === void 0) { _debugContext = null; }\r\n this._isHostBoundary = _isHostBoundary;\r\n this._depProvider = _depProvider;\r\n this._debugContext = _debugContext;\r\n /** @internal */\r\n this._constructionCounter = 0;\r\n this._proto = _proto;\r\n this._parent = _parent;\r\n this._strategy = _proto._strategy.createInjectorStrategy(this);\r\n }\r\n /**\r\n * Turns an array of provider definitions into an array of resolved providers.\r\n *\r\n * A resolution is a process of flattening multiple nested arrays and converting individual\r\n * providers into an array of {@link ResolvedProvider}s.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/AiXTHi?p=preview))\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class Engine {\r\n * }\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine:Engine) {}\r\n * }\r\n *\r\n * var providers = Injector.resolve([Car, [[Engine]]]);\r\n *\r\n * expect(providers.length).toEqual(2);\r\n *\r\n * expect(providers[0] instanceof ResolvedProvider).toBe(true);\r\n * expect(providers[0].key.displayName).toBe(\"Car\");\r\n * expect(providers[0].dependencies.length).toEqual(1);\r\n * expect(providers[0].factory).toBeDefined();\r\n *\r\n * expect(providers[1].key.displayName).toBe(\"Engine\");\r\n * });\r\n * ```\r\n *\r\n * See {@link Injector#fromResolvedProviders} for more info.\r\n */\r\n Injector.resolve = function (providers) {\r\n return provider_1.resolveProviders(providers);\r\n };\r\n /**\r\n * Resolves an array of providers and creates an injector from those providers.\r\n *\r\n * The passed-in providers can be an array of `Type`, {@link Provider},\r\n * or a recursive array of more providers.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/ePOccA?p=preview))\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class Engine {\r\n * }\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine:Engine) {}\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([Car, Engine]);\r\n * expect(injector.get(Car) instanceof Car).toBe(true);\r\n * ```\r\n *\r\n * This function is slower than the corresponding `fromResolvedProviders`\r\n * because it needs to resolve the passed-in providers first.\r\n * See {@link Injector#resolve} and {@link Injector#fromResolvedProviders}.\r\n */\r\n Injector.resolveAndCreate = function (providers) {\r\n var resolvedProviders = Injector.resolve(providers);\r\n return Injector.fromResolvedProviders(resolvedProviders);\r\n };\r\n /**\r\n * Creates an injector from previously resolved providers.\r\n *\r\n * This API is the recommended way to construct injectors in performance-sensitive parts.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/KrSMci?p=preview))\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class Engine {\r\n * }\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine:Engine) {}\r\n * }\r\n *\r\n * var providers = Injector.resolve([Car, Engine]);\r\n * var injector = Injector.fromResolvedProviders(providers);\r\n * expect(injector.get(Car) instanceof Car).toBe(true);\r\n * ```\r\n */\r\n Injector.fromResolvedProviders = function (providers) {\r\n return new Injector(ProtoInjector.fromResolvedProviders(providers));\r\n };\r\n /**\r\n * @deprecated\r\n */\r\n Injector.fromResolvedBindings = function (providers) {\r\n return Injector.fromResolvedProviders(providers);\r\n };\r\n Object.defineProperty(Injector.prototype, \"hostBoundary\", {\r\n /**\r\n * Whether this injector is a boundary to a host.\r\n * @internal\r\n */\r\n get: function () { return this._isHostBoundary; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @internal\r\n */\r\n Injector.prototype.debugContext = function () { return this._debugContext(); };\r\n /**\r\n * Retrieves an instance from the injector based on the provided token.\r\n * Throws {@link NoProviderError} if not found.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/HeXSHg?p=preview))\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([\r\n * provide(\"validToken\", {useValue: \"Value\"})\r\n * ]);\r\n * expect(injector.get(\"validToken\")).toEqual(\"Value\");\r\n * expect(() => injector.get(\"invalidToken\")).toThrowError();\r\n * ```\r\n *\r\n * `Injector` returns itself when given `Injector` as a token.\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([]);\r\n * expect(injector.get(Injector)).toBe(injector);\r\n * ```\r\n */\r\n Injector.prototype.get = function (token) {\r\n return this._getByKey(key_1.Key.get(token), null, null, false, Visibility.PublicAndPrivate);\r\n };\r\n /**\r\n * Retrieves an instance from the injector based on the provided token.\r\n * Returns null if not found.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/tpEbEy?p=preview))\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([\r\n * provide(\"validToken\", {useValue: \"Value\"})\r\n * ]);\r\n * expect(injector.getOptional(\"validToken\")).toEqual(\"Value\");\r\n * expect(injector.getOptional(\"invalidToken\")).toBe(null);\r\n * ```\r\n *\r\n * `Injector` returns itself when given `Injector` as a token.\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([]);\r\n * expect(injector.getOptional(Injector)).toBe(injector);\r\n * ```\r\n */\r\n Injector.prototype.getOptional = function (token) {\r\n return this._getByKey(key_1.Key.get(token), null, null, true, Visibility.PublicAndPrivate);\r\n };\r\n /**\r\n * @internal\r\n */\r\n Injector.prototype.getAt = function (index) { return this._strategy.getObjAtIndex(index); };\r\n Object.defineProperty(Injector.prototype, \"parent\", {\r\n /**\r\n * Parent of this injector.\r\n *\r\n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\r\n * -->\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/eosMGo?p=preview))\r\n *\r\n * ```typescript\r\n * var parent = Injector.resolveAndCreate([]);\r\n * var child = parent.resolveAndCreateChild([]);\r\n * expect(child.parent).toBe(parent);\r\n * ```\r\n */\r\n get: function () { return this._parent; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Injector.prototype, \"internalStrategy\", {\r\n /**\r\n * @internal\r\n * Internal. Do not use.\r\n * We return `any` not to export the InjectorStrategy type.\r\n */\r\n get: function () { return this._strategy; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Resolves an array of providers and creates a child injector from those providers.\r\n *\r\n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\r\n * -->\r\n *\r\n * The passed-in providers can be an array of `Type`, {@link Provider},\r\n * or a recursive array of more providers.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/opB3T4?p=preview))\r\n *\r\n * ```typescript\r\n * class ParentProvider {}\r\n * class ChildProvider {}\r\n *\r\n * var parent = Injector.resolveAndCreate([ParentProvider]);\r\n * var child = parent.resolveAndCreateChild([ChildProvider]);\r\n *\r\n * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);\r\n * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);\r\n * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));\r\n * ```\r\n *\r\n * This function is slower than the corresponding `createChildFromResolved`\r\n * because it needs to resolve the passed-in providers first.\r\n * See {@link Injector#resolve} and {@link Injector#createChildFromResolved}.\r\n */\r\n Injector.prototype.resolveAndCreateChild = function (providers) {\r\n var resolvedProviders = Injector.resolve(providers);\r\n return this.createChildFromResolved(resolvedProviders);\r\n };\r\n /**\r\n * Creates a child injector from previously resolved providers.\r\n *\r\n * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.\r\n * -->\r\n *\r\n * This API is the recommended way to construct injectors in performance-sensitive parts.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/VhyfjN?p=preview))\r\n *\r\n * ```typescript\r\n * class ParentProvider {}\r\n * class ChildProvider {}\r\n *\r\n * var parentProviders = Injector.resolve([ParentProvider]);\r\n * var childProviders = Injector.resolve([ChildProvider]);\r\n *\r\n * var parent = Injector.fromResolvedProviders(parentProviders);\r\n * var child = parent.createChildFromResolved(childProviders);\r\n *\r\n * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);\r\n * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);\r\n * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));\r\n * ```\r\n */\r\n Injector.prototype.createChildFromResolved = function (providers) {\r\n var bd = providers.map(function (b) { return new ProviderWithVisibility(b, Visibility.Public); });\r\n var proto = new ProtoInjector(bd);\r\n var inj = new Injector(proto);\r\n inj._parent = this;\r\n return inj;\r\n };\r\n /**\r\n * Resolves a provider and instantiates an object in the context of the injector.\r\n *\r\n * The created object does not get cached by the injector.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/yvVXoB?p=preview))\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class Engine {\r\n * }\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine:Engine) {}\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([Engine]);\r\n *\r\n * var car = injector.resolveAndInstantiate(Car);\r\n * expect(car.engine).toBe(injector.get(Engine));\r\n * expect(car).not.toBe(injector.resolveAndInstantiate(Car));\r\n * ```\r\n */\r\n Injector.prototype.resolveAndInstantiate = function (provider) {\r\n return this.instantiateResolved(Injector.resolve([provider])[0]);\r\n };\r\n /**\r\n * Instantiates an object using a resolved provider in the context of the injector.\r\n *\r\n * The created object does not get cached by the injector.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/ptCImQ?p=preview))\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class Engine {\r\n * }\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine:Engine) {}\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([Engine]);\r\n * var carProvider = Injector.resolve([Car])[0];\r\n * var car = injector.instantiateResolved(carProvider);\r\n * expect(car.engine).toBe(injector.get(Engine));\r\n * expect(car).not.toBe(injector.instantiateResolved(carProvider));\r\n * ```\r\n */\r\n Injector.prototype.instantiateResolved = function (provider) {\r\n return this._instantiateProvider(provider, Visibility.PublicAndPrivate);\r\n };\r\n /** @internal */\r\n Injector.prototype._new = function (provider, visibility) {\r\n if (this._constructionCounter++ > this._strategy.getMaxNumberOfObjects()) {\r\n throw new exceptions_1.CyclicDependencyError(this, provider.key);\r\n }\r\n return this._instantiateProvider(provider, visibility);\r\n };\r\n Injector.prototype._instantiateProvider = function (provider, visibility) {\r\n if (provider.multiProvider) {\r\n var res = collection_1.ListWrapper.createFixedSize(provider.resolvedFactories.length);\r\n for (var i = 0; i < provider.resolvedFactories.length; ++i) {\r\n res[i] = this._instantiate(provider, provider.resolvedFactories[i], visibility);\r\n }\r\n return res;\r\n }\r\n else {\r\n return this._instantiate(provider, provider.resolvedFactories[0], visibility);\r\n }\r\n };\r\n Injector.prototype._instantiate = function (provider, resolvedFactory, visibility) {\r\n var factory = resolvedFactory.factory;\r\n var deps = resolvedFactory.dependencies;\r\n var length = deps.length;\r\n var d0;\r\n var d1;\r\n var d2;\r\n var d3;\r\n var d4;\r\n var d5;\r\n var d6;\r\n var d7;\r\n var d8;\r\n var d9;\r\n var d10;\r\n var d11;\r\n var d12;\r\n var d13;\r\n var d14;\r\n var d15;\r\n var d16;\r\n var d17;\r\n var d18;\r\n var d19;\r\n try {\r\n d0 = length > 0 ? this._getByDependency(provider, deps[0], visibility) : null;\r\n d1 = length > 1 ? this._getByDependency(provider, deps[1], visibility) : null;\r\n d2 = length > 2 ? this._getByDependency(provider, deps[2], visibility) : null;\r\n d3 = length > 3 ? this._getByDependency(provider, deps[3], visibility) : null;\r\n d4 = length > 4 ? this._getByDependency(provider, deps[4], visibility) : null;\r\n d5 = length > 5 ? this._getByDependency(provider, deps[5], visibility) : null;\r\n d6 = length > 6 ? this._getByDependency(provider, deps[6], visibility) : null;\r\n d7 = length > 7 ? this._getByDependency(provider, deps[7], visibility) : null;\r\n d8 = length > 8 ? this._getByDependency(provider, deps[8], visibility) : null;\r\n d9 = length > 9 ? this._getByDependency(provider, deps[9], visibility) : null;\r\n d10 = length > 10 ? this._getByDependency(provider, deps[10], visibility) : null;\r\n d11 = length > 11 ? this._getByDependency(provider, deps[11], visibility) : null;\r\n d12 = length > 12 ? this._getByDependency(provider, deps[12], visibility) : null;\r\n d13 = length > 13 ? this._getByDependency(provider, deps[13], visibility) : null;\r\n d14 = length > 14 ? this._getByDependency(provider, deps[14], visibility) : null;\r\n d15 = length > 15 ? this._getByDependency(provider, deps[15], visibility) : null;\r\n d16 = length > 16 ? this._getByDependency(provider, deps[16], visibility) : null;\r\n d17 = length > 17 ? this._getByDependency(provider, deps[17], visibility) : null;\r\n d18 = length > 18 ? this._getByDependency(provider, deps[18], visibility) : null;\r\n d19 = length > 19 ? this._getByDependency(provider, deps[19], visibility) : null;\r\n }\r\n catch (e) {\r\n if (e instanceof exceptions_1.AbstractProviderError || e instanceof exceptions_1.InstantiationError) {\r\n e.addKey(this, provider.key);\r\n }\r\n throw e;\r\n }\r\n var obj;\r\n try {\r\n switch (length) {\r\n case 0:\r\n obj = factory();\r\n break;\r\n case 1:\r\n obj = factory(d0);\r\n break;\r\n case 2:\r\n obj = factory(d0, d1);\r\n break;\r\n case 3:\r\n obj = factory(d0, d1, d2);\r\n break;\r\n case 4:\r\n obj = factory(d0, d1, d2, d3);\r\n break;\r\n case 5:\r\n obj = factory(d0, d1, d2, d3, d4);\r\n break;\r\n case 6:\r\n obj = factory(d0, d1, d2, d3, d4, d5);\r\n break;\r\n case 7:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6);\r\n break;\r\n case 8:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7);\r\n break;\r\n case 9:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8);\r\n break;\r\n case 10:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9);\r\n break;\r\n case 11:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10);\r\n break;\r\n case 12:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11);\r\n break;\r\n case 13:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12);\r\n break;\r\n case 14:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13);\r\n break;\r\n case 15:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14);\r\n break;\r\n case 16:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15);\r\n break;\r\n case 17:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16);\r\n break;\r\n case 18:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17);\r\n break;\r\n case 19:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18);\r\n break;\r\n case 20:\r\n obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18, d19);\r\n break;\r\n default:\r\n throw new exceptions_2.BaseException(\"Cannot instantiate '\" + provider.key.displayName + \"' because it has more than 20 dependencies\");\r\n }\r\n }\r\n catch (e) {\r\n throw new exceptions_1.InstantiationError(this, e, e.stack, provider.key);\r\n }\r\n return obj;\r\n };\r\n Injector.prototype._getByDependency = function (provider, dep, providerVisibility) {\r\n var special = lang_1.isPresent(this._depProvider) ?\r\n this._depProvider.getDependency(this, provider, dep) :\r\n exports.UNDEFINED;\r\n if (special !== exports.UNDEFINED) {\r\n return special;\r\n }\r\n else {\r\n return this._getByKey(dep.key, dep.lowerBoundVisibility, dep.upperBoundVisibility, dep.optional, providerVisibility);\r\n }\r\n };\r\n Injector.prototype._getByKey = function (key, lowerBoundVisibility, upperBoundVisibility, optional, providerVisibility) {\r\n if (key === INJECTOR_KEY) {\r\n return this;\r\n }\r\n if (upperBoundVisibility instanceof metadata_1.SelfMetadata) {\r\n return this._getByKeySelf(key, optional, providerVisibility);\r\n }\r\n else if (upperBoundVisibility instanceof metadata_1.HostMetadata) {\r\n return this._getByKeyHost(key, optional, providerVisibility, lowerBoundVisibility);\r\n }\r\n else {\r\n return this._getByKeyDefault(key, optional, providerVisibility, lowerBoundVisibility);\r\n }\r\n };\r\n /** @internal */\r\n Injector.prototype._throwOrNull = function (key, optional) {\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw new exceptions_1.NoProviderError(this, key);\r\n }\r\n };\r\n /** @internal */\r\n Injector.prototype._getByKeySelf = function (key, optional, providerVisibility) {\r\n var obj = this._strategy.getObjByKeyId(key.id, providerVisibility);\r\n return (obj !== exports.UNDEFINED) ? obj : this._throwOrNull(key, optional);\r\n };\r\n /** @internal */\r\n Injector.prototype._getByKeyHost = function (key, optional, providerVisibility, lowerBoundVisibility) {\r\n var inj = this;\r\n if (lowerBoundVisibility instanceof metadata_1.SkipSelfMetadata) {\r\n if (inj._isHostBoundary) {\r\n return this._getPrivateDependency(key, optional, inj);\r\n }\r\n else {\r\n inj = inj._parent;\r\n }\r\n }\r\n while (inj != null) {\r\n var obj = inj._strategy.getObjByKeyId(key.id, providerVisibility);\r\n if (obj !== exports.UNDEFINED)\r\n return obj;\r\n if (lang_1.isPresent(inj._parent) && inj._isHostBoundary) {\r\n return this._getPrivateDependency(key, optional, inj);\r\n }\r\n else {\r\n inj = inj._parent;\r\n }\r\n }\r\n return this._throwOrNull(key, optional);\r\n };\r\n /** @internal */\r\n Injector.prototype._getPrivateDependency = function (key, optional, inj) {\r\n var obj = inj._parent._strategy.getObjByKeyId(key.id, Visibility.Private);\r\n return (obj !== exports.UNDEFINED) ? obj : this._throwOrNull(key, optional);\r\n };\r\n /** @internal */\r\n Injector.prototype._getByKeyDefault = function (key, optional, providerVisibility, lowerBoundVisibility) {\r\n var inj = this;\r\n if (lowerBoundVisibility instanceof metadata_1.SkipSelfMetadata) {\r\n providerVisibility = inj._isHostBoundary ? Visibility.PublicAndPrivate : Visibility.Public;\r\n inj = inj._parent;\r\n }\r\n while (inj != null) {\r\n var obj = inj._strategy.getObjByKeyId(key.id, providerVisibility);\r\n if (obj !== exports.UNDEFINED)\r\n return obj;\r\n providerVisibility = inj._isHostBoundary ? Visibility.PublicAndPrivate : Visibility.Public;\r\n inj = inj._parent;\r\n }\r\n return this._throwOrNull(key, optional);\r\n };\r\n Object.defineProperty(Injector.prototype, \"displayName\", {\r\n get: function () {\r\n return \"Injector(providers: [\" + _mapProviders(this, function (b) { return (\" \\\"\" + b.key.displayName + \"\\\" \"); }).join(\", \") + \"])\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Injector.prototype.toString = function () { return this.displayName; };\r\n return Injector;\r\n})();\r\nexports.Injector = Injector;\r\nvar INJECTOR_KEY = key_1.Key.get(Injector);\r\nfunction _mapProviders(injector, fn) {\r\n var res = [];\r\n for (var i = 0; i < injector._proto.numberOfProviders; ++i) {\r\n res.push(fn(injector._proto.getProviderAtIndex(i)));\r\n }\r\n return res;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9kaS9pbmplY3Rvci50cyJdLCJuYW1lcyI6WyJWaXNpYmlsaXR5IiwiY2FuU2VlIiwiUHJvdG9JbmplY3RvcklubGluZVN0cmF0ZWd5IiwiUHJvdG9JbmplY3RvcklubGluZVN0cmF0ZWd5LmNvbnN0cnVjdG9yIiwiUHJvdG9JbmplY3RvcklubGluZVN0cmF0ZWd5LmdldFByb3ZpZGVyQXRJbmRleCIsIlByb3RvSW5qZWN0b3JJbmxpbmVTdHJhdGVneS5jcmVhdGVJbmplY3RvclN0cmF0ZWd5IiwiUHJvdG9JbmplY3RvckR5bmFtaWNTdHJhdGVneSIsIlByb3RvSW5qZWN0b3JEeW5hbWljU3RyYXRlZ3kuY29uc3RydWN0b3IiLCJQcm90b0luamVjdG9yRHluYW1pY1N0cmF0ZWd5LmdldFByb3ZpZGVyQXRJbmRleCIsIlByb3RvSW5qZWN0b3JEeW5hbWljU3RyYXRlZ3kuY3JlYXRlSW5qZWN0b3JTdHJhdGVneSIsIlByb3RvSW5qZWN0b3IiLCJQcm90b0luamVjdG9yLmNvbnN0cnVjdG9yIiwiUHJvdG9JbmplY3Rvci5mcm9tUmVzb2x2ZWRQcm92aWRlcnMiLCJQcm90b0luamVjdG9yLmdldFByb3ZpZGVyQXRJbmRleCIsIkluamVjdG9ySW5saW5lU3RyYXRlZ3kiLCJJbmplY3RvcklubGluZVN0cmF0ZWd5LmNvbnN0cnVjdG9yIiwiSW5qZWN0b3JJbmxpbmVTdHJhdGVneS5yZXNldENvbnN0cnVjdGlvbkNvdW50ZXIiLCJJbmplY3RvcklubGluZVN0cmF0ZWd5Lmluc3RhbnRpYXRlUHJvdmlkZXIiLCJJbmplY3RvcklubGluZVN0cmF0ZWd5LmdldE9iakJ5S2V5SWQiLCJJbmplY3RvcklubGluZVN0cmF0ZWd5LmdldE9iakF0SW5kZXgiLCJJbmplY3RvcklubGluZVN0cmF0ZWd5LmdldE1heE51bWJlck9mT2JqZWN0cyIsIkluamVjdG9yRHluYW1pY1N0cmF0ZWd5IiwiSW5qZWN0b3JEeW5hbWljU3RyYXRlZ3kuY29uc3RydWN0b3IiLCJJbmplY3RvckR5bmFtaWNTdHJhdGVneS5yZXNldENvbnN0cnVjdGlvbkNvdW50ZXIiLCJJbmplY3RvckR5bmFtaWNTdHJhdGVneS5pbnN0YW50aWF0ZVByb3ZpZGVyIiwiSW5qZWN0b3JEeW5hbWljU3RyYXRlZ3kuZ2V0T2JqQnlLZXlJZCIsIkluamVjdG9yRHluYW1pY1N0cmF0ZWd5LmdldE9iakF0SW5kZXgiLCJJbmplY3RvckR5bmFtaWNTdHJhdGVneS5nZXRNYXhOdW1iZXJPZk9iamVjdHMiLCJQcm92aWRlcldpdGhWaXNpYmlsaXR5IiwiUHJvdmlkZXJXaXRoVmlzaWJpbGl0eS5jb25zdHJ1Y3RvciIsIlByb3ZpZGVyV2l0aFZpc2liaWxpdHkuZ2V0S2V5SWQiLCJJbmplY3RvciIsIkluamVjdG9yLmNvbnN0cnVjdG9yIiwiSW5qZWN0b3IucmVzb2x2ZSIsIkluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUiLCJJbmplY3Rvci5mcm9tUmVzb2x2ZWRQcm92aWRlcnMiLCJJbmplY3Rvci5mcm9tUmVzb2x2ZWRCaW5kaW5ncyIsIkluamVjdG9yLmhvc3RCb3VuZGFyeSIsIkluamVjdG9yLmRlYnVnQ29udGV4dCIsIkluamVjdG9yLmdldCIsIkluamVjdG9yLmdldE9wdGlvbmFsIiwiSW5qZWN0b3IuZ2V0QXQiLCJJbmplY3Rvci5wYXJlbnQiLCJJbmplY3Rvci5pbnRlcm5hbFN0cmF0ZWd5IiwiSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZUNoaWxkIiwiSW5qZWN0b3IuY3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQiLCJJbmplY3Rvci5yZXNvbHZlQW5kSW5zdGFudGlhdGUiLCJJbmplY3Rvci5pbnN0YW50aWF0ZVJlc29sdmVkIiwiSW5qZWN0b3IuX25ldyIsIkluamVjdG9yLl9pbnN0YW50aWF0ZVByb3ZpZGVyIiwiSW5qZWN0b3IuX2luc3RhbnRpYXRlIiwiSW5qZWN0b3IuX2dldEJ5RGVwZW5kZW5jeSIsIkluamVjdG9yLl9nZXRCeUtleSIsIkluamVjdG9yLl90aHJvd09yTnVsbCIsIkluamVjdG9yLl9nZXRCeUtleVNlbGYiLCJJbmplY3Rvci5fZ2V0QnlLZXlIb3N0IiwiSW5qZWN0b3IuX2dldFByaXZhdGVEZXBlbmRlbmN5IiwiSW5qZWN0b3IuX2dldEJ5S2V5RGVmYXVsdCIsIkluamVjdG9yLmRpc3BsYXlOYW1lIiwiSW5qZWN0b3IudG9TdHJpbmciLCJfbWFwUHJvdmlkZXJzIl0sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkMsZ0NBQWdDLENBQUMsQ0FBQTtBQUM1RSx5QkFRTyxZQUFZLENBQUMsQ0FBQTtBQUNwQiwyQkFPTyxjQUFjLENBQUMsQ0FBQTtBQUN0QixxQkFBb0UsMEJBQTBCLENBQUMsQ0FBQTtBQUMvRiwyQkFBNEIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM3RCxvQkFBa0IsT0FBTyxDQUFDLENBQUE7QUFDMUIseUJBQTJELFlBQVksQ0FBQyxDQUFBO0FBRXhFLG9DQUFvQztBQUNwQyxJQUFNLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztBQUV4QixpQkFBUyxHQUFXLGlCQUFVLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRTFEOztHQUVHO0FBQ0gsV0FBWSxVQUFVO0lBQ3BCQTs7T0FFR0E7SUFDSEEsK0NBQU1BLENBQUFBO0lBQ05BOztPQUVHQTtJQUNIQSxpREFBT0EsQ0FBQUE7SUFDUEE7O09BRUdBO0lBQ0hBLG1FQUFnQkEsQ0FBQUE7QUFDbEJBLENBQUNBLEVBYlcsa0JBQVUsS0FBVixrQkFBVSxRQWFyQjtBQWJELElBQVksVUFBVSxHQUFWLGtCQWFYLENBQUE7QUFFRCxnQkFBZ0IsR0FBZSxFQUFFLEdBQWU7SUFDOUNDLE1BQU1BLENBQUNBLENBQUNBLEdBQUdBLEtBQUtBLEdBQUdBLENBQUNBO1FBQ2JBLENBQUNBLEdBQUdBLEtBQUtBLFVBQVVBLENBQUNBLGdCQUFnQkEsSUFBSUEsR0FBR0EsS0FBS0EsVUFBVUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxDQUFDQTtBQUN0RkEsQ0FBQ0E7QUFRRDtJQWtDRUMscUNBQVlBLE9BQXNCQSxFQUFFQSxHQUE2QkE7UUFqQ2pFQyxjQUFTQSxHQUFxQkEsSUFBSUEsQ0FBQ0E7UUFDbkNBLGNBQVNBLEdBQXFCQSxJQUFJQSxDQUFDQTtRQUNuQ0EsY0FBU0EsR0FBcUJBLElBQUlBLENBQUNBO1FBQ25DQSxjQUFTQSxHQUFxQkEsSUFBSUEsQ0FBQ0E7UUFDbkNBLGNBQVNBLEdBQXFCQSxJQUFJQSxDQUFDQTtRQUNuQ0EsY0FBU0EsR0FBcUJBLElBQUlBLENBQUNBO1FBQ25DQSxjQUFTQSxHQUFxQkEsSUFBSUEsQ0FBQ0E7UUFDbkNBLGNBQVNBLEdBQXFCQSxJQUFJQSxDQUFDQTtRQUNuQ0EsY0FBU0EsR0FBcUJBLElBQUlBLENBQUNBO1FBQ25DQSxjQUFTQSxHQUFxQkEsSUFBSUEsQ0FBQ0E7UUFFbkNBLFdBQU1BLEdBQVdBLElBQUlBLENBQUNBO1FBQ3RCQSxXQUFNQSxHQUFXQSxJQUFJQSxDQUFDQTtRQUN0QkEsV0FBTUEsR0FBV0EsSUFBSUEsQ0FBQ0E7UUFDdEJBLFdBQU1BLEdBQVdBLElBQUlBLENBQUNBO1FBQ3RCQSxXQUFNQSxHQUFXQSxJQUFJQSxDQUFDQTtRQUN0QkEsV0FBTUEsR0FBV0EsSUFBSUEsQ0FBQ0E7UUFDdEJBLFdBQU1BLEdBQVdBLElBQUlBLENBQUNBO1FBQ3RCQSxXQUFNQSxHQUFXQSxJQUFJQSxDQUFDQTtRQUN0QkEsV0FBTUEsR0FBV0EsSUFBSUEsQ0FBQ0E7UUFDdEJBLFdBQU1BLEdBQVdBLElBQUlBLENBQUNBO1FBRXRCQSxnQkFBV0EsR0FBZUEsSUFBSUEsQ0FBQ0E7UUFDL0JBLGdCQUFXQSxHQUFlQSxJQUFJQSxDQUFDQTtRQUMvQkEsZ0JBQVdBLEdBQWVBLElBQUlBLENBQUNBO1FBQy9CQSxnQkFBV0EsR0FBZUEsSUFBSUEsQ0FBQ0E7UUFDL0JBLGdCQUFXQSxHQUFlQSxJQUFJQSxDQUFDQTtRQUMvQkEsZ0JBQVdBLEdBQWVBLElBQUlBLENBQUNBO1FBQy9CQSxnQkFBV0EsR0FBZUEsSUFBSUEsQ0FBQ0E7UUFDL0JBLGdCQUFXQSxHQUFlQSxJQUFJQSxDQUFDQTtRQUMvQkEsZ0JBQVdBLEdBQWVBLElBQUlBLENBQUNBO1FBQy9CQSxnQkFBV0EsR0FBZUEsSUFBSUEsQ0FBQ0E7UUFHN0JBLElBQUlBLE1BQU1BLEdBQUdBLEdBQUdBLENBQUNBLE1BQU1BLENBQUNBO1FBRXhCQSxFQUFFQSxDQUFDQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNmQSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQTtZQUNqQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0E7WUFDaENBLElBQUlBLENBQUNBLFdBQVdBLEdBQUdBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFVBQVVBLENBQUNBO1FBQ3ZDQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNmQSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQTtZQUNqQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0E7WUFDaENBLElBQUlBLENBQUNBLFdBQVdBLEdBQUdBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFVBQVVBLENBQUNBO1FBQ3ZDQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNmQSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQTtZQUNqQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0E7WUFDaENBLElBQUlBLENBQUNBLFdBQVdBLEdBQUdBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFVBQVVBLENBQUNBO1FBQ3ZDQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNmQSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQTtZQUNqQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0E7WUFDaENBLElBQUlBLENBQUNBLFdBQVdBLEdBQUdBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFVBQVVBLENBQUNBO1FBQ3ZDQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNmQSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQTtZQUNqQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0E7WUFDaENBLElBQUlBLENBQUNBLFdBQVdBLEdBQUdBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFVBQVVBLENBQUNBO1FBQ3ZDQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNmQSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQTtZQUNqQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0E7WUFDaENBLElBQUlBLENBQUNBLFdBQVdBLEdBQUdBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFVBQVVBLENBQUNBO1FBQ3ZDQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNmQSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQTtZQUNqQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0E7WUFDaENBLElBQUlBLENBQUNBLFdBQVdBLEdBQUdBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFVBQVVBLENBQUNBO1FBQ3ZDQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNmQSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQTtZQUNqQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0E7WUFDaENBLElBQUlBLENBQUNBLFdBQVdBLEdBQUdBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFVBQVVBLENBQUNBO1FBQ3ZDQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNmQSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQTtZQUNqQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0E7WUFDaENBLElBQUlBLENBQUNBLFdBQVdBLEdBQUdBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFVBQVVBLENBQUNBO1FBQ3ZDQSxDQUFDQTtRQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNmQSxJQUFJQSxDQUFDQSxTQUFTQSxHQUFHQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQTtZQUNqQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0E7WUFDaENBLElBQUlBLENBQUNBLFdBQVdBLEdBQUdBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLFVBQVVBLENBQUNBO1FBQ3ZDQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUVERCx3REFBa0JBLEdBQWxCQSxVQUFtQkEsS0FBYUE7UUFDOUJFLEVBQUVBLENBQUNBLENBQUNBLEtBQUtBLElBQUlBLENBQUNBLENBQUNBO1lBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBO1FBQ3RDQSxFQUFFQSxDQUFDQSxDQUFDQSxLQUFLQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQTtRQUN0Q0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0E7UUFDdENBLEVBQUVBLENBQUNBLENBQUNBLEtBQUtBLElBQUlBLENBQUNBLENBQUNBO1lBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBO1FBQ3RDQSxFQUFFQSxDQUFDQSxDQUFDQSxLQUFLQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxTQUFT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Q0FBQ0EsQ0FBQ0E7Z0JBQzVCQSxJQUFJQSxDQUFDQSxJQUFJQSxHQUFHQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtZQUNuREEsQ0FBQ0E7WUFDREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDbkJBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLE1BQU1BLEtBQUtBLEtBQUtBLElBQUlBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLFdBQVdBLEVBQUVBLFVBQVVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzVEQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxLQUFLQSxpQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzVCQSxJQUFJQSxDQUFDQSxJQUFJQSxHQUFHQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtZQUNuREEsQ0FBQ0E7WUFDREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDbkJBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLE1BQU1BLEtBQUtBLEtBQUtBLElBQUlBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLFdBQVdBLEVBQUVBLFVBQVVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzVEQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxLQUFLQSxpQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzVCQSxJQUFJQSxDQUFDQSxJQUFJQSxHQUFHQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtZQUNuREEsQ0FBQ0E7WUFDREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDbkJBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLE1BQU1BLEtBQUtBLEtBQUtBLElBQUlBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLFdBQVdBLEVBQUVBLFVBQVVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzVEQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxLQUFLQSxpQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzVCQSxJQUFJQSxDQUFDQSxJQUFJQSxHQUFHQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtZQUNuREEsQ0FBQ0E7WUFDREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDbkJBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLE1BQU1BLEtBQUtBLEtBQUtBLElBQUlBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLFdBQVdBLEVBQUVBLFVBQVVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzVEQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxLQUFLQSxpQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzVCQSxJQUFJQSxDQUFDQSxJQUFJQSxHQUFHQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtZQUNuREEsQ0FBQ0E7WUFDREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDbkJBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLE1BQU1BLEtBQUtBLEtBQUtBLElBQUlBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLFdBQVdBLEVBQUVBLFVBQVVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzVEQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxLQUFLQSxpQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzVCQSxJQUFJQSxDQUFDQSxJQUFJQSxHQUFHQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtZQUNuREEsQ0FBQ0E7WUFDREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDbkJBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLE1BQU1BLEtBQUtBLEtBQUtBLElBQUlBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLFdBQVdBLEVBQUVBLFVBQVVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzVEQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxLQUFLQSxpQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzVCQSxJQUFJQSxDQUFDQSxJQUFJQSxHQUFHQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtZQUNuREEsQ0FBQ0E7WUFDREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDbkJBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLE1BQU1BLEtBQUtBLEtBQUtBLElBQUlBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLFdBQVdBLEVBQUVBLFVBQVVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzVEQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxLQUFLQSxpQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzVCQSxJQUFJQSxDQUFDQSxJQUFJQSxHQUFHQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtZQUNuREEsQ0FBQ0E7WUFDREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDbkJBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLE1BQU1BLEtBQUtBLEtBQUtBLElBQUlBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLFdBQVdBLEVBQUVBLFVBQVVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzVEQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxLQUFLQSxpQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzVCQSxJQUFJQSxDQUFDQSxJQUFJQSxHQUFHQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtZQUNuREEsQ0FBQ0E7WUFDREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDbkJBLENBQUNBO1FBQ0RBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLE1BQU1BLEtBQUtBLEtBQUtBLElBQUlBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLFdBQVdBLEVBQUVBLFVBQVVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQzVEQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxLQUFLQSxpQkFBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzVCQSxJQUFJQSxDQUFDQSxJQUFJQSxHQUFHQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtZQUNuREEsQ0FBQ0E7WUFDREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDbkJBLENBQUNBO1FBRURBLE1BQU1BLENBQUNBLGlCQUFTQSxDQUFDQTtJQUNuQkEsQ0FBQ0E7SUFFREosOENBQWFBLEdBQWJBLFVBQWNBLEtBQWFBO1FBQ3pCSyxFQUFFQSxDQUFDQSxDQUFDQSxLQUFLQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQTtRQUNqQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDakNBLEVBQUVBLENBQUNBLENBQUNBLEtBQUtBLElBQUlBLENBQUNBLENBQUNBO1lBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBO1FBQ2pDQSxFQUFFQSxDQUFDQSxDQUFDQSxLQUFLQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQTtRQUNqQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDakNBLEVBQUVBLENBQUNBLENBQUNBLEtBQUtBLElBQUlBLENBQUNBLENBQUNBO1lBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBO1FBQ2pDQSxFQUFFQSxDQUFDQSxDQUFDQSxLQUFLQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQTtRQUNqQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDakNBLEVBQUVBLENBQUNBLENBQUNBLEtBQUtBLElBQUlBLENBQUNBLENBQUNBO1lBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBO1FBQ2pDQSxFQUFFQSxD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UUEsQ0FBQ0E7UUFDYkEsSUFBSUEsR0FBUUEsQ0FBQ0E7UUFDYkEsSUFBSUEsR0FBUUEsQ0FBQ0E7UUFDYkEsSUFBSUEsR0FBUUEsQ0FBQ0E7UUFDYkEsSUFBSUEsR0FBUUEsQ0FBQ0E7UUFDYkEsSUFBSUEsR0FBUUEsQ0FBQ0E7UUFDYkEsSUFBSUEsQ0FBQ0E7WUFDSEEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUM5RUEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUM5RUEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUM5RUEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUM5RUEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUM5RUEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUM5RUEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUM5RUEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUM5RUEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUM5RUEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUM5RUEsR0FBR0EsR0FBR0EsTUFBTUEsR0FBR0EsRUFBRUEsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUNqRkEsR0FBR0EsR0FBR0EsTUFBTUEsR0FBR0EsRUFBRUEsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUNqRkEsR0FBR0EsR0FBR0EsTUFBTUEsR0FBR0EsRUFBRUEsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUNqRkEsR0FBR0EsR0FBR0EsTUFBTUEsR0FBR0EsRUFBRUEsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUNqRkEsR0FBR0EsR0FBR0EsTUFBTUEsR0FBR0EsRUFBRUEsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUNqRkEsR0FBR0EsR0FBR0EsTUFBTUEsR0FBR0EsRUFBRUEsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUNqRkEsR0FBR0EsR0FBR0EsTUFBTUEsR0FBR0EsRUFBRUEsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUNqRkEsR0FBR0EsR0FBR0EsTUFBTUEsR0FBR0EsRUFBRUEsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUNqRkEsR0FBR0EsR0FBR0EsTUFBTUEsR0FBR0EsRUFBRUEsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUNqRkEsR0FBR0EsR0FBR0EsTUFBTUEsR0FBR0EsRUFBRUEsR0FBR0EsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxFQUFFQSxVQUFVQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtRQUNuRkEsQ0FBRUE7UUFBQUEsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDWEEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsWUFBWUEsa0NBQXFCQSxJQUFJQSxDQUFDQSxZQUFZQSwrQkFBa0JBLENBQUNBLENBQUNBLENBQUNBO2dCQUMxRUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsRUFBRUEsUUFBUUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0E7WUFDL0JBLENBQUNBO1lBQ0RBLE1BQU1BLENBQUNBLENBQUNBO1FBQ1ZBLENBQUNBO1FBRURBLElBQUlBLEdBQUdBLENBQUNBO1FBQ1JBLElBQUlBLENBQUNBO1lBQ0hBLE1BQU1BLENBQUNBLENBQUNBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBO2dCQUNmQSxLQUFLQSxDQUFDQTtvQkFDSkEsR0FBR0EsR0FBR0EsT0FBT0EsRUFBRUEsQ0FBQ0E7b0JBQ2hCQSxLQUFLQSxDQUFDQTtnQkFDUkEsS0FBS0EsQ0FBQ0E7b0JBQ0pBLEdBQUdBLEdBQUdBLE9BQU9BLENBQUNBLEVBQUVBLENBQUNBLENBQUNBO29CQUNsQkEsS0FBS0EsQ0FBQ0E7Z0JBQ1JBLEtBQUtBLENBQUNBO29CQUNKQSxHQUFHQSxHQUFHQSxPQUFPQSxDQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxDQUFDQSxDQUFDQTtvQkFDdEJBLEtBQUtBLENBQUNBO2dCQUNSQSxLQUFLQSxDQUFDQTtvQkFDSkEsR0FBR0EsR0FBR0EsT0FBT0EsQ0FBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsQ0FBQ0EsQ0FBQ0E7b0JBQzFCQSxLQUFLQSxDQUFDQTtnQkFDUkEsS0FBS0EsQ0FBQ0E7b0JBQ0pBLEdBQUdBLEdBQUdBLE9BQU9BLENBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBO29CQUM5QkEsS0FBS0EsQ0FBQ0E7Z0JBQ1JBLEtBQUtBLENBQUNBO29CQUNKQSxHQUFHQSxHQUFHQSxPQUFPQSxDQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxDQUFDQSxDQUFDQTtvQkFDbENBLEtBQUtBLENBQUNBO2dCQUNSQSxLQUFLQSxDQUFDQTtvQkFDSkEsR0FBR0EsR0FBR0EsT0FBT0EsQ0FBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsQ0FBQ0EsQ0FBQ0E7b0JBQ3RDQSxLQUFLQSxDQUFDQTtnQkFDUkEsS0FBS0EsQ0FBQ0E7b0JBQ0pBLEdBQUdBLEdBQUdBLE9BQU9BLENBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBO29CQUMxQ0EsS0FBS0EsQ0FBQ0E7Z0JBQ1JBLEtBQUtBLENBQUNBO29CQUNKQSxHQUFHQSxHQUFHQSxPQUFPQSxDQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxDQUFDQSxDQUFDQTtvQkFDOUNBLEtBQUtBLENBQUNBO2dCQUNSQSxLQUFLQSxDQUFDQTtvQkFDSkEsR0FBR0EsR0FBR0EsT0FBT0EsQ0FBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsQ0FBQ0EsQ0FBQ0E7b0JBQ2xEQSxLQUFLQSxDQUFDQTtnQkFDUkEsS0FBS0EsRUFBRUE7b0JBQ0xBLEdBQUdBLEdBQUdBLE9BQU9BLENBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBO29CQUN0REEsS0FBS0EsQ0FBQ0E7Z0JBQ1JBLEtBQUtBLEVBQUVBO29CQUNMQSxHQUFHQSxHQUFHQSxPQUFPQSxDQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQTtvQkFDM0RBLEtBQUtBLENBQUNBO2dCQUNSQSxLQUFLQSxFQUFFQTtvQkFDTEEsR0FBR0EsR0FBR0EsT0FBT0EsQ0FBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0E7b0JBQ2hFQSxLQUFLQSxDQUFDQTtnQkFDUkEsS0FBS0EsRUFBRUE7b0JBQ0xBLEdBQUdBLEdBQUdBLE9BQU9BLENBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBO29CQUNyRUEsS0FBS0EsQ0FBQ0E7Z0JBQ1JBLEtBQUtBLEVBQUVBO29CQUNMQSxHQUFHQSxHQUFHQSxPQUFPQSxDQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQTtvQkFDMUVBLEtBQUtBLENBQUNBO2dCQUNSQSxLQUFLQSxFQUFFQTtvQkFDTEEsR0FBR0EsR0FBR0EsT0FBT0EsQ0FBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0E7b0JBQy9FQSxLQUFLQSxDQUFDQTtnQkFDUkEsS0FBS0EsRUFBRUE7b0JBQ0xBLEdBQUdBLEdBQUdBLE9BQU9BLENBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBO29CQUNwRkEsS0FBS0EsQ0FBQ0E7Z0JBQ1JBLEtBQUtBLEVBQUVBO29CQUNMQSxHQUFHQSxHQUFHQSxPQUFPQSxDQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQTtvQkFDekZBLEtBQUtBLENBQUNBO2dCQUNSQSxLQUFLQSxFQUFFQTtvQkFDTEEsR0FBR0EsR0FBR0EsT0FBT0EsQ0FBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFDekVBLEdBQUdBLENBQUNBLENBQUNBO29CQUNuQkEsS0FBS0EsQ0FBQ0E7Z0JBQ1JBLEtBQUtBLEVBQUVBO29CQUNMQSxHQUFHQSxHQUFHQSxPQUFPQSxDQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUN6RUEsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0E7b0JBQ3hCQSxLQUFLQSxDQUFDQTtnQkFDUkEsS0FBS0EsRUFBRUE7b0JBQ0xBLEdBQUdBLEdBQUdBLE9BQU9BLENBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01hcCwgTWFwV3JhcHBlciwgTGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1xuICBSZXNvbHZlZFByb3ZpZGVyLFxuICBQcm92aWRlcixcbiAgRGVwZW5kZW5jeSxcbiAgUHJvdmlkZXJCdWlsZGVyLFxuICBSZXNvbHZlZEZhY3RvcnksXG4gIHByb3ZpZGUsXG4gIHJlc29sdmVQcm92aWRlcnNcbn0gZnJvbSAnLi9wcm92aWRlcic7XG5pbXBvcnQge1xuICBBYnN0cmFjdFByb3ZpZGVyRXJyb3IsXG4gIE5vUHJvdmlkZXJFcnJvcixcbiAgQ3ljbGljRGVwZW5kZW5jeUVycm9yLFxuICBJbnN0YW50aWF0aW9uRXJyb3IsXG4gIEludmFsaWRQcm92aWRlckVycm9yLFxuICBPdXRPZkJvdW5kc0Vycm9yXG59IGZyb20gJy4vZXhjZXB0aW9ucyc7XG5pbXBvcnQge0Z1bmN0aW9uV3JhcHBlciwgVHlwZSwgaXNQcmVzZW50LCBpc0JsYW5rLCBDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtLZXl9IGZyb20gJy4va2V5JztcbmltcG9ydCB7U2VsZk1ldGFkYXRhLCBIb3N0TWV0YWRhdGEsIFNraXBTZWxmTWV0YWRhdGF9IGZyb20gJy4vbWV0YWRhdGEnO1xuXG4vLyBUaHJlc2hvbGQgZm9yIHRoZSBkeW5hbWljIHZlcnNpb25cbmNvbnN0IF9NQVhfQ09OU1RSVUNUSU9OX0NPVU5URVIgPSAxMDtcblxuZXhwb3J0IGNvbnN0IFVOREVGSU5FRDogT2JqZWN0ID0gQ09OU1RfRVhQUihuZXcgT2JqZWN0KCkpO1xuXG4vKipcbiAqIFZpc2liaWxpdHkgb2YgYSB7QGxpbmsgUHJvdmlkZXJ9LlxuICovXG5leHBvcnQgZW51bSBWaXNpYmlsaXR5IHtcbiAgLyoqXG4gICAqIEEgYFB1YmxpY2Age0BsaW5rIFByb3ZpZGVyfSBpcyBvbmx5IHZpc2libGUgdG8gcmVndWxhciAoYXMgb3Bwb3NlZCB0byBob3N0KSBjaGlsZCBpbmplY3RvcnMuXG4gICAqL1xuICBQdWJsaWMsXG4gIC8qKlxuICAgKiBBIGBQcml2YXRlYCB7QGxpbmsgUHJvdmlkZXJ9IGlzIG9ubHkgdmlzaWJsZSB0byBob3N0IChhcyBvcHBvc2VkIHRvIHJlZ3VsYXIpIGNoaWxkIGluamVjdG9ycy5cbiAgICovXG4gIFByaXZhdGUsXG4gIC8qKlxuICAgKiBBIGBQdWJsaWNBbmRQcml2YXRlYCB7QGxpbmsgUHJvdmlkZXJ9IGlzIHZpc2libGUgdG8gYm90aCBob3N0IGFuZCByZWd1bGFyIGNoaWxkIGluamVjdG9ycy5cbiAgICovXG4gIFB1YmxpY0FuZFByaXZhdGVcbn1cblxuZnVuY3Rpb24gY2FuU2VlKHNyYzogVmlzaWJpbGl0eSwgZHN0OiBWaXNpYmlsaXR5KTogYm9vbGVhbiB7XG4gIHJldHVybiAoc3JjID09PSBkc3QpIHx8XG4gICAgICAgICAoZHN0ID09PSBWaXNpYmlsaXR5LlB1YmxpY0FuZFByaXZhdGUgfHwgc3JjID09PSBWaXNpYmlsaXR5LlB1YmxpY0FuZFByaXZhdGUpO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdG9JbmplY3RvclN0cmF0ZWd5IHtcbiAgZ2V0UHJvdmlkZXJBdEluZGV4KGluZGV4OiBudW1iZXIpOiBSZXNvbHZlZFByb3ZpZGVyO1xuICBjcmVhdGVJbmplY3RvclN0cmF0ZWd5KGluajogSW5qZWN0b3IpOiBJbmplY3RvclN0cmF0ZWd5O1xufVxuXG5leHBvcnQgY2xhc3MgUHJvdG9JbmplY3RvcklubGluZVN0cmF0ZWd5IGltcGxlbWVudHMgUHJvdG9JbmplY3RvclN0cmF0ZWd5IHtcbiAgcHJvdmlkZXIwOiBSZXNvbHZlZFByb3ZpZGVyID0gbnVsbDtcbiAgcHJvdmlkZXIxOiBSZXNvbHZlZFByb3ZpZGVyID0gbnVsbDtcbiAgcHJvdmlkZXIyOiBSZXNvbHZlZFByb3ZpZGVyID0gbnVsbDtcbiAgcHJvdmlkZXIzOiBSZXNvbHZlZFByb3ZpZGVyID0gbnVsbDtcbiAgcHJvdmlkZXI0OiBSZXNvbHZlZFByb3ZpZGVyID0gbnVsbDtcbiAgcHJvdmlkZXI1OiBSZXNvbHZlZFByb3ZpZGVyID0gbnVsbDtcbiAgcHJvdmlkZXI2OiBSZXNvbHZlZFByb3ZpZGVyID0gbnVsbDtcbiAgcHJvdmlkZXI3OiBSZXNvbHZlZFByb3ZpZGVyID0gbnVsbDtcbiAgcHJvdmlkZXI4OiBSZXNvbHZlZFByb3ZpZGVyID0gbnVsbDtcbiAgcHJvdmlkZXI5OiBSZXNvbHZlZFByb3ZpZGVyID0gbnVsbDtcblxuICBrZXlJZDA6IG51bWJlciA9IG51bGw7XG4gIGtleUlkMTogbnVtYmVyID0gbnVsbDtcbiAga2V5SWQyOiBudW1iZXIgPSBudWxsO1xuICBrZXlJZDM6IG51bWJlciA9IG51bGw7XG4gIGtleUlkNDogbnVtYmVyID0gbnVsbDtcbiAga2V5SWQ1OiBudW1iZXIgPSBudWxsO1xuICBrZXlJZDY6IG51bWJlciA9IG51bGw7XG4gIGtleUlkNzogbnVtYmVyID0gbnVsbDtcbiAga2V5SWQ4OiBudW1iZXIgPSBudWxsO1xuICBrZXlJZDk6IG51bWJlciA9IG51bGw7XG5cbiAgdmlzaWJpbGl0eTA6IFZpc2liaWxpdHkgPSBudWxsO1xuICB2aXNpYmlsaXR5MTogVmlzaWJpbGl0eSA9IG51bGw7XG4gIHZpc2liaWxpdHkyOiBWaXNpYmlsaXR5ID0gbnVsbDtcbiAgdmlzaWJpbGl0eTM6IFZpc2liaWxpdHkgPSBudWxsO1xuICB2aXNpYmlsaXR5NDogVmlzaWJpbGl0eSA9IG51bGw7XG4gIHZpc2liaWxpdHk1OiBWaXNpYmlsaXR5ID0gbnVsbDtcbiAgdmlzaWJpbGl0eTY6IFZpc2liaWxpdHkgPSBudWxsO1xuICB2aXNpYmlsaXR5NzogVmlzaWJpbGl0eSA9IG51bGw7XG4gIHZpc2liaWxpdHk4OiBWaXNpYmlsaXR5ID0gbnVsbDtcbiAgdmlzaWJpbGl0eTk6IFZpc2liaWxpdHkgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RvRUk6IFByb3RvSW5qZWN0b3IsIGJ3djogUHJvdmlkZXJXaXRoVmlzaWJpbGl0eVtdKSB7XG4gICAgdmFyIGxlbmd0aCA9IGJ3di5sZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5wcm92aWRlcjAgPSBid3ZbMF0ucHJvdmlkZXI7XG4gICAgICB0aGlzLmtleUlkMCA9IGJ3dlswXS5nZXRLZXlJZCgpO1xuICAgICAgdGhpcy52aXNpYmlsaXR5MCA9IGJ3dlswXS52aXNpYmlsaXR5O1xuICAgIH1cbiAgICBpZiAobGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5wcm92aWRlcjEgPSBid3ZbMV0ucHJvdmlkZXI7XG4gICAgICB0aGlzLmtleUlkMSA9IGJ3dlsxXS5nZXRLZXlJZCgpO1xuICAgICAgdGhpcy52aXNpYmlsaXR5MSA9IGJ3dlsxXS52aXNpYmlsaXR5O1xuICAgIH1cbiAgICBpZiAobGVuZ3RoID4gMikge1xuICAgICAgdGhpcy5wcm92aWRlcjIgPSBid3ZbMl0ucHJvdmlkZXI7XG4gICAgICB0aGlzLmtleUlkMiA9IGJ3dlsyXS5nZXRLZXlJZCgpO1xuICAgICAgdGhpcy52aXNpYmlsaXR5MiA9IGJ3dlsyXS52aXNpYmlsaXR5O1xuICAgIH1cbiAgICBpZiAobGVuZ3RoID4gMykge1xuICAgICAgdGhpcy5wcm92aWRlcjMgPSBid3ZbM10ucHJvdmlkZXI7XG4gICAgICB0aGlzLmtleUlkMyA9IGJ3dlszXS5nZXRLZXlJZCgpO1xuICAgICAgdGhpcy52aXNpYmlsaXR5MyA9IGJ3dlszXS52aXNpYmlsaXR5O1xuICAgIH1cbiAgICBpZiAobGVuZ3RoID4gNCkge1xuICAgICAgdGhpcy5wcm92aWRlcjQgPSBid3ZbNF0ucHJvdmlkZXI7XG4gICAgICB0aGlzLmtleUlkNCA9IGJ3dls0XS5nZXRLZXlJZCgpO1xuICAgICAgdGhpcy52aXNpYmlsaXR5NCA9IGJ3dls0XS52aXNpYmlsaXR5O1xuICAgIH1cbiAgICBpZiAobGVuZ3RoID4gNSkge1xuICAgICAgdGhpcy5wcm92aWRlcjUgPSBid3ZbNV0ucHJvdmlkZXI7XG4gICAgICB0aGlzLmtleUlkNSA9IGJ3dls1XS5nZXRLZXlJZCgpO1xuICAgICAgdGhpcy52aXNpYmlsaXR5NSA9IGJ3dls1XS52aXNpYmlsaXR5O1xuICAgIH1cbiAgICBpZiAobGVuZ3RoID4gNikge1xuICAgICAgdGhpcy5wcm92aWRlcjYgPSBid3ZbNl0ucHJvdmlkZXI7XG4gICAgICB0aGlzLmtleUlkNiA9IGJ3dls2XS5nZXRLZXlJZCgpO1xuICAgICAgdGhpcy52aXNpYmlsaXR5NiA9IGJ3dls2XS52aXNpYmlsaXR5O1xuICAgIH1cbiAgICBpZiAobGVuZ3RoID4gNykge1xuICAgICAgdGhpcy5wcm92aWRlcjcgPSBid3ZbN10ucHJvdmlkZXI7XG4gICAgICB0aGlzLmtleUlkNyA9IGJ3dls3XS5nZXRLZXlJZCgpO1xuICAgICAgdGhpcy52aXNpYmlsaXR5NyA9IGJ3dls3XS52aXNpYmlsaXR5O1xuICAgIH1cbiAgICBpZiAobGVuZ3RoID4gOCkge1xuICAgICAgdGhpcy5wcm92aWRlcjggPSBid3ZbOF0ucHJvdmlkZXI7XG4gICAgICB0aGlzLmtleUlkOCA9IGJ3dls4XS5nZXRLZXlJZCgpO1xuICAgICAgdGhpcy52aXNpYmlsaXR5OCA9IGJ3dls4XS52aXNpYmlsaXR5O1xuICAgIH1cbiAgICBpZiAobGVuZ3RoID4gOSkge1xuICAgICAgdGhpcy5wcm92aWRlcjkgPSBid3ZbOV0ucHJvdmlkZXI7XG4gICAgICB0aGlzLmtleUlkOSA9IGJ3dls5XS5nZXRLZXlJZCgpO1xuICAgICAgdGhpcy52aXNpYmlsaXR5OSA9IGJ3dls5XS52aXNpYmlsaXR5O1xuICAgIH1cbiAgfVxuXG4gIGdldFByb3ZpZGVyQXRJbmRleChpbmRleDogbnVtYmVyKTogUmVzb2x2ZWRQcm92aWRlciB7XG4gICAgaWYgKGluZGV4ID09IDApIHJldHVybiB0aGlzLnByb3ZpZGVyMDtcbiAgICBpZiAoaW5kZXggPT0gMSkgcmV0dXJuIHRoaXMucHJvdmlkZXIxO1xuICAgIGlmIChpbmRleCA9PSAyKSByZXR1cm4gdGhpcy5wcm92aWRlcjI7XG4gICAgaWYgKGluZGV4ID09IDMpIHJldHVybiB0aGlzLnByb3ZpZGVyMztcbiAgICBpZiAoaW5kZXggPT0gNCkgcmV0dXJuIHRoaXMucHJvdmlkZXI0O1xuICAgIGlmIChpbmRleCA9PSA1KSByZXR1cm4gdGhpcy5wcm92aWRlcjU7XG4gICAgaWYgKGluZGV4ID09IDYpIHJldHVybiB0aGlzLnByb3ZpZGVyNjtcbiAgICBpZiAoaW5kZXggPT0gNykgcmV0dXJuIHRoaXMucHJvdmlkZXI3O1xuICAgIGlmIChpbmRleCA9PSA4KSByZXR1cm4gdGhpcy5wcm92aWRlcjg7XG4gICAgaWYgKGluZGV4ID09IDkpIHJldHVybiB0aGlzLnByb3ZpZGVyOTtcbiAgICB0aHJvdyBuZXcgT3V0T2ZCb3VuZHNFcnJvcihpbmRleCk7XG4gIH1cblxuICBjcmVhdGVJbmplY3RvclN0cmF0ZWd5KGluamVjdG9yOiBJbmplY3Rvcik6IEluamVjdG9yU3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgSW5qZWN0b3JJbmxpbmVTdHJhdGVneShpbmplY3RvciwgdGhpcyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb3RvSW5qZWN0b3JEeW5hbWljU3RyYXRlZ3kgaW1wbGVtZW50cyBQcm90b0luamVjdG9yU3RyYXRlZ3kge1xuICBwcm92aWRlcnM6IFJlc29sdmVkUHJvdmlkZXJbXTtcbiAga2V5SWRzOiBudW1iZXJbXTtcbiAgdmlzaWJpbGl0aWVzOiBWaXNpYmlsaXR5W107XG5cbiAgY29uc3RydWN0b3IocHJvdG9Jbmo6IFByb3RvSW5qZWN0b3IsIGJ3djogUHJvdmlkZXJXaXRoVmlzaWJpbGl0eVtdKSB7XG4gICAgdmFyIGxlbiA9IGJ3di5sZW5ndGg7XG5cbiAgICB0aGlzLnByb3ZpZGVycyA9IExpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZShsZW4pO1xuICAgIHRoaXMua2V5SWRzID0gTGlzdFdyYXBwZXIuY3JlYXRlRml4ZWRTaXplKGxlbik7XG4gICAgdGhpcy52aXNpYmlsaXRpZXMgPSBMaXN0V3JhcHBlci5jcmVhdGVGaXhlZFNpemUobGVuKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHRoaXMucHJvdmlkZXJzW2ldID0gYnd2W2ldLnByb3ZpZGVyO1xuICAgICAgdGhpcy5rZXlJZHNbaV0gPSBid3ZbaV0uZ2V0S2V5SWQoKTtcbiAgICAgIHRoaXMudmlzaWJpbGl0aWVzW2ldID0gYnd2W2ldLnZpc2liaWxpdHk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvdmlkZXJBdEluZGV4KGluZGV4OiBudW1iZXIpOiBSZXNvbHZlZFByb3ZpZGVyIHtcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMucHJvdmlkZXJzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IE91dE9mQm91bmRzRXJyb3IoaW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm92aWRlcnNbaW5kZXhdO1xuICB9XG5cbiAgY3JlYXRlSW5qZWN0b3JTdHJhdGVneShlaTogSW5qZWN0b3IpOiBJbmplY3RvclN0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IEluamVjdG9yRHluYW1pY1N0cmF0ZWd5KHRoaXMsIGVpKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvdG9JbmplY3RvciB7XG4gIHN0YXRpYyBmcm9tUmVzb2x2ZWRQcm92aWRlcnMocHJvdmlkZXJzOiBSZXNvbHZlZFByb3ZpZGVyW10pOiBQcm90b0luamVjdG9yIHtcbiAgICB2YXIgYmQgPSBwcm92aWRlcnMubWFwKGIgPT4gbmV3IFByb3ZpZGVyV2l0aFZpc2liaWxpdHkoYiwgVmlzaWJpbGl0eS5QdWJsaWMpKTtcbiAgICByZXR1cm4gbmV3IFByb3RvSW5qZWN0b3IoYmQpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfc3RyYXRlZ3k6IFByb3RvSW5qZWN0b3JTdHJhdGVneTtcbiAgbnVtYmVyT2ZQcm92aWRlcnM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihid3Y6IFByb3ZpZGVyV2l0aFZpc2liaWxpdHlbXSkge1xuICAgIHRoaXMubnVtYmVyT2ZQcm92aWRlcnMgPSBid3YubGVuZ3RoO1xuICAgIHRoaXMuX3N0cmF0ZWd5ID0gYnd2Lmxlbmd0aCA+IF9NQVhfQ09OU1RSVUNUSU9OX0NPVU5URVIgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQcm90b0luamVjdG9yRHluYW1pY1N0cmF0ZWd5KHRoaXMsIGJ3dikgOlxuICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQcm90b0luamVjdG9ySW5saW5lU3RyYXRlZ3kodGhpcywgYnd2KTtcbiAgfVxuXG4gIGdldFByb3ZpZGVyQXRJbmRleChpbmRleDogbnVtYmVyKTogUmVzb2x2ZWRQcm92aWRlciB7XG4gICAgcmV0dXJuIHRoaXMuX3N0cmF0ZWd5LmdldFByb3ZpZGVyQXRJbmRleChpbmRleCk7XG4gIH1cbn1cblxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5qZWN0b3JTdHJhdGVneSB7XG4gIGdldE9iakJ5S2V5SWQoa2V5SWQ6IG51bWJlciwgdmlzaWJpbGl0eTogVmlzaWJpbGl0eSk6IGFueTtcbiAgZ2V0T2JqQXRJbmRleChpbmRleDogbnVtYmVyKTogYW55O1xuICBnZXRNYXhOdW1iZXJPZk9iamVjdHMoKTogbnVtYmVyO1xuXG4gIHJlc2V0Q29uc3RydWN0aW9uQ291bnRlcigpOiB2b2lkO1xuICBpbnN0YW50aWF0ZVByb3ZpZGVyKHByb3ZpZGVyOiBSZXNvbHZlZFByb3ZpZGVyLCB2aXNpYmlsaXR5OiBWaXNpYmlsaXR5KTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgSW5qZWN0b3JJbmxpbmVTdHJhdGVneSBpbXBsZW1lbnRzIEluamVjdG9yU3RyYXRlZ3kge1xuICBvYmowOiBhbnkgPSBVTkRFRklORUQ7XG4gIG9iajE6IGFueSA9IFVOREVGSU5FRDtcbiAgb2JqMjogYW55ID0gVU5ERUZJTkVEO1xuICBvYmozOiBhbnkgPSBVTkRFRklORUQ7XG4gIG9iajQ6IGFueSA9IFVOREVGSU5FRDtcbiAgb2JqNTogYW55ID0gVU5ERUZJTkVEO1xuICBvYmo2OiBhbnkgPSBVTkRFRklORUQ7XG4gIG9iajc6IGFueSA9IFVOREVGSU5FRDtcbiAgb2JqODogYW55ID0gVU5ERUZJTkVEO1xuICBvYmo5OiBhbnkgPSBVTkRFRklORUQ7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGluamVjdG9yOiBJbmplY3RvciwgcHVibGljIHByb3RvU3RyYXRlZ3k6IFByb3RvSW5qZWN0b3JJbmxpbmVTdHJhdGVneSkge31cblxuICByZXNldENvbnN0cnVjdGlvbkNvdW50ZXIoKTogdm9pZCB7IHRoaXMuaW5qZWN0b3IuX2NvbnN0cnVjdGlvbkNvdW50ZXIgPSAwOyB9XG5cbiAgaW5zdGFudGlhdGVQcm92aWRlcihwcm92aWRlcjogUmVzb2x2ZWRQcm92aWRlciwgdmlzaWJpbGl0eTogVmlzaWJpbGl0eSk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuX25ldyhwcm92aWRlciwgdmlzaWJpbGl0eSk7XG4gIH1cblxuICBnZXRPYmpCeUtleUlkKGtleUlkOiBudW1iZXIsIHZpc2liaWxpdHk6IFZpc2liaWxpdHkpOiBhbnkge1xuICAgIHZhciBwID0gdGhpcy5wcm90b1N0cmF0ZWd5O1xuICAgIHZhciBpbmogPSB0aGlzLmluamVjdG9yO1xuXG4gICAgaWYgKHAua2V5SWQwID09PSBrZXlJZCAmJiBjYW5TZWUocC52aXNpYmlsaXR5MCwgdmlzaWJpbGl0eSkpIHtcbiAgICAgIGlmICh0aGlzLm9iajAgPT09IFVOREVGSU5FRCkge1xuICAgICAgICB0aGlzLm9iajAgPSBpbmouX25ldyhwLnByb3ZpZGVyMCwgcC52aXNpYmlsaXR5MCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5vYmowO1xuICAgIH1cbiAgICBpZiAocC5rZXlJZDEgPT09IGtleUlkICYmIGNhblNlZShwLnZpc2liaWxpdHkxLCB2aXNpYmlsaXR5KSkge1xuICAgICAgaWYgKHRoaXMub2JqMSA9PT0gVU5ERUZJTkVEKSB7XG4gICAgICAgIHRoaXMub2JqMSA9IGluai5fbmV3KHAucHJvdmlkZXIxLCBwLnZpc2liaWxpdHkxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm9iajE7XG4gICAgfVxuICAgIGlmIChwLmtleUlkMiA9PT0ga2V5SWQgJiYgY2FuU2VlKHAudmlzaWJpbGl0eTIsIHZpc2liaWxpdHkpKSB7XG4gICAgICBpZiAodGhpcy5vYmoyID09PSBVTkRFRklORUQpIHtcbiAgICAgICAgdGhpcy5vYmoyID0gaW5qLl9uZXcocC5wcm92aWRlcjIsIHAudmlzaWJpbGl0eTIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMub2JqMjtcbiAgICB9XG4gICAgaWYgKHAua2V5SWQzID09PSBrZXlJZCAmJiBjYW5TZWUocC52aXNpYmlsaXR5MywgdmlzaWJpbGl0eSkpIHtcbiAgICAgIGlmICh0aGlzLm9iajMgPT09IFVOREVGSU5FRCkge1xuICAgICAgICB0aGlzLm9iajMgPSBpbmouX25ldyhwLnByb3ZpZGVyMywgcC52aXNpYmlsaXR5Myk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5vYmozO1xuICAgIH1cbiAgICBpZiAocC5rZXlJZDQgPT09IGtleUlkICYmIGNhblNlZShwLnZpc2liaWxpdHk0LCB2aXNpYmlsaXR5KSkge1xuICAgICAgaWYgKHRoaXMub2JqNCA9PT0gVU5ERUZJTkVEKSB7XG4gICAgICAgIHRoaXMub2JqNCA9IGluai5fbmV3KHAucHJvdmlkZXI0LCBwLnZpc2liaWxpdHk0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm9iajQ7XG4gICAgfVxuICAgIGlmIChwLmtleUlkNSA9PT0ga2V5SWQgJiYgY2FuU2VlKHAudmlzaWJpbGl0eTUsIHZpc2liaWxpdHkpKSB7XG4gICAgICBpZiAodGhpcy5vYmo1ID09PSBVTkRFRklORUQpIHtcbiAgICAgICAgdGhpcy5vYmo1ID0gaW5qLl9uZXcocC5wcm92aWRlcjUsIHAudmlzaWJpbGl0eTUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMub2JqNTtcbiAgICB9XG4gICAgaWYgKHAua2V5SWQ2ID09PSBrZXlJZCAmJiBjYW5TZWUocC52aXNpYmlsaXR5NiwgdmlzaWJpbGl0eSkpIHtcbiAgICAgIGlmICh0aGlzLm9iajYgPT09IFVOREVGSU5FRCkge1xuICAgICAgICB0aGlzLm9iajYgPSBpbmouX25ldyhwLnByb3ZpZGVyNiwgcC52aXNpYmlsaXR5Nik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5vYmo2O1xuICAgIH1cbiAgICBpZiAocC5rZXlJZDcgPT09IGtleUlkICYmIGNhblNlZShwLnZpc2liaWxpdHk3LCB2aXNpYmlsaXR5KSkge1xuICAgICAgaWYgKHRoaXMub2JqNyA9PT0gVU5ERUZJTkVEKSB7XG4gICAgICAgIHRoaXMub2JqNyA9IGluai5fbmV3KHAucHJvdmlkZXI3LCBwLnZpc2liaWxpdHk3KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm9iajc7XG4gICAgfVxuICAgIGlmIChwLmtleUlkOCA9PT0ga2V5SWQgJiYgY2FuU2VlKHAudmlzaWJpbGl0eTgsIHZpc2liaWxpdHkpKSB7XG4gICAgICBpZiAodGhpcy5vYmo4ID09PSBVTkRFRklORUQpIHtcbiAgICAgICAgdGhpcy5vYmo4ID0gaW5qLl9uZXcocC5wcm92aWRlcjgsIHAudmlzaWJpbGl0eTgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMub2JqODtcbiAgICB9XG4gICAgaWYgKHAua2V5SWQ5ID09PSBrZXlJZCAmJiBjYW5TZWUocC52aXNpYmlsaXR5OSwgdmlzaWJpbGl0eSkpIHtcbiAgICAgIGlmICh0aGlzLm9iajkgPT09IFVOREVGSU5FRCkge1xuICAgICAgICB0aGlzLm9iajkgPSBpbmouX25ldyhwLnByb3ZpZGVyOSwgcC52aXNpYmlsaXR5OSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5vYmo5O1xuICAgIH1cblxuICAgIHJldHVybiBVTkRFRklORUQ7XG4gIH1cblxuICBnZXRPYmpBdEluZGV4KGluZGV4OiBudW1iZXIpOiBhbnkge1xuICAgIGlmIChpbmRleCA9PSAwKSByZXR1cm4gdGhpcy5vYmowO1xuICAgIGlmIChpbmRleCA9PSAxKSByZXR1cm4gdGhpcy5vYmoxO1xuICAgIGlmIChpbmRleCA9PSAyKSByZXR1cm4gdGhpcy5vYmoyO1xuICAgIGlmIChpbmRleCA9PSAzKSByZXR1cm4gdGhpcy5vYmozO1xuICAgIGlmIChpbmRleCA9PSA0KSByZXR1cm4gdGhpcy5vYmo0O1xuICAgIGlmIChpbmRleCA9PSA1KSByZXR1cm4gdGhpcy5vYmo1O1xuICAgIGlmIChpbmRleCA9PSA2KSByZXR1cm4gdGhpcy5vYmo2O1xuICAgIGlmIChpbmRleCA9PSA3KSByZXR1cm4gdGhpcy5vYmo3O1xuICAgIGlmIChpbmRleCA9PSA4KSByZXR1cm4gdGhpcy5vYmo4O1xuICAgIGlmIChpbmRleCA9PSA5KSByZXR1cm4gdGhpcy5vYmo5O1xuICAgIHRocm93IG5ldyBPdXRPZkJvdW5kc0Vycm9yKGluZGV4KTtcbiAgfVxuXG4gIGdldE1heE51bWJlck9mT2JqZWN0cygpOiBudW1iZXIgeyByZXR1cm4gX01BWF9DT05TVFJVQ1RJT05fQ09VTlRFUjsgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBJbmplY3RvckR5bmFtaWNTdHJhdGVneSBpbXBsZW1lbnRzIEluamVjdG9yU3RyYXRlZ3kge1xuICBvYmpzOiBhbnlbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcHJvdG9TdHJhdGVneTogUHJvdG9JbmplY3RvckR5bmFtaWNTdHJhdGVneSwgcHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMub2JqcyA9IExpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZShwcm90b1N0cmF0ZWd5LnByb3ZpZGVycy5sZW5ndGgpO1xuICAgIExpc3RXcmFwcGVyLmZpbGwodGhpcy5vYmpzLCBVTkRFRklORUQpO1xuICB9XG5cbiAgcmVzZXRDb25zdHJ1Y3Rpb25Db3VudGVyKCk6IHZvaWQgeyB0aGlzLmluamVjdG9yLl9jb25zdHJ1Y3Rpb25Db3VudGVyID0gMDsgfVxuXG4gIGluc3RhbnRpYXRlUHJvdmlkZXIocHJvdmlkZXI6IFJlc29sdmVkUHJvdmlkZXIsIHZpc2liaWxpdHk6IFZpc2liaWxpdHkpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLl9uZXcocHJvdmlkZXIsIHZpc2liaWxpdHkpO1xuICB9XG5cbiAgZ2V0T2JqQnlLZXlJZChrZXlJZDogbnVtYmVyLCB2aXNpYmlsaXR5OiBWaXNpYmlsaXR5KTogYW55IHtcbiAgICB2YXIgcCA9IHRoaXMucHJvdG9TdHJhdGVneTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5rZXlJZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChwLmtleUlkc1tpXSA9PT0ga2V5SWQgJiYgY2FuU2VlKHAudmlzaWJpbGl0aWVzW2ldLCB2aXNpYmlsaXR5KSkge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSBVTkRFRklORUQpIHtcbiAgICAgICAgICB0aGlzLm9ianNbaV0gPSB0aGlzLmluamVjdG9yLl9uZXcocC5wcm92aWRlcnNbaV0sIHAudmlzaWJpbGl0aWVzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9ianNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFVOREVGSU5FRDtcbiAgfVxuXG4gIGdldE9iakF0SW5kZXgoaW5kZXg6IG51bWJlcik6IGFueSB7XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLm9ianMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgT3V0T2ZCb3VuZHNFcnJvcihpbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub2Jqc1tpbmRleF07XG4gIH1cblxuICBnZXRNYXhOdW1iZXJPZk9iamVjdHMoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMub2Jqcy5sZW5ndGg7IH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb3ZpZGVyV2l0aFZpc2liaWxpdHkge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcHJvdmlkZXI6IFJlc29sdmVkUHJvdmlkZXIsIHB1YmxpYyB2aXNpYmlsaXR5OiBWaXNpYmlsaXR5KXt9O1xuXG4gIGdldEtleUlkKCk6IG51bWJlciB7IHJldHVybiB0aGlzLnByb3ZpZGVyLmtleS5pZDsgfVxufVxuXG4vKipcbiAqIFVzZWQgdG8gcHJvdmlkZSBkZXBlbmRlbmNpZXMgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IGV4cHJlc3NlZCBhcyBwcm92aWRlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwZW5kZW5jeVByb3ZpZGVyIHtcbiAgZ2V0RGVwZW5kZW5jeShpbmplY3RvcjogSW5qZWN0b3IsIHByb3ZpZGVyOiBSZXNvbHZlZFByb3ZpZGVyLCBkZXBlbmRlbmN5OiBEZXBlbmRlbmN5KTogYW55O1xufVxuXG4vKipcbiAqIEEgZGVwZW5kZW5jeSBpbmplY3Rpb24gY29udGFpbmVyIHVzZWQgZm9yIGluc3RhbnRpYXRpbmcgb2JqZWN0cyBhbmQgcmVzb2x2aW5nIGRlcGVuZGVuY2llcy5cbiAqXG4gKiBBbiBgSW5qZWN0b3JgIGlzIGEgcmVwbGFjZW1lbnQgZm9yIGEgYG5ld2Agb3BlcmF0b3IsIHdoaWNoIGNhbiBhdXRvbWF0aWNhbGx5IHJlc29sdmUgdGhlXG4gKiBjb25zdHJ1Y3RvciBkZXBlbmRlbmNpZXMuXG4gKlxuICogSW4gdHlwaWNhbCB1c2UsIGFwcGxpY2F0aW9uIGNvZGUgYXNrcyBmb3IgdGhlIGRlcGVuZGVuY2llcyBpbiB0aGUgY29uc3RydWN0b3IgYW5kIHRoZXkgYXJlXG4gKiByZXNvbHZlZCBieSB0aGUgYEluamVjdG9yYC5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvanpqZWMwP3A9cHJldmlldykpXG4gKlxuICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGNyZWF0ZXMgYW4gYEluamVjdG9yYCBjb25maWd1cmVkIHRvIGNyZWF0ZSBgRW5naW5lYCBhbmQgYENhcmAuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQEluamVjdGFibGUoKVxuICogY2xhc3MgRW5naW5lIHtcbiAqIH1cbiAqXG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBDYXIge1xuICogICBjb25zdHJ1Y3RvcihwdWJsaWMgZW5naW5lOkVuZ2luZSkge31cbiAqIH1cbiAqXG4gKiB2YXIgaW5qZWN0b3IgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtDYXIsIEVuZ2luZV0pO1xuICogdmFyIGNhciA9IGluamVjdG9yLmdldChDYXIpO1xuICogZXhwZWN0KGNhciBpbnN0YW5jZW9mIENhcikudG9CZSh0cnVlKTtcbiAqIGV4cGVjdChjYXIuZW5naW5lIGluc3RhbmNlb2YgRW5naW5lKS50b0JlKHRydWUpO1xuICogYGBgXG4gKlxuICogTm90aWNlLCB3ZSBkb24ndCB1c2UgdGhlIGBuZXdgIG9wZXJhdG9yIGJlY2F1c2Ugd2UgZXhwbGljaXRseSB3YW50IHRvIGhhdmUgdGhlIGBJbmplY3RvcmBcbiAqIHJlc29sdmUgYWxsIG9mIHRoZSBvYmplY3QncyBkZXBlbmRlbmNpZXMgYXV0b21hdGljYWxseS5cbiAqL1xuZXhwb3J0IGNsYXNzIEluamVjdG9yIHtcbiAgLyoqXG4gICAqIFR1cm5zIGFuIGFycmF5IG9mIHByb3ZpZGVyIGRlZmluaXRpb25zIGludG8gYW4gYXJyYXkgb2YgcmVzb2x2ZWQgcHJvdmlkZXJzLlxuICAgKlxuICAgKiBBIHJlc29sdXRpb24gaXMgYSBwcm9jZXNzIG9mIGZsYXR0ZW5pbmcgbXVsdGlwbGUgbmVzdGVkIGFycmF5cyBhbmQgY29udmVydGluZyBpbmRpdmlkdWFsXG4gICAqIHByb3ZpZGVycyBpbnRvIGFuIGFycmF5IG9mIHtAbGluayBSZXNvbHZlZFByb3ZpZGVyfXMuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9BaVhUSGk/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBASW5qZWN0YWJsZSgpXG4gICAqIGNsYXNzIEVuZ2luZSB7XG4gICAqIH1cbiAgICpcbiAgICogQEluamVjdGFibGUoKVxuICAgKiBjbGFzcyBDYXIge1xuICAgKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbmdpbmU6RW5naW5lKSB7fVxuICAgKiB9XG4gICAqXG4gICAqIHZhciBwcm92aWRlcnMgPSBJbmplY3Rvci5yZXNvbHZlKFtDYXIsIFtbRW5naW5lXV1dKTtcbiAgICpcbiAgICogZXhwZWN0KHByb3ZpZGVycy5sZW5ndGgpLnRvRXF1YWwoMik7XG4gICAqXG4gICAqIGV4cGVjdChwcm92aWRlcnNbMF0gaW5zdGFuY2VvZiBSZXNvbHZlZFByb3ZpZGVyKS50b0JlKHRydWUpO1xuICAgKiBleHBlY3QocHJvdmlkZXJzWzBdLmtleS5kaXNwbGF5TmFtZSkudG9CZShcIkNhclwiKTtcbiAgICogZXhwZWN0KHByb3ZpZGVyc1swXS5kZXBlbmRlbmNpZXMubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAgKiBleHBlY3QocHJvdmlkZXJzWzBdLmZhY3RvcnkpLnRvQmVEZWZpbmVkKCk7XG4gICAqXG4gICAqIGV4cGVjdChwcm92aWRlcnNbMV0ua2V5LmRpc3BsYXlOYW1lKS50b0JlKFwiRW5naW5lXCIpO1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgSW5qZWN0b3IjZnJvbVJlc29sdmVkUHJvdmlkZXJzfSBmb3IgbW9yZSBpbmZvLlxuICAgKi9cbiAgc3RhdGljIHJlc29sdmUocHJvdmlkZXJzOiBBcnJheTxUeXBlIHwgUHJvdmlkZXIgfCBhbnlbXT4pOiBSZXNvbHZlZFByb3ZpZGVyW10ge1xuICAgIHJldHVybiByZXNvbHZlUHJvdmlkZXJzKHByb3ZpZGVycyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgYW4gYXJyYXkgb2YgcHJvdmlkZXJzIGFuZCBjcmVhdGVzIGFuIGluamVjdG9yIGZyb20gdGhvc2UgcHJvdmlkZXJzLlxuICAgKlxuICAgKiBUaGUgcGFzc2VkLWluIHByb3ZpZGVycyBjYW4gYmUgYW4gYXJyYXkgb2YgYFR5cGVgLCB7QGxpbmsgUHJvdmlkZXJ9LFxuICAgKiBvciBhIHJlY3Vyc2l2ZSBhcnJheSBvZiBtb3JlIHByb3ZpZGVycy5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L2VQT2NjQT9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBJbmplY3RhYmxlKClcbiAgICogY2xhc3MgRW5naW5lIHtcbiAgICogfVxuICAgKlxuICAgKiBASW5qZWN0YWJsZSgpXG4gICAqIGNsYXNzIENhciB7XG4gICAqICAgY29uc3RydWN0b3IocHVibGljIGVuZ2luZTpFbmdpbmUpIHt9XG4gICAqIH1cbiAgICpcbiAgICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbQ2FyLCBFbmdpbmVdKTtcbiAgICogZXhwZWN0KGluamVjdG9yLmdldChDYXIpIGluc3RhbmNlb2YgQ2FyKS50b0JlKHRydWUpO1xuICAgKiBgYGBcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBzbG93ZXIgdGhhbiB0aGUgY29ycmVzcG9uZGluZyBgZnJvbVJlc29sdmVkUHJvdmlkZXJzYFxuICAgKiBiZWNhdXNlIGl0IG5lZWRzIHRvIHJlc29sdmUgdGhlIHBhc3NlZC1pbiBwcm92aWRlcnMgZmlyc3QuXG4gICAqIFNlZSB7QGxpbmsgSW5qZWN0b3IjcmVzb2x2ZX0gYW5kIHtAbGluayBJbmplY3RvciNmcm9tUmVzb2x2ZWRQcm92aWRlcnN9LlxuICAgKi9cbiAgc3RhdGljIHJlc29sdmVBbmRDcmVhdGUocHJvdmlkZXJzOiBBcnJheTxUeXBlIHwgUHJvdmlkZXIgfCBhbnlbXT4pOiBJbmplY3RvciB7XG4gICAgdmFyIHJlc29sdmVkUHJvdmlkZXJzID0gSW5qZWN0b3IucmVzb2x2ZShwcm92aWRlcnMpO1xuICAgIHJldHVybiBJbmplY3Rvci5mcm9tUmVzb2x2ZWRQcm92aWRlcnMocmVzb2x2ZWRQcm92aWRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5qZWN0b3IgZnJvbSBwcmV2aW91c2x5IHJlc29sdmVkIHByb3ZpZGVycy5cbiAgICpcbiAgICogVGhpcyBBUEkgaXMgdGhlIHJlY29tbWVuZGVkIHdheSB0byBjb25zdHJ1Y3QgaW5qZWN0b3JzIGluIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBwYXJ0cy5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0tyU01jaT9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBJbmplY3RhYmxlKClcbiAgICogY2xhc3MgRW5naW5lIHtcbiAgICogfVxuICAgKlxuICAgKiBASW5qZWN0YWJsZSgpXG4gICAqIGNsYXNzIENhciB7XG4gICAqICAgY29uc3RydWN0b3IocHVibGljIGVuZ2luZTpFbmdpbmUpIHt9XG4gICAqIH1cbiAgICpcbiAgICogdmFyIHByb3ZpZGVycyA9IEluamVjdG9yLnJlc29sdmUoW0NhciwgRW5naW5lXSk7XG4gICAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLmZyb21SZXNvbHZlZFByb3ZpZGVycyhwcm92aWRlcnMpO1xuICAgKiBleHBlY3QoaW5qZWN0b3IuZ2V0KENhcikgaW5zdGFuY2VvZiBDYXIpLnRvQmUodHJ1ZSk7XG4gICAqIGBgYFxuICAgKi9cbiAgc3RhdGljIGZyb21SZXNvbHZlZFByb3ZpZGVycyhwcm92aWRlcnM6IFJlc29sdmVkUHJvdmlkZXJbXSk6IEluamVjdG9yIHtcbiAgICByZXR1cm4gbmV3IEluamVjdG9yKFByb3RvSW5qZWN0b3IuZnJvbVJlc29sdmVkUHJvdmlkZXJzKHByb3ZpZGVycykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBzdGF0aWMgZnJvbVJlc29sdmVkQmluZGluZ3MocHJvdmlkZXJzOiBSZXNvbHZlZFByb3ZpZGVyW10pOiBJbmplY3RvciB7XG4gICAgcmV0dXJuIEluamVjdG9yLmZyb21SZXNvbHZlZFByb3ZpZGVycyhwcm92aWRlcnMpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfc3RyYXRlZ3k6IEluamVjdG9yU3RyYXRlZ3k7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2NvbnN0cnVjdGlvbkNvdW50ZXI6IG51bWJlciA9IDA7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIF9wcm90bzogYW55IC8qIFByb3RvSW5qZWN0b3IgKi87XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIF9wYXJlbnQ6IEluamVjdG9yO1xuICAvKipcbiAgICogUHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IoX3Byb3RvOiBhbnkgLyogUHJvdG9JbmplY3RvciAqLywgX3BhcmVudDogSW5qZWN0b3IgPSBudWxsLFxuICAgICAgICAgICAgICBwcml2YXRlIF9pc0hvc3RCb3VuZGFyeTogYm9vbGVhbiA9IGZhbHNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9kZXBQcm92aWRlcjogYW55IC8qIERlcGVuZGVuY3lQcm92aWRlciAqLyA9IG51bGwsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2RlYnVnQ29udGV4dDogRnVuY3Rpb24gPSBudWxsKSB7XG4gICAgdGhpcy5fcHJvdG8gPSBfcHJvdG87XG4gICAgdGhpcy5fcGFyZW50ID0gX3BhcmVudDtcbiAgICB0aGlzLl9zdHJhdGVneSA9IF9wcm90by5fc3RyYXRlZ3kuY3JlYXRlSW5qZWN0b3JTdHJhdGVneSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaW5qZWN0b3IgaXMgYSBib3VuZGFyeSB0byBhIGhvc3QuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IGhvc3RCb3VuZGFyeSgpIHsgcmV0dXJuIHRoaXMuX2lzSG9zdEJvdW5kYXJ5OyB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZGVidWdDb250ZXh0KCk6IGFueSB7IHJldHVybiB0aGlzLl9kZWJ1Z0NvbnRleHQoKTsgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYW4gaW5zdGFuY2UgZnJvbSB0aGUgaW5qZWN0b3IgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHRva2VuLlxuICAgKiBUaHJvd3Mge0BsaW5rIE5vUHJvdmlkZXJFcnJvcn0gaWYgbm90IGZvdW5kLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvSGVYU0hnP3A9cHJldmlldykpXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgcHJvdmlkZShcInZhbGlkVG9rZW5cIiwge3VzZVZhbHVlOiBcIlZhbHVlXCJ9KVxuICAgKiBdKTtcbiAgICogZXhwZWN0KGluamVjdG9yLmdldChcInZhbGlkVG9rZW5cIikpLnRvRXF1YWwoXCJWYWx1ZVwiKTtcbiAgICogZXhwZWN0KCgpID0+IGluamVjdG9yLmdldChcImludmFsaWRUb2tlblwiKSkudG9UaHJvd0Vycm9yKCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBgSW5qZWN0b3JgIHJldHVybnMgaXRzZWxmIHdoZW4gZ2l2ZW4gYEluamVjdG9yYCBhcyBhIHRva2VuLlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW10pO1xuICAgKiBleHBlY3QoaW5qZWN0b3IuZ2V0KEluamVjdG9yKSkudG9CZShpbmplY3Rvcik7XG4gICAqIGBgYFxuICAgKi9cbiAgZ2V0KHRva2VuOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9nZXRCeUtleShLZXkuZ2V0KHRva2VuKSwgbnVsbCwgbnVsbCwgZmFsc2UsIFZpc2liaWxpdHkuUHVibGljQW5kUHJpdmF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFuIGluc3RhbmNlIGZyb20gdGhlIGluamVjdG9yIGJhc2VkIG9uIHRoZSBwcm92aWRlZCB0b2tlbi5cbiAgICogUmV0dXJucyBudWxsIGlmIG5vdCBmb3VuZC5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3RwRWJFeT9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICAgKiAgIHByb3ZpZGUoXCJ2YWxpZFRva2VuXCIsIHt1c2VWYWx1ZTogXCJWYWx1ZVwifSlcbiAgICogXSk7XG4gICAqIGV4cGVjdChpbmplY3Rvci5nZXRPcHRpb25hbChcInZhbGlkVG9rZW5cIikpLnRvRXF1YWwoXCJWYWx1ZVwiKTtcbiAgICogZXhwZWN0KGluamVjdG9yLmdldE9wdGlvbmFsKFwiaW52YWxpZFRva2VuXCIpKS50b0JlKG51bGwpO1xuICAgKiBgYGBcbiAgICpcbiAgICogYEluamVjdG9yYCByZXR1cm5zIGl0c2VsZiB3aGVuIGdpdmVuIGBJbmplY3RvcmAgYXMgYSB0b2tlbi5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB2YXIgaW5qZWN0b3IgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtdKTtcbiAgICogZXhwZWN0KGluamVjdG9yLmdldE9wdGlvbmFsKEluamVjdG9yKSkudG9CZShpbmplY3Rvcik7XG4gICAqIGBgYFxuICAgKi9cbiAgZ2V0T3B0aW9uYWwodG9rZW46IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldEJ5S2V5KEtleS5nZXQodG9rZW4pLCBudWxsLCBudWxsLCB0cnVlLCBWaXNpYmlsaXR5LlB1YmxpY0FuZFByaXZhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0QXQoaW5kZXg6IG51bWJlcik6IGFueSB7IHJldHVybiB0aGlzLl9zdHJhdGVneS5nZXRPYmpBdEluZGV4KGluZGV4KTsgfVxuXG4gIC8qKlxuICAgKiBQYXJlbnQgb2YgdGhpcyBpbmplY3Rvci5cbiAgICpcbiAgICogPCEtLSBUT0RPOiBBZGQgYSBsaW5rIHRvIHRoZSBzZWN0aW9uIG9mIHRoZSB1c2VyIGd1aWRlIHRhbGtpbmcgYWJvdXQgaGllcmFyY2hpY2FsIGluamVjdGlvbi5cbiAgICogLS0+XG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9lb3NNR28/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB2YXIgcGFyZW50ID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXSk7XG4gICAqIHZhciBjaGlsZCA9IHBhcmVudC5yZXNvbHZlQW5kQ3JlYXRlQ2hpbGQoW10pO1xuICAgKiBleHBlY3QoY2hpbGQucGFyZW50KS50b0JlKHBhcmVudCk7XG4gICAqIGBgYFxuICAgKi9cbiAgZ2V0IHBhcmVudCgpOiBJbmplY3RvciB7IHJldHVybiB0aGlzLl9wYXJlbnQ7IH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEludGVybmFsLiBEbyBub3QgdXNlLlxuICAgKiBXZSByZXR1cm4gYGFueWAgbm90IHRvIGV4cG9ydCB0aGUgSW5qZWN0b3JTdHJhdGVneSB0eXBlLlxuICAgKi9cbiAgZ2V0IGludGVybmFsU3RyYXRlZ3koKTogYW55IHsgcmV0dXJuIHRoaXMuX3N0cmF0ZWd5OyB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGFuIGFycmF5IG9mIHByb3ZpZGVycyBhbmQgY3JlYXRlcyBhIGNoaWxkIGluamVjdG9yIGZyb20gdGhvc2UgcHJvdmlkZXJzLlxuICAgKlxuICAgKiA8IS0tIFRPRE86IEFkZCBhIGxpbmsgdG8gdGhlIHNlY3Rpb24gb2YgdGhlIHVzZXIgZ3VpZGUgdGFsa2luZyBhYm91dCBoaWVyYXJjaGljYWwgaW5qZWN0aW9uLlxuICAgKiAtLT5cbiAgICpcbiAgICogVGhlIHBhc3NlZC1pbiBwcm92aWRlcnMgY2FuIGJlIGFuIGFycmF5IG9mIGBUeXBlYCwge0BsaW5rIFByb3ZpZGVyfSxcbiAgICogb3IgYSByZWN1cnNpdmUgYXJyYXkgb2YgbW9yZSBwcm92aWRlcnMuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9vcEIzVDQ/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjbGFzcyBQYXJlbnRQcm92aWRlciB7fVxuICAgKiBjbGFzcyBDaGlsZFByb3ZpZGVyIHt9XG4gICAqXG4gICAqIHZhciBwYXJlbnQgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtQYXJlbnRQcm92aWRlcl0pO1xuICAgKiB2YXIgY2hpbGQgPSBwYXJlbnQucmVzb2x2ZUFuZENyZWF0ZUNoaWxkKFtDaGlsZFByb3ZpZGVyXSk7XG4gICAqXG4gICAqIGV4cGVjdChjaGlsZC5nZXQoUGFyZW50UHJvdmlkZXIpIGluc3RhbmNlb2YgUGFyZW50UHJvdmlkZXIpLnRvQmUodHJ1ZSk7XG4gICAqIGV4cGVjdChjaGlsZC5nZXQoQ2hpbGRQcm92aWRlcikgaW5zdGFuY2VvZiBDaGlsZFByb3ZpZGVyKS50b0JlKHRydWUpO1xuICAgKiBleHBlY3QoY2hpbGQuZ2V0KFBhcmVudFByb3ZpZGVyKSkudG9CZShwYXJlbnQuZ2V0KFBhcmVudFByb3ZpZGVyKSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHNsb3dlciB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIGBjcmVhdGVDaGlsZEZyb21SZXNvbHZlZGBcbiAgICogYmVjYXVzZSBpdCBuZWVkcyB0byByZXNvbHZlIHRoZSBwYXNzZWQtaW4gcHJvdmlkZXJzIGZpcnN0LlxuICAgKiBTZWUge0BsaW5rIEluamVjdG9yI3Jlc29sdmV9IGFuZCB7QGxpbmsgSW5qZWN0b3IjY3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWR9LlxuICAgKi9cbiAgcmVzb2x2ZUFuZENyZWF0ZUNoaWxkKHByb3ZpZGVyczogQXJyYXk8VHlwZSB8IFByb3ZpZGVyIHwgYW55W10+KTogSW5qZWN0b3Ige1xuICAgIHZhciByZXNvbHZlZFByb3ZpZGVycyA9IEluamVjdG9yLnJlc29sdmUocHJvdmlkZXJzKTtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVDaGlsZEZyb21SZXNvbHZlZChyZXNvbHZlZFByb3ZpZGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNoaWxkIGluamVjdG9yIGZyb20gcHJldmlvdXNseSByZXNvbHZlZCBwcm92aWRlcnMuXG4gICAqXG4gICAqIDwhLS0gVE9ETzogQWRkIGEgbGluayB0byB0aGUgc2VjdGlvbiBvZiB0aGUgdXNlciBndWlkZSB0YWxraW5nIGFib3V0IGhpZXJhcmNoaWNhbCBpbmplY3Rpb24uXG4gICAqIC0tPlxuICAgKlxuICAgKiBUaGlzIEFQSSBpcyB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIGNvbnN0cnVjdCBpbmplY3RvcnMgaW4gcGVyZm9ybWFuY2Utc2Vuc2l0aXZlIHBhcnRzLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvVmh5ZmpOP3A9cHJldmlldykpXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY2xhc3MgUGFyZW50UHJvdmlkZXIge31cbiAgICogY2xhc3MgQ2hpbGRQcm92aWRlciB7fVxuICAgKlxuICAgKiB2YXIgcGFyZW50UHJvdmlkZXJzID0gSW5qZWN0b3IucmVzb2x2ZShbUGFyZW50UHJvdmlkZXJdKTtcbiAgICogdmFyIGNoaWxkUHJvdmlkZXJzID0gSW5qZWN0b3IucmVzb2x2ZShbQ2hpbGRQcm92aWRlcl0pO1xuICAgKlxuICAgKiB2YXIgcGFyZW50ID0gSW5qZWN0b3IuZnJvbVJlc29sdmVkUHJvdmlkZXJzKHBhcmVudFByb3ZpZGVycyk7XG4gICAqIHZhciBjaGlsZCA9IHBhcmVudC5jcmVhdGVDaGlsZEZyb21SZXNvbHZlZChjaGlsZFByb3ZpZGVycyk7XG4gICAqXG4gICAqIGV4cGVjdChjaGlsZC5nZXQoUGFyZW50UHJvdmlkZXIpIGluc3RhbmNlb2YgUGFyZW50UHJvdmlkZXIpLnRvQmUodHJ1ZSk7XG4gICAqIGV4cGVjdChjaGlsZC5nZXQoQ2hpbGRQcm92aWRlcikgaW5zdGFuY2VvZiBDaGlsZFByb3ZpZGVyKS50b0JlKHRydWUpO1xuICAgKiBleHBlY3QoY2hpbGQuZ2V0KFBhcmVudFByb3ZpZGVyKSkudG9CZShwYXJlbnQuZ2V0KFBhcmVudFByb3ZpZGVyKSk7XG4gICAqIGBgYFxuICAgKi9cbiAgY3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQocHJvdmlkZXJzOiBSZXNvbHZlZFByb3ZpZGVyW10pOiBJbmplY3RvciB7XG4gICAgdmFyIGJkID0gcHJvdmlkZXJzLm1hcChiID0+IG5ldyBQcm92aWRlcldpdGhWaXNpYmlsaXR5KGIsIFZpc2liaWxpdHkuUHVibGljKSk7XG4gICAgdmFyIHByb3RvID0gbmV3IFByb3RvSW5qZWN0b3IoYmQpO1xuICAgIHZhciBpbmogPSBuZXcgSW5qZWN0b3IocHJvdG8pO1xuICAgIGluai5fcGFyZW50ID0gdGhpcztcbiAgICByZXR1cm4gaW5qO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGEgcHJvdmlkZXIgYW5kIGluc3RhbnRpYXRlcyBhbiBvYmplY3QgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGluamVjdG9yLlxuICAgKlxuICAgKiBUaGUgY3JlYXRlZCBvYmplY3QgZG9lcyBub3QgZ2V0IGNhY2hlZCBieSB0aGUgaW5qZWN0b3IuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC95dlZYb0I/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBASW5qZWN0YWJsZSgpXG4gICAqIGNsYXNzIEVuZ2luZSB7XG4gICAqIH1cbiAgICpcbiAgICogQEluamVjdGFibGUoKVxuICAgKiBjbGFzcyBDYXIge1xuICAgKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbmdpbmU6RW5naW5lKSB7fVxuICAgKiB9XG4gICAqXG4gICAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW0VuZ2luZV0pO1xuICAgKlxuICAgKiB2YXIgY2FyID0gaW5qZWN0b3IucmVzb2x2ZUFuZEluc3RhbnRpYXRlKENhcik7XG4gICAqIGV4cGVjdChjYXIuZW5naW5lKS50b0JlKGluamVjdG9yLmdldChFbmdpbmUpKTtcbiAgICogZXhwZWN0KGNhcikubm90LnRvQmUoaW5qZWN0b3IucmVzb2x2ZUFuZEluc3RhbnRpYXRlKENhcikpO1xuICAgKiBgYGBcbiAgICovXG4gIHJlc29sdmVBbmRJbnN0YW50aWF0ZShwcm92aWRlcjogVHlwZSB8IFByb3ZpZGVyKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5pbnN0YW50aWF0ZVJlc29sdmVkKEluamVjdG9yLnJlc29sdmUoW3Byb3ZpZGVyXSlbMF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbnRpYXRlcyBhbiBvYmplY3QgdXNpbmcgYSByZXNvbHZlZCBwcm92aWRlciBpbiB0aGUgY29udGV4dCBvZiB0aGUgaW5qZWN0b3IuXG4gICAqXG4gICAqIFRoZSBjcmVhdGVkIG9iamVjdCBkb2VzIG5vdCBnZXQgY2FjaGVkIGJ5IHRoZSBpbmplY3Rvci5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3B0Q0ltUT9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBJbmplY3RhYmxlKClcbiAgICogY2xhc3MgRW5naW5lIHtcbiAgICogfVxuICAgKlxuICAgKiBASW5qZWN0YWJsZSgpXG4gICAqIGNsYXNzIENhciB7XG4gICAqICAgY29uc3RydWN0b3IocHVibGljIGVuZ2luZTpFbmdpbmUpIHt9XG4gICAqIH1cbiAgICpcbiAgICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbRW5naW5lXSk7XG4gICAqIHZhciBjYXJQcm92aWRlciA9IEluamVjdG9yLnJlc29sdmUoW0Nhcl0pWzBdO1xuICAgKiB2YXIgY2FyID0gaW5qZWN0b3IuaW5zdGFudGlhdGVSZXNvbHZlZChjYXJQcm92aWRlcik7XG4gICAqIGV4cGVjdChjYXIuZW5naW5lKS50b0JlKGluamVjdG9yLmdldChFbmdpbmUpKTtcbiAgICogZXhwZWN0KGNhcikubm90LnRvQmUoaW5qZWN0b3IuaW5zdGFudGlhdGVSZXNvbHZlZChjYXJQcm92aWRlcikpO1xuICAgKiBgYGBcbiAgICovXG4gIGluc3RhbnRpYXRlUmVzb2x2ZWQocHJvdmlkZXI6IFJlc29sdmVkUHJvdmlkZXIpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9pbnN0YW50aWF0ZVByb3ZpZGVyKHByb3ZpZGVyLCBWaXNpYmlsaXR5LlB1YmxpY0FuZFByaXZhdGUpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbmV3KHByb3ZpZGVyOiBSZXNvbHZlZFByb3ZpZGVyLCB2aXNpYmlsaXR5OiBWaXNpYmlsaXR5KTogYW55IHtcbiAgICBpZiAodGhpcy5fY29uc3RydWN0aW9uQ291bnRlcisrID4gdGhpcy5fc3RyYXRlZ3kuZ2V0TWF4TnVtYmVyT2ZPYmplY3RzKCkpIHtcbiAgICAgIHRocm93IG5ldyBDeWNsaWNEZXBlbmRlbmN5RXJyb3IodGhpcywgcHJvdmlkZXIua2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlUHJvdmlkZXIocHJvdmlkZXIsIHZpc2liaWxpdHkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5zdGFudGlhdGVQcm92aWRlcihwcm92aWRlcjogUmVzb2x2ZWRQcm92aWRlciwgdmlzaWJpbGl0eTogVmlzaWJpbGl0eSk6IGFueSB7XG4gICAgaWYgKHByb3ZpZGVyLm11bHRpUHJvdmlkZXIpIHtcbiAgICAgIHZhciByZXMgPSBMaXN0V3JhcHBlci5jcmVhdGVGaXhlZFNpemUocHJvdmlkZXIucmVzb2x2ZWRGYWN0b3JpZXMubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvdmlkZXIucmVzb2x2ZWRGYWN0b3JpZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgcmVzW2ldID0gdGhpcy5faW5zdGFudGlhdGUocHJvdmlkZXIsIHByb3ZpZGVyLnJlc29sdmVkRmFjdG9yaWVzW2ldLCB2aXNpYmlsaXR5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnN0YW50aWF0ZShwcm92aWRlciwgcHJvdmlkZXIucmVzb2x2ZWRGYWN0b3JpZXNbMF0sIHZpc2liaWxpdHkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luc3RhbnRpYXRlKHByb3ZpZGVyOiBSZXNvbHZlZFByb3ZpZGVyLCByZXNvbHZlZEZhY3Rvcnk6IFJlc29sdmVkRmFjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogVmlzaWJpbGl0eSk6IGFueSB7XG4gICAgdmFyIGZhY3RvcnkgPSByZXNvbHZlZEZhY3RvcnkuZmFjdG9yeTtcbiAgICB2YXIgZGVwcyA9IHJlc29sdmVkRmFjdG9yeS5kZXBlbmRlbmNpZXM7XG4gICAgdmFyIGxlbmd0aCA9IGRlcHMubGVuZ3RoO1xuXG4gICAgdmFyIGQwOiBhbnk7XG4gICAgdmFyIGQxOiBhbnk7XG4gICAgdmFyIGQyOiBhbnk7XG4gICAgdmFyIGQzOiBhbnk7XG4gICAgdmFyIGQ0OiBhbnk7XG4gICAgdmFyIGQ1OiBhbnk7XG4gICAgdmFyIGQ2OiBhbnk7XG4gICAgdmFyIGQ3OiBhbnk7XG4gICAgdmFyIGQ4OiBhbnk7XG4gICAgdmFyIGQ5OiBhbnk7XG4gICAgdmFyIGQxMDogYW55O1xuICAgIHZhciBkMTE6IGFueTtcbiAgICB2YXIgZDEyOiBhbnk7XG4gICAgdmFyIGQxMzogYW55O1xuICAgIHZhciBkMTQ6IGFueTtcbiAgICB2YXIgZDE1OiBhbnk7XG4gICAgdmFyIGQxNjogYW55O1xuICAgIHZhciBkMTc6IGFueTtcbiAgICB2YXIgZDE4OiBhbnk7XG4gICAgdmFyIGQxOTogYW55O1xuICAgIHRyeSB7XG4gICAgICBkMCA9IGxlbmd0aCA+IDAgPyB0aGlzLl9nZXRCeURlcGVuZGVuY3kocHJvdmlkZXIsIGRlcHNbMF0sIHZpc2liaWxpdHkpIDogbnVsbDtcbiAgICAgIGQxID0gbGVuZ3RoID4gMSA/IHRoaXMuX2dldEJ5RGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1sxXSwgdmlzaWJpbGl0eSkgOiBudWxsO1xuICAgICAgZDIgPSBsZW5ndGggPiAyID8gdGhpcy5fZ2V0QnlEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzJdLCB2aXNpYmlsaXR5KSA6IG51bGw7XG4gICAgICBkMyA9IGxlbmd0aCA+IDMgPyB0aGlzLl9nZXRCeURlcGVuZGVuY3kocHJvdmlkZXIsIGRlcHNbM10sIHZpc2liaWxpdHkpIDogbnVsbDtcbiAgICAgIGQ0ID0gbGVuZ3RoID4gNCA/IHRoaXMuX2dldEJ5RGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1s0XSwgdmlzaWJpbGl0eSkgOiBudWxsO1xuICAgICAgZDUgPSBsZW5ndGggPiA1ID8gdGhpcy5fZ2V0QnlEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzVdLCB2aXNpYmlsaXR5KSA6IG51bGw7XG4gICAgICBkNiA9IGxlbmd0aCA+IDYgPyB0aGlzLl9nZXRCeURlcGVuZGVuY3kocHJvdmlkZXIsIGRlcHNbNl0sIHZpc2liaWxpdHkpIDogbnVsbDtcbiAgICAgIGQ3ID0gbGVuZ3RoID4gNyA/IHRoaXMuX2dldEJ5RGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1s3XSwgdmlzaWJpbGl0eSkgOiBudWxsO1xuICAgICAgZDggPSBsZW5ndGggPiA4ID8gdGhpcy5fZ2V0QnlEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzhdLCB2aXNpYmlsaXR5KSA6IG51bGw7XG4gICAgICBkOSA9IGxlbmd0aCA+IDkgPyB0aGlzLl9nZXRCeURlcGVuZGVuY3kocHJvdmlkZXIsIGRlcHNbOV0sIHZpc2liaWxpdHkpIDogbnVsbDtcbiAgICAgIGQxMCA9IGxlbmd0aCA+IDEwID8gdGhpcy5fZ2V0QnlEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzEwXSwgdmlzaWJpbGl0eSkgOiBudWxsO1xuICAgICAgZDExID0gbGVuZ3RoID4gMTEgPyB0aGlzLl9nZXRCeURlcGVuZGVuY3kocHJvdmlkZXIsIGRlcHNbMTFdLCB2aXNpYmlsaXR5KSA6IG51bGw7XG4gICAgICBkMTIgPSBsZW5ndGggPiAxMiA/IHRoaXMuX2dldEJ5RGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1sxMl0sIHZpc2liaWxpdHkpIDogbnVsbDtcbiAgICAgIGQxMyA9IGxlbmd0aCA+IDEzID8gdGhpcy5fZ2V0QnlEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzEzXSwgdmlzaWJpbGl0eSkgOiBudWxsO1xuICAgICAgZDE0ID0gbGVuZ3RoID4gMTQgPyB0aGlzLl9nZXRCeURlcGVuZGVuY3kocHJvdmlkZXIsIGRlcHNbMTRdLCB2aXNpYmlsaXR5KSA6IG51bGw7XG4gICAgICBkMTUgPSBsZW5ndGggPiAxNSA/IHRoaXMuX2dldEJ5RGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1sxNV0sIHZpc2liaWxpdHkpIDogbnVsbDtcbiAgICAgIGQxNiA9IGxlbmd0aCA+IDE2ID8gdGhpcy5fZ2V0QnlEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzE2XSwgdmlzaWJpbGl0eSkgOiBudWxsO1xuICAgICAgZDE3ID0gbGVuZ3RoID4gMTcgPyB0aGlzLl9nZXRCeURlcGVuZGVuY3kocHJvdmlkZXIsIGRlcHNbMTddLCB2aXNpYmlsaXR5KSA6IG51bGw7XG4gICAgICBkMTggPSBsZW5ndGggPiAxOCA/IHRoaXMuX2dldEJ5RGVwZW5kZW5jeShwcm92aWRlciwgZGVwc1sxOF0sIHZpc2liaWxpdHkpIDogbnVsbDtcbiAgICAgIGQxOSA9IGxlbmd0aCA+IDE5ID8gdGhpcy5fZ2V0QnlEZXBlbmRlbmN5KHByb3ZpZGVyLCBkZXBzWzE5XSwgdmlzaWJpbGl0eSkgOiBudWxsO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgQWJzdHJhY3RQcm92aWRlckVycm9yIHx8IGUgaW5zdGFuY2VvZiBJbnN0YW50aWF0aW9uRXJyb3IpIHtcbiAgICAgICAgZS5hZGRLZXkodGhpcywgcHJvdmlkZXIua2V5KTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgdmFyIG9iajtcbiAgICB0cnkge1xuICAgICAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEsIGQyKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDAsIGQxLCBkMiwgZDMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEsIGQyLCBkMywgZDQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEsIGQyLCBkMywgZDQsIGQ1KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDAsIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDcsIGQ4KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICBvYmogPSBmYWN0b3J5KGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywgZDgsIGQ5KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICBvYmogPSBmYWN0b3J5KGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywgZDgsIGQ5LCBkMTApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDAsIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYsIGQ3LCBkOCwgZDksIGQxMCwgZDExKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICBvYmogPSBmYWN0b3J5KGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywgZDgsIGQ5LCBkMTAsIGQxMSwgZDEyKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICBvYmogPSBmYWN0b3J5KGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywgZDgsIGQ5LCBkMTAsIGQxMSwgZDEyLCBkMTMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDAsIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYsIGQ3LCBkOCwgZDksIGQxMCwgZDExLCBkMTIsIGQxMywgZDE0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICBvYmogPSBmYWN0b3J5KGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywgZDgsIGQ5LCBkMTAsIGQxMSwgZDEyLCBkMTMsIGQxNCwgZDE1KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgICBvYmogPSBmYWN0b3J5KGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywgZDgsIGQ5LCBkMTAsIGQxMSwgZDEyLCBkMTMsIGQxNCwgZDE1LCBkMTYpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDAsIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYsIGQ3LCBkOCwgZDksIGQxMCwgZDExLCBkMTIsIGQxMywgZDE0LCBkMTUsIGQxNixcbiAgICAgICAgICAgICAgICAgICAgICAgIGQxNyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgb2JqID0gZmFjdG9yeShkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDcsIGQ4LCBkOSwgZDEwLCBkMTEsIGQxMiwgZDEzLCBkMTQsIGQxNSwgZDE2LFxuICAgICAgICAgICAgICAgICAgICAgICAgZDE3LCBkMTgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgIG9iaiA9IGZhY3RvcnkoZDAsIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYsIGQ3LCBkOCwgZDksIGQxMCwgZDExLCBkMTIsIGQxMywgZDE0LCBkMTUsIGQxNixcbiAgICAgICAgICAgICAgICAgICAgICAgIGQxNywgZDE4LCBkMTkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKFxuICAgICAgICAgICAgICBgQ2Fubm90IGluc3RhbnRpYXRlICcke3Byb3ZpZGVyLmtleS5kaXNwbGF5TmFtZX0nIGJlY2F1c2UgaXQgaGFzIG1vcmUgdGhhbiAyMCBkZXBlbmRlbmNpZXNgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgSW5zdGFudGlhdGlvbkVycm9yKHRoaXMsIGUsIGUuc3RhY2ssIHByb3ZpZGVyLmtleSk7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBwcml2YXRlIF9nZXRCeURlcGVuZGVuY3kocHJvdmlkZXI6IFJlc29sdmVkUHJvdmlkZXIsIGRlcDogRGVwZW5kZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyVmlzaWJpbGl0eTogVmlzaWJpbGl0eSk6IGFueSB7XG4gICAgdmFyIHNwZWNpYWwgPSBpc1ByZXNlbnQodGhpcy5fZGVwUHJvdmlkZXIpID9cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kZXBQcm92aWRlci5nZXREZXBlbmRlbmN5KHRoaXMsIHByb3ZpZGVyLCBkZXApIDpcbiAgICAgICAgICAgICAgICAgICAgICBVTkRFRklORUQ7XG4gICAgaWYgKHNwZWNpYWwgIT09IFVOREVGSU5FRCkge1xuICAgICAgcmV0dXJuIHNwZWNpYWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9nZXRCeUtleShkZXAua2V5LCBkZXAubG93ZXJCb3VuZFZpc2liaWxpdHksIGRlcC51cHBlckJvdW5kVmlzaWJpbGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXAub3B0aW9uYWwsIHByb3ZpZGVyVmlzaWJpbGl0eSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QnlLZXkoa2V5OiBLZXksIGxvd2VyQm91bmRWaXNpYmlsaXR5OiBPYmplY3QsIHVwcGVyQm91bmRWaXNpYmlsaXR5OiBPYmplY3QsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsOiBib29sZWFuLCBwcm92aWRlclZpc2liaWxpdHk6IFZpc2liaWxpdHkpOiBhbnkge1xuICAgIGlmIChrZXkgPT09IElOSkVDVE9SX0tFWSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHVwcGVyQm91bmRWaXNpYmlsaXR5IGluc3RhbmNlb2YgU2VsZk1ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0QnlLZXlTZWxmKGtleSwgb3B0aW9uYWwsIHByb3ZpZGVyVmlzaWJpbGl0eSk7XG5cbiAgICB9IGVsc2UgaWYgKHVwcGVyQm91bmRWaXNpYmlsaXR5IGluc3RhbmNlb2YgSG9zdE1ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0QnlLZXlIb3N0KGtleSwgb3B0aW9uYWwsIHByb3ZpZGVyVmlzaWJpbGl0eSwgbG93ZXJCb3VuZFZpc2liaWxpdHkpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9nZXRCeUtleURlZmF1bHQoa2V5LCBvcHRpb25hbCwgcHJvdmlkZXJWaXNpYmlsaXR5LCBsb3dlckJvdW5kVmlzaWJpbGl0eSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfdGhyb3dPck51bGwoa2V5OiBLZXksIG9wdGlvbmFsOiBib29sZWFuKTogYW55IHtcbiAgICBpZiAob3B0aW9uYWwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgTm9Qcm92aWRlckVycm9yKHRoaXMsIGtleSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZ2V0QnlLZXlTZWxmKGtleTogS2V5LCBvcHRpb25hbDogYm9vbGVhbiwgcHJvdmlkZXJWaXNpYmlsaXR5OiBWaXNpYmlsaXR5KTogYW55IHtcbiAgICB2YXIgb2JqID0gdGhpcy5fc3RyYXRlZ3kuZ2V0T2JqQnlLZXlJZChrZXkuaWQsIHByb3ZpZGVyVmlzaWJpbGl0eSk7XG4gICAgcmV0dXJuIChvYmogIT09IFVOREVGSU5FRCkgPyBvYmogOiB0aGlzLl90aHJvd09yTnVsbChrZXksIG9wdGlvbmFsKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dldEJ5S2V5SG9zdChrZXk6IEtleSwgb3B0aW9uYWw6IGJvb2xlYW4sIHByb3ZpZGVyVmlzaWJpbGl0eTogVmlzaWJpbGl0eSxcbiAgICAgICAgICAgICAgICBsb3dlckJvdW5kVmlzaWJpbGl0eTogT2JqZWN0KTogYW55IHtcbiAgICB2YXIgaW5qOiBJbmplY3RvciA9IHRoaXM7XG5cbiAgICBpZiAobG93ZXJCb3VuZFZpc2liaWxpdHkgaW5zdGFuY2VvZiBTa2lwU2VsZk1ldGFkYXRhKSB7XG4gICAgICBpZiAoaW5qLl9pc0hvc3RCb3VuZGFyeSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHJpdmF0ZURlcGVuZGVuY3koa2V5LCBvcHRpb25hbCwgaW5qKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaiA9IGluai5fcGFyZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIHdoaWxlIChpbmogIT0gbnVsbCkge1xuICAgICAgdmFyIG9iaiA9IGluai5fc3RyYXRlZ3kuZ2V0T2JqQnlLZXlJZChrZXkuaWQsIHByb3ZpZGVyVmlzaWJpbGl0eSk7XG4gICAgICBpZiAob2JqICE9PSBVTkRFRklORUQpIHJldHVybiBvYmo7XG5cbiAgICAgIGlmIChpc1ByZXNlbnQoaW5qLl9wYXJlbnQpICYmIGluai5faXNIb3N0Qm91bmRhcnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByaXZhdGVEZXBlbmRlbmN5KGtleSwgb3B0aW9uYWwsIGluaik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmogPSBpbmouX3BhcmVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fdGhyb3dPck51bGwoa2V5LCBvcHRpb25hbCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9nZXRQcml2YXRlRGVwZW5kZW5jeShrZXk6IEtleSwgb3B0aW9uYWw6IGJvb2xlYW4sIGluajogSW5qZWN0b3IpOiBhbnkge1xuICAgIHZhciBvYmogPSBpbmouX3BhcmVudC5fc3RyYXRlZ3kuZ2V0T2JqQnlLZXlJZChrZXkuaWQsIFZpc2liaWxpdHkuUHJpdmF0ZSk7XG4gICAgcmV0dXJuIChvYmogIT09IFVOREVGSU5FRCkgPyBvYmogOiB0aGlzLl90aHJvd09yTnVsbChrZXksIG9wdGlvbmFsKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dldEJ5S2V5RGVmYXVsdChrZXk6IEtleSwgb3B0aW9uYWw6IGJvb2xlYW4sIHByb3ZpZGVyVmlzaWJpbGl0eTogVmlzaWJpbGl0eSxcbiAgICAgICAgICAgICAgICAgICBsb3dlckJvdW5kVmlzaWJpbGl0eTogT2JqZWN0KTogYW55IHtcbiAgICB2YXIgaW5qOiBJbmplY3RvciA9IHRoaXM7XG5cbiAgICBpZiAobG93ZXJCb3VuZFZpc2liaWxpdHkgaW5zdGFuY2VvZiBTa2lwU2VsZk1ldGFkYXRhKSB7XG4gICAgICBwcm92aWRlclZpc2liaWxpdHkgPSBpbmouX2lzSG9zdEJvdW5kYXJ5ID8gVmlzaWJpbGl0eS5QdWJsaWNBbmRQcml2YXRlIDogVmlzaWJpbGl0eS5QdWJsaWM7XG4gICAgICBpbmogPSBpbmouX3BhcmVudDtcbiAgICB9XG5cbiAgICB3aGlsZSAoaW5qICE9IG51bGwpIHtcbiAgICAgIHZhciBvYmogPSBpbmouX3N0cmF0ZWd5LmdldE9iakJ5S2V5SWQoa2V5LmlkLCBwcm92aWRlclZpc2liaWxpdHkpO1xuICAgICAgaWYgKG9iaiAhPT0gVU5ERUZJTkVEKSByZXR1cm4gb2JqO1xuXG4gICAgICBwcm92aWRlclZpc2liaWxpdHkgPSBpbmouX2lzSG9zdEJvdW5kYXJ5ID8gVmlzaWJpbGl0eS5QdWJsaWNBbmRQcml2YXRlIDogVmlzaWJpbGl0eS5QdWJsaWM7XG4gICAgICBpbmogPSBpbmouX3BhcmVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fdGhyb3dPck51bGwoa2V5LCBvcHRpb25hbCk7XG4gIH1cblxuICBnZXQgZGlzcGxheU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEluamVjdG9yKHByb3ZpZGVyczogWyR7X21hcFByb3ZpZGVycyh0aGlzLCAoYjogUmVzb2x2ZWRQcm92aWRlcikgPT4gYCBcIiR7Yi5rZXkuZGlzcGxheU5hbWV9XCIgYCkuam9pbihcIiwgXCIpfV0pYDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmRpc3BsYXlOYW1lOyB9XG59XG5cbnZhciBJTkpFQ1RPUl9LRVkgPSBLZXkuZ2V0KEluamVjdG9yKTtcblxuXG5mdW5jdGlvbiBfbWFwUHJvdmlkZXJzKGluamVjdG9yOiBJbmplY3RvciwgZm46IEZ1bmN0aW9uKTogYW55W10ge1xuICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5qZWN0b3IuX3Byb3RvLm51bWJlck9mUHJvdmlkZXJzOyArK2kpIHtcbiAgICByZXMucHVzaChmbihpbmplY3Rvci5fcHJvdG8uZ2V0UHJvdmlkZXJBdEluZGV4KGkpKSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require(\"angular2/src/facade/lang\");\r\n/**\r\n * A parameter metadata that specifies a dependency.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/6uHYJK?p=preview))\r\n *\r\n * ```typescript\r\n * class Engine {}\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * engine;\r\n * constructor(@Inject(\"MyEngine\") engine:Engine) {\r\n * this.engine = engine;\r\n * }\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([\r\n * provide(\"MyEngine\", {useClass: Engine}),\r\n * Car\r\n * ]);\r\n *\r\n * expect(injector.get(Car).engine instanceof Engine).toBe(true);\r\n * ```\r\n *\r\n * When `@Inject()` is not present, {@link Injector} will use the type annotation of the parameter.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * class Engine {}\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * constructor(public engine: Engine) {} //same as constructor(@Inject(Engine) engine:Engine)\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([Engine, Car]);\r\n * expect(injector.get(Car).engine instanceof Engine).toBe(true);\r\n * ```\r\n */\r\nvar InjectMetadata = (function () {\r\n function InjectMetadata(token) {\r\n this.token = token;\r\n }\r\n InjectMetadata.prototype.toString = function () { return \"@Inject(\" + lang_1.stringify(this.token) + \")\"; };\r\n InjectMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object])\r\n ], InjectMetadata);\r\n return InjectMetadata;\r\n})();\r\nexports.InjectMetadata = InjectMetadata;\r\n/**\r\n * A parameter metadata that marks a dependency as optional. {@link Injector} provides `null` if\r\n * the dependency is not found.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/AsryOm?p=preview))\r\n *\r\n * ```typescript\r\n * class Engine {}\r\n *\r\n * @Injectable()\r\n * class Car {\r\n * engine;\r\n * constructor(@Optional() engine:Engine) {\r\n * this.engine = engine;\r\n * }\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([Car]);\r\n * expect(injector.get(Car).engine).toBeNull();\r\n * ```\r\n */\r\nvar OptionalMetadata = (function () {\r\n function OptionalMetadata() {\r\n }\r\n OptionalMetadata.prototype.toString = function () { return \"@Optional()\"; };\r\n OptionalMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], OptionalMetadata);\r\n return OptionalMetadata;\r\n})();\r\nexports.OptionalMetadata = OptionalMetadata;\r\n/**\r\n * `DependencyMetadata` is used by the framework to extend DI.\r\n * This is internal to Angular and should not be used directly.\r\n */\r\nvar DependencyMetadata = (function () {\r\n function DependencyMetadata() {\r\n }\r\n Object.defineProperty(DependencyMetadata.prototype, \"token\", {\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DependencyMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], DependencyMetadata);\r\n return DependencyMetadata;\r\n})();\r\nexports.DependencyMetadata = DependencyMetadata;\r\n/**\r\n * A marker metadata that marks a class as available to {@link Injector} for creation.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/Wk4DMQ?p=preview))\r\n *\r\n * ```typescript\r\n * @Injectable()\r\n * class UsefulService {}\r\n *\r\n * @Injectable()\r\n * class NeedsService {\r\n * constructor(public service:UsefulService) {}\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([NeedsService, UsefulService]);\r\n * expect(injector.get(NeedsService).service instanceof UsefulService).toBe(true);\r\n * ```\r\n * {@link Injector} will throw {@link NoAnnotationError} when trying to instantiate a class that\r\n * does not have `@Injectable` marker, as shown in the example below.\r\n *\r\n * ```typescript\r\n * class UsefulService {}\r\n *\r\n * class NeedsService {\r\n * constructor(public service:UsefulService) {}\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([NeedsService, UsefulService]);\r\n * expect(() => injector.get(NeedsService)).toThrowError();\r\n * ```\r\n */\r\nvar InjectableMetadata = (function () {\r\n function InjectableMetadata() {\r\n }\r\n InjectableMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], InjectableMetadata);\r\n return InjectableMetadata;\r\n})();\r\nexports.InjectableMetadata = InjectableMetadata;\r\n/**\r\n * Specifies that an {@link Injector} should retrieve a dependency only from itself.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/NeagAg?p=preview))\r\n *\r\n * ```typescript\r\n * class Dependency {\r\n * }\r\n *\r\n * @Injectable()\r\n * class NeedsDependency {\r\n * dependency;\r\n * constructor(@Self() dependency:Dependency) {\r\n * this.dependency = dependency;\r\n * }\r\n * }\r\n *\r\n * var inj = Injector.resolveAndCreate([Dependency, NeedsDependency]);\r\n * var nd = inj.get(NeedsDependency);\r\n *\r\n * expect(nd.dependency instanceof Dependency).toBe(true);\r\n *\r\n * var inj = Injector.resolveAndCreate([Dependency]);\r\n * var child = inj.resolveAndCreateChild([NeedsDependency]);\r\n * expect(() => child.get(NeedsDependency)).toThrowError();\r\n * ```\r\n */\r\nvar SelfMetadata = (function () {\r\n function SelfMetadata() {\r\n }\r\n SelfMetadata.prototype.toString = function () { return \"@Self()\"; };\r\n SelfMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], SelfMetadata);\r\n return SelfMetadata;\r\n})();\r\nexports.SelfMetadata = SelfMetadata;\r\n/**\r\n * Specifies that the dependency resolution should start from the parent injector.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/Wchdzb?p=preview))\r\n *\r\n * ```typescript\r\n * class Dependency {\r\n * }\r\n *\r\n * @Injectable()\r\n * class NeedsDependency {\r\n * dependency;\r\n * constructor(@SkipSelf() dependency:Dependency) {\r\n * this.dependency = dependency;\r\n * }\r\n * }\r\n *\r\n * var parent = Injector.resolveAndCreate([Dependency]);\r\n * var child = parent.resolveAndCreateChild([NeedsDependency]);\r\n * expect(child.get(NeedsDependency).dependency instanceof Depedency).toBe(true);\r\n *\r\n * var inj = Injector.resolveAndCreate([Dependency, NeedsDependency]);\r\n * expect(() => inj.get(NeedsDependency)).toThrowError();\r\n * ```\r\n */\r\nvar SkipSelfMetadata = (function () {\r\n function SkipSelfMetadata() {\r\n }\r\n SkipSelfMetadata.prototype.toString = function () { return \"@SkipSelf()\"; };\r\n SkipSelfMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], SkipSelfMetadata);\r\n return SkipSelfMetadata;\r\n})();\r\nexports.SkipSelfMetadata = SkipSelfMetadata;\r\n/**\r\n * Specifies that an injector should retrieve a dependency from any injector until reaching the\r\n * closest host.\r\n *\r\n * In Angular, a component element is automatically declared as a host for all the injectors in\r\n * its view.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/GX79pV?p=preview))\r\n *\r\n * In the following example `App` contains `ParentCmp`, which contains `ChildDirective`.\r\n * So `ParentCmp` is the host of `ChildDirective`.\r\n *\r\n * `ChildDirective` depends on two services: `HostService` and `OtherService`.\r\n * `HostService` is defined at `ParentCmp`, and `OtherService` is defined at `App`.\r\n *\r\n *```typescript\r\n * class OtherService {}\r\n * class HostService {}\r\n *\r\n * @Directive({\r\n * selector: 'child-directive'\r\n * })\r\n * class ChildDirective {\r\n * constructor(@Optional() @Host() os:OtherService, @Optional() @Host() hs:HostService){\r\n * console.log(\"os is null\", os);\r\n * console.log(\"hs is NOT null\", hs);\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'parent-cmp',\r\n * providers: [HostService],\r\n * template: `\r\n * Dir: <child-directive></child-directive>\r\n * `,\r\n * directives: [ChildDirective]\r\n * })\r\n * class ParentCmp {\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * providers: [OtherService],\r\n * template: `\r\n * Parent: <parent-cmp></parent-cmp>\r\n * `,\r\n * directives: [ParentCmp]\r\n * })\r\n * class App {\r\n * }\r\n *\r\n * bootstrap(App);\r\n *```\r\n */\r\nvar HostMetadata = (function () {\r\n function HostMetadata() {\r\n }\r\n HostMetadata.prototype.toString = function () { return \"@Host()\"; };\r\n HostMetadata = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [])\r\n ], HostMetadata);\r\n return HostMetadata;\r\n})();\r\nexports.HostMetadata = HostMetadata;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9kaS9tZXRhZGF0YS50cyJdLCJuYW1lcyI6WyJJbmplY3RNZXRhZGF0YSIsIkluamVjdE1ldGFkYXRhLmNvbnN0cnVjdG9yIiwiSW5qZWN0TWV0YWRhdGEudG9TdHJpbmciLCJPcHRpb25hbE1ldGFkYXRhIiwiT3B0aW9uYWxNZXRhZGF0YS5jb25zdHJ1Y3RvciIsIk9wdGlvbmFsTWV0YWRhdGEudG9TdHJpbmciLCJEZXBlbmRlbmN5TWV0YWRhdGEiLCJEZXBlbmRlbmN5TWV0YWRhdGEuY29uc3RydWN0b3IiLCJEZXBlbmRlbmN5TWV0YWRhdGEudG9rZW4iLCJJbmplY3RhYmxlTWV0YWRhdGEiLCJJbmplY3RhYmxlTWV0YWRhdGEuY29uc3RydWN0b3IiLCJTZWxmTWV0YWRhdGEiLCJTZWxmTWV0YWRhdGEuY29uc3RydWN0b3IiLCJTZWxmTWV0YWRhdGEudG9TdHJpbmciLCJTa2lwU2VsZk1ldGFkYXRhIiwiU2tpcFNlbGZNZXRhZGF0YS5jb25zdHJ1Y3RvciIsIlNraXBTZWxmTWV0YWRhdGEudG9TdHJpbmciLCJIb3N0TWV0YWRhdGEiLCJIb3N0TWV0YWRhdGEuY29uc3RydWN0b3IiLCJIb3N0TWV0YWRhdGEudG9TdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHFCQUErRCwwQkFBMEIsQ0FBQyxDQUFBO0FBRTFGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Q0c7QUFDSDtJQUVFQSx3QkFBbUJBLEtBQUtBO1FBQUxDLFVBQUtBLEdBQUxBLEtBQUtBLENBQUFBO0lBQUdBLENBQUNBO0lBQzVCRCxpQ0FBUUEsR0FBUkEsY0FBcUJFLE1BQU1BLENBQUNBLGFBQVdBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxNQUFHQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUhwRUY7UUFBQ0EsWUFBS0EsRUFBRUE7O3VCQUlQQTtJQUFEQSxxQkFBQ0E7QUFBREEsQ0FBQ0EsQUFKRCxJQUlDO0FBSFksc0JBQWMsaUJBRzFCLENBQUE7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSDtJQUFBRztJQUdBQyxDQUFDQTtJQURDRCxtQ0FBUUEsR0FBUkEsY0FBcUJFLE1BQU1BLENBQUNBLGFBQWFBLENBQUNBLENBQUNBLENBQUNBO0lBRjlDRjtRQUFDQSxZQUFLQSxFQUFFQTs7eUJBR1BBO0lBQURBLHVCQUFDQTtBQUFEQSxDQUFDQSxBQUhELElBR0M7QUFGWSx3QkFBZ0IsbUJBRTVCLENBQUE7QUFFRDs7O0dBR0c7QUFDSDtJQUFBRztJQUdBQyxDQUFDQTtJQURDRCxzQkFBSUEscUNBQUtBO2FBQVRBLGNBQWNFLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUY7SUFGOUJBO1FBQUNBLFlBQUtBLEVBQUVBOzsyQkFHUEE7SUFBREEseUJBQUNBO0FBQURBLENBQUNBLEFBSEQsSUFHQztBQUZZLDBCQUFrQixxQkFFOUIsQ0FBQTtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSDtJQUVFRztJQUFlQyxDQUFDQTtJQUZsQkQ7UUFBQ0EsWUFBS0EsRUFBRUE7OzJCQUdQQTtJQUFEQSx5QkFBQ0E7QUFBREEsQ0FBQ0EsQUFIRCxJQUdDO0FBRlksMEJBQWtCLHFCQUU5QixDQUFBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBQ0g7SUFBQUU7SUFHQUMsQ0FBQ0E7SUFEQ0QsK0JBQVFBLEdBQVJBLGNBQXFCRSxNQUFNQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUYxQ0Y7UUFBQ0EsWUFBS0EsRUFBRUE7O3FCQUdQQTtJQUFEQSxtQkFBQ0E7QUFBREEsQ0FBQ0EsQUFIRCxJQUdDO0FBRlksb0JBQVksZUFFeEIsQ0FBQTtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSDtJQUFBRztJQUdBQyxDQUFDQTtJQURDRCxtQ0FBUUEsR0FBUkEsY0FBcUJFLE1BQU1BLENBQUNBLGFBQWFBLENBQUNBLENBQUNBLENBQUNBO0lBRjlDRjtRQUFDQSxZQUFLQSxFQUFFQTs7eUJBR1BBO0lBQURBLHVCQUFDQTtBQUFEQSxDQUFDQSxBQUhELElBR0M7QUFGWSx3QkFBZ0IsbUJBRTVCLENBQUE7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxREc7QUFDSDtJQUFBRztJQUdBQyxDQUFDQTtJQURDRCwrQkFBUUEsR0FBUkEsY0FBcUJFLE1BQU1BLENBQUNBLFNBQVNBLENBQUNBLENBQUNBLENBQUNBO0lBRjFDRjtRQUFDQSxZQUFLQSxFQUFFQTs7cUJBR1BBO0lBQURBLG1CQUFDQTtBQUFEQSxDQUFDQSxBQUhELElBR0M7QUFGWSxvQkFBWSxlQUV4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVCwgQ09OU1RfRVhQUiwgc3RyaW5naWZ5LCBpc0JsYW5rLCBpc1ByZXNlbnR9IGZyb20gXCJhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmdcIjtcblxuLyoqXG4gKiBBIHBhcmFtZXRlciBtZXRhZGF0YSB0aGF0IHNwZWNpZmllcyBhIGRlcGVuZGVuY3kuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0LzZ1SFlKSz9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIEVuZ2luZSB7fVxuICpcbiAqIEBJbmplY3RhYmxlKClcbiAqIGNsYXNzIENhciB7XG4gKiAgIGVuZ2luZTtcbiAqICAgY29uc3RydWN0b3IoQEluamVjdChcIk15RW5naW5lXCIpIGVuZ2luZTpFbmdpbmUpIHtcbiAqICAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICogIHByb3ZpZGUoXCJNeUVuZ2luZVwiLCB7dXNlQ2xhc3M6IEVuZ2luZX0pLFxuICogIENhclxuICogXSk7XG4gKlxuICogZXhwZWN0KGluamVjdG9yLmdldChDYXIpLmVuZ2luZSBpbnN0YW5jZW9mIEVuZ2luZSkudG9CZSh0cnVlKTtcbiAqIGBgYFxuICpcbiAqIFdoZW4gYEBJbmplY3QoKWAgaXMgbm90IHByZXNlbnQsIHtAbGluayBJbmplY3Rvcn0gd2lsbCB1c2UgdGhlIHR5cGUgYW5ub3RhdGlvbiBvZiB0aGUgcGFyYW1ldGVyLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgRW5naW5lIHt9XG4gKlxuICogQEluamVjdGFibGUoKVxuICogY2xhc3MgQ2FyIHtcbiAqICAgY29uc3RydWN0b3IocHVibGljIGVuZ2luZTogRW5naW5lKSB7fSAvL3NhbWUgYXMgY29uc3RydWN0b3IoQEluamVjdChFbmdpbmUpIGVuZ2luZTpFbmdpbmUpXG4gKiB9XG4gKlxuICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbRW5naW5lLCBDYXJdKTtcbiAqIGV4cGVjdChpbmplY3Rvci5nZXQoQ2FyKS5lbmdpbmUgaW5zdGFuY2VvZiBFbmdpbmUpLnRvQmUodHJ1ZSk7XG4gKiBgYGBcbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBJbmplY3RNZXRhZGF0YSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0b2tlbikge31cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuIGBASW5qZWN0KCR7c3RyaW5naWZ5KHRoaXMudG9rZW4pfSlgOyB9XG59XG5cbi8qKlxuICogQSBwYXJhbWV0ZXIgbWV0YWRhdGEgdGhhdCBtYXJrcyBhIGRlcGVuZGVuY3kgYXMgb3B0aW9uYWwuIHtAbGluayBJbmplY3Rvcn0gcHJvdmlkZXMgYG51bGxgIGlmXG4gKiB0aGUgZGVwZW5kZW5jeSBpcyBub3QgZm91bmQuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0FzcnlPbT9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIEVuZ2luZSB7fVxuICpcbiAqIEBJbmplY3RhYmxlKClcbiAqIGNsYXNzIENhciB7XG4gKiAgIGVuZ2luZTtcbiAqICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgZW5naW5lOkVuZ2luZSkge1xuICogICAgIHRoaXMuZW5naW5lID0gZW5naW5lO1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbQ2FyXSk7XG4gKiBleHBlY3QoaW5qZWN0b3IuZ2V0KENhcikuZW5naW5lKS50b0JlTnVsbCgpO1xuICogYGBgXG4gKi9cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgT3B0aW9uYWxNZXRhZGF0YSB7XG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiBgQE9wdGlvbmFsKClgOyB9XG59XG5cbi8qKlxuICogYERlcGVuZGVuY3lNZXRhZGF0YWAgaXMgdXNlZCBieSB0aGUgZnJhbWV3b3JrIHRvIGV4dGVuZCBESS5cbiAqIFRoaXMgaXMgaW50ZXJuYWwgdG8gQW5ndWxhciBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LlxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIERlcGVuZGVuY3lNZXRhZGF0YSB7XG4gIGdldCB0b2tlbigpIHsgcmV0dXJuIG51bGw7IH1cbn1cblxuLyoqXG4gKiBBIG1hcmtlciBtZXRhZGF0YSB0aGF0IG1hcmtzIGEgY2xhc3MgYXMgYXZhaWxhYmxlIHRvIHtAbGluayBJbmplY3Rvcn0gZm9yIGNyZWF0aW9uLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9XazRETVE/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBVc2VmdWxTZXJ2aWNlIHt9XG4gKlxuICogQEluamVjdGFibGUoKVxuICogY2xhc3MgTmVlZHNTZXJ2aWNlIHtcbiAqICAgY29uc3RydWN0b3IocHVibGljIHNlcnZpY2U6VXNlZnVsU2VydmljZSkge31cbiAqIH1cbiAqXG4gKiB2YXIgaW5qZWN0b3IgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtOZWVkc1NlcnZpY2UsIFVzZWZ1bFNlcnZpY2VdKTtcbiAqIGV4cGVjdChpbmplY3Rvci5nZXQoTmVlZHNTZXJ2aWNlKS5zZXJ2aWNlIGluc3RhbmNlb2YgVXNlZnVsU2VydmljZSkudG9CZSh0cnVlKTtcbiAqIGBgYFxuICoge0BsaW5rIEluamVjdG9yfSB3aWxsIHRocm93IHtAbGluayBOb0Fubm90YXRpb25FcnJvcn0gd2hlbiB0cnlpbmcgdG8gaW5zdGFudGlhdGUgYSBjbGFzcyB0aGF0XG4gKiBkb2VzIG5vdCBoYXZlIGBASW5qZWN0YWJsZWAgbWFya2VyLCBhcyBzaG93biBpbiB0aGUgZXhhbXBsZSBiZWxvdy5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBVc2VmdWxTZXJ2aWNlIHt9XG4gKlxuICogY2xhc3MgTmVlZHNTZXJ2aWNlIHtcbiAqICAgY29uc3RydWN0b3IocHVibGljIHNlcnZpY2U6VXNlZnVsU2VydmljZSkge31cbiAqIH1cbiAqXG4gKiB2YXIgaW5qZWN0b3IgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtOZWVkc1NlcnZpY2UsIFVzZWZ1bFNlcnZpY2VdKTtcbiAqIGV4cGVjdCgoKSA9PiBpbmplY3Rvci5nZXQoTmVlZHNTZXJ2aWNlKSkudG9UaHJvd0Vycm9yKCk7XG4gKiBgYGBcbiAqL1xuQENPTlNUKClcbmV4cG9ydCBjbGFzcyBJbmplY3RhYmxlTWV0YWRhdGEge1xuICBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKlxuICogU3BlY2lmaWVzIHRoYXQgYW4ge0BsaW5rIEluamVjdG9yfSBzaG91bGQgcmV0cmlldmUgYSBkZXBlbmRlbmN5IG9ubHkgZnJvbSBpdHNlbGYuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L05lYWdBZz9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIERlcGVuZGVuY3kge1xuICogfVxuICpcbiAqIEBJbmplY3RhYmxlKClcbiAqIGNsYXNzIE5lZWRzRGVwZW5kZW5jeSB7XG4gKiAgIGRlcGVuZGVuY3k7XG4gKiAgIGNvbnN0cnVjdG9yKEBTZWxmKCkgZGVwZW5kZW5jeTpEZXBlbmRlbmN5KSB7XG4gKiAgICAgdGhpcy5kZXBlbmRlbmN5ID0gZGVwZW5kZW5jeTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBpbmogPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtEZXBlbmRlbmN5LCBOZWVkc0RlcGVuZGVuY3ldKTtcbiAqIHZhciBuZCA9IGluai5nZXQoTmVlZHNEZXBlbmRlbmN5KTtcbiAqXG4gKiBleHBlY3QobmQuZGVwZW5kZW5jeSBpbnN0YW5jZW9mIERlcGVuZGVuY3kpLnRvQmUodHJ1ZSk7XG4gKlxuICogdmFyIGluaiA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW0RlcGVuZGVuY3ldKTtcbiAqIHZhciBjaGlsZCA9IGluai5yZXNvbHZlQW5kQ3JlYXRlQ2hpbGQoW05lZWRzRGVwZW5kZW5jeV0pO1xuICogZXhwZWN0KCgpID0+IGNoaWxkLmdldChOZWVkc0RlcGVuZGVuY3kpKS50b1Rocm93RXJyb3IoKTtcbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIFNlbGZNZXRhZGF0YSB7XG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiBgQFNlbGYoKWA7IH1cbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhhdCB0aGUgZGVwZW5kZW5jeSByZXNvbHV0aW9uIHNob3VsZCBzdGFydCBmcm9tIHRoZSBwYXJlbnQgaW5qZWN0b3IuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1djaGR6Yj9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIERlcGVuZGVuY3kge1xuICogfVxuICpcbiAqIEBJbmplY3RhYmxlKClcbiAqIGNsYXNzIE5lZWRzRGVwZW5kZW5jeSB7XG4gKiAgIGRlcGVuZGVuY3k7XG4gKiAgIGNvbnN0cnVjdG9yKEBTa2lwU2VsZigpIGRlcGVuZGVuY3k6RGVwZW5kZW5jeSkge1xuICogICAgIHRoaXMuZGVwZW5kZW5jeSA9IGRlcGVuZGVuY3k7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YXIgcGFyZW50ID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbRGVwZW5kZW5jeV0pO1xuICogdmFyIGNoaWxkID0gcGFyZW50LnJlc29sdmVBbmRDcmVhdGVDaGlsZChbTmVlZHNEZXBlbmRlbmN5XSk7XG4gKiBleHBlY3QoY2hpbGQuZ2V0KE5lZWRzRGVwZW5kZW5jeSkuZGVwZW5kZW5jeSBpbnN0YW5jZW9mIERlcGVkZW5jeSkudG9CZSh0cnVlKTtcbiAqXG4gKiB2YXIgaW5qID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbRGVwZW5kZW5jeSwgTmVlZHNEZXBlbmRlbmN5XSk7XG4gKiBleHBlY3QoKCkgPT4gaW5qLmdldChOZWVkc0RlcGVuZGVuY3kpKS50b1Rocm93RXJyb3IoKTtcbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIFNraXBTZWxmTWV0YWRhdGEge1xuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gYEBTa2lwU2VsZigpYDsgfVxufVxuXG4vKipcbiAqIFNwZWNpZmllcyB0aGF0IGFuIGluamVjdG9yIHNob3VsZCByZXRyaWV2ZSBhIGRlcGVuZGVuY3kgZnJvbSBhbnkgaW5qZWN0b3IgdW50aWwgcmVhY2hpbmcgdGhlXG4gKiBjbG9zZXN0IGhvc3QuXG4gKlxuICogSW4gQW5ndWxhciwgYSBjb21wb25lbnQgZWxlbWVudCBpcyBhdXRvbWF0aWNhbGx5IGRlY2xhcmVkIGFzIGEgaG9zdCBmb3IgYWxsIHRoZSBpbmplY3RvcnMgaW5cbiAqIGl0cyB2aWV3LlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9HWDc5cFY/cD1wcmV2aWV3KSlcbiAqXG4gKiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUgYEFwcGAgY29udGFpbnMgYFBhcmVudENtcGAsIHdoaWNoIGNvbnRhaW5zIGBDaGlsZERpcmVjdGl2ZWAuXG4gKiBTbyBgUGFyZW50Q21wYCBpcyB0aGUgaG9zdCBvZiBgQ2hpbGREaXJlY3RpdmVgLlxuICpcbiAqIGBDaGlsZERpcmVjdGl2ZWAgZGVwZW5kcyBvbiB0d28gc2VydmljZXM6IGBIb3N0U2VydmljZWAgYW5kIGBPdGhlclNlcnZpY2VgLlxuICogYEhvc3RTZXJ2aWNlYCBpcyBkZWZpbmVkIGF0IGBQYXJlbnRDbXBgLCBhbmQgYE90aGVyU2VydmljZWAgaXMgZGVmaW5lZCBhdCBgQXBwYC5cbiAqXG4gKmBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIE90aGVyU2VydmljZSB7fVxuICogY2xhc3MgSG9zdFNlcnZpY2Uge31cbiAqXG4gKiBARGlyZWN0aXZlKHtcbiAqICAgc2VsZWN0b3I6ICdjaGlsZC1kaXJlY3RpdmUnXG4gKiB9KVxuICogY2xhc3MgQ2hpbGREaXJlY3RpdmUge1xuICogICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASG9zdCgpIG9zOk90aGVyU2VydmljZSwgQE9wdGlvbmFsKCkgQEhvc3QoKSBoczpIb3N0U2VydmljZSl7XG4gKiAgICAgY29uc29sZS5sb2coXCJvcyBpcyBudWxsXCIsIG9zKTtcbiAqICAgICBjb25zb2xlLmxvZyhcImhzIGlzIE5PVCBudWxsXCIsIGhzKTtcbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3BhcmVudC1jbXAnLFxuICogICBwcm92aWRlcnM6IFtIb3N0U2VydmljZV0sXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgRGlyOiA8Y2hpbGQtZGlyZWN0aXZlPjwvY2hpbGQtZGlyZWN0aXZlPlxuICogICBgLFxuICogICBkaXJlY3RpdmVzOiBbQ2hpbGREaXJlY3RpdmVdXG4gKiB9KVxuICogY2xhc3MgUGFyZW50Q21wIHtcbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICogICBwcm92aWRlcnM6IFtPdGhlclNlcnZpY2VdLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIFBhcmVudDogPHBhcmVudC1jbXA+PC9wYXJlbnQtY21wPlxuICogICBgLFxuICogICBkaXJlY3RpdmVzOiBbUGFyZW50Q21wXVxuICogfSlcbiAqIGNsYXNzIEFwcCB7XG4gKiB9XG4gKlxuICogYm9vdHN0cmFwKEFwcCk7XG4gKmBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIEhvc3RNZXRhZGF0YSB7XG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiBgQEhvc3QoKWA7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar reflection_1 = require('angular2/src/core/reflection/reflection');\r\nvar key_1 = require('./key');\r\nvar metadata_1 = require('./metadata');\r\nvar exceptions_2 = require('./exceptions');\r\nvar forward_ref_1 = require('./forward_ref');\r\n/**\r\n * `Dependency` is used by the framework to extend DI.\r\n * This is internal to Angular and should not be used directly.\r\n */\r\nvar Dependency = (function () {\r\n function Dependency(key, optional, lowerBoundVisibility, upperBoundVisibility, properties) {\r\n this.key = key;\r\n this.optional = optional;\r\n this.lowerBoundVisibility = lowerBoundVisibility;\r\n this.upperBoundVisibility = upperBoundVisibility;\r\n this.properties = properties;\r\n }\r\n Dependency.fromKey = function (key) { return new Dependency(key, false, null, null, []); };\r\n return Dependency;\r\n})();\r\nexports.Dependency = Dependency;\r\nvar _EMPTY_LIST = lang_1.CONST_EXPR([]);\r\n/**\r\n * Describes how the {@link Injector} should instantiate a given token.\r\n *\r\n * See {@link provide}.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/GNAyj6K6PfYg2NBzgwZ5?p%3Dpreview&p=preview))\r\n *\r\n * ```javascript\r\n * var injector = Injector.resolveAndCreate([\r\n * new Provider(\"message\", { useValue: 'Hello' })\r\n * ]);\r\n *\r\n * expect(injector.get(\"message\")).toEqual('Hello');\r\n * ```\r\n */\r\nvar Provider = (function () {\r\n function Provider(token, _a) {\r\n var useClass = _a.useClass, useValue = _a.useValue, useExisting = _a.useExisting, useFactory = _a.useFactory, deps = _a.deps, multi = _a.multi;\r\n this.token = token;\r\n this.useClass = useClass;\r\n this.useValue = useValue;\r\n this.useExisting = useExisting;\r\n this.useFactory = useFactory;\r\n this.dependencies = deps;\r\n this._multi = multi;\r\n }\r\n Object.defineProperty(Provider.prototype, \"multi\", {\r\n // TODO: Provide a full working example after alpha38 is released.\r\n /**\r\n * Creates multiple providers matching the same token (a multi-provider).\r\n *\r\n * Multi-providers are used for creating pluggable service, where the system comes\r\n * with some default providers, and the user can register additional providers.\r\n * The combination of the default providers and the additional providers will be\r\n * used to drive the behavior of the system.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([\r\n * new Provider(\"Strings\", { useValue: \"String1\", multi: true}),\r\n * new Provider(\"Strings\", { useValue: \"String2\", multi: true})\r\n * ]);\r\n *\r\n * expect(injector.get(\"Strings\")).toEqual([\"String1\", \"String2\"]);\r\n * ```\r\n *\r\n * Multi-providers and regular providers cannot be mixed. The following\r\n * will throw an exception:\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([\r\n * new Provider(\"Strings\", { useValue: \"String1\", multi: true }),\r\n * new Provider(\"Strings\", { useValue: \"String2\"})\r\n * ]);\r\n * ```\r\n */\r\n get: function () { return lang_1.normalizeBool(this._multi); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Provider = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object, Object])\r\n ], Provider);\r\n return Provider;\r\n})();\r\nexports.Provider = Provider;\r\n/**\r\n * See {@link Provider} instead.\r\n *\r\n * @deprecated\r\n */\r\nvar Binding = (function (_super) {\r\n __extends(Binding, _super);\r\n function Binding(token, _a) {\r\n var toClass = _a.toClass, toValue = _a.toValue, toAlias = _a.toAlias, toFactory = _a.toFactory, deps = _a.deps, multi = _a.multi;\r\n _super.call(this, token, {\r\n useClass: toClass,\r\n useValue: toValue,\r\n useExisting: toAlias,\r\n useFactory: toFactory,\r\n deps: deps,\r\n multi: multi\r\n });\r\n }\r\n Object.defineProperty(Binding.prototype, \"toClass\", {\r\n /**\r\n * @deprecated\r\n */\r\n get: function () { return this.useClass; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Binding.prototype, \"toAlias\", {\r\n /**\r\n * @deprecated\r\n */\r\n get: function () { return this.useExisting; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Binding.prototype, \"toFactory\", {\r\n /**\r\n * @deprecated\r\n */\r\n get: function () { return this.useFactory; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Binding.prototype, \"toValue\", {\r\n /**\r\n * @deprecated\r\n */\r\n get: function () { return this.useValue; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Binding = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [Object, Object])\r\n ], Binding);\r\n return Binding;\r\n})(Provider);\r\nexports.Binding = Binding;\r\nvar ResolvedProvider_ = (function () {\r\n function ResolvedProvider_(key, resolvedFactories, multiProvider) {\r\n this.key = key;\r\n this.resolvedFactories = resolvedFactories;\r\n this.multiProvider = multiProvider;\r\n }\r\n Object.defineProperty(ResolvedProvider_.prototype, \"resolvedFactory\", {\r\n get: function () { return this.resolvedFactories[0]; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ResolvedProvider_;\r\n})();\r\nexports.ResolvedProvider_ = ResolvedProvider_;\r\n/**\r\n * An internal resolved representation of a factory function created by resolving {@link Provider}.\r\n */\r\nvar ResolvedFactory = (function () {\r\n function ResolvedFactory(\r\n /**\r\n * Factory function which can return an instance of an object represented by a key.\r\n */\r\n factory, \r\n /**\r\n * Arguments (dependencies) to the `factory` function.\r\n */\r\n dependencies) {\r\n this.factory = factory;\r\n this.dependencies = dependencies;\r\n }\r\n return ResolvedFactory;\r\n})();\r\nexports.ResolvedFactory = ResolvedFactory;\r\n/**\r\n * Creates a {@link Provider}.\r\n *\r\n * To construct a {@link Provider}, bind a `token` to either a class, a value, a factory function,\r\n * or\r\n * to an existing `token`.\r\n * See {@link ProviderBuilder} for more details.\r\n *\r\n * The `token` is most commonly a class or {@link angular2/di/OpaqueToken}.\r\n *\r\n * @deprecated\r\n */\r\nfunction bind(token) {\r\n return new ProviderBuilder(token);\r\n}\r\nexports.bind = bind;\r\n/**\r\n * Creates a {@link Provider}.\r\n *\r\n * See {@link Provider} for more details.\r\n *\r\n * <!-- TODO: improve the docs -->\r\n */\r\nfunction provide(token, _a) {\r\n var useClass = _a.useClass, useValue = _a.useValue, useExisting = _a.useExisting, useFactory = _a.useFactory, deps = _a.deps, multi = _a.multi;\r\n return new Provider(token, {\r\n useClass: useClass,\r\n useValue: useValue,\r\n useExisting: useExisting,\r\n useFactory: useFactory,\r\n deps: deps,\r\n multi: multi\r\n });\r\n}\r\nexports.provide = provide;\r\n/**\r\n * Helper class for the {@link bind} function.\r\n */\r\nvar ProviderBuilder = (function () {\r\n function ProviderBuilder(token) {\r\n this.token = token;\r\n }\r\n /**\r\n * Binds a DI token to a class.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/ZpBCSYqv6e2ud5KXLdxQ?p=preview))\r\n *\r\n * Because `toAlias` and `toClass` are often confused, the example contains\r\n * both use cases for easy comparison.\r\n *\r\n * ```typescript\r\n * class Vehicle {}\r\n *\r\n * class Car extends Vehicle {}\r\n *\r\n * var injectorClass = Injector.resolveAndCreate([\r\n * Car,\r\n * provide(Vehicle, {useClass: Car})\r\n * ]);\r\n * var injectorAlias = Injector.resolveAndCreate([\r\n * Car,\r\n * provide(Vehicle, {useExisting: Car})\r\n * ]);\r\n *\r\n * expect(injectorClass.get(Vehicle)).not.toBe(injectorClass.get(Car));\r\n * expect(injectorClass.get(Vehicle) instanceof Car).toBe(true);\r\n *\r\n * expect(injectorAlias.get(Vehicle)).toBe(injectorAlias.get(Car));\r\n * expect(injectorAlias.get(Vehicle) instanceof Car).toBe(true);\r\n * ```\r\n */\r\n ProviderBuilder.prototype.toClass = function (type) {\r\n if (!lang_1.isType(type)) {\r\n throw new exceptions_1.BaseException(\"Trying to create a class provider but \\\"\" + lang_1.stringify(type) + \"\\\" is not a class!\");\r\n }\r\n return new Provider(this.token, { useClass: type });\r\n };\r\n /**\r\n * Binds a DI token to a value.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/G024PFHmDL0cJFgfZK8O?p=preview))\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([\r\n * provide('message', {useValue: 'Hello'})\r\n * ]);\r\n *\r\n * expect(injector.get('message')).toEqual('Hello');\r\n * ```\r\n */\r\n ProviderBuilder.prototype.toValue = function (value) { return new Provider(this.token, { useValue: value }); };\r\n /**\r\n * Binds a DI token to an existing token.\r\n *\r\n * Angular will return the same instance as if the provided token was used. (This is\r\n * in contrast to `useClass` where a separate instance of `useClass` will be returned.)\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/uBaoF2pN5cfc5AfZapNw?p=preview))\r\n *\r\n * Because `toAlias` and `toClass` are often confused, the example contains\r\n * both use cases for easy comparison.\r\n *\r\n * ```typescript\r\n * class Vehicle {}\r\n *\r\n * class Car extends Vehicle {}\r\n *\r\n * var injectorAlias = Injector.resolveAndCreate([\r\n * Car,\r\n * provide(Vehicle, {useExisting: Car})\r\n * ]);\r\n * var injectorClass = Injector.resolveAndCreate([\r\n * Car,\r\n * provide(Vehicle, {useClass: Car})\r\n * ]);\r\n *\r\n * expect(injectorAlias.get(Vehicle)).toBe(injectorAlias.get(Car));\r\n * expect(injectorAlias.get(Vehicle) instanceof Car).toBe(true);\r\n *\r\n * expect(injectorClass.get(Vehicle)).not.toBe(injectorClass.get(Car));\r\n * expect(injectorClass.get(Vehicle) instanceof Car).toBe(true);\r\n * ```\r\n */\r\n ProviderBuilder.prototype.toAlias = function (aliasToken) {\r\n if (lang_1.isBlank(aliasToken)) {\r\n throw new exceptions_1.BaseException(\"Can not alias \" + lang_1.stringify(this.token) + \" to a blank value!\");\r\n }\r\n return new Provider(this.token, { useExisting: aliasToken });\r\n };\r\n /**\r\n * Binds a DI token to a function which computes the value.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/OejNIfTT3zb1iBxaIYOb?p=preview))\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([\r\n * provide(Number, {useFactory: () => { return 1+2; }}),\r\n * provide(String, {useFactory: (v) => { return \"Value: \" + v; }, deps: [Number]})\r\n * ]);\r\n *\r\n * expect(injector.get(Number)).toEqual(3);\r\n * expect(injector.get(String)).toEqual('Value: 3');\r\n * ```\r\n */\r\n ProviderBuilder.prototype.toFactory = function (factory, dependencies) {\r\n if (!lang_1.isFunction(factory)) {\r\n throw new exceptions_1.BaseException(\"Trying to create a factory provider but \\\"\" + lang_1.stringify(factory) + \"\\\" is not a function!\");\r\n }\r\n return new Provider(this.token, { useFactory: factory, deps: dependencies });\r\n };\r\n return ProviderBuilder;\r\n})();\r\nexports.ProviderBuilder = ProviderBuilder;\r\n/**\r\n * Resolve a single provider.\r\n */\r\nfunction resolveFactory(provider) {\r\n var factoryFn;\r\n var resolvedDeps;\r\n if (lang_1.isPresent(provider.useClass)) {\r\n var useClass = forward_ref_1.resolveForwardRef(provider.useClass);\r\n factoryFn = reflection_1.reflector.factory(useClass);\r\n resolvedDeps = _dependenciesFor(useClass);\r\n }\r\n else if (lang_1.isPresent(provider.useExisting)) {\r\n factoryFn = function (aliasInstance) { return aliasInstance; };\r\n resolvedDeps = [Dependency.fromKey(key_1.Key.get(provider.useExisting))];\r\n }\r\n else if (lang_1.isPresent(provider.useFactory)) {\r\n factoryFn = provider.useFactory;\r\n resolvedDeps = _constructDependencies(provider.useFactory, provider.dependencies);\r\n }\r\n else {\r\n factoryFn = function () { return provider.useValue; };\r\n resolvedDeps = _EMPTY_LIST;\r\n }\r\n return new ResolvedFactory(factoryFn, resolvedDeps);\r\n}\r\nexports.resolveFactory = resolveFactory;\r\n/**\r\n * Converts the {@link Provider} into {@link ResolvedProvider}.\r\n *\r\n * {@link Injector} internally only uses {@link ResolvedProvider}, {@link Provider} contains\r\n * convenience provider syntax.\r\n */\r\nfunction resolveProvider(provider) {\r\n return new ResolvedProvider_(key_1.Key.get(provider.token), [resolveFactory(provider)], provider.multi);\r\n}\r\nexports.resolveProvider = resolveProvider;\r\n/**\r\n * Resolve a list of Providers.\r\n */\r\nfunction resolveProviders(providers) {\r\n var normalized = _normalizeProviders(providers, []);\r\n var resolved = normalized.map(resolveProvider);\r\n return collection_1.MapWrapper.values(mergeResolvedProviders(resolved, new Map()));\r\n}\r\nexports.resolveProviders = resolveProviders;\r\n/**\r\n * Merges a list of ResolvedProviders into a list where\r\n * each key is contained exactly once and multi providers\r\n * have been merged.\r\n */\r\nfunction mergeResolvedProviders(providers, normalizedProvidersMap) {\r\n for (var i = 0; i < providers.length; i++) {\r\n var provider = providers[i];\r\n var existing = normalizedProvidersMap.get(provider.key.id);\r\n if (lang_1.isPresent(existing)) {\r\n if (provider.multiProvider !== existing.multiProvider) {\r\n throw new exceptions_2.MixingMultiProvidersWithRegularProvidersError(existing, provider);\r\n }\r\n if (provider.multiProvider) {\r\n for (var j = 0; j < provider.resolvedFactories.length; j++) {\r\n existing.resolvedFactories.push(provider.resolvedFactories[j]);\r\n }\r\n }\r\n else {\r\n normalizedProvidersMap.set(provider.key.id, provider);\r\n }\r\n }\r\n else {\r\n var resolvedProvider;\r\n if (provider.multiProvider) {\r\n resolvedProvider = new ResolvedProvider_(provider.key, collection_1.ListWrapper.clone(provider.resolvedFactories), provider.multiProvider);\r\n }\r\n else {\r\n resolvedProvider = provider;\r\n }\r\n normalizedProvidersMap.set(provider.key.id, resolvedProvider);\r\n }\r\n }\r\n return normalizedProvidersMap;\r\n}\r\nexports.mergeResolvedProviders = mergeResolvedProviders;\r\nfunction _normalizeProviders(providers, res) {\r\n providers.forEach(function (b) {\r\n if (b instanceof lang_1.Type) {\r\n res.push(provide(b, { useClass: b }));\r\n }\r\n else if (b instanceof Provider) {\r\n res.push(b);\r\n }\r\n else if (b instanceof Array) {\r\n _normalizeProviders(b, res);\r\n }\r\n else if (b instanceof ProviderBuilder) {\r\n throw new exceptions_2.InvalidProviderError(b.token);\r\n }\r\n else {\r\n throw new exceptions_2.InvalidProviderError(b);\r\n }\r\n });\r\n return res;\r\n}\r\nfunction _constructDependencies(factoryFunction, dependencies) {\r\n if (lang_1.isBlank(dependencies)) {\r\n return _dependenciesFor(factoryFunction);\r\n }\r\n else {\r\n var params = dependencies.map(function (t) { return [t]; });\r\n return dependencies.map(function (t) { return _extractToken(factoryFunction, t, params); });\r\n }\r\n}\r\nfunction _dependenciesFor(typeOrFunc) {\r\n var params = reflection_1.reflector.parameters(typeOrFunc);\r\n if (lang_1.isBlank(params))\r\n return [];\r\n if (params.some(lang_1.isBlank)) {\r\n throw new exceptions_2.NoAnnotationError(typeOrFunc, params);\r\n }\r\n return params.map(function (p) { return _extractToken(typeOrFunc, p, params); });\r\n}\r\nfunction _extractToken(typeOrFunc, metadata /*any[] | any*/, params) {\r\n var depProps = [];\r\n var token = null;\r\n var optional = false;\r\n if (!lang_1.isArray(metadata)) {\r\n if (metadata instanceof metadata_1.InjectMetadata) {\r\n return _createDependency(metadata.token, optional, null, null, depProps);\r\n }\r\n else {\r\n return _createDependency(metadata, optional, null, null, depProps);\r\n }\r\n }\r\n var lowerBoundVisibility = null;\r\n var upperBoundVisibility = null;\r\n for (var i = 0; i < metadata.length; ++i) {\r\n var paramMetadata = metadata[i];\r\n if (paramMetadata instanceof lang_1.Type) {\r\n token = paramMetadata;\r\n }\r\n else if (paramMetadata instanceof metadata_1.InjectMetadata) {\r\n token = paramMetadata.token;\r\n }\r\n else if (paramMetadata instanceof metadata_1.OptionalMetadata) {\r\n optional = true;\r\n }\r\n else if (paramMetadata instanceof metadata_1.SelfMetadata) {\r\n upperBoundVisibility = paramMetadata;\r\n }\r\n else if (paramMetadata instanceof metadata_1.HostMetadata) {\r\n upperBoundVisibility = paramMetadata;\r\n }\r\n else if (paramMetadata instanceof metadata_1.SkipSelfMetadata) {\r\n lowerBoundVisibility = paramMetadata;\r\n }\r\n else if (paramMetadata instanceof metadata_1.DependencyMetadata) {\r\n if (lang_1.isPresent(paramMetadata.token)) {\r\n token = paramMetadata.token;\r\n }\r\n depProps.push(paramMetadata);\r\n }\r\n }\r\n token = forward_ref_1.resolveForwardRef(token);\r\n if (lang_1.isPresent(token)) {\r\n return _createDependency(token, optional, lowerBoundVisibility, upperBoundVisibility, depProps);\r\n }\r\n else {\r\n throw new exceptions_2.NoAnnotationError(typeOrFunc, params);\r\n }\r\n}\r\nfunction _createDependency(token, optional, lowerBoundVisibility, upperBoundVisibility, depProps) {\r\n return new Dependency(key_1.Key.get(token), optional, lowerBoundVisibility, upperBoundVisibility, depProps);\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9kaS9wcm92aWRlci50cyJdLCJuYW1lcyI6WyJEZXBlbmRlbmN5IiwiRGVwZW5kZW5jeS5jb25zdHJ1Y3RvciIsIkRlcGVuZGVuY3kuZnJvbUtleSIsIlByb3ZpZGVyIiwiUHJvdmlkZXIuY29uc3RydWN0b3IiLCJQcm92aWRlci5tdWx0aSIsIkJpbmRpbmciLCJCaW5kaW5nLmNvbnN0cnVjdG9yIiwiQmluZGluZy50b0NsYXNzIiwiQmluZGluZy50b0FsaWFzIiwiQmluZGluZy50b0ZhY3RvcnkiLCJCaW5kaW5nLnRvVmFsdWUiLCJSZXNvbHZlZFByb3ZpZGVyXyIsIlJlc29sdmVkUHJvdmlkZXJfLmNvbnN0cnVjdG9yIiwiUmVzb2x2ZWRQcm92aWRlcl8ucmVzb2x2ZWRGYWN0b3J5IiwiUmVzb2x2ZWRGYWN0b3J5IiwiUmVzb2x2ZWRGYWN0b3J5LmNvbnN0cnVjdG9yIiwiYmluZCIsInByb3ZpZGUiLCJQcm92aWRlckJ1aWxkZXIiLCJQcm92aWRlckJ1aWxkZXIuY29uc3RydWN0b3IiLCJQcm92aWRlckJ1aWxkZXIudG9DbGFzcyIsIlByb3ZpZGVyQnVpbGRlci50b1ZhbHVlIiwiUHJvdmlkZXJCdWlsZGVyLnRvQWxpYXMiLCJQcm92aWRlckJ1aWxkZXIudG9GYWN0b3J5IiwicmVzb2x2ZUZhY3RvcnkiLCJyZXNvbHZlUHJvdmlkZXIiLCJyZXNvbHZlUHJvdmlkZXJzIiwibWVyZ2VSZXNvbHZlZFByb3ZpZGVycyIsIl9ub3JtYWxpemVQcm92aWRlcnMiLCJfY29uc3RydWN0RGVwZW5kZW5jaWVzIiwiX2RlcGVuZGVuY2llc0ZvciIsIl9leHRyYWN0VG9rZW4iLCJfY3JlYXRlRGVwZW5kZW5jeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQkFXTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLDJCQUE4QyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQy9FLDJCQUFzQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ3ZFLDJCQUF3Qix5Q0FBeUMsQ0FBQyxDQUFBO0FBQ2xFLG9CQUFrQixPQUFPLENBQUMsQ0FBQTtBQUMxQix5QkFRTyxZQUFZLENBQUMsQ0FBQTtBQUNwQiwyQkFJTyxjQUFjLENBQUMsQ0FBQTtBQUN0Qiw0QkFBZ0MsZUFBZSxDQUFDLENBQUE7QUFFaEQ7OztHQUdHO0FBQ0g7SUFDRUEsb0JBQW1CQSxHQUFRQSxFQUFTQSxRQUFpQkEsRUFBU0Esb0JBQXlCQSxFQUNwRUEsb0JBQXlCQSxFQUFTQSxVQUFpQkE7UUFEbkRDLFFBQUdBLEdBQUhBLEdBQUdBLENBQUtBO1FBQVNBLGFBQVFBLEdBQVJBLFFBQVFBLENBQVNBO1FBQVNBLHlCQUFvQkEsR0FBcEJBLG9CQUFvQkEsQ0FBS0E7UUFDcEVBLHlCQUFvQkEsR0FBcEJBLG9CQUFvQkEsQ0FBS0E7UUFBU0EsZUFBVUEsR0FBVkEsVUFBVUEsQ0FBT0E7SUFBR0EsQ0FBQ0E7SUFFbkVELGtCQUFPQSxHQUFkQSxVQUFlQSxHQUFRQSxJQUFnQkUsTUFBTUEsQ0FBQ0EsSUFBSUEsVUFBVUEsQ0FBQ0EsR0FBR0EsRUFBRUEsS0FBS0EsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDN0ZGLGlCQUFDQTtBQUFEQSxDQUFDQSxBQUxELElBS0M7QUFMWSxrQkFBVSxhQUt0QixDQUFBO0FBRUQsSUFBTSxXQUFXLEdBQUcsaUJBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUVuQzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNIO0lBbUlFRyxrQkFBWUEsS0FBS0EsRUFBRUEsRUFPbEJBO1lBUG1CQyxRQUFRQSxnQkFBRUEsUUFBUUEsZ0JBQUVBLFdBQVdBLG1CQUFFQSxVQUFVQSxrQkFBRUEsSUFBSUEsWUFBRUEsS0FBS0E7UUFRMUVBLElBQUlBLENBQUNBLEtBQUtBLEdBQUdBLEtBQUtBLENBQUNBO1FBQ25CQSxJQUFJQSxDQUFDQSxRQUFRQSxHQUFHQSxRQUFRQSxDQUFDQTtRQUN6QkEsSUFBSUEsQ0FBQ0EsUUFBUUEsR0FBR0EsUUFBUUEsQ0FBQ0E7UUFDekJBLElBQUlBLENBQUNBLFdBQVdBLEdBQUdBLFdBQVdBLENBQUNBO1FBQy9CQSxJQUFJQSxDQUFDQSxVQUFVQSxHQUFHQSxVQUFVQSxDQUFDQTtRQUM3QkEsSUFBSUEsQ0FBQ0EsWUFBWUEsR0FBR0EsSUFBSUEsQ0FBQ0E7UUFDekJBLElBQUlBLENBQUNBLE1BQU1BLEdBQUdBLEtBQUtBLENBQUNBO0lBQ3RCQSxDQUFDQTtJQWdDREQsc0JBQUlBLDJCQUFLQTtRQTlCVEEsa0VBQWtFQTtRQUNsRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0E0QkdBO2FBQ0hBLGNBQXVCRSxNQUFNQSxDQUFDQSxvQkFBYUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBRjtJQWxMN0RBO1FBQUNBLFlBQUtBLEVBQUVBOztpQkFtTFBBO0lBQURBLGVBQUNBO0FBQURBLENBQUNBLEFBbkxELElBbUxDO0FBbExZLGdCQUFRLFdBa0xwQixDQUFBO0FBRUQ7Ozs7R0FJRztBQUNIO0lBQzZCRywyQkFBUUE7SUFDbkNBLGlCQUFZQSxLQUFLQSxFQUFFQSxFQUtsQkE7WUFMbUJDLE9BQU9BLGVBQUVBLE9BQU9BLGVBQUVBLE9BQU9BLGVBQUVBLFNBQVNBLGlCQUFFQSxJQUFJQSxZQUFFQSxLQUFLQTtRQU1uRUEsa0JBQU1BLEtBQUtBLEVBQUVBO1lBQ1hBLFFBQVFBLEVBQUVBLE9BQU9BO1lBQ2pCQSxRQUFRQSxFQUFFQSxPQUFPQTtZQUNqQkEsV0FBV0EsRUFBRUEsT0FBT0E7WUFDcEJBLFVBQVVBLEVBQUVBLFNBQVNBO1lBQ3JCQSxJQUFJQSxFQUFFQSxJQUFJQTtZQUNWQSxLQUFLQSxFQUFFQSxLQUFLQTtTQUNiQSxDQUFDQSxDQUFDQTtJQUNMQSxDQUFDQTtJQUtERCxzQkFBSUEsNEJBQU9BO1FBSFhBOztXQUVHQTthQUNIQSxjQUFnQkUsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBRjtJQUt2Q0Esc0JBQUlBLDRCQUFPQTtRQUhYQTs7V0FFR0E7YUFDSEEsY0FBZ0JHLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUg7SUFLMUNBLHNCQUFJQSw4QkFBU0E7UUFIYkE7O1dBRUdBO2FBQ0hBLGNBQWtCSSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFKO0lBSzNDQSxzQkFBSUEsNEJBQU9BO1FBSFhBOztXQUVHQTthQUNIQSxjQUFnQkssTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBTDtJQXBDekNBO1FBQUNBLFlBQUtBLEVBQUVBOztnQkFxQ1BBO0lBQURBLGNBQUNBO0FBQURBLENBQUNBLEFBckNELEVBQzZCLFFBQVEsRUFvQ3BDO0FBcENZLGVBQU8sVUFvQ25CLENBQUE7QUEwQ0Q7SUFDRU0sMkJBQW1CQSxHQUFRQSxFQUFTQSxpQkFBb0NBLEVBQ3JEQSxhQUFzQkE7UUFEdEJDLFFBQUdBLEdBQUhBLEdBQUdBLENBQUtBO1FBQVNBLHNCQUFpQkEsR0FBakJBLGlCQUFpQkEsQ0FBbUJBO1FBQ3JEQSxrQkFBYUEsR0FBYkEsYUFBYUEsQ0FBU0E7SUFBR0EsQ0FBQ0E7SUFFN0NELHNCQUFJQSw4Q0FBZUE7YUFBbkJBLGNBQXlDRSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxpQkFBaUJBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUY7SUFDOUVBLHdCQUFDQTtBQUFEQSxDQUFDQSxBQUxELElBS0M7QUFMWSx5QkFBaUIsb0JBSzdCLENBQUE7QUFFRDs7R0FFRztBQUNIO0lBQ0VHO1FBQ0lBOztXQUVHQTtRQUNJQSxPQUFpQkE7UUFFeEJBOztXQUVHQTtRQUNJQSxZQUEwQkE7UUFMMUJDLFlBQU9BLEdBQVBBLE9BQU9BLENBQVVBO1FBS2pCQSxpQkFBWUEsR0FBWkEsWUFBWUEsQ0FBY0E7SUFBR0EsQ0FBQ0E7SUFDM0NELHNCQUFDQTtBQUFEQSxDQUFDQSxBQVhELElBV0M7QUFYWSx1QkFBZSxrQkFXM0IsQ0FBQTtBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsY0FBcUIsS0FBSztJQUN4QkUsTUFBTUEsQ0FBQ0EsSUFBSUEsZUFBZUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0E7QUFDcENBLENBQUNBO0FBRmUsWUFBSSxPQUVuQixDQUFBO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsaUJBQXdCLEtBQUssRUFBRSxFQU85QjtRQVArQkMsUUFBUUEsZ0JBQUVBLFFBQVFBLGdCQUFFQSxXQUFXQSxtQkFBRUEsVUFBVUEsa0JBQUVBLElBQUlBLFlBQUVBLEtBQUtBO0lBUXRGQSxNQUFNQSxDQUFDQSxJQUFJQSxRQUFRQSxDQUFDQSxLQUFLQSxFQUFFQTtRQUN6QkEsUUFBUUEsRUFBRUEsUUFBUUE7UUFDbEJBLFFBQVFBLEVBQUVBLFFBQVFBO1FBQ2xCQSxXQUFXQSxFQUFFQSxXQUFXQTtRQUN4QkEsVUFBVUEsRUFBRUEsVUFBVUE7UUFDdEJBLElBQUlBLEVBQUVBLElBQUlBO1FBQ1ZBLEtBQUtBLEVBQUVBLEtBQUtBO0tBQ2JBLENBQUNBLENBQUNBO0FBQ0xBLENBQUNBO0FBaEJlLGVBQU8sVUFnQnRCLENBQUE7QUFFRDs7R0FFRztBQUNIO0lBQ0VDLHlCQUFtQkEsS0FBS0E7UUFBTEMsVUFBS0EsR0FBTEEsS0FBS0EsQ0FBQUE7SUFBR0EsQ0FBQ0E7SUFFNUJEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BNEJHQTtJQUNIQSxpQ0FBT0EsR0FBUEEsVUFBUUEsSUFBVUE7UUFDaEJFLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLGFBQU1BLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ2xCQSxNQUFNQSxJQUFJQSwwQkFBYUEsQ0FDbkJBLDZDQUEwQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLHVCQUFtQkEsQ0FBQ0EsQ0FBQ0E7UUFDcEZBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLElBQUlBLFFBQVFBLENBQUNBLElBQUlBLENBQUNBLEtBQUtBLEVBQUVBLEVBQUNBLFFBQVFBLEVBQUVBLElBQUlBLEVBQUNBLENBQUNBLENBQUNBO0lBQ3BEQSxDQUFDQTtJQUVERjs7Ozs7Ozs7Ozs7O09BWUdBO0lBQ0hBLGlDQUFPQSxHQUFQQSxVQUFRQSxLQUFVQSxJQUFjRyxNQUFNQSxDQUFDQSxJQUFJQSxRQUFRQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxFQUFFQSxFQUFDQSxRQUFRQSxFQUFFQSxLQUFLQSxFQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUVyRkg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0ErQkdBO0lBQ0hBLGlDQUFPQSxHQUFQQSxVQUFRQSxVQUF3QkE7UUFDOUJJLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLFVBQVVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ3hCQSxNQUFNQSxJQUFJQSwwQkFBYUEsQ0FBQ0EsbUJBQWlCQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsdUJBQW9CQSxDQUFDQSxDQUFDQTtRQUN0RkEsQ0FBQ0E7UUFDREEsTUFBTUEsQ0FBQ0EsSUFBSUEsUUFBUUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsRUFBRUEsRUFBQ0EsV0FBV0EsRUFBRUEsVUFBVUEsRUFBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDN0RBLENBQUNBO0lBRURKOzs7Ozs7Ozs7Ozs7OztPQWNHQTtJQUNIQSxtQ0FBU0EsR0FBVEEsVUFBVUEsT0FBaUJBLEVBQUVBLFlBQW9CQTtRQUMvQ0ssRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsaUJBQVVBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ3pCQSxNQUFNQSxJQUFJQSwwQkFBYUEsQ0FDbkJBLCtDQUE0Q0EsZ0JBQVNBLENBQUNBLE9BQU9BLENBQUNBLDBCQUFzQkEsQ0FBQ0EsQ0FBQ0E7UUFDNUZBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLElBQUlBLFFBQVFBLENBQUNBLElBQUlBLENBQUNBLEtBQUtBLEVBQUVBLEVBQUNBLFVBQVVBLEVBQUVBLE9BQU9BLEVBQUVBLElBQUlBLEVBQUVBLFlBQVlBLEVBQUNBLENBQUNBLENBQUNBO0lBQzdFQSxDQUFDQTtJQUNITCxzQkFBQ0E7QUFBREEsQ0FBQ0EsQUFwSEQsSUFvSEM7QUFwSFksdUJBQWUsa0JBb0gzQixDQUFBO0FBRUQ7O0dBRUc7QUFDSCx3QkFBK0IsUUFBa0I7SUFDL0NNLElBQUlBLFNBQW1CQSxDQUFDQTtJQUN4QkEsSUFBSUEsWUFBMEJBLENBQUNBO0lBQy9CQSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDakNBLElBQUlBLFFBQVFBLEdBQUdBLCtCQUFpQkEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0E7UUFDcERBLFNBQVNBLEdBQUdBLHNCQUFTQSxDQUFDQSxPQUFPQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQTtRQUN4Q0EsWUFBWUEsR0FBR0EsZ0JBQWdCQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQTtJQUM1Q0EsQ0FBQ0E7SUFBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLFFBQVFBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQzNDQSxTQUFTQSxHQUFHQSxVQUFDQSxhQUFhQSxJQUFLQSxPQUFBQSxhQUFhQSxFQUFiQSxDQUFhQSxDQUFDQTtRQUM3Q0EsWUFBWUEsR0FBR0EsQ0FBQ0EsVUFBVUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsU0FBR0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDckVBLENBQUNBO0lBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxRQUFRQSxDQUFDQSxVQUFVQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUMxQ0EsU0FBU0EsR0FBR0EsUUFBUUEsQ0FBQ0EsVUFBVUEsQ0FBQ0E7UUFDaENBLFlBQVlBLEdBQUdBLHNCQUFzQkEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsVUFBVUEsRUFBRUEsUUFBUUEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsQ0FBQ0E7SUFDcEZBLENBQUNBO0lBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ05BLFNBQVNBLEdBQUdBLGNBQU1BLE9BQUFBLFFBQVFBLENBQUNBLFFBQVFBLEVBQWpCQSxDQUFpQkEsQ0FBQ0E7UUFDcENBLFlBQVlBLEdBQUdBLFdBQVdBLENBQUNBO0lBQzdCQSxDQUFDQTtJQUNEQSxNQUFNQSxDQUFDQSxJQUFJQSxlQUFlQSxDQUFDQSxTQUFTQSxFQUFFQSxZQUFZQSxDQUFDQSxDQUFDQTtBQUN0REEsQ0FBQ0E7QUFsQmUsc0JBQWMsaUJBa0I3QixDQUFBO0FBRUQ7Ozs7O0dBS0c7QUFDSCx5QkFBZ0MsUUFBa0I7SUFDaERDLE1BQU1BLENBQUNBLElBQUlBLGlCQUFpQkEsQ0FBQ0EsU0FBR0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsRUFBRUEsUUFBUUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0E7QUFDcEdBLENBQUNBO0FBRmUsdUJBQWUsa0JBRTlCLENBQUE7QUFFRDs7R0FFRztBQUNILDBCQUFpQyxTQUF5QztJQUN4RUMsSUFBSUEsVUFBVUEsR0FBR0EsbUJBQW1CQSxDQUFDQSxTQUFTQSxFQUFFQSxFQUFFQSxDQUFDQSxDQUFDQTtJQUNwREEsSUFBSUEsUUFBUUEsR0FBR0EsVUFBVUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsZUFBZUEsQ0FBQ0EsQ0FBQ0E7SUFDL0NBLE1BQU1BLENBQUNBLHVCQUFVQSxDQUFDQSxNQUFNQSxDQUFDQSxzQkFBc0JBLENBQUNBLFFBQVFBLEVBQUVBLElBQUlBLEdBQUdBLEVBQTRCQSxDQUFDQSxDQUFDQSxDQUFDQTtBQUNsR0EsQ0FBQ0E7QUFKZSx3QkFBZ0IsbUJBSS9CLENBQUE7QUFFRDs7OztHQUlHO0FBQ0gsZ0NBQ0ksU0FBNkIsRUFDN0Isc0JBQXFEO0lBQ3ZEQyxHQUFHQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxTQUFTQSxDQUFDQSxNQUFNQSxFQUFFQSxDQUFDQSxFQUFFQSxFQUFFQSxDQUFDQTtRQUMxQ0EsSUFBSUEsUUFBUUEsR0FBR0EsU0FBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDNUJBLElBQUlBLFFBQVFBLEdBQUdBLHNCQUFzQkEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0E7UUFDM0RBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN4QkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsYUFBYUEsS0FBS0EsUUFBUUEsQ0FBQ0EsYUFBYUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ3REQSxNQUFNQSxJQUFJQSwwREFBNkNBLENBQUNBLFFBQVFBLEVBQUVBLFFBQVFBLENBQUNBLENBQUNBO1lBQzlFQSxDQUFDQTtZQUNEQSxFQUFFQSxDQUFDQSxDQUFDQSxRQUFRQSxDQUFDQSxhQUFhQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDM0JBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLFFBQVFBLENBQUNBLGlCQUFpQkEsQ0FBQ0EsTUFBTUEsRUFBRUEsQ0FBQ0EsRUFBRUEsRUFBRUEsQ0FBQ0E7b0JBQzNEQSxRQUFRQSxDQUFDQSxpQkFBaUJBLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLGlCQUFpQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ2pFQSxDQUFDQTtZQUNIQSxDQUFDQTtZQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtnQkFDTkEsc0JBQXNCQSxDQUFDQSxHQUFHQSxDQUFDQSxRQUFRQSxDQUFDQSxHQUFHQSxDQUFDQSxFQUFFQSxFQUFFQSxRQUFRQSxDQUFDQSxDQUFDQTtZQUN4REEsQ0FBQ0E7UUFDSEEsQ0FBQ0E7UUFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFDTkEsSUFBSUEsZ0JBQWdCQSxDQUFDQTtZQUNyQkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsYUFBYUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQzNCQSxnQkFBZ0JBLEdBQUdBLElBQUlBLGlCQUFpQkEsQ0FDcENBLFFBQVFBLENBQUNBLEdBQUdBLEVBQUVBLHdCQUFXQSxDQUFDQSxLQUFLQSxDQUFDQSxRQUFRQSxDQUFDQSxpQkFBaUJBLENBQUNBLEVBQUVBLFFBQVFBLENBQUNBLGFBQWFBLENBQUNBLENBQUNBO1lBQzNGQSxDQUFDQTtZQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtnQkFDTkEsZ0JBQWdCQSxHQUFHQSxRQUFRQSxDQUFDQTtZQUM5QkEsQ0FBQ0E7WUFDREEsc0JBQXNCQSxDQUFDQSxHQUFHQSxDQUFDQSxRQUFRQSxDQUFDQSxHQUFHQSxDQUFDQSxFQUFFQSxFQUFFQSxnQkFBZ0JBLENBQUNBLENBQUNBO1FBQ2hFQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUNEQSxNQUFNQSxDQUFDQSxzQkFBc0JBLENBQUNBO0FBQ2hDQSxDQUFDQTtBQTdCZSw4QkFBc0IseUJBNkJyQyxDQUFBO0FBRUQsNkJBQTZCLFNBQTJELEVBQzNELEdBQWU7SUFDMUNDLFNBQVNBLENBQUNBLE9BQU9BLENBQUNBLFVBQUFBLENBQUNBO1FBQ2pCQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxZQUFZQSxXQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN0QkEsR0FBR0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsRUFBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0EsRUFBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFFdENBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLFlBQVlBLFFBQVFBLENBQUNBLENBQUNBLENBQUNBO1lBQ2pDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUVkQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxZQUFZQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUM5QkEsbUJBQW1CQSxDQUFDQSxDQUFDQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQTtRQUU5QkEsQ0FBQ0E7UUFBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsWUFBWUEsZUFBZUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDeENBLE1BQU1BLElBQUlBLGlDQUFvQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0E7UUFFMUNBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ05BLE1BQU1BLElBQUlBLGlDQUFvQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDcENBLENBQUNBO0lBQ0hBLENBQUNBLENBQUNBLENBQUNBO0lBRUhBLE1BQU1BLENBQUNBLEdBQUdBLENBQUNBO0FBQ2JBLENBQUNBO0FBRUQsZ0NBQWdDLGVBQXlCLEVBQUUsWUFBbUI7SUFDNUVDLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLFlBQVlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQzFCQSxNQUFNQSxDQUFDQSxnQkFBZ0JBLENBQUNBLGVBQWVBLENBQUNBLENBQUNBO0lBQzNDQSxDQUFDQTtJQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNOQSxJQUFJQSxNQUFNQSxHQUFZQSxZQUFZQSxDQUFDQSxHQUFHQSxDQUFDQSxVQUFBQSxDQUFDQSxJQUFJQSxPQUFBQSxDQUFDQSxDQUFDQSxDQUFDQSxFQUFIQSxDQUFHQSxDQUFDQSxDQUFDQTtRQUNqREEsTUFBTUEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsVUFBQUEsQ0FBQ0EsSUFBSUEsT0FBQUEsYUFBYUEsQ0FBQ0EsZUFBZUEsRUFBRUEsQ0FBQ0EsRUFBRUEsTUFBTUEsQ0FBQ0EsRUFBekNBLENBQXlDQSxDQUFDQSxDQUFDQTtJQUMxRUEsQ0FBQ0E7QUFDSEEsQ0FBQ0E7QUFFRCwwQkFBMEIsVUFBVTtJQUNsQ0MsSUFBSUEsTUFBTUEsR0FBWUEsc0JBQVNBLENBQUNBLFVBQVVBLENBQUNBLFVBQVVBLENBQUNBLENBQUNBO0lBQ3ZEQSxFQUFFQSxDQUFDQSxDQUFDQSxjQUFPQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQTtRQUFDQSxNQUFNQSxDQUFDQSxFQUFFQSxDQUFDQTtJQUMvQkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsY0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDekJBLE1BQU1BLElBQUlBLDhCQUFpQkEsQ0FBQ0EsVUFBVUEsRUFBRUEsTUFBTUEsQ0FBQ0EsQ0FBQ0E7SUFDbERBLENBQUNBO0lBQ0RBLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBLEdBQUdBLENBQUNBLFVBQUNBLENBQVFBLElBQUtBLE9BQUFBLGFBQWFBLENBQUNBLFVBQVVBLEVBQUVBLENBQUNBLEVBQUVBLE1BQU1BLENBQUNBLEVBQXBDQSxDQUFvQ0EsQ0FBQ0EsQ0FBQ0E7QUFDeEVBLENBQUNBO0FBRUQsdUJBQXVCLFVBQVUsRUFBRSxRQUFRLENBQUMsZUFBZSxFQUFFLE1BQWU7SUFDMUVDLElBQUlBLFFBQVFBLEdBQUdBLEVBQUVBLENBQUNBO0lBQ2xCQSxJQUFJQSxLQUFLQSxHQUFHQSxJQUFJQSxDQUFDQTtJQUNqQkEsSUFBSUEsUUFBUUEsR0FBR0EsS0FBS0EsQ0FBQ0E7SUFFckJBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLFFBQVFBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQ3ZCQSxFQUFFQSxDQUFDQSxDQUFDQSxRQUFRQSxZQUFZQSx5QkFBY0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDdkNBLE1BQU1BLENBQUNBLGlCQUFpQkEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsS0FBS0EsRUFBRUEsUUFBUUEsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsUUFBUUEsQ0FBQ0EsQ0FBQ0E7UUFDM0VBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ05BLE1BQU1BLENBQUNBLGlCQUFpQkEsQ0FBQ0EsUUFBUUEsRUFBRUEsUUFBUUEsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsUUFBUUEsQ0FBQ0EsQ0FBQ0E7UUFDckVBLENBQUNBO0lBQ0hBLENBQUNBO0lBRURBLElBQUlBLG9CQUFvQkEsR0FBR0EsSUFBSUEsQ0FBQ0E7SUFDaENBLElBQUlBLG9CQUFvQkEsR0FBR0EsSUFBSUEsQ0FBQ0E7SUFFaENBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLFFBQVFBLENBQUNBLE1BQU1BLEVBQUVBLEVBQUVBLENBQUNBLEVBQUVBLENBQUNBO1FBQ3pDQSxJQUFJQSxhQUFhQSxHQUFHQSxRQUFRQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUVoQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsYUFBYUEsWUFBWUEsV0FBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDbENBLEtBQUtBLEdBQUdBLGFBQWFBLENBQUNBO1FBRXhCQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxhQUFhQSxZQUFZQSx5QkFBY0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDbkRBLEtBQUtBLEdBQUdBLGFBQWFBLENBQUNBLEtBQUtBLENBQUNBO1FBRTlCQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxhQUFhQSxZQUFZQSwyQkFBZ0JBLENBQUNBLENBQUNBLENBQUNBO1lBQ3JEQSxRQUFRQSxHQUFHQSxJQUFJQSxDQUFDQTtRQUVsQkEsQ0FBQ0E7UUFBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsYUFBYUEsWUFBWUEsdUJBQVlBLENBQUNBLENBQUNBLENBQUNBO1lBQ2pEQSxvQkFBb0JBLEdBQUdBLGFBQWFBLENBQUNBO1FBRXZDQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxhQUFhQSxZQUFZQSx1QkFBWUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDakRBLG9CQUFvQkEsR0FBR0EsYUFBYUEsQ0FBQ0E7UUFFdkNBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLGFBQWFBLFlBQVlBLDJCQUFnQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDckRBLG9CQUFvQkEsR0FBR0EsYUFBYUEsQ0FBQ0E7UUFFdkNBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLGFBQWFBLFlBQVlBLDZCQUFrQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDdkRBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxhQUFhQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDbkNBLEtBQUtBLEdBQUdBLGFBQWFBLENBQUNBLEtBQUtBLENBQUNBO1lBQzlCQSxDQUFDQTtZQUNEQSxRQUFRQSxDQUFDQSxJQUFJQSxDQUFDQSxhQUFhQSxDQUFDQSxDQUFDQTtRQUMvQkEsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUFFREEsS0FBS0EsR0FBR0EsK0JBQWlCQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQTtJQUVqQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQ3JCQSxNQUFNQSxDQUFDQSxpQkFBaUJBLENBQUNBLEtBQUtBLEVBQUVBLFFBQVFBLEVBQUVBLG9CQUFvQkEsRUFBRUEsb0JBQW9CQSxFQUFFQSxRQUFRQSxDQUFDQSxDQUFDQTtJQUNsR0EsQ0FBQ0E7SUFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDTkEsTUFBTUEsSUFBSUEsOEJBQWlCQSxDQUFDQSxVQUFVQSxFQUFFQSxNQUFNQSxDQUFDQSxDQUFDQTtJQUNsREEsQ0FBQ0E7QUFDSEEsQ0FBQ0E7QUFFRCwyQkFBMkIsS0FBSyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFDM0QsUUFBUTtJQUNqQ0MsTUFBTUEsQ0FBQ0EsSUFBSUEsVUFBVUEsQ0FBQ0EsU0FBR0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsRUFBRUEsUUFBUUEsRUFBRUEsb0JBQW9CQSxFQUFFQSxvQkFBb0JBLEVBQ3BFQSxRQUFRQSxDQUFDQSxDQUFDQTtBQUNsQ0EsQ0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBUeXBlLFxuICBpc0JsYW5rLFxuICBpc1ByZXNlbnQsXG4gIENPTlNULFxuICBDT05TVF9FWFBSLFxuICBzdHJpbmdpZnksXG4gIGlzQXJyYXksXG4gIGlzVHlwZSxcbiAgaXNGdW5jdGlvbixcbiAgbm9ybWFsaXplQm9vbFxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtNYXBXcmFwcGVyLCBMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7cmVmbGVjdG9yfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9yZWZsZWN0aW9uL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtLZXl9IGZyb20gJy4va2V5JztcbmltcG9ydCB7XG4gIEluamVjdE1ldGFkYXRhLFxuICBJbmplY3RhYmxlTWV0YWRhdGEsXG4gIE9wdGlvbmFsTWV0YWRhdGEsXG4gIFNlbGZNZXRhZGF0YSxcbiAgSG9zdE1ldGFkYXRhLFxuICBTa2lwU2VsZk1ldGFkYXRhLFxuICBEZXBlbmRlbmN5TWV0YWRhdGFcbn0gZnJvbSAnLi9tZXRhZGF0YSc7XG5pbXBvcnQge1xuICBOb0Fubm90YXRpb25FcnJvcixcbiAgTWl4aW5nTXVsdGlQcm92aWRlcnNXaXRoUmVndWxhclByb3ZpZGVyc0Vycm9yLFxuICBJbnZhbGlkUHJvdmlkZXJFcnJvclxufSBmcm9tICcuL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtyZXNvbHZlRm9yd2FyZFJlZn0gZnJvbSAnLi9mb3J3YXJkX3JlZic7XG5cbi8qKlxuICogYERlcGVuZGVuY3lgIGlzIHVzZWQgYnkgdGhlIGZyYW1ld29yayB0byBleHRlbmQgREkuXG4gKiBUaGlzIGlzIGludGVybmFsIHRvIEFuZ3VsYXIgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IGNsYXNzIERlcGVuZGVuY3kge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMga2V5OiBLZXksIHB1YmxpYyBvcHRpb25hbDogYm9vbGVhbiwgcHVibGljIGxvd2VyQm91bmRWaXNpYmlsaXR5OiBhbnksXG4gICAgICAgICAgICAgIHB1YmxpYyB1cHBlckJvdW5kVmlzaWJpbGl0eTogYW55LCBwdWJsaWMgcHJvcGVydGllczogYW55W10pIHt9XG5cbiAgc3RhdGljIGZyb21LZXkoa2V5OiBLZXkpOiBEZXBlbmRlbmN5IHsgcmV0dXJuIG5ldyBEZXBlbmRlbmN5KGtleSwgZmFsc2UsIG51bGwsIG51bGwsIFtdKTsgfVxufVxuXG5jb25zdCBfRU1QVFlfTElTVCA9IENPTlNUX0VYUFIoW10pO1xuXG4vKipcbiAqIERlc2NyaWJlcyBob3cgdGhlIHtAbGluayBJbmplY3Rvcn0gc2hvdWxkIGluc3RhbnRpYXRlIGEgZ2l2ZW4gdG9rZW4uXG4gKlxuICogU2VlIHtAbGluayBwcm92aWRlfS5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvR05BeWo2SzZQZllnMk5Cemd3WjU/cCUzRHByZXZpZXcmcD1wcmV2aWV3KSlcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiB2YXIgaW5qZWN0b3IgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtcbiAqICAgbmV3IFByb3ZpZGVyKFwibWVzc2FnZVwiLCB7IHVzZVZhbHVlOiAnSGVsbG8nIH0pXG4gKiBdKTtcbiAqXG4gKiBleHBlY3QoaW5qZWN0b3IuZ2V0KFwibWVzc2FnZVwiKSkudG9FcXVhbCgnSGVsbG8nKTtcbiAqIGBgYFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIFByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIFRva2VuIHVzZWQgd2hlbiByZXRyaWV2aW5nIHRoaXMgcHJvdmlkZXIuIFVzdWFsbHksIGl0IGlzIGEgdHlwZSB7QGxpbmsgVHlwZX0uXG4gICAqL1xuICB0b2tlbjtcblxuICAvKipcbiAgICogQmluZHMgYSBESSB0b2tlbiB0byBhbiBpbXBsZW1lbnRhdGlvbiBjbGFzcy5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1JTVEc4NnFnbW94Q3lqOVNXUHdZP3A9cHJldmlldykpXG4gICAqXG4gICAqIEJlY2F1c2UgYHVzZUV4aXN0aW5nYCBhbmQgYHVzZUNsYXNzYCBhcmUgb2Z0ZW4gY29uZnVzZWQsIHRoZSBleGFtcGxlIGNvbnRhaW5zXG4gICAqIGJvdGggdXNlIGNhc2VzIGZvciBlYXN5IGNvbXBhcmlzb24uXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY2xhc3MgVmVoaWNsZSB7fVxuICAgKlxuICAgKiBjbGFzcyBDYXIgZXh0ZW5kcyBWZWhpY2xlIHt9XG4gICAqXG4gICAqIHZhciBpbmplY3RvckNsYXNzID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgQ2FyLFxuICAgKiAgIG5ldyBQcm92aWRlcihWZWhpY2xlLCB7IHVzZUNsYXNzOiBDYXIgfSlcbiAgICogXSk7XG4gICAqIHZhciBpbmplY3RvckFsaWFzID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgQ2FyLFxuICAgKiAgIG5ldyBQcm92aWRlcihWZWhpY2xlLCB7IHVzZUV4aXN0aW5nOiBDYXIgfSlcbiAgICogXSk7XG4gICAqXG4gICAqIGV4cGVjdChpbmplY3RvckNsYXNzLmdldChWZWhpY2xlKSkubm90LnRvQmUoaW5qZWN0b3JDbGFzcy5nZXQoQ2FyKSk7XG4gICAqIGV4cGVjdChpbmplY3RvckNsYXNzLmdldChWZWhpY2xlKSBpbnN0YW5jZW9mIENhcikudG9CZSh0cnVlKTtcbiAgICpcbiAgICogZXhwZWN0KGluamVjdG9yQWxpYXMuZ2V0KFZlaGljbGUpKS50b0JlKGluamVjdG9yQWxpYXMuZ2V0KENhcikpO1xuICAgKiBleHBlY3QoaW5qZWN0b3JBbGlhcy5nZXQoVmVoaWNsZSkgaW5zdGFuY2VvZiBDYXIpLnRvQmUodHJ1ZSk7XG4gICAqIGBgYFxuICAgKi9cbiAgdXNlQ2xhc3M6IFR5cGU7XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgREkgdG9rZW4gdG8gYSB2YWx1ZS5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1VGVnNNVlFJRGU3bDR3YVd6aUVTP3A9cHJldmlldykpXG4gICAqXG4gICAqIGBgYGphdmFzY3JpcHRcbiAgICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgbmV3IFByb3ZpZGVyKFwibWVzc2FnZVwiLCB7IHVzZVZhbHVlOiAnSGVsbG8nIH0pXG4gICAqIF0pO1xuICAgKlxuICAgKiBleHBlY3QoaW5qZWN0b3IuZ2V0KFwibWVzc2FnZVwiKSkudG9FcXVhbCgnSGVsbG8nKTtcbiAgICogYGBgXG4gICAqL1xuICB1c2VWYWx1ZTtcblxuICAvKipcbiAgICogQmluZHMgYSBESSB0b2tlbiB0byBhbiBleGlzdGluZyB0b2tlbi5cbiAgICpcbiAgICoge0BsaW5rIEluamVjdG9yfSByZXR1cm5zIHRoZSBzYW1lIGluc3RhbmNlIGFzIGlmIHRoZSBwcm92aWRlZCB0b2tlbiB3YXMgdXNlZC5cbiAgICogVGhpcyBpcyBpbiBjb250cmFzdCB0byBgdXNlQ2xhc3NgIHdoZXJlIGEgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgYHVzZUNsYXNzYCBpcyByZXR1cm5lZC5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1FzYXRzT0pKNlA4VDJmTWU5Z3I4P3A9cHJldmlldykpXG4gICAqXG4gICAqIEJlY2F1c2UgYHVzZUV4aXN0aW5nYCBhbmQgYHVzZUNsYXNzYCBhcmUgb2Z0ZW4gY29uZnVzZWQgdGhlIGV4YW1wbGUgY29udGFpbnNcbiAgICogYm90aCB1c2UgY2FzZXMgZm9yIGVhc3kgY29tcGFyaXNvbi5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjbGFzcyBWZWhpY2xlIHt9XG4gICAqXG4gICAqIGNsYXNzIENhciBleHRlbmRzIFZlaGljbGUge31cbiAgICpcbiAgICogdmFyIGluamVjdG9yQWxpYXMgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtcbiAgICogICBDYXIsXG4gICAqICAgbmV3IFByb3ZpZGVyKFZlaGljbGUsIHsgdXNlRXhpc3Rpbmc6IENhciB9KVxuICAgKiBdKTtcbiAgICogdmFyIGluamVjdG9yQ2xhc3MgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtcbiAgICogICBDYXIsXG4gICAqICAgbmV3IFByb3ZpZGVyKFZlaGljbGUsIHsgdXNlQ2xhc3M6IENhciB9KVxuICAgKiBdKTtcbiAgICpcbiAgICogZXhwZWN0KGluamVjdG9yQWxpYXMuZ2V0KFZlaGljbGUpKS50b0JlKGluamVjdG9yQWxpYXMuZ2V0KENhcikpO1xuICAgKiBleHBlY3QoaW5qZWN0b3JBbGlhcy5nZXQoVmVoaWNsZSkgaW5zdGFuY2VvZiBDYXIpLnRvQmUodHJ1ZSk7XG4gICAqXG4gICAqIGV4cGVjdChpbmplY3RvckNsYXNzLmdldChWZWhpY2xlKSkubm90LnRvQmUoaW5qZWN0b3JDbGFzcy5nZXQoQ2FyKSk7XG4gICAqIGV4cGVjdChpbmplY3RvckNsYXNzLmdldChWZWhpY2xlKSBpbnN0YW5jZW9mIENhcikudG9CZSh0cnVlKTtcbiAgICogYGBgXG4gICAqL1xuICB1c2VFeGlzdGluZztcblxuICAvKipcbiAgICogQmluZHMgYSBESSB0b2tlbiB0byBhIGZ1bmN0aW9uIHdoaWNoIGNvbXB1dGVzIHRoZSB2YWx1ZS5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1Njb3h5MHBKTnFLR0FQWlkxVlZDP3A9cHJldmlldykpXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgbmV3IFByb3ZpZGVyKE51bWJlciwgeyB1c2VGYWN0b3J5OiAoKSA9PiB7IHJldHVybiAxKzI7IH19KSxcbiAgICogICBuZXcgUHJvdmlkZXIoU3RyaW5nLCB7IHVzZUZhY3Rvcnk6ICh2YWx1ZSkgPT4geyByZXR1cm4gXCJWYWx1ZTogXCIgKyB2YWx1ZTsgfSxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIGRlcHM6IFtOdW1iZXJdIH0pXG4gICAqIF0pO1xuICAgKlxuICAgKiBleHBlY3QoaW5qZWN0b3IuZ2V0KE51bWJlcikpLnRvRXF1YWwoMyk7XG4gICAqIGV4cGVjdChpbmplY3Rvci5nZXQoU3RyaW5nKSkudG9FcXVhbCgnVmFsdWU6IDMnKTtcbiAgICogYGBgXG4gICAqXG4gICAqIFVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICB1c2VGYWN0b3J5OiBGdW5jdGlvbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgc2V0IG9mIGRlcGVuZGVuY2llc1xuICAgKiAoYXMgYHRva2VuYHMpIHdoaWNoIHNob3VsZCBiZSBpbmplY3RlZCBpbnRvIHRoZSBmYWN0b3J5IGZ1bmN0aW9uLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvU2NveHkwcEpOcUtHQVBaWTFWVkM/cD1wcmV2aWV3KSlcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB2YXIgaW5qZWN0b3IgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtcbiAgICogICBuZXcgUHJvdmlkZXIoTnVtYmVyLCB7IHVzZUZhY3Rvcnk6ICgpID0+IHsgcmV0dXJuIDErMjsgfX0pLFxuICAgKiAgIG5ldyBQcm92aWRlcihTdHJpbmcsIHsgdXNlRmFjdG9yeTogKHZhbHVlKSA9PiB7IHJldHVybiBcIlZhbHVlOiBcIiArIHZhbHVlOyB9LFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgZGVwczogW051bWJlcl0gfSlcbiAgICogXSk7XG4gICAqXG4gICAqIGV4cGVjdChpbmplY3Rvci5nZXQoTnVtYmVyKSkudG9FcXVhbCgzKTtcbiAgICogZXhwZWN0KGluamVjdG9yLmdldChTdHJpbmcpKS50b0VxdWFsKCdWYWx1ZTogMycpO1xuICAgKiBgYGBcbiAgICpcbiAgICogVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB1c2VGYWN0b3J5YC5cbiAgICovXG4gIGRlcGVuZGVuY2llczogT2JqZWN0W107XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfbXVsdGk6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IodG9rZW4sIHt1c2VDbGFzcywgdXNlVmFsdWUsIHVzZUV4aXN0aW5nLCB1c2VGYWN0b3J5LCBkZXBzLCBtdWx0aX06IHtcbiAgICB1c2VDbGFzcz86IFR5cGUsXG4gICAgdXNlVmFsdWU/OiBhbnksXG4gICAgdXNlRXhpc3Rpbmc/OiBhbnksXG4gICAgdXNlRmFjdG9yeT86IEZ1bmN0aW9uLFxuICAgIGRlcHM/OiBPYmplY3RbXSxcbiAgICBtdWx0aT86IGJvb2xlYW5cbiAgfSkge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLnVzZUNsYXNzID0gdXNlQ2xhc3M7XG4gICAgdGhpcy51c2VWYWx1ZSA9IHVzZVZhbHVlO1xuICAgIHRoaXMudXNlRXhpc3RpbmcgPSB1c2VFeGlzdGluZztcbiAgICB0aGlzLnVzZUZhY3RvcnkgPSB1c2VGYWN0b3J5O1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzID0gZGVwcztcbiAgICB0aGlzLl9tdWx0aSA9IG11bHRpO1xuICB9XG5cbiAgLy8gVE9ETzogUHJvdmlkZSBhIGZ1bGwgd29ya2luZyBleGFtcGxlIGFmdGVyIGFscGhhMzggaXMgcmVsZWFzZWQuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG11bHRpcGxlIHByb3ZpZGVycyBtYXRjaGluZyB0aGUgc2FtZSB0b2tlbiAoYSBtdWx0aS1wcm92aWRlcikuXG4gICAqXG4gICAqIE11bHRpLXByb3ZpZGVycyBhcmUgdXNlZCBmb3IgY3JlYXRpbmcgcGx1Z2dhYmxlIHNlcnZpY2UsIHdoZXJlIHRoZSBzeXN0ZW0gY29tZXNcbiAgICogd2l0aCBzb21lIGRlZmF1bHQgcHJvdmlkZXJzLCBhbmQgdGhlIHVzZXIgY2FuIHJlZ2lzdGVyIGFkZGl0aW9uYWwgcHJvdmlkZXJzLlxuICAgKiBUaGUgY29tYmluYXRpb24gb2YgdGhlIGRlZmF1bHQgcHJvdmlkZXJzIGFuZCB0aGUgYWRkaXRpb25hbCBwcm92aWRlcnMgd2lsbCBiZVxuICAgKiB1c2VkIHRvIGRyaXZlIHRoZSBiZWhhdmlvciBvZiB0aGUgc3lzdGVtLlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICAgKiAgIG5ldyBQcm92aWRlcihcIlN0cmluZ3NcIiwgeyB1c2VWYWx1ZTogXCJTdHJpbmcxXCIsIG11bHRpOiB0cnVlfSksXG4gICAqICAgbmV3IFByb3ZpZGVyKFwiU3RyaW5nc1wiLCB7IHVzZVZhbHVlOiBcIlN0cmluZzJcIiwgbXVsdGk6IHRydWV9KVxuICAgKiBdKTtcbiAgICpcbiAgICogZXhwZWN0KGluamVjdG9yLmdldChcIlN0cmluZ3NcIikpLnRvRXF1YWwoW1wiU3RyaW5nMVwiLCBcIlN0cmluZzJcIl0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogTXVsdGktcHJvdmlkZXJzIGFuZCByZWd1bGFyIHByb3ZpZGVycyBjYW5ub3QgYmUgbWl4ZWQuIFRoZSBmb2xsb3dpbmdcbiAgICogd2lsbCB0aHJvdyBhbiBleGNlcHRpb246XG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgbmV3IFByb3ZpZGVyKFwiU3RyaW5nc1wiLCB7IHVzZVZhbHVlOiBcIlN0cmluZzFcIiwgbXVsdGk6IHRydWUgfSksXG4gICAqICAgbmV3IFByb3ZpZGVyKFwiU3RyaW5nc1wiLCB7IHVzZVZhbHVlOiBcIlN0cmluZzJcIn0pXG4gICAqIF0pO1xuICAgKiBgYGBcbiAgICovXG4gIGdldCBtdWx0aSgpOiBib29sZWFuIHsgcmV0dXJuIG5vcm1hbGl6ZUJvb2wodGhpcy5fbXVsdGkpOyB9XG59XG5cbi8qKlxuICogU2VlIHtAbGluayBQcm92aWRlcn0gaW5zdGVhZC5cbiAqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5AQ09OU1QoKVxuZXhwb3J0IGNsYXNzIEJpbmRpbmcgZXh0ZW5kcyBQcm92aWRlciB7XG4gIGNvbnN0cnVjdG9yKHRva2VuLCB7dG9DbGFzcywgdG9WYWx1ZSwgdG9BbGlhcywgdG9GYWN0b3J5LCBkZXBzLCBtdWx0aX06IHtcbiAgICB0b0NsYXNzPzogVHlwZSxcbiAgICB0b1ZhbHVlPzogYW55LFxuICAgIHRvQWxpYXM/OiBhbnksXG4gICAgdG9GYWN0b3J5OiBGdW5jdGlvbiwgZGVwcz86IE9iamVjdFtdLCBtdWx0aT86IGJvb2xlYW5cbiAgfSkge1xuICAgIHN1cGVyKHRva2VuLCB7XG4gICAgICB1c2VDbGFzczogdG9DbGFzcyxcbiAgICAgIHVzZVZhbHVlOiB0b1ZhbHVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IHRvQWxpYXMsXG4gICAgICB1c2VGYWN0b3J5OiB0b0ZhY3RvcnksXG4gICAgICBkZXBzOiBkZXBzLFxuICAgICAgbXVsdGk6IG11bHRpXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIGdldCB0b0NsYXNzKCkgeyByZXR1cm4gdGhpcy51c2VDbGFzczsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgZ2V0IHRvQWxpYXMoKSB7IHJldHVybiB0aGlzLnVzZUV4aXN0aW5nOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBnZXQgdG9GYWN0b3J5KCkgeyByZXR1cm4gdGhpcy51c2VGYWN0b3J5OyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBnZXQgdG9WYWx1ZSgpIHsgcmV0dXJuIHRoaXMudXNlVmFsdWU7IH1cbn1cblxuLyoqXG4gKiBBbiBpbnRlcm5hbCByZXNvbHZlZCByZXByZXNlbnRhdGlvbiBvZiBhIHtAbGluayBQcm92aWRlcn0gdXNlZCBieSB0aGUge0BsaW5rIEluamVjdG9yfS5cbiAqXG4gKiBJdCBpcyB1c3VhbGx5IGNyZWF0ZWQgYXV0b21hdGljYWxseSBieSBgSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZWAuXG4gKlxuICogSXQgY2FuIGJlIGNyZWF0ZWQgbWFudWFsbHksIGFzIGZvbGxvd3M6XG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1JmRW5oaDhrVUVJMEczcXNuSWVUP3AlM0RwcmV2aWV3JnA9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogdmFyIHJlc29sdmVkUHJvdmlkZXJzID0gSW5qZWN0b3IucmVzb2x2ZShbbmV3IFByb3ZpZGVyKCdtZXNzYWdlJywge3VzZVZhbHVlOiAnSGVsbG8nfSldKTtcbiAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLmZyb21SZXNvbHZlZFByb3ZpZGVycyhyZXNvbHZlZFByb3ZpZGVycyk7XG4gKlxuICogZXhwZWN0KGluamVjdG9yLmdldCgnbWVzc2FnZScpKS50b0VxdWFsKCdIZWxsbycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWRQcm92aWRlciB7XG4gIC8qKlxuICAgKiBBIGtleSwgdXN1YWxseSBhIGBUeXBlYC5cbiAgICovXG4gIGtleTogS2V5O1xuXG4gIC8qKlxuICAgKiBGYWN0b3J5IGZ1bmN0aW9uIHdoaWNoIGNhbiByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYW4gb2JqZWN0IHJlcHJlc2VudGVkIGJ5IGEga2V5LlxuICAgKi9cbiAgcmVzb2x2ZWRGYWN0b3JpZXM6IFJlc29sdmVkRmFjdG9yeVtdO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHByb3ZpZGVyIGlzIGEgbXVsdGktcHJvdmlkZXIgb3IgYSByZWd1bGFyIHByb3ZpZGVyLlxuICAgKi9cbiAgbXVsdGlQcm92aWRlcjogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTZWUge0BsaW5rIFJlc29sdmVkUHJvdmlkZXJ9IGluc3RlYWQuXG4gKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZEJpbmRpbmcgZXh0ZW5kcyBSZXNvbHZlZFByb3ZpZGVyIHt9XG5cbmV4cG9ydCBjbGFzcyBSZXNvbHZlZFByb3ZpZGVyXyBpbXBsZW1lbnRzIFJlc29sdmVkQmluZGluZyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBrZXk6IEtleSwgcHVibGljIHJlc29sdmVkRmFjdG9yaWVzOiBSZXNvbHZlZEZhY3RvcnlbXSxcbiAgICAgICAgICAgICAgcHVibGljIG11bHRpUHJvdmlkZXI6IGJvb2xlYW4pIHt9XG5cbiAgZ2V0IHJlc29sdmVkRmFjdG9yeSgpOiBSZXNvbHZlZEZhY3RvcnkgeyByZXR1cm4gdGhpcy5yZXNvbHZlZEZhY3Rvcmllc1swXTsgfVxufVxuXG4vKipcbiAqIEFuIGludGVybmFsIHJlc29sdmVkIHJlcHJlc2VudGF0aW9uIG9mIGEgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVkIGJ5IHJlc29sdmluZyB7QGxpbmsgUHJvdmlkZXJ9LlxuICovXG5leHBvcnQgY2xhc3MgUmVzb2x2ZWRGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoXG4gICAgICAvKipcbiAgICAgICAqIEZhY3RvcnkgZnVuY3Rpb24gd2hpY2ggY2FuIHJldHVybiBhbiBpbnN0YW5jZSBvZiBhbiBvYmplY3QgcmVwcmVzZW50ZWQgYnkgYSBrZXkuXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyBmYWN0b3J5OiBGdW5jdGlvbixcblxuICAgICAgLyoqXG4gICAgICAgKiBBcmd1bWVudHMgKGRlcGVuZGVuY2llcykgdG8gdGhlIGBmYWN0b3J5YCBmdW5jdGlvbi5cbiAgICAgICAqL1xuICAgICAgcHVibGljIGRlcGVuZGVuY2llczogRGVwZW5kZW5jeVtdKSB7fVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgUHJvdmlkZXJ9LlxuICpcbiAqIFRvIGNvbnN0cnVjdCBhIHtAbGluayBQcm92aWRlcn0sIGJpbmQgYSBgdG9rZW5gIHRvIGVpdGhlciBhIGNsYXNzLCBhIHZhbHVlLCBhIGZhY3RvcnkgZnVuY3Rpb24sXG4gKiBvclxuICogdG8gYW4gZXhpc3RpbmcgYHRva2VuYC5cbiAqIFNlZSB7QGxpbmsgUHJvdmlkZXJCdWlsZGVyfSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFRoZSBgdG9rZW5gIGlzIG1vc3QgY29tbW9ubHkgYSBjbGFzcyBvciB7QGxpbmsgYW5ndWxhcjIvZGkvT3BhcXVlVG9rZW59LlxuICpcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kKHRva2VuKTogUHJvdmlkZXJCdWlsZGVyIHtcbiAgcmV0dXJuIG5ldyBQcm92aWRlckJ1aWxkZXIodG9rZW4pO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgUHJvdmlkZXJ9LlxuICpcbiAqIFNlZSB7QGxpbmsgUHJvdmlkZXJ9IGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogPCEtLSBUT0RPOiBpbXByb3ZlIHRoZSBkb2NzIC0tPlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZSh0b2tlbiwge3VzZUNsYXNzLCB1c2VWYWx1ZSwgdXNlRXhpc3RpbmcsIHVzZUZhY3RvcnksIGRlcHMsIG11bHRpfToge1xuICB1c2VDbGFzcz86IFR5cGUsXG4gIHVzZVZhbHVlPzogYW55LFxuICB1c2VFeGlzdGluZz86IGFueSxcbiAgdXNlRmFjdG9yeT86IEZ1bmN0aW9uLFxuICBkZXBzPzogT2JqZWN0W10sXG4gIG11bHRpPzogYm9vbGVhblxufSk6IFByb3ZpZGVyIHtcbiAgcmV0dXJuIG5ldyBQcm92aWRlcih0b2tlbiwge1xuICAgIHVzZUNsYXNzOiB1c2VDbGFzcyxcbiAgICB1c2VWYWx1ZTogdXNlVmFsdWUsXG4gICAgdXNlRXhpc3Rpbmc6IHVzZUV4aXN0aW5nLFxuICAgIHVzZUZhY3Rvcnk6IHVzZUZhY3RvcnksXG4gICAgZGVwczogZGVwcyxcbiAgICBtdWx0aTogbXVsdGlcbiAgfSk7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciB0aGUge0BsaW5rIGJpbmR9IGZ1bmN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgUHJvdmlkZXJCdWlsZGVyIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRva2VuKSB7fVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhIERJIHRva2VuIHRvIGEgY2xhc3MuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9acEJDU1lxdjZlMnVkNUtYTGR4UT9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBCZWNhdXNlIGB0b0FsaWFzYCBhbmQgYHRvQ2xhc3NgIGFyZSBvZnRlbiBjb25mdXNlZCwgdGhlIGV4YW1wbGUgY29udGFpbnNcbiAgICogYm90aCB1c2UgY2FzZXMgZm9yIGVhc3kgY29tcGFyaXNvbi5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjbGFzcyBWZWhpY2xlIHt9XG4gICAqXG4gICAqIGNsYXNzIENhciBleHRlbmRzIFZlaGljbGUge31cbiAgICpcbiAgICogdmFyIGluamVjdG9yQ2xhc3MgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtcbiAgICogICBDYXIsXG4gICAqICAgcHJvdmlkZShWZWhpY2xlLCB7dXNlQ2xhc3M6IENhcn0pXG4gICAqIF0pO1xuICAgKiB2YXIgaW5qZWN0b3JBbGlhcyA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICAgKiAgIENhcixcbiAgICogICBwcm92aWRlKFZlaGljbGUsIHt1c2VFeGlzdGluZzogQ2FyfSlcbiAgICogXSk7XG4gICAqXG4gICAqIGV4cGVjdChpbmplY3RvckNsYXNzLmdldChWZWhpY2xlKSkubm90LnRvQmUoaW5qZWN0b3JDbGFzcy5nZXQoQ2FyKSk7XG4gICAqIGV4cGVjdChpbmplY3RvckNsYXNzLmdldChWZWhpY2xlKSBpbnN0YW5jZW9mIENhcikudG9CZSh0cnVlKTtcbiAgICpcbiAgICogZXhwZWN0KGluamVjdG9yQWxpYXMuZ2V0KFZlaGljbGUpKS50b0JlKGluamVjdG9yQWxpYXMuZ2V0KENhcikpO1xuICAgKiBleHBlY3QoaW5qZWN0b3JBbGlhcy5nZXQoVmVoaWNsZSkgaW5zdGFuY2VvZiBDYXIpLnRvQmUodHJ1ZSk7XG4gICAqIGBgYFxuICAgKi9cbiAgdG9DbGFzcyh0eXBlOiBUeXBlKTogUHJvdmlkZXIge1xuICAgIGlmICghaXNUeXBlKHR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbihcbiAgICAgICAgICBgVHJ5aW5nIHRvIGNyZWF0ZSBhIGNsYXNzIHByb3ZpZGVyIGJ1dCBcIiR7c3RyaW5naWZ5KHR5cGUpfVwiIGlzIG5vdCBhIGNsYXNzIWApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb3ZpZGVyKHRoaXMudG9rZW4sIHt1c2VDbGFzczogdHlwZX0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgREkgdG9rZW4gdG8gYSB2YWx1ZS5cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0cwMjRQRkhtREwwY0pGZ2ZaSzhPP3A9cHJldmlldykpXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gICAqICAgcHJvdmlkZSgnbWVzc2FnZScsIHt1c2VWYWx1ZTogJ0hlbGxvJ30pXG4gICAqIF0pO1xuICAgKlxuICAgKiBleHBlY3QoaW5qZWN0b3IuZ2V0KCdtZXNzYWdlJykpLnRvRXF1YWwoJ0hlbGxvJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgdG9WYWx1ZSh2YWx1ZTogYW55KTogUHJvdmlkZXIgeyByZXR1cm4gbmV3IFByb3ZpZGVyKHRoaXMudG9rZW4sIHt1c2VWYWx1ZTogdmFsdWV9KTsgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhIERJIHRva2VuIHRvIGFuIGV4aXN0aW5nIHRva2VuLlxuICAgKlxuICAgKiBBbmd1bGFyIHdpbGwgcmV0dXJuIHRoZSBzYW1lIGluc3RhbmNlIGFzIGlmIHRoZSBwcm92aWRlZCB0b2tlbiB3YXMgdXNlZC4gKFRoaXMgaXNcbiAgICogaW4gY29udHJhc3QgdG8gYHVzZUNsYXNzYCB3aGVyZSBhIHNlcGFyYXRlIGluc3RhbmNlIG9mIGB1c2VDbGFzc2Agd2lsbCBiZSByZXR1cm5lZC4pXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC91QmFvRjJwTjVjZmM1QWZaYXBOdz9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBCZWNhdXNlIGB0b0FsaWFzYCBhbmQgYHRvQ2xhc3NgIGFyZSBvZnRlbiBjb25mdXNlZCwgdGhlIGV4YW1wbGUgY29udGFpbnNcbiAgICogYm90aCB1c2UgY2FzZXMgZm9yIGVhc3kgY29tcGFyaXNvbi5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjbGFzcyBWZWhpY2xlIHt9XG4gICAqXG4gICAqIGNsYXNzIENhciBleHRlbmRzIFZlaGljbGUge31cbiAgICpcbiAgICogdmFyIGluamVjdG9yQWxpYXMgPSBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtcbiAgICogICBDYXIsXG4gICAqICAgcHJvdmlkZShWZWhpY2xlLCB7dXNlRXhpc3Rpbmc6IENhcn0pXG4gICAqIF0pO1xuICAgKiB2YXIgaW5qZWN0b3JDbGFzcyA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICAgKiAgIENhcixcbiAgICogICBwcm92aWRlKFZlaGljbGUsIHt1c2VDbGFzczogQ2FyfSlcbiAgICogXSk7XG4gICAqXG4gICAqIGV4cGVjdChpbmplY3RvckFsaWFzLmdldChWZWhpY2xlKSkudG9CZShpbmplY3RvckFsaWFzLmdldChDYXIpKTtcbiAgICogZXhwZWN0KGluamVjdG9yQWxpYXMuZ2V0KFZlaGljbGUpIGluc3RhbmNlb2YgQ2FyKS50b0JlKHRydWUpO1xuICAgKlxuICAgKiBleHBlY3QoaW5qZWN0b3JDbGFzcy5nZXQoVmVoaWNsZSkpLm5vdC50b0JlKGluamVjdG9yQ2xhc3MuZ2V0KENhcikpO1xuICAgKiBleHBlY3QoaW5qZWN0b3JDbGFzcy5nZXQoVmVoaWNsZSkgaW5zdGFuY2VvZiBDYXIpLnRvQmUodHJ1ZSk7XG4gICAqIGBgYFxuICAgKi9cbiAgdG9BbGlhcyhhbGlhc1Rva2VuOiAvKlR5cGUqLyBhbnkpOiBQcm92aWRlciB7XG4gICAgaWYgKGlzQmxhbmsoYWxpYXNUb2tlbikpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBDYW4gbm90IGFsaWFzICR7c3RyaW5naWZ5KHRoaXMudG9rZW4pfSB0byBhIGJsYW5rIHZhbHVlIWApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb3ZpZGVyKHRoaXMudG9rZW4sIHt1c2VFeGlzdGluZzogYWxpYXNUb2tlbn0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgREkgdG9rZW4gdG8gYSBmdW5jdGlvbiB3aGljaCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9PZWpOSWZUVDN6YjFpQnhhSVlPYj9wPXByZXZpZXcpKVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICAgKiAgIHByb3ZpZGUoTnVtYmVyLCB7dXNlRmFjdG9yeTogKCkgPT4geyByZXR1cm4gMSsyOyB9fSksXG4gICAqICAgcHJvdmlkZShTdHJpbmcsIHt1c2VGYWN0b3J5OiAodikgPT4geyByZXR1cm4gXCJWYWx1ZTogXCIgKyB2OyB9LCBkZXBzOiBbTnVtYmVyXX0pXG4gICAqIF0pO1xuICAgKlxuICAgKiBleHBlY3QoaW5qZWN0b3IuZ2V0KE51bWJlcikpLnRvRXF1YWwoMyk7XG4gICAqIGV4cGVjdChpbmplY3Rvci5nZXQoU3RyaW5nKSkudG9FcXVhbCgnVmFsdWU6IDMnKTtcbiAgICogYGBgXG4gICAqL1xuICB0b0ZhY3RvcnkoZmFjdG9yeTogRnVuY3Rpb24sIGRlcGVuZGVuY2llcz86IGFueVtdKTogUHJvdmlkZXIge1xuICAgIGlmICghaXNGdW5jdGlvbihmYWN0b3J5KSkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXG4gICAgICAgICAgYFRyeWluZyB0byBjcmVhdGUgYSBmYWN0b3J5IHByb3ZpZGVyIGJ1dCBcIiR7c3RyaW5naWZ5KGZhY3RvcnkpfVwiIGlzIG5vdCBhIGZ1bmN0aW9uIWApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb3ZpZGVyKHRoaXMudG9rZW4sIHt1c2VGYWN0b3J5OiBmYWN0b3J5LCBkZXBzOiBkZXBlbmRlbmNpZXN9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJlc29sdmUgYSBzaW5nbGUgcHJvdmlkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRmFjdG9yeShwcm92aWRlcjogUHJvdmlkZXIpOiBSZXNvbHZlZEZhY3Rvcnkge1xuICB2YXIgZmFjdG9yeUZuOiBGdW5jdGlvbjtcbiAgdmFyIHJlc29sdmVkRGVwczogRGVwZW5kZW5jeVtdO1xuICBpZiAoaXNQcmVzZW50KHByb3ZpZGVyLnVzZUNsYXNzKSkge1xuICAgIHZhciB1c2VDbGFzcyA9IHJlc29sdmVGb3J3YXJkUmVmKHByb3ZpZGVyLnVzZUNsYXNzKTtcbiAgICBmYWN0b3J5Rm4gPSByZWZsZWN0b3IuZmFjdG9yeSh1c2VDbGFzcyk7XG4gICAgcmVzb2x2ZWREZXBzID0gX2RlcGVuZGVuY2llc0Zvcih1c2VDbGFzcyk7XG4gIH0gZWxzZSBpZiAoaXNQcmVzZW50KHByb3ZpZGVyLnVzZUV4aXN0aW5nKSkge1xuICAgIGZhY3RvcnlGbiA9IChhbGlhc0luc3RhbmNlKSA9PiBhbGlhc0luc3RhbmNlO1xuICAgIHJlc29sdmVkRGVwcyA9IFtEZXBlbmRlbmN5LmZyb21LZXkoS2V5LmdldChwcm92aWRlci51c2VFeGlzdGluZykpXTtcbiAgfSBlbHNlIGlmIChpc1ByZXNlbnQocHJvdmlkZXIudXNlRmFjdG9yeSkpIHtcbiAgICBmYWN0b3J5Rm4gPSBwcm92aWRlci51c2VGYWN0b3J5O1xuICAgIHJlc29sdmVkRGVwcyA9IF9jb25zdHJ1Y3REZXBlbmRlbmNpZXMocHJvdmlkZXIudXNlRmFjdG9yeSwgcHJvdmlkZXIuZGVwZW5kZW5jaWVzKTtcbiAgfSBlbHNlIHtcbiAgICBmYWN0b3J5Rm4gPSAoKSA9PiBwcm92aWRlci51c2VWYWx1ZTtcbiAgICByZXNvbHZlZERlcHMgPSBfRU1QVFlfTElTVDtcbiAgfVxuICByZXR1cm4gbmV3IFJlc29sdmVkRmFjdG9yeShmYWN0b3J5Rm4sIHJlc29sdmVkRGVwcyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgdGhlIHtAbGluayBQcm92aWRlcn0gaW50byB7QGxpbmsgUmVzb2x2ZWRQcm92aWRlcn0uXG4gKlxuICoge0BsaW5rIEluamVjdG9yfSBpbnRlcm5hbGx5IG9ubHkgdXNlcyB7QGxpbmsgUmVzb2x2ZWRQcm92aWRlcn0sIHtAbGluayBQcm92aWRlcn0gY29udGFpbnNcbiAqIGNvbnZlbmllbmNlIHByb3ZpZGVyIHN5bnRheC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQcm92aWRlcihwcm92aWRlcjogUHJvdmlkZXIpOiBSZXNvbHZlZFByb3ZpZGVyIHtcbiAgcmV0dXJuIG5ldyBSZXNvbHZlZFByb3ZpZGVyXyhLZXkuZ2V0KHByb3ZpZGVyLnRva2VuKSwgW3Jlc29sdmVGYWN0b3J5KHByb3ZpZGVyKV0sIHByb3ZpZGVyLm11bHRpKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgbGlzdCBvZiBQcm92aWRlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUHJvdmlkZXJzKHByb3ZpZGVyczogQXJyYXk8VHlwZSB8IFByb3ZpZGVyIHwgYW55W10+KTogUmVzb2x2ZWRQcm92aWRlcltdIHtcbiAgdmFyIG5vcm1hbGl6ZWQgPSBfbm9ybWFsaXplUHJvdmlkZXJzKHByb3ZpZGVycywgW10pO1xuICB2YXIgcmVzb2x2ZWQgPSBub3JtYWxpemVkLm1hcChyZXNvbHZlUHJvdmlkZXIpO1xuICByZXR1cm4gTWFwV3JhcHBlci52YWx1ZXMobWVyZ2VSZXNvbHZlZFByb3ZpZGVycyhyZXNvbHZlZCwgbmV3IE1hcDxudW1iZXIsIFJlc29sdmVkUHJvdmlkZXI+KCkpKTtcbn1cblxuLyoqXG4gKiBNZXJnZXMgYSBsaXN0IG9mIFJlc29sdmVkUHJvdmlkZXJzIGludG8gYSBsaXN0IHdoZXJlXG4gKiBlYWNoIGtleSBpcyBjb250YWluZWQgZXhhY3RseSBvbmNlIGFuZCBtdWx0aSBwcm92aWRlcnNcbiAqIGhhdmUgYmVlbiBtZXJnZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVJlc29sdmVkUHJvdmlkZXJzKFxuICAgIHByb3ZpZGVyczogUmVzb2x2ZWRQcm92aWRlcltdLFxuICAgIG5vcm1hbGl6ZWRQcm92aWRlcnNNYXA6IE1hcDxudW1iZXIsIFJlc29sdmVkUHJvdmlkZXI+KTogTWFwPG51bWJlciwgUmVzb2x2ZWRQcm92aWRlcj4ge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3ZpZGVycy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm92aWRlciA9IHByb3ZpZGVyc1tpXTtcbiAgICB2YXIgZXhpc3RpbmcgPSBub3JtYWxpemVkUHJvdmlkZXJzTWFwLmdldChwcm92aWRlci5rZXkuaWQpO1xuICAgIGlmIChpc1ByZXNlbnQoZXhpc3RpbmcpKSB7XG4gICAgICBpZiAocHJvdmlkZXIubXVsdGlQcm92aWRlciAhPT0gZXhpc3RpbmcubXVsdGlQcm92aWRlcikge1xuICAgICAgICB0aHJvdyBuZXcgTWl4aW5nTXVsdGlQcm92aWRlcnNXaXRoUmVndWxhclByb3ZpZGVyc0Vycm9yKGV4aXN0aW5nLCBwcm92aWRlcik7XG4gICAgICB9XG4gICAgICBpZiAocHJvdmlkZXIubXVsdGlQcm92aWRlcikge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3ZpZGVyLnJlc29sdmVkRmFjdG9yaWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgZXhpc3RpbmcucmVzb2x2ZWRGYWN0b3JpZXMucHVzaChwcm92aWRlci5yZXNvbHZlZEZhY3Rvcmllc1tqXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vcm1hbGl6ZWRQcm92aWRlcnNNYXAuc2V0KHByb3ZpZGVyLmtleS5pZCwgcHJvdmlkZXIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmVzb2x2ZWRQcm92aWRlcjtcbiAgICAgIGlmIChwcm92aWRlci5tdWx0aVByb3ZpZGVyKSB7XG4gICAgICAgIHJlc29sdmVkUHJvdmlkZXIgPSBuZXcgUmVzb2x2ZWRQcm92aWRlcl8oXG4gICAgICAgICAgICBwcm92aWRlci5rZXksIExpc3RXcmFwcGVyLmNsb25lKHByb3ZpZGVyLnJlc29sdmVkRmFjdG9yaWVzKSwgcHJvdmlkZXIubXVsdGlQcm92aWRlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlZFByb3ZpZGVyID0gcHJvdmlkZXI7XG4gICAgICB9XG4gICAgICBub3JtYWxpemVkUHJvdmlkZXJzTWFwLnNldChwcm92aWRlci5rZXkuaWQsIHJlc29sdmVkUHJvdmlkZXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm9ybWFsaXplZFByb3ZpZGVyc01hcDtcbn1cblxuZnVuY3Rpb24gX25vcm1hbGl6ZVByb3ZpZGVycyhwcm92aWRlcnM6IEFycmF5PFR5cGUgfCBQcm92aWRlciB8IFByb3ZpZGVyQnVpbGRlciB8IGFueVtdPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzOiBQcm92aWRlcltdKTogUHJvdmlkZXJbXSB7XG4gIHByb3ZpZGVycy5mb3JFYWNoKGIgPT4ge1xuICAgIGlmIChiIGluc3RhbmNlb2YgVHlwZSkge1xuICAgICAgcmVzLnB1c2gocHJvdmlkZShiLCB7dXNlQ2xhc3M6IGJ9KSk7XG5cbiAgICB9IGVsc2UgaWYgKGIgaW5zdGFuY2VvZiBQcm92aWRlcikge1xuICAgICAgcmVzLnB1c2goYik7XG5cbiAgICB9IGVsc2UgaWYgKGIgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgX25vcm1hbGl6ZVByb3ZpZGVycyhiLCByZXMpO1xuXG4gICAgfSBlbHNlIGlmIChiIGluc3RhbmNlb2YgUHJvdmlkZXJCdWlsZGVyKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFByb3ZpZGVyRXJyb3IoYi50b2tlbik7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQcm92aWRlckVycm9yKGIpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gX2NvbnN0cnVjdERlcGVuZGVuY2llcyhmYWN0b3J5RnVuY3Rpb246IEZ1bmN0aW9uLCBkZXBlbmRlbmNpZXM6IGFueVtdKTogRGVwZW5kZW5jeVtdIHtcbiAgaWYgKGlzQmxhbmsoZGVwZW5kZW5jaWVzKSkge1xuICAgIHJldHVybiBfZGVwZW5kZW5jaWVzRm9yKGZhY3RvcnlGdW5jdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHBhcmFtczogYW55W11bXSA9IGRlcGVuZGVuY2llcy5tYXAodCA9PiBbdF0pO1xuICAgIHJldHVybiBkZXBlbmRlbmNpZXMubWFwKHQgPT4gX2V4dHJhY3RUb2tlbihmYWN0b3J5RnVuY3Rpb24sIHQsIHBhcmFtcykpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9kZXBlbmRlbmNpZXNGb3IodHlwZU9yRnVuYyk6IERlcGVuZGVuY3lbXSB7XG4gIHZhciBwYXJhbXM6IGFueVtdW10gPSByZWZsZWN0b3IucGFyYW1ldGVycyh0eXBlT3JGdW5jKTtcbiAgaWYgKGlzQmxhbmsocGFyYW1zKSkgcmV0dXJuIFtdO1xuICBpZiAocGFyYW1zLnNvbWUoaXNCbGFuaykpIHtcbiAgICB0aHJvdyBuZXcgTm9Bbm5vdGF0aW9uRXJyb3IodHlwZU9yRnVuYywgcGFyYW1zKTtcbiAgfVxuICByZXR1cm4gcGFyYW1zLm1hcCgocDogYW55W10pID0+IF9leHRyYWN0VG9rZW4odHlwZU9yRnVuYywgcCwgcGFyYW1zKSk7XG59XG5cbmZ1bmN0aW9uIF9leHRyYWN0VG9rZW4odHlwZU9yRnVuYywgbWV0YWRhdGEgLyphbnlbXSB8IGFueSovLCBwYXJhbXM6IGFueVtdW10pOiBEZXBlbmRlbmN5IHtcbiAgdmFyIGRlcFByb3BzID0gW107XG4gIHZhciB0b2tlbiA9IG51bGw7XG4gIHZhciBvcHRpb25hbCA9IGZhbHNlO1xuXG4gIGlmICghaXNBcnJheShtZXRhZGF0YSkpIHtcbiAgICBpZiAobWV0YWRhdGEgaW5zdGFuY2VvZiBJbmplY3RNZXRhZGF0YSkge1xuICAgICAgcmV0dXJuIF9jcmVhdGVEZXBlbmRlbmN5KG1ldGFkYXRhLnRva2VuLCBvcHRpb25hbCwgbnVsbCwgbnVsbCwgZGVwUHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gX2NyZWF0ZURlcGVuZGVuY3kobWV0YWRhdGEsIG9wdGlvbmFsLCBudWxsLCBudWxsLCBkZXBQcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxvd2VyQm91bmRWaXNpYmlsaXR5ID0gbnVsbDtcbiAgdmFyIHVwcGVyQm91bmRWaXNpYmlsaXR5ID0gbnVsbDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG1ldGFkYXRhLmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIHBhcmFtTWV0YWRhdGEgPSBtZXRhZGF0YVtpXTtcblxuICAgIGlmIChwYXJhbU1ldGFkYXRhIGluc3RhbmNlb2YgVHlwZSkge1xuICAgICAgdG9rZW4gPSBwYXJhbU1ldGFkYXRhO1xuXG4gICAgfSBlbHNlIGlmIChwYXJhbU1ldGFkYXRhIGluc3RhbmNlb2YgSW5qZWN0TWV0YWRhdGEpIHtcbiAgICAgIHRva2VuID0gcGFyYW1NZXRhZGF0YS50b2tlbjtcblxuICAgIH0gZWxzZSBpZiAocGFyYW1NZXRhZGF0YSBpbnN0YW5jZW9mIE9wdGlvbmFsTWV0YWRhdGEpIHtcbiAgICAgIG9wdGlvbmFsID0gdHJ1ZTtcblxuICAgIH0gZWxzZSBpZiAocGFyYW1NZXRhZGF0YSBpbnN0YW5jZW9mIFNlbGZNZXRhZGF0YSkge1xuICAgICAgdXBwZXJCb3VuZFZpc2liaWxpdHkgPSBwYXJhbU1ldGFkYXRhO1xuXG4gICAgfSBlbHNlIGlmIChwYXJhbU1ldGFkYXRhIGluc3RhbmNlb2YgSG9zdE1ldGFkYXRhKSB7XG4gICAgICB1cHBlckJvdW5kVmlzaWJpbGl0eSA9IHBhcmFtTWV0YWRhdGE7XG5cbiAgICB9IGVsc2UgaWYgKHBhcmFtTWV0YWRhdGEgaW5zdGFuY2VvZiBTa2lwU2VsZk1ldGFkYXRhKSB7XG4gICAgICBsb3dlckJvdW5kVmlzaWJpbGl0eSA9IHBhcmFtTWV0YWRhdGE7XG5cbiAgICB9IGVsc2UgaWYgKHBhcmFtTWV0YWRhdGEgaW5zdGFuY2VvZiBEZXBlbmRlbmN5TWV0YWRhdGEpIHtcbiAgICAgIGlmIChpc1ByZXNlbnQocGFyYW1NZXRhZGF0YS50b2tlbikpIHtcbiAgICAgICAgdG9rZW4gPSBwYXJhbU1ldGFkYXRhLnRva2VuO1xuICAgICAgfVxuICAgICAgZGVwUHJvcHMucHVzaChwYXJhbU1ldGFkYXRhKTtcbiAgICB9XG4gIH1cblxuICB0b2tlbiA9IHJlc29sdmVGb3J3YXJkUmVmKHRva2VuKTtcblxuICBpZiAoaXNQcmVzZW50KHRva2VuKSkge1xuICAgIHJldHVybiBfY3JlYXRlRGVwZW5kZW5jeSh0b2tlbiwgb3B0aW9uYWwsIGxvd2VyQm91bmRWaXNpYmlsaXR5LCB1cHBlckJvdW5kVmlzaWJpbGl0eSwgZGVwUHJvcHMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBOb0Fubm90YXRpb25FcnJvcih0eXBlT3JGdW5jLCBwYXJhbXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVEZXBlbmRlbmN5KHRva2VuLCBvcHRpb25hbCwgbG93ZXJCb3VuZFZpc2liaWxpdHksIHVwcGVyQm91bmRWaXNpYmlsaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwUHJvcHMpOiBEZXBlbmRlbmN5IHtcbiAgcmV0dXJuIG5ldyBEZXBlbmRlbmN5KEtleS5nZXQodG9rZW4pLCBvcHRpb25hbCwgbG93ZXJCb3VuZFZpc2liaWxpdHksIHVwcGVyQm91bmRWaXNpYmlsaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwUHJvcHMpO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Allows to refer to references which are not yet defined.\r\n *\r\n * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of\r\n * DI is declared,\r\n * but not yet defined. It is also used when the `token` which we use when creating a query is not\r\n * yet defined.\r\n *\r\n * ### Example\r\n * {@example core/di/ts/forward_ref/forward_ref.ts region='forward_ref'}\r\n */\r\nfunction forwardRef(forwardRefFn) {\r\n forwardRefFn.__forward_ref__ = forwardRef;\r\n forwardRefFn.toString = function () { return lang_1.stringify(this()); };\r\n return forwardRefFn;\r\n}\r\nexports.forwardRef = forwardRef;\r\n/**\r\n * Lazily retrieves the reference value from a forwardRef.\r\n *\r\n * Acts as the identity function when given a non-forward-ref value.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/GU72mJrk1fiodChcmiDR?p=preview))\r\n *\r\n * ```typescript\r\n * var ref = forwardRef(() => \"refValue\");\r\n * expect(resolveForwardRef(ref)).toEqual(\"refValue\");\r\n * expect(resolveForwardRef(\"regularValue\")).toEqual(\"regularValue\");\r\n * ```\r\n *\r\n * See: {@link forwardRef}\r\n */\r\nfunction resolveForwardRef(type) {\r\n if (lang_1.isFunction(type) && type.hasOwnProperty('__forward_ref__') &&\r\n type.__forward_ref__ === forwardRef) {\r\n return type();\r\n }\r\n else {\r\n return type;\r\n }\r\n}\r\nexports.resolveForwardRef = resolveForwardRef;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZF9yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9kaS9mb3J3YXJkX3JlZi50cyJdLCJuYW1lcyI6WyJmb3J3YXJkUmVmIiwicmVzb2x2ZUZvcndhcmRSZWYiXSwibWFwcGluZ3MiOiJBQUFBLHFCQUEwQywwQkFBMEIsQ0FBQyxDQUFBO0FBV3JFOzs7Ozs7Ozs7O0dBVUc7QUFDSCxvQkFBMkIsWUFBMEI7SUFDN0NBLFlBQWFBLENBQUNBLGVBQWVBLEdBQUdBLFVBQVVBLENBQUNBO0lBQzNDQSxZQUFhQSxDQUFDQSxRQUFRQSxHQUFHQSxjQUFhLE1BQU0sQ0FBQyxnQkFBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNBO0lBQ3hFQSxNQUFNQSxDQUFhQSxZQUFhQSxDQUFDQTtBQUNuQ0EsQ0FBQ0E7QUFKZSxrQkFBVSxhQUl6QixDQUFBO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCwyQkFBa0MsSUFBUztJQUN6Q0MsRUFBRUEsQ0FBQ0EsQ0FBQ0EsaUJBQVVBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLElBQUlBLENBQUNBLGNBQWNBLENBQUNBLGlCQUFpQkEsQ0FBQ0E7UUFDMURBLElBQUlBLENBQUNBLGVBQWVBLEtBQUtBLFVBQVVBLENBQUNBLENBQUNBLENBQUNBO1FBQ3hDQSxNQUFNQSxDQUFnQkEsSUFBS0EsRUFBRUEsQ0FBQ0E7SUFDaENBLENBQUNBO0lBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ05BLE1BQU1BLENBQUNBLElBQUlBLENBQUNBO0lBQ2RBLENBQUNBO0FBQ0hBLENBQUNBO0FBUGUseUJBQWlCLG9CQU9oQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlLCBzdHJpbmdpZnksIGlzRnVuY3Rpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIHRoYXQgYSBmdW5jdGlvbiBwYXNzZWQgaW50byB7QGxpbmsgZm9yd2FyZFJlZn0gaGFzIHRvIGltcGxlbWVudC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIHtAZXhhbXBsZSBjb3JlL2RpL3RzL2ZvcndhcmRfcmVmL2ZvcndhcmRfcmVmLnRzIHJlZ2lvbj0nZm9yd2FyZF9yZWZfZm4nfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcndhcmRSZWZGbiB7ICgpOiBhbnk7IH1cblxuLyoqXG4gKiBBbGxvd3MgdG8gcmVmZXIgdG8gcmVmZXJlbmNlcyB3aGljaCBhcmUgbm90IHlldCBkZWZpbmVkLlxuICpcbiAqIEZvciBpbnN0YW5jZSwgYGZvcndhcmRSZWZgIGlzIHVzZWQgd2hlbiB0aGUgYHRva2VuYCB3aGljaCB3ZSBuZWVkIHRvIHJlZmVyIHRvIGZvciB0aGUgcHVycG9zZXMgb2ZcbiAqIERJIGlzIGRlY2xhcmVkLFxuICogYnV0IG5vdCB5ZXQgZGVmaW5lZC4gSXQgaXMgYWxzbyB1c2VkIHdoZW4gdGhlIGB0b2tlbmAgd2hpY2ggd2UgdXNlIHdoZW4gY3JlYXRpbmcgYSBxdWVyeSBpcyBub3RcbiAqIHlldCBkZWZpbmVkLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKiB7QGV4YW1wbGUgY29yZS9kaS90cy9mb3J3YXJkX3JlZi9mb3J3YXJkX3JlZi50cyByZWdpb249J2ZvcndhcmRfcmVmJ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRSZWYoZm9yd2FyZFJlZkZuOiBGb3J3YXJkUmVmRm4pOiBUeXBlIHtcbiAgKDxhbnk+Zm9yd2FyZFJlZkZuKS5fX2ZvcndhcmRfcmVmX18gPSBmb3J3YXJkUmVmO1xuICAoPGFueT5mb3J3YXJkUmVmRm4pLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiBzdHJpbmdpZnkodGhpcygpKTsgfTtcbiAgcmV0dXJuICg8VHlwZT48YW55PmZvcndhcmRSZWZGbik7XG59XG5cbi8qKlxuICogTGF6aWx5IHJldHJpZXZlcyB0aGUgcmVmZXJlbmNlIHZhbHVlIGZyb20gYSBmb3J3YXJkUmVmLlxuICpcbiAqIEFjdHMgYXMgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIHdoZW4gZ2l2ZW4gYSBub24tZm9yd2FyZC1yZWYgdmFsdWUuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L0dVNzJtSnJrMWZpb2RDaGNtaURSP3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogdmFyIHJlZiA9IGZvcndhcmRSZWYoKCkgPT4gXCJyZWZWYWx1ZVwiKTtcbiAqIGV4cGVjdChyZXNvbHZlRm9yd2FyZFJlZihyZWYpKS50b0VxdWFsKFwicmVmVmFsdWVcIik7XG4gKiBleHBlY3QocmVzb2x2ZUZvcndhcmRSZWYoXCJyZWd1bGFyVmFsdWVcIikpLnRvRXF1YWwoXCJyZWd1bGFyVmFsdWVcIik7XG4gKiBgYGBcbiAqXG4gKiBTZWU6IHtAbGluayBmb3J3YXJkUmVmfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZvcndhcmRSZWYodHlwZTogYW55KTogYW55IHtcbiAgaWYgKGlzRnVuY3Rpb24odHlwZSkgJiYgdHlwZS5oYXNPd25Qcm9wZXJ0eSgnX19mb3J3YXJkX3JlZl9fJykgJiZcbiAgICAgIHR5cGUuX19mb3J3YXJkX3JlZl9fID09PSBmb3J3YXJkUmVmKSB7XG4gICAgcmV0dXJuICg8Rm9yd2FyZFJlZkZuPnR5cGUpKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar forward_ref_1 = require('./forward_ref');\r\n/**\r\n * A unique object used for retrieving items from the {@link Injector}.\r\n *\r\n * Keys have:\r\n * - a system-wide unique `id`.\r\n * - a `token`.\r\n *\r\n * `Key` is used internally by {@link Injector} because its system-wide unique `id` allows the\r\n * injector to store created objects in a more efficient way.\r\n *\r\n * `Key` should not be created directly. {@link Injector} creates keys automatically when resolving\r\n * providers.\r\n */\r\nvar Key = (function () {\r\n /**\r\n * Private\r\n */\r\n function Key(token, id) {\r\n this.token = token;\r\n this.id = id;\r\n if (lang_1.isBlank(token)) {\r\n throw new exceptions_1.BaseException('Token must be defined!');\r\n }\r\n }\r\n Object.defineProperty(Key.prototype, \"displayName\", {\r\n /**\r\n * Returns a stringified token.\r\n */\r\n get: function () { return lang_1.stringify(this.token); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Retrieves a `Key` for a token.\r\n */\r\n Key.get = function (token) { return _globalKeyRegistry.get(forward_ref_1.resolveForwardRef(token)); };\r\n Object.defineProperty(Key, \"numberOfKeys\", {\r\n /**\r\n * @returns the number of keys registered in the system.\r\n */\r\n get: function () { return _globalKeyRegistry.numberOfKeys; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Key;\r\n})();\r\nexports.Key = Key;\r\n/**\r\n * @internal\r\n */\r\nvar KeyRegistry = (function () {\r\n function KeyRegistry() {\r\n this._allKeys = new Map();\r\n }\r\n KeyRegistry.prototype.get = function (token) {\r\n if (token instanceof Key)\r\n return token;\r\n if (this._allKeys.has(token)) {\r\n return this._allKeys.get(token);\r\n }\r\n var newKey = new Key(token, Key.numberOfKeys);\r\n this._allKeys.set(token, newKey);\r\n return newKey;\r\n };\r\n Object.defineProperty(KeyRegistry.prototype, \"numberOfKeys\", {\r\n get: function () { return this._allKeys.size; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return KeyRegistry;\r\n})();\r\nexports.KeyRegistry = KeyRegistry;\r\nvar _globalKeyRegistry = new KeyRegistry();\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvZGkva2V5LnRzIl0sIm5hbWVzIjpbIktleSIsIktleS5jb25zdHJ1Y3RvciIsIktleS5kaXNwbGF5TmFtZSIsIktleS5nZXQiLCJLZXkubnVtYmVyT2ZLZXlzIiwiS2V5UmVnaXN0cnkiLCJLZXlSZWdpc3RyeS5jb25zdHJ1Y3RvciIsIktleVJlZ2lzdHJ5LmdldCIsIktleVJlZ2lzdHJ5Lm51bWJlck9mS2V5cyJdLCJtYXBwaW5ncyI6IkFBQUEscUJBQThDLDBCQUEwQixDQUFDLENBQUE7QUFDekUsMkJBQThDLGdDQUFnQyxDQUFDLENBQUE7QUFDL0UsNEJBQWdDLGVBQWUsQ0FBQyxDQUFBO0FBRWhEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNIO0lBQ0VBOztPQUVHQTtJQUNIQSxhQUFtQkEsS0FBYUEsRUFBU0EsRUFBVUE7UUFBaENDLFVBQUtBLEdBQUxBLEtBQUtBLENBQVFBO1FBQVNBLE9BQUVBLEdBQUZBLEVBQUVBLENBQVFBO1FBQ2pEQSxFQUFFQSxDQUFDQSxDQUFDQSxjQUFPQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNuQkEsTUFBTUEsSUFBSUEsMEJBQWFBLENBQUNBLHdCQUF3QkEsQ0FBQ0EsQ0FBQ0E7UUFDcERBLENBQUNBO0lBQ0hBLENBQUNBO0lBS0RELHNCQUFJQSw0QkFBV0E7UUFIZkE7O1dBRUdBO2FBQ0hBLGNBQTRCRSxNQUFNQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBRjtJQUUzREE7O09BRUdBO0lBQ0lBLE9BQUdBLEdBQVZBLFVBQVdBLEtBQWFBLElBQVNHLE1BQU1BLENBQUNBLGtCQUFrQkEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsK0JBQWlCQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUszRkgsc0JBQVdBLG1CQUFZQTtRQUh2QkE7O1dBRUdBO2FBQ0hBLGNBQW9DSSxNQUFNQSxDQUFDQSxrQkFBa0JBLENBQUNBLFlBQVlBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUo7SUFDL0VBLFVBQUNBO0FBQURBLENBQUNBLEFBeEJELElBd0JDO0FBeEJZLFdBQUcsTUF3QmYsQ0FBQTtBQUVEOztHQUVHO0FBQ0g7SUFBQUs7UUFDVUMsYUFBUUEsR0FBR0EsSUFBSUEsR0FBR0EsRUFBZUEsQ0FBQ0E7SUFlNUNBLENBQUNBO0lBYkNELHlCQUFHQSxHQUFIQSxVQUFJQSxLQUFhQTtRQUNmRSxFQUFFQSxDQUFDQSxDQUFDQSxLQUFLQSxZQUFZQSxHQUFHQSxDQUFDQTtZQUFDQSxNQUFNQSxDQUFDQSxLQUFLQSxDQUFDQTtRQUV2Q0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDN0JBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLEdBQUdBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO1FBQ2xDQSxDQUFDQTtRQUVEQSxJQUFJQSxNQUFNQSxHQUFHQSxJQUFJQSxHQUFHQSxDQUFDQSxLQUFLQSxFQUFFQSxHQUFHQSxDQUFDQSxZQUFZQSxDQUFDQSxDQUFDQTtRQUM5Q0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsS0FBS0EsRUFBRUEsTUFBTUEsQ0FBQ0EsQ0FBQ0E7UUFDakNBLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBO0lBQ2hCQSxDQUFDQTtJQUVERixzQkFBSUEscUNBQVlBO2FBQWhCQSxjQUE2QkcsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBSDtJQUMzREEsa0JBQUNBO0FBQURBLENBQUNBLEFBaEJELElBZ0JDO0FBaEJZLG1CQUFXLGNBZ0J2QixDQUFBO0FBRUQsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzdHJpbmdpZnksIENPTlNULCBUeXBlLCBpc0JsYW5rfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtyZXNvbHZlRm9yd2FyZFJlZn0gZnJvbSAnLi9mb3J3YXJkX3JlZic7XG5cbi8qKlxuICogQSB1bmlxdWUgb2JqZWN0IHVzZWQgZm9yIHJldHJpZXZpbmcgaXRlbXMgZnJvbSB0aGUge0BsaW5rIEluamVjdG9yfS5cbiAqXG4gKiBLZXlzIGhhdmU6XG4gKiAtIGEgc3lzdGVtLXdpZGUgdW5pcXVlIGBpZGAuXG4gKiAtIGEgYHRva2VuYC5cbiAqXG4gKiBgS2V5YCBpcyB1c2VkIGludGVybmFsbHkgYnkge0BsaW5rIEluamVjdG9yfSBiZWNhdXNlIGl0cyBzeXN0ZW0td2lkZSB1bmlxdWUgYGlkYCBhbGxvd3MgdGhlXG4gKiBpbmplY3RvciB0byBzdG9yZSBjcmVhdGVkIG9iamVjdHMgaW4gYSBtb3JlIGVmZmljaWVudCB3YXkuXG4gKlxuICogYEtleWAgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIGRpcmVjdGx5LiB7QGxpbmsgSW5qZWN0b3J9IGNyZWF0ZXMga2V5cyBhdXRvbWF0aWNhbGx5IHdoZW4gcmVzb2x2aW5nXG4gKiBwcm92aWRlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXkge1xuICAvKipcbiAgICogUHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIHRva2VuOiBPYmplY3QsIHB1YmxpYyBpZDogbnVtYmVyKSB7XG4gICAgaWYgKGlzQmxhbmsodG9rZW4pKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbignVG9rZW4gbXVzdCBiZSBkZWZpbmVkIScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5naWZpZWQgdG9rZW4uXG4gICAqL1xuICBnZXQgZGlzcGxheU5hbWUoKTogc3RyaW5nIHsgcmV0dXJuIHN0cmluZ2lmeSh0aGlzLnRva2VuKTsgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBgS2V5YCBmb3IgYSB0b2tlbi5cbiAgICovXG4gIHN0YXRpYyBnZXQodG9rZW46IE9iamVjdCk6IEtleSB7IHJldHVybiBfZ2xvYmFsS2V5UmVnaXN0cnkuZ2V0KHJlc29sdmVGb3J3YXJkUmVmKHRva2VuKSk7IH1cblxuICAvKipcbiAgICogQHJldHVybnMgdGhlIG51bWJlciBvZiBrZXlzIHJlZ2lzdGVyZWQgaW4gdGhlIHN5c3RlbS5cbiAgICovXG4gIHN0YXRpYyBnZXQgbnVtYmVyT2ZLZXlzKCk6IG51bWJlciB7IHJldHVybiBfZ2xvYmFsS2V5UmVnaXN0cnkubnVtYmVyT2ZLZXlzOyB9XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlSZWdpc3RyeSB7XG4gIHByaXZhdGUgX2FsbEtleXMgPSBuZXcgTWFwPE9iamVjdCwgS2V5PigpO1xuXG4gIGdldCh0b2tlbjogT2JqZWN0KTogS2V5IHtcbiAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBLZXkpIHJldHVybiB0b2tlbjtcblxuICAgIGlmICh0aGlzLl9hbGxLZXlzLmhhcyh0b2tlbikpIHtcbiAgICAgIHJldHVybiB0aGlzLl9hbGxLZXlzLmdldCh0b2tlbik7XG4gICAgfVxuXG4gICAgdmFyIG5ld0tleSA9IG5ldyBLZXkodG9rZW4sIEtleS5udW1iZXJPZktleXMpO1xuICAgIHRoaXMuX2FsbEtleXMuc2V0KHRva2VuLCBuZXdLZXkpO1xuICAgIHJldHVybiBuZXdLZXk7XG4gIH1cblxuICBnZXQgbnVtYmVyT2ZLZXlzKCk6IG51bWJlciB7IHJldHVybiB0aGlzLl9hbGxLZXlzLnNpemU7IH1cbn1cblxudmFyIF9nbG9iYWxLZXlSZWdpc3RyeSA9IG5ldyBLZXlSZWdpc3RyeSgpO1xuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nfunction findFirstClosedCycle(keys) {\r\n var res = [];\r\n for (var i = 0; i < keys.length; ++i) {\r\n if (collection_1.ListWrapper.contains(res, keys[i])) {\r\n res.push(keys[i]);\r\n return res;\r\n }\r\n else {\r\n res.push(keys[i]);\r\n }\r\n }\r\n return res;\r\n}\r\nfunction constructResolvingPath(keys) {\r\n if (keys.length > 1) {\r\n var reversed = findFirstClosedCycle(collection_1.ListWrapper.reversed(keys));\r\n var tokenStrs = reversed.map(function (k) { return lang_1.stringify(k.token); });\r\n return \" (\" + tokenStrs.join(' -> ') + \")\";\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n/**\r\n * Base class for all errors arising from misconfigured providers.\r\n */\r\nvar AbstractProviderError = (function (_super) {\r\n __extends(AbstractProviderError, _super);\r\n function AbstractProviderError(injector, key, constructResolvingMessage) {\r\n _super.call(this, \"DI Exception\");\r\n this.keys = [key];\r\n this.injectors = [injector];\r\n this.constructResolvingMessage = constructResolvingMessage;\r\n this.message = this.constructResolvingMessage(this.keys);\r\n }\r\n AbstractProviderError.prototype.addKey = function (injector, key) {\r\n this.injectors.push(injector);\r\n this.keys.push(key);\r\n this.message = this.constructResolvingMessage(this.keys);\r\n };\r\n Object.defineProperty(AbstractProviderError.prototype, \"context\", {\r\n get: function () { return this.injectors[this.injectors.length - 1].debugContext(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AbstractProviderError;\r\n})(exceptions_1.BaseException);\r\nexports.AbstractProviderError = AbstractProviderError;\r\n/**\r\n * Thrown when trying to retrieve a dependency by `Key` from {@link Injector}, but the\r\n * {@link Injector} does not have a {@link Provider} for {@link Key}.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/vq8D3FRB9aGbnWJqtEPE?p=preview))\r\n *\r\n * ```typescript\r\n * class A {\r\n * constructor(b:B) {}\r\n * }\r\n *\r\n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\r\n * ```\r\n */\r\nvar NoProviderError = (function (_super) {\r\n __extends(NoProviderError, _super);\r\n function NoProviderError(injector, key) {\r\n _super.call(this, injector, key, function (keys) {\r\n var first = lang_1.stringify(collection_1.ListWrapper.first(keys).token);\r\n return \"No provider for \" + first + \"!\" + constructResolvingPath(keys);\r\n });\r\n }\r\n return NoProviderError;\r\n})(AbstractProviderError);\r\nexports.NoProviderError = NoProviderError;\r\n/**\r\n * Thrown when dependencies form a cycle.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/wYQdNos0Tzql3ei1EV9j?p=info))\r\n *\r\n * ```typescript\r\n * var injector = Injector.resolveAndCreate([\r\n * provide(\"one\", {useFactory: (two) => \"two\", deps: [[new Inject(\"two\")]]}),\r\n * provide(\"two\", {useFactory: (one) => \"one\", deps: [[new Inject(\"one\")]]})\r\n * ]);\r\n *\r\n * expect(() => injector.get(\"one\")).toThrowError();\r\n * ```\r\n *\r\n * Retrieving `A` or `B` throws a `CyclicDependencyError` as the graph above cannot be constructed.\r\n */\r\nvar CyclicDependencyError = (function (_super) {\r\n __extends(CyclicDependencyError, _super);\r\n function CyclicDependencyError(injector, key) {\r\n _super.call(this, injector, key, function (keys) {\r\n return \"Cannot instantiate cyclic dependency!\" + constructResolvingPath(keys);\r\n });\r\n }\r\n return CyclicDependencyError;\r\n})(AbstractProviderError);\r\nexports.CyclicDependencyError = CyclicDependencyError;\r\n/**\r\n * Thrown when a constructing type returns with an Error.\r\n *\r\n * The `InstantiationError` class contains the original error plus the dependency graph which caused\r\n * this object to be instantiated.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/7aWYdcqTQsP0eNqEdUAf?p=preview))\r\n *\r\n * ```typescript\r\n * class A {\r\n * constructor() {\r\n * throw new Error('message');\r\n * }\r\n * }\r\n *\r\n * var injector = Injector.resolveAndCreate([A]);\r\n\r\n * try {\r\n * injector.get(A);\r\n * } catch (e) {\r\n * expect(e instanceof InstantiationError).toBe(true);\r\n * expect(e.originalException.message).toEqual(\"message\");\r\n * expect(e.originalStack).toBeDefined();\r\n * }\r\n * ```\r\n */\r\nvar InstantiationError = (function (_super) {\r\n __extends(InstantiationError, _super);\r\n function InstantiationError(injector, originalException, originalStack, key) {\r\n _super.call(this, \"DI Exception\", originalException, originalStack, null);\r\n this.keys = [key];\r\n this.injectors = [injector];\r\n }\r\n InstantiationError.prototype.addKey = function (injector, key) {\r\n this.injectors.push(injector);\r\n this.keys.push(key);\r\n };\r\n Object.defineProperty(InstantiationError.prototype, \"wrapperMessage\", {\r\n get: function () {\r\n var first = lang_1.stringify(collection_1.ListWrapper.first(this.keys).token);\r\n return \"Error during instantiation of \" + first + \"!\" + constructResolvingPath(this.keys) + \".\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InstantiationError.prototype, \"causeKey\", {\r\n get: function () { return this.keys[0]; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(InstantiationError.prototype, \"context\", {\r\n get: function () { return this.injectors[this.injectors.length - 1].debugContext(); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return InstantiationError;\r\n})(exceptions_1.WrappedException);\r\nexports.InstantiationError = InstantiationError;\r\n/**\r\n * Thrown when an object other then {@link Provider} (or `Type`) is passed to {@link Injector}\r\n * creation.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/YatCFbPAMCL0JSSQ4mvH?p=preview))\r\n *\r\n * ```typescript\r\n * expect(() => Injector.resolveAndCreate([\"not a type\"])).toThrowError();\r\n * ```\r\n */\r\nvar InvalidProviderError = (function (_super) {\r\n __extends(InvalidProviderError, _super);\r\n function InvalidProviderError(provider) {\r\n _super.call(this, \"Invalid provider - only instances of Provider and Type are allowed, got: \" +\r\n provider.toString());\r\n }\r\n return InvalidProviderError;\r\n})(exceptions_1.BaseException);\r\nexports.InvalidProviderError = InvalidProviderError;\r\n/**\r\n * Thrown when the class has no annotation information.\r\n *\r\n * Lack of annotation information prevents the {@link Injector} from determining which dependencies\r\n * need to be injected into the constructor.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/rHnZtlNS7vJOPQ6pcVkm?p=preview))\r\n *\r\n * ```typescript\r\n * class A {\r\n * constructor(b) {}\r\n * }\r\n *\r\n * expect(() => Injector.resolveAndCreate([A])).toThrowError();\r\n * ```\r\n *\r\n * This error is also thrown when the class not marked with {@link Injectable} has parameter types.\r\n *\r\n * ```typescript\r\n * class B {}\r\n *\r\n * class A {\r\n * constructor(b:B) {} // no information about the parameter types of A is available at runtime.\r\n * }\r\n *\r\n * expect(() => Injector.resolveAndCreate([A,B])).toThrowError();\r\n * ```\r\n */\r\nvar NoAnnotationError = (function (_super) {\r\n __extends(NoAnnotationError, _super);\r\n function NoAnnotationError(typeOrFunc, params) {\r\n _super.call(this, NoAnnotationError._genMessage(typeOrFunc, params));\r\n }\r\n NoAnnotationError._genMessage = function (typeOrFunc, params) {\r\n var signature = [];\r\n for (var i = 0, ii = params.length; i < ii; i++) {\r\n var parameter = params[i];\r\n if (lang_1.isBlank(parameter) || parameter.length == 0) {\r\n signature.push('?');\r\n }\r\n else {\r\n signature.push(parameter.map(lang_1.stringify).join(' '));\r\n }\r\n }\r\n return \"Cannot resolve all parameters for '\" + lang_1.stringify(typeOrFunc) + \"'(\" +\r\n signature.join(', ') + \"). \" +\r\n \"Make sure that all the parameters are decorated with Inject or have valid type annotations and that '\" +\r\n lang_1.stringify(typeOrFunc) + \"' is decorated with Injectable.\";\r\n };\r\n return NoAnnotationError;\r\n})(exceptions_1.BaseException);\r\nexports.NoAnnotationError = NoAnnotationError;\r\n/**\r\n * Thrown when getting an object by index.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/bRs0SX2OTQiJzqvjgl8P?p=preview))\r\n *\r\n * ```typescript\r\n * class A {}\r\n *\r\n * var injector = Injector.resolveAndCreate([A]);\r\n *\r\n * expect(() => injector.getAt(100)).toThrowError();\r\n * ```\r\n */\r\nvar OutOfBoundsError = (function (_super) {\r\n __extends(OutOfBoundsError, _super);\r\n function OutOfBoundsError(index) {\r\n _super.call(this, \"Index \" + index + \" is out-of-bounds.\");\r\n }\r\n return OutOfBoundsError;\r\n})(exceptions_1.BaseException);\r\nexports.OutOfBoundsError = OutOfBoundsError;\r\n// TODO: add a working example after alpha38 is released\r\n/**\r\n * Thrown when a multi provider and a regular provider are bound to the same token.\r\n *\r\n * ### Example\r\n *\r\n * ```typescript\r\n * expect(() => Injector.resolveAndCreate([\r\n * new Provider(\"Strings\", {useValue: \"string1\", multi: true}),\r\n * new Provider(\"Strings\", {useValue: \"string2\", multi: false})\r\n * ])).toThrowError();\r\n * ```\r\n */\r\nvar MixingMultiProvidersWithRegularProvidersError = (function (_super) {\r\n __extends(MixingMultiProvidersWithRegularProvidersError, _super);\r\n function MixingMultiProvidersWithRegularProvidersError(provider1, provider2) {\r\n _super.call(this, \"Cannot mix multi providers and regular providers, got: \" + provider1.toString() + \" \" +\r\n provider2.toString());\r\n }\r\n return MixingMultiProvidersWithRegularProvidersError;\r\n})(exceptions_1.BaseException);\r\nexports.MixingMultiProvidersWithRegularProvidersError = MixingMultiProvidersWithRegularProvidersError;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2RpL2V4Y2VwdGlvbnMudHMiXSwibmFtZXMiOlsiZmluZEZpcnN0Q2xvc2VkQ3ljbGUiLCJjb25zdHJ1Y3RSZXNvbHZpbmdQYXRoIiwiQWJzdHJhY3RQcm92aWRlckVycm9yIiwiQWJzdHJhY3RQcm92aWRlckVycm9yLmNvbnN0cnVjdG9yIiwiQWJzdHJhY3RQcm92aWRlckVycm9yLmFkZEtleSIsIkFic3RyYWN0UHJvdmlkZXJFcnJvci5jb250ZXh0IiwiTm9Qcm92aWRlckVycm9yIiwiTm9Qcm92aWRlckVycm9yLmNvbnN0cnVjdG9yIiwiQ3ljbGljRGVwZW5kZW5jeUVycm9yIiwiQ3ljbGljRGVwZW5kZW5jeUVycm9yLmNvbnN0cnVjdG9yIiwiSW5zdGFudGlhdGlvbkVycm9yIiwiSW5zdGFudGlhdGlvbkVycm9yLmNvbnN0cnVjdG9yIiwiSW5zdGFudGlhdGlvbkVycm9yLmFkZEtleSIsIkluc3RhbnRpYXRpb25FcnJvci53cmFwcGVyTWVzc2FnZSIsIkluc3RhbnRpYXRpb25FcnJvci5jYXVzZUtleSIsIkluc3RhbnRpYXRpb25FcnJvci5jb250ZXh0IiwiSW52YWxpZFByb3ZpZGVyRXJyb3IiLCJJbnZhbGlkUHJvdmlkZXJFcnJvci5jb25zdHJ1Y3RvciIsIk5vQW5ub3RhdGlvbkVycm9yIiwiTm9Bbm5vdGF0aW9uRXJyb3IuY29uc3RydWN0b3IiLCJOb0Fubm90YXRpb25FcnJvci5fZ2VuTWVzc2FnZSIsIk91dE9mQm91bmRzRXJyb3IiLCJPdXRPZkJvdW5kc0Vycm9yLmNvbnN0cnVjdG9yIiwiTWl4aW5nTXVsdGlQcm92aWRlcnNXaXRoUmVndWxhclByb3ZpZGVyc0Vycm9yIiwiTWl4aW5nTXVsdGlQcm92aWRlcnNXaXRoUmVndWxhclByb3ZpZGVyc0Vycm9yLmNvbnN0cnVjdG9yIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJCQUEwQixnQ0FB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Q0E7QUFBREEsQ0FBQ0EsQUFMRCxFQUFtRSwwQkFBYSxFQUsvRTtBQUxZLHFEQUE2QyxnREFLekQsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlzdFdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge3N0cmluZ2lmeSwgaXNCbGFua30gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbiwgV3JhcHBlZEV4Y2VwdGlvbiwgdW5pbXBsZW1lbnRlZH0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7S2V5fSBmcm9tICcuL2tleSc7XG5pbXBvcnQge0luamVjdG9yfSBmcm9tICcuL2luamVjdG9yJztcblxuZnVuY3Rpb24gZmluZEZpcnN0Q2xvc2VkQ3ljbGUoa2V5czogYW55W10pOiBhbnlbXSB7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKExpc3RXcmFwcGVyLmNvbnRhaW5zKHJlcywga2V5c1tpXSkpIHtcbiAgICAgIHJlcy5wdXNoKGtleXNbaV0pO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzLnB1c2goa2V5c1tpXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFJlc29sdmluZ1BhdGgoa2V5czogYW55W10pOiBzdHJpbmcge1xuICBpZiAoa2V5cy5sZW5ndGggPiAxKSB7XG4gICAgdmFyIHJldmVyc2VkID0gZmluZEZpcnN0Q2xvc2VkQ3ljbGUoTGlzdFdyYXBwZXIucmV2ZXJzZWQoa2V5cykpO1xuICAgIHZhciB0b2tlblN0cnMgPSByZXZlcnNlZC5tYXAoayA9PiBzdHJpbmdpZnkoay50b2tlbikpO1xuICAgIHJldHVybiBcIiAoXCIgKyB0b2tlblN0cnMuam9pbignIC0+ICcpICsgXCIpXCI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbn1cblxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGFsbCBlcnJvcnMgYXJpc2luZyBmcm9tIG1pc2NvbmZpZ3VyZWQgcHJvdmlkZXJzLlxuICovXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RQcm92aWRlckVycm9yIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAga2V5czogS2V5W107XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBpbmplY3RvcnM6IEluamVjdG9yW107XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBjb25zdHJ1Y3RSZXNvbHZpbmdNZXNzYWdlOiBGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IsIGtleTogS2V5LCBjb25zdHJ1Y3RSZXNvbHZpbmdNZXNzYWdlOiBGdW5jdGlvbikge1xuICAgIHN1cGVyKFwiREkgRXhjZXB0aW9uXCIpO1xuICAgIHRoaXMua2V5cyA9IFtrZXldO1xuICAgIHRoaXMuaW5qZWN0b3JzID0gW2luamVjdG9yXTtcbiAgICB0aGlzLmNvbnN0cnVjdFJlc29sdmluZ01lc3NhZ2UgPSBjb25zdHJ1Y3RSZXNvbHZpbmdNZXNzYWdlO1xuICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuY29uc3RydWN0UmVzb2x2aW5nTWVzc2FnZSh0aGlzLmtleXMpO1xuICB9XG5cbiAgYWRkS2V5KGluamVjdG9yOiBJbmplY3Rvciwga2V5OiBLZXkpOiB2b2lkIHtcbiAgICB0aGlzLmluamVjdG9ycy5wdXNoKGluamVjdG9yKTtcbiAgICB0aGlzLmtleXMucHVzaChrZXkpO1xuICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuY29uc3RydWN0UmVzb2x2aW5nTWVzc2FnZSh0aGlzLmtleXMpO1xuICB9XG5cbiAgZ2V0IGNvbnRleHQoKSB7IHJldHVybiB0aGlzLmluamVjdG9yc1t0aGlzLmluamVjdG9ycy5sZW5ndGggLSAxXS5kZWJ1Z0NvbnRleHQoKTsgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIHRyeWluZyB0byByZXRyaWV2ZSBhIGRlcGVuZGVuY3kgYnkgYEtleWAgZnJvbSB7QGxpbmsgSW5qZWN0b3J9LCBidXQgdGhlXG4gKiB7QGxpbmsgSW5qZWN0b3J9IGRvZXMgbm90IGhhdmUgYSB7QGxpbmsgUHJvdmlkZXJ9IGZvciB7QGxpbmsgS2V5fS5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvdnE4RDNGUkI5YUdibldKcXRFUEU/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBBIHtcbiAqICAgY29uc3RydWN0b3IoYjpCKSB7fVxuICogfVxuICpcbiAqIGV4cGVjdCgoKSA9PiBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtBXSkpLnRvVGhyb3dFcnJvcigpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBOb1Byb3ZpZGVyRXJyb3IgZXh0ZW5kcyBBYnN0cmFjdFByb3ZpZGVyRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IsIGtleTogS2V5KSB7XG4gICAgc3VwZXIoaW5qZWN0b3IsIGtleSwgZnVuY3Rpb24oa2V5czogYW55W10pIHtcbiAgICAgIHZhciBmaXJzdCA9IHN0cmluZ2lmeShMaXN0V3JhcHBlci5maXJzdChrZXlzKS50b2tlbik7XG4gICAgICByZXR1cm4gYE5vIHByb3ZpZGVyIGZvciAke2ZpcnN0fSEke2NvbnN0cnVjdFJlc29sdmluZ1BhdGgoa2V5cyl9YDtcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGRlcGVuZGVuY2llcyBmb3JtIGEgY3ljbGUuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3dZUWROb3MwVHpxbDNlaTFFVjlqP3A9aW5mbykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbXG4gKiAgIHByb3ZpZGUoXCJvbmVcIiwge3VzZUZhY3Rvcnk6ICh0d28pID0+IFwidHdvXCIsIGRlcHM6IFtbbmV3IEluamVjdChcInR3b1wiKV1dfSksXG4gKiAgIHByb3ZpZGUoXCJ0d29cIiwge3VzZUZhY3Rvcnk6IChvbmUpID0+IFwib25lXCIsIGRlcHM6IFtbbmV3IEluamVjdChcIm9uZVwiKV1dfSlcbiAqIF0pO1xuICpcbiAqIGV4cGVjdCgoKSA9PiBpbmplY3Rvci5nZXQoXCJvbmVcIikpLnRvVGhyb3dFcnJvcigpO1xuICogYGBgXG4gKlxuICogUmV0cmlldmluZyBgQWAgb3IgYEJgIHRocm93cyBhIGBDeWNsaWNEZXBlbmRlbmN5RXJyb3JgIGFzIHRoZSBncmFwaCBhYm92ZSBjYW5ub3QgYmUgY29uc3RydWN0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDeWNsaWNEZXBlbmRlbmN5RXJyb3IgZXh0ZW5kcyBBYnN0cmFjdFByb3ZpZGVyRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IsIGtleTogS2V5KSB7XG4gICAgc3VwZXIoaW5qZWN0b3IsIGtleSwgZnVuY3Rpb24oa2V5czogYW55W10pIHtcbiAgICAgIHJldHVybiBgQ2Fubm90IGluc3RhbnRpYXRlIGN5Y2xpYyBkZXBlbmRlbmN5ISR7Y29uc3RydWN0UmVzb2x2aW5nUGF0aChrZXlzKX1gO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYSBjb25zdHJ1Y3RpbmcgdHlwZSByZXR1cm5zIHdpdGggYW4gRXJyb3IuXG4gKlxuICogVGhlIGBJbnN0YW50aWF0aW9uRXJyb3JgIGNsYXNzIGNvbnRhaW5zIHRoZSBvcmlnaW5hbCBlcnJvciBwbHVzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIHdoaWNoIGNhdXNlZFxuICogdGhpcyBvYmplY3QgdG8gYmUgaW5zdGFudGlhdGVkLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC83YVdZZGNxVFFzUDBlTnFFZFVBZj9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIEEge1xuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgICB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UnKTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW0FdKTtcblxuICogdHJ5IHtcbiAqICAgaW5qZWN0b3IuZ2V0KEEpO1xuICogfSBjYXRjaCAoZSkge1xuICogICBleHBlY3QoZSBpbnN0YW5jZW9mIEluc3RhbnRpYXRpb25FcnJvcikudG9CZSh0cnVlKTtcbiAqICAgZXhwZWN0KGUub3JpZ2luYWxFeGNlcHRpb24ubWVzc2FnZSkudG9FcXVhbChcIm1lc3NhZ2VcIik7XG4gKiAgIGV4cGVjdChlLm9yaWdpbmFsU3RhY2spLnRvQmVEZWZpbmVkKCk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEluc3RhbnRpYXRpb25FcnJvciBleHRlbmRzIFdyYXBwZWRFeGNlcHRpb24ge1xuICAvKiogQGludGVybmFsICovXG4gIGtleXM6IEtleVtdO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgaW5qZWN0b3JzOiBJbmplY3RvcltdO1xuXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvciwgb3JpZ2luYWxFeGNlcHRpb24sIG9yaWdpbmFsU3RhY2ssIGtleTogS2V5KSB7XG4gICAgc3VwZXIoXCJESSBFeGNlcHRpb25cIiwgb3JpZ2luYWxFeGNlcHRpb24sIG9yaWdpbmFsU3RhY2ssIG51bGwpO1xuICAgIHRoaXMua2V5cyA9IFtrZXldO1xuICAgIHRoaXMuaW5qZWN0b3JzID0gW2luamVjdG9yXTtcbiAgfVxuXG4gIGFkZEtleShpbmplY3RvcjogSW5qZWN0b3IsIGtleTogS2V5KTogdm9pZCB7XG4gICAgdGhpcy5pbmplY3RvcnMucHVzaChpbmplY3Rvcik7XG4gICAgdGhpcy5rZXlzLnB1c2goa2V5KTtcbiAgfVxuXG4gIGdldCB3cmFwcGVyTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHZhciBmaXJzdCA9IHN0cmluZ2lmeShMaXN0V3JhcHBlci5maXJzdCh0aGlzLmtleXMpLnRva2VuKTtcbiAgICByZXR1cm4gYEVycm9yIGR1cmluZyBpbnN0YW50aWF0aW9uIG9mICR7Zmlyc3R9ISR7Y29uc3RydWN0UmVzb2x2aW5nUGF0aCh0aGlzLmtleXMpfS5gO1xuICB9XG5cbiAgZ2V0IGNhdXNlS2V5KCk6IEtleSB7IHJldHVybiB0aGlzLmtleXNbMF07IH1cblxuICBnZXQgY29udGV4dCgpIHsgcmV0dXJuIHRoaXMuaW5qZWN0b3JzW3RoaXMuaW5qZWN0b3JzLmxlbmd0aCAtIDFdLmRlYnVnQ29udGV4dCgpOyB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYW4gb2JqZWN0IG90aGVyIHRoZW4ge0BsaW5rIFByb3ZpZGVyfSAob3IgYFR5cGVgKSBpcyBwYXNzZWQgdG8ge0BsaW5rIEluamVjdG9yfVxuICogY3JlYXRpb24uXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L1lhdENGYlBBTUNMMEpTU1E0bXZIP3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwZWN0KCgpID0+IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1wibm90IGEgdHlwZVwiXSkpLnRvVGhyb3dFcnJvcigpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUHJvdmlkZXJFcnJvciBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3Rvcihwcm92aWRlcikge1xuICAgIHN1cGVyKFwiSW52YWxpZCBwcm92aWRlciAtIG9ubHkgaW5zdGFuY2VzIG9mIFByb3ZpZGVyIGFuZCBUeXBlIGFyZSBhbGxvd2VkLCBnb3Q6IFwiICtcbiAgICAgICAgICBwcm92aWRlci50b1N0cmluZygpKTtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIHRoZSBjbGFzcyBoYXMgbm8gYW5ub3RhdGlvbiBpbmZvcm1hdGlvbi5cbiAqXG4gKiBMYWNrIG9mIGFubm90YXRpb24gaW5mb3JtYXRpb24gcHJldmVudHMgdGhlIHtAbGluayBJbmplY3Rvcn0gZnJvbSBkZXRlcm1pbmluZyB3aGljaCBkZXBlbmRlbmNpZXNcbiAqIG5lZWQgdG8gYmUgaW5qZWN0ZWQgaW50byB0aGUgY29uc3RydWN0b3IuXG4gKlxuICogIyMjIEV4YW1wbGUgKFtsaXZlIGRlbW9dKGh0dHA6Ly9wbG5rci5jby9lZGl0L3JIblp0bE5TN3ZKT1BRNnBjVmttP3A9cHJldmlldykpXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgQSB7XG4gKiAgIGNvbnN0cnVjdG9yKGIpIHt9XG4gKiB9XG4gKlxuICogZXhwZWN0KCgpID0+IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW0FdKSkudG9UaHJvd0Vycm9yKCk7XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGVycm9yIGlzIGFsc28gdGhyb3duIHdoZW4gdGhlIGNsYXNzIG5vdCBtYXJrZWQgd2l0aCB7QGxpbmsgSW5qZWN0YWJsZX0gaGFzIHBhcmFtZXRlciB0eXBlcy5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBCIHt9XG4gKlxuICogY2xhc3MgQSB7XG4gKiAgIGNvbnN0cnVjdG9yKGI6Qikge30gLy8gbm8gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhcmFtZXRlciB0eXBlcyBvZiBBIGlzIGF2YWlsYWJsZSBhdCBydW50aW1lLlxuICogfVxuICpcbiAqIGV4cGVjdCgoKSA9PiBJbmplY3Rvci5yZXNvbHZlQW5kQ3JlYXRlKFtBLEJdKSkudG9UaHJvd0Vycm9yKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIE5vQW5ub3RhdGlvbkVycm9yIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHR5cGVPckZ1bmMsIHBhcmFtczogYW55W11bXSkge1xuICAgIHN1cGVyKE5vQW5ub3RhdGlvbkVycm9yLl9nZW5NZXNzYWdlKHR5cGVPckZ1bmMsIHBhcmFtcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2dlbk1lc3NhZ2UodHlwZU9yRnVuYywgcGFyYW1zOiBhbnlbXVtdKSB7XG4gICAgdmFyIHNpZ25hdHVyZSA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHBhcmFtcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7XG4gICAgICB2YXIgcGFyYW1ldGVyID0gcGFyYW1zW2ldO1xuICAgICAgaWYgKGlzQmxhbmsocGFyYW1ldGVyKSB8fCBwYXJhbWV0ZXIubGVuZ3RoID09IDApIHtcbiAgICAgICAgc2lnbmF0dXJlLnB1c2goJz8nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNpZ25hdHVyZS5wdXNoKHBhcmFtZXRlci5tYXAoc3RyaW5naWZ5KS5qb2luKCcgJykpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gXCJDYW5ub3QgcmVzb2x2ZSBhbGwgcGFyYW1ldGVycyBmb3IgJ1wiICsgc3RyaW5naWZ5KHR5cGVPckZ1bmMpICsgXCInKFwiICtcbiAgICAgICAgICAgc2lnbmF0dXJlLmpvaW4oJywgJykgKyBcIikuIFwiICtcbiAgICAgICAgICAgXCJNYWtlIHN1cmUgdGhhdCBhbGwgdGhlIHBhcmFtZXRlcnMgYXJlIGRlY29yYXRlZCB3aXRoIEluamVjdCBvciBoYXZlIHZhbGlkIHR5cGUgYW5ub3RhdGlvbnMgYW5kIHRoYXQgJ1wiICtcbiAgICAgICAgICAgc3RyaW5naWZ5KHR5cGVPckZ1bmMpICsgXCInIGlzIGRlY29yYXRlZCB3aXRoIEluamVjdGFibGUuXCI7XG4gIH1cbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBnZXR0aW5nIGFuIG9iamVjdCBieSBpbmRleC5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvYlJzMFNYMk9UUWlKenF2amdsOFA/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBBIHt9XG4gKlxuICogdmFyIGluamVjdG9yID0gSW5qZWN0b3IucmVzb2x2ZUFuZENyZWF0ZShbQV0pO1xuICpcbiAqIGV4cGVjdCgoKSA9PiBpbmplY3Rvci5nZXRBdCgxMDApKS50b1Rocm93RXJyb3IoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgT3V0T2ZCb3VuZHNFcnJvciBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihpbmRleCkgeyBzdXBlcihgSW5kZXggJHtpbmRleH0gaXMgb3V0LW9mLWJvdW5kcy5gKTsgfVxufVxuXG4vLyBUT0RPOiBhZGQgYSB3b3JraW5nIGV4YW1wbGUgYWZ0ZXIgYWxwaGEzOCBpcyByZWxlYXNlZFxuLyoqXG4gKiBUaHJvd24gd2hlbiBhIG11bHRpIHByb3ZpZGVyIGFuZCBhIHJlZ3VsYXIgcHJvdmlkZXIgYXJlIGJvdW5kIHRvIHRoZSBzYW1lIHRva2VuLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwZWN0KCgpID0+IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICogICBuZXcgUHJvdmlkZXIoXCJTdHJpbmdzXCIsIHt1c2VWYWx1ZTogXCJzdHJpbmcxXCIsIG11bHRpOiB0cnVlfSksXG4gKiAgIG5ldyBQcm92aWRlcihcIlN0cmluZ3NcIiwge3VzZVZhbHVlOiBcInN0cmluZzJcIiwgbXVsdGk6IGZhbHNlfSlcbiAqIF0pKS50b1Rocm93RXJyb3IoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgTWl4aW5nTXVsdGlQcm92aWRlcnNXaXRoUmVndWxhclByb3ZpZGVyc0Vycm9yIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByb3ZpZGVyMSwgcHJvdmlkZXIyKSB7XG4gICAgc3VwZXIoXCJDYW5ub3QgbWl4IG11bHRpIHByb3ZpZGVycyBhbmQgcmVndWxhciBwcm92aWRlcnMsIGdvdDogXCIgKyBwcm92aWRlcjEudG9TdHJpbmcoKSArIFwiIFwiICtcbiAgICAgICAgICBwcm92aWRlcjIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * Creates a token that can be used in a DI Provider.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/Ys9ezXpj2Mnoy3Uc8KBp?p=preview))\r\n *\r\n * ```typescript\r\n * var t = new OpaqueToken(\"value\");\r\n *\r\n * var injector = Injector.resolveAndCreate([\r\n * provide(t, {useValue: \"bindingValue\"})\r\n * ]);\r\n *\r\n * expect(injector.get(t)).toEqual(\"bindingValue\");\r\n * ```\r\n *\r\n * Using an `OpaqueToken` is preferable to using strings as tokens because of possible collisions\r\n * caused by multiple providers using the same string as two different tokens.\r\n *\r\n * Using an `OpaqueToken` is preferable to using an `Object` as tokens because it provides better\r\n * error messages.\r\n */\r\nvar OpaqueToken = (function () {\r\n function OpaqueToken(_desc) {\r\n this._desc = _desc;\r\n }\r\n OpaqueToken.prototype.toString = function () { return \"Token \" + this._desc; };\r\n OpaqueToken = __decorate([\r\n lang_1.CONST(), \r\n __metadata('design:paramtypes', [String])\r\n ], OpaqueToken);\r\n return OpaqueToken;\r\n})();\r\nexports.OpaqueToken = OpaqueToken;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BhcXVlX3Rva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvZGkvb3BhcXVlX3Rva2VuLnRzIl0sIm5hbWVzIjpbIk9wYXF1ZVRva2VuIiwiT3BhcXVlVG9rZW4uY29uc3RydWN0b3IiLCJPcGFxdWVUb2tlbi50b1N0cmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEscUJBQW9CLDBCQUEwQixDQUFDLENBQUE7QUFFL0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0g7SUFFRUEscUJBQW9CQSxLQUFhQTtRQUFiQyxVQUFLQSxHQUFMQSxLQUFLQSxDQUFRQTtJQUFHQSxDQUFDQTtJQUVyQ0QsOEJBQVFBLEdBQVJBLGNBQXFCRSxNQUFNQSxDQUFDQSxXQUFTQSxJQUFJQSxDQUFDQSxLQUFPQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUp0REY7UUFBQ0EsWUFBS0EsRUFBRUE7O29CQUtQQTtJQUFEQSxrQkFBQ0E7QUFBREEsQ0FBQ0EsQUFMRCxJQUtDO0FBSlksbUJBQVcsY0FJdkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q09OU1R9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgaW4gYSBESSBQcm92aWRlci5cbiAqXG4gKiAjIyMgRXhhbXBsZSAoW2xpdmUgZGVtb10oaHR0cDovL3BsbmtyLmNvL2VkaXQvWXM5ZXpYcGoyTW5veTNVYzhLQnA/cD1wcmV2aWV3KSlcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB2YXIgdCA9IG5ldyBPcGFxdWVUb2tlbihcInZhbHVlXCIpO1xuICpcbiAqIHZhciBpbmplY3RvciA9IEluamVjdG9yLnJlc29sdmVBbmRDcmVhdGUoW1xuICogICBwcm92aWRlKHQsIHt1c2VWYWx1ZTogXCJiaW5kaW5nVmFsdWVcIn0pXG4gKiBdKTtcbiAqXG4gKiBleHBlY3QoaW5qZWN0b3IuZ2V0KHQpKS50b0VxdWFsKFwiYmluZGluZ1ZhbHVlXCIpO1xuICogYGBgXG4gKlxuICogVXNpbmcgYW4gYE9wYXF1ZVRva2VuYCBpcyBwcmVmZXJhYmxlIHRvIHVzaW5nIHN0cmluZ3MgYXMgdG9rZW5zIGJlY2F1c2Ugb2YgcG9zc2libGUgY29sbGlzaW9uc1xuICogY2F1c2VkIGJ5IG11bHRpcGxlIHByb3ZpZGVycyB1c2luZyB0aGUgc2FtZSBzdHJpbmcgYXMgdHdvIGRpZmZlcmVudCB0b2tlbnMuXG4gKlxuICogVXNpbmcgYW4gYE9wYXF1ZVRva2VuYCBpcyBwcmVmZXJhYmxlIHRvIHVzaW5nIGFuIGBPYmplY3RgIGFzIHRva2VucyBiZWNhdXNlIGl0IHByb3ZpZGVzIGJldHRlclxuICogZXJyb3IgbWVzc2FnZXMuXG4gKi9cbkBDT05TVCgpXG5leHBvcnQgY2xhc3MgT3BhcXVlVG9rZW4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kZXNjOiBzdHJpbmcpIHt9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHsgcmV0dXJuIGBUb2tlbiAke3RoaXMuX2Rlc2N9YDsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';/**\r\n * @module\r\n * @description\r\n * The `di` module provides dependency injection container services.\r\n */\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nvar metadata_1 = require('./di/metadata');\r\nexports.InjectMetadata = metadata_1.InjectMetadata;\r\nexports.OptionalMetadata = metadata_1.OptionalMetadata;\r\nexports.InjectableMetadata = metadata_1.InjectableMetadata;\r\nexports.SelfMetadata = metadata_1.SelfMetadata;\r\nexports.HostMetadata = metadata_1.HostMetadata;\r\nexports.SkipSelfMetadata = metadata_1.SkipSelfMetadata;\r\nexports.DependencyMetadata = metadata_1.DependencyMetadata;\r\n// we have to reexport * because Dart and TS export two different sets of types\r\n__export(require('./di/decorators'));\r\nvar forward_ref_1 = require('./di/forward_ref');\r\nexports.forwardRef = forward_ref_1.forwardRef;\r\nexports.resolveForwardRef = forward_ref_1.resolveForwardRef;\r\nvar injector_1 = require('./di/injector');\r\nexports.Injector = injector_1.Injector;\r\nvar provider_1 = require('./di/provider');\r\nexports.Binding = provider_1.Binding;\r\nexports.ProviderBuilder = provider_1.ProviderBuilder;\r\nexports.ResolvedFactory = provider_1.ResolvedFactory;\r\nexports.Dependency = provider_1.Dependency;\r\nexports.bind = provider_1.bind;\r\nexports.Provider = provider_1.Provider;\r\nexports.provide = provider_1.provide;\r\nvar key_1 = require('./di/key');\r\nexports.Key = key_1.Key;\r\nvar exceptions_1 = require('./di/exceptions');\r\nexports.NoProviderError = exceptions_1.NoProviderError;\r\nexports.AbstractProviderError = exceptions_1.AbstractProviderError;\r\nexports.CyclicDependencyError = exceptions_1.CyclicDependencyError;\r\nexports.InstantiationError = exceptions_1.InstantiationError;\r\nexports.InvalidProviderError = exceptions_1.InvalidProviderError;\r\nexports.NoAnnotationError = exceptions_1.NoAnnotationError;\r\nexports.OutOfBoundsError = exceptions_1.OutOfBoundsError;\r\nvar opaque_token_1 = require('./di/opaque_token');\r\nexports.OpaqueToken = opaque_token_1.OpaqueToken;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9kaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHOzs7O0FBRUgseUJBUU8sZUFBZSxDQUFDO0FBUHJCLG1EQUFjO0FBQ2QsdURBQWdCO0FBQ2hCLDJEQUFrQjtBQUNsQiwrQ0FBWTtBQUNaLCtDQUFZO0FBQ1osdURBQWdCO0FBQ2hCLDJEQUNxQjtBQUV2QiwrRUFBK0U7QUFDL0UsaUJBQWMsaUJBQWlCLENBQUMsRUFBQTtBQUVoQyw0QkFBMEQsa0JBQWtCLENBQUM7QUFBckUsOENBQVU7QUFBRSw0REFBeUQ7QUFDN0UseUJBQXVCLGVBQWUsQ0FBQztBQUEvQix1Q0FBK0I7QUFDdkMseUJBV08sZUFBZSxDQUFDO0FBVnJCLHFDQUFPO0FBQ1AscURBQWU7QUFFZixxREFBZTtBQUNmLDJDQUFVO0FBQ1YsK0JBQUk7QUFFSix1Q0FBUTtBQUVSLHFDQUNxQjtBQUN2QixvQkFBa0IsVUFBVSxDQUFDO0FBQXJCLHdCQUFxQjtBQUM3QiwyQkFRTyxpQkFBaUIsQ0FBQztBQVB2Qix1REFBZTtBQUNmLG1FQUFxQjtBQUNyQixtRUFBcUI7QUFDckIsNkRBQWtCO0FBQ2xCLGlFQUFvQjtBQUNwQiwyREFBaUI7QUFDakIseURBQ3VCO0FBQ3pCLDZCQUEwQixtQkFBbUIsQ0FBQztBQUF0QyxpREFBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGBkaWAgbW9kdWxlIHByb3ZpZGVzIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGNvbnRhaW5lciBzZXJ2aWNlcy5cbiAqL1xuXG5leHBvcnQge1xuICBJbmplY3RNZXRhZGF0YSxcbiAgT3B0aW9uYWxNZXRhZGF0YSxcbiAgSW5qZWN0YWJsZU1ldGFkYXRhLFxuICBTZWxmTWV0YWRhdGEsXG4gIEhvc3RNZXRhZGF0YSxcbiAgU2tpcFNlbGZNZXRhZGF0YSxcbiAgRGVwZW5kZW5jeU1ldGFkYXRhXG59IGZyb20gJy4vZGkvbWV0YWRhdGEnO1xuXG4vLyB3ZSBoYXZlIHRvIHJlZXhwb3J0ICogYmVjYXVzZSBEYXJ0IGFuZCBUUyBleHBvcnQgdHdvIGRpZmZlcmVudCBzZXRzIG9mIHR5cGVzXG5leHBvcnQgKiBmcm9tICcuL2RpL2RlY29yYXRvcnMnO1xuXG5leHBvcnQge2ZvcndhcmRSZWYsIHJlc29sdmVGb3J3YXJkUmVmLCBGb3J3YXJkUmVmRm59IGZyb20gJy4vZGkvZm9yd2FyZF9yZWYnO1xuZXhwb3J0IHtJbmplY3Rvcn0gZnJvbSAnLi9kaS9pbmplY3Rvcic7XG5leHBvcnQge1xuICBCaW5kaW5nLFxuICBQcm92aWRlckJ1aWxkZXIsXG4gIFJlc29sdmVkQmluZGluZyxcbiAgUmVzb2x2ZWRGYWN0b3J5LFxuICBEZXBlbmRlbmN5LFxuICBiaW5kLFxuXG4gIFByb3ZpZGVyLFxuICBSZXNvbHZlZFByb3ZpZGVyLFxuICBwcm92aWRlXG59IGZyb20gJy4vZGkvcHJvdmlkZXInO1xuZXhwb3J0IHtLZXl9IGZyb20gJy4vZGkva2V5JztcbmV4cG9ydCB7XG4gIE5vUHJvdmlkZXJFcnJvcixcbiAgQWJzdHJhY3RQcm92aWRlckVycm9yLFxuICBDeWNsaWNEZXBlbmRlbmN5RXJyb3IsXG4gIEluc3RhbnRpYXRpb25FcnJvcixcbiAgSW52YWxpZFByb3ZpZGVyRXJyb3IsXG4gIE5vQW5ub3RhdGlvbkVycm9yLFxuICBPdXRPZkJvdW5kc0Vycm9yXG59IGZyb20gJy4vZGkvZXhjZXB0aW9ucyc7XG5leHBvcnQge09wYXF1ZVRva2VufSBmcm9tICcuL2RpL29wYXF1ZV90b2tlbic7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\n/**\r\n * @internal\r\n */\r\nexports.APP_COMPONENT_REF_PROMISE = lang_1.CONST_EXPR(new di_1.OpaqueToken('Promise<ComponentRef>'));\r\n/**\r\n * An {@link angular2/di/OpaqueToken} representing the application root type in the {@link\r\n * Injector}.\r\n *\r\n * ```\r\n * @Component(...)\r\n * class MyApp {\r\n * ...\r\n * }\r\n *\r\n * bootstrap(MyApp).then((appRef:ApplicationRef) {\r\n * expect(appRef.injector.get(appComponentTypeToken)).toEqual(MyApp);\r\n * });\r\n *\r\n * ```\r\n */\r\nexports.APP_COMPONENT = lang_1.CONST_EXPR(new di_1.OpaqueToken('AppComponent'));\r\n/**\r\n * A DI Token representing a unique string id assigned to the application by Angular and used\r\n * primarily for prefixing application attributes and CSS styles when\r\n * {@link ViewEncapsulation#Emulated} is being used.\r\n *\r\n * If you need to avoid randomly generated value to be used as an application id, you can provide\r\n * a custom value via a DI provider <!-- TODO: provider --> configuring the root {@link Injector}\r\n * using this token.\r\n */\r\nexports.APP_ID = lang_1.CONST_EXPR(new di_1.OpaqueToken('AppId'));\r\nfunction _appIdRandomProviderFactory() {\r\n return \"\" + _randomChar() + _randomChar() + _randomChar();\r\n}\r\n/**\r\n * Providers that will generate a random APP_ID_TOKEN.\r\n */\r\nexports.APP_ID_RANDOM_PROVIDER = lang_1.CONST_EXPR(new di_1.Provider(exports.APP_ID, { useFactory: _appIdRandomProviderFactory, deps: [] }));\r\nfunction _randomChar() {\r\n return lang_1.StringWrapper.fromCharCode(97 + lang_1.Math.floor(lang_1.Math.random() * 25));\r\n}\r\n/**\r\n * A function that will be executed when a platform is initialized.\r\n */\r\nexports.PLATFORM_INITIALIZER = lang_1.CONST_EXPR(new di_1.OpaqueToken(\"Platform Initializer\"));\r\n/**\r\n * A function that will be executed when an application is initialized.\r\n */\r\nexports.APP_INITIALIZER = lang_1.CONST_EXPR(new di_1.OpaqueToken(\"Application Initializer\"));\r\n/**\r\n * A token which indicates the root directory of the application\r\n */\r\nexports.PACKAGE_ROOT_URL = lang_1.CONST_EXPR(new di_1.OpaqueToken(\"Application Packages Root URL\"));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25fdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvYXBwbGljYXRpb25fdG9rZW5zLnRzIl0sIm5hbWVzIjpbIl9hcHBJZFJhbmRvbVByb3ZpZGVyRmFjdG9yeSIsIl9yYW5kb21DaGFyIl0sIm1hcHBpbmdzIjoiQUFBQSxtQkFBb0Msc0JBQXNCLENBQUMsQ0FBQTtBQUMzRCxxQkFBOEMsMEJBQTBCLENBQUMsQ0FBQTtBQUV6RTs7R0FFRztBQUNVLGlDQUF5QixHQUFHLGlCQUFVLENBQUMsSUFBSSxnQkFBVyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztBQUU5Rjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDVSxxQkFBYSxHQUFnQixpQkFBVSxDQUFDLElBQUksZ0JBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBRXRGOzs7Ozs7OztHQVFHO0FBQ1UsY0FBTSxHQUFnQixpQkFBVSxDQUFDLElBQUksZ0JBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBRXhFO0lBQ0VBLE1BQU1BLENBQUNBLEtBQUdBLFdBQVdBLEVBQUVBLEdBQUdBLFdBQVdBLEVBQUVBLEdBQUdBLFdBQVdBLEVBQUlBLENBQUNBO0FBQzVEQSxDQUFDQTtBQUVEOztHQUVHO0FBQ1UsOEJBQXNCLEdBQy9CLGlCQUFVLENBQUMsSUFBSSxhQUFRLENBQUMsY0FBTSxFQUFFLEVBQUMsVUFBVSxFQUFFLDJCQUEyQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFFMUY7SUFDRUMsTUFBTUEsQ0FBQ0Esb0JBQWFBLENBQUNBLFlBQVlBLENBQUNBLEVBQUVBLEdBQUdBLFdBQUlBLENBQUNBLEtBQUtBLENBQUNBLFdBQUlBLENBQUNBLE1BQU1BLEVBQUVBLEdBQUdBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO0FBQ3pFQSxDQUFDQTtBQUVEOztHQUVHO0FBQ1UsNEJBQW9CLEdBQzdCLGlCQUFVLENBQUMsSUFBSSxnQkFBVyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztBQUV4RDs7R0FFRztBQUNVLHVCQUFlLEdBQWdCLGlCQUFVLENBQUMsSUFBSSxnQkFBVyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQztBQUVuRzs7R0FFRztBQUNVLHdCQUFnQixHQUN6QixpQkFBVSxDQUFDLElBQUksZ0JBQVcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09wYXF1ZVRva2VuLCBQcm92aWRlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtDT05TVF9FWFBSLCBNYXRoLCBTdHJpbmdXcmFwcGVyfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG4vKipcbiAqICBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEFQUF9DT01QT05FTlRfUkVGX1BST01JU0UgPSBDT05TVF9FWFBSKG5ldyBPcGFxdWVUb2tlbignUHJvbWlzZTxDb21wb25lbnRSZWY+JykpO1xuXG4vKipcbiAqIEFuIHtAbGluayBhbmd1bGFyMi9kaS9PcGFxdWVUb2tlbn0gcmVwcmVzZW50aW5nIHRoZSBhcHBsaWNhdGlvbiByb290IHR5cGUgaW4gdGhlIHtAbGlua1xuICogSW5qZWN0b3J9LlxuICpcbiAqIGBgYFxuICogQENvbXBvbmVudCguLi4pXG4gKiBjbGFzcyBNeUFwcCB7XG4gKiAgIC4uLlxuICogfVxuICpcbiAqIGJvb3RzdHJhcChNeUFwcCkudGhlbigoYXBwUmVmOkFwcGxpY2F0aW9uUmVmKSB7XG4gKiAgIGV4cGVjdChhcHBSZWYuaW5qZWN0b3IuZ2V0KGFwcENvbXBvbmVudFR5cGVUb2tlbikpLnRvRXF1YWwoTXlBcHApO1xuICogfSk7XG4gKlxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBBUFBfQ09NUE9ORU5UOiBPcGFxdWVUb2tlbiA9IENPTlNUX0VYUFIobmV3IE9wYXF1ZVRva2VuKCdBcHBDb21wb25lbnQnKSk7XG5cbi8qKlxuICogQSBESSBUb2tlbiByZXByZXNlbnRpbmcgYSB1bmlxdWUgc3RyaW5nIGlkIGFzc2lnbmVkIHRvIHRoZSBhcHBsaWNhdGlvbiBieSBBbmd1bGFyIGFuZCB1c2VkXG4gKiBwcmltYXJpbHkgZm9yIHByZWZpeGluZyBhcHBsaWNhdGlvbiBhdHRyaWJ1dGVzIGFuZCBDU1Mgc3R5bGVzIHdoZW5cbiAqIHtAbGluayBWaWV3RW5jYXBzdWxhdGlvbiNFbXVsYXRlZH0gaXMgYmVpbmcgdXNlZC5cbiAqXG4gKiBJZiB5b3UgbmVlZCB0byBhdm9pZCByYW5kb21seSBnZW5lcmF0ZWQgdmFsdWUgdG8gYmUgdXNlZCBhcyBhbiBhcHBsaWNhdGlvbiBpZCwgeW91IGNhbiBwcm92aWRlXG4gKiBhIGN1c3RvbSB2YWx1ZSB2aWEgYSBESSBwcm92aWRlciA8IS0tIFRPRE86IHByb3ZpZGVyIC0tPiBjb25maWd1cmluZyB0aGUgcm9vdCB7QGxpbmsgSW5qZWN0b3J9XG4gKiB1c2luZyB0aGlzIHRva2VuLlxuICovXG5leHBvcnQgY29uc3QgQVBQX0lEOiBPcGFxdWVUb2tlbiA9IENPTlNUX0VYUFIobmV3IE9wYXF1ZVRva2VuKCdBcHBJZCcpKTtcblxuZnVuY3Rpb24gX2FwcElkUmFuZG9tUHJvdmlkZXJGYWN0b3J5KCkge1xuICByZXR1cm4gYCR7X3JhbmRvbUNoYXIoKX0ke19yYW5kb21DaGFyKCl9JHtfcmFuZG9tQ2hhcigpfWA7XG59XG5cbi8qKlxuICogUHJvdmlkZXJzIHRoYXQgd2lsbCBnZW5lcmF0ZSBhIHJhbmRvbSBBUFBfSURfVE9LRU4uXG4gKi9cbmV4cG9ydCBjb25zdCBBUFBfSURfUkFORE9NX1BST1ZJREVSOiBQcm92aWRlciA9XG4gICAgQ09OU1RfRVhQUihuZXcgUHJvdmlkZXIoQVBQX0lELCB7dXNlRmFjdG9yeTogX2FwcElkUmFuZG9tUHJvdmlkZXJGYWN0b3J5LCBkZXBzOiBbXX0pKTtcblxuZnVuY3Rpb24gX3JhbmRvbUNoYXIoKTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZ1dyYXBwZXIuZnJvbUNoYXJDb2RlKDk3ICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjUpKTtcbn1cblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB3aGVuIGEgcGxhdGZvcm0gaXMgaW5pdGlhbGl6ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBQTEFURk9STV9JTklUSUFMSVpFUjogT3BhcXVlVG9rZW4gPVxuICAgIENPTlNUX0VYUFIobmV3IE9wYXF1ZVRva2VuKFwiUGxhdGZvcm0gSW5pdGlhbGl6ZXJcIikpO1xuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gYW4gYXBwbGljYXRpb24gaXMgaW5pdGlhbGl6ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBBUFBfSU5JVElBTElaRVI6IE9wYXF1ZVRva2VuID0gQ09OU1RfRVhQUihuZXcgT3BhcXVlVG9rZW4oXCJBcHBsaWNhdGlvbiBJbml0aWFsaXplclwiKSk7XG5cbi8qKlxuICogQSB0b2tlbiB3aGljaCBpbmRpY2F0ZXMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgY29uc3QgUEFDS0FHRV9ST09UX1VSTDogT3BhcXVlVG9rZW4gPVxuICAgIENPTlNUX0VYUFIobmV3IE9wYXF1ZVRva2VuKFwiQXBwbGljYXRpb24gUGFja2FnZXMgUm9vdCBVUkxcIikpO1xuIl19","/* */ \n\"format cjs\";\n'use strict';(function (ViewType) {\r\n // A view that contains the host element with bound component directive.\r\n // Contains a COMPONENT view\r\n ViewType[ViewType[\"HOST\"] = 0] = \"HOST\";\r\n // The view of the component\r\n // Can contain 0 to n EMBEDDED views\r\n ViewType[ViewType[\"COMPONENT\"] = 1] = \"COMPONENT\";\r\n // A view that is embedded into another View via a <template> element\r\n // inside of a COMPONENT view\r\n ViewType[ViewType[\"EMBEDDED\"] = 2] = \"EMBEDDED\";\r\n})(exports.ViewType || (exports.ViewType = {}));\r\nvar ViewType = exports.ViewType;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld190eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL3ZpZXdfdHlwZS50cyJdLCJuYW1lcyI6WyJWaWV3VHlwZSJdLCJtYXBwaW5ncyI6IkFBQUEsV0FBWSxRQUFRO0lBQ2xCQSx3RUFBd0VBO0lBQ3hFQSw0QkFBNEJBO0lBQzVCQSx1Q0FBSUEsQ0FBQUE7SUFDSkEsNEJBQTRCQTtJQUM1QkEsb0NBQW9DQTtJQUNwQ0EsaURBQVNBLENBQUFBO0lBQ1RBLHFFQUFxRUE7SUFDckVBLDZCQUE2QkE7SUFDN0JBLCtDQUFRQSxDQUFBQTtBQUNWQSxDQUFDQSxFQVZXLGdCQUFRLEtBQVIsZ0JBQVEsUUFVbkI7QUFWRCxJQUFZLFFBQVEsR0FBUixnQkFVWCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gVmlld1R5cGUge1xuICAvLyBBIHZpZXcgdGhhdCBjb250YWlucyB0aGUgaG9zdCBlbGVtZW50IHdpdGggYm91bmQgY29tcG9uZW50IGRpcmVjdGl2ZS5cbiAgLy8gQ29udGFpbnMgYSBDT01QT05FTlQgdmlld1xuICBIT1NULFxuICAvLyBUaGUgdmlldyBvZiB0aGUgY29tcG9uZW50XG4gIC8vIENhbiBjb250YWluIDAgdG8gbiBFTUJFRERFRCB2aWV3c1xuICBDT01QT05FTlQsXG4gIC8vIEEgdmlldyB0aGF0IGlzIGVtYmVkZGVkIGludG8gYW5vdGhlciBWaWV3IHZpYSBhIDx0ZW1wbGF0ZT4gZWxlbWVudFxuICAvLyBpbnNpZGUgb2YgYSBDT01QT05FTlQgdmlld1xuICBFTUJFRERFRFxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar view_1 = require('./view');\r\nvar api_1 = require('angular2/src/core/render/api');\r\nvar profile_1 = require('../profile/profile');\r\nvar application_tokens_1 = require('angular2/src/core/application_tokens');\r\nvar view_type_1 = require('./view_type');\r\n/**\r\n * Service exposing low level API for creating, moving and destroying Views.\r\n *\r\n * Most applications should use higher-level abstractions like {@link DynamicComponentLoader} and\r\n * {@link ViewContainerRef} instead.\r\n */\r\nvar AppViewManager = (function () {\r\n function AppViewManager() {\r\n }\r\n return AppViewManager;\r\n})();\r\nexports.AppViewManager = AppViewManager;\r\nvar AppViewManager_ = (function (_super) {\r\n __extends(AppViewManager_, _super);\r\n function AppViewManager_(_renderer, _appId) {\r\n _super.call(this);\r\n this._renderer = _renderer;\r\n this._appId = _appId;\r\n this._nextCompTypeId = 0;\r\n /** @internal */\r\n this._createRootHostViewScope = profile_1.wtfCreateScope('AppViewManager#createRootHostView()');\r\n /** @internal */\r\n this._destroyRootHostViewScope = profile_1.wtfCreateScope('AppViewManager#destroyRootHostView()');\r\n /** @internal */\r\n this._createEmbeddedViewInContainerScope = profile_1.wtfCreateScope('AppViewManager#createEmbeddedViewInContainer()');\r\n /** @internal */\r\n this._createHostViewInContainerScope = profile_1.wtfCreateScope('AppViewManager#createHostViewInContainer()');\r\n /** @internal */\r\n this._destroyViewInContainerScope = profile_1.wtfCreateScope('AppViewMananger#destroyViewInContainer()');\r\n /** @internal */\r\n this._attachViewInContainerScope = profile_1.wtfCreateScope('AppViewMananger#attachViewInContainer()');\r\n /** @internal */\r\n this._detachViewInContainerScope = profile_1.wtfCreateScope('AppViewMananger#detachViewInContainer()');\r\n }\r\n AppViewManager_.prototype.getViewContainer = function (location) {\r\n return location.internalElement.getViewContainerRef();\r\n };\r\n AppViewManager_.prototype.getHostElement = function (hostViewRef) {\r\n var hostView = hostViewRef.internalView;\r\n if (hostView.proto.type !== view_type_1.ViewType.HOST) {\r\n throw new exceptions_1.BaseException('This operation is only allowed on host views');\r\n }\r\n return hostView.appElements[0].ref;\r\n };\r\n AppViewManager_.prototype.getNamedElementInComponentView = function (hostLocation, variableName) {\r\n var appEl = hostLocation.internalElement;\r\n var componentView = appEl.componentView;\r\n if (lang_1.isBlank(componentView)) {\r\n throw new exceptions_1.BaseException(\"There is no component directive at element \" + hostLocation);\r\n }\r\n for (var i = 0; i < componentView.appElements.length; i++) {\r\n var compAppEl = componentView.appElements[i];\r\n if (collection_1.StringMapWrapper.contains(compAppEl.proto.directiveVariableBindings, variableName)) {\r\n return compAppEl.ref;\r\n }\r\n }\r\n throw new exceptions_1.BaseException(\"Could not find variable \" + variableName);\r\n };\r\n AppViewManager_.prototype.getComponent = function (hostLocation) {\r\n return hostLocation.internalElement.getComponent();\r\n };\r\n AppViewManager_.prototype.createRootHostView = function (hostViewFactoryRef, overrideSelector, injector, projectableNodes) {\r\n if (projectableNodes === void 0) { projectableNodes = null; }\r\n var s = this._createRootHostViewScope();\r\n var hostViewFactory = hostViewFactoryRef.internalHostViewFactory;\r\n var selector = lang_1.isPresent(overrideSelector) ? overrideSelector : hostViewFactory.selector;\r\n var view = hostViewFactory.viewFactory(this._renderer, this, null, projectableNodes, selector, null, injector);\r\n return profile_1.wtfLeave(s, view.ref);\r\n };\r\n AppViewManager_.prototype.destroyRootHostView = function (hostViewRef) {\r\n var s = this._destroyRootHostViewScope();\r\n var hostView = hostViewRef.internalView;\r\n hostView.renderer.detachView(view_1.flattenNestedViewRenderNodes(hostView.rootNodesOrAppElements));\r\n hostView.destroy();\r\n profile_1.wtfLeave(s);\r\n };\r\n AppViewManager_.prototype.createEmbeddedViewInContainer = function (viewContainerLocation, index, templateRef) {\r\n var s = this._createEmbeddedViewInContainerScope();\r\n var contextEl = templateRef.elementRef.internalElement;\r\n var view = contextEl.embeddedViewFactory(contextEl.parentView.renderer, this, contextEl, contextEl.parentView.projectableNodes, null, null, null);\r\n this._attachViewToContainer(view, viewContainerLocation.internalElement, index);\r\n return profile_1.wtfLeave(s, view.ref);\r\n };\r\n AppViewManager_.prototype.createHostViewInContainer = function (viewContainerLocation, index, hostViewFactoryRef, dynamicallyCreatedProviders, projectableNodes) {\r\n var s = this._createHostViewInContainerScope();\r\n // TODO(tbosch): This should be specifiable via an additional argument!\r\n var viewContainerLocation_ = viewContainerLocation;\r\n var contextEl = viewContainerLocation_.internalElement;\r\n var hostViewFactory = hostViewFactoryRef.internalHostViewFactory;\r\n var view = hostViewFactory.viewFactory(contextEl.parentView.renderer, contextEl.parentView.viewManager, contextEl, projectableNodes, null, dynamicallyCreatedProviders, null);\r\n this._attachViewToContainer(view, viewContainerLocation_.internalElement, index);\r\n return profile_1.wtfLeave(s, view.ref);\r\n };\r\n AppViewManager_.prototype.destroyViewInContainer = function (viewContainerLocation, index) {\r\n var s = this._destroyViewInContainerScope();\r\n var view = this._detachViewInContainer(viewContainerLocation.internalElement, index);\r\n view.destroy();\r\n profile_1.wtfLeave(s);\r\n };\r\n // TODO(i): refactor detachViewInContainer+attachViewInContainer to moveViewInContainer\r\n AppViewManager_.prototype.attachViewInContainer = function (viewContainerLocation, index, viewRef) {\r\n var viewRef_ = viewRef;\r\n var s = this._attachViewInContainerScope();\r\n this._attachViewToContainer(viewRef_.internalView, viewContainerLocation.internalElement, index);\r\n return profile_1.wtfLeave(s, viewRef_);\r\n };\r\n // TODO(i): refactor detachViewInContainer+attachViewInContainer to moveViewInContainer\r\n AppViewManager_.prototype.detachViewInContainer = function (viewContainerLocation, index) {\r\n var s = this._detachViewInContainerScope();\r\n var view = this._detachViewInContainer(viewContainerLocation.internalElement, index);\r\n return profile_1.wtfLeave(s, view.ref);\r\n };\r\n /** @internal */\r\n AppViewManager_.prototype.onViewCreated = function (view) { };\r\n /** @internal */\r\n AppViewManager_.prototype.onViewDestroyed = function (view) { };\r\n /** @internal */\r\n AppViewManager_.prototype.createRenderComponentType = function (encapsulation, styles) {\r\n return new api_1.RenderComponentType(this._appId + \"-\" + this._nextCompTypeId++, encapsulation, styles);\r\n };\r\n AppViewManager_.prototype._attachViewToContainer = function (view, vcAppElement, viewIndex) {\r\n if (view.proto.type === view_type_1.ViewType.COMPONENT) {\r\n throw new exceptions_1.BaseException(\"Component views can't be moved!\");\r\n }\r\n var nestedViews = vcAppElement.nestedViews;\r\n if (nestedViews == null) {\r\n nestedViews = [];\r\n vcAppElement.nestedViews = nestedViews;\r\n }\r\n collection_1.ListWrapper.insert(nestedViews, viewIndex, view);\r\n var refNode;\r\n if (viewIndex > 0) {\r\n var prevView = nestedViews[viewIndex - 1];\r\n refNode = prevView.rootNodesOrAppElements.length > 0 ?\r\n prevView.rootNodesOrAppElements[prevView.rootNodesOrAppElements.length - 1] :\r\n null;\r\n }\r\n else {\r\n refNode = vcAppElement.nativeElement;\r\n }\r\n if (lang_1.isPresent(refNode)) {\r\n var refRenderNode = view_1.findLastRenderNode(refNode);\r\n view.renderer.attachViewAfter(refRenderNode, view_1.flattenNestedViewRenderNodes(view.rootNodesOrAppElements));\r\n }\r\n // TODO: This is only needed when a view is destroyed,\r\n // not when it is detached for reordering with ng-for...\r\n vcAppElement.parentView.changeDetector.addContentChild(view.changeDetector);\r\n vcAppElement.traverseAndSetQueriesAsDirty();\r\n };\r\n AppViewManager_.prototype._detachViewInContainer = function (vcAppElement, viewIndex) {\r\n var view = collection_1.ListWrapper.removeAt(vcAppElement.nestedViews, viewIndex);\r\n if (view.proto.type === view_type_1.ViewType.COMPONENT) {\r\n throw new exceptions_1.BaseException(\"Component views can't be moved!\");\r\n }\r\n vcAppElement.traverseAndSetQueriesAsDirty();\r\n view.renderer.detachView(view_1.flattenNestedViewRenderNodes(view.rootNodesOrAppElements));\r\n // TODO: This is only needed when a view is destroyed,\r\n // not when it is detached for reordering with ng-for...\r\n view.changeDetector.remove();\r\n return view;\r\n };\r\n AppViewManager_ = __decorate([\r\n di_1.Injectable(),\r\n __param(1, di_1.Inject(application_tokens_1.APP_ID)), \r\n __metadata('design:paramtypes', [api_1.RootRenderer, String])\r\n ], AppViewManager_);\r\n return AppViewManager_;\r\n})(AppViewManager);\r\nexports.AppViewManager_ = AppViewManager_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld19tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL3ZpZXdfbWFuYWdlci50cyJdLCJuYW1lcyI6WyJBcHBWaWV3TWFuYWdlciIsIkFwcFZpZXdNYW5hZ2VyLmNvbnN0cnVjdG9yIiwiQXBwVmlld01hbmFnZXJfIiwiQXBwVmlld01hbmFnZXJfLmNvbnN0cnVjdG9yIiwiQXBwVmlld01hbmFnZXJfLmdldFZpZXdDb250YWluZXIiLCJBcHBWaWV3TWFuYWdlcl8uZ2V0SG9zdEVsZW1lbnQiLCJBcHBWaWV3TWFuYWdlcl8uZ2V0TmFtZWRFbGVtZW50SW5Db21wb25lbnRWaWV3IiwiQXBwVmlld01hbmFnZXJfLmdldENvbXBvbmVudCIsIkFwcFZpZXdNYW5hZ2VyXy5jcmVhdGVSb290SG9zdFZpZXciLCJBcHBWaWV3TWFuYWdlcl8uZGVzdHJveVJvb3RIb3N0VmlldyIsIkFwcFZpZXdNYW5hZ2VyXy5jcmVhdGVFbWJlZGRlZFZpZXdJbkNvbnRhaW5lciIsIkFwcFZpZXdNYW5hZ2VyXy5jcmVhdGVIb3N0Vmlld0luQ29udGFpbmVyIiwiQXBwVmlld01hbmFnZXJfLmRlc3Ryb3lWaWV3SW5Db250YWluZXIiLCJBcHBWaWV3TWFuYWdlcl8uYXR0YWNoVmlld0luQ29udGFpbmVyIiwiQXBwVmlld01hbmFnZXJfLmRldGFjaFZpZXdJbkNvbnRhaW5lciIsIkFwcFZpZXdNYW5hZ2VyXy5vblZpZXdDcmVhdGVkIiwiQXBwVmlld01hbmFnZXJfLm9uVmlld0Rlc3Ryb3llZCIsIkFwcFZpZXdNYW5hZ2VyXy5jcmVhdGVSZW5kZXJDb21wb25lbnRUeXBlIiwiQXBwVmlld01hbmFnZXJfLl9hdHRhY2hWaWV3VG9Db250YWluZXIiLCJBcHBWaWV3TWFuYWdlcl8uX2RldGFjaFZpZXdJbkNvbnRhaW5lciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQkFPTyxzQkFBc0IsQ0FBQyxDQUFBO0FB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QUFDQSxDQUFDQTtZQUMzQ0EsTUFBTUEsSUFBSUEsMEJBQWFBLENBQUNBLGlDQUFpQ0EsQ0FBQ0EsQ0FBQ0E7UUFDN0RBLENBQUNBO1FBQ0RBLFlBQVlBLENBQUNBLDRCQUE0QkEsRUFBRUEsQ0FBQ0E7UUFFNUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLFVBQVVBLENBQUNBLG1DQUE0QkEsQ0FBQ0EsSUFBSUEsQ0FBQ0Esc0JBQXNCQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUVwRkEsc0RBQXNEQTtRQUN0REEsd0RBQXdEQTtRQUN4REEsSUFBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsTUFBTUEsRUFBRUEsQ0FBQ0E7UUFDN0JBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBO0lBQ2RBLENBQUNBO0lBM0xIakI7UUFBQ0EsZUFBVUEsRUFBRUE7UUFJa0NBLFdBQUNBLFdBQU1BLENBQUNBLDJCQUFNQSxDQUFDQSxDQUFBQTs7d0JBd0w3REE7SUFBREEsc0JBQUNBO0FBQURBLENBQUNBLEFBNUxELEVBQ3FDLGNBQWMsRUEyTGxEO0FBM0xZLHVCQUFlLGtCQTJMM0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdG9yLFxuICBJbmplY3QsXG4gIFByb3ZpZGVyLFxuICBJbmplY3RhYmxlLFxuICBSZXNvbHZlZFByb3ZpZGVyLFxuICBmb3J3YXJkUmVmXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7aXNQcmVzZW50LCBpc0JsYW5rLCBpc0FycmF5fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtMaXN0V3JhcHBlciwgU3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7QmFzZUV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9leGNlcHRpb25zJztcbmltcG9ydCB7QXBwVmlldywgSG9zdFZpZXdGYWN0b3J5LCBmbGF0dGVuTmVzdGVkVmlld1JlbmRlck5vZGVzLCBmaW5kTGFzdFJlbmRlck5vZGV9IGZyb20gJy4vdmlldyc7XG5pbXBvcnQge0FwcEVsZW1lbnR9IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQge0VsZW1lbnRSZWYsIEVsZW1lbnRSZWZffSBmcm9tICcuL2VsZW1lbnRfcmVmJztcbmltcG9ydCB7XG4gIEhvc3RWaWV3RmFjdG9yeVJlZixcbiAgSG9zdFZpZXdGYWN0b3J5UmVmXyxcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBIb3N0Vmlld1JlZixcbiAgVmlld1JlZixcbiAgVmlld1JlZl9cbn0gZnJvbSAnLi92aWV3X3JlZic7XG5pbXBvcnQge1ZpZXdDb250YWluZXJSZWZ9IGZyb20gJy4vdmlld19jb250YWluZXJfcmVmJztcbmltcG9ydCB7VGVtcGxhdGVSZWYsIFRlbXBsYXRlUmVmX30gZnJvbSAnLi90ZW1wbGF0ZV9yZWYnO1xuaW1wb3J0IHtSb290UmVuZGVyZXIsIFJlbmRlckNvbXBvbmVudFR5cGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL3JlbmRlci9hcGknO1xuaW1wb3J0IHt3dGZDcmVhdGVTY29wZSwgd3RmTGVhdmUsIFd0ZlNjb3BlRm59IGZyb20gJy4uL3Byb2ZpbGUvcHJvZmlsZSc7XG5pbXBvcnQge0FQUF9JRH0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvYXBwbGljYXRpb25fdG9rZW5zJztcbmltcG9ydCB7Vmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL21ldGFkYXRhL3ZpZXcnO1xuaW1wb3J0IHtWaWV3VHlwZX0gZnJvbSAnLi92aWV3X3R5cGUnO1xuXG4vKipcbiAqIFNlcnZpY2UgZXhwb3NpbmcgbG93IGxldmVsIEFQSSBmb3IgY3JlYXRpbmcsIG1vdmluZyBhbmQgZGVzdHJveWluZyBWaWV3cy5cbiAqXG4gKiBNb3N0IGFwcGxpY2F0aW9ucyBzaG91bGQgdXNlIGhpZ2hlci1sZXZlbCBhYnN0cmFjdGlvbnMgbGlrZSB7QGxpbmsgRHluYW1pY0NvbXBvbmVudExvYWRlcn0gYW5kXG4gKiB7QGxpbmsgVmlld0NvbnRhaW5lclJlZn0gaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcFZpZXdNYW5hZ2VyIHtcbiAgLyoqXG4gICAqIFJldHVybnMgYSB7QGxpbmsgVmlld0NvbnRhaW5lclJlZn0gb2YgdGhlIFZpZXcgQ29udGFpbmVyIGF0IHRoZSBzcGVjaWZpZWQgbG9jYXRpb24uXG4gICAqL1xuICBhYnN0cmFjdCBnZXRWaWV3Q29udGFpbmVyKGxvY2F0aW9uOiBFbGVtZW50UmVmKTogVmlld0NvbnRhaW5lclJlZjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUge0BsaW5rIEVsZW1lbnRSZWZ9IHRoYXQgbWFrZXMgdXAgdGhlIHNwZWNpZmllZCBIb3N0IFZpZXcuXG4gICAqL1xuICBhYnN0cmFjdCBnZXRIb3N0RWxlbWVudChob3N0Vmlld1JlZjogSG9zdFZpZXdSZWYpOiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBTZWFyY2hlcyB0aGUgQ29tcG9uZW50IFZpZXcgb2YgdGhlIENvbXBvbmVudCBzcGVjaWZpZWQgdmlhIGBob3N0TG9jYXRpb25gIGFuZCByZXR1cm5zIHRoZVxuICAgKiB7QGxpbmsgRWxlbWVudFJlZn0gZm9yIHRoZSBFbGVtZW50IGlkZW50aWZpZWQgdmlhIGEgVmFyaWFibGUgTmFtZSBgdmFyaWFibGVOYW1lYC5cbiAgICpcbiAgICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB0aGUgc3BlY2lmaWVkIGBob3N0TG9jYXRpb25gIGlzIG5vdCBhIEhvc3QgRWxlbWVudCBvZiBhIENvbXBvbmVudCwgb3IgaWZcbiAgICogdmFyaWFibGUgYHZhcmlhYmxlTmFtZWAgY291bGRuJ3QgYmUgZm91bmQgaW4gdGhlIENvbXBvbmVudCBWaWV3IG9mIHRoaXMgQ29tcG9uZW50LlxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0TmFtZWRFbGVtZW50SW5Db21wb25lbnRWaWV3KGhvc3RMb2NhdGlvbjogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlTmFtZTogc3RyaW5nKTogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29tcG9uZW50IGluc3RhbmNlIGZvciB0aGUgcHJvdmlkZWQgSG9zdCBFbGVtZW50LlxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0Q29tcG9uZW50KGhvc3RMb2NhdGlvbjogRWxlbWVudFJlZik6IGFueTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBhIENvbXBvbmVudCBhbmQgYXR0YWNoZXMgaXQgdG8gdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGdsb2JhbCBWaWV3XG4gICAqICh1c3VhbGx5IERPTSBEb2N1bWVudCkgdGhhdCBtYXRjaGVzIHRoZSBjb21wb25lbnQncyBzZWxlY3RvciBvciBgb3ZlcnJpZGVTZWxlY3RvcmAuXG4gICAqXG4gICAqIFRoaXMgYXMgYSBsb3ctbGV2ZWwgd2F5IHRvIGJvb3RzdHJhcCBhbiBhcHBsaWNhdGlvbiBhbmQgdXBncmFkZSBhbiBleGlzdGluZyBFbGVtZW50IHRvIGFcbiAgICogSG9zdCBFbGVtZW50LiBNb3N0IGFwcGxpY2F0aW9ucyBzaG91bGQgdXNlIHtAbGluayBEeW5hbWljQ29tcG9uZW50TG9hZGVyI2xvYWRBc1Jvb3R9IGluc3RlYWQuXG4gICAqXG4gICAqIFRoZSBDb21wb25lbnQgYW5kIGl0cyBWaWV3IGFyZSBjcmVhdGVkIGJhc2VkIG9uIHRoZSBgaG9zdFByb3RvQ29tcG9uZW50UmVmYCB3aGljaCBjYW4gYmVcbiAgICogb2J0YWluZWRcbiAgICogYnkgY29tcGlsaW5nIHRoZSBjb21wb25lbnQgd2l0aCB7QGxpbmsgQ29tcGlsZXIjY29tcGlsZUluSG9zdH0uXG4gICAqXG4gICAqIFVzZSB7QGxpbmsgQXBwVmlld01hbmFnZXIjZGVzdHJveVJvb3RIb3N0Vmlld30gdG8gZGVzdHJveSB0aGUgY3JlYXRlZCBDb21wb25lbnQgYW5kIGl0J3MgSG9zdFxuICAgKiBWaWV3LlxuICAgKlxuICAgKiAjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBgYGBcbiAgICogQG5nLkNvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdjaGlsZC1jb21wb25lbnQnXG4gICAqIH0pXG4gICAqIEBuZy5WaWV3KHtcbiAgICogICB0ZW1wbGF0ZTogJ0NoaWxkJ1xuICAgKiB9KVxuICAgKiBjbGFzcyBDaGlsZENvbXBvbmVudCB7XG4gICAqXG4gICAqIH1cbiAgICpcbiAgICogQG5nLkNvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdteS1hcHAnXG4gICAqIH0pXG4gICAqIEBuZy5WaWV3KHtcbiAgICogICB0ZW1wbGF0ZTogYFxuICAgKiAgICAgUGFyZW50ICg8c29tZS1jb21wb25lbnQ+PC9zb21lLWNvbXBvbmVudD4pXG4gICAqICAgYFxuICAgKiB9KVxuICAgKiBjbGFzcyBNeUFwcCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAqICAgdmlld1JlZjogbmcuVmlld1JlZjtcbiAgICpcbiAgICogICBjb25zdHJ1Y3RvcihwdWJsaWMgYXBwVmlld01hbmFnZXI6IG5nLkFwcFZpZXdNYW5hZ2VyLCBjb21waWxlcjogbmcuQ29tcGlsZXIpIHtcbiAgICogICAgIGNvbXBpbGVyLmNvbXBpbGVJbkhvc3QoQ2hpbGRDb21wb25lbnQpLnRoZW4oKHByb3RvVmlldzogbmcuUHJvdG9Db21wb25lbnRSZWYpID0+IHtcbiAgICogICAgICAgdGhpcy52aWV3UmVmID0gYXBwVmlld01hbmFnZXIuY3JlYXRlUm9vdEhvc3RWaWV3KHByb3RvVmlldywgJ3NvbWUtY29tcG9uZW50JywgbnVsbCk7XG4gICAqICAgICB9KVxuICAgKiAgIH1cbiAgICpcbiAgICogICBuZ09uRGVzdHJveSgpIHtcbiAgICogICAgIHRoaXMuYXBwVmlld01hbmFnZXIuZGVzdHJveVJvb3RIb3N0Vmlldyh0aGlzLnZpZXdSZWYpO1xuICAgKiAgICAgdGhpcy52aWV3UmVmID0gbnVsbDtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogbmcuYm9vdHN0cmFwKE15QXBwKTtcbiAgICogYGBgXG4gICAqL1xuICBhYnN0cmFjdCBjcmVhdGVSb290SG9zdFZpZXcoaG9zdFZpZXdGYWN0b3J5UmVmOiBIb3N0Vmlld0ZhY3RvcnlSZWYsIG92ZXJyaWRlU2VsZWN0b3I6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdG9yOiBJbmplY3RvciwgcHJvamVjdGFibGVOb2Rlcz86IGFueVtdW10pOiBIb3N0Vmlld1JlZjtcblxuICAvKipcbiAgICogRGVzdHJveXMgdGhlIEhvc3QgVmlldyBjcmVhdGVkIHZpYSB7QGxpbmsgQXBwVmlld01hbmFnZXIjY3JlYXRlUm9vdEhvc3RWaWV3fS5cbiAgICpcbiAgICogQWxvbmcgd2l0aCB0aGUgSG9zdCBWaWV3LCB0aGUgQ29tcG9uZW50IEluc3RhbmNlIGFzIHdlbGwgYXMgYWxsIG5lc3RlZCBWaWV3IGFuZCBDb21wb25lbnRzIGFyZVxuICAgKiBkZXN0cm95ZWQgYXMgd2VsbC5cbiAgICovXG4gIGFic3RyYWN0IGRlc3Ryb3lSb290SG9zdFZpZXcoaG9zdFZpZXdSZWY6IEhvc3RWaWV3UmVmKTtcblxuICAvKipcbiAgICogSW5zdGFudGlhdGVzIGFuIEVtYmVkZGVkIFZpZXcgYmFzZWQgb24gdGhlIHtAbGluayBUZW1wbGF0ZVJlZiBgdGVtcGxhdGVSZWZgfSBhbmQgaW5zZXJ0cyBpdFxuICAgKiBpbnRvIHRoZSBWaWV3IENvbnRhaW5lciBzcGVjaWZpZWQgdmlhIGB2aWV3Q29udGFpbmVyTG9jYXRpb25gIGF0IHRoZSBzcGVjaWZpZWQgYGluZGV4YC5cbiAgICpcbiAgICogUmV0dXJucyB0aGUge0BsaW5rIFZpZXdSZWZ9IGZvciB0aGUgbmV3bHkgY3JlYXRlZCBWaWV3LlxuICAgKlxuICAgKiBUaGlzIGFzIGEgbG93LWxldmVsIHdheSB0byBjcmVhdGUgYW5kIGF0dGFjaCBhbiBFbWJlZGRlZCB2aWEgdG8gYSBWaWV3IENvbnRhaW5lci4gTW9zdFxuICAgKiBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZWQge0BsaW5rIFZpZXdDb250YWluZXJSZWYjY3JlYXRlRW1iZWRkZWRWaWV3fSBpbnN0ZWFkLlxuICAgKlxuICAgKiBVc2Uge0BsaW5rIEFwcFZpZXdNYW5hZ2VyI2Rlc3Ryb3lWaWV3SW5Db250YWluZXJ9IHRvIGRlc3Ryb3kgdGhlIGNyZWF0ZWQgRW1iZWRkZWQgVmlldy5cbiAgICovXG4gIC8vIFRPRE8oaSk6IHRoaXMgbG93LWxldmVsIHZlcnNpb24gb2YgVmlld0NvbnRhaW5lclJlZiNjcmVhdGVFbWJlZGRlZFZpZXcgZG9lc24ndCBhZGQgYW55dGhpbmcgbmV3XG4gIC8vICAgIHdlIHNob3VsZCBtYWtlIGl0IHByaXZhdGUsIG90aGVyd2lzZSB3ZSBoYXZlIHR3byBhcGlzIHRvIGRvIHRoZSBzYW1lIHRoaW5nLlxuICBhYnN0cmFjdCBjcmVhdGVFbWJlZGRlZFZpZXdJbkNvbnRhaW5lcih2aWV3Q29udGFpbmVyTG9jYXRpb246IEVsZW1lbnRSZWYsIGluZGV4OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZik6IEVtYmVkZGVkVmlld1JlZjtcblxuICAvKipcbiAgICogSW5zdGFudGlhdGVzIGEgc2luZ2xlIHtAbGluayBDb21wb25lbnR9IGFuZCBpbnNlcnRzIGl0cyBIb3N0IFZpZXcgaW50byB0aGUgVmlldyBDb250YWluZXJcbiAgICogZm91bmQgYXQgYHZpZXdDb250YWluZXJMb2NhdGlvbmAuIFdpdGhpbiB0aGUgY29udGFpbmVyLCB0aGUgdmlldyB3aWxsIGJlIGluc2VydGVkIGF0IHBvc2l0aW9uXG4gICAqIHNwZWNpZmllZCB2aWEgYGluZGV4YC5cbiAgICpcbiAgICogVGhlIGNvbXBvbmVudCBpcyBpbnN0YW50aWF0ZWQgdXNpbmcgaXRzIHtAbGluayBQcm90b1ZpZXdSZWYgYHByb3RvVmlld1JlZmB9IHdoaWNoIGNhbiBiZVxuICAgKiBvYnRhaW5lZCB2aWEge0BsaW5rIENvbXBpbGVyI2NvbXBpbGVJbkhvc3R9LlxuICAgKlxuICAgKiBZb3UgY2FuIG9wdGlvbmFsbHkgc3BlY2lmeSBgZHluYW1pY2FsbHlDcmVhdGVkUHJvdmlkZXJzYCwgd2hpY2ggY29uZmlndXJlIHRoZSB7QGxpbmsgSW5qZWN0b3J9XG4gICAqIHRoYXQgd2lsbCBiZSBjcmVhdGVkIGZvciB0aGUgSG9zdCBWaWV3LlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSB7QGxpbmsgSG9zdFZpZXdSZWZ9IG9mIHRoZSBIb3N0IFZpZXcgY3JlYXRlZCBmb3IgdGhlIG5ld2x5IGluc3RhbnRpYXRlZCBDb21wb25lbnQuXG4gICAqXG4gICAqIFVzZSB7QGxpbmsgQXBwVmlld01hbmFnZXIjZGVzdHJveVZpZXdJbkNvbnRhaW5lcn0gdG8gZGVzdHJveSB0aGUgY3JlYXRlZCBIb3N0IFZpZXcuXG4gICAqL1xuICBhYnN0cmFjdCBjcmVhdGVIb3N0Vmlld0luQ29udGFpbmVyKFxuICAgICAgdmlld0NvbnRhaW5lckxvY2F0aW9uOiBFbGVtZW50UmVmLCBpbmRleDogbnVtYmVyLCBob3N0Vmlld0ZhY3RvcnlSZWY6IEhvc3RWaWV3RmFjdG9yeVJlZixcbiAgICAgIGR5bmFtaWNhbGx5Q3JlYXRlZFByb3ZpZGVyczogUmVzb2x2ZWRQcm92aWRlcltdLCBwcm9qZWN0YWJsZU5vZGVzOiBhbnlbXVtdKTogSG9zdFZpZXdSZWY7XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGFuIEVtYmVkZGVkIG9yIEhvc3QgVmlldyBhdHRhY2hlZCB0byBhIFZpZXcgQ29udGFpbmVyIGF0IHRoZSBzcGVjaWZpZWQgYGluZGV4YC5cbiAgICpcbiAgICogVGhlIFZpZXcgQ29udGFpbmVyIGlzIGxvY2F0ZWQgdmlhIGB2aWV3Q29udGFpbmVyTG9jYXRpb25gLlxuICAgKi9cbiAgYWJzdHJhY3QgZGVzdHJveVZpZXdJbkNvbnRhaW5lcih2aWV3Q29udGFpbmVyTG9jYXRpb246IEVsZW1lbnRSZWYsIGluZGV4OiBudW1iZXIpO1xuXG4gIC8qKlxuICAgKlxuICAgKiBTZWUge0BsaW5rIEFwcFZpZXdNYW5hZ2VyI2RldGFjaFZpZXdJbkNvbnRhaW5lcn0uXG4gICAqL1xuICAvLyBUT0RPKGkpOiByZWZhY3RvciBkZXRhY2hWaWV3SW5Db250YWluZXIrYXR0YWNoVmlld0luQ29udGFpbmVyIHRvIG1vdmVWaWV3SW5Db250YWluZXJcbiAgYWJzdHJhY3QgYXR0YWNoVmlld0luQ29udGFpbmVyKHZpZXdDb250YWluZXJMb2NhdGlvbjogRWxlbWVudFJlZiwgaW5kZXg6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZik6IEVtYmVkZGVkVmlld1JlZjtcblxuICAvKipcbiAgICogU2VlIHtAbGluayBBcHBWaWV3TWFuYWdlciNhdHRhY2hWaWV3SW5Db250YWluZXJ9LlxuICAgKi9cbiAgYWJzdHJhY3QgZGV0YWNoVmlld0luQ29udGFpbmVyKHZpZXdDb250YWluZXJMb2NhdGlvbjogRWxlbWVudFJlZiwgaW5kZXg6IG51bWJlcik6IEVtYmVkZGVkVmlld1JlZjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFwcFZpZXdNYW5hZ2VyXyBleHRlbmRzIEFwcFZpZXdNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBfbmV4dENvbXBUeXBlSWQ6IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVuZGVyZXI6IFJvb3RSZW5kZXJlciwgQEluamVjdChBUFBfSUQpIHByaXZhdGUgX2FwcElkOiBzdHJpbmcpIHsgc3VwZXIoKTsgfVxuXG4gIGdldFZpZXdDb250YWluZXIobG9jYXRpb246IEVsZW1lbnRSZWYpOiBWaWV3Q29udGFpbmVyUmVmIHtcbiAgICByZXR1cm4gKDxFbGVtZW50UmVmXz5sb2NhdGlvbikuaW50ZXJuYWxFbGVtZW50LmdldFZpZXdDb250YWluZXJSZWYoKTtcbiAgfVxuXG4gIGdldEhvc3RFbGVtZW50KGhvc3RWaWV3UmVmOiBWaWV3UmVmKTogRWxlbWVudFJlZiB7XG4gICAgdmFyIGhvc3RWaWV3ID0gKDxWaWV3UmVmXz5ob3N0Vmlld1JlZikuaW50ZXJuYWxWaWV3O1xuICAgIGlmIChob3N0Vmlldy5wcm90by50eXBlICE9PSBWaWV3VHlwZS5IT1NUKSB7XG4gICAgICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbignVGhpcyBvcGVyYXRpb24gaXMgb25seSBhbGxvd2VkIG9uIGhvc3Qgdmlld3MnKTtcbiAgICB9XG4gICAgcmV0dXJuIGhvc3RWaWV3LmFwcEVsZW1lbnRzWzBdLnJlZjtcbiAgfVxuXG4gIGdldE5hbWVkRWxlbWVudEluQ29tcG9uZW50Vmlldyhob3N0TG9jYXRpb246IEVsZW1lbnRSZWYsIHZhcmlhYmxlTmFtZTogc3RyaW5nKTogRWxlbWVudFJlZiB7XG4gICAgdmFyIGFwcEVsID0gKDxFbGVtZW50UmVmXz5ob3N0TG9jYXRpb24pLmludGVybmFsRWxlbWVudDtcbiAgICB2YXIgY29tcG9uZW50VmlldyA9IGFwcEVsLmNvbXBvbmVudFZpZXc7XG4gICAgaWYgKGlzQmxhbmsoY29tcG9uZW50VmlldykpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBUaGVyZSBpcyBubyBjb21wb25lbnQgZGlyZWN0aXZlIGF0IGVsZW1lbnQgJHtob3N0TG9jYXRpb259YCk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcG9uZW50Vmlldy5hcHBFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNvbXBBcHBFbCA9IGNvbXBvbmVudFZpZXcuYXBwRWxlbWVudHNbaV07XG4gICAgICBpZiAoU3RyaW5nTWFwV3JhcHBlci5jb250YWlucyhjb21wQXBwRWwucHJvdG8uZGlyZWN0aXZlVmFyaWFibGVCaW5kaW5ncywgdmFyaWFibGVOYW1lKSkge1xuICAgICAgICByZXR1cm4gY29tcEFwcEVsLnJlZjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYENvdWxkIG5vdCBmaW5kIHZhcmlhYmxlICR7dmFyaWFibGVOYW1lfWApO1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50KGhvc3RMb2NhdGlvbjogRWxlbWVudFJlZik6IGFueSB7XG4gICAgcmV0dXJuICg8RWxlbWVudFJlZl8+aG9zdExvY2F0aW9uKS5pbnRlcm5hbEVsZW1lbnQuZ2V0Q29tcG9uZW50KCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9jcmVhdGVSb290SG9zdFZpZXdTY29wZTogV3RmU2NvcGVGbiA9IHd0ZkNyZWF0ZVNjb3BlKCdBcHBWaWV3TWFuYWdlciNjcmVhdGVSb290SG9zdFZpZXcoKScpO1xuXG4gIGNyZWF0ZVJvb3RIb3N0Vmlldyhob3N0Vmlld0ZhY3RvcnlSZWY6IEhvc3RWaWV3RmFjdG9yeVJlZiwgb3ZlcnJpZGVTZWxlY3Rvcjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLCBwcm9qZWN0YWJsZU5vZGVzOiBhbnlbXVtdID0gbnVsbCk6IEhvc3RWaWV3UmVmIHtcbiAgICB2YXIgcyA9IHRoaXMuX2NyZWF0ZVJvb3RIb3N0Vmlld1Njb3BlKCk7XG4gICAgdmFyIGhvc3RWaWV3RmFjdG9yeSA9ICg8SG9zdFZpZXdGYWN0b3J5UmVmXz5ob3N0Vmlld0ZhY3RvcnlSZWYpLmludGVybmFsSG9zdFZpZXdGYWN0b3J5O1xuICAgIHZhciBzZWxlY3RvciA9IGlzUHJlc2VudChvdmVycmlkZVNlbGVjdG9yKSA/IG92ZXJyaWRlU2VsZWN0b3IgOiBob3N0Vmlld0ZhY3Rvcnkuc2VsZWN0b3I7XG4gICAgdmFyIHZpZXcgPSBob3N0Vmlld0ZhY3Rvcnkudmlld0ZhY3RvcnkodGhpcy5fcmVuZGVyZXIsIHRoaXMsIG51bGwsIHByb2plY3RhYmxlTm9kZXMsIHNlbGVjdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIGluamVjdG9yKTtcbiAgICByZXR1cm4gd3RmTGVhdmUocywgdmlldy5yZWYpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZGVzdHJveVJvb3RIb3N0Vmlld1Njb3BlOiBXdGZTY29wZUZuID0gd3RmQ3JlYXRlU2NvcGUoJ0FwcFZpZXdNYW5hZ2VyI2Rlc3Ryb3lSb290SG9zdFZpZXcoKScpO1xuXG4gIGRlc3Ryb3lSb290SG9zdFZpZXcoaG9zdFZpZXdSZWY6IFZpZXdSZWYpIHtcbiAgICB2YXIgcyA9IHRoaXMuX2Rlc3Ryb3lSb290SG9zdFZpZXdTY29wZSgpO1xuICAgIHZhciBob3N0VmlldyA9ICg8Vmlld1JlZl8+aG9zdFZpZXdSZWYpLmludGVybmFsVmlldztcbiAgICBob3N0Vmlldy5yZW5kZXJlci5kZXRhY2hWaWV3KGZsYXR0ZW5OZXN0ZWRWaWV3UmVuZGVyTm9kZXMoaG9zdFZpZXcucm9vdE5vZGVzT3JBcHBFbGVtZW50cykpO1xuICAgIGhvc3RWaWV3LmRlc3Ryb3koKTtcbiAgICB3dGZMZWF2ZShzKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2NyZWF0ZUVtYmVkZGVkVmlld0luQ29udGFpbmVyU2NvcGU6IFd0ZlNjb3BlRm4gPVxuICAgICAgd3RmQ3JlYXRlU2NvcGUoJ0FwcFZpZXdNYW5hZ2VyI2NyZWF0ZUVtYmVkZGVkVmlld0luQ29udGFpbmVyKCknKTtcblxuICBjcmVhdGVFbWJlZGRlZFZpZXdJbkNvbnRhaW5lcih2aWV3Q29udGFpbmVyTG9jYXRpb246IEVsZW1lbnRSZWYsIGluZGV4OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZik6IEVtYmVkZGVkVmlld1JlZiB7XG4gICAgdmFyIHMgPSB0aGlzLl9jcmVhdGVFbWJlZGRlZFZpZXdJbkNvbnRhaW5lclNjb3BlKCk7XG4gICAgdmFyIGNvbnRleHRFbCA9ICg8VGVtcGxhdGVSZWZfPnRlbXBsYXRlUmVmKS5lbGVtZW50UmVmLmludGVybmFsRWxlbWVudDtcbiAgICB2YXIgdmlldzogQXBwVmlldyA9XG4gICAgICAgIGNvbnRleHRFbC5lbWJlZGRlZFZpZXdGYWN0b3J5KGNvbnRleHRFbC5wYXJlbnRWaWV3LnJlbmRlcmVyLCB0aGlzLCBjb250ZXh0RWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRFbC5wYXJlbnRWaWV3LnByb2plY3RhYmxlTm9kZXMsIG51bGwsIG51bGwsIG51bGwpO1xuICAgIHRoaXMuX2F0dGFjaFZpZXdUb0NvbnRhaW5lcih2aWV3LCAoPEVsZW1lbnRSZWZfPnZpZXdDb250YWluZXJMb2NhdGlvbikuaW50ZXJuYWxFbGVtZW50LCBpbmRleCk7XG4gICAgcmV0dXJuIHd0ZkxlYXZlKHMsIHZpZXcucmVmKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2NyZWF0ZUhvc3RWaWV3SW5Db250YWluZXJTY29wZTogV3RmU2NvcGVGbiA9XG4gICAgICB3dGZDcmVhdGVTY29wZSgnQXBwVmlld01hbmFnZXIjY3JlYXRlSG9zdFZpZXdJbkNvbnRhaW5lcigpJyk7XG5cbiAgY3JlYXRlSG9zdFZpZXdJbkNvbnRhaW5lcih2aWV3Q29udGFpbmVyTG9jYXRpb246IEVsZW1lbnRSZWYsIGluZGV4OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdFZpZXdGYWN0b3J5UmVmOiBIb3N0Vmlld0ZhY3RvcnlSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHluYW1pY2FsbHlDcmVhdGVkUHJvdmlkZXJzOiBSZXNvbHZlZFByb3ZpZGVyW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdGFibGVOb2RlczogYW55W11bXSk6IEhvc3RWaWV3UmVmIHtcbiAgICB2YXIgcyA9IHRoaXMuX2NyZWF0ZUhvc3RWaWV3SW5Db250YWluZXJTY29wZSgpO1xuICAgIC8vIFRPRE8odGJvc2NoKTogVGhpcyBzaG91bGQgYmUgc3BlY2lmaWFibGUgdmlhIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQhXG4gICAgdmFyIHZpZXdDb250YWluZXJMb2NhdGlvbl8gPSA8RWxlbWVudFJlZl8+dmlld0NvbnRhaW5lckxvY2F0aW9uO1xuICAgIHZhciBjb250ZXh0RWwgPSB2aWV3Q29udGFpbmVyTG9jYXRpb25fLmludGVybmFsRWxlbWVudDtcbiAgICB2YXIgaG9zdFZpZXdGYWN0b3J5ID0gKDxIb3N0Vmlld0ZhY3RvcnlSZWZfPmhvc3RWaWV3RmFjdG9yeVJlZikuaW50ZXJuYWxIb3N0Vmlld0ZhY3Rvcnk7XG4gICAgdmFyIHZpZXcgPSBob3N0Vmlld0ZhY3Rvcnkudmlld0ZhY3RvcnkoXG4gICAgICAgIGNvbnRleHRFbC5wYXJlbnRWaWV3LnJlbmRlcmVyLCBjb250ZXh0RWwucGFyZW50Vmlldy52aWV3TWFuYWdlciwgY29udGV4dEVsLFxuICAgICAgICBwcm9qZWN0YWJsZU5vZGVzLCBudWxsLCBkeW5hbWljYWxseUNyZWF0ZWRQcm92aWRlcnMsIG51bGwpO1xuICAgIHRoaXMuX2F0dGFjaFZpZXdUb0NvbnRhaW5lcih2aWV3LCB2aWV3Q29udGFpbmVyTG9jYXRpb25fLmludGVybmFsRWxlbWVudCwgaW5kZXgpO1xuICAgIHJldHVybiB3dGZMZWF2ZShzLCB2aWV3LnJlZik7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9kZXN0cm95Vmlld0luQ29udGFpbmVyU2NvcGUgPSB3dGZDcmVhdGVTY29wZSgnQXBwVmlld01hbmFuZ2VyI2Rlc3Ryb3lWaWV3SW5Db250YWluZXIoKScpO1xuXG4gIGRlc3Ryb3lWaWV3SW5Db250YWluZXIodmlld0NvbnRhaW5lckxvY2F0aW9uOiBFbGVtZW50UmVmLCBpbmRleDogbnVtYmVyKSB7XG4gICAgdmFyIHMgPSB0aGlzLl9kZXN0cm95Vmlld0luQ29udGFpbmVyU2NvcGUoKTtcbiAgICB2YXIgdmlldyA9XG4gICAgICAgIHRoaXMuX2RldGFjaFZpZXdJbkNvbnRhaW5lcigoPEVsZW1lbnRSZWZfPnZpZXdDb250YWluZXJMb2NhdGlvbikuaW50ZXJuYWxFbGVtZW50LCBpbmRleCk7XG4gICAgdmlldy5kZXN0cm95KCk7XG4gICAgd3RmTGVhdmUocyk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9hdHRhY2hWaWV3SW5Db250YWluZXJTY29wZSA9IHd0ZkNyZWF0ZVNjb3BlKCdBcHBWaWV3TWFuYW5nZXIjYXR0YWNoVmlld0luQ29udGFpbmVyKCknKTtcblxuICAvLyBUT0RPKGkpOiByZWZhY3RvciBkZXRhY2hWaWV3SW5Db250YWluZXIrYXR0YWNoVmlld0luQ29udGFpbmVyIHRvIG1vdmVWaWV3SW5Db250YWluZXJcbiAgYXR0YWNoVmlld0luQ29udGFpbmVyKHZpZXdDb250YWluZXJMb2NhdGlvbjogRWxlbWVudFJlZiwgaW5kZXg6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdSZWY6IFZpZXdSZWYpOiBFbWJlZGRlZFZpZXdSZWYge1xuICAgIHZhciB2aWV3UmVmXyA9IDxWaWV3UmVmXz52aWV3UmVmO1xuICAgIHZhciBzID0gdGhpcy5fYXR0YWNoVmlld0luQ29udGFpbmVyU2NvcGUoKTtcbiAgICB0aGlzLl9hdHRhY2hWaWV3VG9Db250YWluZXIodmlld1JlZl8uaW50ZXJuYWxWaWV3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPEVsZW1lbnRSZWZfPnZpZXdDb250YWluZXJMb2NhdGlvbikuaW50ZXJuYWxFbGVtZW50LCBpbmRleCk7XG4gICAgcmV0dXJuIHd0ZkxlYXZlKHMsIHZpZXdSZWZfKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2RldGFjaFZpZXdJbkNvbnRhaW5lclNjb3BlID0gd3RmQ3JlYXRlU2NvcGUoJ0FwcFZpZXdNYW5hbmdlciNkZXRhY2hWaWV3SW5Db250YWluZXIoKScpO1xuXG4gIC8vIFRPRE8oaSk6IHJlZmFjdG9yIGRldGFjaFZpZXdJbkNvbnRhaW5lcithdHRhY2hWaWV3SW5Db250YWluZXIgdG8gbW92ZVZpZXdJbkNvbnRhaW5lclxuICBkZXRhY2hWaWV3SW5Db250YWluZXIodmlld0NvbnRhaW5lckxvY2F0aW9uOiBFbGVtZW50UmVmLCBpbmRleDogbnVtYmVyKTogRW1iZWRkZWRWaWV3UmVmIHtcbiAgICB2YXIgcyA9IHRoaXMuX2RldGFjaFZpZXdJbkNvbnRhaW5lclNjb3BlKCk7XG4gICAgdmFyIHZpZXcgPVxuICAgICAgICB0aGlzLl9kZXRhY2hWaWV3SW5Db250YWluZXIoKDxFbGVtZW50UmVmXz52aWV3Q29udGFpbmVyTG9jYXRpb24pLmludGVybmFsRWxlbWVudCwgaW5kZXgpO1xuICAgIHJldHVybiB3dGZMZWF2ZShzLCB2aWV3LnJlZik7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG9uVmlld0NyZWF0ZWQodmlldzogQXBwVmlldykge31cblxuICAvKiogQGludGVybmFsICovXG4gIG9uVmlld0Rlc3Ryb3llZCh2aWV3OiBBcHBWaWV3KSB7fVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgY3JlYXRlUmVuZGVyQ29tcG9uZW50VHlwZShlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IEFycmF5PHN0cmluZyB8IGFueVtdPik6IFJlbmRlckNvbXBvbmVudFR5cGUge1xuICAgIHJldHVybiBuZXcgUmVuZGVyQ29tcG9uZW50VHlwZShgJHt0aGlzLl9hcHBJZH0tJHt0aGlzLl9uZXh0Q29tcFR5cGVJZCsrfWAsIGVuY2Fwc3VsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlcyk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hWaWV3VG9Db250YWluZXIodmlldzogQXBwVmlldywgdmNBcHBFbGVtZW50OiBBcHBFbGVtZW50LCB2aWV3SW5kZXg6IG51bWJlcikge1xuICAgIGlmICh2aWV3LnByb3RvLnR5cGUgPT09IFZpZXdUeXBlLkNPTVBPTkVOVCkge1xuICAgICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oYENvbXBvbmVudCB2aWV3cyBjYW4ndCBiZSBtb3ZlZCFgKTtcbiAgICB9XG4gICAgdmFyIG5lc3RlZFZpZXdzID0gdmNBcHBFbGVtZW50Lm5lc3RlZFZpZXdzO1xuICAgIGlmIChuZXN0ZWRWaWV3cyA9PSBudWxsKSB7XG4gICAgICBuZXN0ZWRWaWV3cyA9IFtdO1xuICAgICAgdmNBcHBFbGVtZW50Lm5lc3RlZFZpZXdzID0gbmVzdGVkVmlld3M7XG4gICAgfVxuICAgIExpc3RXcmFwcGVyLmluc2VydChuZXN0ZWRWaWV3cywgdmlld0luZGV4LCB2aWV3KTtcbiAgICB2YXIgcmVmTm9kZTtcbiAgICBpZiAodmlld0luZGV4ID4gMCkge1xuICAgICAgdmFyIHByZXZWaWV3ID0gbmVzdGVkVmlld3Nbdmlld0luZGV4IC0gMV07XG4gICAgICByZWZOb2RlID0gcHJldlZpZXcucm9vdE5vZGVzT3JBcHBFbGVtZW50cy5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgICAgICAgcHJldlZpZXcucm9vdE5vZGVzT3JBcHBFbGVtZW50c1twcmV2Vmlldy5yb290Tm9kZXNPckFwcEVsZW1lbnRzLmxlbmd0aCAtIDFdIDpcbiAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVmTm9kZSA9IHZjQXBwRWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHJlZk5vZGUpKSB7XG4gICAgICB2YXIgcmVmUmVuZGVyTm9kZSA9IGZpbmRMYXN0UmVuZGVyTm9kZShyZWZOb2RlKTtcbiAgICAgIHZpZXcucmVuZGVyZXIuYXR0YWNoVmlld0FmdGVyKHJlZlJlbmRlck5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGF0dGVuTmVzdGVkVmlld1JlbmRlck5vZGVzKHZpZXcucm9vdE5vZGVzT3JBcHBFbGVtZW50cykpO1xuICAgIH1cbiAgICAvLyBUT0RPOiBUaGlzIGlzIG9ubHkgbmVlZGVkIHdoZW4gYSB2aWV3IGlzIGRlc3Ryb3llZCxcbiAgICAvLyBub3Qgd2hlbiBpdCBpcyBkZXRhY2hlZCBmb3IgcmVvcmRlcmluZyB3aXRoIG5nLWZvci4uLlxuICAgIHZjQXBwRWxlbWVudC5wYXJlbnRWaWV3LmNoYW5nZURldGVjdG9yLmFkZENvbnRlbnRDaGlsZCh2aWV3LmNoYW5nZURldGVjdG9yKTtcbiAgICB2Y0FwcEVsZW1lbnQudHJhdmVyc2VBbmRTZXRRdWVyaWVzQXNEaXJ0eSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGV0YWNoVmlld0luQ29udGFpbmVyKHZjQXBwRWxlbWVudDogQXBwRWxlbWVudCwgdmlld0luZGV4OiBudW1iZXIpOiBBcHBWaWV3IHtcbiAgICB2YXIgdmlldyA9IExpc3RXcmFwcGVyLnJlbW92ZUF0KHZjQXBwRWxlbWVudC5uZXN0ZWRWaWV3cywgdmlld0luZGV4KTtcbiAgICBpZiAodmlldy5wcm90by50eXBlID09PSBWaWV3VHlwZS5DT01QT05FTlQpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKGBDb21wb25lbnQgdmlld3MgY2FuJ3QgYmUgbW92ZWQhYCk7XG4gICAgfVxuICAgIHZjQXBwRWxlbWVudC50cmF2ZXJzZUFuZFNldFF1ZXJpZXNBc0RpcnR5KCk7XG5cbiAgICB2aWV3LnJlbmRlcmVyLmRldGFjaFZpZXcoZmxhdHRlbk5lc3RlZFZpZXdSZW5kZXJOb2Rlcyh2aWV3LnJvb3ROb2Rlc09yQXBwRWxlbWVudHMpKTtcblxuICAgIC8vIFRPRE86IFRoaXMgaXMgb25seSBuZWVkZWQgd2hlbiBhIHZpZXcgaXMgZGVzdHJveWVkLFxuICAgIC8vIG5vdCB3aGVuIGl0IGlzIGRldGFjaGVkIGZvciByZW9yZGVyaW5nIHdpdGggbmctZm9yLi4uXG4gICAgdmlldy5jaGFuZ2VEZXRlY3Rvci5yZW1vdmUoKTtcbiAgICByZXR1cm4gdmlldztcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar di_1 = require('angular2/src/core/di');\r\nvar compiler_1 = require('./compiler');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar view_manager_1 = require('angular2/src/core/linker/view_manager');\r\n/**\r\n * Represents an instance of a Component created via {@link DynamicComponentLoader}.\r\n *\r\n * `ComponentRef` provides access to the Component Instance as well other objects related to this\r\n * Component Instance and allows you to destroy the Component Instance via the {@link #dispose}\r\n * method.\r\n */\r\nvar ComponentRef = (function () {\r\n function ComponentRef() {\r\n }\r\n Object.defineProperty(ComponentRef.prototype, \"hostView\", {\r\n /**\r\n * The {@link ViewRef} of the Host View of this Component instance.\r\n */\r\n get: function () {\r\n return this.location.internalElement.parentView.ref;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ComponentRef.prototype, \"hostComponent\", {\r\n /**\r\n * @internal\r\n *\r\n * The instance of the component.\r\n *\r\n * TODO(i): this api should be removed\r\n */\r\n get: function () { return this.instance; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ComponentRef;\r\n})();\r\nexports.ComponentRef = ComponentRef;\r\nvar ComponentRef_ = (function (_super) {\r\n __extends(ComponentRef_, _super);\r\n /**\r\n * TODO(i): refactor into public/private fields\r\n */\r\n function ComponentRef_(location, instance, componentType, injector, _dispose) {\r\n _super.call(this);\r\n this._dispose = _dispose;\r\n this.location = location;\r\n this.instance = instance;\r\n this.componentType = componentType;\r\n this.injector = injector;\r\n }\r\n Object.defineProperty(ComponentRef_.prototype, \"hostComponentType\", {\r\n /**\r\n * @internal\r\n *\r\n * Returns the type of this Component instance.\r\n *\r\n * TODO(i): this api should be removed\r\n */\r\n get: function () { return this.componentType; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ComponentRef_.prototype.dispose = function () { this._dispose(); };\r\n return ComponentRef_;\r\n})(ComponentRef);\r\nexports.ComponentRef_ = ComponentRef_;\r\n/**\r\n * Service for instantiating a Component and attaching it to a View at a specified location.\r\n */\r\nvar DynamicComponentLoader = (function () {\r\n function DynamicComponentLoader() {\r\n }\r\n return DynamicComponentLoader;\r\n})();\r\nexports.DynamicComponentLoader = DynamicComponentLoader;\r\nvar DynamicComponentLoader_ = (function (_super) {\r\n __extends(DynamicComponentLoader_, _super);\r\n function DynamicComponentLoader_(_compiler, _viewManager) {\r\n _super.call(this);\r\n this._compiler = _compiler;\r\n this._viewManager = _viewManager;\r\n }\r\n DynamicComponentLoader_.prototype.loadAsRoot = function (type, overrideSelector, injector, onDispose, projectableNodes) {\r\n var _this = this;\r\n return this._compiler.compileInHost(type).then(function (hostProtoViewRef) {\r\n var hostViewRef = _this._viewManager.createRootHostView(hostProtoViewRef, overrideSelector, injector, projectableNodes);\r\n var newLocation = _this._viewManager.getHostElement(hostViewRef);\r\n var component = _this._viewManager.getComponent(newLocation);\r\n var dispose = function () {\r\n if (lang_1.isPresent(onDispose)) {\r\n onDispose();\r\n }\r\n _this._viewManager.destroyRootHostView(hostViewRef);\r\n };\r\n return new ComponentRef_(newLocation, component, type, injector, dispose);\r\n });\r\n };\r\n DynamicComponentLoader_.prototype.loadIntoLocation = function (type, hostLocation, anchorName, providers, projectableNodes) {\r\n if (providers === void 0) { providers = null; }\r\n if (projectableNodes === void 0) { projectableNodes = null; }\r\n return this.loadNextToLocation(type, this._viewManager.getNamedElementInComponentView(hostLocation, anchorName), providers, projectableNodes);\r\n };\r\n DynamicComponentLoader_.prototype.loadNextToLocation = function (type, location, providers, projectableNodes) {\r\n var _this = this;\r\n if (providers === void 0) { providers = null; }\r\n if (projectableNodes === void 0) { projectableNodes = null; }\r\n return this._compiler.compileInHost(type).then(function (hostProtoViewRef) {\r\n var viewContainer = _this._viewManager.getViewContainer(location);\r\n var hostViewRef = viewContainer.createHostView(hostProtoViewRef, viewContainer.length, providers, projectableNodes);\r\n var newLocation = _this._viewManager.getHostElement(hostViewRef);\r\n var component = _this._viewManager.getComponent(newLocation);\r\n var dispose = function () {\r\n var index = viewContainer.indexOf(hostViewRef);\r\n if (!hostViewRef.destroyed && index !== -1) {\r\n viewContainer.remove(index);\r\n }\r\n };\r\n return new ComponentRef_(newLocation, component, type, null, dispose);\r\n });\r\n };\r\n DynamicComponentLoader_ = __decorate([\r\n di_1.Injectable(), \r\n __metadata('design:paramtypes', [compiler_1.Compiler, view_manager_1.AppViewManager])\r\n ], DynamicComponentLoader_);\r\n return DynamicComponentLoader_;\r\n})(DynamicComponentLoader);\r\nexports.DynamicComponentLoader_ = DynamicComponentLoader_;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY19jb21wb25lbnRfbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvbGlua2VyL2R5bmFtaWNfY29tcG9uZW50X2xvYWRlci50cyJdLCJuYW1lcyI6WyJDb21wb25lbnRSZWYiLCJDb21wb25lbnRSZWYuY29uc3RydWN0b3IiLCJDb21wb25lbnRSZWYuaG9zdFZpZXciLCJDb21wb25lbnRSZWYuaG9zdENvbXBvbmVudCIsIkNvbXBvbmVudFJlZl8iLCJDb21wb25lbnRSZWZfLmNvbnN0cnVjdG9yIiwiQ29tcG9uZW50UmVmXy5ob3N0Q29tcG9uZW50VHlwZSIsIkNvbXBvbmVudFJlZl8uZGlzcG9zZSIsIkR5bmFtaWNDb21wb25lbnRMb2FkZXIiLCJEeW5hbWljQ29tcG9uZW50TG9hZGVyLmNvbnN0cnVjdG9yIiwiRHluYW1pY0NvbXBvbmVudExvYWRlcl8iLCJEeW5hbWljQ29tcG9uZW50TG9hZGVyXy5jb25zdHJ1Y3RvciIsIkR5bmFtaWNDb21wb25lbnRMb2FkZXJfLmxvYWRBc1Jvb3QiLCJEeW5hbWljQ29tcG9uZW50TG9hZGVyXy5sb2FkSW50b0xvY2F0aW9uIiwiRHluYW1pY0NvbXBvbmVudExvYWRlcl8ubG9hZE5leHRUb0xvY2F0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLG1CQUE2RSxzQkFBc0IsQ0FBQyxDQUFBO0FBQ3BHLHlCQUF1QixZQUFZLENBQUMsQ0FBQTtBQUNwQyxxQkFBaUQsMEJBQTBCLENBQUMsQ0FBQTtBQUM1RSw2QkFBNkIsdUNBQXVDLENBQUMsQ0FBQTtBQUlyRTs7Ozs7O0dBTUc7QUFDSDtJQUFBQTtJQWdEQUMsQ0FBQ0E7SUFuQkNELHNCQUFJQSxrQ0FBUUE7UUFIWkE7O1dBRUdBO2FBQ0hBO1lBQ0VFLE1BQU1BLENBQWVBLElBQUlBLENBQUNBLFFBQVNBLENBQUNBLGVBQWVBLENBQUNBLFVBQVVBLENBQUNBLEdBQUdBLENBQUNBO1FBQ3JFQSxD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Q0EsQ0FBQ0E7WUFDaEVBLElBQUlBLFNBQVNBLEdBQUdBLEtBQUlBLENBQUNBLFlBQVlBLENBQUNBLFlBQVlBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBO1lBRTVEQSxJQUFJQSxPQUFPQSxHQUFHQTtnQkFDWkEsSUFBSUEsS0FBS0EsR0FBR0EsYUFBYUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsV0FBV0EsQ0FBQ0EsQ0FBQ0E7Z0JBQy9DQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxXQUFXQSxDQUFDQSxTQUFTQSxJQUFJQSxLQUFLQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtvQkFDM0NBLGFBQWFBLENBQUNBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO2dCQUM5QkEsQ0FBQ0E7WUFDSEEsQ0FBQ0EsQ0FBQ0E7WUFDRkEsTUFBTUEsQ0FBQ0EsSUFBSUEsYUFBYUEsQ0FBQ0EsV0FBV0EsRUFBRUEsU0FBU0EsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsT0FBT0EsQ0FBQ0EsQ0FBQ0E7UUFDeEVBLENBQUNBLENBQUNBLENBQUNBO0lBQ0xBLENBQUNBO0lBL0NISjtRQUFDQSxlQUFVQSxFQUFFQTs7Z0NBZ0RaQTtJQUFEQSw4QkFBQ0E7QUFBREEsQ0FBQ0EsQUFoREQsRUFDNkMsc0JBQXNCLEVBK0NsRTtBQS9DWSwrQkFBdUIsMEJBK0NuQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtLZXksIEluamVjdG9yLCBSZXNvbHZlZFByb3ZpZGVyLCBQcm92aWRlciwgcHJvdmlkZSwgSW5qZWN0YWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2NvcmUvZGknO1xuaW1wb3J0IHtDb21waWxlcn0gZnJvbSAnLi9jb21waWxlcic7XG5pbXBvcnQge2lzVHlwZSwgVHlwZSwgc3RyaW5naWZ5LCBpc1ByZXNlbnR9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0FwcFZpZXdNYW5hZ2VyfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvdmlld19tYW5hZ2VyJztcbmltcG9ydCB7RWxlbWVudFJlZiwgRWxlbWVudFJlZl99IGZyb20gJy4vZWxlbWVudF9yZWYnO1xuaW1wb3J0IHtIb3N0Vmlld1JlZn0gZnJvbSAnLi92aWV3X3JlZic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBpbnN0YW5jZSBvZiBhIENvbXBvbmVudCBjcmVhdGVkIHZpYSB7QGxpbmsgRHluYW1pY0NvbXBvbmVudExvYWRlcn0uXG4gKlxuICogYENvbXBvbmVudFJlZmAgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBDb21wb25lbnQgSW5zdGFuY2UgYXMgd2VsbCBvdGhlciBvYmplY3RzIHJlbGF0ZWQgdG8gdGhpc1xuICogQ29tcG9uZW50IEluc3RhbmNlIGFuZCBhbGxvd3MgeW91IHRvIGRlc3Ryb3kgdGhlIENvbXBvbmVudCBJbnN0YW5jZSB2aWEgdGhlIHtAbGluayAjZGlzcG9zZX1cbiAqIG1ldGhvZC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXBvbmVudFJlZiB7XG4gIC8qKlxuICAgKiBUaGUgaW5qZWN0b3IgcHJvdmlkZWQge0BsaW5rIER5bmFtaWNDb21wb25lbnRMb2FkZXIjbG9hZEFzUm9vdH0uXG4gICAqXG4gICAqIFRPRE8oaSk6IHRoaXMgYXBpIGlzIHVzZWxlc3MgYW5kIHNob3VsZCBiZSByZXBsYWNlZCBieSBhbiBpbmplY3RvciByZXRyaWV2ZWQgZnJvbVxuICAgKiAgICAgdGhlIEhvc3RFbGVtZW50UmVmLCB3aGljaCBpcyBjdXJyZW50bHkgbm90IHBvc3NpYmxlLlxuICAgKi9cbiAgaW5qZWN0b3I6IEluamVjdG9yO1xuXG4gIC8qKlxuICAgKiBMb2NhdGlvbiBvZiB0aGUgSG9zdCBFbGVtZW50IG9mIHRoaXMgQ29tcG9uZW50IEluc3RhbmNlLlxuICAgKi9cbiAgbG9jYXRpb246IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSBvZiB0aGUgQ29tcG9uZW50LlxuICAgKi9cbiAgaW5zdGFuY2U6IGFueTtcblxuICAvKipcbiAgICogVGhlIHVzZXIgZGVmaW5lZCBjb21wb25lbnQgdHlwZSwgcmVwcmVzZW50ZWQgdmlhIHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbi5cbiAgICpcbiAgICogPCEtLSBUT0RPOiBjdXN0b21pemUgd29yZGluZyBmb3IgRGFydCBkb2NzIC0tPlxuICAgKi9cbiAgY29tcG9uZW50VHlwZTogVHlwZTtcblxuICAvKipcbiAgICogVGhlIHtAbGluayBWaWV3UmVmfSBvZiB0aGUgSG9zdCBWaWV3IG9mIHRoaXMgQ29tcG9uZW50IGluc3RhbmNlLlxuICAgKi9cbiAgZ2V0IGhvc3RWaWV3KCk6IEhvc3RWaWV3UmVmIHtcbiAgICByZXR1cm4gKDxFbGVtZW50UmVmXz50aGlzLmxvY2F0aW9uKS5pbnRlcm5hbEVsZW1lbnQucGFyZW50Vmlldy5yZWY7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqXG4gICAqIFRoZSBpbnN0YW5jZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBUT0RPKGkpOiB0aGlzIGFwaSBzaG91bGQgYmUgcmVtb3ZlZFxuICAgKi9cbiAgZ2V0IGhvc3RDb21wb25lbnQoKTogYW55IHsgcmV0dXJuIHRoaXMuaW5zdGFuY2U7IH1cblxuICAvKipcbiAgICogRGVzdHJveXMgdGhlIGNvbXBvbmVudCBpbnN0YW5jZSBhbmQgYWxsIG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIGl0LlxuICAgKlxuICAgKiBUT0RPKGkpOiByZW5hbWUgdG8gZGVzdHJveSB0byBiZSBjb25zaXN0ZW50IHdpdGggQXBwVmlld01hbmFnZXIgYW5kIFZpZXdDb250YWluZXJSZWZcbiAgICovXG4gIGFic3RyYWN0IGRpc3Bvc2UoKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudFJlZl8gZXh0ZW5kcyBDb21wb25lbnRSZWYge1xuICAvKipcbiAgICogVE9ETyhpKTogcmVmYWN0b3IgaW50byBwdWJsaWMvcHJpdmF0ZSBmaWVsZHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKGxvY2F0aW9uOiBFbGVtZW50UmVmLCBpbnN0YW5jZTogYW55LCBjb21wb25lbnRUeXBlOiBUeXBlLCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2Rpc3Bvc2U6ICgpID0+IHZvaWQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgICB0aGlzLmluc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgdGhpcy5jb21wb25lbnRUeXBlID0gY29tcG9uZW50VHlwZTtcbiAgICB0aGlzLmluamVjdG9yID0gaW5qZWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHR5cGUgb2YgdGhpcyBDb21wb25lbnQgaW5zdGFuY2UuXG4gICAqXG4gICAqIFRPRE8oaSk6IHRoaXMgYXBpIHNob3VsZCBiZSByZW1vdmVkXG4gICAqL1xuICBnZXQgaG9zdENvbXBvbmVudFR5cGUoKTogVHlwZSB7IHJldHVybiB0aGlzLmNvbXBvbmVudFR5cGU7IH1cblxuICBkaXNwb3NlKCk6IHZvaWQgeyB0aGlzLl9kaXNwb3NlKCk7IH1cbn1cblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBpbnN0YW50aWF0aW5nIGEgQ29tcG9uZW50IGFuZCBhdHRhY2hpbmcgaXQgdG8gYSBWaWV3IGF0IGEgc3BlY2lmaWVkIGxvY2F0aW9uLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRHluYW1pY0NvbXBvbmVudExvYWRlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIGEgQ29tcG9uZW50IGB0eXBlYCBhbmQgYXR0YWNoZXMgaXQgdG8gdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlXG4gICAqIHBsYXRmb3JtLXNwZWNpZmljIGdsb2JhbCB2aWV3IHRoYXQgbWF0Y2hlcyB0aGUgY29tcG9uZW50J3Mgc2VsZWN0b3IuXG4gICAqXG4gICAqIEluIGEgYnJvd3NlciB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgZ2xvYmFsIHZpZXcgaXMgdGhlIG1haW4gRE9NIERvY3VtZW50LlxuICAgKlxuICAgKiBJZiBuZWVkZWQsIHRoZSBjb21wb25lbnQncyBzZWxlY3RvciBjYW4gYmUgb3ZlcnJpZGRlbiB2aWEgYG92ZXJyaWRlU2VsZWN0b3JgLlxuICAgKlxuICAgKiBZb3UgY2FuIG9wdGlvbmFsbHkgcHJvdmlkZSBgaW5qZWN0b3JgIGFuZCB0aGlzIHtAbGluayBJbmplY3Rvcn0gd2lsbCBiZSB1c2VkIHRvIGluc3RhbnRpYXRlIHRoZVxuICAgKiBDb21wb25lbnQuXG4gICAqXG4gICAqIFRvIGJlIG5vdGlmaWVkIHdoZW4gdGhpcyBDb21wb25lbnQgaW5zdGFuY2UgaXMgZGVzdHJveWVkLCB5b3UgY2FuIGFsc28gb3B0aW9uYWxseSBwcm92aWRlXG4gICAqIGBvbkRpc3Bvc2VgIGNhbGxiYWNrLlxuICAgKlxuICAgKiBSZXR1cm5zIGEgcHJvbWlzZSBmb3IgdGhlIHtAbGluayBDb21wb25lbnRSZWZ9IHJlcHJlc2VudGluZyB0aGUgbmV3bHkgY3JlYXRlZCBDb21wb25lbnQuXG4gICAqXG4gICAqICMjIyBFeGFtcGxlXG4gICAqXG4gICAqIGBgYFxuICAgKiBAQ29tcG9uZW50KHtcbiAgICogICBzZWxlY3RvcjogJ2NoaWxkLWNvbXBvbmVudCcsXG4gICAqICAgdGVtcGxhdGU6ICdDaGlsZCdcbiAgICogfSlcbiAgICogY2xhc3MgQ2hpbGRDb21wb25lbnQge1xuICAgKiB9XG4gICAqXG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnbXktYXBwJyxcbiAgICogICB0ZW1wbGF0ZTogJ1BhcmVudCAoPGNoaWxkIGlkPVwiY2hpbGRcIj48L2NoaWxkPiknXG4gICAqIH0pXG4gICAqIGNsYXNzIE15QXBwIHtcbiAgICogICBjb25zdHJ1Y3RvcihkY2w6IER5bmFtaWNDb21wb25lbnRMb2FkZXIsIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgKiAgICAgZGNsLmxvYWRBc1Jvb3QoQ2hpbGRDb21wb25lbnQsICcjY2hpbGQnLCBpbmplY3Rvcik7XG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIGJvb3RzdHJhcChNeUFwcCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBSZXN1bHRpbmcgRE9NOlxuICAgKlxuICAgKiBgYGBcbiAgICogPG15LWFwcD5cbiAgICogICBQYXJlbnQgKFxuICAgKiAgICAgPGNoaWxkIGlkPVwiY2hpbGRcIj5DaGlsZDwvY2hpbGQ+XG4gICAqICAgKVxuICAgKiA8L215LWFwcD5cbiAgICogYGBgXG4gICAqL1xuICBhYnN0cmFjdCBsb2FkQXNSb290KHR5cGU6IFR5cGUsIG92ZXJyaWRlU2VsZWN0b3I6IHN0cmluZywgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICAgICAgICAgICAgICAgIG9uRGlzcG9zZT86ICgpID0+IHZvaWQsIHByb2plY3RhYmxlTm9kZXM/OiBhbnlbXVtdKTogUHJvbWlzZTxDb21wb25lbnRSZWY+O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIGEgQ29tcG9uZW50IGFuZCBhdHRhY2hlcyBpdCB0byBhIFZpZXcgQ29udGFpbmVyIGxvY2F0ZWQgaW5zaWRlIG9mIHRoZVxuICAgKiBDb21wb25lbnQgVmlldyBvZiBhbm90aGVyIENvbXBvbmVudCBpbnN0YW5jZS5cbiAgICpcbiAgICogVGhlIHRhcmdldGVkIENvbXBvbmVudCBJbnN0YW5jZSBpcyBzcGVjaWZpZWQgdmlhIGl0cyBgaG9zdExvY2F0aW9uYCB7QGxpbmsgRWxlbWVudFJlZn0uIFRoZVxuICAgKiBsb2NhdGlvbiB3aXRoaW4gdGhlIENvbXBvbmVudCBWaWV3IG9mIHRoaXMgQ29tcG9uZW50IEluc3RhbmNlIGlzIHNwZWNpZmllZCB2aWEgYGFuY2hvck5hbWVgXG4gICAqIFRlbXBsYXRlIFZhcmlhYmxlIE5hbWUuXG4gICAqXG4gICAqIFlvdSBjYW4gb3B0aW9uYWxseSBwcm92aWRlIGBwcm92aWRlcnNgIHRvIGNvbmZpZ3VyZSB0aGUge0BsaW5rIEluamVjdG9yfSBwcm92aXNpb25lZCBmb3IgdGhpc1xuICAgKiBDb21wb25lbnQgSW5zdGFuY2UuXG4gICAqXG4gICAqIFJldHVybnMgYSBwcm9taXNlIGZvciB0aGUge0BsaW5rIENvbXBvbmVudFJlZn0gcmVwcmVzZW50aW5nIHRoZSBuZXdseSBjcmVhdGVkIENvbXBvbmVudC5cbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICpcbiAgICogYGBgXG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnY2hpbGQtY29tcG9uZW50JyxcbiAgICogICB0ZW1wbGF0ZTogJ0NoaWxkJ1xuICAgKiB9KVxuICAgKiBjbGFzcyBDaGlsZENvbXBvbmVudCB7XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdteS1hcHAnLFxuICAgKiAgIHRlbXBsYXRlOiAnUGFyZW50ICg8ZGl2ICNjaGlsZD48L2Rpdj4pJ1xuICAgKiB9KVxuICAgKiBjbGFzcyBNeUFwcCB7XG4gICAqICAgY29uc3RydWN0b3IoZGNsOiBEeW5hbWljQ29tcG9uZW50TG9hZGVyLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAqICAgICBkY2wubG9hZEludG9Mb2NhdGlvbihDaGlsZENvbXBvbmVudCwgZWxlbWVudFJlZiwgJ2NoaWxkJyk7XG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIGJvb3RzdHJhcChNeUFwcCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBSZXN1bHRpbmcgRE9NOlxuICAgKlxuICAgKiBgYGBcbiAgICogPG15LWFwcD5cbiAgICogICAgUGFyZW50IChcbiAgICogICAgICA8ZGl2ICNjaGlsZD1cIlwiIGNsYXNzPVwibmctYmluZGluZ1wiPjwvZGl2PlxuICAgKiAgICAgIDxjaGlsZC1jb21wb25lbnQgY2xhc3M9XCJuZy1iaW5kaW5nXCI+Q2hpbGQ8L2NoaWxkLWNvbXBvbmVudD5cbiAgICogICAgKVxuICAgKiA8L215LWFwcD5cbiAgICogYGBgXG4gICAqL1xuICBhYnN0cmFjdCBsb2FkSW50b0xvY2F0aW9uKHR5cGU6IFR5cGUsIGhvc3RMb2NhdGlvbjogRWxlbWVudFJlZiwgYW5jaG9yTmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVycz86IFJlc29sdmVkUHJvdmlkZXJbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0YWJsZU5vZGVzPzogYW55W11bXSk6IFByb21pc2U8Q29tcG9uZW50UmVmPjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBhIENvbXBvbmVudCBhbmQgYXR0YWNoZXMgaXQgdG8gdGhlIFZpZXcgQ29udGFpbmVyIGZvdW5kIGF0IHRoZVxuICAgKiBgbG9jYXRpb25gIHNwZWNpZmllZCBhcyB7QGxpbmsgRWxlbWVudFJlZn0uXG4gICAqXG4gICAqIFlvdSBjYW4gb3B0aW9uYWxseSBwcm92aWRlIGBwcm92aWRlcnNgIHRvIGNvbmZpZ3VyZSB0aGUge0BsaW5rIEluamVjdG9yfSBwcm92aXNpb25lZCBmb3IgdGhpc1xuICAgKiBDb21wb25lbnQgSW5zdGFuY2UuXG4gICAqXG4gICAqIFJldHVybnMgYSBwcm9taXNlIGZvciB0aGUge0BsaW5rIENvbXBvbmVudFJlZn0gcmVwcmVzZW50aW5nIHRoZSBuZXdseSBjcmVhdGVkIENvbXBvbmVudC5cbiAgICpcbiAgICpcbiAgICogIyMjIEV4YW1wbGVcbiAgICpcbiAgICogYGBgXG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnY2hpbGQtY29tcG9uZW50JyxcbiAgICogICB0ZW1wbGF0ZTogJ0NoaWxkJ1xuICAgKiB9KVxuICAgKiBjbGFzcyBDaGlsZENvbXBvbmVudCB7XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdteS1hcHAnLFxuICAgKiAgIHRlbXBsYXRlOiAnUGFyZW50J1xuICAgKiB9KVxuICAgKiBjbGFzcyBNeUFwcCB7XG4gICAqICAgY29uc3RydWN0b3IoZGNsOiBEeW5hbWljQ29tcG9uZW50TG9hZGVyLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAqICAgICBkY2wubG9hZE5leHRUb0xvY2F0aW9uKENoaWxkQ29tcG9uZW50LCBlbGVtZW50UmVmKTtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogYm9vdHN0cmFwKE15QXBwKTtcbiAgICogYGBgXG4gICAqXG4gICAqIFJlc3VsdGluZyBET006XG4gICAqXG4gICAqIGBgYFxuICAgKiA8bXktYXBwPlBhcmVudDwvbXktYXBwPlxuICAgKiA8Y2hpbGQtY29tcG9uZW50PkNoaWxkPC9jaGlsZC1jb21wb25lbnQ+XG4gICAqIGBgYFxuICAgKi9cbiAgYWJzdHJhY3QgbG9hZE5leHRUb0xvY2F0aW9uKHR5cGU6IFR5cGUsIGxvY2F0aW9uOiBFbGVtZW50UmVmLCBwcm92aWRlcnM/OiBSZXNvbHZlZFByb3ZpZGVyW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0YWJsZU5vZGVzPzogYW55W11bXSk6IFByb21pc2U8Q29tcG9uZW50UmVmPjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIER5bmFtaWNDb21wb25lbnRMb2FkZXJfIGV4dGVuZHMgRHluYW1pY0NvbXBvbmVudExvYWRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NvbXBpbGVyOiBDb21waWxlciwgcHJpdmF0ZSBfdmlld01hbmFnZXI6IEFwcFZpZXdNYW5hZ2VyKSB7IHN1cGVyKCk7IH1cblxuICBsb2FkQXNSb290KHR5cGU6IFR5cGUsIG92ZXJyaWRlU2VsZWN0b3I6IHN0cmluZywgaW5qZWN0b3I6IEluamVjdG9yLCBvbkRpc3Bvc2U/OiAoKSA9PiB2b2lkLFxuICAgICAgICAgICAgIHByb2plY3RhYmxlTm9kZXM/OiBhbnlbXVtdKTogUHJvbWlzZTxDb21wb25lbnRSZWY+IHtcbiAgICByZXR1cm4gdGhpcy5fY29tcGlsZXIuY29tcGlsZUluSG9zdCh0eXBlKS50aGVuKGhvc3RQcm90b1ZpZXdSZWYgPT4ge1xuICAgICAgdmFyIGhvc3RWaWV3UmVmID0gdGhpcy5fdmlld01hbmFnZXIuY3JlYXRlUm9vdEhvc3RWaWV3KGhvc3RQcm90b1ZpZXdSZWYsIG92ZXJyaWRlU2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5qZWN0b3IsIHByb2plY3RhYmxlTm9kZXMpO1xuICAgICAgdmFyIG5ld0xvY2F0aW9uID0gdGhpcy5fdmlld01hbmFnZXIuZ2V0SG9zdEVsZW1lbnQoaG9zdFZpZXdSZWYpO1xuICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuX3ZpZXdNYW5hZ2VyLmdldENvbXBvbmVudChuZXdMb2NhdGlvbik7XG5cbiAgICAgIHZhciBkaXNwb3NlID0gKCkgPT4ge1xuICAgICAgICBpZiAoaXNQcmVzZW50KG9uRGlzcG9zZSkpIHtcbiAgICAgICAgICBvbkRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl92aWV3TWFuYWdlci5kZXN0cm95Um9vdEhvc3RWaWV3KGhvc3RWaWV3UmVmKTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gbmV3IENvbXBvbmVudFJlZl8obmV3TG9jYXRpb24sIGNvbXBvbmVudCwgdHlwZSwgaW5qZWN0b3IsIGRpc3Bvc2UpO1xuICAgIH0pO1xuICB9XG5cbiAgbG9hZEludG9Mb2NhdGlvbih0eXBlOiBUeXBlLCBob3N0TG9jYXRpb246IEVsZW1lbnRSZWYsIGFuY2hvck5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICBwcm92aWRlcnM6IFJlc29sdmVkUHJvdmlkZXJbXSA9IG51bGwsXG4gICAgICAgICAgICAgICAgICAgcHJvamVjdGFibGVOb2RlczogYW55W11bXSA9IG51bGwpOiBQcm9taXNlPENvbXBvbmVudFJlZj4ge1xuICAgIHJldHVybiB0aGlzLmxvYWROZXh0VG9Mb2NhdGlvbihcbiAgICAgICAgdHlwZSwgdGhpcy5fdmlld01hbmFnZXIuZ2V0TmFtZWRFbGVtZW50SW5Db21wb25lbnRWaWV3KGhvc3RMb2NhdGlvbiwgYW5jaG9yTmFtZSksIHByb3ZpZGVycyxcbiAgICAgICAgcHJvamVjdGFibGVOb2Rlcyk7XG4gIH1cblxuICBsb2FkTmV4dFRvTG9jYXRpb24odHlwZTogVHlwZSwgbG9jYXRpb246IEVsZW1lbnRSZWYsIHByb3ZpZGVyczogUmVzb2x2ZWRQcm92aWRlcltdID0gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgIHByb2plY3RhYmxlTm9kZXM6IGFueVtdW10gPSBudWxsKTogUHJvbWlzZTxDb21wb25lbnRSZWY+IHtcbiAgICByZXR1cm4gdGhpcy5fY29tcGlsZXIuY29tcGlsZUluSG9zdCh0eXBlKS50aGVuKGhvc3RQcm90b1ZpZXdSZWYgPT4ge1xuICAgICAgdmFyIHZpZXdDb250YWluZXIgPSB0aGlzLl92aWV3TWFuYWdlci5nZXRWaWV3Q29udGFpbmVyKGxvY2F0aW9uKTtcbiAgICAgIHZhciBob3N0Vmlld1JlZiA9IHZpZXdDb250YWluZXIuY3JlYXRlSG9zdFZpZXcoaG9zdFByb3RvVmlld1JlZiwgdmlld0NvbnRhaW5lci5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVycywgcHJvamVjdGFibGVOb2Rlcyk7XG4gICAgICB2YXIgbmV3TG9jYXRpb24gPSB0aGlzLl92aWV3TWFuYWdlci5nZXRIb3N0RWxlbWVudChob3N0Vmlld1JlZik7XG4gICAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5fdmlld01hbmFnZXIuZ2V0Q29tcG9uZW50KG5ld0xvY2F0aW9uKTtcblxuICAgICAgdmFyIGRpc3Bvc2UgPSAoKSA9PiB7XG4gICAgICAgIHZhciBpbmRleCA9IHZpZXdDb250YWluZXIuaW5kZXhPZihob3N0Vmlld1JlZik7XG4gICAgICAgIGlmICghaG9zdFZpZXdSZWYuZGVzdHJveWVkICYmIGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHZpZXdDb250YWluZXIucmVtb3ZlKGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50UmVmXyhuZXdMb2NhdGlvbiwgY29tcG9uZW50LCB0eXBlLCBudWxsLCBkaXNwb3NlKTtcbiAgICB9KTtcbiAgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar di_1 = require('angular2/src/core/di');\r\nvar application_tokens_1 = require('./application_tokens');\r\nvar change_detection_1 = require('./change_detection/change_detection');\r\nvar resolved_metadata_cache_1 = require('angular2/src/core/linker/resolved_metadata_cache');\r\nvar view_manager_1 = require('./linker/view_manager');\r\nvar view_manager_2 = require(\"./linker/view_manager\");\r\nvar view_resolver_1 = require('./linker/view_resolver');\r\nvar directive_resolver_1 = require('./linker/directive_resolver');\r\nvar pipe_resolver_1 = require('./linker/pipe_resolver');\r\nvar compiler_1 = require('./linker/compiler');\r\nvar compiler_2 = require(\"./linker/compiler\");\r\nvar dynamic_component_loader_1 = require('./linker/dynamic_component_loader');\r\nvar dynamic_component_loader_2 = require(\"./linker/dynamic_component_loader\");\r\n/**\r\n * A default set of providers which should be included in any Angular\r\n * application, regardless of the platform it runs onto.\r\n */\r\nexports.APPLICATION_COMMON_PROVIDERS = lang_1.CONST_EXPR([\r\n new di_1.Provider(compiler_1.Compiler, { useClass: compiler_2.Compiler_ }),\r\n application_tokens_1.APP_ID_RANDOM_PROVIDER,\r\n resolved_metadata_cache_1.ResolvedMetadataCache,\r\n new di_1.Provider(view_manager_1.AppViewManager, { useClass: view_manager_2.AppViewManager_ }),\r\n view_resolver_1.ViewResolver,\r\n new di_1.Provider(change_detection_1.IterableDiffers, { useValue: change_detection_1.defaultIterableDiffers }),\r\n new di_1.Provider(change_detection_1.KeyValueDiffers, { useValue: change_detection_1.defaultKeyValueDiffers }),\r\n directive_resolver_1.DirectiveResolver,\r\n pipe_resolver_1.PipeResolver,\r\n new di_1.Provider(dynamic_component_loader_1.DynamicComponentLoader, { useClass: dynamic_component_loader_2.DynamicComponentLoader_ })\r\n]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25fY29tbW9uX3Byb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL2FwcGxpY2F0aW9uX2NvbW1vbl9wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQStCLDBCQUEwQixDQUFDLENBQUE7QUFDMUQsbUJBQXVELHNCQUFzQixDQUFDLENBQUE7QUFDOUUsbUNBSU8sc0JBQXNCLENBQUMsQ0FBQTtBQUM5QixpQ0FLTyxxQ0FBcUMsQ0FBQyxDQUFBO0FBQzdDLHdDQUFvQyxrREFBa0QsQ0FBQyxDQUFBO0FBQ3ZGLDZCQUE2Qix1QkFBdUIsQ0FBQyxDQUFBO0FBQ3JELDZCQUE4Qix1QkFBdUIsQ0FBQyxDQUFBO0FBQ3RELDhCQUEyQix3QkFBd0IsQ0FBQyxDQUFBO0FBQ3BELG1DQUFnQyw2QkFBNkIsQ0FBQyxDQUFBO0FBQzlELDhCQUEyQix3QkFBd0IsQ0FBQyxDQUFBO0FBQ3BELHlCQUF1QixtQkFBbUIsQ0FBQyxDQUFBO0FBQzNDLHlCQUF3QixtQkFBbUIsQ0FBQyxDQUFBO0FBQzVDLHlDQUFxQyxtQ0FBbUMsQ0FBQyxDQUFBO0FBQ3pFLHlDQUFzQyxtQ0FBbUMsQ0FBQyxDQUFBO0FBRTFFOzs7R0FHRztBQUNVLG9DQUE0QixHQUFtQyxpQkFBVSxDQUFDO0lBQ3JGLElBQUksYUFBUSxDQUFDLG1CQUFRLEVBQUUsRUFBQyxRQUFRLEVBQUUsb0JBQVMsRUFBQyxDQUFDO0lBQzdDLDJDQUFzQjtJQUN0QiwrQ0FBcUI7SUFDckIsSUFBSSxhQUFRLENBQUMsNkJBQWMsRUFBRSxFQUFDLFFBQVEsRUFBRSw4QkFBZSxFQUFDLENBQUM7SUFDekQsNEJBQVk7SUFDWixJQUFJLGFBQVEsQ0FBQyxrQ0FBZSxFQUFFLEVBQUMsUUFBUSxFQUFFLHlDQUFzQixFQUFDLENBQUM7SUFDakUsSUFBSSxhQUFRLENBQUMsa0NBQWUsRUFBRSxFQUFDLFFBQVEsRUFBRSx5Q0FBc0IsRUFBQyxDQUFDO0lBQ2pFLHNDQUFpQjtJQUNqQiw0QkFBWTtJQUNaLElBQUksYUFBUSxDQUFDLGlEQUFzQixFQUFFLEVBQUMsUUFBUSxFQUFFLGtEQUF1QixFQUFDLENBQUM7Q0FDMUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlLCBDT05TVF9FWFBSfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtwcm92aWRlLCBQcm92aWRlciwgSW5qZWN0b3IsIE9wYXF1ZVRva2VufSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9kaSc7XG5pbXBvcnQge1xuICBBUFBfQ09NUE9ORU5UX1JFRl9QUk9NSVNFLFxuICBBUFBfQ09NUE9ORU5ULFxuICBBUFBfSURfUkFORE9NX1BST1ZJREVSXG59IGZyb20gJy4vYXBwbGljYXRpb25fdG9rZW5zJztcbmltcG9ydCB7XG4gIEl0ZXJhYmxlRGlmZmVycyxcbiAgZGVmYXVsdEl0ZXJhYmxlRGlmZmVycyxcbiAgS2V5VmFsdWVEaWZmZXJzLFxuICBkZWZhdWx0S2V5VmFsdWVEaWZmZXJzXG59IGZyb20gJy4vY2hhbmdlX2RldGVjdGlvbi9jaGFuZ2VfZGV0ZWN0aW9uJztcbmltcG9ydCB7UmVzb2x2ZWRNZXRhZGF0YUNhY2hlfSBmcm9tICdhbmd1bGFyMi9zcmMvY29yZS9saW5rZXIvcmVzb2x2ZWRfbWV0YWRhdGFfY2FjaGUnO1xuaW1wb3J0IHtBcHBWaWV3TWFuYWdlcn0gZnJvbSAnLi9saW5rZXIvdmlld19tYW5hZ2VyJztcbmltcG9ydCB7QXBwVmlld01hbmFnZXJffSBmcm9tIFwiLi9saW5rZXIvdmlld19tYW5hZ2VyXCI7XG5pbXBvcnQge1ZpZXdSZXNvbHZlcn0gZnJvbSAnLi9saW5rZXIvdmlld19yZXNvbHZlcic7XG5pbXBvcnQge0RpcmVjdGl2ZVJlc29sdmVyfSBmcm9tICcuL2xpbmtlci9kaXJlY3RpdmVfcmVzb2x2ZXInO1xuaW1wb3J0IHtQaXBlUmVzb2x2ZXJ9IGZyb20gJy4vbGlua2VyL3BpcGVfcmVzb2x2ZXInO1xuaW1wb3J0IHtDb21waWxlcn0gZnJvbSAnLi9saW5rZXIvY29tcGlsZXInO1xuaW1wb3J0IHtDb21waWxlcl99IGZyb20gXCIuL2xpbmtlci9jb21waWxlclwiO1xuaW1wb3J0IHtEeW5hbWljQ29tcG9uZW50TG9hZGVyfSBmcm9tICcuL2xpbmtlci9keW5hbWljX2NvbXBvbmVudF9sb2FkZXInO1xuaW1wb3J0IHtEeW5hbWljQ29tcG9uZW50TG9hZGVyX30gZnJvbSBcIi4vbGlua2VyL2R5bmFtaWNfY29tcG9uZW50X2xvYWRlclwiO1xuXG4vKipcbiAqIEEgZGVmYXVsdCBzZXQgb2YgcHJvdmlkZXJzIHdoaWNoIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBhbnkgQW5ndWxhclxuICogYXBwbGljYXRpb24sIHJlZ2FyZGxlc3Mgb2YgdGhlIHBsYXRmb3JtIGl0IHJ1bnMgb250by5cbiAqL1xuZXhwb3J0IGNvbnN0IEFQUExJQ0FUSU9OX0NPTU1PTl9QUk9WSURFUlM6IEFycmF5PFR5cGUgfCBQcm92aWRlciB8IGFueVtdPiA9IENPTlNUX0VYUFIoW1xuICBuZXcgUHJvdmlkZXIoQ29tcGlsZXIsIHt1c2VDbGFzczogQ29tcGlsZXJffSksXG4gIEFQUF9JRF9SQU5ET01fUFJPVklERVIsXG4gIFJlc29sdmVkTWV0YWRhdGFDYWNoZSxcbiAgbmV3IFByb3ZpZGVyKEFwcFZpZXdNYW5hZ2VyLCB7dXNlQ2xhc3M6IEFwcFZpZXdNYW5hZ2VyX30pLFxuICBWaWV3UmVzb2x2ZXIsXG4gIG5ldyBQcm92aWRlcihJdGVyYWJsZURpZmZlcnMsIHt1c2VWYWx1ZTogZGVmYXVsdEl0ZXJhYmxlRGlmZmVyc30pLFxuICBuZXcgUHJvdmlkZXIoS2V5VmFsdWVEaWZmZXJzLCB7dXNlVmFsdWU6IGRlZmF1bHRLZXlWYWx1ZURpZmZlcnN9KSxcbiAgRGlyZWN0aXZlUmVzb2x2ZXIsXG4gIFBpcGVSZXNvbHZlcixcbiAgbmV3IFByb3ZpZGVyKER5bmFtaWNDb21wb25lbnRMb2FkZXIsIHt1c2VDbGFzczogRHluYW1pY0NvbXBvbmVudExvYWRlcl99KVxuXSk7Il19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\n/**\r\n * Reflective information about a symbol, including annotations, interfaces, and other metadata.\r\n */\r\nvar ReflectionInfo = (function () {\r\n function ReflectionInfo(annotations, parameters, factory, interfaces, propMetadata) {\r\n this.annotations = annotations;\r\n this.parameters = parameters;\r\n this.factory = factory;\r\n this.interfaces = interfaces;\r\n this.propMetadata = propMetadata;\r\n }\r\n return ReflectionInfo;\r\n})();\r\nexports.ReflectionInfo = ReflectionInfo;\r\n/**\r\n * Provides access to reflection data about symbols. Used internally by Angular\r\n * to power dependency injection and compilation.\r\n */\r\nvar Reflector = (function () {\r\n function Reflector(reflectionCapabilities) {\r\n /** @internal */\r\n this._injectableInfo = new collection_1.Map();\r\n /** @internal */\r\n this._getters = new collection_1.Map();\r\n /** @internal */\r\n this._setters = new collection_1.Map();\r\n /** @internal */\r\n this._methods = new collection_1.Map();\r\n this._usedKeys = null;\r\n this.reflectionCapabilities = reflectionCapabilities;\r\n }\r\n Reflector.prototype.isReflectionEnabled = function () { return this.reflectionCapabilities.isReflectionEnabled(); };\r\n /**\r\n * Causes `this` reflector to track keys used to access\r\n * {@link ReflectionInfo} objects.\r\n */\r\n Reflector.prototype.trackUsage = function () { this._usedKeys = new collection_1.Set(); };\r\n /**\r\n * Lists types for which reflection information was not requested since\r\n * {@link #trackUsage} was called. This list could later be audited as\r\n * potential dead code.\r\n */\r\n Reflector.prototype.listUnusedKeys = function () {\r\n var _this = this;\r\n if (this._usedKeys == null) {\r\n throw new exceptions_1.BaseException('Usage tracking is disabled');\r\n }\r\n var allTypes = collection_1.MapWrapper.keys(this._injectableInfo);\r\n return allTypes.filter(function (key) { return !collection_1.SetWrapper.has(_this._usedKeys, key); });\r\n };\r\n Reflector.prototype.registerFunction = function (func, funcInfo) {\r\n this._injectableInfo.set(func, funcInfo);\r\n };\r\n Reflector.prototype.registerType = function (type, typeInfo) {\r\n this._injectableInfo.set(type, typeInfo);\r\n };\r\n Reflector.prototype.registerGetters = function (getters) { _mergeMaps(this._getters, getters); };\r\n Reflector.prototype.registerSetters = function (setters) { _mergeMaps(this._setters, setters); };\r\n Reflector.prototype.registerMethods = function (methods) { _mergeMaps(this._methods, methods); };\r\n Reflector.prototype.factory = function (type) {\r\n if (this._containsReflectionInfo(type)) {\r\n var res = this._getReflectionInfo(type).factory;\r\n return lang_1.isPresent(res) ? res : null;\r\n }\r\n else {\r\n return this.reflectionCapabilities.factory(type);\r\n }\r\n };\r\n Reflector.prototype.parameters = function (typeOrFunc) {\r\n if (this._injectableInfo.has(typeOrFunc)) {\r\n var res = this._getReflectionInfo(typeOrFunc).parameters;\r\n return lang_1.isPresent(res) ? res : [];\r\n }\r\n else {\r\n return this.reflectionCapabilities.parameters(typeOrFunc);\r\n }\r\n };\r\n Reflector.prototype.annotations = function (typeOrFunc) {\r\n if (this._injectableInfo.has(typeOrFunc)) {\r\n var res = this._getReflectionInfo(typeOrFunc).annotations;\r\n return lang_1.isPresent(res) ? res : [];\r\n }\r\n else {\r\n return this.reflectionCapabilities.annotations(typeOrFunc);\r\n }\r\n };\r\n Reflector.prototype.propMetadata = function (typeOrFunc) {\r\n if (this._injectableInfo.has(typeOrFunc)) {\r\n var res = this._getReflectionInfo(typeOrFunc).propMetadata;\r\n return lang_1.isPresent(res) ? res : {};\r\n }\r\n else {\r\n return this.reflectionCapabilities.propMetadata(typeOrFunc);\r\n }\r\n };\r\n Reflector.prototype.interfaces = function (type) {\r\n if (this._injectableInfo.has(type)) {\r\n var res = this._getReflectionInfo(type).interfaces;\r\n return lang_1.isPresent(res) ? res : [];\r\n }\r\n else {\r\n return this.reflectionCapabilities.interfaces(type);\r\n }\r\n };\r\n Reflector.prototype.getter = function (name) {\r\n if (this._getters.has(name)) {\r\n return this._getters.get(name);\r\n }\r\n else {\r\n return this.reflectionCapabilities.getter(name);\r\n }\r\n };\r\n Reflector.prototype.setter = function (name) {\r\n if (this._setters.has(name)) {\r\n return this._setters.get(name);\r\n }\r\n else {\r\n return this.reflectionCapabilities.setter(name);\r\n }\r\n };\r\n Reflector.prototype.method = function (name) {\r\n if (this._methods.has(name)) {\r\n return this._methods.get(name);\r\n }\r\n else {\r\n return this.reflectionCapabilities.method(name);\r\n }\r\n };\r\n /** @internal */\r\n Reflector.prototype._getReflectionInfo = function (typeOrFunc) {\r\n if (lang_1.isPresent(this._usedKeys)) {\r\n this._usedKeys.add(typeOrFunc);\r\n }\r\n return this._injectableInfo.get(typeOrFunc);\r\n };\r\n /** @internal */\r\n Reflector.prototype._containsReflectionInfo = function (typeOrFunc) { return this._injectableInfo.has(typeOrFunc); };\r\n Reflector.prototype.importUri = function (type) { return this.reflectionCapabilities.importUri(type); };\r\n return Reflector;\r\n})();\r\nexports.Reflector = Reflector;\r\nfunction _mergeMaps(target, config) {\r\n collection_1.StringMapWrapper.forEach(config, function (v, k) { return target.set(k, v); });\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvcmVmbGVjdGlvbi9yZWZsZWN0b3IudHMiXSwibmFtZXMiOlsiUmVmbGVjdGlvbkluZm8iLCJSZWZsZWN0aW9uSW5mby5jb25zdHJ1Y3RvciIsIlJlZmxlY3RvciIsIlJlZmxlY3Rvci5jb25zdHJ1Y3RvciIsIlJlZmxlY3Rvci5pc1JlZmxlY3Rpb25FbmFibGVkIiwiUmVmbGVjdG9yLnRyYWNrVXNhZ2UiLCJSZWZsZWN0b3IubGlzdFVudXNlZEtleXMiLCJSZWZsZWN0b3IucmVnaXN0ZXJGdW5jdGlvbiIsIlJlZmxlY3Rvci5yZWdpc3RlclR5cGUiLCJSZWZsZWN0b3IucmVnaXN0ZXJHZXR0ZXJzIiwiUmVmbGVjdG9yLnJlZ2lzdGVyU2V0dGVycyIsIlJlZmxlY3Rvci5yZWdpc3Rlck1ldGhvZHMiLCJSZWZsZWN0b3IuZmFjdG9yeSIsIlJlZmxlY3Rvci5wYXJhbWV0ZXJzIiwiUmVmbGVjdG9yLmFubm90YXRpb25zIiwiUmVmbGVjdG9yLnByb3BNZXRhZGF0YSIsIlJlZmxlY3Rvci5pbnRlcmZhY2VzIiwiUmVmbGVjdG9yLmdldHRlciIsIlJlZmxlY3Rvci5zZXR0ZXIiLCJSZWZsZWN0b3IubWV0aG9kIiwiUmVmbGVjdG9yLl9nZXRSZWZsZWN0aW9uSW5mbyIsIlJlZmxlY3Rvci5fY29udGFpbnNSZWZsZWN0aW9uSW5mbyIsIlJlZmxlY3Rvci5pbXBvcnRVcmkiLCJfbWVyZ2VNYXBzIl0sIm1hcHBpbmdzIjoiQUFBQSxxQkFBeUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNwRSwyQkFBOEMsZ0NBQWdDLENBQUMsQ0FBQTtBQUMvRSwyQkFPTyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBTXhDOztHQUVHO0FBQ0g7SUFDRUEsd0JBQW1CQSxXQUFtQkEsRUFBU0EsVUFBb0JBLEVBQVNBLE9BQWtCQSxFQUMzRUEsVUFBa0JBLEVBQVNBLFlBQXFDQTtRQURoRUMsZ0JBQVdBLEdB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Q0EsQ0FBQ0E7SUFDdkZwQixnQkFBQ0E7QUFBREEsQ0FBQ0EsQUF0SUQsSUFzSUM7QUF0SVksaUJBQVMsWUFzSXJCLENBQUE7QUFFRCxvQkFBb0IsTUFBNkIsRUFBRSxNQUFpQztJQUNsRnFCLDZCQUFnQkEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsTUFBTUEsRUFBRUEsVUFBQ0EsQ0FBV0EsRUFBRUEsQ0FBU0EsSUFBS0EsT0FBQUEsTUFBTUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsRUFBaEJBLENBQWdCQSxDQUFDQSxDQUFDQTtBQUNqRkEsQ0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGUsIGlzUHJlc2VudCwgc3RyaW5naWZ5fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uLCBXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtcbiAgTGlzdFdyYXBwZXIsXG4gIE1hcCxcbiAgTWFwV3JhcHBlcixcbiAgU2V0LFxuICBTZXRXcmFwcGVyLFxuICBTdHJpbmdNYXBXcmFwcGVyXG59IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5pbXBvcnQge1NldHRlckZuLCBHZXR0ZXJGbiwgTWV0aG9kRm59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtQbGF0Zm9ybVJlZmxlY3Rpb25DYXBhYmlsaXRpZXN9IGZyb20gJy4vcGxhdGZvcm1fcmVmbGVjdGlvbl9jYXBhYmlsaXRpZXMnO1xuZXhwb3J0IHtTZXR0ZXJGbiwgR2V0dGVyRm4sIE1ldGhvZEZufSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7UGxhdGZvcm1SZWZsZWN0aW9uQ2FwYWJpbGl0aWVzfSBmcm9tICcuL3BsYXRmb3JtX3JlZmxlY3Rpb25fY2FwYWJpbGl0aWVzJztcblxuLyoqXG4gKiBSZWZsZWN0aXZlIGluZm9ybWF0aW9uIGFib3V0IGEgc3ltYm9sLCBpbmNsdWRpbmcgYW5ub3RhdGlvbnMsIGludGVyZmFjZXMsIGFuZCBvdGhlciBtZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmxlY3Rpb25JbmZvIHtcbiAgY29uc3RydWN0b3IocHVibGljIGFubm90YXRpb25zPzogYW55W10sIHB1YmxpYyBwYXJhbWV0ZXJzPzogYW55W11bXSwgcHVibGljIGZhY3Rvcnk/OiBGdW5jdGlvbixcbiAgICAgICAgICAgICAgcHVibGljIGludGVyZmFjZXM/OiBhbnlbXSwgcHVibGljIHByb3BNZXRhZGF0YT86IHtba2V5OiBzdHJpbmddOiBhbnlbXX0pIHt9XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYWNjZXNzIHRvIHJlZmxlY3Rpb24gZGF0YSBhYm91dCBzeW1ib2xzLiBVc2VkIGludGVybmFsbHkgYnkgQW5ndWxhclxuICogdG8gcG93ZXIgZGVwZW5kZW5jeSBpbmplY3Rpb24gYW5kIGNvbXBpbGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgUmVmbGVjdG9yIHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfaW5qZWN0YWJsZUluZm8gPSBuZXcgTWFwPGFueSwgUmVmbGVjdGlvbkluZm8+KCk7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dldHRlcnMgPSBuZXcgTWFwPHN0cmluZywgR2V0dGVyRm4+KCk7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3NldHRlcnMgPSBuZXcgTWFwPHN0cmluZywgU2V0dGVyRm4+KCk7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX21ldGhvZHMgPSBuZXcgTWFwPHN0cmluZywgTWV0aG9kRm4+KCk7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3VzZWRLZXlzOiBTZXQ8YW55PjtcbiAgcmVmbGVjdGlvbkNhcGFiaWxpdGllczogUGxhdGZvcm1SZWZsZWN0aW9uQ2FwYWJpbGl0aWVzO1xuXG4gIGNvbnN0cnVjdG9yKHJlZmxlY3Rpb25DYXBhYmlsaXRpZXM6IFBsYXRmb3JtUmVmbGVjdGlvbkNhcGFiaWxpdGllcykge1xuICAgIHRoaXMuX3VzZWRLZXlzID0gbnVsbDtcbiAgICB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMgPSByZWZsZWN0aW9uQ2FwYWJpbGl0aWVzO1xuICB9XG5cbiAgaXNSZWZsZWN0aW9uRW5hYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5pc1JlZmxlY3Rpb25FbmFibGVkKCk7IH1cblxuICAvKipcbiAgICogQ2F1c2VzIGB0aGlzYCByZWZsZWN0b3IgdG8gdHJhY2sga2V5cyB1c2VkIHRvIGFjY2Vzc1xuICAgKiB7QGxpbmsgUmVmbGVjdGlvbkluZm99IG9iamVjdHMuXG4gICAqL1xuICB0cmFja1VzYWdlKCk6IHZvaWQgeyB0aGlzLl91c2VkS2V5cyA9IG5ldyBTZXQoKTsgfVxuXG4gIC8qKlxuICAgKiBMaXN0cyB0eXBlcyBmb3Igd2hpY2ggcmVmbGVjdGlvbiBpbmZvcm1hdGlvbiB3YXMgbm90IHJlcXVlc3RlZCBzaW5jZVxuICAgKiB7QGxpbmsgI3RyYWNrVXNhZ2V9IHdhcyBjYWxsZWQuIFRoaXMgbGlzdCBjb3VsZCBsYXRlciBiZSBhdWRpdGVkIGFzXG4gICAqIHBvdGVudGlhbCBkZWFkIGNvZGUuXG4gICAqL1xuICBsaXN0VW51c2VkS2V5cygpOiBhbnlbXSB7XG4gICAgaWYgKHRoaXMuX3VzZWRLZXlzID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBCYXNlRXhjZXB0aW9uKCdVc2FnZSB0cmFja2luZyBpcyBkaXNhYmxlZCcpO1xuICAgIH1cbiAgICB2YXIgYWxsVHlwZXMgPSBNYXBXcmFwcGVyLmtleXModGhpcy5faW5qZWN0YWJsZUluZm8pO1xuICAgIHJldHVybiBhbGxUeXBlcy5maWx0ZXIoa2V5ID0+ICFTZXRXcmFwcGVyLmhhcyh0aGlzLl91c2VkS2V5cywga2V5KSk7XG4gIH1cblxuICByZWdpc3RlckZ1bmN0aW9uKGZ1bmM6IEZ1bmN0aW9uLCBmdW5jSW5mbzogUmVmbGVjdGlvbkluZm8pOiB2b2lkIHtcbiAgICB0aGlzLl9pbmplY3RhYmxlSW5mby5zZXQoZnVuYywgZnVuY0luZm8pO1xuICB9XG5cbiAgcmVnaXN0ZXJUeXBlKHR5cGU6IFR5cGUsIHR5cGVJbmZvOiBSZWZsZWN0aW9uSW5mbyk6IHZvaWQge1xuICAgIHRoaXMuX2luamVjdGFibGVJbmZvLnNldCh0eXBlLCB0eXBlSW5mbyk7XG4gIH1cblxuICByZWdpc3RlckdldHRlcnMoZ2V0dGVyczoge1trZXk6IHN0cmluZ106IEdldHRlckZufSk6IHZvaWQgeyBfbWVyZ2VNYXBzKHRoaXMuX2dldHRlcnMsIGdldHRlcnMpOyB9XG5cbiAgcmVnaXN0ZXJTZXR0ZXJzKHNldHRlcnM6IHtba2V5OiBzdHJpbmddOiBTZXR0ZXJGbn0pOiB2b2lkIHsgX21lcmdlTWFwcyh0aGlzLl9zZXR0ZXJzLCBzZXR0ZXJzKTsgfVxuXG4gIHJlZ2lzdGVyTWV0aG9kcyhtZXRob2RzOiB7W2tleTogc3RyaW5nXTogTWV0aG9kRm59KTogdm9pZCB7IF9tZXJnZU1hcHModGhpcy5fbWV0aG9kcywgbWV0aG9kcyk7IH1cblxuICBmYWN0b3J5KHR5cGU6IFR5cGUpOiBGdW5jdGlvbiB7XG4gICAgaWYgKHRoaXMuX2NvbnRhaW5zUmVmbGVjdGlvbkluZm8odHlwZSkpIHtcbiAgICAgIHZhciByZXMgPSB0aGlzLl9nZXRSZWZsZWN0aW9uSW5mbyh0eXBlKS5mYWN0b3J5O1xuICAgICAgcmV0dXJuIGlzUHJlc2VudChyZXMpID8gcmVzIDogbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5mYWN0b3J5KHR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIHBhcmFtZXRlcnModHlwZU9yRnVuYzogLypUeXBlKi8gYW55KTogYW55W11bXSB7XG4gICAgaWYgKHRoaXMuX2luamVjdGFibGVJbmZvLmhhcyh0eXBlT3JGdW5jKSkge1xuICAgICAgdmFyIHJlcyA9IHRoaXMuX2dldFJlZmxlY3Rpb25JbmZvKHR5cGVPckZ1bmMpLnBhcmFtZXRlcnM7XG4gICAgICByZXR1cm4gaXNQcmVzZW50KHJlcykgPyByZXMgOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5wYXJhbWV0ZXJzKHR5cGVPckZ1bmMpO1xuICAgIH1cbiAgfVxuXG4gIGFubm90YXRpb25zKHR5cGVPckZ1bmM6IC8qVHlwZSovIGFueSk6IGFueVtdIHtcbiAgICBpZiAodGhpcy5faW5qZWN0YWJsZUluZm8uaGFzKHR5cGVPckZ1bmMpKSB7XG4gICAgICB2YXIgcmVzID0gdGhpcy5fZ2V0UmVmbGVjdGlvbkluZm8odHlwZU9yRnVuYykuYW5ub3RhdGlvbnM7XG4gICAgICByZXR1cm4gaXNQcmVzZW50KHJlcykgPyByZXMgOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5hbm5vdGF0aW9ucyh0eXBlT3JGdW5jKTtcbiAgICB9XG4gIH1cblxuICBwcm9wTWV0YWRhdGEodHlwZU9yRnVuYzogLypUeXBlKi8gYW55KToge1trZXk6IHN0cmluZ106IGFueVtdfSB7XG4gICAgaWYgKHRoaXMuX2luamVjdGFibGVJbmZvLmhhcyh0eXBlT3JGdW5jKSkge1xuICAgICAgdmFyIHJlcyA9IHRoaXMuX2dldFJlZmxlY3Rpb25JbmZvKHR5cGVPckZ1bmMpLnByb3BNZXRhZGF0YTtcbiAgICAgIHJldHVybiBpc1ByZXNlbnQocmVzKSA/IHJlcyA6IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnByb3BNZXRhZGF0YSh0eXBlT3JGdW5jKTtcbiAgICB9XG4gIH1cblxuICBpbnRlcmZhY2VzKHR5cGU6IFR5cGUpOiBhbnlbXSB7XG4gICAgaWYgKHRoaXMuX2luamVjdGFibGVJbmZvLmhhcyh0eXBlKSkge1xuICAgICAgdmFyIHJlcyA9IHRoaXMuX2dldFJlZmxlY3Rpb25JbmZvKHR5cGUpLmludGVyZmFjZXM7XG4gICAgICByZXR1cm4gaXNQcmVzZW50KHJlcykgPyByZXMgOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5pbnRlcmZhY2VzKHR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldHRlcihuYW1lOiBzdHJpbmcpOiBHZXR0ZXJGbiB7XG4gICAgaWYgKHRoaXMuX2dldHRlcnMuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0dGVycy5nZXQobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuZ2V0dGVyKG5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHNldHRlcihuYW1lOiBzdHJpbmcpOiBTZXR0ZXJGbiB7XG4gICAgaWYgKHRoaXMuX3NldHRlcnMuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2V0dGVycy5nZXQobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuc2V0dGVyKG5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIG1ldGhvZChuYW1lOiBzdHJpbmcpOiBNZXRob2RGbiB7XG4gICAgaWYgKHRoaXMuX21ldGhvZHMuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbWV0aG9kcy5nZXQobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMubWV0aG9kKG5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2dldFJlZmxlY3Rpb25JbmZvKHR5cGVPckZ1bmM6IGFueSk6IFJlZmxlY3Rpb25JbmZvIHtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX3VzZWRLZXlzKSkge1xuICAgICAgdGhpcy5fdXNlZEtleXMuYWRkKHR5cGVPckZ1bmMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faW5qZWN0YWJsZUluZm8uZ2V0KHR5cGVPckZ1bmMpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfY29udGFpbnNSZWZsZWN0aW9uSW5mbyh0eXBlT3JGdW5jOiBhbnkpIHsgcmV0dXJuIHRoaXMuX2luamVjdGFibGVJbmZvLmhhcyh0eXBlT3JGdW5jKTsgfVxuXG4gIGltcG9ydFVyaSh0eXBlOiBUeXBlKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5pbXBvcnRVcmkodHlwZSk7IH1cbn1cblxuZnVuY3Rpb24gX21lcmdlTWFwcyh0YXJnZXQ6IE1hcDxzdHJpbmcsIEZ1bmN0aW9uPiwgY29uZmlnOiB7W2tleTogc3RyaW5nXTogRnVuY3Rpb259KTogdm9pZCB7XG4gIFN0cmluZ01hcFdyYXBwZXIuZm9yRWFjaChjb25maWcsICh2OiBGdW5jdGlvbiwgazogc3RyaW5nKSA9PiB0YXJnZXQuc2V0KGssIHYpKTtcbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n/**\r\n * A base class for the WrappedException that can be used to identify\r\n * a WrappedException from ExceptionHandler without adding circular\r\n * dependency.\r\n */\r\nvar BaseWrappedException = (function (_super) {\r\n __extends(BaseWrappedException, _super);\r\n function BaseWrappedException(message) {\r\n _super.call(this, message);\r\n }\r\n Object.defineProperty(BaseWrappedException.prototype, \"wrapperMessage\", {\r\n get: function () { return ''; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseWrappedException.prototype, \"wrapperStack\", {\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseWrappedException.prototype, \"originalException\", {\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseWrappedException.prototype, \"originalStack\", {\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseWrappedException.prototype, \"context\", {\r\n get: function () { return null; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseWrappedException.prototype, \"message\", {\r\n get: function () { return ''; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return BaseWrappedException;\r\n})(Error);\r\nexports.BaseWrappedException = BaseWrappedException;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV93cmFwcGVkX2V4Y2VwdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9mYWNhZGUvYmFzZV93cmFwcGVkX2V4Y2VwdGlvbi50cyJdLCJuYW1lcyI6WyJCYXNlV3JhcHBlZEV4Y2VwdGlvbiIsIkJhc2VXcmFwcGVkRXhjZXB0aW9uLmNvbnN0cnVjdG9yIiwiQmFzZVdyYXBwZWRFeGNlcHRpb24ud3JhcHBlck1lc3NhZ2UiLCJCYXNlV3JhcHBlZEV4Y2VwdGlvbi53cmFwcGVyU3RhY2siLCJCYXNlV3JhcHBlZEV4Y2VwdGlvbi5vcmlnaW5hbEV4Y2VwdGlvbiIsIkJhc2VXcmFwcGVkRXhjZXB0aW9uLm9yaWdpbmFsU3RhY2siLCJCYXNlV3JhcHBlZEV4Y2VwdGlvbi5jb250ZXh0IiwiQmFzZVdyYXBwZWRFeGNlcHRpb24ubWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7OztHQUlHO0FBQ0g7SUFBMENBLHdDQUFLQTtJQUM3Q0EsOEJBQVlBLE9BQWVBO1FBQUlDLGtCQUFNQSxPQUFPQSxDQUFDQSxDQUFDQTtJQUFDQSxDQUFDQTtJQUVoREQsc0JBQUlBLGdEQUFjQTthQUFsQkEsY0FBK0JFLE1BQU1BLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUY7SUFDM0NBLHNCQUFJQSw4Q0FBWUE7YUFBaEJBLGNBQTBCRyxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFIO0lBQ3hDQSxzQkFBSUEsbURBQWlCQTthQUFyQkEsY0FBK0JJLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUo7SUFDN0NBLHNCQUFJQSwrQ0FBYUE7YUFBakJBLGNBQTJCSyxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFMO0lBQ3pDQSxzQkFBSUEseUNBQU9BO2FBQVhBLGNBQXFCTSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFOO0lBQ25DQSxzQkFBSUEseUNBQU9BO2FBQVhBLGNBQXdCTyxNQUFNQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFQO0lBQ3RDQSwyQkFBQ0E7QUFBREEsQ0FBQ0EsQUFURCxFQUEwQyxLQUFLLEVBUzlDO0FBVFksNEJBQW9CLHVCQVNoQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIHRoZSBXcmFwcGVkRXhjZXB0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnlcbiAqIGEgV3JhcHBlZEV4Y2VwdGlvbiBmcm9tIEV4Y2VwdGlvbkhhbmRsZXIgd2l0aG91dCBhZGRpbmcgY2lyY3VsYXJcbiAqIGRlcGVuZGVuY3kuXG4gKi9cbmV4cG9ydCBjbGFzcyBCYXNlV3JhcHBlZEV4Y2VwdGlvbiBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7IHN1cGVyKG1lc3NhZ2UpOyB9XG5cbiAgZ2V0IHdyYXBwZXJNZXNzYWdlKCk6IHN0cmluZyB7IHJldHVybiAnJzsgfVxuICBnZXQgd3JhcHBlclN0YWNrKCk6IGFueSB7IHJldHVybiBudWxsOyB9XG4gIGdldCBvcmlnaW5hbEV4Y2VwdGlvbigpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICBnZXQgb3JpZ2luYWxTdGFjaygpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICBnZXQgY29udGV4dCgpOiBhbnkgeyByZXR1cm4gbnVsbDsgfVxuICBnZXQgbWVzc2FnZSgpOiBzdHJpbmcgeyByZXR1cm4gJyc7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar base_wrapped_exception_1 = require('angular2/src/facade/base_wrapped_exception');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar _ArrayLogger = (function () {\r\n function _ArrayLogger() {\r\n this.res = [];\r\n }\r\n _ArrayLogger.prototype.log = function (s) { this.res.push(s); };\r\n _ArrayLogger.prototype.logError = function (s) { this.res.push(s); };\r\n _ArrayLogger.prototype.logGroup = function (s) { this.res.push(s); };\r\n _ArrayLogger.prototype.logGroupEnd = function () { };\r\n ;\r\n return _ArrayLogger;\r\n})();\r\n/**\r\n * Provides a hook for centralized exception handling.\r\n *\r\n * The default implementation of `ExceptionHandler` prints error messages to the `Console`. To\r\n * intercept error handling,\r\n * write a custom exception handler that replaces this default as appropriate for your app.\r\n *\r\n * ### Example\r\n *\r\n * ```javascript\r\n *\r\n * class MyExceptionHandler implements ExceptionHandler {\r\n * call(error, stackTrace = null, reason = null) {\r\n * // do something with the exception\r\n * }\r\n * }\r\n *\r\n * bootstrap(MyApp, [provide(ExceptionHandler, {useClass: MyExceptionHandler})])\r\n *\r\n * ```\r\n */\r\nvar ExceptionHandler = (function () {\r\n function ExceptionHandler(_logger, _rethrowException) {\r\n if (_rethrowException === void 0) { _rethrowException = true; }\r\n this._logger = _logger;\r\n this._rethrowException = _rethrowException;\r\n }\r\n ExceptionHandler.exceptionToString = function (exception, stackTrace, reason) {\r\n if (stackTrace === void 0) { stackTrace = null; }\r\n if (reason === void 0) { reason = null; }\r\n var l = new _ArrayLogger();\r\n var e = new ExceptionHandler(l, false);\r\n e.call(exception, stackTrace, reason);\r\n return l.res.join(\"\\n\");\r\n };\r\n ExceptionHandler.prototype.call = function (exception, stackTrace, reason) {\r\n if (stackTrace === void 0) { stackTrace = null; }\r\n if (reason === void 0) { reason = null; }\r\n var originalException = this._findOriginalException(exception);\r\n var originalStack = this._findOriginalStack(exception);\r\n var context = this._findContext(exception);\r\n this._logger.logGroup(\"EXCEPTION: \" + this._extractMessage(exception));\r\n if (lang_1.isPresent(stackTrace) && lang_1.isBlank(originalStack)) {\r\n this._logger.logError(\"STACKTRACE:\");\r\n this._logger.logError(this._longStackTrace(stackTrace));\r\n }\r\n if (lang_1.isPresent(reason)) {\r\n this._logger.logError(\"REASON: \" + reason);\r\n }\r\n if (lang_1.isPresent(originalException)) {\r\n this._logger.logError(\"ORIGINAL EXCEPTION: \" + this._extractMessage(originalException));\r\n }\r\n if (lang_1.isPresent(originalStack)) {\r\n this._logger.logError(\"ORIGINAL STACKTRACE:\");\r\n this._logger.logError(this._longStackTrace(originalStack));\r\n }\r\n if (lang_1.isPresent(context)) {\r\n this._logger.logError(\"ERROR CONTEXT:\");\r\n this._logger.logError(context);\r\n }\r\n this._logger.logGroupEnd();\r\n // We rethrow exceptions, so operations like 'bootstrap' will result in an error\r\n // when an exception happens. If we do not rethrow, bootstrap will always succeed.\r\n if (this._rethrowException)\r\n throw exception;\r\n };\r\n /** @internal */\r\n ExceptionHandler.prototype._extractMessage = function (exception) {\r\n return exception instanceof base_wrapped_exception_1.BaseWrappedException ? exception.wrapperMessage :\r\n exception.toString();\r\n };\r\n /** @internal */\r\n ExceptionHandler.prototype._longStackTrace = function (stackTrace) {\r\n return collection_1.isListLikeIterable(stackTrace) ? stackTrace.join(\"\\n\\n-----async gap-----\\n\") :\r\n stackTrace.toString();\r\n };\r\n /** @internal */\r\n ExceptionHandler.prototype._findContext = function (exception) {\r\n try {\r\n if (!(exception instanceof base_wrapped_exception_1.BaseWrappedException))\r\n return null;\r\n return lang_1.isPresent(exception.context) ? exception.context :\r\n this._findContext(exception.originalException);\r\n }\r\n catch (e) {\r\n // exception.context can throw an exception. if it happens, we ignore the context.\r\n return null;\r\n }\r\n };\r\n /** @internal */\r\n ExceptionHandler.prototype._findOriginalException = function (exception) {\r\n if (!(exception instanceof base_wrapped_exception_1.BaseWrappedException))\r\n return null;\r\n var e = exception.originalException;\r\n while (e instanceof base_wrapped_exception_1.BaseWrappedException && lang_1.isPresent(e.originalException)) {\r\n e = e.originalException;\r\n }\r\n return e;\r\n };\r\n /** @internal */\r\n ExceptionHandler.prototype._findOriginalStack = function (exception) {\r\n if (!(exception instanceof base_wrapped_exception_1.BaseWrappedException))\r\n return null;\r\n var e = exception;\r\n var stack = exception.originalStack;\r\n while (e instanceof base_wrapped_exception_1.BaseWrappedException && lang_1.isPresent(e.originalException)) {\r\n e = e.originalException;\r\n if (e instanceof base_wrapped_exception_1.BaseWrappedException && lang_1.isPresent(e.originalException)) {\r\n stack = e.originalStack;\r\n }\r\n }\r\n return stack;\r\n };\r\n return ExceptionHandler;\r\n})();\r\nexports.ExceptionHandler = ExceptionHandler;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uX2hhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbl9oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIl9BcnJheUxvZ2dlciIsIl9BcnJheUxvZ2dlci5jb25zdHJ1Y3RvciIsIl9BcnJheUxvZ2dlci5sb2ciLCJfQXJyYXlMb2dnZXIubG9nRXJyb3IiLCJfQXJyYXlMb2dnZXIubG9nR3JvdXAiLCJfQXJyYXlMb2dnZXIubG9nR3JvdXBFbmQiLCJFeGNlcHRpb25IYW5kbGVyIiwiRXhjZXB0aW9uSGFuZGxlci5jb25zdHJ1Y3RvciIsIkV4Y2VwdGlvbkhhbmRsZXIuZXhjZXB0aW9uVG9TdHJpbmciLCJFeGNlcHRpb25IYW5kbGVyLmNhbGwiLCJFeGNlcHRpb25IYW5kbGVyLl9leHRyYWN0TWVzc2FnZSIsIkV4Y2VwdGlvbkhhbmRsZXIuX2xvbmdTdGFja1RyYWNlIiwiRXhjZXB0aW9uSGFuZGxlci5fZmluZENvbnRleHQiLCJFeGNlcHRpb25IYW5kbGVyLl9maW5kT3JpZ2luYWxFeGNlcHRpb24iLCJFeGNlcHRpb25IYW5kbGVyLl9maW5kT3JpZ2luYWxTdGFjayJdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXdDLDBCQUEwQixDQUFDLENBQUE7QUFDbkUsdUNBQW1DLDRDQUE0QyxDQUFDLENBQUE7QUFDaEYsMkJBQThDLGdDQUFnQyxDQUFDLENBQUE7QUFFL0U7SUFBQUE7UUFDRUMsUUFBR0EsR0FBVUEsRUFBRUEsQ0FBQ0E7SUFLbEJBLENBQUNBO0lBSkNELDBCQUFHQSxHQUFIQSxVQUFJQSxDQUFNQSxJQUFVRSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUN2Q0YsK0JBQVFBLEdBQVJBLFVBQVNBLENBQU1BLElBQVVHLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENB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QSxTQUFjQTtRQUMvQlEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsU0FBU0EsWUFBWUEsNkNBQW9CQSxDQUFDQSxDQUFDQTtZQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtRQUU5REEsSUFBSUEsQ0FBQ0EsR0FBR0EsU0FBU0EsQ0FBQ0E7UUFDbEJBLElBQUlBLEtBQUtBLEdBQUdBLFNBQVNBLENBQUNBLGFBQWFBLENBQUNBO1FBQ3BDQSxPQUFPQSxDQUFDQSxZQUFZQSw2Q0FBb0JBLElBQUlBLGdCQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxpQkFBaUJBLENBQUNBLEVBQUVBLENBQUNBO1lBQzNFQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxpQkFBaUJBLENBQUNBO1lBQ3hCQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxZQUFZQSw2Q0FBb0JBLElBQUlBLGdCQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxpQkFBaUJBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUN4RUEsS0FBS0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsYUFBYUEsQ0FBQ0E7WUFDMUJBLENBQUNBO1FBQ0hBLENBQUNBO1FBRURBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO0lBQ2ZBLENBQUNBO0lBQ0hSLHVCQUFDQTtBQUFEQSxDQUFDQSxBQWxHRCxJQWtHQztBQWxHWSx3QkFBZ0IsbUJBa0c1QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1ByZXNlbnQsIGlzQmxhbmssIHByaW50fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlV3JhcHBlZEV4Y2VwdGlvbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9iYXNlX3dyYXBwZWRfZXhjZXB0aW9uJztcbmltcG9ydCB7TGlzdFdyYXBwZXIsIGlzTGlzdExpa2VJdGVyYWJsZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcblxuY2xhc3MgX0FycmF5TG9nZ2VyIHtcbiAgcmVzOiBhbnlbXSA9IFtdO1xuICBsb2coczogYW55KTogdm9pZCB7IHRoaXMucmVzLnB1c2gocyk7IH1cbiAgbG9nRXJyb3IoczogYW55KTogdm9pZCB7IHRoaXMucmVzLnB1c2gocyk7IH1cbiAgbG9nR3JvdXAoczogYW55KTogdm9pZCB7IHRoaXMucmVzLnB1c2gocyk7IH1cbiAgbG9nR3JvdXBFbmQoKXt9O1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGEgaG9vayBmb3IgY2VudHJhbGl6ZWQgZXhjZXB0aW9uIGhhbmRsaW5nLlxuICpcbiAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIGBFeGNlcHRpb25IYW5kbGVyYCBwcmludHMgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIGBDb25zb2xlYC4gVG9cbiAqIGludGVyY2VwdCBlcnJvciBoYW5kbGluZyxcbiAqIHdyaXRlIGEgY3VzdG9tIGV4Y2VwdGlvbiBoYW5kbGVyIHRoYXQgcmVwbGFjZXMgdGhpcyBkZWZhdWx0IGFzIGFwcHJvcHJpYXRlIGZvciB5b3VyIGFwcC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqXG4gKiBjbGFzcyBNeUV4Y2VwdGlvbkhhbmRsZXIgaW1wbGVtZW50cyBFeGNlcHRpb25IYW5kbGVyIHtcbiAqICAgY2FsbChlcnJvciwgc3RhY2tUcmFjZSA9IG51bGwsIHJlYXNvbiA9IG51bGwpIHtcbiAqICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgZXhjZXB0aW9uXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBib290c3RyYXAoTXlBcHAsIFtwcm92aWRlKEV4Y2VwdGlvbkhhbmRsZXIsIHt1c2VDbGFzczogTXlFeGNlcHRpb25IYW5kbGVyfSldKVxuICpcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgRXhjZXB0aW9uSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2xvZ2dlcjogYW55LCBwcml2YXRlIF9yZXRocm93RXhjZXB0aW9uOiBib29sZWFuID0gdHJ1ZSkge31cblxuICBzdGF0aWMgZXhjZXB0aW9uVG9TdHJpbmcoZXhjZXB0aW9uOiBhbnksIHN0YWNrVHJhY2U6IGFueSA9IG51bGwsIHJlYXNvbjogc3RyaW5nID0gbnVsbCk6IHN0cmluZyB7XG4gICAgdmFyIGwgPSBuZXcgX0FycmF5TG9nZ2VyKCk7XG4gICAgdmFyIGUgPSBuZXcgRXhjZXB0aW9uSGFuZGxlcihsLCBmYWxzZSk7XG4gICAgZS5jYWxsKGV4Y2VwdGlvbiwgc3RhY2tUcmFjZSwgcmVhc29uKTtcbiAgICByZXR1cm4gbC5yZXMuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIGNhbGwoZXhjZXB0aW9uOiBhbnksIHN0YWNrVHJhY2U6IGFueSA9IG51bGwsIHJlYXNvbjogc3RyaW5nID0gbnVsbCk6IHZvaWQge1xuICAgIHZhciBvcmlnaW5hbEV4Y2VwdGlvbiA9IHRoaXMuX2ZpbmRPcmlnaW5hbEV4Y2VwdGlvbihleGNlcHRpb24pO1xuICAgIHZhciBvcmlnaW5hbFN0YWNrID0gdGhpcy5fZmluZE9yaWdpbmFsU3RhY2soZXhjZXB0aW9uKTtcbiAgICB2YXIgY29udGV4dCA9IHRoaXMuX2ZpbmRDb250ZXh0KGV4Y2VwdGlvbik7XG5cbiAgICB0aGlzLl9sb2dnZXIubG9nR3JvdXAoYEVYQ0VQVElPTjogJHt0aGlzLl9leHRyYWN0TWVzc2FnZShleGNlcHRpb24pfWApO1xuXG4gICAgaWYgKGlzUHJlc2VudChzdGFja1RyYWNlKSAmJiBpc0JsYW5rKG9yaWdpbmFsU3RhY2spKSB7XG4gICAgICB0aGlzLl9sb2dnZXIubG9nRXJyb3IoXCJTVEFDS1RSQUNFOlwiKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5sb2dFcnJvcih0aGlzLl9sb25nU3RhY2tUcmFjZShzdGFja1RyYWNlKSk7XG4gICAgfVxuXG4gICAgaWYgKGlzUHJlc2VudChyZWFzb24pKSB7XG4gICAgICB0aGlzLl9sb2dnZXIubG9nRXJyb3IoYFJFQVNPTjogJHtyZWFzb259YCk7XG4gICAgfVxuXG4gICAgaWYgKGlzUHJlc2VudChvcmlnaW5hbEV4Y2VwdGlvbikpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5sb2dFcnJvcihgT1JJR0lOQUwgRVhDRVBUSU9OOiAke3RoaXMuX2V4dHJhY3RNZXNzYWdlKG9yaWdpbmFsRXhjZXB0aW9uKX1gKTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmVzZW50KG9yaWdpbmFsU3RhY2spKSB7XG4gICAgICB0aGlzLl9sb2dnZXIubG9nRXJyb3IoXCJPUklHSU5BTCBTVEFDS1RSQUNFOlwiKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5sb2dFcnJvcih0aGlzLl9sb25nU3RhY2tUcmFjZShvcmlnaW5hbFN0YWNrKSk7XG4gICAgfVxuXG4gICAgaWYgKGlzUHJlc2VudChjb250ZXh0KSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmxvZ0Vycm9yKFwiRVJST1IgQ09OVEVYVDpcIik7XG4gICAgICB0aGlzLl9sb2dnZXIubG9nRXJyb3IoY29udGV4dCk7XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmxvZ0dyb3VwRW5kKCk7XG5cbiAgICAvLyBXZSByZXRocm93IGV4Y2VwdGlvbnMsIHNvIG9wZXJhdGlvbnMgbGlrZSAnYm9vdHN0cmFwJyB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvclxuICAgIC8vIHdoZW4gYW4gZXhjZXB0aW9uIGhhcHBlbnMuIElmIHdlIGRvIG5vdCByZXRocm93LCBib290c3RyYXAgd2lsbCBhbHdheXMgc3VjY2VlZC5cbiAgICBpZiAodGhpcy5fcmV0aHJvd0V4Y2VwdGlvbikgdGhyb3cgZXhjZXB0aW9uO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZXh0cmFjdE1lc3NhZ2UoZXhjZXB0aW9uOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBleGNlcHRpb24gaW5zdGFuY2VvZiBCYXNlV3JhcHBlZEV4Y2VwdGlvbiA/IGV4Y2VwdGlvbi53cmFwcGVyTWVzc2FnZSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9sb25nU3RhY2tUcmFjZShzdGFja1RyYWNlOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBpc0xpc3RMaWtlSXRlcmFibGUoc3RhY2tUcmFjZSkgPyAoPGFueVtdPnN0YWNrVHJhY2UpLmpvaW4oXCJcXG5cXG4tLS0tLWFzeW5jIGdhcC0tLS0tXFxuXCIpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tUcmFjZS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZmluZENvbnRleHQoZXhjZXB0aW9uOiBhbnkpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIShleGNlcHRpb24gaW5zdGFuY2VvZiBCYXNlV3JhcHBlZEV4Y2VwdGlvbikpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIGlzUHJlc2VudChleGNlcHRpb24uY29udGV4dCkgPyBleGNlcHRpb24uY29udGV4dCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmRDb250ZXh0KGV4Y2VwdGlvbi5vcmlnaW5hbEV4Y2VwdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZXhjZXB0aW9uLmNvbnRleHQgY2FuIHRocm93IGFuIGV4Y2VwdGlvbi4gaWYgaXQgaGFwcGVucywgd2UgaWdub3JlIHRoZSBjb250ZXh0LlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZmluZE9yaWdpbmFsRXhjZXB0aW9uKGV4Y2VwdGlvbjogYW55KTogYW55IHtcbiAgICBpZiAoIShleGNlcHRpb24gaW5zdGFuY2VvZiBCYXNlV3JhcHBlZEV4Y2VwdGlvbikpIHJldHVybiBudWxsO1xuXG4gICAgdmFyIGUgPSBleGNlcHRpb24ub3JpZ2luYWxFeGNlcHRpb247XG4gICAgd2hpbGUgKGUgaW5zdGFuY2VvZiBCYXNlV3JhcHBlZEV4Y2VwdGlvbiAmJiBpc1ByZXNlbnQoZS5vcmlnaW5hbEV4Y2VwdGlvbikpIHtcbiAgICAgIGUgPSBlLm9yaWdpbmFsRXhjZXB0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBlO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZmluZE9yaWdpbmFsU3RhY2soZXhjZXB0aW9uOiBhbnkpOiBhbnkge1xuICAgIGlmICghKGV4Y2VwdGlvbiBpbnN0YW5jZW9mIEJhc2VXcmFwcGVkRXhjZXB0aW9uKSkgcmV0dXJuIG51bGw7XG5cbiAgICB2YXIgZSA9IGV4Y2VwdGlvbjtcbiAgICB2YXIgc3RhY2sgPSBleGNlcHRpb24ub3JpZ2luYWxTdGFjaztcbiAgICB3aGlsZSAoZSBpbnN0YW5jZW9mIEJhc2VXcmFwcGVkRXhjZXB0aW9uICYmIGlzUHJlc2VudChlLm9yaWdpbmFsRXhjZXB0aW9uKSkge1xuICAgICAgZSA9IGUub3JpZ2luYWxFeGNlcHRpb247XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEJhc2VXcmFwcGVkRXhjZXB0aW9uICYmIGlzUHJlc2VudChlLm9yaWdpbmFsRXhjZXB0aW9uKSkge1xuICAgICAgICBzdGFjayA9IGUub3JpZ2luYWxTdGFjaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar base_wrapped_exception_1 = require('./base_wrapped_exception');\r\nvar exception_handler_1 = require('./exception_handler');\r\nvar exception_handler_2 = require('./exception_handler');\r\nexports.ExceptionHandler = exception_handler_2.ExceptionHandler;\r\nvar BaseException = (function (_super) {\r\n __extends(BaseException, _super);\r\n function BaseException(message) {\r\n if (message === void 0) { message = \"--\"; }\r\n _super.call(this, message);\r\n this.message = message;\r\n this.stack = (new Error(message)).stack;\r\n }\r\n BaseException.prototype.toString = function () { return this.message; };\r\n return BaseException;\r\n})(Error);\r\nexports.BaseException = BaseException;\r\n/**\r\n * Wraps an exception and provides additional context or information.\r\n */\r\nvar WrappedException = (function (_super) {\r\n __extends(WrappedException, _super);\r\n function WrappedException(_wrapperMessage, _originalException, _originalStack, _context) {\r\n _super.call(this, _wrapperMessage);\r\n this._wrapperMessage = _wrapperMessage;\r\n this._originalException = _originalException;\r\n this._originalStack = _originalStack;\r\n this._context = _context;\r\n this._wrapperStack = (new Error(_wrapperMessage)).stack;\r\n }\r\n Object.defineProperty(WrappedException.prototype, \"wrapperMessage\", {\r\n get: function () { return this._wrapperMessage; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WrappedException.prototype, \"wrapperStack\", {\r\n get: function () { return this._wrapperStack; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WrappedException.prototype, \"originalException\", {\r\n get: function () { return this._originalException; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WrappedException.prototype, \"originalStack\", {\r\n get: function () { return this._originalStack; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WrappedException.prototype, \"context\", {\r\n get: function () { return this._context; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WrappedException.prototype, \"message\", {\r\n get: function () { return exception_handler_1.ExceptionHandler.exceptionToString(this); },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n WrappedException.prototype.toString = function () { return this.message; };\r\n return WrappedException;\r\n})(base_wrapped_exception_1.BaseWrappedException);\r\nexports.WrappedException = WrappedException;\r\nfunction makeTypeError(message) {\r\n return new TypeError(message);\r\n}\r\nexports.makeTypeError = makeTypeError;\r\nfunction unimplemented() {\r\n throw new BaseException('unimplemented');\r\n}\r\nexports.unimplemented = unimplemented;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9mYWNhZGUvZXhjZXB0aW9ucy50cyJdLCJuYW1lcyI6WyJCYXNlRXhjZXB0aW9uIiwiQmFzZUV4Y2VwdGlvbi5jb25zdHJ1Y3RvciIsIkJhc2VFeGNlcHRpb24udG9TdHJpbmciLCJXcmFwcGVkRXhjZXB0aW9uIiwiV3JhcHBlZEV4Y2VwdGlvbi5jb25zdHJ1Y3RvciIsIldyYXBwZWRFeGNlcHRpb24ud3JhcHBlck1lc3NhZ2UiLCJXcmFwcGVkRXhjZXB0aW9uLndyYXBwZXJTdGFjayIsIldyYXBwZWRFeGNlcHRpb24ub3JpZ2luYWxFeGNlcHRpb24iLCJXcmFwcGVkRXhjZXB0aW9uLm9yaWdpbmFsU3RhY2siLCJXcmFwcGVkRXhjZXB0aW9uLmNvbnRleHQiLCJXcmFwcGVkRXhjZXB0aW9uLm1lc3NhZ2UiLCJXcmFwcGVkRXhjZXB0aW9uLnRvU3RyaW5nIiwibWFrZVR5cGVFcnJvciIsInVuaW1wbGVtZW50ZWQiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdUNBQW1DLDBCQUEwQixDQUFDLENBQUE7QUFDOUQsa0NBQStCLHFCQUFxQixDQUFDLENBQUE7QUFFckQsa0NBQStCLHFCQUFxQixDQUFDO0FBQTdDLGdFQUE2QztBQUVyRDtJQUFtQ0EsaUNBQUtBO0lBRXRDQSx1QkFBbUJBLE9BQXNCQTtRQUE3QkMsdUJBQTZCQSxHQUE3QkEsY0FBNkJBO1FBQ3ZDQSxrQkFBTUEsT0FBT0EsQ0FBQ0EsQ0FBQ0E7UUFERUEsWUFBT0EsR0FBUEEsT0FBT0EsQ0FBZUE7UUFFdkNBLElBQUlBLENBQUNBLEtBQUtBLEdBQUdBLENBQU1BLElBQUlBLEtBQUtBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBLENBQUNBLEtBQUtBLENBQUNBO0lBQy9DQSxDQUFDQTtJQUVERCxnQ0FBUUEsR0FBUkEsY0FBcUJFLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBLENBQUNBO0lBQzdDRixvQkFBQ0E7QUFBREEsQ0FBQ0EsQUFSRCxFQUFtQyxLQUFLLEVBUXZDO0FBUlkscUJBQWEsZ0JBUXpCLENBQUE7QUFFRDs7R0FFRztBQUNIO0lBQXNDRyxvQ0FBb0JBO0lBR3hEQSwwQkFBb0JBLGVBQXVCQSxFQUFVQSxrQkFBa0JBLEVBQVVBLGNBQWVBLEVBQzVFQSxRQUFTQTtRQUMzQkMsa0JBQU1BLGVBQWVBLENBQUNBLENBQUNBO1FBRkxBLG9CQUFlQSxHQUFmQSxlQUFlQSxDQUFRQTtRQUFVQSx1QkFBa0JBLEdBQWxCQSxrQkFBa0JBLENBQUFBO1FBQVVBLG1CQUFjQSxHQUFkQSxjQUFjQSxDQUFDQTtRQUM1RUEsYUFBUUEsR0FBUkEsUUFBUUEsQ0FBQ0E7UUFFM0JBLElBQUlBLENBQUNBLGFBQWFBLEdBQUdBLENBQU1BLElBQUlBLEtBQUtBLENBQUNBLGVBQWVBLENBQUNBLENBQUNBLENBQUNBLEtBQUtBLENBQUNBO0lBQy9EQSxDQUFDQTtJQUVERCxzQkFBSUEsNENBQWNBO2FBQWxCQSxjQUErQkUsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsZUFBZUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBRjtJQUU3REEsc0JBQUlBLDBDQUFZQTthQUFoQkEsY0FBMEJHLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLGFBQWFBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQUg7SUFHdERBLHNCQUFJQSwrQ0FBaUJBO2FBQXJCQSxjQUErQkksTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0Esa0JBQWtCQSxDQUFDQSxDQUFDQSxDQUFDQTs7O09BQUFKO0lBRWhFQSxzQkFBSUEsMkNBQWFBO2FBQWpCQSxjQUEyQkssTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBTDtJQUd4REEsc0JBQUlBLHFDQUFPQTthQUFYQSxjQUFxQk0sTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7OztPQUFBTjtJQUU1Q0Esc0JBQUlBLHFDQUFPQTthQUFYQSxjQUF3Qk8sTUFBTUEsQ0FBQ0Esb0NBQWdCQSxDQUFDQSxpQkFBaUJBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBOzs7T0FBQVA7SUFFMUVBLG1DQUFRQSxHQUFSQSxjQUFxQlEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDN0NSLHVCQUFDQTtBQUFEQSxDQUFDQSxBQXhCRCxFQUFzQyw2Q0FBb0IsRUF3QnpEO0FBeEJZLHdCQUFnQixtQkF3QjVCLENBQUE7QUFFRCx1QkFBOEIsT0FBZ0I7SUFDNUNTLE1BQU1BLENBQUNBLElBQUlBLFNBQVNBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBO0FBQ2hDQSxDQUFDQTtBQUZlLHFCQUFhLGdCQUU1QixDQUFBO0FBRUQ7SUFDRUMsTUFBTUEsSUFBSUEsYUFBYUEsQ0FBQ0EsZUFBZUEsQ0FBQ0EsQ0FBQ0E7QUFDM0NBLENBQUNBO0FBRmUscUJBQWEsZ0JBRTVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Jhc2VXcmFwcGVkRXhjZXB0aW9ufSBmcm9tICcuL2Jhc2Vfd3JhcHBlZF9leGNlcHRpb24nO1xuaW1wb3J0IHtFeGNlcHRpb25IYW5kbGVyfSBmcm9tICcuL2V4Y2VwdGlvbl9oYW5kbGVyJztcblxuZXhwb3J0IHtFeGNlcHRpb25IYW5kbGVyfSBmcm9tICcuL2V4Y2VwdGlvbl9oYW5kbGVyJztcblxuZXhwb3J0IGNsYXNzIEJhc2VFeGNlcHRpb24gZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyBzdGFjazogYW55O1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWVzc2FnZTogc3RyaW5nID0gXCItLVwiKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5zdGFjayA9ICg8YW55Pm5ldyBFcnJvcihtZXNzYWdlKSkuc3RhY2s7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5tZXNzYWdlOyB9XG59XG5cbi8qKlxuICogV3JhcHMgYW4gZXhjZXB0aW9uIGFuZCBwcm92aWRlcyBhZGRpdGlvbmFsIGNvbnRleHQgb3IgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBXcmFwcGVkRXhjZXB0aW9uIGV4dGVuZHMgQmFzZVdyYXBwZWRFeGNlcHRpb24ge1xuICBwcml2YXRlIF93cmFwcGVyU3RhY2s6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF93cmFwcGVyTWVzc2FnZTogc3RyaW5nLCBwcml2YXRlIF9vcmlnaW5hbEV4Y2VwdGlvbiwgcHJpdmF0ZSBfb3JpZ2luYWxTdGFjaz8sXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NvbnRleHQ/KSB7XG4gICAgc3VwZXIoX3dyYXBwZXJNZXNzYWdlKTtcbiAgICB0aGlzLl93cmFwcGVyU3RhY2sgPSAoPGFueT5uZXcgRXJyb3IoX3dyYXBwZXJNZXNzYWdlKSkuc3RhY2s7XG4gIH1cblxuICBnZXQgd3JhcHBlck1lc3NhZ2UoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3dyYXBwZXJNZXNzYWdlOyB9XG5cbiAgZ2V0IHdyYXBwZXJTdGFjaygpOiBhbnkgeyByZXR1cm4gdGhpcy5fd3JhcHBlclN0YWNrOyB9XG5cblxuICBnZXQgb3JpZ2luYWxFeGNlcHRpb24oKTogYW55IHsgcmV0dXJuIHRoaXMuX29yaWdpbmFsRXhjZXB0aW9uOyB9XG5cbiAgZ2V0IG9yaWdpbmFsU3RhY2soKTogYW55IHsgcmV0dXJuIHRoaXMuX29yaWdpbmFsU3RhY2s7IH1cblxuXG4gIGdldCBjb250ZXh0KCk6IGFueSB7IHJldHVybiB0aGlzLl9jb250ZXh0OyB9XG5cbiAgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHsgcmV0dXJuIEV4Y2VwdGlvbkhhbmRsZXIuZXhjZXB0aW9uVG9TdHJpbmcodGhpcyk7IH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5tZXNzYWdlOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlVHlwZUVycm9yKG1lc3NhZ2U/OiBzdHJpbmcpOiBFcnJvciB7XG4gIHJldHVybiBuZXcgVHlwZUVycm9yKG1lc3NhZ2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pbXBsZW1lbnRlZCgpOiBhbnkge1xuICB0aHJvdyBuZXcgQmFzZUV4Y2VwdGlvbigndW5pbXBsZW1lbnRlZCcpO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar exceptions_1 = require('angular2/src/facade/exceptions');\r\nvar ReflectionCapabilities = (function () {\r\n function ReflectionCapabilities(reflect) {\r\n this._reflect = lang_1.isPresent(reflect) ? reflect : lang_1.global.Reflect;\r\n }\r\n ReflectionCapabilities.prototype.isReflectionEnabled = function () { return true; };\r\n ReflectionCapabilities.prototype.factory = function (t) {\r\n switch (t.length) {\r\n case 0:\r\n return function () { return new t(); };\r\n case 1:\r\n return function (a1) { return new t(a1); };\r\n case 2:\r\n return function (a1, a2) { return new t(a1, a2); };\r\n case 3:\r\n return function (a1, a2, a3) { return new t(a1, a2, a3); };\r\n case 4:\r\n return function (a1, a2, a3, a4) { return new t(a1, a2, a3, a4); };\r\n case 5:\r\n return function (a1, a2, a3, a4, a5) { return new t(a1, a2, a3, a4, a5); };\r\n case 6:\r\n return function (a1, a2, a3, a4, a5, a6) {\r\n return new t(a1, a2, a3, a4, a5, a6);\r\n };\r\n case 7:\r\n return function (a1, a2, a3, a4, a5, a6, a7) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7);\r\n };\r\n case 8:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8);\r\n };\r\n case 9:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9);\r\n };\r\n case 10:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);\r\n };\r\n case 11:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);\r\n };\r\n case 12:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);\r\n };\r\n case 13:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);\r\n };\r\n case 14:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);\r\n };\r\n case 15:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);\r\n };\r\n case 16:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16);\r\n };\r\n case 17:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17);\r\n };\r\n case 18:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18);\r\n };\r\n case 19:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19);\r\n };\r\n case 20:\r\n return function (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) {\r\n return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);\r\n };\r\n }\r\n ;\r\n throw new Error(\"Cannot create a factory for '\" + lang_1.stringify(t) + \"' because its constructor has more than 20 arguments\");\r\n };\r\n /** @internal */\r\n ReflectionCapabilities.prototype._zipTypesAndAnnotations = function (paramTypes, paramAnnotations) {\r\n var result;\r\n if (typeof paramTypes === 'undefined') {\r\n result = new Array(paramAnnotations.length);\r\n }\r\n else {\r\n result = new Array(paramTypes.length);\r\n }\r\n for (var i = 0; i < result.length; i++) {\r\n // TS outputs Object for parameters without types, while Traceur omits\r\n // the annotations. For now we preserve the Traceur behavior to aid\r\n // migration, but this can be revisited.\r\n if (typeof paramTypes === 'undefined') {\r\n result[i] = [];\r\n }\r\n else if (paramTypes[i] != Object) {\r\n result[i] = [paramTypes[i]];\r\n }\r\n else {\r\n result[i] = [];\r\n }\r\n if (lang_1.isPresent(paramAnnotations) && lang_1.isPresent(paramAnnotations[i])) {\r\n result[i] = result[i].concat(paramAnnotations[i]);\r\n }\r\n }\r\n return result;\r\n };\r\n ReflectionCapabilities.prototype.parameters = function (typeOrFunc) {\r\n // Prefer the direct API.\r\n if (lang_1.isPresent(typeOrFunc.parameters)) {\r\n return typeOrFunc.parameters;\r\n }\r\n if (lang_1.isPresent(this._reflect) && lang_1.isPresent(this._reflect.getMetadata)) {\r\n var paramAnnotations = this._reflect.getMetadata('parameters', typeOrFunc);\r\n var paramTypes = this._reflect.getMetadata('design:paramtypes', typeOrFunc);\r\n if (lang_1.isPresent(paramTypes) || lang_1.isPresent(paramAnnotations)) {\r\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\r\n }\r\n }\r\n // The array has to be filled with `undefined` because holes would be skipped by `some`\r\n var parameters = new Array(typeOrFunc.length);\r\n parameters.fill(undefined);\r\n return parameters;\r\n };\r\n ReflectionCapabilities.prototype.annotations = function (typeOrFunc) {\r\n // Prefer the direct API.\r\n if (lang_1.isPresent(typeOrFunc.annotations)) {\r\n var annotations = typeOrFunc.annotations;\r\n if (lang_1.isFunction(annotations) && annotations.annotations) {\r\n annotations = annotations.annotations;\r\n }\r\n return annotations;\r\n }\r\n if (lang_1.isPresent(this._reflect) && lang_1.isPresent(this._reflect.getMetadata)) {\r\n var annotations = this._reflect.getMetadata('annotations', typeOrFunc);\r\n if (lang_1.isPresent(annotations))\r\n return annotations;\r\n }\r\n return [];\r\n };\r\n ReflectionCapabilities.prototype.propMetadata = function (typeOrFunc) {\r\n // Prefer the direct API.\r\n if (lang_1.isPresent(typeOrFunc.propMetadata)) {\r\n var propMetadata = typeOrFunc.propMetadata;\r\n if (lang_1.isFunction(propMetadata) && propMetadata.propMetadata) {\r\n propMetadata = propMetadata.propMetadata;\r\n }\r\n return propMetadata;\r\n }\r\n if (lang_1.isPresent(this._reflect) && lang_1.isPresent(this._reflect.getMetadata)) {\r\n var propMetadata = this._reflect.getMetadata('propMetadata', typeOrFunc);\r\n if (lang_1.isPresent(propMetadata))\r\n return propMetadata;\r\n }\r\n return {};\r\n };\r\n ReflectionCapabilities.prototype.interfaces = function (type) {\r\n throw new exceptions_1.BaseException(\"JavaScript does not support interfaces\");\r\n };\r\n ReflectionCapabilities.prototype.getter = function (name) { return new Function('o', 'return o.' + name + ';'); };\r\n ReflectionCapabilities.prototype.setter = function (name) {\r\n return new Function('o', 'v', 'return o.' + name + ' = v;');\r\n };\r\n ReflectionCapabilities.prototype.method = function (name) {\r\n var functionBody = \"if (!o.\" + name + \") throw new Error('\\\"\" + name + \"\\\" is undefined');\\n return o.\" + name + \".apply(o, args);\";\r\n return new Function('o', 'args', functionBody);\r\n };\r\n // There is not a concept of import uri in Js, but this is useful in developing Dart applications.\r\n ReflectionCapabilities.prototype.importUri = function (type) { return './'; };\r\n return ReflectionCapabilities;\r\n})();\r\nexports.ReflectionCapabilities = ReflectionCapabilities;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdGlvbl9jYXBhYmlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29yZS9yZWZsZWN0aW9uL3JlZmxlY3Rpb25fY2FwYWJpbGl0aWVzLnRzIl0sIm5hbWVzIjpbIlJlZmxlY3Rpb25DYXBhYmlsaXRpZXMiLCJSZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmNvbnN0cnVjdG9yIiwiUmVmbGVjdGlvbkNhcGFiaWxpdGllcy5pc1JlZmxlY3Rpb25FbmFibGVkIiwiUmVmbGVjdGlvbkNhcGFiaWxpdGllcy5mYWN0b3J5IiwiUmVmbGVjdGlvbkNhcGFiaWxpdGllcy5femlwVHlwZXNBbmRBbm5vdGF0aW9ucyIsIlJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucGFyYW1ldGVycyIsIlJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuYW5ub3RhdGlvbnMiLCJSZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnByb3BNZXRhZGF0YSIsIlJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuaW50ZXJmYWNlcyIsIlJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuZ2V0dGVyIiwiUmVmbGVjdGlvbkNhcGFiaWxpdGllcy5zZXR0ZXIiLCJSZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLm1ldGhvZCIsIlJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuaW1wb3J0VXJpIl0sIm1hcHBpbmdzIjoiQUFBQSxxQkFPTywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBSTdEO0lBR0VBLGdDQUFZQSxPQUFhQTtRQUFJQyxJQUFJQSxDQUFDQSxRQUFRQSxHQUFHQSxnQkFBU0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsR0FBR0EsT0FBT0EsR0FBR0EsYUFBTUEsQ0FBQ0EsT0FBT0EsQ0FBQ0E7SUFBQ0EsQ0FBQ0E7SUFFN0ZELG9EQUFtQkEsR0FBbkJBLGNBQWlDRSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUUvQ0Ysd0NBQU9BLEdBQVBB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S0EsRUFBRUE7Z0JBQ0xBLE1BQU1BLENBQUNBLFVBQUNBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQy9FQSxHQUFRQSxFQUFFQSxHQUFRQSxFQUFFQSxHQUFRQTsyQkFDekJBLElBQUlBLENBQUNBLENBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLENBQUNBO2dCQUF4REEsQ0FBd0RBLENBQUNBO1lBQ3RFQSxLQUFLQSxFQUFFQTtnQkFDTEEsTUFBTUEsQ0FBQ0EsVUFBQ0EsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFDL0VBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBOzJCQUNuQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0E7Z0JBQTdEQSxDQUE2REEsQ0FBQ0E7WUFDM0VBLEtBQUtBLEVBQUVBO2dCQUNMQSxNQUFNQSxDQUFDQSxVQUFDQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUMvRUEsR0FBUUEsRUFBRUEsR0FBUUEsRUFBRUEsR0FBUUEsRUFBRUEsR0FBUUEsRUFBRUEsR0FBUUE7MkJBQzdDQSxJQUFJQSxDQUFDQSxDQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxDQUFDQTtnQkFBbEVBLENBQWtFQSxDQUFDQTtZQUNoRkEsS0FBS0EsRUFBRUE7Z0JBQ0xBLE1BQU1BLENBQUNBLFVBQUNBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQy9FQSxHQUFRQSxFQUFFQSxHQUFRQSxFQUFFQSxHQUFRQSxFQUFFQSxHQUFRQSxFQUFFQSxHQUFRQSxFQUFFQSxHQUFRQTsyQkFDdkRBLElBQUlBLENBQUNBLENBQUNBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLENBQUNBO2dCQUF2RUEsQ0FBdUVBLENBQUNBO1lBQ3JGQSxLQUFLQSxFQUFFQTtnQkFDTEEsTUFBTUEsQ0FBQ0EsVUFBQ0EsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFDL0VBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBOzJCQUNqRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0E7Z0JBQTVFQSxDQUE0RUEsQ0FBQ0E7WUFDMUZBLEtBQUtBLEVBQUVBO2dCQUNMQSxNQUFNQSxDQUFDQSxVQUFDQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUFFQSxFQUFPQSxFQUMvRUEsR0FBUUEsRUFBRUEsR0FBUUEsRUFBRUEsR0FBUUEsRUFBRUEsR0FBUUEsRUFBRUEsR0FBUUEsRUFBRUEsR0FBUUEsRUFBRUEsR0FBUUEsRUFBRUEsR0FBUUE7MkJBQzNFQSxJQUFJQSxDQUFDQSxDQUFDQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUFFQSxHQUFHQSxFQUNyRUEsR0FBR0EsQ0FBQ0E7Z0JBRFZBLENBQ1VBLENBQUNBO1lBQ3hCQSxLQUFLQSxFQUFFQTtnQkFDTEEsTUFBTUEsQ0FBQ0EsVUFBQ0EsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFDL0VBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQzlFQSxHQUFRQTsyQkFBS0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFDaEVBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLENBQUNBO2dCQURwQkEsQ0FDb0JBLENBQUNBO1lBQzVDQSxLQUFLQSxFQUFFQTtnQkFDTEEsTUFBTUEsQ0FBQ0EsVUFBQ0EsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFBRUEsRUFBT0EsRUFDL0VBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQUVBLEdBQVFBLEVBQzlFQSxHQUFRQSxFQUFFQSxHQUFRQTsyQkFBS0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFBRUEsR0FBR0EsRUFDdERBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLEdB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LEdBQUdBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBRWhHVCx1Q0FBTUEsR0FBTkEsVUFBT0EsSUFBWUE7UUFDakJVLE1BQU1BLENBQVdBLElBQUlBLFFBQVFBLENBQUNBLEdBQUdBLEVBQUVBLEdBQUdBLEVBQUVBLFdBQVdBLEdBQUdBLElBQUlBLEdBQUdBLE9BQU9BLENBQUNBLENBQUNBO0lBQ3hFQSxDQUFDQTtJQUVEVix1Q0FBTUEsR0FBTkEsVUFBT0EsSUFBWUE7UUFDakJXLElBQUlBLFlBQVlBLEdBQUdBLFlBQVVBLElBQUlBLDZCQUF1QkEsSUFBSUEsNkNBQzdDQSxJQUFJQSxxQkFBa0JBLENBQUNBO1FBQ3RDQSxNQUFNQSxDQUFXQSxJQUFJQSxRQUFRQSxDQUFDQSxHQUFHQSxFQUFFQSxNQUFNQSxFQUFFQSxZQUFZQSxDQUFDQSxDQUFDQTtJQUMzREEsQ0FBQ0E7SUFFRFgsa0dBQWtHQTtJQUNsR0EsMENBQVNBLEdBQVRBLFVBQVVBLElBQVVBLElBQVlZLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBO0lBQ2hEWiw2QkFBQ0E7QUFBREEsQ0FBQ0EsQUFyTEQsSUFxTEM7QUFyTFksOEJBQXNCLHlCQXFMbEMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFR5cGUsXG4gIGlzUHJlc2VudCxcbiAgaXNGdW5jdGlvbixcbiAgZ2xvYmFsLFxuICBzdHJpbmdpZnksXG4gIENvbmNyZXRlVHlwZVxufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9ufSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHtHZXR0ZXJGbiwgU2V0dGVyRm4sIE1ldGhvZEZufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7UGxhdGZvcm1SZWZsZWN0aW9uQ2FwYWJpbGl0aWVzfSBmcm9tICcuL3BsYXRmb3JtX3JlZmxlY3Rpb25fY2FwYWJpbGl0aWVzJztcblxuZXhwb3J0IGNsYXNzIFJlZmxlY3Rpb25DYXBhYmlsaXRpZXMgaW1wbGVtZW50cyBQbGF0Zm9ybVJlZmxlY3Rpb25DYXBhYmlsaXRpZXMge1xuICBwcml2YXRlIF9yZWZsZWN0OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocmVmbGVjdD86IGFueSkgeyB0aGlzLl9yZWZsZWN0ID0gaXNQcmVzZW50KHJlZmxlY3QpID8gcmVmbGVjdCA6IGdsb2JhbC5SZWZsZWN0OyB9XG5cbiAgaXNSZWZsZWN0aW9uRW5hYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRydWU7IH1cblxuICBmYWN0b3J5KHQ6IENvbmNyZXRlVHlwZSk6IEZ1bmN0aW9uIHtcbiAgICBzd2l0Y2ggKHQubGVuZ3RoKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIHJldHVybiAoKSA9PiBuZXcgdCgpO1xuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gKGExOiBhbnkpID0+IG5ldyB0KGExKTtcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55KSA9PiBuZXcgdChhMSwgYTIpO1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gKGExOiBhbnksIGEyOiBhbnksIGEzOiBhbnkpID0+IG5ldyB0KGExLCBhMiwgYTMpO1xuICAgICAgY2FzZSA0OlxuICAgICAgICByZXR1cm4gKGExOiBhbnksIGEyOiBhbnksIGEzOiBhbnksIGE0OiBhbnkpID0+IG5ldyB0KGExLCBhMiwgYTMsIGE0KTtcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55LCBhMzogYW55LCBhNDogYW55LCBhNTogYW55KSA9PiBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUpO1xuICAgICAgY2FzZSA2OlxuICAgICAgICByZXR1cm4gKGExOiBhbnksIGEyOiBhbnksIGEzOiBhbnksIGE0OiBhbnksIGE1OiBhbnksIGE2OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgbmV3IHQoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIHJldHVybiAoYTE6IGFueSwgYTI6IGFueSwgYTM6IGFueSwgYTQ6IGFueSwgYTU6IGFueSwgYTY6IGFueSwgYTc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7XG4gICAgICBjYXNlIDg6XG4gICAgICAgIHJldHVybiAoYTE6IGFueSwgYTI6IGFueSwgYTM6IGFueSwgYTQ6IGFueSwgYTU6IGFueSwgYTY6IGFueSwgYTc6IGFueSwgYTg6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpO1xuICAgICAgY2FzZSA5OlxuICAgICAgICByZXR1cm4gKGExOiBhbnksIGEyOiBhbnksIGEzOiBhbnksIGE0OiBhbnksIGE1OiBhbnksIGE2OiBhbnksIGE3OiBhbnksIGE4OiBhbnksIGE5OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgbmV3IHQoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7XG4gICAgICBjYXNlIDEwOlxuICAgICAgICByZXR1cm4gKGExOiBhbnksIGEyOiBhbnksIGEzOiBhbnksIGE0OiBhbnksIGE1OiBhbnksIGE2OiBhbnksIGE3OiBhbnksIGE4OiBhbnksIGE5OiBhbnksXG4gICAgICAgICAgICAgICAgYTEwOiBhbnkpID0+IG5ldyB0KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCk7XG4gICAgICBjYXNlIDExOlxuICAgICAgICByZXR1cm4gKGExOiBhbnksIGEyOiBhbnksIGEzOiBhbnksIGE0OiBhbnksIGE1OiBhbnksIGE2OiBhbnksIGE3OiBhbnksIGE4OiBhbnksIGE5OiBhbnksXG4gICAgICAgICAgICAgICAgYTEwOiBhbnksIGExMTogYW55KSA9PiBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTAsIGExMSk7XG4gICAgICBjYXNlIDEyOlxuICAgICAgICByZXR1cm4gKGExOiBhbnksIGEyOiBhbnksIGEzOiBhbnksIGE0OiBhbnksIGE1OiBhbnksIGE2OiBhbnksIGE3OiBhbnksIGE4OiBhbnksIGE5OiBhbnksXG4gICAgICAgICAgICAgICAgYTEwOiBhbnksIGExMTogYW55LCBhMTI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTAsIGExMSwgYTEyKTtcbiAgICAgIGNhc2UgMTM6XG4gICAgICAgIHJldHVybiAoYTE6IGFueSwgYTI6IGFueSwgYTM6IGFueSwgYTQ6IGFueSwgYTU6IGFueSwgYTY6IGFueSwgYTc6IGFueSwgYTg6IGFueSwgYTk6IGFueSxcbiAgICAgICAgICAgICAgICBhMTA6IGFueSwgYTExOiBhbnksIGExMjogYW55LCBhMTM6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMpO1xuICAgICAgY2FzZSAxNDpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55LCBhMzogYW55LCBhNDogYW55LCBhNTogYW55LCBhNjogYW55LCBhNzogYW55LCBhODogYW55LCBhOTogYW55LFxuICAgICAgICAgICAgICAgIGExMDogYW55LCBhMTE6IGFueSwgYTEyOiBhbnksIGExMzogYW55LCBhMTQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCk7XG4gICAgICBjYXNlIDE1OlxuICAgICAgICByZXR1cm4gKGExOiBhbnksIGEyOiBhbnksIGEzOiBhbnksIGE0OiBhbnksIGE1OiBhbnksIGE2OiBhbnksIGE3OiBhbnksIGE4OiBhbnksIGE5OiBhbnksXG4gICAgICAgICAgICAgICAgYTEwOiBhbnksIGExMTogYW55LCBhMTI6IGFueSwgYTEzOiBhbnksIGExNDogYW55LCBhMTU6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1KTtcbiAgICAgIGNhc2UgMTY6XG4gICAgICAgIHJldHVybiAoYTE6IGFueSwgYTI6IGFueSwgYTM6IGFueSwgYTQ6IGFueSwgYTU6IGFueSwgYTY6IGFueSwgYTc6IGFueSwgYTg6IGFueSwgYTk6IGFueSxcbiAgICAgICAgICAgICAgICBhMTA6IGFueSwgYTExOiBhbnksIGExMjogYW55LCBhMTM6IGFueSwgYTE0OiBhbnksIGExNTogYW55LCBhMTY6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYpO1xuICAgICAgY2FzZSAxNzpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55LCBhMzogYW55LCBhNDogYW55LCBhNTogYW55LCBhNjogYW55LCBhNzogYW55LCBhODogYW55LCBhOTogYW55LFxuICAgICAgICAgICAgICAgIGExMDogYW55LCBhMTE6IGFueSwgYTEyOiBhbnksIGExMzogYW55LCBhMTQ6IGFueSwgYTE1OiBhbnksIGExNjogYW55LCBhMTc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgYTE3KTtcbiAgICAgIGNhc2UgMTg6XG4gICAgICAgIHJldHVybiAoYTE6IGFueSwgYTI6IGFueSwgYTM6IGFueSwgYTQ6IGFueSwgYTU6IGFueSwgYTY6IGFueSwgYTc6IGFueSwgYTg6IGFueSwgYTk6IGFueSxcbiAgICAgICAgICAgICAgICBhMTA6IGFueSwgYTExOiBhbnksIGExMjogYW55LCBhMTM6IGFueSwgYTE0OiBhbnksIGExNTogYW55LCBhMTY6IGFueSwgYTE3OiBhbnksXG4gICAgICAgICAgICAgICAgYTE4OiBhbnkpID0+IG5ldyB0KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCwgYTExLCBhMTIsIGExMywgYTE0LCBhMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGExNiwgYTE3LCBhMTgpO1xuICAgICAgY2FzZSAxOTpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55LCBhMzogYW55LCBhNDogYW55LCBhNTogYW55LCBhNjogYW55LCBhNzogYW55LCBhODogYW55LCBhOTogYW55LFxuICAgICAgICAgICAgICAgIGExMDogYW55LCBhMTE6IGFueSwgYTEyOiBhbnksIGExMzogYW55LCBhMTQ6IGFueSwgYTE1OiBhbnksIGExNjogYW55LCBhMTc6IGFueSxcbiAgICAgICAgICAgICAgICBhMTg6IGFueSwgYTE5OiBhbnkpID0+IG5ldyB0KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCwgYTExLCBhMTIsIGExMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGExNCwgYTE1LCBhMTYsIGExNywgYTE4LCBhMTkpO1xuICAgICAgY2FzZSAyMDpcbiAgICAgICAgcmV0dXJuIChhMTogYW55LCBhMjogYW55LCBhMzogYW55LCBhNDogYW55LCBhNTogYW55LCBhNjogYW55LCBhNzogYW55LCBhODogYW55LCBhOTogYW55LFxuICAgICAgICAgICAgICAgIGExMDogYW55LCBhMTE6IGFueSwgYTEyOiBhbnksIGExMzogYW55LCBhMTQ6IGFueSwgYTE1OiBhbnksIGExNjogYW55LCBhMTc6IGFueSxcbiAgICAgICAgICAgICAgICBhMTg6IGFueSwgYTE5OiBhbnksIGEyMDogYW55KSA9PiBuZXcgdChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTAsIGExMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhMTIsIGExMywgYTE0LCBhMTUsIGExNiwgYTE3LCBhMTgsIGExOSwgYTIwKTtcbiAgICB9O1xuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ2Fubm90IGNyZWF0ZSBhIGZhY3RvcnkgZm9yICcke3N0cmluZ2lmeSh0KX0nIGJlY2F1c2UgaXRzIGNvbnN0cnVjdG9yIGhhcyBtb3JlIHRoYW4gMjAgYXJndW1lbnRzYCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF96aXBUeXBlc0FuZEFubm90YXRpb25zKHBhcmFtVHlwZXMsIHBhcmFtQW5ub3RhdGlvbnMpOiBhbnlbXVtdIHtcbiAgICB2YXIgcmVzdWx0O1xuXG4gICAgaWYgKHR5cGVvZiBwYXJhbVR5cGVzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmVzdWx0ID0gbmV3IEFycmF5KHBhcmFtQW5ub3RhdGlvbnMubGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gbmV3IEFycmF5KHBhcmFtVHlwZXMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gVFMgb3V0cHV0cyBPYmplY3QgZm9yIHBhcmFtZXRlcnMgd2l0aG91dCB0eXBlcywgd2hpbGUgVHJhY2V1ciBvbWl0c1xuICAgICAgLy8gdGhlIGFubm90YXRpb25zLiBGb3Igbm93IHdlIHByZXNlcnZlIHRoZSBUcmFjZXVyIGJlaGF2aW9yIHRvIGFpZFxuICAgICAgLy8gbWlncmF0aW9uLCBidXQgdGhpcyBjYW4gYmUgcmV2aXNpdGVkLlxuICAgICAgaWYgKHR5cGVvZiBwYXJhbVR5cGVzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXN1bHRbaV0gPSBbXTtcbiAgICAgIH0gZWxzZSBpZiAocGFyYW1UeXBlc1tpXSAhPSBPYmplY3QpIHtcbiAgICAgICAgcmVzdWx0W2ldID0gW3BhcmFtVHlwZXNbaV1dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W2ldID0gW107XG4gICAgICB9XG4gICAgICBpZiAoaXNQcmVzZW50KHBhcmFtQW5ub3RhdGlvbnMpICYmIGlzUHJlc2VudChwYXJhbUFubm90YXRpb25zW2ldKSkge1xuICAgICAgICByZXN1bHRbaV0gPSByZXN1bHRbaV0uY29uY2F0KHBhcmFtQW5ub3RhdGlvbnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcGFyYW1ldGVycyh0eXBlT3JGdW5jOiBUeXBlKTogYW55W11bXSB7XG4gICAgLy8gUHJlZmVyIHRoZSBkaXJlY3QgQVBJLlxuICAgIGlmIChpc1ByZXNlbnQoKDxhbnk+dHlwZU9yRnVuYykucGFyYW1ldGVycykpIHtcbiAgICAgIHJldHVybiAoPGFueT50eXBlT3JGdW5jKS5wYXJhbWV0ZXJzO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX3JlZmxlY3QpICYmIGlzUHJlc2VudCh0aGlzLl9yZWZsZWN0LmdldE1ldGFkYXRhKSkge1xuICAgICAgdmFyIHBhcmFtQW5ub3RhdGlvbnMgPSB0aGlzLl9yZWZsZWN0LmdldE1ldGFkYXRhKCdwYXJhbWV0ZXJzJywgdHlwZU9yRnVuYyk7XG4gICAgICB2YXIgcGFyYW1UeXBlcyA9IHRoaXMuX3JlZmxlY3QuZ2V0TWV0YWRhdGEoJ2Rlc2lnbjpwYXJhbXR5cGVzJywgdHlwZU9yRnVuYyk7XG4gICAgICBpZiAoaXNQcmVzZW50KHBhcmFtVHlwZXMpIHx8IGlzUHJlc2VudChwYXJhbUFubm90YXRpb25zKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5femlwVHlwZXNBbmRBbm5vdGF0aW9ucyhwYXJhbVR5cGVzLCBwYXJhbUFubm90YXRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gVGhlIGFycmF5IGhhcyB0byBiZSBmaWxsZWQgd2l0aCBgdW5kZWZpbmVkYCBiZWNhdXNlIGhvbGVzIHdvdWxkIGJlIHNraXBwZWQgYnkgYHNvbWVgXG4gICAgbGV0IHBhcmFtZXRlcnMgPSBuZXcgQXJyYXkoKDxhbnk+dHlwZU9yRnVuYy5sZW5ndGgpKTtcbiAgICBwYXJhbWV0ZXJzLmZpbGwodW5kZWZpbmVkKTtcbiAgICByZXR1cm4gcGFyYW1ldGVycztcbiAgfVxuXG4gIGFubm90YXRpb25zKHR5cGVPckZ1bmM6IFR5cGUpOiBhbnlbXSB7XG4gICAgLy8gUHJlZmVyIHRoZSBkaXJlY3QgQVBJLlxuICAgIGlmIChpc1ByZXNlbnQoKDxhbnk+dHlwZU9yRnVuYykuYW5ub3RhdGlvbnMpKSB7XG4gICAgICB2YXIgYW5ub3RhdGlvbnMgPSAoPGFueT50eXBlT3JGdW5jKS5hbm5vdGF0aW9ucztcbiAgICAgIGlmIChpc0Z1bmN0aW9uKGFubm90YXRpb25zKSAmJiBhbm5vdGF0aW9ucy5hbm5vdGF0aW9ucykge1xuICAgICAgICBhbm5vdGF0aW9ucyA9IGFubm90YXRpb25zLmFubm90YXRpb25zO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFubm90YXRpb25zO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX3JlZmxlY3QpICYmIGlzUHJlc2VudCh0aGlzLl9yZWZsZWN0LmdldE1ldGFkYXRhKSkge1xuICAgICAgdmFyIGFubm90YXRpb25zID0gdGhpcy5fcmVmbGVjdC5nZXRNZXRhZGF0YSgnYW5ub3RhdGlvbnMnLCB0eXBlT3JGdW5jKTtcbiAgICAgIGlmIChpc1ByZXNlbnQoYW5ub3RhdGlvbnMpKSByZXR1cm4gYW5ub3RhdGlvbnM7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHByb3BNZXRhZGF0YSh0eXBlT3JGdW5jOiBhbnkpOiB7W2tleTogc3RyaW5nXTogYW55W119IHtcbiAgICAvLyBQcmVmZXIgdGhlIGRpcmVjdCBBUEkuXG4gICAgaWYgKGlzUHJlc2VudCgoPGFueT50eXBlT3JGdW5jKS5wcm9wTWV0YWRhdGEpKSB7XG4gICAgICB2YXIgcHJvcE1ldGFkYXRhID0gKDxhbnk+dHlwZU9yRnVuYykucHJvcE1ldGFkYXRhO1xuICAgICAgaWYgKGlzRnVuY3Rpb24ocHJvcE1ldGFkYXRhKSAmJiBwcm9wTWV0YWRhdGEucHJvcE1ldGFkYXRhKSB7XG4gICAgICAgIHByb3BNZXRhZGF0YSA9IHByb3BNZXRhZGF0YS5wcm9wTWV0YWRhdGE7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvcE1ldGFkYXRhO1xuICAgIH1cbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX3JlZmxlY3QpICYmIGlzUHJlc2VudCh0aGlzLl9yZWZsZWN0LmdldE1ldGFkYXRhKSkge1xuICAgICAgdmFyIHByb3BNZXRhZGF0YSA9IHRoaXMuX3JlZmxlY3QuZ2V0TWV0YWRhdGEoJ3Byb3BNZXRhZGF0YScsIHR5cGVPckZ1bmMpO1xuICAgICAgaWYgKGlzUHJlc2VudChwcm9wTWV0YWRhdGEpKSByZXR1cm4gcHJvcE1ldGFkYXRhO1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBpbnRlcmZhY2VzKHR5cGU6IFR5cGUpOiBhbnlbXSB7XG4gICAgdGhyb3cgbmV3IEJhc2VFeGNlcHRpb24oXCJKYXZhU2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgaW50ZXJmYWNlc1wiKTtcbiAgfVxuXG4gIGdldHRlcihuYW1lOiBzdHJpbmcpOiBHZXR0ZXJGbiB7IHJldHVybiA8R2V0dGVyRm4+bmV3IEZ1bmN0aW9uKCdvJywgJ3JldHVybiBvLicgKyBuYW1lICsgJzsnKTsgfVxuXG4gIHNldHRlcihuYW1lOiBzdHJpbmcpOiBTZXR0ZXJGbiB7XG4gICAgcmV0dXJuIDxTZXR0ZXJGbj5uZXcgRnVuY3Rpb24oJ28nLCAndicsICdyZXR1cm4gby4nICsgbmFtZSArICcgPSB2OycpO1xuICB9XG5cbiAgbWV0aG9kKG5hbWU6IHN0cmluZyk6IE1ldGhvZEZuIHtcbiAgICBsZXQgZnVuY3Rpb25Cb2R5ID0gYGlmICghby4ke25hbWV9KSB0aHJvdyBuZXcgRXJyb3IoJ1wiJHtuYW1lfVwiIGlzIHVuZGVmaW5lZCcpO1xuICAgICAgICByZXR1cm4gby4ke25hbWV9LmFwcGx5KG8sIGFyZ3MpO2A7XG4gICAgcmV0dXJuIDxNZXRob2RGbj5uZXcgRnVuY3Rpb24oJ28nLCAnYXJncycsIGZ1bmN0aW9uQm9keSk7XG4gIH1cblxuICAvLyBUaGVyZSBpcyBub3QgYSBjb25jZXB0IG9mIGltcG9ydCB1cmkgaW4gSnMsIGJ1dCB0aGlzIGlzIHVzZWZ1bCBpbiBkZXZlbG9waW5nIERhcnQgYXBwbGljYXRpb25zLlxuICBpbXBvcnRVcmkodHlwZTogVHlwZSk6IHN0cmluZyB7IHJldHVybiAnLi8nOyB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var reflector_1 = require('./reflector');\r\nvar reflector_2 = require('./reflector');\r\nexports.Reflector = reflector_2.Reflector;\r\nexports.ReflectionInfo = reflector_2.ReflectionInfo;\r\nvar reflection_capabilities_1 = require('./reflection_capabilities');\r\n/**\r\n * The {@link Reflector} used internally in Angular to access metadata\r\n * about symbols.\r\n */\r\nexports.reflector = new reflector_1.Reflector(new reflection_capabilities_1.ReflectionCapabilities());\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb3JlL3JlZmxlY3Rpb24vcmVmbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSwwQkFBd0IsYUFBYSxDQUFDLENBQUE7QUFDdEMsMEJBQXdDLGFBQWEsQ0FBQztBQUE5QywwQ0FBUztBQUFFLG9EQUFtQztBQUN0RCx3Q0FBcUMsMkJBQTJCLENBQUMsQ0FBQTtBQUVqRTs7O0dBR0c7QUFDUSxpQkFBUyxHQUFHLElBQUkscUJBQVMsQ0FBQyxJQUFJLGdEQUFzQixFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZSwgaXNQcmVzZW50fSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuaW1wb3J0IHtMaXN0V3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7UmVmbGVjdG9yfSBmcm9tICcuL3JlZmxlY3Rvcic7XG5leHBvcnQge1JlZmxlY3RvciwgUmVmbGVjdGlvbkluZm99IGZyb20gJy4vcmVmbGVjdG9yJztcbmltcG9ydCB7UmVmbGVjdGlvbkNhcGFiaWxpdGllc30gZnJvbSAnLi9yZWZsZWN0aW9uX2NhcGFiaWxpdGllcyc7XG5cbi8qKlxuICogVGhlIHtAbGluayBSZWZsZWN0b3J9IHVzZWQgaW50ZXJuYWxseSBpbiBBbmd1bGFyIHRvIGFjY2VzcyBtZXRhZGF0YVxuICogYWJvdXQgc3ltYm9scy5cbiAqL1xuZXhwb3J0IHZhciByZWZsZWN0b3IgPSBuZXcgUmVmbGVjdG9yKG5ldyBSZWZsZWN0aW9uQ2FwYWJpbGl0aWVzKCkpO1xuIl19","/* */ \n\"format cjs\";\n'use strict';function __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n/**\r\n * @module\r\n * @description\r\n * Starting point to import all public core APIs.\r\n */\r\n__export(require('./src/core/metadata'));\r\n__export(require('./src/core/util'));\r\n__export(require('./src/core/prod_mode'));\r\n__export(require('./src/core/di'));\r\n__export(require('./src/facade/facade'));\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nexports.enableProdMode = lang_1.enableProdMode;\r\nvar application_ref_1 = require('./src/core/application_ref');\r\nexports.platform = application_ref_1.platform;\r\nexports.createNgZone = application_ref_1.createNgZone;\r\nexports.PlatformRef = application_ref_1.PlatformRef;\r\nexports.ApplicationRef = application_ref_1.ApplicationRef;\r\nvar application_tokens_1 = require('./src/core/application_tokens');\r\nexports.APP_ID = application_tokens_1.APP_ID;\r\nexports.APP_COMPONENT = application_tokens_1.APP_COMPONENT;\r\nexports.APP_INITIALIZER = application_tokens_1.APP_INITIALIZER;\r\nexports.PACKAGE_ROOT_URL = application_tokens_1.PACKAGE_ROOT_URL;\r\nexports.PLATFORM_INITIALIZER = application_tokens_1.PLATFORM_INITIALIZER;\r\n__export(require('./src/core/zone'));\r\n__export(require('./src/core/render'));\r\n__export(require('./src/core/linker'));\r\nvar debug_node_1 = require('./src/core/debug/debug_node');\r\nexports.DebugElement = debug_node_1.DebugElement;\r\nexports.DebugNode = debug_node_1.DebugNode;\r\nexports.asNativeElements = debug_node_1.asNativeElements;\r\n__export(require('./src/core/testability/testability'));\r\n__export(require('./src/core/change_detection'));\r\n__export(require('./src/core/platform_directives_and_pipes'));\r\n__export(require('./src/core/platform_common_providers'));\r\n__export(require('./src/core/application_common_providers'));\r\n__export(require('./src/core/reflection/reflection'));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL2NvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7R0FJRztBQUNILGlCQUFjLHFCQUFxQixDQUFDLEVBQUE7QUFDcEMsaUJBQWMsaUJBQWlCLENBQUMsRUFBQTtBQUNoQyxpQkFBYyxzQkFBc0IsQ0FBQyxFQUFBO0FBQ3JDLGlCQUFjLGVBQWUsQ0FBQyxFQUFBO0FBQzlCLGlCQUFjLHFCQUFxQixDQUFDLEVBQUE7QUFDcEMscUJBQTZCLDBCQUEwQixDQUFDO0FBQWhELCtDQUFnRDtBQUN4RCxnQ0FBa0UsNEJBQTRCLENBQUM7QUFBdkYsOENBQVE7QUFBRSxzREFBWTtBQUFFLG9EQUFXO0FBQUUsMERBQWtEO0FBQy9GLG1DQU1PLCtCQUErQixDQUFDO0FBTHJDLDZDQUFNO0FBQ04sMkRBQWE7QUFDYiwrREFBZTtBQUNmLGlFQUFnQjtBQUNoQix5RUFDcUM7QUFDdkMsaUJBQWMsaUJBQWlCLENBQUMsRUFBQTtBQUNoQyxpQkFBYyxtQkFBbUIsQ0FBQyxFQUFBO0FBQ2xDLGlCQUFjLG1CQUFtQixDQUFDLEVBQUE7QUFDbEMsMkJBQXdELDZCQUE2QixDQUFDO0FBQTlFLGlEQUFZO0FBQUUsMkNBQVM7QUFBRSx5REFBcUQ7QUFDdEYsaUJBQWMsb0NBQW9DLENBQUMsRUFBQTtBQUNuRCxpQkFBYyw2QkFBNkIsQ0FBQyxFQUFBO0FBQzVDLGlCQUFjLDBDQUEwQyxDQUFDLEVBQUE7QUFDekQsaUJBQWMsc0NBQXNDLENBQUMsRUFBQTtBQUNyRCxpQkFBYyx5Q0FBeUMsQ0FBQyxFQUFBO0FBQ3hELGlCQUFjLGtDQUFrQyxDQUFDLEVBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogU3RhcnRpbmcgcG9pbnQgdG8gaW1wb3J0IGFsbCBwdWJsaWMgY29yZSBBUElzLlxuICovXG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb3JlL21ldGFkYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NvcmUvdXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb3JlL3Byb2RfbW9kZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb3JlL2RpJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2ZhY2FkZS9mYWNhZGUnO1xuZXhwb3J0IHtlbmFibGVQcm9kTW9kZX0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmV4cG9ydCB7cGxhdGZvcm0sIGNyZWF0ZU5nWm9uZSwgUGxhdGZvcm1SZWYsIEFwcGxpY2F0aW9uUmVmfSBmcm9tICcuL3NyYy9jb3JlL2FwcGxpY2F0aW9uX3JlZic7XG5leHBvcnQge1xuICBBUFBfSUQsXG4gIEFQUF9DT01QT05FTlQsXG4gIEFQUF9JTklUSUFMSVpFUixcbiAgUEFDS0FHRV9ST09UX1VSTCxcbiAgUExBVEZPUk1fSU5JVElBTElaRVJcbn0gZnJvbSAnLi9zcmMvY29yZS9hcHBsaWNhdGlvbl90b2tlbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29yZS96b25lJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NvcmUvcmVuZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NvcmUvbGlua2VyJztcbmV4cG9ydCB7RGVidWdFbGVtZW50LCBEZWJ1Z05vZGUsIGFzTmF0aXZlRWxlbWVudHN9IGZyb20gJy4vc3JjL2NvcmUvZGVidWcvZGVidWdfbm9kZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb3JlL3Rlc3RhYmlsaXR5L3Rlc3RhYmlsaXR5JztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb3JlL3BsYXRmb3JtX2RpcmVjdGl2ZXNfYW5kX3BpcGVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NvcmUvcGxhdGZvcm1fY29tbW9uX3Byb3ZpZGVycyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9jb3JlL2FwcGxpY2F0aW9uX2NvbW1vbl9wcm92aWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29yZS9yZWZsZWN0aW9uL3JlZmxlY3Rpb24nO1xuIl19","/* */ \n\"format cjs\";\n'use strict';var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar globalScope;\r\nif (typeof window === 'undefined') {\r\n if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) {\r\n // TODO: Replace any with WorkerGlobalScope from lib.webworker.d.ts #3492\r\n globalScope = self;\r\n }\r\n else {\r\n globalScope = global;\r\n }\r\n}\r\nelse {\r\n globalScope = window;\r\n}\r\nfunction scheduleMicroTask(fn) {\r\n Zone.current.scheduleMicroTask('scheduleMicrotask', fn);\r\n}\r\nexports.scheduleMicroTask = scheduleMicroTask;\r\nexports.IS_DART = false;\r\n// Need to declare a new variable for global here since TypeScript\r\n// exports the original value of the symbol.\r\nvar _global = globalScope;\r\nexports.global = _global;\r\nexports.Type = Function;\r\nfunction getTypeNameForDebugging(type) {\r\n return type['name'];\r\n}\r\nexports.getTypeNameForDebugging = getTypeNameForDebugging;\r\nexports.Math = _global.Math;\r\nexports.Date = _global.Date;\r\nvar _devMode = true;\r\nvar _modeLocked = false;\r\nfunction lockMode() {\r\n _modeLocked = true;\r\n}\r\nexports.lockMode = lockMode;\r\n/**\r\n * Disable Angular's development mode, which turns off assertions and other\r\n * checks within the framework.\r\n *\r\n * One important assertion this disables verifies that a change detection pass\r\n * does not result in additional changes to any bindings (also known as\r\n * unidirectional data flow).\r\n */\r\nfunction enableProdMode() {\r\n if (_modeLocked) {\r\n // Cannot use BaseException as that ends up importing from facade/lang.\r\n throw 'Cannot enable prod mode after platform setup.';\r\n }\r\n _devMode = false;\r\n}\r\nexports.enableProdMode = enableProdMode;\r\nfunction assertionsEnabled() {\r\n return _devMode;\r\n}\r\nexports.assertionsEnabled = assertionsEnabled;\r\n// TODO: remove calls to assert in production environment\r\n// Note: Can't just export this and import in in other files\r\n// as `assert` is a reserved keyword in Dart\r\n_global.assert = function assert(condition) {\r\n // TODO: to be fixed properly via #2830, noop for now\r\n};\r\n// This function is needed only to properly support Dart's const expressions\r\n// see https://github.com/angular/ts2dart/pull/151 for more info\r\nfunction CONST_EXPR(expr) {\r\n return expr;\r\n}\r\nexports.CONST_EXPR = CONST_EXPR;\r\nfunction CONST() {\r\n return function (target) { return target; };\r\n}\r\nexports.CONST = CONST;\r\nfunction isPresent(obj) {\r\n return obj !== undefined && obj !== null;\r\n}\r\nexports.isPresent = isPresent;\r\nfunction isBlank(obj) {\r\n return obj === undefined || obj === null;\r\n}\r\nexports.isBlank = isBlank;\r\nfunction isString(obj) {\r\n return typeof obj === \"string\";\r\n}\r\nexports.isString = isString;\r\nfunction isFunction(obj) {\r\n return typeof obj === \"function\";\r\n}\r\nexports.isFunction = isFunction;\r\nfunction isType(obj) {\r\n return isFunction(obj);\r\n}\r\nexports.isType = isType;\r\nfunction isStringMap(obj) {\r\n return typeof obj === 'object' && obj !== null;\r\n}\r\nexports.isStringMap = isStringMap;\r\nfunction isPromise(obj) {\r\n return obj instanceof _global.Promise;\r\n}\r\nexports.isPromise = isPromise;\r\nfunction isArray(obj) {\r\n return Array.isArray(obj);\r\n}\r\nexports.isArray = isArray;\r\nfunction isNumber(obj) {\r\n return typeof obj === 'number';\r\n}\r\nexports.isNumber = isNumber;\r\nfunction isDate(obj) {\r\n return obj instanceof exports.Date && !isNaN(obj.valueOf());\r\n}\r\nexports.isDate = isDate;\r\nfunction noop() { }\r\nexports.noop = noop;\r\nfunction stringify(token) {\r\n if (typeof token === 'string') {\r\n return token;\r\n }\r\n if (token === undefined || token === null) {\r\n return '' + token;\r\n }\r\n if (token.name) {\r\n return token.name;\r\n }\r\n if (token.overriddenName) {\r\n return token.overriddenName;\r\n }\r\n var res = token.toString();\r\n var newLineIndex = res.indexOf(\"\\n\");\r\n return (newLineIndex === -1) ? res : res.substring(0, newLineIndex);\r\n}\r\nexports.stringify = stringify;\r\n// serialize / deserialize enum exist only for consistency with dart API\r\n// enums in typescript don't need to be serialized\r\nfunction serializeEnum(val) {\r\n return val;\r\n}\r\nexports.serializeEnum = serializeEnum;\r\nfunction deserializeEnum(val, values) {\r\n return val;\r\n}\r\nexports.deserializeEnum = deserializeEnum;\r\nfunction resolveEnumToken(enumValue, val) {\r\n return enumValue[val];\r\n}\r\nexports.resolveEnumToken = resolveEnumToken;\r\nvar StringWrapper = (function () {\r\n function StringWrapper() {\r\n }\r\n StringWrapper.fromCharCode = function (code) { return String.fromCharCode(code); };\r\n StringWrapper.charCodeAt = function (s, index) { return s.charCodeAt(index); };\r\n StringWrapper.split = function (s, regExp) { return s.split(regExp); };\r\n StringWrapper.equals = function (s, s2) { return s === s2; };\r\n StringWrapper.stripLeft = function (s, charVal) {\r\n if (s && s.length) {\r\n var pos = 0;\r\n for (var i = 0; i < s.length; i++) {\r\n if (s[i] != charVal)\r\n break;\r\n pos++;\r\n }\r\n s = s.substring(pos);\r\n }\r\n return s;\r\n };\r\n StringWrapper.stripRight = function (s, charVal) {\r\n if (s && s.length) {\r\n var pos = s.length;\r\n for (var i = s.length - 1; i >= 0; i--) {\r\n if (s[i] != charVal)\r\n break;\r\n pos--;\r\n }\r\n s = s.substring(0, pos);\r\n }\r\n return s;\r\n };\r\n StringWrapper.replace = function (s, from, replace) {\r\n return s.replace(from, replace);\r\n };\r\n StringWrapper.replaceAll = function (s, from, replace) {\r\n return s.replace(from, replace);\r\n };\r\n StringWrapper.slice = function (s, from, to) {\r\n if (from === void 0) { from = 0; }\r\n if (to === void 0) { to = null; }\r\n return s.slice(from, to === null ? undefined : to);\r\n };\r\n StringWrapper.replaceAllMapped = function (s, from, cb) {\r\n return s.replace(from, function () {\r\n var matches = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n matches[_i - 0] = arguments[_i];\r\n }\r\n // Remove offset & string from the result array\r\n matches.splice(-2, 2);\r\n // The callback receives match, p1, ..., pn\r\n return cb(matches);\r\n });\r\n };\r\n StringWrapper.contains = function (s, substr) { return s.indexOf(substr) != -1; };\r\n StringWrapper.compare = function (a, b) {\r\n if (a < b) {\r\n return -1;\r\n }\r\n else if (a > b) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n };\r\n return StringWrapper;\r\n})();\r\nexports.StringWrapper = StringWrapper;\r\nvar StringJoiner = (function () {\r\n function StringJoiner(parts) {\r\n if (parts === void 0) { parts = []; }\r\n this.parts = parts;\r\n }\r\n StringJoiner.prototype.add = function (part) { this.parts.push(part); };\r\n StringJoiner.prototype.toString = function () { return this.parts.join(\"\"); };\r\n return StringJoiner;\r\n})();\r\nexports.StringJoiner = StringJoiner;\r\nvar NumberParseError = (function (_super) {\r\n __extends(NumberParseError, _super);\r\n function NumberParseError(message) {\r\n _super.call(this);\r\n this.message = message;\r\n }\r\n NumberParseError.prototype.toString = function () { return this.message; };\r\n return NumberParseError;\r\n})(Error);\r\nexports.NumberParseError = NumberParseError;\r\nvar NumberWrapper = (function () {\r\n function NumberWrapper() {\r\n }\r\n NumberWrapper.toFixed = function (n, fractionDigits) { return n.toFixed(fractionDigits); };\r\n NumberWrapper.equal = function (a, b) { return a === b; };\r\n NumberWrapper.parseIntAutoRadix = function (text) {\r\n var result = parseInt(text);\r\n if (isNaN(result)) {\r\n throw new NumberParseError(\"Invalid integer literal when parsing \" + text);\r\n }\r\n return result;\r\n };\r\n NumberWrapper.parseInt = function (text, radix) {\r\n if (radix == 10) {\r\n if (/^(\\-|\\+)?[0-9]+$/.test(text)) {\r\n return parseInt(text, radix);\r\n }\r\n }\r\n else if (radix == 16) {\r\n if (/^(\\-|\\+)?[0-9ABCDEFabcdef]+$/.test(text)) {\r\n return parseInt(text, radix);\r\n }\r\n }\r\n else {\r\n var result = parseInt(text, radix);\r\n if (!isNaN(result)) {\r\n return result;\r\n }\r\n }\r\n throw new NumberParseError(\"Invalid integer literal when parsing \" + text + \" in base \" +\r\n radix);\r\n };\r\n // TODO: NaN is a valid literal but is returned by parseFloat to indicate an error.\r\n NumberWrapper.parseFloat = function (text) { return parseFloat(text); };\r\n Object.defineProperty(NumberWrapper, \"NaN\", {\r\n get: function () { return NaN; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NumberWrapper.isNaN = function (value) { return isNaN(value); };\r\n NumberWrapper.isInteger = function (value) { return Number.isInteger(value); };\r\n return NumberWrapper;\r\n})();\r\nexports.NumberWrapper = NumberWrapper;\r\nexports.RegExp = _global.RegExp;\r\nvar RegExpWrapper = (function () {\r\n function RegExpWrapper() {\r\n }\r\n RegExpWrapper.create = function (regExpStr, flags) {\r\n if (flags === void 0) { flags = ''; }\r\n flags = flags.replace(/g/g, '');\r\n return new _global.RegExp(regExpStr, flags + 'g');\r\n };\r\n RegExpWrapper.firstMatch = function (regExp, input) {\r\n // Reset multimatch regex state\r\n regExp.lastIndex = 0;\r\n return regExp.exec(input);\r\n };\r\n RegExpWrapper.test = function (regExp, input) {\r\n regExp.lastIndex = 0;\r\n return regExp.test(input);\r\n };\r\n RegExpWrapper.matcher = function (regExp, input) {\r\n // Reset regex state for the case\r\n // someone did not loop over all matches\r\n // last time.\r\n regExp.lastIndex = 0;\r\n return { re: regExp, input: input };\r\n };\r\n return RegExpWrapper;\r\n})();\r\nexports.RegExpWrapper = RegExpWrapper;\r\nvar RegExpMatcherWrapper = (function () {\r\n function RegExpMatcherWrapper() {\r\n }\r\n RegExpMatcherWrapper.next = function (matcher) {\r\n return matcher.re.exec(matcher.input);\r\n };\r\n return RegExpMatcherWrapper;\r\n})();\r\nexports.RegExpMatcherWrapper = RegExpMatcherWrapper;\r\nvar FunctionWrapper = (function () {\r\n function FunctionWrapper() {\r\n }\r\n FunctionWrapper.apply = function (fn, posArgs) { return fn.apply(null, posArgs); };\r\n return FunctionWrapper;\r\n})();\r\nexports.FunctionWrapper = FunctionWrapper;\r\n// JS has NaN !== NaN\r\nfunction looseIdentical(a, b) {\r\n return a === b || typeof a === \"number\" && typeof b === \"number\" && isNaN(a) && isNaN(b);\r\n}\r\nexports.looseIdentical = looseIdentical;\r\n// JS considers NaN is the same as NaN for map Key (while NaN !== NaN otherwise)\r\n// see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map\r\nfunction getMapKey(value) {\r\n return value;\r\n}\r\nexports.getMapKey = getMapKey;\r\nfunction normalizeBlank(obj) {\r\n return isBlank(obj) ? null : obj;\r\n}\r\nexports.normalizeBlank = normalizeBlank;\r\nfunction normalizeBool(obj) {\r\n return isBlank(obj) ? false : obj;\r\n}\r\nexports.normalizeBool = normalizeBool;\r\nfunction isJsObject(o) {\r\n return o !== null && (typeof o === \"function\" || typeof o === \"object\");\r\n}\r\nexports.isJsObject = isJsObject;\r\nfunction print(obj) {\r\n console.log(obj);\r\n}\r\nexports.print = print;\r\n// Can't be all uppercase as our transpiler would think it is a special directive...\r\nvar Json = (function () {\r\n function Json() {\r\n }\r\n Json.parse = function (s) { return _global.JSON.parse(s); };\r\n Json.stringify = function (data) {\r\n // Dart doesn't take 3 arguments\r\n return _global.JSON.stringify(data, null, 2);\r\n };\r\n return Json;\r\n})();\r\nexports.Json = Json;\r\nvar DateWrapper = (function () {\r\n function DateWrapper() {\r\n }\r\n DateWrapper.create = function (year, month, day, hour, minutes, seconds, milliseconds) {\r\n if (month === void 0) { month = 1; }\r\n if (day === void 0) { day = 1; }\r\n if (hour === void 0) { hour = 0; }\r\n if (minutes === void 0) { minutes = 0; }\r\n if (seconds === void 0) { seconds = 0; }\r\n if (milliseconds === void 0) { milliseconds = 0; }\r\n return new exports.Date(year, month - 1, day, hour, minutes, seconds, milliseconds);\r\n };\r\n DateWrapper.fromISOString = function (str) { return new exports.Date(str); };\r\n DateWrapper.fromMillis = function (ms) { return new exports.Date(ms); };\r\n DateWrapper.toMillis = function (date) { return date.getTime(); };\r\n DateWrapper.now = function () { return new exports.Date(); };\r\n DateWrapper.toJson = function (date) { return date.toJSON(); };\r\n return DateWrapper;\r\n})();\r\nexports.DateWrapper = DateWrapper;\r\nfunction setValueOnPath(global, path, value) {\r\n var parts = path.split('.');\r\n var obj = global;\r\n while (parts.length > 1) {\r\n var name = parts.shift();\r\n if (obj.hasOwnProperty(name) && isPresent(obj[name])) {\r\n obj = obj[name];\r\n }\r\n else {\r\n obj = obj[name] = {};\r\n }\r\n }\r\n if (obj === undefined || obj === null) {\r\n obj = {};\r\n }\r\n obj[parts.shift()] = value;\r\n}\r\nexports.setValueOnPath = setValueOnPath;\r\nvar _symbolIterator = null;\r\nfunction getSymbolIterator() {\r\n if (isBlank(_symbolIterator)) {\r\n if (isPresent(Symbol) && isPresent(Symbol.iterator)) {\r\n _symbolIterator = Symbol.iterator;\r\n }\r\n else {\r\n // es6-shim specific logic\r\n var keys = Object.getOwnPropertyNames(Map.prototype);\r\n for (var i = 0; i < keys.length; ++i) {\r\n var key = keys[i];\r\n if (key !== 'entries' && key !== 'size' &&\r\n Map.prototype[key] === Map.prototype['entries']) {\r\n _symbolIterator = key;\r\n }\r\n }\r\n }\r\n }\r\n return _symbolIterator;\r\n}\r\nexports.getSymbolIterator = getSymbolIterator;\r\nfunction evalExpression(sourceUrl, expr, declarations, vars) {\r\n var fnBody = declarations + \"\\nreturn \" + expr + \"\\n//# sourceURL=\" + sourceUrl;\r\n var fnArgNames = [];\r\n var fnArgValues = [];\r\n for (var argName in vars) {\r\n fnArgNames.push(argName);\r\n fnArgValues.push(vars[argName]);\r\n }\r\n return new (Function.bind.apply(Function, [void 0].concat(fnArgNames.concat(fnBody))))().apply(void 0, fnArgValues);\r\n}\r\nexports.evalExpression = evalExpression;\r\nfunction isPrimitive(obj) {\r\n return !isJsObject(obj);\r\n}\r\nexports.isPrimitive = isPrimitive;\r\nfunction hasConstructor(value, type) {\r\n return value.constructor === type;\r\n}\r\nexports.hasConstructor = hasConstructor;\r\nfunction bitWiseOr(values) {\r\n return values.reduce(function (a, b) { return a | b; });\r\n}\r\nexports.bitWiseOr = bitWiseOr;\r\nfunction bitWiseAnd(values) {\r\n return values.reduce(function (a, b) { return a & b; });\r\n}\r\nexports.bitWiseAnd = bitWiseAnd;\r\nfunction escape(s) {\r\n return _global.encodeURI(s);\r\n}\r\nexports.escape = escape;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZy50cyJdLCJuYW1lcyI6WyJzY2hlZHVsZU1pY3JvVGFzayIsImdldFR5cGVOYW1lRm9yRGVidWdnaW5nIiwibG9ja01vZGUiLCJlbmFibGVQcm9kTW9kZSIsImFzc2VydGlvbnNFbmFibGVkIiwiYXNzZXJ0IiwiQ09OU1RfRVhQUiIsIkNPTlNUIiwiaXNQcmVzZW50IiwiaXNCbGFuayIsImlzU3RyaW5nIiwiaXNGdW5jdGlvbiIsImlzVHlwZSIsImlzU3RyaW5nTWFwIiwiaXNQcm9taXNlIiwiaXNBcnJheSIsImlzTnVtYmVyIiwiaXNEYXRlIiwibm9vcCIsInN0cmluZ2lmeSIsInNlcmlhbGl6ZUVudW0iLCJkZXNlcmlhbGl6ZUVudW0iLCJyZXNvbHZlRW51bVRva2VuIiwiU3RyaW5nV3JhcHBlciIsIlN0cmluZ1dyYXBwZXIuY29uc3RydWN0b3IiLCJTdHJpbmdXcmFwcGVyLmZyb21DaGFyQ29kZSIsIlN0cmluZ1dyYXBwZXIuY2hhckNvZGVBdCIsIlN0cmluZ1dyYXBwZXIuc3BsaXQiLCJTdHJpbmdXcmFwcGVyLmVxdWFscyIsIlN0cmluZ1dyYXBwZXIuc3RyaXBMZWZ0IiwiU3RyaW5nV3JhcHBlci5zdHJpcFJpZ2h0IiwiU3RyaW5nV3JhcHBlci5yZXBsYWNlIiwiU3RyaW5nV3JhcHBlci5yZXBsYWNlQWxsIiwiU3RyaW5nV3JhcHBlci5zbGljZSIsIlN0cmluZ1dyYXBwZXIucmVwbGFjZUFsbE1hcHBlZCIsIlN0cmluZ1dyYXBwZXIuY29udGFpbnMiLCJTdHJpbmdXcmFwcGVyLmNvbXBhcmUiLCJTdHJpbmdKb2luZXIiLCJTdHJpbmdKb2luZXIuY29uc3RydWN0b3IiLCJTdHJpbmdKb2luZXIuYWRkIiwiU3RyaW5nSm9pbmVyLnRvU3RyaW5nIiwiTnVtYmVyUGFyc2VFcnJvciIsIk51bWJlclBhcnNlRXJyb3IuY29uc3RydWN0b3IiLCJOdW1iZXJQYXJzZUVycm9yLnRvU3RyaW5nIiwiTnVtYmVyV3JhcHBlciIsIk51bWJlcldyYXBwZXIuY29uc3RydWN0b3IiLCJOdW1iZXJXcmFwcGVyLnRvRml4ZWQiLCJOdW1iZXJXcmFwcGVyLmVxdWFsIiwiTnVtYmVyV3JhcHBlci5wYXJzZUludEF1dG9SYWRpeCIsIk51bWJlcldyYXBwZXIucGFyc2VJbnQiLCJOdW1iZXJXcmFwcGVyLnBhcnNlRmxvYXQiLCJOdW1iZXJXcmFwcGVyLk5hTiIsIk51bWJlcldyYXBwZXIuaXNOYU4iLCJOdW1iZXJXcmFwcGVyLmlzSW50ZWdlciIsIlJlZ0V4cFdyYXBwZXIiLCJSZWdFeHBXcmFwcGVyLmNvbnN0cnVjdG9yIiwiUmVnRXhwV3JhcHBlci5jcmVhdGUiLCJSZWdFeHBXcmFwcGVyLmZpcnN0TWF0Y2giLCJSZWdFeHBXcmFwcGVyLnRlc3QiLCJSZWdFeHBXcmFwcGVyLm1hdGNoZXIiLCJSZWdFeHBNYXRjaGVyV3JhcHBlciIsIlJlZ0V4cE1hdGNoZXJXcmFwcGVyLmNvbnN0cnVjdG9yIiwiUmVnRXhwTWF0Y2hlcldyYXBwZXIubmV4dCIsIkZ1bmN0aW9uV3JhcHBlciIsIkZ1bmN0aW9uV3JhcHBlci5jb25zdHJ1Y3RvciIsIkZ1bmN0aW9uV3JhcHBlci5hcHBseSIsImxvb3NlSWRlbnRpY2FsIiwiZ2V0TWFwS2V5Iiwibm9ybWFsaXplQmxhbmsiLCJub3JtYWxpemVCb29sIiwiaXNKc09iamVjdCIsInByaW50IiwiSnNvbiIsIkpzb24uY29uc3RydWN0b3IiLCJKc29uLnBhcnNlIiwiSnNvbi5zdHJpbmdpZnkiLCJEYXRlV3JhcHBlciIsIkRhdGVXcmFwcGVyLmNvbnN0cnVjdG9yIiwiRGF0ZVdyYXBwZXIuY3JlYXRlIiwiRGF0ZVdyYXBwZXIuZnJvbUlTT1N0cmluZyIsIkRhdGVXcmFwcGVyLmZyb21NaWxsaXMiLCJEYXRlV3JhcHBlci50b01pbGxpcyIsIkRhdGVXcmFwcGVyLm5vdyIsIkRhdGVXcmFwcGVyLnRvSnNvbiIsInNldFZhbHVlT25QYXRoIiwiZ2V0U3ltYm9sSXRlcmF0b3IiLCJldmFsRXhwcmVzc2lvbiIsImlzUHJpbWl0aXZlIiwiaGFzQ29uc3RydWN0b3IiLCJiaXRXaXNlT3IiLCJiaXRXaXNlQW5kIiwiZXNjYXBlIl0sIm1hcHBpbmdzIjoiOzs7OztBQXdCQSxJQUFJLFdBQThCLENBQUM7QUFDbkMsRUFBRSxDQUFDLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsQyxFQUFFLENBQUMsQ0FBQyxPQUFPLGlCQUFpQixLQUFLLFdBQVcsSUFBSSxJQUFJLFlBQVksaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLHlFQUF5RTtRQUN6RSxXQUFXLEdBQVEsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNOLFdBQVcsR0FBUSxNQUFNLENBQUM7SUFDNUIsQ0FBQztBQUNILENBQUM7QUFBQyxJQUFJLENBQUMsQ0FBQztJQUNOLFdBQVcsR0FBUSxNQUFNLENBQUM7QUFDNUIsQ0FBQztBQUVELDJCQUFrQyxFQUFZO0lBQzVDQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxpQkFBaUJBLENBQUNBLG1CQUFtQkEsRUFBRUEsRUFBRUEsQ0FBQ0EsQ0FBQ0E7QUFDMURBLENBQUNBO0FBRmUseUJBQWlCLG9CQUVoQyxDQUFBO0FBRVksZUFBTyxHQUFHLEtBQUssQ0FBQztBQUU3QixrRUFBa0U7QUFDbEUsNENBQTRDO0FBQzVDLElBQUksT0FBTyxHQUFzQixXQUFXO0FBRXpCLGNBQU0sV0FGb0I7QUFJbEMsWUFBSSxHQUFHLFFBQVEsQ0FBQztBQWUzQixpQ0FBd0MsSUFBVTtJQUNoREMsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0E7QUFDdEJBLENBQUNBO0FBRmUsK0JBQXVCLDBCQUV0QyxDQUFBO0FBR1UsWUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDcEIsWUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFFL0IsSUFBSSxRQUFRLEdBQVksSUFBSSxDQUFD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LEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLE1BQU1BLEVBQUVBLENBQUNBLEVBQUVBLEVBQUVBLENBQUNBO2dCQUNsQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsT0FBT0EsQ0FBQ0E7b0JBQUNBLEtBQUtBLENBQUNBO2dCQUMzQkEsR0FBR0EsRUFBRUEsQ0FBQ0E7WUFDUkEsQ0FBQ0E7WUFDREEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0E7UUFDdkJBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBO0lBQ1hBLENBQUNBO0lBRU1OLHdCQUFVQSxHQUFqQkEsVUFBa0JBLENBQVNBLEVBQUVBLE9BQWVBO1FBQzFDTyxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNsQkEsSUFBSUEsR0FBR0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0E7WUFDbkJBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLE1BQU1BLEdBQUdBLENBQUNBLEVBQUVBLENBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLEVBQUVBLEVBQUVBLENBQUNBO2dCQUN2Q0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsT0FBT0EsQ0FBQ0E7b0JBQUNBLEtBQUtBLENBQUNBO2dCQUMzQkEsR0FBR0EsRUFBRUEsQ0FBQ0E7WUFDUkEsQ0FBQ0E7WUFDREEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0E7UUFDMUJBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBO0lBQ1hBLENBQUNBO0lBRU1QLHFCQUFP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LENBQUNBLENBQUNBLENBQUNBO0FBQ3BEQSxDQUFDQTtBQUZlLGlCQUFTLFlBRXhCLENBQUE7QUFFRCxvQkFBMkIsTUFBZ0I7SUFDekNDLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBLFVBQUNBLENBQUNBLEVBQUVBLENBQUNBLElBQU9BLE1BQU1BLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0FBQ3BEQSxDQUFDQTtBQUZlLGtCQUFVLGFBRXpCLENBQUE7QUFFRCxnQkFBdUIsQ0FBUztJQUM5QkMsTUFBTUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7QUFDOUJBLENBQUNBO0FBRmUsY0FBTSxTQUVyQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBCcm93c2VyTm9kZUdsb2JhbCB7XG4gIE9iamVjdDogdHlwZW9mIE9iamVjdDtcbiAgQXJyYXk6IHR5cGVvZiBBcnJheTtcbiAgTWFwOiB0eXBlb2YgTWFwO1xuICBTZXQ6IHR5cGVvZiBTZXQ7XG4gIERhdGU6IERhdGVDb25zdHJ1Y3RvcjtcbiAgUmVnRXhwOiBSZWdFeHBDb25zdHJ1Y3RvcjtcbiAgSlNPTjogdHlwZW9mIEpTT047XG4gIE1hdGg6IGFueTsgIC8vIHR5cGVvZiBNYXRoO1xuICBhc3NlcnQoY29uZGl0aW9uOiBhbnkpOiB2b2lkO1xuICBSZWZsZWN0OiBhbnk7XG4gIGdldEFuZ3VsYXJUZXN0YWJpbGl0eTogRnVuY3Rpb247XG4gIGdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzOiBGdW5jdGlvbjtcbiAgZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50czogRnVuY3Rpb247XG4gIGZyYW1ld29ya1N0YWJpbGl6ZXJzOiBBcnJheTxGdW5jdGlvbj47XG4gIHNldFRpbWVvdXQ6IEZ1bmN0aW9uO1xuICBjbGVhclRpbWVvdXQ6IEZ1bmN0aW9uO1xuICBzZXRJbnRlcnZhbDogRnVuY3Rpb247XG4gIGNsZWFySW50ZXJ2YWw6IEZ1bmN0aW9uO1xuICBlbmNvZGVVUkk6IEZ1bmN0aW9uO1xufVxuXG4vLyBUT0RPKGp0ZXBsaXR6NjAyKTogTG9hZCBXb3JrZXJHbG9iYWxTY29wZSBmcm9tIGxpYi53ZWJ3b3JrZXIuZC50cyBmaWxlICMzNDkyXG5kZWNsYXJlIHZhciBXb3JrZXJHbG9iYWxTY29wZTtcbnZhciBnbG9iYWxTY29wZTogQnJvd3Nlck5vZGVHbG9iYWw7XG5pZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgaWYgKHR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlKSB7XG4gICAgLy8gVE9ETzogUmVwbGFjZSBhbnkgd2l0aCBXb3JrZXJHbG9iYWxTY29wZSBmcm9tIGxpYi53ZWJ3b3JrZXIuZC50cyAjMzQ5MlxuICAgIGdsb2JhbFNjb3BlID0gPGFueT5zZWxmO1xuICB9IGVsc2Uge1xuICAgIGdsb2JhbFNjb3BlID0gPGFueT5nbG9iYWw7XG4gIH1cbn0gZWxzZSB7XG4gIGdsb2JhbFNjb3BlID0gPGFueT53aW5kb3c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlZHVsZU1pY3JvVGFzayhmbjogRnVuY3Rpb24pIHtcbiAgWm9uZS5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKCdzY2hlZHVsZU1pY3JvdGFzaycsIGZuKTtcbn1cblxuZXhwb3J0IGNvbnN0IElTX0RBUlQgPSBmYWxzZTtcblxuLy8gTmVlZCB0byBkZWNsYXJlIGEgbmV3IHZhcmlhYmxlIGZvciBnbG9iYWwgaGVyZSBzaW5jZSBUeXBlU2NyaXB0XG4vLyBleHBvcnRzIHRoZSBvcmlnaW5hbCB2YWx1ZSBvZiB0aGUgc3ltYm9sLlxudmFyIF9nbG9iYWw6IEJyb3dzZXJOb2RlR2xvYmFsID0gZ2xvYmFsU2NvcGU7XG5cbmV4cG9ydCB7X2dsb2JhbCBhcyBnbG9iYWx9O1xuXG5leHBvcnQgdmFyIFR5cGUgPSBGdW5jdGlvbjtcblxuLyoqXG4gKiBSdW50aW1lIHJlcHJlc2VudGF0aW9uIGEgdHlwZSB0aGF0IGEgQ29tcG9uZW50IG9yIG90aGVyIG9iamVjdCBpcyBpbnN0YW5jZXMgb2YuXG4gKlxuICogQW4gZXhhbXBsZSBvZiBhIGBUeXBlYCBpcyBgTXlDdXN0b21Db21wb25lbnRgIGNsYXNzLCB3aGljaCBpbiBKYXZhU2NyaXB0IGlzIGJlIHJlcHJlc2VudGVkIGJ5XG4gKiB0aGUgYE15Q3VzdG9tQ29tcG9uZW50YCBjb25zdHJ1Y3RvciBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlIGV4dGVuZHMgRnVuY3Rpb24ge31cblxuLyoqXG4gKiBSdW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIGEgdHlwZSB0aGF0IGlzIGNvbnN0cnVjdGFibGUgKG5vbi1hYnN0cmFjdCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uY3JldGVUeXBlIGV4dGVuZHMgVHlwZSB7IG5ldyAoLi4uYXJncyk6IGFueTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZU5hbWVGb3JEZWJ1Z2dpbmcodHlwZTogVHlwZSk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlWyduYW1lJ107XG59XG5cblxuZXhwb3J0IHZhciBNYXRoID0gX2dsb2JhbC5NYXRoO1xuZXhwb3J0IHZhciBEYXRlID0gX2dsb2JhbC5EYXRlO1xuXG52YXIgX2Rldk1vZGU6IGJvb2xlYW4gPSB0cnVlO1xudmFyIF9tb2RlTG9ja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NrTW9kZSgpIHtcbiAgX21vZGVMb2NrZWQgPSB0cnVlO1xufVxuXG4vKipcbiAqIERpc2FibGUgQW5ndWxhcidzIGRldmVsb3BtZW50IG1vZGUsIHdoaWNoIHR1cm5zIG9mZiBhc3NlcnRpb25zIGFuZCBvdGhlclxuICogY2hlY2tzIHdpdGhpbiB0aGUgZnJhbWV3b3JrLlxuICpcbiAqIE9uZSBpbXBvcnRhbnQgYXNzZXJ0aW9uIHRoaXMgZGlzYWJsZXMgdmVyaWZpZXMgdGhhdCBhIGNoYW5nZSBkZXRlY3Rpb24gcGFzc1xuICogZG9lcyBub3QgcmVzdWx0IGluIGFkZGl0aW9uYWwgY2hhbmdlcyB0byBhbnkgYmluZGluZ3MgKGFsc28ga25vd24gYXNcbiAqIHVuaWRpcmVjdGlvbmFsIGRhdGEgZmxvdykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVQcm9kTW9kZSgpIHtcbiAgaWYgKF9tb2RlTG9ja2VkKSB7XG4gICAgLy8gQ2Fubm90IHVzZSBCYXNlRXhjZXB0aW9uIGFzIHRoYXQgZW5kcyB1cCBpbXBvcnRpbmcgZnJvbSBmYWNhZGUvbGFuZy5cbiAgICB0aHJvdyAnQ2Fubm90IGVuYWJsZSBwcm9kIG1vZGUgYWZ0ZXIgcGxhdGZvcm0gc2V0dXAuJztcbiAgfVxuICBfZGV2TW9kZSA9IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0aW9uc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiBfZGV2TW9kZTtcbn1cblxuLy8gVE9ETzogcmVtb3ZlIGNhbGxzIHRvIGFzc2VydCBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50XG4vLyBOb3RlOiBDYW4ndCBqdXN0IGV4cG9ydCB0aGlzIGFuZCBpbXBvcnQgaW4gaW4gb3RoZXIgZmlsZXNcbi8vIGFzIGBhc3NlcnRgIGlzIGEgcmVzZXJ2ZWQga2V5d29yZCBpbiBEYXJ0XG5fZ2xvYmFsLmFzc2VydCA9IGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHtcbiAgLy8gVE9ETzogdG8gYmUgZml4ZWQgcHJvcGVybHkgdmlhICMyODMwLCBub29wIGZvciBub3dcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgbmVlZGVkIG9ubHkgdG8gcHJvcGVybHkgc3VwcG9ydCBEYXJ0J3MgY29uc3QgZXhwcmVzc2lvbnNcbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci90czJkYXJ0L3B1bGwvMTUxIGZvciBtb3JlIGluZm9cbmV4cG9ydCBmdW5jdGlvbiBDT05TVF9FWFBSPFQ+KGV4cHI6IFQpOiBUIHtcbiAgcmV0dXJuIGV4cHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDT05TVCgpOiBDbGFzc0RlY29yYXRvciAmIFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgcmV0dXJuICh0YXJnZXQpID0+IHRhcmdldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJlc2VudChvYmo6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gb2JqICE9PSB1bmRlZmluZWQgJiYgb2JqICE9PSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCbGFuayhvYmo6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gb2JqID09PSB1bmRlZmluZWQgfHwgb2JqID09PSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKG9iajogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGUob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzRnVuY3Rpb24ob2JqKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nTWFwKG9iajogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2Uob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mICg8YW55Pl9nbG9iYWwpLlByb21pc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FycmF5KG9iajogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG9iaik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcihvYmopOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdudW1iZXInO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlKG9iaik6IGJvb2xlYW4ge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4ob2JqLnZhbHVlT2YoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge31cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeSh0b2tlbik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgdG9rZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG5cbiAgaWYgKHRva2VuID09PSB1bmRlZmluZWQgfHwgdG9rZW4gPT09IG51bGwpIHtcbiAgICByZXR1cm4gJycgKyB0b2tlbjtcbiAgfVxuXG4gIGlmICh0b2tlbi5uYW1lKSB7XG4gICAgcmV0dXJuIHRva2VuLm5hbWU7XG4gIH1cbiAgaWYgKHRva2VuLm92ZXJyaWRkZW5OYW1lKSB7XG4gICAgcmV0dXJuIHRva2VuLm92ZXJyaWRkZW5OYW1lO1xuICB9XG5cbiAgdmFyIHJlcyA9IHRva2VuLnRvU3RyaW5nKCk7XG4gIHZhciBuZXdMaW5lSW5kZXggPSByZXMuaW5kZXhPZihcIlxcblwiKTtcbiAgcmV0dXJuIChuZXdMaW5lSW5kZXggPT09IC0xKSA/IHJlcyA6IHJlcy5zdWJzdHJpbmcoMCwgbmV3TGluZUluZGV4KTtcbn1cblxuLy8gc2VyaWFsaXplIC8gZGVzZXJpYWxpemUgZW51bSBleGlzdCBvbmx5IGZvciBjb25zaXN0ZW5jeSB3aXRoIGRhcnQgQVBJXG4vLyBlbnVtcyBpbiB0eXBlc2NyaXB0IGRvbid0IG5lZWQgdG8gYmUgc2VyaWFsaXplZFxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplRW51bSh2YWwpOiBudW1iZXIge1xuICByZXR1cm4gdmFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVFbnVtKHZhbCwgdmFsdWVzOiBNYXA8bnVtYmVyLCBhbnk+KTogYW55IHtcbiAgcmV0dXJuIHZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVFbnVtVG9rZW4oZW51bVZhbHVlLCB2YWwpOiBzdHJpbmcge1xuICByZXR1cm4gZW51bVZhbHVlW3ZhbF07XG59XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdXcmFwcGVyIHtcbiAgc3RhdGljIGZyb21DaGFyQ29kZShjb2RlOiBudW1iZXIpOiBzdHJpbmcgeyByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTsgfVxuXG4gIHN0YXRpYyBjaGFyQ29kZUF0KHM6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IG51bWJlciB7IHJldHVybiBzLmNoYXJDb2RlQXQoaW5kZXgpOyB9XG5cbiAgc3RhdGljIHNwbGl0KHM6IHN0cmluZywgcmVnRXhwOiBSZWdFeHApOiBzdHJpbmdbXSB7IHJldHVybiBzLnNwbGl0KHJlZ0V4cCk7IH1cblxuICBzdGF0aWMgZXF1YWxzKHM6IHN0cmluZywgczI6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gcyA9PT0gczI7IH1cblxuICBzdGF0aWMgc3RyaXBMZWZ0KHM6IHN0cmluZywgY2hhclZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAocyAmJiBzLmxlbmd0aCkge1xuICAgICAgdmFyIHBvcyA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHNbaV0gIT0gY2hhclZhbCkgYnJlYWs7XG4gICAgICAgIHBvcysrO1xuICAgICAgfVxuICAgICAgcyA9IHMuc3Vic3RyaW5nKHBvcyk7XG4gICAgfVxuICAgIHJldHVybiBzO1xuICB9XG5cbiAgc3RhdGljIHN0cmlwUmlnaHQoczogc3RyaW5nLCBjaGFyVmFsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChzICYmIHMubGVuZ3RoKSB7XG4gICAgICB2YXIgcG9zID0gcy5sZW5ndGg7XG4gICAgICBmb3IgKHZhciBpID0gcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAoc1tpXSAhPSBjaGFyVmFsKSBicmVhaztcbiAgICAgICAgcG9zLS07XG4gICAgICB9XG4gICAgICBzID0gcy5zdWJzdHJpbmcoMCwgcG9zKTtcbiAgICB9XG4gICAgcmV0dXJuIHM7XG4gIH1cblxuICBzdGF0aWMgcmVwbGFjZShzOiBzdHJpbmcsIGZyb206IHN0cmluZywgcmVwbGFjZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcy5yZXBsYWNlKGZyb20sIHJlcGxhY2UpO1xuICB9XG5cbiAgc3RhdGljIHJlcGxhY2VBbGwoczogc3RyaW5nLCBmcm9tOiBSZWdFeHAsIHJlcGxhY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHMucmVwbGFjZShmcm9tLCByZXBsYWNlKTtcbiAgfVxuXG4gIHN0YXRpYyBzbGljZTxUPihzOiBzdHJpbmcsIGZyb206IG51bWJlciA9IDAsIHRvOiBudW1iZXIgPSBudWxsKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcy5zbGljZShmcm9tLCB0byA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHRvKTtcbiAgfVxuXG4gIHN0YXRpYyByZXBsYWNlQWxsTWFwcGVkKHM6IHN0cmluZywgZnJvbTogUmVnRXhwLCBjYjogRnVuY3Rpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBzLnJlcGxhY2UoZnJvbSwgZnVuY3Rpb24oLi4ubWF0Y2hlcykge1xuICAgICAgLy8gUmVtb3ZlIG9mZnNldCAmIHN0cmluZyBmcm9tIHRoZSByZXN1bHQgYXJyYXlcbiAgICAgIG1hdGNoZXMuc3BsaWNlKC0yLCAyKTtcbiAgICAgIC8vIFRoZSBjYWxsYmFjayByZWNlaXZlcyBtYXRjaCwgcDEsIC4uLiwgcG5cbiAgICAgIHJldHVybiBjYihtYXRjaGVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBjb250YWlucyhzOiBzdHJpbmcsIHN1YnN0cjogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiBzLmluZGV4T2Yoc3Vic3RyKSAhPSAtMTsgfVxuXG4gIHN0YXRpYyBjb21wYXJlKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAoYSA8IGIpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9IGVsc2UgaWYgKGEgPiBiKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdKb2luZXIge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFydHMgPSBbXSkge31cblxuICBhZGQocGFydDogc3RyaW5nKTogdm9pZCB7IHRoaXMucGFydHMucHVzaChwYXJ0KTsgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnBhcnRzLmpvaW4oXCJcIik7IH1cbn1cblxuZXhwb3J0IGNsYXNzIE51bWJlclBhcnNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWVzc2FnZTogc3RyaW5nKSB7IHN1cGVyKCk7IH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5tZXNzYWdlOyB9XG59XG5cblxuZXhwb3J0IGNsYXNzIE51bWJlcldyYXBwZXIge1xuICBzdGF0aWMgdG9GaXhlZChuOiBudW1iZXIsIGZyYWN0aW9uRGlnaXRzOiBudW1iZXIpOiBzdHJpbmcgeyByZXR1cm4gbi50b0ZpeGVkKGZyYWN0aW9uRGlnaXRzKTsgfVxuXG4gIHN0YXRpYyBlcXVhbChhOiBudW1iZXIsIGI6IG51bWJlcik6IGJvb2xlYW4geyByZXR1cm4gYSA9PT0gYjsgfVxuXG4gIHN0YXRpYyBwYXJzZUludEF1dG9SYWRpeCh0ZXh0OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHZhciByZXN1bHQ6IG51bWJlciA9IHBhcnNlSW50KHRleHQpO1xuICAgIGlmIChpc05hTihyZXN1bHQpKSB7XG4gICAgICB0aHJvdyBuZXcgTnVtYmVyUGFyc2VFcnJvcihcIkludmFsaWQgaW50ZWdlciBsaXRlcmFsIHdoZW4gcGFyc2luZyBcIiArIHRleHQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RhdGljIHBhcnNlSW50KHRleHQ6IHN0cmluZywgcmFkaXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHJhZGl4ID09IDEwKSB7XG4gICAgICBpZiAoL14oXFwtfFxcKyk/WzAtOV0rJC8udGVzdCh0ZXh0KSkge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQodGV4dCwgcmFkaXgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocmFkaXggPT0gMTYpIHtcbiAgICAgIGlmICgvXihcXC18XFwrKT9bMC05QUJDREVGYWJjZGVmXSskLy50ZXN0KHRleHQpKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUludCh0ZXh0LCByYWRpeCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZXN1bHQ6IG51bWJlciA9IHBhcnNlSW50KHRleHQsIHJhZGl4KTtcbiAgICAgIGlmICghaXNOYU4ocmVzdWx0KSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgTnVtYmVyUGFyc2VFcnJvcihcIkludmFsaWQgaW50ZWdlciBsaXRlcmFsIHdoZW4gcGFyc2luZyBcIiArIHRleHQgKyBcIiBpbiBiYXNlIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpeCk7XG4gIH1cblxuICAvLyBUT0RPOiBOYU4gaXMgYSB2YWxpZCBsaXRlcmFsIGJ1dCBpcyByZXR1cm5lZCBieSBwYXJzZUZsb2F0IHRvIGluZGljYXRlIGFuIGVycm9yLlxuICBzdGF0aWMgcGFyc2VGbG9hdCh0ZXh0OiBzdHJpbmcpOiBudW1iZXIgeyByZXR1cm4gcGFyc2VGbG9hdCh0ZXh0KTsgfVxuXG4gIHN0YXRpYyBnZXQgTmFOKCk6IG51bWJlciB7IHJldHVybiBOYU47IH1cblxuICBzdGF0aWMgaXNOYU4odmFsdWU6IGFueSk6IGJvb2xlYW4geyByZXR1cm4gaXNOYU4odmFsdWUpOyB9XG5cbiAgc3RhdGljIGlzSW50ZWdlcih2YWx1ZTogYW55KTogYm9vbGVhbiB7IHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKTsgfVxufVxuXG5leHBvcnQgdmFyIFJlZ0V4cCA9IF9nbG9iYWwuUmVnRXhwO1xuXG5leHBvcnQgY2xhc3MgUmVnRXhwV3JhcHBlciB7XG4gIHN0YXRpYyBjcmVhdGUocmVnRXhwU3RyOiBzdHJpbmcsIGZsYWdzOiBzdHJpbmcgPSAnJyk6IFJlZ0V4cCB7XG4gICAgZmxhZ3MgPSBmbGFncy5yZXBsYWNlKC9nL2csICcnKTtcbiAgICByZXR1cm4gbmV3IF9nbG9iYWwuUmVnRXhwKHJlZ0V4cFN0ciwgZmxhZ3MgKyAnZycpO1xuICB9XG4gIHN0YXRpYyBmaXJzdE1hdGNoKHJlZ0V4cDogUmVnRXhwLCBpbnB1dDogc3RyaW5nKTogUmVnRXhwRXhlY0FycmF5IHtcbiAgICAvLyBSZXNldCBtdWx0aW1hdGNoIHJlZ2V4IHN0YXRlXG4gICAgcmVnRXhwLmxhc3RJbmRleCA9IDA7XG4gICAgcmV0dXJuIHJlZ0V4cC5leGVjKGlucHV0KTtcbiAgfVxuICBzdGF0aWMgdGVzdChyZWdFeHA6IFJlZ0V4cCwgaW5wdXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJlZ0V4cC5sYXN0SW5kZXggPSAwO1xuICAgIHJldHVybiByZWdFeHAudGVzdChpbnB1dCk7XG4gIH1cbiAgc3RhdGljIG1hdGNoZXIocmVnRXhwOiBSZWdFeHAsIGlucHV0OiBzdHJpbmcpOiB7XG4gICAgcmU6IFJlZ0V4cDtcbiAgICBpbnB1dDogc3RyaW5nXG4gIH1cbiAge1xuICAgIC8vIFJlc2V0IHJlZ2V4IHN0YXRlIGZvciB0aGUgY2FzZVxuICAgIC8vIHNvbWVvbmUgZGlkIG5vdCBsb29wIG92ZXIgYWxsIG1hdGNoZXNcbiAgICAvLyBsYXN0IHRpbWUuXG4gICAgcmVnRXhwLmxhc3RJbmRleCA9IDA7XG4gICAgcmV0dXJuIHtyZTogcmVnRXhwLCBpbnB1dDogaW5wdXR9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZWdFeHBNYXRjaGVyV3JhcHBlciB7XG4gIHN0YXRpYyBuZXh0KG1hdGNoZXI6IHtcbiAgICByZTogUmVnRXhwO1xuICAgIGlucHV0OiBzdHJpbmdcbiAgfSk6IFJlZ0V4cEV4ZWNBcnJheSB7XG4gICAgcmV0dXJuIG1hdGNoZXIucmUuZXhlYyhtYXRjaGVyLmlucHV0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25XcmFwcGVyIHtcbiAgc3RhdGljIGFwcGx5KGZuOiBGdW5jdGlvbiwgcG9zQXJnczogYW55KTogYW55IHsgcmV0dXJuIGZuLmFwcGx5KG51bGwsIHBvc0FyZ3MpOyB9XG59XG5cbi8vIEpTIGhhcyBOYU4gIT09IE5hTlxuZXhwb3J0IGZ1bmN0aW9uIGxvb3NlSWRlbnRpY2FsKGEsIGIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGEgPT09IGIgfHwgdHlwZW9mIGEgPT09IFwibnVtYmVyXCIgJiYgdHlwZW9mIGIgPT09IFwibnVtYmVyXCIgJiYgaXNOYU4oYSkgJiYgaXNOYU4oYik7XG59XG5cbi8vIEpTIGNvbnNpZGVycyBOYU4gaXMgdGhlIHNhbWUgYXMgTmFOIGZvciBtYXAgS2V5ICh3aGlsZSBOYU4gIT09IE5hTiBvdGhlcndpc2UpXG4vLyBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvTWFwXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwS2V5PFQ+KHZhbHVlOiBUKTogVCB7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUJsYW5rKG9iajogT2JqZWN0KTogYW55IHtcbiAgcmV0dXJuIGlzQmxhbmsob2JqKSA/IG51bGwgOiBvYmo7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVCb29sKG9iajogYm9vbGVhbik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNCbGFuayhvYmopID8gZmFsc2UgOiBvYmo7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0pzT2JqZWN0KG86IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gbyAhPT0gbnVsbCAmJiAodHlwZW9mIG8gPT09IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgbyA9PT0gXCJvYmplY3RcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludChvYmo6IEVycm9yIHwgT2JqZWN0KSB7XG4gIGNvbnNvbGUubG9nKG9iaik7XG59XG5cbi8vIENhbid0IGJlIGFsbCB1cHBlcmNhc2UgYXMgb3VyIHRyYW5zcGlsZXIgd291bGQgdGhpbmsgaXQgaXMgYSBzcGVjaWFsIGRpcmVjdGl2ZS4uLlxuZXhwb3J0IGNsYXNzIEpzb24ge1xuICBzdGF0aWMgcGFyc2Uoczogc3RyaW5nKTogT2JqZWN0IHsgcmV0dXJuIF9nbG9iYWwuSlNPTi5wYXJzZShzKTsgfVxuICBzdGF0aWMgc3RyaW5naWZ5KGRhdGE6IE9iamVjdCk6IHN0cmluZyB7XG4gICAgLy8gRGFydCBkb2Vzbid0IHRha2UgMyBhcmd1bWVudHNcbiAgICByZXR1cm4gX2dsb2JhbC5KU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0ZVdyYXBwZXIge1xuICBzdGF0aWMgY3JlYXRlKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciA9IDEsIGRheTogbnVtYmVyID0gMSwgaG91cjogbnVtYmVyID0gMCxcbiAgICAgICAgICAgICAgICBtaW51dGVzOiBudW1iZXIgPSAwLCBzZWNvbmRzOiBudW1iZXIgPSAwLCBtaWxsaXNlY29uZHM6IG51bWJlciA9IDApOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXksIGhvdXIsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcyk7XG4gIH1cbiAgc3RhdGljIGZyb21JU09TdHJpbmcoc3RyOiBzdHJpbmcpOiBEYXRlIHsgcmV0dXJuIG5ldyBEYXRlKHN0cik7IH1cbiAgc3RhdGljIGZyb21NaWxsaXMobXM6IG51bWJlcik6IERhdGUgeyByZXR1cm4gbmV3IERhdGUobXMpOyB9XG4gIHN0YXRpYyB0b01pbGxpcyhkYXRlOiBEYXRlKTogbnVtYmVyIHsgcmV0dXJuIGRhdGUuZ2V0VGltZSgpOyB9XG4gIHN0YXRpYyBub3coKTogRGF0ZSB7IHJldHVybiBuZXcgRGF0ZSgpOyB9XG4gIHN0YXRpYyB0b0pzb24oZGF0ZTogRGF0ZSk6IHN0cmluZyB7IHJldHVybiBkYXRlLnRvSlNPTigpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRWYWx1ZU9uUGF0aChnbG9iYWw6IGFueSwgcGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gIHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgdmFyIG9iajogYW55ID0gZ2xvYmFsO1xuICB3aGlsZSAocGFydHMubGVuZ3RoID4gMSkge1xuICAgIHZhciBuYW1lID0gcGFydHMuc2hpZnQoKTtcbiAgICBpZiAob2JqLmhhc093blByb3BlcnR5KG5hbWUpICYmIGlzUHJlc2VudChvYmpbbmFtZV0pKSB7XG4gICAgICBvYmogPSBvYmpbbmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG9iaiA9IG9ialtuYW1lXSA9IHt9O1xuICAgIH1cbiAgfVxuICBpZiAob2JqID09PSB1bmRlZmluZWQgfHwgb2JqID09PSBudWxsKSB7XG4gICAgb2JqID0ge307XG4gIH1cbiAgb2JqW3BhcnRzLnNoaWZ0KCldID0gdmFsdWU7XG59XG5cbi8vIFdoZW4gU3ltYm9sLml0ZXJhdG9yIGRvZXNuJ3QgZXhpc3QsIHJldHJpZXZlcyB0aGUga2V5IHVzZWQgaW4gZXM2LXNoaW1cbmRlY2xhcmUgdmFyIFN5bWJvbDtcbnZhciBfc3ltYm9sSXRlcmF0b3IgPSBudWxsO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN5bWJvbEl0ZXJhdG9yKCk6IHN0cmluZyB8IHN5bWJvbCB7XG4gIGlmIChpc0JsYW5rKF9zeW1ib2xJdGVyYXRvcikpIHtcbiAgICBpZiAoaXNQcmVzZW50KFN5bWJvbCkgJiYgaXNQcmVzZW50KFN5bWJvbC5pdGVyYXRvcikpIHtcbiAgICAgIF9zeW1ib2xJdGVyYXRvciA9IFN5bWJvbC5pdGVyYXRvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXM2LXNoaW0gc3BlY2lmaWMgbG9naWNcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTWFwLnByb3RvdHlwZSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAgIGlmIChrZXkgIT09ICdlbnRyaWVzJyAmJiBrZXkgIT09ICdzaXplJyAmJlxuICAgICAgICAgICAgTWFwLnByb3RvdHlwZVtrZXldID09PSBNYXAucHJvdG90eXBlWydlbnRyaWVzJ10pIHtcbiAgICAgICAgICBfc3ltYm9sSXRlcmF0b3IgPSBrZXk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIF9zeW1ib2xJdGVyYXRvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2YWxFeHByZXNzaW9uKHNvdXJjZVVybDogc3RyaW5nLCBleHByOiBzdHJpbmcsIGRlY2xhcmF0aW9uczogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcnM6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogYW55IHtcbiAgdmFyIGZuQm9keSA9IGAke2RlY2xhcmF0aW9uc31cXG5yZXR1cm4gJHtleHByfVxcbi8vIyBzb3VyY2VVUkw9JHtzb3VyY2VVcmx9YDtcbiAgdmFyIGZuQXJnTmFtZXMgPSBbXTtcbiAgdmFyIGZuQXJnVmFsdWVzID0gW107XG4gIGZvciAodmFyIGFyZ05hbWUgaW4gdmFycykge1xuICAgIGZuQXJnTmFtZXMucHVzaChhcmdOYW1lKTtcbiAgICBmbkFyZ1ZhbHVlcy5wdXNoKHZhcnNbYXJnTmFtZV0pO1xuICB9XG4gIHJldHVybiBuZXcgRnVuY3Rpb24oLi4uZm5BcmdOYW1lcy5jb25jYXQoZm5Cb2R5KSkoLi4uZm5BcmdWYWx1ZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcmltaXRpdmUob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuICFpc0pzT2JqZWN0KG9iaik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNDb25zdHJ1Y3Rvcih2YWx1ZTogT2JqZWN0LCB0eXBlOiBUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpdFdpc2VPcih2YWx1ZXM6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbHVlcy5yZWR1Y2UoKGEsIGIpID0+IHsgcmV0dXJuIGEgfCBiOyB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpdFdpc2VBbmQodmFsdWVzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gIHJldHVybiB2YWx1ZXMucmVkdWNlKChhLCBiKSA9PiB7IHJldHVybiBhICYgYjsgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGUoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIF9nbG9iYWwuZW5jb2RlVVJJKHMpO1xufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nexports.Map = lang_1.global.Map;\r\nexports.Set = lang_1.global.Set;\r\n// Safari and Internet Explorer do not support the iterable parameter to the\r\n// Map constructor. We work around that by manually adding the items.\r\nvar createMapFromPairs = (function () {\r\n try {\r\n if (new exports.Map([[1, 2]]).size === 1) {\r\n return function createMapFromPairs(pairs) { return new exports.Map(pairs); };\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return function createMapAndPopulateFromPairs(pairs) {\r\n var map = new exports.Map();\r\n for (var i = 0; i < pairs.length; i++) {\r\n var pair = pairs[i];\r\n map.set(pair[0], pair[1]);\r\n }\r\n return map;\r\n };\r\n})();\r\nvar createMapFromMap = (function () {\r\n try {\r\n if (new exports.Map(new exports.Map())) {\r\n return function createMapFromMap(m) { return new exports.Map(m); };\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return function createMapAndPopulateFromMap(m) {\r\n var map = new exports.Map();\r\n m.forEach(function (v, k) { map.set(k, v); });\r\n return map;\r\n };\r\n})();\r\nvar _clearValues = (function () {\r\n if ((new exports.Map()).keys().next) {\r\n return function _clearValues(m) {\r\n var keyIterator = m.keys();\r\n var k;\r\n while (!((k = keyIterator.next()).done)) {\r\n m.set(k.value, null);\r\n }\r\n };\r\n }\r\n else {\r\n return function _clearValuesWithForeEach(m) {\r\n m.forEach(function (v, k) { m.set(k, null); });\r\n };\r\n }\r\n})();\r\n// Safari doesn't implement MapIterator.next(), which is used is Traceur's polyfill of Array.from\r\n// TODO(mlaval): remove the work around once we have a working polyfill of Array.from\r\nvar _arrayFromMap = (function () {\r\n try {\r\n if ((new exports.Map()).values().next) {\r\n return function createArrayFromMap(m, getValues) {\r\n return getValues ? Array.from(m.values()) : Array.from(m.keys());\r\n };\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return function createArrayFromMapWithForeach(m, getValues) {\r\n var res = ListWrapper.createFixedSize(m.size), i = 0;\r\n m.forEach(function (v, k) {\r\n res[i] = getValues ? v : k;\r\n i++;\r\n });\r\n return res;\r\n };\r\n})();\r\nvar MapWrapper = (function () {\r\n function MapWrapper() {\r\n }\r\n MapWrapper.clone = function (m) { return createMapFromMap(m); };\r\n MapWrapper.createFromStringMap = function (stringMap) {\r\n var result = new exports.Map();\r\n for (var prop in stringMap) {\r\n result.set(prop, stringMap[prop]);\r\n }\r\n return result;\r\n };\r\n MapWrapper.toStringMap = function (m) {\r\n var r = {};\r\n m.forEach(function (v, k) { return r[k] = v; });\r\n return r;\r\n };\r\n MapWrapper.createFromPairs = function (pairs) { return createMapFromPairs(pairs); };\r\n MapWrapper.clearValues = function (m) { _clearValues(m); };\r\n MapWrapper.iterable = function (m) { return m; };\r\n MapWrapper.keys = function (m) { return _arrayFromMap(m, false); };\r\n MapWrapper.values = function (m) { return _arrayFromMap(m, true); };\r\n return MapWrapper;\r\n})();\r\nexports.MapWrapper = MapWrapper;\r\n/**\r\n * Wraps Javascript Objects\r\n */\r\nvar StringMapWrapper = (function () {\r\n function StringMapWrapper() {\r\n }\r\n StringMapWrapper.create = function () {\r\n // Note: We are not using Object.create(null) here due to\r\n // performance!\r\n // http://jsperf.com/ng2-object-create-null\r\n return {};\r\n };\r\n StringMapWrapper.contains = function (map, key) {\r\n return map.hasOwnProperty(key);\r\n };\r\n StringMapWrapper.get = function (map, key) {\r\n return map.hasOwnProperty(key) ? map[key] : undefined;\r\n };\r\n StringMapWrapper.set = function (map, key, value) { map[key] = value; };\r\n StringMapWrapper.keys = function (map) { return Object.keys(map); };\r\n StringMapWrapper.values = function (map) {\r\n return Object.keys(map).reduce(function (r, a) {\r\n r.push(map[a]);\r\n return r;\r\n }, []);\r\n };\r\n StringMapWrapper.isEmpty = function (map) {\r\n for (var prop in map) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n StringMapWrapper.delete = function (map, key) { delete map[key]; };\r\n StringMapWrapper.forEach = function (map, callback) {\r\n for (var prop in map) {\r\n if (map.hasOwnProperty(prop)) {\r\n callback(map[prop], prop);\r\n }\r\n }\r\n };\r\n StringMapWrapper.merge = function (m1, m2) {\r\n var m = {};\r\n for (var attr in m1) {\r\n if (m1.hasOwnProperty(attr)) {\r\n m[attr] = m1[attr];\r\n }\r\n }\r\n for (var attr in m2) {\r\n if (m2.hasOwnProperty(attr)) {\r\n m[attr] = m2[attr];\r\n }\r\n }\r\n return m;\r\n };\r\n StringMapWrapper.equals = function (m1, m2) {\r\n var k1 = Object.keys(m1);\r\n var k2 = Object.keys(m2);\r\n if (k1.length != k2.length) {\r\n return false;\r\n }\r\n var key;\r\n for (var i = 0; i < k1.length; i++) {\r\n key = k1[i];\r\n if (m1[key] !== m2[key]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n return StringMapWrapper;\r\n})();\r\nexports.StringMapWrapper = StringMapWrapper;\r\nvar ListWrapper = (function () {\r\n function ListWrapper() {\r\n }\r\n // JS has no way to express a statically fixed size list, but dart does so we\r\n // keep both methods.\r\n ListWrapper.createFixedSize = function (size) { return new Array(size); };\r\n ListWrapper.createGrowableSize = function (size) { return new Array(size); };\r\n ListWrapper.clone = function (array) { return array.slice(0); };\r\n ListWrapper.createImmutable = function (array) {\r\n var result = ListWrapper.clone(array);\r\n Object.seal(result);\r\n return result;\r\n };\r\n ListWrapper.forEachWithIndex = function (array, fn) {\r\n for (var i = 0; i < array.length; i++) {\r\n fn(array[i], i);\r\n }\r\n };\r\n ListWrapper.first = function (array) {\r\n if (!array)\r\n return null;\r\n return array[0];\r\n };\r\n ListWrapper.last = function (array) {\r\n if (!array || array.length == 0)\r\n return null;\r\n return array[array.length - 1];\r\n };\r\n ListWrapper.indexOf = function (array, value, startIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n return array.indexOf(value, startIndex);\r\n };\r\n ListWrapper.contains = function (list, el) { return list.indexOf(el) !== -1; };\r\n ListWrapper.reversed = function (array) {\r\n var a = ListWrapper.clone(array);\r\n return a.reverse();\r\n };\r\n ListWrapper.concat = function (a, b) { return a.concat(b); };\r\n ListWrapper.insert = function (list, index, value) { list.splice(index, 0, value); };\r\n ListWrapper.removeAt = function (list, index) {\r\n var res = list[index];\r\n list.splice(index, 1);\r\n return res;\r\n };\r\n ListWrapper.removeAll = function (list, items) {\r\n for (var i = 0; i < items.length; ++i) {\r\n var index = list.indexOf(items[i]);\r\n list.splice(index, 1);\r\n }\r\n };\r\n ListWrapper.remove = function (list, el) {\r\n var index = list.indexOf(el);\r\n if (index > -1) {\r\n list.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n };\r\n ListWrapper.clear = function (list) { list.length = 0; };\r\n ListWrapper.isEmpty = function (list) { return list.length == 0; };\r\n ListWrapper.fill = function (list, value, start, end) {\r\n if (start === void 0) { start = 0; }\r\n if (end === void 0) { end = null; }\r\n list.fill(value, start, end === null ? list.length : end);\r\n };\r\n ListWrapper.equals = function (a, b) {\r\n if (a.length != b.length)\r\n return false;\r\n for (var i = 0; i < a.length; ++i) {\r\n if (a[i] !== b[i])\r\n return false;\r\n }\r\n return true;\r\n };\r\n ListWrapper.slice = function (l, from, to) {\r\n if (from === void 0) { from = 0; }\r\n if (to === void 0) { to = null; }\r\n return l.slice(from, to === null ? undefined : to);\r\n };\r\n ListWrapper.splice = function (l, from, length) { return l.splice(from, length); };\r\n ListWrapper.sort = function (l, compareFn) {\r\n if (lang_1.isPresent(compareFn)) {\r\n l.sort(compareFn);\r\n }\r\n else {\r\n l.sort();\r\n }\r\n };\r\n ListWrapper.toString = function (l) { return l.toString(); };\r\n ListWrapper.toJSON = function (l) { return JSON.stringify(l); };\r\n ListWrapper.maximum = function (list, predicate) {\r\n if (list.length == 0) {\r\n return null;\r\n }\r\n var solution = null;\r\n var maxValue = -Infinity;\r\n for (var index = 0; index < list.length; index++) {\r\n var candidate = list[index];\r\n if (lang_1.isBlank(candidate)) {\r\n continue;\r\n }\r\n var candidateValue = predicate(candidate);\r\n if (candidateValue > maxValue) {\r\n solution = candidate;\r\n maxValue = candidateValue;\r\n }\r\n }\r\n return solution;\r\n };\r\n ListWrapper.isImmutable = function (list) { return Object.isSealed(list); };\r\n return ListWrapper;\r\n})();\r\nexports.ListWrapper = ListWrapper;\r\nfunction isListLikeIterable(obj) {\r\n if (!lang_1.isJsObject(obj))\r\n return false;\r\n return lang_1.isArray(obj) ||\r\n (!(obj instanceof exports.Map) &&\r\n lang_1.getSymbolIterator() in obj); // JS Iterable have a Symbol.iterator prop\r\n}\r\nexports.isListLikeIterable = isListLikeIterable;\r\nfunction areIterablesEqual(a, b, comparator) {\r\n var iterator1 = a[lang_1.getSymbolIterator()]();\r\n var iterator2 = b[lang_1.getSymbolIterator()]();\r\n while (true) {\r\n var item1 = iterator1.next();\r\n var item2 = iterator2.next();\r\n if (item1.done && item2.done)\r\n return true;\r\n if (item1.done || item2.done)\r\n return false;\r\n if (!comparator(item1.value, item2.value))\r\n return false;\r\n }\r\n}\r\nexports.areIterablesEqual = areIterablesEqual;\r\nfunction iterateListLike(obj, fn) {\r\n if (lang_1.isArray(obj)) {\r\n for (var i = 0; i < obj.length; i++) {\r\n fn(obj[i]);\r\n }\r\n }\r\n else {\r\n var iterator = obj[lang_1.getSymbolIterator()]();\r\n var item;\r\n while (!((item = iterator.next()).done)) {\r\n fn(item.value);\r\n }\r\n }\r\n}\r\nexports.iterateListLike = iterateListLike;\r\n// Safari and Internet Explorer do not support the iterable parameter to the\r\n// Set constructor. We work around that by manually adding the items.\r\nvar createSetFromList = (function () {\r\n var test = new exports.Set([1, 2, 3]);\r\n if (test.size === 3) {\r\n return function createSetFromList(lst) { return new exports.Set(lst); };\r\n }\r\n else {\r\n return function createSetAndPopulateFromList(lst) {\r\n var res = new exports.Set(lst);\r\n if (res.size !== lst.length) {\r\n for (var i = 0; i < lst.length; i++) {\r\n res.add(lst[i]);\r\n }\r\n }\r\n return res;\r\n };\r\n }\r\n})();\r\nvar SetWrapper = (function () {\r\n function SetWrapper() {\r\n }\r\n SetWrapper.createFromList = function (lst) { return createSetFromList(lst); };\r\n SetWrapper.has = function (s, key) { return s.has(key); };\r\n SetWrapper.delete = function (m, k) { m.delete(k); };\r\n return SetWrapper;\r\n})();\r\nexports.SetWrapper = SetWrapper;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6WyJjcmVhdGVNYXBGcm9tUGFpcnMiLCJjcmVhdGVNYXBBbmRQb3B1bGF0ZUZyb21QYWlycyIsImNyZWF0ZU1hcEZyb21NYXAiLCJjcmVhdGVNYXBBbmRQb3B1bGF0ZUZyb21NYXAiLCJfY2xlYXJWYWx1ZXMiLCJfY2xlYXJWYWx1ZXNXaXRoRm9yZUVhY2giLCJjcmVhdGVBcnJheUZyb21NYXAiLCJjcmVhdGVBcnJheUZyb21NYXBXaXRoRm9yZWFjaCIsIk1hcFdyYXBwZXIiLCJNYXBXcmFwcGVyLmNvbnN0cnVjdG9yIiwiTWFwV3JhcHBlci5jbG9uZSIsIk1hcFdyYXBwZXIuY3JlYXRlRnJvbVN0cmluZ01hcCIsIk1hcFdyYXBwZXIudG9TdHJpbmdNYXAiLCJNYXBXcmFwcGVyLmNyZWF0ZUZyb21QYWlycyIsIk1hcFdyYXBwZXIuY2xlYXJWYWx1ZXMiLCJNYXBXcmFwcGVyLml0ZXJhYmxlIiwiTWFwV3JhcHBlci5rZXlzIiwiTWFwV3JhcHBlci52YWx1ZXMiLCJTdHJpbmdNYXBXcmFwcGVyIiwiU3RyaW5nTWFwV3JhcHBlci5jb25zdHJ1Y3RvciIsIlN0cmluZ01hcFdyYXBwZXIuY3JlYXRlIiwiU3RyaW5nTWFwV3JhcHBlci5jb250YWlucyIsIlN0cmluZ01hcFdyYXBwZXIuZ2V0IiwiU3RyaW5nTWFwV3JhcHBlci5zZXQiLCJTdHJpbmdNYXBXcmFwcGVyLmtleXMiLCJTdHJpbmdNYXBXcmFwcGVyLnZhbHVlcyIsIlN0cmluZ01hcFdyYXBwZXIuaXNFbXB0eSIsIlN0cmluZ01hcFdyYXBwZXIuZGVsZXRlIiwiU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoIiwiU3RyaW5nTWFwV3JhcHBlci5tZXJnZSIsIlN0cmluZ01hcFdyYXBwZXIuZXF1YWxzIiwiTGlzdFdyYXBwZXIiLCJMaXN0V3JhcHBlci5jb25zdHJ1Y3RvciIsIkxpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZSIsIkxpc3RXcmFwcGVyLmNyZWF0ZUdyb3dhYmxlU2l6ZSIsIkxpc3RXcmFwcGVyLmNsb25lIiwiTGlzdFdyYXBwZXIuY3JlYXRlSW1tdXRhYmxlIiwiTGlzdFdyYXBwZXIuZm9yRWFjaFdpdGhJbmRleCIsIkxpc3RXcmFwcGVyLmZpcnN0IiwiTGlzdFdyYXBwZXIubGFzdCIsIkxpc3RXcmFwcGVyLmluZGV4T2YiLCJMaXN0V3JhcHBlci5jb250YWlucyIsIkxpc3RXcmFwcGVyLnJldmVyc2VkIiwiTGlzdFdyYXBwZXIuY29uY2F0IiwiTGlzdFdyYXBwZXIuaW5zZXJ0IiwiTGlzdFdyYXBwZXIucmVtb3ZlQXQiLCJMaXN0V3JhcHBlci5yZW1vdmVBbGwiLCJMaXN0V3JhcHBlci5yZW1vdmUiLCJMaXN0V3JhcHBlci5jbGVhciIsIkxpc3RXcmFwcGVyLmlzRW1wdHkiLCJMaXN0V3JhcHBlci5maWxsIiwiTGlzdFdyYXBwZXIuZXF1YWxzIiwiTGlzdFdyYXBwZXIuc2xpY2UiLCJMaXN0V3JhcHBlci5zcGxpY2UiLCJMaXN0V3JhcHBlci5zb3J0IiwiTGlzdFdyYXBwZXIudG9TdHJpbmciLCJMaXN0V3JhcHBlci50b0pTT04iLCJMaXN0V3JhcHBlci5tYXhpbXVtIiwiTGlzdFdyYXBwZXIuaXNJbW11dGFibGUiLCJpc0xpc3RMaWtlSXRlcmFibGUiLCJhcmVJdGVyYWJsZXNFcXVhbCIsIml0ZXJhdGVMaXN0TGlrZSIsImNyZWF0ZVNldEZyb21MaXN0IiwiY3JlYXRlU2V0QW5kUG9wdWxhdGVGcm9tTGlzdCIsIlNldFdyYXBwZXIiLCJTZXRXcmFwcGVyLmNvbnN0cnVjdG9yIiwiU2V0V3JhcHBlci5jcmVhdGVGcm9tTGlzdCIsIlNldFdyYXBwZXIuaGFzIiwiU2V0V3JhcHBlci5kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLHFCQU9PLDBCQUEwQixDQUFDLENBQUE7QUFFdkIsV0FBRyxHQUFHLGFBQU0sQ0FBQyxHQUFHLENBQUM7QUFDakIsV0FBRyxHQUFHLGFBQU0sQ0FBQyxHQUFHLENBQUM7QUFFNUIsNEVBQTRFO0FBQzVFLHNFQUFzRTtBQUN0RSxJQUFJLGtCQUFrQixHQUFvQyxDQUFDO0lBQ3pELElBQUksQ0FBQztRQUNILEVBQUUsQ0FBQyxDQUFDLElBQUksV0FBRyxDQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyw0QkFBNEIsS0FBWSxJQUFtQkEsTUFBTUEsQ0FBQ0EsSUFBSUEsV0FBR0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQztRQUM3RixDQUFDO0lBQ0gsQ0FBRTtJQUFBLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDYixDQUFDO0lBQ0QsTUFBTSxDQUFDLHVDQUF1QyxLQUFZO1FBQ3hEQyxJQUFJQSxHQUFHQSxHQUFHQSxJQUFJQSxXQUFHQSxFQUFFQSxDQUFDQTtRQUNwQkEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsS0FBS0EsQ0FBQ0EsTUFBTUEsRUFBRUEsQ0FBQ0EsRUFBRUEsRUFBRUEsQ0FBQ0E7WUFDdENBLElBQUlBLElBQUlBLEdBQUdBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ3BCQSxHQUFHQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUM1QkEsQ0FBQ0E7UUFDREEsTUFBTUEsQ0FBQ0EsR0FBR0EsQ0FBQ0E7SUFDYkEsQ0FBQ0EsQ0FBQztBQUNKLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDTCxJQUFJLGdCQUFnQixHQUF3QyxDQUFDO0lBQzNELElBQUksQ0FBQztRQUNILEVBQUUsQ0FBQyxDQUFDLElBQUksV0FBRyxDQUFNLElBQUksV0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsTUFBTSxDQUFDLDBCQUEwQixDQUFnQixJQUFtQkMsTUFBTUEsQ0FBQ0EsSUFBSUEsV0FBR0EsQ0FBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQztRQUNoRyxDQUFDO0lBQ0gsQ0FBRTtJQUFBLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDYixDQUFDO0lBQ0QsTUFBTSxDQUFDLHFDQUFxQyxDQUFnQjtRQUMxREMsSUFBSUEsR0FBR0EsR0FBR0EsSUFBSUEsV0FBR0EsRUFBRUEsQ0FBQ0E7UUFDcEJBLENBQUNBLENBQUNBLE9BQU9BLENBQUNBLFVBQUNBLENBQUNBLEVBQUVBLENBQUNBLElBQU9BLEdBQUdBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQ3hDQSxNQUFNQSxDQUFDQSxHQUFHQSxDQUFDQTtJQUNiQSxDQUFDQSxDQUFDO0FBQ0osQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNMLElBQUksWUFBWSxHQUF5QixDQUFDO0lBQ3hDLEVBQUUsQ0FBQyxDQUFPLENBQUMsSUFBSSxXQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkMsTUFBTSxDQUFDLHNCQUFzQixDQUFnQjtZQUMzQ0MsSUFBSUEsV0FBV0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsRUFBRUEsQ0FBQ0E7WUFDM0JBLElBQUlBLENBQUNBLENBQUNBO1lBQ05BLE9BQU9BLENBQUNBLENBQUNBLENBQUNBLENBQUNBLEdBQVNBLFdBQVlBLENBQUNBLElBQUlBLEVBQUVBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBO2dCQUMvQ0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsS0FBS0EsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFDdkJBLENBQUNBO1FBQ0hBLENBQUNBLENBQUM7SUFDSixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixNQUFNLENBQUMsa0NBQWtDLENBQWdCO1lBQ3ZEQyxDQUFDQSxDQUFDQSxPQUFPQSxDQUFDQSxVQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxJQUFPQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUMzQ0EsQ0FBQ0EsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ0wsaUdBQWlHO0FBQ2pHLHFGQUFxRjtBQUNyRixJQUFJLGFBQWEsR0FBb0QsQ0FBQztJQUNwRSxJQUFJLENBQUM7UUFDSCxFQUFFLENBQUMsQ0FBTyxDQUFDLElBQUksV0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBZ0IsRUFBRSxTQUFrQjtnQkFDckVDLE1BQU1BLENBQUNBLFNBQVNBLEdBQVNBLEtBQU1BLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLE1BQU1BLEVBQUVBLENBQUNBLEdBQVNBLEtBQU1BLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLElBQUlBLEVBQUVBLENBQUNBLENBQUNBO1lBQ2pGQSxDQUFDQSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUU7SUFBQSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUNELE1BQU0sQ0FBQyx1Q0FBdUMsQ0FBZ0IsRUFBRSxTQUFrQjtRQUNoRkMsSUFBSUEsR0FBR0EsR0FBR0EsV0FBV0EsQ0FBQ0EsZUFBZUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0E7UUFDckRBLENBQUNBLENBQUNBLE9BQU9BLENBQUNBLFVBQUNBLENBQUNBLEVBQUVBLENBQUNBO1lBQ2JBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLEdBQUdBLFNBQVNBLEdBQUdBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBO1lBQzNCQSxDQUFDQSxFQUFFQSxDQUFDQTtRQUNOQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNIQSxNQUFNQSxDQUFDQSxHQUFHQSxDQUFDQTtJQUNiQSxDQUFDQSxDQUFDO0FBQ0osQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUVMO0lBQUFDO0lBbUJBQyxDQUFDQTtJQWxCUUQsZ0JBQUtBLEdBQVpBLFVBQW1CQSxDQUFZQSxJQUFlRSxNQUFNQSxDQUFDQSxnQkFBZ0JBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQ3BFRiw4QkFBbUJBLEdBQTFCQSxVQUE4QkEsU0FBNkJBO1FBQ3pERyxJQUFJQSxNQUFNQSxHQUFHQSxJQUFJQSxXQUFHQSxFQUFhQSxDQUFDQTtRQUNsQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsSUFBSUEsU0FBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDM0JBLE1BQU1BLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLEVBQUVBLFNBQVNBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBO1FBQ3BDQSxDQUFDQTtRQUNEQSxNQUFNQSxDQUFDQSxNQUFNQSxDQUFDQTtJQUNoQkEsQ0FBQ0E7SUFDTUgsc0JBQVdBLEdBQWxCQSxVQUFzQkEsQ0FBaUJBO1FBQ3JDSSxJQUFJQSxDQUFDQSxHQUF1QkEsRUFBRUEsQ0FBQ0E7UUFDL0JBLENBQUNBLENBQUNBLE9BQU9BLENBQUNBLFVBQUNBLENBQUNBLEVBQUVBLENBQUNBLElBQUtBLE9BQUFBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLEVBQVJBLENBQVFBLENBQUNBLENBQUNBO1FBQzlCQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNYQSxDQUFDQTtJQUNNSiwwQkFBZUEsR0FBdEJBLFVBQXVCQSxLQUFZQSxJQUFtQkssTUFBTUEsQ0FBQ0Esa0JBQWtCQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNsRkwsc0JBQVdBLEdBQWxCQSxVQUFtQkEsQ0FBZ0JBLElBQUlNLFlBQVlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQ2xETixtQkFBUUEsR0FBZkEsVUFBbUJBLENBQUlBLElBQU9PLE1BQU1BLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQ2xDUCxlQUFJQSxHQUFYQSxVQUFlQSxDQUFjQSxJQUFTUSxNQUFNQSxDQUFDQSxhQUFhQSxDQUFDQSxDQUFDQSxFQUFFQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNoRVIsaUJBQU1BLEdBQWJBLFVBQWlCQSxDQUFjQSxJQUFTUyxNQUFNQSxDQUFDQSxhQUFhQSxDQUFDQSxDQUFDQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUMxRVQsaUJBQUNBO0FBQURBLENBQUNBLEFBbkJELElBbUJDO0FBbkJZLGtCQUFVLGFBbUJ0QixDQUFBO0FBRUQ7O0dBRUc7QUFDSDtJQUFBVTtJQXFFQUMsQ0FBQ0E7SUFwRVFELHVCQUFNQSxHQUFiQTtRQUNFRSx5REFBeURBO1FBQ3pEQSxlQUFlQTtRQUNmQSwyQ0FBMkNBO1FBQzNDQSxNQUFNQSxDQUFDQSxFQUFFQSxDQUFDQTtJQUNaQSxDQUFDQTtJQUNNRix5QkFBUUEsR0FBZkEsVUFBZ0JBLEdBQXlCQSxFQUFFQSxHQUFXQTtRQUNwREcsTUFBTUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsY0FBY0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0E7SUFDakNBLENBQUNBO0lBQ01ILG9CQUFHQSxHQUFWQSxVQUFjQSxHQUF1QkEsRUFBRUEsR0FBV0E7UUFDaERJLE1BQU1BLENBQUNBLEdBQUdBLENBQUNBLGNBQWNBLENBQUNBLEdBQUdBLENBQUNBLEdBQUdBLEdBQUdBLENBQUNBLEdBQUdBLENBQUNBLEdBQUdBLFNBQVNBLENBQUNBO0lBQ3hEQSxDQUFDQTtJQUNNSixvQkFBR0EsR0FBVkEsVUFBY0EsR0FBdUJBLEVBQUVBLEdBQVdBLEVBQUVBLEtBQVFBLElBQUlLLEdBQUdBLENBQUNBLEdBQUdBLENBQUNBLEdBQUdBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBO0lBQzVFTCxxQkFBSUEsR0FBWEEsVUFBWUEsR0FBeUJBLElBQWNNLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQ3RFTix1QkFBTUEsR0FBYkEsVUFBaUJBLEdBQXVCQTtRQUN0Q08sTUFBTUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsVUFBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0E7WUFDbENBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ2ZBLE1BQU1BLENBQUNBLENBQUNBLENBQUNBO1FBQ1hBLENBQUNBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBO0lBQ1RBLENBQUNBO0lBQ01QLHdCQUFPQSxHQUFkQSxVQUFlQSxHQUF5QkE7UUFDdENRLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLElBQUlBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBO1lBQ3JCQSxNQUFNQSxDQUFDQSxLQUFLQSxDQUFDQTtRQUNmQSxDQUFDQTtRQUNEQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNkQSxDQUFDQTtJQUNNUix1QkFBTUEsR0FBYkEsVUFBZUEsR0FBeUJBLEVBQUVBLEdBQVdBLElBQUlTLE9BQU9BLEdBQUdBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQ3BFVCx3QkFBT0EsR0FBZEEsVUFBcUJBLEdBQXVCQSxFQUFFQSxRQUFxQ0E7UUFDakZVLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLElBQUlBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBO1lBQ3JCQSxFQUFFQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxjQUFjQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDN0JBLFFBQVFBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLEVBQUVBLElBQUlBLENBQUNBLENBQUNBO1lBQzVCQSxDQUFDQTtRQUNIQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUVNVixzQkFBS0EsR0FBWkEsVUFBZ0JBLEVBQXNCQSxFQUFFQSxFQUFzQkE7UUFDNURXLElBQUlBLENBQUNBLEdBQXVCQSxFQUFFQSxDQUFDQTtRQUUvQkEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsSUFBSUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDcEJBLEVBQUVBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLGNBQWNBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO2dCQUM1QkEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsRUFBRUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFDckJBLENBQUNBO1FBQ0hBLENBQUNBO1FBRURBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLElBQUlBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO1lBQ3BCQSxFQUFFQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxjQUFjQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDNUJBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLEdBQUdBLEVBQUVBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ3JCQSxDQUFDQTtRQUNIQSxDQUFDQTtRQUVEQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNYQSxDQUFDQTtJQUVNWCx1QkFBTUEsR0FBYkEsVUFBaUJBLEVBQXNCQSxFQUFFQSxFQUFzQkE7UUFDN0RZLElBQUlBLEVBQUVBLEdBQUdBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBO1FBQ3pCQSxJQUFJQSxFQUFFQSxHQUFHQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQTtRQUN6QkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsTUFBTUEsSUFBSUEsRUFBRUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDM0JBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO1FBQ2ZBLENBQUNBO1FBQ0RBLElBQUlBLEdBQUdBLENBQUNBO1FBQ1JBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLEVBQUVBLENBQUNBLE1BQU1BLEVBQUVBLENBQUNBLEVBQUVBLEVBQUVBLENBQUNBO1lBQ25DQSxHQUFHQSxHQUFHQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNaQSxFQUFFQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxDQUFDQSxLQUFLQSxFQUFFQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDeEJBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO1lBQ2ZBLENBQUNBO1FBQ0hBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBO0lBQ2RBLENBQUNBO0lBQ0haLHVCQUFDQTtBQUFEQSxDQUFDQSxBQXJFRCxJQXFFQztBQXJFWSx3QkFBZ0IsbUJBcUU1QixDQUFBO0FBUUQ7SUFBQWE7SUFvR0FDLENBQUNBO0lBbkdDRCw2RUFBNkVBO0lBQzdFQSxxQkFBcUJBO0lBQ2RBLDJCQUFlQSxHQUF0QkEsVUFBdUJBLElBQVlBLElBQVdFLE1BQU1BLENBQUNBLElBQUlBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQ2hFRiw4QkFBa0JBLEdBQXpCQSxVQUEwQkEsSUFBWUEsSUFBV0csTUFBTUEsQ0FBQ0EsSUFBSUEsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDbkVILGlCQUFLQSxHQUFaQSxVQUFnQkEsS0FBVUEsSUFBU0ksTUFBTUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDcERKLDJCQUFlQSxHQUF0QkEsVUFBMEJBLEtBQVVBO1FBQ2xDSyxJQUFJQSxNQUFNQSxHQUFHQSxXQUFXQSxDQUFDQSxLQUFLQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQTtRQUN0Q0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0E7UUFDcEJBLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBO0lBQ2hCQSxDQUFDQTtJQUNNTCw0QkFBZ0JBLEdBQXZCQSxVQUEyQkEsS0FBVUEsRUFBRUEsRUFBNkJBO1FBQ2xFTSxHQUFHQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxLQUFLQSxDQUFDQSxNQUFNQSxFQUFFQSxDQUFDQSxFQUFFQSxFQUFFQSxDQUFDQTtZQUN0Q0EsRUFBRUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDbEJBLENBQUNBO0lBQ0hBLENBQUNBO0lBQ01OLGlCQUFLQSxHQUFaQSxVQUFnQkEsS0FBVUE7UUFDeEJPLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLEtBQUtBLENBQUNBO1lBQUNBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBO1FBQ3hCQSxNQUFNQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNsQkEsQ0FBQ0E7SUFDTVAsZ0JBQUlBLEdBQVhBLFVBQWVBLEtBQVVBO1FBQ3ZCUSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxLQUFLQSxJQUFJQSxLQUFLQSxDQUFDQSxNQUFNQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtRQUM3Q0EsTUFBTUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsTUFBTUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDakNBLENBQUNBO0lBQ01SLG1CQUFPQSxHQUFkQSxVQUFrQkEsS0FBVUEsRUFBRUEsS0FBUUEsRUFBRUEsVUFBc0JBO1FBQXRCUywwQkFBc0JBLEdBQXRCQSxjQUFzQkE7UUFDNURBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBLE9BQU9BLENBQUNBLEtBQUtBLEVBQUVBLFVBQVVBLENBQUNBLENBQUNBO0lBQzFDQSxDQUFDQTtJQUNNVCxvQkFBUUEsR0FBZkEsVUFBbUJBLElBQVNBLEVBQUVBLEVBQUtBLElBQWFVLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLEVBQUVBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQzFFVixvQkFBUUEsR0FBZkEsVUFBbUJBLEtBQVVBO1FBQzNCVyxJQUFJQSxDQUFDQSxHQUFHQSxXQUFXQSxDQUFDQSxLQUFLQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQTtRQUNqQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0E7SUFDckJBLENBQUNBO0lBQ01YLGtCQUFNQSxHQUFiQSxVQUFjQSxDQUFRQSxFQUFFQSxDQUFRQSxJQUFXWSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUN6RFosa0JBQU1BLEdBQWJBLFVBQWlCQSxJQUFTQSxFQUFFQSxLQUFhQSxFQUFFQSxLQUFRQSxJQUFJYSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxLQUFLQSxFQUFFQSxDQUFDQSxFQUFFQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUMvRWIsb0JBQVFBLEdBQWZBLFVBQW1CQSxJQUFTQSxFQUFFQSxLQUFhQTtRQUN6Q2MsSUFBSUEsR0FBR0EsR0FBR0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0E7UUFDdEJBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLEtBQUtBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO1FBQ3RCQSxNQUFNQSxDQUFDQSxHQUFHQSxDQUFDQTtJQUNiQSxDQUFDQTtJQUNNZCxxQkFBU0EsR0FBaEJBLFVBQW9CQSxJQUFTQSxFQUFFQSxLQUFVQTtRQUN2Q2UsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsS0FBS0EsQ0FBQ0EsTUFBTUEsRUFBRUEsRUFBRUEsQ0FBQ0EsRUFBRUEsQ0FBQ0E7WUFDdENBLElBQUlBLEtBQUtBLEdBQUdBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ25DQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxLQUFLQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUN4QkEsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUFDTWYsa0JBQU1BLEdBQWJBLFVBQWlCQSxJQUFTQSxFQUFFQSxFQUFLQTtRQUMvQmdCLElBQUlBLEtBQUtBLEdBQUdBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLEVBQUVBLENBQUNBLENBQUNBO1FBQzdCQSxFQUFFQSxDQUFDQSxDQUFDQSxLQUFLQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNmQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxLQUFLQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN0QkEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDZEEsQ0FBQ0E7UUFDREEsTUFBTUEsQ0FBQ0EsS0FBS0EsQ0FBQ0E7SUFDZkEsQ0FBQ0E7SUFDTWhCLGlCQUFLQSxHQUFaQSxVQUFhQSxJQUFXQSxJQUFJaUIsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDdkNqQixtQkFBT0EsR0FBZEEsVUFBZUEsSUFBV0EsSUFBYWtCLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQzFEbEIsZ0JBQUlBLEdBQVhBLFVBQVlBLElBQVdBLEVBQUVBLEtBQVVBLEVBQUVBLEtBQWlCQSxFQUFFQSxHQUFrQkE7UUFBckNtQixxQkFBaUJBLEdBQWpCQSxTQUFpQkE7UUFBRUEsbUJBQWtCQSxHQUFsQkEsVUFBa0JBO1FBQ3hFQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxFQUFFQSxLQUFLQSxFQUFFQSxHQUFHQSxLQUFLQSxJQUFJQSxHQUFHQSxJQUFJQSxDQUFDQSxNQUFNQSxHQUFHQSxHQUFHQSxDQUFDQSxDQUFDQTtJQUM1REEsQ0FBQ0E7SUFDTW5CLGtCQUFNQSxHQUFiQSxVQUFjQSxDQUFRQSxFQUFFQSxDQUFRQTtRQUM5Qm9CLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLE1BQU1BLElBQUlBLENBQUNBLENBQUNBLE1BQU1BLENBQUNBO1lBQUNBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO1FBQ3ZDQSxHQUFHQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxNQUFNQSxFQUFFQSxFQUFFQSxDQUFDQSxFQUFFQSxDQUFDQTtZQUNsQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQUNBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO1FBQ2xDQSxDQUFDQTtRQUNEQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNkQSxDQUFDQTtJQUNNcEIsaUJBQUtBLEdBQVpBLFVBQWdCQSxDQUFNQSxFQUFFQSxJQUFnQkEsRUFBRUEsRUFBaUJBO1FBQW5DcUIsb0JBQWdCQSxHQUFoQkEsUUFBZ0JBO1FBQUVBLGtCQUFpQkEsR0FBakJBLFNBQWlCQTtRQUN6REEsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsRUFBRUEsRUFBRUEsS0FBS0EsSUFBSUEsR0FBR0EsU0FBU0EsR0FBR0EsRUFBRUEsQ0FBQ0EsQ0FBQ0E7SUFDckRBLENBQUNBO0lBQ01yQixrQkFBTUEsR0FBYkEsVUFBaUJBLENBQU1BLEVBQUVBLElBQVlBLEVBQUVBLE1BQWNBLElBQVNzQixNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxFQUFFQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUN2RnRCLGdCQUFJQSxHQUFYQSxVQUFlQSxDQUFNQSxFQUFFQSxTQUFrQ0E7UUFDdkR1QixFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDekJBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBO1FBQ3BCQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUNOQSxDQUFDQSxDQUFDQSxJQUFJQSxFQUFFQSxDQUFDQTtRQUNYQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUNNdkIsb0JBQVFBLEdBQWZBLFVBQW1CQSxDQUFNQSxJQUFZd0IsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDcER4QixrQkFBTUEsR0FBYkEsVUFBaUJBLENBQU1BLElBQVl5QixNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUV2RHpCLG1CQUFPQSxHQUFkQSxVQUFrQkEsSUFBU0EsRUFBRUEsU0FBMkJBO1FBQ3REMEIsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDckJBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBO1FBQ2RBLENBQUNBO1FBQ0RBLElBQUlBLFFBQVFBLEdBQUdBLElBQUlBLENBQUNBO1FBQ3BCQSxJQUFJQSxRQUFRQSxHQUFHQSxDQUFDQSxRQUFRQSxDQUFDQTtRQUN6QkEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsS0FBS0EsR0FBR0EsQ0FBQ0EsRUFBRUEsS0FBS0EsR0FBR0EsSUFBSUEsQ0FBQ0EsTUFBTUEsRUFBRUEsS0FBS0EsRUFBRUEsRUFBRUEsQ0FBQ0E7WUFDakRBLElBQUlBLFNBQVNBLEdBQUdBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO1lBQzVCQSxFQUFFQSxDQUFDQSxDQUFDQSxjQUFPQSxDQUFDQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDdkJBLFFBQVFBLENBQUNBO1lBQ1hBLENBQUNBO1lBQ0RBLElBQUlBLGNBQWNBLEdBQUdBLFNBQVNBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBO1lBQzFDQSxFQUFFQSxDQUFDQSxDQUFDQSxjQUFjQSxHQUFHQSxRQUFRQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDOUJBLFFBQVFBLEdBQUdBLFNBQVNBLENBQUNBO2dCQUNyQkEsUUFBUUEsR0FBR0EsY0FBY0EsQ0FBQ0E7WUFDNUJBLENBQUNBO1FBQ0hBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLFFBQVFBLENBQUNBO0lBQ2xCQSxDQUFDQTtJQUVNMUIsdUJBQVdBLEdBQWxCQSxVQUFtQkEsSUFBV0EsSUFBYTJCLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBLFFBQVFBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQzVFM0Isa0JBQUNBO0FBQURBLENBQUNBLEFBcEdELElBb0dDO0FBcEdZLG1CQUFXLGNBb0d2QixDQUFBO0FBRUQsNEJBQW1DLEdBQVE7SUFDekM0QixFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxpQkFBVUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0E7UUFBQ0EsTUFBTUEsQ0FBQ0EsS0FBS0EsQ0FBQ0E7SUFDbkNBLE1BQU1BLENBQUNBLGNBQU9BLENBQUNBLEdBQUdBLENBQUNBO1FBQ1pBLENBQUNBLENBQUNBLENBQUNBLEdBQUdBLFlBQVlBLFdBQUdBLENBQUNBO1lBQ3JCQSx3QkFBaUJBLEVBQUVBLElBQUlBLEdBQUdBLENBQUNBLENBQUNBLENBQUVBLDBDQUEwQ0E7QUFDbEZBLENBQUNBO0FBTGUsMEJBQWtCLHFCQUtqQyxDQUFBO0FBRUQsMkJBQWtDLENBQU0sRUFBRSxDQUFNLEVBQUUsVUFBb0I7SUFDcEVDLElBQUlBLFNBQVNBLEdBQUdBLENBQUNBLENBQUNBLHdCQUFpQkEsRUFBRUEsQ0FBQ0EsRUFBRUEsQ0FBQ0E7SUFDekNBLElBQUlBLFNBQVNBLEdBQUdBLENBQUNBLENBQUNBLHdCQUFpQkEsRUFBRUEsQ0FBQ0EsRUFBRUEsQ0FBQ0E7SUFFekNBLE9BQU9BLElBQUlBLEVBQUVBLENBQUNBO1FBQ1pBLElBQUlBLEtBQUtBLEdBQUdBLFNBQVNBLENBQUNBLElBQUlBLEVBQUVBLENBQUNBO1FBQzdCQSxJQUFJQSxLQUFLQSxHQUFHQSxTQUFTQSxDQUFDQSxJQUFJQSxFQUFFQSxDQUFDQTtRQUM3QkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsSUFBSUEsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0E7WUFBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7UUFDMUNBLEVBQUVBLENBQUNBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLElBQUlBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBO1lBQUNBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBO1FBQzNDQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxVQUFVQSxDQUFDQSxLQUFLQSxDQUFDQSxLQUFLQSxFQUFFQSxLQUFLQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQTtZQUFDQSxNQUFNQSxDQUFDQSxLQUFLQSxDQUFDQTtJQUMxREEsQ0FBQ0E7QUFDSEEsQ0FBQ0E7QUFYZSx5QkFBaUIsb0JBV2hDLENBQUE7QUFFRCx5QkFBZ0MsR0FBUSxFQUFFLEVBQVk7SUFDcERDLEVBQUVBLENBQUNBLENBQUNBLGNBQU9BLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQ2pCQSxHQUFHQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxHQUFHQSxDQUFDQSxNQUFNQSxFQUFFQSxDQUFDQSxFQUFFQSxFQUFFQSxDQUFDQTtZQUNwQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDYkEsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDTkEsSUFBSUEsUUFBUUEsR0FBR0EsR0FBR0EsQ0FBQ0Esd0JBQWlCQSxFQUFFQSxDQUFDQSxFQUFFQSxDQUFDQTtRQUMxQ0EsSUFBSUEsSUFBSUEsQ0FBQ0E7UUFDVEEsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsR0FBR0EsUUFBUUEsQ0FBQ0EsSUFBSUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0E7WUFDeENBLEVBQUVBLENBQUNBLElBQUlBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO1FBQ2pCQSxDQUFDQTtJQUNIQSxDQUFDQTtBQUNIQSxDQUFDQTtBQVplLHVCQUFlLGtCQVk5QixDQUFBO0FBRUQsNEVBQTRFO0FBQzVFLHNFQUFzRTtBQUN0RSxJQUFJLGlCQUFpQixHQUE2QixDQUFDO0lBQ2pELElBQUksSUFBSSxHQUFHLElBQUksV0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixNQUFNLENBQUMsMkJBQTJCLEdBQVUsSUFBY0MsTUFBTUEsQ0FBQ0EsSUFBSUEsV0FBR0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQztJQUNuRixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixNQUFNLENBQUMsc0NBQXNDLEdBQVU7WUFDckRDLElBQUlBLEdBQUdBLEdBQUdBLElBQUlBLFdBQUdBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBO1lBQ3ZCQSxFQUFFQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxLQUFLQSxHQUFHQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDNUJBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLEVBQUVBLENBQUNBLEdBQUdBLEdBQUdBLENBQUNBLE1BQU1BLEVBQUVBLENBQUNBLEVBQUVBLEVBQUVBLENBQUNBO29CQUNwQ0EsR0FBR0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ2xCQSxDQUFDQTtZQUNIQSxDQUFDQTtZQUNEQSxNQUFNQSxDQUFDQSxHQUFHQSxDQUFDQTtRQUNiQSxDQUFDQSxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDTDtJQUFBQztJQUlBQyxDQUFDQTtJQUhRRCx5QkFBY0EsR0FBckJBLFVBQXlCQSxHQUFRQSxJQUFZRSxNQUFNQSxDQUFDQSxpQkFBaUJBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBQ3RFRixjQUFHQSxHQUFWQSxVQUFjQSxDQUFTQSxFQUFFQSxHQUFNQSxJQUFhRyxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUN6REgsaUJBQU1BLEdBQWJBLFVBQWlCQSxDQUFTQSxFQUFFQSxDQUFJQSxJQUFJSSxDQUFDQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNwREosaUJBQUNBO0FBQURBLENBQUNBLEFBSkQsSUFJQztBQUpZLGtCQUFVLGFBSXRCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc0pzT2JqZWN0LFxuICBnbG9iYWwsXG4gIGlzUHJlc2VudCxcbiAgaXNCbGFuayxcbiAgaXNBcnJheSxcbiAgZ2V0U3ltYm9sSXRlcmF0b3Jcbn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcblxuZXhwb3J0IHZhciBNYXAgPSBnbG9iYWwuTWFwO1xuZXhwb3J0IHZhciBTZXQgPSBnbG9iYWwuU2V0O1xuXG4vLyBTYWZhcmkgYW5kIEludGVybmV0IEV4cGxvcmVyIGRvIG5vdCBzdXBwb3J0IHRoZSBpdGVyYWJsZSBwYXJhbWV0ZXIgdG8gdGhlXG4vLyBNYXAgY29uc3RydWN0b3IuICBXZSB3b3JrIGFyb3VuZCB0aGF0IGJ5IG1hbnVhbGx5IGFkZGluZyB0aGUgaXRlbXMuXG52YXIgY3JlYXRlTWFwRnJvbVBhaXJzOiB7KHBhaXJzOiBhbnlbXSk6IE1hcDxhbnksIGFueT59ID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIGlmIChuZXcgTWFwKDxhbnk+W1sxLCAyXV0pLnNpemUgPT09IDEpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBjcmVhdGVNYXBGcm9tUGFpcnMocGFpcnM6IGFueVtdKTogTWFwPGFueSwgYW55PiB7IHJldHVybiBuZXcgTWFwKHBhaXJzKTsgfTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlTWFwQW5kUG9wdWxhdGVGcm9tUGFpcnMocGFpcnM6IGFueVtdKTogTWFwPGFueSwgYW55PiB7XG4gICAgdmFyIG1hcCA9IG5ldyBNYXAoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcGFpciA9IHBhaXJzW2ldO1xuICAgICAgbWFwLnNldChwYWlyWzBdLCBwYWlyWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcDtcbiAgfTtcbn0pKCk7XG52YXIgY3JlYXRlTWFwRnJvbU1hcDogeyhtOiBNYXA8YW55LCBhbnk+KTogTWFwPGFueSwgYW55Pn0gPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgaWYgKG5ldyBNYXAoPGFueT5uZXcgTWFwKCkpKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlTWFwRnJvbU1hcChtOiBNYXA8YW55LCBhbnk+KTogTWFwPGFueSwgYW55PiB7IHJldHVybiBuZXcgTWFwKDxhbnk+bSk7IH07XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZU1hcEFuZFBvcHVsYXRlRnJvbU1hcChtOiBNYXA8YW55LCBhbnk+KTogTWFwPGFueSwgYW55PiB7XG4gICAgdmFyIG1hcCA9IG5ldyBNYXAoKTtcbiAgICBtLmZvckVhY2goKHYsIGspID0+IHsgbWFwLnNldChrLCB2KTsgfSk7XG4gICAgcmV0dXJuIG1hcDtcbiAgfTtcbn0pKCk7XG52YXIgX2NsZWFyVmFsdWVzOiB7KG06IE1hcDxhbnksIGFueT4pfSA9IChmdW5jdGlvbigpIHtcbiAgaWYgKCg8YW55PihuZXcgTWFwKCkpLmtleXMoKSkubmV4dCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBfY2xlYXJWYWx1ZXMobTogTWFwPGFueSwgYW55Pikge1xuICAgICAgdmFyIGtleUl0ZXJhdG9yID0gbS5rZXlzKCk7XG4gICAgICB2YXIgaztcbiAgICAgIHdoaWxlICghKChrID0gKDxhbnk+a2V5SXRlcmF0b3IpLm5leHQoKSkuZG9uZSkpIHtcbiAgICAgICAgbS5zZXQoay52YWx1ZSwgbnVsbCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gX2NsZWFyVmFsdWVzV2l0aEZvcmVFYWNoKG06IE1hcDxhbnksIGFueT4pIHtcbiAgICAgIG0uZm9yRWFjaCgodiwgaykgPT4geyBtLnNldChrLCBudWxsKTsgfSk7XG4gICAgfTtcbiAgfVxufSkoKTtcbi8vIFNhZmFyaSBkb2Vzbid0IGltcGxlbWVudCBNYXBJdGVyYXRvci5uZXh0KCksIHdoaWNoIGlzIHVzZWQgaXMgVHJhY2V1cidzIHBvbHlmaWxsIG9mIEFycmF5LmZyb21cbi8vIFRPRE8obWxhdmFsKTogcmVtb3ZlIHRoZSB3b3JrIGFyb3VuZCBvbmNlIHdlIGhhdmUgYSB3b3JraW5nIHBvbHlmaWxsIG9mIEFycmF5LmZyb21cbnZhciBfYXJyYXlGcm9tTWFwOiB7KG06IE1hcDxhbnksIGFueT4sIGdldFZhbHVlczogYm9vbGVhbik6IGFueVtdfSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICBpZiAoKDxhbnk+KG5ldyBNYXAoKSkudmFsdWVzKCkpLm5leHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBjcmVhdGVBcnJheUZyb21NYXAobTogTWFwPGFueSwgYW55PiwgZ2V0VmFsdWVzOiBib29sZWFuKTogYW55W10ge1xuICAgICAgICByZXR1cm4gZ2V0VmFsdWVzID8gKDxhbnk+QXJyYXkpLmZyb20obS52YWx1ZXMoKSkgOiAoPGFueT5BcnJheSkuZnJvbShtLmtleXMoKSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiBjcmVhdGVBcnJheUZyb21NYXBXaXRoRm9yZWFjaChtOiBNYXA8YW55LCBhbnk+LCBnZXRWYWx1ZXM6IGJvb2xlYW4pOiBhbnlbXSB7XG4gICAgdmFyIHJlcyA9IExpc3RXcmFwcGVyLmNyZWF0ZUZpeGVkU2l6ZShtLnNpemUpLCBpID0gMDtcbiAgICBtLmZvckVhY2goKHYsIGspID0+IHtcbiAgICAgIHJlc1tpXSA9IGdldFZhbHVlcyA/IHYgOiBrO1xuICAgICAgaSsrO1xuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH07XG59KSgpO1xuXG5leHBvcnQgY2xhc3MgTWFwV3JhcHBlciB7XG4gIHN0YXRpYyBjbG9uZTxLLCBWPihtOiBNYXA8SywgVj4pOiBNYXA8SywgVj4geyByZXR1cm4gY3JlYXRlTWFwRnJvbU1hcChtKTsgfVxuICBzdGF0aWMgY3JlYXRlRnJvbVN0cmluZ01hcDxUPihzdHJpbmdNYXA6IHtba2V5OiBzdHJpbmddOiBUfSk6IE1hcDxzdHJpbmcsIFQ+IHtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IE1hcDxzdHJpbmcsIFQ+KCk7XG4gICAgZm9yICh2YXIgcHJvcCBpbiBzdHJpbmdNYXApIHtcbiAgICAgIHJlc3VsdC5zZXQocHJvcCwgc3RyaW5nTWFwW3Byb3BdKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBzdGF0aWMgdG9TdHJpbmdNYXA8VD4obTogTWFwPHN0cmluZywgVD4pOiB7W2tleTogc3RyaW5nXTogVH0ge1xuICAgIHZhciByOiB7W2tleTogc3RyaW5nXTogVH0gPSB7fTtcbiAgICBtLmZvckVhY2goKHYsIGspID0+IHJba10gPSB2KTtcbiAgICByZXR1cm4gcjtcbiAgfVxuICBzdGF0aWMgY3JlYXRlRnJvbVBhaXJzKHBhaXJzOiBhbnlbXSk6IE1hcDxhbnksIGFueT4geyByZXR1cm4gY3JlYXRlTWFwRnJvbVBhaXJzKHBhaXJzKTsgfVxuICBzdGF0aWMgY2xlYXJWYWx1ZXMobTogTWFwPGFueSwgYW55PikgeyBfY2xlYXJWYWx1ZXMobSk7IH1cbiAgc3RhdGljIGl0ZXJhYmxlPFQ+KG06IFQpOiBUIHsgcmV0dXJuIG07IH1cbiAgc3RhdGljIGtleXM8Sz4obTogTWFwPEssIGFueT4pOiBLW10geyByZXR1cm4gX2FycmF5RnJvbU1hcChtLCBmYWxzZSk7IH1cbiAgc3RhdGljIHZhbHVlczxWPihtOiBNYXA8YW55LCBWPik6IFZbXSB7IHJldHVybiBfYXJyYXlGcm9tTWFwKG0sIHRydWUpOyB9XG59XG5cbi8qKlxuICogV3JhcHMgSmF2YXNjcmlwdCBPYmplY3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBTdHJpbmdNYXBXcmFwcGVyIHtcbiAgc3RhdGljIGNyZWF0ZSgpOiB7W2s6IC8qYW55Ki8gc3RyaW5nXTogYW55fSB7XG4gICAgLy8gTm90ZTogV2UgYXJlIG5vdCB1c2luZyBPYmplY3QuY3JlYXRlKG51bGwpIGhlcmUgZHVlIHRvXG4gICAgLy8gcGVyZm9ybWFuY2UhXG4gICAgLy8gaHR0cDovL2pzcGVyZi5jb20vbmcyLW9iamVjdC1jcmVhdGUtbnVsbFxuICAgIHJldHVybiB7fTtcbiAgfVxuICBzdGF0aWMgY29udGFpbnMobWFwOiB7W2tleTogc3RyaW5nXTogYW55fSwga2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbWFwLmhhc093blByb3BlcnR5KGtleSk7XG4gIH1cbiAgc3RhdGljIGdldDxWPihtYXA6IHtba2V5OiBzdHJpbmddOiBWfSwga2V5OiBzdHJpbmcpOiBWIHtcbiAgICByZXR1cm4gbWFwLmhhc093blByb3BlcnR5KGtleSkgPyBtYXBba2V5XSA6IHVuZGVmaW5lZDtcbiAgfVxuICBzdGF0aWMgc2V0PFY+KG1hcDoge1trZXk6IHN0cmluZ106IFZ9LCBrZXk6IHN0cmluZywgdmFsdWU6IFYpIHsgbWFwW2tleV0gPSB2YWx1ZTsgfVxuICBzdGF0aWMga2V5cyhtYXA6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogc3RyaW5nW10geyByZXR1cm4gT2JqZWN0LmtleXMobWFwKTsgfVxuICBzdGF0aWMgdmFsdWVzPFQ+KG1hcDoge1trZXk6IHN0cmluZ106IFR9KTogVFtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobWFwKS5yZWR1Y2UoKHIsIGEpID0+IHtcbiAgICAgIHIucHVzaChtYXBbYV0pO1xuICAgICAgcmV0dXJuIHI7XG4gICAgfSwgW10pO1xuICB9XG4gIHN0YXRpYyBpc0VtcHR5KG1hcDoge1trZXk6IHN0cmluZ106IGFueX0pOiBib29sZWFuIHtcbiAgICBmb3IgKHZhciBwcm9wIGluIG1hcCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBzdGF0aWMgZGVsZXRlIChtYXA6IHtba2V5OiBzdHJpbmddOiBhbnl9LCBrZXk6IHN0cmluZykgeyBkZWxldGUgbWFwW2tleV07IH1cbiAgc3RhdGljIGZvckVhY2g8SywgVj4obWFwOiB7W2tleTogc3RyaW5nXTogVn0sIGNhbGxiYWNrOiAvKihWLCBLKSA9PiB2b2lkKi8gRnVuY3Rpb24pIHtcbiAgICBmb3IgKHZhciBwcm9wIGluIG1hcCkge1xuICAgICAgaWYgKG1hcC5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICBjYWxsYmFjayhtYXBbcHJvcF0sIHByb3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBtZXJnZTxWPihtMToge1trZXk6IHN0cmluZ106IFZ9LCBtMjoge1trZXk6IHN0cmluZ106IFZ9KToge1trZXk6IHN0cmluZ106IFZ9IHtcbiAgICB2YXIgbToge1trZXk6IHN0cmluZ106IFZ9ID0ge307XG5cbiAgICBmb3IgKHZhciBhdHRyIGluIG0xKSB7XG4gICAgICBpZiAobTEuaGFzT3duUHJvcGVydHkoYXR0cikpIHtcbiAgICAgICAgbVthdHRyXSA9IG0xW2F0dHJdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGF0dHIgaW4gbTIpIHtcbiAgICAgIGlmIChtMi5oYXNPd25Qcm9wZXJ0eShhdHRyKSkge1xuICAgICAgICBtW2F0dHJdID0gbTJbYXR0cl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG07XG4gIH1cblxuICBzdGF0aWMgZXF1YWxzPFY+KG0xOiB7W2tleTogc3RyaW5nXTogVn0sIG0yOiB7W2tleTogc3RyaW5nXTogVn0pOiBib29sZWFuIHtcbiAgICB2YXIgazEgPSBPYmplY3Qua2V5cyhtMSk7XG4gICAgdmFyIGsyID0gT2JqZWN0LmtleXMobTIpO1xuICAgIGlmIChrMS5sZW5ndGggIT0gazIubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBrZXk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrMS5sZW5ndGg7IGkrKykge1xuICAgICAga2V5ID0gazFbaV07XG4gICAgICBpZiAobTFba2V5XSAhPT0gbTJba2V5XSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogQSBib29sZWFuLXZhbHVlZCBmdW5jdGlvbiBvdmVyIGEgdmFsdWUsIHBvc3NpYmx5IGluY2x1ZGluZyBjb250ZXh0IGluZm9ybWF0aW9uXG4gKiByZWdhcmRpbmcgdGhhdCB2YWx1ZSdzIHBvc2l0aW9uIGluIGFuIGFycmF5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZWRpY2F0ZTxUPiB7ICh2YWx1ZTogVCwgaW5kZXg/OiBudW1iZXIsIGFycmF5PzogVFtdKTogYm9vbGVhbjsgfVxuXG5leHBvcnQgY2xhc3MgTGlzdFdyYXBwZXIge1xuICAvLyBKUyBoYXMgbm8gd2F5IHRvIGV4cHJlc3MgYSBzdGF0aWNhbGx5IGZpeGVkIHNpemUgbGlzdCwgYnV0IGRhcnQgZG9lcyBzbyB3ZVxuICAvLyBrZWVwIGJvdGggbWV0aG9kcy5cbiAgc3RhdGljIGNyZWF0ZUZpeGVkU2l6ZShzaXplOiBudW1iZXIpOiBhbnlbXSB7IHJldHVybiBuZXcgQXJyYXkoc2l6ZSk7IH1cbiAgc3RhdGljIGNyZWF0ZUdyb3dhYmxlU2l6ZShzaXplOiBudW1iZXIpOiBhbnlbXSB7IHJldHVybiBuZXcgQXJyYXkoc2l6ZSk7IH1cbiAgc3RhdGljIGNsb25lPFQ+KGFycmF5OiBUW10pOiBUW10geyByZXR1cm4gYXJyYXkuc2xpY2UoMCk7IH1cbiAgc3RhdGljIGNyZWF0ZUltbXV0YWJsZTxUPihhcnJheTogVFtdKTogVFtdIHtcbiAgICB2YXIgcmVzdWx0ID0gTGlzdFdyYXBwZXIuY2xvbmUoYXJyYXkpO1xuICAgIE9iamVjdC5zZWFsKHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBzdGF0aWMgZm9yRWFjaFdpdGhJbmRleDxUPihhcnJheTogVFtdLCBmbjogKHQ6IFQsIG46IG51bWJlcikgPT4gdm9pZCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZuKGFycmF5W2ldLCBpKTtcbiAgICB9XG4gIH1cbiAgc3RhdGljIGZpcnN0PFQ+KGFycmF5OiBUW10pOiBUIHtcbiAgICBpZiAoIWFycmF5KSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gYXJyYXlbMF07XG4gIH1cbiAgc3RhdGljIGxhc3Q8VD4oYXJyYXk6IFRbXSk6IFQge1xuICAgIGlmICghYXJyYXkgfHwgYXJyYXkubGVuZ3RoID09IDApIHJldHVybiBudWxsO1xuICAgIHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTtcbiAgfVxuICBzdGF0aWMgaW5kZXhPZjxUPihhcnJheTogVFtdLCB2YWx1ZTogVCwgc3RhcnRJbmRleDogbnVtYmVyID0gMCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGFycmF5LmluZGV4T2YodmFsdWUsIHN0YXJ0SW5kZXgpO1xuICB9XG4gIHN0YXRpYyBjb250YWluczxUPihsaXN0OiBUW10sIGVsOiBUKTogYm9vbGVhbiB7IHJldHVybiBsaXN0LmluZGV4T2YoZWwpICE9PSAtMTsgfVxuICBzdGF0aWMgcmV2ZXJzZWQ8VD4oYXJyYXk6IFRbXSk6IFRbXSB7XG4gICAgdmFyIGEgPSBMaXN0V3JhcHBlci5jbG9uZShhcnJheSk7XG4gICAgcmV0dXJuIGEucmV2ZXJzZSgpO1xuICB9XG4gIHN0YXRpYyBjb25jYXQoYTogYW55W10sIGI6IGFueVtdKTogYW55W10geyByZXR1cm4gYS5jb25jYXQoYik7IH1cbiAgc3RhdGljIGluc2VydDxUPihsaXN0OiBUW10sIGluZGV4OiBudW1iZXIsIHZhbHVlOiBUKSB7IGxpc3Quc3BsaWNlKGluZGV4LCAwLCB2YWx1ZSk7IH1cbiAgc3RhdGljIHJlbW92ZUF0PFQ+KGxpc3Q6IFRbXSwgaW5kZXg6IG51bWJlcik6IFQge1xuICAgIHZhciByZXMgPSBsaXN0W2luZGV4XTtcbiAgICBsaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBzdGF0aWMgcmVtb3ZlQWxsPFQ+KGxpc3Q6IFRbXSwgaXRlbXM6IFRbXSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBpbmRleCA9IGxpc3QuaW5kZXhPZihpdGVtc1tpXSk7XG4gICAgICBsaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG4gIHN0YXRpYyByZW1vdmU8VD4obGlzdDogVFtdLCBlbDogVCk6IGJvb2xlYW4ge1xuICAgIHZhciBpbmRleCA9IGxpc3QuaW5kZXhPZihlbCk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIGxpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3RhdGljIGNsZWFyKGxpc3Q6IGFueVtdKSB7IGxpc3QubGVuZ3RoID0gMDsgfVxuICBzdGF0aWMgaXNFbXB0eShsaXN0OiBhbnlbXSk6IGJvb2xlYW4geyByZXR1cm4gbGlzdC5sZW5ndGggPT0gMDsgfVxuICBzdGF0aWMgZmlsbChsaXN0OiBhbnlbXSwgdmFsdWU6IGFueSwgc3RhcnQ6IG51bWJlciA9IDAsIGVuZDogbnVtYmVyID0gbnVsbCkge1xuICAgIGxpc3QuZmlsbCh2YWx1ZSwgc3RhcnQsIGVuZCA9PT0gbnVsbCA/IGxpc3QubGVuZ3RoIDogZW5kKTtcbiAgfVxuICBzdGF0aWMgZXF1YWxzKGE6IGFueVtdLCBiOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkge1xuICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgc3RhdGljIHNsaWNlPFQ+KGw6IFRbXSwgZnJvbTogbnVtYmVyID0gMCwgdG86IG51bWJlciA9IG51bGwpOiBUW10ge1xuICAgIHJldHVybiBsLnNsaWNlKGZyb20sIHRvID09PSBudWxsID8gdW5kZWZpbmVkIDogdG8pO1xuICB9XG4gIHN0YXRpYyBzcGxpY2U8VD4obDogVFtdLCBmcm9tOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKTogVFtdIHsgcmV0dXJuIGwuc3BsaWNlKGZyb20sIGxlbmd0aCk7IH1cbiAgc3RhdGljIHNvcnQ8VD4obDogVFtdLCBjb21wYXJlRm4/OiAoYTogVCwgYjogVCkgPT4gbnVtYmVyKSB7XG4gICAgaWYgKGlzUHJlc2VudChjb21wYXJlRm4pKSB7XG4gICAgICBsLnNvcnQoY29tcGFyZUZuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbC5zb3J0KCk7XG4gICAgfVxuICB9XG4gIHN0YXRpYyB0b1N0cmluZzxUPihsOiBUW10pOiBzdHJpbmcgeyByZXR1cm4gbC50b1N0cmluZygpOyB9XG4gIHN0YXRpYyB0b0pTT048VD4obDogVFtdKTogc3RyaW5nIHsgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGwpOyB9XG5cbiAgc3RhdGljIG1heGltdW08VD4obGlzdDogVFtdLCBwcmVkaWNhdGU6ICh0OiBUKSA9PiBudW1iZXIpOiBUIHtcbiAgICBpZiAobGlzdC5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBzb2x1dGlvbiA9IG51bGw7XG4gICAgdmFyIG1heFZhbHVlID0gLUluZmluaXR5O1xuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdmFyIGNhbmRpZGF0ZSA9IGxpc3RbaW5kZXhdO1xuICAgICAgaWYgKGlzQmxhbmsoY2FuZGlkYXRlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBjYW5kaWRhdGVWYWx1ZSA9IHByZWRpY2F0ZShjYW5kaWRhdGUpO1xuICAgICAgaWYgKGNhbmRpZGF0ZVZhbHVlID4gbWF4VmFsdWUpIHtcbiAgICAgICAgc29sdXRpb24gPSBjYW5kaWRhdGU7XG4gICAgICAgIG1heFZhbHVlID0gY2FuZGlkYXRlVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb2x1dGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBpc0ltbXV0YWJsZShsaXN0OiBhbnlbXSk6IGJvb2xlYW4geyByZXR1cm4gT2JqZWN0LmlzU2VhbGVkKGxpc3QpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xpc3RMaWtlSXRlcmFibGUob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKCFpc0pzT2JqZWN0KG9iaikpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIGlzQXJyYXkob2JqKSB8fFxuICAgICAgICAgKCEob2JqIGluc3RhbmNlb2YgTWFwKSAmJiAgICAgIC8vIEpTIE1hcCBhcmUgaXRlcmFibGVzIGJ1dCByZXR1cm4gZW50cmllcyBhcyBbaywgdl1cbiAgICAgICAgICBnZXRTeW1ib2xJdGVyYXRvcigpIGluIG9iaik7ICAvLyBKUyBJdGVyYWJsZSBoYXZlIGEgU3ltYm9sLml0ZXJhdG9yIHByb3Bcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFyZUl0ZXJhYmxlc0VxdWFsKGE6IGFueSwgYjogYW55LCBjb21wYXJhdG9yOiBGdW5jdGlvbik6IGJvb2xlYW4ge1xuICB2YXIgaXRlcmF0b3IxID0gYVtnZXRTeW1ib2xJdGVyYXRvcigpXSgpO1xuICB2YXIgaXRlcmF0b3IyID0gYltnZXRTeW1ib2xJdGVyYXRvcigpXSgpO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgbGV0IGl0ZW0xID0gaXRlcmF0b3IxLm5leHQoKTtcbiAgICBsZXQgaXRlbTIgPSBpdGVyYXRvcjIubmV4dCgpO1xuICAgIGlmIChpdGVtMS5kb25lICYmIGl0ZW0yLmRvbmUpIHJldHVybiB0cnVlO1xuICAgIGlmIChpdGVtMS5kb25lIHx8IGl0ZW0yLmRvbmUpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIWNvbXBhcmF0b3IoaXRlbTEudmFsdWUsIGl0ZW0yLnZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpdGVyYXRlTGlzdExpa2Uob2JqOiBhbnksIGZuOiBGdW5jdGlvbikge1xuICBpZiAoaXNBcnJheShvYmopKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZuKG9ialtpXSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBpdGVyYXRvciA9IG9ialtnZXRTeW1ib2xJdGVyYXRvcigpXSgpO1xuICAgIHZhciBpdGVtO1xuICAgIHdoaWxlICghKChpdGVtID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSkge1xuICAgICAgZm4oaXRlbS52YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIFNhZmFyaSBhbmQgSW50ZXJuZXQgRXhwbG9yZXIgZG8gbm90IHN1cHBvcnQgdGhlIGl0ZXJhYmxlIHBhcmFtZXRlciB0byB0aGVcbi8vIFNldCBjb25zdHJ1Y3Rvci4gIFdlIHdvcmsgYXJvdW5kIHRoYXQgYnkgbWFudWFsbHkgYWRkaW5nIHRoZSBpdGVtcy5cbnZhciBjcmVhdGVTZXRGcm9tTGlzdDogeyhsc3Q6IGFueVtdKTogU2V0PGFueT59ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdGVzdCA9IG5ldyBTZXQoWzEsIDIsIDNdKTtcbiAgaWYgKHRlc3Quc2l6ZSA9PT0gMykge1xuICAgIHJldHVybiBmdW5jdGlvbiBjcmVhdGVTZXRGcm9tTGlzdChsc3Q6IGFueVtdKTogU2V0PGFueT4geyByZXR1cm4gbmV3IFNldChsc3QpOyB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmdW5jdGlvbiBjcmVhdGVTZXRBbmRQb3B1bGF0ZUZyb21MaXN0KGxzdDogYW55W10pOiBTZXQ8YW55PiB7XG4gICAgICB2YXIgcmVzID0gbmV3IFNldChsc3QpO1xuICAgICAgaWYgKHJlcy5zaXplICE9PSBsc3QubGVuZ3RoKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbHN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgcmVzLmFkZChsc3RbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gIH1cbn0pKCk7XG5leHBvcnQgY2xhc3MgU2V0V3JhcHBlciB7XG4gIHN0YXRpYyBjcmVhdGVGcm9tTGlzdDxUPihsc3Q6IFRbXSk6IFNldDxUPiB7IHJldHVybiBjcmVhdGVTZXRGcm9tTGlzdChsc3QpOyB9XG4gIHN0YXRpYyBoYXM8VD4oczogU2V0PFQ+LCBrZXk6IFQpOiBib29sZWFuIHsgcmV0dXJuIHMuaGFzKGtleSk7IH1cbiAgc3RhdGljIGRlbGV0ZTxLPihtOiBTZXQ8Sz4sIGs6IEspIHsgbS5kZWxldGUoayk7IH1cbn1cbiJdfQ==","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar _WHEN_DEFAULT = lang_1.CONST_EXPR(new Object());\r\nvar SwitchView = (function () {\r\n function SwitchView(_viewContainerRef, _templateRef) {\r\n this._viewContainerRef = _viewContainerRef;\r\n this._templateRef = _templateRef;\r\n }\r\n SwitchView.prototype.create = function () { this._viewContainerRef.createEmbeddedView(this._templateRef); };\r\n SwitchView.prototype.destroy = function () { this._viewContainerRef.clear(); };\r\n return SwitchView;\r\n})();\r\nexports.SwitchView = SwitchView;\r\n/**\r\n * Adds or removes DOM sub-trees when their match expressions match the switch expression.\r\n *\r\n * Elements within `NgSwitch` but without `NgSwitchWhen` or `NgSwitchDefault` directives will be\r\n * preserved at the location as specified in the template.\r\n *\r\n * `NgSwitch` simply inserts nested elements based on which match expression matches the value\r\n * obtained from the evaluated switch expression. In other words, you define a container element\r\n * (where you place the directive with a switch expression on the\r\n * **`[ngSwitch]=\"...\"` attribute**), define any inner elements inside of the directive and\r\n * place a `[ngSwitchWhen]` attribute per element.\r\n *\r\n * The `ngSwitchWhen` property is used to inform `NgSwitch` which element to display when the\r\n * expression is evaluated. If a matching expression is not found via a `ngSwitchWhen` property\r\n * then an element with the `ngSwitchDefault` attribute is displayed.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/DQMTII95CbuqWrl3lYAs?p=preview))\r\n *\r\n * ```typescript\r\n * @Component({\r\n * selector: 'app',\r\n * template: `\r\n * <p>Value = {{value}}</p>\r\n * <button (click)=\"inc()\">Increment</button>\r\n *\r\n * <div [ngSwitch]=\"value\">\r\n * <p *ngSwitchWhen=\"'init'\">increment to start</p>\r\n * <p *ngSwitchWhen=\"0\">0, increment again</p>\r\n * <p *ngSwitchWhen=\"1\">1, increment again</p>\r\n * <p *ngSwitchWhen=\"2\">2, stop incrementing</p>\r\n * <p *ngSwitchDefault>> 2, STOP!</p>\r\n * </div>\r\n *\r\n * <!-- alternate syntax -->\r\n *\r\n * <p [ngSwitch]=\"value\">\r\n * <template ngSwitchWhen=\"init\">increment to start</template>\r\n * <template [ngSwitchWhen]=\"0\">0, increment again</template>\r\n * <template [ngSwitchWhen]=\"1\">1, increment again</template>\r\n * <template [ngSwitchWhen]=\"2\">2, stop incrementing</template>\r\n * <template ngSwitchDefault>> 2, STOP!</template>\r\n * </p>\r\n * `,\r\n * directives: [NgSwitch, NgSwitchWhen, NgSwitchDefault]\r\n * })\r\n * export class App {\r\n * value = 'init';\r\n *\r\n * inc() {\r\n * this.value = this.value === 'init' ? 0 : this.value + 1;\r\n * }\r\n * }\r\n *\r\n * bootstrap(App).catch(err => console.error(err));\r\n * ```\r\n */\r\nvar NgSwitch = (function () {\r\n function NgSwitch() {\r\n this._useDefault = false;\r\n this._valueViews = new collection_1.Map();\r\n this._activeViews = [];\r\n }\r\n Object.defineProperty(NgSwitch.prototype, \"ngSwitch\", {\r\n set: function (value) {\r\n // Empty the currently active ViewContainers\r\n this._emptyAllActiveViews();\r\n // Add the ViewContainers matching the value (with a fallback to default)\r\n this._useDefault = false;\r\n var views = this._valueViews.get(value);\r\n if (lang_1.isBlank(views)) {\r\n this._useDefault = true;\r\n views = lang_1.normalizeBlank(this._valueViews.get(_WHEN_DEFAULT));\r\n }\r\n this._activateViews(views);\r\n this._switchValue = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** @internal */\r\n NgSwitch.prototype._onWhenValueChanged = function (oldWhen, newWhen, view) {\r\n this._deregisterView(oldWhen, view);\r\n this._registerView(newWhen, view);\r\n if (oldWhen === this._switchValue) {\r\n view.destroy();\r\n collection_1.ListWrapper.remove(this._activeViews, view);\r\n }\r\n else if (newWhen === this._switchValue) {\r\n if (this._useDefault) {\r\n this._useDefault = false;\r\n this._emptyAllActiveViews();\r\n }\r\n view.create();\r\n this._activeViews.push(view);\r\n }\r\n // Switch to default when there is no more active ViewContainers\r\n if (this._activeViews.length === 0 && !this._useDefault) {\r\n this._useDefault = true;\r\n this._activateViews(this._valueViews.get(_WHEN_DEFAULT));\r\n }\r\n };\r\n /** @internal */\r\n NgSwitch.prototype._emptyAllActiveViews = function () {\r\n var activeContainers = this._activeViews;\r\n for (var i = 0; i < activeContainers.length; i++) {\r\n activeContainers[i].destroy();\r\n }\r\n this._activeViews = [];\r\n };\r\n /** @internal */\r\n NgSwitch.prototype._activateViews = function (views) {\r\n // TODO(vicb): assert(this._activeViews.length === 0);\r\n if (lang_1.isPresent(views)) {\r\n for (var i = 0; i < views.length; i++) {\r\n views[i].create();\r\n }\r\n this._activeViews = views;\r\n }\r\n };\r\n /** @internal */\r\n NgSwitch.prototype._registerView = function (value, view) {\r\n var views = this._valueViews.get(value);\r\n if (lang_1.isBlank(views)) {\r\n views = [];\r\n this._valueViews.set(value, views);\r\n }\r\n views.push(view);\r\n };\r\n /** @internal */\r\n NgSwitch.prototype._deregisterView = function (value, view) {\r\n // `_WHEN_DEFAULT` is used a marker for non-registered whens\r\n if (value === _WHEN_DEFAULT)\r\n return;\r\n var views = this._valueViews.get(value);\r\n if (views.length == 1) {\r\n this._valueViews.delete(value);\r\n }\r\n else {\r\n collection_1.ListWrapper.remove(views, view);\r\n }\r\n };\r\n NgSwitch = __decorate([\r\n core_1.Directive({ selector: '[ngSwitch]', inputs: ['ngSwitch'] }), \r\n __metadata('design:paramtypes', [])\r\n ], NgSwitch);\r\n return NgSwitch;\r\n})();\r\nexports.NgSwitch = NgSwitch;\r\n/**\r\n * Insert the sub-tree when the `ngSwitchWhen` expression evaluates to the same value as the\r\n * enclosing switch expression.\r\n *\r\n * If multiple match expression match the switch expression value, all of them are displayed.\r\n *\r\n * See {@link NgSwitch} for more details and example.\r\n */\r\nvar NgSwitchWhen = (function () {\r\n function NgSwitchWhen(viewContainer, templateRef, ngSwitch) {\r\n // `_WHEN_DEFAULT` is used as a marker for a not yet initialized value\r\n /** @internal */\r\n this._value = _WHEN_DEFAULT;\r\n this._switch = ngSwitch;\r\n this._view = new SwitchView(viewContainer, templateRef);\r\n }\r\n Object.defineProperty(NgSwitchWhen.prototype, \"ngSwitchWhen\", {\r\n set: function (value) {\r\n this._switch._onWhenValueChanged(this._value, value, this._view);\r\n this._value = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgSwitchWhen = __decorate([\r\n core_1.Directive({ selector: '[ngSwitchWhen]', inputs: ['ngSwitchWhen'] }),\r\n __param(2, core_1.Host()), \r\n __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.TemplateRef, NgSwitch])\r\n ], NgSwitchWhen);\r\n return NgSwitchWhen;\r\n})();\r\nexports.NgSwitchWhen = NgSwitchWhen;\r\n/**\r\n * Default case statements are displayed when no match expression matches the switch expression\r\n * value.\r\n *\r\n * See {@link NgSwitch} for more details and example.\r\n */\r\nvar NgSwitchDefault = (function () {\r\n function NgSwitchDefault(viewContainer, templateRef, sswitch) {\r\n sswitch._registerView(_WHEN_DEFAULT, new SwitchView(viewContainer, templateRef));\r\n }\r\n NgSwitchDefault = __decorate([\r\n core_1.Directive({ selector: '[ngSwitchDefault]' }),\r\n __param(2, core_1.Host()), \r\n __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.TemplateRef, NgSwitch])\r\n ], NgSwitchDefault);\r\n return NgSwitchDefault;\r\n})();\r\nexports.NgSwitchDefault = NgSwitchDefault;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfc3dpdGNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbW1vbi9kaXJlY3RpdmVzL25nX3N3aXRjaC50cyJdLCJuYW1lcyI6WyJTd2l0Y2hWaWV3IiwiU3dpdGNoVmlldy5jb25zdHJ1Y3RvciIsIlN3aXRjaFZpZXcuY3JlYXRlIiwiU3dpdGNoVmlldy5kZXN0cm95IiwiTmdTd2l0Y2giLCJOZ1N3aXRjaC5jb25zdHJ1Y3RvciIsIk5nU3dpdGNoLm5nU3dpdGNoIiwiTmdTd2l0Y2guX29uV2hlblZhbHVlQ2hhbmdlZCIsIk5nU3dpdGNoLl9lbXB0eUFsbEFjdGl2ZVZpZXdzIiwiTmdTd2l0Y2guX2FjdGl2YXRlVmlld3MiLCJOZ1N3aXRjaC5fcmVnaXN0ZXJWaWV3IiwiTmdTd2l0Y2guX2RlcmVnaXN0ZXJWaWV3IiwiTmdTd2l0Y2hXaGVuIiwiTmdTd2l0Y2hXaGVuLmNvbnN0cnVjdG9yIiwiTmdTd2l0Y2hXaGVuLm5nU3dpdGNoV2hlbiIsIk5nU3dpdGNoRGVmYXVsdCIsIk5nU3dpdGNoRGVmYXVsdC5jb25zdHJ1Y3RvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEscUJBQTZELGVBQWUsQ0FBQyxDQUFBO0FBQzdFLHFCQUE2RCwwQkFBMEIsQ0FBQyxDQUFBO0FBQ3hGLDJCQUErQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBRWhFLElBQU0sYUFBYSxHQUFHLGlCQUFVLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRS9DO0lBQ0VBLG9CQUFvQkEsaUJBQW1DQSxFQUFVQSxZQUF5QkE7UUFBdEVDLHNCQUFpQkEsR0FBakJBLGlCQUFpQkEsQ0FBa0JBO1FBQVVBLGlCQUFZQSxHQUFaQSxZQUFZQSxDQUFhQTtJQUFHQSxDQUFDQTtJQUU5RkQsMkJBQU1BLEdBQU5BLGNBQWlCRSxJQUFJQSxDQUFDQSxpQkFBaUJBLENBQUNBLGtCQUFrQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsQ0FBQ0EsQ0FB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QSxFQUFFQSxXQUFXQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNuRkEsQ0FBQ0E7SUFMSEQ7UUFBQ0EsZ0JBQVNBLENBQUNBLEVBQUNBLFFBQVFBLEVBQUVBLG1CQUFtQkEsRUFBQ0EsQ0FBQ0E7UUFHN0JBLFdBQUNBLFdBQUlBLEVBQUVBLENBQUFBOzt3QkFHcEJBO0lBQURBLHNCQUFDQTtBQUFEQSxDQUFDQSxBQU5ELElBTUM7QUFMWSx1QkFBZSxrQkFLM0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBIb3N0LCBWaWV3Q29udGFpbmVyUmVmLCBUZW1wbGF0ZVJlZn0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge2lzUHJlc2VudCwgaXNCbGFuaywgbm9ybWFsaXplQmxhbmssIENPTlNUX0VYUFJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge0xpc3RXcmFwcGVyLCBNYXB9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvY29sbGVjdGlvbic7XG5cbmNvbnN0IF9XSEVOX0RFRkFVTFQgPSBDT05TVF9FWFBSKG5ldyBPYmplY3QoKSk7XG5cbmV4cG9ydCBjbGFzcyBTd2l0Y2hWaWV3IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBfdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmKSB7fVxuXG4gIGNyZWF0ZSgpOiB2b2lkIHsgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGVSZWYpOyB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHsgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpOyB9XG59XG5cbi8qKlxuICogQWRkcyBvciByZW1vdmVzIERPTSBzdWItdHJlZXMgd2hlbiB0aGVpciBtYXRjaCBleHByZXNzaW9ucyBtYXRjaCB0aGUgc3dpdGNoIGV4cHJlc3Npb24uXG4gKlxuICogRWxlbWVudHMgd2l0aGluIGBOZ1N3aXRjaGAgYnV0IHdpdGhvdXQgYE5nU3dpdGNoV2hlbmAgb3IgYE5nU3dpdGNoRGVmYXVsdGAgZGlyZWN0aXZlcyB3aWxsIGJlXG4gKiBwcmVzZXJ2ZWQgYXQgdGhlIGxvY2F0aW9uIGFzIHNwZWNpZmllZCBpbiB0aGUgdGVtcGxhdGUuXG4gKlxuICogYE5nU3dpdGNoYCBzaW1wbHkgaW5zZXJ0cyBuZXN0ZWQgZWxlbWVudHMgYmFzZWQgb24gd2hpY2ggbWF0Y2ggZXhwcmVzc2lvbiBtYXRjaGVzIHRoZSB2YWx1ZVxuICogb2J0YWluZWQgZnJvbSB0aGUgZXZhbHVhdGVkIHN3aXRjaCBleHByZXNzaW9uLiBJbiBvdGhlciB3b3JkcywgeW91IGRlZmluZSBhIGNvbnRhaW5lciBlbGVtZW50XG4gKiAod2hlcmUgeW91IHBsYWNlIHRoZSBkaXJlY3RpdmUgd2l0aCBhIHN3aXRjaCBleHByZXNzaW9uIG9uIHRoZVxuICogKipgW25nU3dpdGNoXT1cIi4uLlwiYCBhdHRyaWJ1dGUqKiksIGRlZmluZSBhbnkgaW5uZXIgZWxlbWVudHMgaW5zaWRlIG9mIHRoZSBkaXJlY3RpdmUgYW5kXG4gKiBwbGFjZSBhIGBbbmdTd2l0Y2hXaGVuXWAgYXR0cmlidXRlIHBlciBlbGVtZW50LlxuICpcbiAqIFRoZSBgbmdTd2l0Y2hXaGVuYCBwcm9wZXJ0eSBpcyB1c2VkIHRvIGluZm9ybSBgTmdTd2l0Y2hgIHdoaWNoIGVsZW1lbnQgdG8gZGlzcGxheSB3aGVuIHRoZVxuICogZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQuIElmIGEgbWF0Y2hpbmcgZXhwcmVzc2lvbiBpcyBub3QgZm91bmQgdmlhIGEgYG5nU3dpdGNoV2hlbmAgcHJvcGVydHlcbiAqIHRoZW4gYW4gZWxlbWVudCB3aXRoIHRoZSBgbmdTd2l0Y2hEZWZhdWx0YCBhdHRyaWJ1dGUgaXMgZGlzcGxheWVkLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC9EUU1USUk5NUNidXFXcmwzbFlBcz9wPXByZXZpZXcpKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcCcsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPHA+VmFsdWUgPSB7e3ZhbHVlfX08L3A+XG4gKiAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaW5jKClcIj5JbmNyZW1lbnQ8L2J1dHRvbj5cbiAqXG4gKiAgICAgPGRpdiBbbmdTd2l0Y2hdPVwidmFsdWVcIj5cbiAqICAgICAgIDxwICpuZ1N3aXRjaFdoZW49XCInaW5pdCdcIj5pbmNyZW1lbnQgdG8gc3RhcnQ8L3A+XG4gKiAgICAgICA8cCAqbmdTd2l0Y2hXaGVuPVwiMFwiPjAsIGluY3JlbWVudCBhZ2FpbjwvcD5cbiAqICAgICAgIDxwICpuZ1N3aXRjaFdoZW49XCIxXCI+MSwgaW5jcmVtZW50IGFnYWluPC9wPlxuICogICAgICAgPHAgKm5nU3dpdGNoV2hlbj1cIjJcIj4yLCBzdG9wIGluY3JlbWVudGluZzwvcD5cbiAqICAgICAgIDxwICpuZ1N3aXRjaERlZmF1bHQ+Jmd0OyAyLCBTVE9QITwvcD5cbiAqICAgICA8L2Rpdj5cbiAqXG4gKiAgICAgPCEtLSBhbHRlcm5hdGUgc3ludGF4IC0tPlxuICpcbiAqICAgICA8cCBbbmdTd2l0Y2hdPVwidmFsdWVcIj5cbiAqICAgICAgIDx0ZW1wbGF0ZSBuZ1N3aXRjaFdoZW49XCJpbml0XCI+aW5jcmVtZW50IHRvIHN0YXJ0PC90ZW1wbGF0ZT5cbiAqICAgICAgIDx0ZW1wbGF0ZSBbbmdTd2l0Y2hXaGVuXT1cIjBcIj4wLCBpbmNyZW1lbnQgYWdhaW48L3RlbXBsYXRlPlxuICogICAgICAgPHRlbXBsYXRlIFtuZ1N3aXRjaFdoZW5dPVwiMVwiPjEsIGluY3JlbWVudCBhZ2FpbjwvdGVtcGxhdGU+XG4gKiAgICAgICA8dGVtcGxhdGUgW25nU3dpdGNoV2hlbl09XCIyXCI+Miwgc3RvcCBpbmNyZW1lbnRpbmc8L3RlbXBsYXRlPlxuICogICAgICAgPHRlbXBsYXRlIG5nU3dpdGNoRGVmYXVsdD4mZ3Q7IDIsIFNUT1AhPC90ZW1wbGF0ZT5cbiAqICAgICA8L3A+XG4gKiAgIGAsXG4gKiAgIGRpcmVjdGl2ZXM6IFtOZ1N3aXRjaCwgTmdTd2l0Y2hXaGVuLCBOZ1N3aXRjaERlZmF1bHRdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcCB7XG4gKiAgIHZhbHVlID0gJ2luaXQnO1xuICpcbiAqICAgaW5jKCkge1xuICogICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlID09PSAnaW5pdCcgPyAwIDogdGhpcy52YWx1ZSArIDE7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBib290c3RyYXAoQXBwKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tuZ1N3aXRjaF0nLCBpbnB1dHM6IFsnbmdTd2l0Y2gnXX0pXG5leHBvcnQgY2xhc3MgTmdTd2l0Y2gge1xuICBwcml2YXRlIF9zd2l0Y2hWYWx1ZTogYW55O1xuICBwcml2YXRlIF91c2VEZWZhdWx0OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZhbHVlVmlld3MgPSBuZXcgTWFwPGFueSwgU3dpdGNoVmlld1tdPigpO1xuICBwcml2YXRlIF9hY3RpdmVWaWV3czogU3dpdGNoVmlld1tdID0gW107XG5cbiAgc2V0IG5nU3dpdGNoKHZhbHVlOiBhbnkpIHtcbiAgICAvLyBFbXB0eSB0aGUgY3VycmVudGx5IGFjdGl2ZSBWaWV3Q29udGFpbmVyc1xuICAgIHRoaXMuX2VtcHR5QWxsQWN0aXZlVmlld3MoKTtcblxuICAgIC8vIEFkZCB0aGUgVmlld0NvbnRhaW5lcnMgbWF0Y2hpbmcgdGhlIHZhbHVlICh3aXRoIGEgZmFsbGJhY2sgdG8gZGVmYXVsdClcbiAgICB0aGlzLl91c2VEZWZhdWx0ID0gZmFsc2U7XG4gICAgdmFyIHZpZXdzID0gdGhpcy5fdmFsdWVWaWV3cy5nZXQodmFsdWUpO1xuICAgIGlmIChpc0JsYW5rKHZpZXdzKSkge1xuICAgICAgdGhpcy5fdXNlRGVmYXVsdCA9IHRydWU7XG4gICAgICB2aWV3cyA9IG5vcm1hbGl6ZUJsYW5rKHRoaXMuX3ZhbHVlVmlld3MuZ2V0KF9XSEVOX0RFRkFVTFQpKTtcbiAgICB9XG4gICAgdGhpcy5fYWN0aXZhdGVWaWV3cyh2aWV3cyk7XG5cbiAgICB0aGlzLl9zd2l0Y2hWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfb25XaGVuVmFsdWVDaGFuZ2VkKG9sZFdoZW46IGFueSwgbmV3V2hlbjogYW55LCB2aWV3OiBTd2l0Y2hWaWV3KTogdm9pZCB7XG4gICAgdGhpcy5fZGVyZWdpc3RlclZpZXcob2xkV2hlbiwgdmlldyk7XG4gICAgdGhpcy5fcmVnaXN0ZXJWaWV3KG5ld1doZW4sIHZpZXcpO1xuXG4gICAgaWYgKG9sZFdoZW4gPT09IHRoaXMuX3N3aXRjaFZhbHVlKSB7XG4gICAgICB2aWV3LmRlc3Ryb3koKTtcbiAgICAgIExpc3RXcmFwcGVyLnJlbW92ZSh0aGlzLl9hY3RpdmVWaWV3cywgdmlldyk7XG4gICAgfSBlbHNlIGlmIChuZXdXaGVuID09PSB0aGlzLl9zd2l0Y2hWYWx1ZSkge1xuICAgICAgaWYgKHRoaXMuX3VzZURlZmF1bHQpIHtcbiAgICAgICAgdGhpcy5fdXNlRGVmYXVsdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9lbXB0eUFsbEFjdGl2ZVZpZXdzKCk7XG4gICAgICB9XG4gICAgICB2aWV3LmNyZWF0ZSgpO1xuICAgICAgdGhpcy5fYWN0aXZlVmlld3MucHVzaCh2aWV3KTtcbiAgICB9XG5cbiAgICAvLyBTd2l0Y2ggdG8gZGVmYXVsdCB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgYWN0aXZlIFZpZXdDb250YWluZXJzXG4gICAgaWYgKHRoaXMuX2FjdGl2ZVZpZXdzLmxlbmd0aCA9PT0gMCAmJiAhdGhpcy5fdXNlRGVmYXVsdCkge1xuICAgICAgdGhpcy5fdXNlRGVmYXVsdCA9IHRydWU7XG4gICAgICB0aGlzLl9hY3RpdmF0ZVZpZXdzKHRoaXMuX3ZhbHVlVmlld3MuZ2V0KF9XSEVOX0RFRkFVTFQpKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9lbXB0eUFsbEFjdGl2ZVZpZXdzKCk6IHZvaWQge1xuICAgIHZhciBhY3RpdmVDb250YWluZXJzID0gdGhpcy5fYWN0aXZlVmlld3M7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3RpdmVDb250YWluZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhY3RpdmVDb250YWluZXJzW2ldLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlVmlld3MgPSBbXTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FjdGl2YXRlVmlld3Modmlld3M6IFN3aXRjaFZpZXdbXSk6IHZvaWQge1xuICAgIC8vIFRPRE8odmljYik6IGFzc2VydCh0aGlzLl9hY3RpdmVWaWV3cy5sZW5ndGggPT09IDApO1xuICAgIGlmIChpc1ByZXNlbnQodmlld3MpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZpZXdzW2ldLmNyZWF0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5fYWN0aXZlVmlld3MgPSB2aWV3cztcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9yZWdpc3RlclZpZXcodmFsdWU6IGFueSwgdmlldzogU3dpdGNoVmlldyk6IHZvaWQge1xuICAgIHZhciB2aWV3cyA9IHRoaXMuX3ZhbHVlVmlld3MuZ2V0KHZhbHVlKTtcbiAgICBpZiAoaXNCbGFuayh2aWV3cykpIHtcbiAgICAgIHZpZXdzID0gW107XG4gICAgICB0aGlzLl92YWx1ZVZpZXdzLnNldCh2YWx1ZSwgdmlld3MpO1xuICAgIH1cbiAgICB2aWV3cy5wdXNoKHZpZXcpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZGVyZWdpc3RlclZpZXcodmFsdWU6IGFueSwgdmlldzogU3dpdGNoVmlldyk6IHZvaWQge1xuICAgIC8vIGBfV0hFTl9ERUZBVUxUYCBpcyB1c2VkIGEgbWFya2VyIGZvciBub24tcmVnaXN0ZXJlZCB3aGVuc1xuICAgIGlmICh2YWx1ZSA9PT0gX1dIRU5fREVGQVVMVCkgcmV0dXJuO1xuICAgIHZhciB2aWV3cyA9IHRoaXMuX3ZhbHVlVmlld3MuZ2V0KHZhbHVlKTtcbiAgICBpZiAodmlld3MubGVuZ3RoID09IDEpIHtcbiAgICAgIHRoaXMuX3ZhbHVlVmlld3MuZGVsZXRlKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgTGlzdFdyYXBwZXIucmVtb3ZlKHZpZXdzLCB2aWV3KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBJbnNlcnQgdGhlIHN1Yi10cmVlIHdoZW4gdGhlIGBuZ1N3aXRjaFdoZW5gIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRoZSBzYW1lIHZhbHVlIGFzIHRoZVxuICogZW5jbG9zaW5nIHN3aXRjaCBleHByZXNzaW9uLlxuICpcbiAqIElmIG11bHRpcGxlIG1hdGNoIGV4cHJlc3Npb24gbWF0Y2ggdGhlIHN3aXRjaCBleHByZXNzaW9uIHZhbHVlLCBhbGwgb2YgdGhlbSBhcmUgZGlzcGxheWVkLlxuICpcbiAqIFNlZSB7QGxpbmsgTmdTd2l0Y2h9IGZvciBtb3JlIGRldGFpbHMgYW5kIGV4YW1wbGUuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW25nU3dpdGNoV2hlbl0nLCBpbnB1dHM6IFsnbmdTd2l0Y2hXaGVuJ119KVxuZXhwb3J0IGNsYXNzIE5nU3dpdGNoV2hlbiB7XG4gIC8vIGBfV0hFTl9ERUZBVUxUYCBpcyB1c2VkIGFzIGEgbWFya2VyIGZvciBhIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgdmFsdWVcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfdmFsdWU6IGFueSA9IF9XSEVOX0RFRkFVTFQ7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3ZpZXc6IFN3aXRjaFZpZXc7XG4gIHByaXZhdGUgX3N3aXRjaDogTmdTd2l0Y2g7XG5cbiAgY29uc3RydWN0b3Iodmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmLFxuICAgICAgICAgICAgICBASG9zdCgpIG5nU3dpdGNoOiBOZ1N3aXRjaCkge1xuICAgIHRoaXMuX3N3aXRjaCA9IG5nU3dpdGNoO1xuICAgIHRoaXMuX3ZpZXcgPSBuZXcgU3dpdGNoVmlldyh2aWV3Q29udGFpbmVyLCB0ZW1wbGF0ZVJlZik7XG4gIH1cblxuICBzZXQgbmdTd2l0Y2hXaGVuKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9zd2l0Y2guX29uV2hlblZhbHVlQ2hhbmdlZCh0aGlzLl92YWx1ZSwgdmFsdWUsIHRoaXMuX3ZpZXcpO1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBEZWZhdWx0IGNhc2Ugc3RhdGVtZW50cyBhcmUgZGlzcGxheWVkIHdoZW4gbm8gbWF0Y2ggZXhwcmVzc2lvbiBtYXRjaGVzIHRoZSBzd2l0Y2ggZXhwcmVzc2lvblxuICogdmFsdWUuXG4gKlxuICogU2VlIHtAbGluayBOZ1N3aXRjaH0gZm9yIG1vcmUgZGV0YWlscyBhbmQgZXhhbXBsZS5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmdTd2l0Y2hEZWZhdWx0XSd9KVxuZXhwb3J0IGNsYXNzIE5nU3dpdGNoRGVmYXVsdCB7XG4gIGNvbnN0cnVjdG9yKHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZixcbiAgICAgICAgICAgICAgQEhvc3QoKSBzc3dpdGNoOiBOZ1N3aXRjaCkge1xuICAgIHNzd2l0Y2guX3JlZ2lzdGVyVmlldyhfV0hFTl9ERUZBVUxULCBuZXcgU3dpdGNoVmlldyh2aWV3Q29udGFpbmVyLCB0ZW1wbGF0ZVJlZikpO1xuICB9XG59XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar core_1 = require('angular2/core');\r\nvar lang_1 = require('angular2/src/facade/lang');\r\nvar collection_1 = require('angular2/src/facade/collection');\r\nvar ng_switch_1 = require('./ng_switch');\r\nvar _CATEGORY_DEFAULT = 'other';\r\nvar NgLocalization = (function () {\r\n function NgLocalization() {\r\n }\r\n return NgLocalization;\r\n})();\r\nexports.NgLocalization = NgLocalization;\r\n/**\r\n * `ngPlural` is an i18n directive that displays DOM sub-trees that match the switch expression\r\n * value, or failing that, DOM sub-trees that match the switch expression's pluralization category.\r\n *\r\n * To use this directive, you must provide an extension of `NgLocalization` that maps values to\r\n * category names. You then define a container element that sets the `[ngPlural]` attribute to a\r\n * switch expression.\r\n * - Inner elements defined with an `[ngPluralCase]` attribute will display based on their\r\n * expression.\r\n * - If `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\r\n * matches the switch expression exactly.\r\n * - Otherwise, the view will be treated as a \"category match\", and will only display if exact\r\n * value matches aren't found and the value maps to its category using the `getPluralCategory`\r\n * function provided.\r\n *\r\n * If no matching views are found for a switch expression, inner elements marked\r\n * `[ngPluralCase]=\"other\"` will be displayed.\r\n *\r\n * ```typescript\r\n * class MyLocalization extends NgLocalization {\r\n * getPluralCategory(value: any) {\r\n * if(value < 5) {\r\n * return 'few';\r\n * }\r\n * }\r\n * }\r\n *\r\n * @Component({\r\n * selector: 'app',\r\n * providers: [provide(NgLocalization, {useClass: MyLocalization})]\r\n * })\r\n * @View({\r\n * template: `\r\n * <p>Value = {{value}}</p>\r\n * <button (click)=\"inc()\">Increment</button>\r\n *\r\n * <div [ngPlural]=\"value\">\r\n * <template ngPluralCase=\"=0\">there is nothing</template>\r\n * <template ngPluralCase=\"=1\">there is one</template>\r\n * <template ngPluralCase=\"few\">there are a few</template>\r\n * <template ngPluralCase=\"other\">there is some number</template>\r\n * </div>\r\n * `,\r\n * directives: [NgPlural, NgPluralCase]\r\n * })\r\n * export class App {\r\n * value = 'init';\r\n *\r\n * inc() {\r\n * this.value = this.value === 'init' ? 0 : this.value + 1;\r\n * }\r\n * }\r\n *\r\n * ```\r\n */\r\nvar NgPluralCase = (function () {\r\n function NgPluralCase(value, template, viewContainer) {\r\n this.value = value;\r\n this._view = new ng_switch_1.SwitchView(viewContainer, template);\r\n }\r\n NgPluralCase = __decorate([\r\n core_1.Directive({ selector: '[ngPluralCase]' }),\r\n __param(0, core_1.Attribute('ngPluralCase')), \r\n __metadata('design:paramtypes', [String, core_1.TemplateRef, core_1.ViewContainerRef])\r\n ], NgPluralCase);\r\n return NgPluralCase;\r\n})();\r\nexports.NgPluralCase = NgPluralCase;\r\nvar NgPlural = (function () {\r\n function NgPlural(_localization) {\r\n this._localization = _localization;\r\n this._caseViews = new collection_1.Map();\r\n this.cases = null;\r\n }\r\n Object.defineProperty(NgPlural.prototype, \"ngPlural\", {\r\n set: function (value) {\r\n this._switchValue = value;\r\n this._updateView();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n NgPlural.prototype.ngAfterContentInit = function () {\r\n var _this = this;\r\n this.cases.forEach(function (pluralCase) {\r\n _this._caseViews.set(_this._formatValue(pluralCase), pluralCase._view);\r\n });\r\n this._updateView();\r\n };\r\n /** @internal */\r\n NgPlural.prototype._updateView = function () {\r\n this._clearViews();\r\n var view = this._caseViews.get(this._switchValue);\r\n if (!lang_1.isPresent(view))\r\n view = this._getCategoryView(this._switchValue);\r\n this._activateView(view);\r\n };\r\n /** @internal */\r\n NgPlural.prototype._clearViews = function () {\r\n if (lang_1.isPresent(this._activeView))\r\n this._activeView.destroy();\r\n };\r\n /** @internal */\r\n NgPlural.prototype._activateView = function (view) {\r\n if (!lang_1.isPresent(view))\r\n return;\r\n this._activeView = view;\r\n this._activeView.create();\r\n };\r\n /** @internal */\r\n NgPlural.prototype._getCategoryView = function (value) {\r\n var category = this._localization.getPluralCategory(value);\r\n var categoryView = this._caseViews.get(category);\r\n return lang_1.isPresent(categoryView) ? categoryView : this._caseViews.get(_CATEGORY_DEFAULT);\r\n };\r\n /** @internal */\r\n NgPlural.prototype._isValueView = function (pluralCase) { return pluralCase.value[0] === \"=\"; };\r\n /** @internal */\r\n NgPlural.prototype._formatValue = function (pluralCase) {\r\n return this._isValueView(pluralCase) ? this._stripValue(pluralCase.value) : pluralCase.value;\r\n };\r\n /** @internal */\r\n NgPlural.prototype._stripValue = function (value) { return lang_1.NumberWrapper.parseInt(value.substring(1), 10); };\r\n __decorate([\r\n core_1.ContentChildren(NgPluralCase), \r\n __metadata('design:type', core_1.QueryList)\r\n ], NgPlural.prototype, \"cases\", void 0);\r\n __decorate([\r\n core_1.Input(), \r\n __metadata('design:type', Number), \r\n __metadata('design:paramtypes', [Number])\r\n ], NgPlural.prototype, \"ngPlural\", null);\r\n NgPlural = __decorate([\r\n core_1.Directive({ selector: '[ngPlural]' }), \r\n __metadata('design:paramtypes', [NgLocalization])\r\n ], NgPlural);\r\n return NgPlural;\r\n})();\r\nexports.NgPlural = NgPlural;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfcGx1cmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbW1vbi9kaXJlY3RpdmVzL25nX3BsdXJhbC50cyJdLCJuYW1lcyI6WyJOZ0xvY2FsaXphdGlvbiIsIk5nTG9jYWxpemF0aW9uLmNvbnN0cnVjdG9yIiwiTmdQbHVyYWxDYXNlIiwiTmdQbHVyYWxDYXNlLmNvbnN0cnVjdG9yIiwiTmdQbHVyYWwiLCJOZ1BsdXJhbC5jb25zdHJ1Y3RvciIsIk5nUGx1cmFsLm5nUGx1cmFsIiwiTmdQbHVyYWwubmdBZnRlckNvbnRlbnRJbml0IiwiTmdQbHVyYWwuX3VwZGF0ZVZpZXciLCJOZ1BsdXJhbC5fY2xlYXJWaWV3cyIsIk5nUGx1cmFsLl9hY3RpdmF0ZVZpZXciLCJOZ1BsdXJhbC5fZ2V0Q2F0ZWdvcnlWaWV3IiwiTmdQbHVyYWwuX2lzVmFsdWVWaWV3IiwiTmdQbHVyYWwuX2Zvcm1hdFZhbHVlIiwiTmdQbHVyYWwuX3N0cmlwVmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHFCQVNPLGVBQWUsQ0FBQyxDQUFBO0FBQ3ZCLHFCQUF1QywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xFLDJCQUFrQixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ25ELDBCQUF5QixhQUFhLENBQUMsQ0FBQTtBQUV2QyxJQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQztBQUVsQztJQUFBQTtJQUF1RkMsQ0FBQ0E7SUFBREQscUJBQUNBO0FBQURBLENBQUNBLEFBQXhGLElBQXdGO0FBQWxFLHNCQUFjLGlCQUFvRCxDQUFBO0FBRXhGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzREc7QUFFSDtJQUdFRSxzQkFBOENBLEtBQWFBLEVBQUVBLFFBQXFCQSxFQUN0RUEsYUFBK0JBO1FBREdDLFVBQUtBLEdBQUxBLEtBQUtBLENBQVFBO1FBRXpEQSxJQUFJQSxDQUFDQSxLQUFLQSxHQUFHQSxJQUFJQSxzQkFBVUEsQ0FBQ0EsYUFBYUEsRUFBRUEsUUFBUUEsQ0FBQ0EsQ0FBQ0E7SUFDdkRBLENBQUNBO0lBTkhEO1FBQUNBLGdCQUFTQSxDQUFDQSxFQUFDQSxRQUFRQSxFQUFFQSxnQkFBZ0JBLEVBQUNBLENBQUNBO1FBRzFCQSxXQUFDQSxnQkFBU0EsQ0FBQ0EsY0FBY0EsQ0FBQ0EsQ0FBQUE7O3FCQUl2Q0E7SUFBREEsbUJBQUNBO0FBQURBLENBQUNBLEFBUEQsSUFPQztBQU5ZLG9CQUFZLGVBTXhCLENBQUE7QUFHRDtJQU9FRSxrQkFBb0JBLGFBQTZCQTtRQUE3QkMsa0JBQWFBLEdBQWJBLGFBQWFBLENBQWdCQTtRQUh6Q0EsZUFBVUEsR0FBR0EsSUFBSUEsZ0JBQUdBLEVBQW1CQSxDQUFDQTtRQUNqQkEsVUFBS0EsR0FBNEJBLElBQUlBLENBQUNBO0lBRWpCQSxDQUFDQTtJQUVyREQsc0JBQ0lBLDhCQUFRQTthQURaQSxVQUNhQSxLQUFhQTtZQUN4QkUsSUFBSUEsQ0FBQ0EsWUFBWUEsR0FBR0EsS0FBS0EsQ0FBQ0E7WUFDMUJBLElBQUlBLENBQUNBLFdBQVdBLEVBQUVBLENBQUNBO1FBQ3JCQSxDQUFDQTs7O09BQUFGO0lBRURBLHFDQUFrQkEsR0FBbEJBO1FBQUFHLGlCQUtDQTtRQUpDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxPQUFPQSxDQUFDQSxVQUFDQSxVQUF3QkE7WUFDMUNBLEtBQUlBLENBQUNBLFVBQVVBLENBQUNBLEdBQUdBLENBQUNBLEtBQUlBLENBQUNBLFlBQVlBLENBQUNBLFVBQVVBLENBQUNBLEVBQUVBLFVBQVVBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO1FBQ3ZFQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNIQSxJQUFJQSxDQUFDQSxXQUFXQSxFQUFFQSxDQUFDQTtJQUNyQkEsQ0FBQ0E7SUFFREgsZ0JBQWdCQTtJQUNoQkEsOEJBQVdBLEdBQVhBO1FBQ0VJLElBQUlBLENBQUNBLFdBQVdBLEVBQUVBLENBQUNBO1FBRW5CQSxJQUFJQSxJQUFJQSxHQUFlQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxZQUFZQSxDQUFDQSxDQUFDQTtRQUM5REEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQUNBLElBQUlBLEdBQUdBLElBQUlBLENBQUNBLGdCQUFnQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsQ0FBQ0E7UUFFdEVBLElBQUlBLENBQUNBLGFBQWFBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO0lBQzNCQSxDQUFDQTtJQUVESixnQkFBZ0JBO0lBQ2hCQSw4QkFBV0EsR0FBWEE7UUFDRUssRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBO1lBQUNBLElBQUlBLENBQUNBLFdBQVdBLENBQUNBLE9BQU9BLEVBQUVBLENBQUNBO0lBQzlEQSxDQUFDQTtJQUVETCxnQkFBZ0JBO0lBQ2hCQSxnQ0FBYUEsR0FBYkEsVUFBY0EsSUFBZ0JBO1FBQzVCTSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFBQ0EsTUFBTUEsQ0FBQ0E7UUFDN0JBLElBQUlBLENBQUNBLFdBQVdBLEdBQUdBLElBQUlBLENBQUNBO1FBQ3hCQSxJQUFJQSxDQUFDQSxXQUFXQSxDQUFDQSxNQUFNQSxFQUFFQSxDQUFDQTtJQUM1QkEsQ0FBQ0E7SUFFRE4sZ0JBQWdCQTtJQUNoQkEsbUNBQWdCQSxHQUFoQkEsVUFBaUJBLEtBQWFBO1FBQzVCTyxJQUFJQSxRQUFRQSxHQUFXQSxJQUFJQSxDQUFDQSxhQUFhQSxDQUFDQSxpQkFBaUJBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO1FBQ25FQSxJQUFJQSxZQUFZQSxHQUFlQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSxHQUFHQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQTtRQUM3REEsTUFBTUEsQ0FBQ0EsZ0JBQVNBLENBQUNBLFlBQVlBLENBQUNBLEdBQUdBLFlBQVlBLEdBQUdBLElBQUlBLENBQUNBLFVBQVVBLENBQUNBLEdBQUdBLENBQUNBLGlCQUFpQkEsQ0FBQ0EsQ0FBQ0E7SUFDekZBLENBQUNBO0lBRURQLGdCQUFnQkE7SUFDaEJBLCtCQUFZQSxHQUFaQSxVQUFhQSxVQUF3QkEsSUFBYVEsTUFBTUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsS0FBS0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFdkZSLGdCQUFnQkE7SUFDaEJBLCtCQUFZQSxHQUFaQSxVQUFhQSxVQUF3QkE7UUFDbkNTLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFlBQVlBLENBQUNBLFVBQVVBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLFdBQVdBLENBQUNBLFVBQVVBLENBQUNBLEtBQUtBLENBQUNBLEdBQUdBLFVBQVVBLENBQUNBLEtBQUtBLENBQUNBO0lBQy9GQSxDQUFDQTtJQUVEVCxnQkFBZ0JBO0lBQ2hCQSw4QkFBV0EsR0FBWEEsVUFBWUEsS0FBYUEsSUFBWVUsTUFBTUEsQ0FBQ0Esb0JBQWFBLENBQUNBLFFBQVFBLENBQUNBLEtBQUtBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBLENBQUNBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO0lBdkQ3RlY7UUFBQ0Esc0JBQWVBLENBQUNBLFlBQVlBLENBQUNBOztPQUFDQSwyQkFBS0EsVUFBaUNBO0lBSXJFQTtRQUFDQSxZQUFLQSxFQUFFQTs7O09BQ0pBLDhCQUFRQSxRQUdYQTtJQWJIQTtRQUFDQSxnQkFBU0EsQ0FBQ0EsRUFBQ0EsUUFBUUEsRUFBRUEsWUFBWUEsRUFBQ0EsQ0FBQ0E7O2lCQTZEbkNBO0lBQURBLGVBQUNBO0FBQURBLENBQUNBLEFBN0RELElBNkRDO0FBNURZLGdCQUFRLFdBNERwQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBUZW1wbGF0ZVJlZixcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIEF0dHJpYnV0ZSxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgSW5wdXRcbn0gZnJvbSAnYW5ndWxhcjIvY29yZSc7XG5pbXBvcnQge2lzUHJlc2VudCwgTnVtYmVyV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9sYW5nJztcbmltcG9ydCB7TWFwfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtTd2l0Y2hWaWV3fSBmcm9tICcuL25nX3N3aXRjaCc7XG5cbmNvbnN0IF9DQVRFR09SWV9ERUZBVUxUID0gJ290aGVyJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5nTG9jYWxpemF0aW9uIHsgYWJzdHJhY3QgZ2V0UGx1cmFsQ2F0ZWdvcnkodmFsdWU6IGFueSk6IHN0cmluZzsgfVxuXG4vKipcbiAqIGBuZ1BsdXJhbGAgaXMgYW4gaTE4biBkaXJlY3RpdmUgdGhhdCBkaXNwbGF5cyBET00gc3ViLXRyZWVzIHRoYXQgbWF0Y2ggdGhlIHN3aXRjaCBleHByZXNzaW9uXG4gKiB2YWx1ZSwgb3IgZmFpbGluZyB0aGF0LCBET00gc3ViLXRyZWVzIHRoYXQgbWF0Y2ggdGhlIHN3aXRjaCBleHByZXNzaW9uJ3MgcGx1cmFsaXphdGlvbiBjYXRlZ29yeS5cbiAqXG4gKiBUbyB1c2UgdGhpcyBkaXJlY3RpdmUsIHlvdSBtdXN0IHByb3ZpZGUgYW4gZXh0ZW5zaW9uIG9mIGBOZ0xvY2FsaXphdGlvbmAgdGhhdCBtYXBzIHZhbHVlcyB0b1xuICogY2F0ZWdvcnkgbmFtZXMuIFlvdSB0aGVuIGRlZmluZSBhIGNvbnRhaW5lciBlbGVtZW50IHRoYXQgc2V0cyB0aGUgYFtuZ1BsdXJhbF1gIGF0dHJpYnV0ZSB0byBhXG4gKiBzd2l0Y2ggZXhwcmVzc2lvbi5cbiAqICAgIC0gSW5uZXIgZWxlbWVudHMgZGVmaW5lZCB3aXRoIGFuIGBbbmdQbHVyYWxDYXNlXWAgYXR0cmlidXRlIHdpbGwgZGlzcGxheSBiYXNlZCBvbiB0aGVpclxuICogZXhwcmVzc2lvbi5cbiAqICAgIC0gSWYgYFtuZ1BsdXJhbENhc2VdYCBpcyBzZXQgdG8gYSB2YWx1ZSBzdGFydGluZyB3aXRoIGA9YCwgaXQgd2lsbCBvbmx5IGRpc3BsYXkgaWYgdGhlIHZhbHVlXG4gKiBtYXRjaGVzIHRoZSBzd2l0Y2ggZXhwcmVzc2lvbiBleGFjdGx5LlxuICogICAgLSBPdGhlcndpc2UsIHRoZSB2aWV3IHdpbGwgYmUgdHJlYXRlZCBhcyBhIFwiY2F0ZWdvcnkgbWF0Y2hcIiwgYW5kIHdpbGwgb25seSBkaXNwbGF5IGlmIGV4YWN0XG4gKiB2YWx1ZSBtYXRjaGVzIGFyZW4ndCBmb3VuZCBhbmQgdGhlIHZhbHVlIG1hcHMgdG8gaXRzIGNhdGVnb3J5IHVzaW5nIHRoZSBgZ2V0UGx1cmFsQ2F0ZWdvcnlgXG4gKiBmdW5jdGlvbiBwcm92aWRlZC5cbiAqXG4gKiBJZiBubyBtYXRjaGluZyB2aWV3cyBhcmUgZm91bmQgZm9yIGEgc3dpdGNoIGV4cHJlc3Npb24sIGlubmVyIGVsZW1lbnRzIG1hcmtlZFxuICogYFtuZ1BsdXJhbENhc2VdPVwib3RoZXJcImAgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgTXlMb2NhbGl6YXRpb24gZXh0ZW5kcyBOZ0xvY2FsaXphdGlvbiB7XG4gKiAgICBnZXRQbHVyYWxDYXRlZ29yeSh2YWx1ZTogYW55KSB7XG4gKiAgICAgICBpZih2YWx1ZSA8IDUpIHtcbiAqICAgICAgICAgIHJldHVybiAnZmV3JztcbiAqICAgICAgIH1cbiAqICAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgIHNlbGVjdG9yOiAnYXBwJyxcbiAqICAgIHByb3ZpZGVyczogW3Byb3ZpZGUoTmdMb2NhbGl6YXRpb24sIHt1c2VDbGFzczogTXlMb2NhbGl6YXRpb259KV1cbiAqIH0pXG4gKiBAVmlldyh7XG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPHA+VmFsdWUgPSB7e3ZhbHVlfX08L3A+XG4gKiAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaW5jKClcIj5JbmNyZW1lbnQ8L2J1dHRvbj5cbiAqXG4gKiAgICAgPGRpdiBbbmdQbHVyYWxdPVwidmFsdWVcIj5cbiAqICAgICAgIDx0ZW1wbGF0ZSBuZ1BsdXJhbENhc2U9XCI9MFwiPnRoZXJlIGlzIG5vdGhpbmc8L3RlbXBsYXRlPlxuICogICAgICAgPHRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIj0xXCI+dGhlcmUgaXMgb25lPC90ZW1wbGF0ZT5cbiAqICAgICAgIDx0ZW1wbGF0ZSBuZ1BsdXJhbENhc2U9XCJmZXdcIj50aGVyZSBhcmUgYSBmZXc8L3RlbXBsYXRlPlxuICogICAgICAgPHRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIm90aGVyXCI+dGhlcmUgaXMgc29tZSBudW1iZXI8L3RlbXBsYXRlPlxuICogICAgIDwvZGl2PlxuICogICBgLFxuICogICBkaXJlY3RpdmVzOiBbTmdQbHVyYWwsIE5nUGx1cmFsQ2FzZV1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwIHtcbiAqICAgdmFsdWUgPSAnaW5pdCc7XG4gKlxuICogICBpbmMoKSB7XG4gKiAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgPT09ICdpbml0JyA/IDAgOiB0aGlzLnZhbHVlICsgMTtcbiAqICAgfVxuICogfVxuICpcbiAqIGBgYFxuICovXG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW25nUGx1cmFsQ2FzZV0nfSlcbmV4cG9ydCBjbGFzcyBOZ1BsdXJhbENhc2Uge1xuICBfdmlldzogU3dpdGNoVmlldztcbiAgY29uc3RydWN0b3IoQEF0dHJpYnV0ZSgnbmdQbHVyYWxDYXNlJykgcHVibGljIHZhbHVlOiBzdHJpbmcsIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZixcbiAgICAgICAgICAgICAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIHRoaXMuX3ZpZXcgPSBuZXcgU3dpdGNoVmlldyh2aWV3Q29udGFpbmVyLCB0ZW1wbGF0ZSk7XG4gIH1cbn1cblxuXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tuZ1BsdXJhbF0nfSlcbmV4cG9ydCBjbGFzcyBOZ1BsdXJhbCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBwcml2YXRlIF9zd2l0Y2hWYWx1ZTogbnVtYmVyO1xuICBwcml2YXRlIF9hY3RpdmVWaWV3OiBTd2l0Y2hWaWV3O1xuICBwcml2YXRlIF9jYXNlVmlld3MgPSBuZXcgTWFwPGFueSwgU3dpdGNoVmlldz4oKTtcbiAgQENvbnRlbnRDaGlsZHJlbihOZ1BsdXJhbENhc2UpIGNhc2VzOiBRdWVyeUxpc3Q8TmdQbHVyYWxDYXNlPiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbG9jYWxpemF0aW9uOiBOZ0xvY2FsaXphdGlvbikge31cblxuICBASW5wdXQoKVxuICBzZXQgbmdQbHVyYWwodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3N3aXRjaFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5fdXBkYXRlVmlldygpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuY2FzZXMuZm9yRWFjaCgocGx1cmFsQ2FzZTogTmdQbHVyYWxDYXNlKTogdm9pZCA9PiB7XG4gICAgICB0aGlzLl9jYXNlVmlld3Muc2V0KHRoaXMuX2Zvcm1hdFZhbHVlKHBsdXJhbENhc2UpLCBwbHVyYWxDYXNlLl92aWV3KTtcbiAgICB9KTtcbiAgICB0aGlzLl91cGRhdGVWaWV3KCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF91cGRhdGVWaWV3KCk6IHZvaWQge1xuICAgIHRoaXMuX2NsZWFyVmlld3MoKTtcblxuICAgIHZhciB2aWV3OiBTd2l0Y2hWaWV3ID0gdGhpcy5fY2FzZVZpZXdzLmdldCh0aGlzLl9zd2l0Y2hWYWx1ZSk7XG4gICAgaWYgKCFpc1ByZXNlbnQodmlldykpIHZpZXcgPSB0aGlzLl9nZXRDYXRlZ29yeVZpZXcodGhpcy5fc3dpdGNoVmFsdWUpO1xuXG4gICAgdGhpcy5fYWN0aXZhdGVWaWV3KHZpZXcpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfY2xlYXJWaWV3cygpIHtcbiAgICBpZiAoaXNQcmVzZW50KHRoaXMuX2FjdGl2ZVZpZXcpKSB0aGlzLl9hY3RpdmVWaWV3LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2FjdGl2YXRlVmlldyh2aWV3OiBTd2l0Y2hWaWV3KSB7XG4gICAgaWYgKCFpc1ByZXNlbnQodmlldykpIHJldHVybjtcbiAgICB0aGlzLl9hY3RpdmVWaWV3ID0gdmlldztcbiAgICB0aGlzLl9hY3RpdmVWaWV3LmNyZWF0ZSgpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfZ2V0Q2F0ZWdvcnlWaWV3KHZhbHVlOiBudW1iZXIpOiBTd2l0Y2hWaWV3IHtcbiAgICB2YXIgY2F0ZWdvcnk6IHN0cmluZyA9IHRoaXMuX2xvY2FsaXphdGlvbi5nZXRQbHVyYWxDYXRlZ29yeSh2YWx1ZSk7XG4gICAgdmFyIGNhdGVnb3J5VmlldzogU3dpdGNoVmlldyA9IHRoaXMuX2Nhc2VWaWV3cy5nZXQoY2F0ZWdvcnkpO1xuICAgIHJldHVybiBpc1ByZXNlbnQoY2F0ZWdvcnlWaWV3KSA/IGNhdGVnb3J5VmlldyA6IHRoaXMuX2Nhc2VWaWV3cy5nZXQoX0NBVEVHT1JZX0RFRkFVTFQpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfaXNWYWx1ZVZpZXcocGx1cmFsQ2FzZTogTmdQbHVyYWxDYXNlKTogYm9vbGVhbiB7IHJldHVybiBwbHVyYWxDYXNlLnZhbHVlWzBdID09PSBcIj1cIjsgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2Zvcm1hdFZhbHVlKHBsdXJhbENhc2U6IE5nUGx1cmFsQ2FzZSk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVmFsdWVWaWV3KHBsdXJhbENhc2UpID8gdGhpcy5fc3RyaXBWYWx1ZShwbHVyYWxDYXNlLnZhbHVlKSA6IHBsdXJhbENhc2UudmFsdWU7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9zdHJpcFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIgeyByZXR1cm4gTnVtYmVyV3JhcHBlci5wYXJzZUludCh2YWx1ZS5zdWJzdHJpbmcoMSksIDEwKTsgfVxufVxuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar ng_class_1 = require('./ng_class');\r\nvar ng_for_1 = require('./ng_for');\r\nvar ng_if_1 = require('./ng_if');\r\nvar ng_style_1 = require('./ng_style');\r\nvar ng_switch_1 = require('./ng_switch');\r\nvar ng_plural_1 = require('./ng_plural');\r\n/**\r\n * A collection of Angular core directives that are likely to be used in each and every Angular\r\n * application.\r\n *\r\n * This collection can be used to quickly enumerate all the built-in directives in the `directives`\r\n * property of the `@Component` annotation.\r\n *\r\n * ### Example ([live demo](http://plnkr.co/edit/yakGwpCdUkg0qfzX5m8g?p=preview))\r\n *\r\n * Instead of writing:\r\n *\r\n * ```typescript\r\n * import {NgClass, NgIf, NgFor, NgSwitch, NgSwitchWhen, NgSwitchDefault} from 'angular2/common';\r\n * import {OtherDirective} from './myDirectives';\r\n *\r\n * @Component({\r\n * selector: 'my-component',\r\n * templateUrl: 'myComponent.html',\r\n * directives: [NgClass, NgIf, NgFor, NgSwitch, NgSwitchWhen, NgSwitchDefault, OtherDirective]\r\n * })\r\n * export class MyComponent {\r\n * ...\r\n * }\r\n * ```\r\n * one could import all the core directives at once:\r\n *\r\n * ```typescript\r\n * import {CORE_DIRECTIVES} from 'angular2/common';\r\n * import {OtherDirective} from './myDirectives';\r\n *\r\n * @Component({\r\n * selector: 'my-component',\r\n * templateUrl: 'myComponent.html',\r\n * directives: [CORE_DIRECTIVES, OtherDirective]\r\n * })\r\n * export class MyComponent {\r\n * ...\r\n * }\r\n * ```\r\n */\r\nexports.CORE_DIRECTIVES = lang_1.CONST_EXPR([\r\n ng_class_1.NgClass,\r\n ng_for_1.NgFor,\r\n ng_if_1.NgIf,\r\n ng_style_1.NgStyle,\r\n ng_switch_1.NgSwitch,\r\n ng_switch_1.NgSwitchWhen,\r\n ng_switch_1.NgSwitchDefault,\r\n ng_plural_1.NgPlural,\r\n ng_plural_1.NgPluralCase\r\n]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZV9kaXJlY3RpdmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvbW1vbi9kaXJlY3RpdmVzL2NvcmVfZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBK0IsMEJBQTBCLENBQUMsQ0FBQTtBQUMxRCx5QkFBc0IsWUFBWSxDQUFDLENBQUE7QUFDbkMsdUJBQW9CLFVBQVUsQ0FBQyxDQUFBO0FBQy9CLHNCQUFtQixTQUFTLENBQUMsQ0FBQTtBQUM3Qix5QkFBc0IsWUFBWSxDQUFDLENBQUE7QUFDbkMsMEJBQXNELGFBQWEsQ0FBQyxDQUFBO0FBQ3BFLDBCQUFxQyxhQUFhLENBQUMsQ0FBQTtBQUVuRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNHO0FBQ1UsdUJBQWUsR0FBVyxpQkFBVSxDQUFDO0lBQ2hELGtCQUFPO0lBQ1AsY0FBSztJQUNMLFlBQUk7SUFDSixrQkFBTztJQUNQLG9CQUFRO0lBQ1Isd0JBQVk7SUFDWiwyQkFBZTtJQUNmLG9CQUFRO0lBQ1Isd0JBQVk7Q0FDYixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NPTlNUX0VYUFIsIFR5cGV9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbGFuZyc7XG5pbXBvcnQge05nQ2xhc3N9IGZyb20gJy4vbmdfY2xhc3MnO1xuaW1wb3J0IHtOZ0Zvcn0gZnJvbSAnLi9uZ19mb3InO1xuaW1wb3J0IHtOZ0lmfSBmcm9tICcuL25nX2lmJztcbmltcG9ydCB7TmdTdHlsZX0gZnJvbSAnLi9uZ19zdHlsZSc7XG5pbXBvcnQge05nU3dpdGNoLCBOZ1N3aXRjaFdoZW4sIE5nU3dpdGNoRGVmYXVsdH0gZnJvbSAnLi9uZ19zd2l0Y2gnO1xuaW1wb3J0IHtOZ1BsdXJhbCwgTmdQbHVyYWxDYXNlfSBmcm9tICcuL25nX3BsdXJhbCc7XG5cbi8qKlxuICogQSBjb2xsZWN0aW9uIG9mIEFuZ3VsYXIgY29yZSBkaXJlY3RpdmVzIHRoYXQgYXJlIGxpa2VseSB0byBiZSB1c2VkIGluIGVhY2ggYW5kIGV2ZXJ5IEFuZ3VsYXJcbiAqIGFwcGxpY2F0aW9uLlxuICpcbiAqIFRoaXMgY29sbGVjdGlvbiBjYW4gYmUgdXNlZCB0byBxdWlja2x5IGVudW1lcmF0ZSBhbGwgdGhlIGJ1aWx0LWluIGRpcmVjdGl2ZXMgaW4gdGhlIGBkaXJlY3RpdmVzYFxuICogcHJvcGVydHkgb2YgdGhlIGBAQ29tcG9uZW50YCBhbm5vdGF0aW9uLlxuICpcbiAqICMjIyBFeGFtcGxlIChbbGl2ZSBkZW1vXShodHRwOi8vcGxua3IuY28vZWRpdC95YWtHd3BDZFVrZzBxZnpYNW04Zz9wPXByZXZpZXcpKVxuICpcbiAqIEluc3RlYWQgb2Ygd3JpdGluZzpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQge05nQ2xhc3MsIE5nSWYsIE5nRm9yLCBOZ1N3aXRjaCwgTmdTd2l0Y2hXaGVuLCBOZ1N3aXRjaERlZmF1bHR9IGZyb20gJ2FuZ3VsYXIyL2NvbW1vbic7XG4gKiBpbXBvcnQge090aGVyRGlyZWN0aXZlfSBmcm9tICcuL215RGlyZWN0aXZlcyc7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnbXktY29tcG9uZW50JyxcbiAqICAgdGVtcGxhdGVVcmw6ICdteUNvbXBvbmVudC5odG1sJyxcbiAqICAgZGlyZWN0aXZlczogW05nQ2xhc3MsIE5nSWYsIE5nRm9yLCBOZ1N3aXRjaCwgTmdTd2l0Y2hXaGVuLCBOZ1N3aXRjaERlZmF1bHQsIE90aGVyRGlyZWN0aXZlXVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIC4uLlxuICogfVxuICogYGBgXG4gKiBvbmUgY291bGQgaW1wb3J0IGFsbCB0aGUgY29yZSBkaXJlY3RpdmVzIGF0IG9uY2U6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHtDT1JFX0RJUkVDVElWRVN9IGZyb20gJ2FuZ3VsYXIyL2NvbW1vbic7XG4gKiBpbXBvcnQge090aGVyRGlyZWN0aXZlfSBmcm9tICcuL215RGlyZWN0aXZlcyc7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnbXktY29tcG9uZW50JyxcbiAqICAgdGVtcGxhdGVVcmw6ICdteUNvbXBvbmVudC5odG1sJyxcbiAqICAgZGlyZWN0aXZlczogW0NPUkVfRElSRUNUSVZFUywgT3RoZXJEaXJlY3RpdmVdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgLi4uXG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IENPUkVfRElSRUNUSVZFUzogVHlwZVtdID0gQ09OU1RfRVhQUihbXG4gIE5nQ2xhc3MsXG4gIE5nRm9yLFxuICBOZ0lmLFxuICBOZ1N0eWxlLFxuICBOZ1N3aXRjaCxcbiAgTmdTd2l0Y2hXaGVuLFxuICBOZ1N3aXRjaERlZmF1bHQsXG4gIE5nUGx1cmFsLFxuICBOZ1BsdXJhbENhc2Vcbl0pO1xuIl19","/* */ \n\"format cjs\";\n'use strict';function __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n/**\r\n * @module\r\n * @description\r\n * Common directives shipped with Angular.\r\n */\r\nvar ng_class_1 = require('./directives/ng_class');\r\nexports.NgClass = ng_class_1.NgClass;\r\nvar ng_for_1 = require('./directives/ng_for');\r\nexports.NgFor = ng_for_1.NgFor;\r\nvar ng_if_1 = require('./directives/ng_if');\r\nexports.NgIf = ng_if_1.NgIf;\r\nvar ng_style_1 = require('./directives/ng_style');\r\nexports.NgStyle = ng_style_1.NgStyle;\r\nvar ng_switch_1 = require('./directives/ng_switch');\r\nexports.NgSwitch = ng_switch_1.NgSwitch;\r\nexports.NgSwitchWhen = ng_switch_1.NgSwitchWhen;\r\nexports.NgSwitchDefault = ng_switch_1.NgSwitchDefault;\r\nvar ng_plural_1 = require('./directives/ng_plural');\r\nexports.NgPlural = ng_plural_1.NgPlural;\r\nexports.NgPluralCase = ng_plural_1.NgPluralCase;\r\nexports.NgLocalization = ng_plural_1.NgLocalization;\r\n__export(require('./directives/observable_list_diff'));\r\nvar core_directives_1 = require('./directives/core_directives');\r\nexports.CORE_DIRECTIVES = core_directives_1.CORE_DIRECTIVES;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFuZ3VsYXIyL3NyYy9jb21tb24vZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7OztHQUlHO0FBQ0gseUJBQXNCLHVCQUF1QixDQUFDO0FBQXRDLHFDQUFzQztBQUM5Qyx1QkFBb0IscUJBQXFCLENBQUM7QUFBbEMsK0JBQWtDO0FBQzFDLHNCQUFtQixvQkFBb0IsQ0FBQztBQUFoQyw0QkFBZ0M7QUFDeEMseUJBQXNCLHVCQUF1QixDQUFDO0FBQXRDLHFDQUFzQztBQUM5QywwQkFBc0Qsd0JBQXdCLENBQUM7QUFBdkUsd0NBQVE7QUFBRSxnREFBWTtBQUFFLHNEQUErQztBQUMvRSwwQkFBcUQsd0JBQXdCLENBQUM7QUFBdEUsd0NBQVE7QUFBRSxnREFBWTtBQUFFLG9EQUE4QztBQUM5RSxpQkFBYyxtQ0FBbUMsQ0FBQyxFQUFBO0FBQ2xELGdDQUE4Qiw4QkFBOEIsQ0FBQztBQUFyRCw0REFBcUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogQ29tbW9uIGRpcmVjdGl2ZXMgc2hpcHBlZCB3aXRoIEFuZ3VsYXIuXG4gKi9cbmV4cG9ydCB7TmdDbGFzc30gZnJvbSAnLi9kaXJlY3RpdmVzL25nX2NsYXNzJztcbmV4cG9ydCB7TmdGb3J9IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19mb3InO1xuZXhwb3J0IHtOZ0lmfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfaWYnO1xuZXhwb3J0IHtOZ1N0eWxlfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmdfc3R5bGUnO1xuZXhwb3J0IHtOZ1N3aXRjaCwgTmdTd2l0Y2hXaGVuLCBOZ1N3aXRjaERlZmF1bHR9IGZyb20gJy4vZGlyZWN0aXZlcy9uZ19zd2l0Y2gnO1xuZXhwb3J0IHtOZ1BsdXJhbCwgTmdQbHVyYWxDYXNlLCBOZ0xvY2FsaXphdGlvbn0gZnJvbSAnLi9kaXJlY3RpdmVzL25nX3BsdXJhbCc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvb2JzZXJ2YWJsZV9saXN0X2RpZmYnO1xuZXhwb3J0IHtDT1JFX0RJUkVDVElWRVN9IGZyb20gJy4vZGlyZWN0aXZlcy9jb3JlX2RpcmVjdGl2ZXMnO1xuIl19","/* */ \n\"format cjs\";\n'use strict';var lang_1 = require('angular2/src/facade/lang');\r\nvar forms_1 = require('./forms');\r\nvar directives_1 = require('./directives');\r\n/**\r\n * A collection of Angular core directives that are likely to be used in each and every Angular\r\n * application. This includes core directives (e.g., NgIf and NgFor), and forms directives (e.g.,\r\n * NgModel).\r\n *\r\n * This collection can be used to quickly enumerate all the built-in directives in the `directives`\r\n * property of the `@Component` decorator.\r\n *\r\n * ### Example\r\n *\r\n * Instead of writing:\r\n *\r\n * ```typescript\r\n * import {NgClass, NgIf, NgFor, NgSwitch, NgSwitchWhen, NgSwitchDefault, NgModel, NgForm} from\r\n * 'angular2/common';\r\n * import {OtherDirective} from './myDirectives';\r\n *\r\n * @Component({\r\n * selector: 'my-component',\r\n * templateUrl: 'myComponent.html',\r\n * directives: [NgClass, NgIf, NgFor, NgSwitch, NgSwitchWhen, NgSwitchDefault, NgModel, NgForm,\r\n * OtherDirective]\r\n * })\r\n * export class MyComponent {\r\n * ...\r\n * }\r\n * ```\r\n * one could import all the common directives at once:\r\n *\r\n * ```typescript\r\n * import {COMMON_DIRECTIVES} from 'angular2/common';\r\n * import {OtherDirective} from './myDirectives';\r\n *\r\n * @Component({\r\n * selector: 'my-component',\r\n * templateUrl: 'myComponent.html',\r\n * directives: [COMMON_DIRECTIVES, OtherDirective]\r\n * })\r\n * export class MyComponent {\r\n * ...\r\n * }\r\n * ```\r\n */\r\nexports.COMMON_DIRECTIVES = lang_1.CONST_EXPR([directives_1.CORE_DIRECTIVES, forms_1.FORM_DIRECTIVES]);\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uX2RpcmVjdGl2ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbmd1bGFyMi9zcmMvY29tbW9uL2NvbW1vbl9kaXJlY3RpdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUErQiwwQkFBMEIsQ0FBQyxDQUFBO0FBRTFELHNCQUE4QixTQUFTLENBQUMsQ0FBQTtBQUN4QywyQkFBOEIsY0FBYyxDQUFDLENBQUE7QUFFN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDRztBQUNVLHlCQUFpQixHQUFhLGlCQUFVLENBQUMsQ0FBQyw0QkFBZSxFQUFFLHVCQUFlLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDT05TVF9FWFBSLCBUeXBlfSBmcm9tICdhbmd1bGFyMi9zcmMvZmFjYWRlL2xhbmcnO1xuXG5pbXBvcnQge0ZPUk1fRElSRUNUSVZFU30gZnJvbSAnLi9mb3Jtcyc7XG5pbXBvcnQge0NPUkVfRElSRUNUSVZFU30gZnJvbSAnLi9kaXJlY3RpdmVzJztcblxuLyoqXG4gKiBBIGNvbGxlY3Rpb24gb2YgQW5ndWxhciBjb3JlIGRpcmVjdGl2ZXMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIHVzZWQgaW4gZWFjaCBhbmQgZXZlcnkgQW5ndWxhclxuICogYXBwbGljYXRpb24uIFRoaXMgaW5jbHVkZXMgY29yZSBkaXJlY3RpdmVzIChlLmcuLCBOZ0lmIGFuZCBOZ0ZvciksIGFuZCBmb3JtcyBkaXJlY3RpdmVzIChlLmcuLFxuICogTmdNb2RlbCkuXG4gKlxuICogVGhpcyBjb2xsZWN0aW9uIGNhbiBiZSB1c2VkIHRvIHF1aWNrbHkgZW51bWVyYXRlIGFsbCB0aGUgYnVpbHQtaW4gZGlyZWN0aXZlcyBpbiB0aGUgYGRpcmVjdGl2ZXNgXG4gKiBwcm9wZXJ0eSBvZiB0aGUgYEBDb21wb25lbnRgIGRlY29yYXRvci5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIEluc3RlYWQgb2Ygd3JpdGluZzpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQge05nQ2xhc3MsIE5nSWYsIE5nRm9yLCBOZ1N3aXRjaCwgTmdTd2l0Y2hXaGVuLCBOZ1N3aXRjaERlZmF1bHQsIE5nTW9kZWwsIE5nRm9ybX0gZnJvbVxuICogJ2FuZ3VsYXIyL2NvbW1vbic7XG4gKiBpbXBvcnQge090aGVyRGlyZWN0aXZlfSBmcm9tICcuL215RGlyZWN0aXZlcyc7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnbXktY29tcG9uZW50JyxcbiAqICAgdGVtcGxhdGVVcmw6ICdteUNvbXBvbmVudC5odG1sJyxcbiAqICAgZGlyZWN0aXZlczogW05nQ2xhc3MsIE5nSWYsIE5nRm9yLCBOZ1N3aXRjaCwgTmdTd2l0Y2hXaGVuLCBOZ1N3aXRjaERlZmF1bHQsIE5nTW9kZWwsIE5nRm9ybSxcbiAqIE90aGVyRGlyZWN0aXZlXVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIC4uLlxuICogfVxuICogYGBgXG4gKiBvbmUgY291bGQgaW1wb3J0IGFsbCB0aGUgY29tbW9uIGRpcmVjdGl2ZXMgYXQgb25jZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQge0NPTU1PTl9ESVJFQ1RJVkVTfSBmcm9tICdhbmd1bGFyMi9jb21tb24nO1xuICogaW1wb3J0IHtPdGhlckRpcmVjdGl2ZX0gZnJvbSAnLi9teURpcmVjdGl2ZXMnO1xuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ215LWNvbXBvbmVudCcsXG4gKiAgIHRlbXBsYXRlVXJsOiAnbXlDb21wb25lbnQuaHRtbCcsXG4gKiAgIGRpcmVjdGl2ZXM6IFtDT01NT05fRElSRUNUSVZFUywgT3RoZXJEaXJlY3RpdmVdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgLi4uXG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IENPTU1PTl9ESVJFQ1RJVkVTOiBUeXBlW11bXSA9IENPTlNUX0VYUFIoW0NPUkVfRElSRUNUSVZFUywgRk9STV9ESVJFQ1RJVkVTXSk7XG4iXX0=","/* */ \n\"format cjs\";\n'use strict';function __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n__export(require('./src/common/pipes'));\r\n__export(require('./src/common/directives'));\r\n__export(require('./src/common/forms'));\r\n__export(require('./src/common/common_directives'));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlCQUFjLG9CQUFvQixDQUFDLEVBQUE7QUFDbkMsaUJBQWMseUJBQXlCLENBQUMsRUFBQTtBQUN4QyxpQkFBYyxvQkFBb0IsQ0FBQyxFQUFBO0FBQ25DLGlCQUFjLGdDQUFnQyxDQUFDLEVBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9jb21tb24vcGlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29tbW9uL2RpcmVjdGl2ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29tbW9uL2Zvcm1zJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2NvbW1vbi9jb21tb25fZGlyZWN0aXZlcyc7Il19","/* */ \n\"format global\";\n/*\n * DropKick\n *\n * Highly customizable <select> lists\n * https://github.com/robdel12/DropKick\n *\n*/\n(function(factory) {\n var jQuery;\n\n if ( typeof exports === \"object\" ) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n try {\n jQuery = require( \"jquery\" );\n } catch ( e ) {}\n\n module.exports = factory( window, document, jQuery );\n } else {\n // Browser globals (root is window)\n window.Dropkick = factory( window, document, window.jQuery );\n }\n\n}(function( window, document, jQuery, undefined ) {\n\n\nvar\n\n // Browser testing stuff\n isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( navigator.userAgent ),\n isIframe = (window.parent !== window.self && location.host === parent.location.host),\n isIE = navigator.appVersion.indexOf(\"MSIE\")!==-1,\n\n /**\n * # Getting started\n * After you've cloned the repo you will need to add the library to your page. In the `build/js` folder use\n * one of the two DropKick files given. One has a version number in the file name and the other is a version\n * number-less version. You will also need to grab the css from `build/css` and load it on the page.\n *\n * Once those files are imported into the page you can call DropKick on any HTMLSelectElement:\n * `new Dropkick( HTMLSelectElement, Options );` or `new Dropkick( \"ID\", Options );`. This returns the dropkick\n * object to you. It may be useful for you to store this in a var to reference later.\n *\n * If you're using jQuery you can do this instead:\n * `$('#select').dropkick( Options );`\n *\n *\n * @class Dropkick\n * @return { object } DropKick Object for that select. You can call your methods on this if stored in a var\n * @param {elem} sel HTMLSelect Element being passed.\n * @param {opts} options See list of [properties you can pass in here](#list_of_properties)\n * @constructor\n * @example\n * ```js\n * // Pure JS\n * var select = new Dropkick(\"#select\");\n * ```\n * @example\n * ```js\n * // jQuery\n * $(\"#select\").dropkick();\n * ```\n */\n Dropkick = function( sel, opts ) {\n var i, dk;\n\n // Safety if `Dropkick` is called without `new`\n if ( this === window ) {\n return new Dropkick( sel, opts );\n }\n\n if ( typeof sel === \"string\" && sel[0] === \"#\" ) {\n sel = document.getElementById( sel.substr( 1 ) );\n }\n\n // Check if select has already been DK'd and return the DK Object\n for ( i = 0; i < Dropkick.uid; i++) {\n dk = Dropkick.cache[ i ];\n\n if ( dk instanceof Dropkick && dk.data.select === sel ) {\n _.extend( dk.data.settings, opts );\n return dk;\n }\n }\n\n if ( !sel ) {\n console.error(\"You must pass a select to DropKick\");\n return false;\n }\n\n if ( sel.nodeName === \"SELECT\" ) {\n return this.init( sel, opts );\n }\n },\n\n noop = function() {},\n _docListener,\n\n // DK default options\n defaults = {\n\n /**\n * Called once after the DK element is inserted into the DOM.\n * The value of `this` is the Dropkick object itself.\n *\n * @config initialize\n * @type Function\n *\n */\n initialize: noop,\n\n /**\n * Called whenever the value of the Dropkick select changes (by user action or through the API).\n * The value of `this` is the Dropkick object itself.\n *\n * @config change\n * @type Function\n *\n */\n change: noop,\n\n /**\n * Called whenever the Dropkick select is opened. The value of `this` is the Dropkick object itself.\n *\n * @config open\n * @type Function\n *\n */\n open: noop,\n\n /**\n * Called whenever the Dropkick select is closed. The value of `this` is the Dropkick object itself.\n *\n * @config close\n * @type Function\n *\n */\n close: noop,\n\n // Search method; \"strict\", \"partial\", or \"fuzzy\"\n /**\n * `\"strict\"` - The search string matches exactly from the beginning of the option's text value (case insensitive).\n *\n * `\"partial\"` - The search string matches part of the option's text value (case insensitive).\n *\n * `\"fuzzy\"` - The search string matches the characters in the given order (not exclusively).\n * The strongest match is selected first. (case insensitive).\n *\n * @default \"strict\"\n * @config search\n * @type string\n *\n */\n search: \"strict\",\n\n /**\n * Bubble up the custom change event attached to Dropkick to the original element (select).\n */\n bubble: true\n },\n\n // Common Utilities\n _ = {\n\n hasClass: function( elem, classname ) {\n var reg = new RegExp( \"(^|\\\\s+)\" + classname + \"(\\\\s+|$)\" );\n return elem && reg.test( elem.className );\n },\n\n addClass: function( elem, classname ) {\n if( elem && !_.hasClass( elem, classname ) ) {\n elem.className += \" \" + classname;\n }\n },\n\n removeClass: function( elem, classname ) {\n var reg = new RegExp( \"(^|\\\\s+)\" + classname + \"(\\\\s+|$)\" );\n elem && ( elem.className = elem.className.replace( reg, \" \" ) );\n },\n\n toggleClass: function( elem, classname ) {\n var fn = _.hasClass( elem, classname ) ? \"remove\" : \"add\";\n _[ fn + \"Class\" ]( elem, classname );\n },\n\n // Shallow object extend\n extend: function( obj ) {\n Array.prototype.slice.call( arguments, 1 ).forEach( function( source ) {\n if ( source ) { for ( var prop in source ) obj[ prop ] = source[ prop ]; }\n });\n\n return obj;\n },\n\n // Returns the top and left offset of an element\n offset: function( elem ) {\n var box = elem.getBoundingClientRect() || { top: 0, left: 0 },\n docElem = document.documentElement,\n offsetTop = isIE ? docElem.scrollTop : window.pageYOffset,\n offsetLeft = isIE ? docElem.scrollLeft : window.pageXOffset;\n\n return {\n top: box.top + offsetTop - docElem.clientTop,\n left: box.left + offsetLeft - docElem.clientLeft\n };\n },\n\n // Returns the top and left position of an element relative to an ancestor\n position: function( elem, relative ) {\n var pos = { top: 0, left: 0 };\n\n while ( elem && elem !== relative ) {\n pos.top += elem.offsetTop;\n pos.left += elem.offsetLeft;\n elem = elem.parentNode;\n }\n\n return pos;\n },\n\n // Returns the closest ancestor element of the child or false if not found\n closest: function( child, ancestor ) {\n while ( child ) {\n if ( child === ancestor ) { return child; }\n child = child.parentNode;\n }\n return false;\n },\n\n // Creates a DOM node with the specified attributes\n create: function( name, attrs ) {\n var a, node = document.createElement( name );\n\n if ( !attrs ) { attrs = {}; }\n\n for ( a in attrs ) {\n if ( attrs.hasOwnProperty( a ) ) {\n if ( a === \"innerHTML\" ) {\n node.innerHTML = attrs[ a ];\n } else {\n node.setAttribute( a, attrs[ a ] );\n }\n }\n }\n\n return node;\n },\n\n deferred: function( fn ) {\n return function() {\n var args = arguments,\n ctx = this;\n\n window.setTimeout(function() {\n fn.apply(ctx, args);\n }, 1);\n };\n }\n\n };\n\n\n// Cache of DK Objects\nDropkick.cache = {};\nDropkick.uid = 0;\n\n\n// Extends the DK objects's Prototype\nDropkick.prototype = {\n\n // Emulate some of HTMLSelectElement's methods\n\n /**\n * Adds an element to the select. This option will not only add it to the original\n * select, but create a Dropkick option and add it to the Dropkick select.\n *\n * @method add\n * @param {string} elem HTMLOptionElement\n * @param {Node/Integer} before HTMLOptionElement/Index of Element\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.add(\"New option\", 5);\n * ```\n */\n add: function( elem, before ) {\n var text, option, i;\n\n if ( typeof elem === \"string\" ) {\n text = elem;\n elem = document.createElement(\"option\");\n elem.text = text;\n }\n\n if ( elem.nodeName === \"OPTION\" ) {\n option = _.create( \"li\", {\n \"class\": \"dk-option\",\n \"data-value\": elem.value,\n \"innerHTML\": elem.text,\n \"role\": \"option\",\n \"aria-selected\": \"false\",\n \"id\": \"dk\" + this.data.cacheID + \"-\" + ( elem.id || elem.value.replace( \" \", \"-\" ) )\n });\n\n _.addClass( option, elem.className );\n this.length += 1;\n\n if ( elem.disabled ) {\n _.addClass( option, \"dk-option-disabled\" );\n option.setAttribute( \"aria-disabled\", \"true\" );\n }\n\n this.data.select.add( elem, before );\n\n if ( typeof before === \"number\" ) {\n before = this.item( before );\n }\n\n if ( this.options.indexOf( before ) > -1 ) {\n before.parentNode.insertBefore( option, before );\n } else {\n this.data.elem.lastChild.appendChild( option );\n }\n\n option.addEventListener( \"mouseover\", this );\n\n i = this.options.indexOf( before );\n this.options.splice( i, 0, option );\n\n if ( elem.selected ) {\n this.select( i );\n }\n }\n },\n\n /**\n * Selects an option in the list at the desired index (negative numbers select from the end).\n *\n * @method item\n * @param {Integer} index Index of element (positive or negative)\n * @return {Node} The DK option from the list, or null if not found\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.item(4); //returns DOM node of index\n * ```\n */\n item: function( index ) {\n index = index < 0 ? this.options.length + index : index;\n return this.options[ index ] || null;\n },\n\n /**\n * Removes the option (from both the select and Dropkick) at the given index.\n *\n * @method remove\n * @param {Integer} index Index of element (positive or negative)\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.remove(4);\n * ```\n */\n remove: function( index ) {\n var dkOption = this.item( index );\n dkOption.parentNode.removeChild( dkOption );\n this.options.splice( index, 1 );\n this.data.select.remove( index );\n this.select( this.data.select.selectedIndex );\n this.length -= 1;\n },\n\n /**\n * Initializes the DK Object\n *\n * @method init\n * @private\n * @param {Node} sel [description]\n * @param {Object} opts Options to override defaults\n * @return {Object} The DK Object\n */\n init: function( sel, opts ) {\n var i,\n dk = Dropkick.build( sel, \"dk\" + Dropkick.uid );\n\n // Set some data on the DK Object\n this.data = {};\n this.data.select = sel;\n this.data.elem = dk.elem;\n this.data.settings = _.extend({}, defaults, opts );\n\n // Emulate some of HTMLSelectElement's properties\n\n /**\n * Whether the form is currently disabled or not\n *\n * @property {boolean} disabled\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.disabled;\n * ```\n */\n this.disabled = sel.disabled;\n\n /**\n * The form associated with the select\n *\n * @property {node} form\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.form;\n * ```\n */\n this.form = sel.form;\n\n /**\n * The number of options in the select\n *\n * @property {integer} length\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.length;\n * ```\n */\n this.length = sel.length;\n\n /**\n * If this select is a multi-select\n *\n * @property {boolean} multiple\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.multiple;\n * ```\n */\n this.multiple = sel.multiple;\n\n /**\n * An array of Dropkick options\n *\n * @property {array} options\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.options;\n * ```\n */\n this.options = dk.options.slice( 0 );\n\n /**\n * An index of the first selected option\n *\n * @property {integer} selectedIndex\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.selectedIndex;\n * ```\n */\n this.selectedIndex = sel.selectedIndex;\n\n /**\n * An array of selected Dropkick options\n *\n * @property {array} selectedOptions\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.selectedOptions;\n * ```\n */\n this.selectedOptions = dk.selected.slice( 0 );\n\n /**\n * The current value of the select\n *\n * @property {string} value\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.value;\n * ```\n */\n this.value = sel.value;\n\n // Add the DK Object to the cache\n this.data.cacheID = Dropkick.uid;\n Dropkick.cache[ this.data.cacheID ] = this;\n\n // Call the optional initialize function\n this.data.settings.initialize.call( this );\n\n // Increment the index\n Dropkick.uid += 1;\n\n // Add the change listener to the select\n if ( !this._changeListener ) {\n sel.addEventListener( \"change\", this );\n this._changeListener = true;\n }\n\n // Don't continue if we're not rendering on mobile\n if ( !( isMobile && !this.data.settings.mobile ) ) {\n\n // Insert the DK element before the original select\n sel.parentNode.insertBefore( this.data.elem, sel );\n sel.setAttribute( \"data-dkCacheId\", this.data.cacheID );\n\n // Bind events\n this.data.elem.addEventListener( \"click\", this );\n this.data.elem.addEventListener( \"keydown\", this );\n this.data.elem.addEventListener( \"keypress\", this );\n\n if ( this.form ) {\n this.form.addEventListener( \"reset\", this );\n }\n\n if ( !this.multiple ) {\n for ( i = 0; i < this.options.length; i++ ) {\n this.options[ i ].addEventListener( \"mouseover\", this );\n }\n }\n\n if ( !_docListener ) {\n document.addEventListener( \"click\", Dropkick.onDocClick );\n\n if ( isIframe ){\n parent.document.addEventListener( \"click\", Dropkick.onDocClick );\n }\n\n _docListener = true;\n }\n }\n\n return this;\n },\n\n /**\n * Closes the DK dropdown\n *\n * @method close\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.close(); //closes dk dropdown\n * ```\n */\n close: function() {\n var i,\n dk = this.data.elem;\n\n if ( !this.isOpen || this.multiple ) {\n return false;\n }\n\n for ( i = 0; i < this.options.length; i++ ) {\n _.removeClass( this.options[ i ], \"dk-option-highlight\" );\n }\n\n dk.lastChild.setAttribute( \"aria-expanded\", \"false\" );\n _.removeClass( dk.lastChild, \"dk-select-options-highlight\" );\n _.removeClass( dk, \"dk-select-open-(up|down)\" );\n this.isOpen = false;\n\n this.data.settings.close.call( this );\n },\n\n /**\n * Opens the DK dropdown\n *\n * @method open\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.open(); //Opens the dk dropdown\n * ```\n */\n open: _.deferred(function() {\n var dropHeight, above, below, direction, dkTop, dkBottom,\n dk = this.data.elem,\n dkOptsList = dk.lastChild;\n\n if ( isIE ) {\n dkTop = _.offset( dk ).top - document.documentElement.scrollTop;\n } else {\n dkTop = _.offset( dk ).top - window.scrollY;\n }\n\n dkBottom = window.innerHeight - ( dkTop + dk.offsetHeight );\n\n if ( this.isOpen || this.multiple ) { return false; }\n\n dkOptsList.style.display = \"block\";\n dropHeight = dkOptsList.offsetHeight;\n dkOptsList.style.display = \"\";\n\n above = dkTop > dropHeight;\n below = dkBottom > dropHeight;\n direction = above && !below ? \"-up\" : \"-down\";\n\n this.isOpen = true;\n _.addClass( dk, \"dk-select-open\" + direction );\n dkOptsList.setAttribute( \"aria-expanded\", \"true\" );\n this._scrollTo( this.options.length - 1 );\n this._scrollTo( this.selectedIndex );\n\n this.data.settings.open.call( this );\n }),\n\n /**\n * Disables or enables an option; if only a boolean is passed (or nothing),\n * then the entire Dropkick will be disabled or enabled.\n *\n * @method disable\n * @param {Integer} elem The element or index to disable\n * @param {Boolean} disabled Value of disabled\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * // To disable the entire select\n * select.disable();\n *\n * // To disable just an option with an index\n * select.disable(4, true);\n *\n * // To re-enable the entire select\n * select.disable(false);\n *\n * // To re-enable just an option with an index\n * select.disable(4, false);\n * ```\n */\n disable: function( elem, disabled ) {\n var disabledClass = \"dk-option-disabled\";\n\n if ( arguments.length === 0 || typeof elem === \"boolean\" ) {\n disabled = elem === undefined ? true : false;\n elem = this.data.elem;\n disabledClass = \"dk-select-disabled\";\n this.disabled = disabled;\n }\n\n if ( disabled === undefined ) {\n disabled = true;\n }\n\n if ( typeof elem === \"number\" ) {\n elem = this.item( elem );\n }\n\n _[ disabled ? \"addClass\" : \"removeClass\" ]( elem, disabledClass );\n },\n\n /**\n * Selects an option from the list\n *\n * @method select\n * @param {String} elem The element, index, or value to select\n * @param {Boolean} disabled Selects disabled options\n * @return {Node} The selected element\n * @example\n * ```js\n * var elm = new Dropkick(\"#select\");\n *\n * // Select by index\n * elm.select(4); //selects & returns 5th item in the list\n *\n * // Select by value\n * elm.select(\"AL\"); // selects & returns option with the value \"AL\"\n * ```\n */\n select: function( elem, disabled ) {\n var i, index, option, combobox,\n select = this.data.select;\n\n if ( typeof elem === \"number\" ) {\n elem = this.item( elem );\n }\n\n if ( typeof elem === \"string\" ) {\n for ( i = 0; i < this.length; i++ ) {\n if ( this.options[ i ].getAttribute( \"data-value\" ) === elem ) {\n elem = this.options[ i ];\n }\n }\n }\n\n // No element or enabled option\n if ( !elem || typeof elem === \"string\" ||\n ( !disabled && _.hasClass( elem, \"dk-option-disabled\" ) ) ) {\n return false;\n }\n\n if ( _.hasClass( elem, \"dk-option\" ) ) {\n index = this.options.indexOf( elem );\n option = select.options[ index ];\n\n if ( this.multiple ) {\n _.toggleClass( elem, \"dk-option-selected\" );\n option.selected = !option.selected;\n\n if ( _.hasClass( elem, \"dk-option-selected\" ) ) {\n elem.setAttribute( \"aria-selected\", \"true\" );\n this.selectedOptions.push( elem );\n } else {\n elem.setAttribute( \"aria-selected\", \"false\" );\n index = this.selectedOptions.indexOf( elem );\n this.selectedOptions.splice( index, 1 );\n }\n } else {\n combobox = this.data.elem.firstChild;\n\n if ( this.selectedOptions.length ) {\n _.removeClass( this.selectedOptions[0], \"dk-option-selected\" );\n this.selectedOptions[0].setAttribute( \"aria-selected\", \"false\" );\n }\n\n _.addClass( elem, \"dk-option-selected\" );\n elem.setAttribute( \"aria-selected\", \"true\" );\n\n combobox.setAttribute( \"aria-activedescendant\", elem.id );\n combobox.className = \"dk-selected \" + option.className;\n combobox.innerHTML = option.text;\n\n this.selectedOptions[0] = elem;\n option.selected = true;\n }\n\n this.selectedIndex = select.selectedIndex;\n this.value = select.value;\n\n if ( !disabled ) {\n this.data.select.dispatchEvent( new CustomEvent(\"change\", {bubbles: this.data.settings.bubble}));\n }\n\n return elem;\n }\n },\n\n /**\n * Selects a single option from the list and scrolls to it (if the select is open or on multi-selects).\n * Useful for selecting an option after a search by the user. Important to note: this doesn't close the\n * dropdown when selecting. It keeps the dropdown open and scrolls to proper position.\n *\n * @method selectOne\n * @param {Integer} elem The element or index to select\n * @param {Boolean} disabled Selects disabled options\n * @return {Node} The selected element\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.selectOne(4);\n * ```\n */\n selectOne: function( elem, disabled ) {\n this.reset( true );\n this._scrollTo( elem );\n return this.select( elem, disabled );\n },\n\n /**\n * Finds all options who's text matches a pattern (strict, partial, or fuzzy)\n *\n * `\"strict\"` - The search string matches exactly from the beginning of the\n * option's text value (case insensitive).\n *\n * `\"partial\"` - The search string matches part of the option's text value\n * (case insensitive).\n *\n * `\"fuzzy\"` - The search string matches the characters in the given order (not\n * exclusively). The strongest match is selected first. (case insensitive).\n *\n * @method search\n * @param {String} string The string to search for\n * @param {Integer} mode How to search; \"strict\", \"partial\", or \"fuzzy\"\n * @return {Boolean} An Array of matched elements\n */\n search: function( pattern, mode ) {\n var i, tokens, str, tIndex, sIndex, cScore, tScore, reg,\n options = this.data.select.options,\n matches = [];\n\n if ( !pattern ) { return this.options; }\n\n // Fix Mode\n mode = mode ? mode.toLowerCase() : \"strict\";\n mode = mode === \"fuzzy\" ? 2 : mode === \"partial\" ? 1 : 0;\n\n reg = new RegExp( ( mode ? \"\" : \"^\" ) + pattern, \"i\" );\n\n for ( i = 0; i < options.length; i++ ) {\n str = options[ i ].text.toLowerCase();\n\n // Fuzzy\n if ( mode == 2 ) {\n tokens = pattern.toLowerCase().split(\"\");\n tIndex = sIndex = cScore = tScore = 0;\n\n while ( sIndex < str.length ) {\n if ( str[ sIndex ] === tokens[ tIndex ] ) {\n cScore += 1 + cScore;\n tIndex++;\n } else {\n cScore = 0;\n }\n\n tScore += cScore;\n sIndex++;\n }\n\n if ( tIndex === tokens.length ) {\n matches.push({ e: this.options[ i ], s: tScore, i: i });\n }\n\n // Partial or Strict (Default)\n } else {\n reg.test( str ) && matches.push( this.options[ i ] );\n }\n }\n\n // Sort fuzzy results\n if ( mode === 2 ) {\n matches = matches.sort( function ( a, b ) {\n return ( b.s - a.s ) || a.i - b.i;\n }).reduce( function ( p, o ) {\n p[ p.length ] = o.e;\n return p;\n }, [] );\n }\n\n return matches;\n },\n\n /**\n * Brings focus to the proper DK element\n *\n * @method focus\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * $(\"#some_elm\").on(\"click\", function() {\n * select.focus();\n * });\n * ```\n */\n focus: function() {\n if ( !this.disabled ) {\n ( this.multiple ? this.data.elem : this.data.elem.children[0] ).focus();\n }\n },\n\n /**\n * Resets the Dropkick and select to it's original selected options; if `clear` is `true`,\n * It will select the first option by default (or no options for multi-selects).\n *\n * @method reset\n * @param {Boolean} clear Defaults to first option if True\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * // Reset to originally `selected` option\n * select.reset();\n *\n * // Reset to first option in select\n * select.reset(true);\n * ```\n */\n reset: function( clear ) {\n var i,\n select = this.data.select;\n\n this.selectedOptions.length = 0;\n\n for ( i = 0; i < select.options.length; i++ ) {\n select.options[ i ].selected = false;\n _.removeClass( this.options[ i ], \"dk-option-selected\" );\n this.options[ i ].setAttribute( \"aria-selected\", \"false\" );\n if ( !clear && select.options[ i ].defaultSelected ) {\n this.select( i, true );\n }\n }\n\n if ( !this.selectedOptions.length && !this.multiple ) {\n this.select( 0, true );\n }\n },\n\n /**\n * Rebuilds the DK Object\n * (use if HTMLSelectElement has changed)\n *\n * @method refresh\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * //... [change original select] ...\n *\n * select.refresh();\n * ```\n */\n refresh: function() {\n this.dispose().init( this.data.select, this.data.settings );\n },\n\n /**\n * Removes the DK Object from the cache and the element from the DOM\n *\n * @method dispose\n * @example\n * ```js\n * var select = new Dropkick(\"#select\");\n *\n * select.dispose();\n * ```\n */\n dispose: function() {\n delete Dropkick.cache[ this.data.cacheID ];\n this.data.elem.parentNode.removeChild( this.data.elem );\n this.data.select.removeAttribute( \"data-dkCacheId\" );\n return this;\n },\n\n // Private Methods\n\n /**\n * @method handleEvent\n * @private\n */\n handleEvent: function( event ) {\n if ( this.disabled ) { return; }\n\n switch ( event.type ) {\n case \"click\":\n this._delegate( event );\n break;\n case \"keydown\":\n this._keyHandler( event );\n break;\n case \"keypress\":\n this._searchOptions( event );\n break;\n case \"mouseover\":\n this._highlight( event );\n break;\n case \"reset\":\n this.reset();\n break;\n case \"change\":\n this.data.settings.change.call( this );\n break;\n }\n },\n\n\n /**\n * @method delegate\n * @private\n */\n _delegate: function( event ) {\n var selection, index, firstIndex, lastIndex,\n target = event.target;\n\n if ( _.hasClass( target, \"dk-option-disabled\" ) ) {\n return false;\n }\n\n if ( !this.multiple ) {\n this[ this.isOpen ? \"close\" : \"open\" ]();\n if ( _.hasClass( target, \"dk-option\" ) ) { this.select( target ); }\n } else {\n if ( _.hasClass( target, \"dk-option\" ) ) {\n selection = window.getSelection();\n if ( selection.type === \"Range\" ) selection.collapseToStart();\n\n if ( event.shiftKey ) {\n firstIndex = this.options.indexOf( this.selectedOptions[0] );\n lastIndex = this.options.indexOf( this.selectedOptions[ this.selectedOptions.length - 1 ] );\n index = this.options.indexOf( target );\n\n if ( index > firstIndex && index < lastIndex ) index = firstIndex;\n if ( index > lastIndex && lastIndex > firstIndex ) lastIndex = firstIndex;\n\n this.reset( true );\n\n if ( lastIndex > index ) {\n while ( index < lastIndex + 1 ) { this.select( index++ ); }\n } else {\n while ( index > lastIndex - 1 ) { this.select( index-- ); }\n }\n } else if ( event.ctrlKey || event.metaKey ) {\n this.select( target );\n } else {\n this.reset( true );\n this.select( target );\n }\n }\n }\n },\n\n /**\n * @method highlight\n * @private\n */\n _highlight: function( event ) {\n var i, option = event.target;\n\n if ( !this.multiple ) {\n for ( i = 0; i < this.options.length; i++ ) {\n _.removeClass( this.options[ i ], \"dk-option-highlight\" );\n }\n\n _.addClass( this.data.elem.lastChild, \"dk-select-options-highlight\" );\n _.addClass( option, \"dk-option-highlight\" );\n }\n },\n\n /**\n * @method keyHandler\n * @private\n */\n _keyHandler: function( event ) {\n var lastSelected, j,\n selected = this.selectedOptions,\n options = this.options,\n i = 1,\n keys = {\n tab: 9,\n enter: 13,\n esc: 27,\n space: 32,\n up: 38,\n down: 40\n };\n\n switch ( event.keyCode ) {\n case keys.up:\n i = -1;\n // deliberate fallthrough\n case keys.down:\n event.preventDefault();\n lastSelected = selected[ selected.length - 1 ];\n\n if ( _.hasClass( this.data.elem.lastChild, \"dk-select-options-highlight\" ) ) {\n _.removeClass( this.data.elem.lastChild, \"dk-select-options-highlight\" );\n for ( j = 0; j < options.length; j++ ) {\n if ( _.hasClass( options[ j ], \"dk-option-highlight\" ) ) {\n _.removeClass( options[ j ], \"dk-option-highlight\" );\n lastSelected = options[ j ];\n }\n }\n }\n\n i = options.indexOf( lastSelected ) + i;\n\n if ( i > options.length - 1 ) {\n i = options.length - 1;\n } else if ( i < 0 ) {\n i = 0;\n }\n\n if ( !this.data.select.options[ i ].disabled ) {\n this.reset( true );\n this.select( i );\n this._scrollTo( i );\n }\n break;\n case keys.space:\n if ( !this.isOpen ) {\n event.preventDefault();\n this.open();\n break;\n }\n // deliberate fallthrough\n case keys.tab:\n case keys.enter:\n for ( i = 0; i < options.length; i++ ) {\n if ( _.hasClass( options[ i ], \"dk-option-highlight\" ) ) {\n this.select( i );\n }\n }\n // deliberate fallthrough\n case keys.esc:\n if ( this.isOpen ) {\n event.preventDefault();\n this.close();\n }\n break;\n }\n },\n\n /**\n * @method searchOptions\n * @private\n */\n _searchOptions: function( event ) {\n var results,\n self = this,\n keyChar = String.fromCharCode( event.keyCode || event.which ),\n\n waitToReset = function() {\n if ( self.data.searchTimeout ) {\n clearTimeout( self.data.searchTimeout );\n }\n\n self.data.searchTimeout = setTimeout(function() {\n self.data.searchString = \"\";\n }, 1000 );\n };\n\n if ( this.data.searchString === undefined ) {\n this.data.searchString = \"\";\n }\n\n waitToReset();\n\n this.data.searchString += keyChar;\n results = this.search( this.data.searchString, this.data.settings.search );\n\n if ( results.length ) {\n if ( !_.hasClass( results[0], \"dk-option-disabled\" ) ) {\n this.selectOne( results[0] );\n }\n }\n },\n\n /**\n * @method scrollTo\n * @private\n */\n _scrollTo: function( option ) {\n var optPos, optTop, optBottom,\n dkOpts = this.data.elem.lastChild;\n\n if ( option === -1 || ( typeof option !== \"number\" && !option ) ||\n ( !this.isOpen && !this.multiple ) ) {\n return false;\n }\n\n if ( typeof option === \"number\" ) {\n option = this.item( option );\n }\n\n optPos = _.position( option, dkOpts ).top;\n optTop = optPos - dkOpts.scrollTop;\n optBottom = optTop + option.offsetHeight;\n\n if ( optBottom > dkOpts.offsetHeight ) {\n optPos += option.offsetHeight;\n dkOpts.scrollTop = optPos - dkOpts.offsetHeight;\n } else if ( optTop < 0 ) {\n dkOpts.scrollTop = optPos;\n }\n }\n};\n\n// Static Methods\n\n/**\n * Builds the Dropkick element from a select element\n *\n * @method build\n * @private\n * @param {Node} sel The HTMLSelectElement\n * @return {Object} An object containing the new DK element and it's options\n */\nDropkick.build = function( sel, idpre ) {\n var selOpt, optList, i,\n options = [],\n\n ret = {\n elem: null,\n options: [],\n selected: []\n },\n\n addOption = function ( node ) {\n var option, optgroup, optgroupList, i,\n children = [];\n\n switch ( node.nodeName ) {\n case \"OPTION\":\n option = _.create( \"li\", {\n \"class\": \"dk-option \",\n \"data-value\": node.value,\n \"innerHTML\": node.text,\n \"role\": \"option\",\n \"aria-selected\": \"false\",\n \"id\": idpre + \"-\" + ( node.id || node.value.replace( \" \", \"-\" ) )\n });\n\n _.addClass( option, node.className );\n\n if ( node.disabled ) {\n _.addClass( option, \"dk-option-disabled\" );\n option.setAttribute( \"aria-disabled\", \"true\" );\n }\n\n if ( node.selected ) {\n _.addClass( option, \"dk-option-selected\" );\n option.setAttribute( \"aria-selected\", \"true\" );\n ret.selected.push( option );\n }\n\n ret.options.push( this.appendChild( option ) );\n break;\n case \"OPTGROUP\":\n optgroup = _.create( \"li\", { \"class\": \"dk-optgroup\" });\n\n if ( node.label ) {\n optgroup.appendChild( _.create( \"div\", {\n \"class\": \"dk-optgroup-label\",\n \"innerHTML\": node.label\n }));\n }\n\n optgroupList = _.create( \"ul\", {\n \"class\": \"dk-optgroup-options\"\n });\n\n for ( i = node.children.length; i--; children.unshift( node.children[ i ] ) );\n children.forEach( addOption, optgroupList );\n\n this.appendChild( optgroup ).appendChild( optgroupList );\n break;\n }\n };\n\n ret.elem = _.create( \"div\", {\n \"class\": \"dk-select\" + ( sel.multiple ? \"-multi\" : \"\" )\n });\n\n optList = _.create( \"ul\", {\n \"class\": \"dk-select-options\",\n \"id\": idpre + \"-listbox\",\n \"role\": \"listbox\"\n });\n\n sel.disabled && _.addClass( ret.elem, \"dk-select-disabled\" );\n ret.elem.id = idpre + ( sel.id ? \"-\" + sel.id : \"\" );\n _.addClass( ret.elem, sel.className );\n\n if ( !sel.multiple ) {\n selOpt = sel.options[ sel.selectedIndex ];\n ret.elem.appendChild( _.create( \"div\", {\n \"class\": \"dk-selected \" + selOpt.className,\n \"tabindex\": sel.tabindex || 0,\n \"innerHTML\": selOpt ? selOpt.text : ' ',\n \"id\": idpre + \"-combobox\",\n \"aria-live\": \"assertive\",\n \"aria-owns\": optList.id,\n \"role\": \"combobox\"\n }));\n optList.setAttribute( \"aria-expanded\", \"false\" );\n } else {\n ret.elem.setAttribute( \"tabindex\", sel.getAttribute( \"tabindex\" ) || \"0\" );\n optList.setAttribute( \"aria-multiselectable\", \"true\" );\n }\n\n for ( i = sel.children.length; i--; options.unshift( sel.children[ i ] ) );\n options.forEach( addOption, ret.elem.appendChild( optList ) );\n\n return ret;\n};\n\n/**\n * Focus DK Element when corresponding label is clicked; close all other DK's\n *\n * @method onDocClick\n * @private\n * @param {Object} event Event from document click\n */\nDropkick.onDocClick = function( event ) {\n var tId, i;\n\n if (event.target.nodeType !== 1) {\n return false;\n }\n\n if ( ( tId = event.target.getAttribute( \"data-dkcacheid\" ) ) !== null ) {\n Dropkick.cache[ tId ].focus();\n }\n\n for ( i in Dropkick.cache ) {\n if ( !_.closest( event.target, Dropkick.cache[ i ].data.elem ) && i !== tId ) {\n Dropkick.cache[ i ].disabled || Dropkick.cache[ i ].close();\n }\n }\n};\n\n\n// Add jQuery method\nif ( jQuery !== undefined ) {\n jQuery.fn.dropkick = function () {\n var args = Array.prototype.slice.call( arguments );\n return jQuery( this ).each(function() {\n if ( !args[0] || typeof args[0] === 'object' ) {\n new Dropkick( this, args[0] || {} );\n } else if ( typeof args[0] === 'string' ) {\n Dropkick.prototype[ args[0] ].apply( new Dropkick( this ), args.slice( 1 ) );\n }\n });\n };\n}\n\nreturn Dropkick;\n\n}));\n","module.exports = require(\"github:Robdel12/DropKick@2.1.7/lib/dropkick.js\");","'use strict';\n\nimport {Component, EventEmitter, ElementRef} from 'angular2/core';\nimport {CORE_DIRECTIVES} from 'angular2/common';\nimport DropKick from 'Robdel12/DropKick';\nimport 'Robdel12/DropKick/build/css/dropkick.css!css';\n\n@Component({\n selector: 'dropdown',\n events: ['change'],\n template: `\n <select (change)=onChange($event.target.value)>\n <ng-content></ng-content>\n </select>\n `,\n directives: [CORE_DIRECTIVES],\n styles: [`\n :host .dk-select{max-width:100%;font-family:Montserrat}:host .dk-selected:after{display:none}:host .dk-selected{color:#666D71;border-color:#666D71;padding:0.4em 0.9em 0.4em 0.4em;border-radius:0.4rem}:host .dk-select-open-down .dk-selected{border-radius:0.4rem}:host .dk-select-open-down .dk-selected,:host .dk-selected:focus,:host .dk-selected:hover{border-color:#0033a0;color:#0033a0}:host .dk-selected:before{border-top-color:#666D71;border-width:.35em .35em 0}:host .dk-select-open-down .dk-selected:before,:host .dk-select-open-up .dk-selected:before{border-bottom-color:#0033a0;border-width:0 .35em .35em}:host .dk-select-multi:focus .dk-select-options,:host .dk-select-open-down .dk-select-options,:host .dk-select-open-up .dk-select-options{border-color:#666D71}:host .dk-select-options{margin-top:0.2em;border-radius:0.4em}:host .dk-option{color:#263238;padding:0.4em 0.4em}:host .dk-option:hover{background-color:#EEEFEF}:host .dk-option-selected{background-color:#EEEFEF}\n `]\n})\n@Reflect.metadata('parameters', [[ElementRef]])\nexport class DropDown {\n constructor(elem) {\n this.change = new EventEmitter();\n this.elem = elem.nativeElement;\n }\n\n ngAfterContentInit() {\n this.inst = new DropKick(this.elem.firstElementChild, {autoWidth: true});\n }\n\n onChange(value) {\n this.change.next(value);\n }\n\n destroy() {\n this.inst.dispose();\n }\n}\n","/* */ \nvar IObject = require('./$.iobject'),\n defined = require('./$.defined');\nmodule.exports = function(it) {\n return IObject(defined(it));\n};\n","/* */ \nvar $export = require('./$.export'),\n core = require('./$.core'),\n fails = require('./$.fails');\nmodule.exports = function(KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY],\n exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function() {\n fn(1);\n }), 'Object', exp);\n};\n","/* */ \nvar toIObject = require('./$.to-iobject');\nrequire('./$.object-sap')('getOwnPropertyDescriptor', function($getOwnPropertyDescriptor) {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","/* */ \nvar $ = require('../../modules/$');\nrequire('../../modules/es6.object.get-own-property-descriptor');\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $.getDesc(it, key);\n};\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };","/* */ \n\"use strict\";\nvar _Object$getOwnPropertyDescriptor = require('../core-js/object/get-own-property-descriptor')[\"default\"];\nexports[\"default\"] = function get(_x, _x2, _x3) {\n var _again = true;\n _function: while (_again) {\n var object = _x,\n property = _x2,\n receiver = _x3;\n _again = false;\n if (object === null)\n object = Function.prototype;\n var desc = _Object$getOwnPropertyDescriptor(object, property);\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n if (parent === null) {\n return undefined;\n } else {\n _x = parent;\n _x2 = property;\n _x3 = receiver;\n _again = true;\n desc = parent = undefined;\n continue _function;\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n if (getter === undefined) {\n return undefined;\n }\n return getter.call(receiver);\n }\n }\n};\nexports.__esModule = true;\n","/* */ \nvar $ = require('../../modules/$');\nmodule.exports = function create(P, D) {\n return $.create(P, D);\n};\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","/* */ \nmodule.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};","/* */ \nvar isObject = require('./$.is-object');\nmodule.exports = function(it) {\n if (!isObject(it))\n throw TypeError(it + ' is not an object!');\n return it;\n};\n","/* */ \nvar getDesc = require('./$').getDesc,\n isObject = require('./$.is-object'),\n anObject = require('./$.an-object');\nvar check = function(O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null)\n throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? function(test, buggy, set) {\n try {\n set = require('./$.ctx')(Function.call, getDesc(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) {\n buggy = true;\n }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy)\n O.__proto__ = proto;\n else\n set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","/* */ \nvar $export = require('./$.export');\n$export($export.S, 'Object', {setPrototypeOf: require('./$.set-proto').set});\n","/* */ \nrequire('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/$.core').Object.setPrototypeOf;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","/* */ \n\"use strict\";\nvar _Object$create = require('../core-js/object/create')[\"default\"];\nvar _Object$setPrototypeOf = require('../core-js/object/set-prototype-of')[\"default\"];\nexports[\"default\"] = function(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = _Object$create(superClass && superClass.prototype, {constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }});\n if (superClass)\n _Object$setPrototypeOf ? _Object$setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\nexports.__esModule = true;\n","/* */ \nvar $ = require('../../modules/$');\nmodule.exports = function defineProperty(it, key, desc) {\n return $.setDesc(it, key, desc);\n};\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","/* */ \n\"use strict\";\nvar _Object$defineProperty = require('../core-js/object/define-property')[\"default\"];\nexports[\"default\"] = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor)\n descriptor.writable = true;\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps)\n defineProperties(Constructor.prototype, protoProps);\n if (staticProps)\n defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\nexports.__esModule = true;\n","/* */ \n\"use strict\";\n\nexports[\"default\"] = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nexports.__esModule = true;","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef","/* */ \nmodule.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};","/* */ \nvar aFunction = require('./$.a-function');\nmodule.exports = function(fn, that, length) {\n aFunction(fn);\n if (that === undefined)\n return fn;\n switch (length) {\n case 1:\n return function(a) {\n return fn.call(that, a);\n };\n case 2:\n return function(a, b) {\n return fn.call(that, a, b);\n };\n case 3:\n return function(a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function() {\n return fn.apply(that, arguments);\n };\n};\n","/* */ \nvar global = require('./$.global'),\n core = require('./$.core'),\n ctx = require('./$.ctx'),\n PROTOTYPE = 'prototype';\nvar $export = function(type, name, source) {\n var IS_FORCED = type & $export.F,\n IS_GLOBAL = type & $export.G,\n IS_STATIC = type & $export.S,\n IS_PROTO = type & $export.P,\n IS_BIND = type & $export.B,\n IS_WRAP = type & $export.W,\n exports = IS_GLOBAL ? core : core[name] || (core[name] = {}),\n target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE],\n key,\n own,\n out;\n if (IS_GLOBAL)\n source = name;\n for (key in source) {\n own = !IS_FORCED && target && key in target;\n if (own && key in exports)\n continue;\n out = own ? target[key] : source[key];\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] : IS_BIND && own ? ctx(out, global) : IS_WRAP && target[key] == out ? (function(C) {\n var F = function(param) {\n return this instanceof C ? new C(param) : C(param);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n if (IS_PROTO)\n (exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out;\n }\n};\n$export.F = 1;\n$export.G = 2;\n$export.S = 4;\n$export.P = 8;\n$export.B = 16;\n$export.W = 32;\nmodule.exports = $export;\n","/* */ \nvar $Object = Object;\nmodule.exports = {\n create: $Object.create,\n getProto: $Object.getPrototypeOf,\n isEnum: {}.propertyIsEnumerable,\n getDesc: $Object.getOwnPropertyDescriptor,\n setDesc: $Object.defineProperty,\n setDescs: $Object.defineProperties,\n getKeys: $Object.keys,\n getNames: $Object.getOwnPropertyNames,\n getSymbols: $Object.getOwnPropertySymbols,\n each: [].forEach\n};","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n};","/* */ \nvar defined = require('./$.defined');\nmodule.exports = function(it) {\n return Object(defined(it));\n};\n","/* */ \nvar toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};","/* */ \nvar cof = require('./$.cof');\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","/* */ \nmodule.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};","/* */ \nvar $ = require('./$'),\n toObject = require('./$.to-object'),\n IObject = require('./$.iobject');\nmodule.exports = require('./$.fails')(function() {\n var a = Object.assign,\n A = {},\n B = {},\n S = Symbol(),\n K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function(k) {\n B[k] = k;\n });\n return a({}, A)[S] != 7 || Object.keys(a({}, B)).join('') != K;\n}) ? function assign(target, source) {\n var T = toObject(target),\n $$ = arguments,\n $$len = $$.length,\n index = 1,\n getKeys = $.getKeys,\n getSymbols = $.getSymbols,\n isEnum = $.isEnum;\n while ($$len > index) {\n var S = IObject($$[index++]),\n keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S),\n length = keys.length,\n j = 0,\n key;\n while (length > j)\n if (isEnum.call(S, key = keys[j++]))\n T[key] = S[key];\n }\n return T;\n} : Object.assign;\n","/* */ \nvar $export = require('./$.export');\n$export($export.S + $export.F, 'Object', {assign: require('./$.object-assign')});\n","/* */ \nvar core = module.exports = {version: '1.2.6'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef","/* */ \nrequire('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/$.core').Object.assign;\n","/* */ \nmodule.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","/* */ \n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","module.exports = require(\"npm:foreach@2.0.5/index.js\");","/* */ \n'use strict';\n\nvar each = require('foreach');\nmodule.exports = api;\n\n\n/**\n * Convenience wrapper around the api.\n * Calls `.get` when called with an `object` and a `pointer`.\n * Calls `.set` when also called with `value`.\n * If only supplied `object`, returns a partially applied function, mapped to the object.\n *\n * @param obj\n * @param pointer\n * @param value\n * @returns {*}\n */\n\nfunction api (obj, pointer, value) {\n // .set()\n if (arguments.length === 3) {\n return api.set(obj, pointer, value);\n }\n // .get()\n if (arguments.length === 2) {\n return api.get(obj, pointer);\n }\n // Return a partially applied function on `obj`.\n var wrapped = api.bind(api, obj);\n\n // Support for oo style\n for (var name in api) {\n if (api.hasOwnProperty(name)) {\n wrapped[name] = api[name].bind(wrapped, obj);\n }\n }\n return wrapped;\n}\n\n\n/**\n * Lookup a json pointer in an object\n *\n * @param obj\n * @param pointer\n * @returns {*}\n */\napi.get = function get (obj, pointer) {\n var tok,\n refTokens = api.parse(pointer);\n while (refTokens.length) {\n tok = refTokens.shift();\n if (!(tok in obj)) {\n throw new Error('Invalid reference token: ' + tok);\n }\n obj = obj[tok];\n }\n return obj;\n};\n\n/**\n * Sets a value on an object\n *\n * @param obj\n * @param pointer\n * @param value\n */\napi.set = function set (obj, pointer, value) {\n var refTokens = api.parse(pointer),\n tok,\n nextTok = refTokens[0];\n while (refTokens.length > 1) {\n tok = refTokens.shift();\n if (tok === '-' && Array.isArray(obj)) {\n tok = obj.length;\n }\n nextTok = refTokens[0];\n\n if (!(tok in obj)) {\n if (nextTok.match(/^(\\d+|-)$/)) {\n obj[tok] = [];\n } else {\n obj[tok] = {};\n }\n }\n obj = obj[tok];\n }\n if (nextTok === '-' && Array.isArray(obj)) {\n nextTok = obj.length;\n }\n obj[nextTok] = value;\n return this;\n};\n\n/**\n * Removes an attribute\n *\n * @param obj\n * @param pointer\n */\napi.remove = function (obj, pointer) {\n var refTokens = api.parse(pointer);\n var finalToken = refTokens.pop();\n if (finalToken === undefined) {\n throw new Error('Invalid JSON pointer for remove: \"' + pointer + '\"');\n }\n delete api.get(obj, api.compile(refTokens))[finalToken];\n};\n\n/**\n * Returns a (pointer -> value) dictionary for an object\n *\n * @param obj\n * @param {function} descend\n * @returns {}\n */\napi.dict = function dict (obj, descend) {\n var results = {};\n api.walk(obj, function (value, pointer) {\n results[pointer] = value;\n }, descend);\n return results;\n};\n\n/**\n * Iterates over an object\n * Iterator: function (value, pointer) {}\n *\n * @param obj\n * @param {function} iterator\n * @param {function} descend\n */\napi.walk = function walk (obj, iterator, descend) {\n var refTokens = [];\n\n descend = descend || function (value) {\n var type = Object.prototype.toString.call(value);\n return type === '[object Object]' || type === '[object Array]';\n };\n\n (function next (cur) {\n each(cur, function (value, key) {\n refTokens.push(String(key));\n if (descend(value)) {\n next(value);\n } else {\n iterator(value, api.compile(refTokens));\n }\n refTokens.pop();\n });\n }(obj));\n};\n\n/**\n * Tests if an object has a value for a json pointer\n *\n * @param obj\n * @param pointer\n * @returns {boolean}\n */\napi.has = function has (obj, pointer) {\n try {\n api.get(obj, pointer);\n } catch (e) {\n return false;\n }\n return true;\n};\n\n/**\n * Escapes a reference token\n *\n * @param str\n * @returns {string}\n */\napi.escape = function escape (str) {\n return str.toString().replace(/~/g, '~0').replace(/\\//g, '~1');\n};\n\n/**\n * Unescapes a reference token\n *\n * @param str\n * @returns {string}\n */\napi.unescape = function unescape (str) {\n return str.replace(/~1/g, '/').replace(/~0/g, '~');\n};\n\n/**\n * Converts a json pointer into a array of reference tokens\n *\n * @param pointer\n * @returns {Array}\n */\napi.parse = function parse (pointer) {\n if (pointer === '') { return []; }\n if (pointer.charAt(0) !== '/') { throw new Error('Invalid JSON pointer: ' + pointer); }\n return pointer.substring(1).split(/\\//).map(api.unescape);\n};\n\n/**\n * Builds a json pointer from a array of reference tokens\n *\n * @param refTokens\n * @returns {string}\n */\napi.compile = function compile (refTokens) {\n if (refTokens.length === 0) { return ''; }\n return '/' + refTokens.map(api.escape).join('/');\n};\n","module.exports = require(\"npm:json-pointer@0.3.0/index\");","'use strict';\nimport JsonPointerLib from 'json-pointer';\n\n/**\n * Wrapper for JsonPointer. Provides common operations\n */\nexport class JsonPointer extends JsonPointerLib {\n /**\n * returns last JsonPointer token\n * if level > 1 returns levels last (second last/third last)\n * @example\n * // returns subpath\n * JsonPointerHelper.baseName('/path/0/subpath')\n * // returns foo\n * JsonPointerHelper.baseName('/path/foo/subpath', 2)\n */\n static baseName(pointer, level=1) {\n let tokens = JsonPointer.parse(pointer);\n return tokens[tokens.length - (level)];\n }\n\n /**\n * returns dirname of pointer\n * if level > 1 returns corresponding dirname in the hierarchy\n * @example\n * // returns /path/0\n * JsonPointerHelper.dirName('/path/0/subpath')\n * // returns /path\n * JsonPointerHelper.dirName('/path/foo/subpath', 2)\n */\n static dirName(pointer, level=1) {\n let tokens = JsonPointer.parse(pointer);\n return JsonPointer.compile(tokens.slice(0, tokens.length - level));\n }\n\n /**\n * overridden JsonPointer original parse to take care of prefixing '#' symbol\n * that is not valid JsonPointer\n */\n static parse(pointer) {\n let ptr = pointer;\n if (ptr.charAt(0) === '#') {\n ptr = ptr.substring(1);\n }\n return JsonPointerLib._origParse(ptr);\n }\n\n /**\n * Creates a JSON pointer path, by joining one or more tokens to a base path.\n *\n * @param {string} base - The base path\n * @param {string|string[]} tokens - The token(s) to append (e.g. [\"name\", \"first\"])\n * @returns {string}\n */\n static join(base, tokens) {\n // TODO: optimize\n let baseTokens = JsonPointer.parse(base);\n let resTokens = baseTokens.concat(tokens);\n return JsonPointer.compile(resTokens);\n }\n}\n\nJsonPointerLib._origParse = JsonPointerLib.parse;\nJsonPointerLib.parse = JsonPointer.parse;\n\n\nObject.assign(JsonPointer, JsonPointerLib);\nexport default JsonPointer;\n","'use strict';\n\nimport {ElementRef} from 'angular2/core';\n\nimport {RedocComponent, BaseComponent, SchemaManager} from '../base';\nimport {DropDown} from '../../common/components/DropDown/dropdown';\nimport JsonPointer from '../../utils/JsonPointer';\n\n@RedocComponent({\n selector: 'json-schema',\n template: `\n <span *ngIf=\"schema.isTrivial\" class=\"param-wrap\">\n <span class=\"param-type param-type-trivial {{schema.type}}\"\n [ngClass]=\"{'with-hint': schema._displayTypeHint}\"\n title=\"{{schema._displayTypeHint}}\">{{schema._displayType}} {{schema._displayFormat}}\n <span class=\"param-range\" *ngIf=\"schema._range\"> {{schema._range}} </span>\n </span>\n <div *ngIf=\"schema.enum\" class=\"param-enum\">\n <span *ngFor=\"#enumItem of schema.enum\" class=\"enum-value {{enumItem.type}}\"> {{enumItem.val | json}} </span>\n </div>\n </span>\n <table *ngIf=\"!schema.isTrivial\" class=\"params-wrap\" [ngClass]=\"{'params-array': schema._isArray}\">\n <!-- <caption> {{_displayType}} </caption> -->\n <template ngFor [ngForOf]=\"schema.properties\" #prop=\"$implicit\" #last=\"last\">\n <tr class=\"param\" [ngClass]=\"{'last': last, 'discriminator': prop.isDiscriminator && !derivedEmtpy, 'complex': prop._pointer}\">\n <td class=\"param-name\">\n <span class=\"param-name-content\">{{prop._name}}</span>\n </td>\n <td class=\"param-info\">\n <div>\n <span class=\"param-type {{prop.type}}\" [ngClass]=\"{'with-hint': prop._displayTypeHint}\"\n title=\"{{prop._displayTypeHint}}\"> {{prop._displayType}} {{prop._displayFormat}}\n <span class=\"param-range\" *ngIf=\"prop._range\"> {{prop._range}} </span>\n </span>\n <span *ngIf=\"prop.required\" class=\"param-required\">Required</span>\n <div *ngIf=\"prop.enum && !prop.isDiscriminator\" class=\"param-enum\">\n <span *ngFor=\"#enumItem of prop.enum\" class=\"enum-value {{enumItem.type}}\"> {{enumItem.val | json}} </span>\n </div>\n </div>\n <div class=\"param-description\" innerHtml=\"{{prop.description | marked}}\"></div>\n <div class=\"discriminator-info\" *ngIf=\"prop.isDiscriminator\">\n <span>This field value determines the exact schema:</span>\n <dropdown (change)=\"selectDerived($event)\">\n <option *ngFor=\"#derived of schema.derived; #i=index\"\n [value]=\"i\">{{derived.name}}</option>\n </dropdown>\n </div>\n </td>\n </tr>\n <tr class=\"param-schema\" [ngClass]=\"{'param-array': prop._isArray, 'last': last}\" *ngIf=\"prop._pointer\">\n <td colspan=\"2\">\n <json-schema class=\"nested-schema\" pointer=\"{{prop._pointer}}\" [isArray]='prop._isArray'\n [nestOdd]=\"!nestOdd\" [skipReadOnly]=\"skipReadOnly\" [attr.nesteven]=\"!nestOdd\">\n </json-schema>\n </td>\n </tr>\n </template>\n <tr *ngIf=\"schema.derived.length\" class=\"param-wrap discriminator-wrap\" [ngClass]=\"{'empty': derivedEmtpy}\">\n <td colspan=\"2\">\n <div class=\"derived-schema\" *ngFor=\"#derived of schema.derived\" [ngClass]=\"{active: derived.active}\">\n <json-schema class=\"discriminator-part\" *ngIf=\"!derived.empty\" [childFor]=\"pointer\"\n pointer=\"{{derived.$ref}}\" [final]=\"derived.final\" [skipReadOnly]=\"skipReadOnly\">\n </json-schema>\n </div>\n </td>\n </tr>\n </table>\n `,\n styles: [`\n .param-name{font-size:0.929em;padding:10px 0 10px 0;font-weight:400;box-sizing:border-box;line-height:20px;border-left:1px solid rgba(0,51,160,0.5);white-space:nowrap;position:relative;vertical-align:top}.param-name-content{padding-right:25px;display:inline-block;font-family:Montserrat,sans-serif}.param-info{padding:10px 0;box-sizing:border-box;border-bottom:1px solid #ccc;width:75%}.param-range{color:rgba(0,51,160,0.7);position:relative;top:1px;padding:0 4px;border-radius:2px;background-color:rgba(0,51,160,0.1);margin-left:6px}.param-description{font-size:13px}.param-required{color:red;font-weight:bold;font-size:12px;line-height:20px;vertical-align:middle}.param-type{color:#263238;font-size:0.929em;line-height:20px;vertical-align:middle;font-weight:normal}.param-type.array:before{content:\"Array of \";color:#263238;font-weight:300}.param-type{color:rgba(38,50,56,0.4)}.param-type.with-hint{display:inline-block;margin-bottom:0.4em;border-bottom:1px dotted rgba(38,50,56,0.4);padding:0;cursor:help}.param-type-trivial{margin:10px 10px 0;display:inline-block}.param-name>span:before{content:\"\";display:inline-block;width:1px;height:7px;background-color:#0033a0;margin:0 10px;vertical-align:middle}.param-name>span:after{content:\"\";position:absolute;border-top:1px solid rgba(0,51,160,0.5);width:10px;left:0;top:21px}.param:first-of-type>.param-name:before{content:\"\";display:block;position:absolute;left:-1px;top:0;border-left:2px solid #fff;height:21px}.param:last-of-type>.param-name,.param.last>.param-name{position:relative}.param:last-of-type>.param-name:after,.param.last>.param-name:after{content:\"\";display:block;position:absolute;left:-2px;border-left:2px solid #fff;top:22px;background-color:white;bottom:0}.param-wrap:last-of-type>.param-schema{border-left-color:transparent}.param-schema .param-wrap:first-of-type .param-name:before{display:none !important}.param-schema.last>td{border-left:0}.param-enum{color:#263238;font-size:13px}.param-enum:before{content:\"Values: {\"}.param-enum:after{content:\"}\"}.param-enum>.enum-value:after{content:\", \"}.param-enum>.enum-value:last-of-type:after{content:none}:host{display:block}.param-schema>td{border-left:1px solid rgba(0,51,160,0.5);padding:0 10px}.derived-schema{display:none}.derived-schema.active{display:block}json-schema.nested-schema{background-color:white;padding:10px 20px;position:relative;border-radius:2px}json-schema.nested-schema:before,json-schema.nested-schema:after{content:\"\";width:0;height:0;position:absolute;top:0;border-style:solid;border-color:transparent;border-width:10px 15px 0;margin-left:-7.5px;border-top-color:#f0f0f0}json-schema.nested-schema:before{left:10%}json-schema.nested-schema:after{right:10%}json-schema.nested-schema .param:first-of-type>.param-name:before,json-schema.nested-schema .param:last-of-type>.param-name:after{border-color:white}json-schema[nesteven=\"true\"]{background-color:#f0f0f0;border-radius:2px}json-schema[nesteven=\"true\"]:before,json-schema[nesteven=\"true\"]:after{border-top-color:white}json-schema[nesteven=\"true\"]>.params-wrap>.param:first-of-type>.param-name:before,json-schema[nesteven=\"true\"]>.params-wrap>.param:last-of-type>.param-name:after{border-color:#f0f0f0}json-schema[nesteven=\"true\"]>.params-wrap>.param:last-of-type>.param-name:after,json-schema[nesteven=\"true\"]>.params-wrap>.param.last>.param-name:after{border-color:#f0f0f0}.param.complex>.param-info{border-bottom:0}.params-wrap{border-collapse:collapse;width:100%}.params-wrap.params-array:before,.params-wrap.params-array:after{display:block;font-weight:300;color:#263238;font-size:13px;line-height:1.5}.params-wrap.params-array:after{content:\"]\"}.params-wrap.params-array:before{content:\"Array [\";padding-top:1em}.params-wrap.params-array{padding-left:10px}.param-schema.param-array:before{bottom:9.75px;width:10px;border-left-style:dashed;border-bottom:1px dashed rgba(0,51,160,0.5)}.params-wrap.params-array>.param-wrap:first-of-type>.param>.param-name:after{content:\"\";display:block;position:absolute;left:-1px;top:0;border-left:2px solid #fff;height:20px}.params-wrap>.param>.param-schema.param-array{border-left-color:transparent}.param.discriminator>.param-info{padding-bottom:0;border-bottom:0}.param.discriminator>.param-name:after{display:none}.discriminator-info{font-weight:400;margin-bottom:10px}.discriminator-info>span{font-size:0.9em;font-weight:300}.discriminator-wrap:not(.empty)>td{padding:0;position:relative}.discriminator-wrap:not(.empty)>td:before{content:\"\";display:block;position:absolute;left:0;top:0;border-left:1px solid rgba(0,51,160,0.5);height:21px;z-index:1}ul{text-align:left;margin:0;padding:0;display:block}li{margin:0.5em 0.3em 0.2em 0;font-family:Montserrat,sans-serif;font-size:.929em;line-height:.929em;border:0;color:white;padding:2px 8px 4px 8px;border-radius:2px;background-color:rgba(38,50,56,0.3);display:inline-block;cursor:pointer}li:last-of-type{margin-right:0}li.active{background-color:#0033a0}\n `],\n directives: [JsonSchema, DropDown],\n inputs: ['isArray', 'final', 'nestOdd', 'childFor', 'skipReadOnly']\n})\n@Reflect.metadata('parameters', [[SchemaManager], [ElementRef]])\nexport default class JsonSchema extends BaseComponent {\n constructor(schemaMgr, elementRef) {\n super(schemaMgr);\n this.$element = elementRef.nativeElement;\n this.final = false;\n }\n\n selectDerived(subClassIdx) {\n let subClass = this.schema.derived[subClassIdx];\n if (!subClass || subClass.active) return;\n this.schema.derived.forEach((subSchema) => {\n subSchema.active = false;\n });\n subClass.active = true;\n this.derivedEmtpy = false;\n if (subClass.empty) this.derivedEmtpy = true;\n }\n\n unwrapArray(schema) {\n var res = schema;\n if (schema && schema.type === 'array') {\n let ptr = schema.items._pointer\n || JsonPointer.join(schema._pointer || this.pointer, ['items']);\n res = schema.items;\n res._isArray = true;\n res._pointer = ptr;\n res = this.unwrapArray(res);\n }\n return res;\n }\n\n prepareModel() {\n if (!this.componentSchema) {\n throw new Error(`Can't load component schema at ${this.pointer}`);\n }\n this.dereference();\n\n let schema = this.componentSchema;\n BaseComponent.joinAllOf(schema, {omitParent: true});\n schema = this.unwrapArray(schema);\n runInjectors(schema, schema, schema._pointer || this.pointer);\n\n schema.derived = schema.derived || [];\n\n if (!schema.isTrivial) {\n this.prepareObjectPropertiesData(schema);\n }\n\n this.schema = schema;\n this.initDerived();\n }\n\n initDerived() {\n if (!this.schema.derived.length) return;\n let enumArr = this.schema.properties[this.schema.properties.length - 1].enum;\n if (enumArr) {\n let enumOrder = {};\n enumArr.forEach((enumItem, idx) => {\n enumOrder[enumItem.val] = idx;\n });\n\n this.schema.derived.sort((a, b) => {\n return enumOrder[a.name] > enumOrder[b.name];\n });\n }\n this.selectDerived(0);\n }\n\n prepareObjectPropertiesData(schema) {\n let requiredMap = {};\n if (schema.required) {\n schema.required.forEach(prop => requiredMap[prop] = true);\n }\n\n let discriminatorFieldIdx = -1;\n let props = Object.keys(schema.properties).map((prop, idx) => {\n let propertySchema = schema.properties[prop];\n let propPointer = propertySchema._pointer ||\n JsonPointer.join(schema._pointer || this.pointer, ['properties', prop]);\n propertySchema = JsonSchema.injectPropertyData(propertySchema, prop, propPointer);\n // stop endless discriminator recursion\n if (propertySchema._pointer === this.childFor) {\n propertySchema._pointer = null;\n }\n propertySchema.required = !!requiredMap[prop];\n propertySchema.isDiscriminator = (schema.discriminator === prop);\n if (propertySchema.isDiscriminator) {\n discriminatorFieldIdx = idx;\n }\n return propertySchema;\n });\n if (this.skipReadOnly) {\n props = props.filter(prop => !prop.readOnly);\n }\n // Move discriminator field to the end of properties list\n if (discriminatorFieldIdx > -1) {\n let discrProp = props.splice(discriminatorFieldIdx, 1);\n props.push(discrProp[0]);\n }\n schema.properties = props;\n }\n\n static injectPropertyData(propertySchema, propertyName, propPointer) {\n propertySchema = Object.assign({}, propertySchema);\n\n propertySchema._name = propertyName;\n runInjectors(propertySchema, propertySchema, propPointer);\n\n return propertySchema;\n }\n}\n\nfunction runInjectors(injectTo, propertySchema, propertyPointer) {\n for (var injName in injectors) {\n let injector = injectors[injName];\n if (injector.check(propertySchema)) {\n injector.inject(injectTo, propertySchema, propertyPointer);\n }\n }\n}\n\nconst injectors = {\n general: {\n check: () => true,\n inject: (injectTo, propertySchema, pointer) => {\n injectTo._pointer = propertySchema._pointer || pointer;\n injectTo._displayType = propertySchema.type;\n if (propertySchema.format) injectTo._displayFormat = `<${propertySchema.format}>`;\n if (propertySchema.enum) {\n injectTo.enum = propertySchema.enum.map((value) => {\n return {val: value, type: typeof value};\n });\n }\n }\n },\n discriminator: {\n check: (propertySchema) => propertySchema.discriminator,\n inject: (injectTo, propertySchema = injectTo, pointer) => {\n injectTo.derived = SchemaManager.instance().findDerivedDefinitions(pointer);\n injectTo.discriminator = propertySchema.discriminator;\n }\n },\n array: {\n check: (propertySchema) => {\n return propertySchema.type === 'array';\n },\n inject: (injectTo, propertySchema = injectTo, propPointer) => {\n injectTo._isArray = true;\n injectTo._pointer = propertySchema.items._pointer\n || JsonPointer.join(propertySchema._pointer || propPointer, ['items']);\n\n runInjectors(injectTo, propertySchema.items, propPointer);\n }\n },\n\n object: {\n check: (propertySchema) => {\n return propertySchema.type === 'object' && propertySchema.properties;\n },\n inject: (injectTo, propertySchema = injectTo) => {\n let baseName = propertySchema._pointer && JsonPointer.baseName(propertySchema._pointer);\n injectTo._displayType = propertySchema.title || baseName || 'object';\n }\n },\n noType: {\n check: (propertySchema) => !propertySchema.type,\n inject: (injectTo) => {\n injectTo._displayType = '< * >';\n injectTo._displayTypeHint = 'This field may contain data of any type';\n injectTo.isTrivial = true;\n }\n },\n\n simpleType: {\n check: (propertySchema) => {\n if (propertySchema.type === 'object') {\n return !propertySchema.properties || !Object.keys(propertySchema.properties).length;\n }\n return (propertySchema.type !== 'array') && propertySchema.type;\n },\n inject: (injectTo, propertySchema = injectTo) => {\n injectTo.isTrivial = true;\n if (injectTo._pointer) {\n injectTo._pointer = undefined;\n injectTo._displayType = propertySchema.title ?\n `${propertySchema.title} (${propertySchema.type})` : propertySchema.type;\n }\n }\n },\n integer: {\n check: (propertySchema) => (propertySchema.type === 'integer' || propertySchema.type === 'number'),\n inject: (injectTo, propertySchema = injectTo) => {\n var range = '';\n if (propertySchema.minimum && propertySchema.maximum) {\n range += propertySchema.exclusiveMinimum ? '( ' : '[ ';\n range += propertySchema.minimum;\n range += ' .. ';\n range += propertySchema.maximum;\n range += propertySchema.exclusiveMaximum ? ' )' : ' ]';\n } else if (propertySchema.maximum) {\n range += propertySchema.exclusiveMaximum? '< ' : '<= ';\n range += propertySchema.maximum;\n } else if (propertySchema.minimum) {\n range += propertySchema.exclusiveMinimum ? '> ' : '>= ';\n range += propertySchema.minimum;\n }\n\n if (range) {\n injectTo._range = range;\n }\n }\n },\n string: {\n check: propertySchema => (propertySchema.type === 'string'),\n inject: (injectTo, propertySchema = injectTo) => {\n var range;\n if (propertySchema.minLength && propertySchema.maxLength) {\n range = `[ ${propertySchema.minLength} .. ${propertySchema.maxLength} ]`;\n } else if (propertySchema.maxLength) {\n range = '<= ' + propertySchema.maxLength;\n } else if (propertySchema.minimum) {\n range = '>= ' + propertySchema.minLength;\n }\n\n if (range) {\n injectTo._range = range + ' characters';\n }\n }\n }\n};\n","'use strict';\n\nimport ApiInfo from './ApiInfo/api-info';\nimport ApiLogo from './ApiLogo/api-logo';\nimport Method from './Method/method.js';\nimport MethodsList from './MethodsList/methods-list';\nimport ParamsList from './ParamsList/params-list';\nimport Redoc from './Redoc/redoc';\nimport ResponsesList from './ResponsesList/responses-list';\nimport ResponsesSamples from './ResponsesSamples/responses-samples';\nimport SchemaSample from './SchemaSample/schema-sample';\nimport SideMenu from './SideMenu/side-menu';\nimport JsonSchema from './JsonSchema/json-schema';\n\nconst REDOC_COMPONENTS = [\n ApiInfo,\n ApiLogo,\n JsonSchema,\n Method,\n MethodsList,\n ParamsList,\n Redoc,\n ResponsesList,\n ResponsesSamples,\n SchemaSample,\n SideMenu\n];\n\nexport {\n ApiInfo,\n ApiLogo,\n JsonSchema,\n Method,\n MethodsList,\n ParamsList,\n Redoc,\n ResponsesList,\n ResponsesSamples,\n SchemaSample,\n SideMenu,\n REDOC_COMPONENTS\n};\n","'use strict';\n\nimport {Redoc} from './components/index';\nexport var init = Redoc.init;\n\nwindow.Redoc = Redoc;\nRedoc.autoInit();\n"],"sourceRoot":"/source/"} |