@flogeez/angular-tiptap-editor 2.4.0 → 2.4.1

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 (104) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/esm2022/flogeez-angular-tiptap-editor.mjs +5 -0
  3. package/esm2022/lib/ate-editor.provider.mjs +38 -0
  4. package/esm2022/lib/components/bubble-menus/base/ate-base-bubble-menu.mjs +207 -0
  5. package/esm2022/lib/components/bubble-menus/base/ate-base-sub-bubble-menu.mjs +133 -0
  6. package/esm2022/lib/components/bubble-menus/color/ate-color-bubble-menu.component.mjs +365 -0
  7. package/esm2022/lib/components/bubble-menus/image/ate-image-bubble-menu.component.mjs +226 -0
  8. package/esm2022/lib/components/bubble-menus/link/ate-link-bubble-menu.component.mjs +247 -0
  9. package/esm2022/lib/components/bubble-menus/table/ate-cell-bubble-menu.component.mjs +121 -0
  10. package/esm2022/lib/components/bubble-menus/table/ate-table-bubble-menu.component.mjs +266 -0
  11. package/esm2022/lib/components/bubble-menus/text/ate-bubble-menu.component.mjs +294 -0
  12. package/esm2022/lib/components/color-picker/ate-color-picker.component.mjs +122 -0
  13. package/esm2022/lib/components/edit-toggle/ate-edit-toggle.component.mjs +42 -0
  14. package/esm2022/lib/components/editor/angular-tiptap-editor.component.mjs +953 -0
  15. package/esm2022/lib/components/slash-commands/ate-slash-commands.component.mjs +329 -0
  16. package/esm2022/lib/components/toolbar/ate-toolbar.component.mjs +531 -0
  17. package/esm2022/lib/components/ui/ate-button.component.mjs +90 -0
  18. package/esm2022/lib/components/ui/ate-separator.component.mjs +31 -0
  19. package/esm2022/lib/config/ate-editor.config.mjs +76 -0
  20. package/esm2022/lib/config/ate-global-config.token.mjs +6 -0
  21. package/esm2022/lib/config/ate-slash-commands.config.mjs +130 -0
  22. package/esm2022/lib/directives/ate-noop-value-accessor.directive.mjs +40 -0
  23. package/esm2022/lib/extensions/ate-link-click-behavior.extension.mjs +32 -0
  24. package/esm2022/lib/extensions/ate-resizable-image.extension.mjs +270 -0
  25. package/esm2022/lib/extensions/ate-table.extension.mjs +29 -0
  26. package/esm2022/lib/extensions/ate-tiptap-state.extension.mjs +85 -0
  27. package/esm2022/lib/extensions/ate-upload-progress.extension.mjs +195 -0
  28. package/esm2022/lib/extensions/calculators/ate-discovery.calculator.mjs +62 -0
  29. package/esm2022/lib/extensions/calculators/ate-image.calculator.mjs +8 -0
  30. package/esm2022/lib/extensions/calculators/ate-marks.calculator.mjs +75 -0
  31. package/esm2022/lib/extensions/calculators/ate-selection.calculator.mjs +35 -0
  32. package/esm2022/lib/extensions/calculators/ate-structure.calculator.mjs +34 -0
  33. package/esm2022/lib/extensions/calculators/ate-table.calculator.mjs +38 -0
  34. package/esm2022/lib/models/ate-bubble-menu.model.mjs +49 -0
  35. package/esm2022/lib/models/ate-editor-config.model.mjs +2 -0
  36. package/esm2022/lib/models/ate-editor-state.model.mjs +90 -0
  37. package/esm2022/lib/models/ate-image.model.mjs +2 -0
  38. package/esm2022/lib/models/ate-toolbar.model.mjs +35 -0
  39. package/esm2022/lib/node-view/ate-angular-node-view.mjs +97 -0
  40. package/esm2022/lib/node-view/ate-injector.registry.mjs +16 -0
  41. package/esm2022/lib/node-view/ate-node-view.factory.mjs +125 -0
  42. package/esm2022/lib/node-view/ate-node-view.models.mjs +2 -0
  43. package/esm2022/lib/node-view/ate-node-view.renderer.mjs +154 -0
  44. package/esm2022/lib/node-view/ate-register-angular-component.mjs +49 -0
  45. package/esm2022/lib/services/ate-color-picker.service.mjs +193 -0
  46. package/esm2022/lib/services/ate-editor-commands.service.mjs +465 -0
  47. package/esm2022/lib/services/ate-i18n.service.mjs +410 -0
  48. package/esm2022/lib/services/ate-image.service.mjs +368 -0
  49. package/esm2022/lib/services/ate-link.service.mjs +97 -0
  50. package/esm2022/lib/utils/ate-color.utils.mjs +60 -0
  51. package/esm2022/public-api.mjs +93 -0
  52. package/fesm2022/flogeez-angular-tiptap-editor.mjs +313 -346
  53. package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
  54. package/index.d.ts +3 -1673
  55. package/lib/ate-editor.provider.d.ts +21 -0
  56. package/lib/components/bubble-menus/base/ate-base-bubble-menu.d.ts +71 -0
  57. package/lib/components/bubble-menus/base/ate-base-sub-bubble-menu.d.ts +60 -0
  58. package/lib/components/bubble-menus/color/ate-color-bubble-menu.component.d.ts +77 -0
  59. package/lib/components/bubble-menus/image/ate-image-bubble-menu.component.d.ts +52 -0
  60. package/lib/components/bubble-menus/link/ate-link-bubble-menu.component.d.ts +55 -0
  61. package/lib/components/bubble-menus/table/ate-cell-bubble-menu.component.d.ts +12 -0
  62. package/lib/components/bubble-menus/table/ate-table-bubble-menu.component.d.ts +24 -0
  63. package/lib/components/bubble-menus/text/ate-bubble-menu.component.d.ts +53 -0
  64. package/lib/components/color-picker/ate-color-picker.component.d.ts +54 -0
  65. package/lib/components/edit-toggle/ate-edit-toggle.component.d.ts +13 -0
  66. package/lib/components/editor/angular-tiptap-editor.component.d.ts +235 -0
  67. package/lib/components/slash-commands/ate-slash-commands.component.d.ts +43 -0
  68. package/lib/components/toolbar/ate-toolbar.component.d.ts +47 -0
  69. package/lib/components/ui/ate-button.component.d.ts +25 -0
  70. package/lib/components/ui/ate-separator.component.d.ts +7 -0
  71. package/lib/config/ate-editor.config.d.ts +7 -0
  72. package/lib/config/ate-global-config.token.d.ts +6 -0
  73. package/lib/config/ate-slash-commands.config.d.ts +41 -0
  74. package/lib/directives/ate-noop-value-accessor.directive.d.ts +13 -0
  75. package/lib/extensions/ate-link-click-behavior.extension.d.ts +2 -0
  76. package/lib/extensions/ate-resizable-image.extension.d.ts +27 -0
  77. package/lib/extensions/ate-table.extension.d.ts +2 -0
  78. package/lib/extensions/ate-tiptap-state.extension.d.ts +7 -0
  79. package/lib/extensions/ate-upload-progress.extension.d.ts +7 -0
  80. package/lib/extensions/calculators/ate-discovery.calculator.d.ts +7 -0
  81. package/lib/extensions/calculators/ate-image.calculator.d.ts +2 -0
  82. package/lib/extensions/calculators/ate-marks.calculator.d.ts +2 -0
  83. package/lib/extensions/calculators/ate-selection.calculator.d.ts +2 -0
  84. package/lib/extensions/calculators/ate-structure.calculator.d.ts +2 -0
  85. package/lib/extensions/calculators/ate-table.calculator.d.ts +2 -0
  86. package/lib/models/ate-bubble-menu.model.d.ts +33 -0
  87. package/lib/models/ate-editor-config.model.d.ts +100 -0
  88. package/lib/models/ate-editor-state.model.d.ts +109 -0
  89. package/lib/models/ate-image.model.d.ts +104 -0
  90. package/lib/models/ate-toolbar.model.d.ts +18 -0
  91. package/lib/node-view/ate-angular-node-view.d.ts +115 -0
  92. package/lib/node-view/ate-injector.registry.d.ts +3 -0
  93. package/lib/node-view/ate-node-view.factory.d.ts +10 -0
  94. package/lib/node-view/ate-node-view.models.d.ts +138 -0
  95. package/lib/node-view/ate-node-view.renderer.d.ts +23 -0
  96. package/lib/node-view/ate-register-angular-component.d.ts +35 -0
  97. package/lib/services/ate-color-picker.service.d.ts +65 -0
  98. package/lib/services/ate-editor-commands.service.d.ts +72 -0
  99. package/lib/services/ate-i18n.service.d.ts +394 -0
  100. package/lib/services/ate-image.service.d.ts +71 -0
  101. package/lib/services/ate-link.service.d.ts +42 -0
  102. package/lib/utils/ate-color.utils.d.ts +12 -0
  103. package/package.json +3 -1
  104. package/public-api.d.ts +112 -0
@@ -0,0 +1,410 @@
1
+ import { Injectable, signal, computed } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ const ENGLISH_TRANSLATIONS = {
4
+ toolbar: {
5
+ bold: "Bold",
6
+ italic: "Italic",
7
+ underline: "Underline",
8
+ strike: "Strikethrough",
9
+ code: "Inline Code",
10
+ codeBlock: "Code Block",
11
+ superscript: "Superscript",
12
+ subscript: "Subscript",
13
+ highlight: "Highlight",
14
+ highlightPicker: "Background Color",
15
+ heading1: "Heading 1",
16
+ heading2: "Heading 2",
17
+ heading3: "Heading 3",
18
+ bulletList: "Bullet List",
19
+ orderedList: "Ordered List",
20
+ blockquote: "Blockquote",
21
+ alignLeft: "Align Left",
22
+ alignCenter: "Align Center",
23
+ alignRight: "Align Right",
24
+ alignJustify: "Align Justify",
25
+ link: "Add Link",
26
+ image: "Add Image",
27
+ horizontalRule: "Horizontal Rule",
28
+ table: "Insert Table",
29
+ undo: "Undo",
30
+ redo: "Redo",
31
+ clear: "Clear",
32
+ textColor: "Text Color",
33
+ customColor: "Custom Color",
34
+ presets: "Presets",
35
+ },
36
+ bubbleMenu: {
37
+ bold: "Bold",
38
+ italic: "Italic",
39
+ underline: "Underline",
40
+ strike: "Strikethrough",
41
+ code: "Code",
42
+ superscript: "Superscript",
43
+ subscript: "Subscript",
44
+ highlight: "Highlight",
45
+ highlightPicker: "Background Color",
46
+ textColor: "Text Color",
47
+ link: "Link",
48
+ addLink: "Add Link",
49
+ editLink: "Edit Link",
50
+ removeLink: "Remove Link",
51
+ linkUrl: "Link URL",
52
+ linkText: "Link Text",
53
+ openLink: "Open Link",
54
+ customColor: "Custom Color",
55
+ presets: "Presets",
56
+ },
57
+ slashCommands: {
58
+ heading1: {
59
+ title: "Heading 1",
60
+ description: "Large section heading",
61
+ keywords: ["heading", "h1", "title", "1", "header"],
62
+ },
63
+ heading2: {
64
+ title: "Heading 2",
65
+ description: "Medium section heading",
66
+ keywords: ["heading", "h2", "title", "2", "header"],
67
+ },
68
+ heading3: {
69
+ title: "Heading 3",
70
+ description: "Small section heading",
71
+ keywords: ["heading", "h3", "title", "3", "header"],
72
+ },
73
+ bulletList: {
74
+ title: "Bullet List",
75
+ description: "Create a bullet list",
76
+ keywords: ["bullet", "list", "ul", "unordered"],
77
+ },
78
+ orderedList: {
79
+ title: "Ordered List",
80
+ description: "Create an ordered list",
81
+ keywords: ["ordered", "list", "ol", "numbered"],
82
+ },
83
+ blockquote: {
84
+ title: "Blockquote",
85
+ description: "Add a blockquote",
86
+ keywords: ["quote", "blockquote", "citation"],
87
+ },
88
+ code: {
89
+ title: "Code Block",
90
+ description: "Add a code block",
91
+ keywords: ["code", "codeblock", "pre", "programming"],
92
+ },
93
+ image: {
94
+ title: "Image",
95
+ description: "Insert an image",
96
+ keywords: ["image", "photo", "picture", "img"],
97
+ },
98
+ horizontalRule: {
99
+ title: "Horizontal Rule",
100
+ description: "Add a horizontal line",
101
+ keywords: ["hr", "horizontal", "rule", "line", "separator"],
102
+ },
103
+ table: {
104
+ title: "Table",
105
+ description: "Insert a table",
106
+ keywords: ["table", "grid", "data", "rows", "columns"],
107
+ },
108
+ },
109
+ table: {
110
+ addRowBefore: "Add row before",
111
+ addRowAfter: "Add row after",
112
+ deleteRow: "Delete row",
113
+ addColumnBefore: "Add column before",
114
+ addColumnAfter: "Add column after",
115
+ deleteColumn: "Delete column",
116
+ deleteTable: "Delete table",
117
+ toggleHeaderRow: "Toggle header row",
118
+ toggleHeaderColumn: "Toggle header column",
119
+ mergeCells: "Merge cells",
120
+ splitCell: "Split cell",
121
+ },
122
+ imageUpload: {
123
+ selectImage: "Select Image",
124
+ loadError: "Error loading image",
125
+ uploadingImage: "Uploading image...",
126
+ uploadProgress: "Upload Progress",
127
+ uploadError: "Upload Error",
128
+ uploadSuccess: "Upload Success",
129
+ imageTooLarge: "Image too large",
130
+ invalidFileType: "Invalid file type",
131
+ dragDropText: "Drag and drop images here",
132
+ changeImage: "Change Image",
133
+ deleteImage: "Delete Image",
134
+ resizeSmall: "Small",
135
+ resizeMedium: "Medium",
136
+ resizeLarge: "Large",
137
+ resizeOriginal: "Original",
138
+ resizing: "Resizing...",
139
+ compressing: "Compressing...",
140
+ compressionError: "Error during compression",
141
+ validating: "Validating file...",
142
+ uploadingToServer: "Uploading to server...",
143
+ replacingImage: "Replacing image...",
144
+ insertingImage: "Inserting into editor...",
145
+ noFileSelected: "No image file selected",
146
+ selectionCancelled: "Selection cancelled",
147
+ },
148
+ editor: {
149
+ placeholder: "Start typing...",
150
+ character: "character",
151
+ word: "word",
152
+ linkPrompt: "Enter link URL",
153
+ linkUrlPrompt: "Enter URL",
154
+ confirmDelete: "Are you sure you want to delete this?",
155
+ toggleEdit: "Switch to Edit Mode",
156
+ viewMode: "Switch to View Mode",
157
+ },
158
+ common: {
159
+ cancel: "Cancel",
160
+ confirm: "Confirm",
161
+ apply: "Apply",
162
+ delete: "Delete",
163
+ save: "Save",
164
+ close: "Close",
165
+ loading: "Loading",
166
+ error: "Error",
167
+ success: "Success",
168
+ },
169
+ };
170
+ const FRENCH_TRANSLATIONS = {
171
+ toolbar: {
172
+ bold: "Gras",
173
+ italic: "Italique",
174
+ underline: "Souligné",
175
+ strike: "Barré",
176
+ code: "Code en ligne",
177
+ codeBlock: "Bloc de code",
178
+ superscript: "Exposant",
179
+ subscript: "Indice",
180
+ highlight: "Surligner",
181
+ highlightPicker: "Couleur de fond",
182
+ heading1: "Titre 1",
183
+ heading2: "Titre 2",
184
+ heading3: "Titre 3",
185
+ bulletList: "Liste à puces",
186
+ orderedList: "Liste numérotée",
187
+ blockquote: "Citation",
188
+ alignLeft: "Aligner à gauche",
189
+ alignCenter: "Centrer",
190
+ alignRight: "Aligner à droite",
191
+ alignJustify: "Justifier",
192
+ link: "Ajouter un lien",
193
+ image: "Ajouter une image",
194
+ horizontalRule: "Ligne horizontale",
195
+ table: "Insérer un tableau",
196
+ undo: "Annuler",
197
+ redo: "Refaire",
198
+ clear: "Vider",
199
+ textColor: "Couleur texte",
200
+ customColor: "Couleur personnalisée",
201
+ presets: "Préréglages",
202
+ },
203
+ bubbleMenu: {
204
+ bold: "Gras",
205
+ italic: "Italique",
206
+ underline: "Souligné",
207
+ strike: "Barré",
208
+ code: "Code",
209
+ superscript: "Exposant",
210
+ subscript: "Indice",
211
+ highlight: "Surligner",
212
+ highlightPicker: "Couleur de fond",
213
+ textColor: "Couleur texte",
214
+ link: "Lien",
215
+ addLink: "Ajouter un lien",
216
+ editLink: "Modifier le lien",
217
+ removeLink: "Supprimer le lien",
218
+ linkUrl: "URL du lien",
219
+ linkText: "Texte du lien",
220
+ openLink: "Ouvrir le lien",
221
+ customColor: "Couleur personnalisée",
222
+ presets: "Préréglages",
223
+ },
224
+ slashCommands: {
225
+ heading1: {
226
+ title: "Titre 1",
227
+ description: "Grand titre de section",
228
+ keywords: ["heading", "h1", "titre", "title", "1", "header"],
229
+ },
230
+ heading2: {
231
+ title: "Titre 2",
232
+ description: "Titre de sous-section",
233
+ keywords: ["heading", "h2", "titre", "title", "2", "header"],
234
+ },
235
+ heading3: {
236
+ title: "Titre 3",
237
+ description: "Petit titre",
238
+ keywords: ["heading", "h3", "titre", "title", "3", "header"],
239
+ },
240
+ bulletList: {
241
+ title: "Liste à puces",
242
+ description: "Créer une liste à puces",
243
+ keywords: ["bullet", "list", "liste", "puces", "ul"],
244
+ },
245
+ orderedList: {
246
+ title: "Liste numérotée",
247
+ description: "Créer une liste numérotée",
248
+ keywords: ["numbered", "list", "liste", "numérotée", "ol", "ordered"],
249
+ },
250
+ blockquote: {
251
+ title: "Citation",
252
+ description: "Ajouter une citation",
253
+ keywords: ["quote", "blockquote", "citation"],
254
+ },
255
+ code: {
256
+ title: "Bloc de code",
257
+ description: "Ajouter un bloc de code",
258
+ keywords: ["code", "codeblock", "pre", "programmation"],
259
+ },
260
+ image: {
261
+ title: "Image",
262
+ description: "Insérer une image",
263
+ keywords: ["image", "photo", "picture", "img"],
264
+ },
265
+ horizontalRule: {
266
+ title: "Ligne horizontale",
267
+ description: "Ajouter une ligne de séparation",
268
+ keywords: ["hr", "horizontal", "rule", "ligne", "séparation"],
269
+ },
270
+ table: {
271
+ title: "Tableau",
272
+ description: "Insérer un tableau",
273
+ keywords: ["table", "tableau", "grid", "grille", "data", "données", "rows", "colonnes"],
274
+ },
275
+ },
276
+ table: {
277
+ addRowBefore: "Ajouter une ligne avant",
278
+ addRowAfter: "Ajouter une ligne après",
279
+ deleteRow: "Supprimer la ligne",
280
+ addColumnBefore: "Ajouter une colonne avant",
281
+ addColumnAfter: "Ajouter une colonne après",
282
+ deleteColumn: "Supprimer la colonne",
283
+ deleteTable: "Supprimer le tableau",
284
+ toggleHeaderRow: "Basculer ligne d'en-tête",
285
+ toggleHeaderColumn: "Basculer colonne d'en-tête",
286
+ mergeCells: "Fusionner les cellules",
287
+ splitCell: "Diviser la cellule",
288
+ },
289
+ imageUpload: {
290
+ selectImage: "Sélectionner une image",
291
+ loadError: "Erreur de chargement de l'image",
292
+ uploadingImage: "Téléchargement de l'image...",
293
+ uploadProgress: "Progression du téléchargement",
294
+ uploadError: "Erreur de téléchargement",
295
+ uploadSuccess: "Téléchargement réussi",
296
+ imageTooLarge: "Image trop volumineuse",
297
+ invalidFileType: "Type de fichier invalide",
298
+ dragDropText: "Glissez et déposez des images ici",
299
+ changeImage: "Changer l'image",
300
+ deleteImage: "Supprimer l'image",
301
+ resizeSmall: "Petit",
302
+ resizeMedium: "Moyen",
303
+ resizeLarge: "Grand",
304
+ resizeOriginal: "Original",
305
+ resizing: "Redimensionnement...",
306
+ compressing: "Compression...",
307
+ compressionError: "Erreur lors de la compression",
308
+ validating: "Validation du fichier...",
309
+ uploadingToServer: "Upload vers le serveur...",
310
+ replacingImage: "Remplacement de l'image...",
311
+ insertingImage: "Insertion dans l'éditeur...",
312
+ noFileSelected: "Aucun fichier image sélectionné",
313
+ selectionCancelled: "Sélection annulée",
314
+ },
315
+ editor: {
316
+ placeholder: "Commencez à écrire...",
317
+ character: "caractère",
318
+ word: "mot",
319
+ linkPrompt: "Entrez l'URL du lien",
320
+ linkUrlPrompt: "Entrez l'URL",
321
+ confirmDelete: "Êtes-vous sûr de vouloir supprimer ceci ?",
322
+ toggleEdit: "Passer en mode édition",
323
+ viewMode: "Passer en mode affichage",
324
+ },
325
+ common: {
326
+ cancel: "Annuler",
327
+ confirm: "Confirmer",
328
+ apply: "Appliquer",
329
+ delete: "Supprimer",
330
+ save: "Sauvegarder",
331
+ close: "Fermer",
332
+ loading: "Chargement",
333
+ error: "Erreur",
334
+ success: "Succès",
335
+ },
336
+ };
337
+ export class AteI18nService {
338
+ constructor() {
339
+ this._currentLocale = signal("en");
340
+ this._translations = signal({
341
+ en: ENGLISH_TRANSLATIONS,
342
+ fr: FRENCH_TRANSLATIONS,
343
+ });
344
+ // Public signals
345
+ this.currentLocale = this._currentLocale.asReadonly();
346
+ /** All loaded translations (useful for dynamic key access) */
347
+ this.allTranslations = this._translations.asReadonly();
348
+ this.translations = computed(() => this._translations()[this._currentLocale()]);
349
+ // Fast translation methods
350
+ this.t = computed(() => this.translations());
351
+ this.toolbar = computed(() => this.translations().toolbar);
352
+ this.bubbleMenu = computed(() => this.translations().bubbleMenu);
353
+ this.slashCommands = computed(() => this.translations().slashCommands);
354
+ this.table = computed(() => this.translations().table);
355
+ this.imageUpload = computed(() => this.translations().imageUpload);
356
+ this.editor = computed(() => this.translations().editor);
357
+ this.common = computed(() => this.translations().common);
358
+ // Automatically detect browser language
359
+ this.detectBrowserLanguage();
360
+ }
361
+ setLocale(locale) {
362
+ this._currentLocale.set(locale);
363
+ }
364
+ autoDetectLocale() {
365
+ this.detectBrowserLanguage();
366
+ }
367
+ getSupportedLocales() {
368
+ return Object.keys(this._translations());
369
+ }
370
+ addTranslations(locale, translations) {
371
+ this._translations.update(current => {
372
+ const existing = current[locale] || ENGLISH_TRANSLATIONS;
373
+ return {
374
+ ...current,
375
+ [locale]: {
376
+ ...existing,
377
+ ...translations,
378
+ },
379
+ };
380
+ });
381
+ }
382
+ detectBrowserLanguage() {
383
+ const browserLang = navigator.language.toLowerCase();
384
+ if (browserLang.startsWith("fr")) {
385
+ this._currentLocale.set("fr");
386
+ }
387
+ else {
388
+ this._currentLocale.set("en");
389
+ }
390
+ }
391
+ // Utility methods for components
392
+ getToolbarTitle(key) {
393
+ return this.translations().toolbar[key];
394
+ }
395
+ getBubbleMenuTitle(key) {
396
+ return this.translations().bubbleMenu[key];
397
+ }
398
+ getSlashCommand(key) {
399
+ return this.translations().slashCommands[key];
400
+ }
401
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteI18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
402
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteI18nService, providedIn: "root" }); }
403
+ }
404
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteI18nService, decorators: [{
405
+ type: Injectable,
406
+ args: [{
407
+ providedIn: "root",
408
+ }]
409
+ }], ctorParameters: () => [] });
410
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWkxOG4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL3NlcnZpY2VzL2F0ZS1pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXlMN0QsTUFBTSxvQkFBb0IsR0FBb0I7SUFDNUMsT0FBTyxFQUFFO1FBQ1AsSUFBSSxFQUFFLE1BQU07UUFDWixNQUFNLEVBQUUsUUFBUTtRQUNoQixTQUFTLEVBQUUsV0FBVztRQUN0QixNQUFNLEVBQUUsZUFBZTtRQUN2QixJQUFJLEVBQUUsYUFBYTtRQUNuQixTQUFTLEVBQUUsWUFBWTtRQUN2QixXQUFXLEVBQUUsYUFBYTtRQUMxQixTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsV0FBVztRQUN0QixlQUFlLEVBQUUsa0JBQWtCO1FBQ25DLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLFdBQVcsRUFBRSxjQUFjO1FBQzNCLFVBQVUsRUFBRSxZQUFZO1FBQ3hCLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFdBQVcsRUFBRSxjQUFjO1FBQzNCLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLFlBQVksRUFBRSxlQUFlO1FBQzdCLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLGNBQWMsRUFBRSxpQkFBaUI7UUFDakMsS0FBSyxFQUFFLGNBQWM7UUFDckIsSUFBSSxFQUFFLE1BQU07UUFDWixJQUFJLEVBQUUsTUFBTTtRQUNaLEtBQUssRUFBRSxPQUFPO1FBQ2QsU0FBUyxFQUFFLFlBQVk7UUFDdkIsV0FBVyxFQUFFLGNBQWM7UUFDM0IsT0FBTyxF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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIGNvbXB1dGVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IHR5cGUgU3VwcG9ydGVkTG9jYWxlID0gXCJlblwiIHwgXCJmclwiIHwgKHN0cmluZyAmIHt9KTtcblxuZXhwb3J0IGludGVyZmFjZSBBdGVUcmFuc2xhdGlvbnMge1xuICAvLyBUb29sYmFyXG4gIHRvb2xiYXI6IHtcbiAgICBib2xkOiBzdHJpbmc7XG4gICAgaXRhbGljOiBzdHJpbmc7XG4gICAgdW5kZXJsaW5lOiBzdHJpbmc7XG4gICAgc3RyaWtlOiBzdHJpbmc7XG4gICAgY29kZTogc3RyaW5nO1xuICAgIGNvZGVCbG9jazogc3RyaW5nO1xuICAgIHN1cGVyc2NyaXB0OiBzdHJpbmc7XG4gICAgc3Vic2NyaXB0OiBzdHJpbmc7XG4gICAgaGlnaGxpZ2h0OiBzdHJpbmc7XG4gICAgaGlnaGxpZ2h0UGlja2VyOiBzdHJpbmc7XG4gICAgaGVhZGluZzE6IHN0cmluZztcbiAgICBoZWFkaW5nMjogc3RyaW5nO1xuICAgIGhlYWRpbmczOiBzdHJpbmc7XG4gICAgYnVsbGV0TGlzdDogc3RyaW5nO1xuICAgIG9yZGVyZWRMaXN0OiBzdHJpbmc7XG4gICAgYmxvY2txdW90ZTogc3RyaW5nO1xuICAgIGFsaWduTGVmdDogc3RyaW5nO1xuICAgIGFsaWduQ2VudGVyOiBzdHJpbmc7XG4gICAgYWxpZ25SaWdodDogc3RyaW5nO1xuICAgIGFsaWduSnVzdGlmeTogc3RyaW5nO1xuICAgIGxpbms6IHN0cmluZztcbiAgICBpbWFnZTogc3RyaW5nO1xuICAgIGhvcml6b250YWxSdWxlOiBzdHJpbmc7XG4gICAgdGFibGU6IHN0cmluZztcbiAgICB1bmRvOiBzdHJpbmc7XG4gICAgcmVkbzogc3RyaW5nO1xuICAgIGNsZWFyOiBzdHJpbmc7XG4gICAgdGV4dENvbG9yOiBzdHJpbmc7XG4gICAgY3VzdG9tQ29sb3I6IHN0cmluZztcbiAgICBwcmVzZXRzOiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gQnViYmxlIE1lbnVcbiAgYnViYmxlTWVudToge1xuICAgIGJvbGQ6IHN0cmluZztcbiAgICBpdGFsaWM6IHN0cmluZztcbiAgICB1bmRlcmxpbmU6IHN0cmluZztcbiAgICBzdHJpa2U6IHN0cmluZztcbiAgICBjb2RlOiBzdHJpbmc7XG4gICAgc3VwZXJzY3JpcHQ6IHN0cmluZztcbiAgICBzdWJzY3JpcHQ6IHN0cmluZztcbiAgICBoaWdobGlnaHQ6IHN0cmluZztcbiAgICBoaWdobGlnaHRQaWNrZXI6IHN0cmluZztcbiAgICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgICBsaW5rOiBzdHJpbmc7XG4gICAgYWRkTGluazogc3RyaW5nO1xuICAgIGVkaXRMaW5rOiBzdHJpbmc7XG4gICAgcmVtb3ZlTGluazogc3RyaW5nO1xuICAgIGxpbmtVcmw6IHN0cmluZztcbiAgICBsaW5rVGV4dDogc3RyaW5nO1xuICAgIG9wZW5MaW5rOiBzdHJpbmc7XG4gICAgY3VzdG9tQ29sb3I6IHN0cmluZztcbiAgICBwcmVzZXRzOiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gU2xhc2ggQ29tbWFuZHNcbiAgc2xhc2hDb21tYW5kczoge1xuICAgIGhlYWRpbmcxOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGhlYWRpbmcyOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGhlYWRpbmczOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGJ1bGxldExpc3Q6IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAga2V5d29yZHM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgb3JkZXJlZExpc3Q6IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAga2V5d29yZHM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgYmxvY2txdW90ZToge1xuICAgICAgdGl0bGU6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICBrZXl3b3Jkczogc3RyaW5nW107XG4gICAgfTtcbiAgICBjb2RlOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGltYWdlOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGhvcml6b250YWxSdWxlOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIHRhYmxlOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRhYmxlIEFjdGlvbnNcbiAgdGFibGU6IHtcbiAgICBhZGRSb3dCZWZvcmU6IHN0cmluZztcbiAgICBhZGRSb3dBZnRlcjogc3RyaW5nO1xuICAgIGRlbGV0ZVJvdzogc3RyaW5nO1xuICAgIGFkZENvbHVtbkJlZm9yZTogc3RyaW5nO1xuICAgIGFkZENvbHVtbkFmdGVyOiBzdHJpbmc7XG4gICAgZGVsZXRlQ29sdW1uOiBzdHJpbmc7XG4gICAgZGVsZXRlVGFibGU6IHN0cmluZztcbiAgICB0b2dnbGVIZWFkZXJSb3c6IHN0cmluZztcbiAgICB0b2dnbGVIZWFkZXJDb2x1bW46IHN0cmluZztcbiAgICBtZXJnZUNlbGxzOiBzdHJpbmc7XG4gICAgc3BsaXRDZWxsOiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gSW1hZ2UgVXBsb2FkXG4gIGltYWdlVXBsb2FkOiB7XG4gICAgc2VsZWN0SW1hZ2U6IHN0cmluZztcbiAgICBsb2FkRXJyb3I6IHN0cmluZztcbiAgICB1cGxvYWRpbmdJbWFnZTogc3RyaW5nO1xuICAgIHVwbG9hZFByb2dyZXNzOiBzdHJpbmc7XG4gICAgdXBsb2FkRXJyb3I6IHN0cmluZztcbiAgICB1cGxvYWRTdWNjZXNzOiBzdHJpbmc7XG4gICAgaW1hZ2VUb29MYXJnZTogc3RyaW5nO1xuICAgIGludmFsaWRGaWxlVHlwZTogc3RyaW5nO1xuICAgIGRyYWdEcm9wVGV4dDogc3RyaW5nO1xuICAgIGNoYW5nZUltYWdlOiBzdHJpbmc7XG4gICAgZGVsZXRlSW1hZ2U6IHN0cmluZztcbiAgICByZXNpemVTbWFsbDogc3RyaW5nO1xuICAgIHJlc2l6ZU1lZGl1bTogc3RyaW5nO1xuICAgIHJlc2l6ZUxhcmdlOiBzdHJpbmc7XG4gICAgcmVzaXplT3JpZ2luYWw6IHN0cmluZztcbiAgICByZXNpemluZzogc3RyaW5nO1xuICAgIGNvbXByZXNzaW5nOiBzdHJpbmc7XG4gICAgY29tcHJlc3Npb25FcnJvcjogc3RyaW5nO1xuICAgIHZhbGlkYXRpbmc6IHN0cmluZztcbiAgICB1cGxvYWRpbmdUb1NlcnZlcjogc3RyaW5nO1xuICAgIHJlcGxhY2luZ0ltYWdlOiBzdHJpbmc7XG4gICAgaW5zZXJ0aW5nSW1hZ2U6IHN0cmluZztcbiAgICBub0ZpbGVTZWxlY3RlZDogc3RyaW5nO1xuICAgIHNlbGVjdGlvbkNhbmNlbGxlZDogc3RyaW5nO1xuICB9O1xuXG4gIC8vIEVkaXRvclxuICBlZGl0b3I6IHtcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIGNoYXJhY3Rlcjogc3RyaW5nO1xuICAgIHdvcmQ6IHN0cmluZztcbiAgICBsaW5rUHJvbXB0OiBzdHJpbmc7XG4gICAgbGlua1VybFByb21wdDogc3RyaW5nO1xuICAgIGNvbmZpcm1EZWxldGU6IHN0cmluZztcbiAgICB0b2dnbGVFZGl0OiBzdHJpbmc7XG4gICAgdmlld01vZGU6IHN0cmluZztcbiAgfTtcblxuICAvLyBDb21tb25cbiAgY29tbW9uOiB7XG4gICAgY2FuY2VsOiBzdHJpbmc7XG4gICAgY29uZmlybTogc3RyaW5nO1xuICAgIGFwcGx5OiBzdHJpbmc7XG4gICAgZGVsZXRlOiBzdHJpbmc7XG4gICAgc2F2ZTogc3RyaW5nO1xuICAgIGNsb3NlOiBzdHJpbmc7XG4gICAgbG9hZGluZzogc3RyaW5nO1xuICAgIGVycm9yOiBzdHJpbmc7XG4gICAgc3VjY2Vzczogc3RyaW5nO1xuICB9O1xufVxuXG5jb25zdCBFTkdMSVNIX1RSQU5TTEFUSU9OUzogQXRlVHJhbnNsYXRpb25zID0ge1xuICB0b29sYmFyOiB7XG4gICAgYm9sZDogXCJCb2xkXCIsXG4gICAgaXRhbGljOiBcIkl0YWxpY1wiLFxuICAgIHVuZGVybGluZTogXCJVbmRlcmxpbmVcIixcbiAgICBzdHJpa2U6IFwiU3RyaWtldGhyb3VnaFwiLFxuICAgIGNvZGU6IFwiSW5saW5lIENvZGVcIixcbiAgICBjb2RlQmxvY2s6IFwiQ29kZSBCbG9ja1wiLFxuICAgIHN1cGVyc2NyaXB0OiBcIlN1cGVyc2NyaXB0XCIsXG4gICAgc3Vic2NyaXB0OiBcIlN1YnNjcmlwdFwiLFxuICAgIGhpZ2hsaWdodDogXCJIaWdobGlnaHRcIixcbiAgICBoaWdobGlnaHRQaWNrZXI6IFwiQmFja2dyb3VuZCBDb2xvclwiLFxuICAgIGhlYWRpbmcxOiBcIkhlYWRpbmcgMVwiLFxuICAgIGhlYWRpbmcyOiBcIkhlYWRpbmcgMlwiLFxuICAgIGhlYWRpbmczOiBcIkhlYWRpbmcgM1wiLFxuICAgIGJ1bGxldExpc3Q6IFwiQnVsbGV0IExpc3RcIixcbiAgICBvcmRlcmVkTGlzdDogXCJPcmRlcmVkIExpc3RcIixcbiAgICBibG9ja3F1b3RlOiBcIkJsb2NrcXVvdGVcIixcbiAgICBhbGlnbkxlZnQ6IFwiQWxpZ24gTGVmdFwiLFxuICAgIGFsaWduQ2VudGVyOiBcIkFsaWduIENlbnRlclwiLFxuICAgIGFsaWduUmlnaHQ6IFwiQWxpZ24gUmlnaHRcIixcbiAgICBhbGlnbkp1c3RpZnk6IFwiQWxpZ24gSnVzdGlmeVwiLFxuICAgIGxpbms6IFwiQWRkIExpbmtcIixcbiAgICBpbWFnZTogXCJBZGQgSW1hZ2VcIixcbiAgICBob3Jpem9udGFsUnVsZTogXCJIb3Jpem9udGFsIFJ1bGVcIixcbiAgICB0YWJsZTogXCJJbnNlcnQgVGFibGVcIixcbiAgICB1bmRvOiBcIlVuZG9cIixcbiAgICByZWRvOiBcIlJlZG9cIixcbiAgICBjbGVhcjogXCJDbGVhclwiLFxuICAgIHRleHRDb2xvcjogXCJUZXh0IENvbG9yXCIsXG4gICAgY3VzdG9tQ29sb3I6IFwiQ3VzdG9tIENvbG9yXCIsXG4gICAgcHJlc2V0czogXCJQcmVzZXRzXCIsXG4gIH0sXG4gIGJ1YmJsZU1lbnU6IHtcbiAgICBib2xkOiBcIkJvbGRcIixcbiAgICBpdGFsaWM6IFwiSXRhbGljXCIsXG4gICAgdW5kZXJsaW5lOiBcIlVuZGVybGluZVwiLFxuICAgIHN0cmlrZTogXCJTdHJpa2V0aHJvdWdoXCIsXG4gICAgY29kZTogXCJDb2RlXCIsXG4gICAgc3VwZXJzY3JpcHQ6IFwiU3VwZXJzY3JpcHRcIixcbiAgICBzdWJzY3JpcHQ6IFwiU3Vic2NyaXB0XCIsXG4gICAgaGlnaGxpZ2h0OiBcIkhpZ2hsaWdodFwiLFxuICAgIGhpZ2hsaWdodFBpY2tlcjogXCJCYWNrZ3JvdW5kIENvbG9yXCIsXG4gICAgdGV4dENvbG9yOiBcIlRleHQgQ29sb3JcIixcbiAgICBsaW5rOiBcIkxpbmtcIixcbiAgICBhZGRMaW5rOiBcIkFkZCBMaW5rXCIsXG4gICAgZWRpdExpbms6IFwiRWRpdCBMaW5rXCIsXG4gICAgcmVtb3ZlTGluazogXCJSZW1vdmUgTGlua1wiLFxuICAgIGxpbmtVcmw6IFwiTGluayBVUkxcIixcbiAgICBsaW5rVGV4dDogXCJMaW5rIFRleHRcIixcbiAgICBvcGVuTGluazogXCJPcGVuIExpbmtcIixcbiAgICBjdXN0b21Db2xvcjogXCJDdXN0b20gQ29sb3JcIixcbiAgICBwcmVzZXRzOiBcIlByZXNldHNcIixcbiAgfSxcbiAgc2xhc2hDb21tYW5kczoge1xuICAgIGhlYWRpbmcxOiB7XG4gICAgICB0aXRsZTogXCJIZWFkaW5nIDFcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxhcmdlIHNlY3Rpb24gaGVhZGluZ1wiLFxuICAgICAga2V5d29yZHM6IFtcImhlYWRpbmdcIiwgXCJoMVwiLCBcInRpdGxlXCIsIFwiMVwiLCBcImhlYWRlclwiXSxcbiAgICB9LFxuICAgIGhlYWRpbmcyOiB7XG4gICAgICB0aXRsZTogXCJIZWFkaW5nIDJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIk1lZGl1bSBzZWN0aW9uIGhlYWRpbmdcIixcbiAgICAgIGtleXdvcmRzOiBbXCJoZWFkaW5nXCIsIFwiaDJcIiwgXCJ0aXRsZVwiLCBcIjJcIiwgXCJoZWFkZXJcIl0sXG4gICAgfSxcbiAgICBoZWFkaW5nMzoge1xuICAgICAgdGl0bGU6IFwiSGVhZGluZyAzXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTbWFsbCBzZWN0aW9uIGhlYWRpbmdcIixcbiAgICAgIGtleXdvcmRzOiBbXCJoZWFkaW5nXCIsIFwiaDNcIiwgXCJ0aXRsZVwiLCBcIjNcIiwgXCJoZWFkZXJcIl0sXG4gICAgfSxcbiAgICBidWxsZXRMaXN0OiB7XG4gICAgICB0aXRsZTogXCJCdWxsZXQgTGlzdFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQ3JlYXRlIGEgYnVsbGV0IGxpc3RcIixcbiAgICAgIGtleXdvcmRzOiBbXCJidWxsZXRcIiwgXCJsaXN0XCIsIFwidWxcIiwgXCJ1bm9yZGVyZWRcIl0sXG4gICAgfSxcbiAgICBvcmRlcmVkTGlzdDoge1xuICAgICAgdGl0bGU6IFwiT3JkZXJlZCBMaXN0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDcmVhdGUgYW4gb3JkZXJlZCBsaXN0XCIsXG4gICAgICBrZXl3b3JkczogW1wib3JkZXJlZFwiLCBcImxpc3RcIiwgXCJvbFwiLCBcIm51bWJlcmVkXCJdLFxuICAgIH0sXG4gICAgYmxvY2txdW90ZToge1xuICAgICAgdGl0bGU6IFwiQmxvY2txdW90ZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQWRkIGEgYmxvY2txdW90ZVwiLFxuICAgICAga2V5d29yZHM6IFtcInF1b3RlXCIsIFwiYmxvY2txdW90ZVwiLCBcImNpdGF0aW9uXCJdLFxuICAgIH0sXG4gICAgY29kZToge1xuICAgICAgdGl0bGU6IFwiQ29kZSBCbG9ja1wiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQWRkIGEgY29kZSBibG9ja1wiLFxuICAgICAga2V5d29yZHM6IFtcImNvZGVcIiwgXCJjb2RlYmxvY2tcIiwgXCJwcmVcIiwgXCJwcm9ncmFtbWluZ1wiXSxcbiAgICB9LFxuICAgIGltYWdlOiB7XG4gICAgICB0aXRsZTogXCJJbWFnZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiSW5zZXJ0IGFuIGltYWdlXCIsXG4gICAgICBrZXl3b3JkczogW1wiaW1hZ2VcIiwgXCJwaG90b1wiLCBcInBpY3R1cmVcIiwgXCJpbWdcIl0sXG4gICAgfSxcbiAgICBob3Jpem9udGFsUnVsZToge1xuICAgICAgdGl0bGU6IFwiSG9yaXpvbnRhbCBSdWxlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBZGQgYSBob3Jpem9udGFsIGxpbmVcIixcbiAgICAgIGtleXdvcmRzOiBbXCJoclwiLCBcImhvcml6b250YWxcIiwgXCJydWxlXCIsIFwibGluZVwiLCBcInNlcGFyYXRvclwiXSxcbiAgICB9LFxuICAgIHRhYmxlOiB7XG4gICAgICB0aXRsZTogXCJUYWJsZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiSW5zZXJ0IGEgdGFibGVcIixcbiAgICAgIGtleXdvcmRzOiBbXCJ0YWJsZVwiLCBcImdyaWRcIiwgXCJkYXRhXCIsIFwicm93c1wiLCBcImNvbHVtbnNcIl0sXG4gICAgfSxcbiAgfSxcbiAgdGFibGU6IHtcbiAgICBhZGRSb3dCZWZvcmU6IFwiQWRkIHJvdyBiZWZvcmVcIixcbiAgICBhZGRSb3dBZnRlcjogXCJBZGQgcm93IGFmdGVyXCIsXG4gICAgZGVsZXRlUm93OiBcIkRlbGV0ZSByb3dcIixcbiAgICBhZGRDb2x1bW5CZWZvcmU6IFwiQWRkIGNvbHVtbiBiZWZvcmVcIixcbiAgICBhZGRDb2x1bW5BZnRlcjogXCJBZGQgY29sdW1uIGFmdGVyXCIsXG4gICAgZGVsZXRlQ29sdW1uOiBcIkRlbGV0ZSBjb2x1bW5cIixcbiAgICBkZWxldGVUYWJsZTogXCJEZWxldGUgdGFibGVcIixcbiAgICB0b2dnbGVIZWFkZXJSb3c6IFwiVG9nZ2xlIGhlYWRlciByb3dcIixcbiAgICB0b2dnbGVIZWFkZXJDb2x1bW46IFwiVG9nZ2xlIGhlYWRlciBjb2x1bW5cIixcbiAgICBtZXJnZUNlbGxzOiBcIk1lcmdlIGNlbGxzXCIsXG4gICAgc3BsaXRDZWxsOiBcIlNwbGl0IGNlbGxcIixcbiAgfSxcbiAgaW1hZ2VVcGxvYWQ6IHtcbiAgICBzZWxlY3RJbWFnZTogXCJTZWxlY3QgSW1hZ2VcIixcbiAgICBsb2FkRXJyb3I6IFwiRXJyb3IgbG9hZGluZyBpbWFnZVwiLFxuICAgIHVwbG9hZGluZ0ltYWdlOiBcIlVwbG9hZGluZyBpbWFnZS4uLlwiLFxuICAgIHVwbG9hZFByb2dyZXNzOiBcIlVwbG9hZCBQcm9ncmVzc1wiLFxuICAgIHVwbG9hZEVycm9yOiBcIlVwbG9hZCBFcnJvclwiLFxuICAgIHVwbG9hZFN1Y2Nlc3M6IFwiVXBsb2FkIFN1Y2Nlc3NcIixcbiAgICBpbWFnZVRvb0xhcmdlOiBcIkltYWdlIHRvbyBsYXJnZVwiLFxuICAgIGludmFsaWRGaWxlVHlwZTogXCJJbnZhbGlkIGZpbGUgdHlwZVwiLFxuICAgIGRyYWdEcm9wVGV4dDogXCJEcmFnIGFuZCBkcm9wIGltYWdlcyBoZXJlXCIsXG4gICAgY2hhbmdlSW1hZ2U6IFwiQ2hhbmdlIEltYWdlXCIsXG4gICAgZGVsZXRlSW1hZ2U6IFwiRGVsZXRlIEltYWdlXCIsXG4gICAgcmVzaXplU21hbGw6IFwiU21hbGxcIixcbiAgICByZXNpemVNZWRpdW06IFwiTWVkaXVtXCIsXG4gICAgcmVzaXplTGFyZ2U6IFwiTGFyZ2VcIixcbiAgICByZXNpemVPcmlnaW5hbDogXCJPcmlnaW5hbFwiLFxuICAgIHJlc2l6aW5nOiBcIlJlc2l6aW5nLi4uXCIsXG4gICAgY29tcHJlc3Npbmc6IFwiQ29tcHJlc3NpbmcuLi5cIixcbiAgICBjb21wcmVzc2lvbkVycm9yOiBcIkVycm9yIGR1cmluZyBjb21wcmVzc2lvblwiLFxuICAgIHZhbGlkYXRpbmc6IFwiVmFsaWRhdGluZyBmaWxlLi4uXCIsXG4gICAgdXBsb2FkaW5nVG9TZXJ2ZXI6IFwiVXBsb2FkaW5nIHRvIHNlcnZlci4uLlwiLFxuICAgIHJlcGxhY2luZ0ltYWdlOiBcIlJlcGxhY2luZyBpbWFnZS4uLlwiLFxuICAgIGluc2VydGluZ0ltYWdlOiBcIkluc2VydGluZyBpbnRvIGVkaXRvci4uLlwiLFxuICAgIG5vRmlsZVNlbGVjdGVkOiBcIk5vIGltYWdlIGZpbGUgc2VsZWN0ZWRcIixcbiAgICBzZWxlY3Rpb25DYW5jZWxsZWQ6IFwiU2VsZWN0aW9uIGNhbmNlbGxlZFwiLFxuICB9LFxuICBlZGl0b3I6IHtcbiAgICBwbGFjZWhvbGRlcjogXCJTdGFydCB0eXBpbmcuLi5cIixcbiAgICBjaGFyYWN0ZXI6IFwiY2hhcmFjdGVyXCIsXG4gICAgd29yZDogXCJ3b3JkXCIsXG4gICAgbGlua1Byb21wdDogXCJFbnRlciBsaW5rIFVSTFwiLFxuICAgIGxpbmtVcmxQcm9tcHQ6IFwiRW50ZXIgVVJMXCIsXG4gICAgY29uZmlybURlbGV0ZTogXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXM/XCIsXG4gICAgdG9nZ2xlRWRpdDogXCJTd2l0Y2ggdG8gRWRpdCBNb2RlXCIsXG4gICAgdmlld01vZGU6IFwiU3dpdGNoIHRvIFZpZXcgTW9kZVwiLFxuICB9LFxuICBjb21tb246IHtcbiAgICBjYW5jZWw6IFwiQ2FuY2VsXCIsXG4gICAgY29uZmlybTogXCJDb25maXJtXCIsXG4gICAgYXBwbHk6IFwiQXBwbHlcIixcbiAgICBkZWxldGU6IFwiRGVsZXRlXCIsXG4gICAgc2F2ZTogXCJTYXZlXCIsXG4gICAgY2xvc2U6IFwiQ2xvc2VcIixcbiAgICBsb2FkaW5nOiBcIkxvYWRpbmdcIixcbiAgICBlcnJvcjogXCJFcnJvclwiLFxuICAgIHN1Y2Nlc3M6IFwiU3VjY2Vzc1wiLFxuICB9LFxufTtcblxuY29uc3QgRlJFTkNIX1RSQU5TTEFUSU9OUzogQXRlVHJhbnNsYXRpb25zID0ge1xuICB0b29sYmFyOiB7XG4gICAgYm9sZDogXCJHcmFzXCIsXG4gICAgaXRhbGljOiBcIkl0YWxpcXVlXCIsXG4gICAgdW5kZXJsaW5lOiBcIlNvdWxpZ27DqVwiLFxuICAgIHN0cmlrZTogXCJCYXJyw6lcIixcbiAgICBjb2RlOiBcIkNvZGUgZW4gbGlnbmVcIixcbiAgICBjb2RlQmxvY2s6IFwiQmxvYyBkZSBjb2RlXCIsXG4gICAgc3VwZXJzY3JpcHQ6IFwiRXhwb3NhbnRcIixcbiAgICBzdWJzY3JpcHQ6IFwiSW5kaWNlXCIsXG4gICAgaGlnaGxpZ2h0OiBcIlN1cmxpZ25lclwiLFxuICAgIGhpZ2hsaWdodFBpY2tlcjogXCJDb3VsZXVyIGRlIGZvbmRcIixcbiAgICBoZWFkaW5nMTogXCJUaXRyZSAxXCIsXG4gICAgaGVhZGluZzI6IFwiVGl0cmUgMlwiLFxuICAgIGhlYWRpbmczOiBcIlRpdHJlIDNcIixcbiAgICBidWxsZXRMaXN0OiBcIkxpc3RlIMOgIHB1Y2VzXCIsXG4gICAgb3JkZXJlZExpc3Q6IFwiTGlzdGUgbnVtw6lyb3TDqWVcIixcbiAgICBibG9ja3F1b3RlOiBcIkNpdGF0aW9uXCIsXG4gICAgYWxpZ25MZWZ0OiBcIkFsaWduZXIgw6AgZ2F1Y2hlXCIsXG4gICAgYWxpZ25DZW50ZXI6IFwiQ2VudHJlclwiLFxuICAgIGFsaWduUmlnaHQ6IFwiQWxpZ25lciDDoCBkcm9pdGVcIixcbiAgICBhbGlnbkp1c3RpZnk6IFwiSnVzdGlmaWVyXCIsXG4gICAgbGluazogXCJBam91dGVyIHVuIGxpZW5cIixcbiAgICBpbWFnZTogXCJBam91dGVyIHVuZSBpbWFnZVwiLFxuICAgIGhvcml6b250YWxSdWxlOiBcIkxpZ25lIGhvcml6b250YWxlXCIsXG4gICAgdGFibGU6IFwiSW5zw6lyZXIgdW4gdGFibGVhdVwiLFxuICAgIHVuZG86IFwiQW5udWxlclwiLFxuICAgIHJlZG86IFwiUmVmYWlyZVwiLFxuICAgIGNsZWFyOiBcIlZpZGVyXCIsXG4gICAgdGV4dENvbG9yOiBcIkNvdWxldXIgdGV4dGVcIixcbiAgICBjdXN0b21Db2xvcjogXCJDb3VsZXVyIHBlcnNvbm5hbGlzw6llXCIsXG4gICAgcHJlc2V0czogXCJQcsOpcsOpZ2xhZ2VzXCIsXG4gIH0sXG4gIGJ1YmJsZU1lbnU6IHtcbiAgICBib2xkOiBcIkdyYXNcIixcbiAgICBpdGFsaWM6IFwiSXRhbGlxdWVcIixcbiAgICB1bmRlcmxpbmU6IFwiU291bGlnbsOpXCIsXG4gICAgc3RyaWtlOiBcIkJhcnLDqVwiLFxuICAgIGNvZGU6IFwiQ29kZVwiLFxuICAgIHN1cGVyc2NyaXB0OiBcIkV4cG9zYW50XCIsXG4gICAgc3Vic2NyaXB0OiBcIkluZGljZVwiLFxuICAgIGhpZ2hsaWdodDogXCJTdXJsaWduZXJcIixcbiAgICBoaWdobGlnaHRQaWNrZXI6IFwiQ291bGV1ciBkZSBmb25kXCIsXG4gICAgdGV4dENvbG9yOiBcIkNvdWxldXIgdGV4dGVcIixcbiAgICBsaW5rOiBcIkxpZW5cIixcbiAgICBhZGRMaW5rOiBcIkFqb3V0ZXIgdW4gbGllblwiLFxuICAgIGVkaXRMaW5rOiBcIk1vZGlmaWVyIGxlIGxpZW5cIixcbiAgICByZW1vdmVMaW5rOiBcIlN1cHByaW1lciBsZSBsaWVuXCIsXG4gICAgbGlua1VybDogXCJVUkwgZHUgbGllblwiLFxuICAgIGxpbmtUZXh0OiBcIlRleHRlIGR1IGxpZW5cIixcbiAgICBvcGVuTGluazogXCJPdXZyaXIgbGUgbGllblwiLFxuICAgIGN1c3RvbUNvbG9yOiBcIkNvdWxldXIgcGVyc29ubmFsaXPDqWVcIixcbiAgICBwcmVzZXRzOiBcIlByw6lyw6lnbGFnZXNcIixcbiAgfSxcbiAgc2xhc2hDb21tYW5kczoge1xuICAgIGhlYWRpbmcxOiB7XG4gICAgICB0aXRsZTogXCJUaXRyZSAxXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJHcmFuZCB0aXRyZSBkZSBzZWN0aW9uXCIsXG4gICAgICBrZXl3b3JkczogW1wiaGVhZGluZ1wiLCBcImgxXCIsIFwidGl0cmVcIiwgXCJ0aXRsZVwiLCBcIjFcIiwgXCJoZWFkZXJcIl0sXG4gICAgfSxcbiAgICBoZWFkaW5nMjoge1xuICAgICAgdGl0bGU6IFwiVGl0cmUgMlwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGl0cmUgZGUgc291cy1zZWN0aW9uXCIsXG4gICAgICBrZXl3b3JkczogW1wiaGVhZGluZ1wiLCBcImgyXCIsIFwidGl0cmVcIiwgXCJ0aXRsZVwiLCBcIjJcIiwgXCJoZWFkZXJcIl0sXG4gICAgfSxcbiAgICBoZWFkaW5nMzoge1xuICAgICAgdGl0bGU6IFwiVGl0cmUgM1wiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUGV0aXQgdGl0cmVcIixcbiAgICAgIGtleXdvcmRzOiBbXCJoZWFkaW5nXCIsIFwiaDNcIiwgXCJ0aXRyZVwiLCBcInRpdGxlXCIsIFwiM1wiLCBcImhlYWRlclwiXSxcbiAgICB9LFxuICAgIGJ1bGxldExpc3Q6IHtcbiAgICAgIHRpdGxlOiBcIkxpc3RlIMOgIHB1Y2VzXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDcsOpZXIgdW5lIGxpc3RlIMOgIHB1Y2VzXCIsXG4gICAgICBrZXl3b3JkczogW1wiYnVsbGV0XCIsIFwibGlzdFwiLCBcImxpc3RlXCIsIFwicHVjZXNcIiwgXCJ1bFwiXSxcbiAgICB9LFxuICAgIG9yZGVyZWRMaXN0OiB7XG4gICAgICB0aXRsZTogXCJMaXN0ZSBudW3DqXJvdMOpZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQ3LDqWVyIHVuZSBsaXN0ZSBudW3DqXJvdMOpZVwiLFxuICAgICAga2V5d29yZHM6IFtcIm51bWJlcmVkXCIsIFwibGlzdFwiLCBcImxpc3RlXCIsIFwibnVtw6lyb3TDqWVcIiwgXCJvbFwiLCBcIm9yZGVyZWRcIl0sXG4gICAgfSxcbiAgICBibG9ja3F1b3RlOiB7XG4gICAgICB0aXRsZTogXCJDaXRhdGlvblwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQWpvdXRlciB1bmUgY2l0YXRpb25cIixcbiAgICAgIGtleXdvcmRzOiBbXCJxdW90ZVwiLCBcImJsb2NrcXVvdGVcIiwgXCJjaXRhdGlvblwiXSxcbiAgICB9LFxuICAgIGNvZGU6IHtcbiAgICAgIHRpdGxlOiBcIkJsb2MgZGUgY29kZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQWpvdXRlciB1biBibG9jIGRlIGNvZGVcIixcbiAgICAgIGtleXdvcmRzOiBbXCJjb2RlXCIsIFwiY29kZWJsb2NrXCIsIFwicHJlXCIsIFwicHJvZ3JhbW1hdGlvblwiXSxcbiAgICB9LFxuICAgIGltYWdlOiB7XG4gICAgICB0aXRsZTogXCJJbWFnZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiSW5zw6lyZXIgdW5lIGltYWdlXCIsXG4gICAgICBrZXl3b3JkczogW1wiaW1hZ2VcIiwgXCJwaG90b1wiLCBcInBpY3R1cmVcIiwgXCJpbWdcIl0sXG4gICAgfSxcbiAgICBob3Jpem9udGFsUnVsZToge1xuICAgICAgdGl0bGU6IFwiTGlnbmUgaG9yaXpvbnRhbGVcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFqb3V0ZXIgdW5lIGxpZ25lIGRlIHPDqXBhcmF0aW9uXCIsXG4gICAgICBrZXl3b3JkczogW1wiaHJcIiwgXCJob3Jpem9udGFsXCIsIFwicnVsZVwiLCBcImxpZ25lXCIsIFwic8OpcGFyYXRpb25cIl0sXG4gICAgfSxcbiAgICB0YWJsZToge1xuICAgICAgdGl0bGU6IFwiVGFibGVhdVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiSW5zw6lyZXIgdW4gdGFibGVhdVwiLFxuICAgICAga2V5d29yZHM6IFtcInRhYmxlXCIsIFwidGFibGVhdVwiLCBcImdyaWRcIiwgXCJncmlsbGVcIiwgXCJkYXRhXCIsIFwiZG9ubsOpZXNcIiwgXCJyb3dzXCIsIFwiY29sb25uZXNcIl0sXG4gICAgfSxcbiAgfSxcbiAgdGFibGU6IHtcbiAgICBhZGRSb3dCZWZvcmU6IFwiQWpvdXRlciB1bmUgbGlnbmUgYXZhbnRcIixcbiAgICBhZGRSb3dBZnRlcjogXCJBam91dGVyIHVuZSBsaWduZSBhcHLDqHNcIixcbiAgICBkZWxldGVSb3c6IFwiU3VwcHJpbWVyIGxhIGxpZ25lXCIsXG4gICAgYWRkQ29sdW1uQmVmb3JlOiBcIkFqb3V0ZXIgdW5lIGNvbG9ubmUgYXZhbnRcIixcbiAgICBhZGRDb2x1bW5BZnRlcjogXCJBam91dGVyIHVuZSBjb2xvbm5lIGFwcsOoc1wiLFxuICAgIGRlbGV0ZUNvbHVtbjogXCJTdXBwcmltZXIgbGEgY29sb25uZVwiLFxuICAgIGRlbGV0ZVRhYmxlOiBcIlN1cHByaW1lciBsZSB0YWJsZWF1XCIsXG4gICAgdG9nZ2xlSGVhZGVyUm93OiBcIkJhc2N1bGVyIGxpZ25lIGQnZW4tdMOqdGVcIixcbiAgICB0b2dnbGVIZWFkZXJDb2x1bW46IFwiQmFzY3VsZXIgY29sb25uZSBkJ2VuLXTDqnRlXCIsXG4gICAgbWVyZ2VDZWxsczogXCJGdXNpb25uZXIgbGVzIGNlbGx1bGVzXCIsXG4gICAgc3BsaXRDZWxsOiBcIkRpdmlzZXIgbGEgY2VsbHVsZVwiLFxuICB9LFxuICBpbWFnZVVwbG9hZDoge1xuICAgIHNlbGVjdEltYWdlOiBcIlPDqWxlY3Rpb25uZXIgdW5lIGltYWdlXCIsXG4gICAgbG9hZEVycm9yOiBcIkVycmV1ciBkZSBjaGFyZ2VtZW50IGRlIGwnaW1hZ2VcIixcbiAgICB1cGxvYWRpbmdJbWFnZTogXCJUw6lsw6ljaGFyZ2VtZW50IGRlIGwnaW1hZ2UuLi5cIixcbiAgICB1cGxvYWRQcm9ncmVzczogXCJQcm9ncmVzc2lvbiBkdSB0w6lsw6ljaGFyZ2VtZW50XCIsXG4gICAgdXBsb2FkRXJyb3I6IFwiRXJyZXVyIGRlIHTDqWzDqWNoYXJnZW1lbnRcIixcbiAgICB1cGxvYWRTdWNjZXNzOiBcIlTDqWzDqWNoYXJnZW1lbnQgcsOpdXNzaVwiLFxuICAgIGltYWdlVG9vTGFyZ2U6IFwiSW1hZ2UgdHJvcCB2b2x1bWluZXVzZVwiLFxuICAgIGludmFsaWRGaWxlVHlwZTogXCJUeXBlIGRlIGZpY2hpZXIgaW52YWxpZGVcIixcbiAgICBkcmFnRHJvcFRleHQ6IFwiR2xpc3NleiBldCBkw6lwb3NleiBkZXMgaW1hZ2VzIGljaVwiLFxuICAgIGNoYW5nZUltYWdlOiBcIkNoYW5nZXIgbCdpbWFnZVwiLFxuICAgIGRlbGV0ZUltYWdlOiBcIlN1cHByaW1lciBsJ2ltYWdlXCIsXG4gICAgcmVzaXplU21hbGw6IFwiUGV0aXRcIixcbiAgICByZXNpemVNZWRpdW06IFwiTW95ZW5cIixcbiAgICByZXNpemVMYXJnZTogXCJHcmFuZFwiLFxuICAgIHJlc2l6ZU9yaWdpbmFsOiBcIk9yaWdpbmFsXCIsXG4gICAgcmVzaXppbmc6IFwiUmVkaW1lbnNpb25uZW1lbnQuLi5cIixcbiAgICBjb21wcmVzc2luZzogXCJDb21wcmVzc2lvbi4uLlwiLFxuICAgIGNvbXByZXNzaW9uRXJyb3I6IFwiRXJyZXVyIGxvcnMgZGUgbGEgY29tcHJlc3Npb25cIixcbiAgICB2YWxpZGF0aW5nOiBcIlZhbGlkYXRpb24gZHUgZmljaGllci4uLlwiLFxuICAgIHVwbG9hZGluZ1RvU2VydmVyOiBcIlVwbG9hZCB2ZXJzIGxlIHNlcnZldXIuLi5cIixcbiAgICByZXBsYWNpbmdJbWFnZTogXCJSZW1wbGFjZW1lbnQgZGUgbCdpbWFnZS4uLlwiLFxuICAgIGluc2VydGluZ0ltYWdlOiBcIkluc2VydGlvbiBkYW5zIGwnw6lkaXRldXIuLi5cIixcbiAgICBub0ZpbGVTZWxlY3RlZDogXCJBdWN1biBmaWNoaWVyIGltYWdlIHPDqWxlY3Rpb25uw6lcIixcbiAgICBzZWxlY3Rpb25DYW5jZWxsZWQ6IFwiU8OpbGVjdGlvbiBhbm51bMOpZVwiLFxuICB9LFxuICBlZGl0b3I6IHtcbiAgICBwbGFjZWhvbGRlcjogXCJDb21tZW5jZXogw6Agw6ljcmlyZS4uLlwiLFxuICAgIGNoYXJhY3RlcjogXCJjYXJhY3TDqHJlXCIsXG4gICAgd29yZDogXCJtb3RcIixcbiAgICBsaW5rUHJvbXB0OiBcIkVudHJleiBsJ1VSTCBkdSBsaWVuXCIsXG4gICAgbGlua1VybFByb21wdDogXCJFbnRyZXogbCdVUkxcIixcbiAgICBjb25maXJtRGVsZXRlOiBcIsOKdGVzLXZvdXMgc8O7ciBkZSB2b3Vsb2lyIHN1cHByaW1lciBjZWNpID9cIixcbiAgICB0b2dnbGVFZGl0OiBcIlBhc3NlciBlbiBtb2RlIMOpZGl0aW9uXCIsXG4gICAgdmlld01vZGU6IFwiUGFzc2VyIGVuIG1vZGUgYWZmaWNoYWdlXCIsXG4gIH0sXG4gIGNvbW1vbjoge1xuICAgIGNhbmNlbDogXCJBbm51bGVyXCIsXG4gICAgY29uZmlybTogXCJDb25maXJtZXJcIixcbiAgICBhcHBseTogXCJBcHBsaXF1ZXJcIixcbiAgICBkZWxldGU6IFwiU3VwcHJpbWVyXCIsXG4gICAgc2F2ZTogXCJTYXV2ZWdhcmRlclwiLFxuICAgIGNsb3NlOiBcIkZlcm1lclwiLFxuICAgIGxvYWRpbmc6IFwiQ2hhcmdlbWVudFwiLFxuICAgIGVycm9yOiBcIkVycmV1clwiLFxuICAgIHN1Y2Nlc3M6IFwiU3VjY8Ooc1wiLFxuICB9LFxufTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgQXRlSTE4blNlcnZpY2Uge1xuICBwcml2YXRlIF9jdXJyZW50TG9jYWxlID0gc2lnbmFsPFN1cHBvcnRlZExvY2FsZT4oXCJlblwiKTtcbiAgcHJpdmF0ZSBfdHJhbnNsYXRpb25zID0gc2lnbmFsPFJlY29yZDxTdXBwb3J0ZWRMb2NhbGUsIEF0ZVRyYW5zbGF0aW9ucz4+KHtcbiAgICBlbjogRU5HTElTSF9UUkFOU0xBVElPTlMsXG4gICAgZnI6IEZSRU5DSF9UUkFOU0xBVElPTlMsXG4gIH0pO1xuXG4gIC8vIFB1YmxpYyBzaWduYWxzXG4gIHJlYWRvbmx5IGN1cnJlbnRMb2NhbGUgPSB0aGlzLl9jdXJyZW50TG9jYWxlLmFzUmVhZG9ubHkoKTtcbiAgLyoqIEFsbCBsb2FkZWQgdHJhbnNsYXRpb25zICh1c2VmdWwgZm9yIGR5bmFtaWMga2V5IGFjY2VzcykgKi9cbiAgcmVhZG9ubHkgYWxsVHJhbnNsYXRpb25zID0gdGhpcy5fdHJhbnNsYXRpb25zLmFzUmVhZG9ubHkoKTtcblxuICByZWFkb25seSB0cmFuc2xhdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl90cmFuc2xhdGlvbnMoKVt0aGlzLl9jdXJyZW50TG9jYWxlKCldKTtcblxuICAvLyBGYXN0IHRyYW5zbGF0aW9uIG1ldGhvZHNcbiAgcmVhZG9ubHkgdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkpO1xuICByZWFkb25seSB0b29sYmFyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50cmFuc2xhdGlvbnMoKS50b29sYmFyKTtcbiAgcmVhZG9ubHkgYnViYmxlTWVudSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuYnViYmxlTWVudSk7XG4gIHJlYWRvbmx5IHNsYXNoQ29tbWFuZHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRyYW5zbGF0aW9ucygpLnNsYXNoQ29tbWFuZHMpO1xuICByZWFkb25seSB0YWJsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkudGFibGUpO1xuICByZWFkb25seSBpbWFnZVVwbG9hZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuaW1hZ2VVcGxvYWQpO1xuICByZWFkb25seSBlZGl0b3IgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRyYW5zbGF0aW9ucygpLmVkaXRvcik7XG4gIHJlYWRvbmx5IGNvbW1vbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuY29tbW9uKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBBdXRvbWF0aWNhbGx5IGRldGVjdCBicm93c2VyIGxhbmd1YWdlXG4gICAgdGhpcy5kZXRlY3RCcm93c2VyTGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIHNldExvY2FsZShsb2NhbGU6IFN1cHBvcnRlZExvY2FsZSk6IHZvaWQge1xuICAgIHRoaXMuX2N1cnJlbnRMb2NhbGUuc2V0KGxvY2FsZSk7XG4gIH1cblxuICBhdXRvRGV0ZWN0TG9jYWxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGV0ZWN0QnJvd3Nlckxhbmd1YWdlKCk7XG4gIH1cblxuICBnZXRTdXBwb3J0ZWRMb2NhbGVzKCk6IFN1cHBvcnRlZExvY2FsZVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fdHJhbnNsYXRpb25zKCkpIGFzIFN1cHBvcnRlZExvY2FsZVtdO1xuICB9XG5cbiAgYWRkVHJhbnNsYXRpb25zKGxvY2FsZTogc3RyaW5nLCB0cmFuc2xhdGlvbnM6IEF0ZVRyYW5zbGF0aW9ucyB8IFBhcnRpYWw8QXRlVHJhbnNsYXRpb25zPik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zbGF0aW9ucy51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IGN1cnJlbnRbbG9jYWxlXSB8fCBFTkdMSVNIX1RSQU5TTEFUSU9OUztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIFtsb2NhbGVdOiB7XG4gICAgICAgICAgLi4uZXhpc3RpbmcsXG4gICAgICAgICAgLi4udHJhbnNsYXRpb25zLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0QnJvd3Nlckxhbmd1YWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gbmF2aWdhdG9yLmxhbmd1YWdlLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGJyb3dzZXJMYW5nLnN0YXJ0c1dpdGgoXCJmclwiKSkge1xuICAgICAgdGhpcy5fY3VycmVudExvY2FsZS5zZXQoXCJmclwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY3VycmVudExvY2FsZS5zZXQoXCJlblwiKTtcbiAgICB9XG4gIH1cblxuICAvLyBVdGlsaXR5IG1ldGhvZHMgZm9yIGNvbXBvbmVudHNcbiAgZ2V0VG9vbGJhclRpdGxlKGtleToga2V5b2YgQXRlVHJhbnNsYXRpb25zW1widG9vbGJhclwiXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25zKCkudG9vbGJhcltrZXldO1xuICB9XG5cbiAgZ2V0QnViYmxlTWVudVRpdGxlKGtleToga2V5b2YgQXRlVHJhbnNsYXRpb25zW1wiYnViYmxlTWVudVwiXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25zKCkuYnViYmxlTWVudVtrZXldO1xuICB9XG5cbiAgZ2V0U2xhc2hDb21tYW5kKGtleToga2V5b2YgQXRlVHJhbnNsYXRpb25zW1wic2xhc2hDb21tYW5kc1wiXSkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9ucygpLnNsYXNoQ29tbWFuZHNba2V5XTtcbiAgfVxufVxuIl19