blob: 069fc0c6d64b02e7db3909a4a85d56d8e2d1ea1b [file] [log] [blame]
{"version":3,"file":"compiler.js","sources":["../../../packages/compiler/src/core.js","../../../packages/compiler/src/util.js","../../../packages/compiler/src/version.js","../../../packages/compiler/src/template_parser/template_ast.js","../../../packages/compiler/src/config.js","../../../packages/compiler/src/aot/static_symbol.js","../../../packages/compiler/src/compile_metadata.js","../../../packages/compiler/src/ast_path.js","../../../packages/compiler/src/ml_parser/ast.js","../../../packages/compiler/src/assertions.js","../../../packages/compiler/src/ml_parser/interpolation_config.js","../../../packages/compiler/src/style_url_resolver.js","../../../packages/compiler/src/ml_parser/tags.js","../../../packages/compiler/src/template_parser/template_preparser.js","../../../packages/compiler/src/directive_normalizer.js","../../../packages/compiler/src/directive_resolver.js","../../../packages/compiler/src/chars.js","../../../packages/compiler/src/expression_parser/lexer.js","../../../packages/compiler/src/expression_parser/ast.js","../../../packages/compiler/src/expression_parser/parser.js","../../../packages/compiler/src/parse_util.js","../../../packages/compiler/src/ml_parser/lexer.js","../../../packages/compiler/src/ml_parser/parser.js","../../../packages/compiler/src/i18n/digest.js","../../../packages/compiler/src/i18n/i18n_ast.js","../../../packages/compiler/src/ml_parser/html_tags.js","../../../packages/compiler/src/i18n/serializers/placeholder.js","../../../packages/compiler/src/i18n/i18n_parser.js","../../../packages/compiler/src/i18n/parse_util.js","../../../packages/compiler/src/i18n/extractor_merger.js","../../../packages/compiler/src/ml_parser/xml_tags.js","../../../packages/compiler/src/ml_parser/xml_parser.js","../../../packages/compiler/src/i18n/serializers/serializer.js","../../../packages/compiler/src/i18n/serializers/xml_helper.js","../../../packages/compiler/src/i18n/serializers/xliff.js","../../../packages/compiler/src/i18n/serializers/xliff2.js","../../../packages/compiler/src/i18n/serializers/xmb.js","../../../packages/compiler/src/i18n/serializers/xtb.js","../../../packages/compiler/src/ml_parser/html_parser.js","../../../packages/compiler/src/i18n/translation_bundle.js","../../../packages/compiler/src/i18n/i18n_html_parser.js","../../../packages/compiler/src/aot/util.js","../../../packages/compiler/src/identifiers.js","../../../packages/compiler/src/lifecycle_reflector.js","../../../packages/compiler/src/selector.js","../../../packages/compiler/src/metadata_resolver.js","../../../packages/compiler/src/output/output_ast.js","../../../packages/compiler/src/provider_analyzer.js","../../../packages/compiler/src/output/value_util.js","../../../packages/compiler/src/view_compiler/provider_compiler.js","../../../packages/compiler/src/ng_module_compiler.js","../../../packages/compiler/src/ng_module_resolver.js","../../../packages/compiler/src/output/source_map.js","../../../packages/compiler/src/output/abstract_emitter.js","../../../packages/compiler/src/output/ts_emitter.js","../../../packages/compiler/src/pipe_resolver.js","../../../packages/compiler/src/schema/dom_security_schema.js","../../../packages/compiler/src/schema/element_schema_registry.js","../../../packages/compiler/src/schema/dom_element_schema_registry.js","../../../packages/compiler/src/shadow_css.js","../../../packages/compiler/src/style_compiler.js","../../../packages/compiler/src/ml_parser/html_whitespaces.js","../../../packages/compiler/src/ml_parser/icu_ast_expander.js","../../../packages/compiler/src/template_parser/binding_parser.js","../../../packages/compiler/src/template_parser/template_parser.js","../../../packages/compiler/src/compiler_util/expression_converter.js","../../../packages/compiler/src/view_compiler/type_check_compiler.js","../../../packages/compiler/src/view_compiler/view_compiler.js","../../../packages/compiler/src/i18n/message_bundle.js","../../../packages/compiler/src/aot/generated_file.js","../../../packages/compiler/src/aot/lazy_routes.js","../../../packages/compiler/src/aot/static_symbol_resolver.js","../../../packages/compiler/src/aot/summary_serializer.js","../../../packages/compiler/src/aot/compiler.js","../../../packages/compiler/src/aot/formatted_error.js","../../../packages/compiler/src/aot/static_reflector.js","../../../packages/compiler/src/aot/summary_resolver.js","../../../packages/compiler/src/aot/compiler_factory.js","../../../packages/compiler/src/summary_resolver.js","../../../packages/compiler/src/output/output_interpreter.js","../../../packages/compiler/src/output/abstract_js_emitter.js","../../../packages/compiler/src/output/output_jit.js","../../../packages/compiler/src/jit/compiler.js","../../../packages/compiler/src/compile_reflector.js","../../../packages/compiler/src/url_resolver.js","../../../packages/compiler/src/resource_loader.js","../../../packages/compiler/src/i18n/extractor.js","../../../packages/compiler/src/i18n/index.js","../../../packages/compiler/src/compiler.js","../../../packages/compiler/public_api.js","../../../packages/compiler/compiler.js"],"sourcesContent":["/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Attention:\n// This file duplicates types and values from @angular/core\n// so that we are able to make @angular/compiler independent of @angular/core.\n// This is important to prevent a build cycle, as @angular/core needs to\n// be compiled with the compiler.\n/**\n * @record\n */\nexport function Inject() { }\nfunction Inject_tsickle_Closure_declarations() {\n /** @type {?} */\n Inject.prototype.token;\n}\nexport const /** @type {?} */ createInject = makeMetadataFactory('Inject', (token) => ({ token }));\nexport const /** @type {?} */ createInjectionToken = makeMetadataFactory('InjectionToken', (desc) => ({ _desc: desc }));\n/**\n * @record\n */\nexport function Attribute() { }\nfunction Attribute_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n Attribute.prototype.attributeName;\n}\nexport const /** @type {?} */ createAttribute = makeMetadataFactory('Attribute', (attributeName) => ({ attributeName }));\n/**\n * @record\n */\nexport function Query() { }\nfunction Query_tsickle_Closure_declarations() {\n /** @type {?} */\n Query.prototype.descendants;\n /** @type {?} */\n Query.prototype.first;\n /** @type {?} */\n Query.prototype.read;\n /** @type {?} */\n Query.prototype.isViewQuery;\n /** @type {?} */\n Query.prototype.selector;\n}\nexport const /** @type {?} */ createContentChildren = makeMetadataFactory('ContentChildren', (selector, data = {}) => (Object.assign({ selector, first: false, isViewQuery: false, descendants: false }, data)));\nexport const /** @type {?} */ createContentChild = makeMetadataFactory('ContentChild', (selector, data = {}) => (Object.assign({ selector, first: true, isViewQuery: false, descendants: true }, data)));\nexport const /** @type {?} */ createViewChildren = makeMetadataFactory('ViewChildren', (selector, data = {}) => (Object.assign({ selector, first: false, isViewQuery: true, descendants: true }, data)));\nexport const /** @type {?} */ createViewChild = makeMetadataFactory('ViewChild', (selector, data) => (Object.assign({ selector, first: true, isViewQuery: true, descendants: true }, data)));\n/**\n * @record\n */\nexport function Directive() { }\nfunction Directive_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n Directive.prototype.selector;\n /** @type {?|undefined} */\n Directive.prototype.inputs;\n /** @type {?|undefined} */\n Directive.prototype.outputs;\n /** @type {?|undefined} */\n Directive.prototype.host;\n /** @type {?|undefined} */\n Directive.prototype.providers;\n /** @type {?|undefined} */\n Directive.prototype.exportAs;\n /** @type {?|undefined} */\n Directive.prototype.queries;\n /** @type {?|undefined} */\n Directive.prototype.guards;\n}\nexport const /** @type {?} */ createDirective = makeMetadataFactory('Directive', (dir = {}) => dir);\n/**\n * @record\n */\nexport function Component() { }\nfunction Component_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n Component.prototype.changeDetection;\n /** @type {?|undefined} */\n Component.prototype.viewProviders;\n /** @type {?|undefined} */\n Component.prototype.moduleId;\n /** @type {?|undefined} */\n Component.prototype.templateUrl;\n /** @type {?|undefined} */\n Component.prototype.template;\n /** @type {?|undefined} */\n Component.prototype.styleUrls;\n /** @type {?|undefined} */\n Component.prototype.styles;\n /** @type {?|undefined} */\n Component.prototype.animations;\n /** @type {?|undefined} */\n Component.prototype.encapsulation;\n /** @type {?|undefined} */\n Component.prototype.interpolation;\n /** @type {?|undefined} */\n Component.prototype.entryComponents;\n /** @type {?|undefined} */\n Component.prototype.preserveWhitespaces;\n}\n/** @enum {number} */\nconst ViewEncapsulation = {\n Emulated: 0,\n Native: 1,\n None: 2,\n};\nexport { ViewEncapsulation };\nViewEncapsulation[ViewEncapsulation.Emulated] = \"Emulated\";\nViewEncapsulation[ViewEncapsulation.Native] = \"Native\";\nViewEncapsulation[ViewEncapsulation.None] = \"None\";\n/** @enum {number} */\nconst ChangeDetectionStrategy = {\n OnPush: 0,\n Default: 1,\n};\nexport { ChangeDetectionStrategy };\nChangeDetectionStrategy[ChangeDetectionStrategy.OnPush] = \"OnPush\";\nChangeDetectionStrategy[ChangeDetectionStrategy.Default] = \"Default\";\nexport const /** @type {?} */ createComponent = makeMetadataFactory('Component', (c = {}) => (Object.assign({ changeDetection: ChangeDetectionStrategy.Default }, c)));\n/**\n * @record\n */\nexport function Pipe() { }\nfunction Pipe_tsickle_Closure_declarations() {\n /** @type {?} */\n Pipe.prototype.name;\n /** @type {?|undefined} */\n Pipe.prototype.pure;\n}\nexport const /** @type {?} */ createPipe = makeMetadataFactory('Pipe', (p) => (Object.assign({ pure: true }, p)));\n/**\n * @record\n */\nexport function Input() { }\nfunction Input_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n Input.prototype.bindingPropertyName;\n}\nexport const /** @type {?} */ createInput = makeMetadataFactory('Input', (bindingPropertyName) => ({ bindingPropertyName }));\n/**\n * @record\n */\nexport function Output() { }\nfunction Output_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n Output.prototype.bindingPropertyName;\n}\nexport const /** @type {?} */ createOutput = makeMetadataFactory('Output', (bindingPropertyName) => ({ bindingPropertyName }));\n/**\n * @record\n */\nexport function HostBinding() { }\nfunction HostBinding_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n HostBinding.prototype.hostPropertyName;\n}\nexport const /** @type {?} */ createHostBinding = makeMetadataFactory('HostBinding', (hostPropertyName) => ({ hostPropertyName }));\n/**\n * @record\n */\nexport function HostListener() { }\nfunction HostListener_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n HostListener.prototype.eventName;\n /** @type {?|undefined} */\n HostListener.prototype.args;\n}\nexport const /** @type {?} */ createHostListener = makeMetadataFactory('HostListener', (eventName, args) => ({ eventName, args }));\n/**\n * @record\n */\nexport function NgModule() { }\nfunction NgModule_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n NgModule.prototype.providers;\n /** @type {?|undefined} */\n NgModule.prototype.declarations;\n /** @type {?|undefined} */\n NgModule.prototype.imports;\n /** @type {?|undefined} */\n NgModule.prototype.exports;\n /** @type {?|undefined} */\n NgModule.prototype.entryComponents;\n /** @type {?|undefined} */\n NgModule.prototype.bootstrap;\n /** @type {?|undefined} */\n NgModule.prototype.schemas;\n /** @type {?|undefined} */\n NgModule.prototype.id;\n}\nexport const /** @type {?} */ createNgModule = makeMetadataFactory('NgModule', (ngModule) => ngModule);\n/**\n * @record\n */\nexport function ModuleWithProviders() { }\nfunction ModuleWithProviders_tsickle_Closure_declarations() {\n /** @type {?} */\n ModuleWithProviders.prototype.ngModule;\n /** @type {?|undefined} */\n ModuleWithProviders.prototype.providers;\n}\n/**\n * @record\n */\nexport function SchemaMetadata() { }\nfunction SchemaMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n SchemaMetadata.prototype.name;\n}\nexport const /** @type {?} */ CUSTOM_ELEMENTS_SCHEMA = {\n name: 'custom-elements'\n};\nexport const /** @type {?} */ NO_ERRORS_SCHEMA = {\n name: 'no-errors-schema'\n};\nexport const /** @type {?} */ createOptional = makeMetadataFactory('Optional');\nexport const /** @type {?} */ createInjectable = makeMetadataFactory('Injectable');\nexport const /** @type {?} */ createSelf = makeMetadataFactory('Self');\nexport const /** @type {?} */ createSkipSelf = makeMetadataFactory('SkipSelf');\nexport const /** @type {?} */ createHost = makeMetadataFactory('Host');\nexport const /** @type {?} */ Type = Function;\n/** @enum {number} */\nconst SecurityContext = {\n NONE: 0,\n HTML: 1,\n STYLE: 2,\n SCRIPT: 3,\n URL: 4,\n RESOURCE_URL: 5,\n};\nexport { SecurityContext };\nSecurityContext[SecurityContext.NONE] = \"NONE\";\nSecurityContext[SecurityContext.HTML] = \"HTML\";\nSecurityContext[SecurityContext.STYLE] = \"STYLE\";\nSecurityContext[SecurityContext.SCRIPT] = \"SCRIPT\";\nSecurityContext[SecurityContext.URL] = \"URL\";\nSecurityContext[SecurityContext.RESOURCE_URL] = \"RESOURCE_URL\";\n/** @enum {number} */\nconst NodeFlags = {\n None: 0,\n TypeElement: 1,\n TypeText: 2,\n ProjectedTemplate: 4,\n CatRenderNode: 3,\n TypeNgContent: 8,\n TypePipe: 16,\n TypePureArray: 32,\n TypePureObject: 64,\n TypePurePipe: 128,\n CatPureExpression: 224,\n TypeValueProvider: 256,\n TypeClassProvider: 512,\n TypeFactoryProvider: 1024,\n TypeUseExistingProvider: 2048,\n LazyProvider: 4096,\n PrivateProvider: 8192,\n TypeDirective: 16384,\n Component: 32768,\n CatProviderNoDirective: 3840,\n CatProvider: 20224,\n OnInit: 65536,\n OnDestroy: 131072,\n DoCheck: 262144,\n OnChanges: 524288,\n AfterContentInit: 1048576,\n AfterContentChecked: 2097152,\n AfterViewInit: 4194304,\n AfterViewChecked: 8388608,\n EmbeddedViews: 16777216,\n ComponentView: 33554432,\n TypeContentQuery: 67108864,\n TypeViewQuery: 134217728,\n StaticQuery: 268435456,\n DynamicQuery: 536870912,\n CatQuery: 201326592,\n // mutually exclusive values...\n Types: 201347067,\n};\nexport { NodeFlags };\n/** @enum {number} */\nconst DepFlags = {\n None: 0,\n SkipSelf: 1,\n Optional: 2,\n Value: 8,\n};\nexport { DepFlags };\n/** @enum {number} */\nconst ArgumentType = { Inline: 0, Dynamic: 1, };\nexport { ArgumentType };\n/** @enum {number} */\nconst BindingFlags = {\n TypeElementAttribute: 1,\n TypeElementClass: 2,\n TypeElementStyle: 4,\n TypeProperty: 8,\n SyntheticProperty: 16,\n SyntheticHostProperty: 32,\n CatSyntheticProperty: 48,\n // mutually exclusive values...\n Types: 15,\n};\nexport { BindingFlags };\n/** @enum {number} */\nconst QueryBindingType = { First: 0, All: 1, };\nexport { QueryBindingType };\n/** @enum {number} */\nconst QueryValueType = {\n ElementRef: 0,\n RenderElement: 1,\n TemplateRef: 2,\n ViewContainerRef: 3,\n Provider: 4,\n};\nexport { QueryValueType };\n/** @enum {number} */\nconst ViewFlags = {\n None: 0,\n OnPush: 2,\n};\nexport { ViewFlags };\n/** @enum {number} */\nconst MissingTranslationStrategy = {\n Error: 0,\n Warning: 1,\n Ignore: 2,\n};\nexport { MissingTranslationStrategy };\nMissingTranslationStrategy[MissingTranslationStrategy.Error] = \"Error\";\nMissingTranslationStrategy[MissingTranslationStrategy.Warning] = \"Warning\";\nMissingTranslationStrategy[MissingTranslationStrategy.Ignore] = \"Ignore\";\n/**\n * @record\n */\nexport function MetadataFactory() { }\nfunction MetadataFactory_tsickle_Closure_declarations() {\n /* TODO: handle strange member:\n (...args: any[]): T;\n */\n /** @type {?} */\n MetadataFactory.prototype.isTypeOf;\n /** @type {?} */\n MetadataFactory.prototype.ngMetadataName;\n}\n/**\n * @template T\n * @param {?} name\n * @param {?=} props\n * @return {?}\n */\nfunction makeMetadataFactory(name, props) {\n const /** @type {?} */ factory = (...args) => {\n const /** @type {?} */ values = props ? props(...args) : {};\n return Object.assign({ ngMetadataName: name }, values);\n };\n factory.isTypeOf = (obj) => obj && obj.ngMetadataName === name;\n factory.ngMetadataName = name;\n return factory;\n}\n/**\n * @record\n */\nexport function Route() { }\nfunction Route_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n Route.prototype.children;\n /** @type {?|undefined} */\n Route.prototype.loadChildren;\n}\n//# sourceMappingURL=core.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst /** @type {?} */ DASH_CASE_REGEXP = /-+([a-z0-9])/g;\n/**\n * @param {?} input\n * @return {?}\n */\nexport function dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\n/**\n * @param {?} input\n * @param {?} defaultValues\n * @return {?}\n */\nexport function splitAtColon(input, defaultValues) {\n return _splitAt(input, ':', defaultValues);\n}\n/**\n * @param {?} input\n * @param {?} defaultValues\n * @return {?}\n */\nexport function splitAtPeriod(input, defaultValues) {\n return _splitAt(input, '.', defaultValues);\n}\n/**\n * @param {?} input\n * @param {?} character\n * @param {?} defaultValues\n * @return {?}\n */\nfunction _splitAt(input, character, defaultValues) {\n const /** @type {?} */ characterIndex = input.indexOf(character);\n if (characterIndex == -1)\n return defaultValues;\n return [input.slice(0, characterIndex).trim(), input.slice(characterIndex + 1).trim()];\n}\n/**\n * @param {?} value\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\nexport function visitValue(value, visitor, context) {\n if (Array.isArray(value)) {\n return visitor.visitArray(/** @type {?} */ (value), context);\n }\n if (isStrictStringMap(value)) {\n return visitor.visitStringMap(/** @type {?} */ (value), context);\n }\n if (value == null || typeof value == 'string' || typeof value == 'number' ||\n typeof value == 'boolean') {\n return visitor.visitPrimitive(value, context);\n }\n return visitor.visitOther(value, context);\n}\n/**\n * @param {?} val\n * @return {?}\n */\nexport function isDefined(val) {\n return val !== null && val !== undefined;\n}\n/**\n * @template T\n * @param {?} val\n * @return {?}\n */\nexport function noUndefined(val) {\n return val === undefined ? /** @type {?} */ ((null)) : val;\n}\n/**\n * @record\n */\nexport function ValueVisitor() { }\nfunction ValueVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n ValueVisitor.prototype.visitArray;\n /** @type {?} */\n ValueVisitor.prototype.visitStringMap;\n /** @type {?} */\n ValueVisitor.prototype.visitPrimitive;\n /** @type {?} */\n ValueVisitor.prototype.visitOther;\n}\nexport class ValueTransformer {\n /**\n * @param {?} arr\n * @param {?} context\n * @return {?}\n */\n visitArray(arr, context) {\n return arr.map(value => visitValue(value, this, context));\n }\n /**\n * @param {?} map\n * @param {?} context\n * @return {?}\n */\n visitStringMap(map, context) {\n const /** @type {?} */ result = {};\n Object.keys(map).forEach(key => { result[key] = visitValue(map[key], this, context); });\n return result;\n }\n /**\n * @param {?} value\n * @param {?} context\n * @return {?}\n */\n visitPrimitive(value, context) { return value; }\n /**\n * @param {?} value\n * @param {?} context\n * @return {?}\n */\n visitOther(value, context) { return value; }\n}\nexport const /** @type {?} */ SyncAsync = {\n assertSync: (value) => {\n if (isPromise(value)) {\n throw new Error(`Illegal state: value cannot be a promise`);\n }\n return value;\n },\n then: (value, cb) => { return isPromise(value) ? value.then(cb) : cb(value); },\n all: (syncAsyncValues) => {\n return syncAsyncValues.some(isPromise) ? Promise.all(syncAsyncValues) : /** @type {?} */ (syncAsyncValues);\n }\n};\n/**\n * @param {?} msg\n * @param {?=} parseErrors\n * @return {?}\n */\nexport function syntaxError(msg, parseErrors) {\n const /** @type {?} */ error = Error(msg);\n (/** @type {?} */ (error))[ERROR_SYNTAX_ERROR] = true;\n if (parseErrors)\n (/** @type {?} */ (error))[ERROR_PARSE_ERRORS] = parseErrors;\n return error;\n}\nconst /** @type {?} */ ERROR_SYNTAX_ERROR = 'ngSyntaxError';\nconst /** @type {?} */ ERROR_PARSE_ERRORS = 'ngParseErrors';\n/**\n * @param {?} error\n * @return {?}\n */\nexport function isSyntaxError(error) {\n return (/** @type {?} */ (error))[ERROR_SYNTAX_ERROR];\n}\n/**\n * @param {?} error\n * @return {?}\n */\nexport function getParseErrors(error) {\n return (/** @type {?} */ (error))[ERROR_PARSE_ERRORS] || [];\n}\n/**\n * @param {?} s\n * @return {?}\n */\nexport function escapeRegExp(s) {\n return s.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n}\nconst /** @type {?} */ STRING_MAP_PROTO = Object.getPrototypeOf({});\n/**\n * @param {?} obj\n * @return {?}\n */\nfunction isStrictStringMap(obj) {\n return typeof obj === 'object' && obj !== null && Object.getPrototypeOf(obj) === STRING_MAP_PROTO;\n}\n/**\n * @param {?} str\n * @return {?}\n */\nexport function utf8Encode(str) {\n let /** @type {?} */ encoded = '';\n for (let /** @type {?} */ index = 0; index < str.length; index++) {\n let /** @type {?} */ codePoint = str.charCodeAt(index);\n // decode surrogate\n // see https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n if (codePoint >= 0xd800 && codePoint <= 0xdbff && str.length > (index + 1)) {\n const /** @type {?} */ low = str.charCodeAt(index + 1);\n if (low >= 0xdc00 && low <= 0xdfff) {\n index++;\n codePoint = ((codePoint - 0xd800) << 10) + low - 0xdc00 + 0x10000;\n }\n }\n if (codePoint <= 0x7f) {\n encoded += String.fromCharCode(codePoint);\n }\n else if (codePoint <= 0x7ff) {\n encoded += String.fromCharCode(((codePoint >> 6) & 0x1F) | 0xc0, (codePoint & 0x3f) | 0x80);\n }\n else if (codePoint <= 0xffff) {\n encoded += String.fromCharCode((codePoint >> 12) | 0xe0, ((codePoint >> 6) & 0x3f) | 0x80, (codePoint & 0x3f) | 0x80);\n }\n else if (codePoint <= 0x1fffff) {\n encoded += String.fromCharCode(((codePoint >> 18) & 0x07) | 0xf0, ((codePoint >> 12) & 0x3f) | 0x80, ((codePoint >> 6) & 0x3f) | 0x80, (codePoint & 0x3f) | 0x80);\n }\n }\n return encoded;\n}\n/**\n * @record\n */\nexport function OutputContext() { }\nfunction OutputContext_tsickle_Closure_declarations() {\n /** @type {?} */\n OutputContext.prototype.genFilePath;\n /** @type {?} */\n OutputContext.prototype.statements;\n /** @type {?} */\n OutputContext.prototype.importExpr;\n}\n/**\n * @param {?} token\n * @return {?}\n */\nexport function stringify(token) {\n if (typeof token === 'string') {\n return token;\n }\n if (token instanceof Array) {\n return '[' + token.map(stringify).join(', ') + ']';\n }\n if (token == null) {\n return '' + token;\n }\n if (token.overriddenName) {\n return `${token.overriddenName}`;\n }\n if (token.name) {\n return `${token.name}`;\n }\n const /** @type {?} */ res = token.toString();\n if (res == null) {\n return '' + res;\n }\n const /** @type {?} */ newLineIndex = res.indexOf('\\n');\n return newLineIndex === -1 ? res : res.substring(0, newLineIndex);\n}\n/**\n * Lazily retrieves the reference value from a forwardRef.\n * @param {?} type\n * @return {?}\n */\nexport function resolveForwardRef(type) {\n if (typeof type === 'function' && type.hasOwnProperty('__forward_ref__')) {\n return type();\n }\n else {\n return type;\n }\n}\n/**\n * Determine if the argument is shaped like a Promise\n * @param {?} obj\n * @return {?}\n */\nexport function isPromise(obj) {\n // allow any Promise/A+ compliant thenable.\n // It's up to the caller to ensure that obj.then conforms to the spec\n return !!obj && typeof obj.then === 'function';\n}\nexport class Version {\n /**\n * @param {?} full\n */\n constructor(full) {\n this.full = full;\n const /** @type {?} */ splits = full.split('.');\n this.major = splits[0];\n this.minor = splits[1];\n this.patch = splits.slice(2).join('.');\n }\n}\nfunction Version_tsickle_Closure_declarations() {\n /** @type {?} */\n Version.prototype.major;\n /** @type {?} */\n Version.prototype.minor;\n /** @type {?} */\n Version.prototype.patch;\n /** @type {?} */\n Version.prototype.full;\n}\n/**\n * @record\n */\nexport function Console() { }\nfunction Console_tsickle_Closure_declarations() {\n /** @type {?} */\n Console.prototype.log;\n /** @type {?} */\n Console.prototype.warn;\n}\n//# sourceMappingURL=util.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Version } from './util';\n/**\n * \\@stable\n */\nexport const /** @type {?} */ VERSION = new Version('5.2.0');\n//# sourceMappingURL=version.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An Abstract Syntax Tree node representing part of a parsed Angular template.\n * @record\n */\nexport function TemplateAst() { }\nfunction TemplateAst_tsickle_Closure_declarations() {\n /**\n * The source span from which this node was parsed.\n * @type {?}\n */\n TemplateAst.prototype.sourceSpan;\n /**\n * Visit this node and possibly transform it.\n * @type {?}\n */\n TemplateAst.prototype.visit;\n}\n/**\n * A segment of text within the template.\n */\nexport class TextAst {\n /**\n * @param {?} value\n * @param {?} ngContentIndex\n * @param {?} sourceSpan\n */\n constructor(value, ngContentIndex, sourceSpan) {\n this.value = value;\n this.ngContentIndex = ngContentIndex;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitText(this, context); }\n}\nfunction TextAst_tsickle_Closure_declarations() {\n /** @type {?} */\n TextAst.prototype.value;\n /** @type {?} */\n TextAst.prototype.ngContentIndex;\n /** @type {?} */\n TextAst.prototype.sourceSpan;\n}\n/**\n * A bound expression within the text of a template.\n */\nexport class BoundTextAst {\n /**\n * @param {?} value\n * @param {?} ngContentIndex\n * @param {?} sourceSpan\n */\n constructor(value, ngContentIndex, sourceSpan) {\n this.value = value;\n this.ngContentIndex = ngContentIndex;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) {\n return visitor.visitBoundText(this, context);\n }\n}\nfunction BoundTextAst_tsickle_Closure_declarations() {\n /** @type {?} */\n BoundTextAst.prototype.value;\n /** @type {?} */\n BoundTextAst.prototype.ngContentIndex;\n /** @type {?} */\n BoundTextAst.prototype.sourceSpan;\n}\n/**\n * A plain attribute on an element.\n */\nexport class AttrAst {\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n */\n constructor(name, value, sourceSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitAttr(this, context); }\n}\nfunction AttrAst_tsickle_Closure_declarations() {\n /** @type {?} */\n AttrAst.prototype.name;\n /** @type {?} */\n AttrAst.prototype.value;\n /** @type {?} */\n AttrAst.prototype.sourceSpan;\n}\n/**\n * A binding for an element property (e.g. `[property]=\"expression\"`) or an animation trigger (e.g.\n * `[\\@trigger]=\"stateExp\"`)\n */\nexport class BoundElementPropertyAst {\n /**\n * @param {?} name\n * @param {?} type\n * @param {?} securityContext\n * @param {?} value\n * @param {?} unit\n * @param {?} sourceSpan\n */\n constructor(name, type, securityContext, value, unit, sourceSpan) {\n this.name = name;\n this.type = type;\n this.securityContext = securityContext;\n this.value = value;\n this.unit = unit;\n this.sourceSpan = sourceSpan;\n this.isAnimation = this.type === PropertyBindingType.Animation;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) {\n return visitor.visitElementProperty(this, context);\n }\n}\nfunction BoundElementPropertyAst_tsickle_Closure_declarations() {\n /** @type {?} */\n BoundElementPropertyAst.prototype.isAnimation;\n /** @type {?} */\n BoundElementPropertyAst.prototype.name;\n /** @type {?} */\n BoundElementPropertyAst.prototype.type;\n /** @type {?} */\n BoundElementPropertyAst.prototype.securityContext;\n /** @type {?} */\n BoundElementPropertyAst.prototype.value;\n /** @type {?} */\n BoundElementPropertyAst.prototype.unit;\n /** @type {?} */\n BoundElementPropertyAst.prototype.sourceSpan;\n}\n/**\n * A binding for an element event (e.g. `(event)=\"handler()\"`) or an animation trigger event (e.g.\n * `(\\@trigger.phase)=\"callback($event)\"`).\n */\nexport class BoundEventAst {\n /**\n * @param {?} name\n * @param {?} target\n * @param {?} phase\n * @param {?} handler\n * @param {?} sourceSpan\n */\n constructor(name, target, phase, handler, sourceSpan) {\n this.name = name;\n this.target = target;\n this.phase = phase;\n this.handler = handler;\n this.sourceSpan = sourceSpan;\n this.fullName = BoundEventAst.calcFullName(this.name, this.target, this.phase);\n this.isAnimation = !!this.phase;\n }\n /**\n * @param {?} name\n * @param {?} target\n * @param {?} phase\n * @return {?}\n */\n static calcFullName(name, target, phase) {\n if (target) {\n return `${target}:${name}`;\n }\n else if (phase) {\n return `@${name}.${phase}`;\n }\n else {\n return name;\n }\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) {\n return visitor.visitEvent(this, context);\n }\n}\nfunction BoundEventAst_tsickle_Closure_declarations() {\n /** @type {?} */\n BoundEventAst.prototype.fullName;\n /** @type {?} */\n BoundEventAst.prototype.isAnimation;\n /** @type {?} */\n BoundEventAst.prototype.name;\n /** @type {?} */\n BoundEventAst.prototype.target;\n /** @type {?} */\n BoundEventAst.prototype.phase;\n /** @type {?} */\n BoundEventAst.prototype.handler;\n /** @type {?} */\n BoundEventAst.prototype.sourceSpan;\n}\n/**\n * A reference declaration on an element (e.g. `let someName=\"expression\"`).\n */\nexport class ReferenceAst {\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n */\n constructor(name, value, sourceSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) {\n return visitor.visitReference(this, context);\n }\n}\nfunction ReferenceAst_tsickle_Closure_declarations() {\n /** @type {?} */\n ReferenceAst.prototype.name;\n /** @type {?} */\n ReferenceAst.prototype.value;\n /** @type {?} */\n ReferenceAst.prototype.sourceSpan;\n}\n/**\n * A variable declaration on a <ng-template> (e.g. `var-someName=\"someLocalName\"`).\n */\nexport class VariableAst {\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n */\n constructor(name, value, sourceSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) {\n return visitor.visitVariable(this, context);\n }\n}\nfunction VariableAst_tsickle_Closure_declarations() {\n /** @type {?} */\n VariableAst.prototype.name;\n /** @type {?} */\n VariableAst.prototype.value;\n /** @type {?} */\n VariableAst.prototype.sourceSpan;\n}\n/**\n * An element declaration in a template.\n */\nexport class ElementAst {\n /**\n * @param {?} name\n * @param {?} attrs\n * @param {?} inputs\n * @param {?} outputs\n * @param {?} references\n * @param {?} directives\n * @param {?} providers\n * @param {?} hasViewContainer\n * @param {?} queryMatches\n * @param {?} children\n * @param {?} ngContentIndex\n * @param {?} sourceSpan\n * @param {?} endSourceSpan\n */\n constructor(name, attrs, inputs, outputs, references, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan, endSourceSpan) {\n this.name = name;\n this.attrs = attrs;\n this.inputs = inputs;\n this.outputs = outputs;\n this.references = references;\n this.directives = directives;\n this.providers = providers;\n this.hasViewContainer = hasViewContainer;\n this.queryMatches = queryMatches;\n this.children = children;\n this.ngContentIndex = ngContentIndex;\n this.sourceSpan = sourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) {\n return visitor.visitElement(this, context);\n }\n}\nfunction ElementAst_tsickle_Closure_declarations() {\n /** @type {?} */\n ElementAst.prototype.name;\n /** @type {?} */\n ElementAst.prototype.attrs;\n /** @type {?} */\n ElementAst.prototype.inputs;\n /** @type {?} */\n ElementAst.prototype.outputs;\n /** @type {?} */\n ElementAst.prototype.references;\n /** @type {?} */\n ElementAst.prototype.directives;\n /** @type {?} */\n ElementAst.prototype.providers;\n /** @type {?} */\n ElementAst.prototype.hasViewContainer;\n /** @type {?} */\n ElementAst.prototype.queryMatches;\n /** @type {?} */\n ElementAst.prototype.children;\n /** @type {?} */\n ElementAst.prototype.ngContentIndex;\n /** @type {?} */\n ElementAst.prototype.sourceSpan;\n /** @type {?} */\n ElementAst.prototype.endSourceSpan;\n}\n/**\n * A `<ng-template>` element included in an Angular template.\n */\nexport class EmbeddedTemplateAst {\n /**\n * @param {?} attrs\n * @param {?} outputs\n * @param {?} references\n * @param {?} variables\n * @param {?} directives\n * @param {?} providers\n * @param {?} hasViewContainer\n * @param {?} queryMatches\n * @param {?} children\n * @param {?} ngContentIndex\n * @param {?} sourceSpan\n */\n constructor(attrs, outputs, references, variables, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan) {\n this.attrs = attrs;\n this.outputs = outputs;\n this.references = references;\n this.variables = variables;\n this.directives = directives;\n this.providers = providers;\n this.hasViewContainer = hasViewContainer;\n this.queryMatches = queryMatches;\n this.children = children;\n this.ngContentIndex = ngContentIndex;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) {\n return visitor.visitEmbeddedTemplate(this, context);\n }\n}\nfunction EmbeddedTemplateAst_tsickle_Closure_declarations() {\n /** @type {?} */\n EmbeddedTemplateAst.prototype.attrs;\n /** @type {?} */\n EmbeddedTemplateAst.prototype.outputs;\n /** @type {?} */\n EmbeddedTemplateAst.prototype.references;\n /** @type {?} */\n EmbeddedTemplateAst.prototype.variables;\n /** @type {?} */\n EmbeddedTemplateAst.prototype.directives;\n /** @type {?} */\n EmbeddedTemplateAst.prototype.providers;\n /** @type {?} */\n EmbeddedTemplateAst.prototype.hasViewContainer;\n /** @type {?} */\n EmbeddedTemplateAst.prototype.queryMatches;\n /** @type {?} */\n EmbeddedTemplateAst.prototype.children;\n /** @type {?} */\n EmbeddedTemplateAst.prototype.ngContentIndex;\n /** @type {?} */\n EmbeddedTemplateAst.prototype.sourceSpan;\n}\n/**\n * A directive property with a bound value (e.g. `*ngIf=\"condition\").\n */\nexport class BoundDirectivePropertyAst {\n /**\n * @param {?} directiveName\n * @param {?} templateName\n * @param {?} value\n * @param {?} sourceSpan\n */\n constructor(directiveName, templateName, value, sourceSpan) {\n this.directiveName = directiveName;\n this.templateName = templateName;\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) {\n return visitor.visitDirectiveProperty(this, context);\n }\n}\nfunction BoundDirectivePropertyAst_tsickle_Closure_declarations() {\n /** @type {?} */\n BoundDirectivePropertyAst.prototype.directiveName;\n /** @type {?} */\n BoundDirectivePropertyAst.prototype.templateName;\n /** @type {?} */\n BoundDirectivePropertyAst.prototype.value;\n /** @type {?} */\n BoundDirectivePropertyAst.prototype.sourceSpan;\n}\n/**\n * A directive declared on an element.\n */\nexport class DirectiveAst {\n /**\n * @param {?} directive\n * @param {?} inputs\n * @param {?} hostProperties\n * @param {?} hostEvents\n * @param {?} contentQueryStartId\n * @param {?} sourceSpan\n */\n constructor(directive, inputs, hostProperties, hostEvents, contentQueryStartId, sourceSpan) {\n this.directive = directive;\n this.inputs = inputs;\n this.hostProperties = hostProperties;\n this.hostEvents = hostEvents;\n this.contentQueryStartId = contentQueryStartId;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) {\n return visitor.visitDirective(this, context);\n }\n}\nfunction DirectiveAst_tsickle_Closure_declarations() {\n /** @type {?} */\n DirectiveAst.prototype.directive;\n /** @type {?} */\n DirectiveAst.prototype.inputs;\n /** @type {?} */\n DirectiveAst.prototype.hostProperties;\n /** @type {?} */\n DirectiveAst.prototype.hostEvents;\n /** @type {?} */\n DirectiveAst.prototype.contentQueryStartId;\n /** @type {?} */\n DirectiveAst.prototype.sourceSpan;\n}\n/**\n * A provider declared on an element\n */\nexport class ProviderAst {\n /**\n * @param {?} token\n * @param {?} multiProvider\n * @param {?} eager\n * @param {?} providers\n * @param {?} providerType\n * @param {?} lifecycleHooks\n * @param {?} sourceSpan\n */\n constructor(token, multiProvider, eager, providers, providerType, lifecycleHooks, sourceSpan) {\n this.token = token;\n this.multiProvider = multiProvider;\n this.eager = eager;\n this.providers = providers;\n this.providerType = providerType;\n this.lifecycleHooks = lifecycleHooks;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) {\n // No visit method in the visitor for now...\n return null;\n }\n}\nfunction ProviderAst_tsickle_Closure_declarations() {\n /** @type {?} */\n ProviderAst.prototype.token;\n /** @type {?} */\n ProviderAst.prototype.multiProvider;\n /** @type {?} */\n ProviderAst.prototype.eager;\n /** @type {?} */\n ProviderAst.prototype.providers;\n /** @type {?} */\n ProviderAst.prototype.providerType;\n /** @type {?} */\n ProviderAst.prototype.lifecycleHooks;\n /** @type {?} */\n ProviderAst.prototype.sourceSpan;\n}\n/** @enum {number} */\nconst ProviderAstType = {\n PublicService: 0,\n PrivateService: 1,\n Component: 2,\n Directive: 3,\n Builtin: 4,\n};\nexport { ProviderAstType };\nProviderAstType[ProviderAstType.PublicService] = \"PublicService\";\nProviderAstType[ProviderAstType.PrivateService] = \"PrivateService\";\nProviderAstType[ProviderAstType.Component] = \"Component\";\nProviderAstType[ProviderAstType.Directive] = \"Directive\";\nProviderAstType[ProviderAstType.Builtin] = \"Builtin\";\n/**\n * Position where content is to be projected (instance of `<ng-content>` in a template).\n */\nexport class NgContentAst {\n /**\n * @param {?} index\n * @param {?} ngContentIndex\n * @param {?} sourceSpan\n */\n constructor(index, ngContentIndex, sourceSpan) {\n this.index = index;\n this.ngContentIndex = ngContentIndex;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) {\n return visitor.visitNgContent(this, context);\n }\n}\nfunction NgContentAst_tsickle_Closure_declarations() {\n /** @type {?} */\n NgContentAst.prototype.index;\n /** @type {?} */\n NgContentAst.prototype.ngContentIndex;\n /** @type {?} */\n NgContentAst.prototype.sourceSpan;\n}\n/** @enum {number} */\nconst PropertyBindingType = {\n /**\n * A normal binding to a property (e.g. `[property]=\"expression\"`).\n */\n Property: 0,\n /**\n * A binding to an element attribute (e.g. `[attr.name]=\"expression\"`).\n */\n Attribute: 1,\n /**\n * A binding to a CSS class (e.g. `[class.name]=\"condition\"`).\n */\n Class: 2,\n /**\n * A binding to a style rule (e.g. `[style.rule]=\"expression\"`).\n */\n Style: 3,\n /**\n * A binding to an animation reference (e.g. `[animate.key]=\"expression\"`).\n */\n Animation: 4,\n};\nexport { PropertyBindingType };\nPropertyBindingType[PropertyBindingType.Property] = \"Property\";\nPropertyBindingType[PropertyBindingType.Attribute] = \"Attribute\";\nPropertyBindingType[PropertyBindingType.Class] = \"Class\";\nPropertyBindingType[PropertyBindingType.Style] = \"Style\";\nPropertyBindingType[PropertyBindingType.Animation] = \"Animation\";\n/**\n * @record\n */\nexport function QueryMatch() { }\nfunction QueryMatch_tsickle_Closure_declarations() {\n /** @type {?} */\n QueryMatch.prototype.queryId;\n /** @type {?} */\n QueryMatch.prototype.value;\n}\n/**\n * A visitor for {\\@link TemplateAst} trees that will process each node.\n * @record\n */\nexport function TemplateAstVisitor() { }\nfunction TemplateAstVisitor_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n TemplateAstVisitor.prototype.visit;\n /** @type {?} */\n TemplateAstVisitor.prototype.visitNgContent;\n /** @type {?} */\n TemplateAstVisitor.prototype.visitEmbeddedTemplate;\n /** @type {?} */\n TemplateAstVisitor.prototype.visitElement;\n /** @type {?} */\n TemplateAstVisitor.prototype.visitReference;\n /** @type {?} */\n TemplateAstVisitor.prototype.visitVariable;\n /** @type {?} */\n TemplateAstVisitor.prototype.visitEvent;\n /** @type {?} */\n TemplateAstVisitor.prototype.visitElementProperty;\n /** @type {?} */\n TemplateAstVisitor.prototype.visitAttr;\n /** @type {?} */\n TemplateAstVisitor.prototype.visitBoundText;\n /** @type {?} */\n TemplateAstVisitor.prototype.visitText;\n /** @type {?} */\n TemplateAstVisitor.prototype.visitDirective;\n /** @type {?} */\n TemplateAstVisitor.prototype.visitDirectiveProperty;\n}\n/**\n * A visitor that accepts each node but doesn't do anything. It is intended to be used\n * as the base class for a visitor that is only interested in a subset of the node types.\n */\nexport class NullTemplateVisitor {\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitNgContent(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitEmbeddedTemplate(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitElement(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitReference(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitVariable(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitEvent(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitElementProperty(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitAttr(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitBoundText(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitText(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitDirective(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitDirectiveProperty(ast, context) { }\n}\n/**\n * Base class that can be used to build a visitor that visits each node\n * in an template ast recursively.\n */\nexport class RecursiveTemplateAstVisitor extends NullTemplateVisitor {\n constructor() { super(); }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitEmbeddedTemplate(ast, context) {\n return this.visitChildren(context, visit => {\n visit(ast.attrs);\n visit(ast.references);\n visit(ast.variables);\n visit(ast.directives);\n visit(ast.providers);\n visit(ast.children);\n });\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitElement(ast, context) {\n return this.visitChildren(context, visit => {\n visit(ast.attrs);\n visit(ast.inputs);\n visit(ast.outputs);\n visit(ast.references);\n visit(ast.directives);\n visit(ast.providers);\n visit(ast.children);\n });\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitDirective(ast, context) {\n return this.visitChildren(context, visit => {\n visit(ast.inputs);\n visit(ast.hostProperties);\n visit(ast.hostEvents);\n });\n }\n /**\n * @template T\n * @param {?} context\n * @param {?} cb\n * @return {?}\n */\n visitChildren(context, cb) {\n let /** @type {?} */ results = [];\n let /** @type {?} */ t = this;\n /**\n * @template T\n * @param {?} children\n * @return {?}\n */\n function visit(children) {\n if (children && children.length)\n results.push(templateVisitAll(t, children, context));\n }\n cb(visit);\n return [].concat.apply([], results);\n }\n}\n/**\n * Visit every node in a list of {\\@link TemplateAst}s with the given {\\@link TemplateAstVisitor}.\n * @param {?} visitor\n * @param {?} asts\n * @param {?=} context\n * @return {?}\n */\nexport function templateVisitAll(visitor, asts, context = null) {\n const /** @type {?} */ result = [];\n const /** @type {?} */ visit = visitor.visit ?\n (ast) => /** @type {?} */ ((visitor.visit))(ast, context) || ast.visit(visitor, context) :\n (ast) => ast.visit(visitor, context);\n asts.forEach(ast => {\n const /** @type {?} */ astResult = visit(ast);\n if (astResult) {\n result.push(astResult);\n }\n });\n return result;\n}\n//# sourceMappingURL=template_ast.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ViewEncapsulation } from './core';\nimport { noUndefined } from './util';\nexport class CompilerConfig {\n /**\n * @param {?=} __0\n */\n constructor({ defaultEncapsulation = ViewEncapsulation.Emulated, useJit = true, jitDevMode = false, missingTranslation = null, enableLegacyTemplate, preserveWhitespaces, strictInjectionParameters } = {}) {\n this.defaultEncapsulation = defaultEncapsulation;\n this.useJit = !!useJit;\n this.jitDevMode = !!jitDevMode;\n this.missingTranslation = missingTranslation;\n this.enableLegacyTemplate = enableLegacyTemplate === true;\n this.preserveWhitespaces = preserveWhitespacesDefault(noUndefined(preserveWhitespaces));\n this.strictInjectionParameters = strictInjectionParameters === true;\n }\n}\nfunction CompilerConfig_tsickle_Closure_declarations() {\n /** @type {?} */\n CompilerConfig.prototype.defaultEncapsulation;\n /** @type {?} */\n CompilerConfig.prototype.enableLegacyTemplate;\n /** @type {?} */\n CompilerConfig.prototype.useJit;\n /** @type {?} */\n CompilerConfig.prototype.jitDevMode;\n /** @type {?} */\n CompilerConfig.prototype.missingTranslation;\n /** @type {?} */\n CompilerConfig.prototype.preserveWhitespaces;\n /** @type {?} */\n CompilerConfig.prototype.strictInjectionParameters;\n}\n/**\n * @param {?} preserveWhitespacesOption\n * @param {?=} defaultSetting\n * @return {?}\n */\nexport function preserveWhitespacesDefault(preserveWhitespacesOption, defaultSetting = true) {\n return preserveWhitespacesOption === null ? defaultSetting : preserveWhitespacesOption;\n}\n//# sourceMappingURL=config.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A token representing the a reference to a static type.\n *\n * This token is unique for a filePath and name and can be used as a hash table key.\n */\nexport class StaticSymbol {\n /**\n * @param {?} filePath\n * @param {?} name\n * @param {?} members\n */\n constructor(filePath, name, members) {\n this.filePath = filePath;\n this.name = name;\n this.members = members;\n }\n /**\n * @return {?}\n */\n assertNoMembers() {\n if (this.members.length) {\n throw new Error(`Illegal state: symbol without members expected, but got ${JSON.stringify(this)}.`);\n }\n }\n}\nfunction StaticSymbol_tsickle_Closure_declarations() {\n /** @type {?} */\n StaticSymbol.prototype.filePath;\n /** @type {?} */\n StaticSymbol.prototype.name;\n /** @type {?} */\n StaticSymbol.prototype.members;\n}\n/**\n * A cache of static symbol used by the StaticReflector to return the same symbol for the\n * same symbol values.\n */\nexport class StaticSymbolCache {\n constructor() {\n this.cache = new Map();\n }\n /**\n * @param {?} declarationFile\n * @param {?} name\n * @param {?=} members\n * @return {?}\n */\n get(declarationFile, name, members) {\n members = members || [];\n const /** @type {?} */ memberSuffix = members.length ? `.${members.join('.')}` : '';\n const /** @type {?} */ key = `\"${declarationFile}\".${name}${memberSuffix}`;\n let /** @type {?} */ result = this.cache.get(key);\n if (!result) {\n result = new StaticSymbol(declarationFile, name, members);\n this.cache.set(key, result);\n }\n return result;\n }\n}\nfunction StaticSymbolCache_tsickle_Closure_declarations() {\n /** @type {?} */\n StaticSymbolCache.prototype.cache;\n}\n//# sourceMappingURL=static_symbol.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { StaticSymbol } from './aot/static_symbol';\nimport { splitAtColon, stringify } from './util';\n// group 0: \"[prop] or (event) or @trigger\"\n// group 1: \"prop\" from \"[prop]\"\n// group 2: \"event\" from \"(event)\"\n// group 3: \"@trigger\" from \"@trigger\"\nconst /** @type {?} */ HOST_REG_EXP = /^(?:(?:\\[([^\\]]+)\\])|(?:\\(([^\\)]+)\\)))|(\\@[-\\w]+)$/;\n/**\n * @param {?} name\n * @return {?}\n */\nfunction _sanitizeIdentifier(name) {\n return name.replace(/\\W/g, '_');\n}\nlet /** @type {?} */ _anonymousTypeIndex = 0;\n/**\n * @param {?} compileIdentifier\n * @return {?}\n */\nexport function identifierName(compileIdentifier) {\n if (!compileIdentifier || !compileIdentifier.reference) {\n return null;\n }\n const /** @type {?} */ ref = compileIdentifier.reference;\n if (ref instanceof StaticSymbol) {\n return ref.name;\n }\n if (ref['__anonymousType']) {\n return ref['__anonymousType'];\n }\n let /** @type {?} */ identifier = stringify(ref);\n if (identifier.indexOf('(') >= 0) {\n // case: anonymous functions!\n identifier = `anonymous_${_anonymousTypeIndex++}`;\n ref['__anonymousType'] = identifier;\n }\n else {\n identifier = _sanitizeIdentifier(identifier);\n }\n return identifier;\n}\n/**\n * @param {?} compileIdentifier\n * @return {?}\n */\nexport function identifierModuleUrl(compileIdentifier) {\n const /** @type {?} */ ref = compileIdentifier.reference;\n if (ref instanceof StaticSymbol) {\n return ref.filePath;\n }\n // Runtime type\n return `./${stringify(ref)}`;\n}\n/**\n * @param {?} compType\n * @param {?} embeddedTemplateIndex\n * @return {?}\n */\nexport function viewClassName(compType, embeddedTemplateIndex) {\n return `View_${identifierName({ reference: compType })}_${embeddedTemplateIndex}`;\n}\n/**\n * @param {?} compType\n * @return {?}\n */\nexport function rendererTypeName(compType) {\n return `RenderType_${identifierName({ reference: compType })}`;\n}\n/**\n * @param {?} compType\n * @return {?}\n */\nexport function hostViewClassName(compType) {\n return `HostView_${identifierName({ reference: compType })}`;\n}\n/**\n * @param {?} compType\n * @return {?}\n */\nexport function componentFactoryName(compType) {\n return `${identifierName({ reference: compType })}NgFactory`;\n}\n/**\n * @record\n */\nexport function ProxyClass() { }\nfunction ProxyClass_tsickle_Closure_declarations() {\n /** @type {?} */\n ProxyClass.prototype.setDelegate;\n}\n/**\n * @record\n */\nexport function CompileIdentifierMetadata() { }\nfunction CompileIdentifierMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileIdentifierMetadata.prototype.reference;\n}\n/** @enum {number} */\nconst CompileSummaryKind = {\n Pipe: 0,\n Directive: 1,\n NgModule: 2,\n Injectable: 3,\n};\nexport { CompileSummaryKind };\nCompileSummaryKind[CompileSummaryKind.Pipe] = \"Pipe\";\nCompileSummaryKind[CompileSummaryKind.Directive] = \"Directive\";\nCompileSummaryKind[CompileSummaryKind.NgModule] = \"NgModule\";\nCompileSummaryKind[CompileSummaryKind.Injectable] = \"Injectable\";\n/**\n * A CompileSummary is the data needed to use a directive / pipe / module\n * in other modules / components. However, this data is not enough to compile\n * the directive / module itself.\n * @record\n */\nexport function CompileTypeSummary() { }\nfunction CompileTypeSummary_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileTypeSummary.prototype.summaryKind;\n /** @type {?} */\n CompileTypeSummary.prototype.type;\n}\n/**\n * @record\n */\nexport function CompileDiDependencyMetadata() { }\nfunction CompileDiDependencyMetadata_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n CompileDiDependencyMetadata.prototype.isAttribute;\n /** @type {?|undefined} */\n CompileDiDependencyMetadata.prototype.isSelf;\n /** @type {?|undefined} */\n CompileDiDependencyMetadata.prototype.isHost;\n /** @type {?|undefined} */\n CompileDiDependencyMetadata.prototype.isSkipSelf;\n /** @type {?|undefined} */\n CompileDiDependencyMetadata.prototype.isOptional;\n /** @type {?|undefined} */\n CompileDiDependencyMetadata.prototype.isValue;\n /** @type {?|undefined} */\n CompileDiDependencyMetadata.prototype.token;\n /** @type {?|undefined} */\n CompileDiDependencyMetadata.prototype.value;\n}\n/**\n * @record\n */\nexport function CompileProviderMetadata() { }\nfunction CompileProviderMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileProviderMetadata.prototype.token;\n /** @type {?|undefined} */\n CompileProviderMetadata.prototype.useClass;\n /** @type {?|undefined} */\n CompileProviderMetadata.prototype.useValue;\n /** @type {?|undefined} */\n CompileProviderMetadata.prototype.useExisting;\n /** @type {?|undefined} */\n CompileProviderMetadata.prototype.useFactory;\n /** @type {?|undefined} */\n CompileProviderMetadata.prototype.deps;\n /** @type {?|undefined} */\n CompileProviderMetadata.prototype.multi;\n}\n/**\n * @record\n */\nexport function CompileFactoryMetadata() { }\nfunction CompileFactoryMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileFactoryMetadata.prototype.diDeps;\n /** @type {?} */\n CompileFactoryMetadata.prototype.reference;\n}\n/**\n * @param {?} token\n * @return {?}\n */\nexport function tokenName(token) {\n return token.value != null ? _sanitizeIdentifier(token.value) : identifierName(token.identifier);\n}\n/**\n * @param {?} token\n * @return {?}\n */\nexport function tokenReference(token) {\n if (token.identifier != null) {\n return token.identifier.reference;\n }\n else {\n return token.value;\n }\n}\n/**\n * @record\n */\nexport function CompileTokenMetadata() { }\nfunction CompileTokenMetadata_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n CompileTokenMetadata.prototype.value;\n /** @type {?|undefined} */\n CompileTokenMetadata.prototype.identifier;\n}\n/**\n * Metadata regarding compilation of a type.\n * @record\n */\nexport function CompileTypeMetadata() { }\nfunction CompileTypeMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileTypeMetadata.prototype.diDeps;\n /** @type {?} */\n CompileTypeMetadata.prototype.lifecycleHooks;\n /** @type {?} */\n CompileTypeMetadata.prototype.reference;\n}\n/**\n * @record\n */\nexport function CompileQueryMetadata() { }\nfunction CompileQueryMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileQueryMetadata.prototype.selectors;\n /** @type {?} */\n CompileQueryMetadata.prototype.descendants;\n /** @type {?} */\n CompileQueryMetadata.prototype.first;\n /** @type {?} */\n CompileQueryMetadata.prototype.propertyName;\n /** @type {?} */\n CompileQueryMetadata.prototype.read;\n}\n/**\n * Metadata about a stylesheet\n */\nexport class CompileStylesheetMetadata {\n /**\n * @param {?=} __0\n */\n constructor({ moduleUrl, styles, styleUrls } = {}) {\n this.moduleUrl = moduleUrl || null;\n this.styles = _normalizeArray(styles);\n this.styleUrls = _normalizeArray(styleUrls);\n }\n}\nfunction CompileStylesheetMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileStylesheetMetadata.prototype.moduleUrl;\n /** @type {?} */\n CompileStylesheetMetadata.prototype.styles;\n /** @type {?} */\n CompileStylesheetMetadata.prototype.styleUrls;\n}\n/**\n * Summary Metadata regarding compilation of a template.\n * @record\n */\nexport function CompileTemplateSummary() { }\nfunction CompileTemplateSummary_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileTemplateSummary.prototype.ngContentSelectors;\n /** @type {?} */\n CompileTemplateSummary.prototype.encapsulation;\n}\n/**\n * Metadata regarding compilation of a template.\n */\nexport class CompileTemplateMetadata {\n /**\n * @param {?} __0\n */\n constructor({ encapsulation, template, templateUrl, htmlAst, styles, styleUrls, externalStylesheets, animations, ngContentSelectors, interpolation, isInline, preserveWhitespaces }) {\n this.encapsulation = encapsulation;\n this.template = template;\n this.templateUrl = templateUrl;\n this.htmlAst = htmlAst;\n this.styles = _normalizeArray(styles);\n this.styleUrls = _normalizeArray(styleUrls);\n this.externalStylesheets = _normalizeArray(externalStylesheets);\n this.animations = animations ? flatten(animations) : [];\n this.ngContentSelectors = ngContentSelectors || [];\n if (interpolation && interpolation.length != 2) {\n throw new Error(`'interpolation' should have a start and an end symbol.`);\n }\n this.interpolation = interpolation;\n this.isInline = isInline;\n this.preserveWhitespaces = preserveWhitespaces;\n }\n /**\n * @return {?}\n */\n toSummary() {\n return {\n ngContentSelectors: this.ngContentSelectors,\n encapsulation: this.encapsulation,\n };\n }\n}\nfunction CompileTemplateMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileTemplateMetadata.prototype.encapsulation;\n /** @type {?} */\n CompileTemplateMetadata.prototype.template;\n /** @type {?} */\n CompileTemplateMetadata.prototype.templateUrl;\n /** @type {?} */\n CompileTemplateMetadata.prototype.htmlAst;\n /** @type {?} */\n CompileTemplateMetadata.prototype.isInline;\n /** @type {?} */\n CompileTemplateMetadata.prototype.styles;\n /** @type {?} */\n CompileTemplateMetadata.prototype.styleUrls;\n /** @type {?} */\n CompileTemplateMetadata.prototype.externalStylesheets;\n /** @type {?} */\n CompileTemplateMetadata.prototype.animations;\n /** @type {?} */\n CompileTemplateMetadata.prototype.ngContentSelectors;\n /** @type {?} */\n CompileTemplateMetadata.prototype.interpolation;\n /** @type {?} */\n CompileTemplateMetadata.prototype.preserveWhitespaces;\n}\n/**\n * @record\n */\nexport function CompileEntryComponentMetadata() { }\nfunction CompileEntryComponentMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileEntryComponentMetadata.prototype.componentType;\n /** @type {?} */\n CompileEntryComponentMetadata.prototype.componentFactory;\n}\n/**\n * @record\n */\nexport function CompileDirectiveSummary() { }\nfunction CompileDirectiveSummary_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileDirectiveSummary.prototype.type;\n /** @type {?} */\n CompileDirectiveSummary.prototype.isComponent;\n /** @type {?} */\n CompileDirectiveSummary.prototype.selector;\n /** @type {?} */\n CompileDirectiveSummary.prototype.exportAs;\n /** @type {?} */\n CompileDirectiveSummary.prototype.inputs;\n /** @type {?} */\n CompileDirectiveSummary.prototype.outputs;\n /** @type {?} */\n CompileDirectiveSummary.prototype.hostListeners;\n /** @type {?} */\n CompileDirectiveSummary.prototype.hostProperties;\n /** @type {?} */\n CompileDirectiveSummary.prototype.hostAttributes;\n /** @type {?} */\n CompileDirectiveSummary.prototype.providers;\n /** @type {?} */\n CompileDirectiveSummary.prototype.viewProviders;\n /** @type {?} */\n CompileDirectiveSummary.prototype.queries;\n /** @type {?} */\n CompileDirectiveSummary.prototype.guards;\n /** @type {?} */\n CompileDirectiveSummary.prototype.viewQueries;\n /** @type {?} */\n CompileDirectiveSummary.prototype.entryComponents;\n /** @type {?} */\n CompileDirectiveSummary.prototype.changeDetection;\n /** @type {?} */\n CompileDirectiveSummary.prototype.template;\n /** @type {?} */\n CompileDirectiveSummary.prototype.componentViewType;\n /** @type {?} */\n CompileDirectiveSummary.prototype.rendererType;\n /** @type {?} */\n CompileDirectiveSummary.prototype.componentFactory;\n}\n/**\n * Metadata regarding compilation of a directive.\n */\nexport class CompileDirectiveMetadata {\n /**\n * @param {?} __0\n * @return {?}\n */\n static create({ isHost, type, isComponent, selector, exportAs, changeDetection, inputs, outputs, host, providers, viewProviders, queries, guards, viewQueries, entryComponents, template, componentViewType, rendererType, componentFactory }) {\n const /** @type {?} */ hostListeners = {};\n const /** @type {?} */ hostProperties = {};\n const /** @type {?} */ hostAttributes = {};\n if (host != null) {\n Object.keys(host).forEach(key => {\n const /** @type {?} */ value = host[key];\n const /** @type {?} */ matches = key.match(HOST_REG_EXP);\n if (matches === null) {\n hostAttributes[key] = value;\n }\n else if (matches[1] != null) {\n hostProperties[matches[1]] = value;\n }\n else if (matches[2] != null) {\n hostListeners[matches[2]] = value;\n }\n });\n }\n const /** @type {?} */ inputsMap = {};\n if (inputs != null) {\n inputs.forEach((bindConfig) => {\n // canonical syntax: `dirProp: elProp`\n // if there is no `:`, use dirProp = elProp\n const /** @type {?} */ parts = splitAtColon(bindConfig, [bindConfig, bindConfig]);\n inputsMap[parts[0]] = parts[1];\n });\n }\n const /** @type {?} */ outputsMap = {};\n if (outputs != null) {\n outputs.forEach((bindConfig) => {\n // canonical syntax: `dirProp: elProp`\n // if there is no `:`, use dirProp = elProp\n const /** @type {?} */ parts = splitAtColon(bindConfig, [bindConfig, bindConfig]);\n outputsMap[parts[0]] = parts[1];\n });\n }\n return new CompileDirectiveMetadata({\n isHost,\n type,\n isComponent: !!isComponent, selector, exportAs, changeDetection,\n inputs: inputsMap,\n outputs: outputsMap,\n hostListeners,\n hostProperties,\n hostAttributes,\n providers,\n viewProviders,\n queries,\n guards,\n viewQueries,\n entryComponents,\n template,\n componentViewType,\n rendererType,\n componentFactory,\n });\n }\n /**\n * @param {?} __0\n */\n constructor({ isHost, type, isComponent, selector, exportAs, changeDetection, inputs, outputs, hostListeners, hostProperties, hostAttributes, providers, viewProviders, queries, guards, viewQueries, entryComponents, template, componentViewType, rendererType, componentFactory }) {\n this.isHost = !!isHost;\n this.type = type;\n this.isComponent = isComponent;\n this.selector = selector;\n this.exportAs = exportAs;\n this.changeDetection = changeDetection;\n this.inputs = inputs;\n this.outputs = outputs;\n this.hostListeners = hostListeners;\n this.hostProperties = hostProperties;\n this.hostAttributes = hostAttributes;\n this.providers = _normalizeArray(providers);\n this.viewProviders = _normalizeArray(viewProviders);\n this.queries = _normalizeArray(queries);\n this.guards = guards;\n this.viewQueries = _normalizeArray(viewQueries);\n this.entryComponents = _normalizeArray(entryComponents);\n this.template = template;\n this.componentViewType = componentViewType;\n this.rendererType = rendererType;\n this.componentFactory = componentFactory;\n }\n /**\n * @return {?}\n */\n toSummary() {\n return {\n summaryKind: CompileSummaryKind.Directive,\n type: this.type,\n isComponent: this.isComponent,\n selector: this.selector,\n exportAs: this.exportAs,\n inputs: this.inputs,\n outputs: this.outputs,\n hostListeners: this.hostListeners,\n hostProperties: this.hostProperties,\n hostAttributes: this.hostAttributes,\n providers: this.providers,\n viewProviders: this.viewProviders,\n queries: this.queries,\n guards: this.guards,\n viewQueries: this.viewQueries,\n entryComponents: this.entryComponents,\n changeDetection: this.changeDetection,\n template: this.template && this.template.toSummary(),\n componentViewType: this.componentViewType,\n rendererType: this.rendererType,\n componentFactory: this.componentFactory\n };\n }\n}\nfunction CompileDirectiveMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileDirectiveMetadata.prototype.isHost;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.type;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.isComponent;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.selector;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.exportAs;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.changeDetection;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.inputs;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.outputs;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.hostListeners;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.hostProperties;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.hostAttributes;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.providers;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.viewProviders;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.queries;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.guards;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.viewQueries;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.entryComponents;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.template;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.componentViewType;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.rendererType;\n /** @type {?} */\n CompileDirectiveMetadata.prototype.componentFactory;\n}\n/**\n * @record\n */\nexport function CompilePipeSummary() { }\nfunction CompilePipeSummary_tsickle_Closure_declarations() {\n /** @type {?} */\n CompilePipeSummary.prototype.type;\n /** @type {?} */\n CompilePipeSummary.prototype.name;\n /** @type {?} */\n CompilePipeSummary.prototype.pure;\n}\nexport class CompilePipeMetadata {\n /**\n * @param {?} __0\n */\n constructor({ type, name, pure }) {\n this.type = type;\n this.name = name;\n this.pure = !!pure;\n }\n /**\n * @return {?}\n */\n toSummary() {\n return {\n summaryKind: CompileSummaryKind.Pipe,\n type: this.type,\n name: this.name,\n pure: this.pure\n };\n }\n}\nfunction CompilePipeMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n CompilePipeMetadata.prototype.type;\n /** @type {?} */\n CompilePipeMetadata.prototype.name;\n /** @type {?} */\n CompilePipeMetadata.prototype.pure;\n}\n/**\n * @record\n */\nexport function CompileNgModuleSummary() { }\nfunction CompileNgModuleSummary_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileNgModuleSummary.prototype.type;\n /** @type {?} */\n CompileNgModuleSummary.prototype.exportedDirectives;\n /** @type {?} */\n CompileNgModuleSummary.prototype.exportedPipes;\n /** @type {?} */\n CompileNgModuleSummary.prototype.entryComponents;\n /** @type {?} */\n CompileNgModuleSummary.prototype.providers;\n /** @type {?} */\n CompileNgModuleSummary.prototype.modules;\n}\n/**\n * Metadata regarding compilation of a module.\n */\nexport class CompileNgModuleMetadata {\n /**\n * @param {?} __0\n */\n constructor({ type, providers, declaredDirectives, exportedDirectives, declaredPipes, exportedPipes, entryComponents, bootstrapComponents, importedModules, exportedModules, schemas, transitiveModule, id }) {\n this.type = type || null;\n this.declaredDirectives = _normalizeArray(declaredDirectives);\n this.exportedDirectives = _normalizeArray(exportedDirectives);\n this.declaredPipes = _normalizeArray(declaredPipes);\n this.exportedPipes = _normalizeArray(exportedPipes);\n this.providers = _normalizeArray(providers);\n this.entryComponents = _normalizeArray(entryComponents);\n this.bootstrapComponents = _normalizeArray(bootstrapComponents);\n this.importedModules = _normalizeArray(importedModules);\n this.exportedModules = _normalizeArray(exportedModules);\n this.schemas = _normalizeArray(schemas);\n this.id = id || null;\n this.transitiveModule = transitiveModule || null;\n }\n /**\n * @return {?}\n */\n toSummary() {\n const /** @type {?} */ module = /** @type {?} */ ((this.transitiveModule));\n return {\n summaryKind: CompileSummaryKind.NgModule,\n type: this.type,\n entryComponents: module.entryComponents,\n providers: module.providers,\n modules: module.modules,\n exportedDirectives: module.exportedDirectives,\n exportedPipes: module.exportedPipes\n };\n }\n}\nfunction CompileNgModuleMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileNgModuleMetadata.prototype.type;\n /** @type {?} */\n CompileNgModuleMetadata.prototype.declaredDirectives;\n /** @type {?} */\n CompileNgModuleMetadata.prototype.exportedDirectives;\n /** @type {?} */\n CompileNgModuleMetadata.prototype.declaredPipes;\n /** @type {?} */\n CompileNgModuleMetadata.prototype.exportedPipes;\n /** @type {?} */\n CompileNgModuleMetadata.prototype.entryComponents;\n /** @type {?} */\n CompileNgModuleMetadata.prototype.bootstrapComponents;\n /** @type {?} */\n CompileNgModuleMetadata.prototype.providers;\n /** @type {?} */\n CompileNgModuleMetadata.prototype.importedModules;\n /** @type {?} */\n CompileNgModuleMetadata.prototype.exportedModules;\n /** @type {?} */\n CompileNgModuleMetadata.prototype.schemas;\n /** @type {?} */\n CompileNgModuleMetadata.prototype.id;\n /** @type {?} */\n CompileNgModuleMetadata.prototype.transitiveModule;\n}\nexport class TransitiveCompileNgModuleMetadata {\n constructor() {\n this.directivesSet = new Set();\n this.directives = [];\n this.exportedDirectivesSet = new Set();\n this.exportedDirectives = [];\n this.pipesSet = new Set();\n this.pipes = [];\n this.exportedPipesSet = new Set();\n this.exportedPipes = [];\n this.modulesSet = new Set();\n this.modules = [];\n this.entryComponentsSet = new Set();\n this.entryComponents = [];\n this.providers = [];\n }\n /**\n * @param {?} provider\n * @param {?} module\n * @return {?}\n */\n addProvider(provider, module) {\n this.providers.push({ provider: provider, module: module });\n }\n /**\n * @param {?} id\n * @return {?}\n */\n addDirective(id) {\n if (!this.directivesSet.has(id.reference)) {\n this.directivesSet.add(id.reference);\n this.directives.push(id);\n }\n }\n /**\n * @param {?} id\n * @return {?}\n */\n addExportedDirective(id) {\n if (!this.exportedDirectivesSet.has(id.reference)) {\n this.exportedDirectivesSet.add(id.reference);\n this.exportedDirectives.push(id);\n }\n }\n /**\n * @param {?} id\n * @return {?}\n */\n addPipe(id) {\n if (!this.pipesSet.has(id.reference)) {\n this.pipesSet.add(id.reference);\n this.pipes.push(id);\n }\n }\n /**\n * @param {?} id\n * @return {?}\n */\n addExportedPipe(id) {\n if (!this.exportedPipesSet.has(id.reference)) {\n this.exportedPipesSet.add(id.reference);\n this.exportedPipes.push(id);\n }\n }\n /**\n * @param {?} id\n * @return {?}\n */\n addModule(id) {\n if (!this.modulesSet.has(id.reference)) {\n this.modulesSet.add(id.reference);\n this.modules.push(id);\n }\n }\n /**\n * @param {?} ec\n * @return {?}\n */\n addEntryComponent(ec) {\n if (!this.entryComponentsSet.has(ec.componentType)) {\n this.entryComponentsSet.add(ec.componentType);\n this.entryComponents.push(ec);\n }\n }\n}\nfunction TransitiveCompileNgModuleMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n TransitiveCompileNgModuleMetadata.prototype.directivesSet;\n /** @type {?} */\n TransitiveCompileNgModuleMetadata.prototype.directives;\n /** @type {?} */\n TransitiveCompileNgModuleMetadata.prototype.exportedDirectivesSet;\n /** @type {?} */\n TransitiveCompileNgModuleMetadata.prototype.exportedDirectives;\n /** @type {?} */\n TransitiveCompileNgModuleMetadata.prototype.pipesSet;\n /** @type {?} */\n TransitiveCompileNgModuleMetadata.prototype.pipes;\n /** @type {?} */\n TransitiveCompileNgModuleMetadata.prototype.exportedPipesSet;\n /** @type {?} */\n TransitiveCompileNgModuleMetadata.prototype.exportedPipes;\n /** @type {?} */\n TransitiveCompileNgModuleMetadata.prototype.modulesSet;\n /** @type {?} */\n TransitiveCompileNgModuleMetadata.prototype.modules;\n /** @type {?} */\n TransitiveCompileNgModuleMetadata.prototype.entryComponentsSet;\n /** @type {?} */\n TransitiveCompileNgModuleMetadata.prototype.entryComponents;\n /** @type {?} */\n TransitiveCompileNgModuleMetadata.prototype.providers;\n}\n/**\n * @param {?} obj\n * @return {?}\n */\nfunction _normalizeArray(obj) {\n return obj || [];\n}\nexport class ProviderMeta {\n /**\n * @param {?} token\n * @param {?} __1\n */\n constructor(token, { useClass, useValue, useExisting, useFactory, deps, multi }) {\n this.token = token;\n this.useClass = useClass || null;\n this.useValue = useValue;\n this.useExisting = useExisting;\n this.useFactory = useFactory || null;\n this.dependencies = deps || null;\n this.multi = !!multi;\n }\n}\nfunction ProviderMeta_tsickle_Closure_declarations() {\n /** @type {?} */\n ProviderMeta.prototype.token;\n /** @type {?} */\n ProviderMeta.prototype.useClass;\n /** @type {?} */\n ProviderMeta.prototype.useValue;\n /** @type {?} */\n ProviderMeta.prototype.useExisting;\n /** @type {?} */\n ProviderMeta.prototype.useFactory;\n /** @type {?} */\n ProviderMeta.prototype.dependencies;\n /** @type {?} */\n ProviderMeta.prototype.multi;\n}\n/**\n * @template T\n * @param {?} list\n * @return {?}\n */\nexport function flatten(list) {\n return list.reduce((flat, item) => {\n const /** @type {?} */ flatItem = Array.isArray(item) ? flatten(item) : item;\n return (/** @type {?} */ (flat)).concat(flatItem);\n }, []);\n}\n/**\n * @param {?} url\n * @return {?}\n */\nfunction jitSourceUrl(url) {\n // Note: We need 3 \"/\" so that ng shows up as a separate domain\n // in the chrome dev tools.\n return url.replace(/(\\w+:\\/\\/[\\w:-]+)?(\\/+)?/, 'ng:///');\n}\n/**\n * @param {?} ngModuleType\n * @param {?} compMeta\n * @param {?} templateMeta\n * @return {?}\n */\nexport function templateSourceUrl(ngModuleType, compMeta, templateMeta) {\n let /** @type {?} */ url;\n if (templateMeta.isInline) {\n if (compMeta.type.reference instanceof StaticSymbol) {\n // Note: a .ts file might contain multiple components with inline templates,\n // so we need to give them unique urls, as these will be used for sourcemaps.\n url = `${compMeta.type.reference.filePath}.${compMeta.type.reference.name}.html`;\n }\n else {\n url = `${identifierName(ngModuleType)}/${identifierName(compMeta.type)}.html`;\n }\n }\n else {\n url = /** @type {?} */ ((templateMeta.templateUrl));\n }\n return compMeta.type.reference instanceof StaticSymbol ? url : jitSourceUrl(url);\n}\n/**\n * @param {?} meta\n * @param {?} id\n * @return {?}\n */\nexport function sharedStylesheetJitUrl(meta, id) {\n const /** @type {?} */ pathParts = /** @type {?} */ ((meta.moduleUrl)).split(/\\/\\\\/g);\n const /** @type {?} */ baseName = pathParts[pathParts.length - 1];\n return jitSourceUrl(`css/${id}${baseName}.ngstyle.js`);\n}\n/**\n * @param {?} moduleMeta\n * @return {?}\n */\nexport function ngModuleJitUrl(moduleMeta) {\n return jitSourceUrl(`${identifierName(moduleMeta.type)}/module.ngfactory.js`);\n}\n/**\n * @param {?} ngModuleType\n * @param {?} compMeta\n * @return {?}\n */\nexport function templateJitUrl(ngModuleType, compMeta) {\n return jitSourceUrl(`${identifierName(ngModuleType)}/${identifierName(compMeta.type)}.ngfactory.js`);\n}\n//# sourceMappingURL=compile_metadata.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A path is an ordered set of elements. Typically a path is to a\n * particular offset in a source file. The head of the list is the top\n * most node. The tail is the node that contains the offset directly.\n *\n * For example, the expresion `a + b + c` might have an ast that looks\n * like:\n * +\n * / \\\n * a +\n * / \\\n * b c\n *\n * The path to the node at offset 9 would be `['+' at 1-10, '+' at 7-10,\n * 'c' at 9-10]` and the path the node at offset 1 would be\n * `['+' at 1-10, 'a' at 1-2]`.\n */\nexport class AstPath {\n /**\n * @param {?} path\n * @param {?=} position\n */\n constructor(path, position = -1) {\n this.path = path;\n this.position = position;\n }\n /**\n * @return {?}\n */\n get empty() { return !this.path || !this.path.length; }\n /**\n * @return {?}\n */\n get head() { return this.path[0]; }\n /**\n * @return {?}\n */\n get tail() { return this.path[this.path.length - 1]; }\n /**\n * @param {?} node\n * @return {?}\n */\n parentOf(node) {\n return node && this.path[this.path.indexOf(node) - 1];\n }\n /**\n * @param {?} node\n * @return {?}\n */\n childOf(node) { return this.path[this.path.indexOf(node) + 1]; }\n /**\n * @template N\n * @param {?} ctor\n * @return {?}\n */\n first(ctor) {\n for (let /** @type {?} */ i = this.path.length - 1; i >= 0; i--) {\n let /** @type {?} */ item = this.path[i];\n if (item instanceof ctor)\n return /** @type {?} */ (item);\n }\n }\n /**\n * @param {?} node\n * @return {?}\n */\n push(node) { this.path.push(node); }\n /**\n * @return {?}\n */\n pop() { return /** @type {?} */ ((this.path.pop())); }\n}\nfunction AstPath_tsickle_Closure_declarations() {\n /** @type {?} */\n AstPath.prototype.path;\n /** @type {?} */\n AstPath.prototype.position;\n}\n//# sourceMappingURL=ast_path.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { AstPath } from '../ast_path';\n/**\n * @record\n */\nexport function Node() { }\nfunction Node_tsickle_Closure_declarations() {\n /** @type {?} */\n Node.prototype.sourceSpan;\n /** @type {?} */\n Node.prototype.visit;\n}\nexport class Text {\n /**\n * @param {?} value\n * @param {?} sourceSpan\n */\n constructor(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitText(this, context); }\n}\nfunction Text_tsickle_Closure_declarations() {\n /** @type {?} */\n Text.prototype.value;\n /** @type {?} */\n Text.prototype.sourceSpan;\n}\nexport class Expansion {\n /**\n * @param {?} switchValue\n * @param {?} type\n * @param {?} cases\n * @param {?} sourceSpan\n * @param {?} switchValueSourceSpan\n */\n constructor(switchValue, type, cases, sourceSpan, switchValueSourceSpan) {\n this.switchValue = switchValue;\n this.type = type;\n this.cases = cases;\n this.sourceSpan = sourceSpan;\n this.switchValueSourceSpan = switchValueSourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitExpansion(this, context); }\n}\nfunction Expansion_tsickle_Closure_declarations() {\n /** @type {?} */\n Expansion.prototype.switchValue;\n /** @type {?} */\n Expansion.prototype.type;\n /** @type {?} */\n Expansion.prototype.cases;\n /** @type {?} */\n Expansion.prototype.sourceSpan;\n /** @type {?} */\n Expansion.prototype.switchValueSourceSpan;\n}\nexport class ExpansionCase {\n /**\n * @param {?} value\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} valueSourceSpan\n * @param {?} expSourceSpan\n */\n constructor(value, expression, sourceSpan, valueSourceSpan, expSourceSpan) {\n this.value = value;\n this.expression = expression;\n this.sourceSpan = sourceSpan;\n this.valueSourceSpan = valueSourceSpan;\n this.expSourceSpan = expSourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitExpansionCase(this, context); }\n}\nfunction ExpansionCase_tsickle_Closure_declarations() {\n /** @type {?} */\n ExpansionCase.prototype.value;\n /** @type {?} */\n ExpansionCase.prototype.expression;\n /** @type {?} */\n ExpansionCase.prototype.sourceSpan;\n /** @type {?} */\n ExpansionCase.prototype.valueSourceSpan;\n /** @type {?} */\n ExpansionCase.prototype.expSourceSpan;\n}\nexport class Attribute {\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?=} valueSpan\n */\n constructor(name, value, sourceSpan, valueSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.valueSpan = valueSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitAttribute(this, context); }\n}\nfunction Attribute_tsickle_Closure_declarations() {\n /** @type {?} */\n Attribute.prototype.name;\n /** @type {?} */\n Attribute.prototype.value;\n /** @type {?} */\n Attribute.prototype.sourceSpan;\n /** @type {?} */\n Attribute.prototype.valueSpan;\n}\nexport class Element {\n /**\n * @param {?} name\n * @param {?} attrs\n * @param {?} children\n * @param {?} sourceSpan\n * @param {?=} startSourceSpan\n * @param {?=} endSourceSpan\n */\n constructor(name, attrs, children, sourceSpan, startSourceSpan = null, endSourceSpan = null) {\n this.name = name;\n this.attrs = attrs;\n this.children = children;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitElement(this, context); }\n}\nfunction Element_tsickle_Closure_declarations() {\n /** @type {?} */\n Element.prototype.name;\n /** @type {?} */\n Element.prototype.attrs;\n /** @type {?} */\n Element.prototype.children;\n /** @type {?} */\n Element.prototype.sourceSpan;\n /** @type {?} */\n Element.prototype.startSourceSpan;\n /** @type {?} */\n Element.prototype.endSourceSpan;\n}\nexport class Comment {\n /**\n * @param {?} value\n * @param {?} sourceSpan\n */\n constructor(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitComment(this, context); }\n}\nfunction Comment_tsickle_Closure_declarations() {\n /** @type {?} */\n Comment.prototype.value;\n /** @type {?} */\n Comment.prototype.sourceSpan;\n}\n/**\n * @record\n */\nexport function Visitor() { }\nfunction Visitor_tsickle_Closure_declarations() {\n /** @type {?|undefined} */\n Visitor.prototype.visit;\n /** @type {?} */\n Visitor.prototype.visitElement;\n /** @type {?} */\n Visitor.prototype.visitAttribute;\n /** @type {?} */\n Visitor.prototype.visitText;\n /** @type {?} */\n Visitor.prototype.visitComment;\n /** @type {?} */\n Visitor.prototype.visitExpansion;\n /** @type {?} */\n Visitor.prototype.visitExpansionCase;\n}\n/**\n * @param {?} visitor\n * @param {?} nodes\n * @param {?=} context\n * @return {?}\n */\nexport function visitAll(visitor, nodes, context = null) {\n const /** @type {?} */ result = [];\n const /** @type {?} */ visit = visitor.visit ?\n (ast) => /** @type {?} */ ((visitor.visit))(ast, context) || ast.visit(visitor, context) :\n (ast) => ast.visit(visitor, context);\n nodes.forEach(ast => {\n const /** @type {?} */ astResult = visit(ast);\n if (astResult) {\n result.push(astResult);\n }\n });\n return result;\n}\nexport class RecursiveVisitor {\n constructor() { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitElement(ast, context) {\n this.visitChildren(context, visit => {\n visit(ast.attrs);\n visit(ast.children);\n });\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitAttribute(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitText(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitComment(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitExpansion(ast, context) {\n return this.visitChildren(context, visit => { visit(ast.cases); });\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(ast, context) { }\n /**\n * @template T\n * @param {?} context\n * @param {?} cb\n * @return {?}\n */\n visitChildren(context, cb) {\n let /** @type {?} */ results = [];\n let /** @type {?} */ t = this;\n /**\n * @template T\n * @param {?} children\n * @return {?}\n */\n function visit(children) {\n if (children)\n results.push(visitAll(t, children, context));\n }\n cb(visit);\n return [].concat.apply([], results);\n }\n}\n/**\n * @param {?} ast\n * @return {?}\n */\nfunction spanOf(ast) {\n const /** @type {?} */ start = ast.sourceSpan.start.offset;\n let /** @type {?} */ end = ast.sourceSpan.end.offset;\n if (ast instanceof Element) {\n if (ast.endSourceSpan) {\n end = ast.endSourceSpan.end.offset;\n }\n else if (ast.children && ast.children.length) {\n end = spanOf(ast.children[ast.children.length - 1]).end;\n }\n }\n return { start, end };\n}\n/**\n * @param {?} nodes\n * @param {?} position\n * @return {?}\n */\nexport function findNode(nodes, position) {\n const /** @type {?} */ path = [];\n const /** @type {?} */ visitor = new class extends RecursiveVisitor {\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visit(ast, context) {\n const /** @type {?} */ span = spanOf(ast);\n if (span.start <= position && position < span.end) {\n path.push(ast);\n }\n else {\n // Returning a value here will result in the children being skipped.\n return true;\n }\n }\n };\n visitAll(visitor, nodes);\n return new AstPath(path, position);\n}\n//# sourceMappingURL=ast.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} identifier\n * @param {?} value\n * @return {?}\n */\nexport function assertArrayOfStrings(identifier, value) {\n if (value == null) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new Error(`Expected '${identifier}' to be an array of strings.`);\n }\n for (let /** @type {?} */ i = 0; i < value.length; i += 1) {\n if (typeof value[i] !== 'string') {\n throw new Error(`Expected '${identifier}' to be an array of strings.`);\n }\n }\n}\nconst /** @type {?} */ INTERPOLATION_BLACKLIST_REGEXPS = [\n /^\\s*$/,\n /[<>]/,\n /^[{}]$/,\n /&(#|[a-z])/i,\n /^\\/\\//,\n];\n/**\n * @param {?} identifier\n * @param {?} value\n * @return {?}\n */\nexport function assertInterpolationSymbols(identifier, value) {\n if (value != null && !(Array.isArray(value) && value.length == 2)) {\n throw new Error(`Expected '${identifier}' to be an array, [start, end].`);\n }\n else if (value != null) {\n const /** @type {?} */ start = /** @type {?} */ (value[0]);\n const /** @type {?} */ end = /** @type {?} */ (value[1]);\n // black list checking\n INTERPOLATION_BLACKLIST_REGEXPS.forEach(regexp => {\n if (regexp.test(start) || regexp.test(end)) {\n throw new Error(`['${start}', '${end}'] contains unusable interpolation symbol.`);\n }\n });\n }\n}\n//# sourceMappingURL=assertions.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { assertInterpolationSymbols } from '../assertions';\nexport class InterpolationConfig {\n /**\n * @param {?} start\n * @param {?} end\n */\n constructor(start, end) {\n this.start = start;\n this.end = end;\n }\n /**\n * @param {?} markers\n * @return {?}\n */\n static fromArray(markers) {\n if (!markers) {\n return DEFAULT_INTERPOLATION_CONFIG;\n }\n assertInterpolationSymbols('interpolation', markers);\n return new InterpolationConfig(markers[0], markers[1]);\n }\n}\nfunction InterpolationConfig_tsickle_Closure_declarations() {\n /** @type {?} */\n InterpolationConfig.prototype.start;\n /** @type {?} */\n InterpolationConfig.prototype.end;\n}\nexport const /** @type {?} */ DEFAULT_INTERPOLATION_CONFIG = new InterpolationConfig('{{', '}}');\n//# sourceMappingURL=interpolation_config.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport class StyleWithImports {\n /**\n * @param {?} style\n * @param {?} styleUrls\n */\n constructor(style, styleUrls) {\n this.style = style;\n this.styleUrls = styleUrls;\n }\n}\nfunction StyleWithImports_tsickle_Closure_declarations() {\n /** @type {?} */\n StyleWithImports.prototype.style;\n /** @type {?} */\n StyleWithImports.prototype.styleUrls;\n}\n/**\n * @param {?} url\n * @return {?}\n */\nexport function isStyleUrlResolvable(url) {\n if (url == null || url.length === 0 || url[0] == '/')\n return false;\n const /** @type {?} */ schemeMatch = url.match(URL_WITH_SCHEMA_REGEXP);\n return schemeMatch === null || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset';\n}\n/**\n * Rewrites stylesheets by resolving and removing the \\@import urls that\n * are either relative or don't have a `package:` scheme\n * @param {?} resolver\n * @param {?} baseUrl\n * @param {?} cssText\n * @return {?}\n */\nexport function extractStyleUrls(resolver, baseUrl, cssText) {\n const /** @type {?} */ foundUrls = [];\n const /** @type {?} */ modifiedCssText = cssText.replace(CSS_STRIPPABLE_COMMENT_REGEXP, '')\n .replace(CSS_IMPORT_REGEXP, (...m) => {\n const /** @type {?} */ url = m[1] || m[2];\n if (!isStyleUrlResolvable(url)) {\n // Do not attempt to resolve non-package absolute URLs with URI\n // scheme\n return m[0];\n }\n foundUrls.push(resolver.resolve(baseUrl, url));\n return '';\n });\n return new StyleWithImports(modifiedCssText, foundUrls);\n}\nconst /** @type {?} */ CSS_IMPORT_REGEXP = /@import\\s+(?:url\\()?\\s*(?:(?:['\"]([^'\"]*))|([^;\\)\\s]*))[^;]*;?/g;\nconst /** @type {?} */ CSS_STRIPPABLE_COMMENT_REGEXP = /\\/\\*(?!#\\s*(?:sourceURL|sourceMappingURL)=)[\\s\\S]+?\\*\\//g;\nconst /** @type {?} */ URL_WITH_SCHEMA_REGEXP = /^([^:/?#]+):/;\n//# sourceMappingURL=style_url_resolver.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @enum {number} */\nconst TagContentType = {\n RAW_TEXT: 0,\n ESCAPABLE_RAW_TEXT: 1,\n PARSABLE_DATA: 2,\n};\nexport { TagContentType };\nTagContentType[TagContentType.RAW_TEXT] = \"RAW_TEXT\";\nTagContentType[TagContentType.ESCAPABLE_RAW_TEXT] = \"ESCAPABLE_RAW_TEXT\";\nTagContentType[TagContentType.PARSABLE_DATA] = \"PARSABLE_DATA\";\n/**\n * @record\n */\nexport function TagDefinition() { }\nfunction TagDefinition_tsickle_Closure_declarations() {\n /** @type {?} */\n TagDefinition.prototype.closedByParent;\n /** @type {?} */\n TagDefinition.prototype.requiredParents;\n /** @type {?} */\n TagDefinition.prototype.parentToAdd;\n /** @type {?} */\n TagDefinition.prototype.implicitNamespacePrefix;\n /** @type {?} */\n TagDefinition.prototype.contentType;\n /** @type {?} */\n TagDefinition.prototype.isVoid;\n /** @type {?} */\n TagDefinition.prototype.ignoreFirstLf;\n /** @type {?} */\n TagDefinition.prototype.canSelfClose;\n /** @type {?} */\n TagDefinition.prototype.requireExtraParent;\n /** @type {?} */\n TagDefinition.prototype.isClosedByChild;\n}\n/**\n * @param {?} elementName\n * @return {?}\n */\nexport function splitNsName(elementName) {\n if (elementName[0] != ':') {\n return [null, elementName];\n }\n const /** @type {?} */ colonIndex = elementName.indexOf(':', 1);\n if (colonIndex == -1) {\n throw new Error(`Unsupported format \"${elementName}\" expecting \":namespace:name\"`);\n }\n return [elementName.slice(1, colonIndex), elementName.slice(colonIndex + 1)];\n}\n/**\n * @param {?} tagName\n * @return {?}\n */\nexport function isNgContainer(tagName) {\n return splitNsName(tagName)[1] === 'ng-container';\n}\n/**\n * @param {?} tagName\n * @return {?}\n */\nexport function isNgContent(tagName) {\n return splitNsName(tagName)[1] === 'ng-content';\n}\n/**\n * @param {?} tagName\n * @return {?}\n */\nexport function isNgTemplate(tagName) {\n return splitNsName(tagName)[1] === 'ng-template';\n}\n/**\n * @param {?} fullName\n * @return {?}\n */\nexport function getNsPrefix(fullName) {\n return fullName === null ? null : splitNsName(fullName)[0];\n}\n/**\n * @param {?} prefix\n * @param {?} localName\n * @return {?}\n */\nexport function mergeNsAndName(prefix, localName) {\n return prefix ? `:${prefix}:${localName}` : localName;\n}\n// see http://www.w3.org/TR/html51/syntax.html#named-character-references\n// see https://html.spec.whatwg.org/multipage/entities.json\n// This list is not exhaustive to keep the compiler footprint low.\n// The `&#123;` / `&#x1ab;` syntax should be used when the named character reference does not\n// exist.\nexport const /** @type {?} */ NAMED_ENTITIES = {\n 'Aacute': '\\u00C1',\n 'aacute': '\\u00E1',\n 'Acirc': '\\u00C2',\n 'acirc': '\\u00E2',\n 'acute': '\\u00B4',\n 'AElig': '\\u00C6',\n 'aelig': '\\u00E6',\n 'Agrave': '\\u00C0',\n 'agrave': '\\u00E0',\n 'alefsym': '\\u2135',\n 'Alpha': '\\u0391',\n 'alpha': '\\u03B1',\n 'amp': '&',\n 'and': '\\u2227',\n 'ang': '\\u2220',\n 'apos': '\\u0027',\n 'Aring': '\\u00C5',\n 'aring': '\\u00E5',\n 'asymp': '\\u2248',\n 'Atilde': '\\u00C3',\n 'atilde': '\\u00E3',\n 'Auml': '\\u00C4',\n 'auml': '\\u00E4',\n 'bdquo': '\\u201E',\n 'Beta': '\\u0392',\n 'beta': '\\u03B2',\n 'brvbar': '\\u00A6',\n 'bull': '\\u2022',\n 'cap': '\\u2229',\n 'Ccedil': '\\u00C7',\n 'ccedil': '\\u00E7',\n 'cedil': '\\u00B8',\n 'cent': '\\u00A2',\n 'Chi': '\\u03A7',\n 'chi': '\\u03C7',\n 'circ': '\\u02C6',\n 'clubs': '\\u2663',\n 'cong': '\\u2245',\n 'copy': '\\u00A9',\n 'crarr': '\\u21B5',\n 'cup': '\\u222A',\n 'curren': '\\u00A4',\n 'dagger': '\\u2020',\n 'Dagger': '\\u2021',\n 'darr': '\\u2193',\n 'dArr': '\\u21D3',\n 'deg': '\\u00B0',\n 'Delta': '\\u0394',\n 'delta': '\\u03B4',\n 'diams': '\\u2666',\n 'divide': '\\u00F7',\n 'Eacute': '\\u00C9',\n 'eacute': '\\u00E9',\n 'Ecirc': '\\u00CA',\n 'ecirc': '\\u00EA',\n 'Egrave': '\\u00C8',\n 'egrave': '\\u00E8',\n 'empty': '\\u2205',\n 'emsp': '\\u2003',\n 'ensp': '\\u2002',\n 'Epsilon': '\\u0395',\n 'epsilon': '\\u03B5',\n 'equiv': '\\u2261',\n 'Eta': '\\u0397',\n 'eta': '\\u03B7',\n 'ETH': '\\u00D0',\n 'eth': '\\u00F0',\n 'Euml': '\\u00CB',\n 'euml': '\\u00EB',\n 'euro': '\\u20AC',\n 'exist': '\\u2203',\n 'fnof': '\\u0192',\n 'forall': '\\u2200',\n 'frac12': '\\u00BD',\n 'frac14': '\\u00BC',\n 'frac34': '\\u00BE',\n 'frasl': '\\u2044',\n 'Gamma': '\\u0393',\n 'gamma': '\\u03B3',\n 'ge': '\\u2265',\n 'gt': '>',\n 'harr': '\\u2194',\n 'hArr': '\\u21D4',\n 'hearts': '\\u2665',\n 'hellip': '\\u2026',\n 'Iacute': '\\u00CD',\n 'iacute': '\\u00ED',\n 'Icirc': '\\u00CE',\n 'icirc': '\\u00EE',\n 'iexcl': '\\u00A1',\n 'Igrave': '\\u00CC',\n 'igrave': '\\u00EC',\n 'image': '\\u2111',\n 'infin': '\\u221E',\n 'int': '\\u222B',\n 'Iota': '\\u0399',\n 'iota': '\\u03B9',\n 'iquest': '\\u00BF',\n 'isin': '\\u2208',\n 'Iuml': '\\u00CF',\n 'iuml': '\\u00EF',\n 'Kappa': '\\u039A',\n 'kappa': '\\u03BA',\n 'Lambda': '\\u039B',\n 'lambda': '\\u03BB',\n 'lang': '\\u27E8',\n 'laquo': '\\u00AB',\n 'larr': '\\u2190',\n 'lArr': '\\u21D0',\n 'lceil': '\\u2308',\n 'ldquo': '\\u201C',\n 'le': '\\u2264',\n 'lfloor': '\\u230A',\n 'lowast': '\\u2217',\n 'loz': '\\u25CA',\n 'lrm': '\\u200E',\n 'lsaquo': '\\u2039',\n 'lsquo': '\\u2018',\n 'lt': '<',\n 'macr': '\\u00AF',\n 'mdash': '\\u2014',\n 'micro': '\\u00B5',\n 'middot': '\\u00B7',\n 'minus': '\\u2212',\n 'Mu': '\\u039C',\n 'mu': '\\u03BC',\n 'nabla': '\\u2207',\n 'nbsp': '\\u00A0',\n 'ndash': '\\u2013',\n 'ne': '\\u2260',\n 'ni': '\\u220B',\n 'not': '\\u00AC',\n 'notin': '\\u2209',\n 'nsub': '\\u2284',\n 'Ntilde': '\\u00D1',\n 'ntilde': '\\u00F1',\n 'Nu': '\\u039D',\n 'nu': '\\u03BD',\n 'Oacute': '\\u00D3',\n 'oacute': '\\u00F3',\n 'Ocirc': '\\u00D4',\n 'ocirc': '\\u00F4',\n 'OElig': '\\u0152',\n 'oelig': '\\u0153',\n 'Ograve': '\\u00D2',\n 'ograve': '\\u00F2',\n 'oline': '\\u203E',\n 'Omega': '\\u03A9',\n 'omega': '\\u03C9',\n 'Omicron': '\\u039F',\n 'omicron': '\\u03BF',\n 'oplus': '\\u2295',\n 'or': '\\u2228',\n 'ordf': '\\u00AA',\n 'ordm': '\\u00BA',\n 'Oslash': '\\u00D8',\n 'oslash': '\\u00F8',\n 'Otilde': '\\u00D5',\n 'otilde': '\\u00F5',\n 'otimes': '\\u2297',\n 'Ouml': '\\u00D6',\n 'ouml': '\\u00F6',\n 'para': '\\u00B6',\n 'permil': '\\u2030',\n 'perp': '\\u22A5',\n 'Phi': '\\u03A6',\n 'phi': '\\u03C6',\n 'Pi': '\\u03A0',\n 'pi': '\\u03C0',\n 'piv': '\\u03D6',\n 'plusmn': '\\u00B1',\n 'pound': '\\u00A3',\n 'prime': '\\u2032',\n 'Prime': '\\u2033',\n 'prod': '\\u220F',\n 'prop': '\\u221D',\n 'Psi': '\\u03A8',\n 'psi': '\\u03C8',\n 'quot': '\\u0022',\n 'radic': '\\u221A',\n 'rang': '\\u27E9',\n 'raquo': '\\u00BB',\n 'rarr': '\\u2192',\n 'rArr': '\\u21D2',\n 'rceil': '\\u2309',\n 'rdquo': '\\u201D',\n 'real': '\\u211C',\n 'reg': '\\u00AE',\n 'rfloor': '\\u230B',\n 'Rho': '\\u03A1',\n 'rho': '\\u03C1',\n 'rlm': '\\u200F',\n 'rsaquo': '\\u203A',\n 'rsquo': '\\u2019',\n 'sbquo': '\\u201A',\n 'Scaron': '\\u0160',\n 'scaron': '\\u0161',\n 'sdot': '\\u22C5',\n 'sect': '\\u00A7',\n 'shy': '\\u00AD',\n 'Sigma': '\\u03A3',\n 'sigma': '\\u03C3',\n 'sigmaf': '\\u03C2',\n 'sim': '\\u223C',\n 'spades': '\\u2660',\n 'sub': '\\u2282',\n 'sube': '\\u2286',\n 'sum': '\\u2211',\n 'sup': '\\u2283',\n 'sup1': '\\u00B9',\n 'sup2': '\\u00B2',\n 'sup3': '\\u00B3',\n 'supe': '\\u2287',\n 'szlig': '\\u00DF',\n 'Tau': '\\u03A4',\n 'tau': '\\u03C4',\n 'there4': '\\u2234',\n 'Theta': '\\u0398',\n 'theta': '\\u03B8',\n 'thetasym': '\\u03D1',\n 'thinsp': '\\u2009',\n 'THORN': '\\u00DE',\n 'thorn': '\\u00FE',\n 'tilde': '\\u02DC',\n 'times': '\\u00D7',\n 'trade': '\\u2122',\n 'Uacute': '\\u00DA',\n 'uacute': '\\u00FA',\n 'uarr': '\\u2191',\n 'uArr': '\\u21D1',\n 'Ucirc': '\\u00DB',\n 'ucirc': '\\u00FB',\n 'Ugrave': '\\u00D9',\n 'ugrave': '\\u00F9',\n 'uml': '\\u00A8',\n 'upsih': '\\u03D2',\n 'Upsilon': '\\u03A5',\n 'upsilon': '\\u03C5',\n 'Uuml': '\\u00DC',\n 'uuml': '\\u00FC',\n 'weierp': '\\u2118',\n 'Xi': '\\u039E',\n 'xi': '\\u03BE',\n 'Yacute': '\\u00DD',\n 'yacute': '\\u00FD',\n 'yen': '\\u00A5',\n 'yuml': '\\u00FF',\n 'Yuml': '\\u0178',\n 'Zeta': '\\u0396',\n 'zeta': '\\u03B6',\n 'zwj': '\\u200D',\n 'zwnj': '\\u200C',\n};\n// The &ngsp; pseudo-entity is denoting a space. see:\n// https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart\nexport const /** @type {?} */ NGSP_UNICODE = '\\uE500';\nNAMED_ENTITIES['ngsp'] = NGSP_UNICODE;\n//# sourceMappingURL=tags.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { isNgContent } from '../ml_parser/tags';\nconst /** @type {?} */ NG_CONTENT_SELECT_ATTR = 'select';\nconst /** @type {?} */ LINK_ELEMENT = 'link';\nconst /** @type {?} */ LINK_STYLE_REL_ATTR = 'rel';\nconst /** @type {?} */ LINK_STYLE_HREF_ATTR = 'href';\nconst /** @type {?} */ LINK_STYLE_REL_VALUE = 'stylesheet';\nconst /** @type {?} */ STYLE_ELEMENT = 'style';\nconst /** @type {?} */ SCRIPT_ELEMENT = 'script';\nconst /** @type {?} */ NG_NON_BINDABLE_ATTR = 'ngNonBindable';\nconst /** @type {?} */ NG_PROJECT_AS = 'ngProjectAs';\n/**\n * @param {?} ast\n * @return {?}\n */\nexport function preparseElement(ast) {\n let /** @type {?} */ selectAttr = /** @type {?} */ ((null));\n let /** @type {?} */ hrefAttr = /** @type {?} */ ((null));\n let /** @type {?} */ relAttr = /** @type {?} */ ((null));\n let /** @type {?} */ nonBindable = false;\n let /** @type {?} */ projectAs = /** @type {?} */ ((null));\n ast.attrs.forEach(attr => {\n const /** @type {?} */ lcAttrName = attr.name.toLowerCase();\n if (lcAttrName == NG_CONTENT_SELECT_ATTR) {\n selectAttr = attr.value;\n }\n else if (lcAttrName == LINK_STYLE_HREF_ATTR) {\n hrefAttr = attr.value;\n }\n else if (lcAttrName == LINK_STYLE_REL_ATTR) {\n relAttr = attr.value;\n }\n else if (attr.name == NG_NON_BINDABLE_ATTR) {\n nonBindable = true;\n }\n else if (attr.name == NG_PROJECT_AS) {\n if (attr.value.length > 0) {\n projectAs = attr.value;\n }\n }\n });\n selectAttr = normalizeNgContentSelect(selectAttr);\n const /** @type {?} */ nodeName = ast.name.toLowerCase();\n let /** @type {?} */ type = PreparsedElementType.OTHER;\n if (isNgContent(nodeName)) {\n type = PreparsedElementType.NG_CONTENT;\n }\n else if (nodeName == STYLE_ELEMENT) {\n type = PreparsedElementType.STYLE;\n }\n else if (nodeName == SCRIPT_ELEMENT) {\n type = PreparsedElementType.SCRIPT;\n }\n else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) {\n type = PreparsedElementType.STYLESHEET;\n }\n return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs);\n}\n/** @enum {number} */\nconst PreparsedElementType = {\n NG_CONTENT: 0,\n STYLE: 1,\n STYLESHEET: 2,\n SCRIPT: 3,\n OTHER: 4,\n};\nexport { PreparsedElementType };\nPreparsedElementType[PreparsedElementType.NG_CONTENT] = \"NG_CONTENT\";\nPreparsedElementType[PreparsedElementType.STYLE] = \"STYLE\";\nPreparsedElementType[PreparsedElementType.STYLESHEET] = \"STYLESHEET\";\nPreparsedElementType[PreparsedElementType.SCRIPT] = \"SCRIPT\";\nPreparsedElementType[PreparsedElementType.OTHER] = \"OTHER\";\nexport class PreparsedElement {\n /**\n * @param {?} type\n * @param {?} selectAttr\n * @param {?} hrefAttr\n * @param {?} nonBindable\n * @param {?} projectAs\n */\n constructor(type, selectAttr, hrefAttr, nonBindable, projectAs) {\n this.type = type;\n this.selectAttr = selectAttr;\n this.hrefAttr = hrefAttr;\n this.nonBindable = nonBindable;\n this.projectAs = projectAs;\n }\n}\nfunction PreparsedElement_tsickle_Closure_declarations() {\n /** @type {?} */\n PreparsedElement.prototype.type;\n /** @type {?} */\n PreparsedElement.prototype.selectAttr;\n /** @type {?} */\n PreparsedElement.prototype.hrefAttr;\n /** @type {?} */\n PreparsedElement.prototype.nonBindable;\n /** @type {?} */\n PreparsedElement.prototype.projectAs;\n}\n/**\n * @param {?} selectAttr\n * @return {?}\n */\nfunction normalizeNgContentSelect(selectAttr) {\n if (selectAttr === null || selectAttr.length === 0) {\n return '*';\n }\n return selectAttr;\n}\n//# sourceMappingURL=template_preparser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { CompileStylesheetMetadata, CompileTemplateMetadata, templateSourceUrl } from './compile_metadata';\nimport { preserveWhitespacesDefault } from './config';\nimport { ViewEncapsulation } from './core';\nimport * as html from './ml_parser/ast';\nimport { InterpolationConfig } from './ml_parser/interpolation_config';\nimport { extractStyleUrls, isStyleUrlResolvable } from './style_url_resolver';\nimport { PreparsedElementType, preparseElement } from './template_parser/template_preparser';\nimport { SyncAsync, isDefined, stringify, syntaxError } from './util';\n/**\n * @record\n */\nexport function PrenormalizedTemplateMetadata() { }\nfunction PrenormalizedTemplateMetadata_tsickle_Closure_declarations() {\n /** @type {?} */\n PrenormalizedTemplateMetadata.prototype.ngModuleType;\n /** @type {?} */\n PrenormalizedTemplateMetadata.prototype.componentType;\n /** @type {?} */\n PrenormalizedTemplateMetadata.prototype.moduleUrl;\n /** @type {?} */\n PrenormalizedTemplateMetadata.prototype.template;\n /** @type {?} */\n PrenormalizedTemplateMetadata.prototype.templateUrl;\n /** @type {?} */\n PrenormalizedTemplateMetadata.prototype.styles;\n /** @type {?} */\n PrenormalizedTemplateMetadata.prototype.styleUrls;\n /** @type {?} */\n PrenormalizedTemplateMetadata.prototype.interpolation;\n /** @type {?} */\n PrenormalizedTemplateMetadata.prototype.encapsulation;\n /** @type {?} */\n PrenormalizedTemplateMetadata.prototype.animations;\n /** @type {?} */\n PrenormalizedTemplateMetadata.prototype.preserveWhitespaces;\n}\nexport class DirectiveNormalizer {\n /**\n * @param {?} _resourceLoader\n * @param {?} _urlResolver\n * @param {?} _htmlParser\n * @param {?} _config\n */\n constructor(_resourceLoader, _urlResolver, _htmlParser, _config) {\n this._resourceLoader = _resourceLoader;\n this._urlResolver = _urlResolver;\n this._htmlParser = _htmlParser;\n this._config = _config;\n this._resourceLoaderCache = new Map();\n }\n /**\n * @return {?}\n */\n clearCache() { this._resourceLoaderCache.clear(); }\n /**\n * @param {?} normalizedDirective\n * @return {?}\n */\n clearCacheFor(normalizedDirective) {\n if (!normalizedDirective.isComponent) {\n return;\n }\n const /** @type {?} */ template = /** @type {?} */ ((normalizedDirective.template));\n this._resourceLoaderCache.delete(/** @type {?} */ ((template.templateUrl)));\n template.externalStylesheets.forEach((stylesheet) => { this._resourceLoaderCache.delete(/** @type {?} */ ((stylesheet.moduleUrl))); });\n }\n /**\n * @param {?} url\n * @return {?}\n */\n _fetch(url) {\n let /** @type {?} */ result = this._resourceLoaderCache.get(url);\n if (!result) {\n result = this._resourceLoader.get(url);\n this._resourceLoaderCache.set(url, result);\n }\n return result;\n }\n /**\n * @param {?} prenormData\n * @return {?}\n */\n normalizeTemplate(prenormData) {\n if (isDefined(prenormData.template)) {\n if (isDefined(prenormData.templateUrl)) {\n throw syntaxError(`'${stringify(prenormData.componentType)}' component cannot define both template and templateUrl`);\n }\n if (typeof prenormData.template !== 'string') {\n throw syntaxError(`The template specified for component ${stringify(prenormData.componentType)} is not a string`);\n }\n }\n else if (isDefined(prenormData.templateUrl)) {\n if (typeof prenormData.templateUrl !== 'string') {\n throw syntaxError(`The templateUrl specified for component ${stringify(prenormData.componentType)} is not a string`);\n }\n }\n else {\n throw syntaxError(`No template specified for component ${stringify(prenormData.componentType)}`);\n }\n if (isDefined(prenormData.preserveWhitespaces) &&\n typeof prenormData.preserveWhitespaces !== 'boolean') {\n throw syntaxError(`The preserveWhitespaces option for component ${stringify(prenormData.componentType)} must be a boolean`);\n }\n return SyncAsync.then(this._preParseTemplate(prenormData), (preparsedTemplate) => this._normalizeTemplateMetadata(prenormData, preparsedTemplate));\n }\n /**\n * @param {?} prenomData\n * @return {?}\n */\n _preParseTemplate(prenomData) {\n let /** @type {?} */ template;\n let /** @type {?} */ templateUrl;\n if (prenomData.template != null) {\n template = prenomData.template;\n templateUrl = prenomData.moduleUrl;\n }\n else {\n templateUrl = this._urlResolver.resolve(prenomData.moduleUrl, /** @type {?} */ ((prenomData.templateUrl)));\n template = this._fetch(templateUrl);\n }\n return SyncAsync.then(template, (template) => this._preparseLoadedTemplate(prenomData, template, templateUrl));\n }\n /**\n * @param {?} prenormData\n * @param {?} template\n * @param {?} templateAbsUrl\n * @return {?}\n */\n _preparseLoadedTemplate(prenormData, template, templateAbsUrl) {\n const /** @type {?} */ isInline = !!prenormData.template;\n const /** @type {?} */ interpolationConfig = InterpolationConfig.fromArray(/** @type {?} */ ((prenormData.interpolation)));\n const /** @type {?} */ rootNodesAndErrors = this._htmlParser.parse(template, templateSourceUrl({ reference: prenormData.ngModuleType }, { type: { reference: prenormData.componentType } }, { isInline, templateUrl: templateAbsUrl }), true, interpolationConfig);\n if (rootNodesAndErrors.errors.length > 0) {\n const /** @type {?} */ errorString = rootNodesAndErrors.errors.join('\\n');\n throw syntaxError(`Template parse errors:\\n${errorString}`);\n }\n const /** @type {?} */ templateMetadataStyles = this._normalizeStylesheet(new CompileStylesheetMetadata({ styles: prenormData.styles, moduleUrl: prenormData.moduleUrl }));\n const /** @type {?} */ visitor = new TemplatePreparseVisitor();\n html.visitAll(visitor, rootNodesAndErrors.rootNodes);\n const /** @type {?} */ templateStyles = this._normalizeStylesheet(new CompileStylesheetMetadata({ styles: visitor.styles, styleUrls: visitor.styleUrls, moduleUrl: templateAbsUrl }));\n const /** @type {?} */ styles = templateMetadataStyles.styles.concat(templateStyles.styles);\n const /** @type {?} */ inlineStyleUrls = templateMetadataStyles.styleUrls.concat(templateStyles.styleUrls);\n const /** @type {?} */ styleUrls = this\n ._normalizeStylesheet(new CompileStylesheetMetadata({ styleUrls: prenormData.styleUrls, moduleUrl: prenormData.moduleUrl }))\n .styleUrls;\n return {\n template,\n templateUrl: templateAbsUrl, isInline,\n htmlAst: rootNodesAndErrors, styles, inlineStyleUrls, styleUrls,\n ngContentSelectors: visitor.ngContentSelectors,\n };\n }\n /**\n * @param {?} prenormData\n * @param {?} preparsedTemplate\n * @return {?}\n */\n _normalizeTemplateMetadata(prenormData, preparsedTemplate) {\n return SyncAsync.then(this._loadMissingExternalStylesheets(preparsedTemplate.styleUrls.concat(preparsedTemplate.inlineStyleUrls)), (externalStylesheets) => this._normalizeLoadedTemplateMetadata(prenormData, preparsedTemplate, externalStylesheets));\n }\n /**\n * @param {?} prenormData\n * @param {?} preparsedTemplate\n * @param {?} stylesheets\n * @return {?}\n */\n _normalizeLoadedTemplateMetadata(prenormData, preparsedTemplate, stylesheets) {\n // Algorithm:\n // - produce exactly 1 entry per original styleUrl in\n // CompileTemplateMetadata.externalStylesheets whith all styles inlined\n // - inline all styles that are referenced by the template into CompileTemplateMetadata.styles.\n // Reason: be able to determine how many stylesheets there are even without loading\n // the template nor the stylesheets, so we can create a stub for TypeScript always synchronously\n // (as resouce loading may be async)\n const /** @type {?} */ styles = [...preparsedTemplate.styles];\n this._inlineStyles(preparsedTemplate.inlineStyleUrls, stylesheets, styles);\n const /** @type {?} */ styleUrls = preparsedTemplate.styleUrls;\n const /** @type {?} */ externalStylesheets = styleUrls.map(styleUrl => {\n const /** @type {?} */ stylesheet = /** @type {?} */ ((stylesheets.get(styleUrl)));\n const /** @type {?} */ styles = [...stylesheet.styles];\n this._inlineStyles(stylesheet.styleUrls, stylesheets, styles);\n return new CompileStylesheetMetadata({ moduleUrl: styleUrl, styles: styles });\n });\n let /** @type {?} */ encapsulation = prenormData.encapsulation;\n if (encapsulation == null) {\n encapsulation = this._config.defaultEncapsulation;\n }\n if (encapsulation === ViewEncapsulation.Emulated && styles.length === 0 &&\n styleUrls.length === 0) {\n encapsulation = ViewEncapsulation.None;\n }\n return new CompileTemplateMetadata({\n encapsulation,\n template: preparsedTemplate.template,\n templateUrl: preparsedTemplate.templateUrl,\n htmlAst: preparsedTemplate.htmlAst, styles, styleUrls,\n ngContentSelectors: preparsedTemplate.ngContentSelectors,\n animations: prenormData.animations,\n interpolation: prenormData.interpolation,\n isInline: preparsedTemplate.isInline, externalStylesheets,\n preserveWhitespaces: preserveWhitespacesDefault(prenormData.preserveWhitespaces, this._config.preserveWhitespaces),\n });\n }\n /**\n * @param {?} styleUrls\n * @param {?} stylesheets\n * @param {?} targetStyles\n * @return {?}\n */\n _inlineStyles(styleUrls, stylesheets, targetStyles) {\n styleUrls.forEach(styleUrl => {\n const /** @type {?} */ stylesheet = /** @type {?} */ ((stylesheets.get(styleUrl)));\n stylesheet.styles.forEach(style => targetStyles.push(style));\n this._inlineStyles(stylesheet.styleUrls, stylesheets, targetStyles);\n });\n }\n /**\n * @param {?} styleUrls\n * @param {?=} loadedStylesheets\n * @return {?}\n */\n _loadMissingExternalStylesheets(styleUrls, loadedStylesheets = new Map()) {\n return SyncAsync.then(SyncAsync.all(styleUrls.filter((styleUrl) => !loadedStylesheets.has(styleUrl))\n .map(styleUrl => SyncAsync.then(this._fetch(styleUrl), (loadedStyle) => {\n const /** @type {?} */ stylesheet = this._normalizeStylesheet(new CompileStylesheetMetadata({ styles: [loadedStyle], moduleUrl: styleUrl }));\n loadedStylesheets.set(styleUrl, stylesheet);\n return this._loadMissingExternalStylesheets(stylesheet.styleUrls, loadedStylesheets);\n }))), (_) => loadedStylesheets);\n }\n /**\n * @param {?} stylesheet\n * @return {?}\n */\n _normalizeStylesheet(stylesheet) {\n const /** @type {?} */ moduleUrl = /** @type {?} */ ((stylesheet.moduleUrl));\n const /** @type {?} */ allStyleUrls = stylesheet.styleUrls.filter(isStyleUrlResolvable)\n .map(url => this._urlResolver.resolve(moduleUrl, url));\n const /** @type {?} */ allStyles = stylesheet.styles.map(style => {\n const /** @type {?} */ styleWithImports = extractStyleUrls(this._urlResolver, moduleUrl, style);\n allStyleUrls.push(...styleWithImports.styleUrls);\n return styleWithImports.style;\n });\n return new CompileStylesheetMetadata({ styles: allStyles, styleUrls: allStyleUrls, moduleUrl: moduleUrl });\n }\n}\nfunction DirectiveNormalizer_tsickle_Closure_declarations() {\n /** @type {?} */\n DirectiveNormalizer.prototype._resourceLoaderCache;\n /** @type {?} */\n DirectiveNormalizer.prototype._resourceLoader;\n /** @type {?} */\n DirectiveNormalizer.prototype._urlResolver;\n /** @type {?} */\n DirectiveNormalizer.prototype._htmlParser;\n /** @type {?} */\n DirectiveNormalizer.prototype._config;\n}\n/**\n * @record\n */\nfunction PreparsedTemplate() { }\nfunction PreparsedTemplate_tsickle_Closure_declarations() {\n /** @type {?} */\n PreparsedTemplate.prototype.template;\n /** @type {?} */\n PreparsedTemplate.prototype.templateUrl;\n /** @type {?} */\n PreparsedTemplate.prototype.isInline;\n /** @type {?} */\n PreparsedTemplate.prototype.htmlAst;\n /** @type {?} */\n PreparsedTemplate.prototype.styles;\n /** @type {?} */\n PreparsedTemplate.prototype.inlineStyleUrls;\n /** @type {?} */\n PreparsedTemplate.prototype.styleUrls;\n /** @type {?} */\n PreparsedTemplate.prototype.ngContentSelectors;\n}\nclass TemplatePreparseVisitor {\n constructor() {\n this.ngContentSelectors = [];\n this.styles = [];\n this.styleUrls = [];\n this.ngNonBindableStackCount = 0;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitElement(ast, context) {\n const /** @type {?} */ preparsedElement = preparseElement(ast);\n switch (preparsedElement.type) {\n case PreparsedElementType.NG_CONTENT:\n if (this.ngNonBindableStackCount === 0) {\n this.ngContentSelectors.push(preparsedElement.selectAttr);\n }\n break;\n case PreparsedElementType.STYLE:\n let /** @type {?} */ textContent = '';\n ast.children.forEach(child => {\n if (child instanceof html.Text) {\n textContent += child.value;\n }\n });\n this.styles.push(textContent);\n break;\n case PreparsedElementType.STYLESHEET:\n this.styleUrls.push(preparsedElement.hrefAttr);\n break;\n default:\n break;\n }\n if (preparsedElement.nonBindable) {\n this.ngNonBindableStackCount++;\n }\n html.visitAll(this, ast.children);\n if (preparsedElement.nonBindable) {\n this.ngNonBindableStackCount--;\n }\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitExpansion(ast, context) { html.visitAll(this, ast.cases); }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(ast, context) {\n html.visitAll(this, ast.expression);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitComment(ast, context) { return null; }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitAttribute(ast, context) { return null; }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitText(ast, context) { return null; }\n}\nfunction TemplatePreparseVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n TemplatePreparseVisitor.prototype.ngContentSelectors;\n /** @type {?} */\n TemplatePreparseVisitor.prototype.styles;\n /** @type {?} */\n TemplatePreparseVisitor.prototype.styleUrls;\n /** @type {?} */\n TemplatePreparseVisitor.prototype.ngNonBindableStackCount;\n}\n//# sourceMappingURL=directive_normalizer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { createComponent, createContentChild, createContentChildren, createDirective, createHostBinding, createHostListener, createInput, createOutput, createViewChild, createViewChildren } from './core';\nimport { resolveForwardRef, splitAtColon, stringify } from './util';\nconst /** @type {?} */ QUERY_METADATA_IDENTIFIERS = [\n createViewChild,\n createViewChildren,\n createContentChild,\n createContentChildren,\n];\nexport class DirectiveResolver {\n /**\n * @param {?} _reflector\n */\n constructor(_reflector) {\n this._reflector = _reflector;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n isDirective(type) {\n const /** @type {?} */ typeMetadata = this._reflector.annotations(resolveForwardRef(type));\n return typeMetadata && typeMetadata.some(isDirectiveMetadata);\n }\n /**\n * @param {?} type\n * @param {?=} throwIfNotFound\n * @return {?}\n */\n resolve(type, throwIfNotFound = true) {\n const /** @type {?} */ typeMetadata = this._reflector.annotations(resolveForwardRef(type));\n if (typeMetadata) {\n const /** @type {?} */ metadata = findLast(typeMetadata, isDirectiveMetadata);\n if (metadata) {\n const /** @type {?} */ propertyMetadata = this._reflector.propMetadata(type);\n const /** @type {?} */ guards = this._reflector.guards(type);\n return this._mergeWithPropertyMetadata(metadata, propertyMetadata, guards, type);\n }\n }\n if (throwIfNotFound) {\n throw new Error(`No Directive annotation found on ${stringify(type)}`);\n }\n return null;\n }\n /**\n * @param {?} dm\n * @param {?} propertyMetadata\n * @param {?} guards\n * @param {?} directiveType\n * @return {?}\n */\n _mergeWithPropertyMetadata(dm, propertyMetadata, guards, directiveType) {\n const /** @type {?} */ inputs = [];\n const /** @type {?} */ outputs = [];\n const /** @type {?} */ host = {};\n const /** @type {?} */ queries = {};\n Object.keys(propertyMetadata).forEach((propName) => {\n const /** @type {?} */ input = findLast(propertyMetadata[propName], (a) => createInput.isTypeOf(a));\n if (input) {\n if (input.bindingPropertyName) {\n inputs.push(`${propName}: ${input.bindingPropertyName}`);\n }\n else {\n inputs.push(propName);\n }\n }\n const /** @type {?} */ output = findLast(propertyMetadata[propName], (a) => createOutput.isTypeOf(a));\n if (output) {\n if (output.bindingPropertyName) {\n outputs.push(`${propName}: ${output.bindingPropertyName}`);\n }\n else {\n outputs.push(propName);\n }\n }\n const /** @type {?} */ hostBindings = propertyMetadata[propName].filter(a => createHostBinding.isTypeOf(a));\n hostBindings.forEach(hostBinding => {\n if (hostBinding.hostPropertyName) {\n const /** @type {?} */ startWith = hostBinding.hostPropertyName[0];\n if (startWith === '(') {\n throw new Error(`@HostBinding can not bind to events. Use @HostListener instead.`);\n }\n else if (startWith === '[') {\n throw new Error(`@HostBinding parameter should be a property name, 'class.<name>', or 'attr.<name>'.`);\n }\n host[`[${hostBinding.hostPropertyName}]`] = propName;\n }\n else {\n host[`[${propName}]`] = propName;\n }\n });\n const /** @type {?} */ hostListeners = propertyMetadata[propName].filter(a => createHostListener.isTypeOf(a));\n hostListeners.forEach(hostListener => {\n const /** @type {?} */ args = hostListener.args || [];\n host[`(${hostListener.eventName})`] = `${propName}(${args.join(',')})`;\n });\n const /** @type {?} */ query = findLast(propertyMetadata[propName], (a) => QUERY_METADATA_IDENTIFIERS.some(i => i.isTypeOf(a)));\n if (query) {\n queries[propName] = query;\n }\n });\n return this._merge(dm, inputs, outputs, host, queries, guards, directiveType);\n }\n /**\n * @param {?} def\n * @return {?}\n */\n _extractPublicName(def) { return splitAtColon(def, [/** @type {?} */ ((null)), def])[1].trim(); }\n /**\n * @param {?} bindings\n * @return {?}\n */\n _dedupeBindings(bindings) {\n const /** @type {?} */ names = new Set();\n const /** @type {?} */ publicNames = new Set();\n const /** @type {?} */ reversedResult = [];\n // go last to first to allow later entries to overwrite previous entries\n for (let /** @type {?} */ i = bindings.length - 1; i >= 0; i--) {\n const /** @type {?} */ binding = bindings[i];\n const /** @type {?} */ name = this._extractPublicName(binding);\n publicNames.add(name);\n if (!names.has(name)) {\n names.add(name);\n reversedResult.push(binding);\n }\n }\n return reversedResult.reverse();\n }\n /**\n * @param {?} directive\n * @param {?} inputs\n * @param {?} outputs\n * @param {?} host\n * @param {?} queries\n * @param {?} guards\n * @param {?} directiveType\n * @return {?}\n */\n _merge(directive, inputs, outputs, host, queries, guards, directiveType) {\n const /** @type {?} */ mergedInputs = this._dedupeBindings(directive.inputs ? directive.inputs.concat(inputs) : inputs);\n const /** @type {?} */ mergedOutputs = this._dedupeBindings(directive.outputs ? directive.outputs.concat(outputs) : outputs);\n const /** @type {?} */ mergedHost = directive.host ? Object.assign({}, directive.host, host) : host;\n const /** @type {?} */ mergedQueries = directive.queries ? Object.assign({}, directive.queries, queries) : queries;\n if (createComponent.isTypeOf(directive)) {\n const /** @type {?} */ comp = /** @type {?} */ (directive);\n return createComponent({\n selector: comp.selector,\n inputs: mergedInputs,\n outputs: mergedOutputs,\n host: mergedHost,\n exportAs: comp.exportAs,\n moduleId: comp.moduleId,\n queries: mergedQueries,\n changeDetection: comp.changeDetection,\n providers: comp.providers,\n viewProviders: comp.viewProviders,\n entryComponents: comp.entryComponents,\n template: comp.template,\n templateUrl: comp.templateUrl,\n styles: comp.styles,\n styleUrls: comp.styleUrls,\n encapsulation: comp.encapsulation,\n animations: comp.animations,\n interpolation: comp.interpolation,\n preserveWhitespaces: directive.preserveWhitespaces,\n });\n }\n else {\n return createDirective({\n selector: directive.selector,\n inputs: mergedInputs,\n outputs: mergedOutputs,\n host: mergedHost,\n exportAs: directive.exportAs,\n queries: mergedQueries,\n providers: directive.providers, guards\n });\n }\n }\n}\nfunction DirectiveResolver_tsickle_Closure_declarations() {\n /** @type {?} */\n DirectiveResolver.prototype._reflector;\n}\n/**\n * @param {?} type\n * @return {?}\n */\nfunction isDirectiveMetadata(type) {\n return createDirective.isTypeOf(type) || createComponent.isTypeOf(type);\n}\n/**\n * @template T\n * @param {?} arr\n * @param {?} condition\n * @return {?}\n */\nexport function findLast(arr, condition) {\n for (let /** @type {?} */ i = arr.length - 1; i >= 0; i--) {\n if (condition(arr[i])) {\n return arr[i];\n }\n }\n return null;\n}\n//# sourceMappingURL=directive_resolver.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport const /** @type {?} */ $EOF = 0;\nexport const /** @type {?} */ $TAB = 9;\nexport const /** @type {?} */ $LF = 10;\nexport const /** @type {?} */ $VTAB = 11;\nexport const /** @type {?} */ $FF = 12;\nexport const /** @type {?} */ $CR = 13;\nexport const /** @type {?} */ $SPACE = 32;\nexport const /** @type {?} */ $BANG = 33;\nexport const /** @type {?} */ $DQ = 34;\nexport const /** @type {?} */ $HASH = 35;\nexport const /** @type {?} */ $$ = 36;\nexport const /** @type {?} */ $PERCENT = 37;\nexport const /** @type {?} */ $AMPERSAND = 38;\nexport const /** @type {?} */ $SQ = 39;\nexport const /** @type {?} */ $LPAREN = 40;\nexport const /** @type {?} */ $RPAREN = 41;\nexport const /** @type {?} */ $STAR = 42;\nexport const /** @type {?} */ $PLUS = 43;\nexport const /** @type {?} */ $COMMA = 44;\nexport const /** @type {?} */ $MINUS = 45;\nexport const /** @type {?} */ $PERIOD = 46;\nexport const /** @type {?} */ $SLASH = 47;\nexport const /** @type {?} */ $COLON = 58;\nexport const /** @type {?} */ $SEMICOLON = 59;\nexport const /** @type {?} */ $LT = 60;\nexport const /** @type {?} */ $EQ = 61;\nexport const /** @type {?} */ $GT = 62;\nexport const /** @type {?} */ $QUESTION = 63;\nexport const /** @type {?} */ $0 = 48;\nexport const /** @type {?} */ $9 = 57;\nexport const /** @type {?} */ $A = 65;\nexport const /** @type {?} */ $E = 69;\nexport const /** @type {?} */ $F = 70;\nexport const /** @type {?} */ $X = 88;\nexport const /** @type {?} */ $Z = 90;\nexport const /** @type {?} */ $LBRACKET = 91;\nexport const /** @type {?} */ $BACKSLASH = 92;\nexport const /** @type {?} */ $RBRACKET = 93;\nexport const /** @type {?} */ $CARET = 94;\nexport const /** @type {?} */ $_ = 95;\nexport const /** @type {?} */ $a = 97;\nexport const /** @type {?} */ $e = 101;\nexport const /** @type {?} */ $f = 102;\nexport const /** @type {?} */ $n = 110;\nexport const /** @type {?} */ $r = 114;\nexport const /** @type {?} */ $t = 116;\nexport const /** @type {?} */ $u = 117;\nexport const /** @type {?} */ $v = 118;\nexport const /** @type {?} */ $x = 120;\nexport const /** @type {?} */ $z = 122;\nexport const /** @type {?} */ $LBRACE = 123;\nexport const /** @type {?} */ $BAR = 124;\nexport const /** @type {?} */ $RBRACE = 125;\nexport const /** @type {?} */ $NBSP = 160;\nexport const /** @type {?} */ $PIPE = 124;\nexport const /** @type {?} */ $TILDA = 126;\nexport const /** @type {?} */ $AT = 64;\nexport const /** @type {?} */ $BT = 96;\n/**\n * @param {?} code\n * @return {?}\n */\nexport function isWhitespace(code) {\n return (code >= $TAB && code <= $SPACE) || (code == $NBSP);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nexport function isDigit(code) {\n return $0 <= code && code <= $9;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nexport function isAsciiLetter(code) {\n return code >= $a && code <= $z || code >= $A && code <= $Z;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nexport function isAsciiHexDigit(code) {\n return code >= $a && code <= $f || code >= $A && code <= $F || isDigit(code);\n}\n//# sourceMappingURL=chars.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as chars from '../chars';\n/** @enum {number} */\nconst TokenType = {\n Character: 0,\n Identifier: 1,\n Keyword: 2,\n String: 3,\n Operator: 4,\n Number: 5,\n Error: 6,\n};\nexport { TokenType };\nTokenType[TokenType.Character] = \"Character\";\nTokenType[TokenType.Identifier] = \"Identifier\";\nTokenType[TokenType.Keyword] = \"Keyword\";\nTokenType[TokenType.String] = \"String\";\nTokenType[TokenType.Operator] = \"Operator\";\nTokenType[TokenType.Number] = \"Number\";\nTokenType[TokenType.Error] = \"Error\";\nconst /** @type {?} */ KEYWORDS = ['var', 'let', 'as', 'null', 'undefined', 'true', 'false', 'if', 'else', 'this'];\nexport class Lexer {\n /**\n * @param {?} text\n * @return {?}\n */\n tokenize(text) {\n const /** @type {?} */ scanner = new _Scanner(text);\n const /** @type {?} */ tokens = [];\n let /** @type {?} */ token = scanner.scanToken();\n while (token != null) {\n tokens.push(token);\n token = scanner.scanToken();\n }\n return tokens;\n }\n}\nexport class Token {\n /**\n * @param {?} index\n * @param {?} type\n * @param {?} numValue\n * @param {?} strValue\n */\n constructor(index, type, numValue, strValue) {\n this.index = index;\n this.type = type;\n this.numValue = numValue;\n this.strValue = strValue;\n }\n /**\n * @param {?} code\n * @return {?}\n */\n isCharacter(code) {\n return this.type == TokenType.Character && this.numValue == code;\n }\n /**\n * @return {?}\n */\n isNumber() { return this.type == TokenType.Number; }\n /**\n * @return {?}\n */\n isString() { return this.type == TokenType.String; }\n /**\n * @param {?} operater\n * @return {?}\n */\n isOperator(operater) {\n return this.type == TokenType.Operator && this.strValue == operater;\n }\n /**\n * @return {?}\n */\n isIdentifier() { return this.type == TokenType.Identifier; }\n /**\n * @return {?}\n */\n isKeyword() { return this.type == TokenType.Keyword; }\n /**\n * @return {?}\n */\n isKeywordLet() { return this.type == TokenType.Keyword && this.strValue == 'let'; }\n /**\n * @return {?}\n */\n isKeywordAs() { return this.type == TokenType.Keyword && this.strValue == 'as'; }\n /**\n * @return {?}\n */\n isKeywordNull() { return this.type == TokenType.Keyword && this.strValue == 'null'; }\n /**\n * @return {?}\n */\n isKeywordUndefined() {\n return this.type == TokenType.Keyword && this.strValue == 'undefined';\n }\n /**\n * @return {?}\n */\n isKeywordTrue() { return this.type == TokenType.Keyword && this.strValue == 'true'; }\n /**\n * @return {?}\n */\n isKeywordFalse() { return this.type == TokenType.Keyword && this.strValue == 'false'; }\n /**\n * @return {?}\n */\n isKeywordThis() { return this.type == TokenType.Keyword && this.strValue == 'this'; }\n /**\n * @return {?}\n */\n isError() { return this.type == TokenType.Error; }\n /**\n * @return {?}\n */\n toNumber() { return this.type == TokenType.Number ? this.numValue : -1; }\n /**\n * @return {?}\n */\n toString() {\n switch (this.type) {\n case TokenType.Character:\n case TokenType.Identifier:\n case TokenType.Keyword:\n case TokenType.Operator:\n case TokenType.String:\n case TokenType.Error:\n return this.strValue;\n case TokenType.Number:\n return this.numValue.toString();\n default:\n return null;\n }\n }\n}\nfunction Token_tsickle_Closure_declarations() {\n /** @type {?} */\n Token.prototype.index;\n /** @type {?} */\n Token.prototype.type;\n /** @type {?} */\n Token.prototype.numValue;\n /** @type {?} */\n Token.prototype.strValue;\n}\n/**\n * @param {?} index\n * @param {?} code\n * @return {?}\n */\nfunction newCharacterToken(index, code) {\n return new Token(index, TokenType.Character, code, String.fromCharCode(code));\n}\n/**\n * @param {?} index\n * @param {?} text\n * @return {?}\n */\nfunction newIdentifierToken(index, text) {\n return new Token(index, TokenType.Identifier, 0, text);\n}\n/**\n * @param {?} index\n * @param {?} text\n * @return {?}\n */\nfunction newKeywordToken(index, text) {\n return new Token(index, TokenType.Keyword, 0, text);\n}\n/**\n * @param {?} index\n * @param {?} text\n * @return {?}\n */\nfunction newOperatorToken(index, text) {\n return new Token(index, TokenType.Operator, 0, text);\n}\n/**\n * @param {?} index\n * @param {?} text\n * @return {?}\n */\nfunction newStringToken(index, text) {\n return new Token(index, TokenType.String, 0, text);\n}\n/**\n * @param {?} index\n * @param {?} n\n * @return {?}\n */\nfunction newNumberToken(index, n) {\n return new Token(index, TokenType.Number, n, '');\n}\n/**\n * @param {?} index\n * @param {?} message\n * @return {?}\n */\nfunction newErrorToken(index, message) {\n return new Token(index, TokenType.Error, 0, message);\n}\nexport const /** @type {?} */ EOF = new Token(-1, TokenType.Character, 0, '');\nclass _Scanner {\n /**\n * @param {?} input\n */\n constructor(input) {\n this.input = input;\n this.peek = 0;\n this.index = -1;\n this.length = input.length;\n this.advance();\n }\n /**\n * @return {?}\n */\n advance() {\n this.peek = ++this.index >= this.length ? chars.$EOF : this.input.charCodeAt(this.index);\n }\n /**\n * @return {?}\n */\n scanToken() {\n const /** @type {?} */ input = this.input, /** @type {?} */ length = this.length;\n let /** @type {?} */ peek = this.peek, /** @type {?} */ index = this.index;\n // Skip whitespace.\n while (peek <= chars.$SPACE) {\n if (++index >= length) {\n peek = chars.$EOF;\n break;\n }\n else {\n peek = input.charCodeAt(index);\n }\n }\n this.peek = peek;\n this.index = index;\n if (index >= length) {\n return null;\n }\n // Handle identifiers and numbers.\n if (isIdentifierStart(peek))\n return this.scanIdentifier();\n if (chars.isDigit(peek))\n return this.scanNumber(index);\n const /** @type {?} */ start = index;\n switch (peek) {\n case chars.$PERIOD:\n this.advance();\n return chars.isDigit(this.peek) ? this.scanNumber(start) :\n newCharacterToken(start, chars.$PERIOD);\n case chars.$LPAREN:\n case chars.$RPAREN:\n case chars.$LBRACE:\n case chars.$RBRACE:\n case chars.$LBRACKET:\n case chars.$RBRACKET:\n case chars.$COMMA:\n case chars.$COLON:\n case chars.$SEMICOLON:\n return this.scanCharacter(start, peek);\n case chars.$SQ:\n case chars.$DQ:\n return this.scanString();\n case chars.$HASH:\n case chars.$PLUS:\n case chars.$MINUS:\n case chars.$STAR:\n case chars.$SLASH:\n case chars.$PERCENT:\n case chars.$CARET:\n return this.scanOperator(start, String.fromCharCode(peek));\n case chars.$QUESTION:\n return this.scanComplexOperator(start, '?', chars.$PERIOD, '.');\n case chars.$LT:\n case chars.$GT:\n return this.scanComplexOperator(start, String.fromCharCode(peek), chars.$EQ, '=');\n case chars.$BANG:\n case chars.$EQ:\n return this.scanComplexOperator(start, String.fromCharCode(peek), chars.$EQ, '=', chars.$EQ, '=');\n case chars.$AMPERSAND:\n return this.scanComplexOperator(start, '&', chars.$AMPERSAND, '&');\n case chars.$BAR:\n return this.scanComplexOperator(start, '|', chars.$BAR, '|');\n case chars.$NBSP:\n while (chars.isWhitespace(this.peek))\n this.advance();\n return this.scanToken();\n }\n this.advance();\n return this.error(`Unexpected character [${String.fromCharCode(peek)}]`, 0);\n }\n /**\n * @param {?} start\n * @param {?} code\n * @return {?}\n */\n scanCharacter(start, code) {\n this.advance();\n return newCharacterToken(start, code);\n }\n /**\n * @param {?} start\n * @param {?} str\n * @return {?}\n */\n scanOperator(start, str) {\n this.advance();\n return newOperatorToken(start, str);\n }\n /**\n * Tokenize a 2/3 char long operator\n *\n * @param {?} start start index in the expression\n * @param {?} one first symbol (always part of the operator)\n * @param {?} twoCode code point for the second symbol\n * @param {?} two second symbol (part of the operator when the second code point matches)\n * @param {?=} threeCode code point for the third symbol\n * @param {?=} three third symbol (part of the operator when provided and matches source expression)\n * @return {?}\n */\n scanComplexOperator(start, one, twoCode, two, threeCode, three) {\n this.advance();\n let /** @type {?} */ str = one;\n if (this.peek == twoCode) {\n this.advance();\n str += two;\n }\n if (threeCode != null && this.peek == threeCode) {\n this.advance();\n str += three;\n }\n return newOperatorToken(start, str);\n }\n /**\n * @return {?}\n */\n scanIdentifier() {\n const /** @type {?} */ start = this.index;\n this.advance();\n while (isIdentifierPart(this.peek))\n this.advance();\n const /** @type {?} */ str = this.input.substring(start, this.index);\n return KEYWORDS.indexOf(str) > -1 ? newKeywordToken(start, str) :\n newIdentifierToken(start, str);\n }\n /**\n * @param {?} start\n * @return {?}\n */\n scanNumber(start) {\n let /** @type {?} */ simple = (this.index === start);\n this.advance(); // Skip initial digit.\n while (true) {\n if (chars.isDigit(this.peek)) {\n // Do nothing.\n }\n else if (this.peek == chars.$PERIOD) {\n simple = false;\n }\n else if (isExponentStart(this.peek)) {\n this.advance();\n if (isExponentSign(this.peek))\n this.advance();\n if (!chars.isDigit(this.peek))\n return this.error('Invalid exponent', -1);\n simple = false;\n }\n else {\n break;\n }\n this.advance();\n }\n const /** @type {?} */ str = this.input.substring(start, this.index);\n const /** @type {?} */ value = simple ? parseIntAutoRadix(str) : parseFloat(str);\n return newNumberToken(start, value);\n }\n /**\n * @return {?}\n */\n scanString() {\n const /** @type {?} */ start = this.index;\n const /** @type {?} */ quote = this.peek;\n this.advance(); // Skip initial quote.\n let /** @type {?} */ buffer = '';\n let /** @type {?} */ marker = this.index;\n const /** @type {?} */ input = this.input;\n while (this.peek != quote) {\n if (this.peek == chars.$BACKSLASH) {\n buffer += input.substring(marker, this.index);\n this.advance();\n let /** @type {?} */ unescapedCode;\n // Workaround for TS2.1-introduced type strictness\n this.peek = this.peek;\n if (this.peek == chars.$u) {\n // 4 character hex code for unicode character.\n const /** @type {?} */ hex = input.substring(this.index + 1, this.index + 5);\n if (/^[0-9a-f]+$/i.test(hex)) {\n unescapedCode = parseInt(hex, 16);\n }\n else {\n return this.error(`Invalid unicode escape [\\\\u${hex}]`, 0);\n }\n for (let /** @type {?} */ i = 0; i < 5; i++) {\n this.advance();\n }\n }\n else {\n unescapedCode = unescape(this.peek);\n this.advance();\n }\n buffer += String.fromCharCode(unescapedCode);\n marker = this.index;\n }\n else if (this.peek == chars.$EOF) {\n return this.error('Unterminated quote', 0);\n }\n else {\n this.advance();\n }\n }\n const /** @type {?} */ last = input.substring(marker, this.index);\n this.advance(); // Skip terminating quote.\n return newStringToken(start, buffer + last);\n }\n /**\n * @param {?} message\n * @param {?} offset\n * @return {?}\n */\n error(message, offset) {\n const /** @type {?} */ position = this.index + offset;\n return newErrorToken(position, `Lexer Error: ${message} at column ${position} in expression [${this.input}]`);\n }\n}\nfunction _Scanner_tsickle_Closure_declarations() {\n /** @type {?} */\n _Scanner.prototype.length;\n /** @type {?} */\n _Scanner.prototype.peek;\n /** @type {?} */\n _Scanner.prototype.index;\n /** @type {?} */\n _Scanner.prototype.input;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isIdentifierStart(code) {\n return (chars.$a <= code && code <= chars.$z) || (chars.$A <= code && code <= chars.$Z) ||\n (code == chars.$_) || (code == chars.$$);\n}\n/**\n * @param {?} input\n * @return {?}\n */\nexport function isIdentifier(input) {\n if (input.length == 0)\n return false;\n const /** @type {?} */ scanner = new _Scanner(input);\n if (!isIdentifierStart(scanner.peek))\n return false;\n scanner.advance();\n while (scanner.peek !== chars.$EOF) {\n if (!isIdentifierPart(scanner.peek))\n return false;\n scanner.advance();\n }\n return true;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isIdentifierPart(code) {\n return chars.isAsciiLetter(code) || chars.isDigit(code) || (code == chars.$_) ||\n (code == chars.$$);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isExponentStart(code) {\n return code == chars.$e || code == chars.$E;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isExponentSign(code) {\n return code == chars.$MINUS || code == chars.$PLUS;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nexport function isQuote(code) {\n return code === chars.$SQ || code === chars.$DQ || code === chars.$BT;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction unescape(code) {\n switch (code) {\n case chars.$n:\n return chars.$LF;\n case chars.$f:\n return chars.$FF;\n case chars.$r:\n return chars.$CR;\n case chars.$t:\n return chars.$TAB;\n case chars.$v:\n return chars.$VTAB;\n default:\n return code;\n }\n}\n/**\n * @param {?} text\n * @return {?}\n */\nfunction parseIntAutoRadix(text) {\n const /** @type {?} */ result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n//# sourceMappingURL=lexer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport class ParserError {\n /**\n * @param {?} message\n * @param {?} input\n * @param {?} errLocation\n * @param {?=} ctxLocation\n */\n constructor(message, input, errLocation, ctxLocation) {\n this.input = input;\n this.errLocation = errLocation;\n this.ctxLocation = ctxLocation;\n this.message = `Parser Error: ${message} ${errLocation} [${input}] in ${ctxLocation}`;\n }\n}\nfunction ParserError_tsickle_Closure_declarations() {\n /** @type {?} */\n ParserError.prototype.message;\n /** @type {?} */\n ParserError.prototype.input;\n /** @type {?} */\n ParserError.prototype.errLocation;\n /** @type {?} */\n ParserError.prototype.ctxLocation;\n}\nexport class ParseSpan {\n /**\n * @param {?} start\n * @param {?} end\n */\n constructor(start, end) {\n this.start = start;\n this.end = end;\n }\n}\nfunction ParseSpan_tsickle_Closure_declarations() {\n /** @type {?} */\n ParseSpan.prototype.start;\n /** @type {?} */\n ParseSpan.prototype.end;\n}\nexport class AST {\n /**\n * @param {?} span\n */\n constructor(span) {\n this.span = span;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) { return null; }\n /**\n * @return {?}\n */\n toString() { return 'AST'; }\n}\nfunction AST_tsickle_Closure_declarations() {\n /** @type {?} */\n AST.prototype.span;\n}\n/**\n * Represents a quoted expression of the form:\n *\n * quote = prefix `:` uninterpretedExpression\n * prefix = identifier\n * uninterpretedExpression = arbitrary string\n *\n * A quoted expression is meant to be pre-processed by an AST transformer that\n * converts it into another AST that no longer contains quoted expressions.\n * It is meant to allow third-party developers to extend Angular template\n * expression language. The `uninterpretedExpression` part of the quote is\n * therefore not interpreted by the Angular's own expression parser.\n */\nexport class Quote extends AST {\n /**\n * @param {?} span\n * @param {?} prefix\n * @param {?} uninterpretedExpression\n * @param {?} location\n */\n constructor(span, prefix, uninterpretedExpression, location) {\n super(span);\n this.prefix = prefix;\n this.uninterpretedExpression = uninterpretedExpression;\n this.location = location;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) { return visitor.visitQuote(this, context); }\n /**\n * @return {?}\n */\n toString() { return 'Quote'; }\n}\nfunction Quote_tsickle_Closure_declarations() {\n /** @type {?} */\n Quote.prototype.prefix;\n /** @type {?} */\n Quote.prototype.uninterpretedExpression;\n /** @type {?} */\n Quote.prototype.location;\n}\nexport class EmptyExpr extends AST {\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n // do nothing\n }\n}\nexport class ImplicitReceiver extends AST {\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitImplicitReceiver(this, context);\n }\n}\n/**\n * Multiple expressions separated by a semicolon.\n */\nexport class Chain extends AST {\n /**\n * @param {?} span\n * @param {?} expressions\n */\n constructor(span, expressions) {\n super(span);\n this.expressions = expressions;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) { return visitor.visitChain(this, context); }\n}\nfunction Chain_tsickle_Closure_declarations() {\n /** @type {?} */\n Chain.prototype.expressions;\n}\nexport class Conditional extends AST {\n /**\n * @param {?} span\n * @param {?} condition\n * @param {?} trueExp\n * @param {?} falseExp\n */\n constructor(span, condition, trueExp, falseExp) {\n super(span);\n this.condition = condition;\n this.trueExp = trueExp;\n this.falseExp = falseExp;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitConditional(this, context);\n }\n}\nfunction Conditional_tsickle_Closure_declarations() {\n /** @type {?} */\n Conditional.prototype.condition;\n /** @type {?} */\n Conditional.prototype.trueExp;\n /** @type {?} */\n Conditional.prototype.falseExp;\n}\nexport class PropertyRead extends AST {\n /**\n * @param {?} span\n * @param {?} receiver\n * @param {?} name\n */\n constructor(span, receiver, name) {\n super(span);\n this.receiver = receiver;\n this.name = name;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitPropertyRead(this, context);\n }\n}\nfunction PropertyRead_tsickle_Closure_declarations() {\n /** @type {?} */\n PropertyRead.prototype.receiver;\n /** @type {?} */\n PropertyRead.prototype.name;\n}\nexport class PropertyWrite extends AST {\n /**\n * @param {?} span\n * @param {?} receiver\n * @param {?} name\n * @param {?} value\n */\n constructor(span, receiver, name, value) {\n super(span);\n this.receiver = receiver;\n this.name = name;\n this.value = value;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitPropertyWrite(this, context);\n }\n}\nfunction PropertyWrite_tsickle_Closure_declarations() {\n /** @type {?} */\n PropertyWrite.prototype.receiver;\n /** @type {?} */\n PropertyWrite.prototype.name;\n /** @type {?} */\n PropertyWrite.prototype.value;\n}\nexport class SafePropertyRead extends AST {\n /**\n * @param {?} span\n * @param {?} receiver\n * @param {?} name\n */\n constructor(span, receiver, name) {\n super(span);\n this.receiver = receiver;\n this.name = name;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitSafePropertyRead(this, context);\n }\n}\nfunction SafePropertyRead_tsickle_Closure_declarations() {\n /** @type {?} */\n SafePropertyRead.prototype.receiver;\n /** @type {?} */\n SafePropertyRead.prototype.name;\n}\nexport class KeyedRead extends AST {\n /**\n * @param {?} span\n * @param {?} obj\n * @param {?} key\n */\n constructor(span, obj, key) {\n super(span);\n this.obj = obj;\n this.key = key;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitKeyedRead(this, context);\n }\n}\nfunction KeyedRead_tsickle_Closure_declarations() {\n /** @type {?} */\n KeyedRead.prototype.obj;\n /** @type {?} */\n KeyedRead.prototype.key;\n}\nexport class KeyedWrite extends AST {\n /**\n * @param {?} span\n * @param {?} obj\n * @param {?} key\n * @param {?} value\n */\n constructor(span, obj, key, value) {\n super(span);\n this.obj = obj;\n this.key = key;\n this.value = value;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitKeyedWrite(this, context);\n }\n}\nfunction KeyedWrite_tsickle_Closure_declarations() {\n /** @type {?} */\n KeyedWrite.prototype.obj;\n /** @type {?} */\n KeyedWrite.prototype.key;\n /** @type {?} */\n KeyedWrite.prototype.value;\n}\nexport class BindingPipe extends AST {\n /**\n * @param {?} span\n * @param {?} exp\n * @param {?} name\n * @param {?} args\n */\n constructor(span, exp, name, args) {\n super(span);\n this.exp = exp;\n this.name = name;\n this.args = args;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) { return visitor.visitPipe(this, context); }\n}\nfunction BindingPipe_tsickle_Closure_declarations() {\n /** @type {?} */\n BindingPipe.prototype.exp;\n /** @type {?} */\n BindingPipe.prototype.name;\n /** @type {?} */\n BindingPipe.prototype.args;\n}\nexport class LiteralPrimitive extends AST {\n /**\n * @param {?} span\n * @param {?} value\n */\n constructor(span, value) {\n super(span);\n this.value = value;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitLiteralPrimitive(this, context);\n }\n}\nfunction LiteralPrimitive_tsickle_Closure_declarations() {\n /** @type {?} */\n LiteralPrimitive.prototype.value;\n}\nexport class LiteralArray extends AST {\n /**\n * @param {?} span\n * @param {?} expressions\n */\n constructor(span, expressions) {\n super(span);\n this.expressions = expressions;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitLiteralArray(this, context);\n }\n}\nfunction LiteralArray_tsickle_Closure_declarations() {\n /** @type {?} */\n LiteralArray.prototype.expressions;\n}\nexport class LiteralMap extends AST {\n /**\n * @param {?} span\n * @param {?} keys\n * @param {?} values\n */\n constructor(span, keys, values) {\n super(span);\n this.keys = keys;\n this.values = values;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitLiteralMap(this, context);\n }\n}\nfunction LiteralMap_tsickle_Closure_declarations() {\n /** @type {?} */\n LiteralMap.prototype.keys;\n /** @type {?} */\n LiteralMap.prototype.values;\n}\nexport class Interpolation extends AST {\n /**\n * @param {?} span\n * @param {?} strings\n * @param {?} expressions\n */\n constructor(span, strings, expressions) {\n super(span);\n this.strings = strings;\n this.expressions = expressions;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitInterpolation(this, context);\n }\n}\nfunction Interpolation_tsickle_Closure_declarations() {\n /** @type {?} */\n Interpolation.prototype.strings;\n /** @type {?} */\n Interpolation.prototype.expressions;\n}\nexport class Binary extends AST {\n /**\n * @param {?} span\n * @param {?} operation\n * @param {?} left\n * @param {?} right\n */\n constructor(span, operation, left, right) {\n super(span);\n this.operation = operation;\n this.left = left;\n this.right = right;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitBinary(this, context);\n }\n}\nfunction Binary_tsickle_Closure_declarations() {\n /** @type {?} */\n Binary.prototype.operation;\n /** @type {?} */\n Binary.prototype.left;\n /** @type {?} */\n Binary.prototype.right;\n}\nexport class PrefixNot extends AST {\n /**\n * @param {?} span\n * @param {?} expression\n */\n constructor(span, expression) {\n super(span);\n this.expression = expression;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitPrefixNot(this, context);\n }\n}\nfunction PrefixNot_tsickle_Closure_declarations() {\n /** @type {?} */\n PrefixNot.prototype.expression;\n}\nexport class NonNullAssert extends AST {\n /**\n * @param {?} span\n * @param {?} expression\n */\n constructor(span, expression) {\n super(span);\n this.expression = expression;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitNonNullAssert(this, context);\n }\n}\nfunction NonNullAssert_tsickle_Closure_declarations() {\n /** @type {?} */\n NonNullAssert.prototype.expression;\n}\nexport class MethodCall extends AST {\n /**\n * @param {?} span\n * @param {?} receiver\n * @param {?} name\n * @param {?} args\n */\n constructor(span, receiver, name, args) {\n super(span);\n this.receiver = receiver;\n this.name = name;\n this.args = args;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitMethodCall(this, context);\n }\n}\nfunction MethodCall_tsickle_Closure_declarations() {\n /** @type {?} */\n MethodCall.prototype.receiver;\n /** @type {?} */\n MethodCall.prototype.name;\n /** @type {?} */\n MethodCall.prototype.args;\n}\nexport class SafeMethodCall extends AST {\n /**\n * @param {?} span\n * @param {?} receiver\n * @param {?} name\n * @param {?} args\n */\n constructor(span, receiver, name, args) {\n super(span);\n this.receiver = receiver;\n this.name = name;\n this.args = args;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitSafeMethodCall(this, context);\n }\n}\nfunction SafeMethodCall_tsickle_Closure_declarations() {\n /** @type {?} */\n SafeMethodCall.prototype.receiver;\n /** @type {?} */\n SafeMethodCall.prototype.name;\n /** @type {?} */\n SafeMethodCall.prototype.args;\n}\nexport class FunctionCall extends AST {\n /**\n * @param {?} span\n * @param {?} target\n * @param {?} args\n */\n constructor(span, target, args) {\n super(span);\n this.target = target;\n this.args = args;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) {\n return visitor.visitFunctionCall(this, context);\n }\n}\nfunction FunctionCall_tsickle_Closure_declarations() {\n /** @type {?} */\n FunctionCall.prototype.target;\n /** @type {?} */\n FunctionCall.prototype.args;\n}\nexport class ASTWithSource extends AST {\n /**\n * @param {?} ast\n * @param {?} source\n * @param {?} location\n * @param {?} errors\n */\n constructor(ast, source, location, errors) {\n super(new ParseSpan(0, source == null ? 0 : source.length));\n this.ast = ast;\n this.source = source;\n this.location = location;\n this.errors = errors;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context = null) { return this.ast.visit(visitor, context); }\n /**\n * @return {?}\n */\n toString() { return `${this.source} in ${this.location}`; }\n}\nfunction ASTWithSource_tsickle_Closure_declarations() {\n /** @type {?} */\n ASTWithSource.prototype.ast;\n /** @type {?} */\n ASTWithSource.prototype.source;\n /** @type {?} */\n ASTWithSource.prototype.location;\n /** @type {?} */\n ASTWithSource.prototype.errors;\n}\nexport class TemplateBinding {\n /**\n * @param {?} span\n * @param {?} key\n * @param {?} keyIsVar\n * @param {?} name\n * @param {?} expression\n */\n constructor(span, key, keyIsVar, name, expression) {\n this.span = span;\n this.key = key;\n this.keyIsVar = keyIsVar;\n this.name = name;\n this.expression = expression;\n }\n}\nfunction TemplateBinding_tsickle_Closure_declarations() {\n /** @type {?} */\n TemplateBinding.prototype.span;\n /** @type {?} */\n TemplateBinding.prototype.key;\n /** @type {?} */\n TemplateBinding.prototype.keyIsVar;\n /** @type {?} */\n TemplateBinding.prototype.name;\n /** @type {?} */\n TemplateBinding.prototype.expression;\n}\n/**\n * @record\n */\nexport function AstVisitor() { }\nfunction AstVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n AstVisitor.prototype.visitBinary;\n /** @type {?} */\n AstVisitor.prototype.visitChain;\n /** @type {?} */\n AstVisitor.prototype.visitConditional;\n /** @type {?} */\n AstVisitor.prototype.visitFunctionCall;\n /** @type {?} */\n AstVisitor.prototype.visitImplicitReceiver;\n /** @type {?} */\n AstVisitor.prototype.visitInterpolation;\n /** @type {?} */\n AstVisitor.prototype.visitKeyedRead;\n /** @type {?} */\n AstVisitor.prototype.visitKeyedWrite;\n /** @type {?} */\n AstVisitor.prototype.visitLiteralArray;\n /** @type {?} */\n AstVisitor.prototype.visitLiteralMap;\n /** @type {?} */\n AstVisitor.prototype.visitLiteralPrimitive;\n /** @type {?} */\n AstVisitor.prototype.visitMethodCall;\n /** @type {?} */\n AstVisitor.prototype.visitPipe;\n /** @type {?} */\n AstVisitor.prototype.visitPrefixNot;\n /** @type {?} */\n AstVisitor.prototype.visitNonNullAssert;\n /** @type {?} */\n AstVisitor.prototype.visitPropertyRead;\n /** @type {?} */\n AstVisitor.prototype.visitPropertyWrite;\n /** @type {?} */\n AstVisitor.prototype.visitQuote;\n /** @type {?} */\n AstVisitor.prototype.visitSafeMethodCall;\n /** @type {?} */\n AstVisitor.prototype.visitSafePropertyRead;\n /** @type {?|undefined} */\n AstVisitor.prototype.visit;\n}\nexport class NullAstVisitor {\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitBinary(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitChain(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitConditional(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitFunctionCall(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitImplicitReceiver(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitInterpolation(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitKeyedRead(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitKeyedWrite(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralArray(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralMap(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralPrimitive(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitMethodCall(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPipe(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPrefixNot(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitNonNullAssert(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPropertyRead(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPropertyWrite(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitQuote(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitSafeMethodCall(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitSafePropertyRead(ast, context) { }\n}\nexport class RecursiveAstVisitor {\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitBinary(ast, context) {\n ast.left.visit(this);\n ast.right.visit(this);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitChain(ast, context) { return this.visitAll(ast.expressions, context); }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitConditional(ast, context) {\n ast.condition.visit(this);\n ast.trueExp.visit(this);\n ast.falseExp.visit(this);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPipe(ast, context) {\n ast.exp.visit(this);\n this.visitAll(ast.args, context);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitFunctionCall(ast, context) {\n /** @type {?} */ ((ast.target)).visit(this);\n this.visitAll(ast.args, context);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitImplicitReceiver(ast, context) { return null; }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitInterpolation(ast, context) {\n return this.visitAll(ast.expressions, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitKeyedRead(ast, context) {\n ast.obj.visit(this);\n ast.key.visit(this);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitKeyedWrite(ast, context) {\n ast.obj.visit(this);\n ast.key.visit(this);\n ast.value.visit(this);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralArray(ast, context) {\n return this.visitAll(ast.expressions, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralMap(ast, context) { return this.visitAll(ast.values, context); }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralPrimitive(ast, context) { return null; }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitMethodCall(ast, context) {\n ast.receiver.visit(this);\n return this.visitAll(ast.args, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPrefixNot(ast, context) {\n ast.expression.visit(this);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitNonNullAssert(ast, context) {\n ast.expression.visit(this);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPropertyRead(ast, context) {\n ast.receiver.visit(this);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPropertyWrite(ast, context) {\n ast.receiver.visit(this);\n ast.value.visit(this);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitSafePropertyRead(ast, context) {\n ast.receiver.visit(this);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitSafeMethodCall(ast, context) {\n ast.receiver.visit(this);\n return this.visitAll(ast.args, context);\n }\n /**\n * @param {?} asts\n * @param {?} context\n * @return {?}\n */\n visitAll(asts, context) {\n asts.forEach(ast => ast.visit(this, context));\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitQuote(ast, context) { return null; }\n}\nexport class AstTransformer {\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitImplicitReceiver(ast, context) { return ast; }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitInterpolation(ast, context) {\n return new Interpolation(ast.span, ast.strings, this.visitAll(ast.expressions));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralPrimitive(ast, context) {\n return new LiteralPrimitive(ast.span, ast.value);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPropertyRead(ast, context) {\n return new PropertyRead(ast.span, ast.receiver.visit(this), ast.name);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPropertyWrite(ast, context) {\n return new PropertyWrite(ast.span, ast.receiver.visit(this), ast.name, ast.value.visit(this));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitSafePropertyRead(ast, context) {\n return new SafePropertyRead(ast.span, ast.receiver.visit(this), ast.name);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitMethodCall(ast, context) {\n return new MethodCall(ast.span, ast.receiver.visit(this), ast.name, this.visitAll(ast.args));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitSafeMethodCall(ast, context) {\n return new SafeMethodCall(ast.span, ast.receiver.visit(this), ast.name, this.visitAll(ast.args));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitFunctionCall(ast, context) {\n return new FunctionCall(ast.span, /** @type {?} */ ((ast.target)).visit(this), this.visitAll(ast.args));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralArray(ast, context) {\n return new LiteralArray(ast.span, this.visitAll(ast.expressions));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralMap(ast, context) {\n return new LiteralMap(ast.span, ast.keys, this.visitAll(ast.values));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitBinary(ast, context) {\n return new Binary(ast.span, ast.operation, ast.left.visit(this), ast.right.visit(this));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPrefixNot(ast, context) {\n return new PrefixNot(ast.span, ast.expression.visit(this));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitNonNullAssert(ast, context) {\n return new NonNullAssert(ast.span, ast.expression.visit(this));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitConditional(ast, context) {\n return new Conditional(ast.span, ast.condition.visit(this), ast.trueExp.visit(this), ast.falseExp.visit(this));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPipe(ast, context) {\n return new BindingPipe(ast.span, ast.exp.visit(this), ast.name, this.visitAll(ast.args));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitKeyedRead(ast, context) {\n return new KeyedRead(ast.span, ast.obj.visit(this), ast.key.visit(this));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitKeyedWrite(ast, context) {\n return new KeyedWrite(ast.span, ast.obj.visit(this), ast.key.visit(this), ast.value.visit(this));\n }\n /**\n * @param {?} asts\n * @return {?}\n */\n visitAll(asts) {\n const /** @type {?} */ res = new Array(asts.length);\n for (let /** @type {?} */ i = 0; i < asts.length; ++i) {\n res[i] = asts[i].visit(this);\n }\n return res;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitChain(ast, context) {\n return new Chain(ast.span, this.visitAll(ast.expressions));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitQuote(ast, context) {\n return new Quote(ast.span, ast.prefix, ast.uninterpretedExpression, ast.location);\n }\n}\n/**\n * @param {?} ast\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\nexport function visitAstChildren(ast, visitor, context) {\n /**\n * @param {?} ast\n * @return {?}\n */\n function visit(ast) {\n visitor.visit && visitor.visit(ast, context) || ast.visit(visitor, context);\n }\n /**\n * @template T\n * @param {?} asts\n * @return {?}\n */\n function visitAll(asts) { asts.forEach(visit); }\n ast.visit({\n /**\n * @param {?} ast\n * @return {?}\n */\n visitBinary(ast) {\n visit(ast.left);\n visit(ast.right);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitChain(ast) { visitAll(ast.expressions); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitConditional(ast) {\n visit(ast.condition);\n visit(ast.trueExp);\n visit(ast.falseExp);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitFunctionCall(ast) {\n if (ast.target) {\n visit(ast.target);\n }\n visitAll(ast.args);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitImplicitReceiver(ast) { },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitInterpolation(ast) { visitAll(ast.expressions); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitKeyedRead(ast) {\n visit(ast.obj);\n visit(ast.key);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitKeyedWrite(ast) {\n visit(ast.obj);\n visit(ast.key);\n visit(ast.obj);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralArray(ast) { visitAll(ast.expressions); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralMap(ast) { },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralPrimitive(ast) { },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitMethodCall(ast) {\n visit(ast.receiver);\n visitAll(ast.args);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPipe(ast) {\n visit(ast.exp);\n visitAll(ast.args);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPrefixNot(ast) { visit(ast.expression); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitNonNullAssert(ast) { visit(ast.expression); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPropertyRead(ast) { visit(ast.receiver); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPropertyWrite(ast) {\n visit(ast.receiver);\n visit(ast.value);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitQuote(ast) { },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitSafeMethodCall(ast) {\n visit(ast.receiver);\n visitAll(ast.args);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitSafePropertyRead(ast) { visit(ast.receiver); },\n });\n}\n//# sourceMappingURL=ast.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as chars from '../chars';\nimport { DEFAULT_INTERPOLATION_CONFIG } from '../ml_parser/interpolation_config';\nimport { escapeRegExp } from '../util';\nimport { ASTWithSource, Binary, BindingPipe, Chain, Conditional, EmptyExpr, FunctionCall, ImplicitReceiver, Interpolation, KeyedRead, KeyedWrite, LiteralArray, LiteralMap, LiteralPrimitive, MethodCall, NonNullAssert, ParseSpan, ParserError, PrefixNot, PropertyRead, PropertyWrite, Quote, SafeMethodCall, SafePropertyRead, TemplateBinding } from './ast';\nimport { EOF, TokenType, isIdentifier, isQuote } from './lexer';\nexport class SplitInterpolation {\n /**\n * @param {?} strings\n * @param {?} expressions\n * @param {?} offsets\n */\n constructor(strings, expressions, offsets) {\n this.strings = strings;\n this.expressions = expressions;\n this.offsets = offsets;\n }\n}\nfunction SplitInterpolation_tsickle_Closure_declarations() {\n /** @type {?} */\n SplitInterpolation.prototype.strings;\n /** @type {?} */\n SplitInterpolation.prototype.expressions;\n /** @type {?} */\n SplitInterpolation.prototype.offsets;\n}\nexport class TemplateBindingParseResult {\n /**\n * @param {?} templateBindings\n * @param {?} warnings\n * @param {?} errors\n */\n constructor(templateBindings, warnings, errors) {\n this.templateBindings = templateBindings;\n this.warnings = warnings;\n this.errors = errors;\n }\n}\nfunction TemplateBindingParseResult_tsickle_Closure_declarations() {\n /** @type {?} */\n TemplateBindingParseResult.prototype.templateBindings;\n /** @type {?} */\n TemplateBindingParseResult.prototype.warnings;\n /** @type {?} */\n TemplateBindingParseResult.prototype.errors;\n}\n/**\n * @param {?} config\n * @return {?}\n */\nfunction _createInterpolateRegExp(config) {\n const /** @type {?} */ pattern = escapeRegExp(config.start) + '([\\\\s\\\\S]*?)' + escapeRegExp(config.end);\n return new RegExp(pattern, 'g');\n}\nexport class Parser {\n /**\n * @param {?} _lexer\n */\n constructor(_lexer) {\n this._lexer = _lexer;\n this.errors = [];\n }\n /**\n * @param {?} input\n * @param {?} location\n * @param {?=} interpolationConfig\n * @return {?}\n */\n parseAction(input, location, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {\n this._checkNoInterpolation(input, location, interpolationConfig);\n const /** @type {?} */ sourceToLex = this._stripComments(input);\n const /** @type {?} */ tokens = this._lexer.tokenize(this._stripComments(input));\n const /** @type {?} */ ast = new _ParseAST(input, location, tokens, sourceToLex.length, true, this.errors, input.length - sourceToLex.length)\n .parseChain();\n return new ASTWithSource(ast, input, location, this.errors);\n }\n /**\n * @param {?} input\n * @param {?} location\n * @param {?=} interpolationConfig\n * @return {?}\n */\n parseBinding(input, location, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {\n const /** @type {?} */ ast = this._parseBindingAst(input, location, interpolationConfig);\n return new ASTWithSource(ast, input, location, this.errors);\n }\n /**\n * @param {?} input\n * @param {?} location\n * @param {?=} interpolationConfig\n * @return {?}\n */\n parseSimpleBinding(input, location, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {\n const /** @type {?} */ ast = this._parseBindingAst(input, location, interpolationConfig);\n const /** @type {?} */ errors = SimpleExpressionChecker.check(ast);\n if (errors.length > 0) {\n this._reportError(`Host binding expression cannot contain ${errors.join(' ')}`, input, location);\n }\n return new ASTWithSource(ast, input, location, this.errors);\n }\n /**\n * @param {?} message\n * @param {?} input\n * @param {?} errLocation\n * @param {?=} ctxLocation\n * @return {?}\n */\n _reportError(message, input, errLocation, ctxLocation) {\n this.errors.push(new ParserError(message, input, errLocation, ctxLocation));\n }\n /**\n * @param {?} input\n * @param {?} location\n * @param {?} interpolationConfig\n * @return {?}\n */\n _parseBindingAst(input, location, interpolationConfig) {\n // Quotes expressions use 3rd-party expression language. We don't want to use\n // our lexer or parser for that, so we check for that ahead of time.\n const /** @type {?} */ quote = this._parseQuote(input, location);\n if (quote != null) {\n return quote;\n }\n this._checkNoInterpolation(input, location, interpolationConfig);\n const /** @type {?} */ sourceToLex = this._stripComments(input);\n const /** @type {?} */ tokens = this._lexer.tokenize(sourceToLex);\n return new _ParseAST(input, location, tokens, sourceToLex.length, false, this.errors, input.length - sourceToLex.length)\n .parseChain();\n }\n /**\n * @param {?} input\n * @param {?} location\n * @return {?}\n */\n _parseQuote(input, location) {\n if (input == null)\n return null;\n const /** @type {?} */ prefixSeparatorIndex = input.indexOf(':');\n if (prefixSeparatorIndex == -1)\n return null;\n const /** @type {?} */ prefix = input.substring(0, prefixSeparatorIndex).trim();\n if (!isIdentifier(prefix))\n return null;\n const /** @type {?} */ uninterpretedExpression = input.substring(prefixSeparatorIndex + 1);\n return new Quote(new ParseSpan(0, input.length), prefix, uninterpretedExpression, location);\n }\n /**\n * @param {?} prefixToken\n * @param {?} input\n * @param {?} location\n * @return {?}\n */\n parseTemplateBindings(prefixToken, input, location) {\n const /** @type {?} */ tokens = this._lexer.tokenize(input);\n if (prefixToken) {\n // Prefix the tokens with the tokens from prefixToken but have them take no space (0 index).\n const /** @type {?} */ prefixTokens = this._lexer.tokenize(prefixToken).map(t => {\n t.index = 0;\n return t;\n });\n tokens.unshift(...prefixTokens);\n }\n return new _ParseAST(input, location, tokens, input.length, false, this.errors, 0)\n .parseTemplateBindings();\n }\n /**\n * @param {?} input\n * @param {?} location\n * @param {?=} interpolationConfig\n * @return {?}\n */\n parseInterpolation(input, location, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {\n const /** @type {?} */ split = this.splitInterpolation(input, location, interpolationConfig);\n if (split == null)\n return null;\n const /** @type {?} */ expressions = [];\n for (let /** @type {?} */ i = 0; i < split.expressions.length; ++i) {\n const /** @type {?} */ expressionText = split.expressions[i];\n const /** @type {?} */ sourceToLex = this._stripComments(expressionText);\n const /** @type {?} */ tokens = this._lexer.tokenize(sourceToLex);\n const /** @type {?} */ ast = new _ParseAST(input, location, tokens, sourceToLex.length, false, this.errors, split.offsets[i] + (expressionText.length - sourceToLex.length))\n .parseChain();\n expressions.push(ast);\n }\n return new ASTWithSource(new Interpolation(new ParseSpan(0, input == null ? 0 : input.length), split.strings, expressions), input, location, this.errors);\n }\n /**\n * @param {?} input\n * @param {?} location\n * @param {?=} interpolationConfig\n * @return {?}\n */\n splitInterpolation(input, location, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {\n const /** @type {?} */ regexp = _createInterpolateRegExp(interpolationConfig);\n const /** @type {?} */ parts = input.split(regexp);\n if (parts.length <= 1) {\n return null;\n }\n const /** @type {?} */ strings = [];\n const /** @type {?} */ expressions = [];\n const /** @type {?} */ offsets = [];\n let /** @type {?} */ offset = 0;\n for (let /** @type {?} */ i = 0; i < parts.length; i++) {\n const /** @type {?} */ part = parts[i];\n if (i % 2 === 0) {\n // fixed string\n strings.push(part);\n offset += part.length;\n }\n else if (part.trim().length > 0) {\n offset += interpolationConfig.start.length;\n expressions.push(part);\n offsets.push(offset);\n offset += part.length + interpolationConfig.end.length;\n }\n else {\n this._reportError('Blank expressions are not allowed in interpolated strings', input, `at column ${this._findInterpolationErrorColumn(parts, i, interpolationConfig)} in`, location);\n expressions.push('$implict');\n offsets.push(offset);\n }\n }\n return new SplitInterpolation(strings, expressions, offsets);\n }\n /**\n * @param {?} input\n * @param {?} location\n * @return {?}\n */\n wrapLiteralPrimitive(input, location) {\n return new ASTWithSource(new LiteralPrimitive(new ParseSpan(0, input == null ? 0 : input.length), input), input, location, this.errors);\n }\n /**\n * @param {?} input\n * @return {?}\n */\n _stripComments(input) {\n const /** @type {?} */ i = this._commentStart(input);\n return i != null ? input.substring(0, i).trim() : input;\n }\n /**\n * @param {?} input\n * @return {?}\n */\n _commentStart(input) {\n let /** @type {?} */ outerQuote = null;\n for (let /** @type {?} */ i = 0; i < input.length - 1; i++) {\n const /** @type {?} */ char = input.charCodeAt(i);\n const /** @type {?} */ nextChar = input.charCodeAt(i + 1);\n if (char === chars.$SLASH && nextChar == chars.$SLASH && outerQuote == null)\n return i;\n if (outerQuote === char) {\n outerQuote = null;\n }\n else if (outerQuote == null && isQuote(char)) {\n outerQuote = char;\n }\n }\n return null;\n }\n /**\n * @param {?} input\n * @param {?} location\n * @param {?} interpolationConfig\n * @return {?}\n */\n _checkNoInterpolation(input, location, interpolationConfig) {\n const /** @type {?} */ regexp = _createInterpolateRegExp(interpolationConfig);\n const /** @type {?} */ parts = input.split(regexp);\n if (parts.length > 1) {\n this._reportError(`Got interpolation (${interpolationConfig.start}${interpolationConfig.end}) where expression was expected`, input, `at column ${this._findInterpolationErrorColumn(parts, 1, interpolationConfig)} in`, location);\n }\n }\n /**\n * @param {?} parts\n * @param {?} partInErrIdx\n * @param {?} interpolationConfig\n * @return {?}\n */\n _findInterpolationErrorColumn(parts, partInErrIdx, interpolationConfig) {\n let /** @type {?} */ errLocation = '';\n for (let /** @type {?} */ j = 0; j < partInErrIdx; j++) {\n errLocation += j % 2 === 0 ?\n parts[j] :\n `${interpolationConfig.start}${parts[j]}${interpolationConfig.end}`;\n }\n return errLocation.length;\n }\n}\nfunction Parser_tsickle_Closure_declarations() {\n /** @type {?} */\n Parser.prototype.errors;\n /** @type {?} */\n Parser.prototype._lexer;\n}\nexport class _ParseAST {\n /**\n * @param {?} input\n * @param {?} location\n * @param {?} tokens\n * @param {?} inputLength\n * @param {?} parseAction\n * @param {?} errors\n * @param {?} offset\n */\n constructor(input, location, tokens, inputLength, parseAction, errors, offset) {\n this.input = input;\n this.location = location;\n this.tokens = tokens;\n this.inputLength = inputLength;\n this.parseAction = parseAction;\n this.errors = errors;\n this.offset = offset;\n this.rparensExpected = 0;\n this.rbracketsExpected = 0;\n this.rbracesExpected = 0;\n this.index = 0;\n }\n /**\n * @param {?} offset\n * @return {?}\n */\n peek(offset) {\n const /** @type {?} */ i = this.index + offset;\n return i < this.tokens.length ? this.tokens[i] : EOF;\n }\n /**\n * @return {?}\n */\n get next() { return this.peek(0); }\n /**\n * @return {?}\n */\n get inputIndex() {\n return (this.index < this.tokens.length) ? this.next.index + this.offset :\n this.inputLength + this.offset;\n }\n /**\n * @param {?} start\n * @return {?}\n */\n span(start) { return new ParseSpan(start, this.inputIndex); }\n /**\n * @return {?}\n */\n advance() { this.index++; }\n /**\n * @param {?} code\n * @return {?}\n */\n optionalCharacter(code) {\n if (this.next.isCharacter(code)) {\n this.advance();\n return true;\n }\n else {\n return false;\n }\n }\n /**\n * @return {?}\n */\n peekKeywordLet() { return this.next.isKeywordLet(); }\n /**\n * @return {?}\n */\n peekKeywordAs() { return this.next.isKeywordAs(); }\n /**\n * @param {?} code\n * @return {?}\n */\n expectCharacter(code) {\n if (this.optionalCharacter(code))\n return;\n this.error(`Missing expected ${String.fromCharCode(code)}`);\n }\n /**\n * @param {?} op\n * @return {?}\n */\n optionalOperator(op) {\n if (this.next.isOperator(op)) {\n this.advance();\n return true;\n }\n else {\n return false;\n }\n }\n /**\n * @param {?} operator\n * @return {?}\n */\n expectOperator(operator) {\n if (this.optionalOperator(operator))\n return;\n this.error(`Missing expected operator ${operator}`);\n }\n /**\n * @return {?}\n */\n expectIdentifierOrKeyword() {\n const /** @type {?} */ n = this.next;\n if (!n.isIdentifier() && !n.isKeyword()) {\n this.error(`Unexpected token ${n}, expected identifier or keyword`);\n return '';\n }\n this.advance();\n return /** @type {?} */ (n.toString());\n }\n /**\n * @return {?}\n */\n expectIdentifierOrKeywordOrString() {\n const /** @type {?} */ n = this.next;\n if (!n.isIdentifier() && !n.isKeyword() && !n.isString()) {\n this.error(`Unexpected token ${n}, expected identifier, keyword, or string`);\n return '';\n }\n this.advance();\n return /** @type {?} */ (n.toString());\n }\n /**\n * @return {?}\n */\n parseChain() {\n const /** @type {?} */ exprs = [];\n const /** @type {?} */ start = this.inputIndex;\n while (this.index < this.tokens.length) {\n const /** @type {?} */ expr = this.parsePipe();\n exprs.push(expr);\n if (this.optionalCharacter(chars.$SEMICOLON)) {\n if (!this.parseAction) {\n this.error('Binding expression cannot contain chained expression');\n }\n while (this.optionalCharacter(chars.$SEMICOLON)) {\n } // read all semicolons\n }\n else if (this.index < this.tokens.length) {\n this.error(`Unexpected token '${this.next}'`);\n }\n }\n if (exprs.length == 0)\n return new EmptyExpr(this.span(start));\n if (exprs.length == 1)\n return exprs[0];\n return new Chain(this.span(start), exprs);\n }\n /**\n * @return {?}\n */\n parsePipe() {\n let /** @type {?} */ result = this.parseExpression();\n if (this.optionalOperator('|')) {\n if (this.parseAction) {\n this.error('Cannot have a pipe in an action expression');\n }\n do {\n const /** @type {?} */ name = this.expectIdentifierOrKeyword();\n const /** @type {?} */ args = [];\n while (this.optionalCharacter(chars.$COLON)) {\n args.push(this.parseExpression());\n }\n result = new BindingPipe(this.span(result.span.start), result, name, args);\n } while (this.optionalOperator('|'));\n }\n return result;\n }\n /**\n * @return {?}\n */\n parseExpression() { return this.parseConditional(); }\n /**\n * @return {?}\n */\n parseConditional() {\n const /** @type {?} */ start = this.inputIndex;\n const /** @type {?} */ result = this.parseLogicalOr();\n if (this.optionalOperator('?')) {\n const /** @type {?} */ yes = this.parsePipe();\n let /** @type {?} */ no;\n if (!this.optionalCharacter(chars.$COLON)) {\n const /** @type {?} */ end = this.inputIndex;\n const /** @type {?} */ expression = this.input.substring(start, end);\n this.error(`Conditional expression ${expression} requires all 3 expressions`);\n no = new EmptyExpr(this.span(start));\n }\n else {\n no = this.parsePipe();\n }\n return new Conditional(this.span(start), result, yes, no);\n }\n else {\n return result;\n }\n }\n /**\n * @return {?}\n */\n parseLogicalOr() {\n // '||'\n let /** @type {?} */ result = this.parseLogicalAnd();\n while (this.optionalOperator('||')) {\n const /** @type {?} */ right = this.parseLogicalAnd();\n result = new Binary(this.span(result.span.start), '||', result, right);\n }\n return result;\n }\n /**\n * @return {?}\n */\n parseLogicalAnd() {\n // '&&'\n let /** @type {?} */ result = this.parseEquality();\n while (this.optionalOperator('&&')) {\n const /** @type {?} */ right = this.parseEquality();\n result = new Binary(this.span(result.span.start), '&&', result, right);\n }\n return result;\n }\n /**\n * @return {?}\n */\n parseEquality() {\n // '==','!=','===','!=='\n let /** @type {?} */ result = this.parseRelational();\n while (this.next.type == TokenType.Operator) {\n const /** @type {?} */ operator = this.next.strValue;\n switch (operator) {\n case '==':\n case '===':\n case '!=':\n case '!==':\n this.advance();\n const /** @type {?} */ right = this.parseRelational();\n result = new Binary(this.span(result.span.start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n }\n /**\n * @return {?}\n */\n parseRelational() {\n // '<', '>', '<=', '>='\n let /** @type {?} */ result = this.parseAdditive();\n while (this.next.type == TokenType.Operator) {\n const /** @type {?} */ operator = this.next.strValue;\n switch (operator) {\n case '<':\n case '>':\n case '<=':\n case '>=':\n this.advance();\n const /** @type {?} */ right = this.parseAdditive();\n result = new Binary(this.span(result.span.start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n }\n /**\n * @return {?}\n */\n parseAdditive() {\n // '+', '-'\n let /** @type {?} */ result = this.parseMultiplicative();\n while (this.next.type == TokenType.Operator) {\n const /** @type {?} */ operator = this.next.strValue;\n switch (operator) {\n case '+':\n case '-':\n this.advance();\n let /** @type {?} */ right = this.parseMultiplicative();\n result = new Binary(this.span(result.span.start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n }\n /**\n * @return {?}\n */\n parseMultiplicative() {\n // '*', '%', '/'\n let /** @type {?} */ result = this.parsePrefix();\n while (this.next.type == TokenType.Operator) {\n const /** @type {?} */ operator = this.next.strValue;\n switch (operator) {\n case '*':\n case '%':\n case '/':\n this.advance();\n let /** @type {?} */ right = this.parsePrefix();\n result = new Binary(this.span(result.span.start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n }\n /**\n * @return {?}\n */\n parsePrefix() {\n if (this.next.type == TokenType.Operator) {\n const /** @type {?} */ start = this.inputIndex;\n const /** @type {?} */ operator = this.next.strValue;\n let /** @type {?} */ result;\n switch (operator) {\n case '+':\n this.advance();\n return this.parsePrefix();\n case '-':\n this.advance();\n result = this.parsePrefix();\n return new Binary(this.span(start), operator, new LiteralPrimitive(new ParseSpan(start, start), 0), result);\n case '!':\n this.advance();\n result = this.parsePrefix();\n return new PrefixNot(this.span(start), result);\n }\n }\n return this.parseCallChain();\n }\n /**\n * @return {?}\n */\n parseCallChain() {\n let /** @type {?} */ result = this.parsePrimary();\n while (true) {\n if (this.optionalCharacter(chars.$PERIOD)) {\n result = this.parseAccessMemberOrMethodCall(result, false);\n }\n else if (this.optionalOperator('?.')) {\n result = this.parseAccessMemberOrMethodCall(result, true);\n }\n else if (this.optionalCharacter(chars.$LBRACKET)) {\n this.rbracketsExpected++;\n const /** @type {?} */ key = this.parsePipe();\n this.rbracketsExpected--;\n this.expectCharacter(chars.$RBRACKET);\n if (this.optionalOperator('=')) {\n const /** @type {?} */ value = this.parseConditional();\n result = new KeyedWrite(this.span(result.span.start), result, key, value);\n }\n else {\n result = new KeyedRead(this.span(result.span.start), result, key);\n }\n }\n else if (this.optionalCharacter(chars.$LPAREN)) {\n this.rparensExpected++;\n const /** @type {?} */ args = this.parseCallArguments();\n this.rparensExpected--;\n this.expectCharacter(chars.$RPAREN);\n result = new FunctionCall(this.span(result.span.start), result, args);\n }\n else if (this.optionalOperator('!')) {\n result = new NonNullAssert(this.span(result.span.start), result);\n }\n else {\n return result;\n }\n }\n }\n /**\n * @return {?}\n */\n parsePrimary() {\n const /** @type {?} */ start = this.inputIndex;\n if (this.optionalCharacter(chars.$LPAREN)) {\n this.rparensExpected++;\n const /** @type {?} */ result = this.parsePipe();\n this.rparensExpected--;\n this.expectCharacter(chars.$RPAREN);\n return result;\n }\n else if (this.next.isKeywordNull()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), null);\n }\n else if (this.next.isKeywordUndefined()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), void 0);\n }\n else if (this.next.isKeywordTrue()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), true);\n }\n else if (this.next.isKeywordFalse()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), false);\n }\n else if (this.next.isKeywordThis()) {\n this.advance();\n return new ImplicitReceiver(this.span(start));\n }\n else if (this.optionalCharacter(chars.$LBRACKET)) {\n this.rbracketsExpected++;\n const /** @type {?} */ elements = this.parseExpressionList(chars.$RBRACKET);\n this.rbracketsExpected--;\n this.expectCharacter(chars.$RBRACKET);\n return new LiteralArray(this.span(start), elements);\n }\n else if (this.next.isCharacter(chars.$LBRACE)) {\n return this.parseLiteralMap();\n }\n else if (this.next.isIdentifier()) {\n return this.parseAccessMemberOrMethodCall(new ImplicitReceiver(this.span(start)), false);\n }\n else if (this.next.isNumber()) {\n const /** @type {?} */ value = this.next.toNumber();\n this.advance();\n return new LiteralPrimitive(this.span(start), value);\n }\n else if (this.next.isString()) {\n const /** @type {?} */ literalValue = this.next.toString();\n this.advance();\n return new LiteralPrimitive(this.span(start), literalValue);\n }\n else if (this.index >= this.tokens.length) {\n this.error(`Unexpected end of expression: ${this.input}`);\n return new EmptyExpr(this.span(start));\n }\n else {\n this.error(`Unexpected token ${this.next}`);\n return new EmptyExpr(this.span(start));\n }\n }\n /**\n * @param {?} terminator\n * @return {?}\n */\n parseExpressionList(terminator) {\n const /** @type {?} */ result = [];\n if (!this.next.isCharacter(terminator)) {\n do {\n result.push(this.parsePipe());\n } while (this.optionalCharacter(chars.$COMMA));\n }\n return result;\n }\n /**\n * @return {?}\n */\n parseLiteralMap() {\n const /** @type {?} */ keys = [];\n const /** @type {?} */ values = [];\n const /** @type {?} */ start = this.inputIndex;\n this.expectCharacter(chars.$LBRACE);\n if (!this.optionalCharacter(chars.$RBRACE)) {\n this.rbracesExpected++;\n do {\n const /** @type {?} */ quoted = this.next.isString();\n const /** @type {?} */ key = this.expectIdentifierOrKeywordOrString();\n keys.push({ key, quoted });\n this.expectCharacter(chars.$COLON);\n values.push(this.parsePipe());\n } while (this.optionalCharacter(chars.$COMMA));\n this.rbracesExpected--;\n this.expectCharacter(chars.$RBRACE);\n }\n return new LiteralMap(this.span(start), keys, values);\n }\n /**\n * @param {?} receiver\n * @param {?=} isSafe\n * @return {?}\n */\n parseAccessMemberOrMethodCall(receiver, isSafe = false) {\n const /** @type {?} */ start = receiver.span.start;\n const /** @type {?} */ id = this.expectIdentifierOrKeyword();\n if (this.optionalCharacter(chars.$LPAREN)) {\n this.rparensExpected++;\n const /** @type {?} */ args = this.parseCallArguments();\n this.expectCharacter(chars.$RPAREN);\n this.rparensExpected--;\n const /** @type {?} */ span = this.span(start);\n return isSafe ? new SafeMethodCall(span, receiver, id, args) :\n new MethodCall(span, receiver, id, args);\n }\n else {\n if (isSafe) {\n if (this.optionalOperator('=')) {\n this.error('The \\'?.\\' operator cannot be used in the assignment');\n return new EmptyExpr(this.span(start));\n }\n else {\n return new SafePropertyRead(this.span(start), receiver, id);\n }\n }\n else {\n if (this.optionalOperator('=')) {\n if (!this.parseAction) {\n this.error('Bindings cannot contain assignments');\n return new EmptyExpr(this.span(start));\n }\n const /** @type {?} */ value = this.parseConditional();\n return new PropertyWrite(this.span(start), receiver, id, value);\n }\n else {\n return new PropertyRead(this.span(start), receiver, id);\n }\n }\n }\n }\n /**\n * @return {?}\n */\n parseCallArguments() {\n if (this.next.isCharacter(chars.$RPAREN))\n return [];\n const /** @type {?} */ positionals = [];\n do {\n positionals.push(this.parsePipe());\n } while (this.optionalCharacter(chars.$COMMA));\n return /** @type {?} */ (positionals);\n }\n /**\n * An identifier, a keyword, a string with an optional `-` inbetween.\n * @return {?}\n */\n expectTemplateBindingKey() {\n let /** @type {?} */ result = '';\n let /** @type {?} */ operatorFound = false;\n do {\n result += this.expectIdentifierOrKeywordOrString();\n operatorFound = this.optionalOperator('-');\n if (operatorFound) {\n result += '-';\n }\n } while (operatorFound);\n return result.toString();\n }\n /**\n * @return {?}\n */\n parseTemplateBindings() {\n const /** @type {?} */ bindings = [];\n let /** @type {?} */ prefix = /** @type {?} */ ((null));\n const /** @type {?} */ warnings = [];\n while (this.index < this.tokens.length) {\n const /** @type {?} */ start = this.inputIndex;\n let /** @type {?} */ keyIsVar = this.peekKeywordLet();\n if (keyIsVar) {\n this.advance();\n }\n let /** @type {?} */ rawKey = this.expectTemplateBindingKey();\n let /** @type {?} */ key = rawKey;\n if (!keyIsVar) {\n if (prefix == null) {\n prefix = key;\n }\n else {\n key = prefix + key[0].toUpperCase() + key.substring(1);\n }\n }\n this.optionalCharacter(chars.$COLON);\n let /** @type {?} */ name = /** @type {?} */ ((null));\n let /** @type {?} */ expression = /** @type {?} */ ((null));\n if (keyIsVar) {\n if (this.optionalOperator('=')) {\n name = this.expectTemplateBindingKey();\n }\n else {\n name = '\\$implicit';\n }\n }\n else if (this.peekKeywordAs()) {\n const /** @type {?} */ letStart = this.inputIndex;\n this.advance(); // consume `as`\n name = rawKey;\n key = this.expectTemplateBindingKey(); // read local var name\n keyIsVar = true;\n }\n else if (this.next !== EOF && !this.peekKeywordLet()) {\n const /** @type {?} */ start = this.inputIndex;\n const /** @type {?} */ ast = this.parsePipe();\n const /** @type {?} */ source = this.input.substring(start - this.offset, this.inputIndex - this.offset);\n expression = new ASTWithSource(ast, source, this.location, this.errors);\n }\n bindings.push(new TemplateBinding(this.span(start), key, keyIsVar, name, expression));\n if (this.peekKeywordAs() && !keyIsVar) {\n const /** @type {?} */ letStart = this.inputIndex;\n this.advance(); // consume `as`\n const /** @type {?} */ letName = this.expectTemplateBindingKey(); // read local var name\n bindings.push(new TemplateBinding(this.span(letStart), letName, true, key, /** @type {?} */ ((null))));\n }\n if (!this.optionalCharacter(chars.$SEMICOLON)) {\n this.optionalCharacter(chars.$COMMA);\n }\n }\n return new TemplateBindingParseResult(bindings, warnings, this.errors);\n }\n /**\n * @param {?} message\n * @param {?=} index\n * @return {?}\n */\n error(message, index = null) {\n this.errors.push(new ParserError(message, this.input, this.locationText(index), this.location));\n this.skip();\n }\n /**\n * @param {?=} index\n * @return {?}\n */\n locationText(index = null) {\n if (index == null)\n index = this.index;\n return (index < this.tokens.length) ? `at column ${this.tokens[index].index + 1} in` :\n `at the end of the expression`;\n }\n /**\n * @return {?}\n */\n skip() {\n let /** @type {?} */ n = this.next;\n while (this.index < this.tokens.length && !n.isCharacter(chars.$SEMICOLON) &&\n (this.rparensExpected <= 0 || !n.isCharacter(chars.$RPAREN)) &&\n (this.rbracesExpected <= 0 || !n.isCharacter(chars.$RBRACE)) &&\n (this.rbracketsExpected <= 0 || !n.isCharacter(chars.$RBRACKET))) {\n if (this.next.isError()) {\n this.errors.push(new ParserError(/** @type {?} */ ((this.next.toString())), this.input, this.locationText(), this.location));\n }\n this.advance();\n n = this.next;\n }\n }\n}\nfunction _ParseAST_tsickle_Closure_declarations() {\n /** @type {?} */\n _ParseAST.prototype.rparensExpected;\n /** @type {?} */\n _ParseAST.prototype.rbracketsExpected;\n /** @type {?} */\n _ParseAST.prototype.rbracesExpected;\n /** @type {?} */\n _ParseAST.prototype.index;\n /** @type {?} */\n _ParseAST.prototype.input;\n /** @type {?} */\n _ParseAST.prototype.location;\n /** @type {?} */\n _ParseAST.prototype.tokens;\n /** @type {?} */\n _ParseAST.prototype.inputLength;\n /** @type {?} */\n _ParseAST.prototype.parseAction;\n /** @type {?} */\n _ParseAST.prototype.errors;\n /** @type {?} */\n _ParseAST.prototype.offset;\n}\nclass SimpleExpressionChecker {\n constructor() {\n this.errors = [];\n }\n /**\n * @param {?} ast\n * @return {?}\n */\n static check(ast) {\n const /** @type {?} */ s = new SimpleExpressionChecker();\n ast.visit(s);\n return s.errors;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitImplicitReceiver(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitInterpolation(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralPrimitive(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPropertyRead(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPropertyWrite(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitSafePropertyRead(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitMethodCall(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitSafeMethodCall(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitFunctionCall(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralArray(ast, context) { this.visitAll(ast.expressions); }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralMap(ast, context) { this.visitAll(ast.values); }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitBinary(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPrefixNot(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitNonNullAssert(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitConditional(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPipe(ast, context) { this.errors.push('pipes'); }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitKeyedRead(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitKeyedWrite(ast, context) { }\n /**\n * @param {?} asts\n * @return {?}\n */\n visitAll(asts) { return asts.map(node => node.visit(this)); }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitChain(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitQuote(ast, context) { }\n}\nfunction SimpleExpressionChecker_tsickle_Closure_declarations() {\n /** @type {?} */\n SimpleExpressionChecker.prototype.errors;\n}\n//# sourceMappingURL=parser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nimport * as chars from './chars';\nimport { identifierModuleUrl, identifierName } from './compile_metadata';\nexport class ParseLocation {\n /**\n * @param {?} file\n * @param {?} offset\n * @param {?} line\n * @param {?} col\n */\n constructor(file, offset, line, col) {\n this.file = file;\n this.offset = offset;\n this.line = line;\n this.col = col;\n }\n /**\n * @return {?}\n */\n toString() {\n return this.offset != null ? `${this.file.url}@${this.line}:${this.col}` : this.file.url;\n }\n /**\n * @param {?} delta\n * @return {?}\n */\n moveBy(delta) {\n const /** @type {?} */ source = this.file.content;\n const /** @type {?} */ len = source.length;\n let /** @type {?} */ offset = this.offset;\n let /** @type {?} */ line = this.line;\n let /** @type {?} */ col = this.col;\n while (offset > 0 && delta < 0) {\n offset--;\n delta++;\n const /** @type {?} */ ch = source.charCodeAt(offset);\n if (ch == chars.$LF) {\n line--;\n const /** @type {?} */ priorLine = source.substr(0, offset - 1).lastIndexOf(String.fromCharCode(chars.$LF));\n col = priorLine > 0 ? offset - priorLine : offset;\n }\n else {\n col--;\n }\n }\n while (offset < len && delta > 0) {\n const /** @type {?} */ ch = source.charCodeAt(offset);\n offset++;\n delta--;\n if (ch == chars.$LF) {\n line++;\n col = 0;\n }\n else {\n col++;\n }\n }\n return new ParseLocation(this.file, offset, line, col);\n }\n /**\n * @param {?} maxChars\n * @param {?} maxLines\n * @return {?}\n */\n getContext(maxChars, maxLines) {\n const /** @type {?} */ content = this.file.content;\n let /** @type {?} */ startOffset = this.offset;\n if (startOffset != null) {\n if (startOffset > content.length - 1) {\n startOffset = content.length - 1;\n }\n let /** @type {?} */ endOffset = startOffset;\n let /** @type {?} */ ctxChars = 0;\n let /** @type {?} */ ctxLines = 0;\n while (ctxChars < maxChars && startOffset > 0) {\n startOffset--;\n ctxChars++;\n if (content[startOffset] == '\\n') {\n if (++ctxLines == maxLines) {\n break;\n }\n }\n }\n ctxChars = 0;\n ctxLines = 0;\n while (ctxChars < maxChars && endOffset < content.length - 1) {\n endOffset++;\n ctxChars++;\n if (content[endOffset] == '\\n') {\n if (++ctxLines == maxLines) {\n break;\n }\n }\n }\n return {\n before: content.substring(startOffset, this.offset),\n after: content.substring(this.offset, endOffset + 1),\n };\n }\n return null;\n }\n}\nfunction ParseLocation_tsickle_Closure_declarations() {\n /** @type {?} */\n ParseLocation.prototype.file;\n /** @type {?} */\n ParseLocation.prototype.offset;\n /** @type {?} */\n ParseLocation.prototype.line;\n /** @type {?} */\n ParseLocation.prototype.col;\n}\nexport class ParseSourceFile {\n /**\n * @param {?} content\n * @param {?} url\n */\n constructor(content, url) {\n this.content = content;\n this.url = url;\n }\n}\nfunction ParseSourceFile_tsickle_Closure_declarations() {\n /** @type {?} */\n ParseSourceFile.prototype.content;\n /** @type {?} */\n ParseSourceFile.prototype.url;\n}\nexport class ParseSourceSpan {\n /**\n * @param {?} start\n * @param {?} end\n * @param {?=} details\n */\n constructor(start, end, details = null) {\n this.start = start;\n this.end = end;\n this.details = details;\n }\n /**\n * @return {?}\n */\n toString() {\n return this.start.file.content.substring(this.start.offset, this.end.offset);\n }\n}\nfunction ParseSourceSpan_tsickle_Closure_declarations() {\n /** @type {?} */\n ParseSourceSpan.prototype.start;\n /** @type {?} */\n ParseSourceSpan.prototype.end;\n /** @type {?} */\n ParseSourceSpan.prototype.details;\n}\n/** @enum {number} */\nconst ParseErrorLevel = {\n WARNING: 0,\n ERROR: 1,\n};\nexport { ParseErrorLevel };\nParseErrorLevel[ParseErrorLevel.WARNING] = \"WARNING\";\nParseErrorLevel[ParseErrorLevel.ERROR] = \"ERROR\";\nexport class ParseError {\n /**\n * @param {?} span\n * @param {?} msg\n * @param {?=} level\n */\n constructor(span, msg, level = ParseErrorLevel.ERROR) {\n this.span = span;\n this.msg = msg;\n this.level = level;\n }\n /**\n * @return {?}\n */\n contextualMessage() {\n const /** @type {?} */ ctx = this.span.start.getContext(100, 3);\n return ctx ? `${this.msg} (\"${ctx.before}[${ParseErrorLevel[this.level]} ->]${ctx.after}\")` :\n this.msg;\n }\n /**\n * @return {?}\n */\n toString() {\n const /** @type {?} */ details = this.span.details ? `, ${this.span.details}` : '';\n return `${this.contextualMessage()}: ${this.span.start}${details}`;\n }\n}\nfunction ParseError_tsickle_Closure_declarations() {\n /** @type {?} */\n ParseError.prototype.span;\n /** @type {?} */\n ParseError.prototype.msg;\n /** @type {?} */\n ParseError.prototype.level;\n}\n/**\n * @param {?} kind\n * @param {?} type\n * @return {?}\n */\nexport function typeSourceSpan(kind, type) {\n const /** @type {?} */ moduleUrl = identifierModuleUrl(type);\n const /** @type {?} */ sourceFileName = moduleUrl != null ? `in ${kind} ${identifierName(type)} in ${moduleUrl}` :\n `in ${kind} ${identifierName(type)}`;\n const /** @type {?} */ sourceFile = new ParseSourceFile('', sourceFileName);\n return new ParseSourceSpan(new ParseLocation(sourceFile, -1, -1, -1), new ParseLocation(sourceFile, -1, -1, -1));\n}\n//# sourceMappingURL=parse_util.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as chars from '../chars';\nimport { ParseError, ParseLocation, ParseSourceFile, ParseSourceSpan } from '../parse_util';\nimport { DEFAULT_INTERPOLATION_CONFIG } from './interpolation_config';\nimport { NAMED_ENTITIES, TagContentType } from './tags';\n/** @enum {number} */\nconst TokenType = {\n TAG_OPEN_START: 0,\n TAG_OPEN_END: 1,\n TAG_OPEN_END_VOID: 2,\n TAG_CLOSE: 3,\n TEXT: 4,\n ESCAPABLE_RAW_TEXT: 5,\n RAW_TEXT: 6,\n COMMENT_START: 7,\n COMMENT_END: 8,\n CDATA_START: 9,\n CDATA_END: 10,\n ATTR_NAME: 11,\n ATTR_VALUE: 12,\n DOC_TYPE: 13,\n EXPANSION_FORM_START: 14,\n EXPANSION_CASE_VALUE: 15,\n EXPANSION_CASE_EXP_START: 16,\n EXPANSION_CASE_EXP_END: 17,\n EXPANSION_FORM_END: 18,\n EOF: 19,\n};\nexport { TokenType };\nTokenType[TokenType.TAG_OPEN_START] = \"TAG_OPEN_START\";\nTokenType[TokenType.TAG_OPEN_END] = \"TAG_OPEN_END\";\nTokenType[TokenType.TAG_OPEN_END_VOID] = \"TAG_OPEN_END_VOID\";\nTokenType[TokenType.TAG_CLOSE] = \"TAG_CLOSE\";\nTokenType[TokenType.TEXT] = \"TEXT\";\nTokenType[TokenType.ESCAPABLE_RAW_TEXT] = \"ESCAPABLE_RAW_TEXT\";\nTokenType[TokenType.RAW_TEXT] = \"RAW_TEXT\";\nTokenType[TokenType.COMMENT_START] = \"COMMENT_START\";\nTokenType[TokenType.COMMENT_END] = \"COMMENT_END\";\nTokenType[TokenType.CDATA_START] = \"CDATA_START\";\nTokenType[TokenType.CDATA_END] = \"CDATA_END\";\nTokenType[TokenType.ATTR_NAME] = \"ATTR_NAME\";\nTokenType[TokenType.ATTR_VALUE] = \"ATTR_VALUE\";\nTokenType[TokenType.DOC_TYPE] = \"DOC_TYPE\";\nTokenType[TokenType.EXPANSION_FORM_START] = \"EXPANSION_FORM_START\";\nTokenType[TokenType.EXPANSION_CASE_VALUE] = \"EXPANSION_CASE_VALUE\";\nTokenType[TokenType.EXPANSION_CASE_EXP_START] = \"EXPANSION_CASE_EXP_START\";\nTokenType[TokenType.EXPANSION_CASE_EXP_END] = \"EXPANSION_CASE_EXP_END\";\nTokenType[TokenType.EXPANSION_FORM_END] = \"EXPANSION_FORM_END\";\nTokenType[TokenType.EOF] = \"EOF\";\nexport class Token {\n /**\n * @param {?} type\n * @param {?} parts\n * @param {?} sourceSpan\n */\n constructor(type, parts, sourceSpan) {\n this.type = type;\n this.parts = parts;\n this.sourceSpan = sourceSpan;\n }\n}\nfunction Token_tsickle_Closure_declarations() {\n /** @type {?} */\n Token.prototype.type;\n /** @type {?} */\n Token.prototype.parts;\n /** @type {?} */\n Token.prototype.sourceSpan;\n}\nexport class TokenError extends ParseError {\n /**\n * @param {?} errorMsg\n * @param {?} tokenType\n * @param {?} span\n */\n constructor(errorMsg, tokenType, span) {\n super(span, errorMsg);\n this.tokenType = tokenType;\n }\n}\nfunction TokenError_tsickle_Closure_declarations() {\n /** @type {?} */\n TokenError.prototype.tokenType;\n}\nexport class TokenizeResult {\n /**\n * @param {?} tokens\n * @param {?} errors\n */\n constructor(tokens, errors) {\n this.tokens = tokens;\n this.errors = errors;\n }\n}\nfunction TokenizeResult_tsickle_Closure_declarations() {\n /** @type {?} */\n TokenizeResult.prototype.tokens;\n /** @type {?} */\n TokenizeResult.prototype.errors;\n}\n/**\n * @param {?} source\n * @param {?} url\n * @param {?} getTagDefinition\n * @param {?=} tokenizeExpansionForms\n * @param {?=} interpolationConfig\n * @return {?}\n */\nexport function tokenize(source, url, getTagDefinition, tokenizeExpansionForms = false, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {\n return new _Tokenizer(new ParseSourceFile(source, url), getTagDefinition, tokenizeExpansionForms, interpolationConfig)\n .tokenize();\n}\nconst /** @type {?} */ _CR_OR_CRLF_REGEXP = /\\r\\n?/g;\n/**\n * @param {?} charCode\n * @return {?}\n */\nfunction _unexpectedCharacterErrorMsg(charCode) {\n const /** @type {?} */ char = charCode === chars.$EOF ? 'EOF' : String.fromCharCode(charCode);\n return `Unexpected character \"${char}\"`;\n}\n/**\n * @param {?} entitySrc\n * @return {?}\n */\nfunction _unknownEntityErrorMsg(entitySrc) {\n return `Unknown entity \"${entitySrc}\" - use the \"&#<decimal>;\" or \"&#x<hex>;\" syntax`;\n}\nclass _ControlFlowError {\n /**\n * @param {?} error\n */\n constructor(error) {\n this.error = error;\n }\n}\nfunction _ControlFlowError_tsickle_Closure_declarations() {\n /** @type {?} */\n _ControlFlowError.prototype.error;\n}\nclass _Tokenizer {\n /**\n * @param {?} _file The html source\n * @param {?} _getTagDefinition\n * @param {?} _tokenizeIcu Whether to tokenize ICU messages (considered as text nodes when false)\n * @param {?=} _interpolationConfig\n */\n constructor(_file, _getTagDefinition, _tokenizeIcu, _interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {\n this._file = _file;\n this._getTagDefinition = _getTagDefinition;\n this._tokenizeIcu = _tokenizeIcu;\n this._interpolationConfig = _interpolationConfig;\n this._peek = -1;\n this._nextPeek = -1;\n this._index = -1;\n this._line = 0;\n this._column = -1;\n this._expansionCaseStack = [];\n this._inInterpolation = false;\n this.tokens = [];\n this.errors = [];\n this._input = _file.content;\n this._length = _file.content.length;\n this._advance();\n }\n /**\n * @param {?} content\n * @return {?}\n */\n _processCarriageReturns(content) {\n // http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream\n // In order to keep the original position in the source, we can not\n // pre-process it.\n // Instead CRs are processed right before instantiating the tokens.\n return content.replace(_CR_OR_CRLF_REGEXP, '\\n');\n }\n /**\n * @return {?}\n */\n tokenize() {\n while (this._peek !== chars.$EOF) {\n const /** @type {?} */ start = this._getLocation();\n try {\n if (this._attemptCharCode(chars.$LT)) {\n if (this._attemptCharCode(chars.$BANG)) {\n if (this._attemptCharCode(chars.$LBRACKET)) {\n this._consumeCdata(start);\n }\n else if (this._attemptCharCode(chars.$MINUS)) {\n this._consumeComment(start);\n }\n else {\n this._consumeDocType(start);\n }\n }\n else if (this._attemptCharCode(chars.$SLASH)) {\n this._consumeTagClose(start);\n }\n else {\n this._consumeTagOpen(start);\n }\n }\n else if (!(this._tokenizeIcu && this._tokenizeExpansionForm())) {\n this._consumeText();\n }\n }\n catch (/** @type {?} */ e) {\n if (e instanceof _ControlFlowError) {\n this.errors.push(e.error);\n }\n else {\n throw e;\n }\n }\n }\n this._beginToken(TokenType.EOF);\n this._endToken([]);\n return new TokenizeResult(mergeTextTokens(this.tokens), this.errors);\n }\n /**\n * \\@internal\n * @return {?} whether an ICU token has been created\n */\n _tokenizeExpansionForm() {\n if (isExpansionFormStart(this._input, this._index, this._interpolationConfig)) {\n this._consumeExpansionFormStart();\n return true;\n }\n if (isExpansionCaseStart(this._peek) && this._isInExpansionForm()) {\n this._consumeExpansionCaseStart();\n return true;\n }\n if (this._peek === chars.$RBRACE) {\n if (this._isInExpansionCase()) {\n this._consumeExpansionCaseEnd();\n return true;\n }\n if (this._isInExpansionForm()) {\n this._consumeExpansionFormEnd();\n return true;\n }\n }\n return false;\n }\n /**\n * @return {?}\n */\n _getLocation() {\n return new ParseLocation(this._file, this._index, this._line, this._column);\n }\n /**\n * @param {?=} start\n * @param {?=} end\n * @return {?}\n */\n _getSpan(start = this._getLocation(), end = this._getLocation()) {\n return new ParseSourceSpan(start, end);\n }\n /**\n * @param {?} type\n * @param {?=} start\n * @return {?}\n */\n _beginToken(type, start = this._getLocation()) {\n this._currentTokenStart = start;\n this._currentTokenType = type;\n }\n /**\n * @param {?} parts\n * @param {?=} end\n * @return {?}\n */\n _endToken(parts, end = this._getLocation()) {\n const /** @type {?} */ token = new Token(this._currentTokenType, parts, new ParseSourceSpan(this._currentTokenStart, end));\n this.tokens.push(token);\n this._currentTokenStart = /** @type {?} */ ((null));\n this._currentTokenType = /** @type {?} */ ((null));\n return token;\n }\n /**\n * @param {?} msg\n * @param {?} span\n * @return {?}\n */\n _createError(msg, span) {\n if (this._isInExpansionForm()) {\n msg += ` (Do you have an unescaped \"{\" in your template? Use \"{{ '{' }}\") to escape it.)`;\n }\n const /** @type {?} */ error = new TokenError(msg, this._currentTokenType, span);\n this._currentTokenStart = /** @type {?} */ ((null));\n this._currentTokenType = /** @type {?} */ ((null));\n return new _ControlFlowError(error);\n }\n /**\n * @return {?}\n */\n _advance() {\n if (this._index >= this._length) {\n throw this._createError(_unexpectedCharacterErrorMsg(chars.$EOF), this._getSpan());\n }\n if (this._peek === chars.$LF) {\n this._line++;\n this._column = 0;\n }\n else if (this._peek !== chars.$LF && this._peek !== chars.$CR) {\n this._column++;\n }\n this._index++;\n this._peek = this._index >= this._length ? chars.$EOF : this._input.charCodeAt(this._index);\n this._nextPeek =\n this._index + 1 >= this._length ? chars.$EOF : this._input.charCodeAt(this._index + 1);\n }\n /**\n * @param {?} charCode\n * @return {?}\n */\n _attemptCharCode(charCode) {\n if (this._peek === charCode) {\n this._advance();\n return true;\n }\n return false;\n }\n /**\n * @param {?} charCode\n * @return {?}\n */\n _attemptCharCodeCaseInsensitive(charCode) {\n if (compareCharCodeCaseInsensitive(this._peek, charCode)) {\n this._advance();\n return true;\n }\n return false;\n }\n /**\n * @param {?} charCode\n * @return {?}\n */\n _requireCharCode(charCode) {\n const /** @type {?} */ location = this._getLocation();\n if (!this._attemptCharCode(charCode)) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(location, location));\n }\n }\n /**\n * @param {?} chars\n * @return {?}\n */\n _attemptStr(chars) {\n const /** @type {?} */ len = chars.length;\n if (this._index + len > this._length) {\n return false;\n }\n const /** @type {?} */ initialPosition = this._savePosition();\n for (let /** @type {?} */ i = 0; i < len; i++) {\n if (!this._attemptCharCode(chars.charCodeAt(i))) {\n // If attempting to parse the string fails, we want to reset the parser\n // to where it was before the attempt\n this._restorePosition(initialPosition);\n return false;\n }\n }\n return true;\n }\n /**\n * @param {?} chars\n * @return {?}\n */\n _attemptStrCaseInsensitive(chars) {\n for (let /** @type {?} */ i = 0; i < chars.length; i++) {\n if (!this._attemptCharCodeCaseInsensitive(chars.charCodeAt(i))) {\n return false;\n }\n }\n return true;\n }\n /**\n * @param {?} chars\n * @return {?}\n */\n _requireStr(chars) {\n const /** @type {?} */ location = this._getLocation();\n if (!this._attemptStr(chars)) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(location));\n }\n }\n /**\n * @param {?} predicate\n * @return {?}\n */\n _attemptCharCodeUntilFn(predicate) {\n while (!predicate(this._peek)) {\n this._advance();\n }\n }\n /**\n * @param {?} predicate\n * @param {?} len\n * @return {?}\n */\n _requireCharCodeUntilFn(predicate, len) {\n const /** @type {?} */ start = this._getLocation();\n this._attemptCharCodeUntilFn(predicate);\n if (this._index - start.offset < len) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(start, start));\n }\n }\n /**\n * @param {?} char\n * @return {?}\n */\n _attemptUntilChar(char) {\n while (this._peek !== char) {\n this._advance();\n }\n }\n /**\n * @param {?} decodeEntities\n * @return {?}\n */\n _readChar(decodeEntities) {\n if (decodeEntities && this._peek === chars.$AMPERSAND) {\n return this._decodeEntity();\n }\n else {\n const /** @type {?} */ index = this._index;\n this._advance();\n return this._input[index];\n }\n }\n /**\n * @return {?}\n */\n _decodeEntity() {\n const /** @type {?} */ start = this._getLocation();\n this._advance();\n if (this._attemptCharCode(chars.$HASH)) {\n const /** @type {?} */ isHex = this._attemptCharCode(chars.$x) || this._attemptCharCode(chars.$X);\n const /** @type {?} */ numberStart = this._getLocation().offset;\n this._attemptCharCodeUntilFn(isDigitEntityEnd);\n if (this._peek != chars.$SEMICOLON) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan());\n }\n this._advance();\n const /** @type {?} */ strNum = this._input.substring(numberStart, this._index - 1);\n try {\n const /** @type {?} */ charCode = parseInt(strNum, isHex ? 16 : 10);\n return String.fromCharCode(charCode);\n }\n catch (/** @type {?} */ e) {\n const /** @type {?} */ entity = this._input.substring(start.offset + 1, this._index - 1);\n throw this._createError(_unknownEntityErrorMsg(entity), this._getSpan(start));\n }\n }\n else {\n const /** @type {?} */ startPosition = this._savePosition();\n this._attemptCharCodeUntilFn(isNamedEntityEnd);\n if (this._peek != chars.$SEMICOLON) {\n this._restorePosition(startPosition);\n return '&';\n }\n this._advance();\n const /** @type {?} */ name = this._input.substring(start.offset + 1, this._index - 1);\n const /** @type {?} */ char = NAMED_ENTITIES[name];\n if (!char) {\n throw this._createError(_unknownEntityErrorMsg(name), this._getSpan(start));\n }\n return char;\n }\n }\n /**\n * @param {?} decodeEntities\n * @param {?} firstCharOfEnd\n * @param {?} attemptEndRest\n * @return {?}\n */\n _consumeRawText(decodeEntities, firstCharOfEnd, attemptEndRest) {\n let /** @type {?} */ tagCloseStart;\n const /** @type {?} */ textStart = this._getLocation();\n this._beginToken(decodeEntities ? TokenType.ESCAPABLE_RAW_TEXT : TokenType.RAW_TEXT, textStart);\n const /** @type {?} */ parts = [];\n while (true) {\n tagCloseStart = this._getLocation();\n if (this._attemptCharCode(firstCharOfEnd) && attemptEndRest()) {\n break;\n }\n if (this._index > tagCloseStart.offset) {\n // add the characters consumed by the previous if statement to the output\n parts.push(this._input.substring(tagCloseStart.offset, this._index));\n }\n while (this._peek !== firstCharOfEnd) {\n parts.push(this._readChar(decodeEntities));\n }\n }\n return this._endToken([this._processCarriageReturns(parts.join(''))], tagCloseStart);\n }\n /**\n * @param {?} start\n * @return {?}\n */\n _consumeComment(start) {\n this._beginToken(TokenType.COMMENT_START, start);\n this._requireCharCode(chars.$MINUS);\n this._endToken([]);\n const /** @type {?} */ textToken = this._consumeRawText(false, chars.$MINUS, () => this._attemptStr('->'));\n this._beginToken(TokenType.COMMENT_END, textToken.sourceSpan.end);\n this._endToken([]);\n }\n /**\n * @param {?} start\n * @return {?}\n */\n _consumeCdata(start) {\n this._beginToken(TokenType.CDATA_START, start);\n this._requireStr('CDATA[');\n this._endToken([]);\n const /** @type {?} */ textToken = this._consumeRawText(false, chars.$RBRACKET, () => this._attemptStr(']>'));\n this._beginToken(TokenType.CDATA_END, textToken.sourceSpan.end);\n this._endToken([]);\n }\n /**\n * @param {?} start\n * @return {?}\n */\n _consumeDocType(start) {\n this._beginToken(TokenType.DOC_TYPE, start);\n this._attemptUntilChar(chars.$GT);\n this._advance();\n this._endToken([this._input.substring(start.offset + 2, this._index - 1)]);\n }\n /**\n * @return {?}\n */\n _consumePrefixAndName() {\n const /** @type {?} */ nameOrPrefixStart = this._index;\n let /** @type {?} */ prefix = /** @type {?} */ ((null));\n while (this._peek !== chars.$COLON && !isPrefixEnd(this._peek)) {\n this._advance();\n }\n let /** @type {?} */ nameStart;\n if (this._peek === chars.$COLON) {\n this._advance();\n prefix = this._input.substring(nameOrPrefixStart, this._index - 1);\n nameStart = this._index;\n }\n else {\n nameStart = nameOrPrefixStart;\n }\n this._requireCharCodeUntilFn(isNameEnd, this._index === nameStart ? 1 : 0);\n const /** @type {?} */ name = this._input.substring(nameStart, this._index);\n return [prefix, name];\n }\n /**\n * @param {?} start\n * @return {?}\n */\n _consumeTagOpen(start) {\n const /** @type {?} */ savedPos = this._savePosition();\n let /** @type {?} */ tagName;\n let /** @type {?} */ lowercaseTagName;\n try {\n if (!chars.isAsciiLetter(this._peek)) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan());\n }\n const /** @type {?} */ nameStart = this._index;\n this._consumeTagOpenStart(start);\n tagName = this._input.substring(nameStart, this._index);\n lowercaseTagName = tagName.toLowerCase();\n this._attemptCharCodeUntilFn(isNotWhitespace);\n while (this._peek !== chars.$SLASH && this._peek !== chars.$GT) {\n this._consumeAttributeName();\n this._attemptCharCodeUntilFn(isNotWhitespace);\n if (this._attemptCharCode(chars.$EQ)) {\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._consumeAttributeValue();\n }\n this._attemptCharCodeUntilFn(isNotWhitespace);\n }\n this._consumeTagOpenEnd();\n }\n catch (/** @type {?} */ e) {\n if (e instanceof _ControlFlowError) {\n // When the start tag is invalid, assume we want a \"<\"\n this._restorePosition(savedPos);\n // Back to back text tokens are merged at the end\n this._beginToken(TokenType.TEXT, start);\n this._endToken(['<']);\n return;\n }\n throw e;\n }\n const /** @type {?} */ contentTokenType = this._getTagDefinition(tagName).contentType;\n if (contentTokenType === TagContentType.RAW_TEXT) {\n this._consumeRawTextWithTagClose(lowercaseTagName, false);\n }\n else if (contentTokenType === TagContentType.ESCAPABLE_RAW_TEXT) {\n this._consumeRawTextWithTagClose(lowercaseTagName, true);\n }\n }\n /**\n * @param {?} lowercaseTagName\n * @param {?} decodeEntities\n * @return {?}\n */\n _consumeRawTextWithTagClose(lowercaseTagName, decodeEntities) {\n const /** @type {?} */ textToken = this._consumeRawText(decodeEntities, chars.$LT, () => {\n if (!this._attemptCharCode(chars.$SLASH))\n return false;\n this._attemptCharCodeUntilFn(isNotWhitespace);\n if (!this._attemptStrCaseInsensitive(lowercaseTagName))\n return false;\n this._attemptCharCodeUntilFn(isNotWhitespace);\n return this._attemptCharCode(chars.$GT);\n });\n this._beginToken(TokenType.TAG_CLOSE, textToken.sourceSpan.end);\n this._endToken([/** @type {?} */ ((null)), lowercaseTagName]);\n }\n /**\n * @param {?} start\n * @return {?}\n */\n _consumeTagOpenStart(start) {\n this._beginToken(TokenType.TAG_OPEN_START, start);\n const /** @type {?} */ parts = this._consumePrefixAndName();\n this._endToken(parts);\n }\n /**\n * @return {?}\n */\n _consumeAttributeName() {\n this._beginToken(TokenType.ATTR_NAME);\n const /** @type {?} */ prefixAndName = this._consumePrefixAndName();\n this._endToken(prefixAndName);\n }\n /**\n * @return {?}\n */\n _consumeAttributeValue() {\n this._beginToken(TokenType.ATTR_VALUE);\n let /** @type {?} */ value;\n if (this._peek === chars.$SQ || this._peek === chars.$DQ) {\n const /** @type {?} */ quoteChar = this._peek;\n this._advance();\n const /** @type {?} */ parts = [];\n while (this._peek !== quoteChar) {\n parts.push(this._readChar(true));\n }\n value = parts.join('');\n this._advance();\n }\n else {\n const /** @type {?} */ valueStart = this._index;\n this._requireCharCodeUntilFn(isNameEnd, 1);\n value = this._input.substring(valueStart, this._index);\n }\n this._endToken([this._processCarriageReturns(value)]);\n }\n /**\n * @return {?}\n */\n _consumeTagOpenEnd() {\n const /** @type {?} */ tokenType = this._attemptCharCode(chars.$SLASH) ? TokenType.TAG_OPEN_END_VOID : TokenType.TAG_OPEN_END;\n this._beginToken(tokenType);\n this._requireCharCode(chars.$GT);\n this._endToken([]);\n }\n /**\n * @param {?} start\n * @return {?}\n */\n _consumeTagClose(start) {\n this._beginToken(TokenType.TAG_CLOSE, start);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n const /** @type {?} */ prefixAndName = this._consumePrefixAndName();\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._requireCharCode(chars.$GT);\n this._endToken(prefixAndName);\n }\n /**\n * @return {?}\n */\n _consumeExpansionFormStart() {\n this._beginToken(TokenType.EXPANSION_FORM_START, this._getLocation());\n this._requireCharCode(chars.$LBRACE);\n this._endToken([]);\n this._expansionCaseStack.push(TokenType.EXPANSION_FORM_START);\n this._beginToken(TokenType.RAW_TEXT, this._getLocation());\n const /** @type {?} */ condition = this._readUntil(chars.$COMMA);\n this._endToken([condition], this._getLocation());\n this._requireCharCode(chars.$COMMA);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._beginToken(TokenType.RAW_TEXT, this._getLocation());\n const /** @type {?} */ type = this._readUntil(chars.$COMMA);\n this._endToken([type], this._getLocation());\n this._requireCharCode(chars.$COMMA);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n }\n /**\n * @return {?}\n */\n _consumeExpansionCaseStart() {\n this._beginToken(TokenType.EXPANSION_CASE_VALUE, this._getLocation());\n const /** @type {?} */ value = this._readUntil(chars.$LBRACE).trim();\n this._endToken([value], this._getLocation());\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._beginToken(TokenType.EXPANSION_CASE_EXP_START, this._getLocation());\n this._requireCharCode(chars.$LBRACE);\n this._endToken([], this._getLocation());\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._expansionCaseStack.push(TokenType.EXPANSION_CASE_EXP_START);\n }\n /**\n * @return {?}\n */\n _consumeExpansionCaseEnd() {\n this._beginToken(TokenType.EXPANSION_CASE_EXP_END, this._getLocation());\n this._requireCharCode(chars.$RBRACE);\n this._endToken([], this._getLocation());\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._expansionCaseStack.pop();\n }\n /**\n * @return {?}\n */\n _consumeExpansionFormEnd() {\n this._beginToken(TokenType.EXPANSION_FORM_END, this._getLocation());\n this._requireCharCode(chars.$RBRACE);\n this._endToken([]);\n this._expansionCaseStack.pop();\n }\n /**\n * @return {?}\n */\n _consumeText() {\n const /** @type {?} */ start = this._getLocation();\n this._beginToken(TokenType.TEXT, start);\n const /** @type {?} */ parts = [];\n do {\n if (this._interpolationConfig && this._attemptStr(this._interpolationConfig.start)) {\n parts.push(this._interpolationConfig.start);\n this._inInterpolation = true;\n }\n else if (this._interpolationConfig && this._inInterpolation &&\n this._attemptStr(this._interpolationConfig.end)) {\n parts.push(this._interpolationConfig.end);\n this._inInterpolation = false;\n }\n else {\n parts.push(this._readChar(true));\n }\n } while (!this._isTextEnd());\n this._endToken([this._processCarriageReturns(parts.join(''))]);\n }\n /**\n * @return {?}\n */\n _isTextEnd() {\n if (this._peek === chars.$LT || this._peek === chars.$EOF) {\n return true;\n }\n if (this._tokenizeIcu && !this._inInterpolation) {\n if (isExpansionFormStart(this._input, this._index, this._interpolationConfig)) {\n // start of an expansion form\n return true;\n }\n if (this._peek === chars.$RBRACE && this._isInExpansionCase()) {\n // end of and expansion case\n return true;\n }\n }\n return false;\n }\n /**\n * @return {?}\n */\n _savePosition() {\n return [this._peek, this._index, this._column, this._line, this.tokens.length];\n }\n /**\n * @param {?} char\n * @return {?}\n */\n _readUntil(char) {\n const /** @type {?} */ start = this._index;\n this._attemptUntilChar(char);\n return this._input.substring(start, this._index);\n }\n /**\n * @param {?} position\n * @return {?}\n */\n _restorePosition(position) {\n this._peek = position[0];\n this._index = position[1];\n this._column = position[2];\n this._line = position[3];\n const /** @type {?} */ nbTokens = position[4];\n if (nbTokens < this.tokens.length) {\n // remove any extra tokens\n this.tokens = this.tokens.slice(0, nbTokens);\n }\n }\n /**\n * @return {?}\n */\n _isInExpansionCase() {\n return this._expansionCaseStack.length > 0 &&\n this._expansionCaseStack[this._expansionCaseStack.length - 1] ===\n TokenType.EXPANSION_CASE_EXP_START;\n }\n /**\n * @return {?}\n */\n _isInExpansionForm() {\n return this._expansionCaseStack.length > 0 &&\n this._expansionCaseStack[this._expansionCaseStack.length - 1] ===\n TokenType.EXPANSION_FORM_START;\n }\n}\nfunction _Tokenizer_tsickle_Closure_declarations() {\n /** @type {?} */\n _Tokenizer.prototype._input;\n /** @type {?} */\n _Tokenizer.prototype._length;\n /** @type {?} */\n _Tokenizer.prototype._peek;\n /** @type {?} */\n _Tokenizer.prototype._nextPeek;\n /** @type {?} */\n _Tokenizer.prototype._index;\n /** @type {?} */\n _Tokenizer.prototype._line;\n /** @type {?} */\n _Tokenizer.prototype._column;\n /** @type {?} */\n _Tokenizer.prototype._currentTokenStart;\n /** @type {?} */\n _Tokenizer.prototype._currentTokenType;\n /** @type {?} */\n _Tokenizer.prototype._expansionCaseStack;\n /** @type {?} */\n _Tokenizer.prototype._inInterpolation;\n /** @type {?} */\n _Tokenizer.prototype.tokens;\n /** @type {?} */\n _Tokenizer.prototype.errors;\n /** @type {?} */\n _Tokenizer.prototype._file;\n /** @type {?} */\n _Tokenizer.prototype._getTagDefinition;\n /** @type {?} */\n _Tokenizer.prototype._tokenizeIcu;\n /** @type {?} */\n _Tokenizer.prototype._interpolationConfig;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isNotWhitespace(code) {\n return !chars.isWhitespace(code) || code === chars.$EOF;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isNameEnd(code) {\n return chars.isWhitespace(code) || code === chars.$GT || code === chars.$SLASH ||\n code === chars.$SQ || code === chars.$DQ || code === chars.$EQ;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isPrefixEnd(code) {\n return (code < chars.$a || chars.$z < code) && (code < chars.$A || chars.$Z < code) &&\n (code < chars.$0 || code > chars.$9);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isDigitEntityEnd(code) {\n return code == chars.$SEMICOLON || code == chars.$EOF || !chars.isAsciiHexDigit(code);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isNamedEntityEnd(code) {\n return code == chars.$SEMICOLON || code == chars.$EOF || !chars.isAsciiLetter(code);\n}\n/**\n * @param {?} input\n * @param {?} offset\n * @param {?} interpolationConfig\n * @return {?}\n */\nfunction isExpansionFormStart(input, offset, interpolationConfig) {\n const /** @type {?} */ isInterpolationStart = interpolationConfig ? input.indexOf(interpolationConfig.start, offset) == offset : false;\n return input.charCodeAt(offset) == chars.$LBRACE && !isInterpolationStart;\n}\n/**\n * @param {?} peek\n * @return {?}\n */\nfunction isExpansionCaseStart(peek) {\n return peek === chars.$EQ || chars.isAsciiLetter(peek) || chars.isDigit(peek);\n}\n/**\n * @param {?} code1\n * @param {?} code2\n * @return {?}\n */\nfunction compareCharCodeCaseInsensitive(code1, code2) {\n return toUpperCaseCharCode(code1) == toUpperCaseCharCode(code2);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction toUpperCaseCharCode(code) {\n return code >= chars.$a && code <= chars.$z ? code - chars.$a + chars.$A : code;\n}\n/**\n * @param {?} srcTokens\n * @return {?}\n */\nfunction mergeTextTokens(srcTokens) {\n const /** @type {?} */ dstTokens = [];\n let /** @type {?} */ lastDstToken = undefined;\n for (let /** @type {?} */ i = 0; i < srcTokens.length; i++) {\n const /** @type {?} */ token = srcTokens[i];\n if (lastDstToken && lastDstToken.type == TokenType.TEXT && token.type == TokenType.TEXT) {\n lastDstToken.parts[0] += token.parts[0];\n lastDstToken.sourceSpan.end = token.sourceSpan.end;\n }\n else {\n lastDstToken = token;\n dstTokens.push(lastDstToken);\n }\n }\n return dstTokens;\n}\n//# sourceMappingURL=lexer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ParseError, ParseSourceSpan } from '../parse_util';\nimport * as html from './ast';\nimport { DEFAULT_INTERPOLATION_CONFIG } from './interpolation_config';\nimport * as lex from './lexer';\nimport { getNsPrefix, isNgContainer, mergeNsAndName } from './tags';\nexport class TreeError extends ParseError {\n /**\n * @param {?} elementName\n * @param {?} span\n * @param {?} msg\n */\n constructor(elementName, span, msg) {\n super(span, msg);\n this.elementName = elementName;\n }\n /**\n * @param {?} elementName\n * @param {?} span\n * @param {?} msg\n * @return {?}\n */\n static create(elementName, span, msg) {\n return new TreeError(elementName, span, msg);\n }\n}\nfunction TreeError_tsickle_Closure_declarations() {\n /** @type {?} */\n TreeError.prototype.elementName;\n}\nexport class ParseTreeResult {\n /**\n * @param {?} rootNodes\n * @param {?} errors\n */\n constructor(rootNodes, errors) {\n this.rootNodes = rootNodes;\n this.errors = errors;\n }\n}\nfunction ParseTreeResult_tsickle_Closure_declarations() {\n /** @type {?} */\n ParseTreeResult.prototype.rootNodes;\n /** @type {?} */\n ParseTreeResult.prototype.errors;\n}\nexport class Parser {\n /**\n * @param {?} getTagDefinition\n */\n constructor(getTagDefinition) {\n this.getTagDefinition = getTagDefinition;\n }\n /**\n * @param {?} source\n * @param {?} url\n * @param {?=} parseExpansionForms\n * @param {?=} interpolationConfig\n * @return {?}\n */\n parse(source, url, parseExpansionForms = false, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {\n const /** @type {?} */ tokensAndErrors = lex.tokenize(source, url, this.getTagDefinition, parseExpansionForms, interpolationConfig);\n const /** @type {?} */ treeAndErrors = new _TreeBuilder(tokensAndErrors.tokens, this.getTagDefinition).build();\n return new ParseTreeResult(treeAndErrors.rootNodes, (/** @type {?} */ (tokensAndErrors.errors)).concat(treeAndErrors.errors));\n }\n}\nfunction Parser_tsickle_Closure_declarations() {\n /** @type {?} */\n Parser.prototype.getTagDefinition;\n}\nclass _TreeBuilder {\n /**\n * @param {?} tokens\n * @param {?} getTagDefinition\n */\n constructor(tokens, getTagDefinition) {\n this.tokens = tokens;\n this.getTagDefinition = getTagDefinition;\n this._index = -1;\n this._rootNodes = [];\n this._errors = [];\n this._elementStack = [];\n this._advance();\n }\n /**\n * @return {?}\n */\n build() {\n while (this._peek.type !== lex.TokenType.EOF) {\n if (this._peek.type === lex.TokenType.TAG_OPEN_START) {\n this._consumeStartTag(this._advance());\n }\n else if (this._peek.type === lex.TokenType.TAG_CLOSE) {\n this._consumeEndTag(this._advance());\n }\n else if (this._peek.type === lex.TokenType.CDATA_START) {\n this._closeVoidElement();\n this._consumeCdata(this._advance());\n }\n else if (this._peek.type === lex.TokenType.COMMENT_START) {\n this._closeVoidElement();\n this._consumeComment(this._advance());\n }\n else if (this._peek.type === lex.TokenType.TEXT || this._peek.type === lex.TokenType.RAW_TEXT ||\n this._peek.type === lex.TokenType.ESCAPABLE_RAW_TEXT) {\n this._closeVoidElement();\n this._consumeText(this._advance());\n }\n else if (this._peek.type === lex.TokenType.EXPANSION_FORM_START) {\n this._consumeExpansion(this._advance());\n }\n else {\n // Skip all other tokens...\n this._advance();\n }\n }\n return new ParseTreeResult(this._rootNodes, this._errors);\n }\n /**\n * @return {?}\n */\n _advance() {\n const /** @type {?} */ prev = this._peek;\n if (this._index < this.tokens.length - 1) {\n // Note: there is always an EOF token at the end\n this._index++;\n }\n this._peek = this.tokens[this._index];\n return prev;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n _advanceIf(type) {\n if (this._peek.type === type) {\n return this._advance();\n }\n return null;\n }\n /**\n * @param {?} startToken\n * @return {?}\n */\n _consumeCdata(startToken) {\n this._consumeText(this._advance());\n this._advanceIf(lex.TokenType.CDATA_END);\n }\n /**\n * @param {?} token\n * @return {?}\n */\n _consumeComment(token) {\n const /** @type {?} */ text = this._advanceIf(lex.TokenType.RAW_TEXT);\n this._advanceIf(lex.TokenType.COMMENT_END);\n const /** @type {?} */ value = text != null ? text.parts[0].trim() : null;\n this._addToParent(new html.Comment(value, token.sourceSpan));\n }\n /**\n * @param {?} token\n * @return {?}\n */\n _consumeExpansion(token) {\n const /** @type {?} */ switchValue = this._advance();\n const /** @type {?} */ type = this._advance();\n const /** @type {?} */ cases = [];\n // read =\n while (this._peek.type === lex.TokenType.EXPANSION_CASE_VALUE) {\n const /** @type {?} */ expCase = this._parseExpansionCase();\n if (!expCase)\n return; // error\n cases.push(expCase);\n }\n // read the final }\n if (this._peek.type !== lex.TokenType.EXPANSION_FORM_END) {\n this._errors.push(TreeError.create(null, this._peek.sourceSpan, `Invalid ICU message. Missing '}'.`));\n return;\n }\n const /** @type {?} */ sourceSpan = new ParseSourceSpan(token.sourceSpan.start, this._peek.sourceSpan.end);\n this._addToParent(new html.Expansion(switchValue.parts[0], type.parts[0], cases, sourceSpan, switchValue.sourceSpan));\n this._advance();\n }\n /**\n * @return {?}\n */\n _parseExpansionCase() {\n const /** @type {?} */ value = this._advance();\n // read {\n if (this._peek.type !== lex.TokenType.EXPANSION_CASE_EXP_START) {\n this._errors.push(TreeError.create(null, this._peek.sourceSpan, `Invalid ICU message. Missing '{'.`));\n return null;\n }\n // read until }\n const /** @type {?} */ start = this._advance();\n const /** @type {?} */ exp = this._collectExpansionExpTokens(start);\n if (!exp)\n return null;\n const /** @type {?} */ end = this._advance();\n exp.push(new lex.Token(lex.TokenType.EOF, [], end.sourceSpan));\n // parse everything in between { and }\n const /** @type {?} */ parsedExp = new _TreeBuilder(exp, this.getTagDefinition).build();\n if (parsedExp.errors.length > 0) {\n this._errors = this._errors.concat(/** @type {?} */ (parsedExp.errors));\n return null;\n }\n const /** @type {?} */ sourceSpan = new ParseSourceSpan(value.sourceSpan.start, end.sourceSpan.end);\n const /** @type {?} */ expSourceSpan = new ParseSourceSpan(start.sourceSpan.start, end.sourceSpan.end);\n return new html.ExpansionCase(value.parts[0], parsedExp.rootNodes, sourceSpan, value.sourceSpan, expSourceSpan);\n }\n /**\n * @param {?} start\n * @return {?}\n */\n _collectExpansionExpTokens(start) {\n const /** @type {?} */ exp = [];\n const /** @type {?} */ expansionFormStack = [lex.TokenType.EXPANSION_CASE_EXP_START];\n while (true) {\n if (this._peek.type === lex.TokenType.EXPANSION_FORM_START ||\n this._peek.type === lex.TokenType.EXPANSION_CASE_EXP_START) {\n expansionFormStack.push(this._peek.type);\n }\n if (this._peek.type === lex.TokenType.EXPANSION_CASE_EXP_END) {\n if (lastOnStack(expansionFormStack, lex.TokenType.EXPANSION_CASE_EXP_START)) {\n expansionFormStack.pop();\n if (expansionFormStack.length == 0)\n return exp;\n }\n else {\n this._errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`));\n return null;\n }\n }\n if (this._peek.type === lex.TokenType.EXPANSION_FORM_END) {\n if (lastOnStack(expansionFormStack, lex.TokenType.EXPANSION_FORM_START)) {\n expansionFormStack.pop();\n }\n else {\n this._errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`));\n return null;\n }\n }\n if (this._peek.type === lex.TokenType.EOF) {\n this._errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`));\n return null;\n }\n exp.push(this._advance());\n }\n }\n /**\n * @param {?} token\n * @return {?}\n */\n _consumeText(token) {\n let /** @type {?} */ text = token.parts[0];\n if (text.length > 0 && text[0] == '\\n') {\n const /** @type {?} */ parent = this._getParentElement();\n if (parent != null && parent.children.length == 0 &&\n this.getTagDefinition(parent.name).ignoreFirstLf) {\n text = text.substring(1);\n }\n }\n if (text.length > 0) {\n this._addToParent(new html.Text(text, token.sourceSpan));\n }\n }\n /**\n * @return {?}\n */\n _closeVoidElement() {\n const /** @type {?} */ el = this._getParentElement();\n if (el && this.getTagDefinition(el.name).isVoid) {\n this._elementStack.pop();\n }\n }\n /**\n * @param {?} startTagToken\n * @return {?}\n */\n _consumeStartTag(startTagToken) {\n const /** @type {?} */ prefix = startTagToken.parts[0];\n const /** @type {?} */ name = startTagToken.parts[1];\n const /** @type {?} */ attrs = [];\n while (this._peek.type === lex.TokenType.ATTR_NAME) {\n attrs.push(this._consumeAttr(this._advance()));\n }\n const /** @type {?} */ fullName = this._getElementFullName(prefix, name, this._getParentElement());\n let /** @type {?} */ selfClosing = false;\n // Note: There could have been a tokenizer error\n // so that we don't get a token for the end tag...\n if (this._peek.type === lex.TokenType.TAG_OPEN_END_VOID) {\n this._advance();\n selfClosing = true;\n const /** @type {?} */ tagDef = this.getTagDefinition(fullName);\n if (!(tagDef.canSelfClose || getNsPrefix(fullName) !== null || tagDef.isVoid)) {\n this._errors.push(TreeError.create(fullName, startTagToken.sourceSpan, `Only void and foreign elements can be self closed \"${startTagToken.parts[1]}\"`));\n }\n }\n else if (this._peek.type === lex.TokenType.TAG_OPEN_END) {\n this._advance();\n selfClosing = false;\n }\n const /** @type {?} */ end = this._peek.sourceSpan.start;\n const /** @type {?} */ span = new ParseSourceSpan(startTagToken.sourceSpan.start, end);\n const /** @type {?} */ el = new html.Element(fullName, attrs, [], span, span, undefined);\n this._pushElement(el);\n if (selfClosing) {\n this._popElement(fullName);\n el.endSourceSpan = span;\n }\n }\n /**\n * @param {?} el\n * @return {?}\n */\n _pushElement(el) {\n const /** @type {?} */ parentEl = this._getParentElement();\n if (parentEl && this.getTagDefinition(parentEl.name).isClosedByChild(el.name)) {\n this._elementStack.pop();\n }\n const /** @type {?} */ tagDef = this.getTagDefinition(el.name);\n const { parent, container } = this._getParentElementSkippingContainers();\n if (parent && tagDef.requireExtraParent(parent.name)) {\n const /** @type {?} */ newParent = new html.Element(tagDef.parentToAdd, [], [], el.sourceSpan, el.startSourceSpan, el.endSourceSpan);\n this._insertBeforeContainer(parent, container, newParent);\n }\n this._addToParent(el);\n this._elementStack.push(el);\n }\n /**\n * @param {?} endTagToken\n * @return {?}\n */\n _consumeEndTag(endTagToken) {\n const /** @type {?} */ fullName = this._getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement());\n if (this._getParentElement()) {\n /** @type {?} */ ((this._getParentElement())).endSourceSpan = endTagToken.sourceSpan;\n }\n if (this.getTagDefinition(fullName).isVoid) {\n this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, `Void elements do not have end tags \"${endTagToken.parts[1]}\"`));\n }\n else if (!this._popElement(fullName)) {\n const /** @type {?} */ errMsg = `Unexpected closing tag \"${fullName}\". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags`;\n this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, errMsg));\n }\n }\n /**\n * @param {?} fullName\n * @return {?}\n */\n _popElement(fullName) {\n for (let /** @type {?} */ stackIndex = this._elementStack.length - 1; stackIndex >= 0; stackIndex--) {\n const /** @type {?} */ el = this._elementStack[stackIndex];\n if (el.name == fullName) {\n this._elementStack.splice(stackIndex, this._elementStack.length - stackIndex);\n return true;\n }\n if (!this.getTagDefinition(el.name).closedByParent) {\n return false;\n }\n }\n return false;\n }\n /**\n * @param {?} attrName\n * @return {?}\n */\n _consumeAttr(attrName) {\n const /** @type {?} */ fullName = mergeNsAndName(attrName.parts[0], attrName.parts[1]);\n let /** @type {?} */ end = attrName.sourceSpan.end;\n let /** @type {?} */ value = '';\n let /** @type {?} */ valueSpan = /** @type {?} */ ((undefined));\n if (this._peek.type === lex.TokenType.ATTR_VALUE) {\n const /** @type {?} */ valueToken = this._advance();\n value = valueToken.parts[0];\n end = valueToken.sourceSpan.end;\n valueSpan = valueToken.sourceSpan;\n }\n return new html.Attribute(fullName, value, new ParseSourceSpan(attrName.sourceSpan.start, end), valueSpan);\n }\n /**\n * @return {?}\n */\n _getParentElement() {\n return this._elementStack.length > 0 ? this._elementStack[this._elementStack.length - 1] : null;\n }\n /**\n * Returns the parent in the DOM and the container.\n *\n * `<ng-container>` elements are skipped as they are not rendered as DOM element.\n * @return {?}\n */\n _getParentElementSkippingContainers() {\n let /** @type {?} */ container = null;\n for (let /** @type {?} */ i = this._elementStack.length - 1; i >= 0; i--) {\n if (!isNgContainer(this._elementStack[i].name)) {\n return { parent: this._elementStack[i], container };\n }\n container = this._elementStack[i];\n }\n return { parent: null, container };\n }\n /**\n * @param {?} node\n * @return {?}\n */\n _addToParent(node) {\n const /** @type {?} */ parent = this._getParentElement();\n if (parent != null) {\n parent.children.push(node);\n }\n else {\n this._rootNodes.push(node);\n }\n }\n /**\n * Insert a node between the parent and the container.\n * When no container is given, the node is appended as a child of the parent.\n * Also updates the element stack accordingly.\n *\n * \\@internal\n * @param {?} parent\n * @param {?} container\n * @param {?} node\n * @return {?}\n */\n _insertBeforeContainer(parent, container, node) {\n if (!container) {\n this._addToParent(node);\n this._elementStack.push(node);\n }\n else {\n if (parent) {\n // replace the container with the new node in the children\n const /** @type {?} */ index = parent.children.indexOf(container);\n parent.children[index] = node;\n }\n else {\n this._rootNodes.push(node);\n }\n node.children.push(container);\n this._elementStack.splice(this._elementStack.indexOf(container), 0, node);\n }\n }\n /**\n * @param {?} prefix\n * @param {?} localName\n * @param {?} parentElement\n * @return {?}\n */\n _getElementFullName(prefix, localName, parentElement) {\n if (prefix == null) {\n prefix = /** @type {?} */ ((this.getTagDefinition(localName).implicitNamespacePrefix));\n if (prefix == null && parentElement != null) {\n prefix = getNsPrefix(parentElement.name);\n }\n }\n return mergeNsAndName(prefix, localName);\n }\n}\nfunction _TreeBuilder_tsickle_Closure_declarations() {\n /** @type {?} */\n _TreeBuilder.prototype._index;\n /** @type {?} */\n _TreeBuilder.prototype._peek;\n /** @type {?} */\n _TreeBuilder.prototype._rootNodes;\n /** @type {?} */\n _TreeBuilder.prototype._errors;\n /** @type {?} */\n _TreeBuilder.prototype._elementStack;\n /** @type {?} */\n _TreeBuilder.prototype.tokens;\n /** @type {?} */\n _TreeBuilder.prototype.getTagDefinition;\n}\n/**\n * @param {?} stack\n * @param {?} element\n * @return {?}\n */\nfunction lastOnStack(stack, element) {\n return stack.length > 0 && stack[stack.length - 1] === element;\n}\n//# sourceMappingURL=parser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { utf8Encode } from '../util';\n/**\n * @param {?} message\n * @return {?}\n */\nexport function digest(message) {\n return message.id || sha1(serializeNodes(message.nodes).join('') + `[${message.meaning}]`);\n}\n/**\n * @param {?} message\n * @return {?}\n */\nexport function decimalDigest(message) {\n if (message.id) {\n return message.id;\n }\n const /** @type {?} */ visitor = new _SerializerIgnoreIcuExpVisitor();\n const /** @type {?} */ parts = message.nodes.map(a => a.visit(visitor, null));\n return computeMsgId(parts.join(''), message.meaning);\n}\n/**\n * Serialize the i18n ast to something xml-like in order to generate an UID.\n *\n * The visitor is also used in the i18n parser tests\n *\n * \\@internal\n */\nclass _SerializerVisitor {\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n visitText(text, context) { return text.value; }\n /**\n * @param {?} container\n * @param {?} context\n * @return {?}\n */\n visitContainer(container, context) {\n return `[${container.children.map(child => child.visit(this)).join(', ')}]`;\n }\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n visitIcu(icu, context) {\n const /** @type {?} */ strCases = Object.keys(icu.cases).map((k) => `${k} {${icu.cases[k].visit(this)}}`);\n return `{${icu.expression}, ${icu.type}, ${strCases.join(', ')}}`;\n }\n /**\n * @param {?} ph\n * @param {?} context\n * @return {?}\n */\n visitTagPlaceholder(ph, context) {\n return ph.isVoid ?\n `<ph tag name=\"${ph.startName}\"/>` :\n `<ph tag name=\"${ph.startName}\">${ph.children.map(child => child.visit(this)).join(', ')}</ph name=\"${ph.closeName}\">`;\n }\n /**\n * @param {?} ph\n * @param {?} context\n * @return {?}\n */\n visitPlaceholder(ph, context) {\n return ph.value ? `<ph name=\"${ph.name}\">${ph.value}</ph>` : `<ph name=\"${ph.name}\"/>`;\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitIcuPlaceholder(ph, context) {\n return `<ph icu name=\"${ph.name}\">${ph.value.visit(this)}</ph>`;\n }\n}\nconst /** @type {?} */ serializerVisitor = new _SerializerVisitor();\n/**\n * @param {?} nodes\n * @return {?}\n */\nexport function serializeNodes(nodes) {\n return nodes.map(a => a.visit(serializerVisitor, null));\n}\n/**\n * Serialize the i18n ast to something xml-like in order to generate an UID.\n *\n * Ignore the ICU expressions so that message IDs stays identical if only the expression changes.\n *\n * \\@internal\n */\nclass _SerializerIgnoreIcuExpVisitor extends _SerializerVisitor {\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n visitIcu(icu, context) {\n let /** @type {?} */ strCases = Object.keys(icu.cases).map((k) => `${k} {${icu.cases[k].visit(this)}}`);\n // Do not take the expression into account\n return `{${icu.type}, ${strCases.join(', ')}}`;\n }\n}\n/**\n * Compute the SHA1 of the given string\n *\n * see http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n *\n * WARNING: this function has not been designed not tested with security in mind.\n * DO NOT USE IT IN A SECURITY SENSITIVE CONTEXT.\n * @param {?} str\n * @return {?}\n */\nexport function sha1(str) {\n const /** @type {?} */ utf8 = utf8Encode(str);\n const /** @type {?} */ words32 = stringToWords32(utf8, Endian.Big);\n const /** @type {?} */ len = utf8.length * 8;\n const /** @type {?} */ w = new Array(80);\n let [a, b, c, d, e] = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n words32[len >> 5] |= 0x80 << (24 - len % 32);\n words32[((len + 64 >> 9) << 4) + 15] = len;\n for (let /** @type {?} */ i = 0; i < words32.length; i += 16) {\n const [h0, h1, h2, h3, h4] = [a, b, c, d, e];\n for (let /** @type {?} */ j = 0; j < 80; j++) {\n if (j < 16) {\n w[j] = words32[i + j];\n }\n else {\n w[j] = rol32(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n }\n const [f, k] = fk(j, b, c, d);\n const /** @type {?} */ temp = [rol32(a, 5), f, e, k, w[j]].reduce(add32);\n [e, d, c, b, a] = [d, c, rol32(b, 30), a, temp];\n }\n [a, b, c, d, e] = [add32(a, h0), add32(b, h1), add32(c, h2), add32(d, h3), add32(e, h4)];\n }\n return byteStringToHexString(words32ToByteString([a, b, c, d, e]));\n}\n/**\n * @param {?} index\n * @param {?} b\n * @param {?} c\n * @param {?} d\n * @return {?}\n */\nfunction fk(index, b, c, d) {\n if (index < 20) {\n return [(b & c) | (~b & d), 0x5a827999];\n }\n if (index < 40) {\n return [b ^ c ^ d, 0x6ed9eba1];\n }\n if (index < 60) {\n return [(b & c) | (b & d) | (c & d), 0x8f1bbcdc];\n }\n return [b ^ c ^ d, 0xca62c1d6];\n}\n/**\n * Compute the fingerprint of the given string\n *\n * The output is 64 bit number encoded as a decimal string\n *\n * based on:\n * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/GoogleJsMessageIdGenerator.java\n * @param {?} str\n * @return {?}\n */\nexport function fingerprint(str) {\n const /** @type {?} */ utf8 = utf8Encode(str);\n let [hi, lo] = [hash32(utf8, 0), hash32(utf8, 102072)];\n if (hi == 0 && (lo == 0 || lo == 1)) {\n hi = hi ^ 0x130f9bef;\n lo = lo ^ -0x6b5f56d8;\n }\n return [hi, lo];\n}\n/**\n * @param {?} msg\n * @param {?} meaning\n * @return {?}\n */\nexport function computeMsgId(msg, meaning) {\n let [hi, lo] = fingerprint(msg);\n if (meaning) {\n const [him, lom] = fingerprint(meaning);\n [hi, lo] = add64(rol64([hi, lo], 1), [him, lom]);\n }\n return byteStringToDecString(words32ToByteString([hi & 0x7fffffff, lo]));\n}\n/**\n * @param {?} str\n * @param {?} c\n * @return {?}\n */\nfunction hash32(str, c) {\n let [a, b] = [0x9e3779b9, 0x9e3779b9];\n let /** @type {?} */ i;\n const /** @type {?} */ len = str.length;\n for (i = 0; i + 12 <= len; i += 12) {\n a = add32(a, wordAt(str, i, Endian.Little));\n b = add32(b, wordAt(str, i + 4, Endian.Little));\n c = add32(c, wordAt(str, i + 8, Endian.Little));\n [a, b, c] = mix([a, b, c]);\n }\n a = add32(a, wordAt(str, i, Endian.Little));\n b = add32(b, wordAt(str, i + 4, Endian.Little));\n // the first byte of c is reserved for the length\n c = add32(c, len);\n c = add32(c, wordAt(str, i + 8, Endian.Little) << 8);\n return mix([a, b, c])[2];\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction mix([a, b, c]) {\n a = sub32(a, b);\n a = sub32(a, c);\n a ^= c >>> 13;\n b = sub32(b, c);\n b = sub32(b, a);\n b ^= a << 8;\n c = sub32(c, a);\n c = sub32(c, b);\n c ^= b >>> 13;\n a = sub32(a, b);\n a = sub32(a, c);\n a ^= c >>> 12;\n b = sub32(b, c);\n b = sub32(b, a);\n b ^= a << 16;\n c = sub32(c, a);\n c = sub32(c, b);\n c ^= b >>> 5;\n a = sub32(a, b);\n a = sub32(a, c);\n a ^= c >>> 3;\n b = sub32(b, c);\n b = sub32(b, a);\n b ^= a << 10;\n c = sub32(c, a);\n c = sub32(c, b);\n c ^= b >>> 15;\n return [a, b, c];\n}\n/** @enum {number} */\nconst Endian = {\n Little: 0,\n Big: 1,\n};\nEndian[Endian.Little] = \"Little\";\nEndian[Endian.Big] = \"Big\";\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction add32(a, b) {\n return add32to64(a, b)[1];\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction add32to64(a, b) {\n const /** @type {?} */ low = (a & 0xffff) + (b & 0xffff);\n const /** @type {?} */ high = (a >>> 16) + (b >>> 16) + (low >>> 16);\n return [high >>> 16, (high << 16) | (low & 0xffff)];\n}\n/**\n * @param {?} __0\n * @param {?} __1\n * @return {?}\n */\nfunction add64([ah, al], [bh, bl]) {\n const [carry, l] = add32to64(al, bl);\n const /** @type {?} */ h = add32(add32(ah, bh), carry);\n return [h, l];\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction sub32(a, b) {\n const /** @type {?} */ low = (a & 0xffff) - (b & 0xffff);\n const /** @type {?} */ high = (a >> 16) - (b >> 16) + (low >> 16);\n return (high << 16) | (low & 0xffff);\n}\n/**\n * @param {?} a\n * @param {?} count\n * @return {?}\n */\nfunction rol32(a, count) {\n return (a << count) | (a >>> (32 - count));\n}\n/**\n * @param {?} __0\n * @param {?} count\n * @return {?}\n */\nfunction rol64([hi, lo], count) {\n const /** @type {?} */ h = (hi << count) | (lo >>> (32 - count));\n const /** @type {?} */ l = (lo << count) | (hi >>> (32 - count));\n return [h, l];\n}\n/**\n * @param {?} str\n * @param {?} endian\n * @return {?}\n */\nfunction stringToWords32(str, endian) {\n const /** @type {?} */ words32 = Array((str.length + 3) >>> 2);\n for (let /** @type {?} */ i = 0; i < words32.length; i++) {\n words32[i] = wordAt(str, i * 4, endian);\n }\n return words32;\n}\n/**\n * @param {?} str\n * @param {?} index\n * @return {?}\n */\nfunction byteAt(str, index) {\n return index >= str.length ? 0 : str.charCodeAt(index) & 0xff;\n}\n/**\n * @param {?} str\n * @param {?} index\n * @param {?} endian\n * @return {?}\n */\nfunction wordAt(str, index, endian) {\n let /** @type {?} */ word = 0;\n if (endian === Endian.Big) {\n for (let /** @type {?} */ i = 0; i < 4; i++) {\n word += byteAt(str, index + i) << (24 - 8 * i);\n }\n }\n else {\n for (let /** @type {?} */ i = 0; i < 4; i++) {\n word += byteAt(str, index + i) << 8 * i;\n }\n }\n return word;\n}\n/**\n * @param {?} words32\n * @return {?}\n */\nfunction words32ToByteString(words32) {\n return words32.reduce((str, word) => str + word32ToByteString(word), '');\n}\n/**\n * @param {?} word\n * @return {?}\n */\nfunction word32ToByteString(word) {\n let /** @type {?} */ str = '';\n for (let /** @type {?} */ i = 0; i < 4; i++) {\n str += String.fromCharCode((word >>> 8 * (3 - i)) & 0xff);\n }\n return str;\n}\n/**\n * @param {?} str\n * @return {?}\n */\nfunction byteStringToHexString(str) {\n let /** @type {?} */ hex = '';\n for (let /** @type {?} */ i = 0; i < str.length; i++) {\n const /** @type {?} */ b = byteAt(str, i);\n hex += (b >>> 4).toString(16) + (b & 0x0f).toString(16);\n }\n return hex.toLowerCase();\n}\n/**\n * @param {?} str\n * @return {?}\n */\nfunction byteStringToDecString(str) {\n let /** @type {?} */ decimal = '';\n let /** @type {?} */ toThePower = '1';\n for (let /** @type {?} */ i = str.length - 1; i >= 0; i--) {\n decimal = addBigInt(decimal, numberTimesBigInt(byteAt(str, i), toThePower));\n toThePower = numberTimesBigInt(256, toThePower);\n }\n return decimal.split('').reverse().join('');\n}\n/**\n * @param {?} x\n * @param {?} y\n * @return {?}\n */\nfunction addBigInt(x, y) {\n let /** @type {?} */ sum = '';\n const /** @type {?} */ len = Math.max(x.length, y.length);\n for (let /** @type {?} */ i = 0, /** @type {?} */ carry = 0; i < len || carry; i++) {\n const /** @type {?} */ tmpSum = carry + +(x[i] || 0) + +(y[i] || 0);\n if (tmpSum >= 10) {\n carry = 1;\n sum += tmpSum - 10;\n }\n else {\n carry = 0;\n sum += tmpSum;\n }\n }\n return sum;\n}\n/**\n * @param {?} num\n * @param {?} b\n * @return {?}\n */\nfunction numberTimesBigInt(num, b) {\n let /** @type {?} */ product = '';\n let /** @type {?} */ bToThePower = b;\n for (; num !== 0; num = num >>> 1) {\n if (num & 1)\n product = addBigInt(product, bToThePower);\n bToThePower = addBigInt(bToThePower, bToThePower);\n }\n return product;\n}\n//# sourceMappingURL=digest.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport class Message {\n /**\n * @param {?} nodes message AST\n * @param {?} placeholders maps placeholder names to static content\n * @param {?} placeholderToMessage maps placeholder names to messages (used for nested ICU messages)\n * @param {?} meaning\n * @param {?} description\n * @param {?} id\n */\n constructor(nodes, placeholders, placeholderToMessage, meaning, description, id) {\n this.nodes = nodes;\n this.placeholders = placeholders;\n this.placeholderToMessage = placeholderToMessage;\n this.meaning = meaning;\n this.description = description;\n this.id = id;\n if (nodes.length) {\n this.sources = [{\n filePath: nodes[0].sourceSpan.start.file.url,\n startLine: nodes[0].sourceSpan.start.line + 1,\n startCol: nodes[0].sourceSpan.start.col + 1,\n endLine: nodes[nodes.length - 1].sourceSpan.end.line + 1,\n endCol: nodes[0].sourceSpan.start.col + 1\n }];\n }\n else {\n this.sources = [];\n }\n }\n}\nfunction Message_tsickle_Closure_declarations() {\n /** @type {?} */\n Message.prototype.sources;\n /** @type {?} */\n Message.prototype.nodes;\n /** @type {?} */\n Message.prototype.placeholders;\n /** @type {?} */\n Message.prototype.placeholderToMessage;\n /** @type {?} */\n Message.prototype.meaning;\n /** @type {?} */\n Message.prototype.description;\n /** @type {?} */\n Message.prototype.id;\n}\n/**\n * @record\n */\nexport function MessageSpan() { }\nfunction MessageSpan_tsickle_Closure_declarations() {\n /** @type {?} */\n MessageSpan.prototype.filePath;\n /** @type {?} */\n MessageSpan.prototype.startLine;\n /** @type {?} */\n MessageSpan.prototype.startCol;\n /** @type {?} */\n MessageSpan.prototype.endLine;\n /** @type {?} */\n MessageSpan.prototype.endCol;\n}\n/**\n * @record\n */\nexport function Node() { }\nfunction Node_tsickle_Closure_declarations() {\n /** @type {?} */\n Node.prototype.sourceSpan;\n /** @type {?} */\n Node.prototype.visit;\n}\nexport class Text {\n /**\n * @param {?} value\n * @param {?} sourceSpan\n */\n constructor(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitText(this, context); }\n}\nfunction Text_tsickle_Closure_declarations() {\n /** @type {?} */\n Text.prototype.value;\n /** @type {?} */\n Text.prototype.sourceSpan;\n}\nexport class Container {\n /**\n * @param {?} children\n * @param {?} sourceSpan\n */\n constructor(children, sourceSpan) {\n this.children = children;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitContainer(this, context); }\n}\nfunction Container_tsickle_Closure_declarations() {\n /** @type {?} */\n Container.prototype.children;\n /** @type {?} */\n Container.prototype.sourceSpan;\n}\nexport class Icu {\n /**\n * @param {?} expression\n * @param {?} type\n * @param {?} cases\n * @param {?} sourceSpan\n */\n constructor(expression, type, cases, sourceSpan) {\n this.expression = expression;\n this.type = type;\n this.cases = cases;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitIcu(this, context); }\n}\nfunction Icu_tsickle_Closure_declarations() {\n /** @type {?} */\n Icu.prototype.expressionPlaceholder;\n /** @type {?} */\n Icu.prototype.expression;\n /** @type {?} */\n Icu.prototype.type;\n /** @type {?} */\n Icu.prototype.cases;\n /** @type {?} */\n Icu.prototype.sourceSpan;\n}\nexport class TagPlaceholder {\n /**\n * @param {?} tag\n * @param {?} attrs\n * @param {?} startName\n * @param {?} closeName\n * @param {?} children\n * @param {?} isVoid\n * @param {?} sourceSpan\n */\n constructor(tag, attrs, startName, closeName, children, isVoid, sourceSpan) {\n this.tag = tag;\n this.attrs = attrs;\n this.startName = startName;\n this.closeName = closeName;\n this.children = children;\n this.isVoid = isVoid;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitTagPlaceholder(this, context); }\n}\nfunction TagPlaceholder_tsickle_Closure_declarations() {\n /** @type {?} */\n TagPlaceholder.prototype.tag;\n /** @type {?} */\n TagPlaceholder.prototype.attrs;\n /** @type {?} */\n TagPlaceholder.prototype.startName;\n /** @type {?} */\n TagPlaceholder.prototype.closeName;\n /** @type {?} */\n TagPlaceholder.prototype.children;\n /** @type {?} */\n TagPlaceholder.prototype.isVoid;\n /** @type {?} */\n TagPlaceholder.prototype.sourceSpan;\n}\nexport class Placeholder {\n /**\n * @param {?} value\n * @param {?} name\n * @param {?} sourceSpan\n */\n constructor(value, name, sourceSpan) {\n this.value = value;\n this.name = name;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitPlaceholder(this, context); }\n}\nfunction Placeholder_tsickle_Closure_declarations() {\n /** @type {?} */\n Placeholder.prototype.value;\n /** @type {?} */\n Placeholder.prototype.name;\n /** @type {?} */\n Placeholder.prototype.sourceSpan;\n}\nexport class IcuPlaceholder {\n /**\n * @param {?} value\n * @param {?} name\n * @param {?} sourceSpan\n */\n constructor(value, name, sourceSpan) {\n this.value = value;\n this.name = name;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n visit(visitor, context) { return visitor.visitIcuPlaceholder(this, context); }\n}\nfunction IcuPlaceholder_tsickle_Closure_declarations() {\n /** @type {?} */\n IcuPlaceholder.prototype.value;\n /** @type {?} */\n IcuPlaceholder.prototype.name;\n /** @type {?} */\n IcuPlaceholder.prototype.sourceSpan;\n}\n/**\n * @record\n */\nexport function Visitor() { }\nfunction Visitor_tsickle_Closure_declarations() {\n /** @type {?} */\n Visitor.prototype.visitText;\n /** @type {?} */\n Visitor.prototype.visitContainer;\n /** @type {?} */\n Visitor.prototype.visitIcu;\n /** @type {?} */\n Visitor.prototype.visitTagPlaceholder;\n /** @type {?} */\n Visitor.prototype.visitPlaceholder;\n /** @type {?} */\n Visitor.prototype.visitIcuPlaceholder;\n}\nexport class CloneVisitor {\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n visitText(text, context) { return new Text(text.value, text.sourceSpan); }\n /**\n * @param {?} container\n * @param {?=} context\n * @return {?}\n */\n visitContainer(container, context) {\n const /** @type {?} */ children = container.children.map(n => n.visit(this, context));\n return new Container(children, container.sourceSpan);\n }\n /**\n * @param {?} icu\n * @param {?=} context\n * @return {?}\n */\n visitIcu(icu, context) {\n const /** @type {?} */ cases = {};\n Object.keys(icu.cases).forEach(key => cases[key] = icu.cases[key].visit(this, context));\n const /** @type {?} */ msg = new Icu(icu.expression, icu.type, cases, icu.sourceSpan);\n msg.expressionPlaceholder = icu.expressionPlaceholder;\n return msg;\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitTagPlaceholder(ph, context) {\n const /** @type {?} */ children = ph.children.map(n => n.visit(this, context));\n return new TagPlaceholder(ph.tag, ph.attrs, ph.startName, ph.closeName, children, ph.isVoid, ph.sourceSpan);\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitPlaceholder(ph, context) {\n return new Placeholder(ph.value, ph.name, ph.sourceSpan);\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitIcuPlaceholder(ph, context) {\n return new IcuPlaceholder(ph.value, ph.name, ph.sourceSpan);\n }\n}\nexport class RecurseVisitor {\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n visitText(text, context) { }\n /**\n * @param {?} container\n * @param {?=} context\n * @return {?}\n */\n visitContainer(container, context) {\n container.children.forEach(child => child.visit(this));\n }\n /**\n * @param {?} icu\n * @param {?=} context\n * @return {?}\n */\n visitIcu(icu, context) {\n Object.keys(icu.cases).forEach(k => { icu.cases[k].visit(this); });\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitTagPlaceholder(ph, context) {\n ph.children.forEach(child => child.visit(this));\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitPlaceholder(ph, context) { }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitIcuPlaceholder(ph, context) { }\n}\n//# sourceMappingURL=i18n_ast.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { TagContentType } from './tags';\nexport class HtmlTagDefinition {\n /**\n * @param {?=} __0\n */\n constructor({ closedByChildren, requiredParents, implicitNamespacePrefix, contentType = TagContentType.PARSABLE_DATA, closedByParent = false, isVoid = false, ignoreFirstLf = false } = {}) {\n this.closedByChildren = {};\n this.closedByParent = false;\n this.canSelfClose = false;\n if (closedByChildren && closedByChildren.length > 0) {\n closedByChildren.forEach(tagName => this.closedByChildren[tagName] = true);\n }\n this.isVoid = isVoid;\n this.closedByParent = closedByParent || isVoid;\n if (requiredParents && requiredParents.length > 0) {\n this.requiredParents = {};\n // The first parent is the list is automatically when none of the listed parents are present\n this.parentToAdd = requiredParents[0];\n requiredParents.forEach(tagName => this.requiredParents[tagName] = true);\n }\n this.implicitNamespacePrefix = implicitNamespacePrefix || null;\n this.contentType = contentType;\n this.ignoreFirstLf = ignoreFirstLf;\n }\n /**\n * @param {?} currentParent\n * @return {?}\n */\n requireExtraParent(currentParent) {\n if (!this.requiredParents) {\n return false;\n }\n if (!currentParent) {\n return true;\n }\n const /** @type {?} */ lcParent = currentParent.toLowerCase();\n const /** @type {?} */ isParentTemplate = lcParent === 'template' || currentParent === 'ng-template';\n return !isParentTemplate && this.requiredParents[lcParent] != true;\n }\n /**\n * @param {?} name\n * @return {?}\n */\n isClosedByChild(name) {\n return this.isVoid || name.toLowerCase() in this.closedByChildren;\n }\n}\nfunction HtmlTagDefinition_tsickle_Closure_declarations() {\n /** @type {?} */\n HtmlTagDefinition.prototype.closedByChildren;\n /** @type {?} */\n HtmlTagDefinition.prototype.closedByParent;\n /** @type {?} */\n HtmlTagDefinition.prototype.requiredParents;\n /** @type {?} */\n HtmlTagDefinition.prototype.parentToAdd;\n /** @type {?} */\n HtmlTagDefinition.prototype.implicitNamespacePrefix;\n /** @type {?} */\n HtmlTagDefinition.prototype.contentType;\n /** @type {?} */\n HtmlTagDefinition.prototype.isVoid;\n /** @type {?} */\n HtmlTagDefinition.prototype.ignoreFirstLf;\n /** @type {?} */\n HtmlTagDefinition.prototype.canSelfClose;\n}\n// see http://www.w3.org/TR/html51/syntax.html#optional-tags\n// This implementation does not fully conform to the HTML5 spec.\nconst /** @type {?} */ TAG_DEFINITIONS = {\n 'base': new HtmlTagDefinition({ isVoid: true }),\n 'meta': new HtmlTagDefinition({ isVoid: true }),\n 'area': new HtmlTagDefinition({ isVoid: true }),\n 'embed': new HtmlTagDefinition({ isVoid: true }),\n 'link': new HtmlTagDefinition({ isVoid: true }),\n 'img': new HtmlTagDefinition({ isVoid: true }),\n 'input': new HtmlTagDefinition({ isVoid: true }),\n 'param': new HtmlTagDefinition({ isVoid: true }),\n 'hr': new HtmlTagDefinition({ isVoid: true }),\n 'br': new HtmlTagDefinition({ isVoid: true }),\n 'source': new HtmlTagDefinition({ isVoid: true }),\n 'track': new HtmlTagDefinition({ isVoid: true }),\n 'wbr': new HtmlTagDefinition({ isVoid: true }),\n 'p': new HtmlTagDefinition({\n closedByChildren: [\n 'address', 'article', 'aside', 'blockquote', 'div', 'dl', 'fieldset', 'footer', 'form',\n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr',\n 'main', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'\n ],\n closedByParent: true\n }),\n 'thead': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'] }),\n 'tbody': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'], closedByParent: true }),\n 'tfoot': new HtmlTagDefinition({ closedByChildren: ['tbody'], closedByParent: true }),\n 'tr': new HtmlTagDefinition({\n closedByChildren: ['tr'],\n requiredParents: ['tbody', 'tfoot', 'thead'],\n closedByParent: true\n }),\n 'td': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),\n 'th': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),\n 'col': new HtmlTagDefinition({ requiredParents: ['colgroup'], isVoid: true }),\n 'svg': new HtmlTagDefinition({ implicitNamespacePrefix: 'svg' }),\n 'math': new HtmlTagDefinition({ implicitNamespacePrefix: 'math' }),\n 'li': new HtmlTagDefinition({ closedByChildren: ['li'], closedByParent: true }),\n 'dt': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'] }),\n 'dd': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'], closedByParent: true }),\n 'rb': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\n 'rt': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\n 'rtc': new HtmlTagDefinition({ closedByChildren: ['rb', 'rtc', 'rp'], closedByParent: true }),\n 'rp': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\n 'optgroup': new HtmlTagDefinition({ closedByChildren: ['optgroup'], closedByParent: true }),\n 'option': new HtmlTagDefinition({ closedByChildren: ['option', 'optgroup'], closedByParent: true }),\n 'pre': new HtmlTagDefinition({ ignoreFirstLf: true }),\n 'listing': new HtmlTagDefinition({ ignoreFirstLf: true }),\n 'style': new HtmlTagDefinition({ contentType: TagContentType.RAW_TEXT }),\n 'script': new HtmlTagDefinition({ contentType: TagContentType.RAW_TEXT }),\n 'title': new HtmlTagDefinition({ contentType: TagContentType.ESCAPABLE_RAW_TEXT }),\n 'textarea': new HtmlTagDefinition({ contentType: TagContentType.ESCAPABLE_RAW_TEXT, ignoreFirstLf: true }),\n};\nconst /** @type {?} */ _DEFAULT_TAG_DEFINITION = new HtmlTagDefinition();\n/**\n * @param {?} tagName\n * @return {?}\n */\nexport function getHtmlTagDefinition(tagName) {\n return TAG_DEFINITIONS[tagName.toLowerCase()] || _DEFAULT_TAG_DEFINITION;\n}\n//# sourceMappingURL=html_tags.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst /** @type {?} */ TAG_TO_PLACEHOLDER_NAMES = {\n 'A': 'LINK',\n 'B': 'BOLD_TEXT',\n 'BR': 'LINE_BREAK',\n 'EM': 'EMPHASISED_TEXT',\n 'H1': 'HEADING_LEVEL1',\n 'H2': 'HEADING_LEVEL2',\n 'H3': 'HEADING_LEVEL3',\n 'H4': 'HEADING_LEVEL4',\n 'H5': 'HEADING_LEVEL5',\n 'H6': 'HEADING_LEVEL6',\n 'HR': 'HORIZONTAL_RULE',\n 'I': 'ITALIC_TEXT',\n 'LI': 'LIST_ITEM',\n 'LINK': 'MEDIA_LINK',\n 'OL': 'ORDERED_LIST',\n 'P': 'PARAGRAPH',\n 'Q': 'QUOTATION',\n 'S': 'STRIKETHROUGH_TEXT',\n 'SMALL': 'SMALL_TEXT',\n 'SUB': 'SUBSTRIPT',\n 'SUP': 'SUPERSCRIPT',\n 'TBODY': 'TABLE_BODY',\n 'TD': 'TABLE_CELL',\n 'TFOOT': 'TABLE_FOOTER',\n 'TH': 'TABLE_HEADER_CELL',\n 'THEAD': 'TABLE_HEADER',\n 'TR': 'TABLE_ROW',\n 'TT': 'MONOSPACED_TEXT',\n 'U': 'UNDERLINED_TEXT',\n 'UL': 'UNORDERED_LIST',\n};\n/**\n * Creates unique names for placeholder with different content.\n *\n * Returns the same placeholder name when the content is identical.\n */\nexport class PlaceholderRegistry {\n constructor() {\n this._placeHolderNameCounts = {};\n this._signatureToName = {};\n }\n /**\n * @param {?} tag\n * @param {?} attrs\n * @param {?} isVoid\n * @return {?}\n */\n getStartTagPlaceholderName(tag, attrs, isVoid) {\n const /** @type {?} */ signature = this._hashTag(tag, attrs, isVoid);\n if (this._signatureToName[signature]) {\n return this._signatureToName[signature];\n }\n const /** @type {?} */ upperTag = tag.toUpperCase();\n const /** @type {?} */ baseName = TAG_TO_PLACEHOLDER_NAMES[upperTag] || `TAG_${upperTag}`;\n const /** @type {?} */ name = this._generateUniqueName(isVoid ? baseName : `START_${baseName}`);\n this._signatureToName[signature] = name;\n return name;\n }\n /**\n * @param {?} tag\n * @return {?}\n */\n getCloseTagPlaceholderName(tag) {\n const /** @type {?} */ signature = this._hashClosingTag(tag);\n if (this._signatureToName[signature]) {\n return this._signatureToName[signature];\n }\n const /** @type {?} */ upperTag = tag.toUpperCase();\n const /** @type {?} */ baseName = TAG_TO_PLACEHOLDER_NAMES[upperTag] || `TAG_${upperTag}`;\n const /** @type {?} */ name = this._generateUniqueName(`CLOSE_${baseName}`);\n this._signatureToName[signature] = name;\n return name;\n }\n /**\n * @param {?} name\n * @param {?} content\n * @return {?}\n */\n getPlaceholderName(name, content) {\n const /** @type {?} */ upperName = name.toUpperCase();\n const /** @type {?} */ signature = `PH: ${upperName}=${content}`;\n if (this._signatureToName[signature]) {\n return this._signatureToName[signature];\n }\n const /** @type {?} */ uniqueName = this._generateUniqueName(upperName);\n this._signatureToName[signature] = uniqueName;\n return uniqueName;\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getUniquePlaceholder(name) {\n return this._generateUniqueName(name.toUpperCase());\n }\n /**\n * @param {?} tag\n * @param {?} attrs\n * @param {?} isVoid\n * @return {?}\n */\n _hashTag(tag, attrs, isVoid) {\n const /** @type {?} */ start = `<${tag}`;\n const /** @type {?} */ strAttrs = Object.keys(attrs).sort().map((name) => ` ${name}=${attrs[name]}`).join('');\n const /** @type {?} */ end = isVoid ? '/>' : `></${tag}>`;\n return start + strAttrs + end;\n }\n /**\n * @param {?} tag\n * @return {?}\n */\n _hashClosingTag(tag) { return this._hashTag(`/${tag}`, {}, false); }\n /**\n * @param {?} base\n * @return {?}\n */\n _generateUniqueName(base) {\n const /** @type {?} */ seen = this._placeHolderNameCounts.hasOwnProperty(base);\n if (!seen) {\n this._placeHolderNameCounts[base] = 1;\n return base;\n }\n const /** @type {?} */ id = this._placeHolderNameCounts[base];\n this._placeHolderNameCounts[base] = id + 1;\n return `${base}_${id}`;\n }\n}\nfunction PlaceholderRegistry_tsickle_Closure_declarations() {\n /** @type {?} */\n PlaceholderRegistry.prototype._placeHolderNameCounts;\n /** @type {?} */\n PlaceholderRegistry.prototype._signatureToName;\n}\n//# sourceMappingURL=placeholder.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Lexer as ExpressionLexer } from '../expression_parser/lexer';\nimport { Parser as ExpressionParser } from '../expression_parser/parser';\nimport * as html from '../ml_parser/ast';\nimport { getHtmlTagDefinition } from '../ml_parser/html_tags';\nimport * as i18n from './i18n_ast';\nimport { PlaceholderRegistry } from './serializers/placeholder';\nconst /** @type {?} */ _expParser = new ExpressionParser(new ExpressionLexer());\n/**\n * Returns a function converting html nodes to an i18n Message given an interpolationConfig\n * @param {?} interpolationConfig\n * @return {?}\n */\nexport function createI18nMessageFactory(interpolationConfig) {\n const /** @type {?} */ visitor = new _I18nVisitor(_expParser, interpolationConfig);\n return (nodes, meaning, description, id) => visitor.toI18nMessage(nodes, meaning, description, id);\n}\nclass _I18nVisitor {\n /**\n * @param {?} _expressionParser\n * @param {?} _interpolationConfig\n */\n constructor(_expressionParser, _interpolationConfig) {\n this._expressionParser = _expressionParser;\n this._interpolationConfig = _interpolationConfig;\n }\n /**\n * @param {?} nodes\n * @param {?} meaning\n * @param {?} description\n * @param {?} id\n * @return {?}\n */\n toI18nMessage(nodes, meaning, description, id) {\n this._isIcu = nodes.length == 1 && nodes[0] instanceof html.Expansion;\n this._icuDepth = 0;\n this._placeholderRegistry = new PlaceholderRegistry();\n this._placeholderToContent = {};\n this._placeholderToMessage = {};\n const /** @type {?} */ i18nodes = html.visitAll(this, nodes, {});\n return new i18n.Message(i18nodes, this._placeholderToContent, this._placeholderToMessage, meaning, description, id);\n }\n /**\n * @param {?} el\n * @param {?} context\n * @return {?}\n */\n visitElement(el, context) {\n const /** @type {?} */ children = html.visitAll(this, el.children);\n const /** @type {?} */ attrs = {};\n el.attrs.forEach(attr => {\n // Do not visit the attributes, translatable ones are top-level ASTs\n attrs[attr.name] = attr.value;\n });\n const /** @type {?} */ isVoid = getHtmlTagDefinition(el.name).isVoid;\n const /** @type {?} */ startPhName = this._placeholderRegistry.getStartTagPlaceholderName(el.name, attrs, isVoid);\n this._placeholderToContent[startPhName] = /** @type {?} */ ((el.sourceSpan)).toString();\n let /** @type {?} */ closePhName = '';\n if (!isVoid) {\n closePhName = this._placeholderRegistry.getCloseTagPlaceholderName(el.name);\n this._placeholderToContent[closePhName] = `</${el.name}>`;\n }\n return new i18n.TagPlaceholder(el.name, attrs, startPhName, closePhName, children, isVoid, /** @type {?} */ ((el.sourceSpan)));\n }\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n visitAttribute(attribute, context) {\n return this._visitTextWithInterpolation(attribute.value, attribute.sourceSpan);\n }\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n visitText(text, context) {\n return this._visitTextWithInterpolation(text.value, /** @type {?} */ ((text.sourceSpan)));\n }\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n visitComment(comment, context) { return null; }\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n visitExpansion(icu, context) {\n this._icuDepth++;\n const /** @type {?} */ i18nIcuCases = {};\n const /** @type {?} */ i18nIcu = new i18n.Icu(icu.switchValue, icu.type, i18nIcuCases, icu.sourceSpan);\n icu.cases.forEach((caze) => {\n i18nIcuCases[caze.value] = new i18n.Container(caze.expression.map((node) => node.visit(this, {})), caze.expSourceSpan);\n });\n this._icuDepth--;\n if (this._isIcu || this._icuDepth > 0) {\n // Returns an ICU node when:\n // - the message (vs a part of the message) is an ICU message, or\n // - the ICU message is nested.\n const /** @type {?} */ expPh = this._placeholderRegistry.getUniquePlaceholder(`VAR_${icu.type}`);\n i18nIcu.expressionPlaceholder = expPh;\n this._placeholderToContent[expPh] = icu.switchValue;\n return i18nIcu;\n }\n // Else returns a placeholder\n // ICU placeholders should not be replaced with their original content but with the their\n // translations. We need to create a new visitor (they are not re-entrant) to compute the\n // message id.\n // TODO(vicb): add a html.Node -> i18n.Message cache to avoid having to re-create the msg\n const /** @type {?} */ phName = this._placeholderRegistry.getPlaceholderName('ICU', icu.sourceSpan.toString());\n const /** @type {?} */ visitor = new _I18nVisitor(this._expressionParser, this._interpolationConfig);\n this._placeholderToMessage[phName] = visitor.toI18nMessage([icu], '', '', '');\n return new i18n.IcuPlaceholder(i18nIcu, phName, icu.sourceSpan);\n }\n /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(icuCase, context) {\n throw new Error('Unreachable code');\n }\n /**\n * @param {?} text\n * @param {?} sourceSpan\n * @return {?}\n */\n _visitTextWithInterpolation(text, sourceSpan) {\n const /** @type {?} */ splitInterpolation = this._expressionParser.splitInterpolation(text, sourceSpan.start.toString(), this._interpolationConfig);\n if (!splitInterpolation) {\n // No expression, return a single text\n return new i18n.Text(text, sourceSpan);\n }\n // Return a group of text + expressions\n const /** @type {?} */ nodes = [];\n const /** @type {?} */ container = new i18n.Container(nodes, sourceSpan);\n const { start: sDelimiter, end: eDelimiter } = this._interpolationConfig;\n for (let /** @type {?} */ i = 0; i < splitInterpolation.strings.length - 1; i++) {\n const /** @type {?} */ expression = splitInterpolation.expressions[i];\n const /** @type {?} */ baseName = _extractPlaceholderName(expression) || 'INTERPOLATION';\n const /** @type {?} */ phName = this._placeholderRegistry.getPlaceholderName(baseName, expression);\n if (splitInterpolation.strings[i].length) {\n // No need to add empty strings\n nodes.push(new i18n.Text(splitInterpolation.strings[i], sourceSpan));\n }\n nodes.push(new i18n.Placeholder(expression, phName, sourceSpan));\n this._placeholderToContent[phName] = sDelimiter + expression + eDelimiter;\n }\n // The last index contains no expression\n const /** @type {?} */ lastStringIdx = splitInterpolation.strings.length - 1;\n if (splitInterpolation.strings[lastStringIdx].length) {\n nodes.push(new i18n.Text(splitInterpolation.strings[lastStringIdx], sourceSpan));\n }\n return container;\n }\n}\nfunction _I18nVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n _I18nVisitor.prototype._isIcu;\n /** @type {?} */\n _I18nVisitor.prototype._icuDepth;\n /** @type {?} */\n _I18nVisitor.prototype._placeholderRegistry;\n /** @type {?} */\n _I18nVisitor.prototype._placeholderToContent;\n /** @type {?} */\n _I18nVisitor.prototype._placeholderToMessage;\n /** @type {?} */\n _I18nVisitor.prototype._expressionParser;\n /** @type {?} */\n _I18nVisitor.prototype._interpolationConfig;\n}\nconst /** @type {?} */ _CUSTOM_PH_EXP = /\\/\\/[\\s\\S]*i18n[\\s\\S]*\\([\\s\\S]*ph[\\s\\S]*=[\\s\\S]*(\"|')([\\s\\S]*?)\\1[\\s\\S]*\\)/g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction _extractPlaceholderName(input) {\n return input.split(_CUSTOM_PH_EXP)[2];\n}\n//# sourceMappingURL=i18n_parser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ParseError } from '../parse_util';\n/**\n * An i18n error.\n */\nexport class I18nError extends ParseError {\n /**\n * @param {?} span\n * @param {?} msg\n */\n constructor(span, msg) { super(span, msg); }\n}\n//# sourceMappingURL=parse_util.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as html from '../ml_parser/ast';\nimport { ParseTreeResult } from '../ml_parser/parser';\nimport * as i18n from './i18n_ast';\nimport { createI18nMessageFactory } from './i18n_parser';\nimport { I18nError } from './parse_util';\nconst /** @type {?} */ _I18N_ATTR = 'i18n';\nconst /** @type {?} */ _I18N_ATTR_PREFIX = 'i18n-';\nconst /** @type {?} */ _I18N_COMMENT_PREFIX_REGEXP = /^i18n:?/;\nconst /** @type {?} */ MEANING_SEPARATOR = '|';\nconst /** @type {?} */ ID_SEPARATOR = '@@';\nlet /** @type {?} */ i18nCommentsWarned = false;\n/**\n * Extract translatable messages from an html AST\n * @param {?} nodes\n * @param {?} interpolationConfig\n * @param {?} implicitTags\n * @param {?} implicitAttrs\n * @return {?}\n */\nexport function extractMessages(nodes, interpolationConfig, implicitTags, implicitAttrs) {\n const /** @type {?} */ visitor = new _Visitor(implicitTags, implicitAttrs);\n return visitor.extract(nodes, interpolationConfig);\n}\n/**\n * @param {?} nodes\n * @param {?} translations\n * @param {?} interpolationConfig\n * @param {?} implicitTags\n * @param {?} implicitAttrs\n * @return {?}\n */\nexport function mergeTranslations(nodes, translations, interpolationConfig, implicitTags, implicitAttrs) {\n const /** @type {?} */ visitor = new _Visitor(implicitTags, implicitAttrs);\n return visitor.merge(nodes, translations, interpolationConfig);\n}\nexport class ExtractionResult {\n /**\n * @param {?} messages\n * @param {?} errors\n */\n constructor(messages, errors) {\n this.messages = messages;\n this.errors = errors;\n }\n}\nfunction ExtractionResult_tsickle_Closure_declarations() {\n /** @type {?} */\n ExtractionResult.prototype.messages;\n /** @type {?} */\n ExtractionResult.prototype.errors;\n}\n/** @enum {number} */\nconst _VisitorMode = {\n Extract: 0,\n Merge: 1,\n};\n_VisitorMode[_VisitorMode.Extract] = \"Extract\";\n_VisitorMode[_VisitorMode.Merge] = \"Merge\";\n/**\n * This Visitor is used:\n * 1. to extract all the translatable strings from an html AST (see `extract()`),\n * 2. to replace the translatable strings with the actual translations (see `merge()`)\n *\n * \\@internal\n */\nclass _Visitor {\n /**\n * @param {?} _implicitTags\n * @param {?} _implicitAttrs\n */\n constructor(_implicitTags, _implicitAttrs) {\n this._implicitTags = _implicitTags;\n this._implicitAttrs = _implicitAttrs;\n }\n /**\n * Extracts the messages from the tree\n * @param {?} nodes\n * @param {?} interpolationConfig\n * @return {?}\n */\n extract(nodes, interpolationConfig) {\n this._init(_VisitorMode.Extract, interpolationConfig);\n nodes.forEach(node => node.visit(this, null));\n if (this._inI18nBlock) {\n this._reportError(nodes[nodes.length - 1], 'Unclosed block');\n }\n return new ExtractionResult(this._messages, this._errors);\n }\n /**\n * Returns a tree where all translatable nodes are translated\n * @param {?} nodes\n * @param {?} translations\n * @param {?} interpolationConfig\n * @return {?}\n */\n merge(nodes, translations, interpolationConfig) {\n this._init(_VisitorMode.Merge, interpolationConfig);\n this._translations = translations;\n // Construct a single fake root element\n const /** @type {?} */ wrapper = new html.Element('wrapper', [], nodes, /** @type {?} */ ((undefined)), undefined, undefined);\n const /** @type {?} */ translatedNode = wrapper.visit(this, null);\n if (this._inI18nBlock) {\n this._reportError(nodes[nodes.length - 1], 'Unclosed block');\n }\n return new ParseTreeResult(translatedNode.children, this._errors);\n }\n /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(icuCase, context) {\n // Parse cases for translatable html attributes\n const /** @type {?} */ expression = html.visitAll(this, icuCase.expression, context);\n if (this._mode === _VisitorMode.Merge) {\n return new html.ExpansionCase(icuCase.value, expression, icuCase.sourceSpan, icuCase.valueSourceSpan, icuCase.expSourceSpan);\n }\n }\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n visitExpansion(icu, context) {\n this._mayBeAddBlockChildren(icu);\n const /** @type {?} */ wasInIcu = this._inIcu;\n if (!this._inIcu) {\n // nested ICU messages should not be extracted but top-level translated as a whole\n if (this._isInTranslatableSection) {\n this._addMessage([icu]);\n }\n this._inIcu = true;\n }\n const /** @type {?} */ cases = html.visitAll(this, icu.cases, context);\n if (this._mode === _VisitorMode.Merge) {\n icu = new html.Expansion(icu.switchValue, icu.type, cases, icu.sourceSpan, icu.switchValueSourceSpan);\n }\n this._inIcu = wasInIcu;\n return icu;\n }\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n visitComment(comment, context) {\n const /** @type {?} */ isOpening = _isOpeningComment(comment);\n if (isOpening && this._isInTranslatableSection) {\n this._reportError(comment, 'Could not start a block inside a translatable section');\n return;\n }\n const /** @type {?} */ isClosing = _isClosingComment(comment);\n if (isClosing && !this._inI18nBlock) {\n this._reportError(comment, 'Trying to close an unopened block');\n return;\n }\n if (!this._inI18nNode && !this._inIcu) {\n if (!this._inI18nBlock) {\n if (isOpening) {\n // deprecated from v5 you should use <ng-container i18n> instead of i18n comments\n if (!i18nCommentsWarned && /** @type {?} */ (console) && /** @type {?} */ (console.warn)) {\n i18nCommentsWarned = true;\n const /** @type {?} */ details = comment.sourceSpan.details ? `, ${comment.sourceSpan.details}` : '';\n // TODO(ocombe): use a log service once there is a public one available\n console.warn(`I18n comments are deprecated, use an <ng-container> element instead (${comment.sourceSpan.start}${details})`);\n }\n this._inI18nBlock = true;\n this._blockStartDepth = this._depth;\n this._blockChildren = [];\n this._blockMeaningAndDesc = /** @type {?} */ ((comment.value)).replace(_I18N_COMMENT_PREFIX_REGEXP, '').trim();\n this._openTranslatableSection(comment);\n }\n }\n else {\n if (isClosing) {\n if (this._depth == this._blockStartDepth) {\n this._closeTranslatableSection(comment, this._blockChildren);\n this._inI18nBlock = false;\n const /** @type {?} */ message = /** @type {?} */ ((this._addMessage(this._blockChildren, this._blockMeaningAndDesc)));\n // merge attributes in sections\n const /** @type {?} */ nodes = this._translateMessage(comment, message);\n return html.visitAll(this, nodes);\n }\n else {\n this._reportError(comment, 'I18N blocks should not cross element boundaries');\n return;\n }\n }\n }\n }\n }\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n visitText(text, context) {\n if (this._isInTranslatableSection) {\n this._mayBeAddBlockChildren(text);\n }\n return text;\n }\n /**\n * @param {?} el\n * @param {?} context\n * @return {?}\n */\n visitElement(el, context) {\n this._mayBeAddBlockChildren(el);\n this._depth++;\n const /** @type {?} */ wasInI18nNode = this._inI18nNode;\n const /** @type {?} */ wasInImplicitNode = this._inImplicitNode;\n let /** @type {?} */ childNodes = [];\n let /** @type {?} */ translatedChildNodes = /** @type {?} */ ((undefined));\n // Extract:\n // - top level nodes with the (implicit) \"i18n\" attribute if not already in a section\n // - ICU messages\n const /** @type {?} */ i18nAttr = _getI18nAttr(el);\n const /** @type {?} */ i18nMeta = i18nAttr ? i18nAttr.value : '';\n const /** @type {?} */ isImplicit = this._implicitTags.some(tag => el.name === tag) && !this._inIcu &&\n !this._isInTranslatableSection;\n const /** @type {?} */ isTopLevelImplicit = !wasInImplicitNode && isImplicit;\n this._inImplicitNode = wasInImplicitNode || isImplicit;\n if (!this._isInTranslatableSection && !this._inIcu) {\n if (i18nAttr || isTopLevelImplicit) {\n this._inI18nNode = true;\n const /** @type {?} */ message = /** @type {?} */ ((this._addMessage(el.children, i18nMeta)));\n translatedChildNodes = this._translateMessage(el, message);\n }\n if (this._mode == _VisitorMode.Extract) {\n const /** @type {?} */ isTranslatable = i18nAttr || isTopLevelImplicit;\n if (isTranslatable)\n this._openTranslatableSection(el);\n html.visitAll(this, el.children);\n if (isTranslatable)\n this._closeTranslatableSection(el, el.children);\n }\n }\n else {\n if (i18nAttr || isTopLevelImplicit) {\n this._reportError(el, 'Could not mark an element as translatable inside a translatable section');\n }\n if (this._mode == _VisitorMode.Extract) {\n // Descend into child nodes for extraction\n html.visitAll(this, el.children);\n }\n }\n if (this._mode === _VisitorMode.Merge) {\n const /** @type {?} */ visitNodes = translatedChildNodes || el.children;\n visitNodes.forEach(child => {\n const /** @type {?} */ visited = child.visit(this, context);\n if (visited && !this._isInTranslatableSection) {\n // Do not add the children from translatable sections (= i18n blocks here)\n // They will be added later in this loop when the block closes (i.e. on `<!-- /i18n -->`)\n childNodes = childNodes.concat(visited);\n }\n });\n }\n this._visitAttributesOf(el);\n this._depth--;\n this._inI18nNode = wasInI18nNode;\n this._inImplicitNode = wasInImplicitNode;\n if (this._mode === _VisitorMode.Merge) {\n const /** @type {?} */ translatedAttrs = this._translateAttributes(el);\n return new html.Element(el.name, translatedAttrs, childNodes, el.sourceSpan, el.startSourceSpan, el.endSourceSpan);\n }\n return null;\n }\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n visitAttribute(attribute, context) {\n throw new Error('unreachable code');\n }\n /**\n * @param {?} mode\n * @param {?} interpolationConfig\n * @return {?}\n */\n _init(mode, interpolationConfig) {\n this._mode = mode;\n this._inI18nBlock = false;\n this._inI18nNode = false;\n this._depth = 0;\n this._inIcu = false;\n this._msgCountAtSectionStart = undefined;\n this._errors = [];\n this._messages = [];\n this._inImplicitNode = false;\n this._createI18nMessage = createI18nMessageFactory(interpolationConfig);\n }\n /**\n * @param {?} el\n * @return {?}\n */\n _visitAttributesOf(el) {\n const /** @type {?} */ explicitAttrNameToValue = {};\n const /** @type {?} */ implicitAttrNames = this._implicitAttrs[el.name] || [];\n el.attrs.filter(attr => attr.name.startsWith(_I18N_ATTR_PREFIX))\n .forEach(attr => explicitAttrNameToValue[attr.name.slice(_I18N_ATTR_PREFIX.length)] =\n attr.value);\n el.attrs.forEach(attr => {\n if (attr.name in explicitAttrNameToValue) {\n this._addMessage([attr], explicitAttrNameToValue[attr.name]);\n }\n else if (implicitAttrNames.some(name => attr.name === name)) {\n this._addMessage([attr]);\n }\n });\n }\n /**\n * @param {?} ast\n * @param {?=} msgMeta\n * @return {?}\n */\n _addMessage(ast, msgMeta) {\n if (ast.length == 0 ||\n ast.length == 1 && ast[0] instanceof html.Attribute && !(/** @type {?} */ (ast[0])).value) {\n // Do not create empty messages\n return null;\n }\n const { meaning, description, id } = _parseMessageMeta(msgMeta);\n const /** @type {?} */ message = this._createI18nMessage(ast, meaning, description, id);\n this._messages.push(message);\n return message;\n }\n /**\n * @param {?} el\n * @param {?} message\n * @return {?}\n */\n _translateMessage(el, message) {\n if (message && this._mode === _VisitorMode.Merge) {\n const /** @type {?} */ nodes = this._translations.get(message);\n if (nodes) {\n return nodes;\n }\n this._reportError(el, `Translation unavailable for message id=\"${this._translations.digest(message)}\"`);\n }\n return [];\n }\n /**\n * @param {?} el\n * @return {?}\n */\n _translateAttributes(el) {\n const /** @type {?} */ attributes = el.attrs;\n const /** @type {?} */ i18nParsedMessageMeta = {};\n attributes.forEach(attr => {\n if (attr.name.startsWith(_I18N_ATTR_PREFIX)) {\n i18nParsedMessageMeta[attr.name.slice(_I18N_ATTR_PREFIX.length)] =\n _parseMessageMeta(attr.value);\n }\n });\n const /** @type {?} */ translatedAttributes = [];\n attributes.forEach((attr) => {\n if (attr.name === _I18N_ATTR || attr.name.startsWith(_I18N_ATTR_PREFIX)) {\n // strip i18n specific attributes\n return;\n }\n if (attr.value && attr.value != '' && i18nParsedMessageMeta.hasOwnProperty(attr.name)) {\n const { meaning, description, id } = i18nParsedMessageMeta[attr.name];\n const /** @type {?} */ message = this._createI18nMessage([attr], meaning, description, id);\n const /** @type {?} */ nodes = this._translations.get(message);\n if (nodes) {\n if (nodes.length == 0) {\n translatedAttributes.push(new html.Attribute(attr.name, '', attr.sourceSpan));\n }\n else if (nodes[0] instanceof html.Text) {\n const /** @type {?} */ value = (/** @type {?} */ (nodes[0])).value;\n translatedAttributes.push(new html.Attribute(attr.name, value, attr.sourceSpan));\n }\n else {\n this._reportError(el, `Unexpected translation for attribute \"${attr.name}\" (id=\"${id || this._translations.digest(message)}\")`);\n }\n }\n else {\n this._reportError(el, `Translation unavailable for attribute \"${attr.name}\" (id=\"${id || this._translations.digest(message)}\")`);\n }\n }\n else {\n translatedAttributes.push(attr);\n }\n });\n return translatedAttributes;\n }\n /**\n * Add the node as a child of the block when:\n * - we are in a block,\n * - we are not inside a ICU message (those are handled separately),\n * - the node is a \"direct child\" of the block\n * @param {?} node\n * @return {?}\n */\n _mayBeAddBlockChildren(node) {\n if (this._inI18nBlock && !this._inIcu && this._depth == this._blockStartDepth) {\n this._blockChildren.push(node);\n }\n }\n /**\n * Marks the start of a section, see `_closeTranslatableSection`\n * @param {?} node\n * @return {?}\n */\n _openTranslatableSection(node) {\n if (this._isInTranslatableSection) {\n this._reportError(node, 'Unexpected section start');\n }\n else {\n this._msgCountAtSectionStart = this._messages.length;\n }\n }\n /**\n * A translatable section could be:\n * - the content of translatable element,\n * - nodes between `<!-- i18n -->` and `<!-- /i18n -->` comments\n * @return {?}\n */\n get _isInTranslatableSection() {\n return this._msgCountAtSectionStart !== void 0;\n }\n /**\n * Terminates a section.\n *\n * If a section has only one significant children (comments not significant) then we should not\n * keep the message from this children:\n *\n * `<p i18n=\"meaning|description\">{ICU message}</p>` would produce two messages:\n * - one for the <p> content with meaning and description,\n * - another one for the ICU message.\n *\n * In this case the last message is discarded as it contains less information (the AST is\n * otherwise identical).\n *\n * Note that we should still keep messages extracted from attributes inside the section (ie in the\n * ICU message here)\n * @param {?} node\n * @param {?} directChildren\n * @return {?}\n */\n _closeTranslatableSection(node, directChildren) {\n if (!this._isInTranslatableSection) {\n this._reportError(node, 'Unexpected section end');\n return;\n }\n const /** @type {?} */ startIndex = this._msgCountAtSectionStart;\n const /** @type {?} */ significantChildren = directChildren.reduce((count, node) => count + (node instanceof html.Comment ? 0 : 1), 0);\n if (significantChildren == 1) {\n for (let /** @type {?} */ i = this._messages.length - 1; i >= /** @type {?} */ ((startIndex)); i--) {\n const /** @type {?} */ ast = this._messages[i].nodes;\n if (!(ast.length == 1 && ast[0] instanceof i18n.Text)) {\n this._messages.splice(i, 1);\n break;\n }\n }\n }\n this._msgCountAtSectionStart = undefined;\n }\n /**\n * @param {?} node\n * @param {?} msg\n * @return {?}\n */\n _reportError(node, msg) {\n this._errors.push(new I18nError(/** @type {?} */ ((node.sourceSpan)), msg));\n }\n}\nfunction _Visitor_tsickle_Closure_declarations() {\n /** @type {?} */\n _Visitor.prototype._depth;\n /** @type {?} */\n _Visitor.prototype._inI18nNode;\n /** @type {?} */\n _Visitor.prototype._inImplicitNode;\n /** @type {?} */\n _Visitor.prototype._inI18nBlock;\n /** @type {?} */\n _Visitor.prototype._blockMeaningAndDesc;\n /** @type {?} */\n _Visitor.prototype._blockChildren;\n /** @type {?} */\n _Visitor.prototype._blockStartDepth;\n /** @type {?} */\n _Visitor.prototype._inIcu;\n /** @type {?} */\n _Visitor.prototype._msgCountAtSectionStart;\n /** @type {?} */\n _Visitor.prototype._errors;\n /** @type {?} */\n _Visitor.prototype._mode;\n /** @type {?} */\n _Visitor.prototype._messages;\n /** @type {?} */\n _Visitor.prototype._translations;\n /** @type {?} */\n _Visitor.prototype._createI18nMessage;\n /** @type {?} */\n _Visitor.prototype._implicitTags;\n /** @type {?} */\n _Visitor.prototype._implicitAttrs;\n}\n/**\n * @param {?} n\n * @return {?}\n */\nfunction _isOpeningComment(n) {\n return !!(n instanceof html.Comment && n.value && n.value.startsWith('i18n'));\n}\n/**\n * @param {?} n\n * @return {?}\n */\nfunction _isClosingComment(n) {\n return !!(n instanceof html.Comment && n.value && n.value === '/i18n');\n}\n/**\n * @param {?} p\n * @return {?}\n */\nfunction _getI18nAttr(p) {\n return p.attrs.find(attr => attr.name === _I18N_ATTR) || null;\n}\n/**\n * @param {?=} i18n\n * @return {?}\n */\nfunction _parseMessageMeta(i18n) {\n if (!i18n)\n return { meaning: '', description: '', id: '' };\n const /** @type {?} */ idIndex = i18n.indexOf(ID_SEPARATOR);\n const /** @type {?} */ descIndex = i18n.indexOf(MEANING_SEPARATOR);\n const [meaningAndDesc, id] = (idIndex > -1) ? [i18n.slice(0, idIndex), i18n.slice(idIndex + 2)] : [i18n, ''];\n const [meaning, description] = (descIndex > -1) ?\n [meaningAndDesc.slice(0, descIndex), meaningAndDesc.slice(descIndex + 1)] :\n ['', meaningAndDesc];\n return { meaning, description, id };\n}\n//# sourceMappingURL=extractor_merger.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { TagContentType } from './tags';\nexport class XmlTagDefinition {\n constructor() {\n this.closedByParent = false;\n this.contentType = TagContentType.PARSABLE_DATA;\n this.isVoid = false;\n this.ignoreFirstLf = false;\n this.canSelfClose = true;\n }\n /**\n * @param {?} currentParent\n * @return {?}\n */\n requireExtraParent(currentParent) { return false; }\n /**\n * @param {?} name\n * @return {?}\n */\n isClosedByChild(name) { return false; }\n}\nfunction XmlTagDefinition_tsickle_Closure_declarations() {\n /** @type {?} */\n XmlTagDefinition.prototype.closedByParent;\n /** @type {?} */\n XmlTagDefinition.prototype.requiredParents;\n /** @type {?} */\n XmlTagDefinition.prototype.parentToAdd;\n /** @type {?} */\n XmlTagDefinition.prototype.implicitNamespacePrefix;\n /** @type {?} */\n XmlTagDefinition.prototype.contentType;\n /** @type {?} */\n XmlTagDefinition.prototype.isVoid;\n /** @type {?} */\n XmlTagDefinition.prototype.ignoreFirstLf;\n /** @type {?} */\n XmlTagDefinition.prototype.canSelfClose;\n}\nconst /** @type {?} */ _TAG_DEFINITION = new XmlTagDefinition();\n/**\n * @param {?} tagName\n * @return {?}\n */\nexport function getXmlTagDefinition(tagName) {\n return _TAG_DEFINITION;\n}\n//# sourceMappingURL=xml_tags.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Parser } from './parser';\nimport { getXmlTagDefinition } from './xml_tags';\nexport { ParseTreeResult, TreeError } from './parser';\nexport class XmlParser extends Parser {\n constructor() { super(getXmlTagDefinition); }\n /**\n * @param {?} source\n * @param {?} url\n * @param {?=} parseExpansionForms\n * @return {?}\n */\n parse(source, url, parseExpansionForms = false) {\n return super.parse(source, url, parseExpansionForms);\n }\n}\n//# sourceMappingURL=xml_parser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as i18n from '../i18n_ast';\n/**\n * @abstract\n */\nexport class Serializer {\n /**\n * @param {?} message\n * @return {?}\n */\n createNameMapper(message) { return null; }\n}\nfunction Serializer_tsickle_Closure_declarations() {\n /**\n * @abstract\n * @param {?} messages\n * @param {?} locale\n * @return {?}\n */\n Serializer.prototype.write = function (messages, locale) { };\n /**\n * @abstract\n * @param {?} content\n * @param {?} url\n * @return {?}\n */\n Serializer.prototype.load = function (content, url) { };\n /**\n * @abstract\n * @param {?} message\n * @return {?}\n */\n Serializer.prototype.digest = function (message) { };\n}\n/**\n * A `PlaceholderMapper` converts placeholder names from internal to serialized representation and\n * back.\n *\n * It should be used for serialization format that put constraints on the placeholder names.\n * @record\n */\nexport function PlaceholderMapper() { }\nfunction PlaceholderMapper_tsickle_Closure_declarations() {\n /** @type {?} */\n PlaceholderMapper.prototype.toPublicName;\n /** @type {?} */\n PlaceholderMapper.prototype.toInternalName;\n}\n/**\n * A simple mapper that take a function to transform an internal name to a public name\n */\nexport class SimplePlaceholderMapper extends i18n.RecurseVisitor {\n /**\n * @param {?} message\n * @param {?} mapName\n */\n constructor(message, mapName) {\n super();\n this.mapName = mapName;\n this.internalToPublic = {};\n this.publicToNextId = {};\n this.publicToInternal = {};\n message.nodes.forEach(node => node.visit(this));\n }\n /**\n * @param {?} internalName\n * @return {?}\n */\n toPublicName(internalName) {\n return this.internalToPublic.hasOwnProperty(internalName) ?\n this.internalToPublic[internalName] :\n null;\n }\n /**\n * @param {?} publicName\n * @return {?}\n */\n toInternalName(publicName) {\n return this.publicToInternal.hasOwnProperty(publicName) ? this.publicToInternal[publicName] :\n null;\n }\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n visitText(text, context) { return null; }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitTagPlaceholder(ph, context) {\n this.visitPlaceholderName(ph.startName);\n super.visitTagPlaceholder(ph, context);\n this.visitPlaceholderName(ph.closeName);\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitPlaceholder(ph, context) { this.visitPlaceholderName(ph.name); }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitIcuPlaceholder(ph, context) {\n this.visitPlaceholderName(ph.name);\n }\n /**\n * @param {?} internalName\n * @return {?}\n */\n visitPlaceholderName(internalName) {\n if (!internalName || this.internalToPublic.hasOwnProperty(internalName)) {\n return;\n }\n let /** @type {?} */ publicName = this.mapName(internalName);\n if (this.publicToInternal.hasOwnProperty(publicName)) {\n // Create a new XMB when it has already been used\n const /** @type {?} */ nextId = this.publicToNextId[publicName];\n this.publicToNextId[publicName] = nextId + 1;\n publicName = `${publicName}_${nextId}`;\n }\n else {\n this.publicToNextId[publicName] = 1;\n }\n this.internalToPublic[internalName] = publicName;\n this.publicToInternal[publicName] = internalName;\n }\n}\nfunction SimplePlaceholderMapper_tsickle_Closure_declarations() {\n /** @type {?} */\n SimplePlaceholderMapper.prototype.internalToPublic;\n /** @type {?} */\n SimplePlaceholderMapper.prototype.publicToNextId;\n /** @type {?} */\n SimplePlaceholderMapper.prototype.publicToInternal;\n /** @type {?} */\n SimplePlaceholderMapper.prototype.mapName;\n}\n//# sourceMappingURL=serializer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @record\n */\nexport function IVisitor() { }\nfunction IVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n IVisitor.prototype.visitTag;\n /** @type {?} */\n IVisitor.prototype.visitText;\n /** @type {?} */\n IVisitor.prototype.visitDeclaration;\n /** @type {?} */\n IVisitor.prototype.visitDoctype;\n}\nclass _Visitor {\n /**\n * @param {?} tag\n * @return {?}\n */\n visitTag(tag) {\n const /** @type {?} */ strAttrs = this._serializeAttributes(tag.attrs);\n if (tag.children.length == 0) {\n return `<${tag.name}${strAttrs}/>`;\n }\n const /** @type {?} */ strChildren = tag.children.map(node => node.visit(this));\n return `<${tag.name}${strAttrs}>${strChildren.join('')}</${tag.name}>`;\n }\n /**\n * @param {?} text\n * @return {?}\n */\n visitText(text) { return text.value; }\n /**\n * @param {?} decl\n * @return {?}\n */\n visitDeclaration(decl) {\n return `<?xml${this._serializeAttributes(decl.attrs)} ?>`;\n }\n /**\n * @param {?} attrs\n * @return {?}\n */\n _serializeAttributes(attrs) {\n const /** @type {?} */ strAttrs = Object.keys(attrs).map((name) => `${name}=\"${attrs[name]}\"`).join(' ');\n return strAttrs.length > 0 ? ' ' + strAttrs : '';\n }\n /**\n * @param {?} doctype\n * @return {?}\n */\n visitDoctype(doctype) {\n return `<!DOCTYPE ${doctype.rootTag} [\\n${doctype.dtd}\\n]>`;\n }\n}\nconst /** @type {?} */ _visitor = new _Visitor();\n/**\n * @param {?} nodes\n * @return {?}\n */\nexport function serialize(nodes) {\n return nodes.map((node) => node.visit(_visitor)).join('');\n}\n/**\n * @record\n */\nexport function Node() { }\nfunction Node_tsickle_Closure_declarations() {\n /** @type {?} */\n Node.prototype.visit;\n}\nexport class Declaration {\n /**\n * @param {?} unescapedAttrs\n */\n constructor(unescapedAttrs) {\n this.attrs = {};\n Object.keys(unescapedAttrs).forEach((k) => {\n this.attrs[k] = _escapeXml(unescapedAttrs[k]);\n });\n }\n /**\n * @param {?} visitor\n * @return {?}\n */\n visit(visitor) { return visitor.visitDeclaration(this); }\n}\nfunction Declaration_tsickle_Closure_declarations() {\n /** @type {?} */\n Declaration.prototype.attrs;\n}\nexport class Doctype {\n /**\n * @param {?} rootTag\n * @param {?} dtd\n */\n constructor(rootTag, dtd) {\n this.rootTag = rootTag;\n this.dtd = dtd;\n }\n /**\n * @param {?} visitor\n * @return {?}\n */\n visit(visitor) { return visitor.visitDoctype(this); }\n}\nfunction Doctype_tsickle_Closure_declarations() {\n /** @type {?} */\n Doctype.prototype.rootTag;\n /** @type {?} */\n Doctype.prototype.dtd;\n}\nexport class Tag {\n /**\n * @param {?} name\n * @param {?=} unescapedAttrs\n * @param {?=} children\n */\n constructor(name, unescapedAttrs = {}, children = []) {\n this.name = name;\n this.children = children;\n this.attrs = {};\n Object.keys(unescapedAttrs).forEach((k) => {\n this.attrs[k] = _escapeXml(unescapedAttrs[k]);\n });\n }\n /**\n * @param {?} visitor\n * @return {?}\n */\n visit(visitor) { return visitor.visitTag(this); }\n}\nfunction Tag_tsickle_Closure_declarations() {\n /** @type {?} */\n Tag.prototype.attrs;\n /** @type {?} */\n Tag.prototype.name;\n /** @type {?} */\n Tag.prototype.children;\n}\nexport class Text {\n /**\n * @param {?} unescapedValue\n */\n constructor(unescapedValue) { this.value = _escapeXml(unescapedValue); }\n /**\n * @param {?} visitor\n * @return {?}\n */\n visit(visitor) { return visitor.visitText(this); }\n}\nfunction Text_tsickle_Closure_declarations() {\n /** @type {?} */\n Text.prototype.value;\n}\nexport class CR extends Text {\n /**\n * @param {?=} ws\n */\n constructor(ws = 0) { super(`\\n${new Array(ws + 1).join(' ')}`); }\n}\nconst /** @type {?} */ _ESCAPED_CHARS = [\n [/&/g, '&amp;'],\n [/\"/g, '&quot;'],\n [/'/g, '&apos;'],\n [/</g, '&lt;'],\n [/>/g, '&gt;'],\n];\n/**\n * @param {?} text\n * @return {?}\n */\nfunction _escapeXml(text) {\n return _ESCAPED_CHARS.reduce((text, entry) => text.replace(entry[0], entry[1]), text);\n}\n//# sourceMappingURL=xml_helper.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as ml from '../../ml_parser/ast';\nimport { XmlParser } from '../../ml_parser/xml_parser';\nimport { digest } from '../digest';\nimport * as i18n from '../i18n_ast';\nimport { I18nError } from '../parse_util';\nimport { Serializer } from './serializer';\nimport * as xml from './xml_helper';\nconst /** @type {?} */ _VERSION = '1.2';\nconst /** @type {?} */ _XMLNS = 'urn:oasis:names:tc:xliff:document:1.2';\n// TODO(vicb): make this a param (s/_/-/)\nconst /** @type {?} */ _DEFAULT_SOURCE_LANG = 'en';\nconst /** @type {?} */ _PLACEHOLDER_TAG = 'x';\nconst /** @type {?} */ _FILE_TAG = 'file';\nconst /** @type {?} */ _SOURCE_TAG = 'source';\nconst /** @type {?} */ _TARGET_TAG = 'target';\nconst /** @type {?} */ _UNIT_TAG = 'trans-unit';\nconst /** @type {?} */ _CONTEXT_GROUP_TAG = 'context-group';\nconst /** @type {?} */ _CONTEXT_TAG = 'context';\nexport class Xliff extends Serializer {\n /**\n * @param {?} messages\n * @param {?} locale\n * @return {?}\n */\n write(messages, locale) {\n const /** @type {?} */ visitor = new _WriteVisitor();\n const /** @type {?} */ transUnits = [];\n messages.forEach(message => {\n let /** @type {?} */ contextTags = [];\n message.sources.forEach((source) => {\n let /** @type {?} */ contextGroupTag = new xml.Tag(_CONTEXT_GROUP_TAG, { purpose: 'location' });\n contextGroupTag.children.push(new xml.CR(10), new xml.Tag(_CONTEXT_TAG, { 'context-type': 'sourcefile' }, [new xml.Text(source.filePath)]), new xml.CR(10), new xml.Tag(_CONTEXT_TAG, { 'context-type': 'linenumber' }, [new xml.Text(`${source.startLine}`)]), new xml.CR(8));\n contextTags.push(new xml.CR(8), contextGroupTag);\n });\n const /** @type {?} */ transUnit = new xml.Tag(_UNIT_TAG, { id: message.id, datatype: 'html' });\n transUnit.children.push(new xml.CR(8), new xml.Tag(_SOURCE_TAG, {}, visitor.serialize(message.nodes)), ...contextTags);\n if (message.description) {\n transUnit.children.push(new xml.CR(8), new xml.Tag('note', { priority: '1', from: 'description' }, [new xml.Text(message.description)]));\n }\n if (message.meaning) {\n transUnit.children.push(new xml.CR(8), new xml.Tag('note', { priority: '1', from: 'meaning' }, [new xml.Text(message.meaning)]));\n }\n transUnit.children.push(new xml.CR(6));\n transUnits.push(new xml.CR(6), transUnit);\n });\n const /** @type {?} */ body = new xml.Tag('body', {}, [...transUnits, new xml.CR(4)]);\n const /** @type {?} */ file = new xml.Tag('file', {\n 'source-language': locale || _DEFAULT_SOURCE_LANG,\n datatype: 'plaintext',\n original: 'ng2.template',\n }, [new xml.CR(4), body, new xml.CR(2)]);\n const /** @type {?} */ xliff = new xml.Tag('xliff', { version: _VERSION, xmlns: _XMLNS }, [new xml.CR(2), file, new xml.CR()]);\n return xml.serialize([\n new xml.Declaration({ version: '1.0', encoding: 'UTF-8' }), new xml.CR(), xliff, new xml.CR()\n ]);\n }\n /**\n * @param {?} content\n * @param {?} url\n * @return {?}\n */\n load(content, url) {\n // xliff to xml nodes\n const /** @type {?} */ xliffParser = new XliffParser();\n const { locale, msgIdToHtml, errors } = xliffParser.parse(content, url);\n // xml nodes to i18n nodes\n const /** @type {?} */ i18nNodesByMsgId = {};\n const /** @type {?} */ converter = new XmlToI18n();\n Object.keys(msgIdToHtml).forEach(msgId => {\n const { i18nNodes, errors: e } = converter.convert(msgIdToHtml[msgId], url);\n errors.push(...e);\n i18nNodesByMsgId[msgId] = i18nNodes;\n });\n if (errors.length) {\n throw new Error(`xliff parse errors:\\n${errors.join('\\n')}`);\n }\n return { locale: /** @type {?} */ ((locale)), i18nNodesByMsgId };\n }\n /**\n * @param {?} message\n * @return {?}\n */\n digest(message) { return digest(message); }\n}\nclass _WriteVisitor {\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n visitText(text, context) { return [new xml.Text(text.value)]; }\n /**\n * @param {?} container\n * @param {?=} context\n * @return {?}\n */\n visitContainer(container, context) {\n const /** @type {?} */ nodes = [];\n container.children.forEach((node) => nodes.push(...node.visit(this)));\n return nodes;\n }\n /**\n * @param {?} icu\n * @param {?=} context\n * @return {?}\n */\n visitIcu(icu, context) {\n const /** @type {?} */ nodes = [new xml.Text(`{${icu.expressionPlaceholder}, ${icu.type}, `)];\n Object.keys(icu.cases).forEach((c) => {\n nodes.push(new xml.Text(`${c} {`), ...icu.cases[c].visit(this), new xml.Text(`} `));\n });\n nodes.push(new xml.Text(`}`));\n return nodes;\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitTagPlaceholder(ph, context) {\n const /** @type {?} */ ctype = getCtypeForTag(ph.tag);\n if (ph.isVoid) {\n // void tags have no children nor closing tags\n return [new xml.Tag(_PLACEHOLDER_TAG, { id: ph.startName, ctype, 'equiv-text': `<${ph.tag}/>` })];\n }\n const /** @type {?} */ startTagPh = new xml.Tag(_PLACEHOLDER_TAG, { id: ph.startName, ctype, 'equiv-text': `<${ph.tag}>` });\n const /** @type {?} */ closeTagPh = new xml.Tag(_PLACEHOLDER_TAG, { id: ph.closeName, ctype, 'equiv-text': `</${ph.tag}>` });\n return [startTagPh, ...this.serialize(ph.children), closeTagPh];\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitPlaceholder(ph, context) {\n return [new xml.Tag(_PLACEHOLDER_TAG, { id: ph.name, 'equiv-text': `{{${ph.value}}}` })];\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitIcuPlaceholder(ph, context) {\n const /** @type {?} */ equivText = `{${ph.value.expression}, ${ph.value.type}, ${Object.keys(ph.value.cases).map((value) => value + ' {...}').join(' ')}}`;\n return [new xml.Tag(_PLACEHOLDER_TAG, { id: ph.name, 'equiv-text': equivText })];\n }\n /**\n * @param {?} nodes\n * @return {?}\n */\n serialize(nodes) {\n return [].concat(...nodes.map(node => node.visit(this)));\n }\n}\nclass XliffParser {\n constructor() {\n this._locale = null;\n }\n /**\n * @param {?} xliff\n * @param {?} url\n * @return {?}\n */\n parse(xliff, url) {\n this._unitMlString = null;\n this._msgIdToHtml = {};\n const /** @type {?} */ xml = new XmlParser().parse(xliff, url, false);\n this._errors = xml.errors;\n ml.visitAll(this, xml.rootNodes, null);\n return {\n msgIdToHtml: this._msgIdToHtml,\n errors: this._errors,\n locale: this._locale,\n };\n }\n /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n visitElement(element, context) {\n switch (element.name) {\n case _UNIT_TAG:\n this._unitMlString = /** @type {?} */ ((null));\n const /** @type {?} */ idAttr = element.attrs.find((attr) => attr.name === 'id');\n if (!idAttr) {\n this._addError(element, `<${_UNIT_TAG}> misses the \"id\" attribute`);\n }\n else {\n const /** @type {?} */ id = idAttr.value;\n if (this._msgIdToHtml.hasOwnProperty(id)) {\n this._addError(element, `Duplicated translations for msg ${id}`);\n }\n else {\n ml.visitAll(this, element.children, null);\n if (typeof this._unitMlString === 'string') {\n this._msgIdToHtml[id] = this._unitMlString;\n }\n else {\n this._addError(element, `Message ${id} misses a translation`);\n }\n }\n }\n break;\n case _SOURCE_TAG:\n // ignore source message\n break;\n case _TARGET_TAG:\n const /** @type {?} */ innerTextStart = /** @type {?} */ ((element.startSourceSpan)).end.offset;\n const /** @type {?} */ innerTextEnd = /** @type {?} */ ((element.endSourceSpan)).start.offset;\n const /** @type {?} */ content = /** @type {?} */ ((element.startSourceSpan)).start.file.content;\n const /** @type {?} */ innerText = content.slice(innerTextStart, innerTextEnd);\n this._unitMlString = innerText;\n break;\n case _FILE_TAG:\n const /** @type {?} */ localeAttr = element.attrs.find((attr) => attr.name === 'target-language');\n if (localeAttr) {\n this._locale = localeAttr.value;\n }\n ml.visitAll(this, element.children, null);\n break;\n default:\n // TODO(vicb): assert file structure, xliff version\n // For now only recurse on unhandled nodes\n ml.visitAll(this, element.children, null);\n }\n }\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n visitAttribute(attribute, context) { }\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n visitText(text, context) { }\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n visitComment(comment, context) { }\n /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n visitExpansion(expansion, context) { }\n /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(expansionCase, context) { }\n /**\n * @param {?} node\n * @param {?} message\n * @return {?}\n */\n _addError(node, message) {\n this._errors.push(new I18nError(/** @type {?} */ ((node.sourceSpan)), message));\n }\n}\nfunction XliffParser_tsickle_Closure_declarations() {\n /** @type {?} */\n XliffParser.prototype._unitMlString;\n /** @type {?} */\n XliffParser.prototype._errors;\n /** @type {?} */\n XliffParser.prototype._msgIdToHtml;\n /** @type {?} */\n XliffParser.prototype._locale;\n}\nclass XmlToI18n {\n /**\n * @param {?} message\n * @param {?} url\n * @return {?}\n */\n convert(message, url) {\n const /** @type {?} */ xmlIcu = new XmlParser().parse(message, url, true);\n this._errors = xmlIcu.errors;\n const /** @type {?} */ i18nNodes = this._errors.length > 0 || xmlIcu.rootNodes.length == 0 ?\n [] :\n ml.visitAll(this, xmlIcu.rootNodes);\n return {\n i18nNodes: i18nNodes,\n errors: this._errors,\n };\n }\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n visitText(text, context) { return new i18n.Text(text.value, /** @type {?} */ ((text.sourceSpan))); }\n /**\n * @param {?} el\n * @param {?} context\n * @return {?}\n */\n visitElement(el, context) {\n if (el.name === _PLACEHOLDER_TAG) {\n const /** @type {?} */ nameAttr = el.attrs.find((attr) => attr.name === 'id');\n if (nameAttr) {\n return new i18n.Placeholder('', nameAttr.value, /** @type {?} */ ((el.sourceSpan)));\n }\n this._addError(el, `<${_PLACEHOLDER_TAG}> misses the \"id\" attribute`);\n }\n else {\n this._addError(el, `Unexpected tag`);\n }\n return null;\n }\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n visitExpansion(icu, context) {\n const /** @type {?} */ caseMap = {};\n ml.visitAll(this, icu.cases).forEach((c) => {\n caseMap[c.value] = new i18n.Container(c.nodes, icu.sourceSpan);\n });\n return new i18n.Icu(icu.switchValue, icu.type, caseMap, icu.sourceSpan);\n }\n /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(icuCase, context) {\n return {\n value: icuCase.value,\n nodes: ml.visitAll(this, icuCase.expression),\n };\n }\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n visitComment(comment, context) { }\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n visitAttribute(attribute, context) { }\n /**\n * @param {?} node\n * @param {?} message\n * @return {?}\n */\n _addError(node, message) {\n this._errors.push(new I18nError(/** @type {?} */ ((node.sourceSpan)), message));\n }\n}\nfunction XmlToI18n_tsickle_Closure_declarations() {\n /** @type {?} */\n XmlToI18n.prototype._errors;\n}\n/**\n * @param {?} tag\n * @return {?}\n */\nfunction getCtypeForTag(tag) {\n switch (tag.toLowerCase()) {\n case 'br':\n return 'lb';\n case 'img':\n return 'image';\n default:\n return `x-${tag}`;\n }\n}\n//# sourceMappingURL=xliff.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as ml from '../../ml_parser/ast';\nimport { XmlParser } from '../../ml_parser/xml_parser';\nimport { decimalDigest } from '../digest';\nimport * as i18n from '../i18n_ast';\nimport { I18nError } from '../parse_util';\nimport { Serializer } from './serializer';\nimport * as xml from './xml_helper';\nconst /** @type {?} */ _VERSION = '2.0';\nconst /** @type {?} */ _XMLNS = 'urn:oasis:names:tc:xliff:document:2.0';\n// TODO(vicb): make this a param (s/_/-/)\nconst /** @type {?} */ _DEFAULT_SOURCE_LANG = 'en';\nconst /** @type {?} */ _PLACEHOLDER_TAG = 'ph';\nconst /** @type {?} */ _PLACEHOLDER_SPANNING_TAG = 'pc';\nconst /** @type {?} */ _XLIFF_TAG = 'xliff';\nconst /** @type {?} */ _SOURCE_TAG = 'source';\nconst /** @type {?} */ _TARGET_TAG = 'target';\nconst /** @type {?} */ _UNIT_TAG = 'unit';\nexport class Xliff2 extends Serializer {\n /**\n * @param {?} messages\n * @param {?} locale\n * @return {?}\n */\n write(messages, locale) {\n const /** @type {?} */ visitor = new _WriteVisitor();\n const /** @type {?} */ units = [];\n messages.forEach(message => {\n const /** @type {?} */ unit = new xml.Tag(_UNIT_TAG, { id: message.id });\n const /** @type {?} */ notes = new xml.Tag('notes');\n if (message.description || message.meaning) {\n if (message.description) {\n notes.children.push(new xml.CR(8), new xml.Tag('note', { category: 'description' }, [new xml.Text(message.description)]));\n }\n if (message.meaning) {\n notes.children.push(new xml.CR(8), new xml.Tag('note', { category: 'meaning' }, [new xml.Text(message.meaning)]));\n }\n }\n message.sources.forEach((source) => {\n notes.children.push(new xml.CR(8), new xml.Tag('note', { category: 'location' }, [\n new xml.Text(`${source.filePath}:${source.startLine}${source.endLine !== source.startLine ? ',' + source.endLine : ''}`)\n ]));\n });\n notes.children.push(new xml.CR(6));\n unit.children.push(new xml.CR(6), notes);\n const /** @type {?} */ segment = new xml.Tag('segment');\n segment.children.push(new xml.CR(8), new xml.Tag(_SOURCE_TAG, {}, visitor.serialize(message.nodes)), new xml.CR(6));\n unit.children.push(new xml.CR(6), segment, new xml.CR(4));\n units.push(new xml.CR(4), unit);\n });\n const /** @type {?} */ file = new xml.Tag('file', { 'original': 'ng.template', id: 'ngi18n' }, [...units, new xml.CR(2)]);\n const /** @type {?} */ xliff = new xml.Tag(_XLIFF_TAG, { version: _VERSION, xmlns: _XMLNS, srcLang: locale || _DEFAULT_SOURCE_LANG }, [new xml.CR(2), file, new xml.CR()]);\n return xml.serialize([\n new xml.Declaration({ version: '1.0', encoding: 'UTF-8' }), new xml.CR(), xliff, new xml.CR()\n ]);\n }\n /**\n * @param {?} content\n * @param {?} url\n * @return {?}\n */\n load(content, url) {\n // xliff to xml nodes\n const /** @type {?} */ xliff2Parser = new Xliff2Parser();\n const { locale, msgIdToHtml, errors } = xliff2Parser.parse(content, url);\n // xml nodes to i18n nodes\n const /** @type {?} */ i18nNodesByMsgId = {};\n const /** @type {?} */ converter = new XmlToI18n();\n Object.keys(msgIdToHtml).forEach(msgId => {\n const { i18nNodes, errors: e } = converter.convert(msgIdToHtml[msgId], url);\n errors.push(...e);\n i18nNodesByMsgId[msgId] = i18nNodes;\n });\n if (errors.length) {\n throw new Error(`xliff2 parse errors:\\n${errors.join('\\n')}`);\n }\n return { locale: /** @type {?} */ ((locale)), i18nNodesByMsgId };\n }\n /**\n * @param {?} message\n * @return {?}\n */\n digest(message) { return decimalDigest(message); }\n}\nclass _WriteVisitor {\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n visitText(text, context) { return [new xml.Text(text.value)]; }\n /**\n * @param {?} container\n * @param {?=} context\n * @return {?}\n */\n visitContainer(container, context) {\n const /** @type {?} */ nodes = [];\n container.children.forEach((node) => nodes.push(...node.visit(this)));\n return nodes;\n }\n /**\n * @param {?} icu\n * @param {?=} context\n * @return {?}\n */\n visitIcu(icu, context) {\n const /** @type {?} */ nodes = [new xml.Text(`{${icu.expressionPlaceholder}, ${icu.type}, `)];\n Object.keys(icu.cases).forEach((c) => {\n nodes.push(new xml.Text(`${c} {`), ...icu.cases[c].visit(this), new xml.Text(`} `));\n });\n nodes.push(new xml.Text(`}`));\n return nodes;\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitTagPlaceholder(ph, context) {\n const /** @type {?} */ type = getTypeForTag(ph.tag);\n if (ph.isVoid) {\n const /** @type {?} */ tagPh = new xml.Tag(_PLACEHOLDER_TAG, {\n id: (this._nextPlaceholderId++).toString(),\n equiv: ph.startName,\n type: type,\n disp: `<${ph.tag}/>`,\n });\n return [tagPh];\n }\n const /** @type {?} */ tagPc = new xml.Tag(_PLACEHOLDER_SPANNING_TAG, {\n id: (this._nextPlaceholderId++).toString(),\n equivStart: ph.startName,\n equivEnd: ph.closeName,\n type: type,\n dispStart: `<${ph.tag}>`,\n dispEnd: `</${ph.tag}>`,\n });\n const /** @type {?} */ nodes = [].concat(...ph.children.map(node => node.visit(this)));\n if (nodes.length) {\n nodes.forEach((node) => tagPc.children.push(node));\n }\n else {\n tagPc.children.push(new xml.Text(''));\n }\n return [tagPc];\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitPlaceholder(ph, context) {\n const /** @type {?} */ idStr = (this._nextPlaceholderId++).toString();\n return [new xml.Tag(_PLACEHOLDER_TAG, {\n id: idStr,\n equiv: ph.name,\n disp: `{{${ph.value}}}`,\n })];\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitIcuPlaceholder(ph, context) {\n const /** @type {?} */ cases = Object.keys(ph.value.cases).map((value) => value + ' {...}').join(' ');\n const /** @type {?} */ idStr = (this._nextPlaceholderId++).toString();\n return [new xml.Tag(_PLACEHOLDER_TAG, { id: idStr, equiv: ph.name, disp: `{${ph.value.expression}, ${ph.value.type}, ${cases}}` })];\n }\n /**\n * @param {?} nodes\n * @return {?}\n */\n serialize(nodes) {\n this._nextPlaceholderId = 0;\n return [].concat(...nodes.map(node => node.visit(this)));\n }\n}\nfunction _WriteVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n _WriteVisitor.prototype._nextPlaceholderId;\n}\nclass Xliff2Parser {\n constructor() {\n this._locale = null;\n }\n /**\n * @param {?} xliff\n * @param {?} url\n * @return {?}\n */\n parse(xliff, url) {\n this._unitMlString = null;\n this._msgIdToHtml = {};\n const /** @type {?} */ xml = new XmlParser().parse(xliff, url, false);\n this._errors = xml.errors;\n ml.visitAll(this, xml.rootNodes, null);\n return {\n msgIdToHtml: this._msgIdToHtml,\n errors: this._errors,\n locale: this._locale,\n };\n }\n /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n visitElement(element, context) {\n switch (element.name) {\n case _UNIT_TAG:\n this._unitMlString = null;\n const /** @type {?} */ idAttr = element.attrs.find((attr) => attr.name === 'id');\n if (!idAttr) {\n this._addError(element, `<${_UNIT_TAG}> misses the \"id\" attribute`);\n }\n else {\n const /** @type {?} */ id = idAttr.value;\n if (this._msgIdToHtml.hasOwnProperty(id)) {\n this._addError(element, `Duplicated translations for msg ${id}`);\n }\n else {\n ml.visitAll(this, element.children, null);\n if (typeof this._unitMlString === 'string') {\n this._msgIdToHtml[id] = this._unitMlString;\n }\n else {\n this._addError(element, `Message ${id} misses a translation`);\n }\n }\n }\n break;\n case _SOURCE_TAG:\n // ignore source message\n break;\n case _TARGET_TAG:\n const /** @type {?} */ innerTextStart = /** @type {?} */ ((element.startSourceSpan)).end.offset;\n const /** @type {?} */ innerTextEnd = /** @type {?} */ ((element.endSourceSpan)).start.offset;\n const /** @type {?} */ content = /** @type {?} */ ((element.startSourceSpan)).start.file.content;\n const /** @type {?} */ innerText = content.slice(innerTextStart, innerTextEnd);\n this._unitMlString = innerText;\n break;\n case _XLIFF_TAG:\n const /** @type {?} */ localeAttr = element.attrs.find((attr) => attr.name === 'trgLang');\n if (localeAttr) {\n this._locale = localeAttr.value;\n }\n const /** @type {?} */ versionAttr = element.attrs.find((attr) => attr.name === 'version');\n if (versionAttr) {\n const /** @type {?} */ version = versionAttr.value;\n if (version !== '2.0') {\n this._addError(element, `The XLIFF file version ${version} is not compatible with XLIFF 2.0 serializer`);\n }\n else {\n ml.visitAll(this, element.children, null);\n }\n }\n break;\n default:\n ml.visitAll(this, element.children, null);\n }\n }\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n visitAttribute(attribute, context) { }\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n visitText(text, context) { }\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n visitComment(comment, context) { }\n /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n visitExpansion(expansion, context) { }\n /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(expansionCase, context) { }\n /**\n * @param {?} node\n * @param {?} message\n * @return {?}\n */\n _addError(node, message) {\n this._errors.push(new I18nError(node.sourceSpan, message));\n }\n}\nfunction Xliff2Parser_tsickle_Closure_declarations() {\n /** @type {?} */\n Xliff2Parser.prototype._unitMlString;\n /** @type {?} */\n Xliff2Parser.prototype._errors;\n /** @type {?} */\n Xliff2Parser.prototype._msgIdToHtml;\n /** @type {?} */\n Xliff2Parser.prototype._locale;\n}\nclass XmlToI18n {\n /**\n * @param {?} message\n * @param {?} url\n * @return {?}\n */\n convert(message, url) {\n const /** @type {?} */ xmlIcu = new XmlParser().parse(message, url, true);\n this._errors = xmlIcu.errors;\n const /** @type {?} */ i18nNodes = this._errors.length > 0 || xmlIcu.rootNodes.length == 0 ?\n [] :\n [].concat(...ml.visitAll(this, xmlIcu.rootNodes));\n return {\n i18nNodes,\n errors: this._errors,\n };\n }\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n visitText(text, context) { return new i18n.Text(text.value, text.sourceSpan); }\n /**\n * @param {?} el\n * @param {?} context\n * @return {?}\n */\n visitElement(el, context) {\n switch (el.name) {\n case _PLACEHOLDER_TAG:\n const /** @type {?} */ nameAttr = el.attrs.find((attr) => attr.name === 'equiv');\n if (nameAttr) {\n return [new i18n.Placeholder('', nameAttr.value, el.sourceSpan)];\n }\n this._addError(el, `<${_PLACEHOLDER_TAG}> misses the \"equiv\" attribute`);\n break;\n case _PLACEHOLDER_SPANNING_TAG:\n const /** @type {?} */ startAttr = el.attrs.find((attr) => attr.name === 'equivStart');\n const /** @type {?} */ endAttr = el.attrs.find((attr) => attr.name === 'equivEnd');\n if (!startAttr) {\n this._addError(el, `<${_PLACEHOLDER_TAG}> misses the \"equivStart\" attribute`);\n }\n else if (!endAttr) {\n this._addError(el, `<${_PLACEHOLDER_TAG}> misses the \"equivEnd\" attribute`);\n }\n else {\n const /** @type {?} */ startId = startAttr.value;\n const /** @type {?} */ endId = endAttr.value;\n const /** @type {?} */ nodes = [];\n return nodes.concat(new i18n.Placeholder('', startId, el.sourceSpan), ...el.children.map(node => node.visit(this, null)), new i18n.Placeholder('', endId, el.sourceSpan));\n }\n break;\n default:\n this._addError(el, `Unexpected tag`);\n }\n return null;\n }\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n visitExpansion(icu, context) {\n const /** @type {?} */ caseMap = {};\n ml.visitAll(this, icu.cases).forEach((c) => {\n caseMap[c.value] = new i18n.Container(c.nodes, icu.sourceSpan);\n });\n return new i18n.Icu(icu.switchValue, icu.type, caseMap, icu.sourceSpan);\n }\n /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(icuCase, context) {\n return {\n value: icuCase.value,\n nodes: [].concat(...ml.visitAll(this, icuCase.expression)),\n };\n }\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n visitComment(comment, context) { }\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n visitAttribute(attribute, context) { }\n /**\n * @param {?} node\n * @param {?} message\n * @return {?}\n */\n _addError(node, message) {\n this._errors.push(new I18nError(node.sourceSpan, message));\n }\n}\nfunction XmlToI18n_tsickle_Closure_declarations() {\n /** @type {?} */\n XmlToI18n.prototype._errors;\n}\n/**\n * @param {?} tag\n * @return {?}\n */\nfunction getTypeForTag(tag) {\n switch (tag.toLowerCase()) {\n case 'br':\n case 'b':\n case 'i':\n case 'u':\n return 'fmt';\n case 'img':\n return 'image';\n case 'a':\n return 'link';\n default:\n return 'other';\n }\n}\n//# sourceMappingURL=xliff2.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { decimalDigest } from '../digest';\nimport { Serializer, SimplePlaceholderMapper } from './serializer';\nimport * as xml from './xml_helper';\nconst /** @type {?} */ _MESSAGES_TAG = 'messagebundle';\nconst /** @type {?} */ _MESSAGE_TAG = 'msg';\nconst /** @type {?} */ _PLACEHOLDER_TAG = 'ph';\nconst /** @type {?} */ _EXEMPLE_TAG = 'ex';\nconst /** @type {?} */ _SOURCE_TAG = 'source';\nconst /** @type {?} */ _DOCTYPE = `<!ELEMENT messagebundle (msg)*>\n<!ATTLIST messagebundle class CDATA #IMPLIED>\n\n<!ELEMENT msg (#PCDATA|ph|source)*>\n<!ATTLIST msg id CDATA #IMPLIED>\n<!ATTLIST msg seq CDATA #IMPLIED>\n<!ATTLIST msg name CDATA #IMPLIED>\n<!ATTLIST msg desc CDATA #IMPLIED>\n<!ATTLIST msg meaning CDATA #IMPLIED>\n<!ATTLIST msg obsolete (obsolete) #IMPLIED>\n<!ATTLIST msg xml:space (default|preserve) \"default\">\n<!ATTLIST msg is_hidden CDATA #IMPLIED>\n\n<!ELEMENT source (#PCDATA)>\n\n<!ELEMENT ph (#PCDATA|ex)*>\n<!ATTLIST ph name CDATA #REQUIRED>\n\n<!ELEMENT ex (#PCDATA)>`;\nexport class Xmb extends Serializer {\n /**\n * @param {?} messages\n * @param {?} locale\n * @return {?}\n */\n write(messages, locale) {\n const /** @type {?} */ exampleVisitor = new ExampleVisitor();\n const /** @type {?} */ visitor = new _Visitor();\n let /** @type {?} */ rootNode = new xml.Tag(_MESSAGES_TAG);\n messages.forEach(message => {\n const /** @type {?} */ attrs = { id: message.id };\n if (message.description) {\n attrs['desc'] = message.description;\n }\n if (message.meaning) {\n attrs['meaning'] = message.meaning;\n }\n let /** @type {?} */ sourceTags = [];\n message.sources.forEach((source) => {\n sourceTags.push(new xml.Tag(_SOURCE_TAG, {}, [\n new xml.Text(`${source.filePath}:${source.startLine}${source.endLine !== source.startLine ? ',' + source.endLine : ''}`)\n ]));\n });\n rootNode.children.push(new xml.CR(2), new xml.Tag(_MESSAGE_TAG, attrs, [...sourceTags, ...visitor.serialize(message.nodes)]));\n });\n rootNode.children.push(new xml.CR());\n return xml.serialize([\n new xml.Declaration({ version: '1.0', encoding: 'UTF-8' }),\n new xml.CR(),\n new xml.Doctype(_MESSAGES_TAG, _DOCTYPE),\n new xml.CR(),\n exampleVisitor.addDefaultExamples(rootNode),\n new xml.CR(),\n ]);\n }\n /**\n * @param {?} content\n * @param {?} url\n * @return {?}\n */\n load(content, url) {\n throw new Error('Unsupported');\n }\n /**\n * @param {?} message\n * @return {?}\n */\n digest(message) { return digest(message); }\n /**\n * @param {?} message\n * @return {?}\n */\n createNameMapper(message) {\n return new SimplePlaceholderMapper(message, toPublicName);\n }\n}\nclass _Visitor {\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n visitText(text, context) { return [new xml.Text(text.value)]; }\n /**\n * @param {?} container\n * @param {?} context\n * @return {?}\n */\n visitContainer(container, context) {\n const /** @type {?} */ nodes = [];\n container.children.forEach((node) => nodes.push(...node.visit(this)));\n return nodes;\n }\n /**\n * @param {?} icu\n * @param {?=} context\n * @return {?}\n */\n visitIcu(icu, context) {\n const /** @type {?} */ nodes = [new xml.Text(`{${icu.expressionPlaceholder}, ${icu.type}, `)];\n Object.keys(icu.cases).forEach((c) => {\n nodes.push(new xml.Text(`${c} {`), ...icu.cases[c].visit(this), new xml.Text(`} `));\n });\n nodes.push(new xml.Text(`}`));\n return nodes;\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitTagPlaceholder(ph, context) {\n const /** @type {?} */ startEx = new xml.Tag(_EXEMPLE_TAG, {}, [new xml.Text(`<${ph.tag}>`)]);\n const /** @type {?} */ startTagPh = new xml.Tag(_PLACEHOLDER_TAG, { name: ph.startName }, [startEx]);\n if (ph.isVoid) {\n // void tags have no children nor closing tags\n return [startTagPh];\n }\n const /** @type {?} */ closeEx = new xml.Tag(_EXEMPLE_TAG, {}, [new xml.Text(`</${ph.tag}>`)]);\n const /** @type {?} */ closeTagPh = new xml.Tag(_PLACEHOLDER_TAG, { name: ph.closeName }, [closeEx]);\n return [startTagPh, ...this.serialize(ph.children), closeTagPh];\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitPlaceholder(ph, context) {\n const /** @type {?} */ exTag = new xml.Tag(_EXEMPLE_TAG, {}, [new xml.Text(`{{${ph.value}}}`)]);\n return [new xml.Tag(_PLACEHOLDER_TAG, { name: ph.name }, [exTag])];\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitIcuPlaceholder(ph, context) {\n const /** @type {?} */ exTag = new xml.Tag(_EXEMPLE_TAG, {}, [\n new xml.Text(`{${ph.value.expression}, ${ph.value.type}, ${Object.keys(ph.value.cases).map((value) => value + ' {...}').join(' ')}}`)\n ]);\n return [new xml.Tag(_PLACEHOLDER_TAG, { name: ph.name }, [exTag])];\n }\n /**\n * @param {?} nodes\n * @return {?}\n */\n serialize(nodes) {\n return [].concat(...nodes.map(node => node.visit(this)));\n }\n}\n/**\n * @param {?} message\n * @return {?}\n */\nexport function digest(message) {\n return decimalDigest(message);\n}\nclass ExampleVisitor {\n /**\n * @param {?} node\n * @return {?}\n */\n addDefaultExamples(node) {\n node.visit(this);\n return node;\n }\n /**\n * @param {?} tag\n * @return {?}\n */\n visitTag(tag) {\n if (tag.name === _PLACEHOLDER_TAG) {\n if (!tag.children || tag.children.length == 0) {\n const /** @type {?} */ exText = new xml.Text(tag.attrs['name'] || '...');\n tag.children = [new xml.Tag(_EXEMPLE_TAG, {}, [exText])];\n }\n }\n else if (tag.children) {\n tag.children.forEach(node => node.visit(this));\n }\n }\n /**\n * @param {?} text\n * @return {?}\n */\n visitText(text) { }\n /**\n * @param {?} decl\n * @return {?}\n */\n visitDeclaration(decl) { }\n /**\n * @param {?} doctype\n * @return {?}\n */\n visitDoctype(doctype) { }\n}\n/**\n * @param {?} internalName\n * @return {?}\n */\nexport function toPublicName(internalName) {\n return internalName.toUpperCase().replace(/[^A-Z0-9_]/g, '_');\n}\n//# sourceMappingURL=xmb.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as ml from '../../ml_parser/ast';\nimport { XmlParser } from '../../ml_parser/xml_parser';\nimport * as i18n from '../i18n_ast';\nimport { I18nError } from '../parse_util';\nimport { Serializer, SimplePlaceholderMapper } from './serializer';\nimport { digest, toPublicName } from './xmb';\nconst /** @type {?} */ _TRANSLATIONS_TAG = 'translationbundle';\nconst /** @type {?} */ _TRANSLATION_TAG = 'translation';\nconst /** @type {?} */ _PLACEHOLDER_TAG = 'ph';\nexport class Xtb extends Serializer {\n /**\n * @param {?} messages\n * @param {?} locale\n * @return {?}\n */\n write(messages, locale) { throw new Error('Unsupported'); }\n /**\n * @param {?} content\n * @param {?} url\n * @return {?}\n */\n load(content, url) {\n // xtb to xml nodes\n const /** @type {?} */ xtbParser = new XtbParser();\n const { locale, msgIdToHtml, errors } = xtbParser.parse(content, url);\n // xml nodes to i18n nodes\n const /** @type {?} */ i18nNodesByMsgId = {};\n const /** @type {?} */ converter = new XmlToI18n();\n // Because we should be able to load xtb files that rely on features not supported by angular,\n // we need to delay the conversion of html to i18n nodes so that non angular messages are not\n // converted\n Object.keys(msgIdToHtml).forEach(msgId => {\n const /** @type {?} */ valueFn = function () {\n const { i18nNodes, errors } = converter.convert(msgIdToHtml[msgId], url);\n if (errors.length) {\n throw new Error(`xtb parse errors:\\n${errors.join('\\n')}`);\n }\n return i18nNodes;\n };\n createLazyProperty(i18nNodesByMsgId, msgId, valueFn);\n });\n if (errors.length) {\n throw new Error(`xtb parse errors:\\n${errors.join('\\n')}`);\n }\n return { locale: /** @type {?} */ ((locale)), i18nNodesByMsgId };\n }\n /**\n * @param {?} message\n * @return {?}\n */\n digest(message) { return digest(message); }\n /**\n * @param {?} message\n * @return {?}\n */\n createNameMapper(message) {\n return new SimplePlaceholderMapper(message, toPublicName);\n }\n}\n/**\n * @param {?} messages\n * @param {?} id\n * @param {?} valueFn\n * @return {?}\n */\nfunction createLazyProperty(messages, id, valueFn) {\n Object.defineProperty(messages, id, {\n configurable: true,\n enumerable: true,\n get: function () {\n const /** @type {?} */ value = valueFn();\n Object.defineProperty(messages, id, { enumerable: true, value });\n return value;\n },\n set: _ => { throw new Error('Could not overwrite an XTB translation'); },\n });\n}\nclass XtbParser {\n constructor() {\n this._locale = null;\n }\n /**\n * @param {?} xtb\n * @param {?} url\n * @return {?}\n */\n parse(xtb, url) {\n this._bundleDepth = 0;\n this._msgIdToHtml = {};\n // We can not parse the ICU messages at this point as some messages might not originate\n // from Angular that could not be lex'd.\n const /** @type {?} */ xml = new XmlParser().parse(xtb, url, false);\n this._errors = xml.errors;\n ml.visitAll(this, xml.rootNodes);\n return {\n msgIdToHtml: this._msgIdToHtml,\n errors: this._errors,\n locale: this._locale,\n };\n }\n /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n visitElement(element, context) {\n switch (element.name) {\n case _TRANSLATIONS_TAG:\n this._bundleDepth++;\n if (this._bundleDepth > 1) {\n this._addError(element, `<${_TRANSLATIONS_TAG}> elements can not be nested`);\n }\n const /** @type {?} */ langAttr = element.attrs.find((attr) => attr.name === 'lang');\n if (langAttr) {\n this._locale = langAttr.value;\n }\n ml.visitAll(this, element.children, null);\n this._bundleDepth--;\n break;\n case _TRANSLATION_TAG:\n const /** @type {?} */ idAttr = element.attrs.find((attr) => attr.name === 'id');\n if (!idAttr) {\n this._addError(element, `<${_TRANSLATION_TAG}> misses the \"id\" attribute`);\n }\n else {\n const /** @type {?} */ id = idAttr.value;\n if (this._msgIdToHtml.hasOwnProperty(id)) {\n this._addError(element, `Duplicated translations for msg ${id}`);\n }\n else {\n const /** @type {?} */ innerTextStart = /** @type {?} */ ((element.startSourceSpan)).end.offset;\n const /** @type {?} */ innerTextEnd = /** @type {?} */ ((element.endSourceSpan)).start.offset;\n const /** @type {?} */ content = /** @type {?} */ ((element.startSourceSpan)).start.file.content;\n const /** @type {?} */ innerText = content.slice(/** @type {?} */ ((innerTextStart)), /** @type {?} */ ((innerTextEnd)));\n this._msgIdToHtml[id] = innerText;\n }\n }\n break;\n default:\n this._addError(element, 'Unexpected tag');\n }\n }\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n visitAttribute(attribute, context) { }\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n visitText(text, context) { }\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n visitComment(comment, context) { }\n /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n visitExpansion(expansion, context) { }\n /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(expansionCase, context) { }\n /**\n * @param {?} node\n * @param {?} message\n * @return {?}\n */\n _addError(node, message) {\n this._errors.push(new I18nError(/** @type {?} */ ((node.sourceSpan)), message));\n }\n}\nfunction XtbParser_tsickle_Closure_declarations() {\n /** @type {?} */\n XtbParser.prototype._bundleDepth;\n /** @type {?} */\n XtbParser.prototype._errors;\n /** @type {?} */\n XtbParser.prototype._msgIdToHtml;\n /** @type {?} */\n XtbParser.prototype._locale;\n}\nclass XmlToI18n {\n /**\n * @param {?} message\n * @param {?} url\n * @return {?}\n */\n convert(message, url) {\n const /** @type {?} */ xmlIcu = new XmlParser().parse(message, url, true);\n this._errors = xmlIcu.errors;\n const /** @type {?} */ i18nNodes = this._errors.length > 0 || xmlIcu.rootNodes.length == 0 ?\n [] :\n ml.visitAll(this, xmlIcu.rootNodes);\n return {\n i18nNodes,\n errors: this._errors,\n };\n }\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n visitText(text, context) { return new i18n.Text(text.value, /** @type {?} */ ((text.sourceSpan))); }\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n visitExpansion(icu, context) {\n const /** @type {?} */ caseMap = {};\n ml.visitAll(this, icu.cases).forEach(c => {\n caseMap[c.value] = new i18n.Container(c.nodes, icu.sourceSpan);\n });\n return new i18n.Icu(icu.switchValue, icu.type, caseMap, icu.sourceSpan);\n }\n /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(icuCase, context) {\n return {\n value: icuCase.value,\n nodes: ml.visitAll(this, icuCase.expression),\n };\n }\n /**\n * @param {?} el\n * @param {?} context\n * @return {?}\n */\n visitElement(el, context) {\n if (el.name === _PLACEHOLDER_TAG) {\n const /** @type {?} */ nameAttr = el.attrs.find((attr) => attr.name === 'name');\n if (nameAttr) {\n return new i18n.Placeholder('', nameAttr.value, /** @type {?} */ ((el.sourceSpan)));\n }\n this._addError(el, `<${_PLACEHOLDER_TAG}> misses the \"name\" attribute`);\n }\n else {\n this._addError(el, `Unexpected tag`);\n }\n return null;\n }\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n visitComment(comment, context) { }\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n visitAttribute(attribute, context) { }\n /**\n * @param {?} node\n * @param {?} message\n * @return {?}\n */\n _addError(node, message) {\n this._errors.push(new I18nError(/** @type {?} */ ((node.sourceSpan)), message));\n }\n}\nfunction XmlToI18n_tsickle_Closure_declarations() {\n /** @type {?} */\n XmlToI18n.prototype._errors;\n}\n//# sourceMappingURL=xtb.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { getHtmlTagDefinition } from './html_tags';\nimport { DEFAULT_INTERPOLATION_CONFIG } from './interpolation_config';\nimport { Parser } from './parser';\nexport { ParseTreeResult, TreeError } from './parser';\nexport class HtmlParser extends Parser {\n constructor() { super(getHtmlTagDefinition); }\n /**\n * @param {?} source\n * @param {?} url\n * @param {?=} parseExpansionForms\n * @param {?=} interpolationConfig\n * @return {?}\n */\n parse(source, url, parseExpansionForms = false, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {\n return super.parse(source, url, parseExpansionForms, interpolationConfig);\n }\n}\n//# sourceMappingURL=html_parser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { MissingTranslationStrategy } from '../core';\nimport { HtmlParser } from '../ml_parser/html_parser';\nimport { I18nError } from './parse_util';\n/**\n * A container for translated messages\n */\nexport class TranslationBundle {\n /**\n * @param {?=} _i18nNodesByMsgId\n * @param {?=} locale\n * @param {?=} digest\n * @param {?=} mapperFactory\n * @param {?=} missingTranslationStrategy\n * @param {?=} console\n */\n constructor(_i18nNodesByMsgId = {}, locale, digest, mapperFactory, missingTranslationStrategy = MissingTranslationStrategy.Warning, console) {\n this._i18nNodesByMsgId = _i18nNodesByMsgId;\n this.digest = digest;\n this.mapperFactory = mapperFactory;\n this._i18nToHtml = new I18nToHtmlVisitor(_i18nNodesByMsgId, locale, digest, /** @type {?} */ ((mapperFactory)), missingTranslationStrategy, console);\n }\n /**\n * @param {?} content\n * @param {?} url\n * @param {?} serializer\n * @param {?} missingTranslationStrategy\n * @param {?=} console\n * @return {?}\n */\n static load(content, url, serializer, missingTranslationStrategy, console) {\n const { locale, i18nNodesByMsgId } = serializer.load(content, url);\n const /** @type {?} */ digestFn = (m) => serializer.digest(m);\n const /** @type {?} */ mapperFactory = (m) => /** @type {?} */ ((serializer.createNameMapper(m)));\n return new TranslationBundle(i18nNodesByMsgId, locale, digestFn, mapperFactory, missingTranslationStrategy, console);\n }\n /**\n * @param {?} srcMsg\n * @return {?}\n */\n get(srcMsg) {\n const /** @type {?} */ html = this._i18nToHtml.convert(srcMsg);\n if (html.errors.length) {\n throw new Error(html.errors.join('\\n'));\n }\n return html.nodes;\n }\n /**\n * @param {?} srcMsg\n * @return {?}\n */\n has(srcMsg) { return this.digest(srcMsg) in this._i18nNodesByMsgId; }\n}\nfunction TranslationBundle_tsickle_Closure_declarations() {\n /** @type {?} */\n TranslationBundle.prototype._i18nToHtml;\n /** @type {?} */\n TranslationBundle.prototype._i18nNodesByMsgId;\n /** @type {?} */\n TranslationBundle.prototype.digest;\n /** @type {?} */\n TranslationBundle.prototype.mapperFactory;\n}\nclass I18nToHtmlVisitor {\n /**\n * @param {?=} _i18nNodesByMsgId\n * @param {?=} _locale\n * @param {?=} _digest\n * @param {?=} _mapperFactory\n * @param {?=} _missingTranslationStrategy\n * @param {?=} _console\n */\n constructor(_i18nNodesByMsgId = {}, _locale, _digest, _mapperFactory, _missingTranslationStrategy, _console) {\n this._i18nNodesByMsgId = _i18nNodesByMsgId;\n this._locale = _locale;\n this._digest = _digest;\n this._mapperFactory = _mapperFactory;\n this._missingTranslationStrategy = _missingTranslationStrategy;\n this._console = _console;\n this._contextStack = [];\n this._errors = [];\n }\n /**\n * @param {?} srcMsg\n * @return {?}\n */\n convert(srcMsg) {\n this._contextStack.length = 0;\n this._errors.length = 0;\n // i18n to text\n const /** @type {?} */ text = this._convertToText(srcMsg);\n // text to html\n const /** @type {?} */ url = srcMsg.nodes[0].sourceSpan.start.file.url;\n const /** @type {?} */ html = new HtmlParser().parse(text, url, true);\n return {\n nodes: html.rootNodes,\n errors: [...this._errors, ...html.errors],\n };\n }\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n visitText(text, context) { return text.value; }\n /**\n * @param {?} container\n * @param {?=} context\n * @return {?}\n */\n visitContainer(container, context) {\n return container.children.map(n => n.visit(this)).join('');\n }\n /**\n * @param {?} icu\n * @param {?=} context\n * @return {?}\n */\n visitIcu(icu, context) {\n const /** @type {?} */ cases = Object.keys(icu.cases).map(k => `${k} {${icu.cases[k].visit(this)}}`);\n // TODO(vicb): Once all format switch to using expression placeholders\n // we should throw when the placeholder is not in the source message\n const /** @type {?} */ exp = this._srcMsg.placeholders.hasOwnProperty(icu.expression) ?\n this._srcMsg.placeholders[icu.expression] :\n icu.expression;\n return `{${exp}, ${icu.type}, ${cases.join(' ')}}`;\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitPlaceholder(ph, context) {\n const /** @type {?} */ phName = this._mapper(ph.name);\n if (this._srcMsg.placeholders.hasOwnProperty(phName)) {\n return this._srcMsg.placeholders[phName];\n }\n if (this._srcMsg.placeholderToMessage.hasOwnProperty(phName)) {\n return this._convertToText(this._srcMsg.placeholderToMessage[phName]);\n }\n this._addError(ph, `Unknown placeholder \"${ph.name}\"`);\n return '';\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitTagPlaceholder(ph, context) {\n const /** @type {?} */ tag = `${ph.tag}`;\n const /** @type {?} */ attrs = Object.keys(ph.attrs).map(name => `${name}=\"${ph.attrs[name]}\"`).join(' ');\n if (ph.isVoid) {\n return `<${tag} ${attrs}/>`;\n }\n const /** @type {?} */ children = ph.children.map((c) => c.visit(this)).join('');\n return `<${tag} ${attrs}>${children}</${tag}>`;\n }\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n visitIcuPlaceholder(ph, context) {\n // An ICU placeholder references the source message to be serialized\n return this._convertToText(this._srcMsg.placeholderToMessage[ph.name]);\n }\n /**\n * Convert a source message to a translated text string:\n * - text nodes are replaced with their translation,\n * - placeholders are replaced with their content,\n * - ICU nodes are converted to ICU expressions.\n * @param {?} srcMsg\n * @return {?}\n */\n _convertToText(srcMsg) {\n const /** @type {?} */ id = this._digest(srcMsg);\n const /** @type {?} */ mapper = this._mapperFactory ? this._mapperFactory(srcMsg) : null;\n let /** @type {?} */ nodes;\n this._contextStack.push({ msg: this._srcMsg, mapper: this._mapper });\n this._srcMsg = srcMsg;\n if (this._i18nNodesByMsgId.hasOwnProperty(id)) {\n // When there is a translation use its nodes as the source\n // And create a mapper to convert serialized placeholder names to internal names\n nodes = this._i18nNodesByMsgId[id];\n this._mapper = (name) => mapper ? /** @type {?} */ ((mapper.toInternalName(name))) : name;\n }\n else {\n // When no translation has been found\n // - report an error / a warning / nothing,\n // - use the nodes from the original message\n // - placeholders are already internal and need no mapper\n if (this._missingTranslationStrategy === MissingTranslationStrategy.Error) {\n const /** @type {?} */ ctx = this._locale ? ` for locale \"${this._locale}\"` : '';\n this._addError(srcMsg.nodes[0], `Missing translation for message \"${id}\"${ctx}`);\n }\n else if (this._console &&\n this._missingTranslationStrategy === MissingTranslationStrategy.Warning) {\n const /** @type {?} */ ctx = this._locale ? ` for locale \"${this._locale}\"` : '';\n this._console.warn(`Missing translation for message \"${id}\"${ctx}`);\n }\n nodes = srcMsg.nodes;\n this._mapper = (name) => name;\n }\n const /** @type {?} */ text = nodes.map(node => node.visit(this)).join('');\n const /** @type {?} */ context = /** @type {?} */ ((this._contextStack.pop()));\n this._srcMsg = context.msg;\n this._mapper = context.mapper;\n return text;\n }\n /**\n * @param {?} el\n * @param {?} msg\n * @return {?}\n */\n _addError(el, msg) {\n this._errors.push(new I18nError(el.sourceSpan, msg));\n }\n}\nfunction I18nToHtmlVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n I18nToHtmlVisitor.prototype._srcMsg;\n /** @type {?} */\n I18nToHtmlVisitor.prototype._contextStack;\n /** @type {?} */\n I18nToHtmlVisitor.prototype._errors;\n /** @type {?} */\n I18nToHtmlVisitor.prototype._mapper;\n /** @type {?} */\n I18nToHtmlVisitor.prototype._i18nNodesByMsgId;\n /** @type {?} */\n I18nToHtmlVisitor.prototype._locale;\n /** @type {?} */\n I18nToHtmlVisitor.prototype._digest;\n /** @type {?} */\n I18nToHtmlVisitor.prototype._mapperFactory;\n /** @type {?} */\n I18nToHtmlVisitor.prototype._missingTranslationStrategy;\n /** @type {?} */\n I18nToHtmlVisitor.prototype._console;\n}\n//# sourceMappingURL=translation_bundle.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { MissingTranslationStrategy } from '../core';\nimport { DEFAULT_INTERPOLATION_CONFIG } from '../ml_parser/interpolation_config';\nimport { ParseTreeResult } from '../ml_parser/parser';\nimport { digest } from './digest';\nimport { mergeTranslations } from './extractor_merger';\nimport { Xliff } from './serializers/xliff';\nimport { Xliff2 } from './serializers/xliff2';\nimport { Xmb } from './serializers/xmb';\nimport { Xtb } from './serializers/xtb';\nimport { TranslationBundle } from './translation_bundle';\nexport class I18NHtmlParser {\n /**\n * @param {?} _htmlParser\n * @param {?=} translations\n * @param {?=} translationsFormat\n * @param {?=} missingTranslation\n * @param {?=} console\n */\n constructor(_htmlParser, translations, translationsFormat, missingTranslation = MissingTranslationStrategy.Warning, console) {\n this._htmlParser = _htmlParser;\n if (translations) {\n const /** @type {?} */ serializer = createSerializer(translationsFormat);\n this._translationBundle =\n TranslationBundle.load(translations, 'i18n', serializer, missingTranslation, console);\n }\n else {\n this._translationBundle =\n new TranslationBundle({}, null, digest, undefined, missingTranslation, console);\n }\n }\n /**\n * @param {?} source\n * @param {?} url\n * @param {?=} parseExpansionForms\n * @param {?=} interpolationConfig\n * @return {?}\n */\n parse(source, url, parseExpansionForms = false, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {\n const /** @type {?} */ parseResult = this._htmlParser.parse(source, url, parseExpansionForms, interpolationConfig);\n if (parseResult.errors.length) {\n return new ParseTreeResult(parseResult.rootNodes, parseResult.errors);\n }\n return mergeTranslations(parseResult.rootNodes, this._translationBundle, interpolationConfig, [], {});\n }\n}\nfunction I18NHtmlParser_tsickle_Closure_declarations() {\n /** @type {?} */\n I18NHtmlParser.prototype.getTagDefinition;\n /** @type {?} */\n I18NHtmlParser.prototype._translationBundle;\n /** @type {?} */\n I18NHtmlParser.prototype._htmlParser;\n}\n/**\n * @param {?=} format\n * @return {?}\n */\nfunction createSerializer(format) {\n format = (format || 'xlf').toLowerCase();\n switch (format) {\n case 'xmb':\n return new Xmb();\n case 'xtb':\n return new Xtb();\n case 'xliff2':\n case 'xlf2':\n return new Xliff2();\n case 'xliff':\n case 'xlf':\n default:\n return new Xliff();\n }\n}\n//# sourceMappingURL=i18n_html_parser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst /** @type {?} */ STRIP_SRC_FILE_SUFFIXES = /(\\.ts|\\.d\\.ts|\\.js|\\.jsx|\\.tsx)$/;\nconst /** @type {?} */ GENERATED_FILE = /\\.ngfactory\\.|\\.ngsummary\\./;\nconst /** @type {?} */ JIT_SUMMARY_FILE = /\\.ngsummary\\./;\nconst /** @type {?} */ JIT_SUMMARY_NAME = /NgSummary$/;\n/**\n * @param {?} filePath\n * @param {?=} forceSourceFile\n * @return {?}\n */\nexport function ngfactoryFilePath(filePath, forceSourceFile = false) {\n const /** @type {?} */ urlWithSuffix = splitTypescriptSuffix(filePath, forceSourceFile);\n return `${urlWithSuffix[0]}.ngfactory${normalizeGenFileSuffix(urlWithSuffix[1])}`;\n}\n/**\n * @param {?} filePath\n * @return {?}\n */\nexport function stripGeneratedFileSuffix(filePath) {\n return filePath.replace(GENERATED_FILE, '.');\n}\n/**\n * @param {?} filePath\n * @return {?}\n */\nexport function isGeneratedFile(filePath) {\n return GENERATED_FILE.test(filePath);\n}\n/**\n * @param {?} path\n * @param {?=} forceSourceFile\n * @return {?}\n */\nexport function splitTypescriptSuffix(path, forceSourceFile = false) {\n if (path.endsWith('.d.ts')) {\n return [path.slice(0, -5), forceSourceFile ? '.ts' : '.d.ts'];\n }\n const /** @type {?} */ lastDot = path.lastIndexOf('.');\n if (lastDot !== -1) {\n return [path.substring(0, lastDot), path.substring(lastDot)];\n }\n return [path, ''];\n}\n/**\n * @param {?} srcFileSuffix\n * @return {?}\n */\nexport function normalizeGenFileSuffix(srcFileSuffix) {\n return srcFileSuffix === '.tsx' ? '.ts' : srcFileSuffix;\n}\n/**\n * @param {?} fileName\n * @return {?}\n */\nexport function summaryFileName(fileName) {\n const /** @type {?} */ fileNameWithoutSuffix = fileName.replace(STRIP_SRC_FILE_SUFFIXES, '');\n return `${fileNameWithoutSuffix}.ngsummary.json`;\n}\n/**\n * @param {?} fileName\n * @param {?=} forceSourceFile\n * @return {?}\n */\nexport function summaryForJitFileName(fileName, forceSourceFile = false) {\n const /** @type {?} */ urlWithSuffix = splitTypescriptSuffix(stripGeneratedFileSuffix(fileName), forceSourceFile);\n return `${urlWithSuffix[0]}.ngsummary${urlWithSuffix[1]}`;\n}\n/**\n * @param {?} filePath\n * @return {?}\n */\nexport function stripSummaryForJitFileSuffix(filePath) {\n return filePath.replace(JIT_SUMMARY_FILE, '.');\n}\n/**\n * @param {?} symbolName\n * @return {?}\n */\nexport function summaryForJitName(symbolName) {\n return `${symbolName}NgSummary`;\n}\n/**\n * @param {?} symbolName\n * @return {?}\n */\nexport function stripSummaryForJitNameSuffix(symbolName) {\n return symbolName.replace(JIT_SUMMARY_NAME, '');\n}\nconst /** @type {?} */ LOWERED_SYMBOL = /\\u0275\\d+/;\n/**\n * @param {?} name\n * @return {?}\n */\nexport function isLoweredSymbol(name) {\n return LOWERED_SYMBOL.test(name);\n}\n/**\n * @param {?} id\n * @return {?}\n */\nexport function createLoweredSymbol(id) {\n return `\\u0275${id}`;\n}\n//# sourceMappingURL=util.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst /** @type {?} */ CORE = '@angular/core';\nexport class Identifiers {\n}\nIdentifiers.ANALYZE_FOR_ENTRY_COMPONENTS = {\n name: 'ANALYZE_FOR_ENTRY_COMPONENTS',\n moduleName: CORE,\n};\nIdentifiers.ElementRef = { name: 'ElementRef', moduleName: CORE };\nIdentifiers.NgModuleRef = { name: 'NgModuleRef', moduleName: CORE };\nIdentifiers.ViewContainerRef = { name: 'ViewContainerRef', moduleName: CORE };\nIdentifiers.ChangeDetectorRef = {\n name: 'ChangeDetectorRef',\n moduleName: CORE,\n};\nIdentifiers.QueryList = { name: 'QueryList', moduleName: CORE };\nIdentifiers.TemplateRef = { name: 'TemplateRef', moduleName: CORE };\nIdentifiers.CodegenComponentFactoryResolver = {\n name: 'ɵCodegenComponentFactoryResolver',\n moduleName: CORE,\n};\nIdentifiers.ComponentFactoryResolver = {\n name: 'ComponentFactoryResolver',\n moduleName: CORE,\n};\nIdentifiers.ComponentFactory = { name: 'ComponentFactory', moduleName: CORE };\nIdentifiers.ComponentRef = { name: 'ComponentRef', moduleName: CORE };\nIdentifiers.NgModuleFactory = { name: 'NgModuleFactory', moduleName: CORE };\nIdentifiers.createModuleFactory = {\n name: 'ɵcmf',\n moduleName: CORE,\n};\nIdentifiers.moduleDef = {\n name: 'ɵmod',\n moduleName: CORE,\n};\nIdentifiers.moduleProviderDef = {\n name: 'ɵmpd',\n moduleName: CORE,\n};\nIdentifiers.RegisterModuleFactoryFn = {\n name: 'ɵregisterModuleFactory',\n moduleName: CORE,\n};\nIdentifiers.Injector = { name: 'Injector', moduleName: CORE };\nIdentifiers.ViewEncapsulation = {\n name: 'ViewEncapsulation',\n moduleName: CORE,\n};\nIdentifiers.ChangeDetectionStrategy = {\n name: 'ChangeDetectionStrategy',\n moduleName: CORE,\n};\nIdentifiers.SecurityContext = {\n name: 'SecurityContext',\n moduleName: CORE,\n};\nIdentifiers.LOCALE_ID = { name: 'LOCALE_ID', moduleName: CORE };\nIdentifiers.TRANSLATIONS_FORMAT = {\n name: 'TRANSLATIONS_FORMAT',\n moduleName: CORE,\n};\nIdentifiers.inlineInterpolate = {\n name: 'ɵinlineInterpolate',\n moduleName: CORE,\n};\nIdentifiers.interpolate = { name: 'ɵinterpolate', moduleName: CORE };\nIdentifiers.EMPTY_ARRAY = { name: 'ɵEMPTY_ARRAY', moduleName: CORE };\nIdentifiers.EMPTY_MAP = { name: 'ɵEMPTY_MAP', moduleName: CORE };\nIdentifiers.Renderer = { name: 'Renderer', moduleName: CORE };\nIdentifiers.viewDef = { name: 'ɵvid', moduleName: CORE };\nIdentifiers.elementDef = { name: 'ɵeld', moduleName: CORE };\nIdentifiers.anchorDef = { name: 'ɵand', moduleName: CORE };\nIdentifiers.textDef = { name: 'ɵted', moduleName: CORE };\nIdentifiers.directiveDef = { name: 'ɵdid', moduleName: CORE };\nIdentifiers.providerDef = { name: 'ɵprd', moduleName: CORE };\nIdentifiers.queryDef = { name: 'ɵqud', moduleName: CORE };\nIdentifiers.pureArrayDef = { name: 'ɵpad', moduleName: CORE };\nIdentifiers.pureObjectDef = { name: 'ɵpod', moduleName: CORE };\nIdentifiers.purePipeDef = { name: 'ɵppd', moduleName: CORE };\nIdentifiers.pipeDef = { name: 'ɵpid', moduleName: CORE };\nIdentifiers.nodeValue = { name: 'ɵnov', moduleName: CORE };\nIdentifiers.ngContentDef = { name: 'ɵncd', moduleName: CORE };\nIdentifiers.unwrapValue = { name: 'ɵunv', moduleName: CORE };\nIdentifiers.createRendererType2 = { name: 'ɵcrt', moduleName: CORE };\n// type only\nIdentifiers.RendererType2 = {\n name: 'RendererType2',\n moduleName: CORE,\n};\n// type only\nIdentifiers.ViewDefinition = {\n name: 'ɵViewDefinition',\n moduleName: CORE,\n};\nIdentifiers.createComponentFactory = { name: 'ɵccf', moduleName: CORE };\nfunction Identifiers_tsickle_Closure_declarations() {\n /** @type {?} */\n Identifiers.ANALYZE_FOR_ENTRY_COMPONENTS;\n /** @type {?} */\n Identifiers.ElementRef;\n /** @type {?} */\n Identifiers.NgModuleRef;\n /** @type {?} */\n Identifiers.ViewContainerRef;\n /** @type {?} */\n Identifiers.ChangeDetectorRef;\n /** @type {?} */\n Identifiers.QueryList;\n /** @type {?} */\n Identifiers.TemplateRef;\n /** @type {?} */\n Identifiers.CodegenComponentFactoryResolver;\n /** @type {?} */\n Identifiers.ComponentFactoryResolver;\n /** @type {?} */\n Identifiers.ComponentFactory;\n /** @type {?} */\n Identifiers.ComponentRef;\n /** @type {?} */\n Identifiers.NgModuleFactory;\n /** @type {?} */\n Identifiers.createModuleFactory;\n /** @type {?} */\n Identifiers.moduleDef;\n /** @type {?} */\n Identifiers.moduleProviderDef;\n /** @type {?} */\n Identifiers.RegisterModuleFactoryFn;\n /** @type {?} */\n Identifiers.Injector;\n /** @type {?} */\n Identifiers.ViewEncapsulation;\n /** @type {?} */\n Identifiers.ChangeDetectionStrategy;\n /** @type {?} */\n Identifiers.SecurityContext;\n /** @type {?} */\n Identifiers.LOCALE_ID;\n /** @type {?} */\n Identifiers.TRANSLATIONS_FORMAT;\n /** @type {?} */\n Identifiers.inlineInterpolate;\n /** @type {?} */\n Identifiers.interpolate;\n /** @type {?} */\n Identifiers.EMPTY_ARRAY;\n /** @type {?} */\n Identifiers.EMPTY_MAP;\n /** @type {?} */\n Identifiers.Renderer;\n /** @type {?} */\n Identifiers.viewDef;\n /** @type {?} */\n Identifiers.elementDef;\n /** @type {?} */\n Identifiers.anchorDef;\n /** @type {?} */\n Identifiers.textDef;\n /** @type {?} */\n Identifiers.directiveDef;\n /** @type {?} */\n Identifiers.providerDef;\n /** @type {?} */\n Identifiers.queryDef;\n /** @type {?} */\n Identifiers.pureArrayDef;\n /** @type {?} */\n Identifiers.pureObjectDef;\n /** @type {?} */\n Identifiers.purePipeDef;\n /** @type {?} */\n Identifiers.pipeDef;\n /** @type {?} */\n Identifiers.nodeValue;\n /** @type {?} */\n Identifiers.ngContentDef;\n /** @type {?} */\n Identifiers.unwrapValue;\n /** @type {?} */\n Identifiers.createRendererType2;\n /** @type {?} */\n Identifiers.RendererType2;\n /** @type {?} */\n Identifiers.ViewDefinition;\n /** @type {?} */\n Identifiers.createComponentFactory;\n}\n/**\n * @param {?} reference\n * @return {?}\n */\nexport function createTokenForReference(reference) {\n return { identifier: { reference: reference } };\n}\n/**\n * @param {?} reflector\n * @param {?} reference\n * @return {?}\n */\nexport function createTokenForExternalReference(reflector, reference) {\n return createTokenForReference(reflector.resolveExternalReference(reference));\n}\n//# sourceMappingURL=identifiers.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @enum {number} */\nconst LifecycleHooks = {\n OnInit: 0,\n OnDestroy: 1,\n DoCheck: 2,\n OnChanges: 3,\n AfterContentInit: 4,\n AfterContentChecked: 5,\n AfterViewInit: 6,\n AfterViewChecked: 7,\n};\nexport { LifecycleHooks };\nLifecycleHooks[LifecycleHooks.OnInit] = \"OnInit\";\nLifecycleHooks[LifecycleHooks.OnDestroy] = \"OnDestroy\";\nLifecycleHooks[LifecycleHooks.DoCheck] = \"DoCheck\";\nLifecycleHooks[LifecycleHooks.OnChanges] = \"OnChanges\";\nLifecycleHooks[LifecycleHooks.AfterContentInit] = \"AfterContentInit\";\nLifecycleHooks[LifecycleHooks.AfterContentChecked] = \"AfterContentChecked\";\nLifecycleHooks[LifecycleHooks.AfterViewInit] = \"AfterViewInit\";\nLifecycleHooks[LifecycleHooks.AfterViewChecked] = \"AfterViewChecked\";\nexport const /** @type {?} */ LIFECYCLE_HOOKS_VALUES = [\n LifecycleHooks.OnInit, LifecycleHooks.OnDestroy, LifecycleHooks.DoCheck, LifecycleHooks.OnChanges,\n LifecycleHooks.AfterContentInit, LifecycleHooks.AfterContentChecked, LifecycleHooks.AfterViewInit,\n LifecycleHooks.AfterViewChecked\n];\n/**\n * @param {?} reflector\n * @param {?} hook\n * @param {?} token\n * @return {?}\n */\nexport function hasLifecycleHook(reflector, hook, token) {\n return reflector.hasLifecycleHook(token, getHookName(hook));\n}\n/**\n * @param {?} reflector\n * @param {?} token\n * @return {?}\n */\nexport function getAllLifecycleHooks(reflector, token) {\n return LIFECYCLE_HOOKS_VALUES.filter(hook => hasLifecycleHook(reflector, hook, token));\n}\n/**\n * @param {?} hook\n * @return {?}\n */\nfunction getHookName(hook) {\n switch (hook) {\n case LifecycleHooks.OnInit:\n return 'ngOnInit';\n case LifecycleHooks.OnDestroy:\n return 'ngOnDestroy';\n case LifecycleHooks.DoCheck:\n return 'ngDoCheck';\n case LifecycleHooks.OnChanges:\n return 'ngOnChanges';\n case LifecycleHooks.AfterContentInit:\n return 'ngAfterContentInit';\n case LifecycleHooks.AfterContentChecked:\n return 'ngAfterContentChecked';\n case LifecycleHooks.AfterViewInit:\n return 'ngAfterViewInit';\n case LifecycleHooks.AfterViewChecked:\n return 'ngAfterViewChecked';\n }\n}\n//# sourceMappingURL=lifecycle_reflector.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { getHtmlTagDefinition } from './ml_parser/html_tags';\nconst /** @type {?} */ _SELECTOR_REGEXP = new RegExp('(\\\\:not\\\\()|' + //\":not(\"\n '([-\\\\w]+)|' + // \"tag\"\n '(?:\\\\.([-\\\\w]+))|' + // \".class\"\n '(?:\\\\[([-.\\\\w*]+)(?:=([\\\"\\']?)([^\\\\]\\\"\\']*)\\\\5)?\\\\])|' + // \"[name]\", \"[name=value]\",\n '(\\\\))|' + // \")\"\n '(\\\\s*,\\\\s*)', // \",\"\n'g');\n/**\n * A css selector contains an element name,\n * css classes and attribute/value pairs with the purpose\n * of selecting subsets out of them.\n */\nexport class CssSelector {\n constructor() {\n this.element = null;\n this.classNames = [];\n this.attrs = [];\n this.notSelectors = [];\n }\n /**\n * @param {?} selector\n * @return {?}\n */\n static parse(selector) {\n const /** @type {?} */ results = [];\n const /** @type {?} */ _addResult = (res, cssSel) => {\n if (cssSel.notSelectors.length > 0 && !cssSel.element && cssSel.classNames.length == 0 &&\n cssSel.attrs.length == 0) {\n cssSel.element = '*';\n }\n res.push(cssSel);\n };\n let /** @type {?} */ cssSelector = new CssSelector();\n let /** @type {?} */ match;\n let /** @type {?} */ current = cssSelector;\n let /** @type {?} */ inNot = false;\n _SELECTOR_REGEXP.lastIndex = 0;\n while (match = _SELECTOR_REGEXP.exec(selector)) {\n if (match[1]) {\n if (inNot) {\n throw new Error('Nesting :not is not allowed in a selector');\n }\n inNot = true;\n current = new CssSelector();\n cssSelector.notSelectors.push(current);\n }\n if (match[2]) {\n current.setElement(match[2]);\n }\n if (match[3]) {\n current.addClassName(match[3]);\n }\n if (match[4]) {\n current.addAttribute(match[4], match[6]);\n }\n if (match[7]) {\n inNot = false;\n current = cssSelector;\n }\n if (match[8]) {\n if (inNot) {\n throw new Error('Multiple selectors in :not are not supported');\n }\n _addResult(results, cssSelector);\n cssSelector = current = new CssSelector();\n }\n }\n _addResult(results, cssSelector);\n return results;\n }\n /**\n * @return {?}\n */\n isElementSelector() {\n return this.hasElementSelector() && this.classNames.length == 0 && this.attrs.length == 0 &&\n this.notSelectors.length === 0;\n }\n /**\n * @return {?}\n */\n hasElementSelector() { return !!this.element; }\n /**\n * @param {?=} element\n * @return {?}\n */\n setElement(element = null) { this.element = element; }\n /**\n * Gets a template string for an element that matches the selector.\n * @return {?}\n */\n getMatchingElementTemplate() {\n const /** @type {?} */ tagName = this.element || 'div';\n const /** @type {?} */ classAttr = this.classNames.length > 0 ? ` class=\"${this.classNames.join(' ')}\"` : '';\n let /** @type {?} */ attrs = '';\n for (let /** @type {?} */ i = 0; i < this.attrs.length; i += 2) {\n const /** @type {?} */ attrName = this.attrs[i];\n const /** @type {?} */ attrValue = this.attrs[i + 1] !== '' ? `=\"${this.attrs[i + 1]}\"` : '';\n attrs += ` ${attrName}${attrValue}`;\n }\n return getHtmlTagDefinition(tagName).isVoid ? `<${tagName}${classAttr}${attrs}/>` :\n `<${tagName}${classAttr}${attrs}></${tagName}>`;\n }\n /**\n * @param {?} name\n * @param {?=} value\n * @return {?}\n */\n addAttribute(name, value = '') {\n this.attrs.push(name, value && value.toLowerCase() || '');\n }\n /**\n * @param {?} name\n * @return {?}\n */\n addClassName(name) { this.classNames.push(name.toLowerCase()); }\n /**\n * @return {?}\n */\n toString() {\n let /** @type {?} */ res = this.element || '';\n if (this.classNames) {\n this.classNames.forEach(klass => res += `.${klass}`);\n }\n if (this.attrs) {\n for (let /** @type {?} */ i = 0; i < this.attrs.length; i += 2) {\n const /** @type {?} */ name = this.attrs[i];\n const /** @type {?} */ value = this.attrs[i + 1];\n res += `[${name}${value ? '=' + value : ''}]`;\n }\n }\n this.notSelectors.forEach(notSelector => res += `:not(${notSelector})`);\n return res;\n }\n}\nfunction CssSelector_tsickle_Closure_declarations() {\n /** @type {?} */\n CssSelector.prototype.element;\n /** @type {?} */\n CssSelector.prototype.classNames;\n /** @type {?} */\n CssSelector.prototype.attrs;\n /** @type {?} */\n CssSelector.prototype.notSelectors;\n}\n/**\n * Reads a list of CssSelectors and allows to calculate which ones\n * are contained in a given CssSelector.\n */\nexport class SelectorMatcher {\n constructor() {\n this._elementMap = new Map();\n this._elementPartialMap = new Map();\n this._classMap = new Map();\n this._classPartialMap = new Map();\n this._attrValueMap = new Map();\n this._attrValuePartialMap = new Map();\n this._listContexts = [];\n }\n /**\n * @param {?} notSelectors\n * @return {?}\n */\n static createNotMatcher(notSelectors) {\n const /** @type {?} */ notMatcher = new SelectorMatcher();\n notMatcher.addSelectables(notSelectors, null);\n return notMatcher;\n }\n /**\n * @param {?} cssSelectors\n * @param {?=} callbackCtxt\n * @return {?}\n */\n addSelectables(cssSelectors, callbackCtxt) {\n let /** @type {?} */ listContext = /** @type {?} */ ((null));\n if (cssSelectors.length > 1) {\n listContext = new SelectorListContext(cssSelectors);\n this._listContexts.push(listContext);\n }\n for (let /** @type {?} */ i = 0; i < cssSelectors.length; i++) {\n this._addSelectable(cssSelectors[i], callbackCtxt, listContext);\n }\n }\n /**\n * Add an object that can be found later on by calling `match`.\n * @param {?} cssSelector A css selector\n * @param {?} callbackCtxt An opaque object that will be given to the callback of the `match` function\n * @param {?} listContext\n * @return {?}\n */\n _addSelectable(cssSelector, callbackCtxt, listContext) {\n let /** @type {?} */ matcher = this;\n const /** @type {?} */ element = cssSelector.element;\n const /** @type {?} */ classNames = cssSelector.classNames;\n const /** @type {?} */ attrs = cssSelector.attrs;\n const /** @type {?} */ selectable = new SelectorContext(cssSelector, callbackCtxt, listContext);\n if (element) {\n const /** @type {?} */ isTerminal = attrs.length === 0 && classNames.length === 0;\n if (isTerminal) {\n this._addTerminal(matcher._elementMap, element, selectable);\n }\n else {\n matcher = this._addPartial(matcher._elementPartialMap, element);\n }\n }\n if (classNames) {\n for (let /** @type {?} */ i = 0; i < classNames.length; i++) {\n const /** @type {?} */ isTerminal = attrs.length === 0 && i === classNames.length - 1;\n const /** @type {?} */ className = classNames[i];\n if (isTerminal) {\n this._addTerminal(matcher._classMap, className, selectable);\n }\n else {\n matcher = this._addPartial(matcher._classPartialMap, className);\n }\n }\n }\n if (attrs) {\n for (let /** @type {?} */ i = 0; i < attrs.length; i += 2) {\n const /** @type {?} */ isTerminal = i === attrs.length - 2;\n const /** @type {?} */ name = attrs[i];\n const /** @type {?} */ value = attrs[i + 1];\n if (isTerminal) {\n const /** @type {?} */ terminalMap = matcher._attrValueMap;\n let /** @type {?} */ terminalValuesMap = terminalMap.get(name);\n if (!terminalValuesMap) {\n terminalValuesMap = new Map();\n terminalMap.set(name, terminalValuesMap);\n }\n this._addTerminal(terminalValuesMap, value, selectable);\n }\n else {\n const /** @type {?} */ partialMap = matcher._attrValuePartialMap;\n let /** @type {?} */ partialValuesMap = partialMap.get(name);\n if (!partialValuesMap) {\n partialValuesMap = new Map();\n partialMap.set(name, partialValuesMap);\n }\n matcher = this._addPartial(partialValuesMap, value);\n }\n }\n }\n }\n /**\n * @param {?} map\n * @param {?} name\n * @param {?} selectable\n * @return {?}\n */\n _addTerminal(map, name, selectable) {\n let /** @type {?} */ terminalList = map.get(name);\n if (!terminalList) {\n terminalList = [];\n map.set(name, terminalList);\n }\n terminalList.push(selectable);\n }\n /**\n * @param {?} map\n * @param {?} name\n * @return {?}\n */\n _addPartial(map, name) {\n let /** @type {?} */ matcher = map.get(name);\n if (!matcher) {\n matcher = new SelectorMatcher();\n map.set(name, matcher);\n }\n return matcher;\n }\n /**\n * Find the objects that have been added via `addSelectable`\n * whose css selector is contained in the given css selector.\n * @param {?} cssSelector A css selector\n * @param {?} matchedCallback This callback will be called with the object handed into `addSelectable`\n * @return {?} boolean true if a match was found\n */\n match(cssSelector, matchedCallback) {\n let /** @type {?} */ result = false;\n const /** @type {?} */ element = /** @type {?} */ ((cssSelector.element));\n const /** @type {?} */ classNames = cssSelector.classNames;\n const /** @type {?} */ attrs = cssSelector.attrs;\n for (let /** @type {?} */ i = 0; i < this._listContexts.length; i++) {\n this._listContexts[i].alreadyMatched = false;\n }\n result = this._matchTerminal(this._elementMap, element, cssSelector, matchedCallback) || result;\n result = this._matchPartial(this._elementPartialMap, element, cssSelector, matchedCallback) ||\n result;\n if (classNames) {\n for (let /** @type {?} */ i = 0; i < classNames.length; i++) {\n const /** @type {?} */ className = classNames[i];\n result =\n this._matchTerminal(this._classMap, className, cssSelector, matchedCallback) || result;\n result =\n this._matchPartial(this._classPartialMap, className, cssSelector, matchedCallback) ||\n result;\n }\n }\n if (attrs) {\n for (let /** @type {?} */ i = 0; i < attrs.length; i += 2) {\n const /** @type {?} */ name = attrs[i];\n const /** @type {?} */ value = attrs[i + 1];\n const /** @type {?} */ terminalValuesMap = /** @type {?} */ ((this._attrValueMap.get(name)));\n if (value) {\n result =\n this._matchTerminal(terminalValuesMap, '', cssSelector, matchedCallback) || result;\n }\n result =\n this._matchTerminal(terminalValuesMap, value, cssSelector, matchedCallback) || result;\n const /** @type {?} */ partialValuesMap = /** @type {?} */ ((this._attrValuePartialMap.get(name)));\n if (value) {\n result = this._matchPartial(partialValuesMap, '', cssSelector, matchedCallback) || result;\n }\n result =\n this._matchPartial(partialValuesMap, value, cssSelector, matchedCallback) || result;\n }\n }\n return result;\n }\n /**\n * \\@internal\n * @param {?} map\n * @param {?} name\n * @param {?} cssSelector\n * @param {?} matchedCallback\n * @return {?}\n */\n _matchTerminal(map, name, cssSelector, matchedCallback) {\n if (!map || typeof name !== 'string') {\n return false;\n }\n let /** @type {?} */ selectables = map.get(name) || [];\n const /** @type {?} */ starSelectables = /** @type {?} */ ((map.get('*')));\n if (starSelectables) {\n selectables = selectables.concat(starSelectables);\n }\n if (selectables.length === 0) {\n return false;\n }\n let /** @type {?} */ selectable;\n let /** @type {?} */ result = false;\n for (let /** @type {?} */ i = 0; i < selectables.length; i++) {\n selectable = selectables[i];\n result = selectable.finalize(cssSelector, matchedCallback) || result;\n }\n return result;\n }\n /**\n * \\@internal\n * @param {?} map\n * @param {?} name\n * @param {?} cssSelector\n * @param {?} matchedCallback\n * @return {?}\n */\n _matchPartial(map, name, cssSelector, matchedCallback) {\n if (!map || typeof name !== 'string') {\n return false;\n }\n const /** @type {?} */ nestedSelector = map.get(name);\n if (!nestedSelector) {\n return false;\n }\n // TODO(perf): get rid of recursion and measure again\n // TODO(perf): don't pass the whole selector into the recursion,\n // but only the not processed parts\n return nestedSelector.match(cssSelector, matchedCallback);\n }\n}\nfunction SelectorMatcher_tsickle_Closure_declarations() {\n /** @type {?} */\n SelectorMatcher.prototype._elementMap;\n /** @type {?} */\n SelectorMatcher.prototype._elementPartialMap;\n /** @type {?} */\n SelectorMatcher.prototype._classMap;\n /** @type {?} */\n SelectorMatcher.prototype._classPartialMap;\n /** @type {?} */\n SelectorMatcher.prototype._attrValueMap;\n /** @type {?} */\n SelectorMatcher.prototype._attrValuePartialMap;\n /** @type {?} */\n SelectorMatcher.prototype._listContexts;\n}\nexport class SelectorListContext {\n /**\n * @param {?} selectors\n */\n constructor(selectors) {\n this.selectors = selectors;\n this.alreadyMatched = false;\n }\n}\nfunction SelectorListContext_tsickle_Closure_declarations() {\n /** @type {?} */\n SelectorListContext.prototype.alreadyMatched;\n /** @type {?} */\n SelectorListContext.prototype.selectors;\n}\nexport class SelectorContext {\n /**\n * @param {?} selector\n * @param {?} cbContext\n * @param {?} listContext\n */\n constructor(selector, cbContext, listContext) {\n this.selector = selector;\n this.cbContext = cbContext;\n this.listContext = listContext;\n this.notSelectors = selector.notSelectors;\n }\n /**\n * @param {?} cssSelector\n * @param {?} callback\n * @return {?}\n */\n finalize(cssSelector, callback) {\n let /** @type {?} */ result = true;\n if (this.notSelectors.length > 0 && (!this.listContext || !this.listContext.alreadyMatched)) {\n const /** @type {?} */ notMatcher = SelectorMatcher.createNotMatcher(this.notSelectors);\n result = !notMatcher.match(cssSelector, null);\n }\n if (result && callback && (!this.listContext || !this.listContext.alreadyMatched)) {\n if (this.listContext) {\n this.listContext.alreadyMatched = true;\n }\n callback(this.selector, this.cbContext);\n }\n return result;\n }\n}\nfunction SelectorContext_tsickle_Closure_declarations() {\n /** @type {?} */\n SelectorContext.prototype.notSelectors;\n /** @type {?} */\n SelectorContext.prototype.selector;\n /** @type {?} */\n SelectorContext.prototype.cbContext;\n /** @type {?} */\n SelectorContext.prototype.listContext;\n}\n//# sourceMappingURL=selector.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { StaticSymbol } from './aot/static_symbol';\nimport { ngfactoryFilePath } from './aot/util';\nimport { assertArrayOfStrings, assertInterpolationSymbols } from './assertions';\nimport * as cpl from './compile_metadata';\nimport { ChangeDetectionStrategy, Type, ViewEncapsulation, createAttribute, createComponent, createHost, createInject, createInjectable, createInjectionToken, createOptional, createSelf, createSkipSelf } from './core';\nimport { Identifiers } from './identifiers';\nimport { getAllLifecycleHooks } from './lifecycle_reflector';\nimport { CssSelector } from './selector';\nimport { SyncAsync, ValueTransformer, isPromise, noUndefined, resolveForwardRef, stringify, syntaxError, visitValue } from './util';\nexport const /** @type {?} */ ERROR_COMPONENT_TYPE = 'ngComponentType';\nexport class CompileMetadataResolver {\n /**\n * @param {?} _config\n * @param {?} _htmlParser\n * @param {?} _ngModuleResolver\n * @param {?} _directiveResolver\n * @param {?} _pipeResolver\n * @param {?} _summaryResolver\n * @param {?} _schemaRegistry\n * @param {?} _directiveNormalizer\n * @param {?} _console\n * @param {?} _staticSymbolCache\n * @param {?} _reflector\n * @param {?=} _errorCollector\n */\n constructor(_config, _htmlParser, _ngModuleResolver, _directiveResolver, _pipeResolver, _summaryResolver, _schemaRegistry, _directiveNormalizer, _console, _staticSymbolCache, _reflector, _errorCollector) {\n this._config = _config;\n this._htmlParser = _htmlParser;\n this._ngModuleResolver = _ngModuleResolver;\n this._directiveResolver = _directiveResolver;\n this._pipeResolver = _pipeResolver;\n this._summaryResolver = _summaryResolver;\n this._schemaRegistry = _schemaRegistry;\n this._directiveNormalizer = _directiveNormalizer;\n this._console = _console;\n this._staticSymbolCache = _staticSymbolCache;\n this._reflector = _reflector;\n this._errorCollector = _errorCollector;\n this._nonNormalizedDirectiveCache = new Map();\n this._directiveCache = new Map();\n this._summaryCache = new Map();\n this._pipeCache = new Map();\n this._ngModuleCache = new Map();\n this._ngModuleOfTypes = new Map();\n }\n /**\n * @return {?}\n */\n getReflector() { return this._reflector; }\n /**\n * @param {?} type\n * @return {?}\n */\n clearCacheFor(type) {\n const /** @type {?} */ dirMeta = this._directiveCache.get(type);\n this._directiveCache.delete(type);\n this._nonNormalizedDirectiveCache.delete(type);\n this._summaryCache.delete(type);\n this._pipeCache.delete(type);\n this._ngModuleOfTypes.delete(type);\n // Clear all of the NgModule as they contain transitive information!\n this._ngModuleCache.clear();\n if (dirMeta) {\n this._directiveNormalizer.clearCacheFor(dirMeta);\n }\n }\n /**\n * @return {?}\n */\n clearCache() {\n this._directiveCache.clear();\n this._nonNormalizedDirectiveCache.clear();\n this._summaryCache.clear();\n this._pipeCache.clear();\n this._ngModuleCache.clear();\n this._ngModuleOfTypes.clear();\n this._directiveNormalizer.clearCache();\n }\n /**\n * @param {?} baseType\n * @param {?} name\n * @return {?}\n */\n _createProxyClass(baseType, name) {\n let /** @type {?} */ delegate = null;\n const /** @type {?} */ proxyClass = /** @type {?} */ (function () {\n if (!delegate) {\n throw new Error(`Illegal state: Class ${name} for type ${stringify(baseType)} is not compiled yet!`);\n }\n return delegate.apply(this, arguments);\n });\n proxyClass.setDelegate = (d) => {\n delegate = d;\n (/** @type {?} */ (proxyClass)).prototype = d.prototype;\n };\n // Make stringify work correctly\n (/** @type {?} */ (proxyClass)).overriddenName = name;\n return proxyClass;\n }\n /**\n * @param {?} dirType\n * @param {?} name\n * @return {?}\n */\n getGeneratedClass(dirType, name) {\n if (dirType instanceof StaticSymbol) {\n return this._staticSymbolCache.get(ngfactoryFilePath(dirType.filePath), name);\n }\n else {\n return this._createProxyClass(dirType, name);\n }\n }\n /**\n * @param {?} dirType\n * @return {?}\n */\n getComponentViewClass(dirType) {\n return this.getGeneratedClass(dirType, cpl.viewClassName(dirType, 0));\n }\n /**\n * @param {?} dirType\n * @return {?}\n */\n getHostComponentViewClass(dirType) {\n return this.getGeneratedClass(dirType, cpl.hostViewClassName(dirType));\n }\n /**\n * @param {?} dirType\n * @return {?}\n */\n getHostComponentType(dirType) {\n const /** @type {?} */ name = `${cpl.identifierName({ reference: dirType })}_Host`;\n if (dirType instanceof StaticSymbol) {\n return this._staticSymbolCache.get(dirType.filePath, name);\n }\n else {\n const /** @type {?} */ HostClass = /** @type {?} */ (function HostClass() { });\n HostClass.overriddenName = name;\n return HostClass;\n }\n }\n /**\n * @param {?} dirType\n * @return {?}\n */\n getRendererType(dirType) {\n if (dirType instanceof StaticSymbol) {\n return this._staticSymbolCache.get(ngfactoryFilePath(dirType.filePath), cpl.rendererTypeName(dirType));\n }\n else {\n // returning an object as proxy,\n // that we fill later during runtime compilation.\n return /** @type {?} */ ({});\n }\n }\n /**\n * @param {?} selector\n * @param {?} dirType\n * @param {?} inputs\n * @param {?} outputs\n * @return {?}\n */\n getComponentFactory(selector, dirType, inputs, outputs) {\n if (dirType instanceof StaticSymbol) {\n return this._staticSymbolCache.get(ngfactoryFilePath(dirType.filePath), cpl.componentFactoryName(dirType));\n }\n else {\n const /** @type {?} */ hostView = this.getHostComponentViewClass(dirType);\n // Note: ngContentSelectors will be filled later once the template is\n // loaded.\n const /** @type {?} */ createComponentFactory = this._reflector.resolveExternalReference(Identifiers.createComponentFactory);\n return createComponentFactory(selector, dirType, /** @type {?} */ (hostView), inputs, outputs, []);\n }\n }\n /**\n * @param {?} factory\n * @param {?} ngContentSelectors\n * @return {?}\n */\n initComponentFactory(factory, ngContentSelectors) {\n if (!(factory instanceof StaticSymbol)) {\n (/** @type {?} */ (factory)).ngContentSelectors.push(...ngContentSelectors);\n }\n }\n /**\n * @param {?} type\n * @param {?} kind\n * @return {?}\n */\n _loadSummary(type, kind) {\n let /** @type {?} */ typeSummary = this._summaryCache.get(type);\n if (!typeSummary) {\n const /** @type {?} */ summary = this._summaryResolver.resolveSummary(type);\n typeSummary = summary ? summary.type : null;\n this._summaryCache.set(type, typeSummary || null);\n }\n return typeSummary && typeSummary.summaryKind === kind ? typeSummary : null;\n }\n /**\n * @param {?} compMeta\n * @param {?=} hostViewType\n * @return {?}\n */\n getHostComponentMetadata(compMeta, hostViewType) {\n const /** @type {?} */ hostType = this.getHostComponentType(compMeta.type.reference);\n if (!hostViewType) {\n hostViewType = this.getHostComponentViewClass(hostType);\n }\n // Note: ! is ok here as this method should only be called with normalized directive\n // metadata, which always fills in the selector.\n const /** @type {?} */ template = CssSelector.parse(/** @type {?} */ ((compMeta.selector)))[0].getMatchingElementTemplate();\n const /** @type {?} */ templateUrl = '';\n const /** @type {?} */ htmlAst = this._htmlParser.parse(template, templateUrl);\n return cpl.CompileDirectiveMetadata.create({\n isHost: true,\n type: { reference: hostType, diDeps: [], lifecycleHooks: [] },\n template: new cpl.CompileTemplateMetadata({\n encapsulation: ViewEncapsulation.None,\n template,\n templateUrl,\n htmlAst,\n styles: [],\n styleUrls: [],\n ngContentSelectors: [],\n animations: [],\n isInline: true,\n externalStylesheets: [],\n interpolation: null,\n preserveWhitespaces: false,\n }),\n exportAs: null,\n changeDetection: ChangeDetectionStrategy.Default,\n inputs: [],\n outputs: [],\n host: {},\n isComponent: true,\n selector: '*',\n providers: [],\n viewProviders: [],\n queries: [],\n guards: {},\n viewQueries: [],\n componentViewType: hostViewType,\n rendererType: /** @type {?} */ ({ id: '__Host__', encapsulation: ViewEncapsulation.None, styles: [], data: {} }),\n entryComponents: [],\n componentFactory: null\n });\n }\n /**\n * @param {?} ngModuleType\n * @param {?} directiveType\n * @param {?} isSync\n * @return {?}\n */\n loadDirectiveMetadata(ngModuleType, directiveType, isSync) {\n if (this._directiveCache.has(directiveType)) {\n return null;\n }\n directiveType = resolveForwardRef(directiveType);\n const { annotation, metadata } = /** @type {?} */ ((this.getNonNormalizedDirectiveMetadata(directiveType)));\n const /** @type {?} */ createDirectiveMetadata = (templateMetadata) => {\n const /** @type {?} */ normalizedDirMeta = new cpl.CompileDirectiveMetadata({\n isHost: false,\n type: metadata.type,\n isComponent: metadata.isComponent,\n selector: metadata.selector,\n exportAs: metadata.exportAs,\n changeDetection: metadata.changeDetection,\n inputs: metadata.inputs,\n outputs: metadata.outputs,\n hostListeners: metadata.hostListeners,\n hostProperties: metadata.hostProperties,\n hostAttributes: metadata.hostAttributes,\n providers: metadata.providers,\n viewProviders: metadata.viewProviders,\n queries: metadata.queries,\n guards: metadata.guards,\n viewQueries: metadata.viewQueries,\n entryComponents: metadata.entryComponents,\n componentViewType: metadata.componentViewType,\n rendererType: metadata.rendererType,\n componentFactory: metadata.componentFactory,\n template: templateMetadata\n });\n if (templateMetadata) {\n this.initComponentFactory(/** @type {?} */ ((metadata.componentFactory)), templateMetadata.ngContentSelectors);\n }\n this._directiveCache.set(directiveType, normalizedDirMeta);\n this._summaryCache.set(directiveType, normalizedDirMeta.toSummary());\n return null;\n };\n if (metadata.isComponent) {\n const /** @type {?} */ template = /** @type {?} */ ((metadata.template));\n const /** @type {?} */ templateMeta = this._directiveNormalizer.normalizeTemplate({\n ngModuleType,\n componentType: directiveType,\n moduleUrl: this._reflector.componentModuleUrl(directiveType, annotation),\n encapsulation: template.encapsulation,\n template: template.template,\n templateUrl: template.templateUrl,\n styles: template.styles,\n styleUrls: template.styleUrls,\n animations: template.animations,\n interpolation: template.interpolation,\n preserveWhitespaces: template.preserveWhitespaces\n });\n if (isPromise(templateMeta) && isSync) {\n this._reportError(componentStillLoadingError(directiveType), directiveType);\n return null;\n }\n return SyncAsync.then(templateMeta, createDirectiveMetadata);\n }\n else {\n // directive\n createDirectiveMetadata(null);\n return null;\n }\n }\n /**\n * @param {?} directiveType\n * @return {?}\n */\n getNonNormalizedDirectiveMetadata(directiveType) {\n directiveType = resolveForwardRef(directiveType);\n if (!directiveType) {\n return null;\n }\n let /** @type {?} */ cacheEntry = this._nonNormalizedDirectiveCache.get(directiveType);\n if (cacheEntry) {\n return cacheEntry;\n }\n const /** @type {?} */ dirMeta = this._directiveResolver.resolve(directiveType, false);\n if (!dirMeta) {\n return null;\n }\n let /** @type {?} */ nonNormalizedTemplateMetadata = /** @type {?} */ ((undefined));\n if (createComponent.isTypeOf(dirMeta)) {\n // component\n const /** @type {?} */ compMeta = /** @type {?} */ (dirMeta);\n assertArrayOfStrings('styles', compMeta.styles);\n assertArrayOfStrings('styleUrls', compMeta.styleUrls);\n assertInterpolationSymbols('interpolation', compMeta.interpolation);\n const /** @type {?} */ animations = compMeta.animations;\n nonNormalizedTemplateMetadata = new cpl.CompileTemplateMetadata({\n encapsulation: noUndefined(compMeta.encapsulation),\n template: noUndefined(compMeta.template),\n templateUrl: noUndefined(compMeta.templateUrl),\n htmlAst: null,\n styles: compMeta.styles || [],\n styleUrls: compMeta.styleUrls || [],\n animations: animations || [],\n interpolation: noUndefined(compMeta.interpolation),\n isInline: !!compMeta.template,\n externalStylesheets: [],\n ngContentSelectors: [],\n preserveWhitespaces: noUndefined(dirMeta.preserveWhitespaces),\n });\n }\n let /** @type {?} */ changeDetectionStrategy = /** @type {?} */ ((null));\n let /** @type {?} */ viewProviders = [];\n let /** @type {?} */ entryComponentMetadata = [];\n let /** @type {?} */ selector = dirMeta.selector;\n if (createComponent.isTypeOf(dirMeta)) {\n // Component\n const /** @type {?} */ compMeta = /** @type {?} */ (dirMeta);\n changeDetectionStrategy = /** @type {?} */ ((compMeta.changeDetection));\n if (compMeta.viewProviders) {\n viewProviders = this._getProvidersMetadata(compMeta.viewProviders, entryComponentMetadata, `viewProviders for \"${stringifyType(directiveType)}\"`, [], directiveType);\n }\n if (compMeta.entryComponents) {\n entryComponentMetadata = flattenAndDedupeArray(compMeta.entryComponents)\n .map((type) => /** @type {?} */ ((this._getEntryComponentMetadata(type))))\n .concat(entryComponentMetadata);\n }\n if (!selector) {\n selector = this._schemaRegistry.getDefaultComponentElementName();\n }\n }\n else {\n // Directive\n if (!selector) {\n this._reportError(syntaxError(`Directive ${stringifyType(directiveType)} has no selector, please add it!`), directiveType);\n selector = 'error';\n }\n }\n let /** @type {?} */ providers = [];\n if (dirMeta.providers != null) {\n providers = this._getProvidersMetadata(dirMeta.providers, entryComponentMetadata, `providers for \"${stringifyType(directiveType)}\"`, [], directiveType);\n }\n let /** @type {?} */ queries = [];\n let /** @type {?} */ viewQueries = [];\n if (dirMeta.queries != null) {\n queries = this._getQueriesMetadata(dirMeta.queries, false, directiveType);\n viewQueries = this._getQueriesMetadata(dirMeta.queries, true, directiveType);\n }\n const /** @type {?} */ metadata = cpl.CompileDirectiveMetadata.create({\n isHost: false,\n selector: selector,\n exportAs: noUndefined(dirMeta.exportAs),\n isComponent: !!nonNormalizedTemplateMetadata,\n type: this._getTypeMetadata(directiveType),\n template: nonNormalizedTemplateMetadata,\n changeDetection: changeDetectionStrategy,\n inputs: dirMeta.inputs || [],\n outputs: dirMeta.outputs || [],\n host: dirMeta.host || {},\n providers: providers || [],\n viewProviders: viewProviders || [],\n queries: queries || [],\n guards: dirMeta.guards || {},\n viewQueries: viewQueries || [],\n entryComponents: entryComponentMetadata,\n componentViewType: nonNormalizedTemplateMetadata ? this.getComponentViewClass(directiveType) :\n null,\n rendererType: nonNormalizedTemplateMetadata ? this.getRendererType(directiveType) : null,\n componentFactory: null\n });\n if (nonNormalizedTemplateMetadata) {\n metadata.componentFactory =\n this.getComponentFactory(selector, directiveType, metadata.inputs, metadata.outputs);\n }\n cacheEntry = { metadata, annotation: dirMeta };\n this._nonNormalizedDirectiveCache.set(directiveType, cacheEntry);\n return cacheEntry;\n }\n /**\n * Gets the metadata for the given directive.\n * This assumes `loadNgModuleDirectiveAndPipeMetadata` has been called first.\n * @param {?} directiveType\n * @return {?}\n */\n getDirectiveMetadata(directiveType) {\n const /** @type {?} */ dirMeta = /** @type {?} */ ((this._directiveCache.get(directiveType)));\n if (!dirMeta) {\n this._reportError(syntaxError(`Illegal state: getDirectiveMetadata can only be called after loadNgModuleDirectiveAndPipeMetadata for a module that declares it. Directive ${stringifyType(directiveType)}.`), directiveType);\n }\n return dirMeta;\n }\n /**\n * @param {?} dirType\n * @return {?}\n */\n getDirectiveSummary(dirType) {\n const /** @type {?} */ dirSummary = /** @type {?} */ (this._loadSummary(dirType, cpl.CompileSummaryKind.Directive));\n if (!dirSummary) {\n this._reportError(syntaxError(`Illegal state: Could not load the summary for directive ${stringifyType(dirType)}.`), dirType);\n }\n return dirSummary;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n isDirective(type) {\n return !!this._loadSummary(type, cpl.CompileSummaryKind.Directive) ||\n this._directiveResolver.isDirective(type);\n }\n /**\n * @param {?} type\n * @return {?}\n */\n isPipe(type) {\n return !!this._loadSummary(type, cpl.CompileSummaryKind.Pipe) ||\n this._pipeResolver.isPipe(type);\n }\n /**\n * @param {?} type\n * @return {?}\n */\n isNgModule(type) {\n return !!this._loadSummary(type, cpl.CompileSummaryKind.NgModule) ||\n this._ngModuleResolver.isNgModule(type);\n }\n /**\n * @param {?} moduleType\n * @param {?=} alreadyCollecting\n * @return {?}\n */\n getNgModuleSummary(moduleType, alreadyCollecting = null) {\n let /** @type {?} */ moduleSummary = /** @type {?} */ (this._loadSummary(moduleType, cpl.CompileSummaryKind.NgModule));\n if (!moduleSummary) {\n const /** @type {?} */ moduleMeta = this.getNgModuleMetadata(moduleType, false, alreadyCollecting);\n moduleSummary = moduleMeta ? moduleMeta.toSummary() : null;\n if (moduleSummary) {\n this._summaryCache.set(moduleType, moduleSummary);\n }\n }\n return moduleSummary;\n }\n /**\n * Loads the declared directives and pipes of an NgModule.\n * @param {?} moduleType\n * @param {?} isSync\n * @param {?=} throwIfNotFound\n * @return {?}\n */\n loadNgModuleDirectiveAndPipeMetadata(moduleType, isSync, throwIfNotFound = true) {\n const /** @type {?} */ ngModule = this.getNgModuleMetadata(moduleType, throwIfNotFound);\n const /** @type {?} */ loading = [];\n if (ngModule) {\n ngModule.declaredDirectives.forEach((id) => {\n const /** @type {?} */ promise = this.loadDirectiveMetadata(moduleType, id.reference, isSync);\n if (promise) {\n loading.push(promise);\n }\n });\n ngModule.declaredPipes.forEach((id) => this._loadPipeMetadata(id.reference));\n }\n return Promise.all(loading);\n }\n /**\n * @param {?} moduleType\n * @param {?=} throwIfNotFound\n * @param {?=} alreadyCollecting\n * @return {?}\n */\n getNgModuleMetadata(moduleType, throwIfNotFound = true, alreadyCollecting = null) {\n moduleType = resolveForwardRef(moduleType);\n let /** @type {?} */ compileMeta = this._ngModuleCache.get(moduleType);\n if (compileMeta) {\n return compileMeta;\n }\n const /** @type {?} */ meta = this._ngModuleResolver.resolve(moduleType, throwIfNotFound);\n if (!meta) {\n return null;\n }\n const /** @type {?} */ declaredDirectives = [];\n const /** @type {?} */ exportedNonModuleIdentifiers = [];\n const /** @type {?} */ declaredPipes = [];\n const /** @type {?} */ importedModules = [];\n const /** @type {?} */ exportedModules = [];\n const /** @type {?} */ providers = [];\n const /** @type {?} */ entryComponents = [];\n const /** @type {?} */ bootstrapComponents = [];\n const /** @type {?} */ schemas = [];\n if (meta.imports) {\n flattenAndDedupeArray(meta.imports).forEach((importedType) => {\n let /** @type {?} */ importedModuleType = /** @type {?} */ ((undefined));\n if (isValidType(importedType)) {\n importedModuleType = importedType;\n }\n else if (importedType && importedType.ngModule) {\n const /** @type {?} */ moduleWithProviders = importedType;\n importedModuleType = moduleWithProviders.ngModule;\n if (moduleWithProviders.providers) {\n providers.push(...this._getProvidersMetadata(moduleWithProviders.providers, entryComponents, `provider for the NgModule '${stringifyType(importedModuleType)}'`, [], importedType));\n }\n }\n if (importedModuleType) {\n if (this._checkSelfImport(moduleType, importedModuleType))\n return;\n if (!alreadyCollecting)\n alreadyCollecting = new Set();\n if (alreadyCollecting.has(importedModuleType)) {\n this._reportError(syntaxError(`${this._getTypeDescriptor(importedModuleType)} '${stringifyType(importedType)}' is imported recursively by the module '${stringifyType(moduleType)}'.`), moduleType);\n return;\n }\n alreadyCollecting.add(importedModuleType);\n const /** @type {?} */ importedModuleSummary = this.getNgModuleSummary(importedModuleType, alreadyCollecting);\n alreadyCollecting.delete(importedModuleType);\n if (!importedModuleSummary) {\n this._reportError(syntaxError(`Unexpected ${this._getTypeDescriptor(importedType)} '${stringifyType(importedType)}' imported by the module '${stringifyType(moduleType)}'. Please add a @NgModule annotation.`), moduleType);\n return;\n }\n importedModules.push(importedModuleSummary);\n }\n else {\n this._reportError(syntaxError(`Unexpected value '${stringifyType(importedType)}' imported by the module '${stringifyType(moduleType)}'`), moduleType);\n return;\n }\n });\n }\n if (meta.exports) {\n flattenAndDedupeArray(meta.exports).forEach((exportedType) => {\n if (!isValidType(exportedType)) {\n this._reportError(syntaxError(`Unexpected value '${stringifyType(exportedType)}' exported by the module '${stringifyType(moduleType)}'`), moduleType);\n return;\n }\n if (!alreadyCollecting)\n alreadyCollecting = new Set();\n if (alreadyCollecting.has(exportedType)) {\n this._reportError(syntaxError(`${this._getTypeDescriptor(exportedType)} '${stringify(exportedType)}' is exported recursively by the module '${stringifyType(moduleType)}'`), moduleType);\n return;\n }\n alreadyCollecting.add(exportedType);\n const /** @type {?} */ exportedModuleSummary = this.getNgModuleSummary(exportedType, alreadyCollecting);\n alreadyCollecting.delete(exportedType);\n if (exportedModuleSummary) {\n exportedModules.push(exportedModuleSummary);\n }\n else {\n exportedNonModuleIdentifiers.push(this._getIdentifierMetadata(exportedType));\n }\n });\n }\n // Note: This will be modified later, so we rely on\n // getting a new instance every time!\n const /** @type {?} */ transitiveModule = this._getTransitiveNgModuleMetadata(importedModules, exportedModules);\n if (meta.declarations) {\n flattenAndDedupeArray(meta.declarations).forEach((declaredType) => {\n if (!isValidType(declaredType)) {\n this._reportError(syntaxError(`Unexpected value '${stringifyType(declaredType)}' declared by the module '${stringifyType(moduleType)}'`), moduleType);\n return;\n }\n const /** @type {?} */ declaredIdentifier = this._getIdentifierMetadata(declaredType);\n if (this.isDirective(declaredType)) {\n transitiveModule.addDirective(declaredIdentifier);\n declaredDirectives.push(declaredIdentifier);\n this._addTypeToModule(declaredType, moduleType);\n }\n else if (this.isPipe(declaredType)) {\n transitiveModule.addPipe(declaredIdentifier);\n transitiveModule.pipes.push(declaredIdentifier);\n declaredPipes.push(declaredIdentifier);\n this._addTypeToModule(declaredType, moduleType);\n }\n else {\n this._reportError(syntaxError(`Unexpected ${this._getTypeDescriptor(declaredType)} '${stringifyType(declaredType)}' declared by the module '${stringifyType(moduleType)}'. Please add a @Pipe/@Directive/@Component annotation.`), moduleType);\n return;\n }\n });\n }\n const /** @type {?} */ exportedDirectives = [];\n const /** @type {?} */ exportedPipes = [];\n exportedNonModuleIdentifiers.forEach((exportedId) => {\n if (transitiveModule.directivesSet.has(exportedId.reference)) {\n exportedDirectives.push(exportedId);\n transitiveModule.addExportedDirective(exportedId);\n }\n else if (transitiveModule.pipesSet.has(exportedId.reference)) {\n exportedPipes.push(exportedId);\n transitiveModule.addExportedPipe(exportedId);\n }\n else {\n this._reportError(syntaxError(`Can't export ${this._getTypeDescriptor(exportedId.reference)} ${stringifyType(exportedId.reference)} from ${stringifyType(moduleType)} as it was neither declared nor imported!`), moduleType);\n return;\n }\n });\n // The providers of the module have to go last\n // so that they overwrite any other provider we already added.\n if (meta.providers) {\n providers.push(...this._getProvidersMetadata(meta.providers, entryComponents, `provider for the NgModule '${stringifyType(moduleType)}'`, [], moduleType));\n }\n if (meta.entryComponents) {\n entryComponents.push(...flattenAndDedupeArray(meta.entryComponents)\n .map(type => /** @type {?} */ ((this._getEntryComponentMetadata(type)))));\n }\n if (meta.bootstrap) {\n flattenAndDedupeArray(meta.bootstrap).forEach(type => {\n if (!isValidType(type)) {\n this._reportError(syntaxError(`Unexpected value '${stringifyType(type)}' used in the bootstrap property of module '${stringifyType(moduleType)}'`), moduleType);\n return;\n }\n bootstrapComponents.push(this._getIdentifierMetadata(type));\n });\n }\n entryComponents.push(...bootstrapComponents.map(type => /** @type {?} */ ((this._getEntryComponentMetadata(type.reference)))));\n if (meta.schemas) {\n schemas.push(...flattenAndDedupeArray(meta.schemas));\n }\n compileMeta = new cpl.CompileNgModuleMetadata({\n type: this._getTypeMetadata(moduleType),\n providers,\n entryComponents,\n bootstrapComponents,\n schemas,\n declaredDirectives,\n exportedDirectives,\n declaredPipes,\n exportedPipes,\n importedModules,\n exportedModules,\n transitiveModule,\n id: meta.id || null,\n });\n entryComponents.forEach((id) => transitiveModule.addEntryComponent(id));\n providers.forEach((provider) => transitiveModule.addProvider(provider, /** @type {?} */ ((compileMeta)).type));\n transitiveModule.addModule(compileMeta.type);\n this._ngModuleCache.set(moduleType, compileMeta);\n return compileMeta;\n }\n /**\n * @param {?} moduleType\n * @param {?} importedModuleType\n * @return {?}\n */\n _checkSelfImport(moduleType, importedModuleType) {\n if (moduleType === importedModuleType) {\n this._reportError(syntaxError(`'${stringifyType(moduleType)}' module can't import itself`), moduleType);\n return true;\n }\n return false;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n _getTypeDescriptor(type) {\n if (isValidType(type)) {\n if (this.isDirective(type)) {\n return 'directive';\n }\n if (this.isPipe(type)) {\n return 'pipe';\n }\n if (this.isNgModule(type)) {\n return 'module';\n }\n }\n if ((/** @type {?} */ (type)).provide) {\n return 'provider';\n }\n return 'value';\n }\n /**\n * @param {?} type\n * @param {?} moduleType\n * @return {?}\n */\n _addTypeToModule(type, moduleType) {\n const /** @type {?} */ oldModule = this._ngModuleOfTypes.get(type);\n if (oldModule && oldModule !== moduleType) {\n this._reportError(syntaxError(`Type ${stringifyType(type)} is part of the declarations of 2 modules: ${stringifyType(oldModule)} and ${stringifyType(moduleType)}! ` +\n `Please consider moving ${stringifyType(type)} to a higher module that imports ${stringifyType(oldModule)} and ${stringifyType(moduleType)}. ` +\n `You can also create a new NgModule that exports and includes ${stringifyType(type)} then import that NgModule in ${stringifyType(oldModule)} and ${stringifyType(moduleType)}.`), moduleType);\n return;\n }\n this._ngModuleOfTypes.set(type, moduleType);\n }\n /**\n * @param {?} importedModules\n * @param {?} exportedModules\n * @return {?}\n */\n _getTransitiveNgModuleMetadata(importedModules, exportedModules) {\n // collect `providers` / `entryComponents` from all imported and all exported modules\n const /** @type {?} */ result = new cpl.TransitiveCompileNgModuleMetadata();\n const /** @type {?} */ modulesByToken = new Map();\n importedModules.concat(exportedModules).forEach((modSummary) => {\n modSummary.modules.forEach((mod) => result.addModule(mod));\n modSummary.entryComponents.forEach((comp) => result.addEntryComponent(comp));\n const /** @type {?} */ addedTokens = new Set();\n modSummary.providers.forEach((entry) => {\n const /** @type {?} */ tokenRef = cpl.tokenReference(entry.provider.token);\n let /** @type {?} */ prevModules = modulesByToken.get(tokenRef);\n if (!prevModules) {\n prevModules = new Set();\n modulesByToken.set(tokenRef, prevModules);\n }\n const /** @type {?} */ moduleRef = entry.module.reference;\n // Note: the providers of one module may still contain multiple providers\n // per token (e.g. for multi providers), and we need to preserve these.\n if (addedTokens.has(tokenRef) || !prevModules.has(moduleRef)) {\n prevModules.add(moduleRef);\n addedTokens.add(tokenRef);\n result.addProvider(entry.provider, entry.module);\n }\n });\n });\n exportedModules.forEach((modSummary) => {\n modSummary.exportedDirectives.forEach((id) => result.addExportedDirective(id));\n modSummary.exportedPipes.forEach((id) => result.addExportedPipe(id));\n });\n importedModules.forEach((modSummary) => {\n modSummary.exportedDirectives.forEach((id) => result.addDirective(id));\n modSummary.exportedPipes.forEach((id) => result.addPipe(id));\n });\n return result;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n _getIdentifierMetadata(type) {\n type = resolveForwardRef(type);\n return { reference: type };\n }\n /**\n * @param {?} type\n * @return {?}\n */\n isInjectable(type) {\n const /** @type {?} */ annotations = this._reflector.annotations(type);\n return annotations.some(ann => createInjectable.isTypeOf(ann));\n }\n /**\n * @param {?} type\n * @return {?}\n */\n getInjectableSummary(type) {\n return {\n summaryKind: cpl.CompileSummaryKind.Injectable,\n type: this._getTypeMetadata(type, null, false)\n };\n }\n /**\n * @param {?} type\n * @param {?=} dependencies\n * @return {?}\n */\n _getInjectableMetadata(type, dependencies = null) {\n const /** @type {?} */ typeSummary = this._loadSummary(type, cpl.CompileSummaryKind.Injectable);\n if (typeSummary) {\n return typeSummary.type;\n }\n return this._getTypeMetadata(type, dependencies);\n }\n /**\n * @param {?} type\n * @param {?=} dependencies\n * @param {?=} throwOnUnknownDeps\n * @return {?}\n */\n _getTypeMetadata(type, dependencies = null, throwOnUnknownDeps = true) {\n const /** @type {?} */ identifier = this._getIdentifierMetadata(type);\n return {\n reference: identifier.reference,\n diDeps: this._getDependenciesMetadata(identifier.reference, dependencies, throwOnUnknownDeps),\n lifecycleHooks: getAllLifecycleHooks(this._reflector, identifier.reference),\n };\n }\n /**\n * @param {?} factory\n * @param {?=} dependencies\n * @return {?}\n */\n _getFactoryMetadata(factory, dependencies = null) {\n factory = resolveForwardRef(factory);\n return { reference: factory, diDeps: this._getDependenciesMetadata(factory, dependencies) };\n }\n /**\n * Gets the metadata for the given pipe.\n * This assumes `loadNgModuleDirectiveAndPipeMetadata` has been called first.\n * @param {?} pipeType\n * @return {?}\n */\n getPipeMetadata(pipeType) {\n const /** @type {?} */ pipeMeta = this._pipeCache.get(pipeType);\n if (!pipeMeta) {\n this._reportError(syntaxError(`Illegal state: getPipeMetadata can only be called after loadNgModuleDirectiveAndPipeMetadata for a module that declares it. Pipe ${stringifyType(pipeType)}.`), pipeType);\n }\n return pipeMeta || null;\n }\n /**\n * @param {?} pipeType\n * @return {?}\n */\n getPipeSummary(pipeType) {\n const /** @type {?} */ pipeSummary = /** @type {?} */ (this._loadSummary(pipeType, cpl.CompileSummaryKind.Pipe));\n if (!pipeSummary) {\n this._reportError(syntaxError(`Illegal state: Could not load the summary for pipe ${stringifyType(pipeType)}.`), pipeType);\n }\n return pipeSummary;\n }\n /**\n * @param {?} pipeType\n * @return {?}\n */\n getOrLoadPipeMetadata(pipeType) {\n let /** @type {?} */ pipeMeta = this._pipeCache.get(pipeType);\n if (!pipeMeta) {\n pipeMeta = this._loadPipeMetadata(pipeType);\n }\n return pipeMeta;\n }\n /**\n * @param {?} pipeType\n * @return {?}\n */\n _loadPipeMetadata(pipeType) {\n pipeType = resolveForwardRef(pipeType);\n const /** @type {?} */ pipeAnnotation = /** @type {?} */ ((this._pipeResolver.resolve(pipeType)));\n const /** @type {?} */ pipeMeta = new cpl.CompilePipeMetadata({\n type: this._getTypeMetadata(pipeType),\n name: pipeAnnotation.name,\n pure: !!pipeAnnotation.pure\n });\n this._pipeCache.set(pipeType, pipeMeta);\n this._summaryCache.set(pipeType, pipeMeta.toSummary());\n return pipeMeta;\n }\n /**\n * @param {?} typeOrFunc\n * @param {?} dependencies\n * @param {?=} throwOnUnknownDeps\n * @return {?}\n */\n _getDependenciesMetadata(typeOrFunc, dependencies, throwOnUnknownDeps = true) {\n let /** @type {?} */ hasUnknownDeps = false;\n const /** @type {?} */ params = dependencies || this._reflector.parameters(typeOrFunc) || [];\n const /** @type {?} */ dependenciesMetadata = params.map((param) => {\n let /** @type {?} */ isAttribute = false;\n let /** @type {?} */ isHost = false;\n let /** @type {?} */ isSelf = false;\n let /** @type {?} */ isSkipSelf = false;\n let /** @type {?} */ isOptional = false;\n let /** @type {?} */ token = null;\n if (Array.isArray(param)) {\n param.forEach((paramEntry) => {\n if (createHost.isTypeOf(paramEntry)) {\n isHost = true;\n }\n else if (createSelf.isTypeOf(paramEntry)) {\n isSelf = true;\n }\n else if (createSkipSelf.isTypeOf(paramEntry)) {\n isSkipSelf = true;\n }\n else if (createOptional.isTypeOf(paramEntry)) {\n isOptional = true;\n }\n else if (createAttribute.isTypeOf(paramEntry)) {\n isAttribute = true;\n token = paramEntry.attributeName;\n }\n else if (createInject.isTypeOf(paramEntry)) {\n token = paramEntry.token;\n }\n else if (createInjectionToken.isTypeOf(paramEntry) || paramEntry instanceof StaticSymbol) {\n token = paramEntry;\n }\n else if (isValidType(paramEntry) && token == null) {\n token = paramEntry;\n }\n });\n }\n else {\n token = param;\n }\n if (token == null) {\n hasUnknownDeps = true;\n return /** @type {?} */ ((null));\n }\n return {\n isAttribute,\n isHost,\n isSelf,\n isSkipSelf,\n isOptional,\n token: this._getTokenMetadata(token)\n };\n });\n if (hasUnknownDeps) {\n const /** @type {?} */ depsTokens = dependenciesMetadata.map((dep) => dep ? stringifyType(dep.token) : '?').join(', ');\n const /** @type {?} */ message = `Can't resolve all parameters for ${stringifyType(typeOrFunc)}: (${depsTokens}).`;\n if (throwOnUnknownDeps || this._config.strictInjectionParameters) {\n this._reportError(syntaxError(message), typeOrFunc);\n }\n else {\n this._console.warn(`Warning: ${message} This will become an error in Angular v6.x`);\n }\n }\n return dependenciesMetadata;\n }\n /**\n * @param {?} token\n * @return {?}\n */\n _getTokenMetadata(token) {\n token = resolveForwardRef(token);\n let /** @type {?} */ compileToken;\n if (typeof token === 'string') {\n compileToken = { value: token };\n }\n else {\n compileToken = { identifier: { reference: token } };\n }\n return compileToken;\n }\n /**\n * @param {?} providers\n * @param {?} targetEntryComponents\n * @param {?=} debugInfo\n * @param {?=} compileProviders\n * @param {?=} type\n * @return {?}\n */\n _getProvidersMetadata(providers, targetEntryComponents, debugInfo, compileProviders = [], type) {\n providers.forEach((provider, providerIdx) => {\n if (Array.isArray(provider)) {\n this._getProvidersMetadata(provider, targetEntryComponents, debugInfo, compileProviders);\n }\n else {\n provider = resolveForwardRef(provider);\n let /** @type {?} */ providerMeta = /** @type {?} */ ((undefined));\n if (provider && typeof provider === 'object' && provider.hasOwnProperty('provide')) {\n this._validateProvider(provider);\n providerMeta = new cpl.ProviderMeta(provider.provide, provider);\n }\n else if (isValidType(provider)) {\n providerMeta = new cpl.ProviderMeta(provider, { useClass: provider });\n }\n else if (provider === void 0) {\n this._reportError(syntaxError(`Encountered undefined provider! Usually this means you have a circular dependencies (might be caused by using 'barrel' index.ts files.`));\n return;\n }\n else {\n const /** @type {?} */ providersInfo = (/** @type {?} */ (providers.reduce((soFar, seenProvider, seenProviderIdx) => {\n if (seenProviderIdx < providerIdx) {\n soFar.push(`${stringifyType(seenProvider)}`);\n }\n else if (seenProviderIdx == providerIdx) {\n soFar.push(`?${stringifyType(seenProvider)}?`);\n }\n else if (seenProviderIdx == providerIdx + 1) {\n soFar.push('...');\n }\n return soFar;\n }, [])))\n .join(', ');\n this._reportError(syntaxError(`Invalid ${debugInfo ? debugInfo : 'provider'} - only instances of Provider and Type are allowed, got: [${providersInfo}]`), type);\n return;\n }\n if (providerMeta.token ===\n this._reflector.resolveExternalReference(Identifiers.ANALYZE_FOR_ENTRY_COMPONENTS)) {\n targetEntryComponents.push(...this._getEntryComponentsFromProvider(providerMeta, type));\n }\n else {\n compileProviders.push(this.getProviderMetadata(providerMeta));\n }\n }\n });\n return compileProviders;\n }\n /**\n * @param {?} provider\n * @return {?}\n */\n _validateProvider(provider) {\n if (provider.hasOwnProperty('useClass') && provider.useClass == null) {\n this._reportError(syntaxError(`Invalid provider for ${stringifyType(provider.provide)}. useClass cannot be ${provider.useClass}.\n Usually it happens when:\n 1. There's a circular dependency (might be caused by using index.ts (barrel) files).\n 2. Class was used before it was declared. Use forwardRef in this case.`));\n }\n }\n /**\n * @param {?} provider\n * @param {?=} type\n * @return {?}\n */\n _getEntryComponentsFromProvider(provider, type) {\n const /** @type {?} */ components = [];\n const /** @type {?} */ collectedIdentifiers = [];\n if (provider.useFactory || provider.useExisting || provider.useClass) {\n this._reportError(syntaxError(`The ANALYZE_FOR_ENTRY_COMPONENTS token only supports useValue!`), type);\n return [];\n }\n if (!provider.multi) {\n this._reportError(syntaxError(`The ANALYZE_FOR_ENTRY_COMPONENTS token only supports 'multi = true'!`), type);\n return [];\n }\n extractIdentifiers(provider.useValue, collectedIdentifiers);\n collectedIdentifiers.forEach((identifier) => {\n const /** @type {?} */ entry = this._getEntryComponentMetadata(identifier.reference, false);\n if (entry) {\n components.push(entry);\n }\n });\n return components;\n }\n /**\n * @param {?} dirType\n * @param {?=} throwIfNotFound\n * @return {?}\n */\n _getEntryComponentMetadata(dirType, throwIfNotFound = true) {\n const /** @type {?} */ dirMeta = this.getNonNormalizedDirectiveMetadata(dirType);\n if (dirMeta && dirMeta.metadata.isComponent) {\n return { componentType: dirType, componentFactory: /** @type {?} */ ((dirMeta.metadata.componentFactory)) };\n }\n const /** @type {?} */ dirSummary = /** @type {?} */ (this._loadSummary(dirType, cpl.CompileSummaryKind.Directive));\n if (dirSummary && dirSummary.isComponent) {\n return { componentType: dirType, componentFactory: /** @type {?} */ ((dirSummary.componentFactory)) };\n }\n if (throwIfNotFound) {\n throw syntaxError(`${dirType.name} cannot be used as an entry component.`);\n }\n return null;\n }\n /**\n * @param {?} provider\n * @return {?}\n */\n getProviderMetadata(provider) {\n let /** @type {?} */ compileDeps = /** @type {?} */ ((undefined));\n let /** @type {?} */ compileTypeMetadata = /** @type {?} */ ((null));\n let /** @type {?} */ compileFactoryMetadata = /** @type {?} */ ((null));\n let /** @type {?} */ token = this._getTokenMetadata(provider.token);\n if (provider.useClass) {\n compileTypeMetadata = this._getInjectableMetadata(provider.useClass, provider.dependencies);\n compileDeps = compileTypeMetadata.diDeps;\n if (provider.token === provider.useClass) {\n // use the compileTypeMetadata as it contains information about lifecycleHooks...\n token = { identifier: compileTypeMetadata };\n }\n }\n else if (provider.useFactory) {\n compileFactoryMetadata = this._getFactoryMetadata(provider.useFactory, provider.dependencies);\n compileDeps = compileFactoryMetadata.diDeps;\n }\n return {\n token: token,\n useClass: compileTypeMetadata,\n useValue: provider.useValue,\n useFactory: compileFactoryMetadata,\n useExisting: provider.useExisting ? this._getTokenMetadata(provider.useExisting) : undefined,\n deps: compileDeps,\n multi: provider.multi\n };\n }\n /**\n * @param {?} queries\n * @param {?} isViewQuery\n * @param {?} directiveType\n * @return {?}\n */\n _getQueriesMetadata(queries, isViewQuery, directiveType) {\n const /** @type {?} */ res = [];\n Object.keys(queries).forEach((propertyName) => {\n const /** @type {?} */ query = queries[propertyName];\n if (query.isViewQuery === isViewQuery) {\n res.push(this._getQueryMetadata(query, propertyName, directiveType));\n }\n });\n return res;\n }\n /**\n * @param {?} selector\n * @return {?}\n */\n _queryVarBindings(selector) { return selector.split(/\\s*,\\s*/); }\n /**\n * @param {?} q\n * @param {?} propertyName\n * @param {?} typeOrFunc\n * @return {?}\n */\n _getQueryMetadata(q, propertyName, typeOrFunc) {\n let /** @type {?} */ selectors;\n if (typeof q.selector === 'string') {\n selectors =\n this._queryVarBindings(q.selector).map(varName => this._getTokenMetadata(varName));\n }\n else {\n if (!q.selector) {\n this._reportError(syntaxError(`Can't construct a query for the property \"${propertyName}\" of \"${stringifyType(typeOrFunc)}\" since the query selector wasn't defined.`), typeOrFunc);\n selectors = [];\n }\n else {\n selectors = [this._getTokenMetadata(q.selector)];\n }\n }\n return {\n selectors,\n first: q.first,\n descendants: q.descendants, propertyName,\n read: q.read ? this._getTokenMetadata(q.read) : /** @type {?} */ ((null))\n };\n }\n /**\n * @param {?} error\n * @param {?=} type\n * @param {?=} otherType\n * @return {?}\n */\n _reportError(error, type, otherType) {\n if (this._errorCollector) {\n this._errorCollector(error, type);\n if (otherType) {\n this._errorCollector(error, otherType);\n }\n }\n else {\n throw error;\n }\n }\n}\nfunction CompileMetadataResolver_tsickle_Closure_declarations() {\n /** @type {?} */\n CompileMetadataResolver.prototype._nonNormalizedDirectiveCache;\n /** @type {?} */\n CompileMetadataResolver.prototype._directiveCache;\n /** @type {?} */\n CompileMetadataResolver.prototype._summaryCache;\n /** @type {?} */\n CompileMetadataResolver.prototype._pipeCache;\n /** @type {?} */\n CompileMetadataResolver.prototype._ngModuleCache;\n /** @type {?} */\n CompileMetadataResolver.prototype._ngModuleOfTypes;\n /** @type {?} */\n CompileMetadataResolver.prototype._config;\n /** @type {?} */\n CompileMetadataResolver.prototype._htmlParser;\n /** @type {?} */\n CompileMetadataResolver.prototype._ngModuleResolver;\n /** @type {?} */\n CompileMetadataResolver.prototype._directiveResolver;\n /** @type {?} */\n CompileMetadataResolver.prototype._pipeResolver;\n /** @type {?} */\n CompileMetadataResolver.prototype._summaryResolver;\n /** @type {?} */\n CompileMetadataResolver.prototype._schemaRegistry;\n /** @type {?} */\n CompileMetadataResolver.prototype._directiveNormalizer;\n /** @type {?} */\n CompileMetadataResolver.prototype._console;\n /** @type {?} */\n CompileMetadataResolver.prototype._staticSymbolCache;\n /** @type {?} */\n CompileMetadataResolver.prototype._reflector;\n /** @type {?} */\n CompileMetadataResolver.prototype._errorCollector;\n}\n/**\n * @param {?} tree\n * @param {?=} out\n * @return {?}\n */\nfunction flattenArray(tree, out = []) {\n if (tree) {\n for (let /** @type {?} */ i = 0; i < tree.length; i++) {\n const /** @type {?} */ item = resolveForwardRef(tree[i]);\n if (Array.isArray(item)) {\n flattenArray(item, out);\n }\n else {\n out.push(item);\n }\n }\n }\n return out;\n}\n/**\n * @param {?} array\n * @return {?}\n */\nfunction dedupeArray(array) {\n if (array) {\n return Array.from(new Set(array));\n }\n return [];\n}\n/**\n * @param {?} tree\n * @return {?}\n */\nfunction flattenAndDedupeArray(tree) {\n return dedupeArray(flattenArray(tree));\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isValidType(value) {\n return (value instanceof StaticSymbol) || (value instanceof Type);\n}\n/**\n * @param {?} value\n * @param {?} targetIdentifiers\n * @return {?}\n */\nfunction extractIdentifiers(value, targetIdentifiers) {\n visitValue(value, new _CompileValueConverter(), targetIdentifiers);\n}\nclass _CompileValueConverter extends ValueTransformer {\n /**\n * @param {?} value\n * @param {?} targetIdentifiers\n * @return {?}\n */\n visitOther(value, targetIdentifiers) {\n targetIdentifiers.push({ reference: value });\n }\n}\n/**\n * @param {?} type\n * @return {?}\n */\nfunction stringifyType(type) {\n if (type instanceof StaticSymbol) {\n return `${type.name} in ${type.filePath}`;\n }\n else {\n return stringify(type);\n }\n}\n/**\n * Indicates that a component is still being loaded in a synchronous compile.\n * @param {?} compType\n * @return {?}\n */\nfunction componentStillLoadingError(compType) {\n const /** @type {?} */ error = Error(`Can't compile synchronously as ${stringify(compType)} is still being loaded!`);\n (/** @type {?} */ (error))[ERROR_COMPONENT_TYPE] = compType;\n return error;\n}\n//# sourceMappingURL=metadata_resolver.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @enum {number} */\nconst TypeModifier = {\n Const: 0,\n};\nexport { TypeModifier };\nTypeModifier[TypeModifier.Const] = \"Const\";\n/**\n * @abstract\n */\nexport class Type {\n /**\n * @param {?=} modifiers\n */\n constructor(modifiers = null) {\n this.modifiers = modifiers;\n if (!modifiers) {\n this.modifiers = [];\n }\n }\n /**\n * @param {?} modifier\n * @return {?}\n */\n hasModifier(modifier) { return /** @type {?} */ ((this.modifiers)).indexOf(modifier) !== -1; }\n}\nfunction Type_tsickle_Closure_declarations() {\n /** @type {?} */\n Type.prototype.modifiers;\n /**\n * @abstract\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n Type.prototype.visitType = function (visitor, context) { };\n}\n/** @enum {number} */\nconst BuiltinTypeName = {\n Dynamic: 0,\n Bool: 1,\n String: 2,\n Int: 3,\n Number: 4,\n Function: 5,\n Inferred: 6,\n};\nexport { BuiltinTypeName };\nBuiltinTypeName[BuiltinTypeName.Dynamic] = \"Dynamic\";\nBuiltinTypeName[BuiltinTypeName.Bool] = \"Bool\";\nBuiltinTypeName[BuiltinTypeName.String] = \"String\";\nBuiltinTypeName[BuiltinTypeName.Int] = \"Int\";\nBuiltinTypeName[BuiltinTypeName.Number] = \"Number\";\nBuiltinTypeName[BuiltinTypeName.Function] = \"Function\";\nBuiltinTypeName[BuiltinTypeName.Inferred] = \"Inferred\";\nexport class BuiltinType extends Type {\n /**\n * @param {?} name\n * @param {?=} modifiers\n */\n constructor(name, modifiers = null) {\n super(modifiers);\n this.name = name;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitType(visitor, context) {\n return visitor.visitBuiltintType(this, context);\n }\n}\nfunction BuiltinType_tsickle_Closure_declarations() {\n /** @type {?} */\n BuiltinType.prototype.name;\n}\nexport class ExpressionType extends Type {\n /**\n * @param {?} value\n * @param {?=} modifiers\n */\n constructor(value, modifiers = null) {\n super(modifiers);\n this.value = value;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitType(visitor, context) {\n return visitor.visitExpressionType(this, context);\n }\n}\nfunction ExpressionType_tsickle_Closure_declarations() {\n /** @type {?} */\n ExpressionType.prototype.value;\n}\nexport class ArrayType extends Type {\n /**\n * @param {?} of\n * @param {?=} modifiers\n */\n constructor(of, modifiers = null) {\n super(modifiers);\n this.of = of;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitType(visitor, context) {\n return visitor.visitArrayType(this, context);\n }\n}\nfunction ArrayType_tsickle_Closure_declarations() {\n /** @type {?} */\n ArrayType.prototype.of;\n}\nexport class MapType extends Type {\n /**\n * @param {?} valueType\n * @param {?=} modifiers\n */\n constructor(valueType, modifiers = null) {\n super(modifiers);\n this.valueType = valueType || null;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitType(visitor, context) { return visitor.visitMapType(this, context); }\n}\nfunction MapType_tsickle_Closure_declarations() {\n /** @type {?} */\n MapType.prototype.valueType;\n}\nexport const /** @type {?} */ DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic);\nexport const /** @type {?} */ INFERRED_TYPE = new BuiltinType(BuiltinTypeName.Inferred);\nexport const /** @type {?} */ BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool);\nexport const /** @type {?} */ INT_TYPE = new BuiltinType(BuiltinTypeName.Int);\nexport const /** @type {?} */ NUMBER_TYPE = new BuiltinType(BuiltinTypeName.Number);\nexport const /** @type {?} */ STRING_TYPE = new BuiltinType(BuiltinTypeName.String);\nexport const /** @type {?} */ FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function);\n/**\n * @record\n */\nexport function TypeVisitor() { }\nfunction TypeVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n TypeVisitor.prototype.visitBuiltintType;\n /** @type {?} */\n TypeVisitor.prototype.visitExpressionType;\n /** @type {?} */\n TypeVisitor.prototype.visitArrayType;\n /** @type {?} */\n TypeVisitor.prototype.visitMapType;\n}\n/** @enum {number} */\nconst BinaryOperator = {\n Equals: 0,\n NotEquals: 1,\n Identical: 2,\n NotIdentical: 3,\n Minus: 4,\n Plus: 5,\n Divide: 6,\n Multiply: 7,\n Modulo: 8,\n And: 9,\n Or: 10,\n Lower: 11,\n LowerEquals: 12,\n Bigger: 13,\n BiggerEquals: 14,\n};\nexport { BinaryOperator };\nBinaryOperator[BinaryOperator.Equals] = \"Equals\";\nBinaryOperator[BinaryOperator.NotEquals] = \"NotEquals\";\nBinaryOperator[BinaryOperator.Identical] = \"Identical\";\nBinaryOperator[BinaryOperator.NotIdentical] = \"NotIdentical\";\nBinaryOperator[BinaryOperator.Minus] = \"Minus\";\nBinaryOperator[BinaryOperator.Plus] = \"Plus\";\nBinaryOperator[BinaryOperator.Divide] = \"Divide\";\nBinaryOperator[BinaryOperator.Multiply] = \"Multiply\";\nBinaryOperator[BinaryOperator.Modulo] = \"Modulo\";\nBinaryOperator[BinaryOperator.And] = \"And\";\nBinaryOperator[BinaryOperator.Or] = \"Or\";\nBinaryOperator[BinaryOperator.Lower] = \"Lower\";\nBinaryOperator[BinaryOperator.LowerEquals] = \"LowerEquals\";\nBinaryOperator[BinaryOperator.Bigger] = \"Bigger\";\nBinaryOperator[BinaryOperator.BiggerEquals] = \"BiggerEquals\";\n/**\n * @template T\n * @param {?} base\n * @param {?} other\n * @return {?}\n */\nexport function nullSafeIsEquivalent(base, other) {\n if (base == null || other == null) {\n return base == other;\n }\n return base.isEquivalent(other);\n}\n/**\n * @template T\n * @param {?} base\n * @param {?} other\n * @return {?}\n */\nexport function areAllEquivalent(base, other) {\n const /** @type {?} */ len = base.length;\n if (len !== other.length) {\n return false;\n }\n for (let /** @type {?} */ i = 0; i < len; i++) {\n if (!base[i].isEquivalent(other[i])) {\n return false;\n }\n }\n return true;\n}\n/**\n * @abstract\n */\nexport class Expression {\n /**\n * @param {?} type\n * @param {?=} sourceSpan\n */\n constructor(type, sourceSpan) {\n this.type = type || null;\n this.sourceSpan = sourceSpan || null;\n }\n /**\n * @param {?} name\n * @param {?=} sourceSpan\n * @return {?}\n */\n prop(name, sourceSpan) {\n return new ReadPropExpr(this, name, null, sourceSpan);\n }\n /**\n * @param {?} index\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\n key(index, type, sourceSpan) {\n return new ReadKeyExpr(this, index, type, sourceSpan);\n }\n /**\n * @param {?} name\n * @param {?} params\n * @param {?=} sourceSpan\n * @return {?}\n */\n callMethod(name, params, sourceSpan) {\n return new InvokeMethodExpr(this, name, params, null, sourceSpan);\n }\n /**\n * @param {?} params\n * @param {?=} sourceSpan\n * @return {?}\n */\n callFn(params, sourceSpan) {\n return new InvokeFunctionExpr(this, params, null, sourceSpan);\n }\n /**\n * @param {?} params\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\n instantiate(params, type, sourceSpan) {\n return new InstantiateExpr(this, params, type, sourceSpan);\n }\n /**\n * @param {?} trueCase\n * @param {?=} falseCase\n * @param {?=} sourceSpan\n * @return {?}\n */\n conditional(trueCase, falseCase = null, sourceSpan) {\n return new ConditionalExpr(this, trueCase, falseCase, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n equals(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Equals, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n notEquals(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.NotEquals, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n identical(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Identical, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n notIdentical(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.NotIdentical, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n minus(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Minus, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n plus(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Plus, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n divide(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Divide, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n multiply(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Multiply, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n modulo(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Modulo, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n and(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.And, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n or(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Or, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n lower(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Lower, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n lowerEquals(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.LowerEquals, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n bigger(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Bigger, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n biggerEquals(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.BiggerEquals, this, rhs, null, sourceSpan);\n }\n /**\n * @param {?=} sourceSpan\n * @return {?}\n */\n isBlank(sourceSpan) {\n // Note: We use equals by purpose here to compare to null and undefined in JS.\n // We use the typed null to allow strictNullChecks to narrow types.\n return this.equals(TYPED_NULL_EXPR, sourceSpan);\n }\n /**\n * @param {?} type\n * @param {?=} sourceSpan\n * @return {?}\n */\n cast(type, sourceSpan) {\n return new CastExpr(this, type, sourceSpan);\n }\n /**\n * @return {?}\n */\n toStmt() { return new ExpressionStatement(this, null); }\n}\nfunction Expression_tsickle_Closure_declarations() {\n /** @type {?} */\n Expression.prototype.type;\n /** @type {?} */\n Expression.prototype.sourceSpan;\n /**\n * @abstract\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n Expression.prototype.visitExpression = function (visitor, context) { };\n /**\n * Calculates whether this expression produces the same value as the given expression.\n * Note: We don't check Types nor ParseSourceSpans nor function arguments.\n * @abstract\n * @param {?} e\n * @return {?}\n */\n Expression.prototype.isEquivalent = function (e) { };\n}\n/** @enum {number} */\nconst BuiltinVar = {\n This: 0,\n Super: 1,\n CatchError: 2,\n CatchStack: 3,\n};\nexport { BuiltinVar };\nBuiltinVar[BuiltinVar.This] = \"This\";\nBuiltinVar[BuiltinVar.Super] = \"Super\";\nBuiltinVar[BuiltinVar.CatchError] = \"CatchError\";\nBuiltinVar[BuiltinVar.CatchStack] = \"CatchStack\";\nexport class ReadVarExpr extends Expression {\n /**\n * @param {?} name\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(name, type, sourceSpan) {\n super(type, sourceSpan);\n if (typeof name === 'string') {\n this.name = name;\n this.builtin = null;\n }\n else {\n this.name = null;\n this.builtin = /** @type {?} */ (name);\n }\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof ReadVarExpr && this.name === e.name && this.builtin === e.builtin;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitReadVarExpr(this, context);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set(value) {\n if (!this.name) {\n throw new Error(`Built in variable ${this.builtin} can not be assigned to.`);\n }\n return new WriteVarExpr(this.name, value, null, this.sourceSpan);\n }\n}\nfunction ReadVarExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n ReadVarExpr.prototype.name;\n /** @type {?} */\n ReadVarExpr.prototype.builtin;\n}\nexport class WriteVarExpr extends Expression {\n /**\n * @param {?} name\n * @param {?} value\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(name, value, type, sourceSpan) {\n super(type || value.type, sourceSpan);\n this.name = name;\n this.value = value;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof WriteVarExpr && this.name === e.name && this.value.isEquivalent(e.value);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitWriteVarExpr(this, context);\n }\n /**\n * @param {?=} type\n * @param {?=} modifiers\n * @return {?}\n */\n toDeclStmt(type, modifiers) {\n return new DeclareVarStmt(this.name, this.value, type, modifiers, this.sourceSpan);\n }\n}\nfunction WriteVarExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n WriteVarExpr.prototype.value;\n /** @type {?} */\n WriteVarExpr.prototype.name;\n}\nexport class WriteKeyExpr extends Expression {\n /**\n * @param {?} receiver\n * @param {?} index\n * @param {?} value\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(receiver, index, value, type, sourceSpan) {\n super(type || value.type, sourceSpan);\n this.receiver = receiver;\n this.index = index;\n this.value = value;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof WriteKeyExpr && this.receiver.isEquivalent(e.receiver) &&\n this.index.isEquivalent(e.index) && this.value.isEquivalent(e.value);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitWriteKeyExpr(this, context);\n }\n}\nfunction WriteKeyExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n WriteKeyExpr.prototype.value;\n /** @type {?} */\n WriteKeyExpr.prototype.receiver;\n /** @type {?} */\n WriteKeyExpr.prototype.index;\n}\nexport class WritePropExpr extends Expression {\n /**\n * @param {?} receiver\n * @param {?} name\n * @param {?} value\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(receiver, name, value, type, sourceSpan) {\n super(type || value.type, sourceSpan);\n this.receiver = receiver;\n this.name = name;\n this.value = value;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof WritePropExpr && this.receiver.isEquivalent(e.receiver) &&\n this.name === e.name && this.value.isEquivalent(e.value);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitWritePropExpr(this, context);\n }\n}\nfunction WritePropExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n WritePropExpr.prototype.value;\n /** @type {?} */\n WritePropExpr.prototype.receiver;\n /** @type {?} */\n WritePropExpr.prototype.name;\n}\n/** @enum {number} */\nconst BuiltinMethod = {\n ConcatArray: 0,\n SubscribeObservable: 1,\n Bind: 2,\n};\nexport { BuiltinMethod };\nBuiltinMethod[BuiltinMethod.ConcatArray] = \"ConcatArray\";\nBuiltinMethod[BuiltinMethod.SubscribeObservable] = \"SubscribeObservable\";\nBuiltinMethod[BuiltinMethod.Bind] = \"Bind\";\nexport class InvokeMethodExpr extends Expression {\n /**\n * @param {?} receiver\n * @param {?} method\n * @param {?} args\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(receiver, method, args, type, sourceSpan) {\n super(type, sourceSpan);\n this.receiver = receiver;\n this.args = args;\n if (typeof method === 'string') {\n this.name = method;\n this.builtin = null;\n }\n else {\n this.name = null;\n this.builtin = /** @type {?} */ (method);\n }\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof InvokeMethodExpr && this.receiver.isEquivalent(e.receiver) &&\n this.name === e.name && this.builtin === e.builtin && areAllEquivalent(this.args, e.args);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitInvokeMethodExpr(this, context);\n }\n}\nfunction InvokeMethodExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n InvokeMethodExpr.prototype.name;\n /** @type {?} */\n InvokeMethodExpr.prototype.builtin;\n /** @type {?} */\n InvokeMethodExpr.prototype.receiver;\n /** @type {?} */\n InvokeMethodExpr.prototype.args;\n}\nexport class InvokeFunctionExpr extends Expression {\n /**\n * @param {?} fn\n * @param {?} args\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(fn, args, type, sourceSpan) {\n super(type, sourceSpan);\n this.fn = fn;\n this.args = args;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof InvokeFunctionExpr && this.fn.isEquivalent(e.fn) &&\n areAllEquivalent(this.args, e.args);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitInvokeFunctionExpr(this, context);\n }\n}\nfunction InvokeFunctionExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n InvokeFunctionExpr.prototype.fn;\n /** @type {?} */\n InvokeFunctionExpr.prototype.args;\n}\nexport class InstantiateExpr extends Expression {\n /**\n * @param {?} classExpr\n * @param {?} args\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(classExpr, args, type, sourceSpan) {\n super(type, sourceSpan);\n this.classExpr = classExpr;\n this.args = args;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof InstantiateExpr && this.classExpr.isEquivalent(e.classExpr) &&\n areAllEquivalent(this.args, e.args);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitInstantiateExpr(this, context);\n }\n}\nfunction InstantiateExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n InstantiateExpr.prototype.classExpr;\n /** @type {?} */\n InstantiateExpr.prototype.args;\n}\nexport class LiteralExpr extends Expression {\n /**\n * @param {?} value\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(value, type, sourceSpan) {\n super(type, sourceSpan);\n this.value = value;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof LiteralExpr && this.value === e.value;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitLiteralExpr(this, context);\n }\n}\nfunction LiteralExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n LiteralExpr.prototype.value;\n}\nexport class ExternalExpr extends Expression {\n /**\n * @param {?} value\n * @param {?=} type\n * @param {?=} typeParams\n * @param {?=} sourceSpan\n */\n constructor(value, type, typeParams = null, sourceSpan) {\n super(type, sourceSpan);\n this.value = value;\n this.typeParams = typeParams;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof ExternalExpr && this.value.name === e.value.name &&\n this.value.moduleName === e.value.moduleName && this.value.runtime === e.value.runtime;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitExternalExpr(this, context);\n }\n}\nfunction ExternalExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n ExternalExpr.prototype.value;\n /** @type {?} */\n ExternalExpr.prototype.typeParams;\n}\nexport class ExternalReference {\n /**\n * @param {?} moduleName\n * @param {?} name\n * @param {?=} runtime\n */\n constructor(moduleName, name, runtime) {\n this.moduleName = moduleName;\n this.name = name;\n this.runtime = runtime;\n }\n}\nfunction ExternalReference_tsickle_Closure_declarations() {\n /** @type {?} */\n ExternalReference.prototype.moduleName;\n /** @type {?} */\n ExternalReference.prototype.name;\n /** @type {?} */\n ExternalReference.prototype.runtime;\n}\nexport class ConditionalExpr extends Expression {\n /**\n * @param {?} condition\n * @param {?} trueCase\n * @param {?=} falseCase\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(condition, trueCase, falseCase = null, type, sourceSpan) {\n super(type || trueCase.type, sourceSpan);\n this.condition = condition;\n this.falseCase = falseCase;\n this.trueCase = trueCase;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof ConditionalExpr && this.condition.isEquivalent(e.condition) &&\n this.trueCase.isEquivalent(e.trueCase) && nullSafeIsEquivalent(this.falseCase, e.falseCase);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitConditionalExpr(this, context);\n }\n}\nfunction ConditionalExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n ConditionalExpr.prototype.trueCase;\n /** @type {?} */\n ConditionalExpr.prototype.condition;\n /** @type {?} */\n ConditionalExpr.prototype.falseCase;\n}\nexport class NotExpr extends Expression {\n /**\n * @param {?} condition\n * @param {?=} sourceSpan\n */\n constructor(condition, sourceSpan) {\n super(BOOL_TYPE, sourceSpan);\n this.condition = condition;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof NotExpr && this.condition.isEquivalent(e.condition);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitNotExpr(this, context);\n }\n}\nfunction NotExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n NotExpr.prototype.condition;\n}\nexport class AssertNotNull extends Expression {\n /**\n * @param {?} condition\n * @param {?=} sourceSpan\n */\n constructor(condition, sourceSpan) {\n super(condition.type, sourceSpan);\n this.condition = condition;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof AssertNotNull && this.condition.isEquivalent(e.condition);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitAssertNotNullExpr(this, context);\n }\n}\nfunction AssertNotNull_tsickle_Closure_declarations() {\n /** @type {?} */\n AssertNotNull.prototype.condition;\n}\nexport class CastExpr extends Expression {\n /**\n * @param {?} value\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(value, type, sourceSpan) {\n super(type, sourceSpan);\n this.value = value;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof CastExpr && this.value.isEquivalent(e.value);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitCastExpr(this, context);\n }\n}\nfunction CastExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n CastExpr.prototype.value;\n}\nexport class FnParam {\n /**\n * @param {?} name\n * @param {?=} type\n */\n constructor(name, type = null) {\n this.name = name;\n this.type = type;\n }\n /**\n * @param {?} param\n * @return {?}\n */\n isEquivalent(param) { return this.name === param.name; }\n}\nfunction FnParam_tsickle_Closure_declarations() {\n /** @type {?} */\n FnParam.prototype.name;\n /** @type {?} */\n FnParam.prototype.type;\n}\nexport class FunctionExpr extends Expression {\n /**\n * @param {?} params\n * @param {?} statements\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(params, statements, type, sourceSpan) {\n super(type, sourceSpan);\n this.params = params;\n this.statements = statements;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof FunctionExpr && areAllEquivalent(this.params, e.params) &&\n areAllEquivalent(this.statements, e.statements);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitFunctionExpr(this, context);\n }\n /**\n * @param {?} name\n * @param {?=} modifiers\n * @return {?}\n */\n toDeclStmt(name, modifiers = null) {\n return new DeclareFunctionStmt(name, this.params, this.statements, this.type, modifiers, this.sourceSpan);\n }\n}\nfunction FunctionExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n FunctionExpr.prototype.params;\n /** @type {?} */\n FunctionExpr.prototype.statements;\n}\nexport class BinaryOperatorExpr extends Expression {\n /**\n * @param {?} operator\n * @param {?} lhs\n * @param {?} rhs\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(operator, lhs, rhs, type, sourceSpan) {\n super(type || lhs.type, sourceSpan);\n this.operator = operator;\n this.rhs = rhs;\n this.lhs = lhs;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof BinaryOperatorExpr && this.operator === e.operator &&\n this.lhs.isEquivalent(e.lhs) && this.rhs.isEquivalent(e.rhs);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitBinaryOperatorExpr(this, context);\n }\n}\nfunction BinaryOperatorExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n BinaryOperatorExpr.prototype.lhs;\n /** @type {?} */\n BinaryOperatorExpr.prototype.operator;\n /** @type {?} */\n BinaryOperatorExpr.prototype.rhs;\n}\nexport class ReadPropExpr extends Expression {\n /**\n * @param {?} receiver\n * @param {?} name\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(receiver, name, type, sourceSpan) {\n super(type, sourceSpan);\n this.receiver = receiver;\n this.name = name;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof ReadPropExpr && this.receiver.isEquivalent(e.receiver) &&\n this.name === e.name;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitReadPropExpr(this, context);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set(value) {\n return new WritePropExpr(this.receiver, this.name, value, null, this.sourceSpan);\n }\n}\nfunction ReadPropExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n ReadPropExpr.prototype.receiver;\n /** @type {?} */\n ReadPropExpr.prototype.name;\n}\nexport class ReadKeyExpr extends Expression {\n /**\n * @param {?} receiver\n * @param {?} index\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(receiver, index, type, sourceSpan) {\n super(type, sourceSpan);\n this.receiver = receiver;\n this.index = index;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof ReadKeyExpr && this.receiver.isEquivalent(e.receiver) &&\n this.index.isEquivalent(e.index);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitReadKeyExpr(this, context);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set(value) {\n return new WriteKeyExpr(this.receiver, this.index, value, null, this.sourceSpan);\n }\n}\nfunction ReadKeyExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n ReadKeyExpr.prototype.receiver;\n /** @type {?} */\n ReadKeyExpr.prototype.index;\n}\nexport class LiteralArrayExpr extends Expression {\n /**\n * @param {?} entries\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(entries, type, sourceSpan) {\n super(type, sourceSpan);\n this.entries = entries;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof LiteralArrayExpr && areAllEquivalent(this.entries, e.entries);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitLiteralArrayExpr(this, context);\n }\n}\nfunction LiteralArrayExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n LiteralArrayExpr.prototype.entries;\n}\nexport class LiteralMapEntry {\n /**\n * @param {?} key\n * @param {?} value\n * @param {?} quoted\n */\n constructor(key, value, quoted) {\n this.key = key;\n this.value = value;\n this.quoted = quoted;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return this.key === e.key && this.value.isEquivalent(e.value);\n }\n}\nfunction LiteralMapEntry_tsickle_Closure_declarations() {\n /** @type {?} */\n LiteralMapEntry.prototype.key;\n /** @type {?} */\n LiteralMapEntry.prototype.value;\n /** @type {?} */\n LiteralMapEntry.prototype.quoted;\n}\nexport class LiteralMapExpr extends Expression {\n /**\n * @param {?} entries\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n constructor(entries, type, sourceSpan) {\n super(type, sourceSpan);\n this.entries = entries;\n this.valueType = null;\n if (type) {\n this.valueType = type.valueType;\n }\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof LiteralMapExpr && areAllEquivalent(this.entries, e.entries);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitLiteralMapExpr(this, context);\n }\n}\nfunction LiteralMapExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n LiteralMapExpr.prototype.valueType;\n /** @type {?} */\n LiteralMapExpr.prototype.entries;\n}\nexport class CommaExpr extends Expression {\n /**\n * @param {?} parts\n * @param {?=} sourceSpan\n */\n constructor(parts, sourceSpan) {\n super(parts[parts.length - 1].type, sourceSpan);\n this.parts = parts;\n }\n /**\n * @param {?} e\n * @return {?}\n */\n isEquivalent(e) {\n return e instanceof CommaExpr && areAllEquivalent(this.parts, e.parts);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitExpression(visitor, context) {\n return visitor.visitCommaExpr(this, context);\n }\n}\nfunction CommaExpr_tsickle_Closure_declarations() {\n /** @type {?} */\n CommaExpr.prototype.parts;\n}\n/**\n * @record\n */\nexport function ExpressionVisitor() { }\nfunction ExpressionVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n ExpressionVisitor.prototype.visitReadVarExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitWriteVarExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitWriteKeyExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitWritePropExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitInvokeMethodExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitInvokeFunctionExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitInstantiateExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitLiteralExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitExternalExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitConditionalExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitNotExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitAssertNotNullExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitCastExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitFunctionExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitBinaryOperatorExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitReadPropExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitReadKeyExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitLiteralArrayExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitLiteralMapExpr;\n /** @type {?} */\n ExpressionVisitor.prototype.visitCommaExpr;\n}\nexport const /** @type {?} */ THIS_EXPR = new ReadVarExpr(BuiltinVar.This, null, null);\nexport const /** @type {?} */ SUPER_EXPR = new ReadVarExpr(BuiltinVar.Super, null, null);\nexport const /** @type {?} */ CATCH_ERROR_VAR = new ReadVarExpr(BuiltinVar.CatchError, null, null);\nexport const /** @type {?} */ CATCH_STACK_VAR = new ReadVarExpr(BuiltinVar.CatchStack, null, null);\nexport const /** @type {?} */ NULL_EXPR = new LiteralExpr(null, null, null);\nexport const /** @type {?} */ TYPED_NULL_EXPR = new LiteralExpr(null, INFERRED_TYPE, null);\n/** @enum {number} */\nconst StmtModifier = {\n Final: 0,\n Private: 1,\n Exported: 2,\n};\nexport { StmtModifier };\nStmtModifier[StmtModifier.Final] = \"Final\";\nStmtModifier[StmtModifier.Private] = \"Private\";\nStmtModifier[StmtModifier.Exported] = \"Exported\";\n/**\n * @abstract\n */\nexport class Statement {\n /**\n * @param {?=} modifiers\n * @param {?=} sourceSpan\n */\n constructor(modifiers, sourceSpan) {\n this.modifiers = modifiers || [];\n this.sourceSpan = sourceSpan || null;\n }\n /**\n * @param {?} modifier\n * @return {?}\n */\n hasModifier(modifier) { return /** @type {?} */ ((this.modifiers)).indexOf(modifier) !== -1; }\n}\nfunction Statement_tsickle_Closure_declarations() {\n /** @type {?} */\n Statement.prototype.modifiers;\n /** @type {?} */\n Statement.prototype.sourceSpan;\n /**\n * Calculates whether this statement produces the same value as the given statement.\n * Note: We don't check Types nor ParseSourceSpans nor function arguments.\n * @abstract\n * @param {?} stmt\n * @return {?}\n */\n Statement.prototype.isEquivalent = function (stmt) { };\n /**\n * @abstract\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n Statement.prototype.visitStatement = function (visitor, context) { };\n}\nexport class DeclareVarStmt extends Statement {\n /**\n * @param {?} name\n * @param {?} value\n * @param {?=} type\n * @param {?=} modifiers\n * @param {?=} sourceSpan\n */\n constructor(name, value, type, modifiers = null, sourceSpan) {\n super(modifiers, sourceSpan);\n this.name = name;\n this.value = value;\n this.type = type || value.type;\n }\n /**\n * @param {?} stmt\n * @return {?}\n */\n isEquivalent(stmt) {\n return stmt instanceof DeclareVarStmt && this.name === stmt.name &&\n this.value.isEquivalent(stmt.value);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitStatement(visitor, context) {\n return visitor.visitDeclareVarStmt(this, context);\n }\n}\nfunction DeclareVarStmt_tsickle_Closure_declarations() {\n /** @type {?} */\n DeclareVarStmt.prototype.type;\n /** @type {?} */\n DeclareVarStmt.prototype.name;\n /** @type {?} */\n DeclareVarStmt.prototype.value;\n}\nexport class DeclareFunctionStmt extends Statement {\n /**\n * @param {?} name\n * @param {?} params\n * @param {?} statements\n * @param {?=} type\n * @param {?=} modifiers\n * @param {?=} sourceSpan\n */\n constructor(name, params, statements, type, modifiers = null, sourceSpan) {\n super(modifiers, sourceSpan);\n this.name = name;\n this.params = params;\n this.statements = statements;\n this.type = type || null;\n }\n /**\n * @param {?} stmt\n * @return {?}\n */\n isEquivalent(stmt) {\n return stmt instanceof DeclareFunctionStmt && areAllEquivalent(this.params, stmt.params) &&\n areAllEquivalent(this.statements, stmt.statements);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitStatement(visitor, context) {\n return visitor.visitDeclareFunctionStmt(this, context);\n }\n}\nfunction DeclareFunctionStmt_tsickle_Closure_declarations() {\n /** @type {?} */\n DeclareFunctionStmt.prototype.type;\n /** @type {?} */\n DeclareFunctionStmt.prototype.name;\n /** @type {?} */\n DeclareFunctionStmt.prototype.params;\n /** @type {?} */\n DeclareFunctionStmt.prototype.statements;\n}\nexport class ExpressionStatement extends Statement {\n /**\n * @param {?} expr\n * @param {?=} sourceSpan\n */\n constructor(expr, sourceSpan) {\n super(null, sourceSpan);\n this.expr = expr;\n }\n /**\n * @param {?} stmt\n * @return {?}\n */\n isEquivalent(stmt) {\n return stmt instanceof ExpressionStatement && this.expr.isEquivalent(stmt.expr);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitStatement(visitor, context) {\n return visitor.visitExpressionStmt(this, context);\n }\n}\nfunction ExpressionStatement_tsickle_Closure_declarations() {\n /** @type {?} */\n ExpressionStatement.prototype.expr;\n}\nexport class ReturnStatement extends Statement {\n /**\n * @param {?} value\n * @param {?=} sourceSpan\n */\n constructor(value, sourceSpan) {\n super(null, sourceSpan);\n this.value = value;\n }\n /**\n * @param {?} stmt\n * @return {?}\n */\n isEquivalent(stmt) {\n return stmt instanceof ReturnStatement && this.value.isEquivalent(stmt.value);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitStatement(visitor, context) {\n return visitor.visitReturnStmt(this, context);\n }\n}\nfunction ReturnStatement_tsickle_Closure_declarations() {\n /** @type {?} */\n ReturnStatement.prototype.value;\n}\nexport class AbstractClassPart {\n /**\n * @param {?} type\n * @param {?} modifiers\n */\n constructor(type, modifiers) {\n this.modifiers = modifiers;\n if (!modifiers) {\n this.modifiers = [];\n }\n this.type = type || null;\n }\n /**\n * @param {?} modifier\n * @return {?}\n */\n hasModifier(modifier) { return /** @type {?} */ ((this.modifiers)).indexOf(modifier) !== -1; }\n}\nfunction AbstractClassPart_tsickle_Closure_declarations() {\n /** @type {?} */\n AbstractClassPart.prototype.type;\n /** @type {?} */\n AbstractClassPart.prototype.modifiers;\n}\nexport class ClassField extends AbstractClassPart {\n /**\n * @param {?} name\n * @param {?=} type\n * @param {?=} modifiers\n */\n constructor(name, type, modifiers = null) {\n super(type, modifiers);\n this.name = name;\n }\n /**\n * @param {?} f\n * @return {?}\n */\n isEquivalent(f) { return this.name === f.name; }\n}\nfunction ClassField_tsickle_Closure_declarations() {\n /** @type {?} */\n ClassField.prototype.name;\n}\nexport class ClassMethod extends AbstractClassPart {\n /**\n * @param {?} name\n * @param {?} params\n * @param {?} body\n * @param {?=} type\n * @param {?=} modifiers\n */\n constructor(name, params, body, type, modifiers = null) {\n super(type, modifiers);\n this.name = name;\n this.params = params;\n this.body = body;\n }\n /**\n * @param {?} m\n * @return {?}\n */\n isEquivalent(m) {\n return this.name === m.name && areAllEquivalent(this.body, m.body);\n }\n}\nfunction ClassMethod_tsickle_Closure_declarations() {\n /** @type {?} */\n ClassMethod.prototype.name;\n /** @type {?} */\n ClassMethod.prototype.params;\n /** @type {?} */\n ClassMethod.prototype.body;\n}\nexport class ClassGetter extends AbstractClassPart {\n /**\n * @param {?} name\n * @param {?} body\n * @param {?=} type\n * @param {?=} modifiers\n */\n constructor(name, body, type, modifiers = null) {\n super(type, modifiers);\n this.name = name;\n this.body = body;\n }\n /**\n * @param {?} m\n * @return {?}\n */\n isEquivalent(m) {\n return this.name === m.name && areAllEquivalent(this.body, m.body);\n }\n}\nfunction ClassGetter_tsickle_Closure_declarations() {\n /** @type {?} */\n ClassGetter.prototype.name;\n /** @type {?} */\n ClassGetter.prototype.body;\n}\nexport class ClassStmt extends Statement {\n /**\n * @param {?} name\n * @param {?} parent\n * @param {?} fields\n * @param {?} getters\n * @param {?} constructorMethod\n * @param {?} methods\n * @param {?=} modifiers\n * @param {?=} sourceSpan\n */\n constructor(name, parent, fields, getters, constructorMethod, methods, modifiers = null, sourceSpan) {\n super(modifiers, sourceSpan);\n this.name = name;\n this.parent = parent;\n this.fields = fields;\n this.getters = getters;\n this.constructorMethod = constructorMethod;\n this.methods = methods;\n }\n /**\n * @param {?} stmt\n * @return {?}\n */\n isEquivalent(stmt) {\n return stmt instanceof ClassStmt && this.name === stmt.name &&\n nullSafeIsEquivalent(this.parent, stmt.parent) &&\n areAllEquivalent(this.fields, stmt.fields) &&\n areAllEquivalent(this.getters, stmt.getters) &&\n this.constructorMethod.isEquivalent(stmt.constructorMethod) &&\n areAllEquivalent(this.methods, stmt.methods);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitStatement(visitor, context) {\n return visitor.visitDeclareClassStmt(this, context);\n }\n}\nfunction ClassStmt_tsickle_Closure_declarations() {\n /** @type {?} */\n ClassStmt.prototype.name;\n /** @type {?} */\n ClassStmt.prototype.parent;\n /** @type {?} */\n ClassStmt.prototype.fields;\n /** @type {?} */\n ClassStmt.prototype.getters;\n /** @type {?} */\n ClassStmt.prototype.constructorMethod;\n /** @type {?} */\n ClassStmt.prototype.methods;\n}\nexport class IfStmt extends Statement {\n /**\n * @param {?} condition\n * @param {?} trueCase\n * @param {?=} falseCase\n * @param {?=} sourceSpan\n */\n constructor(condition, trueCase, falseCase = [], sourceSpan) {\n super(null, sourceSpan);\n this.condition = condition;\n this.trueCase = trueCase;\n this.falseCase = falseCase;\n }\n /**\n * @param {?} stmt\n * @return {?}\n */\n isEquivalent(stmt) {\n return stmt instanceof IfStmt && this.condition.isEquivalent(stmt.condition) &&\n areAllEquivalent(this.trueCase, stmt.trueCase) &&\n areAllEquivalent(this.falseCase, stmt.falseCase);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitStatement(visitor, context) {\n return visitor.visitIfStmt(this, context);\n }\n}\nfunction IfStmt_tsickle_Closure_declarations() {\n /** @type {?} */\n IfStmt.prototype.condition;\n /** @type {?} */\n IfStmt.prototype.trueCase;\n /** @type {?} */\n IfStmt.prototype.falseCase;\n}\nexport class CommentStmt extends Statement {\n /**\n * @param {?} comment\n * @param {?=} sourceSpan\n */\n constructor(comment, sourceSpan) {\n super(null, sourceSpan);\n this.comment = comment;\n }\n /**\n * @param {?} stmt\n * @return {?}\n */\n isEquivalent(stmt) { return stmt instanceof CommentStmt; }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitStatement(visitor, context) {\n return visitor.visitCommentStmt(this, context);\n }\n}\nfunction CommentStmt_tsickle_Closure_declarations() {\n /** @type {?} */\n CommentStmt.prototype.comment;\n}\nexport class TryCatchStmt extends Statement {\n /**\n * @param {?} bodyStmts\n * @param {?} catchStmts\n * @param {?=} sourceSpan\n */\n constructor(bodyStmts, catchStmts, sourceSpan) {\n super(null, sourceSpan);\n this.bodyStmts = bodyStmts;\n this.catchStmts = catchStmts;\n }\n /**\n * @param {?} stmt\n * @return {?}\n */\n isEquivalent(stmt) {\n return stmt instanceof TryCatchStmt && areAllEquivalent(this.bodyStmts, stmt.bodyStmts) &&\n areAllEquivalent(this.catchStmts, stmt.catchStmts);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitStatement(visitor, context) {\n return visitor.visitTryCatchStmt(this, context);\n }\n}\nfunction TryCatchStmt_tsickle_Closure_declarations() {\n /** @type {?} */\n TryCatchStmt.prototype.bodyStmts;\n /** @type {?} */\n TryCatchStmt.prototype.catchStmts;\n}\nexport class ThrowStmt extends Statement {\n /**\n * @param {?} error\n * @param {?=} sourceSpan\n */\n constructor(error, sourceSpan) {\n super(null, sourceSpan);\n this.error = error;\n }\n /**\n * @param {?} stmt\n * @return {?}\n */\n isEquivalent(stmt) {\n return stmt instanceof TryCatchStmt && this.error.isEquivalent(stmt.error);\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n visitStatement(visitor, context) {\n return visitor.visitThrowStmt(this, context);\n }\n}\nfunction ThrowStmt_tsickle_Closure_declarations() {\n /** @type {?} */\n ThrowStmt.prototype.error;\n}\n/**\n * @record\n */\nexport function StatementVisitor() { }\nfunction StatementVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n StatementVisitor.prototype.visitDeclareVarStmt;\n /** @type {?} */\n StatementVisitor.prototype.visitDeclareFunctionStmt;\n /** @type {?} */\n StatementVisitor.prototype.visitExpressionStmt;\n /** @type {?} */\n StatementVisitor.prototype.visitReturnStmt;\n /** @type {?} */\n StatementVisitor.prototype.visitDeclareClassStmt;\n /** @type {?} */\n StatementVisitor.prototype.visitIfStmt;\n /** @type {?} */\n StatementVisitor.prototype.visitTryCatchStmt;\n /** @type {?} */\n StatementVisitor.prototype.visitThrowStmt;\n /** @type {?} */\n StatementVisitor.prototype.visitCommentStmt;\n}\nexport class AstTransformer {\n /**\n * @param {?} expr\n * @param {?} context\n * @return {?}\n */\n transformExpr(expr, context) { return expr; }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n transformStmt(stmt, context) { return stmt; }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitReadVarExpr(ast, context) { return this.transformExpr(ast, context); }\n /**\n * @param {?} expr\n * @param {?} context\n * @return {?}\n */\n visitWriteVarExpr(expr, context) {\n return this.transformExpr(new WriteVarExpr(expr.name, expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context);\n }\n /**\n * @param {?} expr\n * @param {?} context\n * @return {?}\n */\n visitWriteKeyExpr(expr, context) {\n return this.transformExpr(new WriteKeyExpr(expr.receiver.visitExpression(this, context), expr.index.visitExpression(this, context), expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context);\n }\n /**\n * @param {?} expr\n * @param {?} context\n * @return {?}\n */\n visitWritePropExpr(expr, context) {\n return this.transformExpr(new WritePropExpr(expr.receiver.visitExpression(this, context), expr.name, expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitInvokeMethodExpr(ast, context) {\n const /** @type {?} */ method = ast.builtin || ast.name;\n return this.transformExpr(new InvokeMethodExpr(ast.receiver.visitExpression(this, context), /** @type {?} */ ((method)), this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitInvokeFunctionExpr(ast, context) {\n return this.transformExpr(new InvokeFunctionExpr(ast.fn.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitInstantiateExpr(ast, context) {\n return this.transformExpr(new InstantiateExpr(ast.classExpr.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralExpr(ast, context) { return this.transformExpr(ast, context); }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitExternalExpr(ast, context) {\n return this.transformExpr(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitConditionalExpr(ast, context) {\n return this.transformExpr(new ConditionalExpr(ast.condition.visitExpression(this, context), ast.trueCase.visitExpression(this, context), /** @type {?} */ ((ast.falseCase)).visitExpression(this, context), ast.type, ast.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitNotExpr(ast, context) {\n return this.transformExpr(new NotExpr(ast.condition.visitExpression(this, context), ast.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitAssertNotNullExpr(ast, context) {\n return this.transformExpr(new AssertNotNull(ast.condition.visitExpression(this, context), ast.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitCastExpr(ast, context) {\n return this.transformExpr(new CastExpr(ast.value.visitExpression(this, context), ast.type, ast.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitFunctionExpr(ast, context) {\n return this.transformExpr(new FunctionExpr(ast.params, this.visitAllStatements(ast.statements, context), ast.type, ast.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitBinaryOperatorExpr(ast, context) {\n return this.transformExpr(new BinaryOperatorExpr(ast.operator, ast.lhs.visitExpression(this, context), ast.rhs.visitExpression(this, context), ast.type, ast.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitReadPropExpr(ast, context) {\n return this.transformExpr(new ReadPropExpr(ast.receiver.visitExpression(this, context), ast.name, ast.type, ast.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitReadKeyExpr(ast, context) {\n return this.transformExpr(new ReadKeyExpr(ast.receiver.visitExpression(this, context), ast.index.visitExpression(this, context), ast.type, ast.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralArrayExpr(ast, context) {\n return this.transformExpr(new LiteralArrayExpr(this.visitAllExpressions(ast.entries, context), ast.type, ast.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralMapExpr(ast, context) {\n const /** @type {?} */ entries = ast.entries.map((entry) => new LiteralMapEntry(entry.key, entry.value.visitExpression(this, context), entry.quoted));\n const /** @type {?} */ mapType = new MapType(ast.valueType, null);\n return this.transformExpr(new LiteralMapExpr(entries, mapType, ast.sourceSpan), context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitCommaExpr(ast, context) {\n return this.transformExpr(new CommaExpr(this.visitAllExpressions(ast.parts, context), ast.sourceSpan), context);\n }\n /**\n * @param {?} exprs\n * @param {?} context\n * @return {?}\n */\n visitAllExpressions(exprs, context) {\n return exprs.map(expr => expr.visitExpression(this, context));\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitDeclareVarStmt(stmt, context) {\n return this.transformStmt(new DeclareVarStmt(stmt.name, stmt.value.visitExpression(this, context), stmt.type, stmt.modifiers, stmt.sourceSpan), context);\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitDeclareFunctionStmt(stmt, context) {\n return this.transformStmt(new DeclareFunctionStmt(stmt.name, stmt.params, this.visitAllStatements(stmt.statements, context), stmt.type, stmt.modifiers, stmt.sourceSpan), context);\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitExpressionStmt(stmt, context) {\n return this.transformStmt(new ExpressionStatement(stmt.expr.visitExpression(this, context), stmt.sourceSpan), context);\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitReturnStmt(stmt, context) {\n return this.transformStmt(new ReturnStatement(stmt.value.visitExpression(this, context), stmt.sourceSpan), context);\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitDeclareClassStmt(stmt, context) {\n const /** @type {?} */ parent = /** @type {?} */ ((stmt.parent)).visitExpression(this, context);\n const /** @type {?} */ getters = stmt.getters.map(getter => new ClassGetter(getter.name, this.visitAllStatements(getter.body, context), getter.type, getter.modifiers));\n const /** @type {?} */ ctorMethod = stmt.constructorMethod &&\n new ClassMethod(stmt.constructorMethod.name, stmt.constructorMethod.params, this.visitAllStatements(stmt.constructorMethod.body, context), stmt.constructorMethod.type, stmt.constructorMethod.modifiers);\n const /** @type {?} */ methods = stmt.methods.map(method => new ClassMethod(method.name, method.params, this.visitAllStatements(method.body, context), method.type, method.modifiers));\n return this.transformStmt(new ClassStmt(stmt.name, parent, stmt.fields, getters, ctorMethod, methods, stmt.modifiers, stmt.sourceSpan), context);\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitIfStmt(stmt, context) {\n return this.transformStmt(new IfStmt(stmt.condition.visitExpression(this, context), this.visitAllStatements(stmt.trueCase, context), this.visitAllStatements(stmt.falseCase, context), stmt.sourceSpan), context);\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitTryCatchStmt(stmt, context) {\n return this.transformStmt(new TryCatchStmt(this.visitAllStatements(stmt.bodyStmts, context), this.visitAllStatements(stmt.catchStmts, context), stmt.sourceSpan), context);\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitThrowStmt(stmt, context) {\n return this.transformStmt(new ThrowStmt(stmt.error.visitExpression(this, context), stmt.sourceSpan), context);\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitCommentStmt(stmt, context) {\n return this.transformStmt(stmt, context);\n }\n /**\n * @param {?} stmts\n * @param {?} context\n * @return {?}\n */\n visitAllStatements(stmts, context) {\n return stmts.map(stmt => stmt.visitStatement(this, context));\n }\n}\nexport class RecursiveAstVisitor {\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitType(ast, context) { return ast; }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitExpression(ast, context) {\n if (ast.type) {\n ast.type.visitType(this, context);\n }\n return ast;\n }\n /**\n * @param {?} type\n * @param {?} context\n * @return {?}\n */\n visitBuiltintType(type, context) { return this.visitType(type, context); }\n /**\n * @param {?} type\n * @param {?} context\n * @return {?}\n */\n visitExpressionType(type, context) {\n type.value.visitExpression(this, context);\n return this.visitType(type, context);\n }\n /**\n * @param {?} type\n * @param {?} context\n * @return {?}\n */\n visitArrayType(type, context) { return this.visitType(type, context); }\n /**\n * @param {?} type\n * @param {?} context\n * @return {?}\n */\n visitMapType(type, context) { return this.visitType(type, context); }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitReadVarExpr(ast, context) {\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitWriteVarExpr(ast, context) {\n ast.value.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitWriteKeyExpr(ast, context) {\n ast.receiver.visitExpression(this, context);\n ast.index.visitExpression(this, context);\n ast.value.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitWritePropExpr(ast, context) {\n ast.receiver.visitExpression(this, context);\n ast.value.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitInvokeMethodExpr(ast, context) {\n ast.receiver.visitExpression(this, context);\n this.visitAllExpressions(ast.args, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitInvokeFunctionExpr(ast, context) {\n ast.fn.visitExpression(this, context);\n this.visitAllExpressions(ast.args, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitInstantiateExpr(ast, context) {\n ast.classExpr.visitExpression(this, context);\n this.visitAllExpressions(ast.args, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralExpr(ast, context) {\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitExternalExpr(ast, context) {\n if (ast.typeParams) {\n ast.typeParams.forEach(type => type.visitType(this, context));\n }\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitConditionalExpr(ast, context) {\n ast.condition.visitExpression(this, context);\n ast.trueCase.visitExpression(this, context); /** @type {?} */\n ((ast.falseCase)).visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitNotExpr(ast, context) {\n ast.condition.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitAssertNotNullExpr(ast, context) {\n ast.condition.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitCastExpr(ast, context) {\n ast.value.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitFunctionExpr(ast, context) {\n this.visitAllStatements(ast.statements, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitBinaryOperatorExpr(ast, context) {\n ast.lhs.visitExpression(this, context);\n ast.rhs.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitReadPropExpr(ast, context) {\n ast.receiver.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitReadKeyExpr(ast, context) {\n ast.receiver.visitExpression(this, context);\n ast.index.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralArrayExpr(ast, context) {\n this.visitAllExpressions(ast.entries, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralMapExpr(ast, context) {\n ast.entries.forEach((entry) => entry.value.visitExpression(this, context));\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitCommaExpr(ast, context) {\n this.visitAllExpressions(ast.parts, context);\n return this.visitExpression(ast, context);\n }\n /**\n * @param {?} exprs\n * @param {?} context\n * @return {?}\n */\n visitAllExpressions(exprs, context) {\n exprs.forEach(expr => expr.visitExpression(this, context));\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitDeclareVarStmt(stmt, context) {\n stmt.value.visitExpression(this, context);\n if (stmt.type) {\n stmt.type.visitType(this, context);\n }\n return stmt;\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitDeclareFunctionStmt(stmt, context) {\n this.visitAllStatements(stmt.statements, context);\n if (stmt.type) {\n stmt.type.visitType(this, context);\n }\n return stmt;\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitExpressionStmt(stmt, context) {\n stmt.expr.visitExpression(this, context);\n return stmt;\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitReturnStmt(stmt, context) {\n stmt.value.visitExpression(this, context);\n return stmt;\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitDeclareClassStmt(stmt, context) {\n /** @type {?} */ ((stmt.parent)).visitExpression(this, context);\n stmt.getters.forEach(getter => this.visitAllStatements(getter.body, context));\n if (stmt.constructorMethod) {\n this.visitAllStatements(stmt.constructorMethod.body, context);\n }\n stmt.methods.forEach(method => this.visitAllStatements(method.body, context));\n return stmt;\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitIfStmt(stmt, context) {\n stmt.condition.visitExpression(this, context);\n this.visitAllStatements(stmt.trueCase, context);\n this.visitAllStatements(stmt.falseCase, context);\n return stmt;\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitTryCatchStmt(stmt, context) {\n this.visitAllStatements(stmt.bodyStmts, context);\n this.visitAllStatements(stmt.catchStmts, context);\n return stmt;\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitThrowStmt(stmt, context) {\n stmt.error.visitExpression(this, context);\n return stmt;\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitCommentStmt(stmt, context) { return stmt; }\n /**\n * @param {?} stmts\n * @param {?} context\n * @return {?}\n */\n visitAllStatements(stmts, context) {\n stmts.forEach(stmt => stmt.visitStatement(this, context));\n }\n}\n/**\n * @param {?} stmts\n * @return {?}\n */\nexport function findReadVarNames(stmts) {\n const /** @type {?} */ visitor = new _ReadVarVisitor();\n visitor.visitAllStatements(stmts, null);\n return visitor.varNames;\n}\nclass _ReadVarVisitor extends RecursiveAstVisitor {\n constructor() {\n super(...arguments);\n this.varNames = new Set();\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitDeclareFunctionStmt(stmt, context) {\n // Don't descend into nested functions\n return stmt;\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n visitDeclareClassStmt(stmt, context) {\n // Don't descend into nested classes\n return stmt;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitReadVarExpr(ast, context) {\n if (ast.name) {\n this.varNames.add(ast.name);\n }\n return null;\n }\n}\nfunction _ReadVarVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n _ReadVarVisitor.prototype.varNames;\n}\n/**\n * @param {?} stmts\n * @return {?}\n */\nexport function collectExternalReferences(stmts) {\n const /** @type {?} */ visitor = new _FindExternalReferencesVisitor();\n visitor.visitAllStatements(stmts, null);\n return visitor.externalReferences;\n}\nclass _FindExternalReferencesVisitor extends RecursiveAstVisitor {\n constructor() {\n super(...arguments);\n this.externalReferences = [];\n }\n /**\n * @param {?} e\n * @param {?} context\n * @return {?}\n */\n visitExternalExpr(e, context) {\n this.externalReferences.push(e.value);\n return super.visitExternalExpr(e, context);\n }\n}\nfunction _FindExternalReferencesVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n _FindExternalReferencesVisitor.prototype.externalReferences;\n}\n/**\n * @param {?} stmt\n * @param {?} sourceSpan\n * @return {?}\n */\nexport function applySourceSpanToStatementIfNeeded(stmt, sourceSpan) {\n if (!sourceSpan) {\n return stmt;\n }\n const /** @type {?} */ transformer = new _ApplySourceSpanTransformer(sourceSpan);\n return stmt.visitStatement(transformer, null);\n}\n/**\n * @param {?} expr\n * @param {?} sourceSpan\n * @return {?}\n */\nexport function applySourceSpanToExpressionIfNeeded(expr, sourceSpan) {\n if (!sourceSpan) {\n return expr;\n }\n const /** @type {?} */ transformer = new _ApplySourceSpanTransformer(sourceSpan);\n return expr.visitExpression(transformer, null);\n}\nclass _ApplySourceSpanTransformer extends AstTransformer {\n /**\n * @param {?} sourceSpan\n */\n constructor(sourceSpan) {\n super();\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} obj\n * @return {?}\n */\n _clone(obj) {\n const /** @type {?} */ clone = Object.create(obj.constructor.prototype);\n for (let /** @type {?} */ prop in obj) {\n clone[prop] = obj[prop];\n }\n return clone;\n }\n /**\n * @param {?} expr\n * @param {?} context\n * @return {?}\n */\n transformExpr(expr, context) {\n if (!expr.sourceSpan) {\n expr = this._clone(expr);\n expr.sourceSpan = this.sourceSpan;\n }\n return expr;\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n transformStmt(stmt, context) {\n if (!stmt.sourceSpan) {\n stmt = this._clone(stmt);\n stmt.sourceSpan = this.sourceSpan;\n }\n return stmt;\n }\n}\nfunction _ApplySourceSpanTransformer_tsickle_Closure_declarations() {\n /** @type {?} */\n _ApplySourceSpanTransformer.prototype.sourceSpan;\n}\n/**\n * @param {?} name\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\nexport function variable(name, type, sourceSpan) {\n return new ReadVarExpr(name, type, sourceSpan);\n}\n/**\n * @param {?} id\n * @param {?=} typeParams\n * @param {?=} sourceSpan\n * @return {?}\n */\nexport function importExpr(id, typeParams = null, sourceSpan) {\n return new ExternalExpr(id, null, typeParams, sourceSpan);\n}\n/**\n * @param {?} id\n * @param {?=} typeParams\n * @param {?=} typeModifiers\n * @return {?}\n */\nexport function importType(id, typeParams = null, typeModifiers = null) {\n return id != null ? expressionType(importExpr(id, typeParams, null), typeModifiers) : null;\n}\n/**\n * @param {?} expr\n * @param {?=} typeModifiers\n * @return {?}\n */\nexport function expressionType(expr, typeModifiers = null) {\n return new ExpressionType(expr, typeModifiers);\n}\n/**\n * @param {?} values\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\nexport function literalArr(values, type, sourceSpan) {\n return new LiteralArrayExpr(values, type, sourceSpan);\n}\n/**\n * @param {?} values\n * @param {?=} type\n * @return {?}\n */\nexport function literalMap(values, type = null) {\n return new LiteralMapExpr(values.map(e => new LiteralMapEntry(e.key, e.value, e.quoted)), type, null);\n}\n/**\n * @param {?} expr\n * @param {?=} sourceSpan\n * @return {?}\n */\nexport function not(expr, sourceSpan) {\n return new NotExpr(expr, sourceSpan);\n}\n/**\n * @param {?} expr\n * @param {?=} sourceSpan\n * @return {?}\n */\nexport function assertNotNull(expr, sourceSpan) {\n return new AssertNotNull(expr, sourceSpan);\n}\n/**\n * @param {?} params\n * @param {?} body\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\nexport function fn(params, body, type, sourceSpan) {\n return new FunctionExpr(params, body, type, sourceSpan);\n}\n/**\n * @param {?} value\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\nexport function literal(value, type, sourceSpan) {\n return new LiteralExpr(value, type, sourceSpan);\n}\n//# sourceMappingURL=output_ast.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { tokenName, tokenReference } from './compile_metadata';\nimport { Identifiers, createTokenForExternalReference } from './identifiers';\nimport { ParseError } from './parse_util';\nimport { ProviderAst, ProviderAstType } from './template_parser/template_ast';\nexport class ProviderError extends ParseError {\n /**\n * @param {?} message\n * @param {?} span\n */\n constructor(message, span) { super(span, message); }\n}\n/**\n * @record\n */\nexport function QueryWithId() { }\nfunction QueryWithId_tsickle_Closure_declarations() {\n /** @type {?} */\n QueryWithId.prototype.meta;\n /** @type {?} */\n QueryWithId.prototype.queryId;\n}\nexport class ProviderViewContext {\n /**\n * @param {?} reflector\n * @param {?} component\n */\n constructor(reflector, component) {\n this.reflector = reflector;\n this.component = component;\n this.errors = [];\n this.viewQueries = _getViewQueries(component);\n this.viewProviders = new Map();\n component.viewProviders.forEach((provider) => {\n if (this.viewProviders.get(tokenReference(provider.token)) == null) {\n this.viewProviders.set(tokenReference(provider.token), true);\n }\n });\n }\n}\nfunction ProviderViewContext_tsickle_Closure_declarations() {\n /**\n * \\@internal\n * @type {?}\n */\n ProviderViewContext.prototype.viewQueries;\n /**\n * \\@internal\n * @type {?}\n */\n ProviderViewContext.prototype.viewProviders;\n /** @type {?} */\n ProviderViewContext.prototype.errors;\n /** @type {?} */\n ProviderViewContext.prototype.reflector;\n /** @type {?} */\n ProviderViewContext.prototype.component;\n}\nexport class ProviderElementContext {\n /**\n * @param {?} viewContext\n * @param {?} _parent\n * @param {?} _isViewRoot\n * @param {?} _directiveAsts\n * @param {?} attrs\n * @param {?} refs\n * @param {?} isTemplate\n * @param {?} contentQueryStartId\n * @param {?} _sourceSpan\n */\n constructor(viewContext, _parent, _isViewRoot, _directiveAsts, attrs, refs, isTemplate, contentQueryStartId, _sourceSpan) {\n this.viewContext = viewContext;\n this._parent = _parent;\n this._isViewRoot = _isViewRoot;\n this._directiveAsts = _directiveAsts;\n this._sourceSpan = _sourceSpan;\n this._transformedProviders = new Map();\n this._seenProviders = new Map();\n this._queriedTokens = new Map();\n this.transformedHasViewContainer = false;\n this._attrs = {};\n attrs.forEach((attrAst) => this._attrs[attrAst.name] = attrAst.value);\n const /** @type {?} */ directivesMeta = _directiveAsts.map(directiveAst => directiveAst.directive);\n this._allProviders =\n _resolveProvidersFromDirectives(directivesMeta, _sourceSpan, viewContext.errors);\n this._contentQueries = _getContentQueries(contentQueryStartId, directivesMeta);\n Array.from(this._allProviders.values()).forEach((provider) => {\n this._addQueryReadsTo(provider.token, provider.token, this._queriedTokens);\n });\n if (isTemplate) {\n const /** @type {?} */ templateRefId = createTokenForExternalReference(this.viewContext.reflector, Identifiers.TemplateRef);\n this._addQueryReadsTo(templateRefId, templateRefId, this._queriedTokens);\n }\n refs.forEach((refAst) => {\n let /** @type {?} */ defaultQueryValue = refAst.value ||\n createTokenForExternalReference(this.viewContext.reflector, Identifiers.ElementRef);\n this._addQueryReadsTo({ value: refAst.name }, defaultQueryValue, this._queriedTokens);\n });\n if (this._queriedTokens.get(this.viewContext.reflector.resolveExternalReference(Identifiers.ViewContainerRef))) {\n this.transformedHasViewContainer = true;\n }\n // create the providers that we know are eager first\n Array.from(this._allProviders.values()).forEach((provider) => {\n const /** @type {?} */ eager = provider.eager || this._queriedTokens.get(tokenReference(provider.token));\n if (eager) {\n this._getOrCreateLocalProvider(provider.providerType, provider.token, true);\n }\n });\n }\n /**\n * @return {?}\n */\n afterElement() {\n // collect lazy providers\n Array.from(this._allProviders.values()).forEach((provider) => {\n this._getOrCreateLocalProvider(provider.providerType, provider.token, false);\n });\n }\n /**\n * @return {?}\n */\n get transformProviders() {\n // Note: Maps keep their insertion order.\n const /** @type {?} */ lazyProviders = [];\n const /** @type {?} */ eagerProviders = [];\n this._transformedProviders.forEach(provider => {\n if (provider.eager) {\n eagerProviders.push(provider);\n }\n else {\n lazyProviders.push(provider);\n }\n });\n return lazyProviders.concat(eagerProviders);\n }\n /**\n * @return {?}\n */\n get transformedDirectiveAsts() {\n const /** @type {?} */ sortedProviderTypes = this.transformProviders.map(provider => provider.token.identifier);\n const /** @type {?} */ sortedDirectives = this._directiveAsts.slice();\n sortedDirectives.sort((dir1, dir2) => sortedProviderTypes.indexOf(dir1.directive.type) -\n sortedProviderTypes.indexOf(dir2.directive.type));\n return sortedDirectives;\n }\n /**\n * @return {?}\n */\n get queryMatches() {\n const /** @type {?} */ allMatches = [];\n this._queriedTokens.forEach((matches) => { allMatches.push(...matches); });\n return allMatches;\n }\n /**\n * @param {?} token\n * @param {?} defaultValue\n * @param {?} queryReadTokens\n * @return {?}\n */\n _addQueryReadsTo(token, defaultValue, queryReadTokens) {\n this._getQueriesFor(token).forEach((query) => {\n const /** @type {?} */ queryValue = query.meta.read || defaultValue;\n const /** @type {?} */ tokenRef = tokenReference(queryValue);\n let /** @type {?} */ queryMatches = queryReadTokens.get(tokenRef);\n if (!queryMatches) {\n queryMatches = [];\n queryReadTokens.set(tokenRef, queryMatches);\n }\n queryMatches.push({ queryId: query.queryId, value: queryValue });\n });\n }\n /**\n * @param {?} token\n * @return {?}\n */\n _getQueriesFor(token) {\n const /** @type {?} */ result = [];\n let /** @type {?} */ currentEl = this;\n let /** @type {?} */ distance = 0;\n let /** @type {?} */ queries;\n while (currentEl !== null) {\n queries = currentEl._contentQueries.get(tokenReference(token));\n if (queries) {\n result.push(...queries.filter((query) => query.meta.descendants || distance <= 1));\n }\n if (currentEl._directiveAsts.length > 0) {\n distance++;\n }\n currentEl = currentEl._parent;\n }\n queries = this.viewContext.viewQueries.get(tokenReference(token));\n if (queries) {\n result.push(...queries);\n }\n return result;\n }\n /**\n * @param {?} requestingProviderType\n * @param {?} token\n * @param {?} eager\n * @return {?}\n */\n _getOrCreateLocalProvider(requestingProviderType, token, eager) {\n const /** @type {?} */ resolvedProvider = this._allProviders.get(tokenReference(token));\n if (!resolvedProvider || ((requestingProviderType === ProviderAstType.Directive ||\n requestingProviderType === ProviderAstType.PublicService) &&\n resolvedProvider.providerType === ProviderAstType.PrivateService) ||\n ((requestingProviderType === ProviderAstType.PrivateService ||\n requestingProviderType === ProviderAstType.PublicService) &&\n resolvedProvider.providerType === ProviderAstType.Builtin)) {\n return null;\n }\n let /** @type {?} */ transformedProviderAst = this._transformedProviders.get(tokenReference(token));\n if (transformedProviderAst) {\n return transformedProviderAst;\n }\n if (this._seenProviders.get(tokenReference(token)) != null) {\n this.viewContext.errors.push(new ProviderError(`Cannot instantiate cyclic dependency! ${tokenName(token)}`, this._sourceSpan));\n return null;\n }\n this._seenProviders.set(tokenReference(token), true);\n const /** @type {?} */ transformedProviders = resolvedProvider.providers.map((provider) => {\n let /** @type {?} */ transformedUseValue = provider.useValue;\n let /** @type {?} */ transformedUseExisting = /** @type {?} */ ((provider.useExisting));\n let /** @type {?} */ transformedDeps = /** @type {?} */ ((undefined));\n if (provider.useExisting != null) {\n const /** @type {?} */ existingDiDep = /** @type {?} */ ((this._getDependency(resolvedProvider.providerType, { token: provider.useExisting }, eager)));\n if (existingDiDep.token != null) {\n transformedUseExisting = existingDiDep.token;\n }\n else {\n transformedUseExisting = /** @type {?} */ ((null));\n transformedUseValue = existingDiDep.value;\n }\n }\n else if (provider.useFactory) {\n const /** @type {?} */ deps = provider.deps || provider.useFactory.diDeps;\n transformedDeps =\n deps.map((dep) => /** @type {?} */ ((this._getDependency(resolvedProvider.providerType, dep, eager))));\n }\n else if (provider.useClass) {\n const /** @type {?} */ deps = provider.deps || provider.useClass.diDeps;\n transformedDeps =\n deps.map((dep) => /** @type {?} */ ((this._getDependency(resolvedProvider.providerType, dep, eager))));\n }\n return _transformProvider(provider, {\n useExisting: transformedUseExisting,\n useValue: transformedUseValue,\n deps: transformedDeps\n });\n });\n transformedProviderAst =\n _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders });\n this._transformedProviders.set(tokenReference(token), transformedProviderAst);\n return transformedProviderAst;\n }\n /**\n * @param {?} requestingProviderType\n * @param {?} dep\n * @param {?=} eager\n * @return {?}\n */\n _getLocalDependency(requestingProviderType, dep, eager = false) {\n if (dep.isAttribute) {\n const /** @type {?} */ attrValue = this._attrs[/** @type {?} */ ((dep.token)).value];\n return { isValue: true, value: attrValue == null ? null : attrValue };\n }\n if (dep.token != null) {\n // access builtints\n if ((requestingProviderType === ProviderAstType.Directive ||\n requestingProviderType === ProviderAstType.Component)) {\n if (tokenReference(dep.token) ===\n this.viewContext.reflector.resolveExternalReference(Identifiers.Renderer) ||\n tokenReference(dep.token) ===\n this.viewContext.reflector.resolveExternalReference(Identifiers.ElementRef) ||\n tokenReference(dep.token) ===\n this.viewContext.reflector.resolveExternalReference(Identifiers.ChangeDetectorRef) ||\n tokenReference(dep.token) ===\n this.viewContext.reflector.resolveExternalReference(Identifiers.TemplateRef)) {\n return dep;\n }\n if (tokenReference(dep.token) ===\n this.viewContext.reflector.resolveExternalReference(Identifiers.ViewContainerRef)) {\n (/** @type {?} */ (this)).transformedHasViewContainer = true;\n }\n }\n // access the injector\n if (tokenReference(dep.token) ===\n this.viewContext.reflector.resolveExternalReference(Identifiers.Injector)) {\n return dep;\n }\n // access providers\n if (this._getOrCreateLocalProvider(requestingProviderType, dep.token, eager) != null) {\n return dep;\n }\n }\n return null;\n }\n /**\n * @param {?} requestingProviderType\n * @param {?} dep\n * @param {?=} eager\n * @return {?}\n */\n _getDependency(requestingProviderType, dep, eager = false) {\n let /** @type {?} */ currElement = this;\n let /** @type {?} */ currEager = eager;\n let /** @type {?} */ result = null;\n if (!dep.isSkipSelf) {\n result = this._getLocalDependency(requestingProviderType, dep, eager);\n }\n if (dep.isSelf) {\n if (!result && dep.isOptional) {\n result = { isValue: true, value: null };\n }\n }\n else {\n // check parent elements\n while (!result && currElement._parent) {\n const /** @type {?} */ prevElement = currElement;\n currElement = currElement._parent;\n if (prevElement._isViewRoot) {\n currEager = false;\n }\n result = currElement._getLocalDependency(ProviderAstType.PublicService, dep, currEager);\n }\n // check @Host restriction\n if (!result) {\n if (!dep.isHost || this.viewContext.component.isHost ||\n this.viewContext.component.type.reference === tokenReference(/** @type {?} */ ((dep.token))) ||\n this.viewContext.viewProviders.get(tokenReference(/** @type {?} */ ((dep.token)))) != null) {\n result = dep;\n }\n else {\n result = dep.isOptional ? result = { isValue: true, value: null } : null;\n }\n }\n }\n if (!result) {\n this.viewContext.errors.push(new ProviderError(`No provider for ${tokenName((/** @type {?} */ ((dep.token))))}`, this._sourceSpan));\n }\n return result;\n }\n}\nfunction ProviderElementContext_tsickle_Closure_declarations() {\n /** @type {?} */\n ProviderElementContext.prototype._contentQueries;\n /** @type {?} */\n ProviderElementContext.prototype._transformedProviders;\n /** @type {?} */\n ProviderElementContext.prototype._seenProviders;\n /** @type {?} */\n ProviderElementContext.prototype._allProviders;\n /** @type {?} */\n ProviderElementContext.prototype._attrs;\n /** @type {?} */\n ProviderElementContext.prototype._queriedTokens;\n /** @type {?} */\n ProviderElementContext.prototype.transformedHasViewContainer;\n /** @type {?} */\n ProviderElementContext.prototype.viewContext;\n /** @type {?} */\n ProviderElementContext.prototype._parent;\n /** @type {?} */\n ProviderElementContext.prototype._isViewRoot;\n /** @type {?} */\n ProviderElementContext.prototype._directiveAsts;\n /** @type {?} */\n ProviderElementContext.prototype._sourceSpan;\n}\nexport class NgModuleProviderAnalyzer {\n /**\n * @param {?} reflector\n * @param {?} ngModule\n * @param {?} extraProviders\n * @param {?} sourceSpan\n */\n constructor(reflector, ngModule, extraProviders, sourceSpan) {\n this.reflector = reflector;\n this._transformedProviders = new Map();\n this._seenProviders = new Map();\n this._errors = [];\n this._allProviders = new Map();\n ngModule.transitiveModule.modules.forEach((ngModuleType) => {\n const /** @type {?} */ ngModuleProvider = { token: { identifier: ngModuleType }, useClass: ngModuleType };\n _resolveProviders([ngModuleProvider], ProviderAstType.PublicService, true, sourceSpan, this._errors, this._allProviders);\n });\n _resolveProviders(ngModule.transitiveModule.providers.map(entry => entry.provider).concat(extraProviders), ProviderAstType.PublicService, false, sourceSpan, this._errors, this._allProviders);\n }\n /**\n * @return {?}\n */\n parse() {\n Array.from(this._allProviders.values()).forEach((provider) => {\n this._getOrCreateLocalProvider(provider.token, provider.eager);\n });\n if (this._errors.length > 0) {\n const /** @type {?} */ errorString = this._errors.join('\\n');\n throw new Error(`Provider parse errors:\\n${errorString}`);\n }\n // Note: Maps keep their insertion order.\n const /** @type {?} */ lazyProviders = [];\n const /** @type {?} */ eagerProviders = [];\n this._transformedProviders.forEach(provider => {\n if (provider.eager) {\n eagerProviders.push(provider);\n }\n else {\n lazyProviders.push(provider);\n }\n });\n return lazyProviders.concat(eagerProviders);\n }\n /**\n * @param {?} token\n * @param {?} eager\n * @return {?}\n */\n _getOrCreateLocalProvider(token, eager) {\n const /** @type {?} */ resolvedProvider = this._allProviders.get(tokenReference(token));\n if (!resolvedProvider) {\n return null;\n }\n let /** @type {?} */ transformedProviderAst = this._transformedProviders.get(tokenReference(token));\n if (transformedProviderAst) {\n return transformedProviderAst;\n }\n if (this._seenProviders.get(tokenReference(token)) != null) {\n this._errors.push(new ProviderError(`Cannot instantiate cyclic dependency! ${tokenName(token)}`, resolvedProvider.sourceSpan));\n return null;\n }\n this._seenProviders.set(tokenReference(token), true);\n const /** @type {?} */ transformedProviders = resolvedProvider.providers.map((provider) => {\n let /** @type {?} */ transformedUseValue = provider.useValue;\n let /** @type {?} */ transformedUseExisting = /** @type {?} */ ((provider.useExisting));\n let /** @type {?} */ transformedDeps = /** @type {?} */ ((undefined));\n if (provider.useExisting != null) {\n const /** @type {?} */ existingDiDep = this._getDependency({ token: provider.useExisting }, eager, resolvedProvider.sourceSpan);\n if (existingDiDep.token != null) {\n transformedUseExisting = existingDiDep.token;\n }\n else {\n transformedUseExisting = /** @type {?} */ ((null));\n transformedUseValue = existingDiDep.value;\n }\n }\n else if (provider.useFactory) {\n const /** @type {?} */ deps = provider.deps || provider.useFactory.diDeps;\n transformedDeps =\n deps.map((dep) => this._getDependency(dep, eager, resolvedProvider.sourceSpan));\n }\n else if (provider.useClass) {\n const /** @type {?} */ deps = provider.deps || provider.useClass.diDeps;\n transformedDeps =\n deps.map((dep) => this._getDependency(dep, eager, resolvedProvider.sourceSpan));\n }\n return _transformProvider(provider, {\n useExisting: transformedUseExisting,\n useValue: transformedUseValue,\n deps: transformedDeps\n });\n });\n transformedProviderAst =\n _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders });\n this._transformedProviders.set(tokenReference(token), transformedProviderAst);\n return transformedProviderAst;\n }\n /**\n * @param {?} dep\n * @param {?=} eager\n * @param {?=} requestorSourceSpan\n * @return {?}\n */\n _getDependency(dep, eager = false, requestorSourceSpan) {\n let /** @type {?} */ foundLocal = false;\n if (!dep.isSkipSelf && dep.token != null) {\n // access the injector\n if (tokenReference(dep.token) ===\n this.reflector.resolveExternalReference(Identifiers.Injector) ||\n tokenReference(dep.token) ===\n this.reflector.resolveExternalReference(Identifiers.ComponentFactoryResolver)) {\n foundLocal = true;\n // access providers\n }\n else if (this._getOrCreateLocalProvider(dep.token, eager) != null) {\n foundLocal = true;\n }\n }\n let /** @type {?} */ result = dep;\n if (dep.isSelf && !foundLocal) {\n if (dep.isOptional) {\n result = { isValue: true, value: null };\n }\n else {\n this._errors.push(new ProviderError(`No provider for ${tokenName((/** @type {?} */ ((dep.token))))}`, requestorSourceSpan));\n }\n }\n return result;\n }\n}\nfunction NgModuleProviderAnalyzer_tsickle_Closure_declarations() {\n /** @type {?} */\n NgModuleProviderAnalyzer.prototype._transformedProviders;\n /** @type {?} */\n NgModuleProviderAnalyzer.prototype._seenProviders;\n /** @type {?} */\n NgModuleProviderAnalyzer.prototype._allProviders;\n /** @type {?} */\n NgModuleProviderAnalyzer.prototype._errors;\n /** @type {?} */\n NgModuleProviderAnalyzer.prototype.reflector;\n}\n/**\n * @param {?} provider\n * @param {?} __1\n * @return {?}\n */\nfunction _transformProvider(provider, { useExisting, useValue, deps }) {\n return {\n token: provider.token,\n useClass: provider.useClass,\n useExisting: useExisting,\n useFactory: provider.useFactory,\n useValue: useValue,\n deps: deps,\n multi: provider.multi\n };\n}\n/**\n * @param {?} provider\n * @param {?} __1\n * @return {?}\n */\nfunction _transformProviderAst(provider, { eager, providers }) {\n return new ProviderAst(provider.token, provider.multiProvider, provider.eager || eager, providers, provider.providerType, provider.lifecycleHooks, provider.sourceSpan);\n}\n/**\n * @param {?} directives\n * @param {?} sourceSpan\n * @param {?} targetErrors\n * @return {?}\n */\nfunction _resolveProvidersFromDirectives(directives, sourceSpan, targetErrors) {\n const /** @type {?} */ providersByToken = new Map();\n directives.forEach((directive) => {\n const /** @type {?} */ dirProvider = { token: { identifier: directive.type }, useClass: directive.type };\n _resolveProviders([dirProvider], directive.isComponent ? ProviderAstType.Component : ProviderAstType.Directive, true, sourceSpan, targetErrors, providersByToken);\n });\n // Note: directives need to be able to overwrite providers of a component!\n const /** @type {?} */ directivesWithComponentFirst = directives.filter(dir => dir.isComponent).concat(directives.filter(dir => !dir.isComponent));\n directivesWithComponentFirst.forEach((directive) => {\n _resolveProviders(directive.providers, ProviderAstType.PublicService, false, sourceSpan, targetErrors, providersByToken);\n _resolveProviders(directive.viewProviders, ProviderAstType.PrivateService, false, sourceSpan, targetErrors, providersByToken);\n });\n return providersByToken;\n}\n/**\n * @param {?} providers\n * @param {?} providerType\n * @param {?} eager\n * @param {?} sourceSpan\n * @param {?} targetErrors\n * @param {?} targetProvidersByToken\n * @return {?}\n */\nfunction _resolveProviders(providers, providerType, eager, sourceSpan, targetErrors, targetProvidersByToken) {\n providers.forEach((provider) => {\n let /** @type {?} */ resolvedProvider = targetProvidersByToken.get(tokenReference(provider.token));\n if (resolvedProvider != null && !!resolvedProvider.multiProvider !== !!provider.multi) {\n targetErrors.push(new ProviderError(`Mixing multi and non multi provider is not possible for token ${tokenName(resolvedProvider.token)}`, sourceSpan));\n }\n if (!resolvedProvider) {\n const /** @type {?} */ lifecycleHooks = provider.token.identifier &&\n (/** @type {?} */ (provider.token.identifier)).lifecycleHooks ?\n (/** @type {?} */ (provider.token.identifier)).lifecycleHooks :\n [];\n const /** @type {?} */ isUseValue = !(provider.useClass || provider.useExisting || provider.useFactory);\n resolvedProvider = new ProviderAst(provider.token, !!provider.multi, eager || isUseValue, [provider], providerType, lifecycleHooks, sourceSpan);\n targetProvidersByToken.set(tokenReference(provider.token), resolvedProvider);\n }\n else {\n if (!provider.multi) {\n resolvedProvider.providers.length = 0;\n }\n resolvedProvider.providers.push(provider);\n }\n });\n}\n/**\n * @param {?} component\n * @return {?}\n */\nfunction _getViewQueries(component) {\n // Note: queries start with id 1 so we can use the number in a Bloom filter!\n let /** @type {?} */ viewQueryId = 1;\n const /** @type {?} */ viewQueries = new Map();\n if (component.viewQueries) {\n component.viewQueries.forEach((query) => _addQueryToTokenMap(viewQueries, { meta: query, queryId: viewQueryId++ }));\n }\n return viewQueries;\n}\n/**\n * @param {?} contentQueryStartId\n * @param {?} directives\n * @return {?}\n */\nfunction _getContentQueries(contentQueryStartId, directives) {\n let /** @type {?} */ contentQueryId = contentQueryStartId;\n const /** @type {?} */ contentQueries = new Map();\n directives.forEach((directive, directiveIndex) => {\n if (directive.queries) {\n directive.queries.forEach((query) => _addQueryToTokenMap(contentQueries, { meta: query, queryId: contentQueryId++ }));\n }\n });\n return contentQueries;\n}\n/**\n * @param {?} map\n * @param {?} query\n * @return {?}\n */\nfunction _addQueryToTokenMap(map, query) {\n query.meta.selectors.forEach((token) => {\n let /** @type {?} */ entry = map.get(tokenReference(token));\n if (!entry) {\n entry = [];\n map.set(tokenReference(token), entry);\n }\n entry.push(query);\n });\n}\n//# sourceMappingURL=provider_analyzer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { visitValue } from '../util';\nimport * as o from './output_ast';\nexport const /** @type {?} */ QUOTED_KEYS = '$quoted$';\n/**\n * @param {?} ctx\n * @param {?} value\n * @param {?=} type\n * @return {?}\n */\nexport function convertValueToOutputAst(ctx, value, type = null) {\n return visitValue(value, new _ValueOutputAstTransformer(ctx), type);\n}\nclass _ValueOutputAstTransformer {\n /**\n * @param {?} ctx\n */\n constructor(ctx) {\n this.ctx = ctx;\n }\n /**\n * @param {?} arr\n * @param {?} type\n * @return {?}\n */\n visitArray(arr, type) {\n return o.literalArr(arr.map(value => visitValue(value, this, null)), type);\n }\n /**\n * @param {?} map\n * @param {?} type\n * @return {?}\n */\n visitStringMap(map, type) {\n const /** @type {?} */ entries = [];\n const /** @type {?} */ quotedSet = new Set(map && map[QUOTED_KEYS]);\n Object.keys(map).forEach(key => {\n entries.push(new o.LiteralMapEntry(key, visitValue(map[key], this, null), quotedSet.has(key)));\n });\n return new o.LiteralMapExpr(entries, type);\n }\n /**\n * @param {?} value\n * @param {?} type\n * @return {?}\n */\n visitPrimitive(value, type) { return o.literal(value, type); }\n /**\n * @param {?} value\n * @param {?} type\n * @return {?}\n */\n visitOther(value, type) {\n if (value instanceof o.Expression) {\n return value;\n }\n else {\n return this.ctx.importExpr(value);\n }\n }\n}\nfunction _ValueOutputAstTransformer_tsickle_Closure_declarations() {\n /** @type {?} */\n _ValueOutputAstTransformer.prototype.ctx;\n}\n//# sourceMappingURL=value_util.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Identifiers, createTokenForExternalReference } from '../identifiers';\nimport { LifecycleHooks } from '../lifecycle_reflector';\nimport * as o from '../output/output_ast';\nimport { convertValueToOutputAst } from '../output/value_util';\nimport { ProviderAstType } from '../template_parser/template_ast';\n/**\n * @param {?} ctx\n * @param {?} providerAst\n * @return {?}\n */\nexport function providerDef(ctx, providerAst) {\n let /** @type {?} */ flags = 0 /* None */;\n if (!providerAst.eager) {\n flags |= 4096 /* LazyProvider */;\n }\n if (providerAst.providerType === ProviderAstType.PrivateService) {\n flags |= 8192 /* PrivateProvider */;\n }\n providerAst.lifecycleHooks.forEach((lifecycleHook) => {\n // for regular providers, we only support ngOnDestroy\n if (lifecycleHook === LifecycleHooks.OnDestroy ||\n providerAst.providerType === ProviderAstType.Directive ||\n providerAst.providerType === ProviderAstType.Component) {\n flags |= lifecycleHookToNodeFlag(lifecycleHook);\n }\n });\n const { providerExpr, flags: providerFlags, depsExpr } = providerAst.multiProvider ?\n multiProviderDef(ctx, flags, providerAst.providers) :\n singleProviderDef(ctx, flags, providerAst.providerType, providerAst.providers[0]);\n return {\n providerExpr,\n flags: providerFlags, depsExpr,\n tokenExpr: tokenExpr(ctx, providerAst.token),\n };\n}\n/**\n * @param {?} ctx\n * @param {?} flags\n * @param {?} providers\n * @return {?}\n */\nfunction multiProviderDef(ctx, flags, providers) {\n const /** @type {?} */ allDepDefs = [];\n const /** @type {?} */ allParams = [];\n const /** @type {?} */ exprs = providers.map((provider, providerIndex) => {\n let /** @type {?} */ expr;\n if (provider.useClass) {\n const /** @type {?} */ depExprs = convertDeps(providerIndex, provider.deps || provider.useClass.diDeps);\n expr = ctx.importExpr(provider.useClass.reference).instantiate(depExprs);\n }\n else if (provider.useFactory) {\n const /** @type {?} */ depExprs = convertDeps(providerIndex, provider.deps || provider.useFactory.diDeps);\n expr = ctx.importExpr(provider.useFactory.reference).callFn(depExprs);\n }\n else if (provider.useExisting) {\n const /** @type {?} */ depExprs = convertDeps(providerIndex, [{ token: provider.useExisting }]);\n expr = depExprs[0];\n }\n else {\n expr = convertValueToOutputAst(ctx, provider.useValue);\n }\n return expr;\n });\n const /** @type {?} */ providerExpr = o.fn(allParams, [new o.ReturnStatement(o.literalArr(exprs))], o.INFERRED_TYPE);\n return {\n providerExpr,\n flags: flags | 1024 /* TypeFactoryProvider */,\n depsExpr: o.literalArr(allDepDefs)\n };\n /**\n * @param {?} providerIndex\n * @param {?} deps\n * @return {?}\n */\n function convertDeps(providerIndex, deps) {\n return deps.map((dep, depIndex) => {\n const /** @type {?} */ paramName = `p${providerIndex}_${depIndex}`;\n allParams.push(new o.FnParam(paramName, o.DYNAMIC_TYPE));\n allDepDefs.push(depDef(ctx, dep));\n return o.variable(paramName);\n });\n }\n}\n/**\n * @param {?} ctx\n * @param {?} flags\n * @param {?} providerType\n * @param {?} providerMeta\n * @return {?}\n */\nfunction singleProviderDef(ctx, flags, providerType, providerMeta) {\n let /** @type {?} */ providerExpr;\n let /** @type {?} */ deps;\n if (providerType === ProviderAstType.Directive || providerType === ProviderAstType.Component) {\n providerExpr = ctx.importExpr(/** @type {?} */ ((providerMeta.useClass)).reference);\n flags |= 16384 /* TypeDirective */;\n deps = providerMeta.deps || /** @type {?} */ ((providerMeta.useClass)).diDeps;\n }\n else {\n if (providerMeta.useClass) {\n providerExpr = ctx.importExpr(providerMeta.useClass.reference);\n flags |= 512 /* TypeClassProvider */;\n deps = providerMeta.deps || providerMeta.useClass.diDeps;\n }\n else if (providerMeta.useFactory) {\n providerExpr = ctx.importExpr(providerMeta.useFactory.reference);\n flags |= 1024 /* TypeFactoryProvider */;\n deps = providerMeta.deps || providerMeta.useFactory.diDeps;\n }\n else if (providerMeta.useExisting) {\n providerExpr = o.NULL_EXPR;\n flags |= 2048 /* TypeUseExistingProvider */;\n deps = [{ token: providerMeta.useExisting }];\n }\n else {\n providerExpr = convertValueToOutputAst(ctx, providerMeta.useValue);\n flags |= 256 /* TypeValueProvider */;\n deps = [];\n }\n }\n const /** @type {?} */ depsExpr = o.literalArr(deps.map(dep => depDef(ctx, dep)));\n return { providerExpr, flags, depsExpr };\n}\n/**\n * @param {?} ctx\n * @param {?} tokenMeta\n * @return {?}\n */\nfunction tokenExpr(ctx, tokenMeta) {\n return tokenMeta.identifier ? ctx.importExpr(tokenMeta.identifier.reference) :\n o.literal(tokenMeta.value);\n}\n/**\n * @param {?} ctx\n * @param {?} dep\n * @return {?}\n */\nexport function depDef(ctx, dep) {\n // Note: the following fields have already been normalized out by provider_analyzer:\n // - isAttribute, isSelf, isHost\n const /** @type {?} */ expr = dep.isValue ? convertValueToOutputAst(ctx, dep.value) : tokenExpr(ctx, /** @type {?} */ ((dep.token)));\n let /** @type {?} */ flags = 0 /* None */;\n if (dep.isSkipSelf) {\n flags |= 1 /* SkipSelf */;\n }\n if (dep.isOptional) {\n flags |= 2 /* Optional */;\n }\n if (dep.isValue) {\n flags |= 8 /* Value */;\n }\n return flags === 0 /* None */ ? expr : o.literalArr([o.literal(flags), expr]);\n}\n/**\n * @param {?} lifecycleHook\n * @return {?}\n */\nexport function lifecycleHookToNodeFlag(lifecycleHook) {\n let /** @type {?} */ nodeFlag = 0 /* None */;\n switch (lifecycleHook) {\n case LifecycleHooks.AfterContentChecked:\n nodeFlag = 2097152 /* AfterContentChecked */;\n break;\n case LifecycleHooks.AfterContentInit:\n nodeFlag = 1048576 /* AfterContentInit */;\n break;\n case LifecycleHooks.AfterViewChecked:\n nodeFlag = 8388608 /* AfterViewChecked */;\n break;\n case LifecycleHooks.AfterViewInit:\n nodeFlag = 4194304 /* AfterViewInit */;\n break;\n case LifecycleHooks.DoCheck:\n nodeFlag = 262144 /* DoCheck */;\n break;\n case LifecycleHooks.OnChanges:\n nodeFlag = 524288 /* OnChanges */;\n break;\n case LifecycleHooks.OnDestroy:\n nodeFlag = 131072 /* OnDestroy */;\n break;\n case LifecycleHooks.OnInit:\n nodeFlag = 65536 /* OnInit */;\n break;\n }\n return nodeFlag;\n}\n/**\n * @param {?} reflector\n * @param {?} ctx\n * @param {?} flags\n * @param {?} entryComponents\n * @return {?}\n */\nexport function componentFactoryResolverProviderDef(reflector, ctx, flags, entryComponents) {\n const /** @type {?} */ entryComponentFactories = entryComponents.map((entryComponent) => ctx.importExpr(entryComponent.componentFactory));\n const /** @type {?} */ token = createTokenForExternalReference(reflector, Identifiers.ComponentFactoryResolver);\n const /** @type {?} */ classMeta = {\n diDeps: [\n { isValue: true, value: o.literalArr(entryComponentFactories) },\n { token: token, isSkipSelf: true, isOptional: true },\n { token: createTokenForExternalReference(reflector, Identifiers.NgModuleRef) },\n ],\n lifecycleHooks: [],\n reference: reflector.resolveExternalReference(Identifiers.CodegenComponentFactoryResolver)\n };\n const { providerExpr, flags: providerFlags, depsExpr } = singleProviderDef(ctx, flags, ProviderAstType.PrivateService, {\n token,\n multi: false,\n useClass: classMeta,\n });\n return { providerExpr, flags: providerFlags, depsExpr, tokenExpr: tokenExpr(ctx, token) };\n}\n//# sourceMappingURL=provider_compiler.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { identifierName } from './compile_metadata';\nimport { Identifiers } from './identifiers';\nimport * as o from './output/output_ast';\nimport { typeSourceSpan } from './parse_util';\nimport { NgModuleProviderAnalyzer } from './provider_analyzer';\nimport { componentFactoryResolverProviderDef, providerDef } from './view_compiler/provider_compiler';\nexport class NgModuleCompileResult {\n /**\n * @param {?} ngModuleFactoryVar\n */\n constructor(ngModuleFactoryVar) {\n this.ngModuleFactoryVar = ngModuleFactoryVar;\n }\n}\nfunction NgModuleCompileResult_tsickle_Closure_declarations() {\n /** @type {?} */\n NgModuleCompileResult.prototype.ngModuleFactoryVar;\n}\nconst /** @type {?} */ LOG_VAR = o.variable('_l');\nexport class NgModuleCompiler {\n /**\n * @param {?} reflector\n */\n constructor(reflector) {\n this.reflector = reflector;\n }\n /**\n * @param {?} ctx\n * @param {?} ngModuleMeta\n * @param {?} extraProviders\n * @return {?}\n */\n compile(ctx, ngModuleMeta, extraProviders) {\n const /** @type {?} */ sourceSpan = typeSourceSpan('NgModule', ngModuleMeta.type);\n const /** @type {?} */ entryComponentFactories = ngModuleMeta.transitiveModule.entryComponents;\n const /** @type {?} */ bootstrapComponents = ngModuleMeta.bootstrapComponents;\n const /** @type {?} */ providerParser = new NgModuleProviderAnalyzer(this.reflector, ngModuleMeta, extraProviders, sourceSpan);\n const /** @type {?} */ providerDefs = [componentFactoryResolverProviderDef(this.reflector, ctx, 0 /* None */, entryComponentFactories)]\n .concat(providerParser.parse().map((provider) => providerDef(ctx, provider)))\n .map(({ providerExpr, depsExpr, flags, tokenExpr }) => {\n return o.importExpr(Identifiers.moduleProviderDef).callFn([\n o.literal(flags), tokenExpr, providerExpr, depsExpr\n ]);\n });\n const /** @type {?} */ ngModuleDef = o.importExpr(Identifiers.moduleDef).callFn([o.literalArr(providerDefs)]);\n const /** @type {?} */ ngModuleDefFactory = o.fn([new o.FnParam(/** @type {?} */ ((LOG_VAR.name)))], [new o.ReturnStatement(ngModuleDef)], o.INFERRED_TYPE);\n const /** @type {?} */ ngModuleFactoryVar = `${identifierName(ngModuleMeta.type)}NgFactory`;\n this._createNgModuleFactory(ctx, ngModuleMeta.type.reference, o.importExpr(Identifiers.createModuleFactory).callFn([\n ctx.importExpr(ngModuleMeta.type.reference),\n o.literalArr(bootstrapComponents.map(id => ctx.importExpr(id.reference))),\n ngModuleDefFactory\n ]));\n if (ngModuleMeta.id) {\n const /** @type {?} */ registerFactoryStmt = o.importExpr(Identifiers.RegisterModuleFactoryFn)\n .callFn([o.literal(ngModuleMeta.id), o.variable(ngModuleFactoryVar)])\n .toStmt();\n ctx.statements.push(registerFactoryStmt);\n }\n return new NgModuleCompileResult(ngModuleFactoryVar);\n }\n /**\n * @param {?} ctx\n * @param {?} ngModuleReference\n * @return {?}\n */\n createStub(ctx, ngModuleReference) {\n this._createNgModuleFactory(ctx, ngModuleReference, o.NULL_EXPR);\n }\n /**\n * @param {?} ctx\n * @param {?} reference\n * @param {?} value\n * @return {?}\n */\n _createNgModuleFactory(ctx, reference, value) {\n const /** @type {?} */ ngModuleFactoryVar = `${identifierName({ reference: reference })}NgFactory`;\n const /** @type {?} */ ngModuleFactoryStmt = o.variable(ngModuleFactoryVar)\n .set(value)\n .toDeclStmt(o.importType(Identifiers.NgModuleFactory, [/** @type {?} */ ((o.expressionType(ctx.importExpr(reference))))], [o.TypeModifier.Const]), [o.StmtModifier.Final, o.StmtModifier.Exported]);\n ctx.statements.push(ngModuleFactoryStmt);\n }\n}\nfunction NgModuleCompiler_tsickle_Closure_declarations() {\n /** @type {?} */\n NgModuleCompiler.prototype.reflector;\n}\n//# sourceMappingURL=ng_module_compiler.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { createNgModule } from './core';\nimport { findLast } from './directive_resolver';\nimport { stringify } from './util';\n/**\n * Resolves types to {\\@link NgModule}.\n */\nexport class NgModuleResolver {\n /**\n * @param {?} _reflector\n */\n constructor(_reflector) {\n this._reflector = _reflector;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n isNgModule(type) { return this._reflector.annotations(type).some(createNgModule.isTypeOf); }\n /**\n * @param {?} type\n * @param {?=} throwIfNotFound\n * @return {?}\n */\n resolve(type, throwIfNotFound = true) {\n const /** @type {?} */ ngModuleMeta = findLast(this._reflector.annotations(type), createNgModule.isTypeOf);\n if (ngModuleMeta) {\n return ngModuleMeta;\n }\n else {\n if (throwIfNotFound) {\n throw new Error(`No NgModule metadata found for '${stringify(type)}'.`);\n }\n return null;\n }\n }\n}\nfunction NgModuleResolver_tsickle_Closure_declarations() {\n /** @type {?} */\n NgModuleResolver.prototype._reflector;\n}\n//# sourceMappingURL=ng_module_resolver.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { utf8Encode } from '../util';\n// https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit\nconst /** @type {?} */ VERSION = 3;\nconst /** @type {?} */ JS_B64_PREFIX = '# sourceMappingURL=data:application/json;base64,';\nexport class SourceMapGenerator {\n /**\n * @param {?=} file\n */\n constructor(file = null) {\n this.file = file;\n this.sourcesContent = new Map();\n this.lines = [];\n this.lastCol0 = 0;\n this.hasMappings = false;\n }\n /**\n * @param {?} url\n * @param {?=} content\n * @return {?}\n */\n addSource(url, content = null) {\n if (!this.sourcesContent.has(url)) {\n this.sourcesContent.set(url, content);\n }\n return this;\n }\n /**\n * @return {?}\n */\n addLine() {\n this.lines.push([]);\n this.lastCol0 = 0;\n return this;\n }\n /**\n * @param {?} col0\n * @param {?=} sourceUrl\n * @param {?=} sourceLine0\n * @param {?=} sourceCol0\n * @return {?}\n */\n addMapping(col0, sourceUrl, sourceLine0, sourceCol0) {\n if (!this.currentLine) {\n throw new Error(`A line must be added before mappings can be added`);\n }\n if (sourceUrl != null && !this.sourcesContent.has(sourceUrl)) {\n throw new Error(`Unknown source file \"${sourceUrl}\"`);\n }\n if (col0 == null) {\n throw new Error(`The column in the generated code must be provided`);\n }\n if (col0 < this.lastCol0) {\n throw new Error(`Mapping should be added in output order`);\n }\n if (sourceUrl && (sourceLine0 == null || sourceCol0 == null)) {\n throw new Error(`The source location must be provided when a source url is provided`);\n }\n this.hasMappings = true;\n this.lastCol0 = col0;\n this.currentLine.push({ col0, sourceUrl, sourceLine0, sourceCol0 });\n return this;\n }\n /**\n * @return {?}\n */\n get currentLine() { return this.lines.slice(-1)[0]; }\n /**\n * @return {?}\n */\n toJSON() {\n if (!this.hasMappings) {\n return null;\n }\n const /** @type {?} */ sourcesIndex = new Map();\n const /** @type {?} */ sources = [];\n const /** @type {?} */ sourcesContent = [];\n Array.from(this.sourcesContent.keys()).forEach((url, i) => {\n sourcesIndex.set(url, i);\n sources.push(url);\n sourcesContent.push(this.sourcesContent.get(url) || null);\n });\n let /** @type {?} */ mappings = '';\n let /** @type {?} */ lastCol0 = 0;\n let /** @type {?} */ lastSourceIndex = 0;\n let /** @type {?} */ lastSourceLine0 = 0;\n let /** @type {?} */ lastSourceCol0 = 0;\n this.lines.forEach(segments => {\n lastCol0 = 0;\n mappings += segments\n .map(segment => {\n // zero-based starting column of the line in the generated code\n let /** @type {?} */ segAsStr = toBase64VLQ(segment.col0 - lastCol0);\n lastCol0 = segment.col0;\n if (segment.sourceUrl != null) {\n // zero-based index into the “sources” list\n segAsStr +=\n toBase64VLQ(/** @type {?} */ ((sourcesIndex.get(segment.sourceUrl))) - lastSourceIndex);\n lastSourceIndex = /** @type {?} */ ((sourcesIndex.get(segment.sourceUrl)));\n // the zero-based starting line in the original source\n segAsStr += toBase64VLQ(/** @type {?} */ ((segment.sourceLine0)) - lastSourceLine0);\n lastSourceLine0 = /** @type {?} */ ((segment.sourceLine0));\n // the zero-based starting column in the original source\n segAsStr += toBase64VLQ(/** @type {?} */ ((segment.sourceCol0)) - lastSourceCol0);\n lastSourceCol0 = /** @type {?} */ ((segment.sourceCol0));\n }\n return segAsStr;\n })\n .join(',');\n mappings += ';';\n });\n mappings = mappings.slice(0, -1);\n return {\n 'file': this.file || '',\n 'version': VERSION,\n 'sourceRoot': '',\n 'sources': sources,\n 'sourcesContent': sourcesContent,\n 'mappings': mappings,\n };\n }\n /**\n * @return {?}\n */\n toJsComment() {\n return this.hasMappings ? '//' + JS_B64_PREFIX + toBase64String(JSON.stringify(this, null, 0)) :\n '';\n }\n}\nfunction SourceMapGenerator_tsickle_Closure_declarations() {\n /** @type {?} */\n SourceMapGenerator.prototype.sourcesContent;\n /** @type {?} */\n SourceMapGenerator.prototype.lines;\n /** @type {?} */\n SourceMapGenerator.prototype.lastCol0;\n /** @type {?} */\n SourceMapGenerator.prototype.hasMappings;\n /** @type {?} */\n SourceMapGenerator.prototype.file;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nexport function toBase64String(value) {\n let /** @type {?} */ b64 = '';\n value = utf8Encode(value);\n for (let /** @type {?} */ i = 0; i < value.length;) {\n const /** @type {?} */ i1 = value.charCodeAt(i++);\n const /** @type {?} */ i2 = value.charCodeAt(i++);\n const /** @type {?} */ i3 = value.charCodeAt(i++);\n b64 += toBase64Digit(i1 >> 2);\n b64 += toBase64Digit(((i1 & 3) << 4) | (isNaN(i2) ? 0 : i2 >> 4));\n b64 += isNaN(i2) ? '=' : toBase64Digit(((i2 & 15) << 2) | (i3 >> 6));\n b64 += isNaN(i2) || isNaN(i3) ? '=' : toBase64Digit(i3 & 63);\n }\n return b64;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction toBase64VLQ(value) {\n value = value < 0 ? ((-value) << 1) + 1 : value << 1;\n let /** @type {?} */ out = '';\n do {\n let /** @type {?} */ digit = value & 31;\n value = value >> 5;\n if (value > 0) {\n digit = digit | 32;\n }\n out += toBase64Digit(digit);\n } while (value > 0);\n return out;\n}\nconst /** @type {?} */ B64_DIGITS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n/**\n * @param {?} value\n * @return {?}\n */\nfunction toBase64Digit(value) {\n if (value < 0 || value >= 64) {\n throw new Error(`Can only encode value in the range [0, 63]`);\n }\n return B64_DIGITS[value];\n}\n//# sourceMappingURL=source_map.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as o from './output_ast';\nimport { SourceMapGenerator } from './source_map';\nconst /** @type {?} */ _SINGLE_QUOTE_ESCAPE_STRING_RE = /'|\\\\|\\n|\\r|\\$/g;\nconst /** @type {?} */ _LEGAL_IDENTIFIER_RE = /^[$A-Z_][0-9A-Z_$]*$/i;\nconst /** @type {?} */ _INDENT_WITH = ' ';\nexport const /** @type {?} */ CATCH_ERROR_VAR = o.variable('error', null, null);\nexport const /** @type {?} */ CATCH_STACK_VAR = o.variable('stack', null, null);\n/**\n * @record\n */\nexport function OutputEmitter() { }\nfunction OutputEmitter_tsickle_Closure_declarations() {\n /** @type {?} */\n OutputEmitter.prototype.emitStatements;\n}\nclass _EmittedLine {\n /**\n * @param {?} indent\n */\n constructor(indent) {\n this.indent = indent;\n this.partsLength = 0;\n this.parts = [];\n this.srcSpans = [];\n }\n}\nfunction _EmittedLine_tsickle_Closure_declarations() {\n /** @type {?} */\n _EmittedLine.prototype.partsLength;\n /** @type {?} */\n _EmittedLine.prototype.parts;\n /** @type {?} */\n _EmittedLine.prototype.srcSpans;\n /** @type {?} */\n _EmittedLine.prototype.indent;\n}\nexport class EmitterVisitorContext {\n /**\n * @param {?} _indent\n */\n constructor(_indent) {\n this._indent = _indent;\n this._classes = [];\n this._preambleLineCount = 0;\n this._lines = [new _EmittedLine(_indent)];\n }\n /**\n * @return {?}\n */\n static createRoot() { return new EmitterVisitorContext(0); }\n /**\n * @return {?}\n */\n get _currentLine() { return this._lines[this._lines.length - 1]; }\n /**\n * @param {?=} from\n * @param {?=} lastPart\n * @return {?}\n */\n println(from, lastPart = '') {\n this.print(from || null, lastPart, true);\n }\n /**\n * @return {?}\n */\n lineIsEmpty() { return this._currentLine.parts.length === 0; }\n /**\n * @return {?}\n */\n lineLength() {\n return this._currentLine.indent * _INDENT_WITH.length + this._currentLine.partsLength;\n }\n /**\n * @param {?} from\n * @param {?} part\n * @param {?=} newLine\n * @return {?}\n */\n print(from, part, newLine = false) {\n if (part.length > 0) {\n this._currentLine.parts.push(part);\n this._currentLine.partsLength += part.length;\n this._currentLine.srcSpans.push(from && from.sourceSpan || null);\n }\n if (newLine) {\n this._lines.push(new _EmittedLine(this._indent));\n }\n }\n /**\n * @return {?}\n */\n removeEmptyLastLine() {\n if (this.lineIsEmpty()) {\n this._lines.pop();\n }\n }\n /**\n * @return {?}\n */\n incIndent() {\n this._indent++;\n if (this.lineIsEmpty()) {\n this._currentLine.indent = this._indent;\n }\n }\n /**\n * @return {?}\n */\n decIndent() {\n this._indent--;\n if (this.lineIsEmpty()) {\n this._currentLine.indent = this._indent;\n }\n }\n /**\n * @param {?} clazz\n * @return {?}\n */\n pushClass(clazz) { this._classes.push(clazz); }\n /**\n * @return {?}\n */\n popClass() { return /** @type {?} */ ((this._classes.pop())); }\n /**\n * @return {?}\n */\n get currentClass() {\n return this._classes.length > 0 ? this._classes[this._classes.length - 1] : null;\n }\n /**\n * @return {?}\n */\n toSource() {\n return this.sourceLines\n .map(l => l.parts.length > 0 ? _createIndent(l.indent) + l.parts.join('') : '')\n .join('\\n');\n }\n /**\n * @param {?} genFilePath\n * @param {?=} startsAtLine\n * @return {?}\n */\n toSourceMapGenerator(genFilePath, startsAtLine = 0) {\n const /** @type {?} */ map = new SourceMapGenerator(genFilePath);\n let /** @type {?} */ firstOffsetMapped = false;\n const /** @type {?} */ mapFirstOffsetIfNeeded = () => {\n if (!firstOffsetMapped) {\n // Add a single space so that tools won't try to load the file from disk.\n // Note: We are using virtual urls like `ng:///`, so we have to\n // provide a content here.\n map.addSource(genFilePath, ' ').addMapping(0, genFilePath, 0, 0);\n firstOffsetMapped = true;\n }\n };\n for (let /** @type {?} */ i = 0; i < startsAtLine; i++) {\n map.addLine();\n mapFirstOffsetIfNeeded();\n }\n this.sourceLines.forEach((line, lineIdx) => {\n map.addLine();\n const /** @type {?} */ spans = line.srcSpans;\n const /** @type {?} */ parts = line.parts;\n let /** @type {?} */ col0 = line.indent * _INDENT_WITH.length;\n let /** @type {?} */ spanIdx = 0;\n // skip leading parts without source spans\n while (spanIdx < spans.length && !spans[spanIdx]) {\n col0 += parts[spanIdx].length;\n spanIdx++;\n }\n if (spanIdx < spans.length && lineIdx === 0 && col0 === 0) {\n firstOffsetMapped = true;\n }\n else {\n mapFirstOffsetIfNeeded();\n }\n while (spanIdx < spans.length) {\n const /** @type {?} */ span = /** @type {?} */ ((spans[spanIdx]));\n const /** @type {?} */ source = span.start.file;\n const /** @type {?} */ sourceLine = span.start.line;\n const /** @type {?} */ sourceCol = span.start.col;\n map.addSource(source.url, source.content)\n .addMapping(col0, source.url, sourceLine, sourceCol);\n col0 += parts[spanIdx].length;\n spanIdx++;\n // assign parts without span or the same span to the previous segment\n while (spanIdx < spans.length && (span === spans[spanIdx] || !spans[spanIdx])) {\n col0 += parts[spanIdx].length;\n spanIdx++;\n }\n }\n });\n return map;\n }\n /**\n * @param {?} count\n * @return {?}\n */\n setPreambleLineCount(count) { return this._preambleLineCount = count; }\n /**\n * @param {?} line\n * @param {?} column\n * @return {?}\n */\n spanOf(line, column) {\n const /** @type {?} */ emittedLine = this._lines[line - this._preambleLineCount];\n if (emittedLine) {\n let /** @type {?} */ columnsLeft = column - _createIndent(emittedLine.indent).length;\n for (let /** @type {?} */ partIndex = 0; partIndex < emittedLine.parts.length; partIndex++) {\n const /** @type {?} */ part = emittedLine.parts[partIndex];\n if (part.length > columnsLeft) {\n return emittedLine.srcSpans[partIndex];\n }\n columnsLeft -= part.length;\n }\n }\n return null;\n }\n /**\n * @return {?}\n */\n get sourceLines() {\n if (this._lines.length && this._lines[this._lines.length - 1].parts.length === 0) {\n return this._lines.slice(0, -1);\n }\n return this._lines;\n }\n}\nfunction EmitterVisitorContext_tsickle_Closure_declarations() {\n /** @type {?} */\n EmitterVisitorContext.prototype._lines;\n /** @type {?} */\n EmitterVisitorContext.prototype._classes;\n /** @type {?} */\n EmitterVisitorContext.prototype._preambleLineCount;\n /** @type {?} */\n EmitterVisitorContext.prototype._indent;\n}\n/**\n * @abstract\n */\nexport class AbstractEmitterVisitor {\n /**\n * @param {?} _escapeDollarInStrings\n */\n constructor(_escapeDollarInStrings) {\n this._escapeDollarInStrings = _escapeDollarInStrings;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitExpressionStmt(stmt, ctx) {\n stmt.expr.visitExpression(this, ctx);\n ctx.println(stmt, ';');\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitReturnStmt(stmt, ctx) {\n ctx.print(stmt, `return `);\n stmt.value.visitExpression(this, ctx);\n ctx.println(stmt, ';');\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitIfStmt(stmt, ctx) {\n ctx.print(stmt, `if (`);\n stmt.condition.visitExpression(this, ctx);\n ctx.print(stmt, `) {`);\n const /** @type {?} */ hasElseCase = stmt.falseCase != null && stmt.falseCase.length > 0;\n if (stmt.trueCase.length <= 1 && !hasElseCase) {\n ctx.print(stmt, ` `);\n this.visitAllStatements(stmt.trueCase, ctx);\n ctx.removeEmptyLastLine();\n ctx.print(stmt, ` `);\n }\n else {\n ctx.println();\n ctx.incIndent();\n this.visitAllStatements(stmt.trueCase, ctx);\n ctx.decIndent();\n if (hasElseCase) {\n ctx.println(stmt, `} else {`);\n ctx.incIndent();\n this.visitAllStatements(stmt.falseCase, ctx);\n ctx.decIndent();\n }\n }\n ctx.println(stmt, `}`);\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitThrowStmt(stmt, ctx) {\n ctx.print(stmt, `throw `);\n stmt.error.visitExpression(this, ctx);\n ctx.println(stmt, `;`);\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitCommentStmt(stmt, ctx) {\n const /** @type {?} */ lines = stmt.comment.split('\\n');\n lines.forEach((line) => { ctx.println(stmt, `// ${line}`); });\n return null;\n }\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n visitWriteVarExpr(expr, ctx) {\n const /** @type {?} */ lineWasEmpty = ctx.lineIsEmpty();\n if (!lineWasEmpty) {\n ctx.print(expr, '(');\n }\n ctx.print(expr, `${expr.name} = `);\n expr.value.visitExpression(this, ctx);\n if (!lineWasEmpty) {\n ctx.print(expr, ')');\n }\n return null;\n }\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n visitWriteKeyExpr(expr, ctx) {\n const /** @type {?} */ lineWasEmpty = ctx.lineIsEmpty();\n if (!lineWasEmpty) {\n ctx.print(expr, '(');\n }\n expr.receiver.visitExpression(this, ctx);\n ctx.print(expr, `[`);\n expr.index.visitExpression(this, ctx);\n ctx.print(expr, `] = `);\n expr.value.visitExpression(this, ctx);\n if (!lineWasEmpty) {\n ctx.print(expr, ')');\n }\n return null;\n }\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n visitWritePropExpr(expr, ctx) {\n const /** @type {?} */ lineWasEmpty = ctx.lineIsEmpty();\n if (!lineWasEmpty) {\n ctx.print(expr, '(');\n }\n expr.receiver.visitExpression(this, ctx);\n ctx.print(expr, `.${expr.name} = `);\n expr.value.visitExpression(this, ctx);\n if (!lineWasEmpty) {\n ctx.print(expr, ')');\n }\n return null;\n }\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n visitInvokeMethodExpr(expr, ctx) {\n expr.receiver.visitExpression(this, ctx);\n let /** @type {?} */ name = expr.name;\n if (expr.builtin != null) {\n name = this.getBuiltinMethodName(expr.builtin);\n if (name == null) {\n // some builtins just mean to skip the call.\n return null;\n }\n }\n ctx.print(expr, `.${name}(`);\n this.visitAllExpressions(expr.args, ctx, `,`);\n ctx.print(expr, `)`);\n return null;\n }\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n visitInvokeFunctionExpr(expr, ctx) {\n expr.fn.visitExpression(this, ctx);\n ctx.print(expr, `(`);\n this.visitAllExpressions(expr.args, ctx, ',');\n ctx.print(expr, `)`);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitReadVarExpr(ast, ctx) {\n let /** @type {?} */ varName = /** @type {?} */ ((ast.name));\n if (ast.builtin != null) {\n switch (ast.builtin) {\n case o.BuiltinVar.Super:\n varName = 'super';\n break;\n case o.BuiltinVar.This:\n varName = 'this';\n break;\n case o.BuiltinVar.CatchError:\n varName = /** @type {?} */ ((CATCH_ERROR_VAR.name));\n break;\n case o.BuiltinVar.CatchStack:\n varName = /** @type {?} */ ((CATCH_STACK_VAR.name));\n break;\n default:\n throw new Error(`Unknown builtin variable ${ast.builtin}`);\n }\n }\n ctx.print(ast, varName);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitInstantiateExpr(ast, ctx) {\n ctx.print(ast, `new `);\n ast.classExpr.visitExpression(this, ctx);\n ctx.print(ast, `(`);\n this.visitAllExpressions(ast.args, ctx, ',');\n ctx.print(ast, `)`);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitLiteralExpr(ast, ctx) {\n const /** @type {?} */ value = ast.value;\n if (typeof value === 'string') {\n ctx.print(ast, escapeIdentifier(value, this._escapeDollarInStrings));\n }\n else {\n ctx.print(ast, `${value}`);\n }\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitConditionalExpr(ast, ctx) {\n ctx.print(ast, `(`);\n ast.condition.visitExpression(this, ctx);\n ctx.print(ast, '? ');\n ast.trueCase.visitExpression(this, ctx);\n ctx.print(ast, ': '); /** @type {?} */\n ((ast.falseCase)).visitExpression(this, ctx);\n ctx.print(ast, `)`);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitNotExpr(ast, ctx) {\n ctx.print(ast, '!');\n ast.condition.visitExpression(this, ctx);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitAssertNotNullExpr(ast, ctx) {\n ast.condition.visitExpression(this, ctx);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitBinaryOperatorExpr(ast, ctx) {\n let /** @type {?} */ opStr;\n switch (ast.operator) {\n case o.BinaryOperator.Equals:\n opStr = '==';\n break;\n case o.BinaryOperator.Identical:\n opStr = '===';\n break;\n case o.BinaryOperator.NotEquals:\n opStr = '!=';\n break;\n case o.BinaryOperator.NotIdentical:\n opStr = '!==';\n break;\n case o.BinaryOperator.And:\n opStr = '&&';\n break;\n case o.BinaryOperator.Or:\n opStr = '||';\n break;\n case o.BinaryOperator.Plus:\n opStr = '+';\n break;\n case o.BinaryOperator.Minus:\n opStr = '-';\n break;\n case o.BinaryOperator.Divide:\n opStr = '/';\n break;\n case o.BinaryOperator.Multiply:\n opStr = '*';\n break;\n case o.BinaryOperator.Modulo:\n opStr = '%';\n break;\n case o.BinaryOperator.Lower:\n opStr = '<';\n break;\n case o.BinaryOperator.LowerEquals:\n opStr = '<=';\n break;\n case o.BinaryOperator.Bigger:\n opStr = '>';\n break;\n case o.BinaryOperator.BiggerEquals:\n opStr = '>=';\n break;\n default:\n throw new Error(`Unknown operator ${ast.operator}`);\n }\n ctx.print(ast, `(`);\n ast.lhs.visitExpression(this, ctx);\n ctx.print(ast, ` ${opStr} `);\n ast.rhs.visitExpression(this, ctx);\n ctx.print(ast, `)`);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitReadPropExpr(ast, ctx) {\n ast.receiver.visitExpression(this, ctx);\n ctx.print(ast, `.`);\n ctx.print(ast, ast.name);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitReadKeyExpr(ast, ctx) {\n ast.receiver.visitExpression(this, ctx);\n ctx.print(ast, `[`);\n ast.index.visitExpression(this, ctx);\n ctx.print(ast, `]`);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitLiteralArrayExpr(ast, ctx) {\n ctx.print(ast, `[`);\n this.visitAllExpressions(ast.entries, ctx, ',');\n ctx.print(ast, `]`);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitLiteralMapExpr(ast, ctx) {\n ctx.print(ast, `{`);\n this.visitAllObjects(entry => {\n ctx.print(ast, `${escapeIdentifier(entry.key, this._escapeDollarInStrings, entry.quoted)}:`);\n entry.value.visitExpression(this, ctx);\n }, ast.entries, ctx, ',');\n ctx.print(ast, `}`);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitCommaExpr(ast, ctx) {\n ctx.print(ast, '(');\n this.visitAllExpressions(ast.parts, ctx, ',');\n ctx.print(ast, ')');\n return null;\n }\n /**\n * @param {?} expressions\n * @param {?} ctx\n * @param {?} separator\n * @return {?}\n */\n visitAllExpressions(expressions, ctx, separator) {\n this.visitAllObjects(expr => expr.visitExpression(this, ctx), expressions, ctx, separator);\n }\n /**\n * @template T\n * @param {?} handler\n * @param {?} expressions\n * @param {?} ctx\n * @param {?} separator\n * @return {?}\n */\n visitAllObjects(handler, expressions, ctx, separator) {\n let /** @type {?} */ incrementedIndent = false;\n for (let /** @type {?} */ i = 0; i < expressions.length; i++) {\n if (i > 0) {\n if (ctx.lineLength() > 80) {\n ctx.print(null, separator, true);\n if (!incrementedIndent) {\n // continuation are marked with double indent.\n ctx.incIndent();\n ctx.incIndent();\n incrementedIndent = true;\n }\n }\n else {\n ctx.print(null, separator, false);\n }\n }\n handler(expressions[i]);\n }\n if (incrementedIndent) {\n // continuation are marked with double indent.\n ctx.decIndent();\n ctx.decIndent();\n }\n }\n /**\n * @param {?} statements\n * @param {?} ctx\n * @return {?}\n */\n visitAllStatements(statements, ctx) {\n statements.forEach((stmt) => stmt.visitStatement(this, ctx));\n }\n}\nfunction AbstractEmitterVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n AbstractEmitterVisitor.prototype._escapeDollarInStrings;\n /**\n * @abstract\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitCastExpr = function (ast, context) { };\n /**\n * @abstract\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitDeclareClassStmt = function (stmt, ctx) { };\n /**\n * @abstract\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitTryCatchStmt = function (stmt, ctx) { };\n /**\n * @abstract\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitDeclareVarStmt = function (stmt, ctx) { };\n /**\n * @abstract\n * @param {?} method\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.getBuiltinMethodName = function (method) { };\n /**\n * @abstract\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitExternalExpr = function (ast, ctx) { };\n /**\n * @abstract\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitFunctionExpr = function (ast, ctx) { };\n /**\n * @abstract\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitDeclareFunctionStmt = function (stmt, context) { };\n}\n/**\n * @param {?} input\n * @param {?} escapeDollar\n * @param {?=} alwaysQuote\n * @return {?}\n */\nexport function escapeIdentifier(input, escapeDollar, alwaysQuote = true) {\n if (input == null) {\n return null;\n }\n const /** @type {?} */ body = input.replace(_SINGLE_QUOTE_ESCAPE_STRING_RE, (...match) => {\n if (match[0] == '$') {\n return escapeDollar ? '\\\\$' : '$';\n }\n else if (match[0] == '\\n') {\n return '\\\\n';\n }\n else if (match[0] == '\\r') {\n return '\\\\r';\n }\n else {\n return `\\\\${match[0]}`;\n }\n });\n const /** @type {?} */ requiresQuotes = alwaysQuote || !_LEGAL_IDENTIFIER_RE.test(body);\n return requiresQuotes ? `'${body}'` : body;\n}\n/**\n * @param {?} count\n * @return {?}\n */\nfunction _createIndent(count) {\n let /** @type {?} */ res = '';\n for (let /** @type {?} */ i = 0; i < count; i++) {\n res += _INDENT_WITH;\n }\n return res;\n}\n//# sourceMappingURL=abstract_emitter.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { AbstractEmitterVisitor, CATCH_ERROR_VAR, CATCH_STACK_VAR, EmitterVisitorContext } from './abstract_emitter';\nimport * as o from './output_ast';\nconst /** @type {?} */ _debugFilePath = '/debug/lib';\n/**\n * @param {?} ast\n * @return {?}\n */\nexport function debugOutputAstAsTypeScript(ast) {\n const /** @type {?} */ converter = new _TsEmitterVisitor();\n const /** @type {?} */ ctx = EmitterVisitorContext.createRoot();\n const /** @type {?} */ asts = Array.isArray(ast) ? ast : [ast];\n asts.forEach((ast) => {\n if (ast instanceof o.Statement) {\n ast.visitStatement(converter, ctx);\n }\n else if (ast instanceof o.Expression) {\n ast.visitExpression(converter, ctx);\n }\n else if (ast instanceof o.Type) {\n ast.visitType(converter, ctx);\n }\n else {\n throw new Error(`Don't know how to print debug info for ${ast}`);\n }\n });\n return ctx.toSource();\n}\nexport class TypeScriptEmitter {\n /**\n * @param {?} genFilePath\n * @param {?} stmts\n * @param {?=} preamble\n * @param {?=} emitSourceMaps\n * @param {?=} referenceFilter\n * @return {?}\n */\n emitStatementsAndContext(genFilePath, stmts, preamble = '', emitSourceMaps = true, referenceFilter) {\n const /** @type {?} */ converter = new _TsEmitterVisitor(referenceFilter);\n const /** @type {?} */ ctx = EmitterVisitorContext.createRoot();\n converter.visitAllStatements(stmts, ctx);\n const /** @type {?} */ preambleLines = preamble ? preamble.split('\\n') : [];\n converter.reexports.forEach((reexports, exportedModuleName) => {\n const /** @type {?} */ reexportsCode = reexports.map(reexport => `${reexport.name} as ${reexport.as}`).join(',');\n preambleLines.push(`export {${reexportsCode}} from '${exportedModuleName}';`);\n });\n converter.importsWithPrefixes.forEach((prefix, importedModuleName) => {\n // Note: can't write the real word for import as it screws up system.js auto detection...\n preambleLines.push(`imp` +\n `ort * as ${prefix} from '${importedModuleName}';`);\n });\n const /** @type {?} */ sm = emitSourceMaps ?\n ctx.toSourceMapGenerator(genFilePath, preambleLines.length).toJsComment() :\n '';\n const /** @type {?} */ lines = [...preambleLines, ctx.toSource(), sm];\n if (sm) {\n // always add a newline at the end, as some tools have bugs without it.\n lines.push('');\n }\n ctx.setPreambleLineCount(preambleLines.length);\n return { sourceText: lines.join('\\n'), context: ctx };\n }\n /**\n * @param {?} genFilePath\n * @param {?} stmts\n * @param {?=} preamble\n * @return {?}\n */\n emitStatements(genFilePath, stmts, preamble = '') {\n return this.emitStatementsAndContext(genFilePath, stmts, preamble).sourceText;\n }\n}\nclass _TsEmitterVisitor extends AbstractEmitterVisitor {\n /**\n * @param {?=} referenceFilter\n */\n constructor(referenceFilter) {\n super(false);\n this.referenceFilter = referenceFilter;\n this.typeExpression = 0;\n this.importsWithPrefixes = new Map();\n this.reexports = new Map();\n }\n /**\n * @param {?} t\n * @param {?} ctx\n * @param {?=} defaultType\n * @return {?}\n */\n visitType(t, ctx, defaultType = 'any') {\n if (t) {\n this.typeExpression++;\n t.visitType(this, ctx);\n this.typeExpression--;\n }\n else {\n ctx.print(null, defaultType);\n }\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitLiteralExpr(ast, ctx) {\n const /** @type {?} */ value = ast.value;\n if (value == null && ast.type != o.INFERRED_TYPE) {\n ctx.print(ast, `(${value} as any)`);\n return null;\n }\n return super.visitLiteralExpr(ast, ctx);\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitLiteralArrayExpr(ast, ctx) {\n if (ast.entries.length === 0) {\n ctx.print(ast, '(');\n }\n const /** @type {?} */ result = super.visitLiteralArrayExpr(ast, ctx);\n if (ast.entries.length === 0) {\n ctx.print(ast, ' as any[])');\n }\n return result;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitExternalExpr(ast, ctx) {\n this._visitIdentifier(ast.value, ast.typeParams, ctx);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitAssertNotNullExpr(ast, ctx) {\n const /** @type {?} */ result = super.visitAssertNotNullExpr(ast, ctx);\n ctx.print(ast, '!');\n return result;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitDeclareVarStmt(stmt, ctx) {\n if (stmt.hasModifier(o.StmtModifier.Exported) && stmt.value instanceof o.ExternalExpr &&\n !stmt.type) {\n // check for a reexport\n const { name, moduleName } = stmt.value.value;\n if (moduleName) {\n let /** @type {?} */ reexports = this.reexports.get(moduleName);\n if (!reexports) {\n reexports = [];\n this.reexports.set(moduleName, reexports);\n }\n reexports.push({ name: /** @type {?} */ ((name)), as: stmt.name });\n return null;\n }\n }\n if (stmt.hasModifier(o.StmtModifier.Exported)) {\n ctx.print(stmt, `export `);\n }\n if (stmt.hasModifier(o.StmtModifier.Final)) {\n ctx.print(stmt, `const`);\n }\n else {\n ctx.print(stmt, `var`);\n }\n ctx.print(stmt, ` ${stmt.name}`);\n this._printColonType(stmt.type, ctx);\n ctx.print(stmt, ` = `);\n stmt.value.visitExpression(this, ctx);\n ctx.println(stmt, `;`);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitCastExpr(ast, ctx) {\n ctx.print(ast, `(<`); /** @type {?} */\n ((ast.type)).visitType(this, ctx);\n ctx.print(ast, `>`);\n ast.value.visitExpression(this, ctx);\n ctx.print(ast, `)`);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitInstantiateExpr(ast, ctx) {\n ctx.print(ast, `new `);\n this.typeExpression++;\n ast.classExpr.visitExpression(this, ctx);\n this.typeExpression--;\n ctx.print(ast, `(`);\n this.visitAllExpressions(ast.args, ctx, ',');\n ctx.print(ast, `)`);\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitDeclareClassStmt(stmt, ctx) {\n ctx.pushClass(stmt);\n if (stmt.hasModifier(o.StmtModifier.Exported)) {\n ctx.print(stmt, `export `);\n }\n ctx.print(stmt, `class ${stmt.name}`);\n if (stmt.parent != null) {\n ctx.print(stmt, ` extends `);\n this.typeExpression++;\n stmt.parent.visitExpression(this, ctx);\n this.typeExpression--;\n }\n ctx.println(stmt, ` {`);\n ctx.incIndent();\n stmt.fields.forEach((field) => this._visitClassField(field, ctx));\n if (stmt.constructorMethod != null) {\n this._visitClassConstructor(stmt, ctx);\n }\n stmt.getters.forEach((getter) => this._visitClassGetter(getter, ctx));\n stmt.methods.forEach((method) => this._visitClassMethod(method, ctx));\n ctx.decIndent();\n ctx.println(stmt, `}`);\n ctx.popClass();\n return null;\n }\n /**\n * @param {?} field\n * @param {?} ctx\n * @return {?}\n */\n _visitClassField(field, ctx) {\n if (field.hasModifier(o.StmtModifier.Private)) {\n // comment out as a workaround for #10967\n ctx.print(null, `/*private*/ `);\n }\n ctx.print(null, field.name);\n this._printColonType(field.type, ctx);\n ctx.println(null, `;`);\n }\n /**\n * @param {?} getter\n * @param {?} ctx\n * @return {?}\n */\n _visitClassGetter(getter, ctx) {\n if (getter.hasModifier(o.StmtModifier.Private)) {\n ctx.print(null, `private `);\n }\n ctx.print(null, `get ${getter.name}()`);\n this._printColonType(getter.type, ctx);\n ctx.println(null, ` {`);\n ctx.incIndent();\n this.visitAllStatements(getter.body, ctx);\n ctx.decIndent();\n ctx.println(null, `}`);\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n _visitClassConstructor(stmt, ctx) {\n ctx.print(stmt, `constructor(`);\n this._visitParams(stmt.constructorMethod.params, ctx);\n ctx.println(stmt, `) {`);\n ctx.incIndent();\n this.visitAllStatements(stmt.constructorMethod.body, ctx);\n ctx.decIndent();\n ctx.println(stmt, `}`);\n }\n /**\n * @param {?} method\n * @param {?} ctx\n * @return {?}\n */\n _visitClassMethod(method, ctx) {\n if (method.hasModifier(o.StmtModifier.Private)) {\n ctx.print(null, `private `);\n }\n ctx.print(null, `${method.name}(`);\n this._visitParams(method.params, ctx);\n ctx.print(null, `)`);\n this._printColonType(method.type, ctx, 'void');\n ctx.println(null, ` {`);\n ctx.incIndent();\n this.visitAllStatements(method.body, ctx);\n ctx.decIndent();\n ctx.println(null, `}`);\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitFunctionExpr(ast, ctx) {\n ctx.print(ast, `(`);\n this._visitParams(ast.params, ctx);\n ctx.print(ast, `)`);\n this._printColonType(ast.type, ctx, 'void');\n ctx.println(ast, ` => {`);\n ctx.incIndent();\n this.visitAllStatements(ast.statements, ctx);\n ctx.decIndent();\n ctx.print(ast, `}`);\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitDeclareFunctionStmt(stmt, ctx) {\n if (stmt.hasModifier(o.StmtModifier.Exported)) {\n ctx.print(stmt, `export `);\n }\n ctx.print(stmt, `function ${stmt.name}(`);\n this._visitParams(stmt.params, ctx);\n ctx.print(stmt, `)`);\n this._printColonType(stmt.type, ctx, 'void');\n ctx.println(stmt, ` {`);\n ctx.incIndent();\n this.visitAllStatements(stmt.statements, ctx);\n ctx.decIndent();\n ctx.println(stmt, `}`);\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitTryCatchStmt(stmt, ctx) {\n ctx.println(stmt, `try {`);\n ctx.incIndent();\n this.visitAllStatements(stmt.bodyStmts, ctx);\n ctx.decIndent();\n ctx.println(stmt, `} catch (${CATCH_ERROR_VAR.name}) {`);\n ctx.incIndent();\n const /** @type {?} */ catchStmts = [/** @type {?} */ (CATCH_STACK_VAR.set(CATCH_ERROR_VAR.prop('stack', null)).toDeclStmt(null, [\n o.StmtModifier.Final\n ]))].concat(stmt.catchStmts);\n this.visitAllStatements(catchStmts, ctx);\n ctx.decIndent();\n ctx.println(stmt, `}`);\n return null;\n }\n /**\n * @param {?} type\n * @param {?} ctx\n * @return {?}\n */\n visitBuiltintType(type, ctx) {\n let /** @type {?} */ typeStr;\n switch (type.name) {\n case o.BuiltinTypeName.Bool:\n typeStr = 'boolean';\n break;\n case o.BuiltinTypeName.Dynamic:\n typeStr = 'any';\n break;\n case o.BuiltinTypeName.Function:\n typeStr = 'Function';\n break;\n case o.BuiltinTypeName.Number:\n typeStr = 'number';\n break;\n case o.BuiltinTypeName.Int:\n typeStr = 'number';\n break;\n case o.BuiltinTypeName.String:\n typeStr = 'string';\n break;\n default:\n throw new Error(`Unsupported builtin type ${type.name}`);\n }\n ctx.print(null, typeStr);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitExpressionType(ast, ctx) {\n ast.value.visitExpression(this, ctx);\n return null;\n }\n /**\n * @param {?} type\n * @param {?} ctx\n * @return {?}\n */\n visitArrayType(type, ctx) {\n this.visitType(type.of, ctx);\n ctx.print(null, `[]`);\n return null;\n }\n /**\n * @param {?} type\n * @param {?} ctx\n * @return {?}\n */\n visitMapType(type, ctx) {\n ctx.print(null, `{[key: string]:`);\n this.visitType(type.valueType, ctx);\n ctx.print(null, `}`);\n return null;\n }\n /**\n * @param {?} method\n * @return {?}\n */\n getBuiltinMethodName(method) {\n let /** @type {?} */ name;\n switch (method) {\n case o.BuiltinMethod.ConcatArray:\n name = 'concat';\n break;\n case o.BuiltinMethod.SubscribeObservable:\n name = 'subscribe';\n break;\n case o.BuiltinMethod.Bind:\n name = 'bind';\n break;\n default:\n throw new Error(`Unknown builtin method: ${method}`);\n }\n return name;\n }\n /**\n * @param {?} params\n * @param {?} ctx\n * @return {?}\n */\n _visitParams(params, ctx) {\n this.visitAllObjects(param => {\n ctx.print(null, param.name);\n this._printColonType(param.type, ctx);\n }, params, ctx, ',');\n }\n /**\n * @param {?} value\n * @param {?} typeParams\n * @param {?} ctx\n * @return {?}\n */\n _visitIdentifier(value, typeParams, ctx) {\n const { name, moduleName } = value;\n if (this.referenceFilter && this.referenceFilter(value)) {\n ctx.print(null, '(null as any)');\n return;\n }\n if (moduleName) {\n let /** @type {?} */ prefix = this.importsWithPrefixes.get(moduleName);\n if (prefix == null) {\n prefix = `i${this.importsWithPrefixes.size}`;\n this.importsWithPrefixes.set(moduleName, prefix);\n }\n ctx.print(null, `${prefix}.`);\n }\n ctx.print(null, /** @type {?} */ ((name)));\n if (this.typeExpression > 0) {\n // If we are in a type expression that refers to a generic type then supply\n // the required type parameters. If there were not enough type parameters\n // supplied, supply any as the type. Outside a type expression the reference\n // should not supply type parameters and be treated as a simple value reference\n // to the constructor function itself.\n const /** @type {?} */ suppliedParameters = typeParams || [];\n if (suppliedParameters.length > 0) {\n ctx.print(null, `<`);\n this.visitAllObjects(type => type.visitType(this, ctx), /** @type {?} */ ((typeParams)), ctx, ',');\n ctx.print(null, `>`);\n }\n }\n }\n /**\n * @param {?} type\n * @param {?} ctx\n * @param {?=} defaultType\n * @return {?}\n */\n _printColonType(type, ctx, defaultType) {\n if (type !== o.INFERRED_TYPE) {\n ctx.print(null, ':');\n this.visitType(type, ctx, defaultType);\n }\n }\n}\nfunction _TsEmitterVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n _TsEmitterVisitor.prototype.typeExpression;\n /** @type {?} */\n _TsEmitterVisitor.prototype.importsWithPrefixes;\n /** @type {?} */\n _TsEmitterVisitor.prototype.reexports;\n /** @type {?} */\n _TsEmitterVisitor.prototype.referenceFilter;\n}\n//# sourceMappingURL=ts_emitter.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { createPipe } from './core';\nimport { findLast } from './directive_resolver';\nimport { resolveForwardRef, stringify } from './util';\n/**\n * Resolve a `Type` for {\\@link Pipe}.\n *\n * This interface can be overridden by the application developer to create custom behavior.\n *\n * See {\\@link Compiler}\n */\nexport class PipeResolver {\n /**\n * @param {?} _reflector\n */\n constructor(_reflector) {\n this._reflector = _reflector;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n isPipe(type) {\n const /** @type {?} */ typeMetadata = this._reflector.annotations(resolveForwardRef(type));\n return typeMetadata && typeMetadata.some(createPipe.isTypeOf);\n }\n /**\n * Return {\\@link Pipe} for a given `Type`.\n * @param {?} type\n * @param {?=} throwIfNotFound\n * @return {?}\n */\n resolve(type, throwIfNotFound = true) {\n const /** @type {?} */ metas = this._reflector.annotations(resolveForwardRef(type));\n if (metas) {\n const /** @type {?} */ annotation = findLast(metas, createPipe.isTypeOf);\n if (annotation) {\n return annotation;\n }\n }\n if (throwIfNotFound) {\n throw new Error(`No Pipe decorator found on ${stringify(type)}`);\n }\n return null;\n }\n}\nfunction PipeResolver_tsickle_Closure_declarations() {\n /** @type {?} */\n PipeResolver.prototype._reflector;\n}\n//# sourceMappingURL=pipe_resolver.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { SecurityContext } from '../core';\n/**\n * Map from tagName|propertyName SecurityContext. Properties applying to all tags use '*'.\n */\nexport const /** @type {?} */ SECURITY_SCHEMA = {};\n/**\n * @param {?} ctx\n * @param {?} specs\n * @return {?}\n */\nfunction registerContext(ctx, specs) {\n for (const /** @type {?} */ spec of specs)\n SECURITY_SCHEMA[spec.toLowerCase()] = ctx;\n}\n// Case is insignificant below, all element and attribute names are lower-cased for lookup.\nregisterContext(SecurityContext.HTML, [\n 'iframe|srcdoc',\n '*|innerHTML',\n '*|outerHTML',\n]);\nregisterContext(SecurityContext.STYLE, ['*|style']);\n// NB: no SCRIPT contexts here, they are never allowed due to the parser stripping them.\nregisterContext(SecurityContext.URL, [\n '*|formAction', 'area|href', 'area|ping', 'audio|src', 'a|href',\n 'a|ping', 'blockquote|cite', 'body|background', 'del|cite', 'form|action',\n 'img|src', 'img|srcset', 'input|src', 'ins|cite', 'q|cite',\n 'source|src', 'source|srcset', 'track|src', 'video|poster', 'video|src',\n]);\nregisterContext(SecurityContext.RESOURCE_URL, [\n 'applet|code',\n 'applet|codebase',\n 'base|href',\n 'embed|src',\n 'frame|src',\n 'head|profile',\n 'html|manifest',\n 'iframe|src',\n 'link|href',\n 'media|src',\n 'object|codebase',\n 'object|data',\n 'script|src',\n]);\n//# sourceMappingURL=dom_security_schema.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @abstract\n */\nexport class ElementSchemaRegistry {\n}\nfunction ElementSchemaRegistry_tsickle_Closure_declarations() {\n /**\n * @abstract\n * @param {?} tagName\n * @param {?} propName\n * @param {?} schemaMetas\n * @return {?}\n */\n ElementSchemaRegistry.prototype.hasProperty = function (tagName, propName, schemaMetas) { };\n /**\n * @abstract\n * @param {?} tagName\n * @param {?} schemaMetas\n * @return {?}\n */\n ElementSchemaRegistry.prototype.hasElement = function (tagName, schemaMetas) { };\n /**\n * @abstract\n * @param {?} elementName\n * @param {?} propName\n * @param {?} isAttribute\n * @return {?}\n */\n ElementSchemaRegistry.prototype.securityContext = function (elementName, propName, isAttribute) { };\n /**\n * @abstract\n * @return {?}\n */\n ElementSchemaRegistry.prototype.allKnownElementNames = function () { };\n /**\n * @abstract\n * @param {?} propName\n * @return {?}\n */\n ElementSchemaRegistry.prototype.getMappedPropName = function (propName) { };\n /**\n * @abstract\n * @return {?}\n */\n ElementSchemaRegistry.prototype.getDefaultComponentElementName = function () { };\n /**\n * @abstract\n * @param {?} name\n * @return {?}\n */\n ElementSchemaRegistry.prototype.validateProperty = function (name) { };\n /**\n * @abstract\n * @param {?} name\n * @return {?}\n */\n ElementSchemaRegistry.prototype.validateAttribute = function (name) { };\n /**\n * @abstract\n * @param {?} propName\n * @return {?}\n */\n ElementSchemaRegistry.prototype.normalizeAnimationStyleProperty = function (propName) { };\n /**\n * @abstract\n * @param {?} camelCaseProp\n * @param {?} userProvidedProp\n * @param {?} val\n * @return {?}\n */\n ElementSchemaRegistry.prototype.normalizeAnimationStyleValue = function (camelCaseProp, userProvidedProp, val) { };\n}\n//# sourceMappingURL=element_schema_registry.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, SecurityContext } from '../core';\nimport { isNgContainer, isNgContent } from '../ml_parser/tags';\nimport { dashCaseToCamelCase } from '../util';\nimport { SECURITY_SCHEMA } from './dom_security_schema';\nimport { ElementSchemaRegistry } from './element_schema_registry';\nconst /** @type {?} */ BOOLEAN = 'boolean';\nconst /** @type {?} */ NUMBER = 'number';\nconst /** @type {?} */ STRING = 'string';\nconst /** @type {?} */ OBJECT = 'object';\n/**\n * This array represents the DOM schema. It encodes inheritance, properties, and events.\n *\n * ## Overview\n *\n * Each line represents one kind of element. The `element_inheritance` and properties are joined\n * using `element_inheritance|properties` syntax.\n *\n * ## Element Inheritance\n *\n * The `element_inheritance` can be further subdivided as `element1,element2,...^parentElement`.\n * Here the individual elements are separated by `,` (commas). Every element in the list\n * has identical properties.\n *\n * An `element` may inherit additional properties from `parentElement` If no `^parentElement` is\n * specified then `\"\"` (blank) element is assumed.\n *\n * NOTE: The blank element inherits from root `[Element]` element, the super element of all\n * elements.\n *\n * NOTE an element prefix such as `:svg:` has no special meaning to the schema.\n *\n * ## Properties\n *\n * Each element has a set of properties separated by `,` (commas). Each property can be prefixed\n * by a special character designating its type:\n *\n * - (no prefix): property is a string.\n * - `*`: property represents an event.\n * - `!`: property is a boolean.\n * - `#`: property is a number.\n * - `%`: property is an object.\n *\n * ## Query\n *\n * The class creates an internal squas representation which allows to easily answer the query of\n * if a given property exist on a given element.\n *\n * NOTE: We don't yet support querying for types or events.\n * NOTE: This schema is auto extracted from `schema_extractor.ts` located in the test folder,\n * see dom_element_schema_registry_spec.ts\n */\nconst /** @type {?} */ SCHEMA = [\n '[Element]|textContent,%classList,className,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*copy,*cut,*paste,*search,*selectstart,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerHTML,#scrollLeft,#scrollTop,slot' +\n ',*message,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored',\n '[HTMLElement]^[Element]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,outerText,!spellcheck,%style,#tabIndex,title,!translate',\n 'abbr,address,article,aside,b,bdi,bdo,cite,code,dd,dfn,dt,em,figcaption,figure,footer,header,i,kbd,main,mark,nav,noscript,rb,rp,rt,rtc,ruby,s,samp,section,small,strong,sub,sup,u,var,wbr^[HTMLElement]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,outerText,!spellcheck,%style,#tabIndex,title,!translate',\n 'media^[HTMLElement]|!autoplay,!controls,%controlsList,%crossOrigin,#currentTime,!defaultMuted,#defaultPlaybackRate,!disableRemotePlayback,!loop,!muted,*encrypted,*waitingforkey,#playbackRate,preload,src,%srcObject,#volume',\n ':svg:^[HTMLElement]|*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,%style,#tabIndex',\n ':svg:graphics^:svg:|',\n ':svg:animation^:svg:|*begin,*end,*repeat',\n ':svg:geometry^:svg:|',\n ':svg:componentTransferFunction^:svg:|',\n ':svg:gradient^:svg:|',\n ':svg:textContent^:svg:graphics|',\n ':svg:textPositioning^:svg:textContent|',\n 'a^[HTMLElement]|charset,coords,download,hash,host,hostname,href,hreflang,name,password,pathname,ping,port,protocol,referrerPolicy,rel,rev,search,shape,target,text,type,username',\n 'area^[HTMLElement]|alt,coords,download,hash,host,hostname,href,!noHref,password,pathname,ping,port,protocol,referrerPolicy,rel,search,shape,target,username',\n 'audio^media|',\n 'br^[HTMLElement]|clear',\n 'base^[HTMLElement]|href,target',\n 'body^[HTMLElement]|aLink,background,bgColor,link,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,text,vLink',\n 'button^[HTMLElement]|!autofocus,!disabled,formAction,formEnctype,formMethod,!formNoValidate,formTarget,name,type,value',\n 'canvas^[HTMLElement]|#height,#width',\n 'content^[HTMLElement]|select',\n 'dl^[HTMLElement]|!compact',\n 'datalist^[HTMLElement]|',\n 'details^[HTMLElement]|!open',\n 'dialog^[HTMLElement]|!open,returnValue',\n 'dir^[HTMLElement]|!compact',\n 'div^[HTMLElement]|align',\n 'embed^[HTMLElement]|align,height,name,src,type,width',\n 'fieldset^[HTMLElement]|!disabled,name',\n 'font^[HTMLElement]|color,face,size',\n 'form^[HTMLElement]|acceptCharset,action,autocomplete,encoding,enctype,method,name,!noValidate,target',\n 'frame^[HTMLElement]|frameBorder,longDesc,marginHeight,marginWidth,name,!noResize,scrolling,src',\n 'frameset^[HTMLElement]|cols,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,rows',\n 'hr^[HTMLElement]|align,color,!noShade,size,width',\n 'head^[HTMLElement]|',\n 'h1,h2,h3,h4,h5,h6^[HTMLElement]|align',\n 'html^[HTMLElement]|version',\n 'iframe^[HTMLElement]|align,!allowFullscreen,frameBorder,height,longDesc,marginHeight,marginWidth,name,referrerPolicy,%sandbox,scrolling,src,srcdoc,width',\n 'img^[HTMLElement]|align,alt,border,%crossOrigin,#height,#hspace,!isMap,longDesc,lowsrc,name,referrerPolicy,sizes,src,srcset,useMap,#vspace,#width',\n 'input^[HTMLElement]|accept,align,alt,autocapitalize,autocomplete,!autofocus,!checked,!defaultChecked,defaultValue,dirName,!disabled,%files,formAction,formEnctype,formMethod,!formNoValidate,formTarget,#height,!incremental,!indeterminate,max,#maxLength,min,#minLength,!multiple,name,pattern,placeholder,!readOnly,!required,selectionDirection,#selectionEnd,#selectionStart,#size,src,step,type,useMap,value,%valueAsDate,#valueAsNumber,#width',\n 'li^[HTMLElement]|type,#value',\n 'label^[HTMLElement]|htmlFor',\n 'legend^[HTMLElement]|align',\n 'link^[HTMLElement]|as,charset,%crossOrigin,!disabled,href,hreflang,integrity,media,referrerPolicy,rel,%relList,rev,%sizes,target,type',\n 'map^[HTMLElement]|name',\n 'marquee^[HTMLElement]|behavior,bgColor,direction,height,#hspace,#loop,#scrollAmount,#scrollDelay,!trueSpeed,#vspace,width',\n 'menu^[HTMLElement]|!compact',\n 'meta^[HTMLElement]|content,httpEquiv,name,scheme',\n 'meter^[HTMLElement]|#high,#low,#max,#min,#optimum,#value',\n 'ins,del^[HTMLElement]|cite,dateTime',\n 'ol^[HTMLElement]|!compact,!reversed,#start,type',\n 'object^[HTMLElement]|align,archive,border,code,codeBase,codeType,data,!declare,height,#hspace,name,standby,type,useMap,#vspace,width',\n 'optgroup^[HTMLElement]|!disabled,label',\n 'option^[HTMLElement]|!defaultSelected,!disabled,label,!selected,text,value',\n 'output^[HTMLElement]|defaultValue,%htmlFor,name,value',\n 'p^[HTMLElement]|align',\n 'param^[HTMLElement]|name,type,value,valueType',\n 'picture^[HTMLElement]|',\n 'pre^[HTMLElement]|#width',\n 'progress^[HTMLElement]|#max,#value',\n 'q,blockquote,cite^[HTMLElement]|',\n 'script^[HTMLElement]|!async,charset,%crossOrigin,!defer,event,htmlFor,integrity,src,text,type',\n 'select^[HTMLElement]|!autofocus,!disabled,#length,!multiple,name,!required,#selectedIndex,#size,value',\n 'shadow^[HTMLElement]|',\n 'slot^[HTMLElement]|name',\n 'source^[HTMLElement]|media,sizes,src,srcset,type',\n 'span^[HTMLElement]|',\n 'style^[HTMLElement]|!disabled,media,type',\n 'caption^[HTMLElement]|align',\n 'th,td^[HTMLElement]|abbr,align,axis,bgColor,ch,chOff,#colSpan,headers,height,!noWrap,#rowSpan,scope,vAlign,width',\n 'col,colgroup^[HTMLElement]|align,ch,chOff,#span,vAlign,width',\n 'table^[HTMLElement]|align,bgColor,border,%caption,cellPadding,cellSpacing,frame,rules,summary,%tFoot,%tHead,width',\n 'tr^[HTMLElement]|align,bgColor,ch,chOff,vAlign',\n 'tfoot,thead,tbody^[HTMLElement]|align,ch,chOff,vAlign',\n 'template^[HTMLElement]|',\n 'textarea^[HTMLElement]|autocapitalize,!autofocus,#cols,defaultValue,dirName,!disabled,#maxLength,#minLength,name,placeholder,!readOnly,!required,#rows,selectionDirection,#selectionEnd,#selectionStart,value,wrap',\n 'title^[HTMLElement]|text',\n 'track^[HTMLElement]|!default,kind,label,src,srclang',\n 'ul^[HTMLElement]|!compact,type',\n 'unknown^[HTMLElement]|',\n 'video^media|#height,poster,#width',\n ':svg:a^:svg:graphics|',\n ':svg:animate^:svg:animation|',\n ':svg:animateMotion^:svg:animation|',\n ':svg:animateTransform^:svg:animation|',\n ':svg:circle^:svg:geometry|',\n ':svg:clipPath^:svg:graphics|',\n ':svg:defs^:svg:graphics|',\n ':svg:desc^:svg:|',\n ':svg:discard^:svg:|',\n ':svg:ellipse^:svg:geometry|',\n ':svg:feBlend^:svg:|',\n ':svg:feColorMatrix^:svg:|',\n ':svg:feComponentTransfer^:svg:|',\n ':svg:feComposite^:svg:|',\n ':svg:feConvolveMatrix^:svg:|',\n ':svg:feDiffuseLighting^:svg:|',\n ':svg:feDisplacementMap^:svg:|',\n ':svg:feDistantLight^:svg:|',\n ':svg:feDropShadow^:svg:|',\n ':svg:feFlood^:svg:|',\n ':svg:feFuncA^:svg:componentTransferFunction|',\n ':svg:feFuncB^:svg:componentTransferFunction|',\n ':svg:feFuncG^:svg:componentTransferFunction|',\n ':svg:feFuncR^:svg:componentTransferFunction|',\n ':svg:feGaussianBlur^:svg:|',\n ':svg:feImage^:svg:|',\n ':svg:feMerge^:svg:|',\n ':svg:feMergeNode^:svg:|',\n ':svg:feMorphology^:svg:|',\n ':svg:feOffset^:svg:|',\n ':svg:fePointLight^:svg:|',\n ':svg:feSpecularLighting^:svg:|',\n ':svg:feSpotLight^:svg:|',\n ':svg:feTile^:svg:|',\n ':svg:feTurbulence^:svg:|',\n ':svg:filter^:svg:|',\n ':svg:foreignObject^:svg:graphics|',\n ':svg:g^:svg:graphics|',\n ':svg:image^:svg:graphics|',\n ':svg:line^:svg:geometry|',\n ':svg:linearGradient^:svg:gradient|',\n ':svg:mpath^:svg:|',\n ':svg:marker^:svg:|',\n ':svg:mask^:svg:|',\n ':svg:metadata^:svg:|',\n ':svg:path^:svg:geometry|',\n ':svg:pattern^:svg:|',\n ':svg:polygon^:svg:geometry|',\n ':svg:polyline^:svg:geometry|',\n ':svg:radialGradient^:svg:gradient|',\n ':svg:rect^:svg:geometry|',\n ':svg:svg^:svg:graphics|#currentScale,#zoomAndPan',\n ':svg:script^:svg:|type',\n ':svg:set^:svg:animation|',\n ':svg:stop^:svg:|',\n ':svg:style^:svg:|!disabled,media,title,type',\n ':svg:switch^:svg:graphics|',\n ':svg:symbol^:svg:|',\n ':svg:tspan^:svg:textPositioning|',\n ':svg:text^:svg:textPositioning|',\n ':svg:textPath^:svg:textContent|',\n ':svg:title^:svg:|',\n ':svg:use^:svg:graphics|',\n ':svg:view^:svg:|#zoomAndPan',\n 'data^[HTMLElement]|value',\n 'keygen^[HTMLElement]|!autofocus,challenge,!disabled,form,keytype,name',\n 'menuitem^[HTMLElement]|type,label,icon,!disabled,!checked,radiogroup,!default',\n 'summary^[HTMLElement]|',\n 'time^[HTMLElement]|dateTime',\n ':svg:cursor^:svg:|',\n];\nconst /** @type {?} */ _ATTR_TO_PROP = {\n 'class': 'className',\n 'for': 'htmlFor',\n 'formaction': 'formAction',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex',\n};\nexport class DomElementSchemaRegistry extends ElementSchemaRegistry {\n constructor() {\n super();\n this._schema = {};\n SCHEMA.forEach(encodedType => {\n const /** @type {?} */ type = {};\n const [strType, strProperties] = encodedType.split('|');\n const /** @type {?} */ properties = strProperties.split(',');\n const [typeNames, superName] = strType.split('^');\n typeNames.split(',').forEach(tag => this._schema[tag.toLowerCase()] = type);\n const /** @type {?} */ superType = superName && this._schema[superName.toLowerCase()];\n if (superType) {\n Object.keys(superType).forEach((prop) => { type[prop] = superType[prop]; });\n }\n properties.forEach((property) => {\n if (property.length > 0) {\n switch (property[0]) {\n case '*':\n // We don't yet support events.\n // If ever allowing to bind to events, GO THROUGH A SECURITY REVIEW, allowing events\n // will\n // almost certainly introduce bad XSS vulnerabilities.\n // type[property.substring(1)] = EVENT;\n break;\n case '!':\n type[property.substring(1)] = BOOLEAN;\n break;\n case '#':\n type[property.substring(1)] = NUMBER;\n break;\n case '%':\n type[property.substring(1)] = OBJECT;\n break;\n default:\n type[property] = STRING;\n }\n }\n });\n });\n }\n /**\n * @param {?} tagName\n * @param {?} propName\n * @param {?} schemaMetas\n * @return {?}\n */\n hasProperty(tagName, propName, schemaMetas) {\n if (schemaMetas.some((schema) => schema.name === NO_ERRORS_SCHEMA.name)) {\n return true;\n }\n if (tagName.indexOf('-') > -1) {\n if (isNgContainer(tagName) || isNgContent(tagName)) {\n return false;\n }\n if (schemaMetas.some((schema) => schema.name === CUSTOM_ELEMENTS_SCHEMA.name)) {\n // Can't tell now as we don't know which properties a custom element will get\n // once it is instantiated\n return true;\n }\n }\n const /** @type {?} */ elementProperties = this._schema[tagName.toLowerCase()] || this._schema['unknown'];\n return !!elementProperties[propName];\n }\n /**\n * @param {?} tagName\n * @param {?} schemaMetas\n * @return {?}\n */\n hasElement(tagName, schemaMetas) {\n if (schemaMetas.some((schema) => schema.name === NO_ERRORS_SCHEMA.name)) {\n return true;\n }\n if (tagName.indexOf('-') > -1) {\n if (isNgContainer(tagName) || isNgContent(tagName)) {\n return true;\n }\n if (schemaMetas.some((schema) => schema.name === CUSTOM_ELEMENTS_SCHEMA.name)) {\n // Allow any custom elements\n return true;\n }\n }\n return !!this._schema[tagName.toLowerCase()];\n }\n /**\n * securityContext returns the security context for the given property on the given DOM tag.\n *\n * Tag and property name are statically known and cannot change at runtime, i.e. it is not\n * possible to bind a value into a changing attribute or tag name.\n *\n * The filtering is white list based. All attributes in the schema above are assumed to have the\n * 'NONE' security context, i.e. that they are safe inert string values. Only specific well known\n * attack vectors are assigned their appropriate context.\n * @param {?} tagName\n * @param {?} propName\n * @param {?} isAttribute\n * @return {?}\n */\n securityContext(tagName, propName, isAttribute) {\n if (isAttribute) {\n // NB: For security purposes, use the mapped property name, not the attribute name.\n propName = this.getMappedPropName(propName);\n }\n // Make sure comparisons are case insensitive, so that case differences between attribute and\n // property names do not have a security impact.\n tagName = tagName.toLowerCase();\n propName = propName.toLowerCase();\n let /** @type {?} */ ctx = SECURITY_SCHEMA[tagName + '|' + propName];\n if (ctx) {\n return ctx;\n }\n ctx = SECURITY_SCHEMA['*|' + propName];\n return ctx ? ctx : SecurityContext.NONE;\n }\n /**\n * @param {?} propName\n * @return {?}\n */\n getMappedPropName(propName) { return _ATTR_TO_PROP[propName] || propName; }\n /**\n * @return {?}\n */\n getDefaultComponentElementName() { return 'ng-component'; }\n /**\n * @param {?} name\n * @return {?}\n */\n validateProperty(name) {\n if (name.toLowerCase().startsWith('on')) {\n const /** @type {?} */ msg = `Binding to event property '${name}' is disallowed for security reasons, ` +\n `please use (${name.slice(2)})=...` +\n `\\nIf '${name}' is a directive input, make sure the directive is imported by the` +\n ` current module.`;\n return { error: true, msg: msg };\n }\n else {\n return { error: false };\n }\n }\n /**\n * @param {?} name\n * @return {?}\n */\n validateAttribute(name) {\n if (name.toLowerCase().startsWith('on')) {\n const /** @type {?} */ msg = `Binding to event attribute '${name}' is disallowed for security reasons, ` +\n `please use (${name.slice(2)})=...`;\n return { error: true, msg: msg };\n }\n else {\n return { error: false };\n }\n }\n /**\n * @return {?}\n */\n allKnownElementNames() { return Object.keys(this._schema); }\n /**\n * @param {?} propName\n * @return {?}\n */\n normalizeAnimationStyleProperty(propName) {\n return dashCaseToCamelCase(propName);\n }\n /**\n * @param {?} camelCaseProp\n * @param {?} userProvidedProp\n * @param {?} val\n * @return {?}\n */\n normalizeAnimationStyleValue(camelCaseProp, userProvidedProp, val) {\n let /** @type {?} */ unit = '';\n const /** @type {?} */ strVal = val.toString().trim();\n let /** @type {?} */ errorMsg = /** @type {?} */ ((null));\n if (_isPixelDimensionStyle(camelCaseProp) && val !== 0 && val !== '0') {\n if (typeof val === 'number') {\n unit = 'px';\n }\n else {\n const /** @type {?} */ valAndSuffixMatch = val.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errorMsg = `Please provide a CSS unit value for ${userProvidedProp}:${val}`;\n }\n }\n }\n return { error: errorMsg, value: strVal + unit };\n }\n}\nfunction DomElementSchemaRegistry_tsickle_Closure_declarations() {\n /** @type {?} */\n DomElementSchemaRegistry.prototype._schema;\n}\n/**\n * @param {?} prop\n * @return {?}\n */\nfunction _isPixelDimensionStyle(prop) {\n switch (prop) {\n case 'width':\n case 'height':\n case 'minWidth':\n case 'minHeight':\n case 'maxWidth':\n case 'maxHeight':\n case 'left':\n case 'top':\n case 'bottom':\n case 'right':\n case 'fontSize':\n case 'outlineWidth':\n case 'outlineOffset':\n case 'paddingTop':\n case 'paddingLeft':\n case 'paddingBottom':\n case 'paddingRight':\n case 'marginTop':\n case 'marginLeft':\n case 'marginBottom':\n case 'marginRight':\n case 'borderRadius':\n case 'borderWidth':\n case 'borderTopWidth':\n case 'borderLeftWidth':\n case 'borderRightWidth':\n case 'borderBottomWidth':\n case 'textIndent':\n return true;\n default:\n return false;\n }\n}\n//# sourceMappingURL=dom_element_schema_registry.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This file is a port of shadowCSS from webcomponents.js to TypeScript.\n *\n * Please make sure to keep to edits in sync with the source file.\n *\n * Source:\n * https://github.com/webcomponents/webcomponentsjs/blob/4efecd7e0e/src/ShadowCSS/ShadowCSS.js\n *\n * The original file level comment is reproduced below\n */\n/*\n This is a limited shim for ShadowDOM css styling.\n https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#styles\n\n The intention here is to support only the styling features which can be\n relatively simply implemented. The goal is to allow users to avoid the\n most obvious pitfalls and do so without compromising performance significantly.\n For ShadowDOM styling that's not covered here, a set of best practices\n can be provided that should allow users to accomplish more complex styling.\n\n The following is a list of specific ShadowDOM styling features and a brief\n discussion of the approach used to shim.\n\n Shimmed features:\n\n * :host, :host-context: ShadowDOM allows styling of the shadowRoot's host\n element using the :host rule. To shim this feature, the :host styles are\n reformatted and prefixed with a given scope name and promoted to a\n document level stylesheet.\n For example, given a scope name of .foo, a rule like this:\n\n :host {\n background: red;\n }\n }\n\n becomes:\n\n .foo {\n background: red;\n }\n\n * encapsulation: Styles defined within ShadowDOM, apply only to\n dom inside the ShadowDOM. Polymer uses one of two techniques to implement\n this feature.\n\n By default, rules are prefixed with the host element tag name\n as a descendant selector. This ensures styling does not leak out of the 'top'\n of the element's ShadowDOM. For example,\n\n div {\n font-weight: bold;\n }\n\n becomes:\n\n x-foo div {\n font-weight: bold;\n }\n\n becomes:\n\n\n Alternatively, if WebComponents.ShadowCSS.strictStyling is set to true then\n selectors are scoped by adding an attribute selector suffix to each\n simple selector that contains the host element tag name. Each element\n in the element's ShadowDOM template is also given the scope attribute.\n Thus, these rules match only elements that have the scope attribute.\n For example, given a scope name of x-foo, a rule like this:\n\n div {\n font-weight: bold;\n }\n\n becomes:\n\n div[x-foo] {\n font-weight: bold;\n }\n\n Note that elements that are dynamically added to a scope must have the scope\n selector added to them manually.\n\n * upper/lower bound encapsulation: Styles which are defined outside a\n shadowRoot should not cross the ShadowDOM boundary and should not apply\n inside a shadowRoot.\n\n This styling behavior is not emulated. Some possible ways to do this that\n were rejected due to complexity and/or performance concerns include: (1) reset\n every possible property for every possible selector for a given scope name;\n (2) re-implement css in javascript.\n\n As an alternative, users should make sure to use selectors\n specific to the scope in which they are working.\n\n * ::distributed: This behavior is not emulated. It's often not necessary\n to style the contents of a specific insertion point and instead, descendants\n of the host element can be styled selectively. Users can also create an\n extra node around an insertion point and style that node's contents\n via descendent selectors. For example, with a shadowRoot like this:\n\n <style>\n ::content(div) {\n background: red;\n }\n </style>\n <content></content>\n\n could become:\n\n <style>\n / *@polyfill .content-container div * /\n ::content(div) {\n background: red;\n }\n </style>\n <div class=\"content-container\">\n <content></content>\n </div>\n\n Note the use of @polyfill in the comment above a ShadowDOM specific style\n declaration. This is a directive to the styling shim to use the selector\n in comments in lieu of the next selector when running under polyfill.\n*/\nexport class ShadowCss {\n constructor() {\n this.strictStyling = true;\n }\n /**\n * @param {?} cssText\n * @param {?} selector\n * @param {?=} hostSelector\n * @return {?}\n */\n shimCssText(cssText, selector, hostSelector = '') {\n const /** @type {?} */ sourceMappingUrl = extractSourceMappingUrl(cssText);\n cssText = stripComments(cssText);\n cssText = this._insertDirectives(cssText);\n return this._scopeCssText(cssText, selector, hostSelector) + sourceMappingUrl;\n }\n /**\n * @param {?} cssText\n * @return {?}\n */\n _insertDirectives(cssText) {\n cssText = this._insertPolyfillDirectivesInCssText(cssText);\n return this._insertPolyfillRulesInCssText(cssText);\n }\n /**\n * @param {?} cssText\n * @return {?}\n */\n _insertPolyfillDirectivesInCssText(cssText) {\n // Difference with webcomponents.js: does not handle comments\n return cssText.replace(_cssContentNextSelectorRe, function (...m) { return m[2] + '{'; });\n }\n /**\n * @param {?} cssText\n * @return {?}\n */\n _insertPolyfillRulesInCssText(cssText) {\n // Difference with webcomponents.js: does not handle comments\n return cssText.replace(_cssContentRuleRe, (...m) => {\n const /** @type {?} */ rule = m[0].replace(m[1], '').replace(m[2], '');\n return m[4] + rule;\n });\n }\n /**\n * @param {?} cssText\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n _scopeCssText(cssText, scopeSelector, hostSelector) {\n const /** @type {?} */ unscopedRules = this._extractUnscopedRulesFromCssText(cssText);\n // replace :host and :host-context -shadowcsshost and -shadowcsshost respectively\n cssText = this._insertPolyfillHostInCssText(cssText);\n cssText = this._convertColonHost(cssText);\n cssText = this._convertColonHostContext(cssText);\n cssText = this._convertShadowDOMSelectors(cssText);\n if (scopeSelector) {\n cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector);\n }\n cssText = cssText + '\\n' + unscopedRules;\n return cssText.trim();\n }\n /**\n * @param {?} cssText\n * @return {?}\n */\n _extractUnscopedRulesFromCssText(cssText) {\n // Difference with webcomponents.js: does not handle comments\n let /** @type {?} */ r = '';\n let /** @type {?} */ m;\n _cssContentUnscopedRuleRe.lastIndex = 0;\n while ((m = _cssContentUnscopedRuleRe.exec(cssText)) !== null) {\n const /** @type {?} */ rule = m[0].replace(m[2], '').replace(m[1], m[4]);\n r += rule + '\\n\\n';\n }\n return r;\n }\n /**\n * @param {?} cssText\n * @return {?}\n */\n _convertColonHost(cssText) {\n return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer);\n }\n /**\n * @param {?} cssText\n * @return {?}\n */\n _convertColonHostContext(cssText) {\n return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer);\n }\n /**\n * @param {?} cssText\n * @param {?} regExp\n * @param {?} partReplacer\n * @return {?}\n */\n _convertColonRule(cssText, regExp, partReplacer) {\n // m[1] = :host(-context), m[2] = contents of (), m[3] rest of rule\n return cssText.replace(regExp, function (...m) {\n if (m[2]) {\n const /** @type {?} */ parts = m[2].split(',');\n const /** @type {?} */ r = [];\n for (let /** @type {?} */ i = 0; i < parts.length; i++) {\n const /** @type {?} */ p = parts[i].trim();\n if (!p)\n break;\n r.push(partReplacer(_polyfillHostNoCombinator, p, m[3]));\n }\n return r.join(',');\n }\n else {\n return _polyfillHostNoCombinator + m[3];\n }\n });\n }\n /**\n * @param {?} host\n * @param {?} part\n * @param {?} suffix\n * @return {?}\n */\n _colonHostContextPartReplacer(host, part, suffix) {\n if (part.indexOf(_polyfillHost) > -1) {\n return this._colonHostPartReplacer(host, part, suffix);\n }\n else {\n return host + part + suffix + ', ' + part + ' ' + host + suffix;\n }\n }\n /**\n * @param {?} host\n * @param {?} part\n * @param {?} suffix\n * @return {?}\n */\n _colonHostPartReplacer(host, part, suffix) {\n return host + part.replace(_polyfillHost, '') + suffix;\n }\n /**\n * @param {?} cssText\n * @return {?}\n */\n _convertShadowDOMSelectors(cssText) {\n return _shadowDOMSelectorsRe.reduce((result, pattern) => result.replace(pattern, ' '), cssText);\n }\n /**\n * @param {?} cssText\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n _scopeSelectors(cssText, scopeSelector, hostSelector) {\n return processRules(cssText, (rule) => {\n let /** @type {?} */ selector = rule.selector;\n let /** @type {?} */ content = rule.content;\n if (rule.selector[0] != '@') {\n selector =\n this._scopeSelector(rule.selector, scopeSelector, hostSelector, this.strictStyling);\n }\n else if (rule.selector.startsWith('@media') || rule.selector.startsWith('@supports') ||\n rule.selector.startsWith('@page') || rule.selector.startsWith('@document')) {\n content = this._scopeSelectors(rule.content, scopeSelector, hostSelector);\n }\n return new CssRule(selector, content);\n });\n }\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @param {?} strict\n * @return {?}\n */\n _scopeSelector(selector, scopeSelector, hostSelector, strict) {\n return selector.split(',')\n .map(part => part.trim().split(_shadowDeepSelectors))\n .map((deepParts) => {\n const [shallowPart, ...otherParts] = deepParts;\n const /** @type {?} */ applyScope = (shallowPart) => {\n if (this._selectorNeedsScoping(shallowPart, scopeSelector)) {\n return strict ?\n this._applyStrictSelectorScope(shallowPart, scopeSelector, hostSelector) :\n this._applySelectorScope(shallowPart, scopeSelector, hostSelector);\n }\n else {\n return shallowPart;\n }\n };\n return [applyScope(shallowPart), ...otherParts].join(' ');\n })\n .join(', ');\n }\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @return {?}\n */\n _selectorNeedsScoping(selector, scopeSelector) {\n const /** @type {?} */ re = this._makeScopeMatcher(scopeSelector);\n return !re.test(selector);\n }\n /**\n * @param {?} scopeSelector\n * @return {?}\n */\n _makeScopeMatcher(scopeSelector) {\n const /** @type {?} */ lre = /\\[/g;\n const /** @type {?} */ rre = /\\]/g;\n scopeSelector = scopeSelector.replace(lre, '\\\\[').replace(rre, '\\\\]');\n return new RegExp('^(' + scopeSelector + ')' + _selectorReSuffix, 'm');\n }\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n _applySelectorScope(selector, scopeSelector, hostSelector) {\n // Difference from webcomponents.js: scopeSelector could not be an array\n return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector);\n }\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n _applySimpleSelectorScope(selector, scopeSelector, hostSelector) {\n // In Android browser, the lastIndex is not reset when the regex is used in String.replace()\n _polyfillHostRe.lastIndex = 0;\n if (_polyfillHostRe.test(selector)) {\n const /** @type {?} */ replaceBy = this.strictStyling ? `[${hostSelector}]` : scopeSelector;\n return selector\n .replace(_polyfillHostNoCombinatorRe, (hnc, selector) => {\n return selector.replace(/([^:]*)(:*)(.*)/, (_, before, colon, after) => {\n return before + replaceBy + colon + after;\n });\n })\n .replace(_polyfillHostRe, replaceBy + ' ');\n }\n return scopeSelector + ' ' + selector;\n }\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n _applyStrictSelectorScope(selector, scopeSelector, hostSelector) {\n const /** @type {?} */ isRe = /\\[is=([^\\]]*)\\]/g;\n scopeSelector = scopeSelector.replace(isRe, (_, ...parts) => parts[0]);\n const /** @type {?} */ attrName = '[' + scopeSelector + ']';\n const /** @type {?} */ _scopeSelectorPart = (p) => {\n let /** @type {?} */ scopedP = p.trim();\n if (!scopedP) {\n return '';\n }\n if (p.indexOf(_polyfillHostNoCombinator) > -1) {\n scopedP = this._applySimpleSelectorScope(p, scopeSelector, hostSelector);\n }\n else {\n // remove :host since it should be unnecessary\n const /** @type {?} */ t = p.replace(_polyfillHostRe, '');\n if (t.length > 0) {\n const /** @type {?} */ matches = t.match(/([^:]*)(:*)(.*)/);\n if (matches) {\n scopedP = matches[1] + attrName + matches[2] + matches[3];\n }\n }\n }\n return scopedP;\n };\n const /** @type {?} */ safeContent = new SafeSelector(selector);\n selector = safeContent.content();\n let /** @type {?} */ scopedSelector = '';\n let /** @type {?} */ startIndex = 0;\n let /** @type {?} */ res;\n const /** @type {?} */ sep = /( |>|\\+|~(?!=))\\s*/g;\n // If a selector appears before :host it should not be shimmed as it\n // matches on ancestor elements and not on elements in the host's shadow\n // `:host-context(div)` is transformed to\n // `-shadowcsshost-no-combinatordiv, div -shadowcsshost-no-combinator`\n // the `div` is not part of the component in the 2nd selectors and should not be scoped.\n // Historically `component-tag:host` was matching the component so we also want to preserve\n // this behavior to avoid breaking legacy apps (it should not match).\n // The behavior should be:\n // - `tag:host` -> `tag[h]` (this is to avoid breaking legacy apps, should not match anything)\n // - `tag :host` -> `tag [h]` (`tag` is not scoped because it's considered part of a\n // `:host-context(tag)`)\n const /** @type {?} */ hasHost = selector.indexOf(_polyfillHostNoCombinator) > -1;\n // Only scope parts after the first `-shadowcsshost-no-combinator` when it is present\n let /** @type {?} */ shouldScope = !hasHost;\n while ((res = sep.exec(selector)) !== null) {\n const /** @type {?} */ separator = res[1];\n const /** @type {?} */ part = selector.slice(startIndex, res.index).trim();\n shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1;\n const /** @type {?} */ scopedPart = shouldScope ? _scopeSelectorPart(part) : part;\n scopedSelector += `${scopedPart} ${separator} `;\n startIndex = sep.lastIndex;\n }\n const /** @type {?} */ part = selector.substring(startIndex);\n shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1;\n scopedSelector += shouldScope ? _scopeSelectorPart(part) : part;\n // replace the placeholders with their original values\n return safeContent.restore(scopedSelector);\n }\n /**\n * @param {?} selector\n * @return {?}\n */\n _insertPolyfillHostInCssText(selector) {\n return selector.replace(_colonHostContextRe, _polyfillHostContext)\n .replace(_colonHostRe, _polyfillHost);\n }\n}\nfunction ShadowCss_tsickle_Closure_declarations() {\n /** @type {?} */\n ShadowCss.prototype.strictStyling;\n}\nclass SafeSelector {\n /**\n * @param {?} selector\n */\n constructor(selector) {\n this.placeholders = [];\n this.index = 0;\n // Replaces attribute selectors with placeholders.\n // The WS in [attr=\"va lue\"] would otherwise be interpreted as a selector separator.\n selector = selector.replace(/(\\[[^\\]]*\\])/g, (_, keep) => {\n const /** @type {?} */ replaceBy = `__ph-${this.index}__`;\n this.placeholders.push(keep);\n this.index++;\n return replaceBy;\n });\n // Replaces the expression in `:nth-child(2n + 1)` with a placeholder.\n // WS and \"+\" would otherwise be interpreted as selector separators.\n this._content = selector.replace(/(:nth-[-\\w]+)(\\([^)]+\\))/g, (_, pseudo, exp) => {\n const /** @type {?} */ replaceBy = `__ph-${this.index}__`;\n this.placeholders.push(exp);\n this.index++;\n return pseudo + replaceBy;\n });\n }\n /**\n * @param {?} content\n * @return {?}\n */\n restore(content) {\n return content.replace(/__ph-(\\d+)__/g, (ph, index) => this.placeholders[+index]);\n }\n /**\n * @return {?}\n */\n content() { return this._content; }\n}\nfunction SafeSelector_tsickle_Closure_declarations() {\n /** @type {?} */\n SafeSelector.prototype.placeholders;\n /** @type {?} */\n SafeSelector.prototype.index;\n /** @type {?} */\n SafeSelector.prototype._content;\n}\nconst /** @type {?} */ _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\\s]*?(['\"])(.*?)\\1[;\\s]*}([^{]*?){/gim;\nconst /** @type {?} */ _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\\s]*(['\"])(.*?)\\3)[;\\s]*[^}]*}/gim;\nconst /** @type {?} */ _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\\s]*(['\"])(.*?)\\3)[;\\s]*[^}]*}/gim;\nconst /** @type {?} */ _polyfillHost = '-shadowcsshost';\n// note: :host-context pre-processed to -shadowcsshostcontext.\nconst /** @type {?} */ _polyfillHostContext = '-shadowcsscontext';\nconst /** @type {?} */ _parenSuffix = ')(?:\\\\((' +\n '(?:\\\\([^)(]*\\\\)|[^)(]*)+?' +\n ')\\\\))?([^,{]*)';\nconst /** @type {?} */ _cssColonHostRe = new RegExp('(' + _polyfillHost + _parenSuffix, 'gim');\nconst /** @type {?} */ _cssColonHostContextRe = new RegExp('(' + _polyfillHostContext + _parenSuffix, 'gim');\nconst /** @type {?} */ _polyfillHostNoCombinator = _polyfillHost + '-no-combinator';\nconst /** @type {?} */ _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\\s]*)/;\nconst /** @type {?} */ _shadowDOMSelectorsRe = [\n /::shadow/g,\n /::content/g,\n /\\/shadow-deep\\//g,\n /\\/shadow\\//g,\n];\n// The deep combinator is deprecated in the CSS spec\n// Support for `>>>`, `deep`, `::ng-deep` is then also deprecated and will be removed in the future.\n// see https://github.com/angular/angular/pull/17677\nconst /** @type {?} */ _shadowDeepSelectors = /(?:>>>)|(?:\\/deep\\/)|(?:::ng-deep)/g;\nconst /** @type {?} */ _selectorReSuffix = '([>\\\\s~+\\[.,{:][\\\\s\\\\S]*)?$';\nconst /** @type {?} */ _polyfillHostRe = /-shadowcsshost/gim;\nconst /** @type {?} */ _colonHostRe = /:host/gim;\nconst /** @type {?} */ _colonHostContextRe = /:host-context/gim;\nconst /** @type {?} */ _commentRe = /\\/\\*\\s*[\\s\\S]*?\\*\\//g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction stripComments(input) {\n return input.replace(_commentRe, '');\n}\n// all comments except inline source mapping\nconst /** @type {?} */ _sourceMappingUrlRe = /\\/\\*\\s*#\\s*sourceMappingURL=[\\s\\S]+?\\*\\//;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction extractSourceMappingUrl(input) {\n const /** @type {?} */ matcher = input.match(_sourceMappingUrlRe);\n return matcher ? matcher[0] : '';\n}\nconst /** @type {?} */ _ruleRe = /(\\s*)([^;\\{\\}]+?)(\\s*)((?:{%BLOCK%}?\\s*;?)|(?:\\s*;))/g;\nconst /** @type {?} */ _curlyRe = /([{}])/g;\nconst /** @type {?} */ OPEN_CURLY = '{';\nconst /** @type {?} */ CLOSE_CURLY = '}';\nconst /** @type {?} */ BLOCK_PLACEHOLDER = '%BLOCK%';\nexport class CssRule {\n /**\n * @param {?} selector\n * @param {?} content\n */\n constructor(selector, content) {\n this.selector = selector;\n this.content = content;\n }\n}\nfunction CssRule_tsickle_Closure_declarations() {\n /** @type {?} */\n CssRule.prototype.selector;\n /** @type {?} */\n CssRule.prototype.content;\n}\n/**\n * @param {?} input\n * @param {?} ruleCallback\n * @return {?}\n */\nexport function processRules(input, ruleCallback) {\n const /** @type {?} */ inputWithEscapedBlocks = escapeBlocks(input);\n let /** @type {?} */ nextBlockIndex = 0;\n return inputWithEscapedBlocks.escapedString.replace(_ruleRe, function (...m) {\n const /** @type {?} */ selector = m[2];\n let /** @type {?} */ content = '';\n let /** @type {?} */ suffix = m[4];\n let /** @type {?} */ contentPrefix = '';\n if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) {\n content = inputWithEscapedBlocks.blocks[nextBlockIndex++];\n suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1);\n contentPrefix = '{';\n }\n const /** @type {?} */ rule = ruleCallback(new CssRule(selector, content));\n return `${m[1]}${rule.selector}${m[3]}${contentPrefix}${rule.content}${suffix}`;\n });\n}\nclass StringWithEscapedBlocks {\n /**\n * @param {?} escapedString\n * @param {?} blocks\n */\n constructor(escapedString, blocks) {\n this.escapedString = escapedString;\n this.blocks = blocks;\n }\n}\nfunction StringWithEscapedBlocks_tsickle_Closure_declarations() {\n /** @type {?} */\n StringWithEscapedBlocks.prototype.escapedString;\n /** @type {?} */\n StringWithEscapedBlocks.prototype.blocks;\n}\n/**\n * @param {?} input\n * @return {?}\n */\nfunction escapeBlocks(input) {\n const /** @type {?} */ inputParts = input.split(_curlyRe);\n const /** @type {?} */ resultParts = [];\n const /** @type {?} */ escapedBlocks = [];\n let /** @type {?} */ bracketCount = 0;\n let /** @type {?} */ currentBlockParts = [];\n for (let /** @type {?} */ partIndex = 0; partIndex < inputParts.length; partIndex++) {\n const /** @type {?} */ part = inputParts[partIndex];\n if (part == CLOSE_CURLY) {\n bracketCount--;\n }\n if (bracketCount > 0) {\n currentBlockParts.push(part);\n }\n else {\n if (currentBlockParts.length > 0) {\n escapedBlocks.push(currentBlockParts.join(''));\n resultParts.push(BLOCK_PLACEHOLDER);\n currentBlockParts = [];\n }\n resultParts.push(part);\n }\n if (part == OPEN_CURLY) {\n bracketCount++;\n }\n }\n if (currentBlockParts.length > 0) {\n escapedBlocks.push(currentBlockParts.join(''));\n resultParts.push(BLOCK_PLACEHOLDER);\n }\n return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks);\n}\n//# sourceMappingURL=shadow_css.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { CompileStylesheetMetadata, identifierModuleUrl, identifierName } from './compile_metadata';\nimport { ViewEncapsulation } from './core';\nimport * as o from './output/output_ast';\nimport { ShadowCss } from './shadow_css';\nconst /** @type {?} */ COMPONENT_VARIABLE = '%COMP%';\nconst /** @type {?} */ HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`;\nconst /** @type {?} */ CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;\nexport class StylesCompileDependency {\n /**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} setValue\n */\n constructor(name, moduleUrl, setValue) {\n this.name = name;\n this.moduleUrl = moduleUrl;\n this.setValue = setValue;\n }\n}\nfunction StylesCompileDependency_tsickle_Closure_declarations() {\n /** @type {?} */\n StylesCompileDependency.prototype.name;\n /** @type {?} */\n StylesCompileDependency.prototype.moduleUrl;\n /** @type {?} */\n StylesCompileDependency.prototype.setValue;\n}\nexport class CompiledStylesheet {\n /**\n * @param {?} outputCtx\n * @param {?} stylesVar\n * @param {?} dependencies\n * @param {?} isShimmed\n * @param {?} meta\n */\n constructor(outputCtx, stylesVar, dependencies, isShimmed, meta) {\n this.outputCtx = outputCtx;\n this.stylesVar = stylesVar;\n this.dependencies = dependencies;\n this.isShimmed = isShimmed;\n this.meta = meta;\n }\n}\nfunction CompiledStylesheet_tsickle_Closure_declarations() {\n /** @type {?} */\n CompiledStylesheet.prototype.outputCtx;\n /** @type {?} */\n CompiledStylesheet.prototype.stylesVar;\n /** @type {?} */\n CompiledStylesheet.prototype.dependencies;\n /** @type {?} */\n CompiledStylesheet.prototype.isShimmed;\n /** @type {?} */\n CompiledStylesheet.prototype.meta;\n}\nexport class StyleCompiler {\n /**\n * @param {?} _urlResolver\n */\n constructor(_urlResolver) {\n this._urlResolver = _urlResolver;\n this._shadowCss = new ShadowCss();\n }\n /**\n * @param {?} outputCtx\n * @param {?} comp\n * @return {?}\n */\n compileComponent(outputCtx, comp) {\n const /** @type {?} */ template = /** @type {?} */ ((comp.template));\n return this._compileStyles(outputCtx, comp, new CompileStylesheetMetadata({\n styles: template.styles,\n styleUrls: template.styleUrls,\n moduleUrl: identifierModuleUrl(comp.type)\n }), this.needsStyleShim(comp), true);\n }\n /**\n * @param {?} outputCtx\n * @param {?} comp\n * @param {?} stylesheet\n * @param {?=} shim\n * @return {?}\n */\n compileStyles(outputCtx, comp, stylesheet, shim = this.needsStyleShim(comp)) {\n return this._compileStyles(outputCtx, comp, stylesheet, shim, false);\n }\n /**\n * @param {?} comp\n * @return {?}\n */\n needsStyleShim(comp) {\n return /** @type {?} */ ((comp.template)).encapsulation === ViewEncapsulation.Emulated;\n }\n /**\n * @param {?} outputCtx\n * @param {?} comp\n * @param {?} stylesheet\n * @param {?} shim\n * @param {?} isComponentStylesheet\n * @return {?}\n */\n _compileStyles(outputCtx, comp, stylesheet, shim, isComponentStylesheet) {\n const /** @type {?} */ styleExpressions = stylesheet.styles.map(plainStyle => o.literal(this._shimIfNeeded(plainStyle, shim)));\n const /** @type {?} */ dependencies = [];\n stylesheet.styleUrls.forEach((styleUrl) => {\n const /** @type {?} */ exprIndex = styleExpressions.length;\n // Note: This placeholder will be filled later.\n styleExpressions.push(/** @type {?} */ ((null)));\n dependencies.push(new StylesCompileDependency(getStylesVarName(null), styleUrl, (value) => styleExpressions[exprIndex] = outputCtx.importExpr(value)));\n });\n // styles variable contains plain strings and arrays of other styles arrays (recursive),\n // so we set its type to dynamic.\n const /** @type {?} */ stylesVar = getStylesVarName(isComponentStylesheet ? comp : null);\n const /** @type {?} */ stmt = o.variable(stylesVar)\n .set(o.literalArr(styleExpressions, new o.ArrayType(o.DYNAMIC_TYPE, [o.TypeModifier.Const])))\n .toDeclStmt(null, isComponentStylesheet ? [o.StmtModifier.Final] : [\n o.StmtModifier.Final, o.StmtModifier.Exported\n ]);\n outputCtx.statements.push(stmt);\n return new CompiledStylesheet(outputCtx, stylesVar, dependencies, shim, stylesheet);\n }\n /**\n * @param {?} style\n * @param {?} shim\n * @return {?}\n */\n _shimIfNeeded(style, shim) {\n return shim ? this._shadowCss.shimCssText(style, CONTENT_ATTR, HOST_ATTR) : style;\n }\n}\nfunction StyleCompiler_tsickle_Closure_declarations() {\n /** @type {?} */\n StyleCompiler.prototype._shadowCss;\n /** @type {?} */\n StyleCompiler.prototype._urlResolver;\n}\n/**\n * @param {?} component\n * @return {?}\n */\nfunction getStylesVarName(component) {\n let /** @type {?} */ result = `styles`;\n if (component) {\n result += `_${identifierName(component.type)}`;\n }\n return result;\n}\n//# sourceMappingURL=style_compiler.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as html from './ast';\nimport { ParseTreeResult } from './parser';\nimport { NGSP_UNICODE } from './tags';\nexport const /** @type {?} */ PRESERVE_WS_ATTR_NAME = 'ngPreserveWhitespaces';\nconst /** @type {?} */ SKIP_WS_TRIM_TAGS = new Set(['pre', 'template', 'textarea', 'script', 'style']);\n// Equivalent to \\s with \\u00a0 (non-breaking space) excluded.\n// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\nconst /** @type {?} */ WS_CHARS = ' \\f\\n\\r\\t\\v\\u1680\\u180e\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\nconst /** @type {?} */ NO_WS_REGEXP = new RegExp(`[^${WS_CHARS}]`);\nconst /** @type {?} */ WS_REPLACE_REGEXP = new RegExp(`[${WS_CHARS}]{2,}`, 'g');\n/**\n * @param {?} attrs\n * @return {?}\n */\nfunction hasPreserveWhitespacesAttr(attrs) {\n return attrs.some((attr) => attr.name === PRESERVE_WS_ATTR_NAME);\n}\n/**\n * Angular Dart introduced &ngsp; as a placeholder for non-removable space, see:\n * https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart#L25-L32\n * In Angular Dart &ngsp; is converted to the 0xE500 PUA (Private Use Areas) unicode character\n * and later on replaced by a space. We are re-implementing the same idea here.\n * @param {?} value\n * @return {?}\n */\nexport function replaceNgsp(value) {\n // lexer is replacing the &ngsp; pseudo-entity with NGSP_UNICODE\n return value.replace(new RegExp(NGSP_UNICODE, 'g'), ' ');\n}\n/**\n * This visitor can walk HTML parse tree and remove / trim text nodes using the following rules:\n * - consider spaces, tabs and new lines as whitespace characters;\n * - drop text nodes consisting of whitespace characters only;\n * - for all other text nodes replace consecutive whitespace characters with one space;\n * - convert &ngsp; pseudo-entity to a single space;\n *\n * Removal and trimming of whitespaces have positive performance impact (less code to generate\n * while compiling templates, faster view creation). At the same time it can be \"destructive\"\n * in some cases (whitespaces can influence layout). Because of the potential of breaking layout\n * this visitor is not activated by default in Angular 5 and people need to explicitly opt-in for\n * whitespace removal. The default option for whitespace removal will be revisited in Angular 6\n * and might be changed to \"on\" by default.\n */\nclass WhitespaceVisitor {\n /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n visitElement(element, context) {\n if (SKIP_WS_TRIM_TAGS.has(element.name) || hasPreserveWhitespacesAttr(element.attrs)) {\n // don't descent into elements where we need to preserve whitespaces\n // but still visit all attributes to eliminate one used as a market to preserve WS\n return new html.Element(element.name, html.visitAll(this, element.attrs), element.children, element.sourceSpan, element.startSourceSpan, element.endSourceSpan);\n }\n return new html.Element(element.name, element.attrs, html.visitAll(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan);\n }\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n visitAttribute(attribute, context) {\n return attribute.name !== PRESERVE_WS_ATTR_NAME ? attribute : null;\n }\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n visitText(text, context) {\n const /** @type {?} */ isNotBlank = text.value.match(NO_WS_REGEXP);\n if (isNotBlank) {\n return new html.Text(replaceNgsp(text.value).replace(WS_REPLACE_REGEXP, ' '), text.sourceSpan);\n }\n return null;\n }\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n visitComment(comment, context) { return comment; }\n /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n visitExpansion(expansion, context) { return expansion; }\n /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(expansionCase, context) { return expansionCase; }\n}\n/**\n * @param {?} htmlAstWithErrors\n * @return {?}\n */\nexport function removeWhitespaces(htmlAstWithErrors) {\n return new ParseTreeResult(html.visitAll(new WhitespaceVisitor(), htmlAstWithErrors.rootNodes), htmlAstWithErrors.errors);\n}\n//# sourceMappingURL=html_whitespaces.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ParseError } from '../parse_util';\nimport * as html from './ast';\n// http://cldr.unicode.org/index/cldr-spec/plural-rules\nconst /** @type {?} */ PLURAL_CASES = ['zero', 'one', 'two', 'few', 'many', 'other'];\n/**\n * Expands special forms into elements.\n *\n * For example,\n *\n * ```\n * { messages.length, plural,\n * =0 {zero}\n * =1 {one}\n * other {more than one}\n * }\n * ```\n *\n * will be expanded into\n *\n * ```\n * <ng-container [ngPlural]=\"messages.length\">\n * <ng-template ngPluralCase=\"=0\">zero</ng-template>\n * <ng-template ngPluralCase=\"=1\">one</ng-template>\n * <ng-template ngPluralCase=\"other\">more than one</ng-template>\n * </ng-container>\n * ```\n * @param {?} nodes\n * @return {?}\n */\nexport function expandNodes(nodes) {\n const /** @type {?} */ expander = new _Expander();\n return new ExpansionResult(html.visitAll(expander, nodes), expander.isExpanded, expander.errors);\n}\nexport class ExpansionResult {\n /**\n * @param {?} nodes\n * @param {?} expanded\n * @param {?} errors\n */\n constructor(nodes, expanded, errors) {\n this.nodes = nodes;\n this.expanded = expanded;\n this.errors = errors;\n }\n}\nfunction ExpansionResult_tsickle_Closure_declarations() {\n /** @type {?} */\n ExpansionResult.prototype.nodes;\n /** @type {?} */\n ExpansionResult.prototype.expanded;\n /** @type {?} */\n ExpansionResult.prototype.errors;\n}\nexport class ExpansionError extends ParseError {\n /**\n * @param {?} span\n * @param {?} errorMsg\n */\n constructor(span, errorMsg) { super(span, errorMsg); }\n}\n/**\n * Expand expansion forms (plural, select) to directives\n *\n * \\@internal\n */\nclass _Expander {\n constructor() {\n this.isExpanded = false;\n this.errors = [];\n }\n /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n visitElement(element, context) {\n return new html.Element(element.name, element.attrs, html.visitAll(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan);\n }\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n visitAttribute(attribute, context) { return attribute; }\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n visitText(text, context) { return text; }\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n visitComment(comment, context) { return comment; }\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n visitExpansion(icu, context) {\n this.isExpanded = true;\n return icu.type == 'plural' ? _expandPluralForm(icu, this.errors) :\n _expandDefaultForm(icu, this.errors);\n }\n /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(icuCase, context) {\n throw new Error('Should not be reached');\n }\n}\nfunction _Expander_tsickle_Closure_declarations() {\n /** @type {?} */\n _Expander.prototype.isExpanded;\n /** @type {?} */\n _Expander.prototype.errors;\n}\n/**\n * @param {?} ast\n * @param {?} errors\n * @return {?}\n */\nfunction _expandPluralForm(ast, errors) {\n const /** @type {?} */ children = ast.cases.map(c => {\n if (PLURAL_CASES.indexOf(c.value) == -1 && !c.value.match(/^=\\d+$/)) {\n errors.push(new ExpansionError(c.valueSourceSpan, `Plural cases should be \"=<number>\" or one of ${PLURAL_CASES.join(\", \")}`));\n }\n const /** @type {?} */ expansionResult = expandNodes(c.expression);\n errors.push(...expansionResult.errors);\n return new html.Element(`ng-template`, [new html.Attribute('ngPluralCase', `${c.value}`, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);\n });\n const /** @type {?} */ switchAttr = new html.Attribute('[ngPlural]', ast.switchValue, ast.switchValueSourceSpan);\n return new html.Element('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan);\n}\n/**\n * @param {?} ast\n * @param {?} errors\n * @return {?}\n */\nfunction _expandDefaultForm(ast, errors) {\n const /** @type {?} */ children = ast.cases.map(c => {\n const /** @type {?} */ expansionResult = expandNodes(c.expression);\n errors.push(...expansionResult.errors);\n if (c.value === 'other') {\n // other is the default case when no values match\n return new html.Element(`ng-template`, [new html.Attribute('ngSwitchDefault', '', c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);\n }\n return new html.Element(`ng-template`, [new html.Attribute('ngSwitchCase', `${c.value}`, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);\n });\n const /** @type {?} */ switchAttr = new html.Attribute('[ngSwitch]', ast.switchValue, ast.switchValueSourceSpan);\n return new html.Element('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan);\n}\n//# sourceMappingURL=icu_ast_expander.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { SecurityContext } from '../core';\nimport { EmptyExpr, RecursiveAstVisitor } from '../expression_parser/ast';\nimport { mergeNsAndName } from '../ml_parser/tags';\nimport { ParseError, ParseErrorLevel, ParseSourceSpan } from '../parse_util';\nimport { CssSelector } from '../selector';\nimport { splitAtColon, splitAtPeriod } from '../util';\nimport { BoundElementPropertyAst, BoundEventAst, PropertyBindingType, VariableAst } from './template_ast';\nconst /** @type {?} */ PROPERTY_PARTS_SEPARATOR = '.';\nconst /** @type {?} */ ATTRIBUTE_PREFIX = 'attr';\nconst /** @type {?} */ CLASS_PREFIX = 'class';\nconst /** @type {?} */ STYLE_PREFIX = 'style';\nconst /** @type {?} */ ANIMATE_PROP_PREFIX = 'animate-';\n/** @enum {number} */\nconst BoundPropertyType = {\n DEFAULT: 0,\n LITERAL_ATTR: 1,\n ANIMATION: 2,\n};\nexport { BoundPropertyType };\nBoundPropertyType[BoundPropertyType.DEFAULT] = \"DEFAULT\";\nBoundPropertyType[BoundPropertyType.LITERAL_ATTR] = \"LITERAL_ATTR\";\nBoundPropertyType[BoundPropertyType.ANIMATION] = \"ANIMATION\";\n/**\n * Represents a parsed property.\n */\nexport class BoundProperty {\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} type\n * @param {?} sourceSpan\n */\n constructor(name, expression, type, sourceSpan) {\n this.name = name;\n this.expression = expression;\n this.type = type;\n this.sourceSpan = sourceSpan;\n this.isLiteral = this.type === BoundPropertyType.LITERAL_ATTR;\n this.isAnimation = this.type === BoundPropertyType.ANIMATION;\n }\n}\nfunction BoundProperty_tsickle_Closure_declarations() {\n /** @type {?} */\n BoundProperty.prototype.isLiteral;\n /** @type {?} */\n BoundProperty.prototype.isAnimation;\n /** @type {?} */\n BoundProperty.prototype.name;\n /** @type {?} */\n BoundProperty.prototype.expression;\n /** @type {?} */\n BoundProperty.prototype.type;\n /** @type {?} */\n BoundProperty.prototype.sourceSpan;\n}\n/**\n * Parses bindings in templates and in the directive host area.\n */\nexport class BindingParser {\n /**\n * @param {?} _exprParser\n * @param {?} _interpolationConfig\n * @param {?} _schemaRegistry\n * @param {?} pipes\n * @param {?} _targetErrors\n */\n constructor(_exprParser, _interpolationConfig, _schemaRegistry, pipes, _targetErrors) {\n this._exprParser = _exprParser;\n this._interpolationConfig = _interpolationConfig;\n this._schemaRegistry = _schemaRegistry;\n this._targetErrors = _targetErrors;\n this.pipesByName = new Map();\n this._usedPipes = new Map();\n pipes.forEach(pipe => this.pipesByName.set(pipe.name, pipe));\n }\n /**\n * @return {?}\n */\n getUsedPipes() { return Array.from(this._usedPipes.values()); }\n /**\n * @param {?} dirMeta\n * @param {?} elementSelector\n * @param {?} sourceSpan\n * @return {?}\n */\n createDirectiveHostPropertyAsts(dirMeta, elementSelector, sourceSpan) {\n if (dirMeta.hostProperties) {\n const /** @type {?} */ boundProps = [];\n Object.keys(dirMeta.hostProperties).forEach(propName => {\n const /** @type {?} */ expression = dirMeta.hostProperties[propName];\n if (typeof expression === 'string') {\n this.parsePropertyBinding(propName, expression, true, sourceSpan, [], boundProps);\n }\n else {\n this._reportError(`Value of the host property binding \"${propName}\" needs to be a string representing an expression but got \"${expression}\" (${typeof expression})`, sourceSpan);\n }\n });\n return boundProps.map((prop) => this.createElementPropertyAst(elementSelector, prop));\n }\n return null;\n }\n /**\n * @param {?} dirMeta\n * @param {?} sourceSpan\n * @return {?}\n */\n createDirectiveHostEventAsts(dirMeta, sourceSpan) {\n if (dirMeta.hostListeners) {\n const /** @type {?} */ targetEventAsts = [];\n Object.keys(dirMeta.hostListeners).forEach(propName => {\n const /** @type {?} */ expression = dirMeta.hostListeners[propName];\n if (typeof expression === 'string') {\n this.parseEvent(propName, expression, sourceSpan, [], targetEventAsts);\n }\n else {\n this._reportError(`Value of the host listener \"${propName}\" needs to be a string representing an expression but got \"${expression}\" (${typeof expression})`, sourceSpan);\n }\n });\n return targetEventAsts;\n }\n return null;\n }\n /**\n * @param {?} value\n * @param {?} sourceSpan\n * @return {?}\n */\n parseInterpolation(value, sourceSpan) {\n const /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n try {\n const /** @type {?} */ ast = /** @type {?} */ ((this._exprParser.parseInterpolation(value, sourceInfo, this._interpolationConfig)));\n if (ast)\n this._reportExpressionParserErrors(ast.errors, sourceSpan);\n this._checkPipes(ast, sourceSpan);\n return ast;\n }\n catch (/** @type {?} */ e) {\n this._reportError(`${e}`, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n }\n /**\n * @param {?} prefixToken\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @param {?} targetVars\n * @return {?}\n */\n parseInlineTemplateBinding(prefixToken, value, sourceSpan, targetMatchableAttrs, targetProps, targetVars) {\n const /** @type {?} */ bindings = this._parseTemplateBindings(prefixToken, value, sourceSpan);\n for (let /** @type {?} */ i = 0; i < bindings.length; i++) {\n const /** @type {?} */ binding = bindings[i];\n if (binding.keyIsVar) {\n targetVars.push(new VariableAst(binding.key, binding.name, sourceSpan));\n }\n else if (binding.expression) {\n this._parsePropertyAst(binding.key, binding.expression, sourceSpan, targetMatchableAttrs, targetProps);\n }\n else {\n targetMatchableAttrs.push([binding.key, '']);\n this.parseLiteralAttr(binding.key, null, sourceSpan, targetMatchableAttrs, targetProps);\n }\n }\n }\n /**\n * @param {?} prefixToken\n * @param {?} value\n * @param {?} sourceSpan\n * @return {?}\n */\n _parseTemplateBindings(prefixToken, value, sourceSpan) {\n const /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n try {\n const /** @type {?} */ bindingsResult = this._exprParser.parseTemplateBindings(prefixToken, value, sourceInfo);\n this._reportExpressionParserErrors(bindingsResult.errors, sourceSpan);\n bindingsResult.templateBindings.forEach((binding) => {\n if (binding.expression) {\n this._checkPipes(binding.expression, sourceSpan);\n }\n });\n bindingsResult.warnings.forEach((warning) => { this._reportError(warning, sourceSpan, ParseErrorLevel.WARNING); });\n return bindingsResult.templateBindings;\n }\n catch (/** @type {?} */ e) {\n this._reportError(`${e}`, sourceSpan);\n return [];\n }\n }\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n parseLiteralAttr(name, value, sourceSpan, targetMatchableAttrs, targetProps) {\n if (_isAnimationLabel(name)) {\n name = name.substring(1);\n if (value) {\n this._reportError(`Assigning animation triggers via @prop=\"exp\" attributes with an expression is invalid.` +\n ` Use property bindings (e.g. [@prop]=\"exp\") or use an attribute without a value (e.g. @prop) instead.`, sourceSpan, ParseErrorLevel.ERROR);\n }\n this._parseAnimation(name, value, sourceSpan, targetMatchableAttrs, targetProps);\n }\n else {\n targetProps.push(new BoundProperty(name, this._exprParser.wrapLiteralPrimitive(value, ''), BoundPropertyType.LITERAL_ATTR, sourceSpan));\n }\n }\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} isHost\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n parsePropertyBinding(name, expression, isHost, sourceSpan, targetMatchableAttrs, targetProps) {\n let /** @type {?} */ isAnimationProp = false;\n if (name.startsWith(ANIMATE_PROP_PREFIX)) {\n isAnimationProp = true;\n name = name.substring(ANIMATE_PROP_PREFIX.length);\n }\n else if (_isAnimationLabel(name)) {\n isAnimationProp = true;\n name = name.substring(1);\n }\n if (isAnimationProp) {\n this._parseAnimation(name, expression, sourceSpan, targetMatchableAttrs, targetProps);\n }\n else {\n this._parsePropertyAst(name, this._parseBinding(expression, isHost, sourceSpan), sourceSpan, targetMatchableAttrs, targetProps);\n }\n }\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n parsePropertyInterpolation(name, value, sourceSpan, targetMatchableAttrs, targetProps) {\n const /** @type {?} */ expr = this.parseInterpolation(value, sourceSpan);\n if (expr) {\n this._parsePropertyAst(name, expr, sourceSpan, targetMatchableAttrs, targetProps);\n return true;\n }\n return false;\n }\n /**\n * @param {?} name\n * @param {?} ast\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n _parsePropertyAst(name, ast, sourceSpan, targetMatchableAttrs, targetProps) {\n targetMatchableAttrs.push([name, /** @type {?} */ ((ast.source))]);\n targetProps.push(new BoundProperty(name, ast, BoundPropertyType.DEFAULT, sourceSpan));\n }\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n _parseAnimation(name, expression, sourceSpan, targetMatchableAttrs, targetProps) {\n // This will occur when a @trigger is not paired with an expression.\n // For animations it is valid to not have an expression since */void\n // states will be applied by angular when the element is attached/detached\n const /** @type {?} */ ast = this._parseBinding(expression || 'undefined', false, sourceSpan);\n targetMatchableAttrs.push([name, /** @type {?} */ ((ast.source))]);\n targetProps.push(new BoundProperty(name, ast, BoundPropertyType.ANIMATION, sourceSpan));\n }\n /**\n * @param {?} value\n * @param {?} isHostBinding\n * @param {?} sourceSpan\n * @return {?}\n */\n _parseBinding(value, isHostBinding, sourceSpan) {\n const /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n try {\n const /** @type {?} */ ast = isHostBinding ?\n this._exprParser.parseSimpleBinding(value, sourceInfo, this._interpolationConfig) :\n this._exprParser.parseBinding(value, sourceInfo, this._interpolationConfig);\n if (ast)\n this._reportExpressionParserErrors(ast.errors, sourceSpan);\n this._checkPipes(ast, sourceSpan);\n return ast;\n }\n catch (/** @type {?} */ e) {\n this._reportError(`${e}`, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n }\n /**\n * @param {?} elementSelector\n * @param {?} boundProp\n * @return {?}\n */\n createElementPropertyAst(elementSelector, boundProp) {\n if (boundProp.isAnimation) {\n return new BoundElementPropertyAst(boundProp.name, PropertyBindingType.Animation, SecurityContext.NONE, boundProp.expression, null, boundProp.sourceSpan);\n }\n let /** @type {?} */ unit = null;\n let /** @type {?} */ bindingType = /** @type {?} */ ((undefined));\n let /** @type {?} */ boundPropertyName = null;\n const /** @type {?} */ parts = boundProp.name.split(PROPERTY_PARTS_SEPARATOR);\n let /** @type {?} */ securityContexts = /** @type {?} */ ((undefined));\n // Check check for special cases (prefix style, attr, class)\n if (parts.length > 1) {\n if (parts[0] == ATTRIBUTE_PREFIX) {\n boundPropertyName = parts[1];\n this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, true);\n securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, true);\n const /** @type {?} */ nsSeparatorIdx = boundPropertyName.indexOf(':');\n if (nsSeparatorIdx > -1) {\n const /** @type {?} */ ns = boundPropertyName.substring(0, nsSeparatorIdx);\n const /** @type {?} */ name = boundPropertyName.substring(nsSeparatorIdx + 1);\n boundPropertyName = mergeNsAndName(ns, name);\n }\n bindingType = PropertyBindingType.Attribute;\n }\n else if (parts[0] == CLASS_PREFIX) {\n boundPropertyName = parts[1];\n bindingType = PropertyBindingType.Class;\n securityContexts = [SecurityContext.NONE];\n }\n else if (parts[0] == STYLE_PREFIX) {\n unit = parts.length > 2 ? parts[2] : null;\n boundPropertyName = parts[1];\n bindingType = PropertyBindingType.Style;\n securityContexts = [SecurityContext.STYLE];\n }\n }\n // If not a special case, use the full property name\n if (boundPropertyName === null) {\n boundPropertyName = this._schemaRegistry.getMappedPropName(boundProp.name);\n securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, false);\n bindingType = PropertyBindingType.Property;\n this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, false);\n }\n return new BoundElementPropertyAst(boundPropertyName, bindingType, securityContexts[0], boundProp.expression, unit, boundProp.sourceSpan);\n }\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetEvents\n * @return {?}\n */\n parseEvent(name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\n if (_isAnimationLabel(name)) {\n name = name.substr(1);\n this._parseAnimationEvent(name, expression, sourceSpan, targetEvents);\n }\n else {\n this._parseEvent(name, expression, sourceSpan, targetMatchableAttrs, targetEvents);\n }\n }\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetEvents\n * @return {?}\n */\n _parseAnimationEvent(name, expression, sourceSpan, targetEvents) {\n const /** @type {?} */ matches = splitAtPeriod(name, [name, '']);\n const /** @type {?} */ eventName = matches[0];\n const /** @type {?} */ phase = matches[1].toLowerCase();\n if (phase) {\n switch (phase) {\n case 'start':\n case 'done':\n const /** @type {?} */ ast = this._parseAction(expression, sourceSpan);\n targetEvents.push(new BoundEventAst(eventName, null, phase, ast, sourceSpan));\n break;\n default:\n this._reportError(`The provided animation output phase value \"${phase}\" for \"@${eventName}\" is not supported (use start or done)`, sourceSpan);\n break;\n }\n }\n else {\n this._reportError(`The animation trigger output event (@${eventName}) is missing its phase value name (start or done are currently supported)`, sourceSpan);\n }\n }\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetEvents\n * @return {?}\n */\n _parseEvent(name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\n // long format: 'target: eventName'\n const [target, eventName] = splitAtColon(name, [/** @type {?} */ ((null)), name]);\n const /** @type {?} */ ast = this._parseAction(expression, sourceSpan);\n targetMatchableAttrs.push([/** @type {?} */ ((name)), /** @type {?} */ ((ast.source))]);\n targetEvents.push(new BoundEventAst(eventName, target, null, ast, sourceSpan));\n // Don't detect directives for event names for now,\n // so don't add the event name to the matchableAttrs\n }\n /**\n * @param {?} value\n * @param {?} sourceSpan\n * @return {?}\n */\n _parseAction(value, sourceSpan) {\n const /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n try {\n const /** @type {?} */ ast = this._exprParser.parseAction(value, sourceInfo, this._interpolationConfig);\n if (ast) {\n this._reportExpressionParserErrors(ast.errors, sourceSpan);\n }\n if (!ast || ast.ast instanceof EmptyExpr) {\n this._reportError(`Empty expressions are not allowed`, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n this._checkPipes(ast, sourceSpan);\n return ast;\n }\n catch (/** @type {?} */ e) {\n this._reportError(`${e}`, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n }\n /**\n * @param {?} message\n * @param {?} sourceSpan\n * @param {?=} level\n * @return {?}\n */\n _reportError(message, sourceSpan, level = ParseErrorLevel.ERROR) {\n this._targetErrors.push(new ParseError(sourceSpan, message, level));\n }\n /**\n * @param {?} errors\n * @param {?} sourceSpan\n * @return {?}\n */\n _reportExpressionParserErrors(errors, sourceSpan) {\n for (const /** @type {?} */ error of errors) {\n this._reportError(error.message, sourceSpan);\n }\n }\n /**\n * @param {?} ast\n * @param {?} sourceSpan\n * @return {?}\n */\n _checkPipes(ast, sourceSpan) {\n if (ast) {\n const /** @type {?} */ collector = new PipeCollector();\n ast.visit(collector);\n collector.pipes.forEach((ast, pipeName) => {\n const /** @type {?} */ pipeMeta = this.pipesByName.get(pipeName);\n if (!pipeMeta) {\n this._reportError(`The pipe '${pipeName}' could not be found`, new ParseSourceSpan(sourceSpan.start.moveBy(ast.span.start), sourceSpan.start.moveBy(ast.span.end)));\n }\n else {\n this._usedPipes.set(pipeName, pipeMeta);\n }\n });\n }\n }\n /**\n * @param {?} propName the name of the property / attribute\n * @param {?} sourceSpan\n * @param {?} isAttr true when binding to an attribute\n * @return {?}\n */\n _validatePropertyOrAttributeName(propName, sourceSpan, isAttr) {\n const /** @type {?} */ report = isAttr ? this._schemaRegistry.validateAttribute(propName) :\n this._schemaRegistry.validateProperty(propName);\n if (report.error) {\n this._reportError(/** @type {?} */ ((report.msg)), sourceSpan, ParseErrorLevel.ERROR);\n }\n }\n}\nfunction BindingParser_tsickle_Closure_declarations() {\n /** @type {?} */\n BindingParser.prototype.pipesByName;\n /** @type {?} */\n BindingParser.prototype._usedPipes;\n /** @type {?} */\n BindingParser.prototype._exprParser;\n /** @type {?} */\n BindingParser.prototype._interpolationConfig;\n /** @type {?} */\n BindingParser.prototype._schemaRegistry;\n /** @type {?} */\n BindingParser.prototype._targetErrors;\n}\nexport class PipeCollector extends RecursiveAstVisitor {\n constructor() {\n super(...arguments);\n this.pipes = new Map();\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPipe(ast, context) {\n this.pipes.set(ast.name, ast);\n ast.exp.visit(this);\n this.visitAll(ast.args, context);\n return null;\n }\n}\nfunction PipeCollector_tsickle_Closure_declarations() {\n /** @type {?} */\n PipeCollector.prototype.pipes;\n}\n/**\n * @param {?} name\n * @return {?}\n */\nfunction _isAnimationLabel(name) {\n return name[0] == '@';\n}\n/**\n * @param {?} registry\n * @param {?} selector\n * @param {?} propName\n * @param {?} isAttribute\n * @return {?}\n */\nexport function calcPossibleSecurityContexts(registry, selector, propName, isAttribute) {\n const /** @type {?} */ ctxs = [];\n CssSelector.parse(selector).forEach((selector) => {\n const /** @type {?} */ elementNames = selector.element ? [selector.element] : registry.allKnownElementNames();\n const /** @type {?} */ notElementNames = new Set(selector.notSelectors.filter(selector => selector.isElementSelector())\n .map((selector) => selector.element));\n const /** @type {?} */ possibleElementNames = elementNames.filter(elementName => !notElementNames.has(elementName));\n ctxs.push(...possibleElementNames.map(elementName => registry.securityContext(elementName, propName, isAttribute)));\n });\n return ctxs.length === 0 ? [SecurityContext.NONE] : Array.from(new Set(ctxs)).sort();\n}\n//# sourceMappingURL=binding_parser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { identifierName } from '../compile_metadata';\nimport { ASTWithSource, EmptyExpr } from '../expression_parser/ast';\nimport { Identifiers, createTokenForExternalReference, createTokenForReference } from '../identifiers';\nimport * as html from '../ml_parser/ast';\nimport { ParseTreeResult } from '../ml_parser/html_parser';\nimport { removeWhitespaces, replaceNgsp } from '../ml_parser/html_whitespaces';\nimport { expandNodes } from '../ml_parser/icu_ast_expander';\nimport { InterpolationConfig } from '../ml_parser/interpolation_config';\nimport { isNgTemplate, splitNsName } from '../ml_parser/tags';\nimport { ParseError, ParseErrorLevel, ParseSourceSpan } from '../parse_util';\nimport { ProviderElementContext, ProviderViewContext } from '../provider_analyzer';\nimport { CssSelector, SelectorMatcher } from '../selector';\nimport { isStyleUrlResolvable } from '../style_url_resolver';\nimport { syntaxError } from '../util';\nimport { BindingParser } from './binding_parser';\nimport { AttrAst, BoundDirectivePropertyAst, BoundTextAst, DirectiveAst, ElementAst, EmbeddedTemplateAst, NgContentAst, PropertyBindingType, ReferenceAst, TextAst, VariableAst, templateVisitAll } from './template_ast';\nimport { PreparsedElementType, preparseElement } from './template_preparser';\nconst /** @type {?} */ BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(let-)|(ref-|#)|(on-)|(bindon-)|(@))(.+))|\\[\\(([^\\)]+)\\)\\]|\\[([^\\]]+)\\]|\\(([^\\)]+)\\))$/;\n// Group 1 = \"bind-\"\nconst /** @type {?} */ KW_BIND_IDX = 1;\n// Group 2 = \"let-\"\nconst /** @type {?} */ KW_LET_IDX = 2;\n// Group 3 = \"ref-/#\"\nconst /** @type {?} */ KW_REF_IDX = 3;\n// Group 4 = \"on-\"\nconst /** @type {?} */ KW_ON_IDX = 4;\n// Group 5 = \"bindon-\"\nconst /** @type {?} */ KW_BINDON_IDX = 5;\n// Group 6 = \"@\"\nconst /** @type {?} */ KW_AT_IDX = 6;\n// Group 7 = the identifier after \"bind-\", \"let-\", \"ref-/#\", \"on-\", \"bindon-\" or \"@\"\nconst /** @type {?} */ IDENT_KW_IDX = 7;\n// Group 8 = identifier inside [()]\nconst /** @type {?} */ IDENT_BANANA_BOX_IDX = 8;\n// Group 9 = identifier inside []\nconst /** @type {?} */ IDENT_PROPERTY_IDX = 9;\n// Group 10 = identifier inside ()\nconst /** @type {?} */ IDENT_EVENT_IDX = 10;\n// deprecated in 4.x\nconst /** @type {?} */ TEMPLATE_ELEMENT = 'template';\n// deprecated in 4.x\nconst /** @type {?} */ TEMPLATE_ATTR = 'template';\nconst /** @type {?} */ TEMPLATE_ATTR_PREFIX = '*';\nconst /** @type {?} */ CLASS_ATTR = 'class';\nconst /** @type {?} */ TEXT_CSS_SELECTOR = CssSelector.parse('*')[0];\nconst /** @type {?} */ TEMPLATE_ELEMENT_DEPRECATION_WARNING = 'The <template> element is deprecated. Use <ng-template> instead';\nconst /** @type {?} */ TEMPLATE_ATTR_DEPRECATION_WARNING = 'The template attribute is deprecated. Use an ng-template element instead.';\nlet /** @type {?} */ warningCounts = {};\n/**\n * @param {?} warnings\n * @return {?}\n */\nfunction warnOnlyOnce(warnings) {\n return (error) => {\n if (warnings.indexOf(error.msg) !== -1) {\n warningCounts[error.msg] = (warningCounts[error.msg] || 0) + 1;\n return warningCounts[error.msg] <= 1;\n }\n return true;\n };\n}\nexport class TemplateParseError extends ParseError {\n /**\n * @param {?} message\n * @param {?} span\n * @param {?} level\n */\n constructor(message, span, level) {\n super(span, message, level);\n }\n}\nexport class TemplateParseResult {\n /**\n * @param {?=} templateAst\n * @param {?=} usedPipes\n * @param {?=} errors\n */\n constructor(templateAst, usedPipes, errors) {\n this.templateAst = templateAst;\n this.usedPipes = usedPipes;\n this.errors = errors;\n }\n}\nfunction TemplateParseResult_tsickle_Closure_declarations() {\n /** @type {?} */\n TemplateParseResult.prototype.templateAst;\n /** @type {?} */\n TemplateParseResult.prototype.usedPipes;\n /** @type {?} */\n TemplateParseResult.prototype.errors;\n}\nexport class TemplateParser {\n /**\n * @param {?} _config\n * @param {?} _reflector\n * @param {?} _exprParser\n * @param {?} _schemaRegistry\n * @param {?} _htmlParser\n * @param {?} _console\n * @param {?} transforms\n */\n constructor(_config, _reflector, _exprParser, _schemaRegistry, _htmlParser, _console, transforms) {\n this._config = _config;\n this._reflector = _reflector;\n this._exprParser = _exprParser;\n this._schemaRegistry = _schemaRegistry;\n this._htmlParser = _htmlParser;\n this._console = _console;\n this.transforms = transforms;\n }\n /**\n * @param {?} component\n * @param {?} template\n * @param {?} directives\n * @param {?} pipes\n * @param {?} schemas\n * @param {?} templateUrl\n * @param {?} preserveWhitespaces\n * @return {?}\n */\n parse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces) {\n const /** @type {?} */ result = this.tryParse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces);\n const /** @type {?} */ warnings = /** @type {?} */ ((result.errors)).filter(error => error.level === ParseErrorLevel.WARNING).filter(warnOnlyOnce([TEMPLATE_ATTR_DEPRECATION_WARNING, TEMPLATE_ELEMENT_DEPRECATION_WARNING]));\n const /** @type {?} */ errors = /** @type {?} */ ((result.errors)).filter(error => error.level === ParseErrorLevel.ERROR);\n if (warnings.length > 0) {\n this._console.warn(`Template parse warnings:\\n${warnings.join('\\n')}`);\n }\n if (errors.length > 0) {\n const /** @type {?} */ errorString = errors.join('\\n');\n throw syntaxError(`Template parse errors:\\n${errorString}`, errors);\n }\n return { template: /** @type {?} */ ((result.templateAst)), pipes: /** @type {?} */ ((result.usedPipes)) };\n }\n /**\n * @param {?} component\n * @param {?} template\n * @param {?} directives\n * @param {?} pipes\n * @param {?} schemas\n * @param {?} templateUrl\n * @param {?} preserveWhitespaces\n * @return {?}\n */\n tryParse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces) {\n let /** @type {?} */ htmlParseResult = typeof template === 'string' ? /** @type {?} */ ((this._htmlParser)).parse(template, templateUrl, true, this.getInterpolationConfig(component)) :\n template;\n if (!preserveWhitespaces) {\n htmlParseResult = removeWhitespaces(htmlParseResult);\n }\n return this.tryParseHtml(this.expandHtml(htmlParseResult), component, directives, pipes, schemas);\n }\n /**\n * @param {?} htmlAstWithErrors\n * @param {?} component\n * @param {?} directives\n * @param {?} pipes\n * @param {?} schemas\n * @return {?}\n */\n tryParseHtml(htmlAstWithErrors, component, directives, pipes, schemas) {\n let /** @type {?} */ result;\n const /** @type {?} */ errors = htmlAstWithErrors.errors;\n const /** @type {?} */ usedPipes = [];\n if (htmlAstWithErrors.rootNodes.length > 0) {\n const /** @type {?} */ uniqDirectives = removeSummaryDuplicates(directives);\n const /** @type {?} */ uniqPipes = removeSummaryDuplicates(pipes);\n const /** @type {?} */ providerViewContext = new ProviderViewContext(this._reflector, component);\n let /** @type {?} */ interpolationConfig = /** @type {?} */ ((undefined));\n if (component.template && component.template.interpolation) {\n interpolationConfig = {\n start: component.template.interpolation[0],\n end: component.template.interpolation[1]\n };\n }\n const /** @type {?} */ bindingParser = new BindingParser(this._exprParser, /** @type {?} */ ((interpolationConfig)), this._schemaRegistry, uniqPipes, errors);\n const /** @type {?} */ parseVisitor = new TemplateParseVisitor(this._reflector, this._config, providerViewContext, uniqDirectives, bindingParser, this._schemaRegistry, schemas, errors);\n result = html.visitAll(parseVisitor, htmlAstWithErrors.rootNodes, EMPTY_ELEMENT_CONTEXT);\n errors.push(...providerViewContext.errors);\n usedPipes.push(...bindingParser.getUsedPipes());\n }\n else {\n result = [];\n }\n this._assertNoReferenceDuplicationOnTemplate(result, errors);\n if (errors.length > 0) {\n return new TemplateParseResult(result, usedPipes, errors);\n }\n if (this.transforms) {\n this.transforms.forEach((transform) => { result = templateVisitAll(transform, result); });\n }\n return new TemplateParseResult(result, usedPipes, errors);\n }\n /**\n * @param {?} htmlAstWithErrors\n * @param {?=} forced\n * @return {?}\n */\n expandHtml(htmlAstWithErrors, forced = false) {\n const /** @type {?} */ errors = htmlAstWithErrors.errors;\n if (errors.length == 0 || forced) {\n // Transform ICU messages to angular directives\n const /** @type {?} */ expandedHtmlAst = expandNodes(htmlAstWithErrors.rootNodes);\n errors.push(...expandedHtmlAst.errors);\n htmlAstWithErrors = new ParseTreeResult(expandedHtmlAst.nodes, errors);\n }\n return htmlAstWithErrors;\n }\n /**\n * @param {?} component\n * @return {?}\n */\n getInterpolationConfig(component) {\n if (component.template) {\n return InterpolationConfig.fromArray(component.template.interpolation);\n }\n return undefined;\n }\n /**\n * \\@internal\n * @param {?} result\n * @param {?} errors\n * @return {?}\n */\n _assertNoReferenceDuplicationOnTemplate(result, errors) {\n const /** @type {?} */ existingReferences = [];\n result.filter(element => !!(/** @type {?} */ (element)).references)\n .forEach(element => (/** @type {?} */ (element)).references.forEach((reference) => {\n const /** @type {?} */ name = reference.name;\n if (existingReferences.indexOf(name) < 0) {\n existingReferences.push(name);\n }\n else {\n const /** @type {?} */ error = new TemplateParseError(`Reference \"#${name}\" is defined several times`, reference.sourceSpan, ParseErrorLevel.ERROR);\n errors.push(error);\n }\n }));\n }\n}\nfunction TemplateParser_tsickle_Closure_declarations() {\n /** @type {?} */\n TemplateParser.prototype._config;\n /** @type {?} */\n TemplateParser.prototype._reflector;\n /** @type {?} */\n TemplateParser.prototype._exprParser;\n /** @type {?} */\n TemplateParser.prototype._schemaRegistry;\n /** @type {?} */\n TemplateParser.prototype._htmlParser;\n /** @type {?} */\n TemplateParser.prototype._console;\n /** @type {?} */\n TemplateParser.prototype.transforms;\n}\nclass TemplateParseVisitor {\n /**\n * @param {?} reflector\n * @param {?} config\n * @param {?} providerViewContext\n * @param {?} directives\n * @param {?} _bindingParser\n * @param {?} _schemaRegistry\n * @param {?} _schemas\n * @param {?} _targetErrors\n */\n constructor(reflector, config, providerViewContext, directives, _bindingParser, _schemaRegistry, _schemas, _targetErrors) {\n this.reflector = reflector;\n this.config = config;\n this.providerViewContext = providerViewContext;\n this._bindingParser = _bindingParser;\n this._schemaRegistry = _schemaRegistry;\n this._schemas = _schemas;\n this._targetErrors = _targetErrors;\n this.selectorMatcher = new SelectorMatcher();\n this.directivesIndex = new Map();\n this.ngContentCount = 0;\n // Note: queries start with id 1 so we can use the number in a Bloom filter!\n this.contentQueryStartId = providerViewContext.component.viewQueries.length + 1;\n directives.forEach((directive, index) => {\n const /** @type {?} */ selector = CssSelector.parse(/** @type {?} */ ((directive.selector)));\n this.selectorMatcher.addSelectables(selector, directive);\n this.directivesIndex.set(directive, index);\n });\n }\n /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n visitExpansion(expansion, context) { return null; }\n /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(expansionCase, context) { return null; }\n /**\n * @param {?} text\n * @param {?} parent\n * @return {?}\n */\n visitText(text, parent) {\n const /** @type {?} */ ngContentIndex = /** @type {?} */ ((parent.findNgContentIndex(TEXT_CSS_SELECTOR)));\n const /** @type {?} */ valueNoNgsp = replaceNgsp(text.value);\n const /** @type {?} */ expr = this._bindingParser.parseInterpolation(valueNoNgsp, /** @type {?} */ ((text.sourceSpan)));\n return expr ? new BoundTextAst(expr, ngContentIndex, /** @type {?} */ ((text.sourceSpan))) :\n new TextAst(valueNoNgsp, ngContentIndex, /** @type {?} */ ((text.sourceSpan)));\n }\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n visitAttribute(attribute, context) {\n return new AttrAst(attribute.name, attribute.value, attribute.sourceSpan);\n }\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n visitComment(comment, context) { return null; }\n /**\n * @param {?} element\n * @param {?} parent\n * @return {?}\n */\n visitElement(element, parent) {\n const /** @type {?} */ queryStartIndex = this.contentQueryStartId;\n const /** @type {?} */ nodeName = element.name;\n const /** @type {?} */ preparsedElement = preparseElement(element);\n if (preparsedElement.type === PreparsedElementType.SCRIPT ||\n preparsedElement.type === PreparsedElementType.STYLE) {\n // Skipping <script> for security reasons\n // Skipping <style> as we already processed them\n // in the StyleCompiler\n return null;\n }\n if (preparsedElement.type === PreparsedElementType.STYLESHEET &&\n isStyleUrlResolvable(preparsedElement.hrefAttr)) {\n // Skipping stylesheets with either relative urls or package scheme as we already processed\n // them in the StyleCompiler\n return null;\n }\n const /** @type {?} */ matchableAttrs = [];\n const /** @type {?} */ elementOrDirectiveProps = [];\n const /** @type {?} */ elementOrDirectiveRefs = [];\n const /** @type {?} */ elementVars = [];\n const /** @type {?} */ events = [];\n const /** @type {?} */ templateElementOrDirectiveProps = [];\n const /** @type {?} */ templateMatchableAttrs = [];\n const /** @type {?} */ templateElementVars = [];\n let /** @type {?} */ hasInlineTemplates = false;\n const /** @type {?} */ attrs = [];\n const /** @type {?} */ isTemplateElement = isTemplate(element, this.config.enableLegacyTemplate, (m, span) => this._reportError(m, span, ParseErrorLevel.WARNING));\n element.attrs.forEach(attr => {\n const /** @type {?} */ hasBinding = this._parseAttr(isTemplateElement, attr, matchableAttrs, elementOrDirectiveProps, events, elementOrDirectiveRefs, elementVars);\n let /** @type {?} */ templateBindingsSource;\n let /** @type {?} */ prefixToken;\n let /** @type {?} */ normalizedName = this._normalizeAttributeName(attr.name);\n if (this.config.enableLegacyTemplate && normalizedName == TEMPLATE_ATTR) {\n this._reportError(TEMPLATE_ATTR_DEPRECATION_WARNING, attr.sourceSpan, ParseErrorLevel.WARNING);\n templateBindingsSource = attr.value;\n }\n else if (normalizedName.startsWith(TEMPLATE_ATTR_PREFIX)) {\n templateBindingsSource = attr.value;\n prefixToken = normalizedName.substring(TEMPLATE_ATTR_PREFIX.length) + ':';\n }\n const /** @type {?} */ hasTemplateBinding = templateBindingsSource != null;\n if (hasTemplateBinding) {\n if (hasInlineTemplates) {\n this._reportError(`Can't have multiple template bindings on one element. Use only one attribute named 'template' or prefixed with *`, attr.sourceSpan);\n }\n hasInlineTemplates = true;\n this._bindingParser.parseInlineTemplateBinding(/** @type {?} */ ((prefixToken)), /** @type {?} */ ((templateBindingsSource)), attr.sourceSpan, templateMatchableAttrs, templateElementOrDirectiveProps, templateElementVars);\n }\n if (!hasBinding && !hasTemplateBinding) {\n // don't include the bindings as attributes as well in the AST\n attrs.push(this.visitAttribute(attr, null));\n matchableAttrs.push([attr.name, attr.value]);\n }\n });\n const /** @type {?} */ elementCssSelector = createElementCssSelector(nodeName, matchableAttrs);\n const { directives: directiveMetas, matchElement } = this._parseDirectives(this.selectorMatcher, elementCssSelector);\n const /** @type {?} */ references = [];\n const /** @type {?} */ boundDirectivePropNames = new Set();\n const /** @type {?} */ directiveAsts = this._createDirectiveAsts(isTemplateElement, element.name, directiveMetas, elementOrDirectiveProps, elementOrDirectiveRefs, /** @type {?} */ ((element.sourceSpan)), references, boundDirectivePropNames);\n const /** @type {?} */ elementProps = this._createElementPropertyAsts(element.name, elementOrDirectiveProps, boundDirectivePropNames);\n const /** @type {?} */ isViewRoot = parent.isTemplateElement || hasInlineTemplates;\n const /** @type {?} */ providerContext = new ProviderElementContext(this.providerViewContext, /** @type {?} */ ((parent.providerContext)), isViewRoot, directiveAsts, attrs, references, isTemplateElement, queryStartIndex, /** @type {?} */ ((element.sourceSpan)));\n const /** @type {?} */ children = html.visitAll(preparsedElement.nonBindable ? NON_BINDABLE_VISITOR : this, element.children, ElementContext.create(isTemplateElement, directiveAsts, isTemplateElement ? /** @type {?} */ ((parent.providerContext)) : providerContext));\n providerContext.afterElement();\n // Override the actual selector when the `ngProjectAs` attribute is provided\n const /** @type {?} */ projectionSelector = preparsedElement.projectAs != null ?\n CssSelector.parse(preparsedElement.projectAs)[0] :\n elementCssSelector;\n const /** @type {?} */ ngContentIndex = /** @type {?} */ ((parent.findNgContentIndex(projectionSelector)));\n let /** @type {?} */ parsedElement;\n if (preparsedElement.type === PreparsedElementType.NG_CONTENT) {\n if (element.children && !element.children.every(_isEmptyTextNode)) {\n this._reportError(`<ng-content> element cannot have content.`, /** @type {?} */ ((element.sourceSpan)));\n }\n parsedElement = new NgContentAst(this.ngContentCount++, hasInlineTemplates ? /** @type {?} */ ((null)) : ngContentIndex, /** @type {?} */ ((element.sourceSpan)));\n }\n else if (isTemplateElement) {\n this._assertAllEventsPublishedByDirectives(directiveAsts, events);\n this._assertNoComponentsNorElementBindingsOnTemplate(directiveAsts, elementProps, /** @type {?} */ ((element.sourceSpan)));\n parsedElement = new EmbeddedTemplateAst(attrs, events, references, elementVars, providerContext.transformedDirectiveAsts, providerContext.transformProviders, providerContext.transformedHasViewContainer, providerContext.queryMatches, children, hasInlineTemplates ? /** @type {?} */ ((null)) : ngContentIndex, /** @type {?} */ ((element.sourceSpan)));\n }\n else {\n this._assertElementExists(matchElement, element);\n this._assertOnlyOneComponent(directiveAsts, /** @type {?} */ ((element.sourceSpan)));\n const /** @type {?} */ ngContentIndex = hasInlineTemplates ? null : parent.findNgContentIndex(projectionSelector);\n parsedElement = new ElementAst(nodeName, attrs, elementProps, events, references, providerContext.transformedDirectiveAsts, providerContext.transformProviders, providerContext.transformedHasViewContainer, providerContext.queryMatches, children, hasInlineTemplates ? null : ngContentIndex, element.sourceSpan, element.endSourceSpan || null);\n }\n if (hasInlineTemplates) {\n const /** @type {?} */ templateQueryStartIndex = this.contentQueryStartId;\n const /** @type {?} */ templateSelector = createElementCssSelector(TEMPLATE_ELEMENT, templateMatchableAttrs);\n const { directives: templateDirectiveMetas } = this._parseDirectives(this.selectorMatcher, templateSelector);\n const /** @type {?} */ templateBoundDirectivePropNames = new Set();\n const /** @type {?} */ templateDirectiveAsts = this._createDirectiveAsts(true, element.name, templateDirectiveMetas, templateElementOrDirectiveProps, [], /** @type {?} */ ((element.sourceSpan)), [], templateBoundDirectivePropNames);\n const /** @type {?} */ templateElementProps = this._createElementPropertyAsts(element.name, templateElementOrDirectiveProps, templateBoundDirectivePropNames);\n this._assertNoComponentsNorElementBindingsOnTemplate(templateDirectiveAsts, templateElementProps, /** @type {?} */ ((element.sourceSpan)));\n const /** @type {?} */ templateProviderContext = new ProviderElementContext(this.providerViewContext, /** @type {?} */ ((parent.providerContext)), parent.isTemplateElement, templateDirectiveAsts, [], [], true, templateQueryStartIndex, /** @type {?} */ ((element.sourceSpan)));\n templateProviderContext.afterElement();\n parsedElement = new EmbeddedTemplateAst([], [], [], templateElementVars, templateProviderContext.transformedDirectiveAsts, templateProviderContext.transformProviders, templateProviderContext.transformedHasViewContainer, templateProviderContext.queryMatches, [parsedElement], ngContentIndex, /** @type {?} */ ((element.sourceSpan)));\n }\n return parsedElement;\n }\n /**\n * @param {?} isTemplateElement\n * @param {?} attr\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @param {?} targetEvents\n * @param {?} targetRefs\n * @param {?} targetVars\n * @return {?}\n */\n _parseAttr(isTemplateElement, attr, targetMatchableAttrs, targetProps, targetEvents, targetRefs, targetVars) {\n const /** @type {?} */ name = this._normalizeAttributeName(attr.name);\n const /** @type {?} */ value = attr.value;\n const /** @type {?} */ srcSpan = attr.sourceSpan;\n const /** @type {?} */ bindParts = name.match(BIND_NAME_REGEXP);\n let /** @type {?} */ hasBinding = false;\n if (bindParts !== null) {\n hasBinding = true;\n if (bindParts[KW_BIND_IDX] != null) {\n this._bindingParser.parsePropertyBinding(bindParts[IDENT_KW_IDX], value, false, srcSpan, targetMatchableAttrs, targetProps);\n }\n else if (bindParts[KW_LET_IDX]) {\n if (isTemplateElement) {\n const /** @type {?} */ identifier = bindParts[IDENT_KW_IDX];\n this._parseVariable(identifier, value, srcSpan, targetVars);\n }\n else {\n this._reportError(`\"let-\" is only supported on ng-template elements.`, srcSpan);\n }\n }\n else if (bindParts[KW_REF_IDX]) {\n const /** @type {?} */ identifier = bindParts[IDENT_KW_IDX];\n this._parseReference(identifier, value, srcSpan, targetRefs);\n }\n else if (bindParts[KW_ON_IDX]) {\n this._bindingParser.parseEvent(bindParts[IDENT_KW_IDX], value, srcSpan, targetMatchableAttrs, targetEvents);\n }\n else if (bindParts[KW_BINDON_IDX]) {\n this._bindingParser.parsePropertyBinding(bindParts[IDENT_KW_IDX], value, false, srcSpan, targetMatchableAttrs, targetProps);\n this._parseAssignmentEvent(bindParts[IDENT_KW_IDX], value, srcSpan, targetMatchableAttrs, targetEvents);\n }\n else if (bindParts[KW_AT_IDX]) {\n this._bindingParser.parseLiteralAttr(name, value, srcSpan, targetMatchableAttrs, targetProps);\n }\n else if (bindParts[IDENT_BANANA_BOX_IDX]) {\n this._bindingParser.parsePropertyBinding(bindParts[IDENT_BANANA_BOX_IDX], value, false, srcSpan, targetMatchableAttrs, targetProps);\n this._parseAssignmentEvent(bindParts[IDENT_BANANA_BOX_IDX], value, srcSpan, targetMatchableAttrs, targetEvents);\n }\n else if (bindParts[IDENT_PROPERTY_IDX]) {\n this._bindingParser.parsePropertyBinding(bindParts[IDENT_PROPERTY_IDX], value, false, srcSpan, targetMatchableAttrs, targetProps);\n }\n else if (bindParts[IDENT_EVENT_IDX]) {\n this._bindingParser.parseEvent(bindParts[IDENT_EVENT_IDX], value, srcSpan, targetMatchableAttrs, targetEvents);\n }\n }\n else {\n hasBinding = this._bindingParser.parsePropertyInterpolation(name, value, srcSpan, targetMatchableAttrs, targetProps);\n }\n if (!hasBinding) {\n this._bindingParser.parseLiteralAttr(name, value, srcSpan, targetMatchableAttrs, targetProps);\n }\n return hasBinding;\n }\n /**\n * @param {?} attrName\n * @return {?}\n */\n _normalizeAttributeName(attrName) {\n return /^data-/i.test(attrName) ? attrName.substring(5) : attrName;\n }\n /**\n * @param {?} identifier\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetVars\n * @return {?}\n */\n _parseVariable(identifier, value, sourceSpan, targetVars) {\n if (identifier.indexOf('-') > -1) {\n this._reportError(`\"-\" is not allowed in variable names`, sourceSpan);\n }\n targetVars.push(new VariableAst(identifier, value, sourceSpan));\n }\n /**\n * @param {?} identifier\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetRefs\n * @return {?}\n */\n _parseReference(identifier, value, sourceSpan, targetRefs) {\n if (identifier.indexOf('-') > -1) {\n this._reportError(`\"-\" is not allowed in reference names`, sourceSpan);\n }\n targetRefs.push(new ElementOrDirectiveRef(identifier, value, sourceSpan));\n }\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetEvents\n * @return {?}\n */\n _parseAssignmentEvent(name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\n this._bindingParser.parseEvent(`${name}Change`, `${expression}=$event`, sourceSpan, targetMatchableAttrs, targetEvents);\n }\n /**\n * @param {?} selectorMatcher\n * @param {?} elementCssSelector\n * @return {?}\n */\n _parseDirectives(selectorMatcher, elementCssSelector) {\n // Need to sort the directives so that we get consistent results throughout,\n // as selectorMatcher uses Maps inside.\n // Also deduplicate directives as they might match more than one time!\n const /** @type {?} */ directives = new Array(this.directivesIndex.size);\n // Whether any directive selector matches on the element name\n let /** @type {?} */ matchElement = false;\n selectorMatcher.match(elementCssSelector, (selector, directive) => {\n directives[/** @type {?} */ ((this.directivesIndex.get(directive)))] = directive;\n matchElement = matchElement || selector.hasElementSelector();\n });\n return {\n directives: directives.filter(dir => !!dir),\n matchElement,\n };\n }\n /**\n * @param {?} isTemplateElement\n * @param {?} elementName\n * @param {?} directives\n * @param {?} props\n * @param {?} elementOrDirectiveRefs\n * @param {?} elementSourceSpan\n * @param {?} targetReferences\n * @param {?} targetBoundDirectivePropNames\n * @return {?}\n */\n _createDirectiveAsts(isTemplateElement, elementName, directives, props, elementOrDirectiveRefs, elementSourceSpan, targetReferences, targetBoundDirectivePropNames) {\n const /** @type {?} */ matchedReferences = new Set();\n let /** @type {?} */ component = /** @type {?} */ ((null));\n const /** @type {?} */ directiveAsts = directives.map((directive) => {\n const /** @type {?} */ sourceSpan = new ParseSourceSpan(elementSourceSpan.start, elementSourceSpan.end, `Directive ${identifierName(directive.type)}`);\n if (directive.isComponent) {\n component = directive;\n }\n const /** @type {?} */ directiveProperties = [];\n let /** @type {?} */ hostProperties = /** @type {?} */ ((this._bindingParser.createDirectiveHostPropertyAsts(directive, elementName, sourceSpan)));\n // Note: We need to check the host properties here as well,\n // as we don't know the element name in the DirectiveWrapperCompiler yet.\n hostProperties = this._checkPropertiesInSchema(elementName, hostProperties);\n const /** @type {?} */ hostEvents = /** @type {?} */ ((this._bindingParser.createDirectiveHostEventAsts(directive, sourceSpan)));\n this._createDirectivePropertyAsts(directive.inputs, props, directiveProperties, targetBoundDirectivePropNames);\n elementOrDirectiveRefs.forEach((elOrDirRef) => {\n if ((elOrDirRef.value.length === 0 && directive.isComponent) ||\n (elOrDirRef.isReferenceToDirective(directive))) {\n targetReferences.push(new ReferenceAst(elOrDirRef.name, createTokenForReference(directive.type.reference), elOrDirRef.sourceSpan));\n matchedReferences.add(elOrDirRef.name);\n }\n });\n const /** @type {?} */ contentQueryStartId = this.contentQueryStartId;\n this.contentQueryStartId += directive.queries.length;\n return new DirectiveAst(directive, directiveProperties, hostProperties, hostEvents, contentQueryStartId, sourceSpan);\n });\n elementOrDirectiveRefs.forEach((elOrDirRef) => {\n if (elOrDirRef.value.length > 0) {\n if (!matchedReferences.has(elOrDirRef.name)) {\n this._reportError(`There is no directive with \"exportAs\" set to \"${elOrDirRef.value}\"`, elOrDirRef.sourceSpan);\n }\n }\n else if (!component) {\n let /** @type {?} */ refToken = /** @type {?} */ ((null));\n if (isTemplateElement) {\n refToken = createTokenForExternalReference(this.reflector, Identifiers.TemplateRef);\n }\n targetReferences.push(new ReferenceAst(elOrDirRef.name, refToken, elOrDirRef.sourceSpan));\n }\n });\n return directiveAsts;\n }\n /**\n * @param {?} directiveProperties\n * @param {?} boundProps\n * @param {?} targetBoundDirectiveProps\n * @param {?} targetBoundDirectivePropNames\n * @return {?}\n */\n _createDirectivePropertyAsts(directiveProperties, boundProps, targetBoundDirectiveProps, targetBoundDirectivePropNames) {\n if (directiveProperties) {\n const /** @type {?} */ boundPropsByName = new Map();\n boundProps.forEach(boundProp => {\n const /** @type {?} */ prevValue = boundPropsByName.get(boundProp.name);\n if (!prevValue || prevValue.isLiteral) {\n // give [a]=\"b\" a higher precedence than a=\"b\" on the same element\n boundPropsByName.set(boundProp.name, boundProp);\n }\n });\n Object.keys(directiveProperties).forEach(dirProp => {\n const /** @type {?} */ elProp = directiveProperties[dirProp];\n const /** @type {?} */ boundProp = boundPropsByName.get(elProp);\n // Bindings are optional, so this binding only needs to be set up if an expression is given.\n if (boundProp) {\n targetBoundDirectivePropNames.add(boundProp.name);\n if (!isEmptyExpression(boundProp.expression)) {\n targetBoundDirectiveProps.push(new BoundDirectivePropertyAst(dirProp, boundProp.name, boundProp.expression, boundProp.sourceSpan));\n }\n }\n });\n }\n }\n /**\n * @param {?} elementName\n * @param {?} props\n * @param {?} boundDirectivePropNames\n * @return {?}\n */\n _createElementPropertyAsts(elementName, props, boundDirectivePropNames) {\n const /** @type {?} */ boundElementProps = [];\n props.forEach((prop) => {\n if (!prop.isLiteral && !boundDirectivePropNames.has(prop.name)) {\n boundElementProps.push(this._bindingParser.createElementPropertyAst(elementName, prop));\n }\n });\n return this._checkPropertiesInSchema(elementName, boundElementProps);\n }\n /**\n * @param {?} directives\n * @return {?}\n */\n _findComponentDirectives(directives) {\n return directives.filter(directive => directive.directive.isComponent);\n }\n /**\n * @param {?} directives\n * @return {?}\n */\n _findComponentDirectiveNames(directives) {\n return this._findComponentDirectives(directives)\n .map(directive => /** @type {?} */ ((identifierName(directive.directive.type))));\n }\n /**\n * @param {?} directives\n * @param {?} sourceSpan\n * @return {?}\n */\n _assertOnlyOneComponent(directives, sourceSpan) {\n const /** @type {?} */ componentTypeNames = this._findComponentDirectiveNames(directives);\n if (componentTypeNames.length > 1) {\n this._reportError(`More than one component matched on this element.\\n` +\n `Make sure that only one component's selector can match a given element.\\n` +\n `Conflicting components: ${componentTypeNames.join(',')}`, sourceSpan);\n }\n }\n /**\n * Make sure that non-angular tags conform to the schemas.\n *\n * Note: An element is considered an angular tag when at least one directive selector matches the\n * tag name.\n *\n * @param {?} matchElement Whether any directive has matched on the tag name\n * @param {?} element the html element\n * @return {?}\n */\n _assertElementExists(matchElement, element) {\n const /** @type {?} */ elName = element.name.replace(/^:xhtml:/, '');\n if (!matchElement && !this._schemaRegistry.hasElement(elName, this._schemas)) {\n let /** @type {?} */ errorMsg = `'${elName}' is not a known element:\\n`;\n errorMsg +=\n `1. If '${elName}' is an Angular component, then verify that it is part of this module.\\n`;\n if (elName.indexOf('-') > -1) {\n errorMsg +=\n `2. If '${elName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.`;\n }\n else {\n errorMsg +=\n `2. To allow any element add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.`;\n }\n this._reportError(errorMsg, /** @type {?} */ ((element.sourceSpan)));\n }\n }\n /**\n * @param {?} directives\n * @param {?} elementProps\n * @param {?} sourceSpan\n * @return {?}\n */\n _assertNoComponentsNorElementBindingsOnTemplate(directives, elementProps, sourceSpan) {\n const /** @type {?} */ componentTypeNames = this._findComponentDirectiveNames(directives);\n if (componentTypeNames.length > 0) {\n this._reportError(`Components on an embedded template: ${componentTypeNames.join(',')}`, sourceSpan);\n }\n elementProps.forEach(prop => {\n this._reportError(`Property binding ${prop.name} not used by any directive on an embedded template. Make sure that the property name is spelled correctly and all directives are listed in the \"@NgModule.declarations\".`, sourceSpan);\n });\n }\n /**\n * @param {?} directives\n * @param {?} events\n * @return {?}\n */\n _assertAllEventsPublishedByDirectives(directives, events) {\n const /** @type {?} */ allDirectiveEvents = new Set();\n directives.forEach(directive => {\n Object.keys(directive.directive.outputs).forEach(k => {\n const /** @type {?} */ eventName = directive.directive.outputs[k];\n allDirectiveEvents.add(eventName);\n });\n });\n events.forEach(event => {\n if (event.target != null || !allDirectiveEvents.has(event.name)) {\n this._reportError(`Event binding ${event.fullName} not emitted by any directive on an embedded template. Make sure that the event name is spelled correctly and all directives are listed in the \"@NgModule.declarations\".`, event.sourceSpan);\n }\n });\n }\n /**\n * @param {?} elementName\n * @param {?} boundProps\n * @return {?}\n */\n _checkPropertiesInSchema(elementName, boundProps) {\n // Note: We can't filter out empty expressions before this method,\n // as we still want to validate them!\n return boundProps.filter((boundProp) => {\n if (boundProp.type === PropertyBindingType.Property &&\n !this._schemaRegistry.hasProperty(elementName, boundProp.name, this._schemas)) {\n let /** @type {?} */ errorMsg = `Can't bind to '${boundProp.name}' since it isn't a known property of '${elementName}'.`;\n if (elementName.startsWith('ng-')) {\n errorMsg +=\n `\\n1. If '${boundProp.name}' is an Angular directive, then add 'CommonModule' to the '@NgModule.imports' of this component.` +\n `\\n2. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.`;\n }\n else if (elementName.indexOf('-') > -1) {\n errorMsg +=\n `\\n1. If '${elementName}' is an Angular component and it has '${boundProp.name}' input, then verify that it is part of this module.` +\n `\\n2. If '${elementName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.` +\n `\\n3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.`;\n }\n this._reportError(errorMsg, boundProp.sourceSpan);\n }\n return !isEmptyExpression(boundProp.value);\n });\n }\n /**\n * @param {?} message\n * @param {?} sourceSpan\n * @param {?=} level\n * @return {?}\n */\n _reportError(message, sourceSpan, level = ParseErrorLevel.ERROR) {\n this._targetErrors.push(new ParseError(sourceSpan, message, level));\n }\n}\nfunction TemplateParseVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n TemplateParseVisitor.prototype.selectorMatcher;\n /** @type {?} */\n TemplateParseVisitor.prototype.directivesIndex;\n /** @type {?} */\n TemplateParseVisitor.prototype.ngContentCount;\n /** @type {?} */\n TemplateParseVisitor.prototype.contentQueryStartId;\n /** @type {?} */\n TemplateParseVisitor.prototype.reflector;\n /** @type {?} */\n TemplateParseVisitor.prototype.config;\n /** @type {?} */\n TemplateParseVisitor.prototype.providerViewContext;\n /** @type {?} */\n TemplateParseVisitor.prototype._bindingParser;\n /** @type {?} */\n TemplateParseVisitor.prototype._schemaRegistry;\n /** @type {?} */\n TemplateParseVisitor.prototype._schemas;\n /** @type {?} */\n TemplateParseVisitor.prototype._targetErrors;\n}\nclass NonBindableVisitor {\n /**\n * @param {?} ast\n * @param {?} parent\n * @return {?}\n */\n visitElement(ast, parent) {\n const /** @type {?} */ preparsedElement = preparseElement(ast);\n if (preparsedElement.type === PreparsedElementType.SCRIPT ||\n preparsedElement.type === PreparsedElementType.STYLE ||\n preparsedElement.type === PreparsedElementType.STYLESHEET) {\n // Skipping <script> for security reasons\n // Skipping <style> and stylesheets as we already processed them\n // in the StyleCompiler\n return null;\n }\n const /** @type {?} */ attrNameAndValues = ast.attrs.map((attr) => [attr.name, attr.value]);\n const /** @type {?} */ selector = createElementCssSelector(ast.name, attrNameAndValues);\n const /** @type {?} */ ngContentIndex = parent.findNgContentIndex(selector);\n const /** @type {?} */ children = html.visitAll(this, ast.children, EMPTY_ELEMENT_CONTEXT);\n return new ElementAst(ast.name, html.visitAll(this, ast.attrs), [], [], [], [], [], false, [], children, ngContentIndex, ast.sourceSpan, ast.endSourceSpan);\n }\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n visitComment(comment, context) { return null; }\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n visitAttribute(attribute, context) {\n return new AttrAst(attribute.name, attribute.value, attribute.sourceSpan);\n }\n /**\n * @param {?} text\n * @param {?} parent\n * @return {?}\n */\n visitText(text, parent) {\n const /** @type {?} */ ngContentIndex = /** @type {?} */ ((parent.findNgContentIndex(TEXT_CSS_SELECTOR)));\n return new TextAst(text.value, ngContentIndex, /** @type {?} */ ((text.sourceSpan)));\n }\n /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n visitExpansion(expansion, context) { return expansion; }\n /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n visitExpansionCase(expansionCase, context) { return expansionCase; }\n}\n/**\n * A reference to an element or directive in a template. E.g., the reference in this template:\n *\n * <div #myMenu=\"coolMenu\">\n *\n * would be {name: 'myMenu', value: 'coolMenu', sourceSpan: ...}\n */\nclass ElementOrDirectiveRef {\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n */\n constructor(name, value, sourceSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * Gets whether this is a reference to the given directive.\n * @param {?} directive\n * @return {?}\n */\n isReferenceToDirective(directive) {\n return splitExportAs(directive.exportAs).indexOf(this.value) !== -1;\n }\n}\nfunction ElementOrDirectiveRef_tsickle_Closure_declarations() {\n /** @type {?} */\n ElementOrDirectiveRef.prototype.name;\n /** @type {?} */\n ElementOrDirectiveRef.prototype.value;\n /** @type {?} */\n ElementOrDirectiveRef.prototype.sourceSpan;\n}\n/**\n * Splits a raw, potentially comma-delimted `exportAs` value into an array of names.\n * @param {?} exportAs\n * @return {?}\n */\nfunction splitExportAs(exportAs) {\n return exportAs ? exportAs.split(',').map(e => e.trim()) : [];\n}\n/**\n * @param {?} classAttrValue\n * @return {?}\n */\nexport function splitClasses(classAttrValue) {\n return classAttrValue.trim().split(/\\s+/g);\n}\nclass ElementContext {\n /**\n * @param {?} isTemplateElement\n * @param {?} _ngContentIndexMatcher\n * @param {?} _wildcardNgContentIndex\n * @param {?} providerContext\n */\n constructor(isTemplateElement, _ngContentIndexMatcher, _wildcardNgContentIndex, providerContext) {\n this.isTemplateElement = isTemplateElement;\n this._ngContentIndexMatcher = _ngContentIndexMatcher;\n this._wildcardNgContentIndex = _wildcardNgContentIndex;\n this.providerContext = providerContext;\n }\n /**\n * @param {?} isTemplateElement\n * @param {?} directives\n * @param {?} providerContext\n * @return {?}\n */\n static create(isTemplateElement, directives, providerContext) {\n const /** @type {?} */ matcher = new SelectorMatcher();\n let /** @type {?} */ wildcardNgContentIndex = /** @type {?} */ ((null));\n const /** @type {?} */ component = directives.find(directive => directive.directive.isComponent);\n if (component) {\n const /** @type {?} */ ngContentSelectors = /** @type {?} */ ((component.directive.template)).ngContentSelectors;\n for (let /** @type {?} */ i = 0; i < ngContentSelectors.length; i++) {\n const /** @type {?} */ selector = ngContentSelectors[i];\n if (selector === '*') {\n wildcardNgContentIndex = i;\n }\n else {\n matcher.addSelectables(CssSelector.parse(ngContentSelectors[i]), i);\n }\n }\n }\n return new ElementContext(isTemplateElement, matcher, wildcardNgContentIndex, providerContext);\n }\n /**\n * @param {?} selector\n * @return {?}\n */\n findNgContentIndex(selector) {\n const /** @type {?} */ ngContentIndices = [];\n this._ngContentIndexMatcher.match(selector, (selector, ngContentIndex) => { ngContentIndices.push(ngContentIndex); });\n ngContentIndices.sort();\n if (this._wildcardNgContentIndex != null) {\n ngContentIndices.push(this._wildcardNgContentIndex);\n }\n return ngContentIndices.length > 0 ? ngContentIndices[0] : null;\n }\n}\nfunction ElementContext_tsickle_Closure_declarations() {\n /** @type {?} */\n ElementContext.prototype.isTemplateElement;\n /** @type {?} */\n ElementContext.prototype._ngContentIndexMatcher;\n /** @type {?} */\n ElementContext.prototype._wildcardNgContentIndex;\n /** @type {?} */\n ElementContext.prototype.providerContext;\n}\n/**\n * @param {?} elementName\n * @param {?} attributes\n * @return {?}\n */\nexport function createElementCssSelector(elementName, attributes) {\n const /** @type {?} */ cssSelector = new CssSelector();\n const /** @type {?} */ elNameNoNs = splitNsName(elementName)[1];\n cssSelector.setElement(elNameNoNs);\n for (let /** @type {?} */ i = 0; i < attributes.length; i++) {\n const /** @type {?} */ attrName = attributes[i][0];\n const /** @type {?} */ attrNameNoNs = splitNsName(attrName)[1];\n const /** @type {?} */ attrValue = attributes[i][1];\n cssSelector.addAttribute(attrNameNoNs, attrValue);\n if (attrName.toLowerCase() == CLASS_ATTR) {\n const /** @type {?} */ classes = splitClasses(attrValue);\n classes.forEach(className => cssSelector.addClassName(className));\n }\n }\n return cssSelector;\n}\nconst /** @type {?} */ EMPTY_ELEMENT_CONTEXT = new ElementContext(true, new SelectorMatcher(), null, null);\nconst /** @type {?} */ NON_BINDABLE_VISITOR = new NonBindableVisitor();\n/**\n * @param {?} node\n * @return {?}\n */\nfunction _isEmptyTextNode(node) {\n return node instanceof html.Text && node.value.trim().length == 0;\n}\n/**\n * @template T\n * @param {?} items\n * @return {?}\n */\nexport function removeSummaryDuplicates(items) {\n const /** @type {?} */ map = new Map();\n items.forEach((item) => {\n if (!map.get(item.type.reference)) {\n map.set(item.type.reference, item);\n }\n });\n return Array.from(map.values());\n}\n/**\n * @param {?} ast\n * @return {?}\n */\nfunction isEmptyExpression(ast) {\n if (ast instanceof ASTWithSource) {\n ast = ast.ast;\n }\n return ast instanceof EmptyExpr;\n}\n/**\n * @param {?} el\n * @param {?} enableLegacyTemplate\n * @param {?} reportDeprecation\n * @return {?}\n */\nfunction isTemplate(el, enableLegacyTemplate, reportDeprecation) {\n if (isNgTemplate(el.name))\n return true;\n const /** @type {?} */ tagNoNs = splitNsName(el.name)[1];\n // `<template>` is HTML and case insensitive\n if (tagNoNs.toLowerCase() === TEMPLATE_ELEMENT) {\n if (enableLegacyTemplate && tagNoNs.toLowerCase() === TEMPLATE_ELEMENT) {\n reportDeprecation(TEMPLATE_ELEMENT_DEPRECATION_WARNING, /** @type {?} */ ((el.sourceSpan)));\n return true;\n }\n }\n return false;\n}\n//# sourceMappingURL=template_parser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as cdAst from '../expression_parser/ast';\nimport { Identifiers } from '../identifiers';\nimport * as o from '../output/output_ast';\nexport class EventHandlerVars {\n}\nEventHandlerVars.event = o.variable('$event');\nfunction EventHandlerVars_tsickle_Closure_declarations() {\n /** @type {?} */\n EventHandlerVars.event;\n}\n/**\n * @record\n */\nexport function LocalResolver() { }\nfunction LocalResolver_tsickle_Closure_declarations() {\n /** @type {?} */\n LocalResolver.prototype.getLocal;\n}\nexport class ConvertActionBindingResult {\n /**\n * @param {?} stmts\n * @param {?} allowDefault\n */\n constructor(stmts, allowDefault) {\n this.stmts = stmts;\n this.allowDefault = allowDefault;\n }\n}\nfunction ConvertActionBindingResult_tsickle_Closure_declarations() {\n /** @type {?} */\n ConvertActionBindingResult.prototype.stmts;\n /** @type {?} */\n ConvertActionBindingResult.prototype.allowDefault;\n}\n/**\n * Converts the given expression AST into an executable output AST, assuming the expression is\n * used in an action binding (e.g. an event handler).\n * @param {?} localResolver\n * @param {?} implicitReceiver\n * @param {?} action\n * @param {?} bindingId\n * @return {?}\n */\nexport function convertActionBinding(localResolver, implicitReceiver, action, bindingId) {\n if (!localResolver) {\n localResolver = new DefaultLocalResolver();\n }\n const /** @type {?} */ actionWithoutBuiltins = convertPropertyBindingBuiltins({\n createLiteralArrayConverter: (argCount) => {\n // Note: no caching for literal arrays in actions.\n return (args) => o.literalArr(args);\n },\n createLiteralMapConverter: (keys) => {\n // Note: no caching for literal maps in actions.\n return (values) => {\n const /** @type {?} */ entries = keys.map((k, i) => ({\n key: k.key,\n value: values[i],\n quoted: k.quoted,\n }));\n return o.literalMap(entries);\n };\n },\n createPipeConverter: (name) => {\n throw new Error(`Illegal State: Actions are not allowed to contain pipes. Pipe: ${name}`);\n }\n }, action);\n const /** @type {?} */ visitor = new _AstToIrVisitor(localResolver, implicitReceiver, bindingId);\n const /** @type {?} */ actionStmts = [];\n flattenStatements(actionWithoutBuiltins.visit(visitor, _Mode.Statement), actionStmts);\n prependTemporaryDecls(visitor.temporaryCount, bindingId, actionStmts);\n const /** @type {?} */ lastIndex = actionStmts.length - 1;\n let /** @type {?} */ preventDefaultVar = /** @type {?} */ ((null));\n if (lastIndex >= 0) {\n const /** @type {?} */ lastStatement = actionStmts[lastIndex];\n const /** @type {?} */ returnExpr = convertStmtIntoExpression(lastStatement);\n if (returnExpr) {\n // Note: We need to cast the result of the method call to dynamic,\n // as it might be a void method!\n preventDefaultVar = createPreventDefaultVar(bindingId);\n actionStmts[lastIndex] =\n preventDefaultVar.set(returnExpr.cast(o.DYNAMIC_TYPE).notIdentical(o.literal(false)))\n .toDeclStmt(null, [o.StmtModifier.Final]);\n }\n }\n return new ConvertActionBindingResult(actionStmts, preventDefaultVar);\n}\n/**\n * @record\n */\nexport function BuiltinConverter() { }\nfunction BuiltinConverter_tsickle_Closure_declarations() {\n /* TODO: handle strange member:\n (args: o.Expression[]): o.Expression;\n */\n}\n/**\n * @record\n */\nexport function BuiltinConverterFactory() { }\nfunction BuiltinConverterFactory_tsickle_Closure_declarations() {\n /** @type {?} */\n BuiltinConverterFactory.prototype.createLiteralArrayConverter;\n /** @type {?} */\n BuiltinConverterFactory.prototype.createLiteralMapConverter;\n /** @type {?} */\n BuiltinConverterFactory.prototype.createPipeConverter;\n}\n/**\n * @param {?} converterFactory\n * @param {?} ast\n * @return {?}\n */\nexport function convertPropertyBindingBuiltins(converterFactory, ast) {\n return convertBuiltins(converterFactory, ast);\n}\nexport class ConvertPropertyBindingResult {\n /**\n * @param {?} stmts\n * @param {?} currValExpr\n */\n constructor(stmts, currValExpr) {\n this.stmts = stmts;\n this.currValExpr = currValExpr;\n }\n}\nfunction ConvertPropertyBindingResult_tsickle_Closure_declarations() {\n /** @type {?} */\n ConvertPropertyBindingResult.prototype.stmts;\n /** @type {?} */\n ConvertPropertyBindingResult.prototype.currValExpr;\n}\n/** @enum {number} */\nconst BindingForm = {\n // The general form of binding expression, supports all expressions.\n General: 0,\n // Try to generate a simple binding (no temporaries or statements)\n // otherise generate a general binding\n TrySimple: 1,\n};\nexport { BindingForm };\nBindingForm[BindingForm.General] = \"General\";\nBindingForm[BindingForm.TrySimple] = \"TrySimple\";\n/**\n * Converts the given expression AST into an executable output AST, assuming the expression\n * is used in property binding. The expression has to be preprocessed via\n * `convertPropertyBindingBuiltins`.\n * @param {?} localResolver\n * @param {?} implicitReceiver\n * @param {?} expressionWithoutBuiltins\n * @param {?} bindingId\n * @param {?} form\n * @return {?}\n */\nexport function convertPropertyBinding(localResolver, implicitReceiver, expressionWithoutBuiltins, bindingId, form) {\n if (!localResolver) {\n localResolver = new DefaultLocalResolver();\n }\n const /** @type {?} */ currValExpr = createCurrValueExpr(bindingId);\n const /** @type {?} */ stmts = [];\n const /** @type {?} */ visitor = new _AstToIrVisitor(localResolver, implicitReceiver, bindingId);\n const /** @type {?} */ outputExpr = expressionWithoutBuiltins.visit(visitor, _Mode.Expression);\n if (visitor.temporaryCount) {\n for (let /** @type {?} */ i = 0; i < visitor.temporaryCount; i++) {\n stmts.push(temporaryDeclaration(bindingId, i));\n }\n }\n else if (form == BindingForm.TrySimple) {\n return new ConvertPropertyBindingResult([], outputExpr);\n }\n stmts.push(currValExpr.set(outputExpr).toDeclStmt(o.DYNAMIC_TYPE, [o.StmtModifier.Final]));\n return new ConvertPropertyBindingResult(stmts, currValExpr);\n}\n/**\n * @param {?} converterFactory\n * @param {?} ast\n * @return {?}\n */\nfunction convertBuiltins(converterFactory, ast) {\n const /** @type {?} */ visitor = new _BuiltinAstConverter(converterFactory);\n return ast.visit(visitor);\n}\n/**\n * @param {?} bindingId\n * @param {?} temporaryNumber\n * @return {?}\n */\nfunction temporaryName(bindingId, temporaryNumber) {\n return `tmp_${bindingId}_${temporaryNumber}`;\n}\n/**\n * @param {?} bindingId\n * @param {?} temporaryNumber\n * @return {?}\n */\nexport function temporaryDeclaration(bindingId, temporaryNumber) {\n return new o.DeclareVarStmt(temporaryName(bindingId, temporaryNumber), o.NULL_EXPR);\n}\n/**\n * @param {?} temporaryCount\n * @param {?} bindingId\n * @param {?} statements\n * @return {?}\n */\nfunction prependTemporaryDecls(temporaryCount, bindingId, statements) {\n for (let /** @type {?} */ i = temporaryCount - 1; i >= 0; i--) {\n statements.unshift(temporaryDeclaration(bindingId, i));\n }\n}\n/** @enum {number} */\nconst _Mode = {\n Statement: 0,\n Expression: 1,\n};\n_Mode[_Mode.Statement] = \"Statement\";\n_Mode[_Mode.Expression] = \"Expression\";\n/**\n * @param {?} mode\n * @param {?} ast\n * @return {?}\n */\nfunction ensureStatementMode(mode, ast) {\n if (mode !== _Mode.Statement) {\n throw new Error(`Expected a statement, but saw ${ast}`);\n }\n}\n/**\n * @param {?} mode\n * @param {?} ast\n * @return {?}\n */\nfunction ensureExpressionMode(mode, ast) {\n if (mode !== _Mode.Expression) {\n throw new Error(`Expected an expression, but saw ${ast}`);\n }\n}\n/**\n * @param {?} mode\n * @param {?} expr\n * @return {?}\n */\nfunction convertToStatementIfNeeded(mode, expr) {\n if (mode === _Mode.Statement) {\n return expr.toStmt();\n }\n else {\n return expr;\n }\n}\nclass _BuiltinAstConverter extends cdAst.AstTransformer {\n /**\n * @param {?} _converterFactory\n */\n constructor(_converterFactory) {\n super();\n this._converterFactory = _converterFactory;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitPipe(ast, context) {\n const /** @type {?} */ args = [ast.exp, ...ast.args].map(ast => ast.visit(this, context));\n return new BuiltinFunctionCall(ast.span, args, this._converterFactory.createPipeConverter(ast.name, args.length));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralArray(ast, context) {\n const /** @type {?} */ args = ast.expressions.map(ast => ast.visit(this, context));\n return new BuiltinFunctionCall(ast.span, args, this._converterFactory.createLiteralArrayConverter(ast.expressions.length));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitLiteralMap(ast, context) {\n const /** @type {?} */ args = ast.values.map(ast => ast.visit(this, context));\n return new BuiltinFunctionCall(ast.span, args, this._converterFactory.createLiteralMapConverter(ast.keys));\n }\n}\nfunction _BuiltinAstConverter_tsickle_Closure_declarations() {\n /** @type {?} */\n _BuiltinAstConverter.prototype._converterFactory;\n}\nclass _AstToIrVisitor {\n /**\n * @param {?} _localResolver\n * @param {?} _implicitReceiver\n * @param {?} bindingId\n */\n constructor(_localResolver, _implicitReceiver, bindingId) {\n this._localResolver = _localResolver;\n this._implicitReceiver = _implicitReceiver;\n this.bindingId = bindingId;\n this._nodeMap = new Map();\n this._resultMap = new Map();\n this._currentTemporary = 0;\n this.temporaryCount = 0;\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitBinary(ast, mode) {\n let /** @type {?} */ op;\n switch (ast.operation) {\n case '+':\n op = o.BinaryOperator.Plus;\n break;\n case '-':\n op = o.BinaryOperator.Minus;\n break;\n case '*':\n op = o.BinaryOperator.Multiply;\n break;\n case '/':\n op = o.BinaryOperator.Divide;\n break;\n case '%':\n op = o.BinaryOperator.Modulo;\n break;\n case '&&':\n op = o.BinaryOperator.And;\n break;\n case '||':\n op = o.BinaryOperator.Or;\n break;\n case '==':\n op = o.BinaryOperator.Equals;\n break;\n case '!=':\n op = o.BinaryOperator.NotEquals;\n break;\n case '===':\n op = o.BinaryOperator.Identical;\n break;\n case '!==':\n op = o.BinaryOperator.NotIdentical;\n break;\n case '<':\n op = o.BinaryOperator.Lower;\n break;\n case '>':\n op = o.BinaryOperator.Bigger;\n break;\n case '<=':\n op = o.BinaryOperator.LowerEquals;\n break;\n case '>=':\n op = o.BinaryOperator.BiggerEquals;\n break;\n default:\n throw new Error(`Unsupported operation ${ast.operation}`);\n }\n return convertToStatementIfNeeded(mode, new o.BinaryOperatorExpr(op, this._visit(ast.left, _Mode.Expression), this._visit(ast.right, _Mode.Expression)));\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitChain(ast, mode) {\n ensureStatementMode(mode, ast);\n return this.visitAll(ast.expressions, mode);\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitConditional(ast, mode) {\n const /** @type {?} */ value = this._visit(ast.condition, _Mode.Expression);\n return convertToStatementIfNeeded(mode, value.conditional(this._visit(ast.trueExp, _Mode.Expression), this._visit(ast.falseExp, _Mode.Expression)));\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitPipe(ast, mode) {\n throw new Error(`Illegal state: Pipes should have been converted into functions. Pipe: ${ast.name}`);\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitFunctionCall(ast, mode) {\n const /** @type {?} */ convertedArgs = this.visitAll(ast.args, _Mode.Expression);\n let /** @type {?} */ fnResult;\n if (ast instanceof BuiltinFunctionCall) {\n fnResult = ast.converter(convertedArgs);\n }\n else {\n fnResult = this._visit(/** @type {?} */ ((ast.target)), _Mode.Expression).callFn(convertedArgs);\n }\n return convertToStatementIfNeeded(mode, fnResult);\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitImplicitReceiver(ast, mode) {\n ensureExpressionMode(mode, ast);\n return this._implicitReceiver;\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitInterpolation(ast, mode) {\n ensureExpressionMode(mode, ast);\n const /** @type {?} */ args = [o.literal(ast.expressions.length)];\n for (let /** @type {?} */ i = 0; i < ast.strings.length - 1; i++) {\n args.push(o.literal(ast.strings[i]));\n args.push(this._visit(ast.expressions[i], _Mode.Expression));\n }\n args.push(o.literal(ast.strings[ast.strings.length - 1]));\n return ast.expressions.length <= 9 ?\n o.importExpr(Identifiers.inlineInterpolate).callFn(args) :\n o.importExpr(Identifiers.interpolate).callFn([args[0], o.literalArr(args.slice(1))]);\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitKeyedRead(ast, mode) {\n const /** @type {?} */ leftMostSafe = this.leftMostSafeNode(ast);\n if (leftMostSafe) {\n return this.convertSafeAccess(ast, leftMostSafe, mode);\n }\n else {\n return convertToStatementIfNeeded(mode, this._visit(ast.obj, _Mode.Expression).key(this._visit(ast.key, _Mode.Expression)));\n }\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitKeyedWrite(ast, mode) {\n const /** @type {?} */ obj = this._visit(ast.obj, _Mode.Expression);\n const /** @type {?} */ key = this._visit(ast.key, _Mode.Expression);\n const /** @type {?} */ value = this._visit(ast.value, _Mode.Expression);\n return convertToStatementIfNeeded(mode, obj.key(key).set(value));\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitLiteralArray(ast, mode) {\n throw new Error(`Illegal State: literal arrays should have been converted into functions`);\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitLiteralMap(ast, mode) {\n throw new Error(`Illegal State: literal maps should have been converted into functions`);\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitLiteralPrimitive(ast, mode) {\n // For literal values of null, undefined, true, or false allow type inteference\n // to infer the type.\n const /** @type {?} */ type = ast.value === null || ast.value === undefined || ast.value === true || ast.value === true ?\n o.INFERRED_TYPE :\n undefined;\n return convertToStatementIfNeeded(mode, o.literal(ast.value, type));\n }\n /**\n * @param {?} name\n * @return {?}\n */\n _getLocal(name) { return this._localResolver.getLocal(name); }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitMethodCall(ast, mode) {\n if (ast.receiver instanceof cdAst.ImplicitReceiver && ast.name == '$any') {\n const /** @type {?} */ args = /** @type {?} */ (this.visitAll(ast.args, _Mode.Expression));\n if (args.length != 1) {\n throw new Error(`Invalid call to $any, expected 1 argument but received ${args.length || 'none'}`);\n }\n return (/** @type {?} */ (args[0])).cast(o.DYNAMIC_TYPE);\n }\n const /** @type {?} */ leftMostSafe = this.leftMostSafeNode(ast);\n if (leftMostSafe) {\n return this.convertSafeAccess(ast, leftMostSafe, mode);\n }\n else {\n const /** @type {?} */ args = this.visitAll(ast.args, _Mode.Expression);\n let /** @type {?} */ result = null;\n const /** @type {?} */ receiver = this._visit(ast.receiver, _Mode.Expression);\n if (receiver === this._implicitReceiver) {\n const /** @type {?} */ varExpr = this._getLocal(ast.name);\n if (varExpr) {\n result = varExpr.callFn(args);\n }\n }\n if (result == null) {\n result = receiver.callMethod(ast.name, args);\n }\n return convertToStatementIfNeeded(mode, result);\n }\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitPrefixNot(ast, mode) {\n return convertToStatementIfNeeded(mode, o.not(this._visit(ast.expression, _Mode.Expression)));\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitNonNullAssert(ast, mode) {\n return convertToStatementIfNeeded(mode, o.assertNotNull(this._visit(ast.expression, _Mode.Expression)));\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitPropertyRead(ast, mode) {\n const /** @type {?} */ leftMostSafe = this.leftMostSafeNode(ast);\n if (leftMostSafe) {\n return this.convertSafeAccess(ast, leftMostSafe, mode);\n }\n else {\n let /** @type {?} */ result = null;\n const /** @type {?} */ receiver = this._visit(ast.receiver, _Mode.Expression);\n if (receiver === this._implicitReceiver) {\n result = this._getLocal(ast.name);\n }\n if (result == null) {\n result = receiver.prop(ast.name);\n }\n return convertToStatementIfNeeded(mode, result);\n }\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitPropertyWrite(ast, mode) {\n const /** @type {?} */ receiver = this._visit(ast.receiver, _Mode.Expression);\n if (receiver === this._implicitReceiver) {\n const /** @type {?} */ varExpr = this._getLocal(ast.name);\n if (varExpr) {\n throw new Error('Cannot assign to a reference or variable!');\n }\n }\n return convertToStatementIfNeeded(mode, receiver.prop(ast.name).set(this._visit(ast.value, _Mode.Expression)));\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitSafePropertyRead(ast, mode) {\n return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode);\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitSafeMethodCall(ast, mode) {\n return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode);\n }\n /**\n * @param {?} asts\n * @param {?} mode\n * @return {?}\n */\n visitAll(asts, mode) { return asts.map(ast => this._visit(ast, mode)); }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n visitQuote(ast, mode) {\n throw new Error(`Quotes are not supported for evaluation!\n Statement: ${ast.uninterpretedExpression} located at ${ast.location}`);\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _visit(ast, mode) {\n const /** @type {?} */ result = this._resultMap.get(ast);\n if (result)\n return result;\n return (this._nodeMap.get(ast) || ast).visit(this, mode);\n }\n /**\n * @param {?} ast\n * @param {?} leftMostSafe\n * @param {?} mode\n * @return {?}\n */\n convertSafeAccess(ast, leftMostSafe, mode) {\n // If the expression contains a safe access node on the left it needs to be converted to\n // an expression that guards the access to the member by checking the receiver for blank. As\n // execution proceeds from left to right, the left most part of the expression must be guarded\n // first but, because member access is left associative, the right side of the expression is at\n // the top of the AST. The desired result requires lifting a copy of the the left part of the\n // expression up to test it for blank before generating the unguarded version.\n // Consider, for example the following expression: a?.b.c?.d.e\n // This results in the ast:\n // .\n // / \\\n // ?. e\n // / \\\n // . d\n // / \\\n // ?. c\n // / \\\n // a b\n // The following tree should be generated:\n //\n // /---- ? ----\\\n // / | \\\n // a /--- ? ---\\ null\n // / | \\\n // . . null\n // / \\ / \\\n // . c . e\n // / \\ / \\\n // a b , d\n // / \\\n // . c\n // / \\\n // a b\n //\n // Notice that the first guard condition is the left hand of the left most safe access node\n // which comes in as leftMostSafe to this routine.\n let /** @type {?} */ guardedExpression = this._visit(leftMostSafe.receiver, _Mode.Expression);\n let /** @type {?} */ temporary = /** @type {?} */ ((undefined));\n if (this.needsTemporary(leftMostSafe.receiver)) {\n // If the expression has method calls or pipes then we need to save the result into a\n // temporary variable to avoid calling stateful or impure code more than once.\n temporary = this.allocateTemporary();\n // Preserve the result in the temporary variable\n guardedExpression = temporary.set(guardedExpression);\n // Ensure all further references to the guarded expression refer to the temporary instead.\n this._resultMap.set(leftMostSafe.receiver, temporary);\n }\n const /** @type {?} */ condition = guardedExpression.isBlank();\n // Convert the ast to an unguarded access to the receiver's member. The map will substitute\n // leftMostNode with its unguarded version in the call to `this.visit()`.\n if (leftMostSafe instanceof cdAst.SafeMethodCall) {\n this._nodeMap.set(leftMostSafe, new cdAst.MethodCall(leftMostSafe.span, leftMostSafe.receiver, leftMostSafe.name, leftMostSafe.args));\n }\n else {\n this._nodeMap.set(leftMostSafe, new cdAst.PropertyRead(leftMostSafe.span, leftMostSafe.receiver, leftMostSafe.name));\n }\n // Recursively convert the node now without the guarded member access.\n const /** @type {?} */ access = this._visit(ast, _Mode.Expression);\n // Remove the mapping. This is not strictly required as the converter only traverses each node\n // once but is safer if the conversion is changed to traverse the nodes more than once.\n this._nodeMap.delete(leftMostSafe);\n // If we allocated a temporary, release it.\n if (temporary) {\n this.releaseTemporary(temporary);\n }\n // Produce the conditional\n return convertToStatementIfNeeded(mode, condition.conditional(o.literal(null), access));\n }\n /**\n * @param {?} ast\n * @return {?}\n */\n leftMostSafeNode(ast) {\n const /** @type {?} */ visit = (visitor, ast) => {\n return (this._nodeMap.get(ast) || ast).visit(visitor);\n };\n return ast.visit({\n /**\n * @param {?} ast\n * @return {?}\n */\n visitBinary(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitChain(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitConditional(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitFunctionCall(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitImplicitReceiver(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitInterpolation(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitKeyedRead(ast) { return visit(this, ast.obj); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitKeyedWrite(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralArray(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralMap(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralPrimitive(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitMethodCall(ast) { return visit(this, ast.receiver); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPipe(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPrefixNot(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitNonNullAssert(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPropertyRead(ast) { return visit(this, ast.receiver); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPropertyWrite(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitQuote(ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitSafeMethodCall(ast) { return visit(this, ast.receiver) || ast; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitSafePropertyRead(ast) {\n return visit(this, ast.receiver) || ast;\n }\n });\n }\n /**\n * @param {?} ast\n * @return {?}\n */\n needsTemporary(ast) {\n const /** @type {?} */ visit = (visitor, ast) => {\n return ast && (this._nodeMap.get(ast) || ast).visit(visitor);\n };\n const /** @type {?} */ visitSome = (visitor, ast) => {\n return ast.some(ast => visit(visitor, ast));\n };\n return ast.visit({\n /**\n * @param {?} ast\n * @return {?}\n */\n visitBinary(ast) { return visit(this, ast.left) || visit(this, ast.right); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitChain(ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitConditional(ast) {\n return visit(this, ast.condition) || visit(this, ast.trueExp) ||\n visit(this, ast.falseExp);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitFunctionCall(ast) { return true; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitImplicitReceiver(ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitInterpolation(ast) { return visitSome(this, ast.expressions); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitKeyedRead(ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitKeyedWrite(ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralArray(ast) { return true; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralMap(ast) { return true; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralPrimitive(ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitMethodCall(ast) { return true; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPipe(ast) { return true; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPrefixNot(ast) { return visit(this, ast.expression); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitNonNullAssert(ast) { return visit(this, ast.expression); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPropertyRead(ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPropertyWrite(ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitQuote(ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitSafeMethodCall(ast) { return true; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitSafePropertyRead(ast) { return false; }\n });\n }\n /**\n * @return {?}\n */\n allocateTemporary() {\n const /** @type {?} */ tempNumber = this._currentTemporary++;\n this.temporaryCount = Math.max(this._currentTemporary, this.temporaryCount);\n return new o.ReadVarExpr(temporaryName(this.bindingId, tempNumber));\n }\n /**\n * @param {?} temporary\n * @return {?}\n */\n releaseTemporary(temporary) {\n this._currentTemporary--;\n if (temporary.name != temporaryName(this.bindingId, this._currentTemporary)) {\n throw new Error(`Temporary ${temporary.name} released out of order`);\n }\n }\n}\nfunction _AstToIrVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n _AstToIrVisitor.prototype._nodeMap;\n /** @type {?} */\n _AstToIrVisitor.prototype._resultMap;\n /** @type {?} */\n _AstToIrVisitor.prototype._currentTemporary;\n /** @type {?} */\n _AstToIrVisitor.prototype.temporaryCount;\n /** @type {?} */\n _AstToIrVisitor.prototype._localResolver;\n /** @type {?} */\n _AstToIrVisitor.prototype._implicitReceiver;\n /** @type {?} */\n _AstToIrVisitor.prototype.bindingId;\n}\n/**\n * @param {?} arg\n * @param {?} output\n * @return {?}\n */\nfunction flattenStatements(arg, output) {\n if (Array.isArray(arg)) {\n (/** @type {?} */ (arg)).forEach((entry) => flattenStatements(entry, output));\n }\n else {\n output.push(arg);\n }\n}\nclass DefaultLocalResolver {\n /**\n * @param {?} name\n * @return {?}\n */\n getLocal(name) {\n if (name === EventHandlerVars.event.name) {\n return EventHandlerVars.event;\n }\n return null;\n }\n}\n/**\n * @param {?} bindingId\n * @return {?}\n */\nfunction createCurrValueExpr(bindingId) {\n return o.variable(`currVal_${bindingId}`); // fix syntax highlighting: `\n}\n/**\n * @param {?} bindingId\n * @return {?}\n */\nfunction createPreventDefaultVar(bindingId) {\n return o.variable(`pd_${bindingId}`);\n}\n/**\n * @param {?} stmt\n * @return {?}\n */\nfunction convertStmtIntoExpression(stmt) {\n if (stmt instanceof o.ExpressionStatement) {\n return stmt.expr;\n }\n else if (stmt instanceof o.ReturnStatement) {\n return stmt.value;\n }\n return null;\n}\nclass BuiltinFunctionCall extends cdAst.FunctionCall {\n /**\n * @param {?} span\n * @param {?} args\n * @param {?} converter\n */\n constructor(span, args, converter) {\n super(span, null, args);\n this.args = args;\n this.converter = converter;\n }\n}\nfunction BuiltinFunctionCall_tsickle_Closure_declarations() {\n /** @type {?} */\n BuiltinFunctionCall.prototype.args;\n /** @type {?} */\n BuiltinFunctionCall.prototype.converter;\n}\n//# sourceMappingURL=expression_converter.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { StaticSymbol } from '../aot/static_symbol';\nimport { BindingForm, EventHandlerVars, convertActionBinding, convertPropertyBinding, convertPropertyBindingBuiltins } from '../compiler_util/expression_converter';\nimport * as o from '../output/output_ast';\nimport { templateVisitAll } from '../template_parser/template_ast';\n/**\n * Generates code that is used to type check templates.\n */\nexport class TypeCheckCompiler {\n /**\n * @param {?} options\n * @param {?} reflector\n */\n constructor(options, reflector) {\n this.options = options;\n this.reflector = reflector;\n }\n /**\n * Important notes:\n * - This must not produce new `import` statements, but only refer to types outside\n * of the file via the variables provided via externalReferenceVars.\n * This allows Typescript to reuse the old program's structure as no imports have changed.\n * - This must not produce any exports, as this would pollute the .d.ts file\n * and also violate the point above.\n * @param {?} componentId\n * @param {?} component\n * @param {?} template\n * @param {?} usedPipes\n * @param {?} externalReferenceVars\n * @param {?} ctx\n * @return {?}\n */\n compileComponent(componentId, component, template, usedPipes, externalReferenceVars, ctx) {\n const /** @type {?} */ pipes = new Map();\n usedPipes.forEach(p => pipes.set(p.name, p.type.reference));\n let /** @type {?} */ embeddedViewCount = 0;\n const /** @type {?} */ viewBuilderFactory = (parent, guards) => {\n const /** @type {?} */ embeddedViewIndex = embeddedViewCount++;\n return new ViewBuilder(this.options, this.reflector, externalReferenceVars, parent, component.type.reference, component.isHost, embeddedViewIndex, pipes, guards, ctx, viewBuilderFactory);\n };\n const /** @type {?} */ visitor = viewBuilderFactory(null, []);\n visitor.visitAll([], template);\n return visitor.build(componentId);\n }\n}\nfunction TypeCheckCompiler_tsickle_Closure_declarations() {\n /** @type {?} */\n TypeCheckCompiler.prototype.options;\n /** @type {?} */\n TypeCheckCompiler.prototype.reflector;\n}\n/**\n * @record\n */\nfunction GuardExpression() { }\nfunction GuardExpression_tsickle_Closure_declarations() {\n /** @type {?} */\n GuardExpression.prototype.guard;\n /** @type {?} */\n GuardExpression.prototype.useIf;\n /** @type {?} */\n GuardExpression.prototype.expression;\n}\n/**\n * @record\n */\nfunction ViewBuilderFactory() { }\nfunction ViewBuilderFactory_tsickle_Closure_declarations() {\n /* TODO: handle strange member:\n (parent: ViewBuilder, guards: GuardExpression[]): ViewBuilder;\n */\n}\n/**\n * @record\n */\nfunction Expression() { }\nfunction Expression_tsickle_Closure_declarations() {\n /** @type {?} */\n Expression.prototype.context;\n /** @type {?} */\n Expression.prototype.sourceSpan;\n /** @type {?} */\n Expression.prototype.value;\n}\nconst /** @type {?} */ DYNAMIC_VAR_NAME = '_any';\nclass TypeCheckLocalResolver {\n /**\n * @param {?} name\n * @return {?}\n */\n getLocal(name) {\n if (name === EventHandlerVars.event.name) {\n // References to the event should not be type-checked.\n // TODO(chuckj): determine a better type for the event.\n return o.variable(DYNAMIC_VAR_NAME);\n }\n return null;\n }\n}\nconst /** @type {?} */ defaultResolver = new TypeCheckLocalResolver();\nclass ViewBuilder {\n /**\n * @param {?} options\n * @param {?} reflector\n * @param {?} externalReferenceVars\n * @param {?} parent\n * @param {?} component\n * @param {?} isHostComponent\n * @param {?} embeddedViewIndex\n * @param {?} pipes\n * @param {?} guards\n * @param {?} ctx\n * @param {?} viewBuilderFactory\n */\n constructor(options, reflector, externalReferenceVars, parent, component, isHostComponent, embeddedViewIndex, pipes, guards, ctx, viewBuilderFactory) {\n this.options = options;\n this.reflector = reflector;\n this.externalReferenceVars = externalReferenceVars;\n this.parent = parent;\n this.component = component;\n this.isHostComponent = isHostComponent;\n this.embeddedViewIndex = embeddedViewIndex;\n this.pipes = pipes;\n this.guards = guards;\n this.ctx = ctx;\n this.viewBuilderFactory = viewBuilderFactory;\n this.refOutputVars = new Map();\n this.variables = [];\n this.children = [];\n this.updates = [];\n this.actions = [];\n }\n /**\n * @param {?} type\n * @return {?}\n */\n getOutputVar(type) {\n let /** @type {?} */ varName;\n if (type === this.component && this.isHostComponent) {\n varName = DYNAMIC_VAR_NAME;\n }\n else if (type instanceof StaticSymbol) {\n varName = this.externalReferenceVars.get(type);\n }\n else {\n varName = DYNAMIC_VAR_NAME;\n }\n if (!varName) {\n throw new Error(`Illegal State: referring to a type without a variable ${JSON.stringify(type)}`);\n }\n return varName;\n }\n /**\n * @param {?} ast\n * @return {?}\n */\n getTypeGuardExpressions(ast) {\n const /** @type {?} */ result = [...this.guards];\n for (let /** @type {?} */ directive of ast.directives) {\n for (let /** @type {?} */ input of directive.inputs) {\n const /** @type {?} */ guard = directive.directive.guards[input.directiveName];\n if (guard) {\n const /** @type {?} */ useIf = guard === 'UseIf';\n result.push({\n guard,\n useIf,\n expression: /** @type {?} */ ({ context: this.component, value: input.value })\n });\n }\n }\n }\n return result;\n }\n /**\n * @param {?} variables\n * @param {?} astNodes\n * @return {?}\n */\n visitAll(variables, astNodes) {\n this.variables = variables;\n templateVisitAll(this, astNodes);\n }\n /**\n * @param {?} componentId\n * @param {?=} targetStatements\n * @return {?}\n */\n build(componentId, targetStatements = []) {\n this.children.forEach((child) => child.build(componentId, targetStatements));\n let /** @type {?} */ viewStmts = [o.variable(DYNAMIC_VAR_NAME).set(o.NULL_EXPR).toDeclStmt(o.DYNAMIC_TYPE)];\n let /** @type {?} */ bindingCount = 0;\n this.updates.forEach((expression) => {\n const { sourceSpan, context, value } = this.preprocessUpdateExpression(expression);\n const /** @type {?} */ bindingId = `${bindingCount++}`;\n const /** @type {?} */ nameResolver = context === this.component ? this : defaultResolver;\n const { stmts, currValExpr } = convertPropertyBinding(nameResolver, o.variable(this.getOutputVar(context)), value, bindingId, BindingForm.General);\n stmts.push(new o.ExpressionStatement(currValExpr));\n viewStmts.push(...stmts.map((stmt) => o.applySourceSpanToStatementIfNeeded(stmt, sourceSpan)));\n });\n this.actions.forEach(({ sourceSpan, context, value }) => {\n const /** @type {?} */ bindingId = `${bindingCount++}`;\n const /** @type {?} */ nameResolver = context === this.component ? this : defaultResolver;\n const { stmts } = convertActionBinding(nameResolver, o.variable(this.getOutputVar(context)), value, bindingId);\n viewStmts.push(...stmts.map((stmt) => o.applySourceSpanToStatementIfNeeded(stmt, sourceSpan)));\n });\n if (this.guards.length) {\n let /** @type {?} */ guardExpression = undefined;\n for (const /** @type {?} */ guard of this.guards) {\n const { context, value } = this.preprocessUpdateExpression(guard.expression);\n const /** @type {?} */ bindingId = `${bindingCount++}`;\n const /** @type {?} */ nameResolver = context === this.component ? this : defaultResolver;\n // We only support support simple expressions and ignore others as they\n // are unlikely to affect type narrowing.\n const { stmts, currValExpr } = convertPropertyBinding(nameResolver, o.variable(this.getOutputVar(context)), value, bindingId, BindingForm.TrySimple);\n if (stmts.length == 0) {\n const /** @type {?} */ guardClause = guard.useIf ? currValExpr : this.ctx.importExpr(guard.guard).callFn([currValExpr]);\n guardExpression = guardExpression ? guardExpression.and(guardClause) : guardClause;\n }\n }\n if (guardExpression) {\n viewStmts = [new o.IfStmt(guardExpression, viewStmts)];\n }\n }\n const /** @type {?} */ viewName = `_View_${componentId}_${this.embeddedViewIndex}`;\n const /** @type {?} */ viewFactory = new o.DeclareFunctionStmt(viewName, [], viewStmts);\n targetStatements.push(viewFactory);\n return targetStatements;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitBoundText(ast, context) {\n const /** @type {?} */ astWithSource = /** @type {?} */ (ast.value);\n const /** @type {?} */ inter = /** @type {?} */ (astWithSource.ast);\n inter.expressions.forEach((expr) => this.updates.push({ context: this.component, value: expr, sourceSpan: ast.sourceSpan }));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitEmbeddedTemplate(ast, context) {\n this.visitElementOrTemplate(ast);\n // Note: The old view compiler used to use an `any` type\n // for the context in any embedded view.\n // We keep this behaivor behind a flag for now.\n if (this.options.fullTemplateTypeCheck) {\n // Find any applicable type guards. For example, NgIf has a type guard on ngIf\n // (see NgIf.ngIfTypeGuard) that can be used to indicate that a template is only\n // stamped out if ngIf is truthy so any bindings in the template can assume that,\n // if a nullable type is used for ngIf, that expression is not null or undefined.\n const /** @type {?} */ guards = this.getTypeGuardExpressions(ast);\n const /** @type {?} */ childVisitor = this.viewBuilderFactory(this, guards);\n this.children.push(childVisitor);\n childVisitor.visitAll(ast.variables, ast.children);\n }\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitElement(ast, context) {\n this.visitElementOrTemplate(ast);\n let /** @type {?} */ inputDefs = [];\n let /** @type {?} */ updateRendererExpressions = [];\n let /** @type {?} */ outputDefs = [];\n ast.inputs.forEach((inputAst) => {\n this.updates.push({ context: this.component, value: inputAst.value, sourceSpan: inputAst.sourceSpan });\n });\n templateVisitAll(this, ast.children);\n }\n /**\n * @param {?} ast\n * @return {?}\n */\n visitElementOrTemplate(ast) {\n ast.directives.forEach((dirAst) => { this.visitDirective(dirAst); });\n ast.references.forEach((ref) => {\n let /** @type {?} */ outputVarType = /** @type {?} */ ((null));\n // Note: The old view compiler used to use an `any` type\n // for directives exposed via `exportAs`.\n // We keep this behaivor behind a flag for now.\n if (ref.value && ref.value.identifier && this.options.fullTemplateTypeCheck) {\n outputVarType = ref.value.identifier.reference;\n }\n else {\n outputVarType = o.BuiltinTypeName.Dynamic;\n }\n this.refOutputVars.set(ref.name, outputVarType);\n });\n ast.outputs.forEach((outputAst) => {\n this.actions.push({ context: this.component, value: outputAst.handler, sourceSpan: outputAst.sourceSpan });\n });\n }\n /**\n * @param {?} dirAst\n * @return {?}\n */\n visitDirective(dirAst) {\n const /** @type {?} */ dirType = dirAst.directive.type.reference;\n dirAst.inputs.forEach((input) => this.updates.push({ context: this.component, value: input.value, sourceSpan: input.sourceSpan }));\n // Note: The old view compiler used to use an `any` type\n // for expressions in host properties / events.\n // We keep this behaivor behind a flag for now.\n if (this.options.fullTemplateTypeCheck) {\n dirAst.hostProperties.forEach((inputAst) => this.updates.push({ context: dirType, value: inputAst.value, sourceSpan: inputAst.sourceSpan }));\n dirAst.hostEvents.forEach((hostEventAst) => this.actions.push({\n context: dirType,\n value: hostEventAst.handler,\n sourceSpan: hostEventAst.sourceSpan\n }));\n }\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getLocal(name) {\n if (name == EventHandlerVars.event.name) {\n return o.variable(this.getOutputVar(o.BuiltinTypeName.Dynamic));\n }\n for (let /** @type {?} */ currBuilder = this; currBuilder; currBuilder = currBuilder.parent) {\n let /** @type {?} */ outputVarType;\n // check references\n outputVarType = currBuilder.refOutputVars.get(name);\n if (outputVarType == null) {\n // check variables\n const /** @type {?} */ varAst = currBuilder.variables.find((varAst) => varAst.name === name);\n if (varAst) {\n outputVarType = o.BuiltinTypeName.Dynamic;\n }\n }\n if (outputVarType != null) {\n return o.variable(this.getOutputVar(outputVarType));\n }\n }\n return null;\n }\n /**\n * @param {?} name\n * @return {?}\n */\n pipeOutputVar(name) {\n const /** @type {?} */ pipe = this.pipes.get(name);\n if (!pipe) {\n throw new Error(`Illegal State: Could not find pipe ${name} in template of ${this.component}`);\n }\n return this.getOutputVar(pipe);\n }\n /**\n * @param {?} expression\n * @return {?}\n */\n preprocessUpdateExpression(expression) {\n return {\n sourceSpan: expression.sourceSpan,\n context: expression.context,\n value: convertPropertyBindingBuiltins({\n createLiteralArrayConverter: (argCount) => (args) => {\n const /** @type {?} */ arr = o.literalArr(args);\n // Note: The old view compiler used to use an `any` type\n // for arrays.\n return this.options.fullTemplateTypeCheck ? arr : arr.cast(o.DYNAMIC_TYPE);\n },\n createLiteralMapConverter: (keys) => (values) => {\n const /** @type {?} */ entries = keys.map((k, i) => ({\n key: k.key,\n value: values[i],\n quoted: k.quoted,\n }));\n const /** @type {?} */ map = o.literalMap(entries);\n // Note: The old view compiler used to use an `any` type\n // for maps.\n return this.options.fullTemplateTypeCheck ? map : map.cast(o.DYNAMIC_TYPE);\n },\n createPipeConverter: (name, argCount) => (args) => {\n // Note: The old view compiler used to use an `any` type\n // for pipes.\n const /** @type {?} */ pipeExpr = this.options.fullTemplateTypeCheck ?\n o.variable(this.pipeOutputVar(name)) :\n o.variable(this.getOutputVar(o.BuiltinTypeName.Dynamic));\n return pipeExpr.callMethod('transform', args);\n },\n }, expression.value)\n };\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitNgContent(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitText(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitDirectiveProperty(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitReference(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitVariable(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitEvent(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitElementProperty(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitAttr(ast, context) { }\n}\nfunction ViewBuilder_tsickle_Closure_declarations() {\n /** @type {?} */\n ViewBuilder.prototype.refOutputVars;\n /** @type {?} */\n ViewBuilder.prototype.variables;\n /** @type {?} */\n ViewBuilder.prototype.children;\n /** @type {?} */\n ViewBuilder.prototype.updates;\n /** @type {?} */\n ViewBuilder.prototype.actions;\n /** @type {?} */\n ViewBuilder.prototype.options;\n /** @type {?} */\n ViewBuilder.prototype.reflector;\n /** @type {?} */\n ViewBuilder.prototype.externalReferenceVars;\n /** @type {?} */\n ViewBuilder.prototype.parent;\n /** @type {?} */\n ViewBuilder.prototype.component;\n /** @type {?} */\n ViewBuilder.prototype.isHostComponent;\n /** @type {?} */\n ViewBuilder.prototype.embeddedViewIndex;\n /** @type {?} */\n ViewBuilder.prototype.pipes;\n /** @type {?} */\n ViewBuilder.prototype.guards;\n /** @type {?} */\n ViewBuilder.prototype.ctx;\n /** @type {?} */\n ViewBuilder.prototype.viewBuilderFactory;\n}\n//# sourceMappingURL=type_check_compiler.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { rendererTypeName, tokenReference, viewClassName } from '../compile_metadata';\nimport { BindingForm, EventHandlerVars, convertActionBinding, convertPropertyBinding, convertPropertyBindingBuiltins } from '../compiler_util/expression_converter';\nimport { ChangeDetectionStrategy } from '../core';\nimport { Identifiers } from '../identifiers';\nimport { LifecycleHooks } from '../lifecycle_reflector';\nimport { isNgContainer } from '../ml_parser/tags';\nimport * as o from '../output/output_ast';\nimport { convertValueToOutputAst } from '../output/value_util';\nimport { ElementAst, EmbeddedTemplateAst, NgContentAst, PropertyBindingType, templateVisitAll } from '../template_parser/template_ast';\nimport { componentFactoryResolverProviderDef, depDef, lifecycleHookToNodeFlag, providerDef } from './provider_compiler';\nconst /** @type {?} */ CLASS_ATTR = 'class';\nconst /** @type {?} */ STYLE_ATTR = 'style';\nconst /** @type {?} */ IMPLICIT_TEMPLATE_VAR = '\\$implicit';\nexport class ViewCompileResult {\n /**\n * @param {?} viewClassVar\n * @param {?} rendererTypeVar\n */\n constructor(viewClassVar, rendererTypeVar) {\n this.viewClassVar = viewClassVar;\n this.rendererTypeVar = rendererTypeVar;\n }\n}\nfunction ViewCompileResult_tsickle_Closure_declarations() {\n /** @type {?} */\n ViewCompileResult.prototype.viewClassVar;\n /** @type {?} */\n ViewCompileResult.prototype.rendererTypeVar;\n}\nexport class ViewCompiler {\n /**\n * @param {?} _reflector\n */\n constructor(_reflector) {\n this._reflector = _reflector;\n }\n /**\n * @param {?} outputCtx\n * @param {?} component\n * @param {?} template\n * @param {?} styles\n * @param {?} usedPipes\n * @return {?}\n */\n compileComponent(outputCtx, component, template, styles, usedPipes) {\n let /** @type {?} */ embeddedViewCount = 0;\n const /** @type {?} */ staticQueryIds = findStaticQueryIds(template);\n let /** @type {?} */ renderComponentVarName = /** @type {?} */ ((undefined));\n if (!component.isHost) {\n const /** @type {?} */ template = /** @type {?} */ ((component.template));\n const /** @type {?} */ customRenderData = [];\n if (template.animations && template.animations.length) {\n customRenderData.push(new o.LiteralMapEntry('animation', convertValueToOutputAst(outputCtx, template.animations), true));\n }\n const /** @type {?} */ renderComponentVar = o.variable(rendererTypeName(component.type.reference));\n renderComponentVarName = /** @type {?} */ ((renderComponentVar.name));\n outputCtx.statements.push(renderComponentVar\n .set(o.importExpr(Identifiers.createRendererType2).callFn([new o.LiteralMapExpr([\n new o.LiteralMapEntry('encapsulation', o.literal(template.encapsulation), false),\n new o.LiteralMapEntry('styles', styles, false),\n new o.LiteralMapEntry('data', new o.LiteralMapExpr(customRenderData), false)\n ])]))\n .toDeclStmt(o.importType(Identifiers.RendererType2), [o.StmtModifier.Final, o.StmtModifier.Exported]));\n }\n const /** @type {?} */ viewBuilderFactory = (parent) => {\n const /** @type {?} */ embeddedViewIndex = embeddedViewCount++;\n return new ViewBuilder(this._reflector, outputCtx, parent, component, embeddedViewIndex, usedPipes, staticQueryIds, viewBuilderFactory);\n };\n const /** @type {?} */ visitor = viewBuilderFactory(null);\n visitor.visitAll([], template);\n outputCtx.statements.push(...visitor.build());\n return new ViewCompileResult(visitor.viewName, renderComponentVarName);\n }\n}\nfunction ViewCompiler_tsickle_Closure_declarations() {\n /** @type {?} */\n ViewCompiler.prototype._reflector;\n}\n/**\n * @record\n */\nfunction ViewBuilderFactory() { }\nfunction ViewBuilderFactory_tsickle_Closure_declarations() {\n /* TODO: handle strange member:\n (parent: ViewBuilder): ViewBuilder;\n */\n}\n/**\n * @record\n */\nfunction UpdateExpression() { }\nfunction UpdateExpression_tsickle_Closure_declarations() {\n /** @type {?} */\n UpdateExpression.prototype.context;\n /** @type {?} */\n UpdateExpression.prototype.nodeIndex;\n /** @type {?} */\n UpdateExpression.prototype.bindingIndex;\n /** @type {?} */\n UpdateExpression.prototype.sourceSpan;\n /** @type {?} */\n UpdateExpression.prototype.value;\n}\nconst /** @type {?} */ LOG_VAR = o.variable('_l');\nconst /** @type {?} */ VIEW_VAR = o.variable('_v');\nconst /** @type {?} */ CHECK_VAR = o.variable('_ck');\nconst /** @type {?} */ COMP_VAR = o.variable('_co');\nconst /** @type {?} */ EVENT_NAME_VAR = o.variable('en');\nconst /** @type {?} */ ALLOW_DEFAULT_VAR = o.variable(`ad`);\nclass ViewBuilder {\n /**\n * @param {?} reflector\n * @param {?} outputCtx\n * @param {?} parent\n * @param {?} component\n * @param {?} embeddedViewIndex\n * @param {?} usedPipes\n * @param {?} staticQueryIds\n * @param {?} viewBuilderFactory\n */\n constructor(reflector, outputCtx, parent, component, embeddedViewIndex, usedPipes, staticQueryIds, viewBuilderFactory) {\n this.reflector = reflector;\n this.outputCtx = outputCtx;\n this.parent = parent;\n this.component = component;\n this.embeddedViewIndex = embeddedViewIndex;\n this.usedPipes = usedPipes;\n this.staticQueryIds = staticQueryIds;\n this.viewBuilderFactory = viewBuilderFactory;\n this.nodes = [];\n this.purePipeNodeIndices = Object.create(null);\n this.refNodeIndices = Object.create(null);\n this.variables = [];\n this.children = [];\n // TODO(tbosch): The old view compiler used to use an `any` type\n // for the context in any embedded view. We keep this behaivor for now\n // to be able to introduce the new view compiler without too many errors.\n this.compType = this.embeddedViewIndex > 0 ?\n o.DYNAMIC_TYPE : /** @type {?} */\n ((o.expressionType(outputCtx.importExpr(this.component.type.reference))));\n this.viewName = viewClassName(this.component.type.reference, this.embeddedViewIndex);\n }\n /**\n * @param {?} variables\n * @param {?} astNodes\n * @return {?}\n */\n visitAll(variables, astNodes) {\n this.variables = variables;\n // create the pipes for the pure pipes immediately, so that we know their indices.\n if (!this.parent) {\n this.usedPipes.forEach((pipe) => {\n if (pipe.pure) {\n this.purePipeNodeIndices[pipe.name] = this._createPipe(null, pipe);\n }\n });\n }\n if (!this.parent) {\n const /** @type {?} */ queryIds = staticViewQueryIds(this.staticQueryIds);\n this.component.viewQueries.forEach((query, queryIndex) => {\n // Note: queries start with id 1 so we can use the number in a Bloom filter!\n const /** @type {?} */ queryId = queryIndex + 1;\n const /** @type {?} */ bindingType = query.first ? 0 /* First */ : 1 /* All */;\n const /** @type {?} */ flags = 134217728 /* TypeViewQuery */ | calcStaticDynamicQueryFlags(queryIds, queryId, query.first);\n this.nodes.push(() => ({\n sourceSpan: null,\n nodeFlags: flags,\n nodeDef: o.importExpr(Identifiers.queryDef).callFn([\n o.literal(flags), o.literal(queryId),\n new o.LiteralMapExpr([new o.LiteralMapEntry(query.propertyName, o.literal(bindingType), false)])\n ])\n }));\n });\n }\n templateVisitAll(this, astNodes);\n if (this.parent && (astNodes.length === 0 || needsAdditionalRootNode(astNodes))) {\n // if the view is an embedded view, then we need to add an additional root node in some cases\n this.nodes.push(() => ({\n sourceSpan: null,\n nodeFlags: 1 /* TypeElement */,\n nodeDef: o.importExpr(Identifiers.anchorDef).callFn([\n o.literal(0 /* None */), o.NULL_EXPR, o.NULL_EXPR, o.literal(0)\n ])\n }));\n }\n }\n /**\n * @param {?=} targetStatements\n * @return {?}\n */\n build(targetStatements = []) {\n this.children.forEach((child) => child.build(targetStatements));\n const { updateRendererStmts, updateDirectivesStmts, nodeDefExprs } = this._createNodeExpressions();\n const /** @type {?} */ updateRendererFn = this._createUpdateFn(updateRendererStmts);\n const /** @type {?} */ updateDirectivesFn = this._createUpdateFn(updateDirectivesStmts);\n let /** @type {?} */ viewFlags = 0 /* None */;\n if (!this.parent && this.component.changeDetection === ChangeDetectionStrategy.OnPush) {\n viewFlags |= 2 /* OnPush */;\n }\n const /** @type {?} */ viewFactory = new o.DeclareFunctionStmt(this.viewName, [new o.FnParam(/** @type {?} */ ((LOG_VAR.name)))], [new o.ReturnStatement(o.importExpr(Identifiers.viewDef).callFn([\n o.literal(viewFlags),\n o.literalArr(nodeDefExprs),\n updateDirectivesFn,\n updateRendererFn,\n ]))], o.importType(Identifiers.ViewDefinition), this.embeddedViewIndex === 0 ? [o.StmtModifier.Exported] : []);\n targetStatements.push(viewFactory);\n return targetStatements;\n }\n /**\n * @param {?} updateStmts\n * @return {?}\n */\n _createUpdateFn(updateStmts) {\n let /** @type {?} */ updateFn;\n if (updateStmts.length > 0) {\n const /** @type {?} */ preStmts = [];\n if (!this.component.isHost && o.findReadVarNames(updateStmts).has(/** @type {?} */ ((COMP_VAR.name)))) {\n preStmts.push(COMP_VAR.set(VIEW_VAR.prop('component')).toDeclStmt(this.compType));\n }\n updateFn = o.fn([\n new o.FnParam(/** @type {?} */ ((CHECK_VAR.name)), o.INFERRED_TYPE),\n new o.FnParam(/** @type {?} */ ((VIEW_VAR.name)), o.INFERRED_TYPE)\n ], [...preStmts, ...updateStmts], o.INFERRED_TYPE);\n }\n else {\n updateFn = o.NULL_EXPR;\n }\n return updateFn;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitNgContent(ast, context) {\n // ngContentDef(ngContentIndex: number, index: number): NodeDef;\n this.nodes.push(() => ({\n sourceSpan: ast.sourceSpan,\n nodeFlags: 8 /* TypeNgContent */,\n nodeDef: o.importExpr(Identifiers.ngContentDef).callFn([\n o.literal(ast.ngContentIndex), o.literal(ast.index)\n ])\n }));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitText(ast, context) {\n // Static text nodes have no check function\n const /** @type {?} */ checkIndex = -1;\n this.nodes.push(() => ({\n sourceSpan: ast.sourceSpan,\n nodeFlags: 2 /* TypeText */,\n nodeDef: o.importExpr(Identifiers.textDef).callFn([\n o.literal(checkIndex),\n o.literal(ast.ngContentIndex),\n o.literalArr([o.literal(ast.value)]),\n ])\n }));\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitBoundText(ast, context) {\n const /** @type {?} */ nodeIndex = this.nodes.length;\n // reserve the space in the nodeDefs array\n this.nodes.push(/** @type {?} */ ((null)));\n const /** @type {?} */ astWithSource = /** @type {?} */ (ast.value);\n const /** @type {?} */ inter = /** @type {?} */ (astWithSource.ast);\n const /** @type {?} */ updateRendererExpressions = inter.expressions.map((expr, bindingIndex) => this._preprocessUpdateExpression({ nodeIndex, bindingIndex, sourceSpan: ast.sourceSpan, context: COMP_VAR, value: expr }));\n // Check index is the same as the node index during compilation\n // They might only differ at runtime\n const /** @type {?} */ checkIndex = nodeIndex;\n this.nodes[nodeIndex] = () => ({\n sourceSpan: ast.sourceSpan,\n nodeFlags: 2 /* TypeText */,\n nodeDef: o.importExpr(Identifiers.textDef).callFn([\n o.literal(checkIndex),\n o.literal(ast.ngContentIndex),\n o.literalArr(inter.strings.map(s => o.literal(s))),\n ]),\n updateRenderer: updateRendererExpressions\n });\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitEmbeddedTemplate(ast, context) {\n const /** @type {?} */ nodeIndex = this.nodes.length;\n // reserve the space in the nodeDefs array\n this.nodes.push(/** @type {?} */ ((null)));\n const { flags, queryMatchesExpr, hostEvents } = this._visitElementOrTemplate(nodeIndex, ast);\n const /** @type {?} */ childVisitor = this.viewBuilderFactory(this);\n this.children.push(childVisitor);\n childVisitor.visitAll(ast.variables, ast.children);\n const /** @type {?} */ childCount = this.nodes.length - nodeIndex - 1;\n // anchorDef(\n // flags: NodeFlags, matchedQueries: [string, QueryValueType][], ngContentIndex: number,\n // childCount: number, handleEventFn?: ElementHandleEventFn, templateFactory?:\n // ViewDefinitionFactory): NodeDef;\n this.nodes[nodeIndex] = () => ({\n sourceSpan: ast.sourceSpan,\n nodeFlags: 1 /* TypeElement */ | flags,\n nodeDef: o.importExpr(Identifiers.anchorDef).callFn([\n o.literal(flags),\n queryMatchesExpr,\n o.literal(ast.ngContentIndex),\n o.literal(childCount),\n this._createElementHandleEventFn(nodeIndex, hostEvents),\n o.variable(childVisitor.viewName),\n ])\n });\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitElement(ast, context) {\n const /** @type {?} */ nodeIndex = this.nodes.length;\n // reserve the space in the nodeDefs array so we can add children\n this.nodes.push(/** @type {?} */ ((null)));\n // Using a null element name creates an anchor.\n const /** @type {?} */ elName = isNgContainer(ast.name) ? null : ast.name;\n const { flags, usedEvents, queryMatchesExpr, hostBindings: dirHostBindings, hostEvents } = this._visitElementOrTemplate(nodeIndex, ast);\n let /** @type {?} */ inputDefs = [];\n let /** @type {?} */ updateRendererExpressions = [];\n let /** @type {?} */ outputDefs = [];\n if (elName) {\n const /** @type {?} */ hostBindings = ast.inputs\n .map((inputAst) => ({\n context: /** @type {?} */ (COMP_VAR),\n inputAst,\n dirAst: /** @type {?} */ (null),\n }))\n .concat(dirHostBindings);\n if (hostBindings.length) {\n updateRendererExpressions =\n hostBindings.map((hostBinding, bindingIndex) => this._preprocessUpdateExpression({\n context: hostBinding.context,\n nodeIndex,\n bindingIndex,\n sourceSpan: hostBinding.inputAst.sourceSpan,\n value: hostBinding.inputAst.value\n }));\n inputDefs = hostBindings.map(hostBinding => elementBindingDef(hostBinding.inputAst, hostBinding.dirAst));\n }\n outputDefs = usedEvents.map(([target, eventName]) => o.literalArr([o.literal(target), o.literal(eventName)]));\n }\n templateVisitAll(this, ast.children);\n const /** @type {?} */ childCount = this.nodes.length - nodeIndex - 1;\n const /** @type {?} */ compAst = ast.directives.find(dirAst => dirAst.directive.isComponent);\n let /** @type {?} */ compRendererType = /** @type {?} */ (o.NULL_EXPR);\n let /** @type {?} */ compView = /** @type {?} */ (o.NULL_EXPR);\n if (compAst) {\n compView = this.outputCtx.importExpr(compAst.directive.componentViewType);\n compRendererType = this.outputCtx.importExpr(compAst.directive.rendererType);\n }\n // Check index is the same as the node index during compilation\n // They might only differ at runtime\n const /** @type {?} */ checkIndex = nodeIndex;\n this.nodes[nodeIndex] = () => ({\n sourceSpan: ast.sourceSpan,\n nodeFlags: 1 /* TypeElement */ | flags,\n nodeDef: o.importExpr(Identifiers.elementDef).callFn([\n o.literal(checkIndex),\n o.literal(flags),\n queryMatchesExpr,\n o.literal(ast.ngContentIndex),\n o.literal(childCount),\n o.literal(elName),\n elName ? fixedAttrsDef(ast) : o.NULL_EXPR,\n inputDefs.length ? o.literalArr(inputDefs) : o.NULL_EXPR,\n outputDefs.length ? o.literalArr(outputDefs) : o.NULL_EXPR,\n this._createElementHandleEventFn(nodeIndex, hostEvents),\n compView,\n compRendererType,\n ]),\n updateRenderer: updateRendererExpressions\n });\n }\n /**\n * @param {?} nodeIndex\n * @param {?} ast\n * @return {?}\n */\n _visitElementOrTemplate(nodeIndex, ast) {\n let /** @type {?} */ flags = 0 /* None */;\n if (ast.hasViewContainer) {\n flags |= 16777216 /* EmbeddedViews */;\n }\n const /** @type {?} */ usedEvents = new Map();\n ast.outputs.forEach((event) => {\n const { name, target } = elementEventNameAndTarget(event, null);\n usedEvents.set(elementEventFullName(target, name), [target, name]);\n });\n ast.directives.forEach((dirAst) => {\n dirAst.hostEvents.forEach((event) => {\n const { name, target } = elementEventNameAndTarget(event, dirAst);\n usedEvents.set(elementEventFullName(target, name), [target, name]);\n });\n });\n const /** @type {?} */ hostBindings = [];\n const /** @type {?} */ hostEvents = [];\n this._visitComponentFactoryResolverProvider(ast.directives);\n ast.providers.forEach((providerAst, providerIndex) => {\n let /** @type {?} */ dirAst = /** @type {?} */ ((undefined));\n let /** @type {?} */ dirIndex = /** @type {?} */ ((undefined));\n ast.directives.forEach((localDirAst, i) => {\n if (localDirAst.directive.type.reference === tokenReference(providerAst.token)) {\n dirAst = localDirAst;\n dirIndex = i;\n }\n });\n if (dirAst) {\n const { hostBindings: dirHostBindings, hostEvents: dirHostEvents } = this._visitDirective(providerAst, dirAst, dirIndex, nodeIndex, ast.references, ast.queryMatches, usedEvents, /** @type {?} */ ((this.staticQueryIds.get(/** @type {?} */ (ast)))));\n hostBindings.push(...dirHostBindings);\n hostEvents.push(...dirHostEvents);\n }\n else {\n this._visitProvider(providerAst, ast.queryMatches);\n }\n });\n let /** @type {?} */ queryMatchExprs = [];\n ast.queryMatches.forEach((match) => {\n let /** @type {?} */ valueType = /** @type {?} */ ((undefined));\n if (tokenReference(match.value) ===\n this.reflector.resolveExternalReference(Identifiers.ElementRef)) {\n valueType = 0 /* ElementRef */;\n }\n else if (tokenReference(match.value) ===\n this.reflector.resolveExternalReference(Identifiers.ViewContainerRef)) {\n valueType = 3 /* ViewContainerRef */;\n }\n else if (tokenReference(match.value) ===\n this.reflector.resolveExternalReference(Identifiers.TemplateRef)) {\n valueType = 2 /* TemplateRef */;\n }\n if (valueType != null) {\n queryMatchExprs.push(o.literalArr([o.literal(match.queryId), o.literal(valueType)]));\n }\n });\n ast.references.forEach((ref) => {\n let /** @type {?} */ valueType = /** @type {?} */ ((undefined));\n if (!ref.value) {\n valueType = 1 /* RenderElement */;\n }\n else if (tokenReference(ref.value) ===\n this.reflector.resolveExternalReference(Identifiers.TemplateRef)) {\n valueType = 2 /* TemplateRef */;\n }\n if (valueType != null) {\n this.refNodeIndices[ref.name] = nodeIndex;\n queryMatchExprs.push(o.literalArr([o.literal(ref.name), o.literal(valueType)]));\n }\n });\n ast.outputs.forEach((outputAst) => {\n hostEvents.push({ context: COMP_VAR, eventAst: outputAst, dirAst: /** @type {?} */ ((null)) });\n });\n return {\n flags,\n usedEvents: Array.from(usedEvents.values()),\n queryMatchesExpr: queryMatchExprs.length ? o.literalArr(queryMatchExprs) : o.NULL_EXPR,\n hostBindings,\n hostEvents: hostEvents\n };\n }\n /**\n * @param {?} providerAst\n * @param {?} dirAst\n * @param {?} directiveIndex\n * @param {?} elementNodeIndex\n * @param {?} refs\n * @param {?} queryMatches\n * @param {?} usedEvents\n * @param {?} queryIds\n * @return {?}\n */\n _visitDirective(providerAst, dirAst, directiveIndex, elementNodeIndex, refs, queryMatches, usedEvents, queryIds) {\n const /** @type {?} */ nodeIndex = this.nodes.length;\n // reserve the space in the nodeDefs array so we can add children\n this.nodes.push(/** @type {?} */ ((null)));\n dirAst.directive.queries.forEach((query, queryIndex) => {\n const /** @type {?} */ queryId = dirAst.contentQueryStartId + queryIndex;\n const /** @type {?} */ flags = 67108864 /* TypeContentQuery */ | calcStaticDynamicQueryFlags(queryIds, queryId, query.first);\n const /** @type {?} */ bindingType = query.first ? 0 /* First */ : 1 /* All */;\n this.nodes.push(() => ({\n sourceSpan: dirAst.sourceSpan,\n nodeFlags: flags,\n nodeDef: o.importExpr(Identifiers.queryDef).callFn([\n o.literal(flags), o.literal(queryId),\n new o.LiteralMapExpr([new o.LiteralMapEntry(query.propertyName, o.literal(bindingType), false)])\n ]),\n }));\n });\n // Note: the operation below might also create new nodeDefs,\n // but we don't want them to be a child of a directive,\n // as they might be a provider/pipe on their own.\n // I.e. we only allow queries as children of directives nodes.\n const /** @type {?} */ childCount = this.nodes.length - nodeIndex - 1;\n let { flags, queryMatchExprs, providerExpr, depsExpr } = this._visitProviderOrDirective(providerAst, queryMatches);\n refs.forEach((ref) => {\n if (ref.value && tokenReference(ref.value) === tokenReference(providerAst.token)) {\n this.refNodeIndices[ref.name] = nodeIndex;\n queryMatchExprs.push(o.literalArr([o.literal(ref.name), o.literal(4 /* Provider */)]));\n }\n });\n if (dirAst.directive.isComponent) {\n flags |= 32768 /* Component */;\n }\n const /** @type {?} */ inputDefs = dirAst.inputs.map((inputAst, inputIndex) => {\n const /** @type {?} */ mapValue = o.literalArr([o.literal(inputIndex), o.literal(inputAst.directiveName)]);\n // Note: it's important to not quote the key so that we can capture renames by minifiers!\n return new o.LiteralMapEntry(inputAst.directiveName, mapValue, false);\n });\n const /** @type {?} */ outputDefs = [];\n const /** @type {?} */ dirMeta = dirAst.directive;\n Object.keys(dirMeta.outputs).forEach((propName) => {\n const /** @type {?} */ eventName = dirMeta.outputs[propName];\n if (usedEvents.has(eventName)) {\n // Note: it's important to not quote the key so that we can capture renames by minifiers!\n outputDefs.push(new o.LiteralMapEntry(propName, o.literal(eventName), false));\n }\n });\n let /** @type {?} */ updateDirectiveExpressions = [];\n if (dirAst.inputs.length || (flags & (262144 /* DoCheck */ | 65536 /* OnInit */)) > 0) {\n updateDirectiveExpressions =\n dirAst.inputs.map((input, bindingIndex) => this._preprocessUpdateExpression({\n nodeIndex,\n bindingIndex,\n sourceSpan: input.sourceSpan,\n context: COMP_VAR,\n value: input.value\n }));\n }\n const /** @type {?} */ dirContextExpr = o.importExpr(Identifiers.nodeValue).callFn([VIEW_VAR, o.literal(nodeIndex)]);\n const /** @type {?} */ hostBindings = dirAst.hostProperties.map((inputAst) => ({\n context: dirContextExpr,\n dirAst,\n inputAst,\n }));\n const /** @type {?} */ hostEvents = dirAst.hostEvents.map((hostEventAst) => ({\n context: dirContextExpr,\n eventAst: hostEventAst, dirAst,\n }));\n // Check index is the same as the node index during compilation\n // They might only differ at runtime\n const /** @type {?} */ checkIndex = nodeIndex;\n this.nodes[nodeIndex] = () => ({\n sourceSpan: dirAst.sourceSpan,\n nodeFlags: 16384 /* TypeDirective */ | flags,\n nodeDef: o.importExpr(Identifiers.directiveDef).callFn([\n o.literal(checkIndex),\n o.literal(flags),\n queryMatchExprs.length ? o.literalArr(queryMatchExprs) : o.NULL_EXPR,\n o.literal(childCount),\n providerExpr,\n depsExpr,\n inputDefs.length ? new o.LiteralMapExpr(inputDefs) : o.NULL_EXPR,\n outputDefs.length ? new o.LiteralMapExpr(outputDefs) : o.NULL_EXPR,\n ]),\n updateDirectives: updateDirectiveExpressions,\n directive: dirAst.directive.type,\n });\n return { hostBindings, hostEvents };\n }\n /**\n * @param {?} providerAst\n * @param {?} queryMatches\n * @return {?}\n */\n _visitProvider(providerAst, queryMatches) {\n this._addProviderNode(this._visitProviderOrDirective(providerAst, queryMatches));\n }\n /**\n * @param {?} directives\n * @return {?}\n */\n _visitComponentFactoryResolverProvider(directives) {\n const /** @type {?} */ componentDirMeta = directives.find(dirAst => dirAst.directive.isComponent);\n if (componentDirMeta && componentDirMeta.directive.entryComponents.length) {\n const { providerExpr, depsExpr, flags, tokenExpr } = componentFactoryResolverProviderDef(this.reflector, this.outputCtx, 8192 /* PrivateProvider */, componentDirMeta.directive.entryComponents);\n this._addProviderNode({\n providerExpr,\n depsExpr,\n flags,\n tokenExpr,\n queryMatchExprs: [],\n sourceSpan: componentDirMeta.sourceSpan\n });\n }\n }\n /**\n * @param {?} data\n * @return {?}\n */\n _addProviderNode(data) {\n const /** @type {?} */ nodeIndex = this.nodes.length;\n // providerDef(\n // flags: NodeFlags, matchedQueries: [string, QueryValueType][], token:any,\n // value: any, deps: ([DepFlags, any] | any)[]): NodeDef;\n this.nodes.push(() => ({\n sourceSpan: data.sourceSpan,\n nodeFlags: data.flags,\n nodeDef: o.importExpr(Identifiers.providerDef).callFn([\n o.literal(data.flags),\n data.queryMatchExprs.length ? o.literalArr(data.queryMatchExprs) : o.NULL_EXPR,\n data.tokenExpr, data.providerExpr, data.depsExpr\n ])\n }));\n }\n /**\n * @param {?} providerAst\n * @param {?} queryMatches\n * @return {?}\n */\n _visitProviderOrDirective(providerAst, queryMatches) {\n let /** @type {?} */ flags = 0 /* None */;\n let /** @type {?} */ queryMatchExprs = [];\n queryMatches.forEach((match) => {\n if (tokenReference(match.value) === tokenReference(providerAst.token)) {\n queryMatchExprs.push(o.literalArr([o.literal(match.queryId), o.literal(4 /* Provider */)]));\n }\n });\n const { providerExpr, depsExpr, flags: providerFlags, tokenExpr } = providerDef(this.outputCtx, providerAst);\n return {\n flags: flags | providerFlags,\n queryMatchExprs,\n providerExpr,\n depsExpr,\n tokenExpr,\n sourceSpan: providerAst.sourceSpan\n };\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getLocal(name) {\n if (name == EventHandlerVars.event.name) {\n return EventHandlerVars.event;\n }\n let /** @type {?} */ currViewExpr = VIEW_VAR;\n for (let /** @type {?} */ currBuilder = this; currBuilder; currBuilder = currBuilder.parent,\n currViewExpr = currViewExpr.prop('parent').cast(o.DYNAMIC_TYPE)) {\n // check references\n const /** @type {?} */ refNodeIndex = currBuilder.refNodeIndices[name];\n if (refNodeIndex != null) {\n return o.importExpr(Identifiers.nodeValue).callFn([currViewExpr, o.literal(refNodeIndex)]);\n }\n // check variables\n const /** @type {?} */ varAst = currBuilder.variables.find((varAst) => varAst.name === name);\n if (varAst) {\n const /** @type {?} */ varValue = varAst.value || IMPLICIT_TEMPLATE_VAR;\n return currViewExpr.prop('context').prop(varValue);\n }\n }\n return null;\n }\n /**\n * @param {?} sourceSpan\n * @param {?} argCount\n * @return {?}\n */\n _createLiteralArrayConverter(sourceSpan, argCount) {\n if (argCount === 0) {\n const /** @type {?} */ valueExpr = o.importExpr(Identifiers.EMPTY_ARRAY);\n return () => valueExpr;\n }\n const /** @type {?} */ checkIndex = this.nodes.length;\n this.nodes.push(() => ({\n sourceSpan,\n nodeFlags: 32 /* TypePureArray */,\n nodeDef: o.importExpr(Identifiers.pureArrayDef).callFn([\n o.literal(checkIndex),\n o.literal(argCount),\n ])\n }));\n return (args) => callCheckStmt(checkIndex, args);\n }\n /**\n * @param {?} sourceSpan\n * @param {?} keys\n * @return {?}\n */\n _createLiteralMapConverter(sourceSpan, keys) {\n if (keys.length === 0) {\n const /** @type {?} */ valueExpr = o.importExpr(Identifiers.EMPTY_MAP);\n return () => valueExpr;\n }\n const /** @type {?} */ map = o.literalMap(keys.map((e, i) => (Object.assign({}, e, { value: o.literal(i) }))));\n const /** @type {?} */ checkIndex = this.nodes.length;\n this.nodes.push(() => ({\n sourceSpan,\n nodeFlags: 64 /* TypePureObject */,\n nodeDef: o.importExpr(Identifiers.pureObjectDef).callFn([\n o.literal(checkIndex),\n map,\n ])\n }));\n return (args) => callCheckStmt(checkIndex, args);\n }\n /**\n * @param {?} expression\n * @param {?} name\n * @param {?} argCount\n * @return {?}\n */\n _createPipeConverter(expression, name, argCount) {\n const /** @type {?} */ pipe = /** @type {?} */ ((this.usedPipes.find((pipeSummary) => pipeSummary.name === name)));\n if (pipe.pure) {\n const /** @type {?} */ checkIndex = this.nodes.length;\n this.nodes.push(() => ({\n sourceSpan: expression.sourceSpan,\n nodeFlags: 128 /* TypePurePipe */,\n nodeDef: o.importExpr(Identifiers.purePipeDef).callFn([\n o.literal(checkIndex),\n o.literal(argCount),\n ])\n }));\n // find underlying pipe in the component view\n let /** @type {?} */ compViewExpr = VIEW_VAR;\n let /** @type {?} */ compBuilder = this;\n while (compBuilder.parent) {\n compBuilder = compBuilder.parent;\n compViewExpr = compViewExpr.prop('parent').cast(o.DYNAMIC_TYPE);\n }\n const /** @type {?} */ pipeNodeIndex = compBuilder.purePipeNodeIndices[name];\n const /** @type {?} */ pipeValueExpr = o.importExpr(Identifiers.nodeValue).callFn([compViewExpr, o.literal(pipeNodeIndex)]);\n return (args) => callUnwrapValue(expression.nodeIndex, expression.bindingIndex, callCheckStmt(checkIndex, [pipeValueExpr].concat(args)));\n }\n else {\n const /** @type {?} */ nodeIndex = this._createPipe(expression.sourceSpan, pipe);\n const /** @type {?} */ nodeValueExpr = o.importExpr(Identifiers.nodeValue).callFn([VIEW_VAR, o.literal(nodeIndex)]);\n return (args) => callUnwrapValue(expression.nodeIndex, expression.bindingIndex, nodeValueExpr.callMethod('transform', args));\n }\n }\n /**\n * @param {?} sourceSpan\n * @param {?} pipe\n * @return {?}\n */\n _createPipe(sourceSpan, pipe) {\n const /** @type {?} */ nodeIndex = this.nodes.length;\n let /** @type {?} */ flags = 0 /* None */;\n pipe.type.lifecycleHooks.forEach((lifecycleHook) => {\n // for pipes, we only support ngOnDestroy\n if (lifecycleHook === LifecycleHooks.OnDestroy) {\n flags |= lifecycleHookToNodeFlag(lifecycleHook);\n }\n });\n const /** @type {?} */ depExprs = pipe.type.diDeps.map((diDep) => depDef(this.outputCtx, diDep));\n // function pipeDef(\n // flags: NodeFlags, ctor: any, deps: ([DepFlags, any] | any)[]): NodeDef\n this.nodes.push(() => ({\n sourceSpan,\n nodeFlags: 16 /* TypePipe */,\n nodeDef: o.importExpr(Identifiers.pipeDef).callFn([\n o.literal(flags), this.outputCtx.importExpr(pipe.type.reference), o.literalArr(depExprs)\n ])\n }));\n return nodeIndex;\n }\n /**\n * For the AST in `UpdateExpression.value`:\n * - create nodes for pipes, literal arrays and, literal maps,\n * - update the AST to replace pipes, literal arrays and, literal maps with calls to check fn.\n *\n * WARNING: This might create new nodeDefs (for pipes and literal arrays and literal maps)!\n * @param {?} expression\n * @return {?}\n */\n _preprocessUpdateExpression(expression) {\n return {\n nodeIndex: expression.nodeIndex,\n bindingIndex: expression.bindingIndex,\n sourceSpan: expression.sourceSpan,\n context: expression.context,\n value: convertPropertyBindingBuiltins({\n createLiteralArrayConverter: (argCount) => this._createLiteralArrayConverter(expression.sourceSpan, argCount),\n createLiteralMapConverter: (keys) => this._createLiteralMapConverter(expression.sourceSpan, keys),\n createPipeConverter: (name, argCount) => this._createPipeConverter(expression, name, argCount)\n }, expression.value)\n };\n }\n /**\n * @return {?}\n */\n _createNodeExpressions() {\n const /** @type {?} */ self = this;\n let /** @type {?} */ updateBindingCount = 0;\n const /** @type {?} */ updateRendererStmts = [];\n const /** @type {?} */ updateDirectivesStmts = [];\n const /** @type {?} */ nodeDefExprs = this.nodes.map((factory, nodeIndex) => {\n const { nodeDef, nodeFlags, updateDirectives, updateRenderer, sourceSpan } = factory();\n if (updateRenderer) {\n updateRendererStmts.push(...createUpdateStatements(nodeIndex, sourceSpan, updateRenderer, false));\n }\n if (updateDirectives) {\n updateDirectivesStmts.push(...createUpdateStatements(nodeIndex, sourceSpan, updateDirectives, (nodeFlags & (262144 /* DoCheck */ | 65536 /* OnInit */)) > 0));\n }\n // We use a comma expression to call the log function before\n // the nodeDef function, but still use the result of the nodeDef function\n // as the value.\n // Note: We only add the logger to elements / text nodes,\n // so we don't generate too much code.\n const /** @type {?} */ logWithNodeDef = nodeFlags & 3 /* CatRenderNode */ ?\n new o.CommaExpr([LOG_VAR.callFn([]).callFn([]), nodeDef]) :\n nodeDef;\n return o.applySourceSpanToExpressionIfNeeded(logWithNodeDef, sourceSpan);\n });\n return { updateRendererStmts, updateDirectivesStmts, nodeDefExprs };\n /**\n * @param {?} nodeIndex\n * @param {?} sourceSpan\n * @param {?} expressions\n * @param {?} allowEmptyExprs\n * @return {?}\n */\n function createUpdateStatements(nodeIndex, sourceSpan, expressions, allowEmptyExprs) {\n const /** @type {?} */ updateStmts = [];\n const /** @type {?} */ exprs = expressions.map(({ sourceSpan, context, value }) => {\n const /** @type {?} */ bindingId = `${updateBindingCount++}`;\n const /** @type {?} */ nameResolver = context === COMP_VAR ? self : null;\n const { stmts, currValExpr } = convertPropertyBinding(nameResolver, context, value, bindingId, BindingForm.General);\n updateStmts.push(...stmts.map((stmt) => o.applySourceSpanToStatementIfNeeded(stmt, sourceSpan)));\n return o.applySourceSpanToExpressionIfNeeded(currValExpr, sourceSpan);\n });\n if (expressions.length || allowEmptyExprs) {\n updateStmts.push(o.applySourceSpanToStatementIfNeeded(callCheckStmt(nodeIndex, exprs).toStmt(), sourceSpan));\n }\n return updateStmts;\n }\n }\n /**\n * @param {?} nodeIndex\n * @param {?} handlers\n * @return {?}\n */\n _createElementHandleEventFn(nodeIndex, handlers) {\n const /** @type {?} */ handleEventStmts = [];\n let /** @type {?} */ handleEventBindingCount = 0;\n handlers.forEach(({ context, eventAst, dirAst }) => {\n const /** @type {?} */ bindingId = `${handleEventBindingCount++}`;\n const /** @type {?} */ nameResolver = context === COMP_VAR ? this : null;\n const { stmts, allowDefault } = convertActionBinding(nameResolver, context, eventAst.handler, bindingId);\n const /** @type {?} */ trueStmts = stmts;\n if (allowDefault) {\n trueStmts.push(ALLOW_DEFAULT_VAR.set(allowDefault.and(ALLOW_DEFAULT_VAR)).toStmt());\n }\n const { target: eventTarget, name: eventName } = elementEventNameAndTarget(eventAst, dirAst);\n const /** @type {?} */ fullEventName = elementEventFullName(eventTarget, eventName);\n handleEventStmts.push(o.applySourceSpanToStatementIfNeeded(new o.IfStmt(o.literal(fullEventName).identical(EVENT_NAME_VAR), trueStmts), eventAst.sourceSpan));\n });\n let /** @type {?} */ handleEventFn;\n if (handleEventStmts.length > 0) {\n const /** @type {?} */ preStmts = [ALLOW_DEFAULT_VAR.set(o.literal(true)).toDeclStmt(o.BOOL_TYPE)];\n if (!this.component.isHost && o.findReadVarNames(handleEventStmts).has(/** @type {?} */ ((COMP_VAR.name)))) {\n preStmts.push(COMP_VAR.set(VIEW_VAR.prop('component')).toDeclStmt(this.compType));\n }\n handleEventFn = o.fn([\n new o.FnParam(/** @type {?} */ ((VIEW_VAR.name)), o.INFERRED_TYPE),\n new o.FnParam(/** @type {?} */ ((EVENT_NAME_VAR.name)), o.INFERRED_TYPE),\n new o.FnParam(/** @type {?} */ ((EventHandlerVars.event.name)), o.INFERRED_TYPE)\n ], [...preStmts, ...handleEventStmts, new o.ReturnStatement(ALLOW_DEFAULT_VAR)], o.INFERRED_TYPE);\n }\n else {\n handleEventFn = o.NULL_EXPR;\n }\n return handleEventFn;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitDirective(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitDirectiveProperty(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitReference(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitVariable(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitEvent(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitElementProperty(ast, context) { }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitAttr(ast, context) { }\n}\nfunction ViewBuilder_tsickle_Closure_declarations() {\n /** @type {?} */\n ViewBuilder.prototype.compType;\n /** @type {?} */\n ViewBuilder.prototype.nodes;\n /** @type {?} */\n ViewBuilder.prototype.purePipeNodeIndices;\n /** @type {?} */\n ViewBuilder.prototype.refNodeIndices;\n /** @type {?} */\n ViewBuilder.prototype.variables;\n /** @type {?} */\n ViewBuilder.prototype.children;\n /** @type {?} */\n ViewBuilder.prototype.viewName;\n /** @type {?} */\n ViewBuilder.prototype.reflector;\n /** @type {?} */\n ViewBuilder.prototype.outputCtx;\n /** @type {?} */\n ViewBuilder.prototype.parent;\n /** @type {?} */\n ViewBuilder.prototype.component;\n /** @type {?} */\n ViewBuilder.prototype.embeddedViewIndex;\n /** @type {?} */\n ViewBuilder.prototype.usedPipes;\n /** @type {?} */\n ViewBuilder.prototype.staticQueryIds;\n /** @type {?} */\n ViewBuilder.prototype.viewBuilderFactory;\n}\n/**\n * @param {?} astNodes\n * @return {?}\n */\nfunction needsAdditionalRootNode(astNodes) {\n const /** @type {?} */ lastAstNode = astNodes[astNodes.length - 1];\n if (lastAstNode instanceof EmbeddedTemplateAst) {\n return lastAstNode.hasViewContainer;\n }\n if (lastAstNode instanceof ElementAst) {\n if (isNgContainer(lastAstNode.name) && lastAstNode.children.length) {\n return needsAdditionalRootNode(lastAstNode.children);\n }\n return lastAstNode.hasViewContainer;\n }\n return lastAstNode instanceof NgContentAst;\n}\n/**\n * @param {?} inputAst\n * @param {?} dirAst\n * @return {?}\n */\nfunction elementBindingDef(inputAst, dirAst) {\n switch (inputAst.type) {\n case PropertyBindingType.Attribute:\n return o.literalArr([\n o.literal(1 /* TypeElementAttribute */), o.literal(inputAst.name),\n o.literal(inputAst.securityContext)\n ]);\n case PropertyBindingType.Property:\n return o.literalArr([\n o.literal(8 /* TypeProperty */), o.literal(inputAst.name),\n o.literal(inputAst.securityContext)\n ]);\n case PropertyBindingType.Animation:\n const /** @type {?} */ bindingType = 8 /* TypeProperty */ |\n (dirAst && dirAst.directive.isComponent ? 32 /* SyntheticHostProperty */ :\n 16 /* SyntheticProperty */);\n return o.literalArr([\n o.literal(bindingType), o.literal('@' + inputAst.name), o.literal(inputAst.securityContext)\n ]);\n case PropertyBindingType.Class:\n return o.literalArr([o.literal(2 /* TypeElementClass */), o.literal(inputAst.name), o.NULL_EXPR]);\n case PropertyBindingType.Style:\n return o.literalArr([\n o.literal(4 /* TypeElementStyle */), o.literal(inputAst.name), o.literal(inputAst.unit)\n ]);\n }\n}\n/**\n * @param {?} elementAst\n * @return {?}\n */\nfunction fixedAttrsDef(elementAst) {\n const /** @type {?} */ mapResult = Object.create(null);\n elementAst.attrs.forEach(attrAst => { mapResult[attrAst.name] = attrAst.value; });\n elementAst.directives.forEach(dirAst => {\n Object.keys(dirAst.directive.hostAttributes).forEach(name => {\n const /** @type {?} */ value = dirAst.directive.hostAttributes[name];\n const /** @type {?} */ prevValue = mapResult[name];\n mapResult[name] = prevValue != null ? mergeAttributeValue(name, prevValue, value) : value;\n });\n });\n // Note: We need to sort to get a defined output order\n // for tests and for caching generated artifacts...\n return o.literalArr(Object.keys(mapResult).sort().map((attrName) => o.literalArr([o.literal(attrName), o.literal(mapResult[attrName])])));\n}\n/**\n * @param {?} attrName\n * @param {?} attrValue1\n * @param {?} attrValue2\n * @return {?}\n */\nfunction mergeAttributeValue(attrName, attrValue1, attrValue2) {\n if (attrName == CLASS_ATTR || attrName == STYLE_ATTR) {\n return `${attrValue1} ${attrValue2}`;\n }\n else {\n return attrValue2;\n }\n}\n/**\n * @param {?} nodeIndex\n * @param {?} exprs\n * @return {?}\n */\nfunction callCheckStmt(nodeIndex, exprs) {\n if (exprs.length > 10) {\n return CHECK_VAR.callFn([VIEW_VAR, o.literal(nodeIndex), o.literal(1 /* Dynamic */), o.literalArr(exprs)]);\n }\n else {\n return CHECK_VAR.callFn([VIEW_VAR, o.literal(nodeIndex), o.literal(0 /* Inline */), ...exprs]);\n }\n}\n/**\n * @param {?} nodeIndex\n * @param {?} bindingIdx\n * @param {?} expr\n * @return {?}\n */\nfunction callUnwrapValue(nodeIndex, bindingIdx, expr) {\n return o.importExpr(Identifiers.unwrapValue).callFn([\n VIEW_VAR, o.literal(nodeIndex), o.literal(bindingIdx), expr\n ]);\n}\n/**\n * @record\n */\nfunction StaticAndDynamicQueryIds() { }\nfunction StaticAndDynamicQueryIds_tsickle_Closure_declarations() {\n /** @type {?} */\n StaticAndDynamicQueryIds.prototype.staticQueryIds;\n /** @type {?} */\n StaticAndDynamicQueryIds.prototype.dynamicQueryIds;\n}\n/**\n * @param {?} nodes\n * @param {?=} result\n * @return {?}\n */\nfunction findStaticQueryIds(nodes, result = new Map()) {\n nodes.forEach((node) => {\n const /** @type {?} */ staticQueryIds = new Set();\n const /** @type {?} */ dynamicQueryIds = new Set();\n let /** @type {?} */ queryMatches = /** @type {?} */ ((undefined));\n if (node instanceof ElementAst) {\n findStaticQueryIds(node.children, result);\n node.children.forEach((child) => {\n const /** @type {?} */ childData = /** @type {?} */ ((result.get(child)));\n childData.staticQueryIds.forEach(queryId => staticQueryIds.add(queryId));\n childData.dynamicQueryIds.forEach(queryId => dynamicQueryIds.add(queryId));\n });\n queryMatches = node.queryMatches;\n }\n else if (node instanceof EmbeddedTemplateAst) {\n findStaticQueryIds(node.children, result);\n node.children.forEach((child) => {\n const /** @type {?} */ childData = /** @type {?} */ ((result.get(child)));\n childData.staticQueryIds.forEach(queryId => dynamicQueryIds.add(queryId));\n childData.dynamicQueryIds.forEach(queryId => dynamicQueryIds.add(queryId));\n });\n queryMatches = node.queryMatches;\n }\n if (queryMatches) {\n queryMatches.forEach((match) => staticQueryIds.add(match.queryId));\n }\n dynamicQueryIds.forEach(queryId => staticQueryIds.delete(queryId));\n result.set(node, { staticQueryIds, dynamicQueryIds });\n });\n return result;\n}\n/**\n * @param {?} nodeStaticQueryIds\n * @return {?}\n */\nfunction staticViewQueryIds(nodeStaticQueryIds) {\n const /** @type {?} */ staticQueryIds = new Set();\n const /** @type {?} */ dynamicQueryIds = new Set();\n Array.from(nodeStaticQueryIds.values()).forEach((entry) => {\n entry.staticQueryIds.forEach(queryId => staticQueryIds.add(queryId));\n entry.dynamicQueryIds.forEach(queryId => dynamicQueryIds.add(queryId));\n });\n dynamicQueryIds.forEach(queryId => staticQueryIds.delete(queryId));\n return { staticQueryIds, dynamicQueryIds };\n}\n/**\n * @param {?} eventAst\n * @param {?} dirAst\n * @return {?}\n */\nfunction elementEventNameAndTarget(eventAst, dirAst) {\n if (eventAst.isAnimation) {\n return {\n name: `@${eventAst.name}.${eventAst.phase}`,\n target: dirAst && dirAst.directive.isComponent ? 'component' : null\n };\n }\n else {\n return eventAst;\n }\n}\n/**\n * @param {?} queryIds\n * @param {?} queryId\n * @param {?} isFirst\n * @return {?}\n */\nfunction calcStaticDynamicQueryFlags(queryIds, queryId, isFirst) {\n let /** @type {?} */ flags = 0 /* None */;\n // Note: We only make queries static that query for a single item.\n // This is because of backwards compatibility with the old view compiler...\n if (isFirst && (queryIds.staticQueryIds.has(queryId) || !queryIds.dynamicQueryIds.has(queryId))) {\n flags |= 268435456 /* StaticQuery */;\n }\n else {\n flags |= 536870912 /* DynamicQuery */;\n }\n return flags;\n}\n/**\n * @param {?} target\n * @param {?} name\n * @return {?}\n */\nexport function elementEventFullName(target, name) {\n return target ? `${target}:${name}` : name;\n}\n//# sourceMappingURL=view_compiler.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { extractMessages } from './extractor_merger';\nimport * as i18n from './i18n_ast';\n/**\n * A container for message extracted from the templates.\n */\nexport class MessageBundle {\n /**\n * @param {?} _htmlParser\n * @param {?} _implicitTags\n * @param {?} _implicitAttrs\n * @param {?=} _locale\n */\n constructor(_htmlParser, _implicitTags, _implicitAttrs, _locale = null) {\n this._htmlParser = _htmlParser;\n this._implicitTags = _implicitTags;\n this._implicitAttrs = _implicitAttrs;\n this._locale = _locale;\n this._messages = [];\n }\n /**\n * @param {?} html\n * @param {?} url\n * @param {?} interpolationConfig\n * @return {?}\n */\n updateFromTemplate(html, url, interpolationConfig) {\n const /** @type {?} */ htmlParserResult = this._htmlParser.parse(html, url, true, interpolationConfig);\n if (htmlParserResult.errors.length) {\n return htmlParserResult.errors;\n }\n const /** @type {?} */ i18nParserResult = extractMessages(htmlParserResult.rootNodes, interpolationConfig, this._implicitTags, this._implicitAttrs);\n if (i18nParserResult.errors.length) {\n return i18nParserResult.errors;\n }\n this._messages.push(...i18nParserResult.messages);\n return [];\n }\n /**\n * @return {?}\n */\n getMessages() { return this._messages; }\n /**\n * @param {?} serializer\n * @param {?=} filterSources\n * @return {?}\n */\n write(serializer, filterSources) {\n const /** @type {?} */ messages = {};\n const /** @type {?} */ mapperVisitor = new MapPlaceholderNames();\n // Deduplicate messages based on their ID\n this._messages.forEach(message => {\n const /** @type {?} */ id = serializer.digest(message);\n if (!messages.hasOwnProperty(id)) {\n messages[id] = message;\n }\n else {\n messages[id].sources.push(...message.sources);\n }\n });\n // Transform placeholder names using the serializer mapping\n const /** @type {?} */ msgList = Object.keys(messages).map(id => {\n const /** @type {?} */ mapper = serializer.createNameMapper(messages[id]);\n const /** @type {?} */ src = messages[id];\n const /** @type {?} */ nodes = mapper ? mapperVisitor.convert(src.nodes, mapper) : src.nodes;\n let /** @type {?} */ transformedMessage = new i18n.Message(nodes, {}, {}, src.meaning, src.description, id);\n transformedMessage.sources = src.sources;\n if (filterSources) {\n transformedMessage.sources.forEach((source) => source.filePath = filterSources(source.filePath));\n }\n return transformedMessage;\n });\n return serializer.write(msgList, this._locale);\n }\n}\nfunction MessageBundle_tsickle_Closure_declarations() {\n /** @type {?} */\n MessageBundle.prototype._messages;\n /** @type {?} */\n MessageBundle.prototype._htmlParser;\n /** @type {?} */\n MessageBundle.prototype._implicitTags;\n /** @type {?} */\n MessageBundle.prototype._implicitAttrs;\n /** @type {?} */\n MessageBundle.prototype._locale;\n}\nclass MapPlaceholderNames extends i18n.CloneVisitor {\n /**\n * @param {?} nodes\n * @param {?} mapper\n * @return {?}\n */\n convert(nodes, mapper) {\n return mapper ? nodes.map(n => n.visit(this, mapper)) : nodes;\n }\n /**\n * @param {?} ph\n * @param {?} mapper\n * @return {?}\n */\n visitTagPlaceholder(ph, mapper) {\n const /** @type {?} */ startName = /** @type {?} */ ((mapper.toPublicName(ph.startName)));\n const /** @type {?} */ closeName = ph.closeName ? /** @type {?} */ ((mapper.toPublicName(ph.closeName))) : ph.closeName;\n const /** @type {?} */ children = ph.children.map(n => n.visit(this, mapper));\n return new i18n.TagPlaceholder(ph.tag, ph.attrs, startName, closeName, children, ph.isVoid, ph.sourceSpan);\n }\n /**\n * @param {?} ph\n * @param {?} mapper\n * @return {?}\n */\n visitPlaceholder(ph, mapper) {\n return new i18n.Placeholder(ph.value, /** @type {?} */ ((mapper.toPublicName(ph.name))), ph.sourceSpan);\n }\n /**\n * @param {?} ph\n * @param {?} mapper\n * @return {?}\n */\n visitIcuPlaceholder(ph, mapper) {\n return new i18n.IcuPlaceholder(ph.value, /** @type {?} */ ((mapper.toPublicName(ph.name))), ph.sourceSpan);\n }\n}\n//# sourceMappingURL=message_bundle.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { areAllEquivalent } from '../output/output_ast';\nimport { TypeScriptEmitter } from '../output/ts_emitter';\nexport class GeneratedFile {\n /**\n * @param {?} srcFileUrl\n * @param {?} genFileUrl\n * @param {?} sourceOrStmts\n */\n constructor(srcFileUrl, genFileUrl, sourceOrStmts) {\n this.srcFileUrl = srcFileUrl;\n this.genFileUrl = genFileUrl;\n if (typeof sourceOrStmts === 'string') {\n this.source = sourceOrStmts;\n this.stmts = null;\n }\n else {\n this.source = null;\n this.stmts = sourceOrStmts;\n }\n }\n /**\n * @param {?} other\n * @return {?}\n */\n isEquivalent(other) {\n if (this.genFileUrl !== other.genFileUrl) {\n return false;\n }\n if (this.source) {\n return this.source === other.source;\n }\n if (other.stmts == null) {\n return false;\n }\n // Note: the constructor guarantees that if this.source is not filled,\n // then this.stmts is.\n return areAllEquivalent(/** @type {?} */ ((this.stmts)), /** @type {?} */ ((other.stmts)));\n }\n}\nfunction GeneratedFile_tsickle_Closure_declarations() {\n /** @type {?} */\n GeneratedFile.prototype.source;\n /** @type {?} */\n GeneratedFile.prototype.stmts;\n /** @type {?} */\n GeneratedFile.prototype.srcFileUrl;\n /** @type {?} */\n GeneratedFile.prototype.genFileUrl;\n}\n/**\n * @param {?} file\n * @param {?=} preamble\n * @return {?}\n */\nexport function toTypeScript(file, preamble = '') {\n if (!file.stmts) {\n throw new Error(`Illegal state: No stmts present on GeneratedFile ${file.genFileUrl}`);\n }\n return new TypeScriptEmitter().emitStatements(file.genFileUrl, file.stmts, preamble);\n}\n//# sourceMappingURL=generated_file.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { tokenReference } from '../compile_metadata';\n/**\n * @record\n */\nexport function LazyRoute() { }\nfunction LazyRoute_tsickle_Closure_declarations() {\n /** @type {?} */\n LazyRoute.prototype.module;\n /** @type {?} */\n LazyRoute.prototype.route;\n /** @type {?} */\n LazyRoute.prototype.referencedModule;\n}\n/**\n * @param {?} moduleMeta\n * @param {?} reflector\n * @return {?}\n */\nexport function listLazyRoutes(moduleMeta, reflector) {\n const /** @type {?} */ allLazyRoutes = [];\n for (const { provider, module } of moduleMeta.transitiveModule.providers) {\n if (tokenReference(provider.token) === reflector.ROUTES) {\n const /** @type {?} */ loadChildren = _collectLoadChildren(provider.useValue);\n for (const /** @type {?} */ route of loadChildren) {\n allLazyRoutes.push(parseLazyRoute(route, reflector, module.reference));\n }\n }\n }\n return allLazyRoutes;\n}\n/**\n * @param {?} routes\n * @param {?=} target\n * @return {?}\n */\nfunction _collectLoadChildren(routes, target = []) {\n if (typeof routes === 'string') {\n target.push(routes);\n }\n else if (Array.isArray(routes)) {\n for (const /** @type {?} */ route of routes) {\n _collectLoadChildren(route, target);\n }\n }\n else if (routes.loadChildren) {\n _collectLoadChildren(routes.loadChildren, target);\n }\n else if (routes.children) {\n _collectLoadChildren(routes.children, target);\n }\n return target;\n}\n/**\n * @param {?} route\n * @param {?} reflector\n * @param {?=} module\n * @return {?}\n */\nexport function parseLazyRoute(route, reflector, module) {\n const [routePath, routeName] = route.split('#');\n const /** @type {?} */ referencedModule = reflector.resolveExternalReference({\n moduleName: routePath,\n name: routeName,\n }, module ? module.filePath : undefined);\n return { route: route, module: module || referencedModule, referencedModule };\n}\n//# sourceMappingURL=lazy_routes.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ValueTransformer, visitValue } from '../util';\nimport { StaticSymbol } from './static_symbol';\nimport { isGeneratedFile, stripSummaryForJitFileSuffix, stripSummaryForJitNameSuffix, summaryForJitFileName, summaryForJitName } from './util';\nexport class ResolvedStaticSymbol {\n /**\n * @param {?} symbol\n * @param {?} metadata\n */\n constructor(symbol, metadata) {\n this.symbol = symbol;\n this.metadata = metadata;\n }\n}\nfunction ResolvedStaticSymbol_tsickle_Closure_declarations() {\n /** @type {?} */\n ResolvedStaticSymbol.prototype.symbol;\n /** @type {?} */\n ResolvedStaticSymbol.prototype.metadata;\n}\n/**\n * The host of the SymbolResolverHost disconnects the implementation from TypeScript / other\n * language\n * services and from underlying file systems.\n * @record\n */\nexport function StaticSymbolResolverHost() { }\nfunction StaticSymbolResolverHost_tsickle_Closure_declarations() {\n /**\n * Return a ModuleMetadata for the given module.\n * Angular CLI will produce this metadata for a module whenever a .d.ts files is\n * produced and the module has exported variables or classes with decorators. Module metadata can\n * also be produced directly from TypeScript sources by using MetadataCollector in tools/metadata.\n *\n * \\@param modulePath is a string identifier for a module as an absolute path.\n * \\@return the metadata for the given module.\n * @type {?}\n */\n StaticSymbolResolverHost.prototype.getMetadataFor;\n /**\n * Converts a module name that is used in an `import` to a file path.\n * I.e.\n * `path/to/containingFile.ts` containing `import {...} from 'module-name'`.\n * @type {?}\n */\n StaticSymbolResolverHost.prototype.moduleNameToFileName;\n}\nconst /** @type {?} */ SUPPORTED_SCHEMA_VERSION = 4;\n/**\n * This class is responsible for loading metadata per symbol,\n * and normalizing references between symbols.\n *\n * Internally, it only uses symbols without members,\n * and deduces the values for symbols with members based\n * on these symbols.\n */\nexport class StaticSymbolResolver {\n /**\n * @param {?} host\n * @param {?} staticSymbolCache\n * @param {?} summaryResolver\n * @param {?=} errorRecorder\n */\n constructor(host, staticSymbolCache, summaryResolver, errorRecorder) {\n this.host = host;\n this.staticSymbolCache = staticSymbolCache;\n this.summaryResolver = summaryResolver;\n this.errorRecorder = errorRecorder;\n this.metadataCache = new Map();\n this.resolvedSymbols = new Map();\n this.resolvedFilePaths = new Set();\n this.importAs = new Map();\n this.symbolResourcePaths = new Map();\n this.symbolFromFile = new Map();\n this.knownFileNameToModuleNames = new Map();\n }\n /**\n * @param {?} staticSymbol\n * @return {?}\n */\n resolveSymbol(staticSymbol) {\n if (staticSymbol.members.length > 0) {\n return /** @type {?} */ ((this._resolveSymbolMembers(staticSymbol)));\n }\n // Note: always ask for a summary first,\n // as we might have read shallow metadata via a .d.ts file\n // for the symbol.\n const /** @type {?} */ resultFromSummary = /** @type {?} */ ((this._resolveSymbolFromSummary(staticSymbol)));\n if (resultFromSummary) {\n return resultFromSummary;\n }\n const /** @type {?} */ resultFromCache = this.resolvedSymbols.get(staticSymbol);\n if (resultFromCache) {\n return resultFromCache;\n }\n // Note: Some users use libraries that were not compiled with ngc, i.e. they don't\n // have summaries, only .d.ts files. So we always need to check both, the summary\n // and metadata.\n this._createSymbolsOf(staticSymbol.filePath);\n return /** @type {?} */ ((this.resolvedSymbols.get(staticSymbol)));\n }\n /**\n * getImportAs produces a symbol that can be used to import the given symbol.\n * The import might be different than the symbol if the symbol is exported from\n * a library with a summary; in which case we want to import the symbol from the\n * ngfactory re-export instead of directly to avoid introducing a direct dependency\n * on an otherwise indirect dependency.\n *\n * @param {?} staticSymbol the symbol for which to generate a import symbol\n * @param {?=} useSummaries\n * @return {?}\n */\n getImportAs(staticSymbol, useSummaries = true) {\n if (staticSymbol.members.length) {\n const /** @type {?} */ baseSymbol = this.getStaticSymbol(staticSymbol.filePath, staticSymbol.name);\n const /** @type {?} */ baseImportAs = this.getImportAs(baseSymbol, useSummaries);\n return baseImportAs ?\n this.getStaticSymbol(baseImportAs.filePath, baseImportAs.name, staticSymbol.members) :\n null;\n }\n const /** @type {?} */ summarizedFileName = stripSummaryForJitFileSuffix(staticSymbol.filePath);\n if (summarizedFileName !== staticSymbol.filePath) {\n const /** @type {?} */ summarizedName = stripSummaryForJitNameSuffix(staticSymbol.name);\n const /** @type {?} */ baseSymbol = this.getStaticSymbol(summarizedFileName, summarizedName, staticSymbol.members);\n const /** @type {?} */ baseImportAs = this.getImportAs(baseSymbol, useSummaries);\n return baseImportAs ?\n this.getStaticSymbol(summaryForJitFileName(baseImportAs.filePath), summaryForJitName(baseImportAs.name), baseSymbol.members) :\n null;\n }\n let /** @type {?} */ result = (useSummaries && this.summaryResolver.getImportAs(staticSymbol)) || null;\n if (!result) {\n result = /** @type {?} */ ((this.importAs.get(staticSymbol)));\n }\n return result;\n }\n /**\n * getResourcePath produces the path to the original location of the symbol and should\n * be used to determine the relative location of resource references recorded in\n * symbol metadata.\n * @param {?} staticSymbol\n * @return {?}\n */\n getResourcePath(staticSymbol) {\n return this.symbolResourcePaths.get(staticSymbol) || staticSymbol.filePath;\n }\n /**\n * getTypeArity returns the number of generic type parameters the given symbol\n * has. If the symbol is not a type the result is null.\n * @param {?} staticSymbol\n * @return {?}\n */\n getTypeArity(staticSymbol) {\n // If the file is a factory/ngsummary file, don't resolve the symbol as doing so would\n // cause the metadata for an factory/ngsummary file to be loaded which doesn't exist.\n // All references to generated classes must include the correct arity whenever\n // generating code.\n if (isGeneratedFile(staticSymbol.filePath)) {\n return null;\n }\n let /** @type {?} */ resolvedSymbol = unwrapResolvedMetadata(this.resolveSymbol(staticSymbol));\n while (resolvedSymbol && resolvedSymbol.metadata instanceof StaticSymbol) {\n resolvedSymbol = unwrapResolvedMetadata(this.resolveSymbol(resolvedSymbol.metadata));\n }\n return (resolvedSymbol && resolvedSymbol.metadata && resolvedSymbol.metadata.arity) || null;\n }\n /**\n * @param {?} filePath\n * @return {?}\n */\n getKnownModuleName(filePath) {\n return this.knownFileNameToModuleNames.get(filePath) || null;\n }\n /**\n * @param {?} sourceSymbol\n * @param {?} targetSymbol\n * @return {?}\n */\n recordImportAs(sourceSymbol, targetSymbol) {\n sourceSymbol.assertNoMembers();\n targetSymbol.assertNoMembers();\n this.importAs.set(sourceSymbol, targetSymbol);\n }\n /**\n * @param {?} fileName\n * @param {?} moduleName\n * @return {?}\n */\n recordModuleNameForFileName(fileName, moduleName) {\n this.knownFileNameToModuleNames.set(fileName, moduleName);\n }\n /**\n * Invalidate all information derived from the given file.\n *\n * @param {?} fileName the file to invalidate\n * @return {?}\n */\n invalidateFile(fileName) {\n this.metadataCache.delete(fileName);\n this.resolvedFilePaths.delete(fileName);\n const /** @type {?} */ symbols = this.symbolFromFile.get(fileName);\n if (symbols) {\n this.symbolFromFile.delete(fileName);\n for (const /** @type {?} */ symbol of symbols) {\n this.resolvedSymbols.delete(symbol);\n this.importAs.delete(symbol);\n this.symbolResourcePaths.delete(symbol);\n }\n }\n }\n /**\n * @template T\n * @param {?} cb\n * @return {?}\n */\n ignoreErrorsFor(cb) {\n const /** @type {?} */ recorder = this.errorRecorder;\n this.errorRecorder = () => { };\n try {\n return cb();\n }\n finally {\n this.errorRecorder = recorder;\n }\n }\n /**\n * @param {?} staticSymbol\n * @return {?}\n */\n _resolveSymbolMembers(staticSymbol) {\n const /** @type {?} */ members = staticSymbol.members;\n const /** @type {?} */ baseResolvedSymbol = this.resolveSymbol(this.getStaticSymbol(staticSymbol.filePath, staticSymbol.name));\n if (!baseResolvedSymbol) {\n return null;\n }\n let /** @type {?} */ baseMetadata = unwrapResolvedMetadata(baseResolvedSymbol.metadata);\n if (baseMetadata instanceof StaticSymbol) {\n return new ResolvedStaticSymbol(staticSymbol, this.getStaticSymbol(baseMetadata.filePath, baseMetadata.name, members));\n }\n else if (baseMetadata && baseMetadata.__symbolic === 'class') {\n if (baseMetadata.statics && members.length === 1) {\n return new ResolvedStaticSymbol(staticSymbol, baseMetadata.statics[members[0]]);\n }\n }\n else {\n let /** @type {?} */ value = baseMetadata;\n for (let /** @type {?} */ i = 0; i < members.length && value; i++) {\n value = value[members[i]];\n }\n return new ResolvedStaticSymbol(staticSymbol, value);\n }\n return null;\n }\n /**\n * @param {?} staticSymbol\n * @return {?}\n */\n _resolveSymbolFromSummary(staticSymbol) {\n const /** @type {?} */ summary = this.summaryResolver.resolveSummary(staticSymbol);\n return summary ? new ResolvedStaticSymbol(staticSymbol, summary.metadata) : null;\n }\n /**\n * getStaticSymbol produces a Type whose metadata is known but whose implementation is not loaded.\n * All types passed to the StaticResolver should be pseudo-types returned by this method.\n *\n * @param {?} declarationFile the absolute path of the file where the symbol is declared\n * @param {?} name the name of the type.\n * @param {?=} members a symbol for a static member of the named type\n * @return {?}\n */\n getStaticSymbol(declarationFile, name, members) {\n return this.staticSymbolCache.get(declarationFile, name, members);\n }\n /**\n * hasDecorators checks a file's metadata for the presense of decorators without evalutating the\n * metadata.\n *\n * @param {?} filePath the absolute path to examine for decorators.\n * @return {?} true if any class in the file has a decorator.\n */\n hasDecorators(filePath) {\n const /** @type {?} */ metadata = this.getModuleMetadata(filePath);\n if (metadata['metadata']) {\n return Object.keys(metadata['metadata']).some((metadataKey) => {\n const /** @type {?} */ entry = metadata['metadata'][metadataKey];\n return entry && entry.__symbolic === 'class' && entry.decorators;\n });\n }\n return false;\n }\n /**\n * @param {?} filePath\n * @return {?}\n */\n getSymbolsOf(filePath) {\n const /** @type {?} */ summarySymbols = this.summaryResolver.getSymbolsOf(filePath);\n if (summarySymbols) {\n return summarySymbols;\n }\n // Note: Some users use libraries that were not compiled with ngc, i.e. they don't\n // have summaries, only .d.ts files, but `summaryResolver.isLibraryFile` returns true.\n this._createSymbolsOf(filePath);\n const /** @type {?} */ metadataSymbols = [];\n this.resolvedSymbols.forEach((resolvedSymbol) => {\n if (resolvedSymbol.symbol.filePath === filePath) {\n metadataSymbols.push(resolvedSymbol.symbol);\n }\n });\n return metadataSymbols;\n }\n /**\n * @param {?} filePath\n * @return {?}\n */\n _createSymbolsOf(filePath) {\n if (this.resolvedFilePaths.has(filePath)) {\n return;\n }\n this.resolvedFilePaths.add(filePath);\n const /** @type {?} */ resolvedSymbols = [];\n const /** @type {?} */ metadata = this.getModuleMetadata(filePath);\n if (metadata['importAs']) {\n // Index bundle indices should use the importAs module name defined\n // in the bundle.\n this.knownFileNameToModuleNames.set(filePath, metadata['importAs']);\n }\n // handle the symbols in one of the re-export location\n if (metadata['exports']) {\n for (const /** @type {?} */ moduleExport of metadata['exports']) {\n // handle the symbols in the list of explicitly re-exported symbols.\n if (moduleExport.export) {\n moduleExport.export.forEach((exportSymbol) => {\n let /** @type {?} */ symbolName;\n if (typeof exportSymbol === 'string') {\n symbolName = exportSymbol;\n }\n else {\n symbolName = exportSymbol.as;\n }\n symbolName = unescapeIdentifier(symbolName);\n let /** @type {?} */ symName = symbolName;\n if (typeof exportSymbol !== 'string') {\n symName = unescapeIdentifier(exportSymbol.name);\n }\n const /** @type {?} */ resolvedModule = this.resolveModule(moduleExport.from, filePath);\n if (resolvedModule) {\n const /** @type {?} */ targetSymbol = this.getStaticSymbol(resolvedModule, symName);\n const /** @type {?} */ sourceSymbol = this.getStaticSymbol(filePath, symbolName);\n resolvedSymbols.push(this.createExport(sourceSymbol, targetSymbol));\n }\n });\n }\n else {\n // handle the symbols via export * directives.\n const /** @type {?} */ resolvedModule = this.resolveModule(moduleExport.from, filePath);\n if (resolvedModule) {\n const /** @type {?} */ nestedExports = this.getSymbolsOf(resolvedModule);\n nestedExports.forEach((targetSymbol) => {\n const /** @type {?} */ sourceSymbol = this.getStaticSymbol(filePath, targetSymbol.name);\n resolvedSymbols.push(this.createExport(sourceSymbol, targetSymbol));\n });\n }\n }\n }\n }\n // handle the actual metadata. Has to be after the exports\n // as there migth be collisions in the names, and we want the symbols\n // of the current module to win ofter reexports.\n if (metadata['metadata']) {\n // handle direct declarations of the symbol\n const /** @type {?} */ topLevelSymbolNames = new Set(Object.keys(metadata['metadata']).map(unescapeIdentifier));\n const /** @type {?} */ origins = metadata['origins'] || {};\n Object.keys(metadata['metadata']).forEach((metadataKey) => {\n const /** @type {?} */ symbolMeta = metadata['metadata'][metadataKey];\n const /** @type {?} */ name = unescapeIdentifier(metadataKey);\n const /** @type {?} */ symbol = this.getStaticSymbol(filePath, name);\n const /** @type {?} */ origin = origins.hasOwnProperty(metadataKey) && origins[metadataKey];\n if (origin) {\n // If the symbol is from a bundled index, use the declaration location of the\n // symbol so relative references (such as './my.html') will be calculated\n // correctly.\n const /** @type {?} */ originFilePath = this.resolveModule(origin, filePath);\n if (!originFilePath) {\n this.reportError(new Error(`Couldn't resolve original symbol for ${origin} from ${filePath}`));\n }\n else {\n this.symbolResourcePaths.set(symbol, originFilePath);\n }\n }\n resolvedSymbols.push(this.createResolvedSymbol(symbol, filePath, topLevelSymbolNames, symbolMeta));\n });\n }\n resolvedSymbols.forEach((resolvedSymbol) => this.resolvedSymbols.set(resolvedSymbol.symbol, resolvedSymbol));\n this.symbolFromFile.set(filePath, resolvedSymbols.map(resolvedSymbol => resolvedSymbol.symbol));\n }\n /**\n * @param {?} sourceSymbol\n * @param {?} topLevelPath\n * @param {?} topLevelSymbolNames\n * @param {?} metadata\n * @return {?}\n */\n createResolvedSymbol(sourceSymbol, topLevelPath, topLevelSymbolNames, metadata) {\n // For classes that don't have Angular summaries / metadata,\n // we only keep their arity, but nothing else\n // (e.g. their constructor parameters).\n // We do this to prevent introducing deep imports\n // as we didn't generate .ngfactory.ts files with proper reexports.\n if (this.summaryResolver.isLibraryFile(sourceSymbol.filePath) && metadata &&\n metadata['__symbolic'] === 'class') {\n const /** @type {?} */ transformedMeta = { __symbolic: 'class', arity: metadata.arity };\n return new ResolvedStaticSymbol(sourceSymbol, transformedMeta);\n }\n let /** @type {?} */ _originalFileMemo;\n const /** @type {?} */ getOriginalName = () => {\n if (!_originalFileMemo) {\n // Guess what hte original file name is from the reference. If it has a `.d.ts` extension\n // replace it with `.ts`. If it already has `.ts` just leave it in place. If it doesn't have\n // .ts or .d.ts, append `.ts'. Also, if it is in `node_modules`, trim the `node_module`\n // location as it is not important to finding the file.\n _originalFileMemo =\n topLevelPath.replace(/((\\.ts)|(\\.d\\.ts)|)$/, '.ts').replace(/^.*node_modules[/\\\\]/, '');\n }\n return _originalFileMemo;\n };\n const /** @type {?} */ self = this;\n class ReferenceTransformer extends ValueTransformer {\n /**\n * @param {?} map\n * @param {?} functionParams\n * @return {?}\n */\n visitStringMap(map, functionParams) {\n const /** @type {?} */ symbolic = map['__symbolic'];\n if (symbolic === 'function') {\n const /** @type {?} */ oldLen = functionParams.length;\n functionParams.push(...(map['parameters'] || []));\n const /** @type {?} */ result = super.visitStringMap(map, functionParams);\n functionParams.length = oldLen;\n return result;\n }\n else if (symbolic === 'reference') {\n const /** @type {?} */ module = map['module'];\n const /** @type {?} */ name = map['name'] ? unescapeIdentifier(map['name']) : map['name'];\n if (!name) {\n return null;\n }\n let /** @type {?} */ filePath;\n if (module) {\n filePath = /** @type {?} */ ((self.resolveModule(module, sourceSymbol.filePath)));\n if (!filePath) {\n return {\n __symbolic: 'error',\n message: `Could not resolve ${module} relative to ${sourceSymbol.filePath}.`,\n line: map[\"line\"],\n character: map[\"character\"],\n fileName: getOriginalName()\n };\n }\n return {\n __symbolic: 'resolved',\n symbol: self.getStaticSymbol(filePath, name),\n line: map[\"line\"],\n character: map[\"character\"],\n fileName: getOriginalName()\n };\n }\n else if (functionParams.indexOf(name) >= 0) {\n // reference to a function parameter\n return { __symbolic: 'reference', name: name };\n }\n else {\n if (topLevelSymbolNames.has(name)) {\n return self.getStaticSymbol(topLevelPath, name);\n }\n // ambient value\n null;\n }\n }\n else if (symbolic === 'error') {\n return Object.assign({}, map, { fileName: getOriginalName() });\n }\n else {\n return super.visitStringMap(map, functionParams);\n }\n }\n }\n const /** @type {?} */ transformedMeta = visitValue(metadata, new ReferenceTransformer(), []);\n let /** @type {?} */ unwrappedTransformedMeta = unwrapResolvedMetadata(transformedMeta);\n if (unwrappedTransformedMeta instanceof StaticSymbol) {\n return this.createExport(sourceSymbol, unwrappedTransformedMeta);\n }\n return new ResolvedStaticSymbol(sourceSymbol, transformedMeta);\n }\n /**\n * @param {?} sourceSymbol\n * @param {?} targetSymbol\n * @return {?}\n */\n createExport(sourceSymbol, targetSymbol) {\n sourceSymbol.assertNoMembers();\n targetSymbol.assertNoMembers();\n if (this.summaryResolver.isLibraryFile(sourceSymbol.filePath) &&\n this.summaryResolver.isLibraryFile(targetSymbol.filePath)) {\n // This case is for an ng library importing symbols from a plain ts library\n // transitively.\n // Note: We rely on the fact that we discover symbols in the direction\n // from source files to library files\n this.importAs.set(targetSymbol, this.getImportAs(sourceSymbol) || sourceSymbol);\n }\n return new ResolvedStaticSymbol(sourceSymbol, targetSymbol);\n }\n /**\n * @param {?} error\n * @param {?=} context\n * @param {?=} path\n * @return {?}\n */\n reportError(error, context, path) {\n if (this.errorRecorder) {\n this.errorRecorder(error, (context && context.filePath) || path);\n }\n else {\n throw error;\n }\n }\n /**\n * @param {?} module an absolute path to a module file.\n * @return {?}\n */\n getModuleMetadata(module) {\n let /** @type {?} */ moduleMetadata = this.metadataCache.get(module);\n if (!moduleMetadata) {\n const /** @type {?} */ moduleMetadatas = this.host.getMetadataFor(module);\n if (moduleMetadatas) {\n let /** @type {?} */ maxVersion = -1;\n moduleMetadatas.forEach((md) => {\n if (md && md['version'] > maxVersion) {\n maxVersion = md['version'];\n moduleMetadata = md;\n }\n });\n }\n if (!moduleMetadata) {\n moduleMetadata =\n { __symbolic: 'module', version: SUPPORTED_SCHEMA_VERSION, module: module, metadata: {} };\n }\n if (moduleMetadata['version'] != SUPPORTED_SCHEMA_VERSION) {\n const /** @type {?} */ errorMessage = moduleMetadata['version'] == 2 ?\n `Unsupported metadata version ${moduleMetadata['version']} for module ${module}. This module should be compiled with a newer version of ngc` :\n `Metadata version mismatch for module ${module}, found version ${moduleMetadata['version']}, expected ${SUPPORTED_SCHEMA_VERSION}`;\n this.reportError(new Error(errorMessage));\n }\n this.metadataCache.set(module, moduleMetadata);\n }\n return moduleMetadata;\n }\n /**\n * @param {?} module\n * @param {?} symbolName\n * @param {?=} containingFile\n * @return {?}\n */\n getSymbolByModule(module, symbolName, containingFile) {\n const /** @type {?} */ filePath = this.resolveModule(module, containingFile);\n if (!filePath) {\n this.reportError(new Error(`Could not resolve module ${module}${containingFile ? ' relative to ' +\n containingFile : ''}`));\n return this.getStaticSymbol(`ERROR:${module}`, symbolName);\n }\n return this.getStaticSymbol(filePath, symbolName);\n }\n /**\n * @param {?} module\n * @param {?=} containingFile\n * @return {?}\n */\n resolveModule(module, containingFile) {\n try {\n return this.host.moduleNameToFileName(module, containingFile);\n }\n catch (/** @type {?} */ e) {\n console.error(`Could not resolve module '${module}' relative to file ${containingFile}`);\n this.reportError(e, undefined, containingFile);\n }\n return null;\n }\n}\nfunction StaticSymbolResolver_tsickle_Closure_declarations() {\n /** @type {?} */\n StaticSymbolResolver.prototype.metadataCache;\n /** @type {?} */\n StaticSymbolResolver.prototype.resolvedSymbols;\n /** @type {?} */\n StaticSymbolResolver.prototype.resolvedFilePaths;\n /** @type {?} */\n StaticSymbolResolver.prototype.importAs;\n /** @type {?} */\n StaticSymbolResolver.prototype.symbolResourcePaths;\n /** @type {?} */\n StaticSymbolResolver.prototype.symbolFromFile;\n /** @type {?} */\n StaticSymbolResolver.prototype.knownFileNameToModuleNames;\n /** @type {?} */\n StaticSymbolResolver.prototype.host;\n /** @type {?} */\n StaticSymbolResolver.prototype.staticSymbolCache;\n /** @type {?} */\n StaticSymbolResolver.prototype.summaryResolver;\n /** @type {?} */\n StaticSymbolResolver.prototype.errorRecorder;\n}\n/**\n * @param {?} identifier\n * @return {?}\n */\nexport function unescapeIdentifier(identifier) {\n return identifier.startsWith('___') ? identifier.substr(1) : identifier;\n}\n/**\n * @param {?} metadata\n * @return {?}\n */\nexport function unwrapResolvedMetadata(metadata) {\n if (metadata && metadata.__symbolic === 'resolved') {\n return metadata.symbol;\n }\n return metadata;\n}\n//# sourceMappingURL=static_symbol_resolver.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nimport { CompileNgModuleMetadata, CompileSummaryKind } from '../compile_metadata';\nimport * as o from '../output/output_ast';\nimport { ValueTransformer, visitValue } from '../util';\nimport { StaticSymbol } from './static_symbol';\nimport { unwrapResolvedMetadata } from './static_symbol_resolver';\nimport { isLoweredSymbol, ngfactoryFilePath, summaryForJitFileName, summaryForJitName } from './util';\n/**\n * @param {?} srcFileName\n * @param {?} forJitCtx\n * @param {?} summaryResolver\n * @param {?} symbolResolver\n * @param {?} symbols\n * @param {?} types\n * @return {?}\n */\nexport function serializeSummaries(srcFileName, forJitCtx, summaryResolver, symbolResolver, symbols, types) {\n const /** @type {?} */ toJsonSerializer = new ToJsonSerializer(symbolResolver, summaryResolver, srcFileName);\n // for symbols, we use everything except for the class metadata itself\n // (we keep the statics though), as the class metadata is contained in the\n // CompileTypeSummary.\n symbols.forEach((resolvedSymbol) => toJsonSerializer.addSummary({ symbol: resolvedSymbol.symbol, metadata: resolvedSymbol.metadata }));\n // Add type summaries.\n types.forEach(({ summary, metadata }) => {\n toJsonSerializer.addSummary({ symbol: summary.type.reference, metadata: undefined, type: summary });\n });\n const { json, exportAs } = toJsonSerializer.serialize();\n if (forJitCtx) {\n const /** @type {?} */ forJitSerializer = new ForJitSerializer(forJitCtx, symbolResolver, summaryResolver);\n types.forEach(({ summary, metadata }) => { forJitSerializer.addSourceType(summary, metadata); });\n toJsonSerializer.unprocessedSymbolSummariesBySymbol.forEach((summary) => {\n if (summaryResolver.isLibraryFile(summary.symbol.filePath) && summary.type) {\n forJitSerializer.addLibType(summary.type);\n }\n });\n forJitSerializer.serialize(exportAs);\n }\n return { json, exportAs };\n}\n/**\n * @param {?} symbolCache\n * @param {?} summaryResolver\n * @param {?} libraryFileName\n * @param {?} json\n * @return {?}\n */\nexport function deserializeSummaries(symbolCache, summaryResolver, libraryFileName, json) {\n const /** @type {?} */ deserializer = new FromJsonDeserializer(symbolCache, summaryResolver);\n return deserializer.deserialize(libraryFileName, json);\n}\n/**\n * @param {?} outputCtx\n * @param {?} reference\n * @return {?}\n */\nexport function createForJitStub(outputCtx, reference) {\n return createSummaryForJitFunction(outputCtx, reference, o.NULL_EXPR);\n}\n/**\n * @param {?} outputCtx\n * @param {?} reference\n * @param {?} value\n * @return {?}\n */\nfunction createSummaryForJitFunction(outputCtx, reference, value) {\n const /** @type {?} */ fnName = summaryForJitName(reference.name);\n outputCtx.statements.push(o.fn([], [new o.ReturnStatement(value)], new o.ArrayType(o.DYNAMIC_TYPE)).toDeclStmt(fnName, [\n o.StmtModifier.Final, o.StmtModifier.Exported\n ]));\n}\n/** @enum {number} */\nconst SerializationFlags = {\n None: 0,\n ResolveValue: 1,\n};\nclass ToJsonSerializer extends ValueTransformer {\n /**\n * @param {?} symbolResolver\n * @param {?} summaryResolver\n * @param {?} srcFileName\n */\n constructor(symbolResolver, summaryResolver, srcFileName) {\n super();\n this.symbolResolver = symbolResolver;\n this.summaryResolver = summaryResolver;\n this.srcFileName = srcFileName;\n this.symbols = [];\n this.indexBySymbol = new Map();\n this.reexportedBy = new Map();\n this.processedSummaryBySymbol = new Map();\n this.processedSummaries = [];\n this.unprocessedSymbolSummariesBySymbol = new Map();\n this.moduleName = symbolResolver.getKnownModuleName(srcFileName);\n }\n /**\n * @param {?} summary\n * @return {?}\n */\n addSummary(summary) {\n let /** @type {?} */ unprocessedSummary = this.unprocessedSymbolSummariesBySymbol.get(summary.symbol);\n let /** @type {?} */ processedSummary = this.processedSummaryBySymbol.get(summary.symbol);\n if (!unprocessedSummary) {\n unprocessedSummary = { symbol: summary.symbol, metadata: undefined };\n this.unprocessedSymbolSummariesBySymbol.set(summary.symbol, unprocessedSummary);\n processedSummary = { symbol: this.processValue(summary.symbol, 0 /* None */) };\n this.processedSummaries.push(processedSummary);\n this.processedSummaryBySymbol.set(summary.symbol, processedSummary);\n }\n if (!unprocessedSummary.metadata && summary.metadata) {\n let /** @type {?} */ metadata = summary.metadata || {};\n if (metadata.__symbolic === 'class') {\n // For classes, we keep everything except their class decorators.\n // We need to keep e.g. the ctor args, method names, method decorators\n // so that the class can be extended in another compilation unit.\n // We don't keep the class decorators as\n // 1) they refer to data\n // that should not cause a rebuild of downstream compilation units\n // (e.g. inline templates of @Component, or @NgModule.declarations)\n // 2) their data is already captured in TypeSummaries, e.g. DirectiveSummary.\n const /** @type {?} */ clone = {};\n Object.keys(metadata).forEach((propName) => {\n if (propName !== 'decorators') {\n clone[propName] = metadata[propName];\n }\n });\n metadata = clone;\n }\n else if (isCall(metadata)) {\n if (!isFunctionCall(metadata) && !isMethodCallOnVariable(metadata)) {\n // Don't store complex calls as we won't be able to simplify them anyways later on.\n metadata = {\n __symbolic: 'error',\n message: 'Complex function calls are not supported.',\n };\n }\n }\n // Note: We need to keep storing ctor calls for e.g.\n // `export const x = new InjectionToken(...)`\n unprocessedSummary.metadata = metadata;\n processedSummary.metadata = this.processValue(metadata, 1 /* ResolveValue */);\n if (metadata instanceof StaticSymbol &&\n this.summaryResolver.isLibraryFile(metadata.filePath)) {\n const /** @type {?} */ declarationSymbol = this.symbols[/** @type {?} */ ((this.indexBySymbol.get(metadata)))];\n if (!isLoweredSymbol(declarationSymbol.name)) {\n // Note: symbols that were introduced during codegen in the user file can have a reexport\n // if a user used `export *`. However, we can't rely on this as tsickle will change\n // `export *` into named exports, using only the information from the typechecker.\n // As we introduce the new symbols after typecheck, Tsickle does not know about them,\n // and omits them when expanding `export *`.\n // So we have to keep reexporting these symbols manually via .ngfactory files.\n this.reexportedBy.set(declarationSymbol, summary.symbol);\n }\n }\n }\n if (!unprocessedSummary.type && summary.type) {\n unprocessedSummary.type = summary.type;\n // Note: We don't add the summaries of all referenced symbols as for the ResolvedSymbols,\n // as the type summaries already contain the transitive data that they require\n // (in a minimal way).\n processedSummary.type = this.processValue(summary.type, 0 /* None */);\n // except for reexported directives / pipes, so we need to store\n // their summaries explicitly.\n if (summary.type.summaryKind === CompileSummaryKind.NgModule) {\n const /** @type {?} */ ngModuleSummary = /** @type {?} */ (summary.type);\n ngModuleSummary.exportedDirectives.concat(ngModuleSummary.exportedPipes).forEach((id) => {\n const /** @type {?} */ symbol = id.reference;\n if (this.summaryResolver.isLibraryFile(symbol.filePath) &&\n !this.unprocessedSymbolSummariesBySymbol.has(symbol)) {\n const /** @type {?} */ summary = this.summaryResolver.resolveSummary(symbol);\n if (summary) {\n this.addSummary(summary);\n }\n }\n });\n }\n }\n }\n /**\n * @return {?}\n */\n serialize() {\n const /** @type {?} */ exportAs = [];\n const /** @type {?} */ json = JSON.stringify({\n moduleName: this.moduleName,\n summaries: this.processedSummaries,\n symbols: this.symbols.map((symbol, index) => {\n symbol.assertNoMembers();\n let /** @type {?} */ importAs = /** @type {?} */ ((undefined));\n if (this.summaryResolver.isLibraryFile(symbol.filePath)) {\n const /** @type {?} */ reexportSymbol = this.reexportedBy.get(symbol);\n if (reexportSymbol) {\n importAs = /** @type {?} */ ((this.indexBySymbol.get(reexportSymbol)));\n }\n else {\n const /** @type {?} */ summary = this.unprocessedSymbolSummariesBySymbol.get(symbol);\n if (!summary || !summary.metadata || summary.metadata.__symbolic !== 'interface') {\n importAs = `${symbol.name}_${index}`;\n exportAs.push({ symbol, exportAs: importAs });\n }\n }\n }\n return {\n __symbol: index,\n name: symbol.name,\n filePath: this.summaryResolver.toSummaryFileName(symbol.filePath, this.srcFileName),\n importAs: importAs\n };\n })\n });\n return { json, exportAs };\n }\n /**\n * @param {?} value\n * @param {?} flags\n * @return {?}\n */\n processValue(value, flags) {\n return visitValue(value, this, flags);\n }\n /**\n * @param {?} value\n * @param {?} context\n * @return {?}\n */\n visitOther(value, context) {\n if (value instanceof StaticSymbol) {\n let /** @type {?} */ baseSymbol = this.symbolResolver.getStaticSymbol(value.filePath, value.name);\n const /** @type {?} */ index = this.visitStaticSymbol(baseSymbol, context);\n return { __symbol: index, members: value.members };\n }\n }\n /**\n * Returns null if the options.resolveValue is true, and the summary for the symbol\n * resolved to a type or could not be resolved.\n * @param {?} baseSymbol\n * @param {?} flags\n * @return {?}\n */\n visitStaticSymbol(baseSymbol, flags) {\n let /** @type {?} */ index = this.indexBySymbol.get(baseSymbol);\n let /** @type {?} */ summary = null;\n if (flags & 1 /* ResolveValue */ &&\n this.summaryResolver.isLibraryFile(baseSymbol.filePath)) {\n if (this.unprocessedSymbolSummariesBySymbol.has(baseSymbol)) {\n // the summary for this symbol was already added\n // -> nothing to do.\n return /** @type {?} */ ((index));\n }\n summary = this.loadSummary(baseSymbol);\n if (summary && summary.metadata instanceof StaticSymbol) {\n // The summary is a reexport\n index = this.visitStaticSymbol(summary.metadata, flags);\n // reset the summary as it is just a reexport, so we don't want to store it.\n summary = null;\n }\n }\n else if (index != null) {\n // Note: == on purpose to compare with undefined!\n // No summary and the symbol is already added -> nothing to do.\n return index;\n }\n // Note: == on purpose to compare with undefined!\n if (index == null) {\n index = this.symbols.length;\n this.symbols.push(baseSymbol);\n }\n this.indexBySymbol.set(baseSymbol, index);\n if (summary) {\n this.addSummary(summary);\n }\n return index;\n }\n /**\n * @param {?} symbol\n * @return {?}\n */\n loadSummary(symbol) {\n let /** @type {?} */ summary = this.summaryResolver.resolveSummary(symbol);\n if (!summary) {\n // some symbols might originate from a plain typescript library\n // that just exported .d.ts and .metadata.json files, i.e. where no summary\n // files were created.\n const /** @type {?} */ resolvedSymbol = this.symbolResolver.resolveSymbol(symbol);\n if (resolvedSymbol) {\n summary = { symbol: resolvedSymbol.symbol, metadata: resolvedSymbol.metadata };\n }\n }\n return summary;\n }\n}\nfunction ToJsonSerializer_tsickle_Closure_declarations() {\n /** @type {?} */\n ToJsonSerializer.prototype.symbols;\n /** @type {?} */\n ToJsonSerializer.prototype.indexBySymbol;\n /** @type {?} */\n ToJsonSerializer.prototype.reexportedBy;\n /** @type {?} */\n ToJsonSerializer.prototype.processedSummaryBySymbol;\n /** @type {?} */\n ToJsonSerializer.prototype.processedSummaries;\n /** @type {?} */\n ToJsonSerializer.prototype.moduleName;\n /** @type {?} */\n ToJsonSerializer.prototype.unprocessedSymbolSummariesBySymbol;\n /** @type {?} */\n ToJsonSerializer.prototype.symbolResolver;\n /** @type {?} */\n ToJsonSerializer.prototype.summaryResolver;\n /** @type {?} */\n ToJsonSerializer.prototype.srcFileName;\n}\nclass ForJitSerializer {\n /**\n * @param {?} outputCtx\n * @param {?} symbolResolver\n * @param {?} summaryResolver\n */\n constructor(outputCtx, symbolResolver, summaryResolver) {\n this.outputCtx = outputCtx;\n this.symbolResolver = symbolResolver;\n this.summaryResolver = summaryResolver;\n this.data = [];\n }\n /**\n * @param {?} summary\n * @param {?} metadata\n * @return {?}\n */\n addSourceType(summary, metadata) {\n this.data.push({ summary, metadata, isLibrary: false });\n }\n /**\n * @param {?} summary\n * @return {?}\n */\n addLibType(summary) {\n this.data.push({ summary, metadata: null, isLibrary: true });\n }\n /**\n * @param {?} exportAsArr\n * @return {?}\n */\n serialize(exportAsArr) {\n const /** @type {?} */ exportAsBySymbol = new Map();\n for (const { symbol, exportAs } of exportAsArr) {\n exportAsBySymbol.set(symbol, exportAs);\n }\n const /** @type {?} */ ngModuleSymbols = new Set();\n for (const { summary, metadata, isLibrary } of this.data) {\n if (summary.summaryKind === CompileSummaryKind.NgModule) {\n // collect the symbols that refer to NgModule classes.\n // Note: we can't just rely on `summary.type.summaryKind` to determine this as\n // we don't add the summaries of all referenced symbols when we serialize type summaries.\n // See serializeSummaries for details.\n ngModuleSymbols.add(summary.type.reference);\n const /** @type {?} */ modSummary = /** @type {?} */ (summary);\n for (const /** @type {?} */ mod of modSummary.modules) {\n ngModuleSymbols.add(mod.reference);\n }\n }\n if (!isLibrary) {\n const /** @type {?} */ fnName = summaryForJitName(summary.type.reference.name);\n createSummaryForJitFunction(this.outputCtx, summary.type.reference, this.serializeSummaryWithDeps(summary, /** @type {?} */ ((metadata))));\n }\n }\n ngModuleSymbols.forEach((ngModuleSymbol) => {\n if (this.summaryResolver.isLibraryFile(ngModuleSymbol.filePath)) {\n let /** @type {?} */ exportAs = exportAsBySymbol.get(ngModuleSymbol) || ngModuleSymbol.name;\n const /** @type {?} */ jitExportAsName = summaryForJitName(exportAs);\n this.outputCtx.statements.push(o.variable(jitExportAsName)\n .set(this.serializeSummaryRef(ngModuleSymbol))\n .toDeclStmt(null, [o.StmtModifier.Exported]));\n }\n });\n }\n /**\n * @param {?} summary\n * @param {?} metadata\n * @return {?}\n */\n serializeSummaryWithDeps(summary, metadata) {\n const /** @type {?} */ expressions = [this.serializeSummary(summary)];\n let /** @type {?} */ providers = [];\n if (metadata instanceof CompileNgModuleMetadata) {\n expressions.push(...\n // For directives / pipes, we only add the declared ones,\n // and rely on transitively importing NgModules to get the transitive\n // summaries.\n metadata.declaredDirectives.concat(metadata.declaredPipes)\n .map(type => type.reference)\n .concat(metadata.transitiveModule.modules.map(type => type.reference)\n .filter(ref => ref !== metadata.type.reference))\n .map((ref) => this.serializeSummaryRef(ref)));\n // Note: We don't use `NgModuleSummary.providers`, as that one is transitive,\n // and we already have transitive modules.\n providers = metadata.providers;\n }\n else if (summary.summaryKind === CompileSummaryKind.Directive) {\n const /** @type {?} */ dirSummary = /** @type {?} */ (summary);\n providers = dirSummary.providers.concat(dirSummary.viewProviders);\n }\n // Note: We can't just refer to the `ngsummary.ts` files for `useClass` providers (as we do for\n // declaredDirectives / declaredPipes), as we allow\n // providers without ctor arguments to skip the `@Injectable` decorator,\n // i.e. we didn't generate .ngsummary.ts files for these.\n expressions.push(...providers.filter(provider => !!provider.useClass).map(provider => this.serializeSummary(/** @type {?} */ ({\n summaryKind: CompileSummaryKind.Injectable, type: provider.useClass\n }))));\n return o.literalArr(expressions);\n }\n /**\n * @param {?} typeSymbol\n * @return {?}\n */\n serializeSummaryRef(typeSymbol) {\n const /** @type {?} */ jitImportedSymbol = this.symbolResolver.getStaticSymbol(summaryForJitFileName(typeSymbol.filePath), summaryForJitName(typeSymbol.name));\n return this.outputCtx.importExpr(jitImportedSymbol);\n }\n /**\n * @param {?} data\n * @return {?}\n */\n serializeSummary(data) {\n const /** @type {?} */ outputCtx = this.outputCtx;\n class Transformer {\n /**\n * @param {?} arr\n * @param {?} context\n * @return {?}\n */\n visitArray(arr, context) {\n return o.literalArr(arr.map(entry => visitValue(entry, this, context)));\n }\n /**\n * @param {?} map\n * @param {?} context\n * @return {?}\n */\n visitStringMap(map, context) {\n return new o.LiteralMapExpr(Object.keys(map).map((key) => new o.LiteralMapEntry(key, visitValue(map[key], this, context), false)));\n }\n /**\n * @param {?} value\n * @param {?} context\n * @return {?}\n */\n visitPrimitive(value, context) { return o.literal(value); }\n /**\n * @param {?} value\n * @param {?} context\n * @return {?}\n */\n visitOther(value, context) {\n if (value instanceof StaticSymbol) {\n return outputCtx.importExpr(value);\n }\n else {\n throw new Error(`Illegal State: Encountered value ${value}`);\n }\n }\n }\n return visitValue(data, new Transformer(), null);\n }\n}\nfunction ForJitSerializer_tsickle_Closure_declarations() {\n /** @type {?} */\n ForJitSerializer.prototype.data;\n /** @type {?} */\n ForJitSerializer.prototype.outputCtx;\n /** @type {?} */\n ForJitSerializer.prototype.symbolResolver;\n /** @type {?} */\n ForJitSerializer.prototype.summaryResolver;\n}\nclass FromJsonDeserializer extends ValueTransformer {\n /**\n * @param {?} symbolCache\n * @param {?} summaryResolver\n */\n constructor(symbolCache, summaryResolver) {\n super();\n this.symbolCache = symbolCache;\n this.summaryResolver = summaryResolver;\n }\n /**\n * @param {?} libraryFileName\n * @param {?} json\n * @return {?}\n */\n deserialize(libraryFileName, json) {\n const /** @type {?} */ data = JSON.parse(json);\n const /** @type {?} */ allImportAs = [];\n this.symbols = data.symbols.map((serializedSymbol) => this.symbolCache.get(this.summaryResolver.fromSummaryFileName(serializedSymbol.filePath, libraryFileName), serializedSymbol.name));\n data.symbols.forEach((serializedSymbol, index) => {\n const /** @type {?} */ symbol = this.symbols[index];\n const /** @type {?} */ importAs = serializedSymbol.importAs;\n if (typeof importAs === 'number') {\n allImportAs.push({ symbol, importAs: this.symbols[importAs] });\n }\n else if (typeof importAs === 'string') {\n allImportAs.push({ symbol, importAs: this.symbolCache.get(ngfactoryFilePath(libraryFileName), importAs) });\n }\n });\n const /** @type {?} */ summaries = /** @type {?} */ (visitValue(data.summaries, this, null));\n return { moduleName: data.moduleName, summaries, importAs: allImportAs };\n }\n /**\n * @param {?} map\n * @param {?} context\n * @return {?}\n */\n visitStringMap(map, context) {\n if ('__symbol' in map) {\n const /** @type {?} */ baseSymbol = this.symbols[map['__symbol']];\n const /** @type {?} */ members = map['members'];\n return members.length ? this.symbolCache.get(baseSymbol.filePath, baseSymbol.name, members) :\n baseSymbol;\n }\n else {\n return super.visitStringMap(map, context);\n }\n }\n}\nfunction FromJsonDeserializer_tsickle_Closure_declarations() {\n /** @type {?} */\n FromJsonDeserializer.prototype.symbols;\n /** @type {?} */\n FromJsonDeserializer.prototype.symbolCache;\n /** @type {?} */\n FromJsonDeserializer.prototype.summaryResolver;\n}\n/**\n * @param {?} metadata\n * @return {?}\n */\nfunction isCall(metadata) {\n return metadata && metadata.__symbolic === 'call';\n}\n/**\n * @param {?} metadata\n * @return {?}\n */\nfunction isFunctionCall(metadata) {\n return isCall(metadata) && unwrapResolvedMetadata(metadata.expression) instanceof StaticSymbol;\n}\n/**\n * @param {?} metadata\n * @return {?}\n */\nfunction isMethodCallOnVariable(metadata) {\n return isCall(metadata) && metadata.expression && metadata.expression.__symbolic === 'select' &&\n unwrapResolvedMetadata(metadata.expression.expression) instanceof StaticSymbol;\n}\n//# sourceMappingURL=summary_serializer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { componentFactoryName, flatten, identifierName, templateSourceUrl } from '../compile_metadata';\nimport { ViewEncapsulation } from '../core';\nimport { MessageBundle } from '../i18n/message_bundle';\nimport { Identifiers, createTokenForExternalReference } from '../identifiers';\nimport { HtmlParser } from '../ml_parser/html_parser';\nimport { InterpolationConfig } from '../ml_parser/interpolation_config';\nimport * as o from '../output/output_ast';\nimport { syntaxError, visitValue } from '../util';\nimport { GeneratedFile } from './generated_file';\nimport { listLazyRoutes, parseLazyRoute } from './lazy_routes';\nimport { StaticSymbol } from './static_symbol';\nimport { createForJitStub, serializeSummaries } from './summary_serializer';\nimport { ngfactoryFilePath, normalizeGenFileSuffix, splitTypescriptSuffix, summaryFileName, summaryForJitFileName } from './util';\n/** @enum {number} */\nconst StubEmitFlags = {\n Basic: 1,\n TypeCheck: 2,\n All: 3,\n};\nStubEmitFlags[StubEmitFlags.Basic] = \"Basic\";\nStubEmitFlags[StubEmitFlags.TypeCheck] = \"TypeCheck\";\nStubEmitFlags[StubEmitFlags.All] = \"All\";\nexport class AotCompiler {\n /**\n * @param {?} _config\n * @param {?} _options\n * @param {?} _host\n * @param {?} _reflector\n * @param {?} _metadataResolver\n * @param {?} _templateParser\n * @param {?} _styleCompiler\n * @param {?} _viewCompiler\n * @param {?} _typeCheckCompiler\n * @param {?} _ngModuleCompiler\n * @param {?} _outputEmitter\n * @param {?} _summaryResolver\n * @param {?} _symbolResolver\n */\n constructor(_config, _options, _host, _reflector, _metadataResolver, _templateParser, _styleCompiler, _viewCompiler, _typeCheckCompiler, _ngModuleCompiler, _outputEmitter, _summaryResolver, _symbolResolver) {\n this._config = _config;\n this._options = _options;\n this._host = _host;\n this._reflector = _reflector;\n this._metadataResolver = _metadataResolver;\n this._templateParser = _templateParser;\n this._styleCompiler = _styleCompiler;\n this._viewCompiler = _viewCompiler;\n this._typeCheckCompiler = _typeCheckCompiler;\n this._ngModuleCompiler = _ngModuleCompiler;\n this._outputEmitter = _outputEmitter;\n this._summaryResolver = _summaryResolver;\n this._symbolResolver = _symbolResolver;\n this._templateAstCache = new Map();\n this._analyzedFiles = new Map();\n }\n /**\n * @return {?}\n */\n clearCache() { this._metadataResolver.clearCache(); }\n /**\n * @param {?} rootFiles\n * @return {?}\n */\n analyzeModulesSync(rootFiles) {\n const /** @type {?} */ analyzeResult = analyzeAndValidateNgModules(rootFiles, this._host, this._symbolResolver, this._metadataResolver);\n analyzeResult.ngModules.forEach(ngModule => this._metadataResolver.loadNgModuleDirectiveAndPipeMetadata(ngModule.type.reference, true));\n return analyzeResult;\n }\n /**\n * @param {?} rootFiles\n * @return {?}\n */\n analyzeModulesAsync(rootFiles) {\n const /** @type {?} */ analyzeResult = analyzeAndValidateNgModules(rootFiles, this._host, this._symbolResolver, this._metadataResolver);\n return Promise\n .all(analyzeResult.ngModules.map(ngModule => this._metadataResolver.loadNgModuleDirectiveAndPipeMetadata(ngModule.type.reference, false)))\n .then(() => analyzeResult);\n }\n /**\n * @param {?} fileName\n * @return {?}\n */\n _analyzeFile(fileName) {\n let /** @type {?} */ analyzedFile = this._analyzedFiles.get(fileName);\n if (!analyzedFile) {\n analyzedFile =\n analyzeFile(this._host, this._symbolResolver, this._metadataResolver, fileName);\n this._analyzedFiles.set(fileName, analyzedFile);\n }\n return analyzedFile;\n }\n /**\n * @param {?} fileName\n * @return {?}\n */\n findGeneratedFileNames(fileName) {\n const /** @type {?} */ genFileNames = [];\n const /** @type {?} */ file = this._analyzeFile(fileName);\n // Make sure we create a .ngfactory if we have a injectable/directive/pipe/NgModule\n // or a reference to a non source file.\n // Note: This is overestimating the required .ngfactory files as the real calculation is harder.\n // Only do this for StubEmitFlags.Basic, as adding a type check block\n // does not change this file (as we generate type check blocks based on NgModules).\n if (this._options.allowEmptyCodegenFiles || file.directives.length || file.pipes.length ||\n file.injectables.length || file.ngModules.length || file.exportsNonSourceFiles) {\n genFileNames.push(ngfactoryFilePath(file.fileName, true));\n if (this._options.enableSummariesForJit) {\n genFileNames.push(summaryForJitFileName(file.fileName, true));\n }\n }\n const /** @type {?} */ fileSuffix = normalizeGenFileSuffix(splitTypescriptSuffix(file.fileName, true)[1]);\n file.directives.forEach((dirSymbol) => {\n const /** @type {?} */ compMeta = /** @type {?} */ ((this._metadataResolver.getNonNormalizedDirectiveMetadata(dirSymbol))).metadata;\n if (!compMeta.isComponent) {\n return;\n } /** @type {?} */\n ((\n // Note: compMeta is a component and therefore template is non null.\n compMeta.template)).styleUrls.forEach((styleUrl) => {\n const /** @type {?} */ normalizedUrl = this._host.resourceNameToFileName(styleUrl, file.fileName);\n if (!normalizedUrl) {\n throw syntaxError(`Couldn't resolve resource ${styleUrl} relative to ${file.fileName}`);\n }\n const /** @type {?} */ needsShim = (/** @type {?} */ ((compMeta.template)).encapsulation || this._config.defaultEncapsulation) === ViewEncapsulation.Emulated;\n genFileNames.push(_stylesModuleUrl(normalizedUrl, needsShim, fileSuffix));\n if (this._options.allowEmptyCodegenFiles) {\n genFileNames.push(_stylesModuleUrl(normalizedUrl, !needsShim, fileSuffix));\n }\n });\n });\n return genFileNames;\n }\n /**\n * @param {?} genFileName\n * @param {?=} originalFileName\n * @return {?}\n */\n emitBasicStub(genFileName, originalFileName) {\n const /** @type {?} */ outputCtx = this._createOutputContext(genFileName);\n if (genFileName.endsWith('.ngfactory.ts')) {\n if (!originalFileName) {\n throw new Error(`Assertion error: require the original file for .ngfactory.ts stubs. File: ${genFileName}`);\n }\n const /** @type {?} */ originalFile = this._analyzeFile(originalFileName);\n this._createNgFactoryStub(outputCtx, originalFile, StubEmitFlags.Basic);\n }\n else if (genFileName.endsWith('.ngsummary.ts')) {\n if (this._options.enableSummariesForJit) {\n if (!originalFileName) {\n throw new Error(`Assertion error: require the original file for .ngsummary.ts stubs. File: ${genFileName}`);\n }\n const /** @type {?} */ originalFile = this._analyzeFile(originalFileName);\n _createEmptyStub(outputCtx);\n originalFile.ngModules.forEach(ngModule => {\n // create exports that user code can reference\n createForJitStub(outputCtx, ngModule.type.reference);\n });\n }\n }\n else if (genFileName.endsWith('.ngstyle.ts')) {\n _createEmptyStub(outputCtx);\n }\n // Note: for the stubs, we don't need a property srcFileUrl,\n // as lateron in emitAllImpls we will create the proper GeneratedFiles with the\n // correct srcFileUrl.\n // This is good as e.g. for .ngstyle.ts files we can't derive\n // the url of components based on the genFileUrl.\n return this._codegenSourceModule('unknown', outputCtx);\n }\n /**\n * @param {?} genFileName\n * @param {?} originalFileName\n * @return {?}\n */\n emitTypeCheckStub(genFileName, originalFileName) {\n const /** @type {?} */ originalFile = this._analyzeFile(originalFileName);\n const /** @type {?} */ outputCtx = this._createOutputContext(genFileName);\n if (genFileName.endsWith('.ngfactory.ts')) {\n this._createNgFactoryStub(outputCtx, originalFile, StubEmitFlags.TypeCheck);\n }\n return outputCtx.statements.length > 0 ?\n this._codegenSourceModule(originalFile.fileName, outputCtx) :\n null;\n }\n /**\n * @param {?} fileNames\n * @return {?}\n */\n loadFilesAsync(fileNames) {\n const /** @type {?} */ files = fileNames.map(fileName => this._analyzeFile(fileName));\n const /** @type {?} */ loadingPromises = [];\n files.forEach(file => file.ngModules.forEach(ngModule => loadingPromises.push(this._metadataResolver.loadNgModuleDirectiveAndPipeMetadata(ngModule.type.reference, false))));\n return Promise.all(loadingPromises).then(_ => mergeAndValidateNgFiles(files));\n }\n /**\n * @param {?} fileNames\n * @return {?}\n */\n loadFilesSync(fileNames) {\n const /** @type {?} */ files = fileNames.map(fileName => this._analyzeFile(fileName));\n files.forEach(file => file.ngModules.forEach(ngModule => this._metadataResolver.loadNgModuleDirectiveAndPipeMetadata(ngModule.type.reference, true)));\n return mergeAndValidateNgFiles(files);\n }\n /**\n * @param {?} outputCtx\n * @param {?} file\n * @param {?} emitFlags\n * @return {?}\n */\n _createNgFactoryStub(outputCtx, file, emitFlags) {\n let /** @type {?} */ componentId = 0;\n file.ngModules.forEach((ngModuleMeta, ngModuleIndex) => {\n // Note: the code below needs to executed for StubEmitFlags.Basic and StubEmitFlags.TypeCheck,\n // so we don't change the .ngfactory file too much when adding the typecheck block.\n // create exports that user code can reference\n this._ngModuleCompiler.createStub(outputCtx, ngModuleMeta.type.reference);\n // add references to the symbols from the metadata.\n // These can be used by the type check block for components,\n // and they also cause TypeScript to include these files into the program too,\n // which will make them part of the analyzedFiles.\n const /** @type {?} */ externalReferences = [\n // Add references that are available from all the modules and imports.\n ...ngModuleMeta.transitiveModule.directives.map(d => d.reference),\n ...ngModuleMeta.transitiveModule.pipes.map(d => d.reference),\n ...ngModuleMeta.importedModules.map(m => m.type.reference),\n ...ngModuleMeta.exportedModules.map(m => m.type.reference),\n // Add references that might be inserted by the template compiler.\n ...this._externalIdentifierReferences([Identifiers.TemplateRef, Identifiers.ElementRef]),\n ];\n const /** @type {?} */ externalReferenceVars = new Map();\n externalReferences.forEach((ref, typeIndex) => {\n externalReferenceVars.set(ref, `_decl${ngModuleIndex}_${typeIndex}`);\n });\n externalReferenceVars.forEach((varName, reference) => {\n outputCtx.statements.push(o.variable(varName)\n .set(o.NULL_EXPR.cast(o.DYNAMIC_TYPE))\n .toDeclStmt(o.expressionType(outputCtx.importExpr(reference, /* typeParams */ null, /* useSummaries */ /* useSummaries */ false))));\n });\n if (emitFlags & StubEmitFlags.TypeCheck) {\n // add the typecheck block for all components of the NgModule\n ngModuleMeta.declaredDirectives.forEach((dirId) => {\n const /** @type {?} */ compMeta = this._metadataResolver.getDirectiveMetadata(dirId.reference);\n if (!compMeta.isComponent) {\n return;\n }\n componentId++;\n this._createTypeCheckBlock(outputCtx, `${compMeta.type.reference.name}_Host_${componentId}`, ngModuleMeta, this._metadataResolver.getHostComponentMetadata(compMeta), [compMeta.type], externalReferenceVars);\n this._createTypeCheckBlock(outputCtx, `${compMeta.type.reference.name}_${componentId}`, ngModuleMeta, compMeta, ngModuleMeta.transitiveModule.directives, externalReferenceVars);\n });\n }\n });\n if (outputCtx.statements.length === 0) {\n _createEmptyStub(outputCtx);\n }\n }\n /**\n * @param {?} references\n * @return {?}\n */\n _externalIdentifierReferences(references) {\n const /** @type {?} */ result = [];\n for (let /** @type {?} */ reference of references) {\n const /** @type {?} */ token = createTokenForExternalReference(this._reflector, reference);\n if (token.identifier) {\n result.push(token.identifier.reference);\n }\n }\n return result;\n }\n /**\n * @param {?} ctx\n * @param {?} componentId\n * @param {?} moduleMeta\n * @param {?} compMeta\n * @param {?} directives\n * @param {?} externalReferenceVars\n * @return {?}\n */\n _createTypeCheckBlock(ctx, componentId, moduleMeta, compMeta, directives, externalReferenceVars) {\n const { template: parsedTemplate, pipes: usedPipes } = this._parseTemplate(compMeta, moduleMeta, directives);\n ctx.statements.push(...this._typeCheckCompiler.compileComponent(componentId, compMeta, parsedTemplate, usedPipes, externalReferenceVars, ctx));\n }\n /**\n * @param {?} analyzeResult\n * @param {?} locale\n * @return {?}\n */\n emitMessageBundle(analyzeResult, locale) {\n const /** @type {?} */ errors = [];\n const /** @type {?} */ htmlParser = new HtmlParser();\n // TODO(vicb): implicit tags & attributes\n const /** @type {?} */ messageBundle = new MessageBundle(htmlParser, [], {}, locale);\n analyzeResult.files.forEach(file => {\n const /** @type {?} */ compMetas = [];\n file.directives.forEach(directiveType => {\n const /** @type {?} */ dirMeta = this._metadataResolver.getDirectiveMetadata(directiveType);\n if (dirMeta && dirMeta.isComponent) {\n compMetas.push(dirMeta);\n }\n });\n compMetas.forEach(compMeta => {\n const /** @type {?} */ html = /** @type {?} */ ((/** @type {?} */ ((compMeta.template)).template));\n const /** @type {?} */ interpolationConfig = InterpolationConfig.fromArray(/** @type {?} */ ((compMeta.template)).interpolation);\n errors.push(.../** @type {?} */ ((messageBundle.updateFromTemplate(html, file.fileName, interpolationConfig))));\n });\n });\n if (errors.length) {\n throw new Error(errors.map(e => e.toString()).join('\\n'));\n }\n return messageBundle;\n }\n /**\n * @param {?} analyzeResult\n * @return {?}\n */\n emitAllImpls(analyzeResult) {\n const { ngModuleByPipeOrDirective, files } = analyzeResult;\n const /** @type {?} */ sourceModules = files.map(file => this._compileImplFile(file.fileName, ngModuleByPipeOrDirective, file.directives, file.pipes, file.ngModules, file.injectables));\n return flatten(sourceModules);\n }\n /**\n * @param {?} srcFileUrl\n * @param {?} ngModuleByPipeOrDirective\n * @param {?} directives\n * @param {?} pipes\n * @param {?} ngModules\n * @param {?} injectables\n * @return {?}\n */\n _compileImplFile(srcFileUrl, ngModuleByPipeOrDirective, directives, pipes, ngModules, injectables) {\n const /** @type {?} */ fileSuffix = normalizeGenFileSuffix(splitTypescriptSuffix(srcFileUrl, true)[1]);\n const /** @type {?} */ generatedFiles = [];\n const /** @type {?} */ outputCtx = this._createOutputContext(ngfactoryFilePath(srcFileUrl, true));\n generatedFiles.push(...this._createSummary(srcFileUrl, directives, pipes, ngModules, injectables, outputCtx));\n // compile all ng modules\n ngModules.forEach((ngModuleMeta) => this._compileModule(outputCtx, ngModuleMeta));\n // compile components\n directives.forEach((dirType) => {\n const /** @type {?} */ compMeta = this._metadataResolver.getDirectiveMetadata(/** @type {?} */ (dirType));\n if (!compMeta.isComponent) {\n return;\n }\n const /** @type {?} */ ngModule = ngModuleByPipeOrDirective.get(dirType);\n if (!ngModule) {\n throw new Error(`Internal Error: cannot determine the module for component ${identifierName(compMeta.type)}!`);\n }\n // compile styles\n const /** @type {?} */ componentStylesheet = this._styleCompiler.compileComponent(outputCtx, compMeta); /** @type {?} */\n ((\n // Note: compMeta is a component and therefore template is non null.\n compMeta.template)).externalStylesheets.forEach((stylesheetMeta) => {\n // Note: fill non shim and shim style files as they might\n // be shared by component with and without ViewEncapsulation.\n const /** @type {?} */ shim = this._styleCompiler.needsStyleShim(compMeta);\n generatedFiles.push(this._codegenStyles(srcFileUrl, compMeta, stylesheetMeta, shim, fileSuffix));\n if (this._options.allowEmptyCodegenFiles) {\n generatedFiles.push(this._codegenStyles(srcFileUrl, compMeta, stylesheetMeta, !shim, fileSuffix));\n }\n });\n // compile components\n const /** @type {?} */ compViewVars = this._compileComponent(outputCtx, compMeta, ngModule, ngModule.transitiveModule.directives, componentStylesheet, fileSuffix);\n this._compileComponentFactory(outputCtx, compMeta, ngModule, fileSuffix);\n });\n if (outputCtx.statements.length > 0 || this._options.allowEmptyCodegenFiles) {\n const /** @type {?} */ srcModule = this._codegenSourceModule(srcFileUrl, outputCtx);\n generatedFiles.unshift(srcModule);\n }\n return generatedFiles;\n }\n /**\n * @param {?} srcFileName\n * @param {?} directives\n * @param {?} pipes\n * @param {?} ngModules\n * @param {?} injectables\n * @param {?} ngFactoryCtx\n * @return {?}\n */\n _createSummary(srcFileName, directives, pipes, ngModules, injectables, ngFactoryCtx) {\n const /** @type {?} */ symbolSummaries = this._symbolResolver.getSymbolsOf(srcFileName)\n .map(symbol => this._symbolResolver.resolveSymbol(symbol));\n const /** @type {?} */ typeData = [\n ...ngModules.map(meta => ({\n summary: /** @type {?} */ ((this._metadataResolver.getNgModuleSummary(meta.type.reference))),\n metadata: /** @type {?} */ ((this._metadataResolver.getNgModuleMetadata(meta.type.reference)))\n })),\n ...directives.map(ref => ({\n summary: /** @type {?} */ ((this._metadataResolver.getDirectiveSummary(ref))),\n metadata: /** @type {?} */ ((this._metadataResolver.getDirectiveMetadata(ref)))\n })),\n ...pipes.map(ref => ({\n summary: /** @type {?} */ ((this._metadataResolver.getPipeSummary(ref))),\n metadata: /** @type {?} */ ((this._metadataResolver.getPipeMetadata(ref)))\n })),\n ...injectables.map(ref => ({\n summary: /** @type {?} */ ((this._metadataResolver.getInjectableSummary(ref))),\n metadata: /** @type {?} */ ((this._metadataResolver.getInjectableSummary(ref))).type\n }))\n ];\n const /** @type {?} */ forJitOutputCtx = this._options.enableSummariesForJit ?\n this._createOutputContext(summaryForJitFileName(srcFileName, true)) :\n null;\n const { json, exportAs } = serializeSummaries(srcFileName, forJitOutputCtx, this._summaryResolver, this._symbolResolver, symbolSummaries, typeData);\n exportAs.forEach((entry) => {\n ngFactoryCtx.statements.push(o.variable(entry.exportAs).set(ngFactoryCtx.importExpr(entry.symbol)).toDeclStmt(null, [\n o.StmtModifier.Exported\n ]));\n });\n const /** @type {?} */ summaryJson = new GeneratedFile(srcFileName, summaryFileName(srcFileName), json);\n const /** @type {?} */ result = [summaryJson];\n if (forJitOutputCtx) {\n result.push(this._codegenSourceModule(srcFileName, forJitOutputCtx));\n }\n return result;\n }\n /**\n * @param {?} outputCtx\n * @param {?} ngModule\n * @return {?}\n */\n _compileModule(outputCtx, ngModule) {\n const /** @type {?} */ providers = [];\n if (this._options.locale) {\n const /** @type {?} */ normalizedLocale = this._options.locale.replace(/_/g, '-');\n providers.push({\n token: createTokenForExternalReference(this._reflector, Identifiers.LOCALE_ID),\n useValue: normalizedLocale,\n });\n }\n if (this._options.i18nFormat) {\n providers.push({\n token: createTokenForExternalReference(this._reflector, Identifiers.TRANSLATIONS_FORMAT),\n useValue: this._options.i18nFormat\n });\n }\n this._ngModuleCompiler.compile(outputCtx, ngModule, providers);\n }\n /**\n * @param {?} outputCtx\n * @param {?} compMeta\n * @param {?} ngModule\n * @param {?} fileSuffix\n * @return {?}\n */\n _compileComponentFactory(outputCtx, compMeta, ngModule, fileSuffix) {\n const /** @type {?} */ hostMeta = this._metadataResolver.getHostComponentMetadata(compMeta);\n const /** @type {?} */ hostViewFactoryVar = this._compileComponent(outputCtx, hostMeta, ngModule, [compMeta.type], null, fileSuffix)\n .viewClassVar;\n const /** @type {?} */ compFactoryVar = componentFactoryName(compMeta.type.reference);\n const /** @type {?} */ inputsExprs = [];\n for (let /** @type {?} */ propName in compMeta.inputs) {\n const /** @type {?} */ templateName = compMeta.inputs[propName];\n // Don't quote so that the key gets minified...\n inputsExprs.push(new o.LiteralMapEntry(propName, o.literal(templateName), false));\n }\n const /** @type {?} */ outputsExprs = [];\n for (let /** @type {?} */ propName in compMeta.outputs) {\n const /** @type {?} */ templateName = compMeta.outputs[propName];\n // Don't quote so that the key gets minified...\n outputsExprs.push(new o.LiteralMapEntry(propName, o.literal(templateName), false));\n }\n outputCtx.statements.push(o.variable(compFactoryVar)\n .set(o.importExpr(Identifiers.createComponentFactory).callFn([\n o.literal(compMeta.selector), outputCtx.importExpr(compMeta.type.reference),\n o.variable(hostViewFactoryVar), new o.LiteralMapExpr(inputsExprs),\n new o.LiteralMapExpr(outputsExprs),\n o.literalArr(/** @type {?} */ ((compMeta.template)).ngContentSelectors.map(selector => o.literal(selector)))\n ]))\n .toDeclStmt(o.importType(Identifiers.ComponentFactory, [/** @type {?} */ ((o.expressionType(outputCtx.importExpr(compMeta.type.reference))))], [o.TypeModifier.Const]), [o.StmtModifier.Final, o.StmtModifier.Exported]));\n }\n /**\n * @param {?} outputCtx\n * @param {?} compMeta\n * @param {?} ngModule\n * @param {?} directiveIdentifiers\n * @param {?} componentStyles\n * @param {?} fileSuffix\n * @return {?}\n */\n _compileComponent(outputCtx, compMeta, ngModule, directiveIdentifiers, componentStyles, fileSuffix) {\n const { template: parsedTemplate, pipes: usedPipes } = this._parseTemplate(compMeta, ngModule, directiveIdentifiers);\n const /** @type {?} */ stylesExpr = componentStyles ? o.variable(componentStyles.stylesVar) : o.literalArr([]);\n const /** @type {?} */ viewResult = this._viewCompiler.compileComponent(outputCtx, compMeta, parsedTemplate, stylesExpr, usedPipes);\n if (componentStyles) {\n _resolveStyleStatements(this._symbolResolver, componentStyles, this._styleCompiler.needsStyleShim(compMeta), fileSuffix);\n }\n return viewResult;\n }\n /**\n * @param {?} compMeta\n * @param {?} ngModule\n * @param {?} directiveIdentifiers\n * @return {?}\n */\n _parseTemplate(compMeta, ngModule, directiveIdentifiers) {\n if (this._templateAstCache.has(compMeta.type.reference)) {\n return /** @type {?} */ ((this._templateAstCache.get(compMeta.type.reference)));\n }\n const /** @type {?} */ preserveWhitespaces = /** @type {?} */ ((/** @type {?} */ ((compMeta)).template)).preserveWhitespaces;\n const /** @type {?} */ directives = directiveIdentifiers.map(dir => this._metadataResolver.getDirectiveSummary(dir.reference));\n const /** @type {?} */ pipes = ngModule.transitiveModule.pipes.map(pipe => this._metadataResolver.getPipeSummary(pipe.reference));\n const /** @type {?} */ result = this._templateParser.parse(compMeta, /** @type {?} */ ((/** @type {?} */ ((compMeta.template)).htmlAst)), directives, pipes, ngModule.schemas, templateSourceUrl(ngModule.type, compMeta, /** @type {?} */ ((compMeta.template))), preserveWhitespaces);\n this._templateAstCache.set(compMeta.type.reference, result);\n return result;\n }\n /**\n * @param {?} genFilePath\n * @return {?}\n */\n _createOutputContext(genFilePath) {\n const /** @type {?} */ importExpr = (symbol, typeParams = null, useSummaries = true) => {\n if (!(symbol instanceof StaticSymbol)) {\n throw new Error(`Internal error: unknown identifier ${JSON.stringify(symbol)}`);\n }\n const /** @type {?} */ arity = this._symbolResolver.getTypeArity(symbol) || 0;\n const { filePath, name, members } = this._symbolResolver.getImportAs(symbol, useSummaries) || symbol;\n const /** @type {?} */ importModule = this._fileNameToModuleName(filePath, genFilePath);\n // It should be good enough to compare filePath to genFilePath and if they are equal\n // there is a self reference. However, ngfactory files generate to .ts but their\n // symbols have .d.ts so a simple compare is insufficient. They should be canonical\n // and is tracked by #17705.\n const /** @type {?} */ selfReference = this._fileNameToModuleName(genFilePath, genFilePath);\n const /** @type {?} */ moduleName = importModule === selfReference ? null : importModule;\n // If we are in a type expression that refers to a generic type then supply\n // the required type parameters. If there were not enough type parameters\n // supplied, supply any as the type. Outside a type expression the reference\n // should not supply type parameters and be treated as a simple value reference\n // to the constructor function itself.\n const /** @type {?} */ suppliedTypeParams = typeParams || [];\n const /** @type {?} */ missingTypeParamsCount = arity - suppliedTypeParams.length;\n const /** @type {?} */ allTypeParams = suppliedTypeParams.concat(new Array(missingTypeParamsCount).fill(o.DYNAMIC_TYPE));\n return members.reduce((expr, memberName) => expr.prop(memberName), /** @type {?} */ (o.importExpr(new o.ExternalReference(moduleName, name, null), allTypeParams)));\n };\n return { statements: [], genFilePath, importExpr };\n }\n /**\n * @param {?} importedFilePath\n * @param {?} containingFilePath\n * @return {?}\n */\n _fileNameToModuleName(importedFilePath, containingFilePath) {\n return this._summaryResolver.getKnownModuleName(importedFilePath) ||\n this._symbolResolver.getKnownModuleName(importedFilePath) ||\n this._host.fileNameToModuleName(importedFilePath, containingFilePath);\n }\n /**\n * @param {?} srcFileUrl\n * @param {?} compMeta\n * @param {?} stylesheetMetadata\n * @param {?} isShimmed\n * @param {?} fileSuffix\n * @return {?}\n */\n _codegenStyles(srcFileUrl, compMeta, stylesheetMetadata, isShimmed, fileSuffix) {\n const /** @type {?} */ outputCtx = this._createOutputContext(_stylesModuleUrl(/** @type {?} */ ((stylesheetMetadata.moduleUrl)), isShimmed, fileSuffix));\n const /** @type {?} */ compiledStylesheet = this._styleCompiler.compileStyles(outputCtx, compMeta, stylesheetMetadata, isShimmed);\n _resolveStyleStatements(this._symbolResolver, compiledStylesheet, isShimmed, fileSuffix);\n return this._codegenSourceModule(srcFileUrl, outputCtx);\n }\n /**\n * @param {?} srcFileUrl\n * @param {?} ctx\n * @return {?}\n */\n _codegenSourceModule(srcFileUrl, ctx) {\n return new GeneratedFile(srcFileUrl, ctx.genFilePath, ctx.statements);\n }\n /**\n * @param {?=} entryRoute\n * @param {?=} analyzedModules\n * @return {?}\n */\n listLazyRoutes(entryRoute, analyzedModules) {\n const /** @type {?} */ self = this;\n if (entryRoute) {\n const /** @type {?} */ symbol = parseLazyRoute(entryRoute, this._reflector).referencedModule;\n return visitLazyRoute(symbol);\n }\n else if (analyzedModules) {\n const /** @type {?} */ allLazyRoutes = [];\n for (const /** @type {?} */ ngModule of analyzedModules.ngModules) {\n const /** @type {?} */ lazyRoutes = listLazyRoutes(ngModule, this._reflector);\n for (const /** @type {?} */ lazyRoute of lazyRoutes) {\n allLazyRoutes.push(lazyRoute);\n }\n }\n return allLazyRoutes;\n }\n else {\n throw new Error(`Either route or analyzedModules has to be specified!`);\n }\n /**\n * @param {?} symbol\n * @param {?=} seenRoutes\n * @param {?=} allLazyRoutes\n * @return {?}\n */\n function visitLazyRoute(symbol, seenRoutes = new Set(), allLazyRoutes = []) {\n // Support pointing to default exports, but stop recursing there,\n // as the StaticReflector does not yet support default exports.\n if (seenRoutes.has(symbol) || !symbol.name) {\n return allLazyRoutes;\n }\n seenRoutes.add(symbol);\n const /** @type {?} */ lazyRoutes = listLazyRoutes(/** @type {?} */ ((self._metadataResolver.getNgModuleMetadata(symbol, true))), self._reflector);\n for (const /** @type {?} */ lazyRoute of lazyRoutes) {\n allLazyRoutes.push(lazyRoute);\n visitLazyRoute(lazyRoute.referencedModule, seenRoutes, allLazyRoutes);\n }\n return allLazyRoutes;\n }\n }\n}\nfunction AotCompiler_tsickle_Closure_declarations() {\n /** @type {?} */\n AotCompiler.prototype._templateAstCache;\n /** @type {?} */\n AotCompiler.prototype._analyzedFiles;\n /** @type {?} */\n AotCompiler.prototype._config;\n /** @type {?} */\n AotCompiler.prototype._options;\n /** @type {?} */\n AotCompiler.prototype._host;\n /** @type {?} */\n AotCompiler.prototype._reflector;\n /** @type {?} */\n AotCompiler.prototype._metadataResolver;\n /** @type {?} */\n AotCompiler.prototype._templateParser;\n /** @type {?} */\n AotCompiler.prototype._styleCompiler;\n /** @type {?} */\n AotCompiler.prototype._viewCompiler;\n /** @type {?} */\n AotCompiler.prototype._typeCheckCompiler;\n /** @type {?} */\n AotCompiler.prototype._ngModuleCompiler;\n /** @type {?} */\n AotCompiler.prototype._outputEmitter;\n /** @type {?} */\n AotCompiler.prototype._summaryResolver;\n /** @type {?} */\n AotCompiler.prototype._symbolResolver;\n}\n/**\n * @param {?} outputCtx\n * @return {?}\n */\nfunction _createEmptyStub(outputCtx) {\n // Note: We need to produce at least one import statement so that\n // TypeScript knows that the file is an es6 module. Otherwise our generated\n // exports / imports won't be emitted properly by TypeScript.\n outputCtx.statements.push(o.importExpr(Identifiers.ComponentFactory).toStmt());\n}\n/**\n * @param {?} symbolResolver\n * @param {?} compileResult\n * @param {?} needsShim\n * @param {?} fileSuffix\n * @return {?}\n */\nfunction _resolveStyleStatements(symbolResolver, compileResult, needsShim, fileSuffix) {\n compileResult.dependencies.forEach((dep) => {\n dep.setValue(symbolResolver.getStaticSymbol(_stylesModuleUrl(dep.moduleUrl, needsShim, fileSuffix), dep.name));\n });\n}\n/**\n * @param {?} stylesheetUrl\n * @param {?} shim\n * @param {?} suffix\n * @return {?}\n */\nfunction _stylesModuleUrl(stylesheetUrl, shim, suffix) {\n return `${stylesheetUrl}${shim ? '.shim' : ''}.ngstyle${suffix}`;\n}\n/**\n * @record\n */\nexport function NgAnalyzedModules() { }\nfunction NgAnalyzedModules_tsickle_Closure_declarations() {\n /** @type {?} */\n NgAnalyzedModules.prototype.ngModules;\n /** @type {?} */\n NgAnalyzedModules.prototype.ngModuleByPipeOrDirective;\n /** @type {?} */\n NgAnalyzedModules.prototype.files;\n /** @type {?|undefined} */\n NgAnalyzedModules.prototype.symbolsMissingModule;\n}\n/**\n * @record\n */\nexport function NgAnalyzedFile() { }\nfunction NgAnalyzedFile_tsickle_Closure_declarations() {\n /** @type {?} */\n NgAnalyzedFile.prototype.fileName;\n /** @type {?} */\n NgAnalyzedFile.prototype.directives;\n /** @type {?} */\n NgAnalyzedFile.prototype.pipes;\n /** @type {?} */\n NgAnalyzedFile.prototype.ngModules;\n /** @type {?} */\n NgAnalyzedFile.prototype.injectables;\n /** @type {?} */\n NgAnalyzedFile.prototype.exportsNonSourceFiles;\n}\n/**\n * @record\n */\nexport function NgAnalyzeModulesHost() { }\nfunction NgAnalyzeModulesHost_tsickle_Closure_declarations() {\n /** @type {?} */\n NgAnalyzeModulesHost.prototype.isSourceFile;\n}\n/**\n * @param {?} fileNames\n * @param {?} host\n * @param {?} staticSymbolResolver\n * @param {?} metadataResolver\n * @return {?}\n */\nexport function analyzeNgModules(fileNames, host, staticSymbolResolver, metadataResolver) {\n const /** @type {?} */ files = _analyzeFilesIncludingNonProgramFiles(fileNames, host, staticSymbolResolver, metadataResolver);\n return mergeAnalyzedFiles(files);\n}\n/**\n * @param {?} fileNames\n * @param {?} host\n * @param {?} staticSymbolResolver\n * @param {?} metadataResolver\n * @return {?}\n */\nexport function analyzeAndValidateNgModules(fileNames, host, staticSymbolResolver, metadataResolver) {\n return validateAnalyzedModules(analyzeNgModules(fileNames, host, staticSymbolResolver, metadataResolver));\n}\n/**\n * @param {?} analyzedModules\n * @return {?}\n */\nfunction validateAnalyzedModules(analyzedModules) {\n if (analyzedModules.symbolsMissingModule && analyzedModules.symbolsMissingModule.length) {\n const /** @type {?} */ messages = analyzedModules.symbolsMissingModule.map(s => `Cannot determine the module for class ${s.name} in ${s.filePath}! Add ${s.name} to the NgModule to fix it.`);\n throw syntaxError(messages.join('\\n'));\n }\n return analyzedModules;\n}\n/**\n * @param {?} fileNames\n * @param {?} host\n * @param {?} staticSymbolResolver\n * @param {?} metadataResolver\n * @return {?}\n */\nfunction _analyzeFilesIncludingNonProgramFiles(fileNames, host, staticSymbolResolver, metadataResolver) {\n const /** @type {?} */ seenFiles = new Set();\n const /** @type {?} */ files = [];\n const /** @type {?} */ visitFile = (fileName) => {\n if (seenFiles.has(fileName) || !host.isSourceFile(fileName)) {\n return false;\n }\n seenFiles.add(fileName);\n const /** @type {?} */ analyzedFile = analyzeFile(host, staticSymbolResolver, metadataResolver, fileName);\n files.push(analyzedFile);\n analyzedFile.ngModules.forEach(ngModule => {\n ngModule.transitiveModule.modules.forEach(modMeta => visitFile(modMeta.reference.filePath));\n });\n };\n fileNames.forEach((fileName) => visitFile(fileName));\n return files;\n}\n/**\n * @param {?} host\n * @param {?} staticSymbolResolver\n * @param {?} metadataResolver\n * @param {?} fileName\n * @return {?}\n */\nexport function analyzeFile(host, staticSymbolResolver, metadataResolver, fileName) {\n const /** @type {?} */ directives = [];\n const /** @type {?} */ pipes = [];\n const /** @type {?} */ injectables = [];\n const /** @type {?} */ ngModules = [];\n const /** @type {?} */ hasDecorators = staticSymbolResolver.hasDecorators(fileName);\n let /** @type {?} */ exportsNonSourceFiles = false;\n // Don't analyze .d.ts files that have no decorators as a shortcut\n // to speed up the analysis. This prevents us from\n // resolving the references in these files.\n // Note: exportsNonSourceFiles is only needed when compiling with summaries,\n // which is not the case when .d.ts files are treated as input files.\n if (!fileName.endsWith('.d.ts') || hasDecorators) {\n staticSymbolResolver.getSymbolsOf(fileName).forEach((symbol) => {\n const /** @type {?} */ resolvedSymbol = staticSymbolResolver.resolveSymbol(symbol);\n const /** @type {?} */ symbolMeta = resolvedSymbol.metadata;\n if (!symbolMeta || symbolMeta.__symbolic === 'error') {\n return;\n }\n let /** @type {?} */ isNgSymbol = false;\n if (symbolMeta.__symbolic === 'class') {\n if (metadataResolver.isDirective(symbol)) {\n isNgSymbol = true;\n directives.push(symbol);\n }\n else if (metadataResolver.isPipe(symbol)) {\n isNgSymbol = true;\n pipes.push(symbol);\n }\n else if (metadataResolver.isNgModule(symbol)) {\n const /** @type {?} */ ngModule = metadataResolver.getNgModuleMetadata(symbol, false);\n if (ngModule) {\n isNgSymbol = true;\n ngModules.push(ngModule);\n }\n }\n else if (metadataResolver.isInjectable(symbol)) {\n isNgSymbol = true;\n injectables.push(symbol);\n }\n }\n if (!isNgSymbol) {\n exportsNonSourceFiles =\n exportsNonSourceFiles || isValueExportingNonSourceFile(host, symbolMeta);\n }\n });\n }\n return {\n fileName, directives, pipes, ngModules, injectables, exportsNonSourceFiles,\n };\n}\n/**\n * @param {?} host\n * @param {?} metadata\n * @return {?}\n */\nfunction isValueExportingNonSourceFile(host, metadata) {\n let /** @type {?} */ exportsNonSourceFiles = false;\n class Visitor {\n /**\n * @param {?} arr\n * @param {?} context\n * @return {?}\n */\n visitArray(arr, context) { arr.forEach(v => visitValue(v, this, context)); }\n /**\n * @param {?} map\n * @param {?} context\n * @return {?}\n */\n visitStringMap(map, context) {\n Object.keys(map).forEach((key) => visitValue(map[key], this, context));\n }\n /**\n * @param {?} value\n * @param {?} context\n * @return {?}\n */\n visitPrimitive(value, context) { }\n /**\n * @param {?} value\n * @param {?} context\n * @return {?}\n */\n visitOther(value, context) {\n if (value instanceof StaticSymbol && !host.isSourceFile(value.filePath)) {\n exportsNonSourceFiles = true;\n }\n }\n }\n visitValue(metadata, new Visitor(), null);\n return exportsNonSourceFiles;\n}\n/**\n * @param {?} analyzedFiles\n * @return {?}\n */\nexport function mergeAnalyzedFiles(analyzedFiles) {\n const /** @type {?} */ allNgModules = [];\n const /** @type {?} */ ngModuleByPipeOrDirective = new Map();\n const /** @type {?} */ allPipesAndDirectives = new Set();\n analyzedFiles.forEach(af => {\n af.ngModules.forEach(ngModule => {\n allNgModules.push(ngModule);\n ngModule.declaredDirectives.forEach(d => ngModuleByPipeOrDirective.set(d.reference, ngModule));\n ngModule.declaredPipes.forEach(p => ngModuleByPipeOrDirective.set(p.reference, ngModule));\n });\n af.directives.forEach(d => allPipesAndDirectives.add(d));\n af.pipes.forEach(p => allPipesAndDirectives.add(p));\n });\n const /** @type {?} */ symbolsMissingModule = [];\n allPipesAndDirectives.forEach(ref => {\n if (!ngModuleByPipeOrDirective.has(ref)) {\n symbolsMissingModule.push(ref);\n }\n });\n return {\n ngModules: allNgModules,\n ngModuleByPipeOrDirective,\n symbolsMissingModule,\n files: analyzedFiles\n };\n}\n/**\n * @param {?} files\n * @return {?}\n */\nfunction mergeAndValidateNgFiles(files) {\n return validateAnalyzedModules(mergeAnalyzedFiles(files));\n}\n//# sourceMappingURL=compiler.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { syntaxError } from '../util';\n/**\n * @record\n */\nexport function Position() { }\nfunction Position_tsickle_Closure_declarations() {\n /** @type {?} */\n Position.prototype.fileName;\n /** @type {?} */\n Position.prototype.line;\n /** @type {?} */\n Position.prototype.column;\n}\n/**\n * @record\n */\nexport function FormattedMessageChain() { }\nfunction FormattedMessageChain_tsickle_Closure_declarations() {\n /** @type {?} */\n FormattedMessageChain.prototype.message;\n /** @type {?|undefined} */\n FormattedMessageChain.prototype.position;\n /** @type {?|undefined} */\n FormattedMessageChain.prototype.next;\n}\nconst /** @type {?} */ FORMATTED_MESSAGE = 'ngFormattedMessage';\n/**\n * @param {?} level\n * @return {?}\n */\nfunction indentStr(level) {\n if (level <= 0)\n return '';\n if (level < 6)\n return ['', ' ', ' ', ' ', ' ', ' '][level];\n const /** @type {?} */ half = indentStr(Math.floor(level / 2));\n return half + half + (level % 2 === 1 ? ' ' : '');\n}\n/**\n * @param {?} chain\n * @param {?=} indent\n * @return {?}\n */\nfunction formatChain(chain, indent = 0) {\n if (!chain)\n return '';\n const /** @type {?} */ position = chain.position ?\n `${chain.position.fileName}(${chain.position.line + 1},${chain.position.column + 1})` :\n '';\n const /** @type {?} */ prefix = position && indent === 0 ? `${position}: ` : '';\n const /** @type {?} */ postfix = position && indent !== 0 ? ` at ${position}` : '';\n const /** @type {?} */ message = `${prefix}${chain.message}${postfix}`;\n return `${indentStr(indent)}${message}${(chain.next && ('\\n' + formatChain(chain.next, indent + 2))) || ''}`;\n}\n/**\n * @param {?} chain\n * @return {?}\n */\nexport function formattedError(chain) {\n const /** @type {?} */ message = formatChain(chain) + '.';\n const /** @type {?} */ error = /** @type {?} */ (syntaxError(message));\n (/** @type {?} */ (error))[FORMATTED_MESSAGE] = true;\n error.chain = chain;\n error.position = chain.position;\n return error;\n}\n/**\n * @param {?} error\n * @return {?}\n */\nexport function isFormattedError(error) {\n return !!(/** @type {?} */ (error))[FORMATTED_MESSAGE];\n}\n//# sourceMappingURL=formatted_error.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { CompileSummaryKind } from '../compile_metadata';\nimport { createAttribute, createComponent, createContentChild, createContentChildren, createDirective, createHost, createHostBinding, createHostListener, createInject, createInjectable, createInput, createNgModule, createOptional, createOutput, createPipe, createSelf, createSkipSelf, createViewChild, createViewChildren } from '../core';\nimport { syntaxError } from '../util';\nimport { formattedError } from './formatted_error';\nimport { StaticSymbol } from './static_symbol';\nconst /** @type {?} */ ANGULAR_CORE = '@angular/core';\nconst /** @type {?} */ ANGULAR_ROUTER = '@angular/router';\nconst /** @type {?} */ HIDDEN_KEY = /^\\$.*\\$$/;\nconst /** @type {?} */ IGNORE = {\n __symbolic: 'ignore'\n};\nconst /** @type {?} */ USE_VALUE = 'useValue';\nconst /** @type {?} */ PROVIDE = 'provide';\nconst /** @type {?} */ REFERENCE_SET = new Set([USE_VALUE, 'useFactory', 'data']);\nconst /** @type {?} */ TYPEGUARD_POSTFIX = 'TypeGuard';\nconst /** @type {?} */ USE_IF = 'UseIf';\n/**\n * @param {?} value\n * @return {?}\n */\nfunction shouldIgnore(value) {\n return value && value.__symbolic == 'ignore';\n}\n/**\n * A static reflector implements enough of the Reflector API that is necessary to compile\n * templates statically.\n */\nexport class StaticReflector {\n /**\n * @param {?} summaryResolver\n * @param {?} symbolResolver\n * @param {?=} knownMetadataClasses\n * @param {?=} knownMetadataFunctions\n * @param {?=} errorRecorder\n */\n constructor(summaryResolver, symbolResolver, knownMetadataClasses = [], knownMetadataFunctions = [], errorRecorder) {\n this.summaryResolver = summaryResolver;\n this.symbolResolver = symbolResolver;\n this.errorRecorder = errorRecorder;\n this.annotationCache = new Map();\n this.propertyCache = new Map();\n this.parameterCache = new Map();\n this.methodCache = new Map();\n this.staticCache = new Map();\n this.conversionMap = new Map();\n this.annotationForParentClassWithSummaryKind = new Map();\n this.initializeConversionMap();\n knownMetadataClasses.forEach((kc) => this._registerDecoratorOrConstructor(this.getStaticSymbol(kc.filePath, kc.name), kc.ctor));\n knownMetadataFunctions.forEach((kf) => this._registerFunction(this.getStaticSymbol(kf.filePath, kf.name), kf.fn));\n this.annotationForParentClassWithSummaryKind.set(CompileSummaryKind.Directive, [createDirective, createComponent]);\n this.annotationForParentClassWithSummaryKind.set(CompileSummaryKind.Pipe, [createPipe]);\n this.annotationForParentClassWithSummaryKind.set(CompileSummaryKind.NgModule, [createNgModule]);\n this.annotationForParentClassWithSummaryKind.set(CompileSummaryKind.Injectable, [createInjectable, createPipe, createDirective, createComponent, createNgModule]);\n }\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n componentModuleUrl(typeOrFunc) {\n const /** @type {?} */ staticSymbol = this.findSymbolDeclaration(typeOrFunc);\n return this.symbolResolver.getResourcePath(staticSymbol);\n }\n /**\n * @param {?} ref\n * @param {?=} containingFile\n * @return {?}\n */\n resolveExternalReference(ref, containingFile) {\n const /** @type {?} */ refSymbol = this.symbolResolver.getSymbolByModule(/** @type {?} */ ((ref.moduleName)), /** @type {?} */ ((ref.name)), containingFile);\n const /** @type {?} */ declarationSymbol = this.findSymbolDeclaration(refSymbol);\n if (!containingFile) {\n this.symbolResolver.recordModuleNameForFileName(refSymbol.filePath, /** @type {?} */ ((ref.moduleName)));\n this.symbolResolver.recordImportAs(declarationSymbol, refSymbol);\n }\n return declarationSymbol;\n }\n /**\n * @param {?} moduleUrl\n * @param {?} name\n * @param {?=} containingFile\n * @return {?}\n */\n findDeclaration(moduleUrl, name, containingFile) {\n return this.findSymbolDeclaration(this.symbolResolver.getSymbolByModule(moduleUrl, name, containingFile));\n }\n /**\n * @param {?} moduleUrl\n * @param {?} name\n * @return {?}\n */\n tryFindDeclaration(moduleUrl, name) {\n return this.symbolResolver.ignoreErrorsFor(() => this.findDeclaration(moduleUrl, name));\n }\n /**\n * @param {?} symbol\n * @return {?}\n */\n findSymbolDeclaration(symbol) {\n const /** @type {?} */ resolvedSymbol = this.symbolResolver.resolveSymbol(symbol);\n if (resolvedSymbol) {\n let /** @type {?} */ resolvedMetadata = resolvedSymbol.metadata;\n if (resolvedMetadata && resolvedMetadata.__symbolic === 'resolved') {\n resolvedMetadata = resolvedMetadata.symbol;\n }\n if (resolvedMetadata instanceof StaticSymbol) {\n return this.findSymbolDeclaration(resolvedSymbol.metadata);\n }\n }\n return symbol;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n annotations(type) {\n let /** @type {?} */ annotations = this.annotationCache.get(type);\n if (!annotations) {\n annotations = [];\n const /** @type {?} */ classMetadata = this.getTypeMetadata(type);\n const /** @type {?} */ parentType = this.findParentType(type, classMetadata);\n if (parentType) {\n const /** @type {?} */ parentAnnotations = this.annotations(parentType);\n annotations.push(...parentAnnotations);\n }\n let /** @type {?} */ ownAnnotations = [];\n if (classMetadata['decorators']) {\n ownAnnotations = this.simplify(type, classMetadata['decorators']);\n annotations.push(...ownAnnotations);\n }\n if (parentType && !this.summaryResolver.isLibraryFile(type.filePath) &&\n this.summaryResolver.isLibraryFile(parentType.filePath)) {\n const /** @type {?} */ summary = this.summaryResolver.resolveSummary(parentType);\n if (summary && summary.type) {\n const /** @type {?} */ requiredAnnotationTypes = /** @type {?} */ ((this.annotationForParentClassWithSummaryKind.get(/** @type {?} */ ((summary.type.summaryKind)))));\n const /** @type {?} */ typeHasRequiredAnnotation = requiredAnnotationTypes.some((requiredType) => ownAnnotations.some(ann => requiredType.isTypeOf(ann)));\n if (!typeHasRequiredAnnotation) {\n this.reportError(formatMetadataError(metadataError(`Class ${type.name} in ${type.filePath} extends from a ${CompileSummaryKind[(/** @type {?} */ ((summary.type.summaryKind)))]} in another compilation unit without duplicating the decorator`, undefined, `Please add a ${requiredAnnotationTypes.map((type) => type.ngMetadataName).join(' or ')} decorator to the class`), type), type);\n }\n }\n }\n this.annotationCache.set(type, annotations.filter(ann => !!ann));\n }\n return annotations;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n propMetadata(type) {\n let /** @type {?} */ propMetadata = this.propertyCache.get(type);\n if (!propMetadata) {\n const /** @type {?} */ classMetadata = this.getTypeMetadata(type);\n propMetadata = {};\n const /** @type {?} */ parentType = this.findParentType(type, classMetadata);\n if (parentType) {\n const /** @type {?} */ parentPropMetadata = this.propMetadata(parentType);\n Object.keys(parentPropMetadata).forEach((parentProp) => {\n /** @type {?} */ ((propMetadata))[parentProp] = parentPropMetadata[parentProp];\n });\n }\n const /** @type {?} */ members = classMetadata['members'] || {};\n Object.keys(members).forEach((propName) => {\n const /** @type {?} */ propData = members[propName];\n const /** @type {?} */ prop = (/** @type {?} */ (propData))\n .find(a => a['__symbolic'] == 'property' || a['__symbolic'] == 'method');\n const /** @type {?} */ decorators = [];\n if (/** @type {?} */ ((propMetadata))[propName]) {\n decorators.push(.../** @type {?} */ ((propMetadata))[propName]);\n } /** @type {?} */\n ((propMetadata))[propName] = decorators;\n if (prop && prop['decorators']) {\n decorators.push(...this.simplify(type, prop['decorators']));\n }\n });\n this.propertyCache.set(type, propMetadata);\n }\n return propMetadata;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n parameters(type) {\n if (!(type instanceof StaticSymbol)) {\n this.reportError(new Error(`parameters received ${JSON.stringify(type)} which is not a StaticSymbol`), type);\n return [];\n }\n try {\n let /** @type {?} */ parameters = this.parameterCache.get(type);\n if (!parameters) {\n const /** @type {?} */ classMetadata = this.getTypeMetadata(type);\n const /** @type {?} */ parentType = this.findParentType(type, classMetadata);\n const /** @type {?} */ members = classMetadata ? classMetadata['members'] : null;\n const /** @type {?} */ ctorData = members ? members['__ctor__'] : null;\n if (ctorData) {\n const /** @type {?} */ ctor = (/** @type {?} */ (ctorData)).find(a => a['__symbolic'] == 'constructor');\n const /** @type {?} */ rawParameterTypes = /** @type {?} */ (ctor['parameters']) || [];\n const /** @type {?} */ parameterDecorators = /** @type {?} */ (this.simplify(type, ctor['parameterDecorators'] || []));\n parameters = [];\n rawParameterTypes.forEach((rawParamType, index) => {\n const /** @type {?} */ nestedResult = [];\n const /** @type {?} */ paramType = this.trySimplify(type, rawParamType);\n if (paramType)\n nestedResult.push(paramType);\n const /** @type {?} */ decorators = parameterDecorators ? parameterDecorators[index] : null;\n if (decorators) {\n nestedResult.push(...decorators);\n } /** @type {?} */\n ((parameters)).push(nestedResult);\n });\n }\n else if (parentType) {\n parameters = this.parameters(parentType);\n }\n if (!parameters) {\n parameters = [];\n }\n this.parameterCache.set(type, parameters);\n }\n return parameters;\n }\n catch (/** @type {?} */ e) {\n console.error(`Failed on type ${JSON.stringify(type)} with error ${e}`);\n throw e;\n }\n }\n /**\n * @param {?} type\n * @return {?}\n */\n _methodNames(type) {\n let /** @type {?} */ methodNames = this.methodCache.get(type);\n if (!methodNames) {\n const /** @type {?} */ classMetadata = this.getTypeMetadata(type);\n methodNames = {};\n const /** @type {?} */ parentType = this.findParentType(type, classMetadata);\n if (parentType) {\n const /** @type {?} */ parentMethodNames = this._methodNames(parentType);\n Object.keys(parentMethodNames).forEach((parentProp) => {\n /** @type {?} */ ((methodNames))[parentProp] = parentMethodNames[parentProp];\n });\n }\n const /** @type {?} */ members = classMetadata['members'] || {};\n Object.keys(members).forEach((propName) => {\n const /** @type {?} */ propData = members[propName];\n const /** @type {?} */ isMethod = (/** @type {?} */ (propData)).some(a => a['__symbolic'] == 'method'); /** @type {?} */\n ((methodNames))[propName] = /** @type {?} */ ((methodNames))[propName] || isMethod;\n });\n this.methodCache.set(type, methodNames);\n }\n return methodNames;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n _staticMembers(type) {\n let /** @type {?} */ staticMembers = this.staticCache.get(type);\n if (!staticMembers) {\n const /** @type {?} */ classMetadata = this.getTypeMetadata(type);\n const /** @type {?} */ staticMemberData = classMetadata['statics'] || {};\n staticMembers = Object.keys(staticMemberData);\n this.staticCache.set(type, staticMembers);\n }\n return staticMembers;\n }\n /**\n * @param {?} type\n * @param {?} classMetadata\n * @return {?}\n */\n findParentType(type, classMetadata) {\n const /** @type {?} */ parentType = this.trySimplify(type, classMetadata['extends']);\n if (parentType instanceof StaticSymbol) {\n return parentType;\n }\n }\n /**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\n hasLifecycleHook(type, lcProperty) {\n if (!(type instanceof StaticSymbol)) {\n this.reportError(new Error(`hasLifecycleHook received ${JSON.stringify(type)} which is not a StaticSymbol`), type);\n }\n try {\n return !!this._methodNames(type)[lcProperty];\n }\n catch (/** @type {?} */ e) {\n console.error(`Failed on type ${JSON.stringify(type)} with error ${e}`);\n throw e;\n }\n }\n /**\n * @param {?} type\n * @return {?}\n */\n guards(type) {\n if (!(type instanceof StaticSymbol)) {\n this.reportError(new Error(`guards received ${JSON.stringify(type)} which is not a StaticSymbol`), type);\n return {};\n }\n const /** @type {?} */ staticMembers = this._staticMembers(type);\n const /** @type {?} */ result = {};\n for (let /** @type {?} */ name of staticMembers) {\n if (name.endsWith(TYPEGUARD_POSTFIX)) {\n let /** @type {?} */ property = name.substr(0, name.length - TYPEGUARD_POSTFIX.length);\n let /** @type {?} */ value;\n if (property.endsWith(USE_IF)) {\n property = name.substr(0, property.length - USE_IF.length);\n value = USE_IF;\n }\n else {\n value = this.getStaticSymbol(type.filePath, type.name, [name]);\n }\n result[property] = value;\n }\n }\n return result;\n }\n /**\n * @param {?} type\n * @param {?} ctor\n * @return {?}\n */\n _registerDecoratorOrConstructor(type, ctor) {\n this.conversionMap.set(type, (context, args) => new ctor(...args));\n }\n /**\n * @param {?} type\n * @param {?} fn\n * @return {?}\n */\n _registerFunction(type, fn) {\n this.conversionMap.set(type, (context, args) => fn.apply(undefined, args));\n }\n /**\n * @return {?}\n */\n initializeConversionMap() {\n this.injectionToken = this.findDeclaration(ANGULAR_CORE, 'InjectionToken');\n this.opaqueToken = this.findDeclaration(ANGULAR_CORE, 'OpaqueToken');\n this.ROUTES = this.tryFindDeclaration(ANGULAR_ROUTER, 'ROUTES');\n this.ANALYZE_FOR_ENTRY_COMPONENTS =\n this.findDeclaration(ANGULAR_CORE, 'ANALYZE_FOR_ENTRY_COMPONENTS');\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Host'), createHost);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Injectable'), createInjectable);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Self'), createSelf);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'SkipSelf'), createSkipSelf);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Inject'), createInject);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Optional'), createOptional);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Attribute'), createAttribute);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'ContentChild'), createContentChild);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'ContentChildren'), createContentChildren);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'ViewChild'), createViewChild);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'ViewChildren'), createViewChildren);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Input'), createInput);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Output'), createOutput);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Pipe'), createPipe);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'HostBinding'), createHostBinding);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'HostListener'), createHostListener);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Directive'), createDirective);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Component'), createComponent);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'NgModule'), createNgModule);\n // Note: Some metadata classes can be used directly with Provider.deps.\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Host'), createHost);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Self'), createSelf);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'SkipSelf'), createSkipSelf);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Optional'), createOptional);\n }\n /**\n * getStaticSymbol produces a Type whose metadata is known but whose implementation is not loaded.\n * All types passed to the StaticResolver should be pseudo-types returned by this method.\n *\n * @param {?} declarationFile the absolute path of the file where the symbol is declared\n * @param {?} name the name of the type.\n * @param {?=} members\n * @return {?}\n */\n getStaticSymbol(declarationFile, name, members) {\n return this.symbolResolver.getStaticSymbol(declarationFile, name, members);\n }\n /**\n * Simplify but discard any errors\n * @param {?} context\n * @param {?} value\n * @return {?}\n */\n trySimplify(context, value) {\n const /** @type {?} */ originalRecorder = this.errorRecorder;\n this.errorRecorder = (error, fileName) => { };\n const /** @type {?} */ result = this.simplify(context, value);\n this.errorRecorder = originalRecorder;\n return result;\n }\n /**\n * \\@internal\n * @param {?} context\n * @param {?} value\n * @return {?}\n */\n simplify(context, value) {\n const /** @type {?} */ self = this;\n let /** @type {?} */ scope = BindingScope.empty;\n const /** @type {?} */ calling = new Map();\n const /** @type {?} */ rootContext = context;\n /**\n * @param {?} context\n * @param {?} value\n * @param {?} depth\n * @param {?} references\n * @return {?}\n */\n function simplifyInContext(context, value, depth, references) {\n /**\n * @param {?} staticSymbol\n * @return {?}\n */\n function resolveReferenceValue(staticSymbol) {\n const /** @type {?} */ resolvedSymbol = self.symbolResolver.resolveSymbol(staticSymbol);\n return resolvedSymbol ? resolvedSymbol.metadata : null;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n function simplifyEagerly(value) {\n return simplifyInContext(context, value, depth, 0);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n function simplifyLazily(value) {\n return simplifyInContext(context, value, depth, references + 1);\n }\n /**\n * @param {?} nestedContext\n * @param {?} value\n * @return {?}\n */\n function simplifyNested(nestedContext, value) {\n if (nestedContext === context) {\n // If the context hasn't changed let the exception propagate unmodified.\n return simplifyInContext(nestedContext, value, depth + 1, references);\n }\n try {\n return simplifyInContext(nestedContext, value, depth + 1, references);\n }\n catch (/** @type {?} */ e) {\n if (isMetadataError(e)) {\n // Propagate the message text up but add a message to the chain that explains how we got\n // here.\n // e.chain implies e.symbol\n const /** @type {?} */ summaryMsg = e.chain ? 'references \\'' + /** @type {?} */ ((e.symbol)).name + '\\'' : errorSummary(e);\n const /** @type {?} */ summary = `'${nestedContext.name}' ${summaryMsg}`;\n const /** @type {?} */ chain = { message: summary, position: e.position, next: e.chain };\n // TODO(chuckj): retrieve the position information indirectly from the collectors node\n // map if the metadata is from a .ts file.\n self.error({\n message: e.message,\n advise: e.advise,\n context: e.context, chain,\n symbol: nestedContext\n }, context);\n }\n else {\n // It is probably an internal error.\n throw e;\n }\n }\n }\n /**\n * @param {?} functionSymbol\n * @param {?} targetFunction\n * @param {?} args\n * @param {?} targetExpression\n * @return {?}\n */\n function simplifyCall(functionSymbol, targetFunction, args, targetExpression) {\n if (targetFunction && targetFunction['__symbolic'] == 'function') {\n if (calling.get(functionSymbol)) {\n self.error({\n message: 'Recursion is not supported',\n summary: `called '${functionSymbol.name}' recursively`,\n value: targetFunction\n }, functionSymbol);\n }\n try {\n const /** @type {?} */ value = targetFunction['value'];\n if (value && (depth != 0 || value.__symbolic != 'error')) {\n const /** @type {?} */ parameters = targetFunction['parameters'];\n const /** @type {?} */ defaults = targetFunction.defaults;\n args = args.map(arg => simplifyNested(context, arg))\n .map(arg => shouldIgnore(arg) ? undefined : arg);\n if (defaults && defaults.length > args.length) {\n args.push(...defaults.slice(args.length).map((value) => simplify(value)));\n }\n calling.set(functionSymbol, true);\n const /** @type {?} */ functionScope = BindingScope.build();\n for (let /** @type {?} */ i = 0; i < parameters.length; i++) {\n functionScope.define(parameters[i], args[i]);\n }\n const /** @type {?} */ oldScope = scope;\n let /** @type {?} */ result;\n try {\n scope = functionScope.done();\n result = simplifyNested(functionSymbol, value);\n }\n finally {\n scope = oldScope;\n }\n return result;\n }\n }\n finally {\n calling.delete(functionSymbol);\n }\n }\n if (depth === 0) {\n // If depth is 0 we are evaluating the top level expression that is describing element\n // decorator. In this case, it is a decorator we don't understand, such as a custom\n // non-angular decorator, and we should just ignore it.\n return IGNORE;\n }\n let /** @type {?} */ position = undefined;\n if (targetExpression && targetExpression.__symbolic == 'resolved') {\n const /** @type {?} */ line = targetExpression.line;\n const /** @type {?} */ character = targetExpression.character;\n const /** @type {?} */ fileName = targetExpression.fileName;\n if (fileName != null && line != null && character != null) {\n position = { fileName, line, column: character };\n }\n }\n self.error({\n message: FUNCTION_CALL_NOT_SUPPORTED,\n context: functionSymbol,\n value: targetFunction, position\n }, context);\n }\n /**\n * @param {?} expression\n * @return {?}\n */\n function simplify(expression) {\n if (isPrimitive(expression)) {\n return expression;\n }\n if (expression instanceof Array) {\n const /** @type {?} */ result = [];\n for (const /** @type {?} */ item of (/** @type {?} */ (expression))) {\n // Check for a spread expression\n if (item && item.__symbolic === 'spread') {\n // We call with references as 0 because we require the actual value and cannot\n // tolerate a reference here.\n const /** @type {?} */ spreadArray = simplifyEagerly(item.expression);\n if (Array.isArray(spreadArray)) {\n for (const /** @type {?} */ spreadItem of spreadArray) {\n result.push(spreadItem);\n }\n continue;\n }\n }\n const /** @type {?} */ value = simplify(item);\n if (shouldIgnore(value)) {\n continue;\n }\n result.push(value);\n }\n return result;\n }\n if (expression instanceof StaticSymbol) {\n // Stop simplification at builtin symbols or if we are in a reference context and\n // the symbol doesn't have members.\n if (expression === self.injectionToken || self.conversionMap.has(expression) ||\n (references > 0 && !expression.members.length)) {\n return expression;\n }\n else {\n const /** @type {?} */ staticSymbol = expression;\n const /** @type {?} */ declarationValue = resolveReferenceValue(staticSymbol);\n if (declarationValue != null) {\n return simplifyNested(staticSymbol, declarationValue);\n }\n else {\n return staticSymbol;\n }\n }\n }\n if (expression) {\n if (expression['__symbolic']) {\n let /** @type {?} */ staticSymbol;\n switch (expression['__symbolic']) {\n case 'binop':\n let /** @type {?} */ left = simplify(expression['left']);\n if (shouldIgnore(left))\n return left;\n let /** @type {?} */ right = simplify(expression['right']);\n if (shouldIgnore(right))\n return right;\n switch (expression['operator']) {\n case '&&':\n return left && right;\n case '||':\n return left || right;\n case '|':\n return left | right;\n case '^':\n return left ^ right;\n case '&':\n return left & right;\n case '==':\n return left == right;\n case '!=':\n return left != right;\n case '===':\n return left === right;\n case '!==':\n return left !== right;\n case '<':\n return left < right;\n case '>':\n return left > right;\n case '<=':\n return left <= right;\n case '>=':\n return left >= right;\n case '<<':\n return left << right;\n case '>>':\n return left >> right;\n case '+':\n return left + right;\n case '-':\n return left - right;\n case '*':\n return left * right;\n case '/':\n return left / right;\n case '%':\n return left % right;\n }\n return null;\n case 'if':\n let /** @type {?} */ condition = simplify(expression['condition']);\n return condition ? simplify(expression['thenExpression']) :\n simplify(expression['elseExpression']);\n case 'pre':\n let /** @type {?} */ operand = simplify(expression['operand']);\n if (shouldIgnore(operand))\n return operand;\n switch (expression['operator']) {\n case '+':\n return operand;\n case '-':\n return -operand;\n case '!':\n return !operand;\n case '~':\n return ~operand;\n }\n return null;\n case 'index':\n let /** @type {?} */ indexTarget = simplifyEagerly(expression['expression']);\n let /** @type {?} */ index = simplifyEagerly(expression['index']);\n if (indexTarget && isPrimitive(index))\n return indexTarget[index];\n return null;\n case 'select':\n const /** @type {?} */ member = expression['member'];\n let /** @type {?} */ selectContext = context;\n let /** @type {?} */ selectTarget = simplify(expression['expression']);\n if (selectTarget instanceof StaticSymbol) {\n const /** @type {?} */ members = selectTarget.members.concat(member);\n selectContext =\n self.getStaticSymbol(selectTarget.filePath, selectTarget.name, members);\n const /** @type {?} */ declarationValue = resolveReferenceValue(selectContext);\n if (declarationValue != null) {\n return simplifyNested(selectContext, declarationValue);\n }\n else {\n return selectContext;\n }\n }\n if (selectTarget && isPrimitive(member))\n return simplifyNested(selectContext, selectTarget[member]);\n return null;\n case 'reference':\n // Note: This only has to deal with variable references, as symbol references have\n // been converted into 'resolved'\n // in the StaticSymbolResolver.\n const /** @type {?} */ name = expression['name'];\n const /** @type {?} */ localValue = scope.resolve(name);\n if (localValue != BindingScope.missing) {\n return localValue;\n }\n break;\n case 'resolved':\n try {\n return simplify(expression.symbol);\n }\n catch (/** @type {?} */ e) {\n // If an error is reported evaluating the symbol record the position of the\n // reference in the error so it can\n // be reported in the error message generated from the exception.\n if (isMetadataError(e) && expression.fileName != null &&\n expression.line != null && expression.character != null) {\n e.position = {\n fileName: expression.fileName,\n line: expression.line,\n column: expression.character\n };\n }\n throw e;\n }\n case 'class':\n return context;\n case 'function':\n return context;\n case 'new':\n case 'call':\n // Determine if the function is a built-in conversion\n staticSymbol = simplifyInContext(context, expression['expression'], depth + 1, /* references */ 0);\n if (staticSymbol instanceof StaticSymbol) {\n if (staticSymbol === self.injectionToken || staticSymbol === self.opaqueToken) {\n // if somebody calls new InjectionToken, don't create an InjectionToken,\n // but rather return the symbol to which the InjectionToken is assigned to.\n // OpaqueToken is supported too as it is required by the language service to\n // support v4 and prior versions of Angular.\n return context;\n }\n const /** @type {?} */ argExpressions = expression['arguments'] || [];\n let /** @type {?} */ converter = self.conversionMap.get(staticSymbol);\n if (converter) {\n const /** @type {?} */ args = argExpressions.map(arg => simplifyNested(context, arg))\n .map(arg => shouldIgnore(arg) ? undefined : arg);\n return converter(context, args);\n }\n else {\n // Determine if the function is one we can simplify.\n const /** @type {?} */ targetFunction = resolveReferenceValue(staticSymbol);\n return simplifyCall(staticSymbol, targetFunction, argExpressions, expression['expression']);\n }\n }\n return IGNORE;\n case 'error':\n let /** @type {?} */ message = expression.message;\n if (expression['line'] != null) {\n self.error({\n message,\n context: expression.context,\n value: expression,\n position: {\n fileName: expression['fileName'],\n line: expression['line'],\n column: expression['character']\n }\n }, context);\n }\n else {\n self.error({ message, context: expression.context }, context);\n }\n return IGNORE;\n case 'ignore':\n return expression;\n }\n return null;\n }\n return mapStringMap(expression, (value, name) => {\n if (REFERENCE_SET.has(name)) {\n if (name === USE_VALUE && PROVIDE in expression) {\n // If this is a provider expression, check for special tokens that need the value\n // during analysis.\n const /** @type {?} */ provide = simplify(expression.provide);\n if (provide === self.ROUTES || provide == self.ANALYZE_FOR_ENTRY_COMPONENTS) {\n return simplify(value);\n }\n }\n return simplifyLazily(value);\n }\n return simplify(value);\n });\n }\n return IGNORE;\n }\n return simplify(value);\n }\n let /** @type {?} */ result;\n try {\n result = simplifyInContext(context, value, 0, 0);\n }\n catch (/** @type {?} */ e) {\n if (this.errorRecorder) {\n this.reportError(e, context);\n }\n else {\n throw formatMetadataError(e, context);\n }\n }\n if (shouldIgnore(result)) {\n return undefined;\n }\n return result;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n getTypeMetadata(type) {\n const /** @type {?} */ resolvedSymbol = this.symbolResolver.resolveSymbol(type);\n return resolvedSymbol && resolvedSymbol.metadata ? resolvedSymbol.metadata :\n { __symbolic: 'class' };\n }\n /**\n * @param {?} error\n * @param {?} context\n * @param {?=} path\n * @return {?}\n */\n reportError(error, context, path) {\n if (this.errorRecorder) {\n this.errorRecorder(formatMetadataError(error, context), (context && context.filePath) || path);\n }\n else {\n throw error;\n }\n }\n /**\n * @param {?} __0\n * @param {?} reportingContext\n * @return {?}\n */\n error({ message, summary, advise, position, context, value, symbol, chain }, reportingContext) {\n this.reportError(metadataError(message, summary, advise, position, symbol, context, chain), reportingContext);\n }\n}\nfunction StaticReflector_tsickle_Closure_declarations() {\n /** @type {?} */\n StaticReflector.prototype.annotationCache;\n /** @type {?} */\n StaticReflector.prototype.propertyCache;\n /** @type {?} */\n StaticReflector.prototype.parameterCache;\n /** @type {?} */\n StaticReflector.prototype.methodCache;\n /** @type {?} */\n StaticReflector.prototype.staticCache;\n /** @type {?} */\n StaticReflector.prototype.conversionMap;\n /** @type {?} */\n StaticReflector.prototype.injectionToken;\n /** @type {?} */\n StaticReflector.prototype.opaqueToken;\n /** @type {?} */\n StaticReflector.prototype.ROUTES;\n /** @type {?} */\n StaticReflector.prototype.ANALYZE_FOR_ENTRY_COMPONENTS;\n /** @type {?} */\n StaticReflector.prototype.annotationForParentClassWithSummaryKind;\n /** @type {?} */\n StaticReflector.prototype.summaryResolver;\n /** @type {?} */\n StaticReflector.prototype.symbolResolver;\n /** @type {?} */\n StaticReflector.prototype.errorRecorder;\n}\n/**\n * @record\n */\nfunction Position() { }\nfunction Position_tsickle_Closure_declarations() {\n /** @type {?} */\n Position.prototype.fileName;\n /** @type {?} */\n Position.prototype.line;\n /** @type {?} */\n Position.prototype.column;\n}\n/**\n * @record\n */\nfunction MetadataMessageChain() { }\nfunction MetadataMessageChain_tsickle_Closure_declarations() {\n /** @type {?} */\n MetadataMessageChain.prototype.message;\n /** @type {?|undefined} */\n MetadataMessageChain.prototype.summary;\n /** @type {?|undefined} */\n MetadataMessageChain.prototype.position;\n /** @type {?|undefined} */\n MetadataMessageChain.prototype.context;\n /** @type {?|undefined} */\n MetadataMessageChain.prototype.symbol;\n /** @type {?|undefined} */\n MetadataMessageChain.prototype.next;\n}\nconst /** @type {?} */ METADATA_ERROR = 'ngMetadataError';\n/**\n * @param {?} message\n * @param {?=} summary\n * @param {?=} advise\n * @param {?=} position\n * @param {?=} symbol\n * @param {?=} context\n * @param {?=} chain\n * @return {?}\n */\nfunction metadataError(message, summary, advise, position, symbol, context, chain) {\n const /** @type {?} */ error = /** @type {?} */ (syntaxError(message));\n (/** @type {?} */ (error))[METADATA_ERROR] = true;\n if (advise)\n error.advise = advise;\n if (position)\n error.position = position;\n if (summary)\n error.summary = summary;\n if (context)\n error.context = context;\n if (chain)\n error.chain = chain;\n if (symbol)\n error.symbol = symbol;\n return error;\n}\n/**\n * @param {?} error\n * @return {?}\n */\nfunction isMetadataError(error) {\n return !!(/** @type {?} */ (error))[METADATA_ERROR];\n}\nconst /** @type {?} */ REFERENCE_TO_NONEXPORTED_CLASS = 'Reference to non-exported class';\nconst /** @type {?} */ VARIABLE_NOT_INITIALIZED = 'Variable not initialized';\nconst /** @type {?} */ DESTRUCTURE_NOT_SUPPORTED = 'Destructuring not supported';\nconst /** @type {?} */ COULD_NOT_RESOLVE_TYPE = 'Could not resolve type';\nconst /** @type {?} */ FUNCTION_CALL_NOT_SUPPORTED = 'Function call not supported';\nconst /** @type {?} */ REFERENCE_TO_LOCAL_SYMBOL = 'Reference to a local symbol';\nconst /** @type {?} */ LAMBDA_NOT_SUPPORTED = 'Lambda not supported';\n/**\n * @param {?} message\n * @param {?} context\n * @return {?}\n */\nfunction expandedMessage(message, context) {\n switch (message) {\n case REFERENCE_TO_NONEXPORTED_CLASS:\n if (context && context.className) {\n return `References to a non-exported class are not supported in decorators but ${context.className} was referenced.`;\n }\n break;\n case VARIABLE_NOT_INITIALIZED:\n return 'Only initialized variables and constants can be referenced in decorators because the value of this variable is needed by the template compiler';\n case DESTRUCTURE_NOT_SUPPORTED:\n return 'Referencing an exported destructured variable or constant is not supported in decorators and this value is needed by the template compiler';\n case COULD_NOT_RESOLVE_TYPE:\n if (context && context.typeName) {\n return `Could not resolve type ${context.typeName}`;\n }\n break;\n case FUNCTION_CALL_NOT_SUPPORTED:\n if (context && context.name) {\n return `Function calls are not supported in decorators but '${context.name}' was called`;\n }\n return 'Function calls are not supported in decorators';\n case REFERENCE_TO_LOCAL_SYMBOL:\n if (context && context.name) {\n return `Reference to a local (non-exported) symbols are not supported in decorators but '${context.name}' was referenced`;\n }\n break;\n case LAMBDA_NOT_SUPPORTED:\n return `Function expressions are not supported in decorators`;\n }\n return message;\n}\n/**\n * @param {?} message\n * @param {?} context\n * @return {?}\n */\nfunction messageAdvise(message, context) {\n switch (message) {\n case REFERENCE_TO_NONEXPORTED_CLASS:\n if (context && context.className) {\n return `Consider exporting '${context.className}'`;\n }\n break;\n case DESTRUCTURE_NOT_SUPPORTED:\n return 'Consider simplifying to avoid destructuring';\n case REFERENCE_TO_LOCAL_SYMBOL:\n if (context && context.name) {\n return `Consider exporting '${context.name}'`;\n }\n break;\n case LAMBDA_NOT_SUPPORTED:\n return `Consider changing the function expression into an exported function`;\n }\n return undefined;\n}\n/**\n * @param {?} error\n * @return {?}\n */\nfunction errorSummary(error) {\n if (error.summary) {\n return error.summary;\n }\n switch (error.message) {\n case REFERENCE_TO_NONEXPORTED_CLASS:\n if (error.context && error.context.className) {\n return `references non-exported class ${error.context.className}`;\n }\n break;\n case VARIABLE_NOT_INITIALIZED:\n return 'is not initialized';\n case DESTRUCTURE_NOT_SUPPORTED:\n return 'is a destructured variable';\n case COULD_NOT_RESOLVE_TYPE:\n return 'could not be resolved';\n case FUNCTION_CALL_NOT_SUPPORTED:\n if (error.context && error.context.name) {\n return `calls '${error.context.name}'`;\n }\n return `calls a function`;\n case REFERENCE_TO_LOCAL_SYMBOL:\n if (error.context && error.context.name) {\n return `references local variable ${error.context.name}`;\n }\n return `references a local variable`;\n }\n return 'contains the error';\n}\n/**\n * @param {?} input\n * @param {?} transform\n * @return {?}\n */\nfunction mapStringMap(input, transform) {\n if (!input)\n return {};\n const /** @type {?} */ result = {};\n Object.keys(input).forEach((key) => {\n const /** @type {?} */ value = transform(input[key], key);\n if (!shouldIgnore(value)) {\n if (HIDDEN_KEY.test(key)) {\n Object.defineProperty(result, key, { enumerable: false, configurable: true, value: value });\n }\n else {\n result[key] = value;\n }\n }\n });\n return result;\n}\n/**\n * @param {?} o\n * @return {?}\n */\nfunction isPrimitive(o) {\n return o === null || (typeof o !== 'function' && typeof o !== 'object');\n}\n/**\n * @record\n */\nfunction BindingScopeBuilder() { }\nfunction BindingScopeBuilder_tsickle_Closure_declarations() {\n /** @type {?} */\n BindingScopeBuilder.prototype.define;\n /** @type {?} */\n BindingScopeBuilder.prototype.done;\n}\n/**\n * @abstract\n */\nclass BindingScope {\n /**\n * @return {?}\n */\n static build() {\n const /** @type {?} */ current = new Map();\n return {\n define: function (name, value) {\n current.set(name, value);\n return this;\n },\n done: function () {\n return current.size > 0 ? new PopulatedScope(current) : BindingScope.empty;\n }\n };\n }\n}\nBindingScope.missing = {};\nBindingScope.empty = { resolve: name => BindingScope.missing };\nfunction BindingScope_tsickle_Closure_declarations() {\n /** @type {?} */\n BindingScope.missing;\n /** @type {?} */\n BindingScope.empty;\n /**\n * @abstract\n * @param {?} name\n * @return {?}\n */\n BindingScope.prototype.resolve = function (name) { };\n}\nclass PopulatedScope extends BindingScope {\n /**\n * @param {?} bindings\n */\n constructor(bindings) {\n super();\n this.bindings = bindings;\n }\n /**\n * @param {?} name\n * @return {?}\n */\n resolve(name) {\n return this.bindings.has(name) ? this.bindings.get(name) : BindingScope.missing;\n }\n}\nfunction PopulatedScope_tsickle_Closure_declarations() {\n /** @type {?} */\n PopulatedScope.prototype.bindings;\n}\n/**\n * @param {?} chain\n * @param {?} advise\n * @return {?}\n */\nfunction formatMetadataMessageChain(chain, advise) {\n const /** @type {?} */ expanded = expandedMessage(chain.message, chain.context);\n const /** @type {?} */ nesting = chain.symbol ? ` in '${chain.symbol.name}'` : '';\n const /** @type {?} */ message = `${expanded}${nesting}`;\n const /** @type {?} */ position = chain.position;\n const /** @type {?} */ next = chain.next ?\n formatMetadataMessageChain(chain.next, advise) :\n advise ? { message: advise } : undefined;\n return { message, position, next };\n}\n/**\n * @param {?} e\n * @param {?} context\n * @return {?}\n */\nfunction formatMetadataError(e, context) {\n if (isMetadataError(e)) {\n // Produce a formatted version of the and leaving enough information in the original error\n // to recover the formatting information to eventually produce a diagnostic error message.\n const /** @type {?} */ position = e.position;\n const /** @type {?} */ chain = {\n message: `Error during template compile of '${context.name}'`,\n position: position,\n next: { message: e.message, next: e.chain, context: e.context, symbol: e.symbol }\n };\n const /** @type {?} */ advise = e.advise || messageAdvise(e.message, e.context);\n return formattedError(formatMetadataMessageChain(chain, advise));\n }\n return e;\n}\n//# sourceMappingURL=static_reflector.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { deserializeSummaries } from './summary_serializer';\nimport { stripGeneratedFileSuffix, summaryFileName } from './util';\n/**\n * @record\n */\nexport function AotSummaryResolverHost() { }\nfunction AotSummaryResolverHost_tsickle_Closure_declarations() {\n /**\n * Loads an NgModule/Directive/Pipe summary file\n * @type {?}\n */\n AotSummaryResolverHost.prototype.loadSummary;\n /**\n * Returns whether a file is a source file or not.\n * @type {?}\n */\n AotSummaryResolverHost.prototype.isSourceFile;\n /**\n * Converts a file name into a representation that should be stored in a summary file.\n * This has to include changing the suffix as well.\n * E.g.\n * `some_file.ts` -> `some_file.d.ts`\n *\n * \\@param referringSrcFileName the soure file that refers to fileName\n * @type {?}\n */\n AotSummaryResolverHost.prototype.toSummaryFileName;\n /**\n * Converts a fileName that was processed by `toSummaryFileName` back into a real fileName\n * given the fileName of the library that is referrig to it.\n * @type {?}\n */\n AotSummaryResolverHost.prototype.fromSummaryFileName;\n}\nexport class AotSummaryResolver {\n /**\n * @param {?} host\n * @param {?} staticSymbolCache\n */\n constructor(host, staticSymbolCache) {\n this.host = host;\n this.staticSymbolCache = staticSymbolCache;\n this.summaryCache = new Map();\n this.loadedFilePaths = new Map();\n this.importAs = new Map();\n this.knownFileNameToModuleNames = new Map();\n }\n /**\n * @param {?} filePath\n * @return {?}\n */\n isLibraryFile(filePath) {\n // Note: We need to strip the .ngfactory. file path,\n // so this method also works for generated files\n // (for which host.isSourceFile will always return false).\n return !this.host.isSourceFile(stripGeneratedFileSuffix(filePath));\n }\n /**\n * @param {?} filePath\n * @param {?} referringSrcFileName\n * @return {?}\n */\n toSummaryFileName(filePath, referringSrcFileName) {\n return this.host.toSummaryFileName(filePath, referringSrcFileName);\n }\n /**\n * @param {?} fileName\n * @param {?} referringLibFileName\n * @return {?}\n */\n fromSummaryFileName(fileName, referringLibFileName) {\n return this.host.fromSummaryFileName(fileName, referringLibFileName);\n }\n /**\n * @param {?} staticSymbol\n * @return {?}\n */\n resolveSummary(staticSymbol) {\n const /** @type {?} */ rootSymbol = staticSymbol.members.length ?\n this.staticSymbolCache.get(staticSymbol.filePath, staticSymbol.name) :\n staticSymbol;\n let /** @type {?} */ summary = this.summaryCache.get(rootSymbol);\n if (!summary) {\n this._loadSummaryFile(staticSymbol.filePath);\n summary = /** @type {?} */ ((this.summaryCache.get(staticSymbol)));\n }\n return (rootSymbol === staticSymbol && summary) || null;\n }\n /**\n * @param {?} filePath\n * @return {?}\n */\n getSymbolsOf(filePath) {\n if (this._loadSummaryFile(filePath)) {\n return Array.from(this.summaryCache.keys()).filter((symbol) => symbol.filePath === filePath);\n }\n return null;\n }\n /**\n * @param {?} staticSymbol\n * @return {?}\n */\n getImportAs(staticSymbol) {\n staticSymbol.assertNoMembers();\n return /** @type {?} */ ((this.importAs.get(staticSymbol)));\n }\n /**\n * Converts a file path to a module name that can be used as an `import`.\n * @param {?} importedFilePath\n * @return {?}\n */\n getKnownModuleName(importedFilePath) {\n return this.knownFileNameToModuleNames.get(importedFilePath) || null;\n }\n /**\n * @param {?} summary\n * @return {?}\n */\n addSummary(summary) { this.summaryCache.set(summary.symbol, summary); }\n /**\n * @param {?} filePath\n * @return {?}\n */\n _loadSummaryFile(filePath) {\n let /** @type {?} */ hasSummary = this.loadedFilePaths.get(filePath);\n if (hasSummary != null) {\n return hasSummary;\n }\n let /** @type {?} */ json = null;\n if (this.isLibraryFile(filePath)) {\n const /** @type {?} */ summaryFilePath = summaryFileName(filePath);\n try {\n json = this.host.loadSummary(summaryFilePath);\n }\n catch (/** @type {?} */ e) {\n console.error(`Error loading summary file ${summaryFilePath}`);\n throw e;\n }\n }\n hasSummary = json != null;\n this.loadedFilePaths.set(filePath, hasSummary);\n if (json) {\n const { moduleName, summaries, importAs } = deserializeSummaries(this.staticSymbolCache, this, filePath, json);\n summaries.forEach((summary) => this.summaryCache.set(summary.symbol, summary));\n if (moduleName) {\n this.knownFileNameToModuleNames.set(filePath, moduleName);\n }\n importAs.forEach((importAs) => { this.importAs.set(importAs.symbol, importAs.importAs); });\n }\n return hasSummary;\n }\n}\nfunction AotSummaryResolver_tsickle_Closure_declarations() {\n /** @type {?} */\n AotSummaryResolver.prototype.summaryCache;\n /** @type {?} */\n AotSummaryResolver.prototype.loadedFilePaths;\n /** @type {?} */\n AotSummaryResolver.prototype.importAs;\n /** @type {?} */\n AotSummaryResolver.prototype.knownFileNameToModuleNames;\n /** @type {?} */\n AotSummaryResolver.prototype.host;\n /** @type {?} */\n AotSummaryResolver.prototype.staticSymbolCache;\n}\n//# sourceMappingURL=summary_resolver.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { CompilerConfig } from '../config';\nimport { ViewEncapsulation } from '../core';\nimport { DirectiveNormalizer } from '../directive_normalizer';\nimport { DirectiveResolver } from '../directive_resolver';\nimport { Lexer } from '../expression_parser/lexer';\nimport { Parser } from '../expression_parser/parser';\nimport { I18NHtmlParser } from '../i18n/i18n_html_parser';\nimport { CompileMetadataResolver } from '../metadata_resolver';\nimport { HtmlParser } from '../ml_parser/html_parser';\nimport { NgModuleCompiler } from '../ng_module_compiler';\nimport { NgModuleResolver } from '../ng_module_resolver';\nimport { TypeScriptEmitter } from '../output/ts_emitter';\nimport { PipeResolver } from '../pipe_resolver';\nimport { DomElementSchemaRegistry } from '../schema/dom_element_schema_registry';\nimport { StyleCompiler } from '../style_compiler';\nimport { TemplateParser } from '../template_parser/template_parser';\nimport { syntaxError } from '../util';\nimport { TypeCheckCompiler } from '../view_compiler/type_check_compiler';\nimport { ViewCompiler } from '../view_compiler/view_compiler';\nimport { AotCompiler } from './compiler';\nimport { StaticReflector } from './static_reflector';\nimport { StaticSymbolCache } from './static_symbol';\nimport { StaticSymbolResolver } from './static_symbol_resolver';\nimport { AotSummaryResolver } from './summary_resolver';\n/**\n * @param {?} host\n * @return {?}\n */\nexport function createAotUrlResolver(host) {\n return {\n resolve: (basePath, url) => {\n const /** @type {?} */ filePath = host.resourceNameToFileName(url, basePath);\n if (!filePath) {\n throw syntaxError(`Couldn't resolve resource ${url} from ${basePath}`);\n }\n return filePath;\n }\n };\n}\n/**\n * Creates a new AotCompiler based on options and a host.\n * @param {?} compilerHost\n * @param {?} options\n * @param {?=} errorCollector\n * @return {?}\n */\nexport function createAotCompiler(compilerHost, options, errorCollector) {\n let /** @type {?} */ translations = options.translations || '';\n const /** @type {?} */ urlResolver = createAotUrlResolver(compilerHost);\n const /** @type {?} */ symbolCache = new StaticSymbolCache();\n const /** @type {?} */ summaryResolver = new AotSummaryResolver(compilerHost, symbolCache);\n const /** @type {?} */ symbolResolver = new StaticSymbolResolver(compilerHost, symbolCache, summaryResolver);\n const /** @type {?} */ staticReflector = new StaticReflector(summaryResolver, symbolResolver, [], [], errorCollector);\n const /** @type {?} */ htmlParser = new I18NHtmlParser(new HtmlParser(), translations, options.i18nFormat, options.missingTranslation, console);\n const /** @type {?} */ config = new CompilerConfig({\n defaultEncapsulation: ViewEncapsulation.Emulated,\n useJit: false,\n enableLegacyTemplate: options.enableLegacyTemplate === true,\n missingTranslation: options.missingTranslation,\n preserveWhitespaces: options.preserveWhitespaces,\n strictInjectionParameters: options.strictInjectionParameters,\n });\n const /** @type {?} */ normalizer = new DirectiveNormalizer({ get: (url) => compilerHost.loadResource(url) }, urlResolver, htmlParser, config);\n const /** @type {?} */ expressionParser = new Parser(new Lexer());\n const /** @type {?} */ elementSchemaRegistry = new DomElementSchemaRegistry();\n const /** @type {?} */ tmplParser = new TemplateParser(config, staticReflector, expressionParser, elementSchemaRegistry, htmlParser, console, []);\n const /** @type {?} */ resolver = new CompileMetadataResolver(config, htmlParser, new NgModuleResolver(staticReflector), new DirectiveResolver(staticReflector), new PipeResolver(staticReflector), summaryResolver, elementSchemaRegistry, normalizer, console, symbolCache, staticReflector, errorCollector);\n // TODO(vicb): do not pass options.i18nFormat here\n const /** @type {?} */ viewCompiler = new ViewCompiler(staticReflector);\n const /** @type {?} */ typeCheckCompiler = new TypeCheckCompiler(options, staticReflector);\n const /** @type {?} */ compiler = new AotCompiler(config, options, compilerHost, staticReflector, resolver, tmplParser, new StyleCompiler(urlResolver), viewCompiler, typeCheckCompiler, new NgModuleCompiler(staticReflector), new TypeScriptEmitter(), summaryResolver, symbolResolver);\n return { compiler, reflector: staticReflector };\n}\n//# sourceMappingURL=compiler_factory.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @record\n */\nexport function Summary() { }\nfunction Summary_tsickle_Closure_declarations() {\n /** @type {?} */\n Summary.prototype.symbol;\n /** @type {?} */\n Summary.prototype.metadata;\n /** @type {?|undefined} */\n Summary.prototype.type;\n}\n/**\n * @abstract\n */\nexport class SummaryResolver {\n}\nfunction SummaryResolver_tsickle_Closure_declarations() {\n /**\n * @abstract\n * @param {?} fileName\n * @return {?}\n */\n SummaryResolver.prototype.isLibraryFile = function (fileName) { };\n /**\n * @abstract\n * @param {?} fileName\n * @param {?} referringSrcFileName\n * @return {?}\n */\n SummaryResolver.prototype.toSummaryFileName = function (fileName, referringSrcFileName) { };\n /**\n * @abstract\n * @param {?} fileName\n * @param {?} referringLibFileName\n * @return {?}\n */\n SummaryResolver.prototype.fromSummaryFileName = function (fileName, referringLibFileName) { };\n /**\n * @abstract\n * @param {?} reference\n * @return {?}\n */\n SummaryResolver.prototype.resolveSummary = function (reference) { };\n /**\n * @abstract\n * @param {?} filePath\n * @return {?}\n */\n SummaryResolver.prototype.getSymbolsOf = function (filePath) { };\n /**\n * @abstract\n * @param {?} reference\n * @return {?}\n */\n SummaryResolver.prototype.getImportAs = function (reference) { };\n /**\n * @abstract\n * @param {?} fileName\n * @return {?}\n */\n SummaryResolver.prototype.getKnownModuleName = function (fileName) { };\n /**\n * @abstract\n * @param {?} summary\n * @return {?}\n */\n SummaryResolver.prototype.addSummary = function (summary) { };\n}\nexport class JitSummaryResolver {\n constructor() {\n this._summaries = new Map();\n }\n /**\n * @return {?}\n */\n isLibraryFile() { return false; }\n /**\n * @param {?} fileName\n * @return {?}\n */\n toSummaryFileName(fileName) { return fileName; }\n /**\n * @param {?} fileName\n * @return {?}\n */\n fromSummaryFileName(fileName) { return fileName; }\n /**\n * @param {?} reference\n * @return {?}\n */\n resolveSummary(reference) {\n return this._summaries.get(reference) || null;\n }\n /**\n * @return {?}\n */\n getSymbolsOf() { return []; }\n /**\n * @param {?} reference\n * @return {?}\n */\n getImportAs(reference) { return reference; }\n /**\n * @param {?} fileName\n * @return {?}\n */\n getKnownModuleName(fileName) { return null; }\n /**\n * @param {?} summary\n * @return {?}\n */\n addSummary(summary) { this._summaries.set(summary.symbol, summary); }\n}\nfunction JitSummaryResolver_tsickle_Closure_declarations() {\n /** @type {?} */\n JitSummaryResolver.prototype._summaries;\n}\n//# sourceMappingURL=summary_resolver.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as o from './output_ast';\nimport { debugOutputAstAsTypeScript } from './ts_emitter';\n/**\n * @param {?} statements\n * @param {?} reflector\n * @return {?}\n */\nexport function interpretStatements(statements, reflector) {\n const /** @type {?} */ ctx = new _ExecutionContext(null, null, null, new Map());\n const /** @type {?} */ visitor = new StatementInterpreter(reflector);\n visitor.visitAllStatements(statements, ctx);\n const /** @type {?} */ result = {};\n ctx.exports.forEach((exportName) => { result[exportName] = ctx.vars.get(exportName); });\n return result;\n}\n/**\n * @param {?} varNames\n * @param {?} varValues\n * @param {?} statements\n * @param {?} ctx\n * @param {?} visitor\n * @return {?}\n */\nfunction _executeFunctionStatements(varNames, varValues, statements, ctx, visitor) {\n const /** @type {?} */ childCtx = ctx.createChildWihtLocalVars();\n for (let /** @type {?} */ i = 0; i < varNames.length; i++) {\n childCtx.vars.set(varNames[i], varValues[i]);\n }\n const /** @type {?} */ result = visitor.visitAllStatements(statements, childCtx);\n return result ? result.value : null;\n}\nclass _ExecutionContext {\n /**\n * @param {?} parent\n * @param {?} instance\n * @param {?} className\n * @param {?} vars\n */\n constructor(parent, instance, className, vars) {\n this.parent = parent;\n this.instance = instance;\n this.className = className;\n this.vars = vars;\n this.exports = [];\n }\n /**\n * @return {?}\n */\n createChildWihtLocalVars() {\n return new _ExecutionContext(this, this.instance, this.className, new Map());\n }\n}\nfunction _ExecutionContext_tsickle_Closure_declarations() {\n /** @type {?} */\n _ExecutionContext.prototype.exports;\n /** @type {?} */\n _ExecutionContext.prototype.parent;\n /** @type {?} */\n _ExecutionContext.prototype.instance;\n /** @type {?} */\n _ExecutionContext.prototype.className;\n /** @type {?} */\n _ExecutionContext.prototype.vars;\n}\nclass ReturnValue {\n /**\n * @param {?} value\n */\n constructor(value) {\n this.value = value;\n }\n}\nfunction ReturnValue_tsickle_Closure_declarations() {\n /** @type {?} */\n ReturnValue.prototype.value;\n}\n/**\n * @param {?} _classStmt\n * @param {?} _ctx\n * @param {?} _visitor\n * @return {?}\n */\nfunction createDynamicClass(_classStmt, _ctx, _visitor) {\n const /** @type {?} */ propertyDescriptors = {};\n _classStmt.getters.forEach((getter) => {\n // Note: use `function` instead of arrow function to capture `this`\n propertyDescriptors[getter.name] = {\n configurable: false,\n get: function () {\n const /** @type {?} */ instanceCtx = new _ExecutionContext(_ctx, this, _classStmt.name, _ctx.vars);\n return _executeFunctionStatements([], [], getter.body, instanceCtx, _visitor);\n }\n };\n });\n _classStmt.methods.forEach(function (method) {\n const /** @type {?} */ paramNames = method.params.map(param => param.name);\n // Note: use `function` instead of arrow function to capture `this`\n propertyDescriptors[/** @type {?} */ ((method.name))] = {\n writable: false,\n configurable: false,\n value: function (...args) {\n const /** @type {?} */ instanceCtx = new _ExecutionContext(_ctx, this, _classStmt.name, _ctx.vars);\n return _executeFunctionStatements(paramNames, args, method.body, instanceCtx, _visitor);\n }\n };\n });\n const /** @type {?} */ ctorParamNames = _classStmt.constructorMethod.params.map(param => param.name);\n // Note: use `function` instead of arrow function to capture `this`\n const /** @type {?} */ ctor = function (...args) {\n const /** @type {?} */ instanceCtx = new _ExecutionContext(_ctx, this, _classStmt.name, _ctx.vars);\n _classStmt.fields.forEach((field) => { this[field.name] = undefined; });\n _executeFunctionStatements(ctorParamNames, args, _classStmt.constructorMethod.body, instanceCtx, _visitor);\n };\n const /** @type {?} */ superClass = _classStmt.parent ? _classStmt.parent.visitExpression(_visitor, _ctx) : Object;\n ctor.prototype = Object.create(superClass.prototype, propertyDescriptors);\n return ctor;\n}\nclass StatementInterpreter {\n /**\n * @param {?} reflector\n */\n constructor(reflector) {\n this.reflector = reflector;\n }\n /**\n * @param {?} ast\n * @return {?}\n */\n debugAst(ast) { return debugOutputAstAsTypeScript(ast); }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitDeclareVarStmt(stmt, ctx) {\n ctx.vars.set(stmt.name, stmt.value.visitExpression(this, ctx));\n if (stmt.hasModifier(o.StmtModifier.Exported)) {\n ctx.exports.push(stmt.name);\n }\n return null;\n }\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n visitWriteVarExpr(expr, ctx) {\n const /** @type {?} */ value = expr.value.visitExpression(this, ctx);\n let /** @type {?} */ currCtx = ctx;\n while (currCtx != null) {\n if (currCtx.vars.has(expr.name)) {\n currCtx.vars.set(expr.name, value);\n return value;\n }\n currCtx = /** @type {?} */ ((currCtx.parent));\n }\n throw new Error(`Not declared variable ${expr.name}`);\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitReadVarExpr(ast, ctx) {\n let /** @type {?} */ varName = /** @type {?} */ ((ast.name));\n if (ast.builtin != null) {\n switch (ast.builtin) {\n case o.BuiltinVar.Super:\n return ctx.instance.__proto__;\n case o.BuiltinVar.This:\n return ctx.instance;\n case o.BuiltinVar.CatchError:\n varName = CATCH_ERROR_VAR;\n break;\n case o.BuiltinVar.CatchStack:\n varName = CATCH_STACK_VAR;\n break;\n default:\n throw new Error(`Unknown builtin variable ${ast.builtin}`);\n }\n }\n let /** @type {?} */ currCtx = ctx;\n while (currCtx != null) {\n if (currCtx.vars.has(varName)) {\n return currCtx.vars.get(varName);\n }\n currCtx = /** @type {?} */ ((currCtx.parent));\n }\n throw new Error(`Not declared variable ${varName}`);\n }\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n visitWriteKeyExpr(expr, ctx) {\n const /** @type {?} */ receiver = expr.receiver.visitExpression(this, ctx);\n const /** @type {?} */ index = expr.index.visitExpression(this, ctx);\n const /** @type {?} */ value = expr.value.visitExpression(this, ctx);\n receiver[index] = value;\n return value;\n }\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n visitWritePropExpr(expr, ctx) {\n const /** @type {?} */ receiver = expr.receiver.visitExpression(this, ctx);\n const /** @type {?} */ value = expr.value.visitExpression(this, ctx);\n receiver[expr.name] = value;\n return value;\n }\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n visitInvokeMethodExpr(expr, ctx) {\n const /** @type {?} */ receiver = expr.receiver.visitExpression(this, ctx);\n const /** @type {?} */ args = this.visitAllExpressions(expr.args, ctx);\n let /** @type {?} */ result;\n if (expr.builtin != null) {\n switch (expr.builtin) {\n case o.BuiltinMethod.ConcatArray:\n result = receiver.concat(...args);\n break;\n case o.BuiltinMethod.SubscribeObservable:\n result = receiver.subscribe({ next: args[0] });\n break;\n case o.BuiltinMethod.Bind:\n result = receiver.bind(...args);\n break;\n default:\n throw new Error(`Unknown builtin method ${expr.builtin}`);\n }\n }\n else {\n result = receiver[/** @type {?} */ ((expr.name))].apply(receiver, args);\n }\n return result;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitInvokeFunctionExpr(stmt, ctx) {\n const /** @type {?} */ args = this.visitAllExpressions(stmt.args, ctx);\n const /** @type {?} */ fnExpr = stmt.fn;\n if (fnExpr instanceof o.ReadVarExpr && fnExpr.builtin === o.BuiltinVar.Super) {\n ctx.instance.constructor.prototype.constructor.apply(ctx.instance, args);\n return null;\n }\n else {\n const /** @type {?} */ fn = stmt.fn.visitExpression(this, ctx);\n return fn.apply(null, args);\n }\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitReturnStmt(stmt, ctx) {\n return new ReturnValue(stmt.value.visitExpression(this, ctx));\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitDeclareClassStmt(stmt, ctx) {\n const /** @type {?} */ clazz = createDynamicClass(stmt, ctx, this);\n ctx.vars.set(stmt.name, clazz);\n if (stmt.hasModifier(o.StmtModifier.Exported)) {\n ctx.exports.push(stmt.name);\n }\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitExpressionStmt(stmt, ctx) {\n return stmt.expr.visitExpression(this, ctx);\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitIfStmt(stmt, ctx) {\n const /** @type {?} */ condition = stmt.condition.visitExpression(this, ctx);\n if (condition) {\n return this.visitAllStatements(stmt.trueCase, ctx);\n }\n else if (stmt.falseCase != null) {\n return this.visitAllStatements(stmt.falseCase, ctx);\n }\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitTryCatchStmt(stmt, ctx) {\n try {\n return this.visitAllStatements(stmt.bodyStmts, ctx);\n }\n catch (/** @type {?} */ e) {\n const /** @type {?} */ childCtx = ctx.createChildWihtLocalVars();\n childCtx.vars.set(CATCH_ERROR_VAR, e);\n childCtx.vars.set(CATCH_STACK_VAR, e.stack);\n return this.visitAllStatements(stmt.catchStmts, childCtx);\n }\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitThrowStmt(stmt, ctx) {\n throw stmt.error.visitExpression(this, ctx);\n }\n /**\n * @param {?} stmt\n * @param {?=} context\n * @return {?}\n */\n visitCommentStmt(stmt, context) { return null; }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitInstantiateExpr(ast, ctx) {\n const /** @type {?} */ args = this.visitAllExpressions(ast.args, ctx);\n const /** @type {?} */ clazz = ast.classExpr.visitExpression(this, ctx);\n return new clazz(...args);\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitLiteralExpr(ast, ctx) { return ast.value; }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitExternalExpr(ast, ctx) {\n return this.reflector.resolveExternalReference(ast.value);\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitConditionalExpr(ast, ctx) {\n if (ast.condition.visitExpression(this, ctx)) {\n return ast.trueCase.visitExpression(this, ctx);\n }\n else if (ast.falseCase != null) {\n return ast.falseCase.visitExpression(this, ctx);\n }\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitNotExpr(ast, ctx) {\n return !ast.condition.visitExpression(this, ctx);\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitAssertNotNullExpr(ast, ctx) {\n return ast.condition.visitExpression(this, ctx);\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitCastExpr(ast, ctx) {\n return ast.value.visitExpression(this, ctx);\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitFunctionExpr(ast, ctx) {\n const /** @type {?} */ paramNames = ast.params.map((param) => param.name);\n return _declareFn(paramNames, ast.statements, ctx, this);\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitDeclareFunctionStmt(stmt, ctx) {\n const /** @type {?} */ paramNames = stmt.params.map((param) => param.name);\n ctx.vars.set(stmt.name, _declareFn(paramNames, stmt.statements, ctx, this));\n if (stmt.hasModifier(o.StmtModifier.Exported)) {\n ctx.exports.push(stmt.name);\n }\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitBinaryOperatorExpr(ast, ctx) {\n const /** @type {?} */ lhs = () => ast.lhs.visitExpression(this, ctx);\n const /** @type {?} */ rhs = () => ast.rhs.visitExpression(this, ctx);\n switch (ast.operator) {\n case o.BinaryOperator.Equals:\n return lhs() == rhs();\n case o.BinaryOperator.Identical:\n return lhs() === rhs();\n case o.BinaryOperator.NotEquals:\n return lhs() != rhs();\n case o.BinaryOperator.NotIdentical:\n return lhs() !== rhs();\n case o.BinaryOperator.And:\n return lhs() && rhs();\n case o.BinaryOperator.Or:\n return lhs() || rhs();\n case o.BinaryOperator.Plus:\n return lhs() + rhs();\n case o.BinaryOperator.Minus:\n return lhs() - rhs();\n case o.BinaryOperator.Divide:\n return lhs() / rhs();\n case o.BinaryOperator.Multiply:\n return lhs() * rhs();\n case o.BinaryOperator.Modulo:\n return lhs() % rhs();\n case o.BinaryOperator.Lower:\n return lhs() < rhs();\n case o.BinaryOperator.LowerEquals:\n return lhs() <= rhs();\n case o.BinaryOperator.Bigger:\n return lhs() > rhs();\n case o.BinaryOperator.BiggerEquals:\n return lhs() >= rhs();\n default:\n throw new Error(`Unknown operator ${ast.operator}`);\n }\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitReadPropExpr(ast, ctx) {\n let /** @type {?} */ result;\n const /** @type {?} */ receiver = ast.receiver.visitExpression(this, ctx);\n result = receiver[ast.name];\n return result;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitReadKeyExpr(ast, ctx) {\n const /** @type {?} */ receiver = ast.receiver.visitExpression(this, ctx);\n const /** @type {?} */ prop = ast.index.visitExpression(this, ctx);\n return receiver[prop];\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitLiteralArrayExpr(ast, ctx) {\n return this.visitAllExpressions(ast.entries, ctx);\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitLiteralMapExpr(ast, ctx) {\n const /** @type {?} */ result = {};\n ast.entries.forEach(entry => result[entry.key] = entry.value.visitExpression(this, ctx));\n return result;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitCommaExpr(ast, context) {\n const /** @type {?} */ values = this.visitAllExpressions(ast.parts, context);\n return values[values.length - 1];\n }\n /**\n * @param {?} expressions\n * @param {?} ctx\n * @return {?}\n */\n visitAllExpressions(expressions, ctx) {\n return expressions.map((expr) => expr.visitExpression(this, ctx));\n }\n /**\n * @param {?} statements\n * @param {?} ctx\n * @return {?}\n */\n visitAllStatements(statements, ctx) {\n for (let /** @type {?} */ i = 0; i < statements.length; i++) {\n const /** @type {?} */ stmt = statements[i];\n const /** @type {?} */ val = stmt.visitStatement(this, ctx);\n if (val instanceof ReturnValue) {\n return val;\n }\n }\n return null;\n }\n}\nfunction StatementInterpreter_tsickle_Closure_declarations() {\n /** @type {?} */\n StatementInterpreter.prototype.reflector;\n}\n/**\n * @param {?} varNames\n * @param {?} statements\n * @param {?} ctx\n * @param {?} visitor\n * @return {?}\n */\nfunction _declareFn(varNames, statements, ctx, visitor) {\n return (...args) => _executeFunctionStatements(varNames, args, statements, ctx, visitor);\n}\nconst /** @type {?} */ CATCH_ERROR_VAR = 'error';\nconst /** @type {?} */ CATCH_STACK_VAR = 'stack';\n//# sourceMappingURL=output_interpreter.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { AbstractEmitterVisitor, CATCH_ERROR_VAR, CATCH_STACK_VAR } from './abstract_emitter';\nimport * as o from './output_ast';\n/**\n * @abstract\n */\nexport class AbstractJsEmitterVisitor extends AbstractEmitterVisitor {\n constructor() { super(false); }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitDeclareClassStmt(stmt, ctx) {\n ctx.pushClass(stmt);\n this._visitClassConstructor(stmt, ctx);\n if (stmt.parent != null) {\n ctx.print(stmt, `${stmt.name}.prototype = Object.create(`);\n stmt.parent.visitExpression(this, ctx);\n ctx.println(stmt, `.prototype);`);\n }\n stmt.getters.forEach((getter) => this._visitClassGetter(stmt, getter, ctx));\n stmt.methods.forEach((method) => this._visitClassMethod(stmt, method, ctx));\n ctx.popClass();\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n _visitClassConstructor(stmt, ctx) {\n ctx.print(stmt, `function ${stmt.name}(`);\n if (stmt.constructorMethod != null) {\n this._visitParams(stmt.constructorMethod.params, ctx);\n }\n ctx.println(stmt, `) {`);\n ctx.incIndent();\n if (stmt.constructorMethod != null) {\n if (stmt.constructorMethod.body.length > 0) {\n ctx.println(stmt, `var self = this;`);\n this.visitAllStatements(stmt.constructorMethod.body, ctx);\n }\n }\n ctx.decIndent();\n ctx.println(stmt, `}`);\n }\n /**\n * @param {?} stmt\n * @param {?} getter\n * @param {?} ctx\n * @return {?}\n */\n _visitClassGetter(stmt, getter, ctx) {\n ctx.println(stmt, `Object.defineProperty(${stmt.name}.prototype, '${getter.name}', { get: function() {`);\n ctx.incIndent();\n if (getter.body.length > 0) {\n ctx.println(stmt, `var self = this;`);\n this.visitAllStatements(getter.body, ctx);\n }\n ctx.decIndent();\n ctx.println(stmt, `}});`);\n }\n /**\n * @param {?} stmt\n * @param {?} method\n * @param {?} ctx\n * @return {?}\n */\n _visitClassMethod(stmt, method, ctx) {\n ctx.print(stmt, `${stmt.name}.prototype.${method.name} = function(`);\n this._visitParams(method.params, ctx);\n ctx.println(stmt, `) {`);\n ctx.incIndent();\n if (method.body.length > 0) {\n ctx.println(stmt, `var self = this;`);\n this.visitAllStatements(method.body, ctx);\n }\n ctx.decIndent();\n ctx.println(stmt, `};`);\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitReadVarExpr(ast, ctx) {\n if (ast.builtin === o.BuiltinVar.This) {\n ctx.print(ast, 'self');\n }\n else if (ast.builtin === o.BuiltinVar.Super) {\n throw new Error(`'super' needs to be handled at a parent ast node, not at the variable level!`);\n }\n else {\n super.visitReadVarExpr(ast, ctx);\n }\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitDeclareVarStmt(stmt, ctx) {\n ctx.print(stmt, `var ${stmt.name} = `);\n stmt.value.visitExpression(this, ctx);\n ctx.println(stmt, `;`);\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitCastExpr(ast, ctx) {\n ast.value.visitExpression(this, ctx);\n return null;\n }\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n visitInvokeFunctionExpr(expr, ctx) {\n const /** @type {?} */ fnExpr = expr.fn;\n if (fnExpr instanceof o.ReadVarExpr && fnExpr.builtin === o.BuiltinVar.Super) {\n /** @type {?} */ ((/** @type {?} */ ((ctx.currentClass)).parent)).visitExpression(this, ctx);\n ctx.print(expr, `.call(this`);\n if (expr.args.length > 0) {\n ctx.print(expr, `, `);\n this.visitAllExpressions(expr.args, ctx, ',');\n }\n ctx.print(expr, `)`);\n }\n else {\n super.visitInvokeFunctionExpr(expr, ctx);\n }\n return null;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitFunctionExpr(ast, ctx) {\n ctx.print(ast, `function(`);\n this._visitParams(ast.params, ctx);\n ctx.println(ast, `) {`);\n ctx.incIndent();\n this.visitAllStatements(ast.statements, ctx);\n ctx.decIndent();\n ctx.print(ast, `}`);\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitDeclareFunctionStmt(stmt, ctx) {\n ctx.print(stmt, `function ${stmt.name}(`);\n this._visitParams(stmt.params, ctx);\n ctx.println(stmt, `) {`);\n ctx.incIndent();\n this.visitAllStatements(stmt.statements, ctx);\n ctx.decIndent();\n ctx.println(stmt, `}`);\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitTryCatchStmt(stmt, ctx) {\n ctx.println(stmt, `try {`);\n ctx.incIndent();\n this.visitAllStatements(stmt.bodyStmts, ctx);\n ctx.decIndent();\n ctx.println(stmt, `} catch (${CATCH_ERROR_VAR.name}) {`);\n ctx.incIndent();\n const /** @type {?} */ catchStmts = [/** @type {?} */ (CATCH_STACK_VAR.set(CATCH_ERROR_VAR.prop('stack')).toDeclStmt(null, [\n o.StmtModifier.Final\n ]))].concat(stmt.catchStmts);\n this.visitAllStatements(catchStmts, ctx);\n ctx.decIndent();\n ctx.println(stmt, `}`);\n return null;\n }\n /**\n * @param {?} params\n * @param {?} ctx\n * @return {?}\n */\n _visitParams(params, ctx) {\n this.visitAllObjects(param => ctx.print(null, param.name), params, ctx, ',');\n }\n /**\n * @param {?} method\n * @return {?}\n */\n getBuiltinMethodName(method) {\n let /** @type {?} */ name;\n switch (method) {\n case o.BuiltinMethod.ConcatArray:\n name = 'concat';\n break;\n case o.BuiltinMethod.SubscribeObservable:\n name = 'subscribe';\n break;\n case o.BuiltinMethod.Bind:\n name = 'bind';\n break;\n default:\n throw new Error(`Unknown builtin method: ${method}`);\n }\n return name;\n }\n}\n//# sourceMappingURL=abstract_js_emitter.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { identifierName } from '../compile_metadata';\nimport { EmitterVisitorContext } from './abstract_emitter';\nimport { AbstractJsEmitterVisitor } from './abstract_js_emitter';\nimport * as o from './output_ast';\n/**\n * @param {?} sourceUrl\n * @param {?} ctx\n * @param {?} vars\n * @param {?} createSourceMap\n * @return {?}\n */\nfunction evalExpression(sourceUrl, ctx, vars, createSourceMap) {\n let /** @type {?} */ fnBody = `${ctx.toSource()}\\n//# sourceURL=${sourceUrl}`;\n const /** @type {?} */ fnArgNames = [];\n const /** @type {?} */ fnArgValues = [];\n for (const /** @type {?} */ argName in vars) {\n fnArgNames.push(argName);\n fnArgValues.push(vars[argName]);\n }\n if (createSourceMap) {\n // using `new Function(...)` generates a header, 1 line of no arguments, 2 lines otherwise\n // E.g. ```\n // function anonymous(a,b,c\n // /**/) { ... }```\n // We don't want to hard code this fact, so we auto detect it via an empty function first.\n const /** @type {?} */ emptyFn = new Function(...fnArgNames.concat('return null;')).toString();\n const /** @type {?} */ headerLines = emptyFn.slice(0, emptyFn.indexOf('return null;')).split('\\n').length - 1;\n fnBody += `\\n${ctx.toSourceMapGenerator(sourceUrl, headerLines).toJsComment()}`;\n }\n return new Function(...fnArgNames.concat(fnBody))(...fnArgValues);\n}\n/**\n * @param {?} sourceUrl\n * @param {?} statements\n * @param {?} reflector\n * @param {?} createSourceMaps\n * @return {?}\n */\nexport function jitStatements(sourceUrl, statements, reflector, createSourceMaps) {\n const /** @type {?} */ converter = new JitEmitterVisitor(reflector);\n const /** @type {?} */ ctx = EmitterVisitorContext.createRoot();\n converter.visitAllStatements(statements, ctx);\n converter.createReturnStmt(ctx);\n return evalExpression(sourceUrl, ctx, converter.getArgs(), createSourceMaps);\n}\nexport class JitEmitterVisitor extends AbstractJsEmitterVisitor {\n /**\n * @param {?} reflector\n */\n constructor(reflector) {\n super();\n this.reflector = reflector;\n this._evalArgNames = [];\n this._evalArgValues = [];\n this._evalExportedVars = [];\n }\n /**\n * @param {?} ctx\n * @return {?}\n */\n createReturnStmt(ctx) {\n const /** @type {?} */ stmt = new o.ReturnStatement(new o.LiteralMapExpr(this._evalExportedVars.map(resultVar => new o.LiteralMapEntry(resultVar, o.variable(resultVar), false))));\n stmt.visitStatement(this, ctx);\n }\n /**\n * @return {?}\n */\n getArgs() {\n const /** @type {?} */ result = {};\n for (let /** @type {?} */ i = 0; i < this._evalArgNames.length; i++) {\n result[this._evalArgNames[i]] = this._evalArgValues[i];\n }\n return result;\n }\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n visitExternalExpr(ast, ctx) {\n const /** @type {?} */ value = this.reflector.resolveExternalReference(ast.value);\n let /** @type {?} */ id = this._evalArgValues.indexOf(value);\n if (id === -1) {\n id = this._evalArgValues.length;\n this._evalArgValues.push(value);\n const /** @type {?} */ name = identifierName({ reference: value }) || 'val';\n this._evalArgNames.push(`jit_${name}_${id}`);\n }\n ctx.print(ast, this._evalArgNames[id]);\n return null;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitDeclareVarStmt(stmt, ctx) {\n if (stmt.hasModifier(o.StmtModifier.Exported)) {\n this._evalExportedVars.push(stmt.name);\n }\n return super.visitDeclareVarStmt(stmt, ctx);\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitDeclareFunctionStmt(stmt, ctx) {\n if (stmt.hasModifier(o.StmtModifier.Exported)) {\n this._evalExportedVars.push(stmt.name);\n }\n return super.visitDeclareFunctionStmt(stmt, ctx);\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n visitDeclareClassStmt(stmt, ctx) {\n if (stmt.hasModifier(o.StmtModifier.Exported)) {\n this._evalExportedVars.push(stmt.name);\n }\n return super.visitDeclareClassStmt(stmt, ctx);\n }\n}\nfunction JitEmitterVisitor_tsickle_Closure_declarations() {\n /** @type {?} */\n JitEmitterVisitor.prototype._evalArgNames;\n /** @type {?} */\n JitEmitterVisitor.prototype._evalArgValues;\n /** @type {?} */\n JitEmitterVisitor.prototype._evalExportedVars;\n /** @type {?} */\n JitEmitterVisitor.prototype.reflector;\n}\n//# sourceMappingURL=output_jit.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { identifierName, ngModuleJitUrl, sharedStylesheetJitUrl, templateJitUrl, templateSourceUrl } from '../compile_metadata';\nimport * as ir from '../output/output_ast';\nimport { interpretStatements } from '../output/output_interpreter';\nimport { jitStatements } from '../output/output_jit';\nimport { SyncAsync, stringify } from '../util';\n/**\n * @record\n */\nexport function ModuleWithComponentFactories() { }\nfunction ModuleWithComponentFactories_tsickle_Closure_declarations() {\n /** @type {?} */\n ModuleWithComponentFactories.prototype.ngModuleFactory;\n /** @type {?} */\n ModuleWithComponentFactories.prototype.componentFactories;\n}\n/**\n * An internal module of the Angular compiler that begins with component types,\n * extracts templates, and eventually produces a compiled version of the component\n * ready for linking into an application.\n *\n * \\@security When compiling templates at runtime, you must ensure that the entire template comes\n * from a trusted source. Attacker-controlled data introduced by a template could expose your\n * application to XSS risks. For more detail, see the [Security Guide](http://g.co/ng/security).\n */\nexport class JitCompiler {\n /**\n * @param {?} _metadataResolver\n * @param {?} _templateParser\n * @param {?} _styleCompiler\n * @param {?} _viewCompiler\n * @param {?} _ngModuleCompiler\n * @param {?} _summaryResolver\n * @param {?} _reflector\n * @param {?} _compilerConfig\n * @param {?} _console\n * @param {?} getExtraNgModuleProviders\n */\n constructor(_metadataResolver, _templateParser, _styleCompiler, _viewCompiler, _ngModuleCompiler, _summaryResolver, _reflector, _compilerConfig, _console, getExtraNgModuleProviders) {\n this._metadataResolver = _metadataResolver;\n this._templateParser = _templateParser;\n this._styleCompiler = _styleCompiler;\n this._viewCompiler = _viewCompiler;\n this._ngModuleCompiler = _ngModuleCompiler;\n this._summaryResolver = _summaryResolver;\n this._reflector = _reflector;\n this._compilerConfig = _compilerConfig;\n this._console = _console;\n this.getExtraNgModuleProviders = getExtraNgModuleProviders;\n this._compiledTemplateCache = new Map();\n this._compiledHostTemplateCache = new Map();\n this._compiledDirectiveWrapperCache = new Map();\n this._compiledNgModuleCache = new Map();\n this._sharedStylesheetCount = 0;\n this._addedAotSummaries = new Set();\n }\n /**\n * @param {?} moduleType\n * @return {?}\n */\n compileModuleSync(moduleType) {\n return SyncAsync.assertSync(this._compileModuleAndComponents(moduleType, true));\n }\n /**\n * @param {?} moduleType\n * @return {?}\n */\n compileModuleAsync(moduleType) {\n return Promise.resolve(this._compileModuleAndComponents(moduleType, false));\n }\n /**\n * @param {?} moduleType\n * @return {?}\n */\n compileModuleAndAllComponentsSync(moduleType) {\n return SyncAsync.assertSync(this._compileModuleAndAllComponents(moduleType, true));\n }\n /**\n * @param {?} moduleType\n * @return {?}\n */\n compileModuleAndAllComponentsAsync(moduleType) {\n return Promise.resolve(this._compileModuleAndAllComponents(moduleType, false));\n }\n /**\n * @param {?} component\n * @return {?}\n */\n getComponentFactory(component) {\n const /** @type {?} */ summary = this._metadataResolver.getDirectiveSummary(component);\n return /** @type {?} */ (summary.componentFactory);\n }\n /**\n * @param {?} summaries\n * @return {?}\n */\n loadAotSummaries(summaries) {\n this.clearCache();\n this._addAotSummaries(summaries);\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n _addAotSummaries(fn) {\n if (this._addedAotSummaries.has(fn)) {\n return;\n }\n this._addedAotSummaries.add(fn);\n const /** @type {?} */ summaries = fn();\n for (let /** @type {?} */ i = 0; i < summaries.length; i++) {\n const /** @type {?} */ entry = summaries[i];\n if (typeof entry === 'function') {\n this._addAotSummaries(entry);\n }\n else {\n const /** @type {?} */ summary = /** @type {?} */ (entry);\n this._summaryResolver.addSummary({ symbol: summary.type.reference, metadata: null, type: summary });\n }\n }\n }\n /**\n * @param {?} ref\n * @return {?}\n */\n hasAotSummary(ref) { return !!this._summaryResolver.resolveSummary(ref); }\n /**\n * @param {?} ids\n * @return {?}\n */\n _filterJitIdentifiers(ids) {\n return ids.map(mod => mod.reference).filter((ref) => !this.hasAotSummary(ref));\n }\n /**\n * @param {?} moduleType\n * @param {?} isSync\n * @return {?}\n */\n _compileModuleAndComponents(moduleType, isSync) {\n return SyncAsync.then(this._loadModules(moduleType, isSync), () => {\n this._compileComponents(moduleType, null);\n return this._compileModule(moduleType);\n });\n }\n /**\n * @param {?} moduleType\n * @param {?} isSync\n * @return {?}\n */\n _compileModuleAndAllComponents(moduleType, isSync) {\n return SyncAsync.then(this._loadModules(moduleType, isSync), () => {\n const /** @type {?} */ componentFactories = [];\n this._compileComponents(moduleType, componentFactories);\n return {\n ngModuleFactory: this._compileModule(moduleType),\n componentFactories: componentFactories\n };\n });\n }\n /**\n * @param {?} mainModule\n * @param {?} isSync\n * @return {?}\n */\n _loadModules(mainModule, isSync) {\n const /** @type {?} */ loading = [];\n const /** @type {?} */ mainNgModule = /** @type {?} */ ((this._metadataResolver.getNgModuleMetadata(mainModule)));\n // Note: for runtime compilation, we want to transitively compile all modules,\n // so we also need to load the declared directives / pipes for all nested modules.\n this._filterJitIdentifiers(mainNgModule.transitiveModule.modules).forEach((nestedNgModule) => {\n // getNgModuleMetadata only returns null if the value passed in is not an NgModule\n const /** @type {?} */ moduleMeta = /** @type {?} */ ((this._metadataResolver.getNgModuleMetadata(nestedNgModule)));\n this._filterJitIdentifiers(moduleMeta.declaredDirectives).forEach((ref) => {\n const /** @type {?} */ promise = this._metadataResolver.loadDirectiveMetadata(moduleMeta.type.reference, ref, isSync);\n if (promise) {\n loading.push(promise);\n }\n });\n this._filterJitIdentifiers(moduleMeta.declaredPipes)\n .forEach((ref) => this._metadataResolver.getOrLoadPipeMetadata(ref));\n });\n return SyncAsync.all(loading);\n }\n /**\n * @param {?} moduleType\n * @return {?}\n */\n _compileModule(moduleType) {\n let /** @type {?} */ ngModuleFactory = /** @type {?} */ ((this._compiledNgModuleCache.get(moduleType)));\n if (!ngModuleFactory) {\n const /** @type {?} */ moduleMeta = /** @type {?} */ ((this._metadataResolver.getNgModuleMetadata(moduleType)));\n // Always provide a bound Compiler\n const /** @type {?} */ extraProviders = this.getExtraNgModuleProviders(moduleMeta.type.reference);\n const /** @type {?} */ outputCtx = createOutputContext();\n const /** @type {?} */ compileResult = this._ngModuleCompiler.compile(outputCtx, moduleMeta, extraProviders);\n ngModuleFactory = this._interpretOrJit(ngModuleJitUrl(moduleMeta), outputCtx.statements)[compileResult.ngModuleFactoryVar];\n this._compiledNgModuleCache.set(moduleMeta.type.reference, ngModuleFactory);\n }\n return ngModuleFactory;\n }\n /**\n * \\@internal\n * @param {?} mainModule\n * @param {?} allComponentFactories\n * @return {?}\n */\n _compileComponents(mainModule, allComponentFactories) {\n const /** @type {?} */ ngModule = /** @type {?} */ ((this._metadataResolver.getNgModuleMetadata(mainModule)));\n const /** @type {?} */ moduleByJitDirective = new Map();\n const /** @type {?} */ templates = new Set();\n const /** @type {?} */ transJitModules = this._filterJitIdentifiers(ngModule.transitiveModule.modules);\n transJitModules.forEach((localMod) => {\n const /** @type {?} */ localModuleMeta = /** @type {?} */ ((this._metadataResolver.getNgModuleMetadata(localMod)));\n this._filterJitIdentifiers(localModuleMeta.declaredDirectives).forEach((dirRef) => {\n moduleByJitDirective.set(dirRef, localModuleMeta);\n const /** @type {?} */ dirMeta = this._metadataResolver.getDirectiveMetadata(dirRef);\n if (dirMeta.isComponent) {\n templates.add(this._createCompiledTemplate(dirMeta, localModuleMeta));\n if (allComponentFactories) {\n const /** @type {?} */ template = this._createCompiledHostTemplate(dirMeta.type.reference, localModuleMeta);\n templates.add(template);\n allComponentFactories.push(/** @type {?} */ (dirMeta.componentFactory));\n }\n }\n });\n });\n transJitModules.forEach((localMod) => {\n const /** @type {?} */ localModuleMeta = /** @type {?} */ ((this._metadataResolver.getNgModuleMetadata(localMod)));\n this._filterJitIdentifiers(localModuleMeta.declaredDirectives).forEach((dirRef) => {\n const /** @type {?} */ dirMeta = this._metadataResolver.getDirectiveMetadata(dirRef);\n if (dirMeta.isComponent) {\n dirMeta.entryComponents.forEach((entryComponentType) => {\n const /** @type {?} */ moduleMeta = /** @type {?} */ ((moduleByJitDirective.get(entryComponentType.componentType)));\n templates.add(this._createCompiledHostTemplate(entryComponentType.componentType, moduleMeta));\n });\n }\n });\n localModuleMeta.entryComponents.forEach((entryComponentType) => {\n if (!this.hasAotSummary(entryComponentType.componentType.reference)) {\n const /** @type {?} */ moduleMeta = /** @type {?} */ ((moduleByJitDirective.get(entryComponentType.componentType)));\n templates.add(this._createCompiledHostTemplate(entryComponentType.componentType, moduleMeta));\n }\n });\n });\n templates.forEach((template) => this._compileTemplate(template));\n }\n /**\n * @param {?} type\n * @return {?}\n */\n clearCacheFor(type) {\n this._compiledNgModuleCache.delete(type);\n this._metadataResolver.clearCacheFor(type);\n this._compiledHostTemplateCache.delete(type);\n const /** @type {?} */ compiledTemplate = this._compiledTemplateCache.get(type);\n if (compiledTemplate) {\n this._compiledTemplateCache.delete(type);\n }\n }\n /**\n * @return {?}\n */\n clearCache() {\n // Note: don't clear the _addedAotSummaries, as they don't change!\n this._metadataResolver.clearCache();\n this._compiledTemplateCache.clear();\n this._compiledHostTemplateCache.clear();\n this._compiledNgModuleCache.clear();\n }\n /**\n * @param {?} compType\n * @param {?} ngModule\n * @return {?}\n */\n _createCompiledHostTemplate(compType, ngModule) {\n if (!ngModule) {\n throw new Error(`Component ${stringify(compType)} is not part of any NgModule or the module has not been imported into your module.`);\n }\n let /** @type {?} */ compiledTemplate = this._compiledHostTemplateCache.get(compType);\n if (!compiledTemplate) {\n const /** @type {?} */ compMeta = this._metadataResolver.getDirectiveMetadata(compType);\n assertComponent(compMeta);\n const /** @type {?} */ hostMeta = this._metadataResolver.getHostComponentMetadata(compMeta, (/** @type {?} */ (compMeta.componentFactory)).viewDefFactory);\n compiledTemplate =\n new CompiledTemplate(true, compMeta.type, hostMeta, ngModule, [compMeta.type]);\n this._compiledHostTemplateCache.set(compType, compiledTemplate);\n }\n return compiledTemplate;\n }\n /**\n * @param {?} compMeta\n * @param {?} ngModule\n * @return {?}\n */\n _createCompiledTemplate(compMeta, ngModule) {\n let /** @type {?} */ compiledTemplate = this._compiledTemplateCache.get(compMeta.type.reference);\n if (!compiledTemplate) {\n assertComponent(compMeta);\n compiledTemplate = new CompiledTemplate(false, compMeta.type, compMeta, ngModule, ngModule.transitiveModule.directives);\n this._compiledTemplateCache.set(compMeta.type.reference, compiledTemplate);\n }\n return compiledTemplate;\n }\n /**\n * @param {?} template\n * @return {?}\n */\n _compileTemplate(template) {\n if (template.isCompiled) {\n return;\n }\n const /** @type {?} */ compMeta = template.compMeta;\n const /** @type {?} */ externalStylesheetsByModuleUrl = new Map();\n const /** @type {?} */ outputContext = createOutputContext();\n const /** @type {?} */ componentStylesheet = this._styleCompiler.compileComponent(outputContext, compMeta); /** @type {?} */\n ((compMeta.template)).externalStylesheets.forEach((stylesheetMeta) => {\n const /** @type {?} */ compiledStylesheet = this._styleCompiler.compileStyles(createOutputContext(), compMeta, stylesheetMeta);\n externalStylesheetsByModuleUrl.set(/** @type {?} */ ((stylesheetMeta.moduleUrl)), compiledStylesheet);\n });\n this._resolveStylesCompileResult(componentStylesheet, externalStylesheetsByModuleUrl);\n const /** @type {?} */ pipes = template.ngModule.transitiveModule.pipes.map(pipe => this._metadataResolver.getPipeSummary(pipe.reference));\n const { template: parsedTemplate, pipes: usedPipes } = this._parseTemplate(compMeta, template.ngModule, template.directives);\n const /** @type {?} */ compileResult = this._viewCompiler.compileComponent(outputContext, compMeta, parsedTemplate, ir.variable(componentStylesheet.stylesVar), usedPipes);\n const /** @type {?} */ evalResult = this._interpretOrJit(templateJitUrl(template.ngModule.type, template.compMeta), outputContext.statements);\n const /** @type {?} */ viewClass = evalResult[compileResult.viewClassVar];\n const /** @type {?} */ rendererType = evalResult[compileResult.rendererTypeVar];\n template.compiled(viewClass, rendererType);\n }\n /**\n * @param {?} compMeta\n * @param {?} ngModule\n * @param {?} directiveIdentifiers\n * @return {?}\n */\n _parseTemplate(compMeta, ngModule, directiveIdentifiers) {\n // Note: ! is ok here as components always have a template.\n const /** @type {?} */ preserveWhitespaces = /** @type {?} */ ((compMeta.template)).preserveWhitespaces;\n const /** @type {?} */ directives = directiveIdentifiers.map(dir => this._metadataResolver.getDirectiveSummary(dir.reference));\n const /** @type {?} */ pipes = ngModule.transitiveModule.pipes.map(pipe => this._metadataResolver.getPipeSummary(pipe.reference));\n return this._templateParser.parse(compMeta, /** @type {?} */ ((/** @type {?} */ ((compMeta.template)).htmlAst)), directives, pipes, ngModule.schemas, templateSourceUrl(ngModule.type, compMeta, /** @type {?} */ ((compMeta.template))), preserveWhitespaces);\n }\n /**\n * @param {?} result\n * @param {?} externalStylesheetsByModuleUrl\n * @return {?}\n */\n _resolveStylesCompileResult(result, externalStylesheetsByModuleUrl) {\n result.dependencies.forEach((dep, i) => {\n const /** @type {?} */ nestedCompileResult = /** @type {?} */ ((externalStylesheetsByModuleUrl.get(dep.moduleUrl)));\n const /** @type {?} */ nestedStylesArr = this._resolveAndEvalStylesCompileResult(nestedCompileResult, externalStylesheetsByModuleUrl);\n dep.setValue(nestedStylesArr);\n });\n }\n /**\n * @param {?} result\n * @param {?} externalStylesheetsByModuleUrl\n * @return {?}\n */\n _resolveAndEvalStylesCompileResult(result, externalStylesheetsByModuleUrl) {\n this._resolveStylesCompileResult(result, externalStylesheetsByModuleUrl);\n return this._interpretOrJit(sharedStylesheetJitUrl(result.meta, this._sharedStylesheetCount++), result.outputCtx.statements)[result.stylesVar];\n }\n /**\n * @param {?} sourceUrl\n * @param {?} statements\n * @return {?}\n */\n _interpretOrJit(sourceUrl, statements) {\n if (!this._compilerConfig.useJit) {\n return interpretStatements(statements, this._reflector);\n }\n else {\n return jitStatements(sourceUrl, statements, this._reflector, this._compilerConfig.jitDevMode);\n }\n }\n}\nfunction JitCompiler_tsickle_Closure_declarations() {\n /** @type {?} */\n JitCompiler.prototype._compiledTemplateCache;\n /** @type {?} */\n JitCompiler.prototype._compiledHostTemplateCache;\n /** @type {?} */\n JitCompiler.prototype._compiledDirectiveWrapperCache;\n /** @type {?} */\n JitCompiler.prototype._compiledNgModuleCache;\n /** @type {?} */\n JitCompiler.prototype._sharedStylesheetCount;\n /** @type {?} */\n JitCompiler.prototype._addedAotSummaries;\n /** @type {?} */\n JitCompiler.prototype._metadataResolver;\n /** @type {?} */\n JitCompiler.prototype._templateParser;\n /** @type {?} */\n JitCompiler.prototype._styleCompiler;\n /** @type {?} */\n JitCompiler.prototype._viewCompiler;\n /** @type {?} */\n JitCompiler.prototype._ngModuleCompiler;\n /** @type {?} */\n JitCompiler.prototype._summaryResolver;\n /** @type {?} */\n JitCompiler.prototype._reflector;\n /** @type {?} */\n JitCompiler.prototype._compilerConfig;\n /** @type {?} */\n JitCompiler.prototype._console;\n /** @type {?} */\n JitCompiler.prototype.getExtraNgModuleProviders;\n}\nclass CompiledTemplate {\n /**\n * @param {?} isHost\n * @param {?} compType\n * @param {?} compMeta\n * @param {?} ngModule\n * @param {?} directives\n */\n constructor(isHost, compType, compMeta, ngModule, directives) {\n this.isHost = isHost;\n this.compType = compType;\n this.compMeta = compMeta;\n this.ngModule = ngModule;\n this.directives = directives;\n this._viewClass = /** @type {?} */ ((null));\n this.isCompiled = false;\n }\n /**\n * @param {?} viewClass\n * @param {?} rendererType\n * @return {?}\n */\n compiled(viewClass, rendererType) {\n this._viewClass = viewClass;\n (/** @type {?} */ (this.compMeta.componentViewType)).setDelegate(viewClass);\n for (let /** @type {?} */ prop in rendererType) {\n (/** @type {?} */ (this.compMeta.rendererType))[prop] = rendererType[prop];\n }\n this.isCompiled = true;\n }\n}\nfunction CompiledTemplate_tsickle_Closure_declarations() {\n /** @type {?} */\n CompiledTemplate.prototype._viewClass;\n /** @type {?} */\n CompiledTemplate.prototype.isCompiled;\n /** @type {?} */\n CompiledTemplate.prototype.isHost;\n /** @type {?} */\n CompiledTemplate.prototype.compType;\n /** @type {?} */\n CompiledTemplate.prototype.compMeta;\n /** @type {?} */\n CompiledTemplate.prototype.ngModule;\n /** @type {?} */\n CompiledTemplate.prototype.directives;\n}\n/**\n * @param {?} meta\n * @return {?}\n */\nfunction assertComponent(meta) {\n if (!meta.isComponent) {\n throw new Error(`Could not compile '${identifierName(meta.type)}' because it is not a component.`);\n }\n}\n/**\n * @return {?}\n */\nfunction createOutputContext() {\n const /** @type {?} */ importExpr = (symbol) => ir.importExpr({ name: identifierName(symbol), moduleName: null, runtime: symbol });\n return { statements: [], genFilePath: '', importExpr };\n}\n//# sourceMappingURL=compiler.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides access to reflection data about symbols that the compiler needs.\n * @abstract\n */\nexport class CompileReflector {\n}\nfunction CompileReflector_tsickle_Closure_declarations() {\n /**\n * @abstract\n * @param {?} typeOrFunc\n * @return {?}\n */\n CompileReflector.prototype.parameters = function (typeOrFunc) { };\n /**\n * @abstract\n * @param {?} typeOrFunc\n * @return {?}\n */\n CompileReflector.prototype.annotations = function (typeOrFunc) { };\n /**\n * @abstract\n * @param {?} typeOrFunc\n * @return {?}\n */\n CompileReflector.prototype.propMetadata = function (typeOrFunc) { };\n /**\n * @abstract\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\n CompileReflector.prototype.hasLifecycleHook = function (type, lcProperty) { };\n /**\n * @abstract\n * @param {?} typeOrFunc\n * @return {?}\n */\n CompileReflector.prototype.guards = function (typeOrFunc) { };\n /**\n * @abstract\n * @param {?} type\n * @param {?} cmpMetadata\n * @return {?}\n */\n CompileReflector.prototype.componentModuleUrl = function (type, cmpMetadata) { };\n /**\n * @abstract\n * @param {?} ref\n * @return {?}\n */\n CompileReflector.prototype.resolveExternalReference = function (ref) { };\n}\n//# sourceMappingURL=compile_reflector.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Create a {\\@link UrlResolver} with no package prefix.\n * @return {?}\n */\nexport function createUrlResolverWithoutPackagePrefix() {\n return new UrlResolver();\n}\n/**\n * @return {?}\n */\nexport function createOfflineCompileUrlResolver() {\n return new UrlResolver('.');\n}\n/**\n * @record\n */\nexport function UrlResolverCtor() { }\nfunction UrlResolverCtor_tsickle_Closure_declarations() {\n /* TODO: handle strange member:\n new (packagePrefix?: string|null): UrlResolver;\n */\n}\nexport const /** @type {?} */ UrlResolver = class UrlResolverImpl {\n /**\n * @param {?=} _packagePrefix\n */\n constructor(_packagePrefix = null) {\n this._packagePrefix = _packagePrefix;\n }\n /**\n * Resolves the `url` given the `baseUrl`:\n * - when the `url` is null, the `baseUrl` is returned,\n * - if `url` is relative ('path/to/here', './path/to/here'), the resolved url is a combination of\n * `baseUrl` and `url`,\n * - if `url` is absolute (it has a scheme: 'http://', 'https://' or start with '/'), the `url` is\n * returned as is (ignoring the `baseUrl`)\n * @param {?} baseUrl\n * @param {?} url\n * @return {?}\n */\n resolve(baseUrl, url) {\n let /** @type {?} */ resolvedUrl = url;\n if (baseUrl != null && baseUrl.length > 0) {\n resolvedUrl = _resolveUrl(baseUrl, resolvedUrl);\n }\n const /** @type {?} */ resolvedParts = _split(resolvedUrl);\n let /** @type {?} */ prefix = this._packagePrefix;\n if (prefix != null && resolvedParts != null &&\n resolvedParts[_ComponentIndex.Scheme] == 'package') {\n let /** @type {?} */ path = resolvedParts[_ComponentIndex.Path];\n prefix = prefix.replace(/\\/+$/, '');\n path = path.replace(/^\\/+/, '');\n return `${prefix}/${path}`;\n }\n return resolvedUrl;\n }\n};\n/**\n * Extract the scheme of a URL.\n * @param {?} url\n * @return {?}\n */\nexport function getUrlScheme(url) {\n const /** @type {?} */ match = _split(url);\n return (match && match[_ComponentIndex.Scheme]) || '';\n}\n/**\n * Builds a URI string from already-encoded parts.\n *\n * No encoding is performed. Any component may be omitted as either null or\n * undefined.\n *\n * @param {?=} opt_scheme The scheme such as 'http'.\n * @param {?=} opt_userInfo The user name before the '\\@'.\n * @param {?=} opt_domain The domain such as 'www.google.com', already\n * URI-encoded.\n * @param {?=} opt_port The port number.\n * @param {?=} opt_path The path, already URI-encoded. If it is not\n * empty, it must begin with a slash.\n * @param {?=} opt_queryData The URI-encoded query data.\n * @param {?=} opt_fragment The URI-encoded fragment identifier.\n * @return {?} The fully combined URI.\n */\nfunction _buildFromEncodedParts(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment) {\n const /** @type {?} */ out = [];\n if (opt_scheme != null) {\n out.push(opt_scheme + ':');\n }\n if (opt_domain != null) {\n out.push('//');\n if (opt_userInfo != null) {\n out.push(opt_userInfo + '@');\n }\n out.push(opt_domain);\n if (opt_port != null) {\n out.push(':' + opt_port);\n }\n }\n if (opt_path != null) {\n out.push(opt_path);\n }\n if (opt_queryData != null) {\n out.push('?' + opt_queryData);\n }\n if (opt_fragment != null) {\n out.push('#' + opt_fragment);\n }\n return out.join('');\n}\n/**\n * A regular expression for breaking a URI into its component parts.\n *\n * {\\@link http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#RFC2234} says\n * As the \"first-match-wins\" algorithm is identical to the \"greedy\"\n * disambiguation method used by POSIX regular expressions, it is natural and\n * commonplace to use a regular expression for parsing the potential five\n * components of a URI reference.\n *\n * The following line is the regular expression for breaking-down a\n * well-formed URI reference into its components.\n *\n * <pre>\n * ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?\n * 12 3 4 5 6 7 8 9\n * </pre>\n *\n * The numbers in the second line above are only to assist readability; they\n * indicate the reference points for each subexpression (i.e., each paired\n * parenthesis). We refer to the value matched for subexpression <n> as $<n>.\n * For example, matching the above expression to\n * <pre>\n * http://www.ics.uci.edu/pub/ietf/uri/#Related\n * </pre>\n * results in the following subexpression matches:\n * <pre>\n * $1 = http:\n * $2 = http\n * $3 = //www.ics.uci.edu\n * $4 = www.ics.uci.edu\n * $5 = /pub/ietf/uri/\n * $6 = <undefined>\n * $7 = <undefined>\n * $8 = #Related\n * $9 = Related\n * </pre>\n * where <undefined> indicates that the component is not present, as is the\n * case for the query component in the above example. Therefore, we can\n * determine the value of the five components as\n * <pre>\n * scheme = $2\n * authority = $4\n * path = $5\n * query = $7\n * fragment = $9\n * </pre>\n *\n * The regular expression has been modified slightly to expose the\n * userInfo, domain, and port separately from the authority.\n * The modified version yields\n * <pre>\n * $1 = http scheme\n * $2 = <undefined> userInfo -\\\n * $3 = www.ics.uci.edu domain | authority\n * $4 = <undefined> port -/\n * $5 = /pub/ietf/uri/ path\n * $6 = <undefined> query without ?\n * $7 = Related fragment without #\n * </pre>\n * \\@internal\n */\nconst /** @type {?} */ _splitRe = new RegExp('^' +\n '(?:' +\n '([^:/?#.]+)' + // scheme - ignore special characters\n ':)?' +\n '(?://' +\n '(?:([^/?#]*)@)?' + // userInfo\n '([\\\\w\\\\d\\\\-\\\\u0100-\\\\uffff.%]*)' + // domain - restrict to letters,\n '(?::([0-9]+))?' + // port\n ')?' +\n '([^?#]+)?' + // path\n '(?:\\\\?([^#]*))?' + // query\n '(?:#(.*))?' + // fragment\n '$');\n/** @enum {number} */\nconst _ComponentIndex = {\n Scheme: 1,\n UserInfo: 2,\n Domain: 3,\n Port: 4,\n Path: 5,\n QueryData: 6,\n Fragment: 7,\n};\n_ComponentIndex[_ComponentIndex.Scheme] = \"Scheme\";\n_ComponentIndex[_ComponentIndex.UserInfo] = \"UserInfo\";\n_ComponentIndex[_ComponentIndex.Domain] = \"Domain\";\n_ComponentIndex[_ComponentIndex.Port] = \"Port\";\n_ComponentIndex[_ComponentIndex.Path] = \"Path\";\n_ComponentIndex[_ComponentIndex.QueryData] = \"QueryData\";\n_ComponentIndex[_ComponentIndex.Fragment] = \"Fragment\";\n/**\n * Splits a URI into its component parts.\n *\n * Each component can be accessed via the component indices; for example:\n * <pre>\n * goog.uri.utils.split(someStr)[goog.uri.utils.CompontentIndex.QUERY_DATA];\n * </pre>\n *\n * @param {?} uri The URI string to examine.\n * @return {?} Each component still URI-encoded.\n * Each component that is present will contain the encoded value, whereas\n * components that are not present will be undefined or empty, depending\n * on the browser's regular expression implementation. Never null, since\n * arbitrary strings may still look like path names.\n */\nfunction _split(uri) {\n return /** @type {?} */ ((uri.match(_splitRe)));\n}\n/**\n * Removes dot segments in given path component, as described in\n * RFC 3986, section 5.2.4.\n *\n * @param {?} path A non-empty path component.\n * @return {?} Path component with removed dot segments.\n */\nfunction _removeDotSegments(path) {\n if (path == '/')\n return '/';\n const /** @type {?} */ leadingSlash = path[0] == '/' ? '/' : '';\n const /** @type {?} */ trailingSlash = path[path.length - 1] === '/' ? '/' : '';\n const /** @type {?} */ segments = path.split('/');\n const /** @type {?} */ out = [];\n let /** @type {?} */ up = 0;\n for (let /** @type {?} */ pos = 0; pos < segments.length; pos++) {\n const /** @type {?} */ segment = segments[pos];\n switch (segment) {\n case '':\n case '.':\n break;\n case '..':\n if (out.length > 0) {\n out.pop();\n }\n else {\n up++;\n }\n break;\n default:\n out.push(segment);\n }\n }\n if (leadingSlash == '') {\n while (up-- > 0) {\n out.unshift('..');\n }\n if (out.length === 0)\n out.push('.');\n }\n return leadingSlash + out.join('/') + trailingSlash;\n}\n/**\n * Takes an array of the parts from split and canonicalizes the path part\n * and then joins all the parts.\n * @param {?} parts\n * @return {?}\n */\nfunction _joinAndCanonicalizePath(parts) {\n let /** @type {?} */ path = parts[_ComponentIndex.Path];\n path = path == null ? '' : _removeDotSegments(path);\n parts[_ComponentIndex.Path] = path;\n return _buildFromEncodedParts(parts[_ComponentIndex.Scheme], parts[_ComponentIndex.UserInfo], parts[_ComponentIndex.Domain], parts[_ComponentIndex.Port], path, parts[_ComponentIndex.QueryData], parts[_ComponentIndex.Fragment]);\n}\n/**\n * Resolves a URL.\n * @param {?} base The URL acting as the base URL.\n * @param {?} url\n * @return {?}\n */\nfunction _resolveUrl(base, url) {\n const /** @type {?} */ parts = _split(encodeURI(url));\n const /** @type {?} */ baseParts = _split(base);\n if (parts[_ComponentIndex.Scheme] != null) {\n return _joinAndCanonicalizePath(parts);\n }\n else {\n parts[_ComponentIndex.Scheme] = baseParts[_ComponentIndex.Scheme];\n }\n for (let /** @type {?} */ i = _ComponentIndex.Scheme; i <= _ComponentIndex.Port; i++) {\n if (parts[i] == null) {\n parts[i] = baseParts[i];\n }\n }\n if (parts[_ComponentIndex.Path][0] == '/') {\n return _joinAndCanonicalizePath(parts);\n }\n let /** @type {?} */ path = baseParts[_ComponentIndex.Path];\n if (path == null)\n path = '/';\n const /** @type {?} */ index = path.lastIndexOf('/');\n path = path.substring(0, index + 1) + parts[_ComponentIndex.Path];\n parts[_ComponentIndex.Path] = path;\n return _joinAndCanonicalizePath(parts);\n}\n//# sourceMappingURL=url_resolver.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An interface for retrieving documents by URL that the compiler uses\n * to load templates.\n */\nexport class ResourceLoader {\n /**\n * @param {?} url\n * @return {?}\n */\n get(url) { return ''; }\n}\n//# sourceMappingURL=resource_loader.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { analyzeAndValidateNgModules } from '../aot/compiler';\nimport { createAotUrlResolver } from '../aot/compiler_factory';\nimport { StaticReflector } from '../aot/static_reflector';\nimport { StaticSymbolCache } from '../aot/static_symbol';\nimport { StaticSymbolResolver } from '../aot/static_symbol_resolver';\nimport { AotSummaryResolver } from '../aot/summary_resolver';\nimport { CompilerConfig } from '../config';\nimport { ViewEncapsulation } from '../core';\nimport { DirectiveNormalizer } from '../directive_normalizer';\nimport { DirectiveResolver } from '../directive_resolver';\nimport { CompileMetadataResolver } from '../metadata_resolver';\nimport { HtmlParser } from '../ml_parser/html_parser';\nimport { InterpolationConfig } from '../ml_parser/interpolation_config';\nimport { NgModuleResolver } from '../ng_module_resolver';\nimport { PipeResolver } from '../pipe_resolver';\nimport { DomElementSchemaRegistry } from '../schema/dom_element_schema_registry';\nimport { MessageBundle } from './message_bundle';\n/**\n * The host of the Extractor disconnects the implementation from TypeScript / other language\n * services and from underlying file systems.\n * @record\n */\nexport function ExtractorHost() { }\nfunction ExtractorHost_tsickle_Closure_declarations() {\n /**\n * Converts a path that refers to a resource into an absolute filePath\n * that can be lateron used for loading the resource via `loadResource.\n * @type {?}\n */\n ExtractorHost.prototype.resourceNameToFileName;\n /**\n * Loads a resource (e.g. html / css)\n * @type {?}\n */\n ExtractorHost.prototype.loadResource;\n}\nexport class Extractor {\n /**\n * @param {?} host\n * @param {?} staticSymbolResolver\n * @param {?} messageBundle\n * @param {?} metadataResolver\n */\n constructor(host, staticSymbolResolver, messageBundle, metadataResolver) {\n this.host = host;\n this.staticSymbolResolver = staticSymbolResolver;\n this.messageBundle = messageBundle;\n this.metadataResolver = metadataResolver;\n }\n /**\n * @param {?} rootFiles\n * @return {?}\n */\n extract(rootFiles) {\n const { files, ngModules } = analyzeAndValidateNgModules(rootFiles, this.host, this.staticSymbolResolver, this.metadataResolver);\n return Promise\n .all(ngModules.map(ngModule => this.metadataResolver.loadNgModuleDirectiveAndPipeMetadata(ngModule.type.reference, false)))\n .then(() => {\n const /** @type {?} */ errors = [];\n files.forEach(file => {\n const /** @type {?} */ compMetas = [];\n file.directives.forEach(directiveType => {\n const /** @type {?} */ dirMeta = this.metadataResolver.getDirectiveMetadata(directiveType);\n if (dirMeta && dirMeta.isComponent) {\n compMetas.push(dirMeta);\n }\n });\n compMetas.forEach(compMeta => {\n const /** @type {?} */ html = /** @type {?} */ ((/** @type {?} */ ((compMeta.template)).template));\n const /** @type {?} */ interpolationConfig = InterpolationConfig.fromArray(/** @type {?} */ ((compMeta.template)).interpolation);\n errors.push(.../** @type {?} */ ((this.messageBundle.updateFromTemplate(html, file.fileName, interpolationConfig))));\n });\n });\n if (errors.length) {\n throw new Error(errors.map(e => e.toString()).join('\\n'));\n }\n return this.messageBundle;\n });\n }\n /**\n * @param {?} host\n * @param {?} locale\n * @return {?}\n */\n static create(host, locale) {\n const /** @type {?} */ htmlParser = new HtmlParser();\n const /** @type {?} */ urlResolver = createAotUrlResolver(host);\n const /** @type {?} */ symbolCache = new StaticSymbolCache();\n const /** @type {?} */ summaryResolver = new AotSummaryResolver(host, symbolCache);\n const /** @type {?} */ staticSymbolResolver = new StaticSymbolResolver(host, symbolCache, summaryResolver);\n const /** @type {?} */ staticReflector = new StaticReflector(summaryResolver, staticSymbolResolver);\n const /** @type {?} */ config = new CompilerConfig({ defaultEncapsulation: ViewEncapsulation.Emulated, useJit: false });\n const /** @type {?} */ normalizer = new DirectiveNormalizer({ get: (url) => host.loadResource(url) }, urlResolver, htmlParser, config);\n const /** @type {?} */ elementSchemaRegistry = new DomElementSchemaRegistry();\n const /** @type {?} */ resolver = new CompileMetadataResolver(config, htmlParser, new NgModuleResolver(staticReflector), new DirectiveResolver(staticReflector), new PipeResolver(staticReflector), summaryResolver, elementSchemaRegistry, normalizer, console, symbolCache, staticReflector);\n // TODO(vicb): implicit tags & attributes\n const /** @type {?} */ messageBundle = new MessageBundle(htmlParser, [], {}, locale);\n const /** @type {?} */ extractor = new Extractor(host, staticSymbolResolver, messageBundle, resolver);\n return { extractor, staticReflector };\n }\n}\nfunction Extractor_tsickle_Closure_declarations() {\n /** @type {?} */\n Extractor.prototype.host;\n /** @type {?} */\n Extractor.prototype.staticSymbolResolver;\n /** @type {?} */\n Extractor.prototype.messageBundle;\n /** @type {?} */\n Extractor.prototype.metadataResolver;\n}\n//# sourceMappingURL=extractor.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport { Extractor } from './extractor';\nexport { I18NHtmlParser } from './i18n_html_parser';\nexport { MessageBundle } from './message_bundle';\nexport { Serializer } from './serializers/serializer';\nexport { Xliff } from './serializers/xliff';\nexport { Xliff2 } from './serializers/xliff2';\nexport { Xmb } from './serializers/xmb';\nexport { Xtb } from './serializers/xtb';\n//# sourceMappingURL=index.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as core from './core';\nexport { core };\nexport { VERSION } from './version';\nexport { TextAst, BoundTextAst, AttrAst, BoundElementPropertyAst, BoundEventAst, ReferenceAst, VariableAst, ElementAst, EmbeddedTemplateAst, BoundDirectivePropertyAst, DirectiveAst, ProviderAst, ProviderAstType, NgContentAst, PropertyBindingType, NullTemplateVisitor, RecursiveTemplateAstVisitor, templateVisitAll } from './template_parser/template_ast';\nexport { CompilerConfig, preserveWhitespacesDefault } from './config';\nexport { identifierName, identifierModuleUrl, viewClassName, rendererTypeName, hostViewClassName, componentFactoryName, CompileSummaryKind, tokenName, tokenReference, CompileStylesheetMetadata, CompileTemplateMetadata, CompileDirectiveMetadata, CompilePipeMetadata, CompileNgModuleMetadata, TransitiveCompileNgModuleMetadata, ProviderMeta, flatten, templateSourceUrl, sharedStylesheetJitUrl, ngModuleJitUrl, templateJitUrl } from './compile_metadata';\nexport { createAotUrlResolver, createAotCompiler } from './aot/compiler_factory';\nexport { AotCompiler, analyzeNgModules, analyzeAndValidateNgModules, analyzeFile, mergeAnalyzedFiles } from './aot/compiler';\nexport { GeneratedFile, toTypeScript } from './aot/generated_file';\nexport { formattedError, isFormattedError } from './aot/formatted_error';\nexport { StaticReflector } from './aot/static_reflector';\nexport { StaticSymbol, StaticSymbolCache } from './aot/static_symbol';\nexport { ResolvedStaticSymbol, StaticSymbolResolver, unescapeIdentifier, unwrapResolvedMetadata } from './aot/static_symbol_resolver';\nexport { AotSummaryResolver } from './aot/summary_resolver';\nexport { isLoweredSymbol, createLoweredSymbol } from './aot/util';\nexport { AstPath } from './ast_path';\nexport { SummaryResolver, JitSummaryResolver } from './summary_resolver';\nexport { Identifiers } from './identifiers';\nexport { JitCompiler } from './jit/compiler';\nexport { CompileReflector } from './compile_reflector';\nexport { createUrlResolverWithoutPackagePrefix, createOfflineCompileUrlResolver, UrlResolver, getUrlScheme } from './url_resolver';\nexport { ResourceLoader } from './resource_loader';\nexport { DirectiveResolver } from './directive_resolver';\nexport { PipeResolver } from './pipe_resolver';\nexport { NgModuleResolver } from './ng_module_resolver';\nexport { DEFAULT_INTERPOLATION_CONFIG, InterpolationConfig } from './ml_parser/interpolation_config';\nexport { ElementSchemaRegistry } from './schema/element_schema_registry';\nexport { Extractor, I18NHtmlParser, MessageBundle, Serializer, Xliff, Xliff2, Xmb, Xtb } from './i18n/index';\nexport { DirectiveNormalizer } from './directive_normalizer';\nexport { ParserError, ParseSpan, AST, Quote, EmptyExpr, ImplicitReceiver, Chain, Conditional, PropertyRead, PropertyWrite, SafePropertyRead, KeyedRead, KeyedWrite, BindingPipe, LiteralPrimitive, LiteralArray, LiteralMap, Interpolation, Binary, PrefixNot, NonNullAssert, MethodCall, SafeMethodCall, FunctionCall, ASTWithSource, TemplateBinding, NullAstVisitor, RecursiveAstVisitor, AstTransformer, visitAstChildren } from './expression_parser/ast';\nexport { TokenType, Lexer, Token, EOF, isIdentifier, isQuote } from './expression_parser/lexer';\nexport { SplitInterpolation, TemplateBindingParseResult, Parser, _ParseAST } from './expression_parser/parser';\nexport { ERROR_COMPONENT_TYPE, CompileMetadataResolver } from './metadata_resolver';\nexport { Text, Expansion, ExpansionCase, Attribute, Element, Comment, visitAll, RecursiveVisitor, findNode } from './ml_parser/ast';\nexport { ParseTreeResult, TreeError, HtmlParser } from './ml_parser/html_parser';\nexport { HtmlTagDefinition, getHtmlTagDefinition } from './ml_parser/html_tags';\nexport { TagContentType, splitNsName, isNgContainer, isNgContent, isNgTemplate, getNsPrefix, mergeNsAndName, NAMED_ENTITIES, NGSP_UNICODE } from './ml_parser/tags';\nexport { NgModuleCompiler } from './ng_module_compiler';\nexport { AssertNotNull, BinaryOperator, BinaryOperatorExpr, BuiltinMethod, BuiltinVar, CastExpr, ClassStmt, CommaExpr, CommentStmt, ConditionalExpr, DeclareFunctionStmt, DeclareVarStmt, ExpressionStatement, ExternalExpr, ExternalReference, FunctionExpr, IfStmt, InstantiateExpr, InvokeFunctionExpr, InvokeMethodExpr, LiteralArrayExpr, LiteralExpr, LiteralMapExpr, NotExpr, ReadKeyExpr, ReadPropExpr, ReadVarExpr, ReturnStatement, ThrowStmt, TryCatchStmt, WriteKeyExpr, WritePropExpr, WriteVarExpr, StmtModifier, Statement, collectExternalReferences } from './output/output_ast';\nexport { EmitterVisitorContext } from './output/abstract_emitter';\nexport { debugOutputAstAsTypeScript, TypeScriptEmitter } from './output/ts_emitter';\nexport { ParseLocation, ParseSourceFile, ParseSourceSpan, ParseErrorLevel, ParseError, typeSourceSpan } from './parse_util';\nexport { DomElementSchemaRegistry } from './schema/dom_element_schema_registry';\nexport { CssSelector, SelectorMatcher, SelectorListContext, SelectorContext } from './selector';\nexport { StylesCompileDependency, CompiledStylesheet, StyleCompiler } from './style_compiler';\nexport { TemplateParseError, TemplateParseResult, TemplateParser, splitClasses, createElementCssSelector, removeSummaryDuplicates } from './template_parser/template_parser';\nexport { ViewCompiler } from './view_compiler/view_compiler';\nexport { getParseErrors, isSyntaxError, syntaxError, Version } from './util';\n// This file only reexports content of the `src` folder. Keep it that way.\n//# sourceMappingURL=compiler.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport { core, CompilerConfig, preserveWhitespacesDefault, isLoweredSymbol, createLoweredSymbol, Identifiers, JitCompiler, DirectiveResolver, PipeResolver, NgModuleResolver, DEFAULT_INTERPOLATION_CONFIG, InterpolationConfig, NgModuleCompiler, AssertNotNull, BinaryOperator, BinaryOperatorExpr, BuiltinMethod, BuiltinVar, CastExpr, ClassStmt, CommaExpr, CommentStmt, ConditionalExpr, DeclareFunctionStmt, DeclareVarStmt, ExpressionStatement, ExternalExpr, ExternalReference, FunctionExpr, IfStmt, InstantiateExpr, InvokeFunctionExpr, InvokeMethodExpr, LiteralArrayExpr, LiteralExpr, LiteralMapExpr, NotExpr, ReadKeyExpr, ReadPropExpr, ReadVarExpr, ReturnStatement, ThrowStmt, TryCatchStmt, WriteKeyExpr, WritePropExpr, WriteVarExpr, StmtModifier, Statement, collectExternalReferences, EmitterVisitorContext, ViewCompiler, getParseErrors, isSyntaxError, syntaxError, Version, VERSION, TextAst, BoundTextAst, AttrAst, BoundElementPropertyAst, BoundEventAst, ReferenceAst, VariableAst, ElementAst, EmbeddedTemplateAst, BoundDirectivePropertyAst, DirectiveAst, ProviderAst, ProviderAstType, NgContentAst, PropertyBindingType, NullTemplateVisitor, RecursiveTemplateAstVisitor, templateVisitAll, identifierName, identifierModuleUrl, viewClassName, rendererTypeName, hostViewClassName, componentFactoryName, CompileSummaryKind, tokenName, tokenReference, CompileStylesheetMetadata, CompileTemplateMetadata, CompileDirectiveMetadata, CompilePipeMetadata, CompileNgModuleMetadata, TransitiveCompileNgModuleMetadata, ProviderMeta, flatten, templateSourceUrl, sharedStylesheetJitUrl, ngModuleJitUrl, templateJitUrl, createAotUrlResolver, createAotCompiler, AotCompiler, analyzeNgModules, analyzeAndValidateNgModules, analyzeFile, mergeAnalyzedFiles, GeneratedFile, toTypeScript, formattedError, isFormattedError, StaticReflector, StaticSymbol, StaticSymbolCache, ResolvedStaticSymbol, StaticSymbolResolver, unescapeIdentifier, unwrapResolvedMetadata, AotSummaryResolver, AstPath, SummaryResolver, JitSummaryResolver, CompileReflector, createUrlResolverWithoutPackagePrefix, createOfflineCompileUrlResolver, UrlResolver, getUrlScheme, ResourceLoader, ElementSchemaRegistry, Extractor, I18NHtmlParser, MessageBundle, Serializer, Xliff, Xliff2, Xmb, Xtb, DirectiveNormalizer, ParserError, ParseSpan, AST, Quote, EmptyExpr, ImplicitReceiver, Chain, Conditional, PropertyRead, PropertyWrite, SafePropertyRead, KeyedRead, KeyedWrite, BindingPipe, LiteralPrimitive, LiteralArray, LiteralMap, Interpolation, Binary, PrefixNot, NonNullAssert, MethodCall, SafeMethodCall, FunctionCall, ASTWithSource, TemplateBinding, NullAstVisitor, RecursiveAstVisitor, AstTransformer, visitAstChildren, TokenType, Lexer, Token, EOF, isIdentifier, isQuote, SplitInterpolation, TemplateBindingParseResult, Parser, _ParseAST, ERROR_COMPONENT_TYPE, CompileMetadataResolver, Text, Expansion, ExpansionCase, Attribute, Element, Comment, visitAll, RecursiveVisitor, findNode, ParseTreeResult, TreeError, HtmlParser, HtmlTagDefinition, getHtmlTagDefinition, TagContentType, splitNsName, isNgContainer, isNgContent, isNgTemplate, getNsPrefix, mergeNsAndName, NAMED_ENTITIES, NGSP_UNICODE, debugOutputAstAsTypeScript, TypeScriptEmitter, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseErrorLevel, ParseError, typeSourceSpan, DomElementSchemaRegistry, CssSelector, SelectorMatcher, SelectorListContext, SelectorContext, StylesCompileDependency, CompiledStylesheet, StyleCompiler, TemplateParseError, TemplateParseResult, TemplateParser, splitClasses, createElementCssSelector, removeSummaryDuplicates } from './src/compiler';\n// This file only reexports content of the `src` folder. Keep it that way.\n//# sourceMappingURL=public_api.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// This file is not used to build this module. It is only used during editing\n// by the TypeScript language service and during build for verification. `ngc`\n// replaces this file with production index.ts when it rewrites private symbol\n// names.\nexport { core, CompilerConfig, preserveWhitespacesDefault, isLoweredSymbol, createLoweredSymbol, Identifiers, JitCompiler, DirectiveResolver, PipeResolver, NgModuleResolver, DEFAULT_INTERPOLATION_CONFIG, InterpolationConfig, NgModuleCompiler, AssertNotNull, BinaryOperator, BinaryOperatorExpr, BuiltinMethod, BuiltinVar, CastExpr, ClassStmt, CommaExpr, CommentStmt, ConditionalExpr, DeclareFunctionStmt, DeclareVarStmt, ExpressionStatement, ExternalExpr, ExternalReference, FunctionExpr, IfStmt, InstantiateExpr, InvokeFunctionExpr, InvokeMethodExpr, LiteralArrayExpr, LiteralExpr, LiteralMapExpr, NotExpr, ReadKeyExpr, ReadPropExpr, ReadVarExpr, ReturnStatement, ThrowStmt, TryCatchStmt, WriteKeyExpr, WritePropExpr, WriteVarExpr, StmtModifier, Statement, collectExternalReferences, EmitterVisitorContext, ViewCompiler, getParseErrors, isSyntaxError, syntaxError, Version, VERSION, TextAst, BoundTextAst, AttrAst, BoundElementPropertyAst, BoundEventAst, ReferenceAst, VariableAst, ElementAst, EmbeddedTemplateAst, BoundDirectivePropertyAst, DirectiveAst, ProviderAst, ProviderAstType, NgContentAst, PropertyBindingType, NullTemplateVisitor, RecursiveTemplateAstVisitor, templateVisitAll, identifierName, identifierModuleUrl, viewClassName, rendererTypeName, hostViewClassName, componentFactoryName, CompileSummaryKind, tokenName, tokenReference, CompileStylesheetMetadata, CompileTemplateMetadata, CompileDirectiveMetadata, CompilePipeMetadata, CompileNgModuleMetadata, TransitiveCompileNgModuleMetadata, ProviderMeta, flatten, templateSourceUrl, sharedStylesheetJitUrl, ngModuleJitUrl, templateJitUrl, createAotUrlResolver, createAotCompiler, AotCompiler, analyzeNgModules, analyzeAndValidateNgModules, analyzeFile, mergeAnalyzedFiles, GeneratedFile, toTypeScript, formattedError, isFormattedError, StaticReflector, StaticSymbol, StaticSymbolCache, ResolvedStaticSymbol, StaticSymbolResolver, unescapeIdentifier, unwrapResolvedMetadata, AotSummaryResolver, AstPath, SummaryResolver, JitSummaryResolver, CompileReflector, createUrlResolverWithoutPackagePrefix, createOfflineCompileUrlResolver, UrlResolver, getUrlScheme, ResourceLoader, ElementSchemaRegistry, Extractor, I18NHtmlParser, MessageBundle, Serializer, Xliff, Xliff2, Xmb, Xtb, DirectiveNormalizer, ParserError, ParseSpan, AST, Quote, EmptyExpr, ImplicitReceiver, Chain, Conditional, PropertyRead, PropertyWrite, SafePropertyRead, KeyedRead, KeyedWrite, BindingPipe, LiteralPrimitive, LiteralArray, LiteralMap, Interpolation, Binary, PrefixNot, NonNullAssert, MethodCall, SafeMethodCall, FunctionCall, ASTWithSource, TemplateBinding, NullAstVisitor, RecursiveAstVisitor, AstTransformer, visitAstChildren, TokenType, Lexer, Token, EOF, isIdentifier, isQuote, SplitInterpolation, TemplateBindingParseResult, Parser, _ParseAST, ERROR_COMPONENT_TYPE, CompileMetadataResolver, Text, Expansion, ExpansionCase, Attribute, Element, Comment, visitAll, RecursiveVisitor, findNode, ParseTreeResult, TreeError, HtmlParser, HtmlTagDefinition, getHtmlTagDefinition, TagContentType, splitNsName, isNgContainer, isNgContent, isNgTemplate, getNsPrefix, mergeNsAndName, NAMED_ENTITIES, NGSP_UNICODE, debugOutputAstAsTypeScript, TypeScriptEmitter, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseErrorLevel, ParseError, typeSourceSpan, DomElementSchemaRegistry, CssSelector, SelectorMatcher, SelectorListContext, SelectorContext, StylesCompileDependency, CompiledStylesheet, StyleCompiler, TemplateParseError, TemplateParseResult, TemplateParser, splitClasses, createElementCssSelector, removeSummaryDuplicates } from './public_api';\n//# sourceMappingURL=compiler.js.map"],"names":["Attribute","html.visitAll","html.Text","chars.$EOF","chars.$SPACE","chars.isDigit","chars.$PERIOD","chars.$LPAREN","chars.$RPAREN","chars.$LBRACE","chars.$RBRACE","chars.$LBRACKET","chars.$RBRACKET","chars.$COMMA","chars.$COLON","chars.$SEMICOLON","chars.$SQ","chars.$DQ","chars.$HASH","chars.$PLUS","chars.$MINUS","chars.$STAR","chars.$SLASH","chars.$PERCENT","chars.$CARET","chars.$QUESTION","chars.$LT","chars.$EQ","chars.$GT","chars.$BANG","chars.$AMPERSAND","chars.$BAR","chars.isWhitespace","chars.$NBSP","chars.$BACKSLASH","chars.$u","chars.$a","chars.$z","chars.$A","chars.$Z","chars.$_","chars.$$","chars.isAsciiLetter","chars.$e","chars.$E","chars.$BT","chars.$LF","chars.$n","chars.$FF","chars.$f","chars.$CR","chars.$r","chars.$TAB","chars.$t","chars.$VTAB","chars.$v","TokenType","Token","chars.$x","chars.$X","chars.$0","chars.$9","chars.isAsciiHexDigit","Parser","lex.tokenize","lex.TokenType","html.Comment","html.Expansion","lex.Token","html.ExpansionCase","html.Element","html.Attribute","Text","ExpressionParser","ExpressionLexer","i18n.Message","i18n.TagPlaceholder","i18n.Icu","i18n.Container","i18n.IcuPlaceholder","i18n.Text","i18n.Placeholder","i18n.RecurseVisitor","_Visitor","xml.Tag","xml.CR","xml.Text","xml.serialize","xml.Declaration","ml.visitAll","_VERSION","_XMLNS","_DEFAULT_SOURCE_LANG","_PLACEHOLDER_TAG","_SOURCE_TAG","_TARGET_TAG","_UNIT_TAG","_WriteVisitor","XmlToI18n","xml.Doctype","digest","cpl.viewClassName","cpl.hostViewClassName","cpl.identifierName","cpl.rendererTypeName","cpl.componentFactoryName","cpl.CompileDirectiveMetadata","cpl.CompileTemplateMetadata","cpl.CompileSummaryKind","cpl.CompileNgModuleMetadata","cpl.TransitiveCompileNgModuleMetadata","cpl.tokenReference","cpl.CompilePipeMetadata","cpl.ProviderMeta","Type","AstTransformer","RecursiveAstVisitor","o.literalArr","o.LiteralMapEntry","o.LiteralMapExpr","o.literal","o.Expression","o.fn","o.ReturnStatement","o.INFERRED_TYPE","o.FnParam","o.DYNAMIC_TYPE","o.variable","o.NULL_EXPR","o.importExpr","o.importType","o.expressionType","o.TypeModifier","o.StmtModifier","VERSION","CATCH_ERROR_VAR","CATCH_STACK_VAR","o.BuiltinVar","o.BinaryOperator","o.Statement","o.Type","o.ExternalExpr","o.BuiltinTypeName","o.BuiltinMethod","o.ArrayType","o.literalMap","o.DeclareVarStmt","cdAst.AstTransformer","o.BinaryOperatorExpr","cdAst.ImplicitReceiver","o.not","o.assertNotNull","cdAst.SafeMethodCall","cdAst.MethodCall","cdAst.PropertyRead","o.ReadVarExpr","o.ExpressionStatement","cdAst.FunctionCall","o.applySourceSpanToStatementIfNeeded","o.IfStmt","o.DeclareFunctionStmt","CLASS_ATTR","ViewBuilder","LOG_VAR","o.findReadVarNames","o.CommaExpr","o.applySourceSpanToExpressionIfNeeded","o.BOOL_TYPE","i18n.CloneVisitor","importExpr","o.ExternalReference","fn","ir.variable","ir.importExpr"],"mappings":"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"}