@jsverse/transloco 7.0.0 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/CHANGELOG.md +15 -8
  2. package/esm2022/lib/transloco.directive.mjs +23 -20
  3. package/esm2022/lib/transloco.providers.mjs +4 -4
  4. package/fesm2022/jsverse-transloco.mjs +25 -22
  5. package/fesm2022/jsverse-transloco.mjs.map +1 -1
  6. package/lib/transloco.directive.d.ts +5 -3
  7. package/lib/transloco.providers.d.ts +2 -2
  8. package/package.json +1 -1
  9. package/schematics/src/assets/i18n/en.json +0 -1
  10. package/schematics/src/collection.json +0 -59
  11. package/schematics/src/component/index.d.ts +0 -2
  12. package/schematics/src/component/index.js +0 -21
  13. package/schematics/src/component/index.js.map +0 -1
  14. package/schematics/src/join/index.d.ts +0 -3
  15. package/schematics/src/join/index.js +0 -79
  16. package/schematics/src/join/index.js.map +0 -1
  17. package/schematics/src/join/schema.d.ts +0 -28
  18. package/schematics/src/join/schema.js +0 -3
  19. package/schematics/src/join/schema.js.map +0 -1
  20. package/schematics/src/join/schema.json +0 -43
  21. package/schematics/src/keys-manager/index.d.ts +0 -5
  22. package/schematics/src/keys-manager/index.js +0 -97
  23. package/schematics/src/keys-manager/index.js.map +0 -1
  24. package/schematics/src/keys-manager/schema.d.ts +0 -19
  25. package/schematics/src/keys-manager/schema.js +0 -3
  26. package/schematics/src/keys-manager/schema.js.map +0 -1
  27. package/schematics/src/keys-manager/schema.json +0 -33
  28. package/schematics/src/migrate/index.d.ts +0 -3
  29. package/schematics/src/migrate/index.js +0 -21
  30. package/schematics/src/migrate/index.js.map +0 -1
  31. package/schematics/src/migrate/ngx-translate-migration.d.ts +0 -3
  32. package/schematics/src/migrate/ngx-translate-migration.js +0 -169
  33. package/schematics/src/migrate/ngx-translate-migration.js.map +0 -1
  34. package/schematics/src/migrate/schema.d.ts +0 -10
  35. package/schematics/src/migrate/schema.js +0 -3
  36. package/schematics/src/migrate/schema.js.map +0 -1
  37. package/schematics/src/migrate/schema.json +0 -23
  38. package/schematics/src/ng-add/files/transloco-loader/transloco-loader.__ts__ +0 -12
  39. package/schematics/src/ng-add/files/transloco-module/transloco-root.module.__ts__ +0 -24
  40. package/schematics/src/ng-add/generators/http-loader.gen.d.ts +0 -4
  41. package/schematics/src/ng-add/generators/http-loader.gen.js +0 -15
  42. package/schematics/src/ng-add/generators/http-loader.gen.js.map +0 -1
  43. package/schematics/src/ng-add/generators/root-module.gen.d.ts +0 -9
  44. package/schematics/src/ng-add/generators/root-module.gen.js +0 -31
  45. package/schematics/src/ng-add/generators/root-module.gen.js.map +0 -1
  46. package/schematics/src/ng-add/generators/translation-files.gen.d.ts +0 -4
  47. package/schematics/src/ng-add/generators/translation-files.gen.js +0 -23
  48. package/schematics/src/ng-add/generators/translation-files.gen.js.map +0 -1
  49. package/schematics/src/ng-add/index.d.ts +0 -3
  50. package/schematics/src/ng-add/index.js +0 -103
  51. package/schematics/src/ng-add/index.js.map +0 -1
  52. package/schematics/src/ng-add/schema.d.ts +0 -42
  53. package/schematics/src/ng-add/schema.js +0 -14
  54. package/schematics/src/ng-add/schema.js.map +0 -1
  55. package/schematics/src/ng-add/schema.json +0 -53
  56. package/schematics/src/ng-migrate/index.d.ts +0 -3
  57. package/schematics/src/ng-migrate/index.js +0 -14
  58. package/schematics/src/ng-migrate/index.js.map +0 -1
  59. package/schematics/src/ng-migrate/ng-migrate.d.ts +0 -5
  60. package/schematics/src/ng-migrate/ng-migrate.js +0 -106
  61. package/schematics/src/ng-migrate/ng-migrate.js.map +0 -1
  62. package/schematics/src/ng-migrate/schema.d.ts +0 -14
  63. package/schematics/src/ng-migrate/schema.js +0 -3
  64. package/schematics/src/ng-migrate/schema.js.map +0 -1
  65. package/schematics/src/ng-migrate/schema.json +0 -27
  66. package/schematics/src/schematics.consts.d.ts +0 -4
  67. package/schematics/src/schematics.consts.js +0 -8
  68. package/schematics/src/schematics.consts.js.map +0 -1
  69. package/schematics/src/scope/index.d.ts +0 -3
  70. package/schematics/src/scope/index.js +0 -101
  71. package/schematics/src/scope/index.js.map +0 -1
  72. package/schematics/src/scope/schema.d.ts +0 -28
  73. package/schematics/src/scope/schema.js +0 -3
  74. package/schematics/src/scope/schema.js.map +0 -1
  75. package/schematics/src/scope/schema.json +0 -84
  76. package/schematics/src/split/index.d.ts +0 -3
  77. package/schematics/src/split/index.js +0 -66
  78. package/schematics/src/split/index.js.map +0 -1
  79. package/schematics/src/split/schema.d.ts +0 -20
  80. package/schematics/src/split/schema.js +0 -3
  81. package/schematics/src/split/schema.js.map +0 -1
  82. package/schematics/src/split/schema.json +0 -35
  83. package/schematics/src/types.d.ts +0 -5
  84. package/schematics/src/types.js +0 -10
  85. package/schematics/src/types.js.map +0 -1
  86. package/schematics/src/upgrade/index.d.ts +0 -3
  87. package/schematics/src/upgrade/index.js +0 -19
  88. package/schematics/src/upgrade/index.js.map +0 -1
  89. package/schematics/src/upgrade/schema.d.ts +0 -6
  90. package/schematics/src/upgrade/schema.js +0 -3
  91. package/schematics/src/upgrade/schema.js.map +0 -1
  92. package/schematics/src/upgrade/schema.json +0 -16
  93. package/schematics/src/upgrade/v2.d.ts +0 -1
  94. package/schematics/src/upgrade/v2.js +0 -89
  95. package/schematics/src/upgrade/v2.js.map +0 -1
  96. package/schematics/src/utils/array.d.ts +0 -3
  97. package/schematics/src/utils/array.js +0 -12
  98. package/schematics/src/utils/array.js.map +0 -1
  99. package/schematics/src/utils/config.d.ts +0 -2
  100. package/schematics/src/utils/config.js +0 -13
  101. package/schematics/src/utils/config.js.map +0 -1
  102. package/schematics/src/utils/find-module.d.ts +0 -23
  103. package/schematics/src/utils/find-module.js +0 -110
  104. package/schematics/src/utils/find-module.js.map +0 -1
  105. package/schematics/src/utils/package.d.ts +0 -5
  106. package/schematics/src/utils/package.js +0 -19
  107. package/schematics/src/utils/package.js.map +0 -1
  108. package/schematics/src/utils/projects.d.ts +0 -8
  109. package/schematics/src/utils/projects.js +0 -56
  110. package/schematics/src/utils/projects.js.map +0 -1
  111. package/schematics/src/utils/translations.d.ts +0 -7
  112. package/schematics/src/utils/translations.js +0 -31
  113. package/schematics/src/utils/translations.js.map +0 -1
  114. package/schematics/src/utils/transloco.d.ts +0 -24
  115. package/schematics/src/utils/transloco.js +0 -93
  116. package/schematics/src/utils/transloco.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,25 +2,32 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
- # [7.0.0](https://github.com/jsverse/transloco/compare/transloco-6.0.4...transloco-7.0.0) (2024-03-23)
6
-
5
+ # [7.2.0](https://github.com/ngneat/transloco/compare/transloco-7.1.0...transloco-7.2.0) (2024-04-19)
7
6
 
8
- ### chore
7
+ ### Features
9
8
 
10
- * **transloco:** 🤖 update package scope ([f8b6d58](https://github.com/jsverse/transloco/commit/f8b6d58f51d99fcb2912082fbefd95527a57e2e4))
9
+ - **transloco:** allow to provide multiple scopes via `provideTranslocoScopes` ([#758](https://github.com/ngneat/transloco/issues/758)) ([623b46f](https://github.com/ngneat/transloco/commit/623b46f4384803e7f7f8f57e57a43cb29a29e8d2))
11
10
 
11
+ # [7.1.0](https://github.com/ngneat/transloco/compare/transloco-7.0.0...transloco-7.1.0) (2024-03-30)
12
12
 
13
13
  ### Features
14
14
 
15
- * **transloco:** 🎸 Improve params algo matching ([8447634](https://github.com/jsverse/transloco/commit/8447634588210771047c45072186f20867fd8a2f))
15
+ - **transloco:** 🎸 introduce prefix input ([1e27a8f](https://github.com/ngneat/transloco/commit/1e27a8fe9922e3e8f4ced0ea3960aca8ae4da92d))
16
16
 
17
+ # [7.0.0](https://github.com/jsverse/transloco/compare/transloco-6.0.4...transloco-7.0.0) (2024-03-23)
17
18
 
18
- ### BREAKING CHANGES
19
+ ### chore
20
+
21
+ - **transloco:** 🤖 update package scope ([f8b6d58](https://github.com/jsverse/transloco/commit/f8b6d58f51d99fcb2912082fbefd95527a57e2e4))
19
22
 
20
- * **transloco:** 🧨 The package is now published under the jsverse scope
21
- * **transloco:** 🧨 All breaking changes are listed in the breaking changes document
23
+ ### Features
22
24
 
25
+ - **transloco:** 🎸 Improve params algo matching ([8447634](https://github.com/jsverse/transloco/commit/8447634588210771047c45072186f20867fd8a2f))
26
+
27
+ ### BREAKING CHANGES
23
28
 
29
+ - **transloco:** 🧨 The package is now published under the jsverse scope
30
+ - **transloco:** 🧨 All breaking changes are listed in the breaking changes document
24
31
 
25
32
  ## [6.0.4](https://github.com/jsverse/transloco/compare/transloco-6.0.3...transloco-6.0.4) (2023-12-09)
26
33
 
@@ -25,11 +25,13 @@ export class TranslocoDirective {
25
25
  renderer = inject(Renderer2);
26
26
  subscription = null;
27
27
  view;
28
- translationMemo = {};
28
+ memo = new Map();
29
29
  key;
30
30
  params = {};
31
31
  inlineScope;
32
+ /** @deprecated use prefix instead, will be removed in Transloco v8 */
32
33
  inlineRead;
34
+ prefix;
33
35
  inlineLang;
34
36
  inlineTpl;
35
37
  currentLang;
@@ -60,7 +62,7 @@ export class TranslocoDirective {
60
62
  this.currentLang = this.langResolver.resolveLangBasedOnScope(this.path);
61
63
  this.strategy === 'attribute'
62
64
  ? this.attributeStrategy()
63
- : this.structuralStrategy(this.currentLang, this.inlineRead);
65
+ : this.structuralStrategy(this.currentLang, this.prefix || this.inlineRead);
64
66
  this.cdr.markForCheck();
65
67
  this.initialized = true;
66
68
  });
@@ -84,41 +86,39 @@ export class TranslocoDirective {
84
86
  this.detachLoader();
85
87
  this.renderer.setProperty(this.host.nativeElement, 'innerText', this.service.translate(this.key, this.params, this.currentLang));
86
88
  }
87
- structuralStrategy(lang, read) {
88
- this.translationMemo = {};
89
+ structuralStrategy(lang, prefix) {
90
+ this.memo.clear();
91
+ const translateFn = this.getTranslateFn(lang, prefix);
89
92
  if (this.view) {
90
93
  // when the lang changes we need to change the reference so Angular will update the view
91
- this.view.context['$implicit'] = this.getTranslateFn(lang, read);
94
+ this.view.context['$implicit'] = translateFn;
92
95
  this.view.context['currentLang'] = this.currentLang;
93
96
  }
94
97
  else {
95
98
  this.detachLoader();
96
99
  this.view = this.vcr.createEmbeddedView(this.tpl, {
97
- $implicit: this.getTranslateFn(lang, read),
100
+ $implicit: translateFn,
98
101
  currentLang: this.currentLang,
99
102
  });
100
103
  }
101
104
  }
102
- getTranslateFn(lang, read) {
105
+ getTranslateFn(lang, prefix) {
103
106
  return (key, params) => {
104
- const withRead = read ? `${read}.${key}` : key;
105
- const withParams = params
106
- ? `${withRead}${JSON.stringify(params)}`
107
- : withRead;
108
- if (Object.prototype.hasOwnProperty.call(this.translationMemo, withParams)) {
109
- return this.translationMemo[withParams].value;
107
+ const withPrefix = prefix ? `${prefix}.${key}` : key;
108
+ const memoKey = params
109
+ ? `${withPrefix}${JSON.stringify(params)}`
110
+ : withPrefix;
111
+ if (!this.memo.has(memoKey)) {
112
+ this.memo.set(memoKey, this.service.translate(withPrefix, params, lang));
110
113
  }
111
- this.translationMemo[withParams] = {
112
- params,
113
- value: this.service.translate(withRead, params, lang),
114
- };
115
- return this.translationMemo[withParams].value;
114
+ return this.memo.get(memoKey);
116
115
  };
117
116
  }
118
117
  resolveLoadingContent() {
119
118
  return this.inlineTpl || this.providedLoadingTpl;
120
119
  }
121
120
  ngOnDestroy() {
121
+ this.memo.clear();
122
122
  if (this.subscription) {
123
123
  this.subscription.unsubscribe();
124
124
  // Caretaker note: it's important to clean up references to subscriptions since they save the `next`
@@ -139,7 +139,7 @@ export class TranslocoDirective {
139
139
  return this.service._loadDependencies(this.path, inlineLoader);
140
140
  }
141
141
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
142
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: TranslocoDirective, isStandalone: true, selector: "[transloco]", inputs: { key: ["transloco", "key"], params: ["translocoParams", "params"], inlineScope: ["translocoScope", "inlineScope"], inlineRead: ["translocoRead", "inlineRead"], inlineLang: ["translocoLang", "inlineLang"], inlineTpl: ["translocoLoadingTpl", "inlineTpl"] }, usesOnChanges: true, ngImport: i0 });
142
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: TranslocoDirective, isStandalone: true, selector: "[transloco]", inputs: { key: ["transloco", "key"], params: ["translocoParams", "params"], inlineScope: ["translocoScope", "inlineScope"], inlineRead: ["translocoRead", "inlineRead"], prefix: ["translocoPrefix", "prefix"], inlineLang: ["translocoLang", "inlineLang"], inlineTpl: ["translocoLoadingTpl", "inlineTpl"] }, usesOnChanges: true, ngImport: i0 });
143
143
  }
144
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoDirective, decorators: [{
145
145
  type: Directive,
@@ -159,6 +159,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
159
159
  }], inlineRead: [{
160
160
  type: Input,
161
161
  args: ['translocoRead']
162
+ }], prefix: [{
163
+ type: Input,
164
+ args: ['translocoPrefix']
162
165
  }], inlineLang: [{
163
166
  type: Input,
164
167
  args: ['translocoLang']
@@ -166,4 +169,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
166
169
  type: Input,
167
170
  args: ['translocoLoadingTpl']
168
171
  }] } });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdHJhbnNsb2NvLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBRVYsTUFBTSxFQUNOLEtBQUssRUFJTCxTQUFTLEVBRVQsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUE0QixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckUsT0FBTyxFQUFXLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIseUJBQXlCLEdBQzFCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBWWpELE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsT0FBTyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25DLEdBQUcsR0FBRyxNQUFNLENBQTJCLFdBQVcsRUFBRTtRQUMxRCxRQUFRLEVBQUUsSUFBSTtLQUNmLENBQUMsQ0FBQztJQUNLLFlBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFB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QWtCOzJGQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkF5QnFCLEdBQUc7c0JBQXRCLEtBQUs7dUJBQUMsV0FBVztnQkFDUSxNQUFNO3NCQUEvQixLQUFLO3VCQUFDLGlCQUFpQjtnQkFDQyxXQUFXO3NCQUFuQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFDQyxVQUFVO3NCQUFqQyxLQUFLO3VCQUFDLGVBQWU7Z0JBQ0UsVUFBVTtzQkFBakMsS0FBSzt1QkFBQyxlQUFlO2dCQUNRLFNBQVM7c0JBQXRDLEtBQUs7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDb250ZW50LCBUZW1wbGF0ZUhhbmRsZXIgfSBmcm9tICcuL3RlbXBsYXRlLWhhbmRsZXInO1xuaW1wb3J0IHsgVFJBTlNMT0NPX0xBTkcgfSBmcm9tICcuL3RyYW5zbG9jby1sYW5nJztcbmltcG9ydCB7IFRSQU5TTE9DT19MT0FESU5HX1RFTVBMQVRFIH0gZnJvbSAnLi90cmFuc2xvY28tbG9hZGluZy10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBUUkFOU0xPQ09fU0NPUEUgfSBmcm9tICcuL3RyYW5zbG9jby1zY29wZSc7XG5pbXBvcnQgeyBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xvY28uc2VydmljZSc7XG5pbXBvcnQgeyBIYXNoTWFwLCBPckFycmF5LCBUcmFuc2xhdGlvbiwgVHJhbnNsb2NvU2NvcGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIGxpc3Rlbk9yTm90T3BlcmF0b3IsXG4gIHJlc29sdmVJbmxpbmVMb2FkZXIsXG4gIHNob3VsZExpc3RlblRvTGFuZ0NoYW5nZXMsXG59IGZyb20gJy4vc2hhcmVkJztcbmltcG9ydCB7IExhbmdSZXNvbHZlciB9IGZyb20gJy4vbGFuZy1yZXNvbHZlcic7XG5pbXBvcnQgeyBTY29wZVJlc29sdmVyIH0gZnJvbSAnLi9zY29wZS1yZXNvbHZlcic7XG5cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcsIHBhcmFtcz86IEhhc2hNYXApID0+IGFueTtcbmludGVyZmFjZSBWaWV3Q29udGV4dCB7XG4gICRpbXBsaWNpdDogVHJhbnNsYXRlRm47XG4gIGN1cnJlbnRMYW5nOiBzdHJpbmc7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0cmFuc2xvY29dJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNsb2NvRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgc2VydmljZSA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0cGwgPSBpbmplY3Q8VGVtcGxhdGVSZWY8Vmlld0NvbnRleHQ+PihUZW1wbGF0ZVJlZiwge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICB9KTtcbiAgcHJpdmF0ZSBwcm92aWRlckxhbmcgPSBpbmplY3QoVFJBTlNMT0NPX0xBTkcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcHJvdmlkZXJTY29wZTogT3JBcnJheTxUcmFuc2xvY29TY29wZT4gfCBudWxsID0gaW5qZWN0KFxuICAgIFRSQU5TTE9DT19TQ09QRSxcbiAgICB7IG9wdGlvbmFsOiB0cnVlIH1cbiAgKTtcbiAgcHJpdmF0ZSBwcm92aWRlZExvYWRpbmdUcGwgPSBpbmplY3QoVFJBTlNMT0NPX0xPQURJTkdfVEVNUExBVEUsIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBob3N0ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHZjciA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHZpZXc6IEVtYmVkZGVkVmlld1JlZjxWaWV3Q29udGV4dD4gfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSB0cmFuc2xhdGlvbk1lbW86IFJlY29yZDxzdHJpbmcsIHsgdmFsdWU6IGFueTsgcGFyYW1zPzogSGFzaE1hcCB9PiA9XG4gICAge307XG5cbiAgQElucHV0KCd0cmFuc2xvY28nKSBrZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCd0cmFuc2xvY29QYXJhbXMnKSBwYXJhbXM6IEhhc2hNYXAgPSB7fTtcbiAgQElucHV0KCd0cmFuc2xvY29TY29wZScpIGlubGluZVNjb3BlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgndHJhbnNsb2NvUmVhZCcpIGlubGluZVJlYWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCd0cmFuc2xvY29MYW5nJykgaW5saW5lTGFuZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoJ3RyYW5zbG9jb0xvYWRpbmdUcGwnKSBpbmxpbmVUcGw6IENvbnRlbnQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBjdXJyZW50TGFuZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGxvYWRlclRwbEhhbmRsZXI6IFRlbXBsYXRlSGFuZGxlciB8IHVuZGVmaW5lZDtcbiAgLy8gV2hldGhlciB3ZSBhbHJlYWR5IHJlbmRlcmVkIHRoZSB2aWV3IG9uY2VcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIHBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsYW5nUmVzb2x2ZXIgPSBuZXcgTGFuZ1Jlc29sdmVyKCk7XG4gIHByaXZhdGUgc2NvcGVSZXNvbHZlciA9IG5ldyBTY29wZVJlc29sdmVyKHRoaXMuc2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RyYXRlZ3kgPSB0aGlzLnRwbCA9PT0gbnVsbCA/ICdhdHRyaWJ1dGUnIDogJ3N0cnVjdHVyYWwnO1xuXG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKFxuICAgIGRpcjogVHJhbnNsb2NvRGlyZWN0aXZlLFxuICAgIGN0eDogdW5rbm93blxuICApOiBjdHggaXMgVmlld0NvbnRleHQge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgbGlzdGVuVG9MYW5nQ2hhbmdlID0gc2hvdWxkTGlzdGVuVG9MYW5nQ2hhbmdlcyhcbiAgICAgIHRoaXMuc2VydmljZSxcbiAgICAgIHRoaXMucHJvdmlkZXJMYW5nIHx8IHRoaXMuaW5saW5lTGFuZ1xuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuc2VydmljZS5sYW5nQ2hhbmdlcyRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGFjdGl2ZUxhbmcpID0+IHtcbiAgICAgICAgICBjb25zdCBsYW5nID0gdGhpcy5sYW5nUmVzb2x2ZXIucmVzb2x2ZSh7XG4gICAgICAgICAgICBpbmxpbmU6IHRoaXMuaW5saW5lTGFuZyxcbiAgICAgICAgICAgIHByb3ZpZGVyOiB0aGlzLnByb3ZpZGVyTGFuZyxcbiAgICAgICAgICAgIGFjdGl2ZTogYWN0aXZlTGFuZyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMucHJvdmlkZXJTY29wZSlcbiAgICAgICAgICAgID8gZm9ya0pvaW4oXG4gICAgICAgICAgICAgICAgdGhpcy5wcm92aWRlclNjb3BlLm1hcCgocHJvdmlkZXJTY29wZSkgPT5cbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZVNjb3BlKGxhbmcsIHByb3ZpZGVyU2NvcGUpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHRoaXMucmVzb2x2ZVNjb3BlKGxhbmcsIHRoaXMucHJvdmlkZXJTY29wZSk7XG4gICAgICAgIH0pLFxuICAgICAgICBsaXN0ZW5Pck5vdE9wZXJhdG9yKGxpc3RlblRvTGFuZ0NoYW5nZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRMYW5nID0gdGhpcy5sYW5nUmVzb2x2ZXIucmVzb2x2ZUxhbmdCYXNlZE9uU2NvcGUoXG4gICAgICAgICAgdGhpcy5wYXRoIVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN0cmF0ZWd5ID09PSAnYXR0cmlidXRlJ1xuICAgICAgICAgID8gdGhpcy5hdHRyaWJ1dGVTdHJhdGVneSgpXG4gICAgICAgICAgOiB0aGlzLnN0cnVjdHVyYWxTdHJhdGVneSh0aGlzLmN1cnJlbnRMYW5nLCB0aGlzLmlubGluZVJlYWQpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB9KTtcblxuICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgY29uc3QgbG9hZGluZ0NvbnRlbnQgPSB0aGlzLnJlc29sdmVMb2FkaW5nQ29udGVudCgpO1xuICAgICAgaWYgKGxvYWRpbmdDb250ZW50KSB7XG4gICAgICAgIHRoaXMubG9hZGVyVHBsSGFuZGxlciA9IG5ldyBUZW1wbGF0ZUhhbmRsZXIobG9hZGluZ0NvbnRlbnQsIHRoaXMudmNyKTtcbiAgICAgICAgdGhpcy5sb2FkZXJUcGxIYW5kbGVyLmF0dGFjaFZpZXcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgLy8gV2UgbmVlZCB0byBzdXBwb3J0IGR5bmFtaWMga2V5cy9wYXJhbXMsIHNvIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBjaGFuZ2UgQ0QgY3ljbGVcbiAgICAvLyB3ZSBuZWVkIHRvIHJ1biB0aGUgZnVuY3Rpb24gYWdhaW4gaW4gb3JkZXIgdG8gdXBkYXRlIHRoZSB2YWx1ZVxuICAgIGlmICh0aGlzLnN0cmF0ZWd5ID09PSAnYXR0cmlidXRlJykge1xuICAgICAgY29uc3Qgbm90SW5pdCA9IE9iamVjdC5rZXlzKGNoYW5nZXMpLnNvbWUoKHYpID0+ICFjaGFuZ2VzW3ZdLmZpcnN0Q2hhbmdlKTtcbiAgICAgIG5vdEluaXQgJiYgdGhpcy5hdHRyaWJ1dGVTdHJhdGVneSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXR0cmlidXRlU3RyYXRlZ3koKSB7XG4gICAgdGhpcy5kZXRhY2hMb2FkZXIoKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAnaW5uZXJUZXh0JyxcbiAgICAgIHRoaXMuc2VydmljZS50cmFuc2xhdGUodGhpcy5rZXkhLCB0aGlzLnBhcmFtcywgdGhpcy5jdXJyZW50TGFuZylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJ1Y3R1cmFsU3RyYXRlZ3kobGFuZzogc3RyaW5nLCByZWFkPzogc3RyaW5nKSB7XG4gICAgdGhpcy50cmFuc2xhdGlvbk1lbW8gPSB7fTtcblxuICAgIGlmICh0aGlzLnZpZXcpIHtcbiAgICAgIC8vIHdoZW4gdGhlIGxhbmcgY2hhbmdlcyB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgcmVmZXJlbmNlIHNvIEFuZ3VsYXIgd2lsbCB1cGRhdGUgdGhlIHZpZXdcbiAgICAgIHRoaXMudmlldy5jb250ZXh0WyckaW1wbGljaXQnXSA9IHRoaXMuZ2V0VHJhbnNsYXRlRm4obGFuZywgcmVhZCk7XG4gICAgICB0aGlzLnZpZXcuY29udGV4dFsnY3VycmVudExhbmcnXSA9IHRoaXMuY3VycmVudExhbmchO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRldGFjaExvYWRlcigpO1xuICAgICAgdGhpcy52aWV3ID0gdGhpcy52Y3IuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudHBsISwge1xuICAgICAgICAkaW1wbGljaXQ6IHRoaXMuZ2V0VHJhbnNsYXRlRm4obGFuZywgcmVhZCksXG4gICAgICAgIGN1cnJlbnRMYW5nOiB0aGlzLmN1cnJlbnRMYW5nISxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUcmFuc2xhdGVGbihcbiAgICBsYW5nOiBzdHJpbmcsXG4gICAgcmVhZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICk6IFRyYW5zbGF0ZUZuIHtcbiAgICByZXR1cm4gKGtleTogc3RyaW5nLCBwYXJhbXM/OiBIYXNoTWFwKSA9PiB7XG4gICAgICBjb25zdCB3aXRoUmVhZCA9IHJlYWQgPyBgJHtyZWFkfS4ke2tleX1gIDoga2V5O1xuICAgICAgY29uc3Qgd2l0aFBhcmFtcyA9IHBhcmFtc1xuICAgICAgICA/IGAke3dpdGhSZWFkfSR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX1gXG4gICAgICAgIDogd2l0aFJlYWQ7XG5cbiAgICAgIGlmIChcbiAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMudHJhbnNsYXRpb25NZW1vLCB3aXRoUGFyYW1zKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uTWVtb1t3aXRoUGFyYW1zXS52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50cmFuc2xhdGlvbk1lbW9bd2l0aFBhcmFtc10gPSB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgdmFsdWU6IHRoaXMuc2VydmljZS50cmFuc2xhdGUod2l0aFJlYWQsIHBhcmFtcywgbGFuZyksXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbk1lbW9bd2l0aFBhcmFtc10udmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUxvYWRpbmdDb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLmlubGluZVRwbCB8fCB0aGlzLnByb3ZpZGVkTG9hZGluZ1RwbDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIC8vIENhcmV0YWtlciBub3RlOiBpdCdzIGltcG9ydGFudCB0byBjbGVhbiB1cCByZWZlcmVuY2VzIHRvIHN1YnNjcmlwdGlvbnMgc2luY2UgdGhleSBzYXZlIHRoZSBgbmV4dGBcbiAgICAgIC8vIGNhbGxiYWNrIHdpdGhpbiBpdHMgYGRlc3RpbmF0aW9uYCBwcm9wZXJ0eSwgcHJldmVudGluZyBjbGFzc2VzIGZyb20gYmVpbmcgR0MnZC5cbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRldGFjaExvYWRlcigpIHtcbiAgICB0aGlzLmxvYWRlclRwbEhhbmRsZXI/LmRldGFjaFZpZXcoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVNjb3BlKFxuICAgIGxhbmc6IHN0cmluZyxcbiAgICBwcm92aWRlclNjb3BlOiBUcmFuc2xvY29TY29wZSB8IG51bGxcbiAgKTogT2JzZXJ2YWJsZTxUcmFuc2xhdGlvbiB8IFRyYW5zbGF0aW9uW10+IHtcbiAgICBjb25zdCByZXNvbHZlZFNjb3BlID0gdGhpcy5zY29wZVJlc29sdmVyLnJlc29sdmUoe1xuICAgICAgaW5saW5lOiB0aGlzLmlubGluZVNjb3BlLFxuICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyU2NvcGUsXG4gICAgfSk7XG4gICAgdGhpcy5wYXRoID0gdGhpcy5sYW5nUmVzb2x2ZXIucmVzb2x2ZUxhbmdQYXRoKGxhbmcsIHJlc29sdmVkU2NvcGUpO1xuICAgIGNvbnN0IGlubGluZUxvYWRlciA9IHJlc29sdmVJbmxpbmVMb2FkZXIocHJvdmlkZXJTY29wZSwgcmVzb2x2ZWRTY29wZSk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLl9sb2FkRGVwZW5kZW5jaWVzKHRoaXMucGF0aCwgaW5saW5lTG9hZGVyKTtcbiAgfVxufVxuIl19
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdHJhbnNsb2NvLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBRVYsTUFBTSxFQUNOLEtBQUssRUFJTCxTQUFTLEVBRVQsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUE0QixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckUsT0FBTyxFQUFXLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIseUJBQXlCLEdBQzFCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBWWpELE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsT0FBTyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25DLEdBQUcsR0FBRyxNQUFNLENBQTJCLFdBQVcsRUFBRTtRQUMxRCxRQUFRLEVBQUUsSUFBSTtLQUNmLENBQUMsQ0FBQztJQUNLLFlBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFB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QWtCOzJGQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkF3QnFCLEdBQUc7c0JBQXRCLEtBQUs7dUJBQUMsV0FBVztnQkFDUSxNQUFNO3NCQUEvQixLQUFLO3VCQUFDLGlCQUFpQjtnQkFDQyxXQUFXO3NCQUFuQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFFQyxVQUFVO3NCQUFqQyxLQUFLO3VCQUFDLGVBQWU7Z0JBQ0ksTUFBTTtzQkFBL0IsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ0EsVUFBVTtzQkFBakMsS0FBSzt1QkFBQyxlQUFlO2dCQUNRLFNBQVM7c0JBQXRDLEtBQUs7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDb250ZW50LCBUZW1wbGF0ZUhhbmRsZXIgfSBmcm9tICcuL3RlbXBsYXRlLWhhbmRsZXInO1xuaW1wb3J0IHsgVFJBTlNMT0NPX0xBTkcgfSBmcm9tICcuL3RyYW5zbG9jby1sYW5nJztcbmltcG9ydCB7IFRSQU5TTE9DT19MT0FESU5HX1RFTVBMQVRFIH0gZnJvbSAnLi90cmFuc2xvY28tbG9hZGluZy10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBUUkFOU0xPQ09fU0NPUEUgfSBmcm9tICcuL3RyYW5zbG9jby1zY29wZSc7XG5pbXBvcnQgeyBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xvY28uc2VydmljZSc7XG5pbXBvcnQgeyBIYXNoTWFwLCBPckFycmF5LCBUcmFuc2xhdGlvbiwgVHJhbnNsb2NvU2NvcGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIGxpc3Rlbk9yTm90T3BlcmF0b3IsXG4gIHJlc29sdmVJbmxpbmVMb2FkZXIsXG4gIHNob3VsZExpc3RlblRvTGFuZ0NoYW5nZXMsXG59IGZyb20gJy4vc2hhcmVkJztcbmltcG9ydCB7IExhbmdSZXNvbHZlciB9IGZyb20gJy4vbGFuZy1yZXNvbHZlcic7XG5pbXBvcnQgeyBTY29wZVJlc29sdmVyIH0gZnJvbSAnLi9zY29wZS1yZXNvbHZlcic7XG5cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcsIHBhcmFtcz86IEhhc2hNYXApID0+IGFueTtcbmludGVyZmFjZSBWaWV3Q29udGV4dCB7XG4gICRpbXBsaWNpdDogVHJhbnNsYXRlRm47XG4gIGN1cnJlbnRMYW5nOiBzdHJpbmc7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0cmFuc2xvY29dJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNsb2NvRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgc2VydmljZSA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0cGwgPSBpbmplY3Q8VGVtcGxhdGVSZWY8Vmlld0NvbnRleHQ+PihUZW1wbGF0ZVJlZiwge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICB9KTtcbiAgcHJpdmF0ZSBwcm92aWRlckxhbmcgPSBpbmplY3QoVFJBTlNMT0NPX0xBTkcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcHJvdmlkZXJTY29wZTogT3JBcnJheTxUcmFuc2xvY29TY29wZT4gfCBudWxsID0gaW5qZWN0KFxuICAgIFRSQU5TTE9DT19TQ09QRSxcbiAgICB7IG9wdGlvbmFsOiB0cnVlIH1cbiAgKTtcbiAgcHJpdmF0ZSBwcm92aWRlZExvYWRpbmdUcGwgPSBpbmplY3QoVFJBTlNMT0NPX0xPQURJTkdfVEVNUExBVEUsIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBob3N0ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHZjciA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHZpZXc6IEVtYmVkZGVkVmlld1JlZjxWaWV3Q29udGV4dD4gfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBtZW1vID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcblxuICBASW5wdXQoJ3RyYW5zbG9jbycpIGtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoJ3RyYW5zbG9jb1BhcmFtcycpIHBhcmFtczogSGFzaE1hcCA9IHt9O1xuICBASW5wdXQoJ3RyYW5zbG9jb1Njb3BlJykgaW5saW5lU2NvcGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqIEBkZXByZWNhdGVkIHVzZSBwcmVmaXggaW5zdGVhZCwgd2lsbCBiZSByZW1vdmVkIGluIFRyYW5zbG9jbyB2OCAqL1xuICBASW5wdXQoJ3RyYW5zbG9jb1JlYWQnKSBpbmxpbmVSZWFkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgndHJhbnNsb2NvUHJlZml4JykgcHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgndHJhbnNsb2NvTGFuZycpIGlubGluZUxhbmc6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCd0cmFuc2xvY29Mb2FkaW5nVHBsJykgaW5saW5lVHBsOiBDb250ZW50IHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgY3VycmVudExhbmc6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsb2FkZXJUcGxIYW5kbGVyOiBUZW1wbGF0ZUhhbmRsZXIgfCB1bmRlZmluZWQ7XG4gIC8vIFdoZXRoZXIgd2UgYWxyZWFkeSByZW5kZXJlZCB0aGUgdmlldyBvbmNlXG4gIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBwYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbGFuZ1Jlc29sdmVyID0gbmV3IExhbmdSZXNvbHZlcigpO1xuICBwcml2YXRlIHNjb3BlUmVzb2x2ZXIgPSBuZXcgU2NvcGVSZXNvbHZlcih0aGlzLnNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0cmF0ZWd5ID0gdGhpcy50cGwgPT09IG51bGwgPyAnYXR0cmlidXRlJyA6ICdzdHJ1Y3R1cmFsJztcblxuICBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChcbiAgICBkaXI6IFRyYW5zbG9jb0RpcmVjdGl2ZSxcbiAgICBjdHg6IHVua25vd25cbiAgKTogY3R4IGlzIFZpZXdDb250ZXh0IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGxpc3RlblRvTGFuZ0NoYW5nZSA9IHNob3VsZExpc3RlblRvTGFuZ0NoYW5nZXMoXG4gICAgICB0aGlzLnNlcnZpY2UsXG4gICAgICB0aGlzLnByb3ZpZGVyTGFuZyB8fCB0aGlzLmlubGluZUxhbmdcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnNlcnZpY2UubGFuZ0NoYW5nZXMkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChhY3RpdmVMYW5nKSA9PiB7XG4gICAgICAgICAgY29uc3QgbGFuZyA9IHRoaXMubGFuZ1Jlc29sdmVyLnJlc29sdmUoe1xuICAgICAgICAgICAgaW5saW5lOiB0aGlzLmlubGluZUxhbmcsXG4gICAgICAgICAgICBwcm92aWRlcjogdGhpcy5wcm92aWRlckxhbmcsXG4gICAgICAgICAgICBhY3RpdmU6IGFjdGl2ZUxhbmcsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnByb3ZpZGVyU2NvcGUpXG4gICAgICAgICAgICA/IGZvcmtKb2luKFxuICAgICAgICAgICAgICAgIHRoaXMucHJvdmlkZXJTY29wZS5tYXAoKHByb3ZpZGVyU2NvcGUpID0+XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVTY29wZShsYW5nLCBwcm92aWRlclNjb3BlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiB0aGlzLnJlc29sdmVTY29wZShsYW5nLCB0aGlzLnByb3ZpZGVyU2NvcGUpO1xuICAgICAgICB9KSxcbiAgICAgICAgbGlzdGVuT3JOb3RPcGVyYXRvcihsaXN0ZW5Ub0xhbmdDaGFuZ2UpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZyA9IHRoaXMubGFuZ1Jlc29sdmVyLnJlc29sdmVMYW5nQmFzZWRPblNjb3BlKFxuICAgICAgICAgIHRoaXMucGF0aCFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdHJhdGVneSA9PT0gJ2F0dHJpYnV0ZSdcbiAgICAgICAgICA/IHRoaXMuYXR0cmlidXRlU3RyYXRlZ3koKVxuICAgICAgICAgIDogdGhpcy5zdHJ1Y3R1cmFsU3RyYXRlZ3koXG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudExhbmcsXG4gICAgICAgICAgICAgIHRoaXMucHJlZml4IHx8IHRoaXMuaW5saW5lUmVhZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgfSk7XG5cbiAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGNvbnN0IGxvYWRpbmdDb250ZW50ID0gdGhpcy5yZXNvbHZlTG9hZGluZ0NvbnRlbnQoKTtcbiAgICAgIGlmIChsb2FkaW5nQ29udGVudCkge1xuICAgICAgICB0aGlzLmxvYWRlclRwbEhhbmRsZXIgPSBuZXcgVGVtcGxhdGVIYW5kbGVyKGxvYWRpbmdDb250ZW50LCB0aGlzLnZjcik7XG4gICAgICAgIHRoaXMubG9hZGVyVHBsSGFuZGxlci5hdHRhY2hWaWV3KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIC8vIFdlIG5lZWQgdG8gc3VwcG9ydCBkeW5hbWljIGtleXMvcGFyYW1zLCBzbyBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgY2hhbmdlIENEIGN5Y2xlXG4gICAgLy8gd2UgbmVlZCB0byBydW4gdGhlIGZ1bmN0aW9uIGFnYWluIGluIG9yZGVyIHRvIHVwZGF0ZSB0aGUgdmFsdWVcbiAgICBpZiAodGhpcy5zdHJhdGVneSA9PT0gJ2F0dHJpYnV0ZScpIHtcbiAgICAgIGNvbnN0IG5vdEluaXQgPSBPYmplY3Qua2V5cyhjaGFuZ2VzKS5zb21lKCh2KSA9PiAhY2hhbmdlc1t2XS5maXJzdENoYW5nZSk7XG4gICAgICBub3RJbml0ICYmIHRoaXMuYXR0cmlidXRlU3RyYXRlZ3koKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGF0dHJpYnV0ZVN0cmF0ZWd5KCkge1xuICAgIHRoaXMuZGV0YWNoTG9hZGVyKCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShcbiAgICAgIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LFxuICAgICAgJ2lubmVyVGV4dCcsXG4gICAgICB0aGlzLnNlcnZpY2UudHJhbnNsYXRlKHRoaXMua2V5ISwgdGhpcy5wYXJhbXMsIHRoaXMuY3VycmVudExhbmcpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RydWN0dXJhbFN0cmF0ZWd5KGxhbmc6IHN0cmluZywgcHJlZml4Pzogc3RyaW5nKSB7XG4gICAgdGhpcy5tZW1vLmNsZWFyKCk7XG4gICAgY29uc3QgdHJhbnNsYXRlRm4gPSB0aGlzLmdldFRyYW5zbGF0ZUZuKGxhbmcsIHByZWZpeCk7XG5cbiAgICBpZiAodGhpcy52aWV3KSB7XG4gICAgICAvLyB3aGVuIHRoZSBsYW5nIGNoYW5nZXMgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIHJlZmVyZW5jZSBzbyBBbmd1bGFyIHdpbGwgdXBkYXRlIHRoZSB2aWV3XG4gICAgICB0aGlzLnZpZXcuY29udGV4dFsnJGltcGxpY2l0J10gPSB0cmFuc2xhdGVGbjtcbiAgICAgIHRoaXMudmlldy5jb250ZXh0WydjdXJyZW50TGFuZyddID0gdGhpcy5jdXJyZW50TGFuZyE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGV0YWNoTG9hZGVyKCk7XG4gICAgICB0aGlzLnZpZXcgPSB0aGlzLnZjci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50cGwhLCB7XG4gICAgICAgICRpbXBsaWNpdDogdHJhbnNsYXRlRm4sXG4gICAgICAgIGN1cnJlbnRMYW5nOiB0aGlzLmN1cnJlbnRMYW5nISxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUcmFuc2xhdGVGbihcbiAgICBsYW5nOiBzdHJpbmcsXG4gICAgcHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgKTogVHJhbnNsYXRlRm4ge1xuICAgIHJldHVybiAoa2V5OiBzdHJpbmcsIHBhcmFtcz86IEhhc2hNYXApID0+IHtcbiAgICAgIGNvbnN0IHdpdGhQcmVmaXggPSBwcmVmaXggPyBgJHtwcmVmaXh9LiR7a2V5fWAgOiBrZXk7XG4gICAgICBjb25zdCBtZW1vS2V5ID0gcGFyYW1zXG4gICAgICAgID8gYCR7d2l0aFByZWZpeH0ke0pTT04uc3RyaW5naWZ5KHBhcmFtcyl9YFxuICAgICAgICA6IHdpdGhQcmVmaXg7XG5cbiAgICAgIGlmICghdGhpcy5tZW1vLmhhcyhtZW1vS2V5KSkge1xuICAgICAgICB0aGlzLm1lbW8uc2V0KFxuICAgICAgICAgIG1lbW9LZXksXG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLnRyYW5zbGF0ZSh3aXRoUHJlZml4LCBwYXJhbXMsIGxhbmcpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLm1lbW8uZ2V0KG1lbW9LZXkpO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVMb2FkaW5nQ29udGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbmxpbmVUcGwgfHwgdGhpcy5wcm92aWRlZExvYWRpbmdUcGw7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm1lbW8uY2xlYXIoKTtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAvLyBDYXJldGFrZXIgbm90ZTogaXQncyBpbXBvcnRhbnQgdG8gY2xlYW4gdXAgcmVmZXJlbmNlcyB0byBzdWJzY3JpcHRpb25zIHNpbmNlIHRoZXkgc2F2ZSB0aGUgYG5leHRgXG4gICAgICAvLyBjYWxsYmFjayB3aXRoaW4gaXRzIGBkZXN0aW5hdGlvbmAgcHJvcGVydHksIHByZXZlbnRpbmcgY2xhc3NlcyBmcm9tIGJlaW5nIEdDJ2QuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXRhY2hMb2FkZXIoKSB7XG4gICAgdGhpcy5sb2FkZXJUcGxIYW5kbGVyPy5kZXRhY2hWaWV3KCk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVTY29wZShcbiAgICBsYW5nOiBzdHJpbmcsXG4gICAgcHJvdmlkZXJTY29wZTogVHJhbnNsb2NvU2NvcGUgfCBudWxsXG4gICk6IE9ic2VydmFibGU8VHJhbnNsYXRpb24gfCBUcmFuc2xhdGlvbltdPiB7XG4gICAgY29uc3QgcmVzb2x2ZWRTY29wZSA9IHRoaXMuc2NvcGVSZXNvbHZlci5yZXNvbHZlKHtcbiAgICAgIGlubGluZTogdGhpcy5pbmxpbmVTY29wZSxcbiAgICAgIHByb3ZpZGVyOiBwcm92aWRlclNjb3BlLFxuICAgIH0pO1xuICAgIHRoaXMucGF0aCA9IHRoaXMubGFuZ1Jlc29sdmVyLnJlc29sdmVMYW5nUGF0aChsYW5nLCByZXNvbHZlZFNjb3BlKTtcbiAgICBjb25zdCBpbmxpbmVMb2FkZXIgPSByZXNvbHZlSW5saW5lTG9hZGVyKHByb3ZpZGVyU2NvcGUsIHJlc29sdmVkU2NvcGUpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5fbG9hZERlcGVuZGVuY2llcyh0aGlzLnBhdGgsIGlubGluZUxvYWRlcik7XG4gIH1cbn1cbiJdfQ==
@@ -36,12 +36,12 @@ export function provideTranslocoLoader(loader) {
36
36
  { provide: TRANSLOCO_LOADER, useClass: loader },
37
37
  ]);
38
38
  }
39
- export function provideTranslocoScope(scope) {
40
- return {
39
+ export function provideTranslocoScope(...scopes) {
40
+ return scopes.map((scope) => ({
41
41
  provide: TRANSLOCO_SCOPE,
42
42
  useValue: scope,
43
43
  multi: true,
44
- };
44
+ }));
45
45
  }
46
46
  export function provideTranslocoLoadingTpl(content) {
47
47
  return {
@@ -89,4 +89,4 @@ export function provideTranslocoLang(lang) {
89
89
  useValue: lang,
90
90
  };
91
91
  }
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdHJhbnNsb2NvLnByb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsd0JBQXdCLEdBR3pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RSxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLGVBQWUsR0FDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixvQkFBb0IsR0FFckIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLHlCQUF5QixHQUUxQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIscUJBQXFCLEdBRXRCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QiwyQkFBMkIsR0FFNUIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPbEQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE9BQXlCO0lBQ3hELE1BQU0sU0FBUyxHQUEyQjtRQUN4QywwQkFBMEIsQ0FBQyxpQkFBaUIsQ0FBQztRQUM3Qyw4QkFBOEIsQ0FBQyxjQUFjLENBQUM7UUFDOUMsMkJBQTJCLENBQUMsa0JBQWtCLENBQUM7UUFDL0MsZ0NBQWdDLENBQUMsdUJBQXVCLENBQUM7S0FDMUQsQ0FBQztJQUVGLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNsQixTQUFTLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0tBQ3hEO0lBRUQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ2xCLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDeEQ7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLE1BQThCO0lBQ25FLE9BQU8sd0JBQXdCLENBQUM7UUFDOUI7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFFBQVEsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQ2xDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxNQUE2QjtJQUNsRSxPQUFPLHdCQUF3QixDQUFDO1FBQzlCLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7S0FDaEQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxLQUFxQjtJQUN6RCxPQUFPO1FBQ0wsT0FBTyxFQUFFLGVBQWU7UUFDeEIsUUFBUSxFQUFFLEtBQUs7UUFDZixLQUFLLEVBQUUsSUFBSTtLQUNaLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLE9BQWdCO0lBQ3pELE9BQU87UUFDTCxPQUFPLEVBQUUsMEJBQTBCO1FBQ25DLFFBQVEsRUFBRSxPQUFPO0tBQ2xCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUN4QyxVQUFxQztJQUVyQyxPQUFPLHdCQUF3QixDQUFDO1FBQzlCO1lBQ0UsT0FBTyxFQUFFLG9CQUFvQjtZQUM3QixRQUFRLEVBQUUsVUFBVTtZQUNwQixJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztTQUN6QjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLFFBQXlDO0lBRXpDLE9BQU8sd0JBQXdCLENBQUM7UUFDOUI7WUFDRSxPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDO1NBQ3pCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsT0FBc0M7SUFFdEMsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QjtZQUNFLE9BQU8sRUFBRSx5QkFBeUI7WUFDbEMsUUFBUSxFQUFFLE9BQU87U0FDbEI7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUN6QyxXQUF1QztJQUV2QyxPQUFPLHdCQUF3QixDQUFDO1FBQzlCO1lBQ0UsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixRQUFRLEVBQUUsV0FBVztTQUN0QjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsSUFBWTtJQUMvQyxPQUFPO1FBQ0wsT0FBTyxFQUFFLGNBQWM7UUFDdkIsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVudmlyb25tZW50UHJvdmlkZXJzLFxuICBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIFByb3ZpZGVyLFxuICBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVFJBTlNMT0NPX0xPQURFUiwgVHJhbnNsb2NvTG9hZGVyIH0gZnJvbSAnLi90cmFuc2xvY28ubG9hZGVyJztcbmltcG9ydCB7XG4gIFBhcnRpYWxUcmFuc2xvY29Db25maWcsXG4gIFRSQU5TTE9DT19DT05GSUcsXG4gIHRyYW5zbG9jb0NvbmZpZyxcbn0gZnJvbSAnLi90cmFuc2xvY28uY29uZmlnJztcbmltcG9ydCB7IFRSQU5TTE9DT19TQ09QRSB9IGZyb20gJy4vdHJhbnNsb2NvLXNjb3BlJztcbmltcG9ydCB7IFRyYW5zbG9jb1Njb3BlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBEZWZhdWx0VHJhbnNwaWxlcixcbiAgVFJBTlNMT0NPX1RSQU5TUElMRVIsXG4gIFRyYW5zbG9jb1RyYW5zcGlsZXIsXG59IGZyb20gJy4vdHJhbnNsb2NvLnRyYW5zcGlsZXInO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEhhbmRsZXIsXG4gIFRSQU5TTE9DT19NSVNTSU5HX0hBTkRMRVIsXG4gIFRyYW5zbG9jb01pc3NpbmdIYW5kbGVyLFxufSBmcm9tICcuL3RyYW5zbG9jby1taXNzaW5nLWhhbmRsZXInO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEludGVyY2VwdG9yLFxuICBUUkFOU0xPQ09fSU5URVJDRVBUT1IsXG4gIFRyYW5zbG9jb0ludGVyY2VwdG9yLFxufSBmcm9tICcuL3RyYW5zbG9jby5pbnRlcmNlcHRvcic7XG5pbXBvcnQge1xuICBEZWZhdWx0RmFsbGJhY2tTdHJhdGVneSxcbiAgVFJBTlNMT0NPX0ZBTExCQUNLX1NUUkFURUdZLFxuICBUcmFuc2xvY29GYWxsYmFja1N0cmF0ZWd5LFxufSBmcm9tICcuL3RyYW5zbG9jby1mYWxsYmFjay1zdHJhdGVneSc7XG5pbXBvcnQgeyBUUkFOU0xPQ09fTE9BRElOR19URU1QTEFURSB9IGZyb20gJy4vdHJhbnNsb2NvLWxvYWRpbmctdGVtcGxhdGUnO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gJy4vdGVtcGxhdGUtaGFuZGxlcic7XG5pbXBvcnQgeyBUUkFOU0xPQ09fTEFORyB9IGZyb20gJy4vdHJhbnNsb2NvLWxhbmcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbG9jb09wdGlvbnMge1xuICBjb25maWc6IFBhcnRpYWxUcmFuc2xvY29Db25maWc7XG4gIGxvYWRlcj86IFR5cGU8VHJhbnNsb2NvTG9hZGVyPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVUcmFuc2xvY28ob3B0aW9uczogVHJhbnNsb2NvT3B0aW9ucykge1xuICBjb25zdCBwcm92aWRlcnM6IEVudmlyb25tZW50UHJvdmlkZXJzW10gPSBbXG4gICAgcHJvdmlkZVRyYW5zbG9jb1RyYW5zcGlsZXIoRGVmYXVsdFRyYW5zcGlsZXIpLFxuICAgIHByb3ZpZGVUcmFuc2xvY29NaXNzaW5nSGFuZGxlcihEZWZhdWx0SGFuZGxlciksXG4gICAgcHJvdmlkZVRyYW5zbG9jb0ludGVyY2VwdG9yKERlZmF1bHRJbnRlcmNlcHRvciksXG4gICAgcHJvdmlkZVRyYW5zbG9jb0ZhbGxiYWNrU3RyYXRlZ3koRGVmYXVsdEZhbGxiYWNrU3RyYXRlZ3kpLFxuICBdO1xuXG4gIGlmIChvcHRpb25zLmNvbmZpZykge1xuICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVUcmFuc2xvY29Db25maWcob3B0aW9ucy5jb25maWcpKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmxvYWRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVUcmFuc2xvY29Mb2FkZXIob3B0aW9ucy5sb2FkZXIpKTtcbiAgfVxuXG4gIHJldHVybiBwcm92aWRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVHJhbnNsb2NvQ29uZmlnKGNvbmZpZzogUGFydGlhbFRyYW5zbG9jb0NvbmZpZykge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBUUkFOU0xPQ09fQ09ORklHLFxuICAgICAgdXNlVmFsdWU6IHRyYW5zbG9jb0NvbmZpZyhjb25maWcpLFxuICAgIH0sXG4gIF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVRyYW5zbG9jb0xvYWRlcihsb2FkZXI6IFR5cGU8VHJhbnNsb2NvTG9hZGVyPikge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7IHByb3ZpZGU6IFRSQU5TTE9DT19MT0FERVIsIHVzZUNsYXNzOiBsb2FkZXIgfSxcbiAgXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVHJhbnNsb2NvU2NvcGUoc2NvcGU6IFRyYW5zbG9jb1Njb3BlKSB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogVFJBTlNMT0NPX1NDT1BFLFxuICAgIHVzZVZhbHVlOiBzY29wZSxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVUcmFuc2xvY29Mb2FkaW5nVHBsKGNvbnRlbnQ6IENvbnRlbnQpIHtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiBUUkFOU0xPQ09fTE9BRElOR19URU1QTEFURSxcbiAgICB1c2VWYWx1ZTogY29udGVudCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVUcmFuc2xvY29UcmFuc3BpbGVyKFxuICB0cmFuc3BpbGVyOiBUeXBlPFRyYW5zbG9jb1RyYW5zcGlsZXI+XG4pIHtcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAge1xuICAgICAgcHJvdmlkZTogVFJBTlNMT0NPX1RSQU5TUElMRVIsXG4gICAgICB1c2VDbGFzczogdHJhbnNwaWxlcixcbiAgICAgIGRlcHM6IFtUUkFOU0xPQ09fQ09ORklHXSxcbiAgICB9LFxuICBdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVUcmFuc2xvY29GYWxsYmFja1N0cmF0ZWd5KFxuICBzdHJhdGVneTogVHlwZTxUcmFuc2xvY29GYWxsYmFja1N0cmF0ZWd5PlxuKSB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFRSQU5TTE9DT19GQUxMQkFDS19TVFJBVEVHWSxcbiAgICAgIHVzZUNsYXNzOiBzdHJhdGVneSxcbiAgICAgIGRlcHM6IFtUUkFOU0xPQ09fQ09ORklHXSxcbiAgICB9LFxuICBdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVUcmFuc2xvY29NaXNzaW5nSGFuZGxlcihcbiAgaGFuZGxlcjogVHlwZTxUcmFuc2xvY29NaXNzaW5nSGFuZGxlcj5cbikge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBUUkFOU0xPQ09fTUlTU0lOR19IQU5ETEVSLFxuICAgICAgdXNlQ2xhc3M6IGhhbmRsZXIsXG4gICAgfSxcbiAgXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVHJhbnNsb2NvSW50ZXJjZXB0b3IoXG4gIGludGVyY2VwdG9yOiBUeXBlPFRyYW5zbG9jb0ludGVyY2VwdG9yPlxuKSB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFRSQU5TTE9DT19JTlRFUkNFUFRPUixcbiAgICAgIHVzZUNsYXNzOiBpbnRlcmNlcHRvcixcbiAgICB9LFxuICBdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVUcmFuc2xvY29MYW5nKGxhbmc6IHN0cmluZyk6IFByb3ZpZGVyIHtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiBUUkFOU0xPQ09fTEFORyxcbiAgICB1c2VWYWx1ZTogbGFuZyxcbiAgfTtcbn1cbiJdfQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdHJhbnNsb2NvLnByb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsd0JBQXdCLEdBR3pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RSxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLGVBQWUsR0FDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixvQkFBb0IsR0FFckIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLHlCQUF5QixHQUUxQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIscUJBQXFCLEdBRXRCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QiwyQkFBMkIsR0FFNUIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPbEQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE9BQXlCO0lBQ3hELE1BQU0sU0FBUyxHQUEyQjtRQUN4QywwQkFBMEIsQ0FBQyxpQkFBaUIsQ0FBQztRQUM3Qyw4QkFBOEIsQ0FBQyxjQUFjLENBQUM7UUFDOUMsMkJBQTJCLENBQUMsa0JBQWtCLENBQUM7UUFDL0MsZ0NBQWdDLENBQUMsdUJBQXVCLENBQUM7S0FDMUQsQ0FBQztJQUVGLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNsQixTQUFTLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0tBQ3hEO0lBRUQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ2xCLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDeEQ7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLE1BQThCO0lBQ25FLE9BQU8sd0JBQXdCLENBQUM7UUFDOUI7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFFBQVEsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQ2xDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxNQUE2QjtJQUNsRSxPQUFPLHdCQUF3QixDQUFDO1FBQzlCLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7S0FDaEQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxHQUFHLE1BQXdCO0lBQy9ELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QixPQUFPLEVBQUUsZUFBZTtRQUN4QixRQUFRLEVBQUUsS0FBSztRQUNmLEtBQUssRUFBRSxJQUFJO0tBQ1osQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLE9BQWdCO0lBQ3pELE9BQU87UUFDTCxPQUFPLEVBQUUsMEJBQTBCO1FBQ25DLFFBQVEsRUFBRSxPQUFPO0tBQ2xCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUN4QyxVQUFxQztJQUVyQyxPQUFPLHdCQUF3QixDQUFDO1FBQzlCO1lBQ0UsT0FBTyxFQUFFLG9CQUFvQjtZQUM3QixRQUFRLEVBQUUsVUFBVTtZQUNwQixJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztTQUN6QjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLFFBQXlDO0lBRXpDLE9BQU8sd0JBQXdCLENBQUM7UUFDOUI7WUFDRSxPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDO1NBQ3pCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsT0FBc0M7SUFFdEMsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QjtZQUNFLE9BQU8sRUFBRSx5QkFBeUI7WUFDbEMsUUFBUSxFQUFFLE9BQU87U0FDbEI7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUN6QyxXQUF1QztJQUV2QyxPQUFPLHdCQUF3QixDQUFDO1FBQzlCO1lBQ0UsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixRQUFRLEVBQUUsV0FBVztTQUN0QjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsSUFBWTtJQUMvQyxPQUFPO1FBQ0wsT0FBTyxFQUFFLGNBQWM7UUFDdkIsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVudmlyb25tZW50UHJvdmlkZXJzLFxuICBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIFByb3ZpZGVyLFxuICBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVFJBTlNMT0NPX0xPQURFUiwgVHJhbnNsb2NvTG9hZGVyIH0gZnJvbSAnLi90cmFuc2xvY28ubG9hZGVyJztcbmltcG9ydCB7XG4gIFBhcnRpYWxUcmFuc2xvY29Db25maWcsXG4gIFRSQU5TTE9DT19DT05GSUcsXG4gIHRyYW5zbG9jb0NvbmZpZyxcbn0gZnJvbSAnLi90cmFuc2xvY28uY29uZmlnJztcbmltcG9ydCB7IFRSQU5TTE9DT19TQ09QRSB9IGZyb20gJy4vdHJhbnNsb2NvLXNjb3BlJztcbmltcG9ydCB7IFRyYW5zbG9jb1Njb3BlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBEZWZhdWx0VHJhbnNwaWxlcixcbiAgVFJBTlNMT0NPX1RSQU5TUElMRVIsXG4gIFRyYW5zbG9jb1RyYW5zcGlsZXIsXG59IGZyb20gJy4vdHJhbnNsb2NvLnRyYW5zcGlsZXInO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEhhbmRsZXIsXG4gIFRSQU5TTE9DT19NSVNTSU5HX0hBTkRMRVIsXG4gIFRyYW5zbG9jb01pc3NpbmdIYW5kbGVyLFxufSBmcm9tICcuL3RyYW5zbG9jby1taXNzaW5nLWhhbmRsZXInO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEludGVyY2VwdG9yLFxuICBUUkFOU0xPQ09fSU5URVJDRVBUT1IsXG4gIFRyYW5zbG9jb0ludGVyY2VwdG9yLFxufSBmcm9tICcuL3RyYW5zbG9jby5pbnRlcmNlcHRvcic7XG5pbXBvcnQge1xuICBEZWZhdWx0RmFsbGJhY2tTdHJhdGVneSxcbiAgVFJBTlNMT0NPX0ZBTExCQUNLX1NUUkFURUdZLFxuICBUcmFuc2xvY29GYWxsYmFja1N0cmF0ZWd5LFxufSBmcm9tICcuL3RyYW5zbG9jby1mYWxsYmFjay1zdHJhdGVneSc7XG5pbXBvcnQgeyBUUkFOU0xPQ09fTE9BRElOR19URU1QTEFURSB9IGZyb20gJy4vdHJhbnNsb2NvLWxvYWRpbmctdGVtcGxhdGUnO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gJy4vdGVtcGxhdGUtaGFuZGxlcic7XG5pbXBvcnQgeyBUUkFOU0xPQ09fTEFORyB9IGZyb20gJy4vdHJhbnNsb2NvLWxhbmcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbG9jb09wdGlvbnMge1xuICBjb25maWc6IFBhcnRpYWxUcmFuc2xvY29Db25maWc7XG4gIGxvYWRlcj86IFR5cGU8VHJhbnNsb2NvTG9hZGVyPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVUcmFuc2xvY28ob3B0aW9uczogVHJhbnNsb2NvT3B0aW9ucykge1xuICBjb25zdCBwcm92aWRlcnM6IEVudmlyb25tZW50UHJvdmlkZXJzW10gPSBbXG4gICAgcHJvdmlkZVRyYW5zbG9jb1RyYW5zcGlsZXIoRGVmYXVsdFRyYW5zcGlsZXIpLFxuICAgIHByb3ZpZGVUcmFuc2xvY29NaXNzaW5nSGFuZGxlcihEZWZhdWx0SGFuZGxlciksXG4gICAgcHJvdmlkZVRyYW5zbG9jb0ludGVyY2VwdG9yKERlZmF1bHRJbnRlcmNlcHRvciksXG4gICAgcHJvdmlkZVRyYW5zbG9jb0ZhbGxiYWNrU3RyYXRlZ3koRGVmYXVsdEZhbGxiYWNrU3RyYXRlZ3kpLFxuICBdO1xuXG4gIGlmIChvcHRpb25zLmNvbmZpZykge1xuICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVUcmFuc2xvY29Db25maWcob3B0aW9ucy5jb25maWcpKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmxvYWRlcikge1xuICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVUcmFuc2xvY29Mb2FkZXIob3B0aW9ucy5sb2FkZXIpKTtcbiAgfVxuXG4gIHJldHVybiBwcm92aWRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVHJhbnNsb2NvQ29uZmlnKGNvbmZpZzogUGFydGlhbFRyYW5zbG9jb0NvbmZpZykge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBUUkFOU0xPQ09fQ09ORklHLFxuICAgICAgdXNlVmFsdWU6IHRyYW5zbG9jb0NvbmZpZyhjb25maWcpLFxuICAgIH0sXG4gIF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVRyYW5zbG9jb0xvYWRlcihsb2FkZXI6IFR5cGU8VHJhbnNsb2NvTG9hZGVyPikge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7IHByb3ZpZGU6IFRSQU5TTE9DT19MT0FERVIsIHVzZUNsYXNzOiBsb2FkZXIgfSxcbiAgXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVHJhbnNsb2NvU2NvcGUoLi4uc2NvcGVzOiBUcmFuc2xvY29TY29wZVtdKSB7XG4gIHJldHVybiBzY29wZXMubWFwKChzY29wZSkgPT4gKHtcbiAgICBwcm92aWRlOiBUUkFOU0xPQ09fU0NPUEUsXG4gICAgdXNlVmFsdWU6IHNjb3BlLFxuICAgIG11bHRpOiB0cnVlLFxuICB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVHJhbnNsb2NvTG9hZGluZ1RwbChjb250ZW50OiBDb250ZW50KSB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogVFJBTlNMT0NPX0xPQURJTkdfVEVNUExBVEUsXG4gICAgdXNlVmFsdWU6IGNvbnRlbnQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVHJhbnNsb2NvVHJhbnNwaWxlcihcbiAgdHJhbnNwaWxlcjogVHlwZTxUcmFuc2xvY29UcmFuc3BpbGVyPlxuKSB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFRSQU5TTE9DT19UUkFOU1BJTEVSLFxuICAgICAgdXNlQ2xhc3M6IHRyYW5zcGlsZXIsXG4gICAgICBkZXBzOiBbVFJBTlNMT0NPX0NPTkZJR10sXG4gICAgfSxcbiAgXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVHJhbnNsb2NvRmFsbGJhY2tTdHJhdGVneShcbiAgc3RyYXRlZ3k6IFR5cGU8VHJhbnNsb2NvRmFsbGJhY2tTdHJhdGVneT5cbikge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBUUkFOU0xPQ09fRkFMTEJBQ0tfU1RSQVRFR1ksXG4gICAgICB1c2VDbGFzczogc3RyYXRlZ3ksXG4gICAgICBkZXBzOiBbVFJBTlNMT0NPX0NPTkZJR10sXG4gICAgfSxcbiAgXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVHJhbnNsb2NvTWlzc2luZ0hhbmRsZXIoXG4gIGhhbmRsZXI6IFR5cGU8VHJhbnNsb2NvTWlzc2luZ0hhbmRsZXI+XG4pIHtcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAge1xuICAgICAgcHJvdmlkZTogVFJBTlNMT0NPX01JU1NJTkdfSEFORExFUixcbiAgICAgIHVzZUNsYXNzOiBoYW5kbGVyLFxuICAgIH0sXG4gIF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVRyYW5zbG9jb0ludGVyY2VwdG9yKFxuICBpbnRlcmNlcHRvcjogVHlwZTxUcmFuc2xvY29JbnRlcmNlcHRvcj5cbikge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBUUkFOU0xPQ09fSU5URVJDRVBUT1IsXG4gICAgICB1c2VDbGFzczogaW50ZXJjZXB0b3IsXG4gICAgfSxcbiAgXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVHJhbnNsb2NvTGFuZyhsYW5nOiBzdHJpbmcpOiBQcm92aWRlciB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogVFJBTlNMT0NPX0xBTkcsXG4gICAgdXNlVmFsdWU6IGxhbmcsXG4gIH07XG59XG4iXX0=
@@ -1150,11 +1150,13 @@ class TranslocoDirective {
1150
1150
  renderer = inject(Renderer2);
1151
1151
  subscription = null;
1152
1152
  view;
1153
- translationMemo = {};
1153
+ memo = new Map();
1154
1154
  key;
1155
1155
  params = {};
1156
1156
  inlineScope;
1157
+ /** @deprecated use prefix instead, will be removed in Transloco v8 */
1157
1158
  inlineRead;
1159
+ prefix;
1158
1160
  inlineLang;
1159
1161
  inlineTpl;
1160
1162
  currentLang;
@@ -1185,7 +1187,7 @@ class TranslocoDirective {
1185
1187
  this.currentLang = this.langResolver.resolveLangBasedOnScope(this.path);
1186
1188
  this.strategy === 'attribute'
1187
1189
  ? this.attributeStrategy()
1188
- : this.structuralStrategy(this.currentLang, this.inlineRead);
1190
+ : this.structuralStrategy(this.currentLang, this.prefix || this.inlineRead);
1189
1191
  this.cdr.markForCheck();
1190
1192
  this.initialized = true;
1191
1193
  });
@@ -1209,41 +1211,39 @@ class TranslocoDirective {
1209
1211
  this.detachLoader();
1210
1212
  this.renderer.setProperty(this.host.nativeElement, 'innerText', this.service.translate(this.key, this.params, this.currentLang));
1211
1213
  }
1212
- structuralStrategy(lang, read) {
1213
- this.translationMemo = {};
1214
+ structuralStrategy(lang, prefix) {
1215
+ this.memo.clear();
1216
+ const translateFn = this.getTranslateFn(lang, prefix);
1214
1217
  if (this.view) {
1215
1218
  // when the lang changes we need to change the reference so Angular will update the view
1216
- this.view.context['$implicit'] = this.getTranslateFn(lang, read);
1219
+ this.view.context['$implicit'] = translateFn;
1217
1220
  this.view.context['currentLang'] = this.currentLang;
1218
1221
  }
1219
1222
  else {
1220
1223
  this.detachLoader();
1221
1224
  this.view = this.vcr.createEmbeddedView(this.tpl, {
1222
- $implicit: this.getTranslateFn(lang, read),
1225
+ $implicit: translateFn,
1223
1226
  currentLang: this.currentLang,
1224
1227
  });
1225
1228
  }
1226
1229
  }
1227
- getTranslateFn(lang, read) {
1230
+ getTranslateFn(lang, prefix) {
1228
1231
  return (key, params) => {
1229
- const withRead = read ? `${read}.${key}` : key;
1230
- const withParams = params
1231
- ? `${withRead}${JSON.stringify(params)}`
1232
- : withRead;
1233
- if (Object.prototype.hasOwnProperty.call(this.translationMemo, withParams)) {
1234
- return this.translationMemo[withParams].value;
1232
+ const withPrefix = prefix ? `${prefix}.${key}` : key;
1233
+ const memoKey = params
1234
+ ? `${withPrefix}${JSON.stringify(params)}`
1235
+ : withPrefix;
1236
+ if (!this.memo.has(memoKey)) {
1237
+ this.memo.set(memoKey, this.service.translate(withPrefix, params, lang));
1235
1238
  }
1236
- this.translationMemo[withParams] = {
1237
- params,
1238
- value: this.service.translate(withRead, params, lang),
1239
- };
1240
- return this.translationMemo[withParams].value;
1239
+ return this.memo.get(memoKey);
1241
1240
  };
1242
1241
  }
1243
1242
  resolveLoadingContent() {
1244
1243
  return this.inlineTpl || this.providedLoadingTpl;
1245
1244
  }
1246
1245
  ngOnDestroy() {
1246
+ this.memo.clear();
1247
1247
  if (this.subscription) {
1248
1248
  this.subscription.unsubscribe();
1249
1249
  // Caretaker note: it's important to clean up references to subscriptions since they save the `next`
@@ -1264,7 +1264,7 @@ class TranslocoDirective {
1264
1264
  return this.service._loadDependencies(this.path, inlineLoader);
1265
1265
  }
1266
1266
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1267
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: TranslocoDirective, isStandalone: true, selector: "[transloco]", inputs: { key: ["transloco", "key"], params: ["translocoParams", "params"], inlineScope: ["translocoScope", "inlineScope"], inlineRead: ["translocoRead", "inlineRead"], inlineLang: ["translocoLang", "inlineLang"], inlineTpl: ["translocoLoadingTpl", "inlineTpl"] }, usesOnChanges: true, ngImport: i0 });
1267
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: TranslocoDirective, isStandalone: true, selector: "[transloco]", inputs: { key: ["transloco", "key"], params: ["translocoParams", "params"], inlineScope: ["translocoScope", "inlineScope"], inlineRead: ["translocoRead", "inlineRead"], prefix: ["translocoPrefix", "prefix"], inlineLang: ["translocoLang", "inlineLang"], inlineTpl: ["translocoLoadingTpl", "inlineTpl"] }, usesOnChanges: true, ngImport: i0 });
1268
1268
  }
1269
1269
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoDirective, decorators: [{
1270
1270
  type: Directive,
@@ -1284,6 +1284,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
1284
1284
  }], inlineRead: [{
1285
1285
  type: Input,
1286
1286
  args: ['translocoRead']
1287
+ }], prefix: [{
1288
+ type: Input,
1289
+ args: ['translocoPrefix']
1287
1290
  }], inlineLang: [{
1288
1291
  type: Input,
1289
1292
  args: ['translocoLang']
@@ -1421,12 +1424,12 @@ function provideTranslocoLoader(loader) {
1421
1424
  { provide: TRANSLOCO_LOADER, useClass: loader },
1422
1425
  ]);
1423
1426
  }
1424
- function provideTranslocoScope(scope) {
1425
- return {
1427
+ function provideTranslocoScope(...scopes) {
1428
+ return scopes.map((scope) => ({
1426
1429
  provide: TRANSLOCO_SCOPE,
1427
1430
  useValue: scope,
1428
1431
  multi: true,
1429
- };
1432
+ }));
1430
1433
  }
1431
1434
  function provideTranslocoLoadingTpl(content) {
1432
1435
  return {