@rangertechnologies/ngnxt 2.1.242 → 2.1.243-beta

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 (90) hide show
  1. package/fesm2022/rangertechnologies-ngnxt.mjs +153 -185
  2. package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
  3. package/lib/components/image-cropper/component/image-cropper.component.d.ts +1 -1
  4. package/lib/components/pick-location/pick-location.component.d.ts +0 -1
  5. package/package.json +4 -6
  6. package/rangertechnologies-ngnxt-2.1.243-beta.tgz +0 -0
  7. package/esm2022/environments/version.mjs +0 -15
  8. package/esm2022/lib/ar.i18n.mjs +0 -29
  9. package/esm2022/lib/components/button/nxt-button.component.mjs +0 -165
  10. package/esm2022/lib/components/custom-calendar/custom-calendar.component.mjs +0 -371
  11. package/esm2022/lib/components/custom-dropdown/custom-dropdown.component.mjs +0 -274
  12. package/esm2022/lib/components/custom-model/custom-model.component.mjs +0 -51
  13. package/esm2022/lib/components/custom-radio/custom-radio.component.mjs +0 -156
  14. package/esm2022/lib/components/datatable/datatable.component.mjs +0 -1625
  15. package/esm2022/lib/components/file-upload/file-upload.component.mjs +0 -283
  16. package/esm2022/lib/components/icon-selector/icon-selector.component.mjs +0 -104
  17. package/esm2022/lib/components/image-cropper/component/cropper.state.mjs +0 -208
  18. package/esm2022/lib/components/image-cropper/component/image-cropper.component.mjs +0 -562
  19. package/esm2022/lib/components/image-cropper/interfaces/basic-event.interface.mjs +0 -2
  20. package/esm2022/lib/components/image-cropper/interfaces/cropper-options.interface.mjs +0 -2
  21. package/esm2022/lib/components/image-cropper/interfaces/cropper-position.interface.mjs +0 -2
  22. package/esm2022/lib/components/image-cropper/interfaces/dimensions.interface.mjs +0 -2
  23. package/esm2022/lib/components/image-cropper/interfaces/exif-transform.interface.mjs +0 -2
  24. package/esm2022/lib/components/image-cropper/interfaces/image-cropped-event.interface.mjs +0 -2
  25. package/esm2022/lib/components/image-cropper/interfaces/image-transform.interface.mjs +0 -2
  26. package/esm2022/lib/components/image-cropper/interfaces/index.mjs +0 -2
  27. package/esm2022/lib/components/image-cropper/interfaces/loaded-image.interface.mjs +0 -2
  28. package/esm2022/lib/components/image-cropper/interfaces/move-start.interface.mjs +0 -8
  29. package/esm2022/lib/components/image-cropper/services/crop.service.mjs +0 -139
  30. package/esm2022/lib/components/image-cropper/services/load-image.service.mjs +0 -194
  31. package/esm2022/lib/components/image-cropper/utils/cropper-position.utils.mjs +0 -239
  32. package/esm2022/lib/components/image-cropper/utils/exif.utils.mjs +0 -79
  33. package/esm2022/lib/components/image-cropper/utils/keyboard.utils.mjs +0 -40
  34. package/esm2022/lib/components/image-cropper/utils/percentage.utils.mjs +0 -4
  35. package/esm2022/lib/components/image-cropper/utils/resize.utils.mjs +0 -75
  36. package/esm2022/lib/components/list-view-filter/list-view-filter.component.mjs +0 -403
  37. package/esm2022/lib/components/nxt-input/nxt-input.component.mjs +0 -2925
  38. package/esm2022/lib/components/pagination/pagination.component.mjs +0 -101
  39. package/esm2022/lib/components/pick-location/pick-location.component.mjs +0 -234
  40. package/esm2022/lib/components/search-box/search-box.component.mjs +0 -413
  41. package/esm2022/lib/country.json +0 -43237
  42. package/esm2022/lib/en.i18n.mjs +0 -29
  43. package/esm2022/lib/i18n-config.service.mjs +0 -4
  44. package/esm2022/lib/i18n.component.mjs +0 -47
  45. package/esm2022/lib/i18n.module.mjs +0 -38
  46. package/esm2022/lib/i18n.pipe.mjs +0 -26
  47. package/esm2022/lib/i18n.service.mjs +0 -56
  48. package/esm2022/lib/interfaces/actionMeta.mjs +0 -2
  49. package/esm2022/lib/interfaces/apimeta.mjs +0 -2
  50. package/esm2022/lib/interfaces/dependencyMeta.mjs +0 -2
  51. package/esm2022/lib/model/bookletWrapper.mjs +0 -9
  52. package/esm2022/lib/model/changeWrapper.mjs +0 -11
  53. package/esm2022/lib/model/errorWrapper.mjs +0 -6
  54. package/esm2022/lib/nxt-app.component.mjs +0 -22
  55. package/esm2022/lib/nxt-app.module.mjs +0 -139
  56. package/esm2022/lib/nxt-app.service.mjs +0 -14
  57. package/esm2022/lib/pages/booklet/booklet.component.mjs +0 -675
  58. package/esm2022/lib/pages/builder/element/element.component.mjs +0 -466
  59. package/esm2022/lib/pages/builder/form/form.component.mjs +0 -45
  60. package/esm2022/lib/pages/builder/properties/common-fields.constants.mjs +0 -89
  61. package/esm2022/lib/pages/builder/properties/properties.component.mjs +0 -1021
  62. package/esm2022/lib/pages/builder/templates/templates.component.mjs +0 -34
  63. package/esm2022/lib/pages/pdfDesigner/pdf-designer/pdf-designer.component.mjs +0 -676
  64. package/esm2022/lib/pages/pdfDesigner/pdf-properties/pdf-properties.component.mjs +0 -1126
  65. package/esm2022/lib/pages/questionbook/questionbook.component.mjs +0 -841
  66. package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +0 -2405
  67. package/esm2022/lib/pipe/custom-translate.pipe.mjs +0 -27
  68. package/esm2022/lib/pipe/date/date.pipe.mjs +0 -28
  69. package/esm2022/lib/pipe/editColumnCheck/edit-column-check.pipe.mjs +0 -28
  70. package/esm2022/lib/pipe/editColumnDropdown/edit-column-dropdown.pipe.mjs +0 -20
  71. package/esm2022/lib/pipe/editColumnType/edit-column-type.pipe.mjs +0 -20
  72. package/esm2022/lib/pipe/get-value.pipe.mjs +0 -48
  73. package/esm2022/lib/pipe/search-filter/search-filter.pipe.mjs +0 -39
  74. package/esm2022/lib/pipe/time/time.pipe.mjs +0 -26
  75. package/esm2022/lib/sample.mjs +0 -3715
  76. package/esm2022/lib/services/change.service.mjs +0 -50
  77. package/esm2022/lib/services/country.service.mjs +0 -135
  78. package/esm2022/lib/services/data.service.mjs +0 -103
  79. package/esm2022/lib/services/form-builder.service.mjs +0 -375
  80. package/esm2022/lib/services/pdf-designer.service.mjs +0 -401
  81. package/esm2022/lib/services/salesforce.service.mjs +0 -46
  82. package/esm2022/lib/services/shared.service.mjs +0 -100
  83. package/esm2022/lib/services/storage.service.mjs +0 -44
  84. package/esm2022/lib/services/template.service.mjs +0 -351
  85. package/esm2022/lib/services/translation.service.mjs +0 -62
  86. package/esm2022/lib/tam.i18n.mjs +0 -29
  87. package/esm2022/lib/wrapper.mjs +0 -175
  88. package/esm2022/public-api.mjs +0 -25
  89. package/esm2022/rangertechnologies-ngnxt.mjs +0 -5
  90. package/rangertechnologies-ngnxt-2.1.242.tgz +0 -0
@@ -1,2925 +0,0 @@
1
- //SKS31JAN25
2
- import { CommonModule } from '@angular/common';
3
- import { Component, Input, Output, EventEmitter, forwardRef, ChangeDetectionStrategy, ViewChildren, HostListener, ViewChild } from '@angular/core';
4
- import { FormArray, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';
5
- import { OwlDateTimeModule, OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker';
6
- import { QuillEditorComponent } from 'ngx-quill';
7
- import Quill from 'quill';
8
- import { Mention } from 'quill-mention';
9
- import ImageResizor from 'quill-image-resizor';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "../../services/change.service";
12
- import * as i2 from "../../services/data.service";
13
- import * as i3 from "@angular/common";
14
- import * as i4 from "@angular/forms";
15
- import * as i5 from "@danielmoncada/angular-datetime-picker";
16
- // SKS11JUN25 An array fontFamilyArr is created containing a list of font family names as strings.
17
- const fontFamilyArr = ["Roboto", "Roboto Condensed", "Arial", "Verdana", "Tahoma", "Trebuchet MS",
18
- "Georgia", "Times New Roman", "Courier New", "Palatino Linotype",
19
- "Segoe UI", "Calibri", "Calibri Light", "Sans-Serif", "Helvetica",
20
- "Impact", "Garamond", "Comic Sans MS", "Lucida Console", "Franklin Gothic Medium"];
21
- // SKS11JUN25 Register Quill modules
22
- Quill.register('modules/mention', Mention);
23
- ImageResizor.Quill = Quill;
24
- Quill.register('modules/imageResizor', ImageResizor);
25
- // SKS11JUN25 The Quill font style attributor is imported and it is registered with Quil
26
- let fonts = Quill.import("attributors/style/font");
27
- fonts.whitelist = fontFamilyArr;
28
- Quill.register(fonts, true);
29
- const icons = Quill.import('ui/icons');
30
- icons['save'] = `<svg width="12" height="13" viewBox="0 0 12 13" fill="none"
31
- xmlns="http://www.w3.org/2000/svg">
32
- <path
33
- d="M5.95 12.8004C9.23609 12.8004 11.9 10.1365 11.9 6.85039C11.9 3.5643 9.23609 0.900391 5.95 0.900391C2.66391 0.900391 0 3.5643 0 6.85039C0 10.1365 2.66391 12.8004 5.95 12.8004Z"
34
- fill="#259566" />
35
- <path
36
- d="M8.88111 4.74622C8.83269 4.69759 8.77513 4.65899 8.71176 4.63266C8.64838 4.60633 8.58043 4.59277 8.5118 4.59277C8.44317 4.59277 8.37521 4.60633 8.31184 4.63266C8.24846 4.65899 8.19091 4.69759 8.14249 4.74622L4.8269 8.06386L3.35253 6.58949C3.30403 6.54099 3.24646 6.50252 3.18309 6.47627C3.11972 6.45003 3.05181 6.43652 2.98322 6.43652C2.91463 6.43652 2.84672 6.45003 2.78335 6.47627C2.71999 6.50252 2.66241 6.54099 2.61391 6.58949C2.56541 6.63799 2.52694 6.69557 2.50069 6.75893C2.47445 6.8223 2.46094 6.89022 2.46094 6.9588C2.46094 7.02739 2.47445 7.09531 2.50069 7.15867C2.52694 7.22204 2.56541 7.27961 2.61391 7.32811L4.45677 9.17097C4.50519 9.21961 4.56274 9.2582 4.62612 9.28453C4.6895 9.31086 4.75745 9.32442 4.82608 9.32442C4.89471 9.32442 4.96266 9.31086 5.02604 9.28453C5.08942 9.2582 5.14697 9.21961 5.19539 9.17097L8.88111 5.48484C8.92974 5.43642 8.96834 5.37887 8.99467 5.31549C9.021 5.25212 9.03456 5.18416 9.03456 5.11553C9.03456 5.0469 9.021 4.97895 8.99467 4.91557C8.96834 4.8522 8.92974 4.79465 8.88111 4.74622Z"
37
- fill="white" />
38
- </svg>`;
39
- icons['discard'] = `<svg *ngIf="isDiscardHovered" (click)="discardChanges()" width="12" height="13" viewBox="0 0 12 13"
40
- fill="none" xmlns="http://www.w3.org/2000/svg">
41
- <path
42
- d="M7.05555 4.97471L5.94 6.09026L4.82445 4.97471C4.57861 4.72887 4.18191 4.72887 3.93607 4.97471C3.69023 5.22055 3.69023 5.61725 3.93607 5.86309L5.05162 6.97864L3.93607 8.09419C3.69023 8.34003 3.69023 8.73673 3.93607 8.98257C4.18191 9.22841 4.57861 9.22841 4.82445 8.98257L5.94 7.86702L7.05555 8.98257C7.30139 9.22841 7.69809 9.22841 7.94393 8.98257C8.18977 8.73673 8.18977 8.34003 7.94393 8.09419L6.82838 6.97864L7.94393 5.86309C8.18977 5.61725 8.18977 5.22055 7.94393 4.97471C7.69809 4.73873 7.30021 4.73873 7.05555 4.97471ZM5.94 1.06062C2.70017 1.06062 0.0808594 3.67993 0.0808594 6.91977C0.0808594 10.1596 2.70017 12.7789 5.94 12.7789C9.17983 12.7789 11.7991 10.1596 11.7991 6.91977C11.7991 3.67993 9.17983 1.06062 5.94 1.06062ZM5.94 11.6153C3.35426 11.6153 1.24422 9.50525 1.24422 6.91977C1.24422 4.33412 3.35426 2.22408 5.94 2.22408C8.52558 2.22408 10.6356 4.33412 10.6356 6.91977C10.6356 9.50525 8.52558 11.6153 5.94 11.6153Z"
43
- fill="#FF3636" />
44
- </svg>`;
45
- function getFormArray(size) {
46
- const arr = [];
47
- for (let i = 0; i < size; i++) {
48
- arr.push(new FormControl(''));
49
- }
50
- return new FormArray(arr);
51
- }
52
- export class NxtInput {
53
- elementRef;
54
- changeService;
55
- dataService;
56
- // SKS30JAN25
57
- label = ''; // Input label
58
- labelFont = ''; // Input label font
59
- labelWeight = ''; // Input label Weight
60
- inputWeight = ''; // Input Weight
61
- labelSize = ''; // Input label Size
62
- inputValueSize = ''; //Input value Size
63
- labelColor = ''; // Input label Color
64
- showLabel = ''; // Input label Color
65
- svgHeight = ''; // Input svg height
66
- svgWidth = ''; // Input svg weight
67
- type = 'text'; // Input type (text, email, password)
68
- inputIconRightSrc = ''; // Path to SVG icon
69
- inputIconLeftSrc = '';
70
- required = false; // Required validation
71
- minLength; // Min length validation
72
- pattern; // Pattern validation (e.g., email regex)
73
- errorMessages = {}; // Custom error messages
74
- maxLength = 0; // Maximum length validation
75
- placeholder = '';
76
- inputBgColor = ''; // Use this input to set a custom background color for the input.
77
- inputBorder = ''; // Use this input to set a custom border style for the input.
78
- placeholderColor = ''; // Use this input to set a custom text color for the input.
79
- placeholderFont = ''; // Use this input to set a custom placeholder font
80
- placeholderWeight = ''; // Use this input to set a custom
81
- placeholderSize = ''; // Use this input to set a custom size
82
- inputTextColor = ''; // Use this input to set a custom text color for the input value.
83
- inputHeight = ''; // Use this input to set a custom height for the input.
84
- inputWidth = ''; // Use this input to set a custom width for the Input.
85
- inputId = 'default'; // Use this input to set a custom ID for the input. Default is 'default'.
86
- inputBorderSize = '0px'; // Use this input to set the border size of the input. Default is '0px' for no border.
87
- inputConfig = ''; // Use this input to pass configuration settings for the input (e.g., styles, actions).
88
- confPassVal = ''; // Password value to check if the current field matches the confirmed password
89
- confPass = false; // Set to true to enable password confirmation validation
90
- mode = 'edit'; // New mode input
91
- value; // input value
92
- question = {};
93
- showSuggestion = false; // showSuggestion the input
94
- ariaOwns;
95
- ariaHasPopup;
96
- isLoading = false; // Set to true to show a loading animation
97
- options = []; // For radio buttons
98
- minDate; // For date/datetime picker
99
- maxDate; // For date/datetime picker
100
- rows = 3; // For textarea
101
- rawInputVal;
102
- set size(size) {
103
- this.inputs = getFormArray(size);
104
- this.#size = size;
105
- }
106
- valueChange = new EventEmitter(); // Emits input value changes
107
- inputValue = new EventEmitter();
108
- onBlur = new EventEmitter();
109
- onFocus = new EventEmitter();
110
- toggleEmit = new EventEmitter();
111
- nativeInputRef = new EventEmitter();
112
- removeValueEmit = new EventEmitter();
113
- inputEls;
114
- // Date/Time picker references
115
- dateTimePicker;
116
- datePicker;
117
- timePicker;
118
- dtPicker;
119
- dPicker;
120
- tPicker;
121
- inputRef;
122
- #size = 4;
123
- #scheduledFocus = null;
124
- inputs = getFormArray(this.#size);
125
- control = new FormControl('');
126
- isPasswordVisible = false;
127
- countryCode = '';
128
- // SKS28FEB25 countries list
129
- countries = [
130
- {
131
- "name": "Afghanistan",
132
- "flag": "🇦🇫",
133
- "code": "AF",
134
- "dial_code": "+93",
135
- "regex": "^\\+93[0-9]{9}$",
136
- "placeholder": "+93 70 123 4567"
137
- },
138
- {
139
- "name": "Åland Islands",
140
- "flag": "🇦🇽",
141
- "code": "AX",
142
- "dial_code": "+358",
143
- "regex": "^\\+358[0-9]{6,12}$",
144
- "placeholder": "+358 18 123 45"
145
- },
146
- {
147
- "name": "Albania",
148
- "flag": "🇦🇱",
149
- "code": "AL",
150
- "dial_code": "+355",
151
- "regex": "^\\+355[0-9]{9}$",
152
- "placeholder": "+355 69 123 4567"
153
- },
154
- {
155
- "name": "Algeria",
156
- "flag": "🇩🇿",
157
- "code": "DZ",
158
- "dial_code": "+213",
159
- "regex": "^\\+213[0-9]{9}$",
160
- "placeholder": "+213 551 234 567"
161
- },
162
- {
163
- "name": "American Samoa",
164
- "flag": "🇦🇸",
165
- "code": "AS",
166
- "dial_code": "+1684",
167
- "regex": "^\\+1684[0-9]{7}$",
168
- "placeholder": "+1684 123 4567"
169
- },
170
- {
171
- "name": "Andorra",
172
- "flag": "🇦🇩",
173
- "code": "AD",
174
- "dial_code": "+376",
175
- "regex": "^\\+376[0-9]{6}$",
176
- "placeholder": "+376 123 456"
177
- },
178
- {
179
- "name": "Angola",
180
- "flag": "🇦🇴",
181
- "code": "AO",
182
- "dial_code": "+244",
183
- "regex": "^\\+244[0-9]{9}$",
184
- "placeholder": "+244 923 123 456"
185
- },
186
- {
187
- "name": "Anguilla",
188
- "flag": "🇦🇮",
189
- "code": "AI",
190
- "dial_code": "+1264",
191
- "regex": "^\\+1264[0-9]{7}$",
192
- "placeholder": "+1264 235 1234"
193
- },
194
- {
195
- "name": "Antarctica",
196
- "flag": "🇦🇶",
197
- "code": "AQ",
198
- "dial_code": "+672",
199
- "regex": "^\\+672[0-9]{6,12}$",
200
- "placeholder": "+672 123 456"
201
- },
202
- {
203
- "name": "Antigua and Barbuda",
204
- "flag": "🇦🇬",
205
- "code": "AG",
206
- "dial_code": "+1268",
207
- "regex": "^\\+1268[0-9]{7}$",
208
- "placeholder": "+1268 234 5678"
209
- },
210
- {
211
- "name": "Argentina",
212
- "flag": "🇦🇷",
213
- "code": "AR",
214
- "dial_code": "+54",
215
- "regex": "^\\+54[0-9]{10,11}$",
216
- "placeholder": "+54 9 11 1234 5678"
217
- },
218
- {
219
- "name": "Armenia",
220
- "flag": "🇦🇲",
221
- "code": "AM",
222
- "dial_code": "+374",
223
- "regex": "^\\+374[0-9]{8}$",
224
- "placeholder": "+374 94 123 456"
225
- },
226
- {
227
- "name": "Aruba",
228
- "flag": "🇦🇼",
229
- "code": "AW",
230
- "dial_code": "+297",
231
- "regex": "^\\+297[0-9]{7}$",
232
- "placeholder": "+297 560 1234"
233
- },
234
- {
235
- "name": "Australia",
236
- "flag": "🇦🇺",
237
- "code": "AU",
238
- "dial_code": "+61",
239
- "regex": "^\\+61[0-9]{9}$",
240
- "placeholder": "+61 4 1234 5678"
241
- },
242
- {
243
- "name": "Austria",
244
- "flag": "🇦🇹",
245
- "code": "AT",
246
- "dial_code": "+43",
247
- "regex": "^\\+43[0-9]{10,12}$",
248
- "placeholder": "+43 664 123 4567"
249
- },
250
- {
251
- "name": "Azerbaijan",
252
- "flag": "🇦🇿",
253
- "code": "AZ",
254
- "dial_code": "+994",
255
- "regex": "^\\+994[0-9]{9}$",
256
- "placeholder": "+994 50 123 45 67"
257
- },
258
- {
259
- "name": "Bahamas",
260
- "flag": "🇧🇸",
261
- "code": "BS",
262
- "dial_code": "+1242",
263
- "regex": "^\\+1242[0-9]{7}$",
264
- "placeholder": "+1242 323 1234"
265
- },
266
- {
267
- "name": "Bahrain",
268
- "flag": "🇧🇭",
269
- "code": "BH",
270
- "dial_code": "+973",
271
- "regex": "^\\+973[0-9]{8}$",
272
- "placeholder": "+973 3123 4567"
273
- },
274
- {
275
- "name": "Bangladesh",
276
- "flag": "🇧🇩",
277
- "code": "BD",
278
- "dial_code": "+880",
279
- "regex": "^\\+880[0-9]{10}$",
280
- "placeholder": "+880 1712 345678"
281
- },
282
- {
283
- "name": "Barbados",
284
- "flag": "🇧🇧",
285
- "code": "BB",
286
- "dial_code": "+1246",
287
- "regex": "^\\+1246[0-9]{7}$",
288
- "placeholder": "+1246 250 1234"
289
- },
290
- {
291
- "name": "Belarus",
292
- "flag": "🇧🇾",
293
- "code": "BY",
294
- "dial_code": "+375",
295
- "regex": "^\\+375[0-9]{9}$",
296
- "placeholder": "+375 29 123 45 67"
297
- },
298
- {
299
- "name": "Belgium",
300
- "flag": "🇧🇪",
301
- "code": "BE",
302
- "dial_code": "+32",
303
- "regex": "^\\+32[0-9]{9}$",
304
- "placeholder": "+32 470 12 34 56"
305
- },
306
- {
307
- "name": "Belize",
308
- "flag": "🇧🇿",
309
- "code": "BZ",
310
- "dial_code": "+501",
311
- "regex": "^\\+501[0-9]{7}$",
312
- "placeholder": "+501 610 1234"
313
- },
314
- {
315
- "name": "Benin",
316
- "flag": "🇧🇯",
317
- "code": "BJ",
318
- "dial_code": "+229",
319
- "regex": "^\\+229[0-9]{8}$",
320
- "placeholder": "+229 90 12 3456"
321
- },
322
- {
323
- "name": "Bermuda",
324
- "flag": "🇧🇲",
325
- "code": "BM",
326
- "dial_code": "+1441",
327
- "regex": "^\\+1441[0-9]{7}$",
328
- "placeholder": "+1441 370 1234"
329
- },
330
- {
331
- "name": "Bhutan",
332
- "flag": "🇧🇹",
333
- "code": "BT",
334
- "dial_code": "+975",
335
- "regex": "^\\+975[0-9]{7,8}$",
336
- "placeholder": "+975 17 123 456"
337
- },
338
- {
339
- "name": "Bolivia, Plurinational State of bolivia",
340
- "flag": "🇧🇴",
341
- "code": "BO",
342
- "dial_code": "+591",
343
- "regex": "^\\+591[1-9]\\d{7}$",
344
- "placeholder": "+591 12345678",
345
- "example": "+591 70123456"
346
- },
347
- {
348
- "name": "Bosnia and Herzegovina",
349
- "flag": "🇧🇦",
350
- "code": "BA",
351
- "dial_code": "+387",
352
- "regex": "^\\+387[0-9]{8,9}$",
353
- "placeholder": "+387 61 123 456"
354
- },
355
- {
356
- "name": "Botswana",
357
- "flag": "🇧🇼",
358
- "code": "BW",
359
- "dial_code": "+267",
360
- "regex": "^\\+267[0-9]{8}$",
361
- "placeholder": "+267 71 123 456"
362
- },
363
- {
364
- "name": "Bouvet Island",
365
- "code": "BV",
366
- "dial_code": "+47",
367
- "regex": "^\\+47\\d{8}$",
368
- "placeholder": "+47 XXXXXXXX",
369
- "format": "+47 XX XX XX XX",
370
- "flag": "🇧🇻"
371
- },
372
- {
373
- "name": "Brazil",
374
- "flag": "🇧🇷",
375
- "code": "BR",
376
- "dial_code": "+55",
377
- "regex": "^\\+55[0-9]{10,11}$",
378
- "placeholder": "+55 11 91234 5678"
379
- },
380
- {
381
- "name": "British Indian Ocean Territory",
382
- "flag": "🇮🇴",
383
- "code": "IO",
384
- "dial_code": "+246",
385
- "regex": "^\\+246[0-9]{7}$",
386
- "placeholder": "+246 380 1234"
387
- },
388
- {
389
- "name": "Brunei Darussalam",
390
- "flag": "🇧🇳",
391
- "code": "BN",
392
- "dial_code": "+673",
393
- "regex": "^\\+673[0-9]{7}$",
394
- "placeholder": "+673 712 3456"
395
- },
396
- {
397
- "name": "Bulgaria",
398
- "flag": "🇧🇬",
399
- "code": "BG",
400
- "dial_code": "+359",
401
- "regex": "^\\+359[0-9]{9}$",
402
- "placeholder": "+359 87 123 4567"
403
- },
404
- {
405
- "name": "Burkina Faso",
406
- "flag": "🇧🇫",
407
- "code": "BF",
408
- "dial_code": "+226",
409
- "regex": "^\\+226[0-9]{8}$",
410
- "placeholder": "+226 70 12 3456"
411
- },
412
- {
413
- "name": "Burundi",
414
- "flag": "🇧🇮",
415
- "code": "BI",
416
- "dial_code": "+257",
417
- "regex": "^\\+257[0-9]{8}$",
418
- "placeholder": "+257 79 12 3456"
419
- },
420
- {
421
- "name": "Cambodia",
422
- "flag": "🇰🇭",
423
- "code": "KH",
424
- "dial_code": "+855",
425
- "regex": "^\\+855[0-9]{8,9}$",
426
- "placeholder": "+855 91 234 567"
427
- },
428
- {
429
- "name": "Cameroon",
430
- "flag": "🇨🇲",
431
- "code": "CM",
432
- "dial_code": "+237",
433
- "regex": "^\\+237[0-9]{8}$",
434
- "placeholder": "+237 6 71 23 45 67"
435
- },
436
- {
437
- "name": "Canada",
438
- "flag": "🇨🇦",
439
- "code": "CA",
440
- "dial_code": "+1",
441
- "regex": "^\\+1[0-9]{10}$",
442
- "placeholder": "+1 204 123 4567"
443
- },
444
- {
445
- "name": "Cape Verde",
446
- "flag": "🇨🇻",
447
- "code": "CV",
448
- "dial_code": "+238",
449
- "regex": "^\\+238[0-9]{7}$",
450
- "placeholder": "+238 991 2345"
451
- },
452
- {
453
- "name": "Cayman Islands",
454
- "flag": "🇰🇾",
455
- "code": "KY",
456
- "dial_code": "+345",
457
- "regex": "^\\+345[0-9]{7}$",
458
- "placeholder": "+345 321 1234"
459
- },
460
- {
461
- "name": "Central African Republic",
462
- "flag": "🇨🇫",
463
- "code": "CF",
464
- "dial_code": "+236",
465
- "regex": "^\\+236[0-9]{8}$",
466
- "placeholder": "+236 72 12 3456"
467
- },
468
- {
469
- "name": "Chad",
470
- "flag": "🇹🇩",
471
- "code": "TD",
472
- "dial_code": "+235",
473
- "regex": "^\\+235[0-9]{8}$",
474
- "placeholder": "+235 63 12 3456"
475
- },
476
- {
477
- "name": "Chile",
478
- "flag": "🇨🇱",
479
- "code": "CL",
480
- "dial_code": "+56",
481
- "regex": "^\\+56[0-9]{9}$",
482
- "placeholder": "+56 9 1234 5678"
483
- },
484
- {
485
- "name": "China",
486
- "flag": "🇨🇳",
487
- "code": "CN",
488
- "dial_code": "+86",
489
- "regex": "^\\+86[0-9]{11}$",
490
- "placeholder": "+86 131 2345 6789"
491
- },
492
- {
493
- "name": "Christmas Island",
494
- "flag": "🇨🇽",
495
- "code": "CX",
496
- "dial_code": "+61",
497
- "regex": "^\\+61[0-9]{9}$",
498
- "placeholder": "+61 4 1234 5678"
499
- },
500
- {
501
- "name": "Cocos (Keeling) Islands",
502
- "flag": "🇨🇨",
503
- "code": "CC",
504
- "dial_code": "+61",
505
- "regex": "^\\+61[0-9]{9}$",
506
- "placeholder": "+61 4 1234 5678"
507
- },
508
- {
509
- "name": "Colombia",
510
- "flag": "🇨🇴",
511
- "code": "CO",
512
- "dial_code": "+57",
513
- "regex": "^\\+57[0-9]{10}$",
514
- "placeholder": "+57 312 345 6789"
515
- },
516
- {
517
- "name": "Comoros",
518
- "flag": "🇰🇲",
519
- "code": "KM",
520
- "dial_code": "+269",
521
- "regex": "^\\+269[0-9]{7}$",
522
- "placeholder": "+269 321 2345"
523
- },
524
- {
525
- "name": "Congo",
526
- "flag": "🇨🇬",
527
- "code": "CG",
528
- "dial_code": "+242",
529
- "regex": "^\\+242[0-9]{9}$",
530
- "placeholder": "+242 06 123 4567"
531
- },
532
- {
533
- "name": "Congo, The Democratic Republic of the Congo",
534
- "flag": "🇨🇩",
535
- "code": "CD",
536
- "dial_code": "+243",
537
- "regex": "^\\+243[89]\\d{8}$",
538
- "placeholder": "+243 9XXXXXXXX",
539
- "example": "+243 991234567"
540
- },
541
- {
542
- "name": "Cook Islands",
543
- "flag": "🇨🇰",
544
- "code": "CK",
545
- "dial_code": "+682",
546
- "regex": "^\\+682[0-9]{5}$",
547
- "placeholder": "+682 71 234"
548
- },
549
- {
550
- "name": "Costa Rica",
551
- "flag": "🇨🇷",
552
- "code": "CR",
553
- "dial_code": "+506",
554
- "regex": "^\\+506[0-9]{8}$",
555
- "placeholder": "+506 8123 4567"
556
- },
557
- {
558
- "name": "Cote d'Ivoire",
559
- "flag": "🇨🇮",
560
- "code": "CI",
561
- "dial_code": "+225",
562
- "regex": "^\\+225[0-9]{8}$",
563
- "placeholder": "+225 01 23 45 67"
564
- },
565
- {
566
- "name": "Croatia",
567
- "flag": "🇭🇷",
568
- "code": "HR",
569
- "dial_code": "+385",
570
- "regex": "^\\+385[0-9]{8,9}$",
571
- "placeholder": "+385 98 123 456"
572
- },
573
- {
574
- "name": "Cuba",
575
- "flag": "🇨🇺",
576
- "code": "CU",
577
- "dial_code": "+53",
578
- "regex": "^\\+53[0-9]{8}$",
579
- "placeholder": "+53 5 1234 5678"
580
- },
581
- {
582
- "name": "Cyprus",
583
- "flag": "🇨🇾",
584
- "code": "CY",
585
- "dial_code": "+357",
586
- "regex": "^\\+357[0-9]{8}$",
587
- "placeholder": "+357 96 123 456"
588
- },
589
- {
590
- "name": "Czech Republic",
591
- "flag": "🇨🇿",
592
- "code": "CZ",
593
- "dial_code": "+420",
594
- "regex": "^\\+420[0-9]{9}$",
595
- "placeholder": "+420 601 123 456"
596
- },
597
- {
598
- "name": "Denmark",
599
- "flag": "🇩🇰",
600
- "code": "DK",
601
- "dial_code": "+45",
602
- "regex": "^\\+45[0-9]{8}$",
603
- "placeholder": "+45 20 12 34 56"
604
- },
605
- {
606
- "name": "Djibouti",
607
- "flag": "🇩🇯",
608
- "code": "DJ",
609
- "dial_code": "+253",
610
- "regex": "^\\+253[0-9]{8}$",
611
- "placeholder": "+253 77 12 34 56"
612
- },
613
- {
614
- "name": "Dominica",
615
- "flag": "🇩🇲",
616
- "code": "DM",
617
- "dial_code": "+1767",
618
- "regex": "^\\+1767[0-9]{7}$",
619
- "placeholder": "+1767 235 1234"
620
- },
621
- {
622
- "name": "Dominican Republic",
623
- "flag": "🇩🇴",
624
- "code": "DO",
625
- "dial_code": "+1849",
626
- "regex": "^\\+1849[0-9]{7}$",
627
- "placeholder": "+1849 234 5678"
628
- },
629
- {
630
- "name": "Ecuador",
631
- "flag": "🇪🇨",
632
- "code": "EC",
633
- "dial_code": "+593",
634
- "regex": "^\\+593[0-9]{9}$",
635
- "placeholder": "+593 99 123 4567"
636
- },
637
- {
638
- "name": "Egypt",
639
- "flag": "🇪🇬",
640
- "code": "EG",
641
- "dial_code": "+20",
642
- "regex": "^\\+20[0-9]{10}$",
643
- "placeholder": "+20 100 123 4567"
644
- },
645
- {
646
- "name": "El Salvador",
647
- "flag": "🇸🇻",
648
- "code": "SV",
649
- "dial_code": "+503",
650
- "regex": "^\\+503[0-9]{8}$",
651
- "placeholder": "+503 7123 4567"
652
- },
653
- {
654
- "name": "Equatorial Guinea",
655
- "flag": "🇬🇶",
656
- "code": "GQ",
657
- "dial_code": "+240",
658
- "regex": "^\\+240[0-9]{9}$",
659
- "placeholder": "+240 222 123 456"
660
- },
661
- {
662
- "name": "Eritrea",
663
- "flag": "🇪🇷",
664
- "code": "ER",
665
- "dial_code": "+291",
666
- "regex": "^\\+291[0-9]{7}$",
667
- "placeholder": "+291 7 123 456"
668
- },
669
- {
670
- "name": "Estonia",
671
- "flag": "🇪🇪",
672
- "code": "EE",
673
- "dial_code": "+372",
674
- "regex": "^\\+372[0-9]{7,8}$",
675
- "placeholder": "+372 5123 456"
676
- },
677
- {
678
- "name": "Ethiopia",
679
- "flag": "🇪🇹",
680
- "code": "ET",
681
- "dial_code": "+251",
682
- "regex": "^\\+251[0-9]{9}$",
683
- "placeholder": "+251 91 123 4567"
684
- },
685
- {
686
- "name": "Falkland Islands (Malvinas)",
687
- "flag": "🇫🇰",
688
- "code": "FK",
689
- "dial_code": "+500",
690
- "regex": "^\\+500\\d{5}$",
691
- "placeholder": "+500 XXXXX",
692
- "example": "+500 12345"
693
- },
694
- {
695
- "name": "Faroe Islands",
696
- "flag": "🇫🇴",
697
- "code": "FO",
698
- "dial_code": "+298",
699
- "regex": "^\\+298[0-9]{6}$",
700
- "placeholder": "+298 123 456"
701
- },
702
- {
703
- "name": "Fiji",
704
- "flag": "🇫🇯",
705
- "code": "FJ",
706
- "dial_code": "+679",
707
- "regex": "^\\+679[0-9]{7,8}$",
708
- "placeholder": "+679 701 2345"
709
- },
710
- {
711
- "name": "Finland",
712
- "flag": "🇫🇮",
713
- "code": "FI",
714
- "dial_code": "+358",
715
- "regex": "^\\+358[0-9]{6,12}$",
716
- "placeholder": "+358 40 123 4567"
717
- },
718
- {
719
- "name": "France",
720
- "flag": "🇫🇷",
721
- "code": "FR",
722
- "dial_code": "+33",
723
- "regex": "^\\+33[0-9]{9}$",
724
- "placeholder": "+33 6 12 34 56 78"
725
- },
726
- {
727
- "name": "French Guiana",
728
- "flag": "🇬🇫",
729
- "code": "GF",
730
- "dial_code": "+594",
731
- "regex": "^\\+594[0-9]{9}$",
732
- "placeholder": "+594 694 12 34 56"
733
- },
734
- {
735
- "name": "French Polynesia",
736
- "flag": "🇵🇫",
737
- "code": "PF",
738
- "dial_code": "+689",
739
- "regex": "^\\+689[0-9]{8}$",
740
- "placeholder": "+689 87 12 34 56"
741
- },
742
- {
743
- "name": "French Southern Territories",
744
- "flag": "🇹🇫",
745
- "code": "TF",
746
- "dial_code": "+262",
747
- "regex": "^\\+262[0-9]{9}$",
748
- "placeholder": "+262 639 12 34 56"
749
- },
750
- {
751
- "name": "Gabon",
752
- "flag": "🇬🇦",
753
- "code": "GA",
754
- "dial_code": "+241",
755
- "regex": "^\\+241[0-9]{8}$",
756
- "placeholder": "+241 06 12 34 56"
757
- },
758
- {
759
- "name": "Gambia",
760
- "flag": "🇬🇲",
761
- "code": "GM",
762
- "dial_code": "+220",
763
- "regex": "^\\+220[0-9]{7}$",
764
- "placeholder": "+220 301 2345"
765
- },
766
- {
767
- "name": "Georgia",
768
- "flag": "🇬🇪",
769
- "code": "GE",
770
- "dial_code": "+995",
771
- "regex": "^\\+995[0-9]{9}$",
772
- "placeholder": "+995 555 12 34 56"
773
- },
774
- {
775
- "name": "Germany",
776
- "flag": "🇩🇪",
777
- "code": "DE",
778
- "dial_code": "+49",
779
- "regex": "^\\+49[0-9]{10,11}$",
780
- "placeholder": "+49 151 1234 5678"
781
- },
782
- {
783
- "name": "Ghana",
784
- "flag": "🇬🇭",
785
- "code": "GH",
786
- "dial_code": "+233",
787
- "regex": "^\\+233[0-9]{9}$",
788
- "placeholder": "+233 24 123 4567"
789
- },
790
- {
791
- "name": "Gibraltar",
792
- "flag": "🇬🇮",
793
- "code": "GI",
794
- "dial_code": "+350",
795
- "regex": "^\\+350[0-9]{8}$",
796
- "placeholder": "+350 57123456"
797
- },
798
- {
799
- "name": "Greece",
800
- "flag": "🇬🇷",
801
- "code": "GR",
802
- "dial_code": "+30",
803
- "regex": "^\\+30[0-9]{10}$",
804
- "placeholder": "+30 691 234 5678"
805
- },
806
- {
807
- "name": "Greenland",
808
- "flag": "🇬🇱",
809
- "code": "GL",
810
- "dial_code": "+299",
811
- "regex": "^\\+299[0-9]{6}$",
812
- "placeholder": "+299 22 12 34"
813
- },
814
- {
815
- "name": "Grenada",
816
- "flag": "🇬🇩",
817
- "code": "GD",
818
- "dial_code": "+1473",
819
- "regex": "^\\+1473[0-9]{7}$",
820
- "placeholder": "+1473 403 1234"
821
- },
822
- {
823
- "name": "Guadeloupe",
824
- "code": "GP",
825
- "dial_code": "+590",
826
- "regex": "^\\+590[67]\\d{8}$",
827
- "placeholder": "+590 6XXXXXXXX",
828
- "format": "+590 XXX XX XX XX",
829
- "flag": "🇬🇵"
830
- },
831
- {
832
- "name": "Guam",
833
- "code": "GU",
834
- "dial_code": "+1671",
835
- "regex": "^\\+1671\\d{7}$",
836
- "placeholder": "+1671 XXXXXXX",
837
- "format": "+1671 XXX XXXX",
838
- "flag": "🇬🇺"
839
- },
840
- {
841
- "name": "Guatemala",
842
- "code": "GT",
843
- "dial_code": "+502",
844
- "regex": "^\\+502[2-9]\\d{7}$",
845
- "placeholder": "+502 8XXXXXXX",
846
- "format": "+502 XXXX XXXX",
847
- "flag": "🇬🇹"
848
- },
849
- {
850
- "name": "Guernsey",
851
- "code": "GG",
852
- "dial_code": "+44",
853
- "regex": "^\\+44[1487]\\d{9}$",
854
- "placeholder": "+44 1481 XXXXXX",
855
- "format": "+44 1481 XXXXXX",
856
- "flag": "🇬🇬"
857
- },
858
- {
859
- "name": "Guinea",
860
- "code": "GN",
861
- "dial_code": "+224",
862
- "regex": "^\\+224\\d{9}$",
863
- "placeholder": "+224 XXXXXXXXX",
864
- "format": "+224 XXX XXX XXX",
865
- "flag": "🇬🇳"
866
- },
867
- {
868
- "name": "Guinea-Bissau",
869
- "code": "GW",
870
- "dial_code": "+245",
871
- "regex": "^\\+245\\d{7}$",
872
- "placeholder": "+245 XXXXXXX",
873
- "format": "+245 XXX XXXX",
874
- "flag": "🇬🇼"
875
- },
876
- {
877
- "name": "Guyana",
878
- "code": "GY",
879
- "dial_code": "+592",
880
- "regex": "^\\+592[2-9]\\d{6}$",
881
- "placeholder": "+592 6XXXXXX",
882
- "format": "+592 XXX XXXX",
883
- "flag": "🇬🇾"
884
- },
885
- {
886
- "name": "Haiti",
887
- "code": "HT",
888
- "dial_code": "+509",
889
- "regex": "^\\+509[2-9]\\d{7}$",
890
- "placeholder": "+509 2XXXXXXX",
891
- "format": "+509 XXXX XXXX",
892
- "flag": "🇭🇹"
893
- },
894
- {
895
- "name": "Heard Island and Mcdonald Islands",
896
- "flag": "🇭🇲",
897
- "code": "HM",
898
- "dial_code": "+672",
899
- "regex": "^\\+672\\d{6}$",
900
- "placeholder": "+672 XXXXXX",
901
- "example": "+672 123456"
902
- },
903
- {
904
- "name": "Holy See (Vatican City State)",
905
- "flag": "🇻🇦",
906
- "code": "VA",
907
- "dial_code": "+379",
908
- "regex": "^\\+379\\d{10}$",
909
- "placeholder": "+379 XXXXXXXXXX",
910
- "example": "+379 0612345678"
911
- },
912
- {
913
- "name": "Honduras",
914
- "code": "HN",
915
- "dial_code": "+504",
916
- "regex": "^\\+504[2-9]\\d{7}$",
917
- "placeholder": "+504 9XXXXXXX",
918
- "format": "+504 XXXX XXXX",
919
- "flag": "🇭🇳"
920
- },
921
- {
922
- "name": "Hong Kong",
923
- "code": "HK",
924
- "dial_code": "+852",
925
- "regex": "^\\+852[2-9]\\d{7}$",
926
- "placeholder": "+852 5XXXXXXX",
927
- "format": "+852 XXXX XXXX",
928
- "flag": "🇭🇰"
929
- },
930
- {
931
- "name": "Hungary",
932
- "code": "HU",
933
- "dial_code": "+36",
934
- "regex": "^\\+36[1-9]\\d{7,8}$",
935
- "placeholder": "+36 30XXXXXXX",
936
- "format": "+36 XX XXX XXXX",
937
- "flag": "🇭🇺"
938
- },
939
- {
940
- "name": "Iceland",
941
- "code": "IS",
942
- "dial_code": "+354",
943
- "regex": "^\\+354\\d{7}$",
944
- "placeholder": "+354 XXXXXXX",
945
- "format": "+354 XXX XXXX",
946
- "flag": "🇮🇸"
947
- },
948
- {
949
- "name": "India",
950
- "code": "IN",
951
- "dial_code": "+91",
952
- "regex": "^\\+91[6789]\\d{9}$",
953
- "placeholder": "+91 9XXXXXXXXX",
954
- "format": "+91 XXXXX XXXXX",
955
- "flag": "🇮🇳"
956
- },
957
- {
958
- "name": "Indonesia",
959
- "code": "ID",
960
- "dial_code": "+62",
961
- "regex": "^\\+62[8]\\d{9,10}$",
962
- "placeholder": "+62 8XXXXXXXXX",
963
- "format": "+62 8XX XXXX XXXX",
964
- "flag": "🇮🇩"
965
- },
966
- {
967
- "name": "Iran, Islamic Republic of Persian Gulf",
968
- "flag": "🇮🇷",
969
- "code": "IR",
970
- "dial_code": "+98",
971
- "regex": "^\\+98[1-9]\\d{9}$",
972
- "placeholder": "+98 9XXXXXXXXX",
973
- "example": "+98 9123456789"
974
- },
975
- {
976
- "name": "Iraq",
977
- "code": "IQ",
978
- "dial_code": "+964",
979
- "regex": "^\\+964[7]\\d{9}$",
980
- "placeholder": "+964 7XXXXXXXXX",
981
- "format": "+964 7XX XXX XXXX",
982
- "flag": "🇮🇶"
983
- },
984
- {
985
- "name": "Ireland",
986
- "code": "IE",
987
- "dial_code": "+353",
988
- "regex": "^\\+353[1-9]\\d{8}$",
989
- "placeholder": "+353 8XXXXXXXX",
990
- "format": "+353 XX XXX XXXX",
991
- "flag": "🇮🇪"
992
- },
993
- {
994
- "name": "Isle of Man",
995
- "code": "IM",
996
- "dial_code": "+44",
997
- "regex": "^\\+44[1624]\\d{6}$",
998
- "placeholder": "+44 1624 XXXXXX",
999
- "format": "+44 1624 XXXXXX",
1000
- "flag": "🇮🇲"
1001
- },
1002
- {
1003
- "name": "Israel",
1004
- "code": "IL",
1005
- "dial_code": "+972",
1006
- "regex": "^\\+972[5-9]\\d{8}$",
1007
- "placeholder": "+972 5XXXXXXXX",
1008
- "format": "+972 5X XXX XXXX",
1009
- "flag": "🇮🇱"
1010
- },
1011
- {
1012
- "name": "Italy",
1013
- "code": "IT",
1014
- "dial_code": "+39",
1015
- "regex": "^\\+39[0-9]\\d{9}$",
1016
- "placeholder": "+39 3XXXXXXXXX",
1017
- "format": "+39 3XX XXX XXXX",
1018
- "flag": "🇮🇹"
1019
- },
1020
- {
1021
- "name": "Jamaica",
1022
- "code": "JM",
1023
- "dial_code": "+1876",
1024
- "regex": "^\\+1876\\d{7}$",
1025
- "placeholder": "+1876 XXXXXXX",
1026
- "format": "+1876 XXX XXXX",
1027
- "flag": "🇯🇲"
1028
- },
1029
- {
1030
- "name": "Japan",
1031
- "code": "JP",
1032
- "dial_code": "+81",
1033
- "regex": "^\\+81[0-9]\\d{9}$",
1034
- "placeholder": "+81 9XXXXXXXXX",
1035
- "format": "+81 XX XXXX XXXX",
1036
- "flag": "🇯🇵"
1037
- },
1038
- {
1039
- "name": "Jersey",
1040
- "code": "JE",
1041
- "dial_code": "+44",
1042
- "regex": "^\\+44[1534]\\d{6}$",
1043
- "placeholder": "+44 1534 XXXXXX",
1044
- "format": "+44 1534 XXXXXX",
1045
- "flag": "🇯🇪"
1046
- },
1047
- {
1048
- "name": "Jordan",
1049
- "code": "JO",
1050
- "dial_code": "+962",
1051
- "regex": "^\\+962[7]\\d{8}$",
1052
- "placeholder": "+962 7XXXXXXXX",
1053
- "format": "+962 7 XXXX XXXX",
1054
- "flag": "🇯🇴"
1055
- },
1056
- {
1057
- "name": "Kazakhstan",
1058
- "code": "KZ",
1059
- "dial_code": "+7",
1060
- "regex": "^\\+7[7]\\d{9}$",
1061
- "placeholder": "+7 7XXXXXXXXX",
1062
- "format": "+7 7XX XXX XXXX",
1063
- "flag": "🇰🇿"
1064
- },
1065
- {
1066
- "name": "Kenya",
1067
- "code": "KE",
1068
- "dial_code": "+254",
1069
- "regex": "^\\+254[7]\\d{8}$",
1070
- "placeholder": "+254 7XXXXXXXX",
1071
- "format": "+254 7XX XXX XXX",
1072
- "flag": "🇰🇪"
1073
- },
1074
- {
1075
- "name": "Kiribati",
1076
- "code": "KI",
1077
- "dial_code": "+686",
1078
- "regex": "^\\+686\\d{5}$",
1079
- "placeholder": "+686 XXXXX",
1080
- "format": "+686 XXXXX",
1081
- "flag": "🇰🇮"
1082
- },
1083
- {
1084
- "name": "Korea, Democratic People's Republic of Korea",
1085
- "flag": "🇰🇵",
1086
- "code": "KP",
1087
- "dial_code": "+850",
1088
- "regex": "^\\+850\\d{7,10}$",
1089
- "placeholder": "+850 XXXXXXXXXX",
1090
- "example": "+850 2123456789"
1091
- },
1092
- {
1093
- "name": "Korea, Republic of South Korea",
1094
- "flag": "🇰🇷",
1095
- "code": "KR",
1096
- "dial_code": "+82",
1097
- "regex": "^\\+82\\d{9,10}$",
1098
- "placeholder": "+82 10XXXXXXXX",
1099
- "example": "+82 1012345678"
1100
- },
1101
- {
1102
- "name": "Kosovo",
1103
- "code": "XK",
1104
- "dial_code": "+383",
1105
- "regex": "^\\+383[4-9]\\d{7}$",
1106
- "placeholder": "+383 4XXXXXXX",
1107
- "format": "+383 4X XXX XXX",
1108
- "flag": "🇽🇰"
1109
- },
1110
- {
1111
- "name": "Kuwait",
1112
- "code": "KW",
1113
- "dial_code": "+965",
1114
- "regex": "^\\+965[5-9]\\d{7}$",
1115
- "placeholder": "+965 5XXXXXXX",
1116
- "format": "+965 5XXX XXXX",
1117
- "flag": "🇰🇼"
1118
- },
1119
- {
1120
- "name": "Kyrgyzstan",
1121
- "code": "KG",
1122
- "dial_code": "+996",
1123
- "regex": "^\\+996[5-9]\\d{8}$",
1124
- "placeholder": "+996 5XXXXXXXX",
1125
- "format": "+996 XXX XXX XXX",
1126
- "flag": "🇰🇬"
1127
- },
1128
- {
1129
- "name": "Laos",
1130
- "code": "LA",
1131
- "dial_code": "+856",
1132
- "regex": "^\\+856[2]\\d{8}$",
1133
- "placeholder": "+856 2XXXXXXXX",
1134
- "format": "+856 20 XXX XXX",
1135
- "flag": "🇱🇦"
1136
- },
1137
- {
1138
- "name": "Latvia",
1139
- "code": "LV",
1140
- "dial_code": "+371",
1141
- "regex": "^\\+371[2]\\d{7}$",
1142
- "placeholder": "+371 2XXXXXXX",
1143
- "format": "+371 2XXX XXXX",
1144
- "flag": "🇱🇻"
1145
- },
1146
- {
1147
- "name": "Lebanon",
1148
- "code": "LB",
1149
- "dial_code": "+961",
1150
- "regex": "^\\+961[3-9]\\d{6,7}$",
1151
- "placeholder": "+961 3XXXXXX",
1152
- "format": "+961 3 XXX XXX",
1153
- "flag": "🇱🇧"
1154
- },
1155
- {
1156
- "name": "Lesotho",
1157
- "code": "LS",
1158
- "dial_code": "+266",
1159
- "regex": "^\\+266[2-9]\\d{7}$",
1160
- "placeholder": "+266 5XXXXXXX",
1161
- "format": "+266 5XXX XXXX",
1162
- "flag": "🇱🇸"
1163
- },
1164
- {
1165
- "name": "Liberia",
1166
- "code": "LR",
1167
- "dial_code": "+231",
1168
- "regex": "^\\+231[4-9]\\d{7}$",
1169
- "placeholder": "+231 4XXXXXXX",
1170
- "format": "+231 XX XXX XXX",
1171
- "flag": "🇱🇷"
1172
- },
1173
- {
1174
- "name": "Libyan Arab Jamahiriya",
1175
- "flag": "🇱🇾",
1176
- "code": "LY",
1177
- "dial_code": "+218",
1178
- "regex": "^\\+218[89]\\d{8}$",
1179
- "placeholder": "+218 9XXXXXXXX",
1180
- "example": "+218 912345678"
1181
- },
1182
- {
1183
- "name": "Liechtenstein",
1184
- "code": "LI",
1185
- "dial_code": "+423",
1186
- "regex": "^\\+423[2-9]\\d{6}$",
1187
- "placeholder": "+423 6XXXXXX",
1188
- "format": "+423 XXX XXXX",
1189
- "flag": "🇱🇮"
1190
- },
1191
- {
1192
- "name": "Lithuania",
1193
- "code": "LT",
1194
- "dial_code": "+370",
1195
- "regex": "^\\+370[6]\\d{7}$",
1196
- "placeholder": "+370 6XXXXXXX",
1197
- "format": "+370 6XX XXXXX",
1198
- "flag": "🇱🇹"
1199
- },
1200
- {
1201
- "name": "Luxembourg",
1202
- "code": "LU",
1203
- "dial_code": "+352",
1204
- "regex": "^\\+352[2689]\\d{7}$",
1205
- "placeholder": "+352 6XXXXXXX",
1206
- "format": "+352 XXX XXX XXX",
1207
- "flag": "🇱🇺"
1208
- },
1209
- {
1210
- "name": "Macao",
1211
- "code": "MO",
1212
- "dial_code": "+853",
1213
- "regex": "^\\+853[6]\\d{7}$",
1214
- "placeholder": "+853 6XXXXXXX",
1215
- "format": "+853 XXXX XXXX",
1216
- "flag": "🇲🇴"
1217
- },
1218
- {
1219
- "name": "Macedonia",
1220
- "code": "MK",
1221
- "dial_code": "+389",
1222
- "regex": "^\\+389[27]\\d{7}$",
1223
- "placeholder": "+389 7XXXXXXX",
1224
- "format": "+389 XX XXX XXX",
1225
- "flag": "🇲🇰"
1226
- },
1227
- {
1228
- "name": "Madagascar",
1229
- "code": "MG",
1230
- "dial_code": "+261",
1231
- "regex": "^\\+261[3]\\d{8}$",
1232
- "placeholder": "+261 3XXXXXXXX",
1233
- "format": "+261 3X XXX XXXX",
1234
- "flag": "🇲🇬"
1235
- },
1236
- {
1237
- "name": "Malawi",
1238
- "code": "MW",
1239
- "dial_code": "+265",
1240
- "regex": "^\\+265[1-9]\\d{7}$",
1241
- "placeholder": "+265 9XXXXXXX",
1242
- "format": "+265 9XX XXX XXX",
1243
- "flag": "🇲🇼"
1244
- },
1245
- {
1246
- "name": "Malaysia",
1247
- "code": "MY",
1248
- "dial_code": "+60",
1249
- "regex": "^\\+60[1-9]\\d{7,9}$",
1250
- "placeholder": "+60 1XXXXXXXXX",
1251
- "format": "+60 1X XXXX XXXX",
1252
- "flag": "🇲🇾"
1253
- },
1254
- {
1255
- "name": "Maldives",
1256
- "code": "MV",
1257
- "dial_code": "+960",
1258
- "regex": "^\\+960[7-9]\\d{6}$",
1259
- "placeholder": "+960 7XXXXXX",
1260
- "format": "+960 XXX XXXX",
1261
- "flag": "🇲🇻"
1262
- },
1263
- {
1264
- "name": "Mali",
1265
- "code": "ML",
1266
- "dial_code": "+223",
1267
- "regex": "^\\+223[6-9]\\d{7}$",
1268
- "placeholder": "+223 7XXXXXXX",
1269
- "format": "+223 XX XX XX XX",
1270
- "flag": "🇲🇱"
1271
- },
1272
- {
1273
- "name": "Malta",
1274
- "code": "MT",
1275
- "dial_code": "+356",
1276
- "regex": "^\\+356[2379]\\d{7}$",
1277
- "placeholder": "+356 7XXXXXXX",
1278
- "format": "+356 XXXX XXXX",
1279
- "flag": "🇲🇹"
1280
- },
1281
- {
1282
- "name": "Marshall Islands",
1283
- "code": "MH",
1284
- "dial_code": "+692",
1285
- "regex": "^\\+692[2-9]\\d{6}$",
1286
- "placeholder": "+692 2XXXXXX",
1287
- "format": "+692 XXX XXXX",
1288
- "flag": "🇲🇭"
1289
- },
1290
- {
1291
- "name": "Martinique",
1292
- "code": "MQ",
1293
- "dial_code": "+596",
1294
- "regex": "^\\+596[6-7]\\d{8}$",
1295
- "placeholder": "+596 6XXXXXXXX",
1296
- "format": "+596 XXX XX XX XX",
1297
- "flag": "🇲🇶"
1298
- },
1299
- {
1300
- "name": "Mauritania",
1301
- "code": "MR",
1302
- "dial_code": "+222",
1303
- "regex": "^\\+222[2-9]\\d{7}$",
1304
- "placeholder": "+222 4XXXXXXX",
1305
- "format": "+222 XXXX XXXX",
1306
- "flag": "🇲🇷"
1307
- },
1308
- {
1309
- "name": "Mauritius",
1310
- "code": "MU",
1311
- "dial_code": "+230",
1312
- "regex": "^\\+230[2-9]\\d{6}$",
1313
- "placeholder": "+230 5XXXXXX",
1314
- "format": "+230 XXXX XXXX",
1315
- "flag": "🇲🇺"
1316
- },
1317
- {
1318
- "name": "Mayotte",
1319
- "code": "YT",
1320
- "dial_code": "+262",
1321
- "regex": "^\\+262[2-9]\\d{7}$",
1322
- "placeholder": "+262 6XXXXXXX",
1323
- "format": "+262 XXX XX XX XX",
1324
- "flag": "🇾🇹"
1325
- },
1326
- {
1327
- "name": "Mexico",
1328
- "code": "MX",
1329
- "dial_code": "+52",
1330
- "regex": "^\\+52[1]\\d{10}$",
1331
- "placeholder": "+52 1XXXXXXXXXX",
1332
- "format": "+52 1 XXX XXX XXXX",
1333
- "flag": "🇲🇽"
1334
- },
1335
- {
1336
- "name": "Micronesia, Federated States of Micronesia",
1337
- "flag": "🇫🇲",
1338
- "code": "FM",
1339
- "dial_code": "+691",
1340
- "regex": "^\\+691[1-9]\\d{6}$",
1341
- "placeholder": "+691 XXXXXXX",
1342
- "example": "+691 3201234"
1343
- },
1344
- {
1345
- "name": "Moldova",
1346
- "code": "MD",
1347
- "dial_code": "+373",
1348
- "regex": "^\\+373[67]\\d{7}$",
1349
- "placeholder": "+373 6XXXXXXX",
1350
- "format": "+373 XX XXX XXX",
1351
- "flag": "🇲🇩"
1352
- },
1353
- {
1354
- "name": "Monaco",
1355
- "code": "MC",
1356
- "dial_code": "+377",
1357
- "regex": "^\\+377[4-9]\\d{7,8}$",
1358
- "placeholder": "+377 6XXXXXXXX",
1359
- "format": "+377 6 XX XX XX XX",
1360
- "flag": "🇲🇨"
1361
- },
1362
- {
1363
- "name": "Mongolia",
1364
- "code": "MN",
1365
- "dial_code": "+976",
1366
- "regex": "^\\+976[5-9]\\d{7}$",
1367
- "placeholder": "+976 8XXXXXXX",
1368
- "format": "+976 XX XX XXXX",
1369
- "flag": "🇲🇳"
1370
- },
1371
- {
1372
- "name": "Montenegro",
1373
- "code": "ME",
1374
- "dial_code": "+382",
1375
- "regex": "^\\+382[2-9]\\d{7,8}$",
1376
- "placeholder": "+382 6XXXXXXXX",
1377
- "format": "+382 6X XXX XXX",
1378
- "flag": "🇲🇪"
1379
- },
1380
- {
1381
- "name": "Montserrat",
1382
- "code": "MS",
1383
- "dial_code": "+1664",
1384
- "regex": "^\\+1664\\d{7}$",
1385
- "placeholder": "+1664 XXXXXXX",
1386
- "format": "+1664 XXX XXXX",
1387
- "flag": "🇲🇸"
1388
- },
1389
- {
1390
- "name": "Morocco",
1391
- "code": "MA",
1392
- "dial_code": "+212",
1393
- "regex": "^\\+212[5-9]\\d{8}$",
1394
- "placeholder": "+212 6XXXXXXXX",
1395
- "format": "+212 6XX XXX XXX",
1396
- "flag": "🇲🇦"
1397
- },
1398
- {
1399
- "name": "Mozambique",
1400
- "code": "MZ",
1401
- "dial_code": "+258",
1402
- "regex": "^\\+258[28]\\d{7}$",
1403
- "placeholder": "+258 8XXXXXXX",
1404
- "format": "+258 8X XXX XXXX",
1405
- "flag": "🇲🇿"
1406
- },
1407
- {
1408
- "name": "Myanmar",
1409
- "code": "MM",
1410
- "dial_code": "+95",
1411
- "regex": "^\\+95[4-9]\\d{8}$",
1412
- "placeholder": "+95 9XXXXXXXX",
1413
- "format": "+95 9 XXX XXX XXX",
1414
- "flag": "🇲🇲"
1415
- },
1416
- {
1417
- "name": "Namibia",
1418
- "code": "NA",
1419
- "dial_code": "+264",
1420
- "regex": "^\\+264[6-8]\\d{7,8}$",
1421
- "placeholder": "+264 81XXXXXXX",
1422
- "format": "+264 81 XXX XXXX",
1423
- "flag": "🇳🇦"
1424
- },
1425
- {
1426
- "name": "Nauru",
1427
- "code": "NR",
1428
- "dial_code": "+674",
1429
- "regex": "^\\+674[0-9]\\d{4}$",
1430
- "placeholder": "+674 XXXXX",
1431
- "format": "+674 XXX XXXX",
1432
- "flag": "🇳🇷"
1433
- },
1434
- {
1435
- "name": "Nepal",
1436
- "code": "NP",
1437
- "dial_code": "+977",
1438
- "regex": "^\\+977[9]\\d{9}$",
1439
- "placeholder": "+977 9XXXXXXXXX",
1440
- "format": "+977 98X XXX XXXX",
1441
- "flag": "🇳🇵"
1442
- },
1443
- {
1444
- "name": "Netherlands",
1445
- "code": "NL",
1446
- "dial_code": "+31",
1447
- "regex": "^\\+31[1-9]\\d{8}$",
1448
- "placeholder": "+31 6XXXXXXXX",
1449
- "format": "+31 6 XXXX XXXX",
1450
- "flag": "🇳🇱"
1451
- },
1452
- {
1453
- "name": "Netherlands Antilles",
1454
- "code": "AN",
1455
- "dial_code": "+599",
1456
- "regex": "^\\+599[9]\\d{6}$",
1457
- "placeholder": "+599 9XXXXXX",
1458
- "format": "+599 9XXX XXXX",
1459
- "flag": ""
1460
- },
1461
- {
1462
- "name": "New Caledonia",
1463
- "code": "NC",
1464
- "dial_code": "+687",
1465
- "regex": "^\\+687\\d{6}$",
1466
- "placeholder": "+687 XXXXXX",
1467
- "format": "+687 XX XX XX",
1468
- "flag": "🇳🇨"
1469
- },
1470
- {
1471
- "name": "New Zealand",
1472
- "code": "NZ",
1473
- "dial_code": "+64",
1474
- "regex": "^\\+64[2-9]\\d{7,9}$",
1475
- "placeholder": "+64 21XXXXXXX",
1476
- "format": "+64 21 XXX XXXX",
1477
- "flag": "🇳🇿"
1478
- },
1479
- {
1480
- "name": "Nicaragua",
1481
- "code": "NI",
1482
- "dial_code": "+505",
1483
- "regex": "^\\+505[5-8]\\d{7}$",
1484
- "placeholder": "+505 8XXXXXXX",
1485
- "format": "+505 XXXX XXXX",
1486
- "flag": "🇳🇮"
1487
- },
1488
- {
1489
- "name": "Niger",
1490
- "code": "NE",
1491
- "dial_code": "+227",
1492
- "regex": "^\\+227[0-9]\\d{7}$",
1493
- "placeholder": "+227 9XXXXXXX",
1494
- "format": "+227 XX XX XX XX",
1495
- "flag": "🇳🇪"
1496
- },
1497
- {
1498
- "name": "Nigeria",
1499
- "code": "NG",
1500
- "dial_code": "+234",
1501
- "regex": "^\\+234[789]\\d{9}$",
1502
- "placeholder": "+234 8XXXXXXXXX",
1503
- "format": "+234 8XX XXX XXXX",
1504
- "flag": "🇳🇬"
1505
- },
1506
- {
1507
- "name": "Niue",
1508
- "code": "NU",
1509
- "dial_code": "+683",
1510
- "regex": "^\\+683\\d{4}$",
1511
- "placeholder": "+683 XXXX",
1512
- "format": "+683 XXXX",
1513
- "flag": "🇳🇺"
1514
- },
1515
- {
1516
- "name": "Norfolk Island",
1517
- "code": "NF",
1518
- "dial_code": "+672",
1519
- "regex": "^\\+672[3]\\d{5}$",
1520
- "placeholder": "+672 3XXXXX",
1521
- "format": "+672 3 XX XXX",
1522
- "flag": "🇳🇫"
1523
- },
1524
- {
1525
- "name": "Northern Mariana Islands",
1526
- "code": "MP",
1527
- "dial_code": "+1670",
1528
- "regex": "^\\+1670\\d{7}$",
1529
- "placeholder": "+1670 XXXXXXX",
1530
- "format": "+1670 XXX XXXX",
1531
- "flag": "🇲🇵"
1532
- },
1533
- {
1534
- "name": "Norway",
1535
- "code": "NO",
1536
- "dial_code": "+47",
1537
- "regex": "^\\+47[2-9]\\d{7}$",
1538
- "placeholder": "+47 4XXXXXXX",
1539
- "format": "+47 XXX XX XXX",
1540
- "flag": "🇳🇴"
1541
- },
1542
- {
1543
- "name": "Oman",
1544
- "code": "OM",
1545
- "dial_code": "+968",
1546
- "regex": "^\\+968[79]\\d{7}$",
1547
- "placeholder": "+968 9XXXXXXX",
1548
- "format": "+968 9XXX XXXX",
1549
- "flag": "🇴🇲"
1550
- },
1551
- {
1552
- "name": "Pakistan",
1553
- "code": "PK",
1554
- "dial_code": "+92",
1555
- "regex": "^\\+92[3]\\d{9}$",
1556
- "placeholder": "+92 3XXXXXXXXX",
1557
- "format": "+92 3XX XXX XXXX",
1558
- "flag": "🇵🇰"
1559
- },
1560
- {
1561
- "name": "Palau",
1562
- "code": "PW",
1563
- "dial_code": "+680",
1564
- "regex": "^\\+680\\d{7}$",
1565
- "placeholder": "+680 XXXXXXX",
1566
- "format": "+680 XXX XXXX",
1567
- "flag": "🇵🇼"
1568
- },
1569
- {
1570
- "name": "Palestinian Territory, Occupied",
1571
- "flag": "🇵🇸",
1572
- "code": "PS",
1573
- "dial_code": "+970",
1574
- "regex": "^\\+970[59]\\d{8}$",
1575
- "placeholder": "+970 5XXXXXXXX",
1576
- "example": "+970 599123456"
1577
- },
1578
- {
1579
- "name": "Panama",
1580
- "code": "PA",
1581
- "dial_code": "+507",
1582
- "regex": "^\\+507[1-9]\\d{6}$",
1583
- "placeholder": "+507 6XXXXXX",
1584
- "format": "+507 XXXX XXXX",
1585
- "flag": "🇵🇦"
1586
- },
1587
- {
1588
- "name": "Papua New Guinea",
1589
- "code": "PG",
1590
- "dial_code": "+675",
1591
- "regex": "^\\+675[7]\\d{7}$",
1592
- "placeholder": "+675 7XXXXXXX",
1593
- "format": "+675 7XXX XXXX",
1594
- "flag": "🇵🇬"
1595
- },
1596
- {
1597
- "name": "Paraguay",
1598
- "code": "PY",
1599
- "dial_code": "+595",
1600
- "regex": "^\\+595[9]\\d{8}$",
1601
- "placeholder": "+595 9XXXXXXXX",
1602
- "format": "+595 9XX XXX XXX",
1603
- "flag": "🇵🇾"
1604
- },
1605
- {
1606
- "name": "Peru",
1607
- "code": "PE",
1608
- "dial_code": "+51",
1609
- "regex": "^\\+51[9]\\d{8}$",
1610
- "placeholder": "+51 9XXXXXXXX",
1611
- "format": "+51 9XX XXX XXX",
1612
- "flag": "🇵🇪"
1613
- },
1614
- {
1615
- "name": "Philippines",
1616
- "code": "PH",
1617
- "dial_code": "+63",
1618
- "regex": "^\\+63[9]\\d{9}$",
1619
- "placeholder": "+63 9XXXXXXXXX",
1620
- "format": "+63 9XX XXX XXXX",
1621
- "flag": "🇵🇭"
1622
- },
1623
- {
1624
- "name": "Pitcairn",
1625
- "code": "PN",
1626
- "dial_code": "+64",
1627
- "regex": "^\\+64\\d{10}$",
1628
- "placeholder": "+64 XXXXXXXXXX",
1629
- "format": "+64 XXX XXX XXXX",
1630
- "flag": "🇵🇳"
1631
- },
1632
- {
1633
- "name": "Poland",
1634
- "code": "PL",
1635
- "dial_code": "+48",
1636
- "regex": "^\\+48[1-9]\\d{8}$",
1637
- "placeholder": "+48 5XXXXXXXX",
1638
- "format": "+48 5XX XXX XXX",
1639
- "flag": "🇵🇱"
1640
- },
1641
- {
1642
- "name": "Portugal",
1643
- "code": "PT",
1644
- "dial_code": "+351",
1645
- "regex": "^\\+351[1-9]\\d{8}$",
1646
- "placeholder": "+351 9XXXXXXXX",
1647
- "format": "+351 9XX XXX XXX",
1648
- "flag": "🇵🇹"
1649
- },
1650
- {
1651
- "name": "Puerto Rico",
1652
- "code": "PR",
1653
- "dial_code": "+1939",
1654
- "regex": "^\\+1939\\d{7}$",
1655
- "placeholder": "+1939 XXXXXXX",
1656
- "format": "+1939 XXX XXXX",
1657
- "flag": "🇵🇷"
1658
- },
1659
- {
1660
- "name": "Qatar",
1661
- "code": "QA",
1662
- "dial_code": "+974",
1663
- "regex": "^\\+974[3-7]\\d{7}$",
1664
- "placeholder": "+974 3XXXXXXX",
1665
- "format": "+974 XXXX XXXX",
1666
- "flag": "🇶🇦"
1667
- },
1668
- {
1669
- "name": "Romania",
1670
- "code": "RO",
1671
- "dial_code": "+40",
1672
- "regex": "^\\+40[7]\\d{8}$",
1673
- "placeholder": "+40 7XXXXXXXX",
1674
- "format": "+40 7XX XXX XXX",
1675
- "flag": "🇷🇴"
1676
- },
1677
- {
1678
- "name": "Russia",
1679
- "code": "RU",
1680
- "dial_code": "+7",
1681
- "regex": "^\\+7[9]\\d{9}$",
1682
- "placeholder": "+7 9XXXXXXXXX",
1683
- "format": "+7 9XX XXX XX XX",
1684
- "flag": "🇷🇺"
1685
- },
1686
- {
1687
- "name": "Rwanda",
1688
- "code": "RW",
1689
- "dial_code": "+250",
1690
- "regex": "^\\+250[7]\\d{8}$",
1691
- "placeholder": "+250 7XXXXXXXX",
1692
- "format": "+250 7XX XXX XXX",
1693
- "flag": "🇷🇼"
1694
- },
1695
- {
1696
- "name": "Reunion",
1697
- "code": "RE",
1698
- "dial_code": "+262",
1699
- "regex": "^\\+262[6-7]\\d{8}$",
1700
- "placeholder": "+262 6XXXXXXXX",
1701
- "format": "+262 6XX XX XX XX",
1702
- "flag": "🇷🇪"
1703
- },
1704
- {
1705
- "name": "Saint Barthelemy",
1706
- "code": "BL",
1707
- "dial_code": "+590",
1708
- "regex": "^\\+590[6-7]\\d{8}$",
1709
- "placeholder": "+590 6XXXXXXXX",
1710
- "format": "+590 6XX XX XX XX",
1711
- "flag": "🇧🇱"
1712
- },
1713
- {
1714
- "name": "Saint Helena, Ascension and Tristan Da Cunha",
1715
- "flag": "🇸🇭",
1716
- "code": "SH",
1717
- "dial_code": "+290",
1718
- "regex": "^\\+290\\d{4}$",
1719
- "placeholder": "+290 XXXX",
1720
- "example": "+290 2380"
1721
- },
1722
- {
1723
- "name": "Saint Kitts and Nevis",
1724
- "code": "KN",
1725
- "dial_code": "+1869",
1726
- "regex": "^\\+1869\\d{7}$",
1727
- "placeholder": "+1869 XXXXXXX",
1728
- "format": "+1869 XXX XXXX",
1729
- "flag": "🇰🇳"
1730
- },
1731
- {
1732
- "name": "Saint Lucia",
1733
- "code": "LC",
1734
- "dial_code": "+1758",
1735
- "regex": "^\\+1758\\d{7}$",
1736
- "placeholder": "+1758 XXXXXXX",
1737
- "format": "+1758 XXX XXXX",
1738
- "flag": "🇱🇨"
1739
- },
1740
- {
1741
- "name": "Saint Martin",
1742
- "code": "MF",
1743
- "dial_code": "+590",
1744
- "regex": "^\\+590[6-7]\\d{8}$",
1745
- "placeholder": "+590 6XXXXXXXX",
1746
- "format": "+590 6XX XX XX XX",
1747
- "flag": "🇲🇫"
1748
- },
1749
- {
1750
- "name": "Saint Pierre and Miquelon",
1751
- "code": "PM",
1752
- "dial_code": "+508",
1753
- "regex": "^\\+508\\d{6}$",
1754
- "placeholder": "+508 XXXXXX",
1755
- "example": "+508 412345",
1756
- "flag": "🇵🇲"
1757
- },
1758
- {
1759
- "name": "Saint Vincent and the Grenadines",
1760
- "code": "VC",
1761
- "dial_code": "+1784",
1762
- "regex": "^\\+1784\\d{7}$",
1763
- "placeholder": "+1784 XXXXXXX",
1764
- "example": "+1784 4561234",
1765
- "flag": "🇻🇨"
1766
- },
1767
- {
1768
- "name": "Samoa",
1769
- "code": "WS",
1770
- "dial_code": "+685",
1771
- "regex": "^\\+685\\d{5,7}$",
1772
- "placeholder": "+685 XXXXXX",
1773
- "example": "+685 721234",
1774
- "flag": "🇼🇸"
1775
- },
1776
- {
1777
- "name": "San Marino",
1778
- "code": "SM",
1779
- "dial_code": "+378",
1780
- "regex": "^\\+378\\d{6,10}$",
1781
- "placeholder": "+378 XXXXXXXX",
1782
- "example": "+378 0549123456",
1783
- "flag": "🇸🇲"
1784
- },
1785
- {
1786
- "name": "Sao Tome and Principe",
1787
- "code": "ST",
1788
- "dial_code": "+239",
1789
- "regex": "^\\+239\\d{7}$",
1790
- "placeholder": "+239 XXXXXXX",
1791
- "example": "+239 9912345",
1792
- "flag": "🇸🇹"
1793
- },
1794
- {
1795
- "name": "Saudi Arabia",
1796
- "code": "SA",
1797
- "dial_code": "+966",
1798
- "regex": "^\\+966\\d{9}$",
1799
- "placeholder": "+966 5XXXXXXXX",
1800
- "example": "+966 512345678",
1801
- "flag": "🇸🇦"
1802
- },
1803
- {
1804
- "name": "Senegal",
1805
- "code": "SN",
1806
- "dial_code": "+221",
1807
- "regex": "^\\+221\\d{9}$",
1808
- "placeholder": "+221 7XXXXXXXX",
1809
- "example": "+221 771234567",
1810
- "flag": "🇸🇳"
1811
- },
1812
- {
1813
- "name": "Serbia",
1814
- "code": "RS",
1815
- "dial_code": "+381",
1816
- "regex": "^\\+381\\d{8,9}$",
1817
- "placeholder": "+381 6XXXXXXXX",
1818
- "example": "+381 601234567",
1819
- "flag": "🇷🇸"
1820
- },
1821
- {
1822
- "name": "Seychelles",
1823
- "code": "SC",
1824
- "dial_code": "+248",
1825
- "regex": "^\\+248\\d{7}$",
1826
- "placeholder": "+248 XXXXXXX",
1827
- "example": "+248 2512345",
1828
- "flag": "🇸🇨"
1829
- },
1830
- {
1831
- "name": "Sierra Leone",
1832
- "code": "SL",
1833
- "dial_code": "+232",
1834
- "regex": "^\\+232\\d{8}$",
1835
- "placeholder": "+232 7XXXXXXX",
1836
- "example": "+232 76123456",
1837
- "flag": "🇸🇱"
1838
- },
1839
- {
1840
- "name": "Singapore",
1841
- "code": "SG",
1842
- "dial_code": "+65",
1843
- "regex": "^\\+65\\d{8}$",
1844
- "placeholder": "+65 8XXXXXXX",
1845
- "example": "+65 81234567",
1846
- "flag": "🇸🇬"
1847
- },
1848
- {
1849
- "name": "Slovakia",
1850
- "code": "SK",
1851
- "dial_code": "+421",
1852
- "regex": "^\\+421\\d{9}$",
1853
- "placeholder": "+421 9XXXXXXXX",
1854
- "example": "+421 912345678",
1855
- "flag": "🇸🇰"
1856
- },
1857
- {
1858
- "name": "Slovenia",
1859
- "code": "SI",
1860
- "dial_code": "+386",
1861
- "regex": "^\\+386\\d{8}$",
1862
- "placeholder": "+386 3XXXXXXX",
1863
- "example": "+386 31234567",
1864
- "flag": "🇸🇮"
1865
- },
1866
- {
1867
- "name": "Solomon Islands",
1868
- "code": "SB",
1869
- "dial_code": "+677",
1870
- "regex": "^\\+677\\d{5,7}$",
1871
- "placeholder": "+677 7XXXXX",
1872
- "example": "+677 7123456",
1873
- "flag": "🇸🇧"
1874
- },
1875
- {
1876
- "name": "Somalia",
1877
- "code": "SO",
1878
- "dial_code": "+252",
1879
- "regex": "^\\+252\\d{8}$",
1880
- "placeholder": "+252 6XXXXXXX",
1881
- "example": "+252 61234567",
1882
- "flag": "🇸🇴"
1883
- },
1884
- {
1885
- "name": "South Africa",
1886
- "code": "ZA",
1887
- "dial_code": "+27",
1888
- "regex": "^\\+27\\d{9}$",
1889
- "placeholder": "+27 8XXXXXXXX",
1890
- "example": "+27 831234567",
1891
- "flag": "🇿🇦"
1892
- },
1893
- {
1894
- "name": "South Sudan",
1895
- "code": "SS",
1896
- "dial_code": "+211",
1897
- "regex": "^\\+211\\d{9}$",
1898
- "placeholder": "+211 9XXXXXXXX",
1899
- "example": "+211 977123456",
1900
- "flag": "🇸🇸"
1901
- },
1902
- {
1903
- "name": "South Georgia and the South Sandwich Islands",
1904
- "flag": "🇬🇸",
1905
- "code": "GS",
1906
- "dial_code": "+500",
1907
- "regex": "^\\+500\\d{5}$",
1908
- "placeholder": "+500 XXXXX",
1909
- "example": "+500 12345"
1910
- },
1911
- {
1912
- "name": "Spain",
1913
- "code": "ES",
1914
- "dial_code": "+34",
1915
- "regex": "^\\+34\\d{9}$",
1916
- "placeholder": "+34 6XXXXXXXX",
1917
- "example": "+34 612345678",
1918
- "flag": "🇪🇸"
1919
- },
1920
- {
1921
- "name": "Sri Lanka",
1922
- "code": "LK",
1923
- "dial_code": "+94",
1924
- "regex": "^\\+94\\d{9}$",
1925
- "placeholder": "+94 7XXXXXXXX",
1926
- "example": "+94 712345678",
1927
- "flag": "🇱🇰"
1928
- },
1929
- {
1930
- "name": "Sudan",
1931
- "code": "SD",
1932
- "dial_code": "+249",
1933
- "regex": "^\\+249\\d{9}$",
1934
- "placeholder": "+249 9XXXXXXXX",
1935
- "example": "+249 912345678",
1936
- "flag": "🇸🇩"
1937
- },
1938
- {
1939
- "name": "Suriname",
1940
- "code": "SR",
1941
- "dial_code": "+597",
1942
- "regex": "^\\+597\\d{6,7}$",
1943
- "placeholder": "+597 XXXXXXX",
1944
- "example": "+597 8123456",
1945
- "flag": "🇸🇷"
1946
- },
1947
- {
1948
- "name": "Svalbard and Jan Mayen",
1949
- "code": "SJ",
1950
- "dial_code": "+47",
1951
- "regex": "^\\+47\\d{8}$",
1952
- "placeholder": "+47 XXXXXXXX",
1953
- "example": "+47 41234567",
1954
- "flag": "🇸🇯"
1955
- },
1956
- {
1957
- "name": "Eswatini",
1958
- "code": "SZ",
1959
- "dial_code": "+268",
1960
- "regex": "^\\+268\\d{8}$",
1961
- "placeholder": "+268 7XXXXXXX",
1962
- "example": "+268 76123456",
1963
- "flag": "🇸🇿"
1964
- },
1965
- {
1966
- "name": "Sweden",
1967
- "code": "SE",
1968
- "dial_code": "+46",
1969
- "regex": "^\\+46\\d{7,10}$",
1970
- "placeholder": "+46 7XXXXXXXX",
1971
- "example": "+46 701234567",
1972
- "flag": "🇸🇪"
1973
- },
1974
- {
1975
- "name": "Switzerland",
1976
- "code": "CH",
1977
- "dial_code": "+41",
1978
- "regex": "^\\+41\\d{9}$",
1979
- "placeholder": "+41 7XXXXXXXX",
1980
- "example": "+41 781234567",
1981
- "flag": "🇨🇭"
1982
- },
1983
- {
1984
- "name": "Syrian Arab Republic",
1985
- "flag": "🇸🇾",
1986
- "code": "SY",
1987
- "dial_code": "+963",
1988
- "regex": "^\\+963[9]\\d{8}$",
1989
- "placeholder": "+963 9XXXXXXXX",
1990
- "example": "+963 991234567"
1991
- },
1992
- {
1993
- "name": "Taiwan",
1994
- "code": "TW",
1995
- "dial_code": "+886",
1996
- "regex": "^\\+886\\d{8,9}$",
1997
- "placeholder": "+886 9XXXXXXXX",
1998
- "example": "+886 912345678",
1999
- "flag": "🇹🇼"
2000
- },
2001
- {
2002
- "name": "Tajikistan",
2003
- "code": "TJ",
2004
- "dial_code": "+992",
2005
- "regex": "^\\+992\\d{9}$",
2006
- "placeholder": "+992 9XXXXXXXX",
2007
- "example": "+992 917123456",
2008
- "flag": "🇹🇯"
2009
- },
2010
- {
2011
- "name": "Tanzania, United Republic of Tanzania",
2012
- "flag": "🇹🇿",
2013
- "code": "TZ",
2014
- "dial_code": "+255",
2015
- "regex": "^\\+255[67]\\d{8}$",
2016
- "placeholder": "+255 7XXXXXXXX",
2017
- "example": "+255 712345678"
2018
- },
2019
- {
2020
- "name": "Thailand",
2021
- "code": "TH",
2022
- "dial_code": "+66",
2023
- "regex": "^\\+66\\d{8,9}$",
2024
- "placeholder": "+66 8XXXXXXXX",
2025
- "example": "+66 812345678",
2026
- "flag": "🇹🇭"
2027
- },
2028
- {
2029
- "name": "Timor-Leste",
2030
- "code": "TL",
2031
- "dial_code": "+670",
2032
- "regex": "^\\+670\\d{8}$",
2033
- "placeholder": "+670 7XXXXXXX",
2034
- "example": "+670 77123456",
2035
- "flag": "🇹🇱"
2036
- },
2037
- {
2038
- "name": "Togo",
2039
- "code": "TG",
2040
- "dial_code": "+228",
2041
- "regex": "^\\+228\\d{8}$",
2042
- "placeholder": "+228 9XXXXXXX",
2043
- "example": "+228 91234567",
2044
- "flag": "🇹🇬"
2045
- },
2046
- {
2047
- "name": "Tokelau",
2048
- "code": "TK",
2049
- "dial_code": "+690",
2050
- "regex": "^\\+690\\d{4}$",
2051
- "placeholder": "+690 XXXX",
2052
- "example": "+690 1234",
2053
- "flag": "🇹🇰"
2054
- },
2055
- {
2056
- "name": "Tonga",
2057
- "code": "TO",
2058
- "dial_code": "+676",
2059
- "regex": "^\\+676\\d{5}$",
2060
- "placeholder": "+676 XXXXX",
2061
- "example": "+676 71234",
2062
- "flag": "🇹🇴"
2063
- },
2064
- {
2065
- "name": "Trinidad and Tobago",
2066
- "code": "TT",
2067
- "dial_code": "+1868",
2068
- "regex": "^\\+1868\\d{7}$",
2069
- "placeholder": "+1868 XXXXXXX",
2070
- "example": "+1868 2841234",
2071
- "flag": "🇹🇹"
2072
- },
2073
- {
2074
- "name": "Tunisia",
2075
- "code": "TN",
2076
- "dial_code": "+216",
2077
- "regex": "^\\+216\\d{8}$",
2078
- "placeholder": "+216 XXXXXXXX",
2079
- "example": "+216 20123456",
2080
- "flag": "🇹🇳"
2081
- },
2082
- {
2083
- "name": "Turkey",
2084
- "code": "TR",
2085
- "dial_code": "+90",
2086
- "regex": "^\\+90\\d{10}$",
2087
- "placeholder": "+90 5XXXXXXXXX",
2088
- "example": "+90 5312345678",
2089
- "flag": "🇹🇷"
2090
- },
2091
- {
2092
- "name": "Turkmenistan",
2093
- "code": "TM",
2094
- "dial_code": "+993",
2095
- "regex": "^\\+993\\d{8}$",
2096
- "placeholder": "+993 6XXXXXXX",
2097
- "example": "+993 61234567",
2098
- "flag": "🇹🇲"
2099
- },
2100
- {
2101
- "name": "Turks and Caicos Islands",
2102
- "code": "TC",
2103
- "dial_code": "+1649",
2104
- "regex": "^\\+1649\\d{7}$",
2105
- "placeholder": "+1649 XXXXXXX",
2106
- "example": "+1649 2311234",
2107
- "flag": "🇹🇨"
2108
- },
2109
- {
2110
- "name": "Tuvalu",
2111
- "code": "TV",
2112
- "dial_code": "+688",
2113
- "regex": "^\\+688\\d{5}$",
2114
- "placeholder": "+688 XXXXX",
2115
- "example": "+688 20123",
2116
- "flag": "🇹🇻"
2117
- },
2118
- {
2119
- "name": "Uganda",
2120
- "code": "UG",
2121
- "dial_code": "+256",
2122
- "regex": "^\\+256\\d{9}$",
2123
- "placeholder": "+256 7XXXXXXXX",
2124
- "example": "+256 712345678",
2125
- "flag": "🇺🇬"
2126
- },
2127
- {
2128
- "name": "Ukraine",
2129
- "code": "UA",
2130
- "dial_code": "+380",
2131
- "regex": "^\\+380\\d{9}$",
2132
- "placeholder": "+380 9XXXXXXXX",
2133
- "example": "+380 931234567",
2134
- "flag": "🇺🇦"
2135
- },
2136
- {
2137
- "name": "United Arab Emirates",
2138
- "code": "AE",
2139
- "dial_code": "+971",
2140
- "regex": "^\\+971\\d{9}$",
2141
- "placeholder": "+971 5XXXXXXXX",
2142
- "example": "+971 501234567",
2143
- "flag": "🇦🇪"
2144
- },
2145
- {
2146
- "name": "United Kingdom",
2147
- "flag": "🇬🇧",
2148
- "code": "GB",
2149
- "dial_code": "+44",
2150
- "regex": "^\\+44[0-9]{10}$",
2151
- "placeholder": "+44 7123 456 789"
2152
- },
2153
- {
2154
- "name": "United States",
2155
- "flag": "🇺🇸",
2156
- "code": "US",
2157
- "dial_code": "+1",
2158
- "regex": "^\\+1[0-9]{10}$",
2159
- "placeholder": "+1 213 123 4567"
2160
- },
2161
- {
2162
- "name": "Uruguay",
2163
- "code": "UY",
2164
- "dial_code": "+598",
2165
- "regex": "^\\+598\\d{8}$",
2166
- "placeholder": "+598 9XXXXXXX",
2167
- "example": "+598 91234567",
2168
- "flag": "🇺🇾"
2169
- },
2170
- {
2171
- "name": "Uzbekistan",
2172
- "code": "UZ",
2173
- "dial_code": "+998",
2174
- "regex": "^\\+998\\d{9}$",
2175
- "placeholder": "+998 9XXXXXXXX",
2176
- "example": "+998 901234567",
2177
- "flag": "🇺🇿"
2178
- },
2179
- {
2180
- "name": "Vanuatu",
2181
- "code": "VU",
2182
- "dial_code": "+678",
2183
- "regex": "^\\+678\\d{5,7}$",
2184
- "placeholder": "+678 XXXXXX",
2185
- "example": "+678 591234",
2186
- "flag": "🇻🇺"
2187
- },
2188
- {
2189
- "name": "Venezuela, Bolivarian Republic of Venezuela",
2190
- "flag": "🇻🇪",
2191
- "code": "VE",
2192
- "dial_code": "+58",
2193
- "regex": "^\\+58[24]\\d{9}$",
2194
- "placeholder": "+58 4XXXXXXXXX",
2195
- "example": "+58 4121234567"
2196
- },
2197
- {
2198
- "name": "Vietnam",
2199
- "code": "VN",
2200
- "dial_code": "+84",
2201
- "regex": "^\\+84\\d{9,10}$",
2202
- "placeholder": "+84 9XXXXXXXX",
2203
- "example": "+84 912345678",
2204
- "flag": "🇻🇳"
2205
- },
2206
- {
2207
- "name": "Virgin Islands, British",
2208
- "flag": "🇻🇬",
2209
- "code": "VG",
2210
- "dial_code": "+1284",
2211
- "regex": "^\\+1284\\d{7}$",
2212
- "placeholder": "+1284 XXXXXXX",
2213
- "example": "+1284 3001234"
2214
- },
2215
- {
2216
- "name": "Virgin Islands, U.S.",
2217
- "flag": "🇻🇮",
2218
- "code": "VI",
2219
- "dial_code": "+1340",
2220
- "regex": "^\\+1340\\d{7}$",
2221
- "placeholder": "+1340 XXXXXXX",
2222
- "example": "+1340 7741234"
2223
- },
2224
- {
2225
- "name": "Wallis and Futuna",
2226
- "code": "WF",
2227
- "dial_code": "+681",
2228
- "regex": "^\\+681\\d{6}$",
2229
- "placeholder": "+681 XXXXXX",
2230
- "example": "+681 501234",
2231
- "flag": "🇼🇫"
2232
- },
2233
- {
2234
- "name": "Yemen",
2235
- "code": "YE",
2236
- "dial_code": "+967",
2237
- "regex": "^\\+967\\d{8,9}$",
2238
- "placeholder": "+967 7XXXXXXXX",
2239
- "example": "+967 712345678",
2240
- "flag": "🇾🇪"
2241
- },
2242
- {
2243
- "name": "Zambia",
2244
- "code": "ZM",
2245
- "dial_code": "+260",
2246
- "regex": "^\\+260\\d{9}$",
2247
- "placeholder": "+260 9XXXXXXXX",
2248
- "example": "+260 971234567",
2249
- "flag": "🇿🇲"
2250
- },
2251
- {
2252
- "name": "Zimbabwe",
2253
- "flag": "🇿🇼",
2254
- "code": "ZW",
2255
- "dial_code": "+263",
2256
- "regex": "^\\+263[0-9]{9}$",
2257
- "placeholder": "+263 71 234 5678"
2258
- }
2259
- ];
2260
- filteredCountries;
2261
- selectedCountry;
2262
- showCountryDropdown = false;
2263
- countrySearch = '';
2264
- subscription;
2265
- // Internal state
2266
- viewEdit = false;
2267
- originalValue; // To store the original value when entering view edit mode
2268
- isSaveHovered = false;
2269
- isDiscardHovered = false;
2270
- constructor(elementRef, changeService, dataService) {
2271
- this.elementRef = elementRef;
2272
- this.changeService = changeService;
2273
- this.dataService = dataService;
2274
- }
2275
- hasEmittedRef = false;
2276
- ngAfterViewInit() {
2277
- if (this.type === 'location' &&
2278
- this.inputRef &&
2279
- !this.hasEmittedRef) {
2280
- this.nativeInputRef.emit(this.inputRef);
2281
- this.hasEmittedRef = true;
2282
- }
2283
- }
2284
- ngOnChanges(changes) {
2285
- if (changes['mode']) {
2286
- this.viewEdit = false;
2287
- this.updateControlState();
2288
- }
2289
- if (changes['value']) {
2290
- this.writeValue(changes['value'].currentValue);
2291
- }
2292
- if (this.confPass && changes['confPassVal'] && !changes['confPassVal'].firstChange) {
2293
- this.value = ''; // Reset input value
2294
- }
2295
- if (changes['type']) {
2296
- this.setupValidators();
2297
- }
2298
- if (changes['type'] && changes['type'].currentValue === 'location') {
2299
- this.hasEmittedRef = false;
2300
- }
2301
- }
2302
- ngOnInit() {
2303
- // SKS28FEB25 default country set
2304
- this.selectedCountry = this.countries.find(c => c.code === 'IN') || this.countries[0];
2305
- this.filteredCountries = [...this.countries];
2306
- const validators = [];
2307
- if (this.required)
2308
- validators.push(Validators.required);
2309
- if (this.minLength)
2310
- validators.push(Validators.minLength(this.minLength));
2311
- if (this.pattern)
2312
- validators.push(Validators.pattern(this.pattern));
2313
- if (this.maxLength)
2314
- validators.push(Validators.maxLength(this.maxLength));
2315
- if (this.confPass)
2316
- validators.push(this.passwordMatchValidator());
2317
- this.control.setValidators(validators);
2318
- if (this.type === 'otp') {
2319
- this.inputs.controls.forEach((control) => {
2320
- control.setValidators(validators);
2321
- });
2322
- }
2323
- else if (this.type === 'tel') {
2324
- this.control.setValidators([
2325
- Validators.pattern(this.removeDialCodeFromRegex(this.selectedCountry.regex, this.selectedCountry.dial_code))
2326
- ]);
2327
- }
2328
- //AP-01JUL25 - Disable the field unless in 'edit' mode and question is not marked as read-only
2329
- this.setDisabledState(this.mode === 'edit' ? (this.question?.isReadOnly === true || this.question?.isReadOnly === 'true') : true);
2330
- this.question['subText'] = typeof this.question['subText'] === 'string' ? this.question['subText'] === '' ? this.question['subText'] = null : JSON.parse(this.question['subText']) : this.question['subText'];
2331
- if (this.question?.subText != undefined) {
2332
- // this.disabled = true;
2333
- let dependencyObj = this.question?.subText;
2334
- if (dependencyObj.disabled && dependencyObj.disabled == "false") {
2335
- // this.disabled = false;
2336
- }
2337
- else {
2338
- // this.disabled = true;
2339
- }
2340
- // Subscribe for the changes
2341
- this.subscription = this.changeService.changeAnnounced$.subscribe((changeValue) => {
2342
- if (changeValue != undefined) {
2343
- // console.log('inside subscription for the change');
2344
- if (changeValue.valueObj != undefined && changeValue.fromQuestionId == dependencyObj.sourceQuestionId) {
2345
- // VD 20Aug24 handling the multiple object
2346
- this.value = this.dataService.getValue(changeValue.valueObj, dependencyObj.valueField);
2347
- this.inputValue.emit({ question: this.question, value: this.value });
2348
- }
2349
- this.changeService.confirmChange(dependencyObj.sourceQuestionId);
2350
- }
2351
- });
2352
- }
2353
- document.addEventListener('quill-save', this.saveChanges.bind(this));
2354
- document.addEventListener('quill-discard', this.discardChanges.bind(this));
2355
- }
2356
- ngOnDestroy() {
2357
- document.removeEventListener('quill-save', this.saveChanges.bind(this));
2358
- document.removeEventListener('quill-discard', this.discardChanges.bind(this));
2359
- }
2360
- // SKS14JUN25 Dynamically load Quill editor toolbar
2361
- getQuillModules(questionId) {
2362
- if (this.viewEdit) {
2363
- return {
2364
- imageResizor: {},
2365
- toolbar: {
2366
- container: [
2367
- [{ 'font': fontFamilyArr }], //RS 17JAN2025 Added font family dropdown
2368
- ['bold', 'italic', 'underline', 'strike'],
2369
- ['blockquote', 'code-block'],
2370
- [{ header: [1, 2, 3, 4, 5, 6, false] }],
2371
- [{ list: 'ordered' }, { list: 'bullet' }],
2372
- [{ color: [] }, { background: [] }],
2373
- [{ align: [] }],
2374
- ['link', 'image', 'video'],
2375
- ['formula'],
2376
- ['clean'],
2377
- ['save', 'discard']
2378
- ],
2379
- handlers: {
2380
- save: function () {
2381
- const event = new CustomEvent('quill-save', {
2382
- detail: { id: questionId } // You inject the correct ID directly here
2383
- });
2384
- document.dispatchEvent(event);
2385
- },
2386
- discard: function () {
2387
- const event = new CustomEvent('quill-discard', {
2388
- detail: { id: questionId }
2389
- });
2390
- document.dispatchEvent(event);
2391
- }
2392
- }
2393
- },
2394
- mention: {
2395
- allowedChars: /^[A-Za-z\sÅÄÖåäö]*$/,
2396
- mentionDenotationChars: ['@', '#'],
2397
- source: function (searchTerm, renderList) {
2398
- const values = [
2399
- { id: 1, value: 'User 1' },
2400
- { id: 2, value: 'User 2' },
2401
- ];
2402
- if (searchTerm.length === 0) {
2403
- renderList(values, searchTerm);
2404
- }
2405
- else {
2406
- const matches = values.filter((item) => item.value.toLowerCase().includes(searchTerm.toLowerCase()));
2407
- renderList(matches, searchTerm);
2408
- }
2409
- },
2410
- },
2411
- };
2412
- }
2413
- else {
2414
- return {
2415
- imageResizor: {},
2416
- toolbar: {
2417
- container: [
2418
- [{ 'font': fontFamilyArr }], //RS 17JAN2025 Added font family dropdown
2419
- ['bold', 'italic', 'underline', 'strike'],
2420
- ['blockquote', 'code-block'],
2421
- [{ header: [1, 2, 3, 4, 5, 6, false] }],
2422
- [{ list: 'ordered' }, { list: 'bullet' }],
2423
- [{ color: [] }, { background: [] }],
2424
- [{ align: [] }],
2425
- ['link', 'image', 'video'],
2426
- ['formula'],
2427
- ['clean'],
2428
- ],
2429
- },
2430
- mention: {
2431
- allowedChars: /^[A-Za-z\sÅÄÖåäö]*$/,
2432
- mentionDenotationChars: ['@', '#'],
2433
- source: function (searchTerm, renderList) {
2434
- const values = [
2435
- { id: 1, value: 'User 1' },
2436
- { id: 2, value: 'User 2' },
2437
- ];
2438
- if (searchTerm.length === 0) {
2439
- renderList(values, searchTerm);
2440
- }
2441
- else {
2442
- const matches = values.filter((item) => item.value.toLowerCase().includes(searchTerm.toLowerCase()));
2443
- renderList(matches, searchTerm);
2444
- }
2445
- },
2446
- },
2447
- };
2448
- }
2449
- }
2450
- setupValidators() {
2451
- const validators = [];
2452
- if (this.required)
2453
- validators.push(Validators.required);
2454
- if (this.minLength)
2455
- validators.push(Validators.minLength(this.minLength));
2456
- if (this.maxLength)
2457
- validators.push(Validators.maxLength(this.maxLength));
2458
- if (this.pattern)
2459
- validators.push(Validators.pattern(this.pattern));
2460
- this.control.setValidators(validators);
2461
- }
2462
- // SKS28FEB25 Country Dropdown close
2463
- closeDropdown(event) {
2464
- if (!this.elementRef.nativeElement.contains(event.target)) {
2465
- this.showCountryDropdown = false;
2466
- }
2467
- }
2468
- onChange = () => { };
2469
- onTouched = () => { };
2470
- registerOnTouched(fn) {
2471
- this.onTouched = fn;
2472
- }
2473
- onInputChange(event) {
2474
- if (this.type === 'datetime' || this.type === 'date' || this.type === 'time') {
2475
- this.value = event.value;
2476
- }
2477
- else if (this.type === 'richtext') {
2478
- this.value = event;
2479
- }
2480
- else if (this.type === 'checkbox') { // SKS23JUN25 handel checkbox event
2481
- const isChecked = event.target.checked;
2482
- this.value = isChecked;
2483
- }
2484
- else {
2485
- const inputElement = event.target;
2486
- this.rawInputVal = inputElement.value;
2487
- if (this.type === 'tel') {
2488
- this.value = this.selectedCountry.dial_code + " " + inputElement.value;
2489
- }
2490
- else {
2491
- this.value = inputElement.value;
2492
- }
2493
- }
2494
- this.onChange(this.value);
2495
- this.onTouched();
2496
- // SKS11JUN25 Only emit the value if not in view edit mode
2497
- if (!this.viewEdit || this.type === 'list') {
2498
- this.inputValue.emit({ question: this.question, value: this.value });
2499
- }
2500
- }
2501
- togglePasswordVisibility() {
2502
- this.isPasswordVisible = !this.isPasswordVisible;
2503
- }
2504
- passwordMatchValidator() {
2505
- return (control) => {
2506
- const confirmPassword = control.value; // Get confirm password field value
2507
- if (this.confPassVal === '') {
2508
- return { passwordMismatch: true };
2509
- }
2510
- return this.confPassVal === confirmPassword ? null : { passwordMismatch: true };
2511
- };
2512
- }
2513
- getErrorMessage() {
2514
- if (this.control.hasError('required'))
2515
- return this.errorMessages['required'] || 'This field is required';
2516
- if (this.control.hasError('minlength'))
2517
- return this.errorMessages['minlength'] || `Minimum ${this.minLength} characters required`;
2518
- if (this.control.hasError('pattern'))
2519
- return this.errorMessages['pattern'] || (this.type === 'tel' ? `Invalid ${this.selectedCountry.name} phone number format` : 'Invalid format');
2520
- if (this.control.hasError('maxlength'))
2521
- return this.errorMessages['maxlength'] || `Maximum ${this.maxLength} characters allowed`;
2522
- if (this.control.hasError('passwordMismatch'))
2523
- return this.errorMessages['confPass'] || `Passwords do not match`;
2524
- return '';
2525
- }
2526
- writeValue(value) {
2527
- if (this.type === 'otp') {
2528
- const values = value.split('').slice(0, this.#size);
2529
- values.forEach((val, index) => this.inputs.controls[index].setValue(val));
2530
- }
2531
- else if (this.type === 'datetime' || this.type === 'date' || this.type === 'time') {
2532
- if (value instanceof Date) {
2533
- this.value = value;
2534
- }
2535
- else if (value && typeof value !== 'string') {
2536
- this.value = new Date(value);
2537
- }
2538
- this.control.setValue(this.value);
2539
- }
2540
- else {
2541
- this.control.setValue(value);
2542
- this.value = value;
2543
- }
2544
- }
2545
- registerOnChange(fn) {
2546
- this.onChange = fn;
2547
- if (this.type === 'otp') {
2548
- this.inputs.valueChanges.subscribe(() => {
2549
- const value = this.inputs.value.join('');
2550
- this.onChange(value);
2551
- });
2552
- }
2553
- else {
2554
- this.control.valueChanges.subscribe((value) => {
2555
- this.onChange(value);
2556
- });
2557
- }
2558
- }
2559
- setDisabledState(isDisabled) {
2560
- if (this.type === 'otp') {
2561
- if (isDisabled) {
2562
- this.inputs.disable();
2563
- }
2564
- else {
2565
- this.inputs.enable();
2566
- }
2567
- }
2568
- else {
2569
- if (isDisabled) {
2570
- this.control.disable();
2571
- }
2572
- else {
2573
- this.control.enable();
2574
- }
2575
- }
2576
- }
2577
- updateControlState() {
2578
- //AP-01JUL25 - Determine if the field should be disabled based on mode and question's read-only status
2579
- const shouldDisable = this.mode === 'edit' ? (this.question?.isReadOnly === true || this.question?.isReadOnly === 'true') : true;
2580
- this.setDisabledState(shouldDisable);
2581
- }
2582
- validate(control) {
2583
- if (this.type === 'otp') {
2584
- if (!control.value || control.value.length < this.#size) {
2585
- return { otpInput: 'Value is incorrect' };
2586
- }
2587
- }
2588
- else {
2589
- if (this.control.invalid) {
2590
- return this.control.errors;
2591
- }
2592
- }
2593
- return null;
2594
- }
2595
- handleKeyDown(e, idx) {
2596
- if (e.key === 'Backspace' || e.key === 'Delete') {
2597
- if (idx > 0) {
2598
- this.#scheduledFocus = idx - 1;
2599
- }
2600
- else {
2601
- this.#scheduledFocus = null;
2602
- }
2603
- }
2604
- }
2605
- // Due to iOS/iPadOS Safari bug/special behavior we are forced to
2606
- // schedule focus transition during keypress/keydown event and only
2607
- // after input event happened - execute the transition
2608
- // otherwise inputs don't get their values filled
2609
- handleInput() {
2610
- this.#updateWiredValue();
2611
- if (this.#scheduledFocus !== null) {
2612
- this.#focusInput(this.#scheduledFocus);
2613
- this.#scheduledFocus = null; // Reset to null after focusing
2614
- }
2615
- }
2616
- handleKeyPress(e, idx) {
2617
- const isDigit = /\d/.test(e.key);
2618
- if (e.key === 'v' && e.metaKey) {
2619
- return true;
2620
- }
2621
- if (isDigit && idx + 1 < this.#size) {
2622
- this.#scheduledFocus = idx + 1;
2623
- }
2624
- else {
2625
- this.#scheduledFocus = null; // Ensure it's null if not moving focus
2626
- }
2627
- if (isDigit && this.inputs.controls[idx].value) {
2628
- this.inputs.controls[idx].setValue('');
2629
- }
2630
- return isDigit;
2631
- }
2632
- handlePaste(e, idx) {
2633
- e.preventDefault();
2634
- if (idx !== 0) {
2635
- // If the target input is not the first one - ignore
2636
- return;
2637
- }
2638
- const pasteData = e.clipboardData?.getData('text');
2639
- const regex = new RegExp(`\\d{${this.#size}}`);
2640
- if (!pasteData || !regex.test(pasteData)) {
2641
- // If there is nothing to be pasted or the pasted data does not
2642
- // comply with the required format - ignore the event
2643
- return;
2644
- }
2645
- for (let i = 0; i < pasteData.length; i++) {
2646
- this.inputs.controls[i].setValue(pasteData[i]);
2647
- }
2648
- this.#focusInput(this.inputEls.length - 1);
2649
- this.#updateWiredValue();
2650
- this.onTouched();
2651
- }
2652
- handleFocus(e) {
2653
- // Select previously entered value to replace with a new input
2654
- e.target.select();
2655
- }
2656
- #focusInput(idx) {
2657
- // In order not to interfere with the input we setTimeout
2658
- // before advancing the focus
2659
- setTimeout(() => this.inputEls.get(idx)?.nativeElement.focus());
2660
- }
2661
- #updateWiredValue() {
2662
- // We want to expose the value as a plain string
2663
- //
2664
- // In order not to interfere with the input we setTimeout
2665
- // before advancing the focus
2666
- setTimeout(() => this.onChange?.(this.inputs.value.join('')));
2667
- }
2668
- // SKS28FEB25 toggle Country Dropdown
2669
- toggleCountryDropdown() {
2670
- this.showCountryDropdown = !this.showCountryDropdown;
2671
- }
2672
- // SKS28FEB25 Country Dropdown search filter
2673
- filterCountries(event) {
2674
- const inputElement = event.target;
2675
- this.countrySearch = inputElement.value;
2676
- this.filteredCountries = this.countries.filter(country => country.name.toLowerCase().includes(this.countrySearch.toLowerCase()) ||
2677
- country.dial_code.includes(this.countrySearch));
2678
- }
2679
- // SKS28FEB25 Country Dropdown select function
2680
- selectCountry(country) {
2681
- this.selectedCountry = country;
2682
- this.showCountryDropdown = false;
2683
- this.control.setValidators([
2684
- Validators.required,
2685
- Validators.pattern(this.removeDialCodeFromRegex(this.selectedCountry.regex, this.selectedCountry.dial_code))
2686
- ]);
2687
- // SKS28FEB25 Update the control's value with the new dial code
2688
- this.control.setValue(this.rawInputVal);
2689
- // SKS28FEB25 Immediately update validity status
2690
- this.control.updateValueAndValidity();
2691
- // SKS28FEB25 Trigger change detection if needed
2692
- this.control.markAsTouched();
2693
- console.log("vall check3", this.value);
2694
- this.value = this.selectedCountry.dial_code + " " + this.rawInputVal;
2695
- this.onChange(this.value);
2696
- }
2697
- // SKS28FEB25 remove DialCode From Regex
2698
- removeDialCodeFromRegex(originalRegex, dialCode) {
2699
- const escapedDialCode = dialCode.replace(/\+/g, "\\+");
2700
- return originalRegex.replace(`^${escapedDialCode}`, '^');
2701
- }
2702
- // SKS28FEB25 remove DialCode From Regex for show in input
2703
- removeDialCode(placeholder) {
2704
- return placeholder.replace(/^\+\d+\s*/, '');
2705
- }
2706
- get inputList() {
2707
- return this.type !== 'otp' ? this.inputs.controls.slice(0, 1) : this.inputs.controls;
2708
- }
2709
- blurEmit() {
2710
- this.onBlur.emit(this.value);
2711
- }
2712
- focusinEmit(event) {
2713
- this.onFocus.emit(event);
2714
- }
2715
- toggle(event) {
2716
- this.toggleEmit.emit(event);
2717
- }
2718
- onEditorFocusOut() {
2719
- const currentValue = this.value || '';
2720
- this.valueChange.emit(currentValue);
2721
- }
2722
- viewEditClick(ques) {
2723
- this.originalValue = this.value; // Store the original value
2724
- this.viewEdit = true; // Enter view edit mode
2725
- this.mode = 'edit';
2726
- this.updateControlState(); // Update control state
2727
- }
2728
- saveChanges = (event) => {
2729
- // SKS14JUN25 Emit save/discard event only if the current question was changed
2730
- if (event)
2731
- if (event.detail?.id !== this.question.id)
2732
- return;
2733
- let ques = this.question;
2734
- ques['singleFieldChange'] = true;
2735
- this.inputValue.emit({ question: ques, value: this.value }); // Emit the updated value
2736
- this.viewEdit = false; // Exit view edit mode
2737
- this.mode = 'view'; // Switch back to view mode
2738
- this.updateControlState(); // Update control state
2739
- };
2740
- discardChanges = (event) => {
2741
- // SKS14JUN25 Emit save/discard event only if the current question was changed
2742
- if (event)
2743
- if (event.detail?.id !== this.question.id)
2744
- return;
2745
- console.log("discardChanges");
2746
- this.writeValue(this.originalValue); // Revert to original value
2747
- this.viewEdit = false; // Exit view edit mode
2748
- this.mode = 'view'; // Switch back to view mode
2749
- this.updateControlState(); // Update control state
2750
- };
2751
- openDatePicker(type) {
2752
- if (type === 'datetime') {
2753
- this.dtPicker.open();
2754
- }
2755
- else if (type === 'date') {
2756
- this.dPicker.open();
2757
- }
2758
- else if (type === 'time') {
2759
- this.tPicker.open();
2760
- }
2761
- }
2762
- removeValue() {
2763
- this.removeValueEmit.emit();
2764
- }
2765
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NxtInput, deps: [{ token: i0.ElementRef }, { token: i1.ChangeService }, { token: i2.DataService }], target: i0.ɵɵFactoryTarget.Component });
2766
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NxtInput, isStandalone: true, selector: "nxt-input", inputs: { label: "label", labelFont: "labelFont", labelWeight: "labelWeight", inputWeight: "inputWeight", labelSize: "labelSize", inputValueSize: "inputValueSize", labelColor: "labelColor", showLabel: "showLabel", svgHeight: "svgHeight", svgWidth: "svgWidth", type: "type", inputIconRightSrc: "inputIconRightSrc", inputIconLeftSrc: "inputIconLeftSrc", required: "required", minLength: "minLength", pattern: "pattern", errorMessages: "errorMessages", maxLength: "maxLength", placeholder: "placeholder", inputBgColor: "inputBgColor", inputBorder: "inputBorder", placeholderColor: "placeholderColor", placeholderFont: "placeholderFont", placeholderWeight: "placeholderWeight", placeholderSize: "placeholderSize", inputTextColor: "inputTextColor", inputHeight: "inputHeight", inputWidth: "inputWidth", inputId: "inputId", inputBorderSize: "inputBorderSize", inputConfig: "inputConfig", confPassVal: "confPassVal", confPass: "confPass", mode: "mode", value: "value", question: "question", showSuggestion: "showSuggestion", ariaOwns: "ariaOwns", ariaHasPopup: "ariaHasPopup", isLoading: "isLoading", options: "options", minDate: "minDate", maxDate: "maxDate", rows: "rows", size: "size" }, outputs: { valueChange: "valueChange", inputValue: "inputValue", onBlur: "onBlur", onFocus: "onFocus", toggleEmit: "toggleEmit", nativeInputRef: "nativeInputRef", removeValueEmit: "removeValueEmit" }, host: { listeners: { "document:click": "closeDropdown($event)" } }, providers: [
2767
- {
2768
- provide: NG_VALUE_ACCESSOR,
2769
- useExisting: forwardRef(() => NxtInput),
2770
- multi: true
2771
- },
2772
- {
2773
- provide: NG_VALIDATORS,
2774
- useExisting: forwardRef(() => NxtInput),
2775
- multi: true,
2776
- },
2777
- ], viewQueries: [{ propertyName: "dtPicker", first: true, predicate: ["dt"], descendants: true }, { propertyName: "dPicker", first: true, predicate: ["dt2"], descendants: true }, { propertyName: "tPicker", first: true, predicate: ["dt3"], descendants: true }, { propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true }, { propertyName: "inputEls", predicate: ["inputEl"], descendants: true }, { propertyName: "dateTimePicker", predicate: ["dt"], descendants: true }, { propertyName: "datePicker", predicate: ["dt1"], descendants: true }, { propertyName: "timePicker", predicate: ["dt2"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- SKS31JAN25 -->\n<div class=\"hover-wrapper input-wrapper\" (document:click)=\"closeDropdown($event)\">\n <div>\n <div *ngIf=\"label && type != 'checkbox' && showLabel\" [ngStyle]=\"{\n 'padding-top': type === 'label' ? '10px' : '',\n 'padding-bottom': type === 'label' ? '10px' : ''\n }\" [style.font-weight]=\"labelWeight || type === 'label' ? 'bold' : 'normal'\" [style.font-size]=\"labelSize || type === 'label' ? '16px' : '14px'\"\n style=\"display: flex; gap: 5px;\"> {{ label\n }}\n <div *ngIf=\"label && type != 'checkbox' && required && showLabel && mode === 'edit'\" style=\"color: red;\">*</div>\n </div>\n <div *ngIf=\"type !== 'label' && type !== 'richtext' && type !== 'textarea'\" style=\"display: flex;\">\n <div class=\"input-container\" [ngClass]=\"{'checkbox-padding': type === 'checkbox' || type === 'otp'}\"\n [style.backgroundColor]=\"mode === 'edit' ? inputBgColor : ''\"\n [class.invalid]=\"control.invalid && control.touched\"\n [style.margin-top]=\"showLabel && label ? '' : '21px !important'\"\n [style.border]=\"mode === 'edit' ? inputBorder === 'none' ? ('1px solid ' + inputBgColor) : inputBorder : 'none'\">\n <img *ngIf=\"inputIconLeftSrc && mode === 'edit'\" [src]=\"inputIconLeftSrc\" alt=\"icon\" class=\"icon left-icon\"\n [style.height]=\"svgHeight\" [style.width]=\"svgWidth\" />\n <div *ngIf=\"mode === 'edit' && type === 'list'\" class=\"icon-container\">\n <!-- Inline search icon SVG -->\n <svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"#434555\" stroke-opacity=\"0.65\" stroke-width=\"2\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"M20 20L17 17\" stroke-linecap=\"round\" />\n </svg>\n </div>\n <!-- SKS28FEB25 mobile number input -->\n <div class=\"phone-input-container\">\n <div *ngIf=\"type === 'tel'\" class=\"country-selector\" style=\"padding-left: 10px;\"\n (click)=\"toggleCountryDropdown()\">\n <!-- <span class=\"flag\">{{ selectedCountry.flag }}</span> -->\n <span class=\"dial-code\" [style.font-size]=\"inputValueSize\">{{ selectedCountry.dial_code }}</span>\n <svg class=\"arrow\" width=\"9\" height=\"6\" viewBox=\"0 0 9 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M0.684136 0.767477C0.922999 0.5378 1.30282 0.545248 1.5325 0.784111L4.5 3.93431L7.4675 0.784111C7.69718 0.545248 8.077 0.5378 8.31587 0.767477C8.55473 0.997153 8.56218 1.37698 8.3325 1.61584L4.9325 5.21584C4.81938 5.33349 4.66321 5.39998 4.5 5.39998C4.33679 5.39998 4.18062 5.33349 4.0675 5.21584L0.667501 1.61584C0.437825 1.37698 0.445272 0.997153 0.684136 0.767477Z\"\n fill=\"#626262\" />\n </svg>\n </div>\n <div *ngIf=\"type === 'tel' && showCountryDropdown\" class=\"country-dropdown\">\n <div class=\"search-box\">\n <input type=\"text\" [readOnly]=\"mode !== 'edit'\" placeholder=\"Search country...\" [value]=\"countrySearch\"\n (input)=\"filterCountries($event)\">\n </div>\n <div class=\"country-list\">\n <div *ngFor=\"let country of filteredCountries\" class=\"country-item\" (click)=\"selectCountry(country)\">\n <span class=\"flag\">{{ country.flag }}</span>\n <span class=\"name\">{{ country.name }}</span>\n <span class=\"dial-code\">{{ country.dial_code }}</span>\n </div>\n </div>\n </div>\n </div>\n @if(type !== 'datetime' && type !== 'date' && type !== 'time'){\n <input *ngFor=\"let input of inputList; let i = index\" #inputEl #inputRef [id]=\"inputId\"\n [type]=\"isPasswordVisible ? 'text' : type === 'otp' || type === 'dropdown' ? 'text' : type\"\n [attr.placeholder]=\"type === 'otp' || mode !== 'edit' ? '' : placeholder || (type === 'tel' ? removeDialCode(selectedCountry.placeholder) : label)\"\n [ngClass]=\"type === 'otp' ? 'fcOtp' : 'custom-input'\" [formControl]=\"type === 'otp' ? $any(input) : control\"\n [style.backgroundColor]=\"type === 'otp'|| mode !== 'edit' ? '' : inputBgColor\"\n [style.color]=\"type === 'otp' || mode !== 'edit' ? '' : inputTextColor\"\n [style.border]=\"type === 'otp' || mode !== 'edit' ? '' : inputBorder\"\n [style.height]=\"type === 'otp' ? '' : inputHeight\" [style.width]=\"type === 'otp' ? '' : type === 'checkbox' ? 'auto' : inputWidth\"\n [value]=\"type === 'tel' ? rawInputVal : value\"\n (input)=\"type === 'otp' ? handleInput() : onInputChange($event)\"\n [checked]=\"type === 'checkbox' ? value : ''\"\n [style.font-size]=\"type === 'otp' ? '' : inputValueSize\" (focus)=\"type === 'otp' ? handleFocus($event) : null\"\n (blur)=\"type === 'otp' ? onTouched() : blurEmit()\"\n (keypress)=\"type === 'otp' ? handleKeyPress($event, i) : null\"\n (keydown)=\"type === 'otp' ? handleKeyDown($event, i) : null\"\n (paste)=\"type === 'otp' ? handlePaste($event, i) : null\" inputmode=\"type === 'otp' ? numeric : null\"\n [attr.autocomplete]=\"type === 'otp' && i === 0 ? 'one-time-code' : type === 'list' ? 'list' : 'off'\"\n [attr.aria-expanded]=\"type === 'list' ? showSuggestion : 'off'\"\n [attr.inputmode]=\"type === 'otp' ? 'numeric' : null\" [attr.name]=\"type === 'otp' && i === 0 ? 'otp' : null\"\n (focusin)=\"focusinEmit($event)\" [attr.aria-owns]=\"type === 'list' ? ariaOwns : 'off'\"\n [attr.aria-haspopup]=\"type === 'list' ? ariaHasPopup : 'off'\" \n [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || labelWeight : ''\n }\" (keydown.enter)=\"type === 'location' ? $event.preventDefault() : ''\"\n autocorrect=\"type === 'location' ? 'off' : ''\" autocapitalize=\"type === 'location' ? 'off' : ''\"\n spellcheck=\"type === 'location' ? 'off' : ''\" />\n }\n @else if(type === 'datetime' || type === 'date' || type === 'time'){\n <input #inputEl [id]=\"inputId\"\n [owlDateTimeTrigger]=\"type === 'datetime' ? dt : type === 'date' ? dt2 : type === 'time' ? dt3 : dt\"\n [owlDateTime]=\"type === 'datetime' ? dt : type === 'date' ? dt2 : type === 'time' ? dt3 : dt\"\n [attr.placeholder]=\"mode !== 'edit' ? '' : placeholder || type === 'datetime' ? 'DD/MM/YYYY HH:MM' : type === 'date' ? 'DD/MM/YYYY' : type === 'time' ? 'HH:MM' : 'DD/MM/YYYY HH:MM'\"\n [ngClass]=\"'nxt-custom-input'\" [formControl]=\"control\"\n [style.backgroundColor]=\"mode !== 'edit' ? '' : inputBgColor\"\n [style.color]=\"mode !== 'edit' ? '' : inputTextColor\" [style.border]=\"mode !== 'edit' ? 'none' : inputBorder\"\n [style.height]=\"inputHeight\"\n [style.font-size]=\"inputValueSize\" (blur)=\" blurEmit()\" (focusin)=\"focusinEmit($event)\"\n (dateTimeInput)=\"onInputChange($event)\"\n [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || labelWeight : ''\n }\" style=\"\n width: 100% !important;\n padding: 10px;\n padding-left: 5px;\n border-radius: 5px;\n border: none !important;\n font-size: 14px;\" />\n <owl-date-time #dt></owl-date-time>\n <owl-date-time [pickerType]=\"'calendar'\" #dt2></owl-date-time>\n <owl-date-time [pickerType]=\"'timer'\" #dt3></owl-date-time>\n }\n <div *ngIf=\"mode === 'edit' && (type === 'datetime' || type === 'date' || type === 'time')\" class=\"icon-container\" (click)=\"openDatePicker(type)\"\n style=\"cursor: pointer;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M2.32031 7.05285H15.6883\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.3322 9.98254H12.3392\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.00408 9.98254H9.01103\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.66815 9.98254H5.67509\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.3322 12.8976H12.3392\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.00408 12.8976H9.01103\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.66815 12.8976H5.67509\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.0329 1.5V3.96809\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.97435 1.5V3.96809\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.1787 2.68457H5.82822C3.6257 2.68457 2.25 3.91152 2.25 6.16684V12.9541C2.25 15.2449 3.6257 16.5002 5.82822 16.5002H12.1718C14.3812 16.5002 15.75 15.2661 15.75 13.0108V6.16684C15.7569 3.91152 14.3882 2.68457 12.1787 2.68457Z\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div *ngIf=\"mode === 'edit' && type === 'list'\" class=\"icon-container\">\n <!-- Minimal Dotted Loader -->\n <div *ngIf=\"isLoading\" class=\"dotted-loader\" aria-label=\"Loading\" role=\"status\">\n <span *ngFor=\"let dot of [].constructor(6); let i = index\" class=\"dot\" [style.--i]=\"i\"></span>\n </div>\n <svg *ngIf=\"!isLoading\" (click)=\"removeValue()\" (keydown.enter)=\"removeValue()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"cursor: pointer;\">\n <path d=\"M9.16992 14.8299L14.8299 9.16992\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M14.8299 14.8299L9.16992 9.16992\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9 22H15C20 22 22 20 22 15V9C22 4 20 2 15 2H9C4 2 2 4 2 9V15C2 20 4 22 9 22Z\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> \n </div>\n <label class=\"checkboxLab\" *ngIf=\"label && type === 'checkbox' && showLabel\" [style.font-weight]=\"labelWeight\"\n [style.font-size]=\"labelSize\" [style.color]=\"labelColor || '#9a9a9a'\"\n style=\"margin-bottom: 0; padding-left: 10px; padding-right: 10px; width: 100% !important;\"> {{ label }}\n <div *ngIf=\"label && type === 'checkbox' && required && showLabel\" style=\"color: red;\">*</div>\n </label> \n <!-- Always Show Dropdown Icon -->\n <svg *ngIf=\"mode === 'edit' && type === 'dropdown'\" style=\"margin-right: 5px;\" (mousedown)=\"toggle($event); $event.preventDefault()\"\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 22H15C20 22 22 20 22 15V9C22 4 20 2 15 2H9C4 2 2 4 2 9V15C2 20 4 22 9 22Z\" stroke=\"#292D32\"\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M8.46997 10.64L12 14.16L15.53 10.64\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n\n <img *ngIf=\"mode === 'edit' && inputIconRightSrc\" [src]=\"inputIconRightSrc\" class=\"icon right-icon\"\n [style.height]=\"svgHeight\" [style.width]=\"svgWidth\">\n <img *ngIf=\"mode === 'edit' && type === 'password'\" class=\"toggle-icon\" (click)=\"togglePasswordVisibility()\"\n [src]=\"!isPasswordVisible ? '/assets/images/icons/general/Hide-Password.svg' : '/assets/images/icons/general/Show-Password.svg'\" />\n <svg *ngIf=\"mode !== 'edit' && !question.isReadOnly\" class=\"edit-icon\"\n (click)=\"viewEditClick(question)\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M1.99987 9.0017L4.39602 11.3979C4.50371 11.5055 4.66525 11.5055 4.77294 11.3979L10.7499 5.39401C10.8576 5.28631 10.8576 5.12477 10.7499 5.01708L8.38064 2.64785C8.27294 2.54016 8.11141 2.54016 8.00371 2.64785L1.99987 8.6517C1.89217 8.75939 1.89217 8.92093 1.99987 9.0017ZM9.1614 1.54401C9.05371 1.6517 9.05371 1.81324 9.1614 1.92093L11.5306 4.29016C11.6383 4.39785 11.7999 4.39785 11.9076 4.29016L12.5806 3.61708C13.0114 3.21324 13.0114 2.56708 12.5806 2.13631L11.3153 0.870928C10.8845 0.440159 10.2114 0.440159 9.78063 0.870928L9.1614 1.54401ZM0.00755862 12.9863C-0.0462875 13.2555 0.19602 13.4979 0.465251 13.444L3.39987 12.744C3.50756 12.7171 3.58833 12.6632 3.64217 12.6094L3.69602 12.5555C3.74987 12.5017 3.77679 12.3132 3.6691 12.2055L1.24602 9.78247C1.13833 9.67478 0.949866 9.7017 0.89602 9.75554L0.842174 9.80939C0.761405 9.89016 0.734482 9.97093 0.707559 10.0517L0.00755862 12.9863Z\"\n fill=\"#B0ADAB\" />\n </svg>\n <!-- SKS14JUN25 Show save and cancel icons only when the input value is edited -->\n <div *ngIf=\"viewEdit && originalValue !== value\" (mouseenter)=\"isSaveHovered = true\" (mouseleave)=\"isSaveHovered = false\"\n style=\"padding-right: 5px; display: flex; align-items: center;\">\n <svg *ngIf=\"!isSaveHovered\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.9502 0.5C8.96006 0.500106 11.4004 2.94031 11.4004 5.9502C11.4003 8.95999 8.95999 11.4003 5.9502 11.4004C2.94031 11.4004 0.500106 8.96006 0.5 5.9502C0.5 2.94024 2.94024 0.5 5.9502 0.5Z\"\n stroke=\"#837F8E\" />\n <path\n d=\"M8.88111 3.84583C8.83269 3.7972 8.77513 3.7586 8.71176 3.73227C8.64838 3.70594 8.58043 3.69238 8.5118 3.69238C8.44317 3.69238 8.37521 3.70594 8.31184 3.73227C8.24846 3.7586 8.19091 3.7972 8.14249 3.84583L4.8269 7.16347L3.35253 5.6891C3.30403 5.6406 3.24646 5.60213 3.18309 5.57588C3.11972 5.54964 3.05181 5.53613 2.98322 5.53613C2.91463 5.53613 2.84672 5.54964 2.78335 5.57588C2.71999 5.60213 2.66241 5.6406 2.61391 5.6891C2.56541 5.7376 2.52694 5.79518 2.50069 5.85854C2.47445 5.92191 2.46094 5.98982 2.46094 6.05841C2.46094 6.127 2.47445 6.19491 2.50069 6.25828C2.52694 6.32165 2.56541 6.37922 2.61391 6.42772L4.45677 8.27058C4.50519 8.31922 4.56274 8.35781 4.62612 8.38414C4.6895 8.41047 4.75745 8.42403 4.82608 8.42403C4.89471 8.42403 4.96266 8.41047 5.02604 8.38414C5.08942 8.35781 5.14697 8.31922 5.19539 8.27058L8.88111 4.58445C8.92974 4.53603 8.96834 4.47848 8.99467 4.4151C9.021 4.35173 9.03456 4.28377 9.03456 4.21514C9.03456 4.14651 9.021 4.07856 8.99467 4.01518C8.96834 3.9518 8.92974 3.89425 8.88111 3.84583Z\"\n fill=\"#837F8E\" />\n </svg>\n\n <svg *ngIf=\"isSaveHovered\" (click)=\"saveChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 13\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.95 12.8004C9.23609 12.8004 11.9 10.1365 11.9 6.85039C11.9 3.5643 9.23609 0.900391 5.95 0.900391C2.66391 0.900391 0 3.5643 0 6.85039C0 10.1365 2.66391 12.8004 5.95 12.8004Z\"\n fill=\"#259566\" />\n <path\n d=\"M8.88111 4.74622C8.83269 4.69759 8.77513 4.65899 8.71176 4.63266C8.64838 4.60633 8.58043 4.59277 8.5118 4.59277C8.44317 4.59277 8.37521 4.60633 8.31184 4.63266C8.24846 4.65899 8.19091 4.69759 8.14249 4.74622L4.8269 8.06386L3.35253 6.58949C3.30403 6.54099 3.24646 6.50252 3.18309 6.47627C3.11972 6.45003 3.05181 6.43652 2.98322 6.43652C2.91463 6.43652 2.84672 6.45003 2.78335 6.47627C2.71999 6.50252 2.66241 6.54099 2.61391 6.58949C2.56541 6.63799 2.52694 6.69557 2.50069 6.75893C2.47445 6.8223 2.46094 6.89022 2.46094 6.9588C2.46094 7.02739 2.47445 7.09531 2.50069 7.15867C2.52694 7.22204 2.56541 7.27961 2.61391 7.32811L4.45677 9.17097C4.50519 9.21961 4.56274 9.2582 4.62612 9.28453C4.6895 9.31086 4.75745 9.32442 4.82608 9.32442C4.89471 9.32442 4.96266 9.31086 5.02604 9.28453C5.08942 9.2582 5.14697 9.21961 5.19539 9.17097L8.88111 5.48484C8.92974 5.43642 8.96834 5.37887 8.99467 5.31549C9.021 5.25212 9.03456 5.18416 9.03456 5.11553C9.03456 5.0469 9.021 4.97895 8.99467 4.91557C8.96834 4.8522 8.92974 4.79465 8.88111 4.74622Z\"\n fill=\"white\" />\n </svg>\n </div>\n <div *ngIf=\"viewEdit && originalValue !== value\" (mouseenter)=\"isDiscardHovered = true\" (mouseleave)=\"isDiscardHovered = false\"\n style=\" display: flex; align-items: center;\">\n <svg *ngIf=\"!isDiscardHovered\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.05555 4.00883L5.94 5.12438L4.82445 4.00883C4.57861 3.76299 4.18191 3.76299 3.93607 4.00883C3.69023 4.25467 3.69023 4.65137 3.93607 4.89721L5.05162 6.01276L3.93607 7.12831C3.69023 7.37415 3.69023 7.77085 3.93607 8.01669C4.18191 8.26253 4.57861 8.26253 4.82445 8.01669L5.94 6.90114L7.05555 8.01669C7.30139 8.26253 7.69809 8.26253 7.94393 8.01669C8.18977 7.77085 8.18977 7.37415 7.94393 7.12831L6.82838 6.01276L7.94393 4.89721C8.18977 4.65137 8.18977 4.25467 7.94393 4.00883C7.69809 3.77285 7.30021 3.77285 7.05555 4.00883ZM5.94 0.0820312C2.70017 0.0820312 0.0808594 2.70134 0.0808594 5.94118C0.0808594 9.18101 2.70017 11.8003 5.94 11.8003C9.17983 11.8003 11.7991 9.18101 11.7991 5.94118C11.7991 2.70134 9.17983 0.0820312 5.94 0.0820312ZM5.94 10.6367C3.35426 10.6367 1.24422 8.52667 1.24422 5.94118C1.24422 3.35553 3.35426 1.24549 5.94 1.24549C8.52558 1.24549 10.6356 3.35553 10.6356 5.94118C10.6356 8.52667 8.52558 10.6367 5.94 10.6367Z\"\n fill=\"#B0ADAB\" />\n </svg>\n\n <svg *ngIf=\"isDiscardHovered\" (click)=\"discardChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 13\"\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.05555 4.97471L5.94 6.09026L4.82445 4.97471C4.57861 4.72887 4.18191 4.72887 3.93607 4.97471C3.69023 5.22055 3.69023 5.61725 3.93607 5.86309L5.05162 6.97864L3.93607 8.09419C3.69023 8.34003 3.69023 8.73673 3.93607 8.98257C4.18191 9.22841 4.57861 9.22841 4.82445 8.98257L5.94 7.86702L7.05555 8.98257C7.30139 9.22841 7.69809 9.22841 7.94393 8.98257C8.18977 8.73673 8.18977 8.34003 7.94393 8.09419L6.82838 6.97864L7.94393 5.86309C8.18977 5.61725 8.18977 5.22055 7.94393 4.97471C7.69809 4.73873 7.30021 4.73873 7.05555 4.97471ZM5.94 1.06062C2.70017 1.06062 0.0808594 3.67993 0.0808594 6.91977C0.0808594 10.1596 2.70017 12.7789 5.94 12.7789C9.17983 12.7789 11.7991 10.1596 11.7991 6.91977C11.7991 3.67993 9.17983 1.06062 5.94 1.06062ZM5.94 11.6153C3.35426 11.6153 1.24422 9.50525 1.24422 6.91977C1.24422 4.33412 3.35426 2.22408 5.94 2.22408C8.52558 2.22408 10.6356 4.33412 10.6356 6.91977C10.6356 9.50525 8.52558 11.6153 5.94 11.6153Z\"\n fill=\"#FF3636\" />\n </svg>\n </div>\n </div>\n </div>\n <div *ngIf=\"type !== 'label' && type !== 'checkbox' && (type === 'richtext' || type === 'textarea')\" style=\"display: flex;\">\n <div class=\"input-container\"\n [style.margin-top]=\"showLabel && label ? '' : '21px !important'\"\n [style.backgroundColor]=\"mode === 'edit' ? inputBgColor : ''\"\n [class.invalid]=\"control.invalid && control.touched\"\n [style.border]=\"mode === 'edit' ? inputBorder === 'none' ? ('1px solid ' + inputBgColor) : inputBorder : 'none'\">\n <!-- SKS14JUN25 Dynamically load Quill editor toolbar -->\n <quill-editor *ngIf=\"mode === 'edit' && type === 'richtext'\" [(ngModel)]=\"value\" (ngModelChange)=\"onInputChange($event)\" [placeholder]=\"placeholder\"\n [readOnly]=\"mode !== 'edit' || question.isReadOnly\"\n (focusout)=\"onEditorFocusOut()\" [class.error]=\"control.invalid && (control.touched || control.dirty)\"\n [modules]=\"getQuillModules(question.id)\"\n style=\"width: 100%;\n padding: 10px 10px 10px 5px;\n border-radius: 5px;\n border: none;\n font-size: 14px;\">\n </quill-editor>\n <!-- View mode -->\n <div *ngIf=\"mode !== 'edit' && type === 'richtext'\" class=\"quill-view-content\" [innerHTML]=\"value\"\n style=\"width: 100%;\n padding: 10px 10px 10px 5px;\n border-radius: 5px;\n border: none;\n font-size: 14px;\">\n </div>\n <textarea *ngIf=\"type === 'textarea'\" [id]=\"inputId\" [rows]=\"rows\"\n [attr.placeholder]=\"mode !== 'edit' ? '' : placeholder\" [ngClass]=\"'custom-input'\" [formControl]=\"control\"\n [style.backgroundColor]=\"mode !== 'edit' ? '' : inputBgColor\"\n [style.color]=\"mode !== 'edit' ? '' : inputTextColor\" [style.border]=\"mode !== 'edit' ? 'none' : inputBorder\"\n [style.height]=\"inputHeight\" [value]=\"value\" (input)=\" onInputChange($event)\"\n [style.font-size]=\"inputValueSize\" (blur)=\" blurEmit()\" (focusin)=\"focusinEmit($event)\"\n [readOnly]=\"mode !== 'edit' || question.isReadOnly\" [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || labelWeight : ''\n }\" style=\"\n width: 100%;\n padding: 10px;\n padding-left: 5px;\n border-radius: 5px;\n border: none !important;\n font-size: 14px;\">\n </textarea>\n <svg *ngIf=\"mode !== 'edit' && !viewEdit && (type === 'richtext' || type === 'textarea') && !question.isReadOnly\"\n class=\"edit-icon\" (click)=\"viewEditClick(question)\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M1.99987 9.0017L4.39602 11.3979C4.50371 11.5055 4.66525 11.5055 4.77294 11.3979L10.7499 5.39401C10.8576 5.28631 10.8576 5.12477 10.7499 5.01708L8.38064 2.64785C8.27294 2.54016 8.11141 2.54016 8.00371 2.64785L1.99987 8.6517C1.89217 8.75939 1.89217 8.92093 1.99987 9.0017ZM9.1614 1.54401C9.05371 1.6517 9.05371 1.81324 9.1614 1.92093L11.5306 4.29016C11.6383 4.39785 11.7999 4.39785 11.9076 4.29016L12.5806 3.61708C13.0114 3.21324 13.0114 2.56708 12.5806 2.13631L11.3153 0.870928C10.8845 0.440159 10.2114 0.440159 9.78063 0.870928L9.1614 1.54401ZM0.00755862 12.9863C-0.0462875 13.2555 0.19602 13.4979 0.465251 13.444L3.39987 12.744C3.50756 12.7171 3.58833 12.6632 3.64217 12.6094L3.69602 12.5555C3.74987 12.5017 3.77679 12.3132 3.6691 12.2055L1.24602 9.78247C1.13833 9.67478 0.949866 9.7017 0.89602 9.75554L0.842174 9.80939C0.761405 9.89016 0.734482 9.97093 0.707559 10.0517L0.00755862 12.9863Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n </div>\n <!-- SKS23APR25 Use control.invalid to show error on submit click -->\n <div *ngIf=\"type != 'checkbox' && type !== 'label' && control.invalid && (control.touched || control.dirty)\" style=\"height: 20px;\">\n <div class=\"error-message\">\n {{ getErrorMessage() }}\n </div>\n </div>\n </div>\n</div>", styles: ["label{font-size:14px;margin-bottom:10px;color:color-mix(in srgb,black,rgb(0,0,0) 80%)}.toggle-icon{width:20px;height:20px;cursor:pointer;fill:#666}.error-message{color:red;font-size:12px}input[type=text].custom-input,input[type=password].custom-input,input[type=number].custom-input,input[type=email].custom-input,input[type=tel].custom-input,input[type=list].custom-input,input[type=dropdown].custom-input,input[type=location].custom-input{width:100%;padding:10px 10px 10px 5px;border-radius:5px;border:none;font-size:14px}input.nxt-custom-input{width:100%!important;padding:10px 10px 10px 5px;border-radius:5px;border:none;font-size:14px}.custom-input:-webkit-autofill,.custom-input:-webkit-autofill:hover,.custom-input:-webkit-autofill:focus,.custom-input:-webkit-autofill:active,.nxt-custom-input:-webkit-autofill,.nxt-custom-input:-webkit-autofill:hover,.nxt-custom-input:-webkit-autofill:focus,.nxt-custom-input:-webkit-autofill:active{transition:background-color 5000s ease-in-out 0s!important;-webkit-text-fill-color:inherit!important}.phone-input-container{display:flex;align-items:center;position:relative}.country-selector{display:flex;align-items:center;cursor:pointer;padding-right:12px;border-right:#ccc;margin-right:12px}.flag{margin-right:8px;font-size:20px}.dial-code{margin-right:8px;font-weight:500}.country-dropdown{position:absolute;top:100%;left:0;width:300px;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 4px #0000001a;z-index:1000;margin-top:4px}.search-box{padding:8px;border-bottom:1px solid #ccc}.search-box input{width:100%;padding:8px;border:1px solid #ccc;border-radius:4px}.country-list{max-height:200px;overflow-y:auto}.country-item{display:flex;align-items:center;padding:8px 12px;cursor:pointer}.country-item:hover{background-color:color-mix(in srgb,#fff,rgba(0,0,0,0) 30%)}.country-item .name{flex:1;margin:0 12px}.fcOtp{width:40px;height:40px;text-align:center;font-size:18px;border:1px solid #ccc;border-radius:5px;margin:5px;outline:none;transition:border-color .2s ease-in-out}input:focus{outline:none;border-color:transparent;box-shadow:none}.input-container{display:flex;align-items:center;width:100%;border-radius:5px;border:1px solid #ccc;padding-left:5px;padding-right:10px}.input-container .icon-container{right:15px;padding-right:5px;pointer-events:auto;width:22px;height:22px;display:flex;align-items:center;justify-content:center}.input-container.invalid{border:1px solid #DC3545!important;border-radius:5px}.checkbox-padding{margin-top:20px!important;padding:13px!important;width:100%!important;border:none!important}.view-mode{font-size:14px;color:#333}@media print{.view-mode{font-size:12pt;color:#000}}input::placeholder{font-family:var(--placeholder-font);color:var(--placeholder-color);font-size:var(--placeholder-size);font-weight:var(--placeholder-weight)}.dotted-loader{position:relative;width:10px;height:10px}.dotted-loader .dot{--i: 0;position:absolute;top:50%;left:50%;width:3px;height:3px;margin:-2px 0 0 -2px;border-radius:50%;background-color:#696969;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg));animation:spinDot 1s linear infinite;animation-delay:calc(var(--i) * .1s)}@keyframes spinDot{0%{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}50%{opacity:1;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(1.3)}to{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}}input:disabled{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}textarea:disabled{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}.quill-view-content{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}:is() .ql-editor img{cursor:pointer}:is() .image-resizer{display:block!important;visibility:visible!important}:is() .ql-editor .image-resizer{border:1px dashed #000;position:absolute}:is() .ql-editor .image-resizer .handle{background-color:#000;border:1px solid #fff;border-radius:50%;height:12px;width:12px;position:absolute}quill-editor{width:100%}.quill-view-content{border:none;padding:0;font-size:14px;line-height:1.6;color:#333;overflow:hidden}.quill-view-content *{max-width:100%;box-sizing:border-box;word-wrap:break-word}.edit-icon{display:none;cursor:pointer}.hover-wrapper:hover .edit-icon{display:block}input:disabled{color:#999!important;cursor:not-allowed!important}textarea:disabled{color:#999!important;cursor:not-allowed!important}.quill-view-content{color:#999!important;cursor:not-allowed!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: OwlDateTimeModule }, { kind: "directive", type: i5.OwlDateTimeTriggerDirective, selector: "[owlDateTimeTrigger]", inputs: ["owlDateTimeTrigger", "disabled"] }, { kind: "directive", type: i5.OwlDateTimeInputDirective, selector: "input[owlDateTime]", inputs: ["required", "owlDateTime", "owlDateTimeFilter", "_disabled", "min", "max", "selectMode", "rangeSeparator", "value", "values"], outputs: ["dateTimeChange", "dateTimeInput"], exportAs: ["owlDateTimeInput"] }, { kind: "component", type: i5.OwlDateTimeComponent, selector: "owl-date-time", inputs: ["backdropClass", "panelClass", "startAt", "endAt", "pickerType", "pickerMode", "disabled", "opened", "scrollStrategy"], outputs: ["afterPickerClosed", "beforePickerOpen", "afterPickerOpen", "yearSelected", "monthSelected", "dateSelected"], exportAs: ["owlDateTime"] }, { kind: "ngmodule", type: OwlNativeDateTimeModule }, { kind: "component", type: QuillEditorComponent, selector: "quill-editor" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2778
- }
2779
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NxtInput, decorators: [{
2780
- type: Component,
2781
- args: [{ standalone: true, imports: [CommonModule, ReactiveFormsModule, OwlDateTimeModule, OwlNativeDateTimeModule, QuillEditorComponent, FormsModule], selector: 'nxt-input', providers: [
2782
- {
2783
- provide: NG_VALUE_ACCESSOR,
2784
- useExisting: forwardRef(() => NxtInput),
2785
- multi: true
2786
- },
2787
- {
2788
- provide: NG_VALIDATORS,
2789
- useExisting: forwardRef(() => NxtInput),
2790
- multi: true,
2791
- },
2792
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- SKS31JAN25 -->\n<div class=\"hover-wrapper input-wrapper\" (document:click)=\"closeDropdown($event)\">\n <div>\n <div *ngIf=\"label && type != 'checkbox' && showLabel\" [ngStyle]=\"{\n 'padding-top': type === 'label' ? '10px' : '',\n 'padding-bottom': type === 'label' ? '10px' : ''\n }\" [style.font-weight]=\"labelWeight || type === 'label' ? 'bold' : 'normal'\" [style.font-size]=\"labelSize || type === 'label' ? '16px' : '14px'\"\n style=\"display: flex; gap: 5px;\"> {{ label\n }}\n <div *ngIf=\"label && type != 'checkbox' && required && showLabel && mode === 'edit'\" style=\"color: red;\">*</div>\n </div>\n <div *ngIf=\"type !== 'label' && type !== 'richtext' && type !== 'textarea'\" style=\"display: flex;\">\n <div class=\"input-container\" [ngClass]=\"{'checkbox-padding': type === 'checkbox' || type === 'otp'}\"\n [style.backgroundColor]=\"mode === 'edit' ? inputBgColor : ''\"\n [class.invalid]=\"control.invalid && control.touched\"\n [style.margin-top]=\"showLabel && label ? '' : '21px !important'\"\n [style.border]=\"mode === 'edit' ? inputBorder === 'none' ? ('1px solid ' + inputBgColor) : inputBorder : 'none'\">\n <img *ngIf=\"inputIconLeftSrc && mode === 'edit'\" [src]=\"inputIconLeftSrc\" alt=\"icon\" class=\"icon left-icon\"\n [style.height]=\"svgHeight\" [style.width]=\"svgWidth\" />\n <div *ngIf=\"mode === 'edit' && type === 'list'\" class=\"icon-container\">\n <!-- Inline search icon SVG -->\n <svg width=\"24\" height=\"24\" fill=\"none\" stroke=\"#434555\" stroke-opacity=\"0.65\" stroke-width=\"2\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"M20 20L17 17\" stroke-linecap=\"round\" />\n </svg>\n </div>\n <!-- SKS28FEB25 mobile number input -->\n <div class=\"phone-input-container\">\n <div *ngIf=\"type === 'tel'\" class=\"country-selector\" style=\"padding-left: 10px;\"\n (click)=\"toggleCountryDropdown()\">\n <!-- <span class=\"flag\">{{ selectedCountry.flag }}</span> -->\n <span class=\"dial-code\" [style.font-size]=\"inputValueSize\">{{ selectedCountry.dial_code }}</span>\n <svg class=\"arrow\" width=\"9\" height=\"6\" viewBox=\"0 0 9 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M0.684136 0.767477C0.922999 0.5378 1.30282 0.545248 1.5325 0.784111L4.5 3.93431L7.4675 0.784111C7.69718 0.545248 8.077 0.5378 8.31587 0.767477C8.55473 0.997153 8.56218 1.37698 8.3325 1.61584L4.9325 5.21584C4.81938 5.33349 4.66321 5.39998 4.5 5.39998C4.33679 5.39998 4.18062 5.33349 4.0675 5.21584L0.667501 1.61584C0.437825 1.37698 0.445272 0.997153 0.684136 0.767477Z\"\n fill=\"#626262\" />\n </svg>\n </div>\n <div *ngIf=\"type === 'tel' && showCountryDropdown\" class=\"country-dropdown\">\n <div class=\"search-box\">\n <input type=\"text\" [readOnly]=\"mode !== 'edit'\" placeholder=\"Search country...\" [value]=\"countrySearch\"\n (input)=\"filterCountries($event)\">\n </div>\n <div class=\"country-list\">\n <div *ngFor=\"let country of filteredCountries\" class=\"country-item\" (click)=\"selectCountry(country)\">\n <span class=\"flag\">{{ country.flag }}</span>\n <span class=\"name\">{{ country.name }}</span>\n <span class=\"dial-code\">{{ country.dial_code }}</span>\n </div>\n </div>\n </div>\n </div>\n @if(type !== 'datetime' && type !== 'date' && type !== 'time'){\n <input *ngFor=\"let input of inputList; let i = index\" #inputEl #inputRef [id]=\"inputId\"\n [type]=\"isPasswordVisible ? 'text' : type === 'otp' || type === 'dropdown' ? 'text' : type\"\n [attr.placeholder]=\"type === 'otp' || mode !== 'edit' ? '' : placeholder || (type === 'tel' ? removeDialCode(selectedCountry.placeholder) : label)\"\n [ngClass]=\"type === 'otp' ? 'fcOtp' : 'custom-input'\" [formControl]=\"type === 'otp' ? $any(input) : control\"\n [style.backgroundColor]=\"type === 'otp'|| mode !== 'edit' ? '' : inputBgColor\"\n [style.color]=\"type === 'otp' || mode !== 'edit' ? '' : inputTextColor\"\n [style.border]=\"type === 'otp' || mode !== 'edit' ? '' : inputBorder\"\n [style.height]=\"type === 'otp' ? '' : inputHeight\" [style.width]=\"type === 'otp' ? '' : type === 'checkbox' ? 'auto' : inputWidth\"\n [value]=\"type === 'tel' ? rawInputVal : value\"\n (input)=\"type === 'otp' ? handleInput() : onInputChange($event)\"\n [checked]=\"type === 'checkbox' ? value : ''\"\n [style.font-size]=\"type === 'otp' ? '' : inputValueSize\" (focus)=\"type === 'otp' ? handleFocus($event) : null\"\n (blur)=\"type === 'otp' ? onTouched() : blurEmit()\"\n (keypress)=\"type === 'otp' ? handleKeyPress($event, i) : null\"\n (keydown)=\"type === 'otp' ? handleKeyDown($event, i) : null\"\n (paste)=\"type === 'otp' ? handlePaste($event, i) : null\" inputmode=\"type === 'otp' ? numeric : null\"\n [attr.autocomplete]=\"type === 'otp' && i === 0 ? 'one-time-code' : type === 'list' ? 'list' : 'off'\"\n [attr.aria-expanded]=\"type === 'list' ? showSuggestion : 'off'\"\n [attr.inputmode]=\"type === 'otp' ? 'numeric' : null\" [attr.name]=\"type === 'otp' && i === 0 ? 'otp' : null\"\n (focusin)=\"focusinEmit($event)\" [attr.aria-owns]=\"type === 'list' ? ariaOwns : 'off'\"\n [attr.aria-haspopup]=\"type === 'list' ? ariaHasPopup : 'off'\" \n [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || labelWeight : ''\n }\" (keydown.enter)=\"type === 'location' ? $event.preventDefault() : ''\"\n autocorrect=\"type === 'location' ? 'off' : ''\" autocapitalize=\"type === 'location' ? 'off' : ''\"\n spellcheck=\"type === 'location' ? 'off' : ''\" />\n }\n @else if(type === 'datetime' || type === 'date' || type === 'time'){\n <input #inputEl [id]=\"inputId\"\n [owlDateTimeTrigger]=\"type === 'datetime' ? dt : type === 'date' ? dt2 : type === 'time' ? dt3 : dt\"\n [owlDateTime]=\"type === 'datetime' ? dt : type === 'date' ? dt2 : type === 'time' ? dt3 : dt\"\n [attr.placeholder]=\"mode !== 'edit' ? '' : placeholder || type === 'datetime' ? 'DD/MM/YYYY HH:MM' : type === 'date' ? 'DD/MM/YYYY' : type === 'time' ? 'HH:MM' : 'DD/MM/YYYY HH:MM'\"\n [ngClass]=\"'nxt-custom-input'\" [formControl]=\"control\"\n [style.backgroundColor]=\"mode !== 'edit' ? '' : inputBgColor\"\n [style.color]=\"mode !== 'edit' ? '' : inputTextColor\" [style.border]=\"mode !== 'edit' ? 'none' : inputBorder\"\n [style.height]=\"inputHeight\"\n [style.font-size]=\"inputValueSize\" (blur)=\" blurEmit()\" (focusin)=\"focusinEmit($event)\"\n (dateTimeInput)=\"onInputChange($event)\"\n [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || labelWeight : ''\n }\" style=\"\n width: 100% !important;\n padding: 10px;\n padding-left: 5px;\n border-radius: 5px;\n border: none !important;\n font-size: 14px;\" />\n <owl-date-time #dt></owl-date-time>\n <owl-date-time [pickerType]=\"'calendar'\" #dt2></owl-date-time>\n <owl-date-time [pickerType]=\"'timer'\" #dt3></owl-date-time>\n }\n <div *ngIf=\"mode === 'edit' && (type === 'datetime' || type === 'date' || type === 'time')\" class=\"icon-container\" (click)=\"openDatePicker(type)\"\n style=\"cursor: pointer;\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path d=\"M2.32031 7.05285H15.6883\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.3322 9.98254H12.3392\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.00408 9.98254H9.01103\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.66815 9.98254H5.67509\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.3322 12.8976H12.3392\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.00408 12.8976H9.01103\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.66815 12.8976H5.67509\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12.0329 1.5V3.96809\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.97435 1.5V3.96809\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.1787 2.68457H5.82822C3.6257 2.68457 2.25 3.91152 2.25 6.16684V12.9541C2.25 15.2449 3.6257 16.5002 5.82822 16.5002H12.1718C14.3812 16.5002 15.75 15.2661 15.75 13.0108V6.16684C15.7569 3.91152 14.3882 2.68457 12.1787 2.68457Z\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div *ngIf=\"mode === 'edit' && type === 'list'\" class=\"icon-container\">\n <!-- Minimal Dotted Loader -->\n <div *ngIf=\"isLoading\" class=\"dotted-loader\" aria-label=\"Loading\" role=\"status\">\n <span *ngFor=\"let dot of [].constructor(6); let i = index\" class=\"dot\" [style.--i]=\"i\"></span>\n </div>\n <svg *ngIf=\"!isLoading\" (click)=\"removeValue()\" (keydown.enter)=\"removeValue()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"cursor: pointer;\">\n <path d=\"M9.16992 14.8299L14.8299 9.16992\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M14.8299 14.8299L9.16992 9.16992\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9 22H15C20 22 22 20 22 15V9C22 4 20 2 15 2H9C4 2 2 4 2 9V15C2 20 4 22 9 22Z\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> \n </div>\n <label class=\"checkboxLab\" *ngIf=\"label && type === 'checkbox' && showLabel\" [style.font-weight]=\"labelWeight\"\n [style.font-size]=\"labelSize\" [style.color]=\"labelColor || '#9a9a9a'\"\n style=\"margin-bottom: 0; padding-left: 10px; padding-right: 10px; width: 100% !important;\"> {{ label }}\n <div *ngIf=\"label && type === 'checkbox' && required && showLabel\" style=\"color: red;\">*</div>\n </label> \n <!-- Always Show Dropdown Icon -->\n <svg *ngIf=\"mode === 'edit' && type === 'dropdown'\" style=\"margin-right: 5px;\" (mousedown)=\"toggle($event); $event.preventDefault()\"\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 22H15C20 22 22 20 22 15V9C22 4 20 2 15 2H9C4 2 2 4 2 9V15C2 20 4 22 9 22Z\" stroke=\"#292D32\"\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M8.46997 10.64L12 14.16L15.53 10.64\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n\n <img *ngIf=\"mode === 'edit' && inputIconRightSrc\" [src]=\"inputIconRightSrc\" class=\"icon right-icon\"\n [style.height]=\"svgHeight\" [style.width]=\"svgWidth\">\n <img *ngIf=\"mode === 'edit' && type === 'password'\" class=\"toggle-icon\" (click)=\"togglePasswordVisibility()\"\n [src]=\"!isPasswordVisible ? '/assets/images/icons/general/Hide-Password.svg' : '/assets/images/icons/general/Show-Password.svg'\" />\n <svg *ngIf=\"mode !== 'edit' && !question.isReadOnly\" class=\"edit-icon\"\n (click)=\"viewEditClick(question)\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M1.99987 9.0017L4.39602 11.3979C4.50371 11.5055 4.66525 11.5055 4.77294 11.3979L10.7499 5.39401C10.8576 5.28631 10.8576 5.12477 10.7499 5.01708L8.38064 2.64785C8.27294 2.54016 8.11141 2.54016 8.00371 2.64785L1.99987 8.6517C1.89217 8.75939 1.89217 8.92093 1.99987 9.0017ZM9.1614 1.54401C9.05371 1.6517 9.05371 1.81324 9.1614 1.92093L11.5306 4.29016C11.6383 4.39785 11.7999 4.39785 11.9076 4.29016L12.5806 3.61708C13.0114 3.21324 13.0114 2.56708 12.5806 2.13631L11.3153 0.870928C10.8845 0.440159 10.2114 0.440159 9.78063 0.870928L9.1614 1.54401ZM0.00755862 12.9863C-0.0462875 13.2555 0.19602 13.4979 0.465251 13.444L3.39987 12.744C3.50756 12.7171 3.58833 12.6632 3.64217 12.6094L3.69602 12.5555C3.74987 12.5017 3.77679 12.3132 3.6691 12.2055L1.24602 9.78247C1.13833 9.67478 0.949866 9.7017 0.89602 9.75554L0.842174 9.80939C0.761405 9.89016 0.734482 9.97093 0.707559 10.0517L0.00755862 12.9863Z\"\n fill=\"#B0ADAB\" />\n </svg>\n <!-- SKS14JUN25 Show save and cancel icons only when the input value is edited -->\n <div *ngIf=\"viewEdit && originalValue !== value\" (mouseenter)=\"isSaveHovered = true\" (mouseleave)=\"isSaveHovered = false\"\n style=\"padding-right: 5px; display: flex; align-items: center;\">\n <svg *ngIf=\"!isSaveHovered\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.9502 0.5C8.96006 0.500106 11.4004 2.94031 11.4004 5.9502C11.4003 8.95999 8.95999 11.4003 5.9502 11.4004C2.94031 11.4004 0.500106 8.96006 0.5 5.9502C0.5 2.94024 2.94024 0.5 5.9502 0.5Z\"\n stroke=\"#837F8E\" />\n <path\n d=\"M8.88111 3.84583C8.83269 3.7972 8.77513 3.7586 8.71176 3.73227C8.64838 3.70594 8.58043 3.69238 8.5118 3.69238C8.44317 3.69238 8.37521 3.70594 8.31184 3.73227C8.24846 3.7586 8.19091 3.7972 8.14249 3.84583L4.8269 7.16347L3.35253 5.6891C3.30403 5.6406 3.24646 5.60213 3.18309 5.57588C3.11972 5.54964 3.05181 5.53613 2.98322 5.53613C2.91463 5.53613 2.84672 5.54964 2.78335 5.57588C2.71999 5.60213 2.66241 5.6406 2.61391 5.6891C2.56541 5.7376 2.52694 5.79518 2.50069 5.85854C2.47445 5.92191 2.46094 5.98982 2.46094 6.05841C2.46094 6.127 2.47445 6.19491 2.50069 6.25828C2.52694 6.32165 2.56541 6.37922 2.61391 6.42772L4.45677 8.27058C4.50519 8.31922 4.56274 8.35781 4.62612 8.38414C4.6895 8.41047 4.75745 8.42403 4.82608 8.42403C4.89471 8.42403 4.96266 8.41047 5.02604 8.38414C5.08942 8.35781 5.14697 8.31922 5.19539 8.27058L8.88111 4.58445C8.92974 4.53603 8.96834 4.47848 8.99467 4.4151C9.021 4.35173 9.03456 4.28377 9.03456 4.21514C9.03456 4.14651 9.021 4.07856 8.99467 4.01518C8.96834 3.9518 8.92974 3.89425 8.88111 3.84583Z\"\n fill=\"#837F8E\" />\n </svg>\n\n <svg *ngIf=\"isSaveHovered\" (click)=\"saveChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 13\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.95 12.8004C9.23609 12.8004 11.9 10.1365 11.9 6.85039C11.9 3.5643 9.23609 0.900391 5.95 0.900391C2.66391 0.900391 0 3.5643 0 6.85039C0 10.1365 2.66391 12.8004 5.95 12.8004Z\"\n fill=\"#259566\" />\n <path\n d=\"M8.88111 4.74622C8.83269 4.69759 8.77513 4.65899 8.71176 4.63266C8.64838 4.60633 8.58043 4.59277 8.5118 4.59277C8.44317 4.59277 8.37521 4.60633 8.31184 4.63266C8.24846 4.65899 8.19091 4.69759 8.14249 4.74622L4.8269 8.06386L3.35253 6.58949C3.30403 6.54099 3.24646 6.50252 3.18309 6.47627C3.11972 6.45003 3.05181 6.43652 2.98322 6.43652C2.91463 6.43652 2.84672 6.45003 2.78335 6.47627C2.71999 6.50252 2.66241 6.54099 2.61391 6.58949C2.56541 6.63799 2.52694 6.69557 2.50069 6.75893C2.47445 6.8223 2.46094 6.89022 2.46094 6.9588C2.46094 7.02739 2.47445 7.09531 2.50069 7.15867C2.52694 7.22204 2.56541 7.27961 2.61391 7.32811L4.45677 9.17097C4.50519 9.21961 4.56274 9.2582 4.62612 9.28453C4.6895 9.31086 4.75745 9.32442 4.82608 9.32442C4.89471 9.32442 4.96266 9.31086 5.02604 9.28453C5.08942 9.2582 5.14697 9.21961 5.19539 9.17097L8.88111 5.48484C8.92974 5.43642 8.96834 5.37887 8.99467 5.31549C9.021 5.25212 9.03456 5.18416 9.03456 5.11553C9.03456 5.0469 9.021 4.97895 8.99467 4.91557C8.96834 4.8522 8.92974 4.79465 8.88111 4.74622Z\"\n fill=\"white\" />\n </svg>\n </div>\n <div *ngIf=\"viewEdit && originalValue !== value\" (mouseenter)=\"isDiscardHovered = true\" (mouseleave)=\"isDiscardHovered = false\"\n style=\" display: flex; align-items: center;\">\n <svg *ngIf=\"!isDiscardHovered\" width=\"16\" height=\"16\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.05555 4.00883L5.94 5.12438L4.82445 4.00883C4.57861 3.76299 4.18191 3.76299 3.93607 4.00883C3.69023 4.25467 3.69023 4.65137 3.93607 4.89721L5.05162 6.01276L3.93607 7.12831C3.69023 7.37415 3.69023 7.77085 3.93607 8.01669C4.18191 8.26253 4.57861 8.26253 4.82445 8.01669L5.94 6.90114L7.05555 8.01669C7.30139 8.26253 7.69809 8.26253 7.94393 8.01669C8.18977 7.77085 8.18977 7.37415 7.94393 7.12831L6.82838 6.01276L7.94393 4.89721C8.18977 4.65137 8.18977 4.25467 7.94393 4.00883C7.69809 3.77285 7.30021 3.77285 7.05555 4.00883ZM5.94 0.0820312C2.70017 0.0820312 0.0808594 2.70134 0.0808594 5.94118C0.0808594 9.18101 2.70017 11.8003 5.94 11.8003C9.17983 11.8003 11.7991 9.18101 11.7991 5.94118C11.7991 2.70134 9.17983 0.0820312 5.94 0.0820312ZM5.94 10.6367C3.35426 10.6367 1.24422 8.52667 1.24422 5.94118C1.24422 3.35553 3.35426 1.24549 5.94 1.24549C8.52558 1.24549 10.6356 3.35553 10.6356 5.94118C10.6356 8.52667 8.52558 10.6367 5.94 10.6367Z\"\n fill=\"#B0ADAB\" />\n </svg>\n\n <svg *ngIf=\"isDiscardHovered\" (click)=\"discardChanges()\" width=\"16\" height=\"16\" viewBox=\"0 0 12 13\"\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.05555 4.97471L5.94 6.09026L4.82445 4.97471C4.57861 4.72887 4.18191 4.72887 3.93607 4.97471C3.69023 5.22055 3.69023 5.61725 3.93607 5.86309L5.05162 6.97864L3.93607 8.09419C3.69023 8.34003 3.69023 8.73673 3.93607 8.98257C4.18191 9.22841 4.57861 9.22841 4.82445 8.98257L5.94 7.86702L7.05555 8.98257C7.30139 9.22841 7.69809 9.22841 7.94393 8.98257C8.18977 8.73673 8.18977 8.34003 7.94393 8.09419L6.82838 6.97864L7.94393 5.86309C8.18977 5.61725 8.18977 5.22055 7.94393 4.97471C7.69809 4.73873 7.30021 4.73873 7.05555 4.97471ZM5.94 1.06062C2.70017 1.06062 0.0808594 3.67993 0.0808594 6.91977C0.0808594 10.1596 2.70017 12.7789 5.94 12.7789C9.17983 12.7789 11.7991 10.1596 11.7991 6.91977C11.7991 3.67993 9.17983 1.06062 5.94 1.06062ZM5.94 11.6153C3.35426 11.6153 1.24422 9.50525 1.24422 6.91977C1.24422 4.33412 3.35426 2.22408 5.94 2.22408C8.52558 2.22408 10.6356 4.33412 10.6356 6.91977C10.6356 9.50525 8.52558 11.6153 5.94 11.6153Z\"\n fill=\"#FF3636\" />\n </svg>\n </div>\n </div>\n </div>\n <div *ngIf=\"type !== 'label' && type !== 'checkbox' && (type === 'richtext' || type === 'textarea')\" style=\"display: flex;\">\n <div class=\"input-container\"\n [style.margin-top]=\"showLabel && label ? '' : '21px !important'\"\n [style.backgroundColor]=\"mode === 'edit' ? inputBgColor : ''\"\n [class.invalid]=\"control.invalid && control.touched\"\n [style.border]=\"mode === 'edit' ? inputBorder === 'none' ? ('1px solid ' + inputBgColor) : inputBorder : 'none'\">\n <!-- SKS14JUN25 Dynamically load Quill editor toolbar -->\n <quill-editor *ngIf=\"mode === 'edit' && type === 'richtext'\" [(ngModel)]=\"value\" (ngModelChange)=\"onInputChange($event)\" [placeholder]=\"placeholder\"\n [readOnly]=\"mode !== 'edit' || question.isReadOnly\"\n (focusout)=\"onEditorFocusOut()\" [class.error]=\"control.invalid && (control.touched || control.dirty)\"\n [modules]=\"getQuillModules(question.id)\"\n style=\"width: 100%;\n padding: 10px 10px 10px 5px;\n border-radius: 5px;\n border: none;\n font-size: 14px;\">\n </quill-editor>\n <!-- View mode -->\n <div *ngIf=\"mode !== 'edit' && type === 'richtext'\" class=\"quill-view-content\" [innerHTML]=\"value\"\n style=\"width: 100%;\n padding: 10px 10px 10px 5px;\n border-radius: 5px;\n border: none;\n font-size: 14px;\">\n </div>\n <textarea *ngIf=\"type === 'textarea'\" [id]=\"inputId\" [rows]=\"rows\"\n [attr.placeholder]=\"mode !== 'edit' ? '' : placeholder\" [ngClass]=\"'custom-input'\" [formControl]=\"control\"\n [style.backgroundColor]=\"mode !== 'edit' ? '' : inputBgColor\"\n [style.color]=\"mode !== 'edit' ? '' : inputTextColor\" [style.border]=\"mode !== 'edit' ? 'none' : inputBorder\"\n [style.height]=\"inputHeight\" [value]=\"value\" (input)=\" onInputChange($event)\"\n [style.font-size]=\"inputValueSize\" (blur)=\" blurEmit()\" (focusin)=\"focusinEmit($event)\"\n [readOnly]=\"mode !== 'edit' || question.isReadOnly\" [ngStyle]=\"{\n '--placeholder-font': mode === 'edit' ? placeholderFont || labelFont : '',\n '--placeholder-color': mode === 'edit' ? placeholderColor || '#9a9a9a' : '',\n '--placeholder-size': mode === 'edit' ? placeholderSize || inputValueSize : '',\n '--placeholder-weight': mode === 'edit' ? placeholderWeight || labelWeight : ''\n }\" style=\"\n width: 100%;\n padding: 10px;\n padding-left: 5px;\n border-radius: 5px;\n border: none !important;\n font-size: 14px;\">\n </textarea>\n <svg *ngIf=\"mode !== 'edit' && !viewEdit && (type === 'richtext' || type === 'textarea') && !question.isReadOnly\"\n class=\"edit-icon\" (click)=\"viewEditClick(question)\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M1.99987 9.0017L4.39602 11.3979C4.50371 11.5055 4.66525 11.5055 4.77294 11.3979L10.7499 5.39401C10.8576 5.28631 10.8576 5.12477 10.7499 5.01708L8.38064 2.64785C8.27294 2.54016 8.11141 2.54016 8.00371 2.64785L1.99987 8.6517C1.89217 8.75939 1.89217 8.92093 1.99987 9.0017ZM9.1614 1.54401C9.05371 1.6517 9.05371 1.81324 9.1614 1.92093L11.5306 4.29016C11.6383 4.39785 11.7999 4.39785 11.9076 4.29016L12.5806 3.61708C13.0114 3.21324 13.0114 2.56708 12.5806 2.13631L11.3153 0.870928C10.8845 0.440159 10.2114 0.440159 9.78063 0.870928L9.1614 1.54401ZM0.00755862 12.9863C-0.0462875 13.2555 0.19602 13.4979 0.465251 13.444L3.39987 12.744C3.50756 12.7171 3.58833 12.6632 3.64217 12.6094L3.69602 12.5555C3.74987 12.5017 3.77679 12.3132 3.6691 12.2055L1.24602 9.78247C1.13833 9.67478 0.949866 9.7017 0.89602 9.75554L0.842174 9.80939C0.761405 9.89016 0.734482 9.97093 0.707559 10.0517L0.00755862 12.9863Z\"\n fill=\"#B0ADAB\" />\n </svg>\n </div>\n </div>\n <!-- SKS23APR25 Use control.invalid to show error on submit click -->\n <div *ngIf=\"type != 'checkbox' && type !== 'label' && control.invalid && (control.touched || control.dirty)\" style=\"height: 20px;\">\n <div class=\"error-message\">\n {{ getErrorMessage() }}\n </div>\n </div>\n </div>\n</div>", styles: ["label{font-size:14px;margin-bottom:10px;color:color-mix(in srgb,black,rgb(0,0,0) 80%)}.toggle-icon{width:20px;height:20px;cursor:pointer;fill:#666}.error-message{color:red;font-size:12px}input[type=text].custom-input,input[type=password].custom-input,input[type=number].custom-input,input[type=email].custom-input,input[type=tel].custom-input,input[type=list].custom-input,input[type=dropdown].custom-input,input[type=location].custom-input{width:100%;padding:10px 10px 10px 5px;border-radius:5px;border:none;font-size:14px}input.nxt-custom-input{width:100%!important;padding:10px 10px 10px 5px;border-radius:5px;border:none;font-size:14px}.custom-input:-webkit-autofill,.custom-input:-webkit-autofill:hover,.custom-input:-webkit-autofill:focus,.custom-input:-webkit-autofill:active,.nxt-custom-input:-webkit-autofill,.nxt-custom-input:-webkit-autofill:hover,.nxt-custom-input:-webkit-autofill:focus,.nxt-custom-input:-webkit-autofill:active{transition:background-color 5000s ease-in-out 0s!important;-webkit-text-fill-color:inherit!important}.phone-input-container{display:flex;align-items:center;position:relative}.country-selector{display:flex;align-items:center;cursor:pointer;padding-right:12px;border-right:#ccc;margin-right:12px}.flag{margin-right:8px;font-size:20px}.dial-code{margin-right:8px;font-weight:500}.country-dropdown{position:absolute;top:100%;left:0;width:300px;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 4px #0000001a;z-index:1000;margin-top:4px}.search-box{padding:8px;border-bottom:1px solid #ccc}.search-box input{width:100%;padding:8px;border:1px solid #ccc;border-radius:4px}.country-list{max-height:200px;overflow-y:auto}.country-item{display:flex;align-items:center;padding:8px 12px;cursor:pointer}.country-item:hover{background-color:color-mix(in srgb,#fff,rgba(0,0,0,0) 30%)}.country-item .name{flex:1;margin:0 12px}.fcOtp{width:40px;height:40px;text-align:center;font-size:18px;border:1px solid #ccc;border-radius:5px;margin:5px;outline:none;transition:border-color .2s ease-in-out}input:focus{outline:none;border-color:transparent;box-shadow:none}.input-container{display:flex;align-items:center;width:100%;border-radius:5px;border:1px solid #ccc;padding-left:5px;padding-right:10px}.input-container .icon-container{right:15px;padding-right:5px;pointer-events:auto;width:22px;height:22px;display:flex;align-items:center;justify-content:center}.input-container.invalid{border:1px solid #DC3545!important;border-radius:5px}.checkbox-padding{margin-top:20px!important;padding:13px!important;width:100%!important;border:none!important}.view-mode{font-size:14px;color:#333}@media print{.view-mode{font-size:12pt;color:#000}}input::placeholder{font-family:var(--placeholder-font);color:var(--placeholder-color);font-size:var(--placeholder-size);font-weight:var(--placeholder-weight)}.dotted-loader{position:relative;width:10px;height:10px}.dotted-loader .dot{--i: 0;position:absolute;top:50%;left:50%;width:3px;height:3px;margin:-2px 0 0 -2px;border-radius:50%;background-color:#696969;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg));animation:spinDot 1s linear infinite;animation-delay:calc(var(--i) * .1s)}@keyframes spinDot{0%{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}50%{opacity:1;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(1.3)}to{opacity:.3;transform:rotate(calc(var(--i) * 60deg)) translate(8px) rotate(calc(var(--i) * -60deg)) scale(.9)}}input:disabled{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}textarea:disabled{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}.quill-view-content{cursor:default;background-color:light-dark(rgba(239,239,239,0),rgba(59,59,59,0))!important;color:light-dark(rgb(84,84,84),rgb(170,170,170))!important}:is() .ql-editor img{cursor:pointer}:is() .image-resizer{display:block!important;visibility:visible!important}:is() .ql-editor .image-resizer{border:1px dashed #000;position:absolute}:is() .ql-editor .image-resizer .handle{background-color:#000;border:1px solid #fff;border-radius:50%;height:12px;width:12px;position:absolute}quill-editor{width:100%}.quill-view-content{border:none;padding:0;font-size:14px;line-height:1.6;color:#333;overflow:hidden}.quill-view-content *{max-width:100%;box-sizing:border-box;word-wrap:break-word}.edit-icon{display:none;cursor:pointer}.hover-wrapper:hover .edit-icon{display:block}input:disabled{color:#999!important;cursor:not-allowed!important}textarea:disabled{color:#999!important;cursor:not-allowed!important}.quill-view-content{color:#999!important;cursor:not-allowed!important}\n"] }]
2793
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.ChangeService }, { type: i2.DataService }], propDecorators: { label: [{
2794
- type: Input
2795
- }], labelFont: [{
2796
- type: Input
2797
- }], labelWeight: [{
2798
- type: Input
2799
- }], inputWeight: [{
2800
- type: Input
2801
- }], labelSize: [{
2802
- type: Input
2803
- }], inputValueSize: [{
2804
- type: Input
2805
- }], labelColor: [{
2806
- type: Input
2807
- }], showLabel: [{
2808
- type: Input
2809
- }], svgHeight: [{
2810
- type: Input
2811
- }], svgWidth: [{
2812
- type: Input
2813
- }], type: [{
2814
- type: Input
2815
- }], inputIconRightSrc: [{
2816
- type: Input
2817
- }], inputIconLeftSrc: [{
2818
- type: Input
2819
- }], required: [{
2820
- type: Input
2821
- }], minLength: [{
2822
- type: Input
2823
- }], pattern: [{
2824
- type: Input
2825
- }], errorMessages: [{
2826
- type: Input
2827
- }], maxLength: [{
2828
- type: Input
2829
- }], placeholder: [{
2830
- type: Input
2831
- }], inputBgColor: [{
2832
- type: Input
2833
- }], inputBorder: [{
2834
- type: Input
2835
- }], placeholderColor: [{
2836
- type: Input
2837
- }], placeholderFont: [{
2838
- type: Input
2839
- }], placeholderWeight: [{
2840
- type: Input
2841
- }], placeholderSize: [{
2842
- type: Input
2843
- }], inputTextColor: [{
2844
- type: Input
2845
- }], inputHeight: [{
2846
- type: Input
2847
- }], inputWidth: [{
2848
- type: Input
2849
- }], inputId: [{
2850
- type: Input
2851
- }], inputBorderSize: [{
2852
- type: Input
2853
- }], inputConfig: [{
2854
- type: Input
2855
- }], confPassVal: [{
2856
- type: Input
2857
- }], confPass: [{
2858
- type: Input
2859
- }], mode: [{
2860
- type: Input
2861
- }], value: [{
2862
- type: Input
2863
- }], question: [{
2864
- type: Input
2865
- }], showSuggestion: [{
2866
- type: Input
2867
- }], ariaOwns: [{
2868
- type: Input
2869
- }], ariaHasPopup: [{
2870
- type: Input
2871
- }], isLoading: [{
2872
- type: Input
2873
- }], options: [{
2874
- type: Input
2875
- }], minDate: [{
2876
- type: Input
2877
- }], maxDate: [{
2878
- type: Input
2879
- }], rows: [{
2880
- type: Input
2881
- }], size: [{
2882
- type: Input
2883
- }], valueChange: [{
2884
- type: Output
2885
- }], inputValue: [{
2886
- type: Output
2887
- }], onBlur: [{
2888
- type: Output
2889
- }], onFocus: [{
2890
- type: Output
2891
- }], toggleEmit: [{
2892
- type: Output
2893
- }], nativeInputRef: [{
2894
- type: Output
2895
- }], removeValueEmit: [{
2896
- type: Output
2897
- }], inputEls: [{
2898
- type: ViewChildren,
2899
- args: ['inputEl']
2900
- }], dateTimePicker: [{
2901
- type: ViewChildren,
2902
- args: ['dt']
2903
- }], datePicker: [{
2904
- type: ViewChildren,
2905
- args: ['dt1']
2906
- }], timePicker: [{
2907
- type: ViewChildren,
2908
- args: ['dt2']
2909
- }], dtPicker: [{
2910
- type: ViewChild,
2911
- args: ['dt']
2912
- }], dPicker: [{
2913
- type: ViewChild,
2914
- args: ['dt2']
2915
- }], tPicker: [{
2916
- type: ViewChild,
2917
- args: ['dt3']
2918
- }], inputRef: [{
2919
- type: ViewChild,
2920
- args: ['inputRef', { static: false }]
2921
- }], closeDropdown: [{
2922
- type: HostListener,
2923
- args: ['document:click', ['$event']]
2924
- }] } });
2925
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnh0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL254dC1pbnB1dC9ueHQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvbnh0LWlucHV0L254dC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBQ1osT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLFlBQVksRUFBd0MsWUFBWSxFQUFFLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDeE0sT0FBTyxFQUFtQixTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQWlDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXhMLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxSCxPQUFPLEVBQUUsb0JBQW9CLEVBQWdCLE1BQU0sV0FBVyxDQUFDO0FBQy9ELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sWUFBWSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBRS9DLGtHQUFrRztBQUNsRyxNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxjQUFjO0lBQy9GLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxh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ZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUlGLElBQUk7c0JBRFAsS0FBSztnQkFLSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBRWtCLFFBQVE7c0JBQWhDLFlBQVk7dUJBQUMsU0FBUztnQkFFSCxjQUFjO3NCQUFqQyxZQUFZO3VCQUFDLElBQUk7Z0JBQ0csVUFBVTtzQkFBOUIsWUFBWTt1QkFBQyxLQUFLO2dCQUNFLFVBQVU7c0JBQTlCLFlBQVk7dUJBQUMsS0FBSztnQkFDRixRQUFRO3NCQUF4QixTQUFTO3VCQUFDLElBQUk7Z0JBQ0csT0FBTztzQkFBeEIsU0FBUzt1QkFBQyxLQUFLO2dCQUNFLE9BQU87c0JBQXhCLFNBQVM7dUJBQUMsS0FBSztnQkFDMEIsUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXN5RXhDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vU0tTMzFKQU4yNVxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NoaWxkcmVuLCBRdWVyeUxpc3QsIEVsZW1lbnRSZWYsIFNpbXBsZUNoYW5nZXMsIEhvc3RMaXN0ZW5lciwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhbmdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPd2xEYXRlVGltZUNvbXBvbmVudCwgT3dsRGF0ZVRpbWVNb2R1bGUsIE93bE5hdGl2ZURhdGVUaW1lTW9kdWxlIH0gZnJvbSAnQGRhbmllbG1vbmNhZGEvYW5ndWxhci1kYXRldGltZS1waWNrZXInO1xuaW1wb3J0IHsgUXVpbGxFZGl0b3JDb21wb25lbnQsIFF1aWxsTW9kdWxlcyB9IGZyb20gJ25neC1xdWlsbCc7XG5pbXBvcnQgUXVpbGwgZnJvbSAncXVpbGwnO1xuaW1wb3J0IHsgTWVudGlvbiB9IGZyb20gJ3F1aWxsLW1lbnRpb24nO1xuaW1wb3J0IEltYWdlUmVzaXpvciBmcm9tICdxdWlsbC1pbWFnZS1yZXNpem9yJztcblxuLy8gU0tTMTFKVU4yNSBBbiBhcnJheSBmb250RmFtaWx5QXJyIGlzIGNyZWF0ZWQgY29udGFpbmluZyBhIGxpc3Qgb2YgZm9udCBmYW1pbHkgbmFtZXMgYXMgc3RyaW5ncy5cbmNvbnN0IGZvbnRGYW1pbHlBcnIgPSBbXCJSb2JvdG9cIiwgXCJSb2JvdG8gQ29uZGVuc2VkXCIsIFwiQXJpYWxcIiwgXCJWZXJkYW5hXCIsIFwiVGFob21hXCIsIFwiVHJlYnVjaGV0IE1TXCIsXG4gIFwiR2VvcmdpYVwiLCBcIlRpbWVzIE5ldyBSb21hblwiLCBcIkNvdXJpZXIgTmV3XCIsIFwiUGFsYXRpbm8gTGlub3R5cGVcIixcbiAgXCJTZWdvZSBVSVwiLCBcIkNhbGlicmlcIiwgXCJDYWxpYnJpIExpZ2h0XCIsIFwiU2Fucy1TZXJpZlwiLCBcIkhlbHZldGljYVwiLFxuICBcIkltcGFjdFwiLCBcIkdhcmFtb25kXCIsIFwiQ29taWMgU2FucyBNU1wiLCBcIkx1Y2lkYSBDb25zb2xlXCIsIFwiRnJhbmtsaW4gR290aGljIE1lZGl1bVwiXTtcbi8vIFNLUzExSlVOMjUgUmVnaXN0ZXIgUXVpbGwgbW9kdWxlc1xuUXVpbGwucmVnaXN0ZXIoJ21vZHVsZXMvbWVudGlvbicsIE1lbnRpb24pO1xuSW1hZ2VSZXNpem9yLlF1aWxsID0gUXVpbGw7XG5RdWlsbC5yZWdpc3RlcignbW9kdWxlcy9pbWFnZVJlc2l6b3InLCBJbWFnZVJlc2l6b3IpO1xuXG4vLyBTS1MxMUpVTjI1IFRoZSBRdWlsbCBmb250IHN0eWxlIGF0dHJpYnV0b3IgaXMgaW1wb3J0ZWQgYW5kIGl0IGlzIHJlZ2lzdGVyZWQgd2l0aCBRdWlsXG5sZXQgZm9udHM6IGFueSA9IFF1aWxsLmltcG9ydChcImF0dHJpYnV0b3JzL3N0eWxlL2ZvbnRcIik7XG5mb250cy53aGl0ZWxpc3QgPSBmb250RmFtaWx5QXJyO1xuUXVpbGwucmVnaXN0ZXIoZm9udHMsIHRydWUpO1xuY29uc3QgaWNvbnMgPSBRdWlsbC5pbXBvcnQoJ3VpL2ljb25zJyk7XG5pY29uc1snc2F2ZSddID0gYDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMiAxM1wiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNNS45NSAxMi44MDA0QzkuMjM2MDkgMTIuODAwNCAxMS45IDEwLjEzNjUgMTEuOSA2Ljg1MDM5QzExLjkgMy41NjQzIDkuMjM2MDkgMC45MDAzOTEgNS45NSAwLjkwMDM5MUMyLjY2MzkxIDAuOTAwMzkxIDAgMy41NjQzIDAgNi44NTAzOUMwIDEwLjEzNjUgMi42NjM5MSAxMi44MDA0IDUuOTUgMTIuODAwNFpcIlxuICAgICAgICAgICAgICBmaWxsPVwiIzI1OTU2NlwiIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTguODgxMTEgNC43NDYyMkM4LjgzMjY5IDQuNjk3NTkgOC43NzUxMyA0LjY1ODk5IDguNzExNzYgNC42MzI2NkM4LjY0ODM4IDQuNjA2MzMgOC41ODA0MyA0LjU5Mjc3IDguNTExOCA0LjU5Mjc3QzguNDQzMTcgNC41OTI3NyA4LjM3NTIxIDQuNjA2MzMgOC4zMTE4NCA0LjYzMjY2QzguMjQ4NDYgNC42NTg5OSA4LjE5MDkxIDQuNjk3NTkgOC4xNDI0OSA0Ljc0NjIyTDQuODI2OSA4LjA2Mzg2TDMuMzUyNTMgNi41ODk0OUMzLjMwNDAzIDYuNTQwOTkgMy4yNDY0NiA2LjUwMjUyIDMuMTgzMDkgNi40NzYyN0MzLjExOTcyIDYuNDUwMDMgMy4wNTE4MSA2LjQzNjUyIDIuOTgzMjIgNi40MzY1MkMyLjkxNDYzIDYuNDM2NTIgMi44NDY3MiA2LjQ1MDAzIDIuNzgzMzUgNi40NzYyN0MyLjcxOTk5IDYuNTAyNTIgMi42NjI0MSA2LjU0MDk5IDIuNjEzOTEgNi41ODk0OUMyLjU2NTQxIDYuNjM3OTkgMi41MjY5NCA2LjY5NTU3IDIuNTAwNjkgNi43NTg5M0MyLjQ3NDQ1IDYuODIyMyAyLjQ2MDk0IDYuODkwMjIgMi40NjA5NCA2Ljk1ODhDMi40NjA5NCA3LjAyNzM5IDIuNDc0NDUgNy4wOTUzMSAyLjUwMDY5IDcuMTU4NjdDMi41MjY5NCA3LjIyMjA0IDIuNTY1NDEgNy4yNzk2MSAyLjYxMzkxIDcuMzI4MTFMNC40NTY3NyA5LjE3MDk3QzQuNTA1MTkgOS4yMTk2MSA0LjU2Mjc0IDkuMjU4MiA0LjYyNjEyIDkuMjg0NTNDNC42ODk1IDkuMzEwODYgNC43NTc0NSA5LjMyNDQyIDQuODI2MDggOS4zMjQ0MkM0Ljg5NDcxIDkuMzI0NDIgNC45NjI2NiA5LjMxMDg2IDUuMDI2MDQgOS4yODQ1M0M1LjA4OTQyIDkuMjU4MiA1LjE0Njk3IDkuMjE5NjEgNS4xOTUzOSA5LjE3MDk3TDguODgxMTEgNS40ODQ4NEM4LjkyOTc0IDUuNDM2NDIgOC45NjgzNCA1LjM3ODg3IDguOTk0NjcgNS4zMTU0OUM5LjAyMSA1LjI1MjEyIDkuMDM0NTYgNS4xODQxNiA5LjAzNDU2IDUuMTE1NTNDOS4wMzQ1NiA1LjA0NjkgOS4wMjEgNC45Nzg5NSA4Ljk5NDY3IDQuOTE1NTdDOC45NjgzNCA0Ljg1MjIgOC45Mjk3NCA0Ljc5NDY1IDguODgxMTEgNC43NDYyMlpcIlxuICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgIDwvc3ZnPmA7XG5pY29uc1snZGlzY2FyZCddID0gYDxzdmcgKm5nSWY9XCJpc0Rpc2NhcmRIb3ZlcmVkXCIgKGNsaWNrKT1cImRpc2NhcmRDaGFuZ2VzKClcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEyIDEzXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgZD1cIk03LjA1NTU1IDQuOTc0NzFMNS45NCA2LjA5MDI2TDQuODI0NDUgNC45NzQ3MUM0LjU3ODYxIDQuNzI4ODcgNC4xODE5MSA0LjcyODg3IDMuOTM2MDcgNC45NzQ3MUMzLjY5MDIzIDUuMjIwNTUgMy42OTAyMyA1LjYxNzI1IDMuOTM2MDcgNS44NjMwOUw1LjA1MTYyIDYuOTc4NjRMMy45MzYwNyA4LjA5NDE5QzMuNjkwMjMgOC4zNDAwMyAzLjY5MDIzIDguNzM2NzMgMy45MzYwNyA4Ljk4MjU3QzQuMTgxOTEgOS4yMjg0MSA0LjU3ODYxIDkuMjI4NDEgNC44MjQ0NSA4Ljk4MjU3TDUuOTQgNy44NjcwMkw3LjA1NTU1IDguOTgyNTdDNy4zMDEzOSA5LjIyODQxIDcuNjk4MDkgOS4yMjg0MSA3Ljk0MzkzIDguOTgyNTdDOC4xODk3NyA4LjczNjczIDguMTg5NzcgOC4zNDAwMyA3Ljk0MzkzIDguMDk0MTlMNi44MjgzOCA2Ljk3ODY0TDcuOTQzOTMgNS44NjMwOUM4LjE4OTc3IDUuNjE3MjUgOC4xODk3NyA1LjIyMDU1IDcuOTQzOTMgNC45NzQ3MUM3LjY5ODA5IDQuNzM4NzMgNy4zMDAyMSA0LjczODczIDcuMDU1NTUgNC45NzQ3MVpNNS45NCAxLjA2MDYyQzIuNzAwMTcgMS4wNjA2MiAwLjA4MDg1OTQgMy42Nzk5MyAwLjA4MDg1OTQgNi45MTk3N0MwLjA4MDg1OTQgMTAuMTU5NiAyLjcwMDE3IDEyLjc3ODkgNS45NCAxMi43Nzg5QzkuMTc5ODMgMTIuNzc4OSAxMS43OTkxIDEwLjE1OTYgMTEuNzk5MSA2LjkxOTc3QzExLjc5OTEgMy42Nzk5MyA5LjE3OTgzIDEuMDYwNjIgNS45NCAxLjA2MDYyWk01Ljk0IDExLjYxNTNDMy4zNTQyNiAxMS42MTUzIDEuMjQ0MjIgOS41MDUyNSAxLjI0NDIyIDYuOTE5NzdDMS4yNDQyMiA0LjMzNDEyIDMuMzU0MjYgMi4yMjQwOCA1Ljk0IDIuMjI0MDhDOC41MjU1OCAyLjIyNDA4IDEwLjYzNTYgNC4zMzQxMiAxMC42MzU2IDYuOTE5NzdDMTAuNjM1NiA5LjUwNTI1IDguNTI1NTggMTEuNjE1MyA1Ljk0IDExLjYxNTNaXCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkYzNjM2XCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5gO1xuXG5mdW5jdGlvbiBnZXRGb3JtQXJyYXkoc2l6ZTogbnVtYmVyKTogRm9ybUFycmF5IHtcbiAgY29uc3QgYXJyID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICBhcnIucHVzaChuZXcgRm9ybUNvbnRyb2woJycpKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgRm9ybUFycmF5KGFycik7XG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBPd2xEYXRlVGltZU1vZHVsZSwgT3dsTmF0aXZlRGF0ZVRpbWVNb2R1bGUsIFF1aWxsRWRpdG9yQ29tcG9uZW50LCBGb3Jtc01vZHVsZV0sXG4gIHNlbGVjdG9yOiAnbnh0LWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL254dC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL254dC1pbnB1dC5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTnh0SW5wdXQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOeHRJbnB1dCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTnh0SW5wdXQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgLy8gU0tTMzBKQU4yNVxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7ICAvLyBJbnB1dCBsYWJlbFxuICBASW5wdXQoKSBsYWJlbEZvbnQ6IHN0cmluZyA9ICcnOyAgLy8gSW5wdXQgbGFiZWwgZm9udFxuICBASW5wdXQoKSBsYWJlbFdlaWdodDogc3RyaW5nID0gJyc7ICAvLyBJbnB1dCBsYWJlbCBXZWlnaHRcbiAgQElucHV0KCkgaW5wdXRXZWlnaHQ6IHN0cmluZyA9ICcnOyAgLy8gSW5wdXQgV2VpZ2h0XG4gIEBJbnB1dCgpIGxhYmVsU2l6ZTogc3RyaW5nID0gJyc7ICAvLyBJbnB1dCBsYWJlbCBTaXplXG4gIEBJbnB1dCgpIGlucHV0VmFsdWVTaXplOiBzdHJpbmcgPSAnJzsgLy9JbnB1dCB2YWx1ZSBTaXplXG4gIEBJbnB1dCgpIGxhYmVsQ29sb3I6IHN0cmluZyA9ICcnOyAgLy8gSW5wdXQgbGFiZWwgQ29sb3JcbiAgQElucHV0KCkgc2hvd0xhYmVsOiBzdHJpbmcgPSAnJzsgIC8vIElucHV0IGxhYmVsIENvbG9yXG4gIEBJbnB1dCgpIHN2Z0hlaWdodDogc3RyaW5nID0gJyc7ICAvLyBJbnB1dCBzdmcgaGVpZ2h0XG4gIEBJbnB1dCgpIHN2Z1dpZHRoOiBzdHJpbmcgPSAnJzsgIC8vIElucHV0IHN2ZyB3ZWlnaHRcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nID0gJ3RleHQnOyAgLy8gSW5wdXQgdHlwZSAodGV4dCwgZW1haWwsIHBhc3N3b3JkKVxuICBASW5wdXQoKSBpbnB1dEljb25SaWdodFNyYzogc3RyaW5nID0gJyc7ICAvLyBQYXRoIHRvIFNWRyBpY29uXG4gIEBJbnB1dCgpIGlucHV0SWNvbkxlZnRTcmM6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlOyAgLy8gUmVxdWlyZWQgdmFsaWRhdGlvblxuICBASW5wdXQoKSBtaW5MZW5ndGg/OiBudW1iZXI7ICAvLyBNaW4gbGVuZ3RoIHZhbGlkYXRpb25cbiAgQElucHV0KCkgcGF0dGVybj86IGFueTsgIC8vIFBhdHRlcm4gdmFsaWRhdGlvbiAoZS5nLiwgZW1haWwgcmVnZXgpXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTsgICAvLyBDdXN0b20gZXJyb3IgbWVzc2FnZXNcbiAgQElucHV0KCkgbWF4TGVuZ3RoOiBudW1iZXIgPSAwOyAvLyBNYXhpbXVtIGxlbmd0aCB2YWxpZGF0aW9uXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaW5wdXRCZ0NvbG9yOiBzdHJpbmcgPSAnJzsgLy8gVXNlIHRoaXMgaW5wdXQgdG8gc2V0IGEgY3VzdG9tIGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBpbnB1dC5cbiAgQElucHV0KCkgaW5wdXRCb3JkZXI6IHN0cmluZyA9ICcnOyAvLyBVc2UgdGhpcyBpbnB1dCB0byBzZXQgYSBjdXN0b20gYm9yZGVyIHN0eWxlIGZvciB0aGUgaW5wdXQuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyQ29sb3I6IHN0cmluZyA9ICcnOyAvLyBVc2UgdGhpcyBpbnB1dCB0byBzZXQgYSBjdXN0b20gdGV4dCBjb2xvciBmb3IgdGhlIGlucHV0LlxuICBASW5wdXQoKSBwbGFjZWhvbGRlckZvbnQ6IHN0cmluZyA9ICcnOyAvLyBVc2UgdGhpcyBpbnB1dCB0byBzZXQgYSBjdXN0b20gcGxhY2Vob2xkZXIgZm9udFxuICBASW5wdXQoKSBwbGFjZWhvbGRlcldlaWdodDogc3RyaW5nID0gJyc7IC8vIFVzZSB0aGlzIGlucHV0IHRvIHNldCBhIGN1c3RvbVxuICBASW5wdXQoKSBwbGFjZWhvbGRlclNpemU6IHN0cmluZyA9ICcnOyAvLyBVc2UgdGhpcyBpbnB1dCB0byBzZXQgYSBjdXN0b20gc2l6ZVxuICBASW5wdXQoKSBpbnB1dFRleHRDb2xvcjogc3RyaW5nID0gJyc7IC8vIFVzZSB0aGlzIGlucHV0IHRvIHNldCBhIGN1c3RvbSB0ZXh0IGNvbG9yIGZvciB0aGUgaW5wdXQgdmFsdWUuXG4gIEBJbnB1dCgpIGlucHV0SGVpZ2h0OiBzdHJpbmcgPSAnJzsgLy8gVXNlIHRoaXMgaW5wdXQgdG8gc2V0IGEgY3VzdG9tIGhlaWdodCBmb3IgdGhlIGlucHV0LlxuICBASW5wdXQoKSBpbnB1dFdpZHRoOiBzdHJpbmcgPSAnJzsgLy8gVXNlIHRoaXMgaW5wdXQgdG8gc2V0IGEgY3VzdG9tIHdpZHRoIGZvciB0aGUgSW5wdXQuXG4gIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZyA9ICdkZWZhdWx0JzsgLy8gVXNlIHRoaXMgaW5wdXQgdG8gc2V0IGEgY3VzdG9tIElEIGZvciB0aGUgaW5wdXQuIERlZmF1bHQgaXMgJ2RlZmF1bHQnLlxuICBASW5wdXQoKSBpbnB1dEJvcmRlclNpemU6IHN0cmluZyA9ICcwcHgnOyAvLyBVc2UgdGhpcyBpbnB1dCB0byBzZXQgdGhlIGJvcmRlciBzaXplIG9mIHRoZSBpbnB1dC4gRGVmYXVsdCBpcyAnMHB4JyBmb3Igbm8gYm9yZGVyLlxuICBASW5wdXQoKSBpbnB1dENvbmZpZzogYW55ID0gJyc7IC8vIFVzZSB0aGlzIGlucHV0IHRvIHBhc3MgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IgdGhlIGlucHV0IChlLmcuLCBzdHlsZXMsIGFjdGlvbnMpLlxuICBASW5wdXQoKSBjb25mUGFzc1ZhbDogYW55ID0gJyc7IC8vIFBhc3N3b3JkIHZhbHVlIHRvIGNoZWNrIGlmIHRoZSBjdXJyZW50IGZpZWxkIG1hdGNoZXMgdGhlIGNvbmZpcm1lZCBwYXNzd29yZFxuICBASW5wdXQoKSBjb25mUGFzczogYm9vbGVhbiA9IGZhbHNlOyAvLyBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgcGFzc3dvcmQgY29uZmlybWF0aW9uIHZhbGlkYXRpb25cbiAgQElucHV0KCkgbW9kZTogJ3ZpZXcnIHwgJ2VkaXQnIHwgJ3ByaW50JyA9ICdlZGl0JzsgLy8gTmV3IG1vZGUgaW5wdXRcbiAgQElucHV0KCkgdmFsdWU6IGFueSA7IC8vIGlucHV0IHZhbHVlXG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBhbnkgPSB7fVxuICBASW5wdXQoKSBzaG93U3VnZ2VzdGlvbjogYm9vbGVhbiA9IGZhbHNlOyAvLyBzaG93U3VnZ2VzdGlvbiB0aGUgaW5wdXRcbiAgQElucHV0KCkgYXJpYU93bnM/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFyaWFIYXNQb3B1cD86IHN0cmluZztcbiAgQElucHV0KCkgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7IC8vIFNldCB0byB0cnVlIHRvIHNob3cgYSBsb2FkaW5nIGFuaW1hdGlvblxuICBASW5wdXQoKSBvcHRpb25zOiBhbnlbXSA9IFtdOyAvLyBGb3IgcmFkaW8gYnV0dG9uc1xuICBASW5wdXQoKSBtaW5EYXRlOiBhbnk7IC8vIEZvciBkYXRlL2RhdGV0aW1lIHBpY2tlclxuICBASW5wdXQoKSBtYXhEYXRlOiBhbnk7IC8vIEZvciBkYXRlL2RhdGV0aW1lIHBpY2tlclxuICBASW5wdXQoKSByb3dzOiBudW1iZXIgPSAzOyAvLyBGb3IgdGV4dGFyZWFcblxuICByYXdJbnB1dFZhbDogYW55O1xuICBASW5wdXQoKSAvL290cCBib3ggc2l6ZVxuICBzZXQgc2l6ZShzaXplOiBudW1iZXIpIHtcbiAgICB0aGlzLmlucHV0cyA9IGdldEZvcm1BcnJheShzaXplKTtcbiAgICB0aGlzLiNzaXplID0gc2l6ZTtcbiAgfVxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTsgIC8vIEVtaXRzIGlucHV0IHZhbHVlIGNoYW5nZXNcbiAgQE91dHB1dCgpIGlucHV0VmFsdWUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTsgXG4gIEBPdXRwdXQoKSBvbkJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uRm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHRvZ2dsZUVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG5hdGl2ZUlucHV0UmVmID0gbmV3IEV2ZW50RW1pdHRlcjxFbGVtZW50UmVmPigpO1xuICBAT3V0cHV0KCkgcmVtb3ZlVmFsdWVFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIFxuICBAVmlld0NoaWxkcmVuKCdpbnB1dEVsJykgaW5wdXRFbHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj47XG4gIC8vIERhdGUvVGltZSBwaWNrZXIgcmVmZXJlbmNlc1xuICBAVmlld0NoaWxkcmVuKCdkdCcpIGRhdGVUaW1lUGlja2VyOiBhbnk7XG4gIEBWaWV3Q2hpbGRyZW4oJ2R0MScpIGRhdGVQaWNrZXI6IGFueTtcbiAgQFZpZXdDaGlsZHJlbignZHQyJykgdGltZVBpY2tlcjogYW55O1xuICBAVmlld0NoaWxkKCdkdCcpIGR0UGlja2VyOiBPd2xEYXRlVGltZUNvbXBvbmVudDxEYXRlPjtcbiAgQFZpZXdDaGlsZCgnZHQyJykgZFBpY2tlcjogT3dsRGF0ZVRpbWVDb21wb25lbnQ8RGF0ZT47XG4gIEBWaWV3Q2hpbGQoJ2R0MycpIHRQaWNrZXI6IE93bERhdGVUaW1lQ29tcG9uZW50PERhdGU+O1xuICBAVmlld0NoaWxkKCdpbnB1dFJlZicsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dFJlZjogRWxlbWVudFJlZjtcblxuICAjc2l6ZSA9IDQ7XG4gICNzY2hlZHVsZWRGb2N1czogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgaW5wdXRzID0gZ2V0Rm9ybUFycmF5KHRoaXMuI3NpemUpO1xuICBjb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIGlzUGFzc3dvcmRWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGNvdW50cnlDb2RlOiBzdHJpbmcgPSAnJztcbiAgLy8gU0tTMjhGRUIyNSBjb3VudHJpZXMgbGlzdFxuICBjb3VudHJpZXMgPSBbXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQWZnaGFuaXN0YW5cIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6bwn4erXCIsXG4gICAgICBcImNvZGVcIjogXCJBRlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrOTNcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs5M1swLTldezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis5MyA3MCAxMjMgNDU2N1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCLDhWxhbmQgSXNsYW5kc1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HpvCfh71cIixcbiAgICAgIFwiY29kZVwiOiBcIkFYXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIiszNThcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCszNThbMC05XXs2LDEyfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMzU4IDE4IDEyMyA0NVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJBbGJhbmlhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4em8J+HsVwiLFxuICAgICAgXCJjb2RlXCI6IFwiQUxcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzM1NVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzM1NVswLTldezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszNTUgNjkgMTIzIDQ1NjdcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQWxnZXJpYVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HqfCfh79cIixcbiAgICAgIFwiY29kZVwiOiBcIkRaXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyMTNcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyMTNbMC05XXs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjEzIDU1MSAyMzQgNTY3XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkFtZXJpY2FuIFNhbW9hXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4em8J+HuFwiLFxuICAgICAgXCJjb2RlXCI6IFwiQVNcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzE2ODRcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsxNjg0WzAtOV17N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzE2ODQgMTIzIDQ1NjdcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQW5kb3JyYVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HpvCfh6lcIixcbiAgICAgIFwiY29kZVwiOiBcIkFEXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIiszNzZcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCszNzZbMC05XXs2fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMzc2IDEyMyA0NTZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQW5nb2xhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4em8J+HtFwiLFxuICAgICAgXCJjb2RlXCI6IFwiQU9cIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzI0NFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzI0NFswLTldezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNDQgOTIzIDEyMyA0NTZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQW5ndWlsbGFcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6bwn4euXCIsXG4gICAgICBcImNvZGVcIjogXCJBSVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMTI2NFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzEyNjRbMC05XXs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMTI2NCAyMzUgMTIzNFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJBbnRhcmN0aWNhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4em8J+HtlwiLFxuICAgICAgXCJjb2RlXCI6IFwiQVFcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzY3MlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzY3MlswLTldezYsMTJ9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis2NzIgMTIzIDQ1NlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJBbnRpZ3VhIGFuZCBCYXJidWRhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4em8J+HrFwiLFxuICAgICAgXCJjb2RlXCI6IFwiQUdcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzEyNjhcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsxMjY4WzAtOV17N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzEyNjggMjM0IDU2NzhcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQXJnZW50aW5hXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4em8J+Ht1wiLFxuICAgICAgXCJjb2RlXCI6IFwiQVJcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzU0XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNTRbMC05XXsxMCwxMX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzU0IDkgMTEgMTIzNCA1Njc4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkFybWVuaWFcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6bwn4eyXCIsXG4gICAgICBcImNvZGVcIjogXCJBTVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMzc0XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMzc0WzAtOV17OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzM3NCA5NCAxMjMgNDU2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkFydWJhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4em8J+HvFwiLFxuICAgICAgXCJjb2RlXCI6IFwiQVdcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzI5N1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzI5N1swLTldezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyOTcgNTYwIDEyMzRcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQXVzdHJhbGlhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4em8J+HulwiLFxuICAgICAgXCJjb2RlXCI6IFwiQVVcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzYxXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjFbMC05XXs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjEgNCAxMjM0IDU2NzhcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQXVzdHJpYVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HpvCfh7lcIixcbiAgICAgIFwiY29kZVwiOiBcIkFUXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis0M1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzQzWzAtOV17MTAsMTJ9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis0MyA2NjQgMTIzIDQ1NjdcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQXplcmJhaWphblwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HpvCfh79cIixcbiAgICAgIFwiY29kZVwiOiBcIkFaXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis5OTRcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs5OTRbMC05XXs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTk0IDUwIDEyMyA0NSA2N1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJCYWhhbWFzXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4en8J+HuFwiLFxuICAgICAgXCJjb2RlXCI6IFwiQlNcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzEyNDJcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsxMjQyWzAtOV17N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzEyNDIgMzIzIDEyMzRcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQmFocmFpblwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hp/Cfh61cIixcbiAgICAgIFwiY29kZVwiOiBcIkJIXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis5NzNcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs5NzNbMC05XXs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTczIDMxMjMgNDU2N1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJCYW5nbGFkZXNoXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4en8J+HqVwiLFxuICAgICAgXCJjb2RlXCI6IFwiQkRcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzg4MFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzg4MFswLTldezEwfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrODgwIDE3MTIgMzQ1Njc4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkJhcmJhZG9zXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4en8J+Hp1wiLFxuICAgICAgXCJjb2RlXCI6IFwiQkJcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzEyNDZcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsxMjQ2WzAtOV17N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzEyNDYgMjUwIDEyMzRcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQmVsYXJ1c1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hp/Cfh75cIixcbiAgICAgIFwiY29kZVwiOiBcIkJZXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIiszNzVcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCszNzVbMC05XXs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMzc1IDI5IDEyMyA0NSA2N1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJCZWxnaXVtXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4en8J+HqlwiLFxuICAgICAgXCJjb2RlXCI6IFwiQkVcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzMyXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMzJbMC05XXs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMzIgNDcwIDEyIDM0IDU2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkJlbGl6ZVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hp/Cfh79cIixcbiAgICAgIFwiY29kZVwiOiBcIkJaXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis1MDFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs1MDFbMC05XXs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTAxIDYxMCAxMjM0XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkJlbmluXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4en8J+Hr1wiLFxuICAgICAgXCJjb2RlXCI6IFwiQkpcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzIyOVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzIyOVswLTldezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyMjkgOTAgMTIgMzQ1NlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJCZXJtdWRhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4en8J+HslwiLFxuICAgICAgXCJjb2RlXCI6IFwiQk1cIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzE0NDFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsxNDQxWzAtOV17N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzE0NDEgMzcwIDEyMzRcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQmh1dGFuXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4en8J+HuVwiLFxuICAgICAgXCJjb2RlXCI6IFwiQlRcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzk3NVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzk3NVswLTldezcsOH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzk3NSAxNyAxMjMgNDU2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkJvbGl2aWEsIFBsdXJpbmF0aW9uYWwgU3RhdGUgb2YgYm9saXZpYVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hp/Cfh7RcIixcbiAgICAgIFwiY29kZVwiOiBcIkJPXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis1OTFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs1OTFbMS05XVxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis1OTEgMTIzNDU2NzhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIis1OTEgNzAxMjM0NTZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQm9zbmlhIGFuZCBIZXJ6ZWdvdmluYVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hp/Cfh6ZcIixcbiAgICAgIFwiY29kZVwiOiBcIkJBXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIiszODdcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCszODdbMC05XXs4LDl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszODcgNjEgMTIzIDQ1NlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJCb3Rzd2FuYVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hp/Cfh7xcIixcbiAgICAgIFwiY29kZVwiOiBcIkJXXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyNjdcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyNjdbMC05XXs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjY3IDcxIDEyMyA0NTZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQm91dmV0IElzbGFuZFwiLFxuICAgICAgXCJjb2RlXCI6IFwiQlZcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzQ3XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNDdcXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNDcgWFhYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzQ3IFhYIFhYIFhYIFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4en8J+Hu1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJCcmF6aWxcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6fwn4e3XCIsXG4gICAgICBcImNvZGVcIjogXCJCUlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNTVcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs1NVswLTldezEwLDExfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTUgMTEgOTEyMzQgNTY3OFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJCcml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnlcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh67wn4e0XCIsXG4gICAgICBcImNvZGVcIjogXCJJT1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjQ2XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjQ2WzAtOV17N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzI0NiAzODAgMTIzNFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJCcnVuZWkgRGFydXNzYWxhbVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hp/Cfh7NcIixcbiAgICAgIFwiY29kZVwiOiBcIkJOXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis2NzNcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs2NzNbMC05XXs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjczIDcxMiAzNDU2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkJ1bGdhcmlhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4en8J+HrFwiLFxuICAgICAgXCJjb2RlXCI6IFwiQkdcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzM1OVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzM1OVswLTldezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszNTkgODcgMTIzIDQ1NjdcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQnVya2luYSBGYXNvXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4en8J+Hq1wiLFxuICAgICAgXCJjb2RlXCI6IFwiQkZcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzIyNlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzIyNlswLTldezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyMjYgNzAgMTIgMzQ1NlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJCdXJ1bmRpXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4en8J+HrlwiLFxuICAgICAgXCJjb2RlXCI6IFwiQklcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzI1N1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzI1N1swLTldezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNTcgNzkgMTIgMzQ1NlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJDYW1ib2RpYVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsPCfh61cIixcbiAgICAgIFwiY29kZVwiOiBcIktIXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis4NTVcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs4NTVbMC05XXs4LDl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis4NTUgOTEgMjM0IDU2N1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJDYW1lcm9vblwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HqPCfh7JcIixcbiAgICAgIFwiY29kZVwiOiBcIkNNXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyMzdcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyMzdbMC05XXs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjM3IDYgNzEgMjMgNDUgNjdcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQ2FuYWRhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4eo8J+HplwiLFxuICAgICAgXCJjb2RlXCI6IFwiQ0FcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsxWzAtOV17MTB9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisxIDIwNCAxMjMgNDU2N1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJDYXBlIFZlcmRlXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4eo8J+Hu1wiLFxuICAgICAgXCJjb2RlXCI6IFwiQ1ZcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzIzOFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzIzOFswLTldezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyMzggOTkxIDIzNDVcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQ2F5bWFuIElzbGFuZHNcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Dwn4e+XCIsXG4gICAgICBcImNvZGVcIjogXCJLWVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMzQ1XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMzQ1WzAtOV17N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzM0NSAzMjEgMTIzNFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWNcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6jwn4erXCIsXG4gICAgICBcImNvZGVcIjogXCJDRlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjM2XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjM2WzAtOV17OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzIzNiA3MiAxMiAzNDU2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkNoYWRcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7nwn4epXCIsXG4gICAgICBcImNvZGVcIjogXCJURFwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjM1XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjM1WzAtOV17OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzIzNSA2MyAxMiAzNDU2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkNoaWxlXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4eo8J+HsVwiLFxuICAgICAgXCJjb2RlXCI6IFwiQ0xcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzU2XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNTZbMC05XXs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTYgOSAxMjM0IDU2NzhcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQ2hpbmFcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6jwn4ezXCIsXG4gICAgICBcImNvZGVcIjogXCJDTlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrODZcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs4NlswLTldezExfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrODYgMTMxIDIzNDUgNjc4OVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJDaHJpc3RtYXMgSXNsYW5kXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4eo8J+HvVwiLFxuICAgICAgXCJjb2RlXCI6IFwiQ1hcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzYxXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjFbMC05XXs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjEgNCAxMjM0IDU2NzhcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQ29jb3MgKEtlZWxpbmcpIElzbGFuZHNcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6jwn4eoXCIsXG4gICAgICBcImNvZGVcIjogXCJDQ1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNjFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs2MVswLTldezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis2MSA0IDEyMzQgNTY3OFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJDb2xvbWJpYVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HqPCfh7RcIixcbiAgICAgIFwiY29kZVwiOiBcIkNPXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis1N1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzU3WzAtOV17MTB9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis1NyAzMTIgMzQ1IDY3ODlcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQ29tb3Jvc1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsPCfh7JcIixcbiAgICAgIFwiY29kZVwiOiBcIktNXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyNjlcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyNjlbMC05XXs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjY5IDMyMSAyMzQ1XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkNvbmdvXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4eo8J+HrFwiLFxuICAgICAgXCJjb2RlXCI6IFwiQ0dcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzI0MlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzI0MlswLTldezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNDIgMDYgMTIzIDQ1NjdcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiQ29uZ28sIFRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZSBDb25nb1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HqPCfh6lcIixcbiAgICAgIFwiY29kZVwiOiBcIkNEXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyNDNcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyNDNbODldXFxcXGR7OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzI0MyA5WFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIisyNDMgOTkxMjM0NTY3XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkNvb2sgSXNsYW5kc1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HqPCfh7BcIixcbiAgICAgIFwiY29kZVwiOiBcIkNLXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis2ODJcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs2ODJbMC05XXs1fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjgyIDcxIDIzNFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJDb3N0YSBSaWNhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4eo8J+Ht1wiLFxuICAgICAgXCJjb2RlXCI6IFwiQ1JcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzUwNlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzUwNlswLTldezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis1MDYgODEyMyA0NTY3XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkNvdGUgZCdJdm9pcmVcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6jwn4euXCIsXG4gICAgICBcImNvZGVcIjogXCJDSVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjI1XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjI1WzAtOV17OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzIyNSAwMSAyMyA0NSA2N1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJDcm9hdGlhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4et8J+Ht1wiLFxuICAgICAgXCJjb2RlXCI6IFwiSFJcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzM4NVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzM4NVswLTldezgsOX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzM4NSA5OCAxMjMgNDU2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkN1YmFcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6jwn4e6XCIsXG4gICAgICBcImNvZGVcIjogXCJDVVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNTNcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs1M1swLTldezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis1MyA1IDEyMzQgNTY3OFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJDeXBydXNcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6jwn4e+XCIsXG4gICAgICBcImNvZGVcIjogXCJDWVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMzU3XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMzU3WzAtOV17OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzM1NyA5NiAxMjMgNDU2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkN6ZWNoIFJlcHVibGljXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4eo8J+Hv1wiLFxuICAgICAgXCJjb2RlXCI6IFwiQ1pcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzQyMFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzQyMFswLTldezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis0MjAgNjAxIDEyMyA0NTZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiRGVubWFya1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HqfCfh7BcIixcbiAgICAgIFwiY29kZVwiOiBcIkRLXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis0NVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzQ1WzAtOV17OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzQ1IDIwIDEyIDM0IDU2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkRqaWJvdXRpXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ep8J+Hr1wiLFxuICAgICAgXCJjb2RlXCI6IFwiREpcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzI1M1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzI1M1swLTldezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNTMgNzcgMTIgMzQgNTZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiRG9taW5pY2FcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6nwn4eyXCIsXG4gICAgICBcImNvZGVcIjogXCJETVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMTc2N1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzE3NjdbMC05XXs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMTc2NyAyMzUgMTIzNFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJEb21pbmljYW4gUmVwdWJsaWNcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6nwn4e0XCIsXG4gICAgICBcImNvZGVcIjogXCJET1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMTg0OVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzE4NDlbMC05XXs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMTg0OSAyMzQgNTY3OFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJFY3VhZG9yXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4eq8J+HqFwiLFxuICAgICAgXCJjb2RlXCI6IFwiRUNcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzU5M1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzU5M1swLTldezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis1OTMgOTkgMTIzIDQ1NjdcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiRWd5cHRcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6rwn4esXCIsXG4gICAgICBcImNvZGVcIjogXCJFR1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjBcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyMFswLTldezEwfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjAgMTAwIDEyMyA0NTY3XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkVsIFNhbHZhZG9yXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e48J+Hu1wiLFxuICAgICAgXCJjb2RlXCI6IFwiU1ZcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzUwM1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzUwM1swLTldezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis1MDMgNzEyMyA0NTY3XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkVxdWF0b3JpYWwgR3VpbmVhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4es8J+HtlwiLFxuICAgICAgXCJjb2RlXCI6IFwiR1FcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzI0MFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzI0MFswLTldezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNDAgMjIyIDEyMyA0NTZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiRXJpdHJlYVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HqvCfh7dcIixcbiAgICAgIFwiY29kZVwiOiBcIkVSXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyOTFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyOTFbMC05XXs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjkxIDcgMTIzIDQ1NlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJFc3RvbmlhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4eq8J+HqlwiLFxuICAgICAgXCJjb2RlXCI6IFwiRUVcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzM3MlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzM3MlswLTldezcsOH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzM3MiA1MTIzIDQ1NlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJFdGhpb3BpYVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HqvCfh7lcIixcbiAgICAgIFwiY29kZVwiOiBcIkVUXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyNTFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyNTFbMC05XXs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjUxIDkxIDEyMyA0NTY3XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkZhbGtsYW5kIElzbGFuZHMgKE1hbHZpbmFzKVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hq/Cfh7BcIixcbiAgICAgIFwiY29kZVwiOiBcIkZLXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis1MDBcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs1MDBcXFxcZHs1fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTAwIFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrNTAwIDEyMzQ1XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkZhcm9lIElzbGFuZHNcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6vwn4e0XCIsXG4gICAgICBcImNvZGVcIjogXCJGT1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjk4XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjk4WzAtOV17Nn0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzI5OCAxMjMgNDU2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkZpamlcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6vwn4evXCIsXG4gICAgICBcImNvZGVcIjogXCJGSlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNjc5XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjc5WzAtOV17Nyw4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjc5IDcwMSAyMzQ1XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkZpbmxhbmRcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6vwn4euXCIsXG4gICAgICBcImNvZGVcIjogXCJGSVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMzU4XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMzU4WzAtOV17NiwxMn0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzM1OCA0MCAxMjMgNDU2N1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJGcmFuY2VcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6vwn4e3XCIsXG4gICAgICBcImNvZGVcIjogXCJGUlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMzNcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCszM1swLTldezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszMyA2IDEyIDM0IDU2IDc4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkZyZW5jaCBHdWlhbmFcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6zwn4erXCIsXG4gICAgICBcImNvZGVcIjogXCJHRlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNTk0XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNTk0WzAtOV17OX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzU5NCA2OTQgMTIgMzQgNTZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiRnJlbmNoIFBvbHluZXNpYVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HtfCfh6tcIixcbiAgICAgIFwiY29kZVwiOiBcIlBGXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis2ODlcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs2ODlbMC05XXs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjg5IDg3IDEyIDM0IDU2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkZyZW5jaCBTb3V0aGVybiBUZXJyaXRvcmllc1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HufCfh6tcIixcbiAgICAgIFwiY29kZVwiOiBcIlRGXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyNjJcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyNjJbMC05XXs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjYyIDYzOSAxMiAzNCA1NlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJHYWJvblwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HrPCfh6ZcIixcbiAgICAgIFwiY29kZVwiOiBcIkdBXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyNDFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyNDFbMC05XXs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjQxIDA2IDEyIDM0IDU2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkdhbWJpYVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HrPCfh7JcIixcbiAgICAgIFwiY29kZVwiOiBcIkdNXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyMjBcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyMjBbMC05XXs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjIwIDMwMSAyMzQ1XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkdlb3JnaWFcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6zwn4eqXCIsXG4gICAgICBcImNvZGVcIjogXCJHRVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrOTk1XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrOTk1WzAtOV17OX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzk5NSA1NTUgMTIgMzQgNTZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiR2VybWFueVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HqfCfh6pcIixcbiAgICAgIFwiY29kZVwiOiBcIkRFXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis0OVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzQ5WzAtOV17MTAsMTF9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis0OSAxNTEgMTIzNCA1Njc4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkdoYW5hXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4es8J+HrVwiLFxuICAgICAgXCJjb2RlXCI6IFwiR0hcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzIzM1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzIzM1swLTldezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyMzMgMjQgMTIzIDQ1NjdcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiR2licmFsdGFyXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4es8J+HrlwiLFxuICAgICAgXCJjb2RlXCI6IFwiR0lcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzM1MFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzM1MFswLTldezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszNTAgNTcxMjM0NTZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiR3JlZWNlXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4es8J+Ht1wiLFxuICAgICAgXCJjb2RlXCI6IFwiR1JcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzMwXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMzBbMC05XXsxMH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzMwIDY5MSAyMzQgNTY3OFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJHcmVlbmxhbmRcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6zwn4exXCIsXG4gICAgICBcImNvZGVcIjogXCJHTFwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjk5XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjk5WzAtOV17Nn0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzI5OSAyMiAxMiAzNFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJHcmVuYWRhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4es8J+HqVwiLFxuICAgICAgXCJjb2RlXCI6IFwiR0RcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzE0NzNcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsxNDczWzAtOV17N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzE0NzMgNDAzIDEyMzRcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiR3VhZGVsb3VwZVwiLFxuICAgICAgXCJjb2RlXCI6IFwiR1BcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzU5MFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzU5MFs2N11cXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTkwIDZYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNTkwIFhYWCBYWCBYWCBYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HrPCfh7VcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiR3VhbVwiLFxuICAgICAgXCJjb2RlXCI6IFwiR1VcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzE2NzFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsxNjcxXFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzE2NzEgWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMTY3MSBYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HrPCfh7pcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiR3VhdGVtYWxhXCIsXG4gICAgICBcImNvZGVcIjogXCJHVFwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNTAyXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNTAyWzItOV1cXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTAyIDhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis1MDIgWFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4es8J+HuVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJHdWVybnNleVwiLFxuICAgICAgXCJjb2RlXCI6IFwiR0dcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzQ0XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNDRbMTQ4N11cXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNDQgMTQ4MSBYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzQ0IDE0ODEgWFhYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4es8J+HrFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJHdWluZWFcIixcbiAgICAgIFwiY29kZVwiOiBcIkdOXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyMjRcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyMjRcXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjI0IFhYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMjI0IFhYWCBYWFggWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4es8J+Hs1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJHdWluZWEtQmlzc2F1XCIsXG4gICAgICBcImNvZGVcIjogXCJHV1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjQ1XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjQ1XFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzI0NSBYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIisyNDUgWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6zwn4e8XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkd1eWFuYVwiLFxuICAgICAgXCJjb2RlXCI6IFwiR1lcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzU5MlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzU5MlsyLTldXFxcXGR7Nn0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzU5MiA2WFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis1OTIgWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6zwn4e+XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkhhaXRpXCIsXG4gICAgICBcImNvZGVcIjogXCJIVFwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNTA5XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNTA5WzItOV1cXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTA5IDJYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis1MDkgWFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4et8J+HuVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJIZWFyZCBJc2xhbmQgYW5kIE1jZG9uYWxkIElzbGFuZHNcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh63wn4eyXCIsXG4gICAgICBcImNvZGVcIjogXCJITVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNjcyXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjcyXFxcXGR7Nn0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzY3MiBYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIis2NzIgMTIzNDU2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkhvbHkgU2VlIChWYXRpY2FuIENpdHkgU3RhdGUpXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e78J+HplwiLFxuICAgICAgXCJjb2RlXCI6IFwiVkFcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzM3OVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzM3OVxcXFxkezEwfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMzc5IFhYWFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIiszNzkgMDYxMjM0NTY3OFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJIb25kdXJhc1wiLFxuICAgICAgXCJjb2RlXCI6IFwiSE5cIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzUwNFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzUwNFsyLTldXFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzUwNCA5WFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNTA0IFhYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HrfCfh7NcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiSG9uZyBLb25nXCIsXG4gICAgICBcImNvZGVcIjogXCJIS1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrODUyXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrODUyWzItOV1cXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrODUyIDVYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis4NTIgWFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4et8J+HsFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJIdW5nYXJ5XCIsXG4gICAgICBcImNvZGVcIjogXCJIVVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMzZcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCszNlsxLTldXFxcXGR7Nyw4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMzYgMzBYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIiszNiBYWCBYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HrfCfh7pcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiSWNlbGFuZFwiLFxuICAgICAgXCJjb2RlXCI6IFwiSVNcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzM1NFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzM1NFxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszNTQgWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMzU0IFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4eu8J+HuFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJJbmRpYVwiLFxuICAgICAgXCJjb2RlXCI6IFwiSU5cIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzkxXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrOTFbNjc4OV1cXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTEgOVhYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrOTEgWFhYWFggWFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh67wn4ezXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkluZG9uZXNpYVwiLFxuICAgICAgXCJjb2RlXCI6IFwiSURcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzYyXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjJbOF1cXFxcZHs5LDEwfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjIgOFhYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNjIgOFhYIFhYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HrvCfh6lcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiSXJhbiwgSXNsYW1pYyBSZXB1YmxpYyBvZiBQZXJzaWFuIEd1bGZcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh67wn4e3XCIsXG4gICAgICBcImNvZGVcIjogXCJJUlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrOThcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs5OFsxLTldXFxcXGR7OX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzk4IDlYWFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIis5OCA5MTIzNDU2Nzg5XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIklyYXFcIixcbiAgICAgIFwiY29kZVwiOiBcIklRXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis5NjRcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs5NjRbN11cXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTY0IDdYWFhYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzk2NCA3WFggWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh67wn4e2XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIklyZWxhbmRcIixcbiAgICAgIFwiY29kZVwiOiBcIklFXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIiszNTNcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCszNTNbMS05XVxcXFxkezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszNTMgOFhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIiszNTMgWFggWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh67wn4eqXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIklzbGUgb2YgTWFuXCIsXG4gICAgICBcImNvZGVcIjogXCJJTVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNDRcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs0NFsxNjI0XVxcXFxkezZ9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis0NCAxNjI0IFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNDQgMTYyNCBYWFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh67wn4eyXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIklzcmFlbFwiLFxuICAgICAgXCJjb2RlXCI6IFwiSUxcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzk3MlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzk3Mls1LTldXFxcXGR7OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzk3MiA1WFhYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzk3MiA1WCBYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HrvCfh7FcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiSXRhbHlcIixcbiAgICAgIFwiY29kZVwiOiBcIklUXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIiszOVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzM5WzAtOV1cXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMzkgM1hYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMzkgM1hYIFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4eu8J+HuVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJKYW1haWNhXCIsXG4gICAgICBcImNvZGVcIjogXCJKTVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMTg3NlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzE4NzZcXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMTg3NiBYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIisxODc2IFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ev8J+HslwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJKYXBhblwiLFxuICAgICAgXCJjb2RlXCI6IFwiSlBcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzgxXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrODFbMC05XVxcXFxkezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis4MSA5WFhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis4MSBYWCBYWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6/wn4e1XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkplcnNleVwiLFxuICAgICAgXCJjb2RlXCI6IFwiSkVcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzQ0XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNDRbMTUzNF1cXFxcZHs2fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNDQgMTUzNCBYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzQ0IDE1MzQgWFhYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ev8J+HqlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJKb3JkYW5cIixcbiAgICAgIFwiY29kZVwiOiBcIkpPXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis5NjJcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs5NjJbN11cXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTYyIDdYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrOTYyIDcgWFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ev8J+HtFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJLYXpha2hzdGFuXCIsXG4gICAgICBcImNvZGVcIjogXCJLWlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrN1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzdbN11cXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNyA3WFhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis3IDdYWCBYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsPCfh79cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiS2VueWFcIixcbiAgICAgIFwiY29kZVwiOiBcIktFXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyNTRcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyNTRbN11cXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjU0IDdYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMjU0IDdYWCBYWFggWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ew8J+HqlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJLaXJpYmF0aVwiLFxuICAgICAgXCJjb2RlXCI6IFwiS0lcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzY4NlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzY4NlxcXFxkezV9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis2ODYgWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzY4NiBYWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsPCfh65cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiS29yZWEsIERlbW9jcmF0aWMgUGVvcGxlJ3MgUmVwdWJsaWMgb2YgS29yZWFcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Dwn4e1XCIsXG4gICAgICBcImNvZGVcIjogXCJLUFwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrODUwXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrODUwXFxcXGR7NywxMH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzg1MCBYWFhYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrODUwIDIxMjM0NTY3ODlcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiS29yZWEsIFJlcHVibGljIG9mIFNvdXRoIEtvcmVhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ew8J+Ht1wiLFxuICAgICAgXCJjb2RlXCI6IFwiS1JcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzgyXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrODJcXFxcZHs5LDEwfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrODIgMTBYWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzgyIDEwMTIzNDU2NzhcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiS29zb3ZvXCIsXG4gICAgICBcImNvZGVcIjogXCJYS1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMzgzXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMzgzWzQtOV1cXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMzgzIDRYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIiszODMgNFggWFhYIFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HvfCfh7BcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiS3V3YWl0XCIsXG4gICAgICBcImNvZGVcIjogXCJLV1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrOTY1XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrOTY1WzUtOV1cXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTY1IDVYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis5NjUgNVhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ew8J+HvFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJLeXJneXpzdGFuXCIsXG4gICAgICBcImNvZGVcIjogXCJLR1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrOTk2XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrOTk2WzUtOV1cXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTk2IDVYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrOTk2IFhYWCBYWFggWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ew8J+HrFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJMYW9zXCIsXG4gICAgICBcImNvZGVcIjogXCJMQVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrODU2XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrODU2WzJdXFxcXGR7OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzg1NiAyWFhYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzg1NiAyMCBYWFggWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ex8J+HplwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJMYXR2aWFcIixcbiAgICAgIFwiY29kZVwiOiBcIkxWXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIiszNzFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCszNzFbMl1cXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMzcxIDJYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIiszNzEgMlhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ex8J+Hu1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJMZWJhbm9uXCIsXG4gICAgICBcImNvZGVcIjogXCJMQlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrOTYxXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrOTYxWzMtOV1cXFxcZHs2LDd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis5NjEgM1hYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrOTYxIDMgWFhYIFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsfCfh6dcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTGVzb3Rob1wiLFxuICAgICAgXCJjb2RlXCI6IFwiTFNcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzI2NlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzI2NlsyLTldXFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzI2NiA1WFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMjY2IDVYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsfCfh7hcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTGliZXJpYVwiLFxuICAgICAgXCJjb2RlXCI6IFwiTFJcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzIzMVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzIzMVs0LTldXFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzIzMSA0WFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMjMxIFhYIFhYWCBYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Hwn4e3XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkxpYnlhbiBBcmFiIEphbWFoaXJpeWFcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Hwn4e+XCIsXG4gICAgICBcImNvZGVcIjogXCJMWVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjE4XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjE4Wzg5XVxcXFxkezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyMTggOVhYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrMjE4IDkxMjM0NTY3OFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJMaWVjaHRlbnN0ZWluXCIsXG4gICAgICBcImNvZGVcIjogXCJMSVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNDIzXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNDIzWzItOV1cXFxcZHs2fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNDIzIDZYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzQyMyBYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsfCfh65cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTGl0aHVhbmlhXCIsXG4gICAgICBcImNvZGVcIjogXCJMVFwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMzcwXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMzcwWzZdXFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzM3MCA2WFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMzcwIDZYWCBYWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsfCfh7lcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTHV4ZW1ib3VyZ1wiLFxuICAgICAgXCJjb2RlXCI6IFwiTFVcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzM1MlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzM1MlsyNjg5XVxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszNTIgNlhYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzM1MiBYWFggWFhYIFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsfCfh7pcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTWFjYW9cIixcbiAgICAgIFwiY29kZVwiOiBcIk1PXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis4NTNcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs4NTNbNl1cXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrODUzIDZYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis4NTMgWFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ey8J+HtFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJNYWNlZG9uaWFcIixcbiAgICAgIFwiY29kZVwiOiBcIk1LXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIiszODlcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCszODlbMjddXFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzM4OSA3WFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMzg5IFhYIFhYWCBYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Lwn4ewXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIk1hZGFnYXNjYXJcIixcbiAgICAgIFwiY29kZVwiOiBcIk1HXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyNjFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyNjFbM11cXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjYxIDNYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMjYxIDNYIFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ey8J+HrFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJNYWxhd2lcIixcbiAgICAgIFwiY29kZVwiOiBcIk1XXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyNjVcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyNjVbMS05XVxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNjUgOVhYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzI2NSA5WFggWFhYIFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsvCfh7xcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTWFsYXlzaWFcIixcbiAgICAgIFwiY29kZVwiOiBcIk1ZXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis2MFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzYwWzEtOV1cXFxcZHs3LDl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis2MCAxWFhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis2MCAxWCBYWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Lwn4e+XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIk1hbGRpdmVzXCIsXG4gICAgICBcImNvZGVcIjogXCJNVlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrOTYwXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrOTYwWzctOV1cXFxcZHs2fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTYwIDdYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzk2MCBYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsvCfh7tcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTWFsaVwiLFxuICAgICAgXCJjb2RlXCI6IFwiTUxcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzIyM1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzIyM1s2LTldXFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzIyMyA3WFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMjIzIFhYIFhYIFhYIFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ey8J+HsVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJNYWx0YVwiLFxuICAgICAgXCJjb2RlXCI6IFwiTVRcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzM1NlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzM1NlsyMzc5XVxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszNTYgN1hYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzM1NiBYWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Lwn4e5XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIk1hcnNoYWxsIElzbGFuZHNcIixcbiAgICAgIFwiY29kZVwiOiBcIk1IXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis2OTJcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs2OTJbMi05XVxcXFxkezZ9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis2OTIgMlhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNjkyIFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ey8J+HrVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJNYXJ0aW5pcXVlXCIsXG4gICAgICBcImNvZGVcIjogXCJNUVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNTk2XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNTk2WzYtN11cXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTk2IDZYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNTk2IFhYWCBYWCBYWCBYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsvCfh7ZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTWF1cml0YW5pYVwiLFxuICAgICAgXCJjb2RlXCI6IFwiTVJcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzIyMlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzIyMlsyLTldXFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzIyMiA0WFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMjIyIFhYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsvCfh7dcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTWF1cml0aXVzXCIsXG4gICAgICBcImNvZGVcIjogXCJNVVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjMwXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjMwWzItOV1cXFxcZHs2fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjMwIDVYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzIzMCBYWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Lwn4e6XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIk1heW90dGVcIixcbiAgICAgIFwiY29kZVwiOiBcIllUXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyNjJcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyNjJbMi05XVxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNjIgNlhYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzI2MiBYWFggWFggWFggWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh77wn4e5XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIk1leGljb1wiLFxuICAgICAgXCJjb2RlXCI6IFwiTVhcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzUyXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNTJbMV1cXFxcZHsxMH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzUyIDFYWFhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis1MiAxIFhYWCBYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsvCfh71cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcyBvZiBNaWNyb25lc2lhXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4er8J+HslwiLFxuICAgICAgXCJjb2RlXCI6IFwiRk1cIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzY5MVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzY5MVsxLTldXFxcXGR7Nn0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzY5MSBYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrNjkxIDMyMDEyMzRcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTW9sZG92YVwiLFxuICAgICAgXCJjb2RlXCI6IFwiTURcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzM3M1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzM3M1s2N11cXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMzczIDZYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIiszNzMgWFggWFhYIFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsvCfh6lcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTW9uYWNvXCIsXG4gICAgICBcImNvZGVcIjogXCJNQ1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMzc3XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMzc3WzQtOV1cXFxcZHs3LDh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszNzcgNlhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIiszNzcgNiBYWCBYWCBYWCBYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsvCfh6hcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTW9uZ29saWFcIixcbiAgICAgIFwiY29kZVwiOiBcIk1OXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis5NzZcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs5NzZbNS05XVxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis5NzYgOFhYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzk3NiBYWCBYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ey8J+Hs1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJNb250ZW5lZ3JvXCIsXG4gICAgICBcImNvZGVcIjogXCJNRVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMzgyXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMzgyWzItOV1cXFxcZHs3LDh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszODIgNlhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIiszODIgNlggWFhYIFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsvCfh6pcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTW9udHNlcnJhdFwiLFxuICAgICAgXCJjb2RlXCI6IFwiTVNcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzE2NjRcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsxNjY0XFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzE2NjQgWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMTY2NCBYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsvCfh7hcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTW9yb2Njb1wiLFxuICAgICAgXCJjb2RlXCI6IFwiTUFcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzIxMlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzIxMls1LTldXFxcXGR7OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzIxMiA2WFhYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzIxMiA2WFggWFhYIFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsvCfh6ZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTW96YW1iaXF1ZVwiLFxuICAgICAgXCJjb2RlXCI6IFwiTVpcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzI1OFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzI1OFsyOF1cXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjU4IDhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIisyNTggOFggWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Lwn4e/XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIk15YW5tYXJcIixcbiAgICAgIFwiY29kZVwiOiBcIk1NXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis5NVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzk1WzQtOV1cXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTUgOVhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis5NSA5IFhYWCBYWFggWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ey8J+HslwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJOYW1pYmlhXCIsXG4gICAgICBcImNvZGVcIjogXCJOQVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjY0XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjY0WzYtOF1cXFxcZHs3LDh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNjQgODFYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIisyNjQgODEgWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Pwn4emXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIk5hdXJ1XCIsXG4gICAgICBcImNvZGVcIjogXCJOUlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNjc0XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjc0WzAtOV1cXFxcZHs0fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjc0IFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis2NzQgWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Pwn4e3XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIk5lcGFsXCIsXG4gICAgICBcImNvZGVcIjogXCJOUFwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrOTc3XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrOTc3WzldXFxcXGR7OX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzk3NyA5WFhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis5NzcgOThYIFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ez8J+HtVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJOZXRoZXJsYW5kc1wiLFxuICAgICAgXCJjb2RlXCI6IFwiTkxcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzMxXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMzFbMS05XVxcXFxkezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszMSA2WFhYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzMxIDYgWFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ez8J+HsVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJOZXRoZXJsYW5kcyBBbnRpbGxlc1wiLFxuICAgICAgXCJjb2RlXCI6IFwiQU5cIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzU5OVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzU5OVs5XVxcXFxkezZ9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis1OTkgOVhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNTk5IDlYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwiXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIk5ldyBDYWxlZG9uaWFcIixcbiAgICAgIFwiY29kZVwiOiBcIk5DXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis2ODdcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs2ODdcXFxcZHs2fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjg3IFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNjg3IFhYIFhYIFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ez8J+HqFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJOZXcgWmVhbGFuZFwiLFxuICAgICAgXCJjb2RlXCI6IFwiTlpcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzY0XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjRbMi05XVxcXFxkezcsOX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzY0IDIxWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNjQgMjEgWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Pwn4e/XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIk5pY2FyYWd1YVwiLFxuICAgICAgXCJjb2RlXCI6IFwiTklcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzUwNVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzUwNVs1LThdXFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzUwNSA4WFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNTA1IFhYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hs/Cfh65cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTmlnZXJcIixcbiAgICAgIFwiY29kZVwiOiBcIk5FXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyMjdcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyMjdbMC05XVxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyMjcgOVhYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzIyNyBYWCBYWCBYWCBYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hs/Cfh6pcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTmlnZXJpYVwiLFxuICAgICAgXCJjb2RlXCI6IFwiTkdcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzIzNFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzIzNFs3ODldXFxcXGR7OX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzIzNCA4WFhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIisyMzQgOFhYIFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ez8J+HrFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJOaXVlXCIsXG4gICAgICBcImNvZGVcIjogXCJOVVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNjgzXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjgzXFxcXGR7NH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzY4MyBYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis2ODMgWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hs/Cfh7pcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiTm9yZm9sayBJc2xhbmRcIixcbiAgICAgIFwiY29kZVwiOiBcIk5GXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis2NzJcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs2NzJbM11cXFxcZHs1fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjcyIDNYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNjcyIDMgWFggWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ez8J+Hq1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJOb3J0aGVybiBNYXJpYW5hIElzbGFuZHNcIixcbiAgICAgIFwiY29kZVwiOiBcIk1QXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisxNjcwXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMTY3MFxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisxNjcwIFhYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzE2NzAgWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Lwn4e1XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIk5vcndheVwiLFxuICAgICAgXCJjb2RlXCI6IFwiTk9cIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzQ3XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNDdbMi05XVxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis0NyA0WFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNDcgWFhYIFhYIFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hs/Cfh7RcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiT21hblwiLFxuICAgICAgXCJjb2RlXCI6IFwiT01cIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzk2OFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzk2OFs3OV1cXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTY4IDlYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis5NjggOVhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e08J+HslwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJQYWtpc3RhblwiLFxuICAgICAgXCJjb2RlXCI6IFwiUEtcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzkyXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrOTJbM11cXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTIgM1hYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrOTIgM1hYIFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e18J+HsFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJQYWxhdVwiLFxuICAgICAgXCJjb2RlXCI6IFwiUFdcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzY4MFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzY4MFxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis2ODAgWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNjgwIFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e18J+HvFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJQYWxlc3RpbmlhbiBUZXJyaXRvcnksIE9jY3VwaWVkXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e18J+HuFwiLFxuICAgICAgXCJjb2RlXCI6IFwiUFNcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzk3MFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzk3MFs1OV1cXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTcwIDVYWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzk3MCA1OTkxMjM0NTZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiUGFuYW1hXCIsXG4gICAgICBcImNvZGVcIjogXCJQQVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNTA3XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNTA3WzEtOV1cXFxcZHs2fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTA3IDZYWFhYWFhcIixcbiAgICAgIFwiZm9ybWF0XCI6IFwiKzUwNyBYWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Xwn4emXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlBhcHVhIE5ldyBHdWluZWFcIixcbiAgICAgIFwiY29kZVwiOiBcIlBHXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis2NzVcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs2NzVbN11cXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjc1IDdYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis2NzUgN1hYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e18J+HrFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJQYXJhZ3VheVwiLFxuICAgICAgXCJjb2RlXCI6IFwiUFlcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzU5NVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzU5NVs5XVxcXFxkezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis1OTUgOVhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis1OTUgOVhYIFhYWCBYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Xwn4e+XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlBlcnVcIixcbiAgICAgIFwiY29kZVwiOiBcIlBFXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis1MVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzUxWzldXFxcXGR7OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzUxIDlYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNTEgOVhYIFhYWCBYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Xwn4eqXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlBoaWxpcHBpbmVzXCIsXG4gICAgICBcImNvZGVcIjogXCJQSFwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNjNcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs2M1s5XVxcXFxkezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis2MyA5WFhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis2MyA5WFggWFhYIFhYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Xwn4etXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlBpdGNhaXJuXCIsXG4gICAgICBcImNvZGVcIjogXCJQTlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNjRcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs2NFxcXFxkezEwfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjQgWFhYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNjQgWFhYIFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e18J+Hs1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJQb2xhbmRcIixcbiAgICAgIFwiY29kZVwiOiBcIlBMXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis0OFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzQ4WzEtOV1cXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNDggNVhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis0OCA1WFggWFhYIFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HtfCfh7FcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiUG9ydHVnYWxcIixcbiAgICAgIFwiY29kZVwiOiBcIlBUXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIiszNTFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCszNTFbMS05XVxcXFxkezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszNTEgOVhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIiszNTEgOVhYIFhYWCBYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7Xwn4e5XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlB1ZXJ0byBSaWNvXCIsXG4gICAgICBcImNvZGVcIjogXCJQUlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMTkzOVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzE5MzlcXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMTkzOSBYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIisxOTM5IFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e18J+Ht1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJRYXRhclwiLFxuICAgICAgXCJjb2RlXCI6IFwiUUFcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzk3NFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzk3NFszLTddXFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzk3NCAzWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrOTc0IFhYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HtvCfh6ZcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiUm9tYW5pYVwiLFxuICAgICAgXCJjb2RlXCI6IFwiUk9cIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzQwXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNDBbN11cXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNDAgN1hYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis0MCA3WFggWFhYIFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Ht/Cfh7RcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiUnVzc2lhXCIsXG4gICAgICBcImNvZGVcIjogXCJSVVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrN1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzdbOV1cXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNyA5WFhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIis3IDlYWCBYWFggWFggWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7fwn4e6XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlJ3YW5kYVwiLFxuICAgICAgXCJjb2RlXCI6IFwiUldcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzI1MFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzI1MFs3XVxcXFxkezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNTAgN1hYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIisyNTAgN1hYIFhYWCBYWFhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7fwn4e8XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlJldW5pb25cIixcbiAgICAgIFwiY29kZVwiOiBcIlJFXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyNjJcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyNjJbNi03XVxcXFxkezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNjIgNlhYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIisyNjIgNlhYIFhYIFhYIFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e38J+HqlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJTYWludCBCYXJ0aGVsZW15XCIsXG4gICAgICBcImNvZGVcIjogXCJCTFwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNTkwXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNTkwWzYtN11cXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTkwIDZYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNTkwIDZYWCBYWCBYWCBYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hp/Cfh7FcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiU2FpbnQgSGVsZW5hLCBBc2NlbnNpb24gYW5kIFRyaXN0YW4gRGEgQ3VuaGFcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7jwn4etXCIsXG4gICAgICBcImNvZGVcIjogXCJTSFwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjkwXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjkwXFxcXGR7NH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzI5MCBYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrMjkwIDIzODBcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiU2FpbnQgS2l0dHMgYW5kIE5ldmlzXCIsXG4gICAgICBcImNvZGVcIjogXCJLTlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMTg2OVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzE4NjlcXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMTg2OSBYWFhYWFhYXCIsXG4gICAgICBcImZvcm1hdFwiOiBcIisxODY5IFhYWCBYWFhYXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ew8J+Hs1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJTYWludCBMdWNpYVwiLFxuICAgICAgXCJjb2RlXCI6IFwiTENcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzE3NThcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsxNzU4XFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzE3NTggWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrMTc1OCBYWFggWFhYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsfCfh6hcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiU2FpbnQgTWFydGluXCIsXG4gICAgICBcImNvZGVcIjogXCJNRlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNTkwXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNTkwWzYtN11cXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTkwIDZYWFhYWFhYWFwiLFxuICAgICAgXCJmb3JtYXRcIjogXCIrNTkwIDZYWCBYWCBYWCBYWFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HsvCfh6tcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvblwiLFxuICAgICAgXCJjb2RlXCI6IFwiUE1cIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzUwOFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzUwOFxcXFxkezZ9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis1MDggWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrNTA4IDQxMjM0NVwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HtfCfh7JcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiU2FpbnQgVmluY2VudCBhbmQgdGhlIEdyZW5hZGluZXNcIixcbiAgICAgIFwiY29kZVwiOiBcIlZDXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisxNzg0XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMTc4NFxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisxNzg0IFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIisxNzg0IDQ1NjEyMzRcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7vwn4eoXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlNhbW9hXCIsXG4gICAgICBcImNvZGVcIjogXCJXU1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNjg1XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjg1XFxcXGR7NSw3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjg1IFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzY4NSA3MjEyMzRcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7zwn4e4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlNhbiBNYXJpbm9cIixcbiAgICAgIFwiY29kZVwiOiBcIlNNXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIiszNzhcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCszNzhcXFxcZHs2LDEwfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMzc4IFhYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrMzc4IDA1NDkxMjM0NTZcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7jwn4eyXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlNhbyBUb21lIGFuZCBQcmluY2lwZVwiLFxuICAgICAgXCJjb2RlXCI6IFwiU1RcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzIzOVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzIzOVxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyMzkgWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzIzOSA5OTEyMzQ1XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e48J+HuVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJTYXVkaSBBcmFiaWFcIixcbiAgICAgIFwiY29kZVwiOiBcIlNBXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis5NjZcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs5NjZcXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTY2IDVYWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzk2NiA1MTIzNDU2NzhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7jwn4emXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlNlbmVnYWxcIixcbiAgICAgIFwiY29kZVwiOiBcIlNOXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyMjFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyMjFcXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjIxIDdYWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzIyMSA3NzEyMzQ1NjdcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7jwn4ezXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlNlcmJpYVwiLFxuICAgICAgXCJjb2RlXCI6IFwiUlNcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzM4MVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzM4MVxcXFxkezgsOX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzM4MSA2WFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIiszODEgNjAxMjM0NTY3XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e38J+HuFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJTZXljaGVsbGVzXCIsXG4gICAgICBcImNvZGVcIjogXCJTQ1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjQ4XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjQ4XFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzI0OCBYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrMjQ4IDI1MTIzNDVcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7jwn4eoXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlNpZXJyYSBMZW9uZVwiLFxuICAgICAgXCJjb2RlXCI6IFwiU0xcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzIzMlwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzIzMlxcXFxkezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyMzIgN1hYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIisyMzIgNzYxMjM0NTZcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7jwn4exXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlNpbmdhcG9yZVwiLFxuICAgICAgXCJjb2RlXCI6IFwiU0dcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzY1XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjVcXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjUgOFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIis2NSA4MTIzNDU2N1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HuPCfh6xcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiU2xvdmFraWFcIixcbiAgICAgIFwiY29kZVwiOiBcIlNLXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis0MjFcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs0MjFcXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNDIxIDlYWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzQyMSA5MTIzNDU2NzhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7jwn4ewXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlNsb3ZlbmlhXCIsXG4gICAgICBcImNvZGVcIjogXCJTSVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMzg2XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMzg2XFxcXGR7OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzM4NiAzWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzM4NiAzMTIzNDU2N1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HuPCfh65cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiU29sb21vbiBJc2xhbmRzXCIsXG4gICAgICBcImNvZGVcIjogXCJTQlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNjc3XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjc3XFxcXGR7NSw3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjc3IDdYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzY3NyA3MTIzNDU2XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e48J+Hp1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJTb21hbGlhXCIsXG4gICAgICBcImNvZGVcIjogXCJTT1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjUyXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjUyXFxcXGR7OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzI1MiA2WFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzI1MiA2MTIzNDU2N1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HuPCfh7RcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiU291dGggQWZyaWNhXCIsXG4gICAgICBcImNvZGVcIjogXCJaQVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjdcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyN1xcXFxkezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNyA4WFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIisyNyA4MzEyMzQ1NjdcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7/wn4emXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlNvdXRoIFN1ZGFuXCIsXG4gICAgICBcImNvZGVcIjogXCJTU1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjExXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjExXFxcXGR7OX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzIxMSA5WFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIisyMTEgOTc3MTIzNDU2XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e48J+HuFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJTb3V0aCBHZW9yZ2lhIGFuZCB0aGUgU291dGggU2FuZHdpY2ggSXNsYW5kc1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HrPCfh7hcIixcbiAgICAgIFwiY29kZVwiOiBcIkdTXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis1MDBcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs1MDBcXFxcZHs1fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTAwIFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrNTAwIDEyMzQ1XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlNwYWluXCIsXG4gICAgICBcImNvZGVcIjogXCJFU1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMzRcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCszNFxcXFxkezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIiszNCA2WFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIiszNCA2MTIzNDU2NzhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6rwn4e4XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlNyaSBMYW5rYVwiLFxuICAgICAgXCJjb2RlXCI6IFwiTEtcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzk0XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrOTRcXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTQgN1hYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrOTQgNzEyMzQ1Njc4XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4ex8J+HsFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJTdWRhblwiLFxuICAgICAgXCJjb2RlXCI6IFwiU0RcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzI0OVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzI0OVxcXFxkezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNDkgOVhYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrMjQ5IDkxMjM0NTY3OFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HuPCfh6lcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiU3VyaW5hbWVcIixcbiAgICAgIFwiY29kZVwiOiBcIlNSXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis1OTdcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs1OTdcXFxcZHs2LDd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis1OTcgWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzU5NyA4MTIzNDU2XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e48J+Ht1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJTdmFsYmFyZCBhbmQgSmFuIE1heWVuXCIsXG4gICAgICBcImNvZGVcIjogXCJTSlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNDdcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs0N1xcXFxkezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis0NyBYWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzQ3IDQxMjM0NTY3XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e48J+Hr1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJFc3dhdGluaVwiLFxuICAgICAgXCJjb2RlXCI6IFwiU1pcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzI2OFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzI2OFxcXFxkezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNjggN1hYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIisyNjggNzYxMjM0NTZcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7jwn4e/XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlN3ZWRlblwiLFxuICAgICAgXCJjb2RlXCI6IFwiU0VcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzQ2XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNDZcXFxcZHs3LDEwfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNDYgN1hYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrNDYgNzAxMjM0NTY3XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e48J+HqlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJTd2l0emVybGFuZFwiLFxuICAgICAgXCJjb2RlXCI6IFwiQ0hcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzQxXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNDFcXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNDEgN1hYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrNDEgNzgxMjM0NTY3XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4eo8J+HrVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJTeXJpYW4gQXJhYiBSZXB1YmxpY1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HuPCfh75cIixcbiAgICAgIFwiY29kZVwiOiBcIlNZXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis5NjNcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs5NjNbOV1cXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTYzIDlYWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzk2MyA5OTEyMzQ1NjdcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiVGFpd2FuXCIsXG4gICAgICBcImNvZGVcIjogXCJUV1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrODg2XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrODg2XFxcXGR7OCw5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrODg2IDlYWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzg4NiA5MTIzNDU2NzhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7nwn4e8XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlRhamlraXN0YW5cIixcbiAgICAgIFwiY29kZVwiOiBcIlRKXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis5OTJcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs5OTJcXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTkyIDlYWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzk5MiA5MTcxMjM0NTZcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7nwn4evXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlRhbnphbmlhLCBVbml0ZWQgUmVwdWJsaWMgb2YgVGFuemFuaWFcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7nwn4e/XCIsXG4gICAgICBcImNvZGVcIjogXCJUWlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjU1XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjU1WzY3XVxcXFxkezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNTUgN1hYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrMjU1IDcxMjM0NTY3OFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJUaGFpbGFuZFwiLFxuICAgICAgXCJjb2RlXCI6IFwiVEhcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzY2XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjZcXFxcZHs4LDl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis2NiA4WFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIis2NiA4MTIzNDU2NzhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7nwn4etXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlRpbW9yLUxlc3RlXCIsXG4gICAgICBcImNvZGVcIjogXCJUTFwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNjcwXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjcwXFxcXGR7OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzY3MCA3WFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzY3MCA3NzEyMzQ1NlwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HufCfh7FcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiVG9nb1wiLFxuICAgICAgXCJjb2RlXCI6IFwiVEdcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzIyOFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzIyOFxcXFxkezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyMjggOVhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIisyMjggOTEyMzQ1NjdcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7nwn4esXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlRva2VsYXVcIixcbiAgICAgIFwiY29kZVwiOiBcIlRLXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis2OTBcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs2OTBcXFxcZHs0fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjkwIFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIis2OTAgMTIzNFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HufCfh7BcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiVG9uZ2FcIixcbiAgICAgIFwiY29kZVwiOiBcIlRPXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis2NzZcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs2NzZcXFxcZHs1fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjc2IFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrNjc2IDcxMjM0XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e58J+HtFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJUcmluaWRhZCBhbmQgVG9iYWdvXCIsXG4gICAgICBcImNvZGVcIjogXCJUVFwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMTg2OFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzE4NjhcXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMTg2OCBYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrMTg2OCAyODQxMjM0XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e58J+HuVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJUdW5pc2lhXCIsXG4gICAgICBcImNvZGVcIjogXCJUTlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjE2XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjE2XFxcXGR7OH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzIxNiBYWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzIxNiAyMDEyMzQ1NlwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HufCfh7NcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiVHVya2V5XCIsXG4gICAgICBcImNvZGVcIjogXCJUUlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrOTBcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs5MFxcXFxkezEwfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrOTAgNVhYWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzkwIDUzMTIzNDU2NzhcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7nwn4e3XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlR1cmttZW5pc3RhblwiLFxuICAgICAgXCJjb2RlXCI6IFwiVE1cIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzk5M1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzk5M1xcXFxkezh9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis5OTMgNlhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIis5OTMgNjEyMzQ1NjdcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7nwn4eyXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlR1cmtzIGFuZCBDYWljb3MgSXNsYW5kc1wiLFxuICAgICAgXCJjb2RlXCI6IFwiVENcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzE2NDlcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsxNjQ5XFxcXGR7N30kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzE2NDkgWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzE2NDkgMjMxMTIzNFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HufCfh6hcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiVHV2YWx1XCIsXG4gICAgICBcImNvZGVcIjogXCJUVlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNjg4XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjg4XFxcXGR7NX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzY4OCBYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzY4OCAyMDEyM1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HufCfh7tcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiVWdhbmRhXCIsXG4gICAgICBcImNvZGVcIjogXCJVR1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMjU2XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMjU2XFxcXGR7OX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzI1NiA3WFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIisyNTYgNzEyMzQ1Njc4XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e68J+HrFwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJVa3JhaW5lXCIsXG4gICAgICBcImNvZGVcIjogXCJVQVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMzgwXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMzgwXFxcXGR7OX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzM4MCA5WFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIiszODAgOTMxMjM0NTY3XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e68J+HplwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJVbml0ZWQgQXJhYiBFbWlyYXRlc1wiLFxuICAgICAgXCJjb2RlXCI6IFwiQUVcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzk3MVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzk3MVxcXFxkezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIis5NzEgNVhYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrOTcxIDUwMTIzNDU2N1wiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+HpvCfh6pcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiVW5pdGVkIEtpbmdkb21cIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh6zwn4enXCIsXG4gICAgICBcImNvZGVcIjogXCJHQlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNDRcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs0NFswLTldezEwfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNDQgNzEyMyA0NTYgNzg5XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlVuaXRlZCBTdGF0ZXNcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7rwn4e4XCIsXG4gICAgICBcImNvZGVcIjogXCJVU1wiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMVwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzFbMC05XXsxMH0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzEgMjEzIDEyMyA0NTY3XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlVydWd1YXlcIixcbiAgICAgIFwiY29kZVwiOiBcIlVZXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIis1OThcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs1OThcXFxcZHs4fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTk4IDlYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrNTk4IDkxMjM0NTY3XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e68J+HvlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJVemJla2lzdGFuXCIsXG4gICAgICBcImNvZGVcIjogXCJVWlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrOTk4XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrOTk4XFxcXGR7OX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzk5OCA5WFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIis5OTggOTAxMjM0NTY3XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e68J+Hv1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJWYW51YXR1XCIsXG4gICAgICBcImNvZGVcIjogXCJWVVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNjc4XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjc4XFxcXGR7NSw3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNjc4IFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzY3OCA1OTEyMzRcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7vwn4e6XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlZlbmV6dWVsYSwgQm9saXZhcmlhbiBSZXB1YmxpYyBvZiBWZW5lenVlbGFcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7vwn4eqXCIsXG4gICAgICBcImNvZGVcIjogXCJWRVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNThcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCs1OFsyNF1cXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrNTggNFhYWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzU4IDQxMjEyMzQ1NjdcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiVmlldG5hbVwiLFxuICAgICAgXCJjb2RlXCI6IFwiVk5cIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzg0XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrODRcXFxcZHs5LDEwfSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrODQgOVhYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrODQgOTEyMzQ1Njc4XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e78J+Hs1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJWaXJnaW4gSXNsYW5kcywgQnJpdGlzaFwiLFxuICAgICAgXCJmbGFnXCI6IFwi8J+Hu/Cfh6xcIixcbiAgICAgIFwiY29kZVwiOiBcIlZHXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisxMjg0XCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrMTI4NFxcXFxkezd9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisxMjg0IFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIisxMjg0IDMwMDEyMzRcIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiVmlyZ2luIElzbGFuZHMsIFUuUy5cIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7vwn4euXCIsXG4gICAgICBcImNvZGVcIjogXCJWSVwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrMTM0MFwiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzEzNDBcXFxcZHs3fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMTM0MCBYWFhYWFhYXCIsXG4gICAgICBcImV4YW1wbGVcIjogXCIrMTM0MCA3NzQxMjM0XCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIldhbGxpcyBhbmQgRnV0dW5hXCIsXG4gICAgICBcImNvZGVcIjogXCJXRlwiLFxuICAgICAgXCJkaWFsX2NvZGVcIjogXCIrNjgxXCIsXG4gICAgICBcInJlZ2V4XCI6IFwiXlxcXFwrNjgxXFxcXGR7Nn0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzY4MSBYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIis2ODEgNTAxMjM0XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e88J+Hq1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJZZW1lblwiLFxuICAgICAgXCJjb2RlXCI6IFwiWUVcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzk2N1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzk2N1xcXFxkezgsOX0kXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiKzk2NyA3WFhYWFhYWFhcIixcbiAgICAgIFwiZXhhbXBsZVwiOiBcIis5NjcgNzEyMzQ1Njc4XCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e+8J+HqlwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJaYW1iaWFcIixcbiAgICAgIFwiY29kZVwiOiBcIlpNXCIsXG4gICAgICBcImRpYWxfY29kZVwiOiBcIisyNjBcIixcbiAgICAgIFwicmVnZXhcIjogXCJeXFxcXCsyNjBcXFxcZHs5fSRcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCIrMjYwIDlYWFhYWFhYWFwiLFxuICAgICAgXCJleGFtcGxlXCI6IFwiKzI2MCA5NzEyMzQ1NjdcIixcbiAgICAgIFwiZmxhZ1wiOiBcIvCfh7/wn4eyXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIlppbWJhYndlXCIsXG4gICAgICBcImZsYWdcIjogXCLwn4e/8J+HvFwiLFxuICAgICAgXCJjb2RlXCI6IFwiWldcIixcbiAgICAgIFwiZGlhbF9jb2RlXCI6IFwiKzI2M1wiLFxuICAgICAgXCJyZWdleFwiOiBcIl5cXFxcKzI2M1swLTldezl9JFwiLFxuICAgICAgXCJwbGFjZWhvbGRlclwiOiBcIisyNjMgNzEgMjM0IDU2NzhcIlxuICAgIH1cbiAgXTtcbiAgZmlsdGVyZWRDb3VudHJpZXM6IGFueVxuICBzZWxlY3RlZENvdW50cnkhOiBhbnk7XG4gIHNob3dDb3VudHJ5RHJvcGRvd24gPSBmYWxzZTtcbiAgY291bnRyeVNlYXJjaCA9ICcnO1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgLy8gSW50ZXJuYWwgc3RhdGVcbiAgdmlld0VkaXQ6IGJvb2xlYW4gPSBmYWxzZSBcbiAgb3JpZ2luYWxWYWx1ZTogYW55OyAvLyBUbyBzdG9yZSB0aGUgb3JpZ2luYWwgdmFsdWUgd2hlbiBlbnRlcmluZyB2aWV3IGVkaXQgbW9kZVxuICBpc1NhdmVIb3ZlcmVkID0gZmFsc2U7XG4gIGlzRGlzY2FyZEhvdmVyZWQgPSBmYWxzZTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UscHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UpIHt9XG4gIGhhc0VtaXR0ZWRSZWYgPSBmYWxzZTtcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMudHlwZSA9PT0gJ2xvY2F0aW9uJyAmJlxuICAgICAgdGhpcy5pbnB1dFJlZiAmJlxuICAgICAgIXRoaXMuaGFzRW1pdHRlZFJlZlxuICAgICkge1xuICAgICAgdGhpcy5uYXRpdmVJbnB1dFJlZi5lbWl0KHRoaXMuaW5wdXRSZWYpO1xuICAgICAgdGhpcy5oYXNFbWl0dGVkUmVmID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ21vZGUnXSkge1xuICAgICAgdGhpcy52aWV3RWRpdCA9IGZhbHNlXG4gICAgICB0aGlzLnVwZGF0ZUNvbnRyb2xTdGF0ZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1sndmFsdWUnXSkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKGNoYW5nZXNbJ3ZhbHVlJ10uY3VycmVudFZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZlBhc3MgJiYgY2hhbmdlc1snY29uZlBhc3NWYWwnXSAmJiAhY2hhbmdlc1snY29uZlBhc3NWYWwnXS5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy52YWx1ZSA9ICcnOyAvLyBSZXNldCBpbnB1dCB2YWx1ZVxuICAgIH1cbiAgICBpZiAoY2hhbmdlc1sndHlwZSddKSB7XG4gICAgICB0aGlzLnNldHVwVmFsaWRhdG9ycygpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1sndHlwZSddICYmIGNoYW5nZXNbJ3R5cGUnXS5jdXJyZW50VmFsdWUgPT09ICdsb2NhdGlvbicpIHtcbiAgICAgIHRoaXMuaGFzRW1pdHRlZFJlZiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpIHsgICAgXG4gICAgLy8gU0tTMjhGRUIyNSBkZWZhdWx0IGNvdW50cnkgc2V0IFxuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdGhpcy5jb3VudHJpZXMuZmluZChjID0+IGMuY29kZSA9PT0gJ0lOJykgfHwgdGhpcy5jb3VudHJpZXNbMF07XG4gICAgdGhpcy5maWx0ZXJlZENvdW50cmllcyA9IFsuLi50aGlzLmNvdW50cmllc107XG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdIHwgbnVsbCA9IFtdO1xuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgaWYgKHRoaXMubWluTGVuZ3RoKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5taW5MZW5ndGgpKTtcbiAgICBpZiAodGhpcy5wYXR0ZXJuKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMucGF0dGVybikpO1xuICAgIGlmICh0aGlzLm1heExlbmd0aCkgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubWF4TGVuZ3RoKSk7XG4gICAgaWYgKHRoaXMuY29uZlBhc3MpIHZhbGlkYXRvcnMucHVzaCh0aGlzLnBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IoKSk7XG4gICAgdGhpcy5jb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gIFxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdvdHAnKSB7XG4gICAgICB0aGlzLmlucHV0cy5jb250cm9scy5mb3JFYWNoKChjb250cm9sKSA9PiB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgICAgIH0pO1xuICAgIH1lbHNlIGlmICh0aGlzLnR5cGUgPT09ICd0ZWwnKSB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLnJlbW92ZURpYWxDb2RlRnJvbVJlZ2V4KHRoaXMuc2VsZWN0ZWRDb3VudHJ5LnJlZ2V4LCB0aGlzLnNlbGVjdGVkQ291bnRyeS5kaWFsX2NvZGUpKVxuICAgICAgXSk7XG4gICAgfVxuICAgIC8vQVAtMDFKVUwyNSAtIERpc2FibGUgdGhlIGZpZWxkIHVubGVzcyBpbiAnZWRpdCcgbW9kZSBhbmQgcXVlc3Rpb24gaXMgbm90IG1hcmtlZCBhcyByZWFkLW9ubHlcbiAgICB0aGlzLnNldERpc2FibGVkU3RhdGUodGhpcy5tb2RlID09PSAnZWRpdCcgPyAodGhpcy5xdWVzdGlvbj8uaXNSZWFkT25seSA9PT0gdHJ1ZSB8fCB0aGlzLnF1ZXN0aW9uPy5pc1JlYWRPbmx5ID09PSAndHJ1ZScpIDogdHJ1ZSk7XG4gICAgdGhpcy5xdWVzdGlvblsnc3ViVGV4dCddID0gdHlwZW9mIHRoaXMucXVlc3Rpb25bJ3N1YlRleHQnXSA9PT0gJ3N0cmluZycgPyB0aGlzLnF1ZXN0aW9uWydzdWJUZXh0J10gPT09ICcnID8gdGhpcy5xdWVzdGlvblsnc3ViVGV4dCddID0gbnVsbCA6IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvblsnc3ViVGV4dCddKSA6IHRoaXMucXVlc3Rpb25bJ3N1YlRleHQnXTtcbiAgXG4gICAgaWYodGhpcy5xdWVzdGlvbj8uc3ViVGV4dCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgbGV0IGRlcGVuZGVuY3lPYmo6IGFueSA9IHRoaXMucXVlc3Rpb24/LnN1YlRleHQ7XG4gICAgICBpZihkZXBlbmRlbmN5T2JqLmRpc2FibGVkICYmIGRlcGVuZGVuY3lPYmouZGlzYWJsZWQgPT0gXCJmYWxzZVwiKXtcbiAgICAgICAgLy8gdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfWVsc2V7XG4gICAgICAgIC8vIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgLy8gU3Vic2NyaWJlIGZvciB0aGUgY2hhbmdlc1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5nZVNlcnZpY2UuY2hhbmdlQW5ub3VuY2VkJC5zdWJzY3JpYmUoXG4gICAgICAgIChjaGFuZ2VWYWx1ZSkgPT4ge1xuICAgICAgICAgIGlmKGNoYW5nZVZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBzdWJzY3JpcHRpb24gZm9yIHRoZSBjaGFuZ2UnKTtcbiAgICAgICAgICAgIGlmKGNoYW5nZVZhbHVlLnZhbHVlT2JqICE9IHVuZGVmaW5lZCAmJiBjaGFuZ2VWYWx1ZS5mcm9tUXVlc3Rpb25JZCA9PSBkZXBlbmRlbmN5T2JqLnNvdXJjZVF1ZXN0aW9uSWQpIHtcbiAgICAgICAgICAgICAgLy8gVkQgMjBBdWcyNCBoYW5kbGluZyB0aGUgbXVsdGlwbGUgb2JqZWN0XG4gICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGNoYW5nZVZhbHVlLnZhbHVlT2JqLGRlcGVuZGVuY3lPYmoudmFsdWVGaWVsZCk7XG4gICAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZS5lbWl0KHtxdWVzdGlvbiA6IHRoaXMucXVlc3Rpb24sIHZhbHVlOiB0aGlzLnZhbHVlfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVNlcnZpY2UuY29uZmlybUNoYW5nZShkZXBlbmRlbmN5T2JqLnNvdXJjZVF1ZXN0aW9uSWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncXVpbGwtc2F2ZScsIHRoaXMuc2F2ZUNoYW5nZXMuYmluZCh0aGlzKSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncXVpbGwtZGlzY2FyZCcsIHRoaXMuZGlzY2FyZENoYW5nZXMuYmluZCh0aGlzKSk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncXVpbGwtc2F2ZScsIHRoaXMuc2F2ZUNoYW5nZXMuYmluZCh0aGlzKSk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncXVpbGwtZGlzY2FyZCcsIHRoaXMuZGlzY2FyZENoYW5nZXMuYmluZCh0aGlzKSk7XG4gIH1cbiAgLy8gU0tTMTRKVU4yNSAgRHluYW1pY2FsbHkgbG9hZCBRdWlsbCBlZGl0b3IgdG9vbGJhclxuICBnZXRRdWlsbE1vZHVsZXMocXVlc3Rpb25JZDogc3RyaW5nKTogUXVpbGxNb2R1bGVzIHtcbiAgICBpZih0aGlzLnZpZXdFZGl0KXtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGltYWdlUmVzaXpvcjoge30sXG4gICAgICAgIHRvb2xiYXI6IHtcbiAgICAgICAgICBjb250YWluZXI6IFtcbiAgICAgICAgICAgIFt7ICdmb250JzogZm9udEZhbWlseUFyciB9XSwgIC8vUlMgMTdKQU4yMDI1ICBBZGRlZCBmb250IGZhbWlseSBkcm9wZG93blxuICAgICAgICAgICAgWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnc3RyaWtlJ10sXG4gICAgICAgICAgICBbJ2Jsb2NrcXVvdGUnLCAnY29kZS1ibG9jayddLFxuICAgICAgICAgICAgW3sgaGVhZGVyOiBbMSwgMiwgMywgNCwgNSwgNiwgZmFsc2VdIH1dLFxuICAgICAgICAgICAgW3sgbGlzdDogJ29yZGVyZWQnIH0sIHsgbGlzdDogJ2J1bGxldCcgfV0sXG4gICAgICAgICAgICBbeyBjb2xvcjogW10gfSwgeyBiYWNrZ3JvdW5kOiBbXSB9XSxcbiAgICAgICAgICAgIFt7IGFsaWduOiBbXSB9XSxcbiAgICAgICAgICAgIFsnbGluaycsICdpbWFnZScsICd2aWRlbyddLFxuICAgICAgICAgICAgWydmb3JtdWxhJ10sXG4gICAgICAgICAgICBbJ2NsZWFuJ10sXG4gICAgICAgICAgICBbJ3NhdmUnLCAnZGlzY2FyZCddXG4gICAgICAgICAgXSxcbiAgICAgICAgICBoYW5kbGVyczoge1xuICAgICAgICAgICAgc2F2ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudCgncXVpbGwtc2F2ZScsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHsgaWQ6IHF1ZXN0aW9uSWQgfSAgLy8gWW91IGluamVjdCB0aGUgY29ycmVjdCBJRCBkaXJlY3RseSBoZXJlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkaXNjYXJkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdxdWlsbC1kaXNjYXJkJywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBpZDogcXVlc3Rpb25JZCB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lbnRpb246IHtcbiAgICAgICAgICBhbGxvd2VkQ2hhcnM6IC9eW0EtWmEtelxcc8OFw4TDlsOlw6TDtl0qJC8sXG4gICAgICAgICAgbWVudGlvbkRlbm90YXRpb25DaGFyczogWydAJywgJyMnXSxcbiAgICAgICAgICBzb3VyY2U6IGZ1bmN0aW9uIChzZWFyY2hUZXJtOiBzdHJpbmcsIHJlbmRlckxpc3Q6IGFueSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gW1xuICAgICAgICAgICAgICB7IGlkOiAxLCB2YWx1ZTogJ1VzZXIgMScgfSxcbiAgICAgICAgICAgICAgeyBpZDogMiwgdmFsdWU6ICdVc2VyIDInIH0sXG4gICAgICAgICAgICBdO1xuICAgICAgXG4gICAgICAgICAgICBpZiAoc2VhcmNoVGVybS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgcmVuZGVyTGlzdCh2YWx1ZXMsIHNlYXJjaFRlcm0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHZhbHVlcy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgaXRlbS52YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmVuZGVyTGlzdChtYXRjaGVzLCBzZWFyY2hUZXJtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH1lbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGltYWdlUmVzaXpvcjoge30sXG4gICAgICAgIHRvb2xiYXI6IHtcbiAgICAgICAgICBjb250YWluZXI6IFtcbiAgICAgICAgICAgIFt7ICdmb250JzogZm9udEZhbWlseUFyciB9XSwgIC8vUlMgMTdKQU4yMDI1ICBBZGRlZCBmb250IGZhbWlseSBkcm9wZG93blxuICAgICAgICAgICAgWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnc3RyaWtlJ10sXG4gICAgICAgICAgICBbJ2Jsb2NrcXVvdGUnLCAnY29kZS1ibG9jayddLFxuICAgICAgICAgICAgW3sgaGVhZGVyOiBbMSwgMiwgMywgNCwgNSwgNiwgZmFsc2VdIH1dLFxuICAgICAgICAgICAgW3sgbGlzdDogJ29yZGVyZWQnIH0sIHsgbGlzdDogJ2J1bGxldCcgfV0sXG4gICAgICAgICAgICBbeyBjb2xvcjogW10gfSwgeyBiYWNrZ3JvdW5kOiBbXSB9XSxcbiAgICAgICAgICAgIFt7IGFsaWduOiBbXSB9XSxcbiAgICAgICAgICAgIFsnbGluaycsICdpbWFnZScsICd2aWRlbyddLFxuICAgICAgICAgICAgWydmb3JtdWxhJ10sXG4gICAgICAgICAgICBbJ2NsZWFuJ10sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbWVudGlvbjoge1xuICAgICAgICAgIGFsbG93ZWRDaGFyczogL15bQS1aYS16XFxzw4XDhMOWw6XDpMO2XSokLyxcbiAgICAgICAgICBtZW50aW9uRGVub3RhdGlvbkNoYXJzOiBbJ0AnLCAnIyddLFxuICAgICAgICAgIHNvdXJjZTogZnVuY3Rpb24gKHNlYXJjaFRlcm06IHN0cmluZywgcmVuZGVyTGlzdDogYW55KSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBbXG4gICAgICAgICAgICAgIHsgaWQ6IDEsIHZhbHVlOiAnVXNlciAxJyB9LFxuICAgICAgICAgICAgICB7IGlkOiAyLCB2YWx1ZTogJ1VzZXIgMicgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIFxuICAgICAgICAgICAgaWYgKHNlYXJjaFRlcm0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIHJlbmRlckxpc3QodmFsdWVzLCBzZWFyY2hUZXJtKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSB2YWx1ZXMuZmlsdGVyKChpdGVtKSA9PlxuICAgICAgICAgICAgICAgIGl0ZW0udmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJlbmRlckxpc3QobWF0Y2hlcywgc2VhcmNoVGVybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBzZXR1cFZhbGlkYXRvcnMoKSB7XG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuICAgIFxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgaWYgKHRoaXMubWluTGVuZ3RoKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5taW5MZW5ndGgpKTtcbiAgICBpZiAodGhpcy5tYXhMZW5ndGgpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heExlbmd0aCkpO1xuICAgIGlmICh0aGlzLnBhdHRlcm4pIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5wYXR0ZXJuKSk7XG4gICAgXG4gICAgdGhpcy5jb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gIH1cbiAgLy8gU0tTMjhGRUIyNSBDb3VudHJ5IERyb3Bkb3duIGNsb3NlIFxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIGNsb3NlRHJvcGRvd24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICB0aGlzLnNob3dDb3VudHJ5RHJvcGRvd24gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBvbklucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBpZih0aGlzLnR5cGUgPT09ICdkYXRldGltZScgfHwgdGhpcy50eXBlID09PSAnZGF0ZScgfHwgdGhpcy50eXBlID09PSAndGltZScpe1xuICAgICAgdGhpcy52YWx1ZSA9IGV2ZW50LnZhbHVlXG4gICAgfSBlbHNlIGlmKHRoaXMudHlwZSA9PT0gJ3JpY2h0ZXh0Jyl7XG4gICAgICB0aGlzLnZhbHVlID0gZXZlbnQ7XG4gICAgfWVsc2UgaWYodGhpcy50eXBlID09PSAnY2hlY2tib3gnKXsgLy8gU0tTMjNKVU4yNSBoYW5kZWwgY2hlY2tib3ggZXZlbnRcbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcbiAgICAgIHRoaXMudmFsdWUgPSBpc0NoZWNrZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgdGhpcy5yYXdJbnB1dFZhbCA9IGlucHV0RWxlbWVudC52YWx1ZTtcbiAgICAgIGlmKHRoaXMudHlwZSA9PT0gJ3RlbCcpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmRpYWxfY29kZSsgXCIgXCIgKyBpbnB1dEVsZW1lbnQudmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgLy8gU0tTMTFKVU4yNSBPbmx5IGVtaXQgdGhlIHZhbHVlIGlmIG5vdCBpbiB2aWV3IGVkaXQgbW9kZVxuICAgIGlmICghdGhpcy52aWV3RWRpdCB8fCB0aGlzLnR5cGUgPT09ICdsaXN0Jykge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlLmVtaXQoe3F1ZXN0aW9uIDogdGhpcy5xdWVzdGlvbiwgdmFsdWU6IHRoaXMudmFsdWV9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVQYXNzd29yZFZpc2liaWxpdHkoKSB7XG4gICAgdGhpcy5pc1Bhc3N3b3JkVmlzaWJsZSA9ICF0aGlzLmlzUGFzc3dvcmRWaXNpYmxlO1xuICB9XG4gIHBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgY29uZmlybVBhc3N3b3JkID0gY29udHJvbC52YWx1ZTsgLy8gR2V0IGNvbmZpcm0gcGFzc3dvcmQgZmllbGQgdmFsdWVcbiAgICAgIGlmKHRoaXMuY29uZlBhc3NWYWwgPT09ICcnKXtcbiAgICAgICAgcmV0dXJuIHsgcGFzc3dvcmRNaXNtYXRjaDogdHJ1ZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY29uZlBhc3NWYWwgPT09IGNvbmZpcm1QYXNzd29yZCA/IG51bGwgOiB7IHBhc3N3b3JkTWlzbWF0Y2g6IHRydWUgfTtcbiAgICB9O1xuICB9XG4gIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHJldHVybiB0aGlzLmVycm9yTWVzc2FnZXNbJ3JlcXVpcmVkJ10gfHwgJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnO1xuICAgIGlmICh0aGlzLmNvbnRyb2wuaGFzRXJyb3IoJ21pbmxlbmd0aCcpKSByZXR1cm4gdGhpcy5lcnJvck1lc3NhZ2VzWydtaW5sZW5ndGgnXSB8fCBgTWluaW11bSAke3RoaXMubWluTGVuZ3RofSBjaGFyYWN0ZXJzIHJlcXVpcmVkYDtcbiAgICBpZiAodGhpcy5jb250cm9sLmhhc0Vycm9yKCdwYXR0ZXJuJykpIHJldHVybiB0aGlzLmVycm9yTWVzc2FnZXNbJ3BhdHRlcm4nXSB8fCAodGhpcy50eXBlID09PSAndGVsJyA/IGBJbnZhbGlkICR7dGhpcy5zZWxlY3RlZENvdW50cnkubmFtZX0gcGhvbmUgbnVtYmVyIGZvcm1hdGAgOiAnSW52YWxpZCBmb3JtYXQnKTtcbiAgICBpZiAodGhpcy5jb250cm9sLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSkgcmV0dXJuIHRoaXMuZXJyb3JNZXNzYWdlc1snbWF4bGVuZ3RoJ10gfHwgYE1heGltdW0gJHt0aGlzLm1heExlbmd0aH0gY2hhcmFjdGVycyBhbGxvd2VkYDtcbiAgICBpZiAodGhpcy5jb250cm9sLmhhc0Vycm9yKCdwYXNzd29yZE1pc21hdGNoJykpIHJldHVybiB0aGlzLmVycm9yTWVzc2FnZXNbJ2NvbmZQYXNzJ10gfHwgYFBhc3N3b3JkcyBkbyBub3QgbWF0Y2hgO1xuICAgIHJldHVybiAnJztcbiAgfVxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50eXBlID09PSAnb3RwJykge1xuICAgICAgY29uc3QgdmFsdWVzID0gdmFsdWUuc3BsaXQoJycpLnNsaWNlKDAsIHRoaXMuI3NpemUpO1xuICAgICAgdmFsdWVzLmZvckVhY2goKHZhbCwgaW5kZXgpID0+IHRoaXMuaW5wdXRzLmNvbnRyb2xzW2luZGV4XS5zZXRWYWx1ZSh2YWwpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGV0aW1lJyB8fCB0aGlzLnR5cGUgPT09ICdkYXRlJyB8fCB0aGlzLnR5cGUgPT09ICd0aW1lJykge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWVcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLnZhbHVlID0gbmV3IERhdGUodmFsdWUpXG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdvdHAnKSB7XG4gICAgICB0aGlzLmlucHV0cy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0cy52YWx1ZS5qb2luKCcnKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdvdHAnKSB7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0cy5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0cy5lbmFibGUoKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sLmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxucHJpdmF0ZSB1cGRhdGVDb250cm9sU3RhdGUoKSB7XG4gIC8vQVAtMDFKVUwyNSAtIERldGVybWluZSBpZiB0aGUgZmllbGQgc2hvdWxkIGJlIGRpc2FibGVkIGJhc2VkIG9uIG1vZGUgYW5kIHF1ZXN0aW9uJ3MgcmVhZC1vbmx5IHN0YXR1c1xuICBjb25zdCBzaG91bGREaXNhYmxlID0gdGhpcy5tb2RlID09PSAnZWRpdCcgPyAodGhpcy5xdWVzdGlvbj8uaXNSZWFkT25seSA9PT0gdHJ1ZSB8fCB0aGlzLnF1ZXN0aW9uPy5pc1JlYWRPbmx5ID09PSAndHJ1ZScpIDogdHJ1ZTtcbiAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHNob3VsZERpc2FibGUpO1xufVxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nLCBzdHJpbmc+KTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdvdHAnKSB7XG4gICAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZS5sZW5ndGggPCB0aGlzLiNzaXplKSB7XG4gICAgICAgIHJldHVybiB7IG90cElucHV0OiAnVmFsdWUgaXMgaW5jb3JyZWN0JyB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jb250cm9sLmludmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbC5lcnJvcnM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaGFuZGxlS2V5RG93bihlOiBLZXlib2FyZEV2ZW50LCBpZHg6IG51bWJlcikge1xuICAgIGlmIChlLmtleSA9PT0gJ0JhY2tzcGFjZScgfHwgZS5rZXkgPT09ICdEZWxldGUnKSB7XG4gICAgICBpZiAoaWR4ID4gMCkge1xuICAgICAgICB0aGlzLiNzY2hlZHVsZWRGb2N1cyA9IGlkeCAtIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNzY2hlZHVsZWRGb2N1cyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRHVlIHRvIGlPUy9pUGFkT1MgU2FmYXJpIGJ1Zy9zcGVjaWFsIGJlaGF2aW9yIHdlIGFyZSBmb3JjZWQgdG9cbiAgLy8gc2NoZWR1bGUgZm9jdXMgdHJhbnNpdGlvbiBkdXJpbmcga2V5cHJlc3Mva2V5ZG93biBldmVudCBhbmQgb25seVxuICAvLyBhZnRlciBpbnB1dCBldmVudCBoYXBwZW5lZCAtIGV4ZWN1dGUgdGhlIHRyYW5zaXRpb25cbiAgLy8gb3RoZXJ3aXNlIGlucHV0cyBkb24ndCBnZXQgdGhlaXIgdmFsdWVzIGZpbGxlZFxuICBoYW5kbGVJbnB1dCgpIHtcbiAgICB0aGlzLiN1cGRhdGVXaXJlZFZhbHVlKCk7XG4gICAgaWYgKHRoaXMuI3NjaGVkdWxlZEZvY3VzICE9PSBudWxsKSB7XG4gICAgICB0aGlzLiNmb2N1c0lucHV0KHRoaXMuI3NjaGVkdWxlZEZvY3VzKTtcbiAgICAgIHRoaXMuI3NjaGVkdWxlZEZvY3VzID0gbnVsbDsgLy8gUmVzZXQgdG8gbnVsbCBhZnRlciBmb2N1c2luZ1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUtleVByZXNzKGU6IEtleWJvYXJkRXZlbnQsIGlkeDogbnVtYmVyKSB7XG4gICAgY29uc3QgaXNEaWdpdCA9IC9cXGQvLnRlc3QoZS5rZXkpO1xuICBcbiAgICBpZiAoZS5rZXkgPT09ICd2JyAmJiBlLm1ldGFLZXkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgXG4gICAgaWYgKGlzRGlnaXQgJiYgaWR4ICsgMSA8IHRoaXMuI3NpemUpIHtcbiAgICAgIHRoaXMuI3NjaGVkdWxlZEZvY3VzID0gaWR4ICsgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jc2NoZWR1bGVkRm9jdXMgPSBudWxsOyAvLyBFbnN1cmUgaXQncyBudWxsIGlmIG5vdCBtb3ZpbmcgZm9jdXNcbiAgICB9XG4gIFxuICAgIGlmIChpc0RpZ2l0ICYmIHRoaXMuaW5wdXRzLmNvbnRyb2xzW2lkeF0udmFsdWUpIHtcbiAgICAgIHRoaXMuaW5wdXRzLmNvbnRyb2xzW2lkeF0uc2V0VmFsdWUoJycpO1xuICAgIH1cbiAgXG4gICAgcmV0dXJuIGlzRGlnaXQ7XG4gIH1cblxuICBoYW5kbGVQYXN0ZShlOiBDbGlwYm9hcmRFdmVudCwgaWR4OiBudW1iZXIpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoaWR4ICE9PSAwKSB7XG4gICAgICAvLyBJZiB0aGUgdGFyZ2V0IGlucHV0IGlzIG5vdCB0aGUgZmlyc3Qgb25lIC0gaWdub3JlXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFzdGVEYXRhID0gZS5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0Jyk7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBcXFxcZHske3RoaXMuI3NpemV9fWApO1xuXG4gICAgaWYgKCFwYXN0ZURhdGEgfHwgIXJlZ2V4LnRlc3QocGFzdGVEYXRhKSkge1xuICAgICAgLy8gSWYgdGhlcmUgaXMgbm90aGluZyB0byBiZSBwYXN0ZWQgb3IgdGhlIHBhc3RlZCBkYXRhIGRvZXMgbm90XG4gICAgICAvLyBjb21wbHkgd2l0aCB0aGUgcmVxdWlyZWQgZm9ybWF0IC0gaWdub3JlIHRoZSBldmVudFxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFzdGVEYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmlucHV0cy5jb250cm9sc1tpXS5zZXRWYWx1ZShwYXN0ZURhdGFbaV0pO1xuICAgIH1cblxuICAgIHRoaXMuI2ZvY3VzSW5wdXQodGhpcy5pbnB1dEVscy5sZW5ndGggLSAxKTtcbiAgICB0aGlzLiN1cGRhdGVXaXJlZFZhbHVlKCk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIGhhbmRsZUZvY3VzKGU6IEZvY3VzRXZlbnQpIHtcbiAgICAvLyBTZWxlY3QgcHJldmlvdXNseSBlbnRlcmVkIHZhbHVlIHRvIHJlcGxhY2Ugd2l0aCBhIG5ldyBpbnB1dFxuICAgIChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5zZWxlY3QoKTtcbiAgfVxuXG4gICNmb2N1c0lucHV0KGlkeDogbnVtYmVyKSB7XG4gICAgLy8gSW4gb3JkZXIgbm90IHRvIGludGVyZmVyZSB3aXRoIHRoZSBpbnB1dCB3ZSBzZXRUaW1lb3V0XG4gICAgLy8gYmVmb3JlIGFkdmFuY2luZyB0aGUgZm9jdXNcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5wdXRFbHMuZ2V0KGlkeCk/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSk7XG4gIH1cblxuICAjdXBkYXRlV2lyZWRWYWx1ZSgpIHtcbiAgICAvLyBXZSB3YW50IHRvIGV4cG9zZSB0aGUgdmFsdWUgYXMgYSBwbGFpbiBzdHJpbmdcbiAgICAvL1xuICAgIC8vIEluIG9yZGVyIG5vdCB0byBpbnRlcmZlcmUgd2l0aCB0aGUgaW5wdXQgd2Ugc2V0VGltZW91dFxuICAgIC8vIGJlZm9yZSBhZHZhbmNpbmcgdGhlIGZvY3VzXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm9uQ2hhbmdlPy4odGhpcy5pbnB1dHMudmFsdWUuam9pbignJykpKTtcbiAgfVxuICAvLyBTS1MyOEZFQjI1IHRvZ2dsZSBDb3VudHJ5IERyb3Bkb3duXG4gIHRvZ2dsZUNvdW50cnlEcm9wZG93bigpIHtcbiAgICB0aGlzLnNob3dDb3VudHJ5RHJvcGRvd24gPSAhdGhpcy5zaG93Q291bnRyeURyb3Bkb3duO1xuICB9XG5cbiAgLy8gU0tTMjhGRUIyNSBDb3VudHJ5IERyb3Bkb3duIHNlYXJjaCBmaWx0ZXJcbiAgZmlsdGVyQ291bnRyaWVzKGV2ZW50IDogYW55KSB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGhpcy5jb3VudHJ5U2VhcmNoID0gaW5wdXRFbGVtZW50LnZhbHVlO1xuICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXMgPSB0aGlzLmNvdW50cmllcy5maWx0ZXIoY291bnRyeSA9PlxuICAgICAgY291bnRyeS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5jb3VudHJ5U2VhcmNoLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICBjb3VudHJ5LmRpYWxfY29kZS5pbmNsdWRlcyh0aGlzLmNvdW50cnlTZWFyY2gpXG4gICAgKTtcbiAgfVxuXG4gIC8vIFNLUzI4RkVCMjUgQ291bnRyeSBEcm9wZG93biBzZWxlY3QgZnVuY3Rpb25cbiAgc2VsZWN0Q291bnRyeShjb3VudHJ5OiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IGNvdW50cnk7XG4gICAgdGhpcy5zaG93Q291bnRyeURyb3Bkb3duID0gZmFsc2U7XG4gICAgdGhpcy5jb250cm9sLnNldFZhbGlkYXRvcnMoW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLnJlbW92ZURpYWxDb2RlRnJvbVJlZ2V4KHRoaXMuc2VsZWN0ZWRDb3VudHJ5LnJlZ2V4LCB0aGlzLnNlbGVjdGVkQ291bnRyeS5kaWFsX2NvZGUpKVxuICAgIF0pO1xuICAgIC8vIFNLUzI4RkVCMjUgVXBkYXRlIHRoZSBjb250cm9sJ3MgdmFsdWUgd2l0aCB0aGUgbmV3IGRpYWwgY29kZVxuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh0aGlzLnJhd0lucHV0VmFsKTtcblxuICAgIC8vIFNLUzI4RkVCMjUgSW1tZWRpYXRlbHkgdXBkYXRlIHZhbGlkaXR5IHN0YXR1c1xuICAgIHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG5cbiAgICAvLyBTS1MyOEZFQjI1IFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBpZiBuZWVkZWRcbiAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIGNvbnNvbGUubG9nKFwidmFsbCBjaGVjazNcIiwgdGhpcy52YWx1ZSlcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5zZWxlY3RlZENvdW50cnkuZGlhbF9jb2RlKyBcIiBcIiArIHRoaXMucmF3SW5wdXRWYWw7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuICAvLyBTS1MyOEZFQjI1IHJlbW92ZSBEaWFsQ29kZSBGcm9tIFJlZ2V4XG4gIHJlbW92ZURpYWxDb2RlRnJvbVJlZ2V4KG9yaWdpbmFsUmVnZXg6IHN0cmluZywgZGlhbENvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZXNjYXBlZERpYWxDb2RlID0gZGlhbENvZGUucmVwbGFjZSgvXFwrL2csIFwiXFxcXCtcIik7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmVnZXgucmVwbGFjZShgXiR7ZXNjYXBlZERpYWxDb2RlfWAsICdeJyk7XG4gIH1cblxuICAvLyBTS1MyOEZFQjI1IHJlbW92ZSBEaWFsQ29kZSBGcm9tIFJlZ2V4IGZvciBzaG93IGluIGlucHV0XG4gIHJlbW92ZURpYWxDb2RlKHBsYWNlaG9sZGVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwbGFjZWhvbGRlci5yZXBsYWNlKC9eXFwrXFxkK1xccyovLCAnJyk7XG4gIH1cbiAgZ2V0IGlucHV0TGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlICE9PSAnb3RwJyA/IHRoaXMuaW5wdXRzLmNvbnRyb2xzLnNsaWNlKDAsMSkgOiB0aGlzLmlucHV0cy5jb250cm9scztcbiAgfVxuICBibHVyRW1pdCgpe1xuICAgIHRoaXMub25CbHVyLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cbiAgZm9jdXNpbkVtaXQoZXZlbnQ6IGFueSl7XG4gICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZlbnQpO1xuICB9XG4gIHRvZ2dsZShldmVudDogYW55KXtcbiAgICB0aGlzLnRvZ2dsZUVtaXQuZW1pdChldmVudCk7XG4gIH1cbiAgb25FZGl0b3JGb2N1c091dCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlIHx8ICcnO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChjdXJyZW50VmFsdWUpO1xuICB9XG4gIHZpZXdFZGl0Q2xpY2socXVlczogYW55KSB7XG4gICAgdGhpcy5vcmlnaW5hbFZhbHVlID0gdGhpcy52YWx1ZTsgLy8gU3RvcmUgdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgdGhpcy52aWV3RWRpdCA9IHRydWU7IC8vIEVudGVyIHZpZXcgZWRpdCBtb2RlXG4gICAgdGhpcy5tb2RlID0gJ2VkaXQnO1xuICAgIHRoaXMudXBkYXRlQ29udHJvbFN0YXRlKCk7IC8vIFVwZGF0ZSBjb250cm9sIHN0YXRlXG4gIH1cbiAgc2F2ZUNoYW5nZXMgPSAoZXZlbnQ/OiBDdXN0b21FdmVudCkgPT4ge1xuICAgIC8vIFNLUzE0SlVOMjUgRW1pdCBzYXZlL2Rpc2NhcmQgZXZlbnQgb25seSBpZiB0aGUgY3VycmVudCBxdWVzdGlvbiB3YXMgY2hhbmdlZFxuICAgIGlmKGV2ZW50KSBpZiAoZXZlbnQuZGV0YWlsPy5pZCAhPT0gdGhpcy5xdWVzdGlvbi5pZCkgcmV0dXJuO1xuICAgIGxldCBxdWVzID0gdGhpcy5xdWVzdGlvblxuICAgIHF1ZXNbJ3NpbmdsZUZpZWxkQ2hhbmdlJ10gPSB0cnVlXG4gICAgdGhpcy5pbnB1dFZhbHVlLmVtaXQoe3F1ZXN0aW9uIDogcXVlcywgdmFsdWU6IHRoaXMudmFsdWV9KTsgLy8gRW1pdCB0aGUgdXBkYXRlZCB2YWx1ZVxuICAgIHRoaXMudmlld0VkaXQgPSBmYWxzZTsgLy8gRXhpdCB2aWV3IGVkaXQgbW9kZVxuICAgIHRoaXMubW9kZSA9ICd2aWV3JzsgLy8gU3dpdGNoIGJhY2sgdG8gdmlldyBtb2RlXG4gICAgdGhpcy51cGRhdGVDb250cm9sU3RhdGUoKTsgLy8gVXBkYXRlIGNvbnRyb2wgc3RhdGVcbiAgfVxuICBkaXNjYXJkQ2hhbmdlcyA9IChldmVudD86IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgLy8gU0tTMTRKVU4yNSBFbWl0IHNhdmUvZGlzY2FyZCBldmVudCBvbmx5IGlmIHRoZSBjdXJyZW50IHF1ZXN0aW9uIHdhcyBjaGFuZ2VkXG4gICAgaWYoZXZlbnQpIGlmIChldmVudC5kZXRhaWw/LmlkICE9PSB0aGlzLnF1ZXN0aW9uLmlkKSByZXR1cm47XG4gICAgY29uc29sZS5sb2coXCJkaXNjYXJkQ2hhbmdlc1wiKVxuICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLm9yaWdpbmFsVmFsdWUpOyAvLyBSZXZlcnQgdG8gb3JpZ2luYWwgdmFsdWVcbiAgICB0aGlzLnZpZXdFZGl0ID0gZmFsc2U7IC8vIEV4aXQgdmlldyBlZGl0IG1vZGVcbiAgICB0aGlzLm1vZGUgPSAndmlldyc7IC8vIFN3aXRjaCBiYWNrIHRvIHZpZXcgbW9kZVxuICAgIHRoaXMudXBkYXRlQ29udHJvbFN0YXRlKCk7IC8vIFVwZGF0ZSBjb250cm9sIHN0YXRlXG4gIH1cbiAgb3BlbkRhdGVQaWNrZXIodHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGUgPT09ICdkYXRldGltZScpIHtcbiAgICAgIHRoaXMuZHRQaWNrZXIub3BlbigpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICB0aGlzLmRQaWNrZXIub3BlbigpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3RpbWUnKSB7XG4gICAgICB0aGlzLnRQaWNrZXIub3BlbigpO1xuICAgIH1cbiAgfVxuICByZW1vdmVWYWx1ZSgpe1xuICAgIHRoaXMucmVtb3ZlVmFsdWVFbWl0LmVtaXQoKVxuICB9XG59XG4iLCI8IS0tIFNLUzMxSkFOMjUgLS0+XG48ZGl2IGNsYXNzPVwiaG92ZXItd3JhcHBlciBpbnB1dC13cmFwcGVyXCIgKGRvY3VtZW50OmNsaWNrKT1cImNsb3NlRHJvcGRvd24oJGV2ZW50KVwiPlxuICA8ZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJsYWJlbCAmJiB0eXBlICE9ICdjaGVja2JveCcgJiYgc2hvd0xhYmVsXCIgW25nU3R5bGVdPVwie1xuICAgICAgICAncGFkZGluZy10b3AnOiB0eXBlID09PSAnbGFiZWwnID8gJzEwcHgnIDogJycsXG4gICAgICAgICdwYWRkaW5nLWJvdHRvbSc6IHR5cGUgPT09ICdsYWJlbCcgPyAnMTBweCcgOiAnJ1xuICAgICAgfVwiICBbc3R5bGUuZm9udC13ZWlnaHRdPVwibGFiZWxXZWlnaHQgfHwgIHR5cGUgPT09ICdsYWJlbCcgPyAnYm9sZCcgOiAnbm9ybWFsJ1wiIFtzdHlsZS5mb250LXNpemVdPVwibGFiZWxTaXplIHx8IHR5cGUgPT09ICdsYWJlbCcgPyAnMTZweCcgOiAnMTRweCdcIlxuICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiA1cHg7XCI+IHt7IGxhYmVsXG4gICAgICB9fVxuICAgICAgPGRpdiAqbmdJZj1cImxhYmVsICYmIHR5cGUgIT0gJ2NoZWNrYm94JyAmJiByZXF1aXJlZCAmJiBzaG93TGFiZWwgJiYgbW9kZSA9PT0gJ2VkaXQnXCIgc3R5bGU9XCJjb2xvcjogcmVkO1wiPio8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidHlwZSAhPT0gJ2xhYmVsJyAmJiB0eXBlICE9PSAncmljaHRleHQnICYmIHR5cGUgIT09ICd0ZXh0YXJlYSdcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieydjaGVja2JveC1wYWRkaW5nJzogdHlwZSA9PT0gJ2NoZWNrYm94JyB8fCB0eXBlID09PSAnb3RwJ31cIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm1vZGUgPT09ICdlZGl0JyA/IGlucHV0QmdDb2xvciA6ICcnXCJcbiAgICAgICAgW2NsYXNzLmludmFsaWRdPVwiY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wudG91Y2hlZFwiXG4gICAgICAgIFtzdHlsZS5tYXJnaW4tdG9wXT1cInNob3dMYWJlbCAmJiBsYWJlbCA/ICcnIDogJzIxcHggIWltcG9ydGFudCdcIlxuICAgICAgICBbc3R5bGUuYm9yZGVyXT1cIm1vZGUgPT09ICdlZGl0JyA/IGlucHV0Qm9yZGVyID09PSAnbm9uZScgPyAoJzFweCBzb2xpZCAnICsgaW5wdXRCZ0NvbG9yKSA6IGlucHV0Qm9yZGVyIDogJ25vbmUnXCI+XG4gICAgICAgIDxpbWcgKm5nSWY9XCJpbnB1dEljb25MZWZ0U3JjICYmIG1vZGUgPT09ICdlZGl0J1wiIFtzcmNdPVwiaW5wdXRJY29uTGVmdFNyY1wiIGFsdD1cImljb25cIiBjbGFzcz1cImljb24gbGVmdC1pY29uXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cInN2Z0hlaWdodFwiIFtzdHlsZS53aWR0aF09XCJzdmdXaWR0aFwiIC8+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlID09PSAnZWRpdCcgJiYgdHlwZSA9PT0gJ2xpc3QnXCIgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDwhLS0gSW5saW5lIHNlYXJjaCBpY29uIFNWRyAtLT5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiIzQzNDU1NVwiIHN0cm9rZS1vcGFjaXR5PVwiMC42NVwiIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMVwiIGN5PVwiMTFcIiByPVwiN1wiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTIwIDIwTDE3IDE3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFNLUzI4RkVCMjUgbW9iaWxlIG51bWJlciBpbnB1dCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBob25lLWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAndGVsJ1wiIGNsYXNzPVwiY291bnRyeS1zZWxlY3RvclwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAxMHB4O1wiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ291bnRyeURyb3Bkb3duKClcIj5cbiAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJmbGFnXCI+e3sgc2VsZWN0ZWRDb3VudHJ5LmZsYWcgfX08L3NwYW4+IC0tPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaWFsLWNvZGVcIiBbc3R5bGUuZm9udC1zaXplXT1cImlucHV0VmFsdWVTaXplXCI+e3sgc2VsZWN0ZWRDb3VudHJ5LmRpYWxfY29kZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJhcnJvd1wiIHdpZHRoPVwiOVwiIGhlaWdodD1cIjZcIiB2aWV3Qm94PVwiMCAwIDkgNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgZD1cIk0wLjY4NDEzNiAwLjc2NzQ3N0MwLjkyMjk5OSAwLjUzNzggMS4zMDI4MiAwLjU0NTI0OCAxLjUzMjUgMC43ODQxMTFMNC41IDMuOTM0MzFMNy40Njc1IDAuNzg0MTExQzcuNjk3MTggMC41NDUyNDggOC4wNzcgMC41Mzc4IDguMzE1ODcgMC43Njc0NzdDOC41NTQ3MyAwLjk5NzE1MyA4LjU2MjE4IDEuMzc2OTggOC4zMzI1IDEuNjE1ODRMNC45MzI1IDUuMjE1ODRDNC44MTkzOCA1LjMzMzQ5IDQuNjYzMjEgNS4zOTk5OCA0LjUgNS4zOTk5OEM0LjMzNjc5IDUuMzk5OTggNC4xODA2MiA1LjMzMzQ5IDQuMDY3NSA1LjIxNTg0TDAuNjY3NTAxIDEuNjE1ODRDMC40Mzc4MjUgMS4zNzY5OCAwLjQ0NTI3MiAwLjk5NzE1MyAwLjY4NDEzNiAwLjc2NzQ3N1pcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjNjI2MjYyXCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAndGVsJyAmJiBzaG93Q291bnRyeURyb3Bkb3duXCIgY2xhc3M9XCJjb3VudHJ5LWRyb3Bkb3duXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJveFwiPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbcmVhZE9ubHldPVwibW9kZSAhPT0gJ2VkaXQnXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY291bnRyeS4uLlwiIFt2YWx1ZV09XCJjb3VudHJ5U2VhcmNoXCJcbiAgICAgICAgICAgICAgICAoaW5wdXQpPVwiZmlsdGVyQ291bnRyaWVzKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50cnktbGlzdFwiPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb3VudHJ5IG9mIGZpbHRlcmVkQ291bnRyaWVzXCIgY2xhc3M9XCJjb3VudHJ5LWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0Q291bnRyeShjb3VudHJ5KVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxhZ1wiPnt7IGNvdW50cnkuZmxhZyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyBjb3VudHJ5Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaWFsLWNvZGVcIj57eyBjb3VudHJ5LmRpYWxfY29kZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZih0eXBlICE9PSAnZGF0ZXRpbWUnICYmIHR5cGUgIT09ICdkYXRlJyAmJiB0eXBlICE9PSAndGltZScpe1xuICAgICAgICA8aW5wdXQgKm5nRm9yPVwibGV0IGlucHV0IG9mIGlucHV0TGlzdDsgbGV0IGkgPSBpbmRleFwiICNpbnB1dEVsICNpbnB1dFJlZiBbaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgICAgW3R5cGVdPVwiaXNQYXNzd29yZFZpc2libGUgPyAndGV4dCcgOiB0eXBlID09PSAnb3RwJyB8fCB0eXBlID09PSAnZHJvcGRvd24nID8gJ3RleHQnIDogdHlwZVwiXG4gICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwidHlwZSA9PT0gJ290cCcgfHwgbW9kZSAhPT0gJ2VkaXQnID8gJycgOiBwbGFjZWhvbGRlciB8fCAodHlwZSA9PT0gJ3RlbCcgPyByZW1vdmVEaWFsQ29kZShzZWxlY3RlZENvdW50cnkucGxhY2Vob2xkZXIpIDogbGFiZWwpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnb3RwJyA/ICdmY090cCcgOiAnY3VzdG9tLWlucHV0J1wiIFtmb3JtQ29udHJvbF09XCJ0eXBlID09PSAnb3RwJyA/ICRhbnkoaW5wdXQpIDogY29udHJvbFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJ0eXBlID09PSAnb3RwJ3x8IG1vZGUgIT09ICdlZGl0JyA/ICcnIDogaW5wdXRCZ0NvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidHlwZSA9PT0gJ290cCcgfHwgbW9kZSAhPT0gJ2VkaXQnID8gJycgOiBpbnB1dFRleHRDb2xvclwiXG4gICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0eXBlID09PSAnb3RwJyB8fCBtb2RlICE9PSAnZWRpdCcgPyAnJyA6IGlucHV0Qm9yZGVyXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cInR5cGUgPT09ICdvdHAnID8gJycgOiBpbnB1dEhlaWdodFwiIFtzdHlsZS53aWR0aF09XCJ0eXBlID09PSAnb3RwJyA/ICcnIDogdHlwZSA9PT0gJ2NoZWNrYm94JyA/ICdhdXRvJyA6IGlucHV0V2lkdGhcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ0eXBlID09PSAndGVsJyA/IHJhd0lucHV0VmFsIDogdmFsdWVcIlxuICAgICAgICAgIChpbnB1dCk9XCJ0eXBlID09PSAnb3RwJyA/IGhhbmRsZUlucHV0KCkgOiBvbklucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtjaGVja2VkXT1cInR5cGUgPT09ICdjaGVja2JveCcgPyB2YWx1ZSA6ICcnXCJcbiAgICAgICAgICBbc3R5bGUuZm9udC1zaXplXT1cInR5cGUgPT09ICdvdHAnID8gJycgOiBpbnB1dFZhbHVlU2l6ZVwiIChmb2N1cyk9XCJ0eXBlID09PSAnb3RwJyA/IGhhbmRsZUZvY3VzKCRldmVudCkgOiBudWxsXCJcbiAgICAgICAgICAoYmx1cik9XCJ0eXBlID09PSAnb3RwJyA/IG9uVG91Y2hlZCgpIDogYmx1ckVtaXQoKVwiXG4gICAgICAgICAgKGtleXByZXNzKT1cInR5cGUgPT09ICdvdHAnID8gaGFuZGxlS2V5UHJlc3MoJGV2ZW50LCBpKSA6IG51bGxcIlxuICAgICAgICAgIChrZXlkb3duKT1cInR5cGUgPT09ICdvdHAnID8gaGFuZGxlS2V5RG93bigkZXZlbnQsIGkpIDogbnVsbFwiXG4gICAgICAgICAgKHBhc3RlKT1cInR5cGUgPT09ICdvdHAnID8gaGFuZGxlUGFzdGUoJGV2ZW50LCBpKSA6IG51bGxcIiBpbnB1dG1vZGU9XCJ0eXBlID09PSAnb3RwJyA/IG51bWVyaWMgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hdXRvY29tcGxldGVdPVwidHlwZSA9PT0gJ290cCcgJiYgaSA9PT0gMCA/ICdvbmUtdGltZS1jb2RlJyA6IHR5cGUgPT09ICdsaXN0JyA/ICdsaXN0JyA6ICdvZmYnXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInR5cGUgPT09ICdsaXN0JyA/IHNob3dTdWdnZXN0aW9uIDogJ29mZidcIlxuICAgICAgICAgIFthdHRyLmlucHV0bW9kZV09XCJ0eXBlID09PSAnb3RwJyA/ICdudW1lcmljJyA6IG51bGxcIiBbYXR0ci5uYW1lXT1cInR5cGUgPT09ICdvdHAnICYmIGkgPT09IDAgPyAnb3RwJyA6IG51bGxcIlxuICAgICAgICAgIChmb2N1c2luKT1cImZvY3VzaW5FbWl0KCRldmVudClcIiBbYXR0ci5hcmlhLW93bnNdPVwidHlwZSA9PT0gJ2xpc3QnID8gYXJpYU93bnMgOiAnb2ZmJ1wiXG4gICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJ0eXBlID09PSAnbGlzdCcgPyBhcmlhSGFzUG9wdXAgOiAnb2ZmJ1wiIFxuICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgJy0tcGxhY2Vob2xkZXItZm9udCc6IG1vZGUgPT09ICdlZGl0JyA/IHBsYWNlaG9sZGVyRm9udCB8fCBsYWJlbEZvbnQgOiAnJyxcbiAgICAgICAgICAgICAgJy0tcGxhY2Vob2xkZXItY29sb3InOiBtb2RlID09PSAnZWRpdCcgPyBwbGFjZWhvbGRlckNvbG9yIHx8ICcjOWE5YTlhJyA6ICcnLFxuICAgICAgICAgICAgICAnLS1wbGFjZWhvbGRlci1zaXplJzogbW9kZSA9PT0gJ2VkaXQnID8gcGxhY2Vob2xkZXJTaXplIHx8IGlucHV0VmFsdWVTaXplIDogJycsXG4gICAgICAgICAgICAgICctLXBsYWNlaG9sZGVyLXdlaWdodCc6IG1vZGUgPT09ICdlZGl0JyA/IHBsYWNlaG9sZGVyV2VpZ2h0IHx8IGxhYmVsV2VpZ2h0IDogJydcbiAgICAgICAgICAgIH1cIiAoa2V5ZG93bi5lbnRlcik9XCJ0eXBlID09PSAnbG9jYXRpb24nID8gJGV2ZW50LnByZXZlbnREZWZhdWx0KCkgOiAnJ1wiXG4gICAgICAgICAgYXV0b2NvcnJlY3Q9XCJ0eXBlID09PSAnbG9jYXRpb24nID8gJ29mZicgOiAnJ1wiIGF1dG9jYXBpdGFsaXplPVwidHlwZSA9PT0gJ2xvY2F0aW9uJyA/ICdvZmYnIDogJydcIlxuICAgICAgICAgIHNwZWxsY2hlY2s9XCJ0eXBlID09PSAnbG9jYXRpb24nID8gJ29mZicgOiAnJ1wiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgaWYodHlwZSA9PT0gJ2RhdGV0aW1lJyB8fCB0eXBlID09PSAnZGF0ZScgfHwgdHlwZSA9PT0gJ3RpbWUnKXtcbiAgICAgICAgPGlucHV0ICNpbnB1dEVsIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICBbb3dsRGF0ZVRpbWVUcmlnZ2VyXT1cInR5cGUgPT09ICdkYXRldGltZScgPyBkdCA6IHR5cGUgPT09ICdkYXRlJyA/IGR0MiA6IHR5cGUgPT09ICd0aW1lJyA/IGR0MyA6IGR0XCJcbiAgICAgICAgICBbb3dsRGF0ZVRpbWVdPVwidHlwZSA9PT0gJ2RhdGV0aW1lJyA/IGR0IDogdHlwZSA9PT0gJ2RhdGUnID8gZHQyIDogdHlwZSA9PT0gJ3RpbWUnID8gZHQzIDogZHRcIlxuICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cIm1vZGUgIT09ICdlZGl0JyA/ICcnIDogcGxhY2Vob2xkZXIgfHwgdHlwZSA9PT0gJ2RhdGV0aW1lJyA/ICdERC9NTS9ZWVlZIEhIOk1NJyA6IHR5cGUgPT09ICdkYXRlJyA/ICdERC9NTS9ZWVlZJyA6IHR5cGUgPT09ICd0aW1lJyA/ICdISDpNTScgOiAnREQvTU0vWVlZWSBISDpNTSdcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIidueHQtY3VzdG9tLWlucHV0J1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm1vZGUgIT09ICdlZGl0JyA/ICcnIDogaW5wdXRCZ0NvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwibW9kZSAhPT0gJ2VkaXQnID8gJycgOiBpbnB1dFRleHRDb2xvclwiIFtzdHlsZS5ib3JkZXJdPVwibW9kZSAhPT0gJ2VkaXQnID8gJ25vbmUnIDogaW5wdXRCb3JkZXJcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiaW5wdXRIZWlnaHRcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiaW5wdXRWYWx1ZVNpemVcIiAoYmx1cik9XCIgYmx1ckVtaXQoKVwiIChmb2N1c2luKT1cImZvY3VzaW5FbWl0KCRldmVudClcIlxuICAgICAgICAgIChkYXRlVGltZUlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgJy0tcGxhY2Vob2xkZXItZm9udCc6IG1vZGUgPT09ICdlZGl0JyA/IHBsYWNlaG9sZGVyRm9udCB8fCBsYWJlbEZvbnQgOiAnJyxcbiAgICAgICAgICAgICctLXBsYWNlaG9sZGVyLWNvbG9yJzogbW9kZSA9PT0gJ2VkaXQnID8gcGxhY2Vob2xkZXJDb2xvciB8fCAnIzlhOWE5YScgOiAnJyxcbiAgICAgICAgICAgICctLXBsYWNlaG9sZGVyLXNpemUnOiBtb2RlID09PSAnZWRpdCcgPyBwbGFjZWhvbGRlclNpemUgfHwgaW5wdXRWYWx1ZVNpemUgOiAnJyxcbiAgICAgICAgICAgICctLXBsYWNlaG9sZGVyLXdlaWdodCc6IG1vZGUgPT09ICdlZGl0JyA/IHBsYWNlaG9sZGVyV2VpZ2h0IHx8IGxhYmVsV2VpZ2h0IDogJydcbiAgICAgICAgICB9XCIgc3R5bGU9XCJcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcIiAvPlxuICAgICAgICA8b3dsLWRhdGUtdGltZSAjZHQ+PC9vd2wtZGF0ZS10aW1lPlxuICAgICAgICA8b3dsLWRhdGUtdGltZSBbcGlja2VyVHlwZV09XCInY2FsZW5kYXInXCIgI2R0Mj48L293bC1kYXRlLXRpbWU+XG4gICAgICAgIDxvd2wtZGF0ZS10aW1lIFtwaWNrZXJUeXBlXT1cIid0aW1lcidcIiAjZHQzPjwvb3dsLWRhdGUtdGltZT5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZSA9PT0gJ2VkaXQnICYmICh0eXBlID09PSAnZGF0ZXRpbWUnIHx8IHR5cGUgPT09ICdkYXRlJyB8fCB0eXBlID09PSAndGltZScpXCIgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcih0eXBlKVwiXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiPlxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0yLjMyMDMxIDcuMDUyODVIMTUuNjg4M1wiIHN0cm9rZT1cIiMyOTJEMzJcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEyLjMzMjIgOS45ODI1NEgxMi4zMzkyXCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS4wMDQwOCA5Ljk4MjU0SDkuMDExMDNcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk01LjY2ODE1IDkuOTgyNTRINS42NzUwOVwiIHN0cm9rZT1cIiMyOTJEMzJcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEyLjMzMjIgMTIuODk3NkgxMi4zMzkyXCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS4wMDQwOCAxMi44OTc2SDkuMDExMDNcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk01LjY2ODE1IDEyLjg5NzZINS42NzUwOVwiIHN0cm9rZT1cIiMyOTJEMzJcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEyLjAzMjkgMS41VjMuOTY4MDlcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk01Ljk3NDM1IDEuNVYzLjk2ODA5XCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xMi4xNzg3IDIuNjg0NTdINS44MjgyMkMzLjYyNTcgMi42ODQ1NyAyLjI1IDMuOTExNTIgMi4yNSA2LjE2Njg0VjEyLjk1NDFDMi4yNSAxNS4yNDQ5IDMuNjI1NyAxNi41MDAyIDUuODI4MjIgMTYuNTAwMkgxMi4xNzE4QzE0LjM4MTIgMTYuNTAwMiAxNS43NSAxNS4yNjYxIDE1Ljc1IDEzLjAxMDhWNi4xNjY4NEMxNS43NTY5IDMuOTExNTIgMTQuMzg4MiAyLjY4NDU3IDEyLjE3ODcgMi42ODQ1N1pcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGUgPT09ICdlZGl0JyAmJiB0eXBlID09PSAnbGlzdCdcIiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgPCEtLSBNaW5pbWFsIERvdHRlZCBMb2FkZXIgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwiZG90dGVkLWxvYWRlclwiIGFyaWEtbGFiZWw9XCJMb2FkaW5nXCIgcm9sZT1cInN0YXR1c1wiPlxuICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGRvdCBvZiBbXS5jb25zdHJ1Y3Rvcig2KTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiZG90XCIgW3N0eWxlLi0taV09XCJpXCI+PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzdmcgKm5nSWY9XCIhaXNMb2FkaW5nXCIgKGNsaWNrKT1cInJlbW92ZVZhbHVlKClcIiAoa2V5ZG93bi5lbnRlcik9XCJyZW1vdmVWYWx1ZSgpXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiPlxuICAgICAgICAgICAgPHBhdGggZD1cIk05LjE2OTkyIDE0LjgyOTlMMTQuODI5OSA5LjE2OTkyXCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQuODI5OSAxNC44Mjk5TDkuMTY5OTIgOS4xNjk5MlwiIHN0cm9rZT1cIiMyOTJEMzJcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTkgMjJIMTVDMjAgMjIgMjIgMjAgMjIgMTVWOUMyMiA0IDIwIDIgMTUgMkg5QzQgMiAyIDQgMiA5VjE1QzIgMjAgNCAyMiA5IDIyWlwiIHN0cm9rZT1cIiMyOTJEMzJcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPC9zdmc+ICAgICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveExhYlwiICpuZ0lmPVwibGFiZWwgJiYgdHlwZSA9PT0gJ2NoZWNrYm94JyAmJiBzaG93TGFiZWxcIiBbc3R5bGUuZm9udC13ZWlnaHRdPVwibGFiZWxXZWlnaHRcIlxuICAgICAgICAgIFtzdHlsZS5mb250LXNpemVdPVwibGFiZWxTaXplXCIgW3N0eWxlLmNvbG9yXT1cImxhYmVsQ29sb3IgfHwgJyM5YTlhOWEnXCJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDA7IHBhZGRpbmctbGVmdDogMTBweDsgcGFkZGluZy1yaWdodDogMTBweDsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcIj4ge3sgbGFiZWwgfX1cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibGFiZWwgJiYgdHlwZSA9PT0gJ2NoZWNrYm94JyAmJiByZXF1aXJlZCAmJiBzaG93TGFiZWxcIiBzdHlsZT1cImNvbG9yOiByZWQ7XCI+KjwvZGl2PlxuICAgICAgICA8L2xhYmVsPiAgICAgXG4gICAgICAgIDwhLS0gQWx3YXlzIFNob3cgRHJvcGRvd24gSWNvbiAtLT5cbiAgICAgICAgPHN2ZyAqbmdJZj1cIm1vZGUgPT09ICdlZGl0JyAmJiB0eXBlID09PSAnZHJvcGRvd24nXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIiAgKG1vdXNlZG93bik9XCJ0b2dnbGUoJGV2ZW50KTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTkgMjJIMTVDMjAgMjIgMjIgMjAgMjIgMTVWOUMyMiA0IDIwIDIgMTUgMkg5QzQgMiAyIDQgMiA5VjE1QzIgMjAgNCAyMiA5IDIyWlwiIHN0cm9rZT1cIiMyOTJEMzJcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTguNDY5OTcgMTAuNjRMMTIgMTQuMTZMMTUuNTMgMTAuNjRcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuXG4gICAgICAgIDxpbWcgKm5nSWY9XCJtb2RlID09PSAnZWRpdCcgJiYgaW5wdXRJY29uUmlnaHRTcmNcIiBbc3JjXT1cImlucHV0SWNvblJpZ2h0U3JjXCIgY2xhc3M9XCJpY29uIHJpZ2h0LWljb25cIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwic3ZnSGVpZ2h0XCIgW3N0eWxlLndpZHRoXT1cInN2Z1dpZHRoXCI+XG4gICAgICAgIDxpbWcgKm5nSWY9XCJtb2RlID09PSAnZWRpdCcgJiYgdHlwZSA9PT0gJ3Bhc3N3b3JkJ1wiIGNsYXNzPVwidG9nZ2xlLWljb25cIiAoY2xpY2spPVwidG9nZ2xlUGFzc3dvcmRWaXNpYmlsaXR5KClcIlxuICAgICAgICAgIFtzcmNdPVwiIWlzUGFzc3dvcmRWaXNpYmxlID8gJy9hc3NldHMvaW1hZ2VzL2ljb25zL2dlbmVyYWwvSGlkZS1QYXNzd29yZC5zdmcnIDogJy9hc3NldHMvaW1hZ2VzL2ljb25zL2dlbmVyYWwvU2hvdy1QYXNzd29yZC5zdmcnXCIgLz5cbiAgICAgICAgPHN2ZyAqbmdJZj1cIm1vZGUgIT09ICdlZGl0JyAmJiAhcXVlc3Rpb24uaXNSZWFkT25seVwiIGNsYXNzPVwiZWRpdC1pY29uXCJcbiAgICAgICAgICAoY2xpY2spPVwidmlld0VkaXRDbGljayhxdWVzdGlvbilcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDEzIDE0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICBkPVwiTTEuOTk5ODcgOS4wMDE3TDQuMzk2MDIgMTEuMzk3OUM0LjUwMzcxIDExLjUwNTUgNC42NjUyNSAxMS41MDU1IDQuNzcyOTQgMTEuMzk3OUwxMC43NDk5IDUuMzk0MDFDMTAuODU3NiA1LjI4NjMxIDEwLjg1NzYgNS4xMjQ3NyAxMC43NDk5IDUuMDE3MDhMOC4zODA2NCAyLjY0Nzg1QzguMjcyOTQgMi41NDAxNiA4LjExMTQxIDIuNTQwMTYgOC4wMDM3MSAyLjY0Nzg1TDEuOTk5ODcgOC42NTE3QzEuODkyMTcgOC43NTkzOSAxLjg5MjE3IDguOTIwOTMgMS45OTk4NyA5LjAwMTdaTTkuMTYxNCAxLjU0NDAxQzkuMDUzNzEgMS42NTE3IDkuMDUzNzEgMS44MTMyNCA5LjE2MTQgMS45MjA5M0wxMS41MzA2IDQuMjkwMTZDMTEuNjM4MyA0LjM5Nzg1IDExLjc5OTkgNC4zOTc4NSAxMS45MDc2IDQuMjkwMTZMMTIuNTgwNiAzLjYxNzA4QzEzLjAxMTQgMy4yMTMyNCAxMy4wMTE0IDIuNTY3MDggMTIuNTgwNiAyLjEzNjMxTDExLjMxNTMgMC44NzA5MjhDMTAuODg0NSAwLjQ0MDE1OSAxMC4yMTE0IDAuNDQwMTU5IDkuNzgwNjMgMC44NzA5MjhMOS4xNjE0IDEuNTQ0MDFaTTAuMDA3NTU4NjIgMTIuOTg2M0MtMC4wNDYyODc1IDEzLjI1NTUgMC4xOTYwMiAxMy40OTc5IDAuNDY1MjUxIDEzLjQ0NEwzLjM5OTg3IDEyLjc0NEMzLjUwNzU2IDEyLjcxNzEgMy41ODgzMyAxMi42NjMyIDMuNjQyMTcgMTIuNjA5NEwzLjY5NjAyIDEyLjU1NTVDMy43NDk4NyAxMi41MDE3IDMuNzc2NzkgMTIuMzEzMiAzLjY2OTEgMTIuMjA1NUwxLjI0NjAyIDkuNzgyNDdDMS4xMzgzMyA5LjY3NDc4IDAuOTQ5ODY2IDkuNzAxNyAwLjg5NjAyIDkuNzU1NTRMMC44NDIxNzQgOS44MDkzOUMwLjc2MTQwNSA5Ljg5MDE2IDAuNzM0NDgyIDkuOTcwOTMgMC43MDc1NTkgMTAuMDUxN0wwLjAwNzU1ODYyIDEyLjk4NjNaXCJcbiAgICAgICAgICAgIGZpbGw9XCIjQjBBREFCXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDwhLS0gU0tTMTRKVU4yNSBTaG93IHNhdmUgYW5kIGNhbmNlbCBpY29ucyBvbmx5IHdoZW4gdGhlIGlucHV0IHZhbHVlIGlzIGVkaXRlZCAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdFZGl0ICYmIG9yaWdpbmFsVmFsdWUgIT09IHZhbHVlXCIgKG1vdXNlZW50ZXIpPVwiaXNTYXZlSG92ZXJlZCA9IHRydWVcIiAobW91c2VsZWF2ZSk9XCJpc1NhdmVIb3ZlcmVkID0gZmFsc2VcIlxuICAgICAgICAgIHN0eWxlPVwicGFkZGluZy1yaWdodDogNXB4OyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxuICAgICAgICAgIDxzdmcgKm5nSWY9XCIhaXNTYXZlSG92ZXJlZFwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTUuOTUwMiAwLjVDOC45NjAwNiAwLjUwMDEwNiAxMS40MDA0IDIuOTQwMzEgMTEuNDAwNCA1Ljk1MDJDMTEuNDAwMyA4Ljk1OTk5IDguOTU5OTkgMTEuNDAwMyA1Ljk1MDIgMTEuNDAwNEMyLjk0MDMxIDExLjQwMDQgMC41MDAxMDYgOC45NjAwNiAwLjUgNS45NTAyQzAuNSAyLjk0MDI0IDIuOTQwMjQgMC41IDUuOTUwMiAwLjVaXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiIzgzN0Y4RVwiIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTguODgxMTEgMy44NDU4M0M4LjgzMjY5IDMuNzk3MiA4Ljc3NTEzIDMuNzU4NiA4LjcxMTc2IDMuNzMyMjdDOC42NDgzOCAzLjcwNTk0IDguNTgwNDMgMy42OTIzOCA4LjUxMTggMy42OTIzOEM4LjQ0MzE3IDMuNjkyMzggOC4zNzUyMSAzLjcwNTk0IDguMzExODQgMy43MzIyN0M4LjI0ODQ2IDMuNzU4NiA4LjE5MDkxIDMuNzk3MiA4LjE0MjQ5IDMuODQ1ODNMNC44MjY5IDcuMTYzNDdMMy4zNTI1MyA1LjY4OTFDMy4zMDQwMyA1LjY0MDYgMy4yNDY0NiA1LjYwMjEzIDMuMTgzMDkgNS41NzU4OEMzLjExOTcyIDUuNTQ5NjQgMy4wNTE4MSA1LjUzNjEzIDIuOTgzMjIgNS41MzYxM0MyLjkxNDYzIDUuNTM2MTMgMi44NDY3MiA1LjU0OTY0IDIuNzgzMzUgNS41NzU4OEMyLjcxOTk5IDUuNjAyMTMgMi42NjI0MSA1LjY0MDYgMi42MTM5MSA1LjY4OTFDMi41NjU0MSA1LjczNzYgMi41MjY5NCA1Ljc5NTE4IDIuNTAwNjkgNS44NTg1NEMyLjQ3NDQ1IDUuOTIxOTEgMi40NjA5NCA1Ljk4OTgyIDIuNDYwOTQgNi4wNTg0MUMyLjQ2MDk0IDYuMTI3IDIuNDc0NDUgNi4xOTQ5MSAyLjUwMDY5IDYuMjU4MjhDMi41MjY5NCA2LjMyMTY1IDIuNTY1NDEgNi4zNzkyMiAyLjYxMzkxIDYuNDI3NzJMNC40NTY3NyA4LjI3MDU4QzQuNTA1MTkgOC4zMTkyMiA0LjU2Mjc0IDguMzU3ODEgNC42MjYxMiA4LjM4NDE0QzQuNjg5NSA4LjQxMDQ3IDQuNzU3NDUgOC40MjQwMyA0LjgyNjA4IDguNDI0MDNDNC44OTQ3MSA4LjQyNDAzIDQuOTYyNjYgOC40MTA0NyA1LjAyNjA0IDguMzg0MTRDNS4wODk0MiA4LjM1NzgxIDUuMTQ2OTcgOC4zMTkyMiA1LjE5NTM5IDguMjcwNThMOC44ODExMSA0LjU4NDQ1QzguOTI5NzQgNC41MzYwMyA4Ljk2ODM0IDQuNDc4NDggOC45OTQ2NyA0LjQxNTFDOS4wMjEgNC4zNTE3MyA5LjAzNDU2IDQuMjgzNzcgOS4wMzQ1NiA0LjIxNTE0QzkuMDM0NTYgNC4xNDY1MSA5LjAyMSA0LjA3ODU2IDguOTk0NjcgNC4wMTUxOEM4Ljk2ODM0IDMuOTUxOCA4LjkyOTc0IDMuODk0MjUgOC44ODExMSAzLjg0NTgzWlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjODM3RjhFXCIgLz5cbiAgICAgICAgICA8L3N2Zz5cblxuICAgICAgICAgIDxzdmcgKm5nSWY9XCJpc1NhdmVIb3ZlcmVkXCIgKGNsaWNrKT1cInNhdmVDaGFuZ2VzKClcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDEyIDEzXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk01Ljk1IDEyLjgwMDRDOS4yMzYwOSAxMi44MDA0IDExLjkgMTAuMTM2NSAxMS45IDYuODUwMzlDMTEuOSAzLjU2NDMgOS4yMzYwOSAwLjkwMDM5MSA1Ljk1IDAuOTAwMzkxQzIuNjYzOTEgMC45MDAzOTEgMCAzLjU2NDMgMCA2Ljg1MDM5QzAgMTAuMTM2NSAyLjY2MzkxIDEyLjgwMDQgNS45NSAxMi44MDA0WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjMjU5NTY2XCIgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNOC44ODExMSA0Ljc0NjIyQzguODMyNjkgNC42OTc1OSA4Ljc3NTEzIDQuNjU4OTkgOC43MTE3NiA0LjYzMjY2QzguNjQ4MzggNC42MDYzMyA4LjU4MDQzIDQuNTkyNzcgOC41MTE4IDQuNTkyNzdDOC40NDMxNyA0LjU5Mjc3IDguMzc1MjEgNC42MDYzMyA4LjMxMTg0IDQuNjMyNjZDOC4yNDg0NiA0LjY1ODk5IDguMTkwOTEgNC42OTc1OSA4LjE0MjQ5IDQuNzQ2MjJMNC44MjY5IDguMDYzODZMMy4zNTI1MyA2LjU4OTQ5QzMuMzA0MDMgNi41NDA5OSAzLjI0NjQ2IDYuNTAyNTIgMy4xODMwOSA2LjQ3NjI3QzMuMTE5NzIgNi40NTAwMyAzLjA1MTgxIDYuNDM2NTIgMi45ODMyMiA2LjQzNjUyQzIuOTE0NjMgNi40MzY1MiAyLjg0NjcyIDYuNDUwMDMgMi43ODMzNSA2LjQ3NjI3QzIuNzE5OTkgNi41MDI1MiAyLjY2MjQxIDYuNTQwOTkgMi42MTM5MSA2LjU4OTQ5QzIuNTY1NDEgNi42Mzc5OSAyLjUyNjk0IDYuNjk1NTcgMi41MDA2OSA2Ljc1ODkzQzIuNDc0NDUgNi44MjIzIDIuNDYwOTQgNi44OTAyMiAyLjQ2MDk0IDYuOTU4OEMyLjQ2MDk0IDcuMDI3MzkgMi40NzQ0NSA3LjA5NTMxIDIuNTAwNjkgNy4xNTg2N0MyLjUyNjk0IDcuMjIyMDQgMi41NjU0MSA3LjI3OTYxIDIuNjEzOTEgNy4zMjgxMUw0LjQ1Njc3IDkuMTcwOTdDNC41MDUxOSA5LjIxOTYxIDQuNTYyNzQgOS4yNTgyIDQuNjI2MTIgOS4yODQ1M0M0LjY4OTUgOS4zMTA4NiA0Ljc1NzQ1IDkuMzI0NDIgNC44MjYwOCA5LjMyNDQyQzQuODk0NzEgOS4zMjQ0MiA0Ljk2MjY2IDkuMzEwODYgNS4wMjYwNCA5LjI4NDUzQzUuMDg5NDIgOS4yNTgyIDUuMTQ2OTcgOS4yMTk2MSA1LjE5NTM5IDkuMTcwOTdMOC44ODExMSA1LjQ4NDg0QzguOTI5NzQgNS40MzY0MiA4Ljk2ODM0IDUuMzc4ODcgOC45OTQ2NyA1LjMxNTQ5QzkuMDIxIDUuMjUyMTIgOS4wMzQ1NiA1LjE4NDE2IDkuMDM0NTYgNS4xMTU1M0M5LjAzNDU2IDUuMDQ2OSA5LjAyMSA0Ljk3ODk1IDguOTk0NjcgNC45MTU1N0M4Ljk2ODM0IDQuODUyMiA4LjkyOTc0IDQuNzk0NjUgOC44ODExMSA0Ljc0NjIyWlwiXG4gICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0VkaXQgJiYgb3JpZ2luYWxWYWx1ZSAhPT0gdmFsdWVcIiAobW91c2VlbnRlcik9XCJpc0Rpc2NhcmRIb3ZlcmVkID0gdHJ1ZVwiIChtb3VzZWxlYXZlKT1cImlzRGlzY2FyZEhvdmVyZWQgPSBmYWxzZVwiXG4gICAgICAgICAgc3R5bGU9XCIgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cbiAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzRGlzY2FyZEhvdmVyZWRcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk03LjA1NTU1IDQuMDA4ODNMNS45NCA1LjEyNDM4TDQuODI0NDUgNC4wMDg4M0M0LjU3ODYxIDMuNzYyOTkgNC4xODE5MSAzLjc2Mjk5IDMuOTM2MDcgNC4wMDg4M0MzLjY5MDIzIDQuMjU0NjcgMy42OTAyMyA0LjY1MTM3IDMuOTM2MDcgNC44OTcyMUw1LjA1MTYyIDYuMDEyNzZMMy45MzYwNyA3LjEyODMxQzMuNjkwMjMgNy4zNzQxNSAzLjY5MDIzIDcuNzcwODUgMy45MzYwNyA4LjAxNjY5QzQuMTgxOTEgOC4yNjI1MyA0LjU3ODYxIDguMjYyNTMgNC44MjQ0NSA4LjAxNjY5TDUuOTQgNi45MDExNEw3LjA1NTU1IDguMDE2NjlDNy4zMDEzOSA4LjI2MjUzIDcuNjk4MDkgOC4yNjI1MyA3Ljk0MzkzIDguMDE2NjlDOC4xODk3NyA3Ljc3MDg1IDguMTg5NzcgNy4zNzQxNSA3Ljk0MzkzIDcuMTI4MzFMNi44MjgzOCA2LjAxMjc2TDcuOTQzOTMgNC44OTcyMUM4LjE4OTc3IDQuNjUxMzcgOC4xODk3NyA0LjI1NDY3IDcuOTQzOTMgNC4wMDg4M0M3LjY5ODA5IDMuNzcyODUgNy4zMDAyMSAzLjc3Mjg1IDcuMDU1NTUgNC4wMDg4M1pNNS45NCAwLjA4MjAzMTJDMi43MDAxNyAwLjA4MjAzMTIgMC4wODA4NTk0IDIuNzAxMzQgMC4wODA4NTk0IDUuOTQxMThDMC4wODA4NTk0IDkuMTgxMDEgMi43MDAxNyAxMS44MDAzIDUuOTQgMTEuODAwM0M5LjE3OTgzIDExLjgwMDMgMTEuNzk5MSA5LjE4MTAxIDExLjc5OTEgNS45NDExOEMxMS43OTkxIDIuNzAxMzQgOS4xNzk4MyAwLjA4MjAzMTIgNS45NCAwLjA4MjAzMTJaTTUuOTQgMTAuNjM2N0MzLjM1NDI2IDEwLjYzNjcgMS4yNDQyMiA4LjUyNjY3IDEuMjQ0MjIgNS45NDExOEMxLjI0NDIyIDMuMzU1NTMgMy4zNTQyNiAxLjI0NTQ5IDUuOTQgMS4yNDU0OUM4LjUyNTU4IDEuMjQ1NDkgMTAuNjM1NiAzLjM1NTUzIDEwLjYzNTYgNS45NDExOEMxMC42MzU2IDguNTI2NjcgOC41MjU1OCAxMC42MzY3IDUuOTQgMTAuNjM2N1pcIlxuICAgICAgICAgICAgICBmaWxsPVwiI0IwQURBQlwiIC8+XG4gICAgICAgICAgPC9zdmc+XG5cbiAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNEaXNjYXJkSG92ZXJlZFwiIChjbGljayk9XCJkaXNjYXJkQ2hhbmdlcygpXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxMiAxM1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNNy4wNTU1NSA0Ljk3NDcxTDUuOTQgNi4wOTAyNkw0LjgyNDQ1IDQuOTc0NzFDNC41Nzg2MSA0LjcyODg3IDQuMTgxOTEgNC43Mjg4NyAzLjkzNjA3IDQuOTc0NzFDMy42OTAyMyA1LjIyMDU1IDMuNjkwMjMgNS42MTcyNSAzLjkzNjA3IDUuODYzMDlMNS4wNTE2MiA2Ljk3ODY0TDMuOTM2MDcgOC4wOTQxOUMzLjY5MDIzIDguMzQwMDMgMy42OTAyMyA4LjczNjczIDMuOTM2MDcgOC45ODI1N0M0LjE4MTkxIDkuMjI4NDEgNC41Nzg2MSA5LjIyODQxIDQuODI0NDUgOC45ODI1N0w1Ljk0IDcuODY3MDJMNy4wNTU1NSA4Ljk4MjU3QzcuMzAxMzkgOS4yMjg0MSA3LjY5ODA5IDkuMjI4NDEgNy45NDM5MyA4Ljk4MjU3QzguMTg5NzcgOC43MzY3MyA4LjE4OTc3IDguMzQwMDMgNy45NDM5MyA4LjA5NDE5TDYuODI4MzggNi45Nzg2NEw3Ljk0MzkzIDUuODYzMDlDOC4xODk3NyA1LjYxNzI1IDguMTg5NzcgNS4yMjA1NSA3Ljk0MzkzIDQuOTc0NzFDNy42OTgwOSA0LjczODczIDcuMzAwMjEgNC43Mzg3MyA3LjA1NTU1IDQuOTc0NzFaTTUuOTQgMS4wNjA2MkMyLjcwMDE3IDEuMDYwNjIgMC4wODA4NTk0IDMuNjc5OTMgMC4wODA4NTk0IDYuOTE5NzdDMC4wODA4NTk0IDEwLjE1OTYgMi43MDAxNyAxMi43Nzg5IDUuOTQgMTIuNzc4OUM5LjE3OTgzIDEyLjc3ODkgMTEuNzk5MSAxMC4xNTk2IDExLjc5OTEgNi45MTk3N0MxMS43OTkxIDMuNjc5OTMgOS4xNzk4MyAxLjA2MDYyIDUuOTQgMS4wNjA2MlpNNS45NCAxMS42MTUzQzMuMzU0MjYgMTEuNjE1MyAxLjI0NDIyIDkuNTA1MjUgMS4yNDQyMiA2LjkxOTc3QzEuMjQ0MjIgNC4zMzQxMiAzLjM1NDI2IDIuMjI0MDggNS45NCAyLjIyNDA4QzguNTI1NTggMi4yMjQwOCAxMC42MzU2IDQuMzM0MTIgMTAuNjM1NiA2LjkxOTc3QzEwLjYzNTYgOS41MDUyNSA4LjUyNTU4IDExLjYxNTMgNS45NCAxMS42MTUzWlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjRkYzNjM2XCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidHlwZSAhPT0gJ2xhYmVsJyAmJiB0eXBlICE9PSAnY2hlY2tib3gnICYmICh0eXBlID09PSAncmljaHRleHQnIHx8IHR5cGUgPT09ICd0ZXh0YXJlYScpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiXG4gICAgICAgIFtzdHlsZS5tYXJnaW4tdG9wXT1cInNob3dMYWJlbCAmJiBsYWJlbCA/ICcnIDogJzIxcHggIWltcG9ydGFudCdcIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm1vZGUgPT09ICdlZGl0JyA/IGlucHV0QmdDb2xvciA6ICcnXCJcbiAgICAgICAgW2NsYXNzLmludmFsaWRdPVwiY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wudG91Y2hlZFwiXG4gICAgICAgIFtzdHlsZS5ib3JkZXJdPVwibW9kZSA9PT0gJ2VkaXQnID8gaW5wdXRCb3JkZXIgPT09ICdub25lJyA/ICgnMXB4IHNvbGlkICcgKyBpbnB1dEJnQ29sb3IpIDogaW5wdXRCb3JkZXIgOiAnbm9uZSdcIj5cbiAgICAgICAgPCEtLSBTS1MxNEpVTjI1ICBEeW5hbWljYWxseSBsb2FkIFF1aWxsIGVkaXRvciB0b29sYmFyIC0tPlxuICAgICAgICA8cXVpbGwtZWRpdG9yICpuZ0lmPVwibW9kZSA9PT0gJ2VkaXQnICYmIHR5cGUgPT09ICdyaWNodGV4dCdcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbcmVhZE9ubHldPVwibW9kZSAhPT0gJ2VkaXQnIHx8IHF1ZXN0aW9uLmlzUmVhZE9ubHlcIlxuICAgICAgICAgIChmb2N1c291dCk9XCJvbkVkaXRvckZvY3VzT3V0KClcIiBbY2xhc3MuZXJyb3JdPVwiY29udHJvbC5pbnZhbGlkICYmIChjb250cm9sLnRvdWNoZWQgfHwgY29udHJvbC5kaXJ0eSlcIlxuICAgICAgICAgIFttb2R1bGVzXT1cImdldFF1aWxsTW9kdWxlcyhxdWVzdGlvbi5pZClcIlxuICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggNXB4O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgZm9udC1zaXplOiAxNHB4O1wiPlxuICAgICAgICA8L3F1aWxsLWVkaXRvcj5cbiAgICAgICAgPCEtLSBWaWV3IG1vZGUgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlICE9PSAnZWRpdCcgJiYgdHlwZSA9PT0gJ3JpY2h0ZXh0J1wiIGNsYXNzPVwicXVpbGwtdmlldy1jb250ZW50XCIgW2lubmVySFRNTF09XCJ2YWx1ZVwiXG4gICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTBweCAxMHB4IDVweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx0ZXh0YXJlYSAqbmdJZj1cInR5cGUgPT09ICd0ZXh0YXJlYSdcIiBbaWRdPVwiaW5wdXRJZFwiIFtyb3dzXT1cInJvd3NcIlxuICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cIm1vZGUgIT09ICdlZGl0JyA/ICcnIDogcGxhY2Vob2xkZXJcIiBbbmdDbGFzc109XCInY3VzdG9tLWlucHV0J1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm1vZGUgIT09ICdlZGl0JyA/ICcnIDogaW5wdXRCZ0NvbG9yXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwibW9kZSAhPT0gJ2VkaXQnID8gJycgOiBpbnB1dFRleHRDb2xvclwiIFtzdHlsZS5ib3JkZXJdPVwibW9kZSAhPT0gJ2VkaXQnID8gJ25vbmUnIDogaW5wdXRCb3JkZXJcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiaW5wdXRIZWlnaHRcIiBbdmFsdWVdPVwidmFsdWVcIiAoaW5wdXQpPVwiIG9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCJpbnB1dFZhbHVlU2l6ZVwiIChibHVyKT1cIiBibHVyRW1pdCgpXCIgKGZvY3VzaW4pPVwiZm9jdXNpbkVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgW3JlYWRPbmx5XT1cIm1vZGUgIT09ICdlZGl0JyB8fCBxdWVzdGlvbi5pc1JlYWRPbmx5XCIgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgJy0tcGxhY2Vob2xkZXItZm9udCc6IG1vZGUgPT09ICdlZGl0JyA/IHBsYWNlaG9sZGVyRm9udCB8fCBsYWJlbEZvbnQgOiAnJyxcbiAgICAgICAgICAgICctLXBsYWNlaG9sZGVyLWNvbG9yJzogbW9kZSA9PT0gJ2VkaXQnID8gcGxhY2Vob2xkZXJDb2xvciB8fCAnIzlhOWE5YScgOiAnJyxcbiAgICAgICAgICAgICctLXBsYWNlaG9sZGVyLXNpemUnOiBtb2RlID09PSAnZWRpdCcgPyBwbGFjZWhvbGRlclNpemUgfHwgaW5wdXRWYWx1ZVNpemUgOiAnJyxcbiAgICAgICAgICAgICctLXBsYWNlaG9sZGVyLXdlaWdodCc6IG1vZGUgPT09ICdlZGl0JyA/IHBsYWNlaG9sZGVyV2VpZ2h0IHx8IGxhYmVsV2VpZ2h0IDogJydcbiAgICAgICAgICB9XCIgc3R5bGU9XCJcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNXB4O1xuICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XCI+XG4gICAgICAgICAgPC90ZXh0YXJlYT5cbiAgICAgICAgPHN2ZyAqbmdJZj1cIm1vZGUgIT09ICdlZGl0JyAmJiAhdmlld0VkaXQgJiYgKHR5cGUgPT09ICdyaWNodGV4dCcgfHwgdHlwZSA9PT0gJ3RleHRhcmVhJykgJiYgIXF1ZXN0aW9uLmlzUmVhZE9ubHlcIlxuICAgICAgICAgIGNsYXNzPVwiZWRpdC1pY29uXCIgKGNsaWNrKT1cInZpZXdFZGl0Q2xpY2socXVlc3Rpb24pXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxMyAxNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgZD1cIk0xLjk5OTg3IDkuMDAxN0w0LjM5NjAyIDExLjM5NzlDNC41MDM3MSAxMS41MDU1IDQuNjY1MjUgMTEuNTA1NSA0Ljc3Mjk0IDExLjM5NzlMMTAuNzQ5OSA1LjM5NDAxQzEwLjg1NzYgNS4yODYzMSAxMC44NTc2IDUuMTI0NzcgMTAuNzQ5OSA1LjAxNzA4TDguMzgwNjQgMi42NDc4NUM4LjI3Mjk0IDIuNTQwMTYgOC4xMTE0MSAyLjU0MDE2IDguMDAzNzEgMi42NDc4NUwxLjk5OTg3IDguNjUxN0MxLjg5MjE3IDguNzU5MzkgMS44OTIxNyA4LjkyMDkzIDEuOTk5ODcgOS4wMDE3Wk05LjE2MTQgMS41NDQwMUM5LjA1MzcxIDEuNjUxNyA5LjA1MzcxIDEuODEzMjQgOS4xNjE0IDEuOTIwOTNMMTEuNTMwNiA0LjI5MDE2QzExLjYzODMgNC4zOTc4NSAxMS43OTk5IDQuMzk3ODUgMTEuOTA3NiA0LjI5MDE2TDEyLjU4MDYgMy42MTcwOEMxMy4wMTE0IDMuMjEzMjQgMTMuMDExNCAyLjU2NzA4IDEyLjU4MDYgMi4xMzYzMUwxMS4zMTUzIDAuODcwOTI4QzEwLjg4NDUgMC40NDAxNTkgMTAuMjExNCAwLjQ0MDE1OSA5Ljc4MDYzIDAuODcwOTI4TDkuMTYxNCAxLjU0NDAxWk0wLjAwNzU1ODYyIDEyLjk4NjNDLTAuMDQ2Mjg3NSAxMy4yNTU1IDAuMTk2MDIgMTMuNDk3OSAwLjQ2NTI1MSAxMy40NDRMMy4zOTk4NyAxMi43NDRDMy41MDc1NiAxMi43MTcxIDMuNTg4MzMgMTIuNjYzMiAzLjY0MjE3IDEyLjYwOTRMMy42OTYwMiAxMi41NTU1QzMuNzQ5ODcgMTIuNTAxNyAzLjc3Njc5IDEyLjMxMzIgMy42NjkxIDEyLjIwNTVMMS4yNDYwMiA5Ljc4MjQ3QzEuMTM4MzMgOS42NzQ3OCAwLjk0OTg2NiA5LjcwMTcgMC44OTYwMiA5Ljc1NTU0TDAuODQyMTc0IDkuODA5MzlDMC43NjE0MDUgOS44OTAxNiAwLjczNDQ4MiA5Ljk3MDkzIDAuNzA3NTU5IDEwLjA1MTdMMC4wMDc1NTg2MiAxMi45ODYzWlwiXG4gICAgICAgICAgICBmaWxsPVwiI0IwQURBQlwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBTS1MyM0FQUjI1IFVzZSBjb250cm9sLmludmFsaWQgdG8gc2hvdyBlcnJvciBvbiBzdWJtaXQgY2xpY2sgLS0+XG4gICAgPGRpdiAqbmdJZj1cInR5cGUgIT0gJ2NoZWNrYm94JyAmJiB0eXBlICE9PSAnbGFiZWwnICYmIGNvbnRyb2wuaW52YWxpZCAmJiAoY29udHJvbC50b3VjaGVkIHx8IGNvbnRyb2wuZGlydHkpXCIgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoKSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19