@qbs-origin/origin-form 0.6.2 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -161,8 +161,50 @@ export class ModelPopulationHelper {
161
161
  }
162
162
  }
163
163
  }
164
+ // Apply precompletion for ManualInput controls
165
+ ModelPopulationHelper.applyPrecompletionToModel(model, flux);
164
166
  return model;
165
167
  }
168
+ static applyPrecompletionToModel(model, flux) {
169
+ if (!flux)
170
+ return;
171
+ for (const step of flux) {
172
+ if (step.sections) {
173
+ for (const section of step.sections) {
174
+ if (section.controls) {
175
+ for (const controlDefinition of section.controls) {
176
+ const controlId = controlDefinition.identifier;
177
+ if (!controlId)
178
+ continue;
179
+ // Only process ManualInput controls with precompletion enabled
180
+ if (controlDefinition.type === StepControlType.ManualInput) {
181
+ const specificData = controlDefinition.specificControlData;
182
+ if (specificData?.isPrecompletable &&
183
+ specificData?.precompletionFieldId) {
184
+ if (model[controlId] === undefined ||
185
+ model[controlId] === null ||
186
+ model[controlId] === '') {
187
+ const sourceValue = model[specificData.precompletionFieldId];
188
+ if (sourceValue !== undefined &&
189
+ sourceValue !== null &&
190
+ sourceValue !== '') {
191
+ // Handle dictionary values - extract the display value
192
+ if (typeof sourceValue === 'object' && sourceValue.name) {
193
+ model[controlId] = sourceValue.name;
194
+ }
195
+ else {
196
+ model[controlId] = sourceValue;
197
+ }
198
+ }
199
+ }
200
+ }
201
+ }
202
+ }
203
+ }
204
+ }
205
+ }
206
+ }
207
+ }
166
208
  static applyDefaultsToModel(flux, dictionaryMap, availableLanguages) {
167
209
  const model = {};
168
210
  if (!flux)
@@ -209,6 +251,8 @@ export class ModelPopulationHelper {
209
251
  }
210
252
  }
211
253
  }
254
+ // Apply precompletion for ManualInput controls
255
+ ModelPopulationHelper.applyPrecompletionToModel(model, flux);
212
256
  return model;
213
257
  }
214
258
  static mapDictionaryValueDto(dto, availableLanguages) {
@@ -262,4 +306,4 @@ export class ModelPopulationHelper {
262
306
  return null;
263
307
  }
264
308
  }
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtcG9wdWxhdGlvbi5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVsLXBvcHVsYXRpb24uaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQXlCLE1BQU0sc0JBQXNCLENBQUM7QUFJOUUsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxNQUFNLENBQUMseUJBQXlCLENBQzlCLFFBQWEsRUFDYixJQUFXLEVBQ1gsYUFBeUMsRUFDekMsa0JBQThCO1FBRTlCLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0IsT0FBTyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUF3QixFQUFFLENBQUM7UUFFdEMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQ25ELEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3JCLEtBQUssTUFBTSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUN2QyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQ0FDdEIsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7NEJBQ3RELENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztR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QUk7Z0JBQzFCLE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTTtnQkFDOUIsTUFBTSxFQUFFLGVBQWUsQ0FBQyxNQUFNO2dCQUM5QixZQUFZLEVBQ1YsZUFBZSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FDcEMsQ0FBQyxDQUFpQixFQUFlLEVBQUU7b0JBQ2pDLE1BQU0sSUFBSSxHQUFHLGtCQUFrQixFQUFFLElBQUksQ0FDbkMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FDN0IsQ0FBQztvQkFDRixPQUFPO3dCQUNMLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTt3QkFDeEIsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRTt3QkFDNUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO3FCQUNmLENBQUM7Z0JBQ0osQ0FBQyxDQUNGLElBQUksRUFBRTtnQkFDVCxpQkFBaUIsRUFBRSxlQUFlLENBQUMsaUJBQWlCO2dCQUNwRCxtQkFBbUIsRUFBRSxlQUFlLENBQUMsbUJBQW1CO2dCQUN4RCxlQUFlLEVBQUUsRUFBRTthQUNwQixDQUFDO1lBQ0YsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeUR0bywgRGljdGlvbmFyeVZhbHVlLCBUcmFuc2xhdGlvbkR0bywgVHJhbnNsYXRpb24gfSBmcm9tIFwiLi9tb2RlbHMvZGljdGlvbmFyeS5tb2RlbFwiO1xuaW1wb3J0IHsgU3RlcENvbnRyb2xUeXBlLCBEaWN0aW9uYXJ5Q29udHJvbERhdGEgfSBmcm9tIFwiLi9tb2RlbHMvZm9ybXMubW9kZWxcIjtcbmltcG9ydCB7IExhbmd1YWdlIH0gZnJvbSBcIi4vbW9kZWxzL2xhbmd1YWdlLm1vZGVsXCI7XG5cblxuZXhwb3J0IGNsYXNzIE1vZGVsUG9wdWxhdGlvbkhlbHBlciB7XG4gIHN0YXRpYyBwb3B1bGF0ZU1vZGVsV2l0aEZpbGxEYXRhKFxuICAgIGZpbGxEYXRhOiBhbnksXG4gICAgZmx1eDogYW55W10sXG4gICAgZGljdGlvbmFyeU1hcDogTWFwPHN0cmluZywgRGljdGlvbmFyeUR0bz4sXG4gICAgYXZhaWxhYmxlTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdXG4gICk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGlmICghZmlsbERhdGE/LmZsdXggfHwgIWZsdXgpIHtcbiAgICAgIHJldHVybiBNb2RlbFBvcHVsYXRpb25IZWxwZXIuYXBwbHlEZWZhdWx0c1RvTW9kZWwoZmx1eCwgZGljdGlvbmFyeU1hcCk7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAgIGNvbnN0IGZpbGxEYXRhQ29udHJvbHNNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgIGZvciAoY29uc3Qgc3RlcCBvZiBmaWxsRGF0YS5mbHV4KSB7XG4gICAgICBpZiAoc3RlcC5zZWN0aW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc3RlcC5zZWN0aW9ucykge1xuICAgICAgICAgIGlmIChzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2Ygc2VjdGlvbi5jb250cm9scykge1xuICAgICAgICAgICAgICBpZiAoY29udHJvbC5jb250cm9sSWQpIHtcbiAgICAgICAgICAgICAgICBmaWxsRGF0YUNvbnRyb2xzTWFwLnNldChjb250cm9sLmNvbnRyb2xJZCwgY29udHJvbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHN0ZXAgb2YgZmx1eCkge1xuICAgICAgaWYgKHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgICBpZiAoc2VjdGlvbi5jb250cm9scykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb250cm9sRGVmaW5pdGlvbiBvZiBzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xJZCA9IGNvbnRyb2xEZWZpbml0aW9uLmlkZW50aWZpZXI7XG4gICAgICAgICAgICAgIGlmICghY29udHJvbElkKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICBsZXQgdmFsdWVTZXRGb3JDb250cm9sID0gZmFsc2U7XG4gICAgICAgICAgICAgIGNvbnN0IGZpbGxlZENvbnRyb2xEYXRhID0gZmlsbERhdGFDb250cm9sc01hcC5nZXQoY29udHJvbElkKTtcblxuICAgICAgICAgICAgICBpZiAoZmlsbGVkQ29udHJvbERhdGEpIHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWVGcm9tRmlsbERhdGE6IGFueSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBsZXQgZmlsbGVkVmFsdWVJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgZmlsbGVkQ29udHJvbERhdGEuZmlsbFZhbHVlSWQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgIGZpbGxlZENvbnRyb2xEYXRhLmZpbGxWYWx1ZUlkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZElkID0gcGFyc2VJbnQoXG4gICAgICAgICAgICAgICAgICAgIFN0cmluZyhmaWxsZWRDb250cm9sRGF0YS5maWxsVmFsdWVJZCksXG4gICAgICAgICAgICAgICAgICAgIDEwXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgZmlsbGVkVmFsdWVJZCA9ICFpc05hTihwYXJzZWRJZCkgPyBwYXJzZWRJZCA6IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGxlZFZhbHVlID0gZmlsbGVkQ29udHJvbERhdGEuZmlsbFZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xEZWZpbml0aW9uLnR5cGUgPT09IFN0ZXBDb250cm9sVHlwZS5EaWN0aW9uYXJ5KSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzcGVjaWZpY0RhdGEgPVxuICAgICAgICAgICAgICAgICAgICBjb250cm9sRGVmaW5pdGlvbi5zcGVjaWZpY0NvbnRyb2xEYXRhIGFzIERpY3Rpb25hcnlDb250cm9sRGF0YTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzUmFkaW8gPSBzcGVjaWZpY0RhdGEuc2hvd0FzUmFkaW9CdXR0b25zTGlzdCA9PT0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgaWYgKGZpbGxlZFZhbHVlSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmFkaW8pIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUZyb21GaWxsRGF0YSA9IGZpbGxlZFZhbHVlSWQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGljdGlvbmFyeSA9IGRpY3Rpb25hcnlNYXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUR0byA9IGRpY3Rpb25hcnk/LnZhbHVlcz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh2KSA9PiB2LmlkID09PSBmaWxsZWRWYWx1ZUlkXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVEdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRnJvbUZpbGxEYXRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWxQb3B1bGF0aW9uSGVscGVyLm1hcERpY3Rpb25hcnlWYWx1ZUR0byhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUR0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGZpbGxlZFZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgIGZpbGxlZFZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNSYWRpbykge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRnJvbUZpbGxEYXRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBmaWxsZWRWYWx1ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmaWxsZWRWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZpbGxlZFZhbHVlID09PSAnb2JqZWN0JyAmJiBmaWxsZWRWYWx1ZT8uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRnJvbUZpbGxEYXRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWxQb3B1bGF0aW9uSGVscGVyLm1hcERpY3Rpb25hcnlWYWx1ZUR0byhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsZWRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGljdGlvbmFyeSA9IGRpY3Rpb25hcnlNYXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGljdGlvbmFyeVVVSURcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUR0byA9IGRpY3Rpb25hcnk/LnZhbHVlcz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHYpID0+IHYuaWQgPT09IGZpbGxlZFZhbHVlIHx8IHYubmFtZSA9PT0gZmlsbGVkVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVEdG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRnJvbUZpbGxEYXRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlbFBvcHVsYXRpb25IZWxwZXIubWFwRGljdGlvbmFyeVZhbHVlRHRvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVEdG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgcmVmZXJlbmNlIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZUZyb21GaWxsRGF0YSAmJlxuICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5TWFwLmhhcyhzcGVjaWZpY0RhdGEuZGljdGlvbmFyeVVVSUQpXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFpbkRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGljdGlvbmFyeVVVSURcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1haW5EaWN0aW9uYXJ5Py5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBtYWluRGljdGlvbmFyeS52YWx1ZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAodikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdi5pZCA9PT0gKHZhbHVlRnJvbUZpbGxEYXRhLmlkIHx8IHZhbHVlRnJvbUZpbGxEYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlRGljdGlvbmFyaWVzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeU1hcC52YWx1ZXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgKS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkaWN0KSA9PiBkaWN0LnJlZmVyZW5jZUlkID09PSBtYWluRGljdGlvbmFyeS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWZEaWN0IG9mIHJlZmVyZW5jZURpY3Rpb25hcmllcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZWYWx1ZSA9IHJlZkRpY3QudmFsdWVzPy5maW5kKCh2KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYucmVmZXJlbmNlVmFsdWVzLnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnYpID0+IHJ2LmlkID09PSBzZWxlY3RlZFZhbHVlLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWZWYWx1ZSAmJiByZWZEaWN0LnV1aWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZDb250cm9sSWQgPSBgJHtjb250cm9sSWR9X3JlZmVyZW5jZV8ke3JlZkRpY3QudXVpZH1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsW3JlZkNvbnRyb2xJZF0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWxQb3B1bGF0aW9uSGVscGVyLm1hcERpY3Rpb25hcnlWYWx1ZUR0byhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpZiAoZmlsbGVkVmFsdWUgIT09IG51bGwgJiYgZmlsbGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZUZyb21GaWxsRGF0YSA9IGZpbGxlZFZhbHVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodmFsdWVGcm9tRmlsbERhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxbY29udHJvbElkXSA9IHZhbHVlRnJvbUZpbGxEYXRhO1xuICAgICAgICAgICAgICAgICAgdmFsdWVTZXRGb3JDb250cm9sID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIXZhbHVlU2V0Rm9yQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0VmFsdWVGb3JNb2RlbDogYW55ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sRGVmaW5pdGlvbi50eXBlID09PSBTdGVwQ29udHJvbFR5cGUuRGljdGlvbmFyeSkge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNEYXRhID1cbiAgICAgICAgICAgICAgICAgICAgY29udHJvbERlZmluaXRpb24uc3BlY2lmaWNDb250cm9sRGF0YSBhcyBEaWN0aW9uYXJ5Q29udHJvbERhdGE7XG4gICAgICAgICAgICAgICAgICBjb25zdCBpc1JhZGlvID0gc3BlY2lmaWNEYXRhLnNob3dBc1JhZGlvQnV0dG9uc0xpc3QgPT09IHRydWU7XG4gICAgICAgICAgICAgICAgICBjb25zdCBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQgPVxuICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1JhZGlvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlRm9yTW9kZWwgPSBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGljdGlvbmFyeSA9IGRpY3Rpb25hcnlNYXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVGb3JNb2RlbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBNb2RlbFBvcHVsYXRpb25IZWxwZXIuZmluZEFuZE1hcERlZmF1bHRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgcmVmZXJlbmNlIHZhbHVlcyBmb3IgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlRm9yTW9kZWwgJiZcbiAgICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5TWFwLmhhcyhzcGVjaWZpY0RhdGEuZGljdGlvbmFyeVVVSUQpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1haW5EaWN0aW9uYXJ5ID0gZGljdGlvbmFyeU1hcC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGljdGlvbmFyeVVVSURcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChtYWluRGljdGlvbmFyeT8uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBtYWluRGljdGlvbmFyeS52YWx1ZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICh2KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYuaWQgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHRWYWx1ZUZvck1vZGVsLmlkIHx8IGRlZmF1bHRWYWx1ZUZvck1vZGVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlRGljdGlvbmFyaWVzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5TWFwLnZhbHVlcygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaWN0KSA9PiBkaWN0LnJlZmVyZW5jZUlkID09PSBtYWluRGljdGlvbmFyeS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVmRGljdCBvZiByZWZlcmVuY2VEaWN0aW9uYXJpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZWYWx1ZSA9IHJlZkRpY3QudmFsdWVzPy5maW5kKCh2KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi5yZWZlcmVuY2VWYWx1ZXMuc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJ2KSA9PiBydi5pZCA9PT0gc2VsZWN0ZWRWYWx1ZS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVmVmFsdWUgJiYgcmVmRGljdC51dWlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZDb250cm9sSWQgPSBgJHtjb250cm9sSWR9X3JlZmVyZW5jZV8ke3JlZkRpY3QudXVpZH1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxbcmVmQ29udHJvbElkXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5tYXBEaWN0aW9uYXJ5VmFsdWVEdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xEZWZpbml0aW9uLnR5cGUgPT09IFN0ZXBDb250cm9sVHlwZS5DaGVja0JveFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNEYXRhID1cbiAgICAgICAgICAgICAgICAgICAgY29udHJvbERlZmluaXRpb24uc3BlY2lmaWNDb250cm9sRGF0YSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHNwZWNpZmljRGF0YT8uaGFzT3duUHJvcGVydHkoJ2RlZmF1bHRWYWx1ZScpICYmXG4gICAgICAgICAgICAgICAgICAgIHNwZWNpZmljRGF0YS5kZWZhdWx0VmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlRm9yTW9kZWwgPSBzcGVjaWZpY0RhdGEuZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdFZhbHVlRm9yTW9kZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxbY29udHJvbElkXSA9IGRlZmF1bHRWYWx1ZUZvck1vZGVsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseURlZmF1bHRzVG9Nb2RlbChcbiAgICBmbHV4OiBhbnlbXSxcbiAgICBkaWN0aW9uYXJ5TWFwOiBNYXA8c3RyaW5nLCBEaWN0aW9uYXJ5RHRvPixcbiAgICBhdmFpbGFibGVMYW5ndWFnZXM/OiBMYW5ndWFnZVtdXG4gICk6IGFueSB7XG4gICAgY29uc3QgbW9kZWwgPSB7fTtcbiAgICBpZiAoIWZsdXgpIHJldHVybiBtb2RlbDtcblxuICAgIGZvciAoY29uc3Qgc3RlcCBvZiBmbHV4KSB7XG4gICAgICBpZiAoc3RlcC5zZWN0aW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc3RlcC5zZWN0aW9ucykge1xuICAgICAgICAgIGlmIChzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2xEZWZpbml0aW9uIG9mIHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29udHJvbElkID0gY29udHJvbERlZmluaXRpb24uaWRlbnRpZmllcjtcbiAgICAgICAgICAgICAgaWYgKCFjb250cm9sSWQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICBsZXQgZGVmYXVsdFZhbHVlRm9yTW9kZWw6IGFueSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGNvbnRyb2xEZWZpbml0aW9uLnR5cGUgPT09IFN0ZXBDb250cm9sVHlwZS5EaWN0aW9uYXJ5KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNEYXRhID1cbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xEZWZpbml0aW9uLnNwZWNpZmljQ29udHJvbERhdGEgYXMgRGljdGlvbmFyeUNvbnRyb2xEYXRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUmFkaW8gPSBzcGVjaWZpY0RhdGEuc2hvd0FzUmFkaW9CdXR0b25zTGlzdCA9PT0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQgPVxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZDtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoaXNSYWRpbykge1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVGb3JNb2RlbCA9IGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGljdGlvbmFyeVVVSURcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlRm9yTW9kZWwgPVxuICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5maW5kQW5kTWFwRGVmYXVsdFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlcyA/PyBbXVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2xEZWZpbml0aW9uLnR5cGUgPT09IFN0ZXBDb250cm9sVHlwZS5DaGVja0JveCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljRGF0YSA9XG4gICAgICAgICAgICAgICAgICBjb250cm9sRGVmaW5pdGlvbi5zcGVjaWZpY0NvbnRyb2xEYXRhIGFzIGFueTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGE/Lmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSAmJlxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVGb3JNb2RlbCA9IHNwZWNpZmljRGF0YS5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWVGb3JNb2RlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2NvbnRyb2xJZF0gPVxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlRm9yTW9kZWw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgc3RhdGljIG1hcERpY3Rpb25hcnlWYWx1ZUR0byhcbiAgICBkdG86IGFueSxcbiAgICBhdmFpbGFibGVMYW5ndWFnZXM6IExhbmd1YWdlW11cbiAgKTogRGljdGlvbmFyeVZhbHVlIHwgbnVsbCB7XG4gICAgaWYgKCFkdG8gfHwgdHlwZW9mIGR0by5pZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB0cmFuc2xhdGlvbnNEdG8gPSBkdG8udmFsdWVUcmFuc2xhdGlvbnMgfHwgZHRvLnRyYW5zbGF0aW9ucyB8fCBbXTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGR0by5pZCxcbiAgICAgIG5hbWU6IGR0by5uYW1lID8/ICcnLFxuICAgICAgYWN0aXZlOiBkdG8uYWN0aXZlID8/IGZhbHNlLFxuICAgICAgbG9ja2VkOiBkdG8ubG9ja2VkID8/IGZhbHNlLFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICB0cmFuc2xhdGlvbnNEdG8ubWFwKCh0OiBUcmFuc2xhdGlvbkR0byk6IFRyYW5zbGF0aW9uID0+IHtcbiAgICAgICAgICBjb25zdCBsYW5nID0gYXZhaWxhYmxlTGFuZ3VhZ2VzPy5maW5kKChsKSA9PiBsLmlkID09PSB0Lmxhbmd1YWdlSWQpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsYW5ndWFnZUlkOiB0Lmxhbmd1YWdlSWQsXG4gICAgICAgICAgICBsYW5ndWFnZUlzbzogbGFuZz8uaXNvID8/ICcnLFxuICAgICAgICAgICAgdmFsdWU6IHQudmFsdWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSkgfHwgW10sXG4gICAgICBjaGlsZERpY3Rpb25hcnlJZDogZHRvLmNoaWxkRGljdGlvbmFyeUlkLFxuICAgICAgY2hpbGREaWN0aW9uYXJ5VVVJRDogZHRvLmNoaWxkRGljdGlvbmFyeVVVSUQsXG4gICAgICByZWZlcmVuY2VWYWx1ZXM6IGR0by5yZWZlcmVuY2VWYWx1ZXMgfHwgW10sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kQW5kTWFwRGVmYXVsdFZhbHVlKFxuICAgIGRpY3Rpb25hcnk6IERpY3Rpb25hcnlEdG8gfCB1bmRlZmluZWQsXG4gICAgZGVmYXVsdFZhbHVlSWQ6IG51bWJlcixcbiAgICBhdmFpbGFibGVMYW5ndWFnZXM6IExhbmd1YWdlW11cbiAgKTogRGljdGlvbmFyeVZhbHVlIHwgbnVsbCB7XG4gICAgaWYgKCFkaWN0aW9uYXJ5IHx8ICFkaWN0aW9uYXJ5LnZhbHVlcyB8fCBkZWZhdWx0VmFsdWVJZCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlRHRvID0gZGljdGlvbmFyeS52YWx1ZXMuZmluZChcbiAgICAgICh2KSA9PiB2LmlkID09PSBkZWZhdWx0VmFsdWVJZFxuICAgICk7XG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlRHRvKSB7XG4gICAgICBjb25zdCBtYXBwZWRWYWx1ZTogRGljdGlvbmFyeVZhbHVlID0ge1xuICAgICAgICBpZDogZGVmYXVsdFZhbHVlRHRvLmlkLFxuICAgICAgICBuYW1lOiBkZWZhdWx0VmFsdWVEdG8ubmFtZSxcbiAgICAgICAgYWN0aXZlOiBkZWZhdWx0VmFsdWVEdG8uYWN0aXZlLFxuICAgICAgICBsb2NrZWQ6IGRlZmF1bHRWYWx1ZUR0by5sb2NrZWQsXG4gICAgICAgIHRyYW5zbGF0aW9uczpcbiAgICAgICAgICBkZWZhdWx0VmFsdWVEdG8udmFsdWVUcmFuc2xhdGlvbnM/Lm1hcChcbiAgICAgICAgICAgICh0OiBUcmFuc2xhdGlvbkR0byk6IFRyYW5zbGF0aW9uID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbGFuZyA9IGF2YWlsYWJsZUxhbmd1YWdlcz8uZmluZChcbiAgICAgICAgICAgICAgICAobCkgPT4gbC5pZCA9PT0gdC5sYW5ndWFnZUlkXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VJZDogdC5sYW5ndWFnZUlkLFxuICAgICAgICAgICAgICAgIGxhbmd1YWdlSXNvOiBsYW5nPy5pc28gPz8gJycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHQudmFsdWUsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKSB8fCBbXSxcbiAgICAgICAgY2hpbGREaWN0aW9uYXJ5SWQ6IGRlZmF1bHRWYWx1ZUR0by5jaGlsZERpY3Rpb25hcnlJZCxcbiAgICAgICAgY2hpbGREaWN0aW9uYXJ5VVVJRDogZGVmYXVsdFZhbHVlRHRvLmNoaWxkRGljdGlvbmFyeVVVSUQsXG4gICAgICAgIHJlZmVyZW5jZVZhbHVlczogW10sXG4gICAgICB9O1xuICAgICAgcmV0dXJuIG1hcHBlZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtcG9wdWxhdGlvbi5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVsLXBvcHVsYXRpb24uaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQWlELE1BQU0sc0JBQXNCLENBQUM7QUFJdEcsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxNQUFNLENBQUMseUJBQXlCLENBQzlCLFFBQWEsRUFDYixJQUFXLEVBQ1gsYUFBeUMsRUFDekMsa0JBQThCO1FBRTlCLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0IsT0FBTyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUF3QixFQUFFLENBQUM7UUFFdEMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQ25ELEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3JCLEtBQUssTUFBTSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUN2QyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQ0FDdEIsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7NEJBQ3RELENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztR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O1FBQ3JCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnlEdG8sIERpY3Rpb25hcnlWYWx1ZSwgVHJhbnNsYXRpb25EdG8sIFRyYW5zbGF0aW9uIH0gZnJvbSBcIi4vbW9kZWxzL2RpY3Rpb25hcnkubW9kZWxcIjtcbmltcG9ydCB7IFN0ZXBDb250cm9sVHlwZSwgRGljdGlvbmFyeUNvbnRyb2xEYXRhLCBNYW51YWxJbnB1dENvbnRyb2xEYXRhIH0gZnJvbSBcIi4vbW9kZWxzL2Zvcm1zLm1vZGVsXCI7XG5pbXBvcnQgeyBMYW5ndWFnZSB9IGZyb20gXCIuL21vZGVscy9sYW5ndWFnZS5tb2RlbFwiO1xuXG5cbmV4cG9ydCBjbGFzcyBNb2RlbFBvcHVsYXRpb25IZWxwZXIge1xuICBzdGF0aWMgcG9wdWxhdGVNb2RlbFdpdGhGaWxsRGF0YShcbiAgICBmaWxsRGF0YTogYW55LFxuICAgIGZsdXg6IGFueVtdLFxuICAgIGRpY3Rpb25hcnlNYXA6IE1hcDxzdHJpbmcsIERpY3Rpb25hcnlEdG8+LFxuICAgIGF2YWlsYWJsZUxhbmd1YWdlczogTGFuZ3VhZ2VbXVxuICApOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBpZiAoIWZpbGxEYXRhPy5mbHV4IHx8ICFmbHV4KSB7XG4gICAgICByZXR1cm4gTW9kZWxQb3B1bGF0aW9uSGVscGVyLmFwcGx5RGVmYXVsdHNUb01vZGVsKGZsdXgsIGRpY3Rpb25hcnlNYXApO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbiAgICBjb25zdCBmaWxsRGF0YUNvbnRyb2xzTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICBmb3IgKGNvbnN0IHN0ZXAgb2YgZmlsbERhdGEuZmx1eCkge1xuICAgICAgaWYgKHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgICBpZiAoc2VjdGlvbi5jb250cm9scykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb250cm9sIG9mIHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgaWYgKGNvbnRyb2wuY29udHJvbElkKSB7XG4gICAgICAgICAgICAgICAgZmlsbERhdGFDb250cm9sc01hcC5zZXQoY29udHJvbC5jb250cm9sSWQsIGNvbnRyb2wpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzdGVwIG9mIGZsdXgpIHtcbiAgICAgIGlmIChzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29udHJvbERlZmluaXRpb24gb2Ygc2VjdGlvbi5jb250cm9scykge1xuICAgICAgICAgICAgICBjb25zdCBjb250cm9sSWQgPSBjb250cm9sRGVmaW5pdGlvbi5pZGVudGlmaWVyO1xuICAgICAgICAgICAgICBpZiAoIWNvbnRyb2xJZCkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgbGV0IHZhbHVlU2V0Rm9yQ29udHJvbCA9IGZhbHNlO1xuICAgICAgICAgICAgICBjb25zdCBmaWxsZWRDb250cm9sRGF0YSA9IGZpbGxEYXRhQ29udHJvbHNNYXAuZ2V0KGNvbnRyb2xJZCk7XG5cbiAgICAgICAgICAgICAgaWYgKGZpbGxlZENvbnRyb2xEYXRhKSB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlRnJvbUZpbGxEYXRhOiBhbnkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgbGV0IGZpbGxlZFZhbHVlSWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIGZpbGxlZENvbnRyb2xEYXRhLmZpbGxWYWx1ZUlkICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICBmaWxsZWRDb250cm9sRGF0YS5maWxsVmFsdWVJZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRJZCA9IHBhcnNlSW50KFxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcoZmlsbGVkQ29udHJvbERhdGEuZmlsbFZhbHVlSWQpLFxuICAgICAgICAgICAgICAgICAgICAxMFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGZpbGxlZFZhbHVlSWQgPSAhaXNOYU4ocGFyc2VkSWQpID8gcGFyc2VkSWQgOiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBmaWxsZWRWYWx1ZSA9IGZpbGxlZENvbnRyb2xEYXRhLmZpbGxWYWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sRGVmaW5pdGlvbi50eXBlID09PSBTdGVwQ29udHJvbFR5cGUuRGljdGlvbmFyeSkge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNEYXRhID1cbiAgICAgICAgICAgICAgICAgICAgY29udHJvbERlZmluaXRpb24uc3BlY2lmaWNDb250cm9sRGF0YSBhcyBEaWN0aW9uYXJ5Q29udHJvbERhdGE7XG4gICAgICAgICAgICAgICAgICBjb25zdCBpc1JhZGlvID0gc3BlY2lmaWNEYXRhLnNob3dBc1JhZGlvQnV0dG9uc0xpc3QgPT09IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChmaWxsZWRWYWx1ZUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1JhZGlvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWVGcm9tRmlsbERhdGEgPSBmaWxsZWRWYWx1ZUlkO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljRGF0YS5kaWN0aW9uYXJ5VVVJRFxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVEdG8gPSBkaWN0aW9uYXJ5Py52YWx1ZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAodikgPT4gdi5pZCA9PT0gZmlsbGVkVmFsdWVJZFxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlRHRvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUZyb21GaWxsRGF0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5tYXBEaWN0aW9uYXJ5VmFsdWVEdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVEdG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICBmaWxsZWRWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICBmaWxsZWRWYWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmFkaW8pIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUZyb21GaWxsRGF0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgZmlsbGVkVmFsdWUgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gZmlsbGVkVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWxsZWRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgZmlsbGVkVmFsdWU/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUZyb21GaWxsRGF0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5tYXBEaWN0aW9uYXJ5VmFsdWVEdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbGVkVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVEdG8gPSBkaWN0aW9uYXJ5Py52YWx1ZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICh2KSA9PiB2LmlkID09PSBmaWxsZWRWYWx1ZSB8fCB2Lm5hbWUgPT09IGZpbGxlZFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlRHRvKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUZyb21GaWxsRGF0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWxQb3B1bGF0aW9uSGVscGVyLm1hcERpY3Rpb25hcnlWYWx1ZUR0byhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRHRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIHJlZmVyZW5jZSB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVGcm9tRmlsbERhdGEgJiZcbiAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeU1hcC5oYXMoc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEKVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1haW5EaWN0aW9uYXJ5ID0gZGljdGlvbmFyeU1hcC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYWluRGljdGlvbmFyeT8uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gbWFpbkRpY3Rpb25hcnkudmFsdWVzPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHYpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHYuaWQgPT09ICh2YWx1ZUZyb21GaWxsRGF0YS5pZCB8fCB2YWx1ZUZyb21GaWxsRGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZURpY3Rpb25hcmllcyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlNYXAudmFsdWVzKClcbiAgICAgICAgICAgICAgICAgICAgICAgICkuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGljdCkgPT4gZGljdC5yZWZlcmVuY2VJZCA9PT0gbWFpbkRpY3Rpb25hcnkuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVmRGljdCBvZiByZWZlcmVuY2VEaWN0aW9uYXJpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmVmFsdWUgPSByZWZEaWN0LnZhbHVlcz8uZmluZCgodikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LnJlZmVyZW5jZVZhbHVlcy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJ2KSA9PiBydi5pZCA9PT0gc2VsZWN0ZWRWYWx1ZS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVmVmFsdWUgJiYgcmVmRGljdC51dWlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmQ29udHJvbElkID0gYCR7Y29udHJvbElkfV9yZWZlcmVuY2VfJHtyZWZEaWN0LnV1aWR9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbFtyZWZDb250cm9sSWRdID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5tYXBEaWN0aW9uYXJ5VmFsdWVEdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZlZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaWYgKGZpbGxlZFZhbHVlICE9PSBudWxsICYmIGZpbGxlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVGcm9tRmlsbERhdGEgPSBmaWxsZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlRnJvbUZpbGxEYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIG1vZGVsW2NvbnRyb2xJZF0gPSB2YWx1ZUZyb21GaWxsRGF0YTtcbiAgICAgICAgICAgICAgICAgIHZhbHVlU2V0Rm9yQ29udHJvbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCF2YWx1ZVNldEZvckNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdFZhbHVlRm9yTW9kZWw6IGFueSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbERlZmluaXRpb24udHlwZSA9PT0gU3RlcENvbnRyb2xUeXBlLkRpY3Rpb25hcnkpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljRGF0YSA9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xEZWZpbml0aW9uLnNwZWNpZmljQ29udHJvbERhdGEgYXMgRGljdGlvbmFyeUNvbnRyb2xEYXRhO1xuICAgICAgICAgICAgICAgICAgY29uc3QgaXNSYWRpbyA9IHNwZWNpZmljRGF0YS5zaG93QXNSYWRpb0J1dHRvbnNMaXN0ID09PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkID1cbiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZDtcblxuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNSYWRpbykge1xuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZUZvck1vZGVsID0gZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljRGF0YS5kaWN0aW9uYXJ5VVVJRFxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlRm9yTW9kZWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWxQb3B1bGF0aW9uSGVscGVyLmZpbmRBbmRNYXBEZWZhdWx0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIHJlZmVyZW5jZSB2YWx1ZXMgZm9yIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZUZvck1vZGVsICYmXG4gICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeU1hcC5oYXMoc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYWluRGljdGlvbmFyeSA9IGRpY3Rpb25hcnlNYXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAobWFpbkRpY3Rpb25hcnk/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gbWFpbkRpY3Rpb25hcnkudmFsdWVzPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAodikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LmlkID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0VmFsdWVGb3JNb2RlbC5pZCB8fCBkZWZhdWx0VmFsdWVGb3JNb2RlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZURpY3Rpb25hcmllcyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeU1hcC52YWx1ZXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGljdCkgPT4gZGljdC5yZWZlcmVuY2VJZCA9PT0gbWFpbkRpY3Rpb25hcnkuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlZkRpY3Qgb2YgcmVmZXJlbmNlRGljdGlvbmFyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmVmFsdWUgPSByZWZEaWN0LnZhbHVlcz8uZmluZCgodikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYucmVmZXJlbmNlVmFsdWVzLnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChydikgPT4gcnYuaWQgPT09IHNlbGVjdGVkVmFsdWUuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZlZhbHVlICYmIHJlZkRpY3QudXVpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmQ29udHJvbElkID0gYCR7Y29udHJvbElkfV9yZWZlcmVuY2VfJHtyZWZEaWN0LnV1aWR9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsW3JlZkNvbnRyb2xJZF0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlbFBvcHVsYXRpb25IZWxwZXIubWFwRGljdGlvbmFyeVZhbHVlRHRvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZlZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICBjb250cm9sRGVmaW5pdGlvbi50eXBlID09PSBTdGVwQ29udHJvbFR5cGUuQ2hlY2tCb3hcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljRGF0YSA9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xEZWZpbml0aW9uLnNwZWNpZmljQ29udHJvbERhdGEgYXMgYW55O1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGE/Lmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSAmJlxuICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGVmYXVsdFZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgIHNwZWNpZmljRGF0YS5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZUZvck1vZGVsID0gc3BlY2lmaWNEYXRhLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZUZvck1vZGVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIG1vZGVsW2NvbnRyb2xJZF0gPSBkZWZhdWx0VmFsdWVGb3JNb2RlbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBcHBseSBwcmVjb21wbGV0aW9uIGZvciBNYW51YWxJbnB1dCBjb250cm9sc1xuICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5hcHBseVByZWNvbXBsZXRpb25Ub01vZGVsKG1vZGVsLCBmbHV4KTtcblxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVByZWNvbXBsZXRpb25Ub01vZGVsKFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGZsdXg6IGFueVtdXG4gICk6IHZvaWQge1xuICAgIGlmICghZmx1eCkgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCBzdGVwIG9mIGZsdXgpIHtcbiAgICAgIGlmIChzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29udHJvbERlZmluaXRpb24gb2Ygc2VjdGlvbi5jb250cm9scykge1xuICAgICAgICAgICAgICBjb25zdCBjb250cm9sSWQgPSBjb250cm9sRGVmaW5pdGlvbi5pZGVudGlmaWVyO1xuICAgICAgICAgICAgICBpZiAoIWNvbnRyb2xJZCkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgLy8gT25seSBwcm9jZXNzIE1hbnVhbElucHV0IGNvbnRyb2xzIHdpdGggcHJlY29tcGxldGlvbiBlbmFibGVkXG4gICAgICAgICAgICAgIGlmIChjb250cm9sRGVmaW5pdGlvbi50eXBlID09PSBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcGVjaWZpY0RhdGEgPVxuICAgICAgICAgICAgICAgICAgY29udHJvbERlZmluaXRpb24uc3BlY2lmaWNDb250cm9sRGF0YSBhcyBNYW51YWxJbnB1dENvbnRyb2xEYXRhO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhPy5pc1ByZWNvbXBsZXRhYmxlICYmXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGE/LnByZWNvbXBsZXRpb25GaWVsZElkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsW2NvbnRyb2xJZF0gPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICBtb2RlbFtjb250cm9sSWRdID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgIG1vZGVsW2NvbnRyb2xJZF0gPT09ICcnXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlVmFsdWUgPSBtb2RlbFtzcGVjaWZpY0RhdGEucHJlY29tcGxldGlvbkZpZWxkSWRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlVmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlVmFsdWUgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBkaWN0aW9uYXJ5IHZhbHVlcyAtIGV4dHJhY3QgdGhlIGRpc3BsYXkgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZVZhbHVlID09PSAnb2JqZWN0JyAmJiBzb3VyY2VWYWx1ZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbFtjb250cm9sSWRdID0gc291cmNlVmFsdWUubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxbY29udHJvbElkXSA9IHNvdXJjZVZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhcHBseURlZmF1bHRzVG9Nb2RlbChcbiAgICBmbHV4OiBhbnlbXSxcbiAgICBkaWN0aW9uYXJ5TWFwOiBNYXA8c3RyaW5nLCBEaWN0aW9uYXJ5RHRvPixcbiAgICBhdmFpbGFibGVMYW5ndWFnZXM/OiBMYW5ndWFnZVtdXG4gICk6IGFueSB7XG4gICAgY29uc3QgbW9kZWwgPSB7fTtcbiAgICBpZiAoIWZsdXgpIHJldHVybiBtb2RlbDtcblxuICAgIGZvciAoY29uc3Qgc3RlcCBvZiBmbHV4KSB7XG4gICAgICBpZiAoc3RlcC5zZWN0aW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc3RlcC5zZWN0aW9ucykge1xuICAgICAgICAgIGlmIChzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2xEZWZpbml0aW9uIG9mIHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29udHJvbElkID0gY29udHJvbERlZmluaXRpb24uaWRlbnRpZmllcjtcbiAgICAgICAgICAgICAgaWYgKCFjb250cm9sSWQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICBsZXQgZGVmYXVsdFZhbHVlRm9yTW9kZWw6IGFueSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGNvbnRyb2xEZWZpbml0aW9uLnR5cGUgPT09IFN0ZXBDb250cm9sVHlwZS5EaWN0aW9uYXJ5KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNEYXRhID1cbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xEZWZpbml0aW9uLnNwZWNpZmljQ29udHJvbERhdGEgYXMgRGljdGlvbmFyeUNvbnRyb2xEYXRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUmFkaW8gPSBzcGVjaWZpY0RhdGEuc2hvd0FzUmFkaW9CdXR0b25zTGlzdCA9PT0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQgPVxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZDtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoaXNSYWRpbykge1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVGb3JNb2RlbCA9IGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGljdGlvbmFyeVVVSURcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlRm9yTW9kZWwgPVxuICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5maW5kQW5kTWFwRGVmYXVsdFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlcyA/PyBbXVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2xEZWZpbml0aW9uLnR5cGUgPT09IFN0ZXBDb250cm9sVHlwZS5DaGVja0JveCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljRGF0YSA9XG4gICAgICAgICAgICAgICAgICBjb250cm9sRGVmaW5pdGlvbi5zcGVjaWZpY0NvbnRyb2xEYXRhIGFzIGFueTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGE/Lmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSAmJlxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVGb3JNb2RlbCA9IHNwZWNpZmljRGF0YS5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWVGb3JNb2RlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2NvbnRyb2xJZF0gPVxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlRm9yTW9kZWw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBcHBseSBwcmVjb21wbGV0aW9uIGZvciBNYW51YWxJbnB1dCBjb250cm9sc1xuICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5hcHBseVByZWNvbXBsZXRpb25Ub01vZGVsKFxuICAgICAgbW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgIGZsdXhcbiAgICApO1xuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgc3RhdGljIG1hcERpY3Rpb25hcnlWYWx1ZUR0byhcbiAgICBkdG86IGFueSxcbiAgICBhdmFpbGFibGVMYW5ndWFnZXM6IExhbmd1YWdlW11cbiAgKTogRGljdGlvbmFyeVZhbHVlIHwgbnVsbCB7XG4gICAgaWYgKCFkdG8gfHwgdHlwZW9mIGR0by5pZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB0cmFuc2xhdGlvbnNEdG8gPSBkdG8udmFsdWVUcmFuc2xhdGlvbnMgfHwgZHRvLnRyYW5zbGF0aW9ucyB8fCBbXTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGR0by5pZCxcbiAgICAgIG5hbWU6IGR0by5uYW1lID8/ICcnLFxuICAgICAgYWN0aXZlOiBkdG8uYWN0aXZlID8/IGZhbHNlLFxuICAgICAgbG9ja2VkOiBkdG8ubG9ja2VkID8/IGZhbHNlLFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICB0cmFuc2xhdGlvbnNEdG8ubWFwKCh0OiBUcmFuc2xhdGlvbkR0byk6IFRyYW5zbGF0aW9uID0+IHtcbiAgICAgICAgICBjb25zdCBsYW5nID0gYXZhaWxhYmxlTGFuZ3VhZ2VzPy5maW5kKChsKSA9PiBsLmlkID09PSB0Lmxhbmd1YWdlSWQpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsYW5ndWFnZUlkOiB0Lmxhbmd1YWdlSWQsXG4gICAgICAgICAgICBsYW5ndWFnZUlzbzogbGFuZz8uaXNvID8/ICcnLFxuICAgICAgICAgICAgdmFsdWU6IHQudmFsdWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSkgfHwgW10sXG4gICAgICBjaGlsZERpY3Rpb25hcnlJZDogZHRvLmNoaWxkRGljdGlvbmFyeUlkLFxuICAgICAgY2hpbGREaWN0aW9uYXJ5VVVJRDogZHRvLmNoaWxkRGljdGlvbmFyeVVVSUQsXG4gICAgICByZWZlcmVuY2VWYWx1ZXM6IGR0by5yZWZlcmVuY2VWYWx1ZXMgfHwgW10sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kQW5kTWFwRGVmYXVsdFZhbHVlKFxuICAgIGRpY3Rpb25hcnk6IERpY3Rpb25hcnlEdG8gfCB1bmRlZmluZWQsXG4gICAgZGVmYXVsdFZhbHVlSWQ6IG51bWJlcixcbiAgICBhdmFpbGFibGVMYW5ndWFnZXM6IExhbmd1YWdlW11cbiAgKTogRGljdGlvbmFyeVZhbHVlIHwgbnVsbCB7XG4gICAgaWYgKCFkaWN0aW9uYXJ5IHx8ICFkaWN0aW9uYXJ5LnZhbHVlcyB8fCBkZWZhdWx0VmFsdWVJZCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlRHRvID0gZGljdGlvbmFyeS52YWx1ZXMuZmluZChcbiAgICAgICh2KSA9PiB2LmlkID09PSBkZWZhdWx0VmFsdWVJZFxuICAgICk7XG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlRHRvKSB7XG4gICAgICBjb25zdCBtYXBwZWRWYWx1ZTogRGljdGlvbmFyeVZhbHVlID0ge1xuICAgICAgICBpZDogZGVmYXVsdFZhbHVlRHRvLmlkLFxuICAgICAgICBuYW1lOiBkZWZhdWx0VmFsdWVEdG8ubmFtZSxcbiAgICAgICAgYWN0aXZlOiBkZWZhdWx0VmFsdWVEdG8uYWN0aXZlLFxuICAgICAgICBsb2NrZWQ6IGRlZmF1bHRWYWx1ZUR0by5sb2NrZWQsXG4gICAgICAgIHRyYW5zbGF0aW9uczpcbiAgICAgICAgICBkZWZhdWx0VmFsdWVEdG8udmFsdWVUcmFuc2xhdGlvbnM/Lm1hcChcbiAgICAgICAgICAgICh0OiBUcmFuc2xhdGlvbkR0byk6IFRyYW5zbGF0aW9uID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbGFuZyA9IGF2YWlsYWJsZUxhbmd1YWdlcz8uZmluZChcbiAgICAgICAgICAgICAgICAobCkgPT4gbC5pZCA9PT0gdC5sYW5ndWFnZUlkXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VJZDogdC5sYW5ndWFnZUlkLFxuICAgICAgICAgICAgICAgIGxhbmd1YWdlSXNvOiBsYW5nPy5pc28gPz8gJycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHQudmFsdWUsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKSB8fCBbXSxcbiAgICAgICAgY2hpbGREaWN0aW9uYXJ5SWQ6IGRlZmF1bHRWYWx1ZUR0by5jaGlsZERpY3Rpb25hcnlJZCxcbiAgICAgICAgY2hpbGREaWN0aW9uYXJ5VVVJRDogZGVmYXVsdFZhbHVlRHRvLmNoaWxkRGljdGlvbmFyeVVVSUQsXG4gICAgICAgIHJlZmVyZW5jZVZhbHVlczogW10sXG4gICAgICB9O1xuICAgICAgcmV0dXJuIG1hcHBlZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
@@ -569,4 +569,4 @@ export var AppDataStatus;
569
569
  AppDataStatus[AppDataStatus["new"] = 0] = "new";
570
570
  AppDataStatus[AppDataStatus["finished"] = 1] = "finished";
571
571
  })(AppDataStatus || (AppDataStatus = {}));
572
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVscy9mb3Jtcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxjQUFjLENBQUM7QUFHMUUsTUFBTSxPQUFPLFNBQVM7Q0FlckI7QUFFRCxNQUFNLE9BQU8sY0FBYztJQUt6QixZQUNFLFlBQW9CLEVBQUUsRUFDdEIsWUFBb0IsRUFBRSxFQUN0QixjQUFzQixFQUFFO1FBRXhCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLElBQUksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQVksWUFBb0IsRUFBRSxFQUFFLFdBQTZCLEVBQUU7UUFDakUsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUt0QixZQUNFLFNBQWlCLEVBQUUsRUFDbkIsSUFBWSxFQUNaLFdBQTZCLEVBQUU7UUFFL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUs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QWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhYmVsSW5mbyB9IGZyb20gJy4vbGFiZWwtaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBQYXJ0bmVyIH0gZnJvbSAnLi9wYXJ0bmVyLm1vZGVsJztcbmltcG9ydCB7IERpY3Rpb25hcnlMYWJlbEluZm8gfSBmcm9tICcuLi9vdGhlcnMvZGljdGlvbmFyeS1sYWJlbC1pbmZvJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTWFwcGluZ3MgfSBmcm9tICcuL2FwcGxpY2F0aW9uLXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgQ3NzUnVsZXMgfSBmcm9tICcuLi9vdGhlcnMvdXRpbHMnO1xuaW1wb3J0IHsgRmx1eEhlbHBlciB9IGZyb20gJy4uL290aGVycy9mbHV4LWhlbHBlcic7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250cm9sLCBTZWN0aW9uRGF0YSwgU3RlcERhdGEgfSBmcm9tICcuL2ZsdXgubW9kZWwnO1xuXG5cbmV4cG9ydCBjbGFzcyBGb3JtTW9kZWwge1xuICBhcHBsaWNhdGlvbklkOiBudW1iZXI7XG4gIGFwcGxpY2F0aW9uVXVpZDogc3RyaW5nO1xuICBnZW5lcmFsRGF0YTogR2VuZXJhbERhdGFNb2RlbDtcbiAgZGVzaWduOiBEZXNpZ25Nb2RlbDtcbiAgZmx1eDogU3RlcERhdGFbXTtcbiAgYXBpOiBBcGlEYXRhO1xuICBwYXJ0bmVyczogQXBwUGFydG5lcltdO1xuICBkb2N1bWVudHM6IEFwcERvY3VtZW50W107XG4gIHN0YXR1c2VzOiBTdGF0dXNNb2RlbFtdO1xuICBkaXNwbGF5OiBEaXNwbGF5TW9kZWw7XG4gIGdlbmVyYXRlZENzczogQ3NzUnVsZXM7XG4gIG1ldGFkYXRhRmllbGRzOiBbXTtcbiAgZXJyb3JzOiB7IFt0YWJOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuICBhcHBsaWNhdGlvbk1hcHBpbmdzOiBBcHBsaWNhdGlvbk1hcHBpbmdzO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUNvbnRyb2wge1xuICBjb250cm9sSWQ6IHN0cmluZztcbiAgZmlsbFZhbHVlOiBzdHJpbmc7XG4gIGZpbGxWYWx1ZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29udHJvbElkOiBzdHJpbmcgPSAnJyxcbiAgICBmaWxsVmFsdWU6IHN0cmluZyA9ICcnLFxuICAgIGZpbGxWYWx1ZUlkOiBzdHJpbmcgPSAnJ1xuICApIHtcbiAgICB0aGlzLmNvbnRyb2xJZCA9IGNvbnRyb2xJZCB8fCAnJztcbiAgICB0aGlzLmZpbGxWYWx1ZSA9IGZpbGxWYWx1ZSB8fCAnJztcbiAgICB0aGlzLmZpbGxWYWx1ZUlkID0gZmlsbFZhbHVlSWQgfHwgJyc7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTZWN0aW9uIHtcbiAgc2VjdGlvbklkOiBzdHJpbmc7XG4gIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNlY3Rpb25JZDogc3RyaW5nID0gJycsIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdID0gW10pIHtcbiAgICB0aGlzLnNlY3Rpb25JZCA9IHNlY3Rpb25JZCB8fCAnJztcbiAgICB0aGlzLmNvbnRyb2xzID0gY29udHJvbHMgfHwgW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTdGVwIHtcbiAgc3RlcElkOiBzdHJpbmc7XG4gIHR5cGU6IG51bWJlcjtcbiAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RlcElkOiBzdHJpbmcgPSAnJyxcbiAgICB0eXBlOiBudW1iZXIsXG4gICAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW10gPSBbXVxuICApIHtcbiAgICB0aGlzLnN0ZXBJZCA9IHN0ZXBJZCB8fCAnJztcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc2VjdGlvbnMgPSBzZWN0aW9ucyB8fCBbXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUZpbGwge1xuICBtZXRhZGF0YToge1xuICAgIGFwcERhdGFJZDogc3RyaW5nO1xuICAgIGNvbmZpZ3VyYXRpb25JZDogc3RyaW5nO1xuICAgIGN1cnJlbnRTdGVwSWQ6IHN0cmluZztcbiAgICBzdGF0dXNJZDogc3RyaW5nO1xuICAgIGxhbmd1YWdlOiBzdHJpbmc7XG4gICAgb2ZmZXJJZDogc3RyaW5nO1xuICAgIGlzU3VibWl0dGVkOiBib29sZWFuO1xuICB9O1xuICBmbHV4OiBBcHBEYXRhU3RlcFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFwcERhdGFJZDogc3RyaW5nID0gJycsXG4gICAgY29uZmlndXJhdGlvbklkOiBzdHJpbmcgPSAnJyxcbiAgICBjdXJyZW50U3RlcElkOiBzdHJpbmcgPSAnJyxcbiAgICBzdGF0dXNJZDogc3RyaW5nID0gJycsXG4gICAgbGFuZ3VhZ2U6IHN0cmluZyA9ICcnLFxuICAgIGZsdXg6IEFwcERhdGFTdGVwW10gPSBbXSxcbiAgICBvZmZlcklkOiBzdHJpbmcgPSAnJyxcbiAgICBpc1N1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlXG4gICkge1xuICAgIHRoaXMubWV0YWRhdGEgPSB7XG4gICAgICBhcHBEYXRhSWQ6IGFwcERhdGFJZCB8fCAnJyxcbiAgICAgIGNvbmZpZ3VyYXRpb25JZDogY29uZmlndXJhdGlvbklkIHx8ICcnLFxuICAgICAgY3VycmVudFN0ZXBJZDogY3VycmVudFN0ZXBJZCB8fCAnJyxcbiAgICAgIHN0YXR1c0lkOiBzdGF0dXNJZCB8fCAnJyxcbiAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSB8fCAnJyxcbiAgICAgIG9mZmVySWQ6IG9mZmVySWQgfHwgJycsXG4gICAgICBpc1N1Ym1pdHRlZDogaXNTdWJtaXR0ZWQgfHwgZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLmZsdXggPSBmbHV4IHx8IFtdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEYXRhIHtcbiAgaWQ/OiBudW1iZXI7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBhcHBDb25maWd1cmF0aW9uSWQ6IG51bWJlcjtcbiAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgd2l0aE5leHRTdGVwOiBib29sZWFuO1xuICBibG9ja1ByZXZpb3VzU3RlcDogYm9vbGVhbjtcbiAgZW52OiBzdHJpbmc7XG4gIHN0YXR1czogQXBwRGF0YVN0YXR1cztcblxuICBjb25zdHJ1Y3RvcihkYXRhOiB7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgYXBwRGF0YUlkOiBzdHJpbmc7XG4gICAgYXBwQ29uZmlndXJhdGlvbklkOiBudW1iZXI7XG4gICAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgICB3aXRoTmV4dFN0ZXA6IGJvb2xlYW47XG4gICAgYmxvY2tQcmV2aW91c1N0ZXA6IGJvb2xlYW47XG4gICAgZW52OiBzdHJpbmc7XG4gIH0pIHtcbiAgICAodGhpcy5pZCA9IGRhdGEuaWQgPz8gdW5kZWZpbmVkKSwgKHRoaXMuYXBwRGF0YUlkID0gZGF0YS5hcHBEYXRhSWQgfHwgJycpO1xuICAgIHRoaXMuYXBwQ29uZmlndXJhdGlvbklkID0gZGF0YS5hcHBDb25maWd1cmF0aW9uSWQgfHwgMDtcbiAgICB0aGlzLmZpbGxEYXRhID0gZGF0YS5maWxsRGF0YTtcbiAgICB0aGlzLndpdGhOZXh0U3RlcCA9IGRhdGEud2l0aE5leHRTdGVwO1xuICAgIHRoaXMuYmxvY2tQcmV2aW91c1N0ZXAgPSBkYXRhLmJsb2NrUHJldmlvdXNTdGVwO1xuICAgIGlmICghZGF0YS5lbnYpIHtcbiAgICAgIHRoaXMuZW52ID0gJ0NvbmZpZyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW52ID0gZGF0YS5lbnY7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtTW9kZWxFeHRlbnhpb25zIHtcbiAgZm9ybU1vZGVsOiBGb3JtTW9kZWw7XG5cbiAgY29uc3RydWN0b3IobW9kZWw6IEZvcm1Nb2RlbCkge1xuICAgIHRoaXMuZm9ybU1vZGVsID0gbW9kZWw7XG4gIH1cblxuICBwdWJsaWMgZmx1eEl0ZW1zKFxuICAgIHVudGlsU3RlcElkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5tZXRhZGF0YUZpZWxkcykge1xuICAgICAgdGhpcy5mb3JtTW9kZWwubWV0YWRhdGFGaWVsZHMuZm9yRWFjaCgoZmllbGRWYWx1ZSkgPT4ge1xuICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkVmFsdWUsXG4gICAgICAgICAgZmllbGRUeXBlOiBTdGVwQ29udHJvbFR5cGUuTWV0YWRhdGEsXG4gICAgICAgICAgaWQ6IGBtZXRhZGF0YS4ke2ZpZWxkVmFsdWV9YCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZm9ybU1vZGVsPy5mbHV4KSB7XG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybU1vZGVsLmRvY3VtZW50cz8ubGVuZ3RoID4gMCkge1xuICAgICAgaXRlbXMgPSBpdGVtcy5jb25jYXQodGhpcy5leHRyYWN0RG9jdW1lbnRzRmx1eEl0ZW1zKHRoaXMuZm9ybU1vZGVsLmZsdXgpKTtcbiAgICB9XG4gICAgaXRlbXMgPSBpdGVtcy5jb25jYXQoXG4gICAgICB0aGlzLmV4dHJhY3RTZWN0aW9uc0ZsdXhJdGVtcyh0aGlzLmZvcm1Nb2RlbC5mbHV4LCB1bnRpbFN0ZXBJZGVudGlmaWVyKVxuICAgICk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cbiAgcHJpdmF0ZSBleHRyYWN0U2VjdGlvbnNGbHV4SXRlbXMoXG4gICAgc3RlcHM6IFN0ZXBEYXRhW10sXG4gICAgdW50aWxTdGVwSWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gICk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgc3RlcCBvZiBzdGVwcykge1xuICAgICAgaWYgKHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgaWYgKHVudGlsU3RlcElkZW50aWZpZXIgJiYgc3RlcC5pZGVudGlmaWVyID09PSB1bnRpbFN0ZXBJZGVudGlmaWVyKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RlcC5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgIHNlY3Rpb24uY29udHJvbHMuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLkJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgICBTdGVwQ29udHJvbFR5cGUuTmV3Um93LFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLkZsdXhJbmZvLFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLlBhcmFncmFwaCxcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGNvbnRyb2wudHlwZSkgPT0gZmFsc2VcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtzZWN0aW9uLnRpdGxlfSAtPiAke2NvbnRyb2wudGl0bGV9YCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogY29udHJvbC50eXBlLFxuICAgICAgICAgICAgICAgICAgbWFudWxJbnB1dENvbnRyb2xUeXBlOiBjb250cm9sLnNwZWNpZmljQ29udHJvbERhdGE/LnR5cGUsXG4gICAgICAgICAgICAgICAgICBpZDogY29udHJvbC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdERvY3VtZW50c0ZsdXhJdGVtcyhzdGVwRGF0YTogU3RlcERhdGFbXSk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgc3RlcERhdGE/LmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIGlmIChzdGVwLnR5cGUgPT09IEZsdXhUeXBlLlVwbG9hZERvY3VtZW50KSB7XG4gICAgICAgIHN0ZXAuY29uZmlnPy5kb2N1bWVudHM/LmZvckVhY2goXG4gICAgICAgICAgKGRvY3VtZW50OiB7IGRvY3VtZW50SWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudD8uZG9jdW1lbnRJZCxcbiAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsXG4gICAgICAgICAgICAgICAgKSB8fCBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICBmaWVsZFR5cGU6IHN0ZXAudHlwZSxcbiAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5kb2N1bWVudElkXG4gICAgICAgICAgICAgICAgPyBgdXBsb2FkLiR7ZG9jdW1lbnQuZG9jdW1lbnRJZH1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdGVwLnR5cGV9LiR7c3RlcC5uYW1lfWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudHlwZSA9PT0gRmx1eFR5cGUuR2VuZXJhdGVEb2N1bWVudCkge1xuICAgICAgICBzdGVwLmNvbmZpZz8uZ2VuZXJhdGVkRG9jdW1lbnRzPy5mb3JFYWNoKFxuICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkTmFtZTogYCR7c3RlcC5uYW1lfSAtPiAke1xuICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChkb2N1bWVudD8uaWQsIHRoaXMuZm9ybU1vZGVsKSB8fFxuICAgICAgICAgICAgICAgIGRvY3VtZW50Lm5hbWVcbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICBpZDogZG9jdW1lbnQ/LmlkXG4gICAgICAgICAgICAgICAgPyBgZ2VuZXJhdGUuJHtkb2N1bWVudC5pZH1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdGVwLnR5cGV9LiR7c3RlcC5uYW1lfWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudHlwZSA9PT0gRmx1eFR5cGUuU2lnbikge1xuICAgICAgICBpZiAoc3RlcC5jb25maWc/LmRvY3VtZW50cykge1xuICAgICAgICAgIHN0ZXAuY29uZmlnPy5kb2N1bWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ/LmlkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbFxuICAgICAgICAgICAgICAgICAgKSB8fCBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgZmllbGRUeXBlOiBzdGVwLnR5cGUsXG4gICAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5pZFxuICAgICAgICAgICAgICAgICAgPyBgc2lnbi4ke2RvY3VtZW50LmlkfWBcbiAgICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0ZXAuY29uZmlnPy5zeXN0ZW1Eb2N1bWVudHMpIHtcbiAgICAgICAgICBzdGVwLmNvbmZpZz8uc3lzdGVtRG9jdW1lbnRzLmZvckVhY2goXG4gICAgICAgICAgICAoZG9jdW1lbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7XG4gICAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWxcbiAgICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uaWRcbiAgICAgICAgICAgICAgICAgID8gYHN5c3RlbS4ke2RvY3VtZW50LmlkfWBcbiAgICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIGZsdXhJdGVtc1dpdGhHZXRBcGlNZXRob2RzKFxuICAgIGV4Y2x1ZGVkTWV0aG9kSWQ6IHN0cmluZyA9ICcnXG4gICk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtcyA9IHRoaXMuZmx1eEl0ZW1zKCk7XG4gICAgdGhpcy5mb3JtTW9kZWwuYXBpLmdldEl0ZW1zLmZvckVhY2goKGFwaU1ldGhvZCkgPT4ge1xuICAgICAgaWYgKGFwaU1ldGhvZC5pZCAhPT0gZXhjbHVkZWRNZXRob2RJZCkge1xuICAgICAgICBhcGlNZXRob2QuZmllbGRzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZE5hbWU6IGAke2FwaU1ldGhvZC5tZXRob2R9IC0+ICR7Zi5maWVsZE5hbWV9YCxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlLkFwaU1ldGhvZEZpZWxkLFxuICAgICAgICAgICAgaWQ6IGYuaWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIG9mZmVyTWV0aG9kc0l0ZW1zKCk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgbGV0IG9mZmVyTWV0aG9kc0lkczogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLmZvcm1Nb2RlbC5wYXJ0bmVycz8uZm9yRWFjaCgocCkgPT4ge1xuICAgICAgcC5nZW5lcmFsU2V0dGluZ3Mub2ZmZXJzPy5mb3JFYWNoKChvKSA9PiB7XG4gICAgICAgIG9mZmVyTWV0aG9kc0lkcy5wdXNoKG8uYXBpTWV0aG9kSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBvZmZlck1ldGhvZHNJZHMgPSBbLi4ubmV3IFNldChvZmZlck1ldGhvZHNJZHMpXTtcblxuICAgIGNvbnN0IGFsbEFwaUl0ZW1zID0gW1xuICAgICAgLi4udGhpcy5mb3JtTW9kZWwuYXBpLmdldEl0ZW1zLFxuICAgICAgLi4udGhpcy5mb3JtTW9kZWwuYXBpLnZhbGlkYXRpb25JdGVtcyxcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS5zZW5kSXRlbXMsXG4gICAgXTtcblxuICAgIG9mZmVyTWV0aG9kc0lkcy5mb3JFYWNoKChtZXRob2RJZCkgPT4ge1xuICAgICAgY29uc3QgYXBpTWV0aG9kID0gYWxsQXBpSXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gbWV0aG9kSWQpO1xuICAgICAgaWYgKGFwaU1ldGhvZCkge1xuICAgICAgICBhcGlNZXRob2QuZmllbGRzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZE5hbWU6IGAke2FwaU1ldGhvZC5tZXRob2R9IC0+ICR7Zi5maWVsZE5hbWV9YCxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogRmx1eFR5cGUuVmlld09mZmVyLFxuICAgICAgICAgICAgaWQ6IGBhcGlfJHthcGlNZXRob2QuaWR9IC0+ICR7Zi5pZH1gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBpRGF0YSB7XG4gIGdldEl0ZW1zOiBHZXRBcGlJdGVtW107XG4gIHZhbGlkYXRpb25JdGVtczogQXBpSXRlbVtdO1xuICBzZW5kSXRlbXM6IEFwaUl0ZW1bXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwaUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgZmllbGRzOiBNZXRob2RGaWVsZFtdO1xuICB0eXBlOiBBcGlNZXRob2RUeXBlO1xufVxuXG5leHBvcnQgY2xhc3MgR2V0QXBpSXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBmaWVsZHM6IEdldE1ldGhvZEZpZWxkW107XG4gIHR5cGU6IEFwaU1ldGhvZFR5cGU7XG59XG5leHBvcnQgY2xhc3MgRGVzaWduTW9kZWwge1xuICBmb250czogRm9udENvbmZpZ1tdID0gW107XG4gIGJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XG4gIG90cEFjdGlvbkJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XG4gIGNvbXBvbmVudHM6IENvbXBvbmVudENvbmZpZ1tdID0gW107XG4gIHRhYmxlczogVGFibGVDb25maWdbXSA9IFtdO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgYnV0dG9uc0hvcml6b250YWxQb3NpdGlvbjogc3RyaW5nO1xuICBidXR0b25zVmVydGljYWxQb3NpdGlvbjogc3RyaW5nO1xuICBtYXhXaWR0aDogc3RyaW5nO1xuICBtYXJnaW5MZWZ0OiBzdHJpbmc7XG4gIG1hcmdpblJpZ2h0OiBzdHJpbmc7XG4gIG1hcmdpblRvcDogc3RyaW5nO1xuICBtYXJnaW5Cb3R0b206IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLmZvbnRzKSB7XG4gICAgICAgIHRoaXMuZm9udHMgPSBkYXRhLmZvbnRzLm1hcCgoZm9udDogYW55KSA9PiBuZXcgRm9udENvbmZpZyhmb250KSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmJ1dHRvbnMpIHtcbiAgICAgICAgdGhpcy5idXR0b25zID0gZGF0YS5idXR0b25zLm1hcChcbiAgICAgICAgICAoYnV0dG9uOiBhbnkpID0+IG5ldyBCdXR0b25Db25maWcoYnV0dG9uKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jb21wb25lbnRzKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50cyA9IGRhdGEuY29tcG9uZW50cy5tYXAoXG4gICAgICAgICAgKGNvbXBvbmVudDogYW55KSA9PiBuZXcgQ29tcG9uZW50Q29uZmlnKGNvbXBvbmVudClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEudGFibGVzKSB7XG4gICAgICAgIHRoaXMudGFibGVzID0gZGF0YS50YWJsZXMubWFwKCh0YWJsZTogYW55KSA9PiBuZXcgVGFibGVDb25maWcodGFibGUpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5idXR0b25zSG9yaXpvbnRhbFBvc2l0aW9uID0gZGF0YS5ob3Jpem9udGFsUG9zaXRpb247XG4gICAgICB0aGlzLmJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uID0gZGF0YS52ZXJ0aWNhbFBvc2l0aW9uO1xuICAgICAgdGhpcy5tYXhXaWR0aCA9IGRhdGEubWF4V2lkdGg7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb250Q29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGZvbnRXZWlnaHQ6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseTtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmZvbnRXZWlnaHQgPSBkYXRhLmZvbnRXZWlnaHQ7XG4gICAgICB0aGlzLnRleHRBbGlnbiA9IGRhdGEudGV4dEFsaWduO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gIGJvcmRlclJhZGl1czogc3RyaW5nO1xuICBob3Jpem9udGFsUGFkZGluZzogc3RyaW5nO1xuICB2ZXJ0aWNhbFBhZGRpbmc6IHN0cmluZztcbiAgZm9udEZhbWlseTogc3RyaW5nO1xuICBmb250U2l6ZTogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHdpZHRoOiBzdHJpbmc7XG4gIGhlaWdodDogc3RyaW5nO1xuICBtaW5XaWR0aDogc3RyaW5nO1xuICBtaW5IZWlnaHQ6IHN0cmluZztcbiAgbWF4V2lkdGg6IHN0cmluZztcbiAgbWF4SGVpZ2h0OiBzdHJpbmc7XG4gIGhvcml6b250YWxQb3NpdGlvbj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmNvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyID0gZGF0YS5ib3JkZXI7XG4gICAgICB0aGlzLmJvcmRlckNvbG9yID0gZGF0YS5ib3JkZXJDb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyUmFkaXVzID0gZGF0YS5ib3JkZXJSYWRpdXM7XG4gICAgICB0aGlzLmhvcml6b250YWxQYWRkaW5nID0gZGF0YS5ob3Jpem9udGFsUGFkZGluZztcbiAgICAgIHRoaXMudmVydGljYWxQYWRkaW5nID0gZGF0YS52ZXJ0aWNhbFBhZGRpbmc7XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICAgIHRoaXMud2lkdGggPSBkYXRhLndpZHRoO1xuICAgICAgdGhpcy5oZWlnaHQgPSBkYXRhLmhlaWdodDtcbiAgICAgIHRoaXMubWluV2lkdGggPSBkYXRhLm1pbldpZHRoO1xuICAgICAgdGhpcy5taW5IZWlnaHQgPSBkYXRhLm1pbkhlaWdodDtcbiAgICAgIHRoaXMubWF4V2lkdGggPSBkYXRhLm1heFdpZHRoO1xuICAgICAgdGhpcy5tYXhIZWlnaHQgPSBkYXRhLm1heEhlaWdodDtcbiAgICAgIHRoaXMuaG9yaXpvbnRhbFBvc2l0aW9uID0gZGF0YS5ob3Jpem9udGFsUG9zaXRpb247XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbmZpZyB7XG4gIGhlYWRlckNvbmZpZzogSGVhZGVyQ29uZmlnO1xuICBkZXRhaWxDb25maWc6IERldGFpbENvbmZpZztcblxuICBjb25zdHJ1Y3Rvcih0YWJsZT86IGFueSkge1xuICAgIGlmICh0YWJsZSkge1xuICAgICAgdGhpcy5oZWFkZXJDb25maWcgPSB0YWJsZS5oZWFkZXJDb25maWc7XG4gICAgICB0aGlzLmRldGFpbENvbmZpZyA9IHRhYmxlLmRldGFpbENvbmZpZztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhlYWRlckNvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHRleHRDb2xvcjogc3RyaW5nO1xuICBib3JkZXI6IHN0cmluZztcbiAgYm9yZGVyQ29sb3I6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgbGV0dGVyU3BhY2luZzogc3RyaW5nO1xuICBwYWRkaW5nOiBzdHJpbmc7XG4gIGJvcmRlckNvbGxhcHNlOiBzdHJpbmc7XG4gIGJvcmRlclNwYWNpbmc6IHN0cmluZztcbiAgdmVydGljYWxBbGlnbjogc3RyaW5nO1xuICB3aWR0aDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnRleHRDb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseTtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgICAgdGhpcy5wYWRkaW5nID0gZGF0YS5wYWRkaW5nO1xuICAgICAgdGhpcy5ib3JkZXJDb2xsYXBzZSA9IGRhdGEuYm9yZGVyQ29sbGFwc2U7XG4gICAgICB0aGlzLmJvcmRlclNwYWNpbmcgPSBkYXRhLmJvcmRlclNwYWNpbmc7XG4gICAgICB0aGlzLnZlcnRpY2FsQWxpZ24gPSBkYXRhLnZlcnRpY2FsQWxpZ247XG4gICAgICB0aGlzLndpZHRoID0gZGF0YS53aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZXRhaWxDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcbiAgcGFkZGluZzogc3RyaW5nO1xuICByb3dCb3JkZXI6IHN0cmluZztcbiAgcm93Qm9yZGVyQ29sb3I6IHN0cmluZztcbiAgaG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgdmVydGljYWxBbGlnbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnkpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5uYW1lID0gZGF0YS5uYW1lO1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMudGV4dENvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmxldHRlclNwYWNpbmcgPSBkYXRhLmxldHRlclNwYWNpbmc7XG4gICAgICB0aGlzLnBhZGRpbmcgPSBkYXRhLnBhZGRpbmc7XG4gICAgICB0aGlzLnJvd0JvcmRlciA9IGRhdGEucm93Qm9yZGVyO1xuICAgICAgdGhpcy5ob3ZlckJhY2tncm91bmRDb2xvciA9IGRhdGEuaG92ZXJCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnZlcnRpY2FsQWxpZ24gPSBkYXRhLnZlcnRpY2FsQWxpZ247XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICBib3JkZXI6IHN0cmluZztcbiAgYm9yZGVyUmFkaXVzOiBzdHJpbmc7XG4gIGxhYmVsU3R5bGU6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBib3JkZXJDb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgd2VpZ2h0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdGFydENvbG9yPzogc3RyaW5nO1xuICBlbmRDb2xvcj86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnkpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5uYW1lID0gZGF0YS5uYW1lO1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyID0gZGF0YS5ib3JkZXI7XG4gICAgICB0aGlzLmJvcmRlclJhZGl1cyA9IGRhdGEuYm9yZGVyUmFkaXVzO1xuICAgICAgdGhpcy5sYWJlbFN0eWxlID0gZGF0YS5sYWJlbFN0eWxlO1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMuY29sb3IgPSBkYXRhLmNvbG9yO1xuICAgICAgdGhpcy53ZWlnaHQgPSBkYXRhLndlaWdodDtcbiAgICAgIHRoaXMuc3RhcnRDb2xvciA9IGRhdGEuc3RhcnRDb2xvcjtcbiAgICAgIHRoaXMuZW5kQ29sb3IgPSBkYXRhLmVuZENvbG9yO1xuICAgICAgdGhpcy5oZWlnaHQgPSBkYXRhLmhlaWdodDtcbiAgICB9XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBEaXNwbGF5TW9kZWwge1xuICBzZWN0aW9uczogU2VjdGlvbkRhdGFbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEdlbmVyYWxEYXRhTW9kZWwge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwcGxpY2F0aW9uVHlwZTogbnVtYmVyO1xuICBsYW5ndWFnZXM6IHN0cmluZ1tdO1xuICBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcbiAgY29udGludWVXaXRoT2ZmZXI6IGJvb2xlYW47XG4gIHNob3dDb3VudGVyU3RlcDogYm9vbGVhbjtcbiAgc2hvd05hbWVTdGVwOiBib29sZWFuO1xuICBzaG93QWxsU3RlcHM6IGJvb2xlYW47XG4gIHNob3dQcm9ncmVzc0JhcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3Jtc1N0YXRlIHtcbiAgZGF0YTogRm9ybU1vZGVsO1xuICBzZWxlY3RlZFRhYjogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGNhbkdldEZyb21Qcm9kOiBib29sZWFuO1xuICBjYW5HZXRGcm9tVGVzdDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluUHJvZDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluVGVzdDogYm9vbGVhbjtcbiAgYXBwbGljYXRpb25VdWlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsRm9ybXVsYXJlU3RhdGU6IEZvcm1zU3RhdGUgPSB7XG4gIGRhdGE6IHtcbiAgICBhcHBsaWNhdGlvbklkOiAwLFxuICAgIGFwcGxpY2F0aW9uVXVpZDogJycsXG4gICAgZ2VuZXJhbERhdGE6IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYXBwbGljYXRpb25UeXBlOiAwLFxuICAgICAgbGFuZ3VhZ2VzOiBbXSxcbiAgICAgIGRlZmF1bHRMYW5ndWFnZTogJycsXG4gICAgICBjb250aW51ZVdpdGhPZmZlcjogZmFsc2UsXG4gICAgICBzaG93Q291bnRlclN0ZXA6IGZhbHNlLFxuICAgICAgc2hvd05hbWVTdGVwOiBmYWxzZSxcbiAgICAgIHNob3dBbGxTdGVwczogZmFsc2UsXG4gICAgICBzaG93UHJvZ3Jlc3NCYXI6IGZhbHNlLFxuICAgIH0sXG4gICAgZGVzaWduOiB7XG4gICAgICBmb250czogW10sXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIG90cEFjdGlvbkJ1dHRvbnM6IFtdLFxuICAgICAgY29tcG9uZW50czogW10sXG4gICAgICB0YWJsZXM6IFtdLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnJyxcbiAgICAgIGZvbnRTaXplOiAnJyxcbiAgICAgIGJ1dHRvbnNIb3Jpem9udGFsUG9zaXRpb246ICcnLFxuICAgICAgYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb246ICcnLFxuICAgICAgbWF4V2lkdGg6ICcnLFxuICAgICAgbWFyZ2luTGVmdDogJycsXG4gICAgICBtYXJnaW5SaWdodDogJycsXG4gICAgICBtYXJnaW5Ub3A6ICcnLFxuICAgICAgbWFyZ2luQm90dG9tOiAnJyxcbiAgICB9LFxuICAgIGZsdXg6IFtdLFxuICAgIGFwaTogeyBnZXRJdGVtczogW10sIHZhbGlkYXRpb25JdGVtczogW10sIHNlbmRJdGVtczogW10gfSxcbiAgICBwYXJ0bmVyczogW10sXG4gICAgZG9jdW1lbnRzOiBbXSxcbiAgICBzdGF0dXNlczogW10sXG4gICAgZGlzcGxheToge1xuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgIH0sXG4gICAgZ2VuZXJhdGVkQ3NzOiB7fSxcbiAgICBtZXRhZGF0YUZpZWxkczogW10sXG4gICAgZXJyb3JzOiB7fSxcbiAgICBhcHBsaWNhdGlvbk1hcHBpbmdzOiB7XG4gICAgICBhcHBsaWNhdGlvblR5cGVJZDogMCxcbiAgICAgIGNvbHVtbk1hcHBpbmdzOiBbXSxcbiAgICB9LFxuICB9LFxuICBzZWxlY3RlZFRhYjogJ0RhdGUgZ2VuZXJhbGUnLFxuICBjYW5HZXRGcm9tUHJvZDogZmFsc2UsXG4gIGNhbkdldEZyb21UZXN0OiBmYWxzZSxcbiAgY2FuUHVibGlzaEluUHJvZDogZmFsc2UsXG4gIGNhblB1Ymxpc2hJblRlc3Q6IGZhbHNlLFxuICBhcHBsaWNhdGlvblV1aWQ6ICcnLFxuICB2ZXJzaW9uOiAnJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyRGljdGlvbmFyeU1hcHBpbmcge1xuICBkaWN0aW9uYXJ5SWQ6IHN0cmluZztcbiAgZGljdGlvbmFyeU5hbWU6IHN0cmluZztcbiAgbWFwcGluZ3M6IFBhcnRuZXJLZXlWYWx1ZUl0ZW1bXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJTZXR0aW5ncyB7XG4gIHBhcnRuZXJNZXRob2RzQXBpOiBQYXJ0bmVyTWV0aG9kQXBpW10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RBcGkge1xuICBtZXRob2RJZDogc3RyaW5nO1xuICBtZXRob2RUeXBlOiBzdHJpbmc7XG4gIGNhbGxUeXBlOiBzdHJpbmc7XG4gIGJvZHlDb25maWd1cmF0aW9uOiBQYXJ0bmVyTWV0aG9kQm9keTtcbiAgcmVzcG9uc2VDb25maWd1cmF0aW9uOiBQYXJ0bmVyTWV0aG9kUmVzcG9uc2U7XG4gIHVybENvbmZpZ3VyYXRpb246IFBhcnRuZXJNZXRob2RVcmw7XG4gIGF1dGhWYWx1ZTogUGFydG5lck1ldGhvZEFwaUF1dGg7XG4gIGhlYWRlcnM6IFBhcnRuZXJLZXlWYWx1ZUl0ZW1bXTtcbiAgLy8gSU5CT1VORC1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gIGluYm91bmRNZXRob2RUeXBlPzogSW5ib3VuZE1ldGhvZFR5cGU7IC8vIFR5cGUgb2YgSU5CT1VORCBtZXRob2Rcbn1cblxuZXhwb3J0IGVudW0gSW5ib3VuZE1ldGhvZFR5cGUge1xuICBTdGFuZGFyZCA9ICdTdGFuZGFyZCcsXG4gIFN0YXR1c01ldGhvZCA9ICdTdGF0dXNNZXRob2QnLFxufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZEFwaUF1dGgge1xuICBoZWFkZXJOYW1lOiBzdHJpbmcgfCBudWxsO1xuICBhcGlLZXk6IHN0cmluZyB8IG51bGw7XG4gIGF1dGhUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyS2V5VmFsdWVJdGVtIHtcbiAga2V5OiBzdHJpbmc7XG4gIGtleU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgUGFydG5lclN0YXR1c01hcHBpbmcge1xuICBwYXJ0bmVyU3RhdHVzOiBzdHJpbmc7XG4gIGFwcFN0YXR1czogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZFVybCB7XG4gIHVybFZhbHVlOiBzdHJpbmc7XG4gIHRpbWVvdXQ6IG51bWJlcjtcbiAgdGVzdFVybDogc3RyaW5nO1xuICBwcm9kVXJsOiBzdHJpbmc7XG4gIHBhcmFtZXRlck1hcHBpbmdzOiBVcmxNYXBGaWVsZHNbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RSZXNwb25zZSB7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gIGpzb25WYWx1ZTogc3RyaW5nO1xuICByZXNwb25zZU1hcEZpZWxkczogRmllbGRzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgVXJsTWFwRmllbGRzIHtcbiAgdXJsUGFyYW1ldGVyOiBzdHJpbmc7XG4gIGZsdXhGaWVsZDogc3RyaW5nO1xuICBmbHV4RmllbGRJZDogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RCb2R5IHtcbiAgY29udGVudFR5cGU6IHN0cmluZztcbiAganNvblZhbHVlOiBzdHJpbmc7XG4gIGJvZHlNYXBGaWVsZHM6IEZpZWxkc01hcHBpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEZpZWxkc01hcHBpbmcge1xuICBwYXJ0bmVyRmllbGQ6IHN0cmluZztcbiAgZmx1eEZpZWxkSWQ6IHN0cmluZztcbiAgbWV0aG9kRmllbGRJZDogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIE1ldGhvZEZpZWxkIHtcbiAgaWQ6IHN0cmluZztcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlIHwgRmx1eFR5cGUgfCBzdHJpbmc7XG4gIG1hbnVsSW5wdXRDb250cm9sVHlwZT86IE1hbnVhbElucHV0Q29udHJvbFR5cGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNZXRob2RGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpZWxkTmFtZTogc3RyaW5nO1xuICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZSB8IEZsdXhUeXBlIHwgc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNYW51YWxJbnB1dENvbnRyb2xEYXRhIHtcbiAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZTtcbiAgaXNTaW1wbGVWYWxpZGF0aW9uOiBib29sZWFuO1xuICBpc0FwaVZhbGlkYXRpb246IGJvb2xlYW47XG4gIGFwaVZhbGlkYXRpb25NZXRob2Q/OiBzdHJpbmcgfCBudWxsO1xuICBhcGlWYWxpZGF0aW9uUGFydG5lcj86IHN0cmluZyB8IG51bGw7XG4gIGFsbG93ZWRDaGFyYWN0ZXJzPzogc3RyaW5nO1xuICBtYXhDaGFyYWN0ZXJzPzogbnVtYmVyO1xuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgbWF4VmFsdWU/OiBudW1iZXI7XG4gIGFsbG93T25seVBhc3Q/OiBib29sZWFuO1xuICBhbGxvd09ubHlGdXR1cmU/OiBib29sZWFuO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcmFncmFwaENvbnRyb2xEYXRhIHtcbiAgZGVzY3JpcHRpb25UcmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgaXNNYW5kYXRvcnlUcmFuc2xhdGlvbnM/OiBMYWJlbEluZm9bXTtcbn1cblxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlDb250cm9sRGF0YSB7XG4gIGRpY3Rpb25hcnlVVUlEOiBzdHJpbmc7XG4gIHNob3dBc1JhZGlvQnV0dG9uc0xpc3Q6IGJvb2xlYW47XG4gIHJlbGF0ZWREaWN0aW9uYXJpZXNUcmFuc2xhdGlvbnM6IERpY3Rpb25hcnlMYWJlbEluZm9bXTtcbiAgZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkPzogbnVtYmVyIHwgbnVsbDtcbiAgc2VsZWN0ZWRSZWxhdGVkRGljdGlvbmFyaWVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGVudW0gRmx1eFR5cGUge1xuICBLeWMgPSAwLFxuICBFbWFpbCA9IDEsXG4gIFBob25lID0gMixcbiAgU2lnbiA9IDMsXG4gIFN0YXR1cyA9IDQsXG4gIEN1c3RvbSA9IDUsXG4gIFBhdXNlID0gNixcbiAgSWRTY2FuID0gNyxcbiAgR2VuZXJhdGVEb2N1bWVudCA9IDgsXG4gIEFjdGlvbiA9IDksXG4gIFVwbG9hZERvY3VtZW50ID0gMTAsXG4gIERvd25sb2FkRG9jdW1lbnQgPSAxMSxcbiAgVmlld09mZmVyID0gMTIsXG4gIEZpbmFsID0gMTMsXG4gIFZpZXdEb2N1bWVudCA9IDE0LFxuICBORVRPUElBID0gMTUsXG4gIEVVUExBVEVTQyA9IDE2LFxuICBPcGVuQmFua2luZyA9IDE3LFxufVxuXG5leHBvcnQgZW51bSBTZWN0aW9uVHlwZSB7XG4gIFByZXNlbnRhdGlvbixcbiAgQ29sbGVjdCxcbiAgRGlzcGxheSxcbn1cblxuZXhwb3J0IGVudW0gU3RlcENvbnRyb2xUeXBlIHtcbiAgTWFudWFsSW5wdXQgPSAwLFxuICBQYXJhZ3JhcGggPSAxLFxuICBDaGVja0JveCA9IDIsXG4gIERpY3Rpb25hcnkgPSAzLFxuICBCdXR0b25zID0gNCxcbiAgRmx1eEluZm8gPSA1LFxuICBOZXdSb3cgPSA2LFxuICBNZXRhZGF0YSA9IDcsXG4gIEFwaU1ldGhvZEZpZWxkID0gOCxcbiAgRG93bmxvYWREb2N1bWVudHMgPSA5LFxuICBWaWV3RG9jdW1lbnRzID0gMTAsXG4gIFVwbG9hZERvY3VtZW50cyA9IDExLFxufVxuXG5leHBvcnQgZW51bSBEaW1lbnNpb25UeXBlIHtcbiAgUGVyY2VudGFnZSxcbiAgUGl4ZWxzLFxufVxuXG5leHBvcnQgZW51bSBNYW51YWxJbnB1dENvbnRyb2xUeXBlIHtcbiAgVGV4dCxcbiAgTnVtZXJpYyxcbiAgRGF0ZVRpbWUsXG4gIEVtYWlsLFxuICBQaG9uZSxcbiAgVGV4dEFyZWEsXG59XG5cbmV4cG9ydCBlbnVtIFNpZ25hdHVyZVR5cGUge1xuICBFbGVjdHJvbmljLFxuICBIYW5kd3JpdHRlbixcbiAgUXVhbGlmaWVkLFxufVxuXG5leHBvcnQgZW51bSBBcGlNZXRob2RUeXBlIHtcbiAgR2V0RGF0YSxcbiAgU2VuZERhdGEsXG4gIFZhbGlkYXRpb24sXG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0dXNNb2RlbCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbiAgZmluYWw6IGJvb2xlYW47XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGVudW1pcmU6IHN0cmluZyxcbiAgICBvcmRpbmU6IG51bWJlcixcbiAgICBmaW5hbDogYm9vbGVhbixcbiAgICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXVxuICApIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5uYW1lID0gZGVudW1pcmU7XG4gICAgdGhpcy5vcmRlciA9IG9yZGluZTtcbiAgICB0aGlzLmZpbmFsID0gZmluYWw7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGlzQWN0aXZlO1xuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0YXR1c0FjdGlvbiB7XG4gIGlkPzogc3RyaW5nO1xuICBhY3Rpb25UaXRsZTogc3RyaW5nO1xuICBhcGlNZXRob2RJZDogc3RyaW5nO1xuICBwYXJ0bmVySWRzOiBudW1iZXJbXSA9IFtdO1xufVxuXG5leHBvcnQgY2xhc3MgUHJlc2VudGF0aW9uUGFyYWdyYXBoQ29udHJvbCBleHRlbmRzIFByZXNlbnRhdGlvbkNvbnRyb2wge1xuICBkZXNjcmlwdGlvblRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG59XG5cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXIgZXh0ZW5kcyBQYXJ0bmVyIHtcbiAgZG9jdW1lbnRzPzogQXBwUGFydG5lckRvY3VtZW50c1tdID0gW107XG4gIGdlbmVyYWxTZXR0aW5nczogQXBwUGFydG5lckdlbmVyYWxTZXR0aW5ncztcbiAgcGFydG5lclNldHRpbmdzOiBQYXJ0bmVyU2V0dGluZ3M7XG4gIHBhcnRuZXJEaWN0aW9uYXJ5TWFwcGluZzogUGFydG5lckRpY3Rpb25hcnlNYXBwaW5nW107XG4gIHBhcnRuZXJTdGF0dXNNYXBwaW5nOiBQYXJ0bmVyU3RhdHVzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwUGFydG5lckdlbmVyYWxTZXR0aW5ncyB7XG4gIGFjY2VwdE11bHRpcGxlT2ZmZXJzOiBib29sZWFuO1xuICBvZmZlcnM6IEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NPZmZlcltdID0gW107XG4gIHJlY2VpdmVkT2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzUmVjZWl2ZWRPZmZlcltdID0gW107XG4gIHZhbGFiaWxpdHk6IG51bWJlcjtcbiAgaGFzQ3VzdG9tVmFsYWJpbGl0eTogYm9vbGVhbjtcbiAgc3RhdHVzV29ya2VyU2V0dGluZ3M6IEFwcFN0YXR1c1dvcmtlclNldHRpbmdzO1xufVxuZXhwb3J0IGNsYXNzIEFwcFN0YXR1c1dvcmtlclNldHRpbmdzIHtcbiAgbWF4UmV0cmllczogbnVtYmVyO1xuICBsb29wSW50ZXJ2YWw6IG51bWJlcjtcbn1cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXIge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwaU1ldGhvZElkOiBzdHJpbmc7XG4gIGlkZW50aWZpZXI6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgY3VzdG9tVmFsYWJpbGl0eT86IG51bWJlcjtcbiAgYXBpTWV0aG9kRmllbGRzPzogYW55W10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NSZWNlaXZlZE9mZmVyIHtcbiAgaWQ6IHN0cmluZztcbiAgb2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXJbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJEb2N1bWVudHMge1xuICBpZDogc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIGRvY3VtZW50TmFtZTogc3RyaW5nO1xuICBhcGlNZXRob2RJZDogc3RyaW5nO1xuICBpc0VkaXRNb2RlOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRG9jdW1lbnQge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG4gIGdlbmVyYXRlZEJ5QXBwOiBib29sZWFuO1xuICBpc1N0YXRpYzogYm9vbGVhbjtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIHZlcnNpb25zOiBBcHBEb2N1bWVudFZlcnNpb25bXSA9IFtdO1xufVxuZXhwb3J0IGNsYXNzIFNpZ25lZERvY3VtZW50IGV4dGVuZHMgQXBwRG9jdW1lbnQge1xuICBzb3VyY2VEb2N1bWVudHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcERvY3VtZW50RXh0ZW5kZWQgZXh0ZW5kcyBBcHBEb2N1bWVudCB7XG4gIGlzQXBpRG9jdW1lbnQ/OiBib29sZWFuOyBcbn1cblxuZXhwb3J0IGNsYXNzIEFwcERvY3VtZW50VmVyc2lvbiB7XG4gIGlkOiBudW1iZXI7XG4gIGFwcGxpY2F0aW9uSWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgdmFsaWRGcm9tOiBEYXRlO1xuICB2YWxpZFRvOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBpc0VkaXRNb2RlOiBib29sZWFuO1xuICBkYXRhOiBzdHJpbmcgfCBudWxsO1xuICBmbHV4Qm9va21hcmtzOiBCb29rbWFya01hcHBpbmdbXTtcbiAgaXNUZW1wb3Jhcnk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBCb29rbWFya01hcHBpbmcge1xuICBib29rbWFyazogc3RyaW5nO1xuICBjb250cm9sSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yVHJhbnNsYXRpb25zIHtcbiAgY29kZTogc3RyaW5nO1xuICB0cmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xufVxuXG5leHBvcnQgY2xhc3MgVXBsb2FkRG9jdW1lbnQge1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGZpbGVEYXRhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBVcGxvYWREb2N1bWVudERldGFpbHMgZXh0ZW5kcyBVcGxvYWREb2N1bWVudCB7XG4gIGRvY3VtZW50TmFtZTogc3RyaW5nO1xuICBkb2N1bWVudEV4dGVuc2lvbnM6IHN0cmluZztcbiAgZG9jdW1lbnRNYXhTaXplOiBudW1iZXI7XG4gIGlzTWFuZGF0b3J5OiBib29sZWFuO1xuICBpc1VwbG9hZGluZzogYm9vbGVhbjtcbiAgaXNVcGxvYWRTdWNjZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgU3RlcHNTZXR0aW5ncyB7XG4gIHNob3dDb3VudGVyOiBib29sZWFuO1xuICBzaG93TGFiZWxzOiBib29sZWFuO1xuICBzaG93QWxsU3RlcHM6IGJvb2xlYW47XG4gIHNob3dQcm9ncmVzc0JhcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gQXBwRGF0YVN0YXR1cyB7XG4gIG5ldyA9IDAsXG4gIGZpbmlzaGVkID0gMSxcbn1cbiJdfQ==
572
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVscy9mb3Jtcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxjQUFjLENBQUM7QUFHMUUsTUFBTSxPQUFPLFNBQVM7Q0FlckI7QUFFRCxNQUFNLE9BQU8sY0FBYztJQUt6QixZQUNFLFlBQW9CLEVBQUUsRUFDdEIsWUFBb0IsRUFBRSxFQUN0QixjQUFzQixFQUFFO1FBRXhCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLElBQUksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQVksWUFBb0IsRUFBRSxFQUFFLFdBQTZCLEVBQUU7UUFDakUsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUt0QixZQUNFLFNBQWlCLEVBQUUsRUFDbkIsSUFBWSxFQUNaLFdBQTZCLEVBQUU7UUFFL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUs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QWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhYmVsSW5mbyB9IGZyb20gJy4vbGFiZWwtaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBQYXJ0bmVyIH0gZnJvbSAnLi9wYXJ0bmVyLm1vZGVsJztcbmltcG9ydCB7IERpY3Rpb25hcnlMYWJlbEluZm8gfSBmcm9tICcuLi9vdGhlcnMvZGljdGlvbmFyeS1sYWJlbC1pbmZvJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTWFwcGluZ3MgfSBmcm9tICcuL2FwcGxpY2F0aW9uLXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgQ3NzUnVsZXMgfSBmcm9tICcuLi9vdGhlcnMvdXRpbHMnO1xuaW1wb3J0IHsgRmx1eEhlbHBlciB9IGZyb20gJy4uL290aGVycy9mbHV4LWhlbHBlcic7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250cm9sLCBTZWN0aW9uRGF0YSwgU3RlcERhdGEgfSBmcm9tICcuL2ZsdXgubW9kZWwnO1xuXG5cbmV4cG9ydCBjbGFzcyBGb3JtTW9kZWwge1xuICBhcHBsaWNhdGlvbklkOiBudW1iZXI7XG4gIGFwcGxpY2F0aW9uVXVpZDogc3RyaW5nO1xuICBnZW5lcmFsRGF0YTogR2VuZXJhbERhdGFNb2RlbDtcbiAgZGVzaWduOiBEZXNpZ25Nb2RlbDtcbiAgZmx1eDogU3RlcERhdGFbXTtcbiAgYXBpOiBBcGlEYXRhO1xuICBwYXJ0bmVyczogQXBwUGFydG5lcltdO1xuICBkb2N1bWVudHM6IEFwcERvY3VtZW50W107XG4gIHN0YXR1c2VzOiBTdGF0dXNNb2RlbFtdO1xuICBkaXNwbGF5OiBEaXNwbGF5TW9kZWw7XG4gIGdlbmVyYXRlZENzczogQ3NzUnVsZXM7XG4gIG1ldGFkYXRhRmllbGRzOiBbXTtcbiAgZXJyb3JzOiB7IFt0YWJOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuICBhcHBsaWNhdGlvbk1hcHBpbmdzOiBBcHBsaWNhdGlvbk1hcHBpbmdzO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUNvbnRyb2wge1xuICBjb250cm9sSWQ6IHN0cmluZztcbiAgZmlsbFZhbHVlOiBzdHJpbmc7XG4gIGZpbGxWYWx1ZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29udHJvbElkOiBzdHJpbmcgPSAnJyxcbiAgICBmaWxsVmFsdWU6IHN0cmluZyA9ICcnLFxuICAgIGZpbGxWYWx1ZUlkOiBzdHJpbmcgPSAnJ1xuICApIHtcbiAgICB0aGlzLmNvbnRyb2xJZCA9IGNvbnRyb2xJZCB8fCAnJztcbiAgICB0aGlzLmZpbGxWYWx1ZSA9IGZpbGxWYWx1ZSB8fCAnJztcbiAgICB0aGlzLmZpbGxWYWx1ZUlkID0gZmlsbFZhbHVlSWQgfHwgJyc7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTZWN0aW9uIHtcbiAgc2VjdGlvbklkOiBzdHJpbmc7XG4gIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNlY3Rpb25JZDogc3RyaW5nID0gJycsIGNvbnRyb2xzOiBBcHBEYXRhQ29udHJvbFtdID0gW10pIHtcbiAgICB0aGlzLnNlY3Rpb25JZCA9IHNlY3Rpb25JZCB8fCAnJztcbiAgICB0aGlzLmNvbnRyb2xzID0gY29udHJvbHMgfHwgW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcERhdGFTdGVwIHtcbiAgc3RlcElkOiBzdHJpbmc7XG4gIHR5cGU6IG51bWJlcjtcbiAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc3RlcElkOiBzdHJpbmcgPSAnJyxcbiAgICB0eXBlOiBudW1iZXIsXG4gICAgc2VjdGlvbnM6IEFwcERhdGFTZWN0aW9uW10gPSBbXVxuICApIHtcbiAgICB0aGlzLnN0ZXBJZCA9IHN0ZXBJZCB8fCAnJztcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc2VjdGlvbnMgPSBzZWN0aW9ucyB8fCBbXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBwRGF0YUZpbGwge1xuICBtZXRhZGF0YToge1xuICAgIGFwcERhdGFJZDogc3RyaW5nO1xuICAgIGNvbmZpZ3VyYXRpb25JZDogc3RyaW5nO1xuICAgIGN1cnJlbnRTdGVwSWQ6IHN0cmluZztcbiAgICBzdGF0dXNJZDogc3RyaW5nO1xuICAgIGxhbmd1YWdlOiBzdHJpbmc7XG4gICAgb2ZmZXJJZDogc3RyaW5nO1xuICAgIGlzU3VibWl0dGVkOiBib29sZWFuO1xuICB9O1xuICBmbHV4OiBBcHBEYXRhU3RlcFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFwcERhdGFJZDogc3RyaW5nID0gJycsXG4gICAgY29uZmlndXJhdGlvbklkOiBzdHJpbmcgPSAnJyxcbiAgICBjdXJyZW50U3RlcElkOiBzdHJpbmcgPSAnJyxcbiAgICBzdGF0dXNJZDogc3RyaW5nID0gJycsXG4gICAgbGFuZ3VhZ2U6IHN0cmluZyA9ICcnLFxuICAgIGZsdXg6IEFwcERhdGFTdGVwW10gPSBbXSxcbiAgICBvZmZlcklkOiBzdHJpbmcgPSAnJyxcbiAgICBpc1N1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlXG4gICkge1xuICAgIHRoaXMubWV0YWRhdGEgPSB7XG4gICAgICBhcHBEYXRhSWQ6IGFwcERhdGFJZCB8fCAnJyxcbiAgICAgIGNvbmZpZ3VyYXRpb25JZDogY29uZmlndXJhdGlvbklkIHx8ICcnLFxuICAgICAgY3VycmVudFN0ZXBJZDogY3VycmVudFN0ZXBJZCB8fCAnJyxcbiAgICAgIHN0YXR1c0lkOiBzdGF0dXNJZCB8fCAnJyxcbiAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSB8fCAnJyxcbiAgICAgIG9mZmVySWQ6IG9mZmVySWQgfHwgJycsXG4gICAgICBpc1N1Ym1pdHRlZDogaXNTdWJtaXR0ZWQgfHwgZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLmZsdXggPSBmbHV4IHx8IFtdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBEYXRhIHtcbiAgaWQ/OiBudW1iZXI7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBhcHBDb25maWd1cmF0aW9uSWQ6IG51bWJlcjtcbiAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgd2l0aE5leHRTdGVwOiBib29sZWFuO1xuICBibG9ja1ByZXZpb3VzU3RlcDogYm9vbGVhbjtcbiAgZW52OiBzdHJpbmc7XG4gIHN0YXR1czogQXBwRGF0YVN0YXR1cztcblxuICBjb25zdHJ1Y3RvcihkYXRhOiB7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgYXBwRGF0YUlkOiBzdHJpbmc7XG4gICAgYXBwQ29uZmlndXJhdGlvbklkOiBudW1iZXI7XG4gICAgZmlsbERhdGE/OiBBcHBEYXRhRmlsbDtcbiAgICB3aXRoTmV4dFN0ZXA6IGJvb2xlYW47XG4gICAgYmxvY2tQcmV2aW91c1N0ZXA6IGJvb2xlYW47XG4gICAgZW52OiBzdHJpbmc7XG4gIH0pIHtcbiAgICAodGhpcy5pZCA9IGRhdGEuaWQgPz8gdW5kZWZpbmVkKSwgKHRoaXMuYXBwRGF0YUlkID0gZGF0YS5hcHBEYXRhSWQgfHwgJycpO1xuICAgIHRoaXMuYXBwQ29uZmlndXJhdGlvbklkID0gZGF0YS5hcHBDb25maWd1cmF0aW9uSWQgfHwgMDtcbiAgICB0aGlzLmZpbGxEYXRhID0gZGF0YS5maWxsRGF0YTtcbiAgICB0aGlzLndpdGhOZXh0U3RlcCA9IGRhdGEud2l0aE5leHRTdGVwO1xuICAgIHRoaXMuYmxvY2tQcmV2aW91c1N0ZXAgPSBkYXRhLmJsb2NrUHJldmlvdXNTdGVwO1xuICAgIGlmICghZGF0YS5lbnYpIHtcbiAgICAgIHRoaXMuZW52ID0gJ0NvbmZpZyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW52ID0gZGF0YS5lbnY7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtTW9kZWxFeHRlbnhpb25zIHtcbiAgZm9ybU1vZGVsOiBGb3JtTW9kZWw7XG5cbiAgY29uc3RydWN0b3IobW9kZWw6IEZvcm1Nb2RlbCkge1xuICAgIHRoaXMuZm9ybU1vZGVsID0gbW9kZWw7XG4gIH1cblxuICBwdWJsaWMgZmx1eEl0ZW1zKFxuICAgIHVudGlsU3RlcElkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApOiBNZXRob2RGaWVsZFtdIHtcbiAgICBsZXQgaXRlbXM6IE1ldGhvZEZpZWxkW10gPSBbXTtcblxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5tZXRhZGF0YUZpZWxkcykge1xuICAgICAgdGhpcy5mb3JtTW9kZWwubWV0YWRhdGFGaWVsZHMuZm9yRWFjaCgoZmllbGRWYWx1ZSkgPT4ge1xuICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkVmFsdWUsXG4gICAgICAgICAgZmllbGRUeXBlOiBTdGVwQ29udHJvbFR5cGUuTWV0YWRhdGEsXG4gICAgICAgICAgaWQ6IGBtZXRhZGF0YS4ke2ZpZWxkVmFsdWV9YCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZm9ybU1vZGVsPy5mbHV4KSB7XG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybU1vZGVsLmRvY3VtZW50cz8ubGVuZ3RoID4gMCkge1xuICAgICAgaXRlbXMgPSBpdGVtcy5jb25jYXQodGhpcy5leHRyYWN0RG9jdW1lbnRzRmx1eEl0ZW1zKHRoaXMuZm9ybU1vZGVsLmZsdXgpKTtcbiAgICB9XG4gICAgaXRlbXMgPSBpdGVtcy5jb25jYXQoXG4gICAgICB0aGlzLmV4dHJhY3RTZWN0aW9uc0ZsdXhJdGVtcyh0aGlzLmZvcm1Nb2RlbC5mbHV4LCB1bnRpbFN0ZXBJZGVudGlmaWVyKVxuICAgICk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cbiAgcHJpdmF0ZSBleHRyYWN0U2VjdGlvbnNGbHV4SXRlbXMoXG4gICAgc3RlcHM6IFN0ZXBEYXRhW10sXG4gICAgdW50aWxTdGVwSWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gICk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgc3RlcCBvZiBzdGVwcykge1xuICAgICAgaWYgKHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgaWYgKHVudGlsU3RlcElkZW50aWZpZXIgJiYgc3RlcC5pZGVudGlmaWVyID09PSB1bnRpbFN0ZXBJZGVudGlmaWVyKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RlcC5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgIHNlY3Rpb24uY29udHJvbHMuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLkJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgICBTdGVwQ29udHJvbFR5cGUuTmV3Um93LFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLkZsdXhJbmZvLFxuICAgICAgICAgICAgICAgICAgU3RlcENvbnRyb2xUeXBlLlBhcmFncmFwaCxcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGNvbnRyb2wudHlwZSkgPT0gZmFsc2VcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtzZWN0aW9uLnRpdGxlfSAtPiAke2NvbnRyb2wudGl0bGV9YCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogY29udHJvbC50eXBlLFxuICAgICAgICAgICAgICAgICAgbWFudWxJbnB1dENvbnRyb2xUeXBlOiBjb250cm9sLnNwZWNpZmljQ29udHJvbERhdGE/LnR5cGUsXG4gICAgICAgICAgICAgICAgICBpZDogY29udHJvbC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdERvY3VtZW50c0ZsdXhJdGVtcyhzdGVwRGF0YTogU3RlcERhdGFbXSk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgc3RlcERhdGE/LmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIGlmIChzdGVwLnR5cGUgPT09IEZsdXhUeXBlLlVwbG9hZERvY3VtZW50KSB7XG4gICAgICAgIHN0ZXAuY29uZmlnPy5kb2N1bWVudHM/LmZvckVhY2goXG4gICAgICAgICAgKGRvY3VtZW50OiB7IGRvY3VtZW50SWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICBkb2N1bWVudD8uZG9jdW1lbnRJZCxcbiAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybU1vZGVsXG4gICAgICAgICAgICAgICAgKSB8fCBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICBmaWVsZFR5cGU6IHN0ZXAudHlwZSxcbiAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5kb2N1bWVudElkXG4gICAgICAgICAgICAgICAgPyBgdXBsb2FkLiR7ZG9jdW1lbnQuZG9jdW1lbnRJZH1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdGVwLnR5cGV9LiR7c3RlcC5uYW1lfWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudHlwZSA9PT0gRmx1eFR5cGUuR2VuZXJhdGVEb2N1bWVudCkge1xuICAgICAgICBzdGVwLmNvbmZpZz8uZ2VuZXJhdGVkRG9jdW1lbnRzPy5mb3JFYWNoKFxuICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkTmFtZTogYCR7c3RlcC5uYW1lfSAtPiAke1xuICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChkb2N1bWVudD8uaWQsIHRoaXMuZm9ybU1vZGVsKSB8fFxuICAgICAgICAgICAgICAgIGRvY3VtZW50Lm5hbWVcbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICBpZDogZG9jdW1lbnQ/LmlkXG4gICAgICAgICAgICAgICAgPyBgZ2VuZXJhdGUuJHtkb2N1bWVudC5pZH1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdGVwLnR5cGV9LiR7c3RlcC5uYW1lfWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAudHlwZSA9PT0gRmx1eFR5cGUuU2lnbikge1xuICAgICAgICBpZiAoc3RlcC5jb25maWc/LmRvY3VtZW50cykge1xuICAgICAgICAgIHN0ZXAuY29uZmlnPy5kb2N1bWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgIChkb2N1bWVudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGAke3N0ZXAubmFtZX0gLT4gJHtcbiAgICAgICAgICAgICAgICAgIEZsdXhIZWxwZXIuZ2V0RG9jdW1lbnROYW1lQnlJZChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ/LmlkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbFxuICAgICAgICAgICAgICAgICAgKSB8fCBkb2N1bWVudC5uYW1lXG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgZmllbGRUeXBlOiBzdGVwLnR5cGUsXG4gICAgICAgICAgICAgICAgaWQ6IGRvY3VtZW50Py5pZFxuICAgICAgICAgICAgICAgICAgPyBgc2lnbi4ke2RvY3VtZW50LmlkfWBcbiAgICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0ZXAuY29uZmlnPy5zeXN0ZW1Eb2N1bWVudHMpIHtcbiAgICAgICAgICBzdGVwLmNvbmZpZz8uc3lzdGVtRG9jdW1lbnRzLmZvckVhY2goXG4gICAgICAgICAgICAoZG9jdW1lbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiBgJHtzdGVwLm5hbWV9IC0+ICR7XG4gICAgICAgICAgICAgICAgICBGbHV4SGVscGVyLmdldERvY3VtZW50TmFtZUJ5SWQoXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWxcbiAgICAgICAgICAgICAgICAgICkgfHwgZG9jdW1lbnQubmFtZVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogc3RlcC50eXBlLFxuICAgICAgICAgICAgICAgIGlkOiBkb2N1bWVudD8uaWRcbiAgICAgICAgICAgICAgICAgID8gYHN5c3RlbS4ke2RvY3VtZW50LmlkfWBcbiAgICAgICAgICAgICAgICAgIDogYCR7c3RlcC50eXBlfS4ke3N0ZXAubmFtZX1gLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIGZsdXhJdGVtc1dpdGhHZXRBcGlNZXRob2RzKFxuICAgIGV4Y2x1ZGVkTWV0aG9kSWQ6IHN0cmluZyA9ICcnXG4gICk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtcyA9IHRoaXMuZmx1eEl0ZW1zKCk7XG4gICAgdGhpcy5mb3JtTW9kZWwuYXBpLmdldEl0ZW1zLmZvckVhY2goKGFwaU1ldGhvZCkgPT4ge1xuICAgICAgaWYgKGFwaU1ldGhvZC5pZCAhPT0gZXhjbHVkZWRNZXRob2RJZCkge1xuICAgICAgICBhcGlNZXRob2QuZmllbGRzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZE5hbWU6IGAke2FwaU1ldGhvZC5tZXRob2R9IC0+ICR7Zi5maWVsZE5hbWV9YCxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlLkFwaU1ldGhvZEZpZWxkLFxuICAgICAgICAgICAgaWQ6IGYuaWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIG9mZmVyTWV0aG9kc0l0ZW1zKCk6IE1ldGhvZEZpZWxkW10ge1xuICAgIGxldCBpdGVtczogTWV0aG9kRmllbGRbXSA9IFtdO1xuXG4gICAgbGV0IG9mZmVyTWV0aG9kc0lkczogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLmZvcm1Nb2RlbC5wYXJ0bmVycz8uZm9yRWFjaCgocCkgPT4ge1xuICAgICAgcC5nZW5lcmFsU2V0dGluZ3Mub2ZmZXJzPy5mb3JFYWNoKChvKSA9PiB7XG4gICAgICAgIG9mZmVyTWV0aG9kc0lkcy5wdXNoKG8uYXBpTWV0aG9kSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBvZmZlck1ldGhvZHNJZHMgPSBbLi4ubmV3IFNldChvZmZlck1ldGhvZHNJZHMpXTtcblxuICAgIGNvbnN0IGFsbEFwaUl0ZW1zID0gW1xuICAgICAgLi4udGhpcy5mb3JtTW9kZWwuYXBpLmdldEl0ZW1zLFxuICAgICAgLi4udGhpcy5mb3JtTW9kZWwuYXBpLnZhbGlkYXRpb25JdGVtcyxcbiAgICAgIC4uLnRoaXMuZm9ybU1vZGVsLmFwaS5zZW5kSXRlbXMsXG4gICAgXTtcblxuICAgIG9mZmVyTWV0aG9kc0lkcy5mb3JFYWNoKChtZXRob2RJZCkgPT4ge1xuICAgICAgY29uc3QgYXBpTWV0aG9kID0gYWxsQXBpSXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gbWV0aG9kSWQpO1xuICAgICAgaWYgKGFwaU1ldGhvZCkge1xuICAgICAgICBhcGlNZXRob2QuZmllbGRzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICBmaWVsZE5hbWU6IGAke2FwaU1ldGhvZC5tZXRob2R9IC0+ICR7Zi5maWVsZE5hbWV9YCxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogRmx1eFR5cGUuVmlld09mZmVyLFxuICAgICAgICAgICAgaWQ6IGBhcGlfJHthcGlNZXRob2QuaWR9IC0+ICR7Zi5pZH1gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBpRGF0YSB7XG4gIGdldEl0ZW1zOiBHZXRBcGlJdGVtW107XG4gIHZhbGlkYXRpb25JdGVtczogQXBpSXRlbVtdO1xuICBzZW5kSXRlbXM6IEFwaUl0ZW1bXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwaUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgZmllbGRzOiBNZXRob2RGaWVsZFtdO1xuICB0eXBlOiBBcGlNZXRob2RUeXBlO1xufVxuXG5leHBvcnQgY2xhc3MgR2V0QXBpSXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBmaWVsZHM6IEdldE1ldGhvZEZpZWxkW107XG4gIHR5cGU6IEFwaU1ldGhvZFR5cGU7XG59XG5leHBvcnQgY2xhc3MgRGVzaWduTW9kZWwge1xuICBmb250czogRm9udENvbmZpZ1tdID0gW107XG4gIGJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XG4gIG90cEFjdGlvbkJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XG4gIGNvbXBvbmVudHM6IENvbXBvbmVudENvbmZpZ1tdID0gW107XG4gIHRhYmxlczogVGFibGVDb25maWdbXSA9IFtdO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgYnV0dG9uc0hvcml6b250YWxQb3NpdGlvbjogc3RyaW5nO1xuICBidXR0b25zVmVydGljYWxQb3NpdGlvbjogc3RyaW5nO1xuICBtYXhXaWR0aDogc3RyaW5nO1xuICBtYXJnaW5MZWZ0OiBzdHJpbmc7XG4gIG1hcmdpblJpZ2h0OiBzdHJpbmc7XG4gIG1hcmdpblRvcDogc3RyaW5nO1xuICBtYXJnaW5Cb3R0b206IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLmZvbnRzKSB7XG4gICAgICAgIHRoaXMuZm9udHMgPSBkYXRhLmZvbnRzLm1hcCgoZm9udDogYW55KSA9PiBuZXcgRm9udENvbmZpZyhmb250KSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmJ1dHRvbnMpIHtcbiAgICAgICAgdGhpcy5idXR0b25zID0gZGF0YS5idXR0b25zLm1hcChcbiAgICAgICAgICAoYnV0dG9uOiBhbnkpID0+IG5ldyBCdXR0b25Db25maWcoYnV0dG9uKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jb21wb25lbnRzKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50cyA9IGRhdGEuY29tcG9uZW50cy5tYXAoXG4gICAgICAgICAgKGNvbXBvbmVudDogYW55KSA9PiBuZXcgQ29tcG9uZW50Q29uZmlnKGNvbXBvbmVudClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEudGFibGVzKSB7XG4gICAgICAgIHRoaXMudGFibGVzID0gZGF0YS50YWJsZXMubWFwKCh0YWJsZTogYW55KSA9PiBuZXcgVGFibGVDb25maWcodGFibGUpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5idXR0b25zSG9yaXpvbnRhbFBvc2l0aW9uID0gZGF0YS5ob3Jpem9udGFsUG9zaXRpb247XG4gICAgICB0aGlzLmJ1dHRvbnNWZXJ0aWNhbFBvc2l0aW9uID0gZGF0YS52ZXJ0aWNhbFBvc2l0aW9uO1xuICAgICAgdGhpcy5tYXhXaWR0aCA9IGRhdGEubWF4V2lkdGg7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb250Q29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGZvbnRXZWlnaHQ6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseTtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmZvbnRXZWlnaHQgPSBkYXRhLmZvbnRXZWlnaHQ7XG4gICAgICB0aGlzLnRleHRBbGlnbiA9IGRhdGEudGV4dEFsaWduO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gIGJvcmRlclJhZGl1czogc3RyaW5nO1xuICBob3Jpem9udGFsUGFkZGluZzogc3RyaW5nO1xuICB2ZXJ0aWNhbFBhZGRpbmc6IHN0cmluZztcbiAgZm9udEZhbWlseTogc3RyaW5nO1xuICBmb250U2l6ZTogc3RyaW5nO1xuICBsZXR0ZXJTcGFjaW5nOiBzdHJpbmc7XG4gIHdpZHRoOiBzdHJpbmc7XG4gIGhlaWdodDogc3RyaW5nO1xuICBtaW5XaWR0aDogc3RyaW5nO1xuICBtaW5IZWlnaHQ6IHN0cmluZztcbiAgbWF4V2lkdGg6IHN0cmluZztcbiAgbWF4SGVpZ2h0OiBzdHJpbmc7XG4gIGhvcml6b250YWxQb3NpdGlvbj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLmNvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyID0gZGF0YS5ib3JkZXI7XG4gICAgICB0aGlzLmJvcmRlckNvbG9yID0gZGF0YS5ib3JkZXJDb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyUmFkaXVzID0gZGF0YS5ib3JkZXJSYWRpdXM7XG4gICAgICB0aGlzLmhvcml6b250YWxQYWRkaW5nID0gZGF0YS5ob3Jpem9udGFsUGFkZGluZztcbiAgICAgIHRoaXMudmVydGljYWxQYWRkaW5nID0gZGF0YS52ZXJ0aWNhbFBhZGRpbmc7XG4gICAgICB0aGlzLmZvbnRGYW1pbHkgPSBkYXRhLmZvbnRGYW1pbHk7XG4gICAgICB0aGlzLmZvbnRTaXplID0gZGF0YS5mb250U2l6ZTtcbiAgICAgIHRoaXMubGV0dGVyU3BhY2luZyA9IGRhdGEubGV0dGVyU3BhY2luZztcbiAgICAgIHRoaXMud2lkdGggPSBkYXRhLndpZHRoO1xuICAgICAgdGhpcy5oZWlnaHQgPSBkYXRhLmhlaWdodDtcbiAgICAgIHRoaXMubWluV2lkdGggPSBkYXRhLm1pbldpZHRoO1xuICAgICAgdGhpcy5taW5IZWlnaHQgPSBkYXRhLm1pbkhlaWdodDtcbiAgICAgIHRoaXMubWF4V2lkdGggPSBkYXRhLm1heFdpZHRoO1xuICAgICAgdGhpcy5tYXhIZWlnaHQgPSBkYXRhLm1heEhlaWdodDtcbiAgICAgIHRoaXMuaG9yaXpvbnRhbFBvc2l0aW9uID0gZGF0YS5ob3Jpem9udGFsUG9zaXRpb247XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbmZpZyB7XG4gIGhlYWRlckNvbmZpZzogSGVhZGVyQ29uZmlnO1xuICBkZXRhaWxDb25maWc6IERldGFpbENvbmZpZztcblxuICBjb25zdHJ1Y3Rvcih0YWJsZT86IGFueSkge1xuICAgIGlmICh0YWJsZSkge1xuICAgICAgdGhpcy5oZWFkZXJDb25maWcgPSB0YWJsZS5oZWFkZXJDb25maWc7XG4gICAgICB0aGlzLmRldGFpbENvbmZpZyA9IHRhYmxlLmRldGFpbENvbmZpZztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhlYWRlckNvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHRleHRDb2xvcjogc3RyaW5nO1xuICBib3JkZXI6IHN0cmluZztcbiAgYm9yZGVyQ29sb3I6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbiAgbGV0dGVyU3BhY2luZzogc3RyaW5nO1xuICBwYWRkaW5nOiBzdHJpbmc7XG4gIGJvcmRlckNvbGxhcHNlOiBzdHJpbmc7XG4gIGJvcmRlclNwYWNpbmc6IHN0cmluZztcbiAgdmVydGljYWxBbGlnbjogc3RyaW5nO1xuICB3aWR0aDogc3RyaW5nO1xuICBoZWlnaHQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihkYXRhPzogYW55KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcbiAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gZGF0YS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnRleHRDb2xvciA9IGRhdGEuY29sb3I7XG4gICAgICB0aGlzLmJvcmRlciA9IGRhdGEuYm9yZGVyO1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseTtcbiAgICAgIHRoaXMuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplO1xuICAgICAgdGhpcy5sZXR0ZXJTcGFjaW5nID0gZGF0YS5sZXR0ZXJTcGFjaW5nO1xuICAgICAgdGhpcy5wYWRkaW5nID0gZGF0YS5wYWRkaW5nO1xuICAgICAgdGhpcy5ib3JkZXJDb2xsYXBzZSA9IGRhdGEuYm9yZGVyQ29sbGFwc2U7XG4gICAgICB0aGlzLmJvcmRlclNwYWNpbmcgPSBkYXRhLmJvcmRlclNwYWNpbmc7XG4gICAgICB0aGlzLnZlcnRpY2FsQWxpZ24gPSBkYXRhLnZlcnRpY2FsQWxpZ247XG4gICAgICB0aGlzLndpZHRoID0gZGF0YS53aWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZXRhaWxDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGxldHRlclNwYWNpbmc6IHN0cmluZztcbiAgcGFkZGluZzogc3RyaW5nO1xuICByb3dCb3JkZXI6IHN0cmluZztcbiAgcm93Qm9yZGVyQ29sb3I6IHN0cmluZztcbiAgaG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgdmVydGljYWxBbGlnbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnkpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5uYW1lID0gZGF0YS5uYW1lO1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMudGV4dENvbG9yID0gZGF0YS5jb2xvcjtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gZGF0YS50ZXh0QWxpZ247XG4gICAgICB0aGlzLmxldHRlclNwYWNpbmcgPSBkYXRhLmxldHRlclNwYWNpbmc7XG4gICAgICB0aGlzLnBhZGRpbmcgPSBkYXRhLnBhZGRpbmc7XG4gICAgICB0aGlzLnJvd0JvcmRlciA9IGRhdGEucm93Qm9yZGVyO1xuICAgICAgdGhpcy5ob3ZlckJhY2tncm91bmRDb2xvciA9IGRhdGEuaG92ZXJCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB0aGlzLnZlcnRpY2FsQWxpZ24gPSBkYXRhLnZlcnRpY2FsQWxpZ247XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICBib3JkZXI6IHN0cmluZztcbiAgYm9yZGVyUmFkaXVzOiBzdHJpbmc7XG4gIGxhYmVsU3R5bGU6IHN0cmluZztcbiAgdGV4dEFsaWduOiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBib3JkZXJDb2xvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgd2VpZ2h0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdGFydENvbG9yPzogc3RyaW5nO1xuICBlbmRDb2xvcj86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnkpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5uYW1lID0gZGF0YS5uYW1lO1xuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcbiAgICAgIHRoaXMuYm9yZGVyID0gZGF0YS5ib3JkZXI7XG4gICAgICB0aGlzLmJvcmRlclJhZGl1cyA9IGRhdGEuYm9yZGVyUmFkaXVzO1xuICAgICAgdGhpcy5sYWJlbFN0eWxlID0gZGF0YS5sYWJlbFN0eWxlO1xuICAgICAgdGhpcy50ZXh0QWxpZ24gPSBkYXRhLnRleHRBbGlnbjtcbiAgICAgIHRoaXMuY29sb3IgPSBkYXRhLmNvbG9yO1xuICAgICAgdGhpcy53ZWlnaHQgPSBkYXRhLndlaWdodDtcbiAgICAgIHRoaXMuc3RhcnRDb2xvciA9IGRhdGEuc3RhcnRDb2xvcjtcbiAgICAgIHRoaXMuZW5kQ29sb3IgPSBkYXRhLmVuZENvbG9yO1xuICAgICAgdGhpcy5oZWlnaHQgPSBkYXRhLmhlaWdodDtcbiAgICB9XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBEaXNwbGF5TW9kZWwge1xuICBzZWN0aW9uczogU2VjdGlvbkRhdGFbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEdlbmVyYWxEYXRhTW9kZWwge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwcGxpY2F0aW9uVHlwZTogbnVtYmVyO1xuICBsYW5ndWFnZXM6IHN0cmluZ1tdO1xuICBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZztcbiAgY29udGludWVXaXRoT2ZmZXI6IGJvb2xlYW47XG4gIHNob3dDb3VudGVyU3RlcDogYm9vbGVhbjtcbiAgc2hvd05hbWVTdGVwOiBib29sZWFuO1xuICBzaG93QWxsU3RlcHM6IGJvb2xlYW47XG4gIHNob3dQcm9ncmVzc0JhcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3Jtc1N0YXRlIHtcbiAgZGF0YTogRm9ybU1vZGVsO1xuICBzZWxlY3RlZFRhYjogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGNhbkdldEZyb21Qcm9kOiBib29sZWFuO1xuICBjYW5HZXRGcm9tVGVzdDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluUHJvZDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluVGVzdDogYm9vbGVhbjtcbiAgYXBwbGljYXRpb25VdWlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsRm9ybXVsYXJlU3RhdGU6IEZvcm1zU3RhdGUgPSB7XG4gIGRhdGE6IHtcbiAgICBhcHBsaWNhdGlvbklkOiAwLFxuICAgIGFwcGxpY2F0aW9uVXVpZDogJycsXG4gICAgZ2VuZXJhbERhdGE6IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYXBwbGljYXRpb25UeXBlOiAwLFxuICAgICAgbGFuZ3VhZ2VzOiBbXSxcbiAgICAgIGRlZmF1bHRMYW5ndWFnZTogJycsXG4gICAgICBjb250aW51ZVdpdGhPZmZlcjogZmFsc2UsXG4gICAgICBzaG93Q291bnRlclN0ZXA6IGZhbHNlLFxuICAgICAgc2hvd05hbWVTdGVwOiBmYWxzZSxcbiAgICAgIHNob3dBbGxTdGVwczogZmFsc2UsXG4gICAgICBzaG93UHJvZ3Jlc3NCYXI6IGZhbHNlLFxuICAgIH0sXG4gICAgZGVzaWduOiB7XG4gICAgICBmb250czogW10sXG4gICAgICBidXR0b25zOiBbXSxcbiAgICAgIG90cEFjdGlvbkJ1dHRvbnM6IFtdLFxuICAgICAgY29tcG9uZW50czogW10sXG4gICAgICB0YWJsZXM6IFtdLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnJyxcbiAgICAgIGZvbnRTaXplOiAnJyxcbiAgICAgIGJ1dHRvbnNIb3Jpem9udGFsUG9zaXRpb246ICcnLFxuICAgICAgYnV0dG9uc1ZlcnRpY2FsUG9zaXRpb246ICcnLFxuICAgICAgbWF4V2lkdGg6ICcnLFxuICAgICAgbWFyZ2luTGVmdDogJycsXG4gICAgICBtYXJnaW5SaWdodDogJycsXG4gICAgICBtYXJnaW5Ub3A6ICcnLFxuICAgICAgbWFyZ2luQm90dG9tOiAnJyxcbiAgICB9LFxuICAgIGZsdXg6IFtdLFxuICAgIGFwaTogeyBnZXRJdGVtczogW10sIHZhbGlkYXRpb25JdGVtczogW10sIHNlbmRJdGVtczogW10gfSxcbiAgICBwYXJ0bmVyczogW10sXG4gICAgZG9jdW1lbnRzOiBbXSxcbiAgICBzdGF0dXNlczogW10sXG4gICAgZGlzcGxheToge1xuICAgICAgc2VjdGlvbnM6IFtdLFxuICAgIH0sXG4gICAgZ2VuZXJhdGVkQ3NzOiB7fSxcbiAgICBtZXRhZGF0YUZpZWxkczogW10sXG4gICAgZXJyb3JzOiB7fSxcbiAgICBhcHBsaWNhdGlvbk1hcHBpbmdzOiB7XG4gICAgICBhcHBsaWNhdGlvblR5cGVJZDogMCxcbiAgICAgIGNvbHVtbk1hcHBpbmdzOiBbXSxcbiAgICB9LFxuICB9LFxuICBzZWxlY3RlZFRhYjogJ0RhdGUgZ2VuZXJhbGUnLFxuICBjYW5HZXRGcm9tUHJvZDogZmFsc2UsXG4gIGNhbkdldEZyb21UZXN0OiBmYWxzZSxcbiAgY2FuUHVibGlzaEluUHJvZDogZmFsc2UsXG4gIGNhblB1Ymxpc2hJblRlc3Q6IGZhbHNlLFxuICBhcHBsaWNhdGlvblV1aWQ6ICcnLFxuICB2ZXJzaW9uOiAnJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyRGljdGlvbmFyeU1hcHBpbmcge1xuICBkaWN0aW9uYXJ5SWQ6IHN0cmluZztcbiAgZGljdGlvbmFyeU5hbWU6IHN0cmluZztcbiAgbWFwcGluZ3M6IFBhcnRuZXJLZXlWYWx1ZUl0ZW1bXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJTZXR0aW5ncyB7XG4gIHBhcnRuZXJNZXRob2RzQXBpOiBQYXJ0bmVyTWV0aG9kQXBpW10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RBcGkge1xuICBtZXRob2RJZDogc3RyaW5nO1xuICBtZXRob2RUeXBlOiBzdHJpbmc7XG4gIGNhbGxUeXBlOiBzdHJpbmc7XG4gIGJvZHlDb25maWd1cmF0aW9uOiBQYXJ0bmVyTWV0aG9kQm9keTtcbiAgcmVzcG9uc2VDb25maWd1cmF0aW9uOiBQYXJ0bmVyTWV0aG9kUmVzcG9uc2U7XG4gIHVybENvbmZpZ3VyYXRpb246IFBhcnRuZXJNZXRob2RVcmw7XG4gIGF1dGhWYWx1ZTogUGFydG5lck1ldGhvZEFwaUF1dGg7XG4gIGhlYWRlcnM6IFBhcnRuZXJLZXlWYWx1ZUl0ZW1bXTtcbiAgLy8gSU5CT1VORC1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gIGluYm91bmRNZXRob2RUeXBlPzogSW5ib3VuZE1ldGhvZFR5cGU7IC8vIFR5cGUgb2YgSU5CT1VORCBtZXRob2Rcbn1cblxuZXhwb3J0IGVudW0gSW5ib3VuZE1ldGhvZFR5cGUge1xuICBTdGFuZGFyZCA9ICdTdGFuZGFyZCcsXG4gIFN0YXR1c01ldGhvZCA9ICdTdGF0dXNNZXRob2QnLFxufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZEFwaUF1dGgge1xuICBoZWFkZXJOYW1lOiBzdHJpbmcgfCBudWxsO1xuICBhcGlLZXk6IHN0cmluZyB8IG51bGw7XG4gIGF1dGhUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0bmVyS2V5VmFsdWVJdGVtIHtcbiAga2V5OiBzdHJpbmc7XG4gIGtleU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgUGFydG5lclN0YXR1c01hcHBpbmcge1xuICBwYXJ0bmVyU3RhdHVzOiBzdHJpbmc7XG4gIGFwcFN0YXR1czogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUGFydG5lck1ldGhvZFVybCB7XG4gIHVybFZhbHVlOiBzdHJpbmc7XG4gIHRpbWVvdXQ6IG51bWJlcjtcbiAgdGVzdFVybDogc3RyaW5nO1xuICBwcm9kVXJsOiBzdHJpbmc7XG4gIHBhcmFtZXRlck1hcHBpbmdzOiBVcmxNYXBGaWVsZHNbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RSZXNwb25zZSB7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gIGpzb25WYWx1ZTogc3RyaW5nO1xuICByZXNwb25zZU1hcEZpZWxkczogRmllbGRzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgVXJsTWFwRmllbGRzIHtcbiAgdXJsUGFyYW1ldGVyOiBzdHJpbmc7XG4gIGZsdXhGaWVsZDogc3RyaW5nO1xuICBmbHV4RmllbGRJZDogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRuZXJNZXRob2RCb2R5IHtcbiAgY29udGVudFR5cGU6IHN0cmluZztcbiAganNvblZhbHVlOiBzdHJpbmc7XG4gIGJvZHlNYXBGaWVsZHM6IEZpZWxkc01hcHBpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEZpZWxkc01hcHBpbmcge1xuICBwYXJ0bmVyRmllbGQ6IHN0cmluZztcbiAgZmx1eEZpZWxkSWQ6IHN0cmluZztcbiAgbWV0aG9kRmllbGRJZDogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIE1ldGhvZEZpZWxkIHtcbiAgaWQ6IHN0cmluZztcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIGZpZWxkVHlwZTogU3RlcENvbnRyb2xUeXBlIHwgRmx1eFR5cGUgfCBzdHJpbmc7XG4gIG1hbnVsSW5wdXRDb250cm9sVHlwZT86IE1hbnVhbElucHV0Q29udHJvbFR5cGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNZXRob2RGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpZWxkTmFtZTogc3RyaW5nO1xuICBmaWVsZFR5cGU6IFN0ZXBDb250cm9sVHlwZSB8IEZsdXhUeXBlIHwgc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNYW51YWxJbnB1dENvbnRyb2xEYXRhIHtcbiAgdHlwZTogTWFudWFsSW5wdXRDb250cm9sVHlwZTtcbiAgaXNTaW1wbGVWYWxpZGF0aW9uOiBib29sZWFuO1xuICBpc0FwaVZhbGlkYXRpb246IGJvb2xlYW47XG4gIGFwaVZhbGlkYXRpb25NZXRob2Q/OiBzdHJpbmcgfCBudWxsO1xuICBhcGlWYWxpZGF0aW9uUGFydG5lcj86IHN0cmluZyB8IG51bGw7XG4gIGFsbG93ZWRDaGFyYWN0ZXJzPzogc3RyaW5nO1xuICBtYXhDaGFyYWN0ZXJzPzogbnVtYmVyO1xuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgbWF4VmFsdWU/OiBudW1iZXI7XG4gIGFsbG93T25seVBhc3Q/OiBib29sZWFuO1xuICBhbGxvd09ubHlGdXR1cmU/OiBib29sZWFuO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgaXNQcmVjb21wbGV0YWJsZT86IGJvb2xlYW47XG4gIHByZWNvbXBsZXRpb25GaWVsZElkPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNsYXNzIFBhcmFncmFwaENvbnRyb2xEYXRhIHtcbiAgZGVzY3JpcHRpb25UcmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgaXNNYW5kYXRvcnlUcmFuc2xhdGlvbnM/OiBMYWJlbEluZm9bXTtcbn1cblxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlDb250cm9sRGF0YSB7XG4gIGRpY3Rpb25hcnlVVUlEOiBzdHJpbmc7XG4gIHNob3dBc1JhZGlvQnV0dG9uc0xpc3Q6IGJvb2xlYW47XG4gIHJlbGF0ZWREaWN0aW9uYXJpZXNUcmFuc2xhdGlvbnM6IERpY3Rpb25hcnlMYWJlbEluZm9bXTtcbiAgZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkPzogbnVtYmVyIHwgbnVsbDtcbiAgc2VsZWN0ZWRSZWxhdGVkRGljdGlvbmFyaWVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGVudW0gRmx1eFR5cGUge1xuICBLeWMgPSAwLFxuICBFbWFpbCA9IDEsXG4gIFBob25lID0gMixcbiAgU2lnbiA9IDMsXG4gIFN0YXR1cyA9IDQsXG4gIEN1c3RvbSA9IDUsXG4gIFBhdXNlID0gNixcbiAgSWRTY2FuID0gNyxcbiAgR2VuZXJhdGVEb2N1bWVudCA9IDgsXG4gIEFjdGlvbiA9IDksXG4gIFVwbG9hZERvY3VtZW50ID0gMTAsXG4gIERvd25sb2FkRG9jdW1lbnQgPSAxMSxcbiAgVmlld09mZmVyID0gMTIsXG4gIEZpbmFsID0gMTMsXG4gIFZpZXdEb2N1bWVudCA9IDE0LFxuICBORVRPUElBID0gMTUsXG4gIEVVUExBVEVTQyA9IDE2LFxuICBPcGVuQmFua2luZyA9IDE3LFxufVxuXG5leHBvcnQgZW51bSBTZWN0aW9uVHlwZSB7XG4gIFByZXNlbnRhdGlvbixcbiAgQ29sbGVjdCxcbiAgRGlzcGxheSxcbn1cblxuZXhwb3J0IGVudW0gU3RlcENvbnRyb2xUeXBlIHtcbiAgTWFudWFsSW5wdXQgPSAwLFxuICBQYXJhZ3JhcGggPSAxLFxuICBDaGVja0JveCA9IDIsXG4gIERpY3Rpb25hcnkgPSAzLFxuICBCdXR0b25zID0gNCxcbiAgRmx1eEluZm8gPSA1LFxuICBOZXdSb3cgPSA2LFxuICBNZXRhZGF0YSA9IDcsXG4gIEFwaU1ldGhvZEZpZWxkID0gOCxcbiAgRG93bmxvYWREb2N1bWVudHMgPSA5LFxuICBWaWV3RG9jdW1lbnRzID0gMTAsXG4gIFVwbG9hZERvY3VtZW50cyA9IDExLFxufVxuXG5leHBvcnQgZW51bSBEaW1lbnNpb25UeXBlIHtcbiAgUGVyY2VudGFnZSxcbiAgUGl4ZWxzLFxufVxuXG5leHBvcnQgZW51bSBNYW51YWxJbnB1dENvbnRyb2xUeXBlIHtcbiAgVGV4dCxcbiAgTnVtZXJpYyxcbiAgRGF0ZVRpbWUsXG4gIEVtYWlsLFxuICBQaG9uZSxcbiAgVGV4dEFyZWEsXG59XG5cbmV4cG9ydCBlbnVtIFNpZ25hdHVyZVR5cGUge1xuICBFbGVjdHJvbmljLFxuICBIYW5kd3JpdHRlbixcbiAgUXVhbGlmaWVkLFxufVxuXG5leHBvcnQgZW51bSBBcGlNZXRob2RUeXBlIHtcbiAgR2V0RGF0YSxcbiAgU2VuZERhdGEsXG4gIFZhbGlkYXRpb24sXG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0dXNNb2RlbCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbiAgZmluYWw6IGJvb2xlYW47XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGVudW1pcmU6IHN0cmluZyxcbiAgICBvcmRpbmU6IG51bWJlcixcbiAgICBmaW5hbDogYm9vbGVhbixcbiAgICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgICBhY3Rpb25zOiBTdGF0dXNBY3Rpb25bXVxuICApIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5uYW1lID0gZGVudW1pcmU7XG4gICAgdGhpcy5vcmRlciA9IG9yZGluZTtcbiAgICB0aGlzLmZpbmFsID0gZmluYWw7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGlzQWN0aXZlO1xuICAgIHRoaXMuYWN0aW9ucyA9IGFjdGlvbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0YXR1c0FjdGlvbiB7XG4gIGlkPzogc3RyaW5nO1xuICBhY3Rpb25UaXRsZTogc3RyaW5nO1xuICBhcGlNZXRob2RJZDogc3RyaW5nO1xuICBwYXJ0bmVySWRzOiBudW1iZXJbXSA9IFtdO1xufVxuXG5leHBvcnQgY2xhc3MgUHJlc2VudGF0aW9uUGFyYWdyYXBoQ29udHJvbCBleHRlbmRzIFByZXNlbnRhdGlvbkNvbnRyb2wge1xuICBkZXNjcmlwdGlvblRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG59XG5cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXIgZXh0ZW5kcyBQYXJ0bmVyIHtcbiAgZG9jdW1lbnRzPzogQXBwUGFydG5lckRvY3VtZW50c1tdID0gW107XG4gIGdlbmVyYWxTZXR0aW5nczogQXBwUGFydG5lckdlbmVyYWxTZXR0aW5ncztcbiAgcGFydG5lclNldHRpbmdzOiBQYXJ0bmVyU2V0dGluZ3M7XG4gIHBhcnRuZXJEaWN0aW9uYXJ5TWFwcGluZzogUGFydG5lckRpY3Rpb25hcnlNYXBwaW5nW107XG4gIHBhcnRuZXJTdGF0dXNNYXBwaW5nOiBQYXJ0bmVyU3RhdHVzTWFwcGluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwUGFydG5lckdlbmVyYWxTZXR0aW5ncyB7XG4gIGFjY2VwdE11bHRpcGxlT2ZmZXJzOiBib29sZWFuO1xuICBvZmZlcnM6IEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NPZmZlcltdID0gW107XG4gIHJlY2VpdmVkT2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzUmVjZWl2ZWRPZmZlcltdID0gW107XG4gIHZhbGFiaWxpdHk6IG51bWJlcjtcbiAgaGFzQ3VzdG9tVmFsYWJpbGl0eTogYm9vbGVhbjtcbiAgc3RhdHVzV29ya2VyU2V0dGluZ3M6IEFwcFN0YXR1c1dvcmtlclNldHRpbmdzO1xufVxuZXhwb3J0IGNsYXNzIEFwcFN0YXR1c1dvcmtlclNldHRpbmdzIHtcbiAgbWF4UmV0cmllczogbnVtYmVyO1xuICBsb29wSW50ZXJ2YWw6IG51bWJlcjtcbn1cbmV4cG9ydCBjbGFzcyBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXIge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwaU1ldGhvZElkOiBzdHJpbmc7XG4gIGlkZW50aWZpZXI6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgY3VzdG9tVmFsYWJpbGl0eT86IG51bWJlcjtcbiAgYXBpTWV0aG9kRmllbGRzPzogYW55W10gPSBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJHZW5lcmFsU2V0dGluZ3NSZWNlaXZlZE9mZmVyIHtcbiAgaWQ6IHN0cmluZztcbiAgb2ZmZXJzOiBBcHBQYXJ0bmVyR2VuZXJhbFNldHRpbmdzT2ZmZXJbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcFBhcnRuZXJEb2N1bWVudHMge1xuICBpZDogc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIGRvY3VtZW50TmFtZTogc3RyaW5nO1xuICBhcGlNZXRob2RJZDogc3RyaW5nO1xuICBpc0VkaXRNb2RlOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwRG9jdW1lbnQge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRyYW5zbGF0aW9uczogTGFiZWxJbmZvW107XG4gIGdlbmVyYXRlZEJ5QXBwOiBib29sZWFuO1xuICBpc1N0YXRpYzogYm9vbGVhbjtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIHZlcnNpb25zOiBBcHBEb2N1bWVudFZlcnNpb25bXSA9IFtdO1xufVxuZXhwb3J0IGNsYXNzIFNpZ25lZERvY3VtZW50IGV4dGVuZHMgQXBwRG9jdW1lbnQge1xuICBzb3VyY2VEb2N1bWVudHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcERvY3VtZW50RXh0ZW5kZWQgZXh0ZW5kcyBBcHBEb2N1bWVudCB7XG4gIGlzQXBpRG9jdW1lbnQ/OiBib29sZWFuOyBcbn1cblxuZXhwb3J0IGNsYXNzIEFwcERvY3VtZW50VmVyc2lvbiB7XG4gIGlkOiBudW1iZXI7XG4gIGFwcGxpY2F0aW9uSWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgdmFsaWRGcm9tOiBEYXRlO1xuICB2YWxpZFRvOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBpc0VkaXRNb2RlOiBib29sZWFuO1xuICBkYXRhOiBzdHJpbmcgfCBudWxsO1xuICBmbHV4Qm9va21hcmtzOiBCb29rbWFya01hcHBpbmdbXTtcbiAgaXNUZW1wb3Jhcnk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBCb29rbWFya01hcHBpbmcge1xuICBib29rbWFyazogc3RyaW5nO1xuICBjb250cm9sSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yVHJhbnNsYXRpb25zIHtcbiAgY29kZTogc3RyaW5nO1xuICB0cmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xufVxuXG5leHBvcnQgY2xhc3MgVXBsb2FkRG9jdW1lbnQge1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGZpbGVEYXRhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBVcGxvYWREb2N1bWVudERldGFpbHMgZXh0ZW5kcyBVcGxvYWREb2N1bWVudCB7XG4gIGRvY3VtZW50TmFtZTogc3RyaW5nO1xuICBkb2N1bWVudEV4dGVuc2lvbnM6IHN0cmluZztcbiAgZG9jdW1lbnRNYXhTaXplOiBudW1iZXI7XG4gIGlzTWFuZGF0b3J5OiBib29sZWFuO1xuICBpc1VwbG9hZGluZzogYm9vbGVhbjtcbiAgaXNVcGxvYWRTdWNjZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgU3RlcHNTZXR0aW5ncyB7XG4gIHNob3dDb3VudGVyOiBib29sZWFuO1xuICBzaG93TGFiZWxzOiBib29sZWFuO1xuICBzaG93QWxsU3RlcHM6IGJvb2xlYW47XG4gIHNob3dQcm9ncmVzc0JhcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gQXBwRGF0YVN0YXR1cyB7XG4gIG5ldyA9IDAsXG4gIGZpbmlzaGVkID0gMSxcbn1cbiJdfQ==