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