@bizdoc/core 1.11.0-next.7 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/assets/themes/brown.min.css +18 -16
  2. package/assets/themes/dark.min.css +17 -15
  3. package/assets/themes/deep-purple-teal.min.css +92 -0
  4. package/assets/themes/default.min.css +18 -16
  5. package/assets/themes/green.min.css +18 -16
  6. package/assets/themes/indigo.min.css +18 -16
  7. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +3 -3
  8. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +2 -2
  9. package/esm2020/lib/admin/form/workflow/role-node.component.mjs +5 -4
  10. package/esm2020/lib/compose/action/action-picker.component.mjs +7 -36
  11. package/esm2020/lib/compose/action/action.base.mjs +43 -0
  12. package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +70 -0
  13. package/esm2020/lib/compose/form.component.mjs +20 -22
  14. package/esm2020/lib/compose/trace/flow.component.mjs +5 -4
  15. package/esm2020/lib/core/configuration.mjs +8 -10
  16. package/esm2020/lib/core/controls/address.input.mjs +4 -3
  17. package/esm2020/lib/core/controls/file.input.mjs +38 -11
  18. package/esm2020/lib/core/mailbox.service.mjs +4 -4
  19. package/esm2020/lib/core/translations.mjs +3 -1
  20. package/esm2020/lib/cube/cube.service.mjs +8 -9
  21. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +3 -2
  22. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +4 -6
  23. package/esm2020/lib/cube/matrix/table.component.mjs +61 -10
  24. package/esm2020/lib/cube/pivot/pivot.component.mjs +3 -1
  25. package/esm2020/lib/desktop.module.mjs +6 -6
  26. package/esm2020/lib/routes.desktop.mjs +13 -7
  27. package/esm2020/lib/views/cube/cube-base.mjs +7 -9
  28. package/fesm2015/bizdoc-core.mjs +375 -275
  29. package/fesm2015/bizdoc-core.mjs.map +1 -1
  30. package/fesm2020/bizdoc-core.mjs +375 -275
  31. package/fesm2020/bizdoc-core.mjs.map +1 -1
  32. package/lib/compose/action/action-picker.component.d.ts +4 -6
  33. package/lib/compose/action/action.base.d.ts +11 -0
  34. package/lib/compose/action/action.pane.dialog.exp.d.ts +29 -0
  35. package/lib/core/configuration.d.ts +8 -10
  36. package/lib/core/controls/file.input.d.ts +1 -0
  37. package/lib/core/mailbox.service.d.ts +5 -2
  38. package/lib/core/translations.d.ts +2 -0
  39. package/lib/cube/cube.service.d.ts +1 -4
  40. package/lib/cube/matrix/table.component.d.ts +4 -1
  41. package/lib/desktop.module.d.ts +2 -2
  42. package/package.json +1 -1
  43. package/esm2020/lib/compose/action/action.pane.dialog.mjs +0 -59
  44. package/lib/compose/action/action.pane.dialog.d.ts +0 -26
@@ -30,8 +30,7 @@ export class CubeService {
30
30
  this._type = _type;
31
31
  this._session = _session;
32
32
  this._cache = {};
33
- this._exchangeRates = {};
34
- this._cacheOr = (name, fn) => this._cache[name] || (this._cache[name] = fn());
33
+ this._cacheOr = (name, fn) => this._cache[name] || (this._cache[name] = fn().pipe(shareReplay()));
35
34
  _config && _config.currencyCode && setCurrencyCode(_config.currencyCode);
36
35
  }
37
36
  /** system currency */
@@ -229,7 +228,7 @@ export class CubeService {
229
228
  }
230
229
  /** get currencies */
231
230
  currencies() {
232
- return this._cacheOr('currencies', () => this._http.get('api/cube/currencies').pipe(shareReplay()));
231
+ return this._cacheOr('currencies', () => this._http.get('api/cube/currencies'));
233
232
  }
234
233
  /**
235
234
  * get exchange rate
@@ -239,13 +238,13 @@ export class CubeService {
239
238
  exchangeRate(currencyCode, date) {
240
239
  if (this.currencyCode === currencyCode)
241
240
  return of(1);
242
- const key = currencyCode + (date ? date.toJSON() : '');
243
- if (this._exchangeRates[key])
244
- return this._exchangeRates[key];
245
- return this._exchangeRates[key] = this._http.get(`api/cube/exchangeRate/${currencyCode}`, {
241
+ let key = currencyCode;
242
+ if (date)
243
+ key += date.toJSON();
244
+ return this._cacheOr(key, () => this._http.get(`api/cube/exchangeRate/${currencyCode}`, {
246
245
  params: date ? { date: date.toJSON() } : null,
247
246
  headers: { 'no-progress': 'true' }
248
- }).pipe(shareReplay());
247
+ }));
249
248
  }
250
249
  /**
251
250
  * replaces * or # with origin axis at char place
@@ -395,4 +394,4 @@ export function modelize() {
395
394
  return data;
396
395
  }));
397
396
  }
398
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ViZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL2N1YmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFnQixhQUFhLEVBQXVCLE1BQU0sdUJBQXVCLENBQUM7QUFJekYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBRTlGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7QUFFL0Q7MkVBQzJFO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7QUFDdEMsaUVBQWlFO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUUsY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUM7QUFFaEQsd0VBQXdFO0FBQ3hFLEtBQUs7QUFDTCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxzR0FBc0csQ0FBQztBQUV6SSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxvQ0FBb0MsRUFBRSxzQ0FBc0MsRUFBRSxpQ0FBaUMsRUFBRSx1Q0FBdUMsRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDO0FBRXJPLGlCQUFpQjtBQUVqQixNQUFNLE9BQU8sV0FBVztJQUd0QixPQUFPO0lBQ1AsWUFBMkMsT0FBcUIsRUFDdEQsS0FBaUIsRUFDakIsS0FBd0IsRUFDeEIsUUFBd0I7UUFIUyxZQUFPLEdBQVAsT0FBTyxDQUFjO1FBQ3RELFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFOakIsV0FBTSxHQUE0QixFQUFFLENBQUM7UUFDckMsbUJBQWMsR0FBMkMsRUFBRSxDQUFDO1FBUXJFLGFBQVEsR0FBRyxDQUFJLElBQVksRUFBRSxFQUFXLEVBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFGdEcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxZQUFZLElBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3hCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztnQkFDdkUsT0FBTyxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBQ0QsSUFBSSxZQUFZO1FBQ2QsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQzVDLE9BQU8sWUFBWSxJQUFJLGdCQUFnQixDQUFDO0lBQzFDLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLE9BQU8sS0FBSyxjQUFjLElBQUksY0FBYyxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUNELElBQUksY0FBYztRQUNoQixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDckUsT0FBTyxjQUFjLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsSUFBWSxFQUFFLEtBQXdCLEVBQzNDLE9BV0M7UUFDRCxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDM0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxHQUFHLE9BQU8sRUFBRSxPQUFPLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO1FBQ3JHLGlCQUFpQjtRQUNqQixJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQVcsYUFBYSxJQUFJLEVBQUUsRUFBRTtZQUNuRCxLQUFLO1lBQ0wsTUFBTTtZQUNOLE9BQU87WUFDUCxPQUFPO1lBQ1AsS0FBSyxFQUFFLFlBQVk7U0FDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFDM0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsSUFBWSxFQUFFLE9BQWlCLEVBQUUsT0FNdEM7UUFDQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDM0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQXNCLG1CQUFtQixJQUFJLEVBQUUsRUFBRTtZQUNwRSxPQUFPO1lBQ1AsT0FBTztZQUNQLE9BQU87WUFDUCxLQUFLO1NBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxJQUFZLEVBQUUsSUFBaUMsRUFBRSxPQUd4RDtRQUNDLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQVMsQ0FBQztRQUNsQyxJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7WUFDekIsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN2QztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQWMseUJBQXlCLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsSUFBWSxFQUFFLElBQWlDLEVBQUUsT0FLeEQ7UUFDQyxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFTLENBQUM7UUFDbEMsSUFBSSxPQUFPLEVBQUU7WUFDWCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQztZQUNoQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RDLElBQUksS0FBSztnQkFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNqQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ25CLHFCQUFxQixJQUFJLEVBQUUsRUFDM0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLElBQWtDLEVBQUUsSUFBWTtRQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztRQUN2RSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pFLFFBQVE7WUFDUixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBVyxDQUFDLENBQUMsQ0FBQztRQUN4RCxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNILE9BQU8sQ0FBQyxJQUFZLEVBQUUsS0FBYSxFQUFFLElBQWtDLEVBQ3JFLE9BSUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFTLENBQUM7UUFDbEMsSUFBSSxPQUFPLEVBQUU7WUFDWCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQztZQUNoQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RDLElBQUksS0FBSztnQkFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNqQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ25CLDBCQUEwQixJQUFJLElBQUksS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRDs7Ozs7O09BTUc7SUFDSCxJQUFJLENBQUMsSUFBWSxFQUFFLElBQWtDLEVBQUUsSUFBMkMsRUFBRSxPQUduRztRQUNDLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQVMsQ0FBQztRQUNsQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMvQyxJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7WUFDekIsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN2QztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMseUJBQXlCLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxJQUFZLEVBQUUsSUFBa0MsRUFBRSxPQUFvRDtRQUNoSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNuQixDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLGFBQWEsQ0FBQyxDQUFDO1lBQzVDLHlCQUF5QixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMscUNBQXFDLElBQUksRUFBRSxFQUFFO1lBQ2pGLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFTO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLElBQVksRUFBRSxJQUFZLEVBQUUsWUFBdUI7UUFDeEQsSUFBSSxPQUFPLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztRQUMxQixZQUFZLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDL0MsMkJBQTJCLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLElBQVksRUFBRSxJQUFrQyxFQUFFLE9BSzlEO1FBQ0MsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQzNCLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQWEsMEJBQTBCLElBQUksRUFBRSxFQUFFO1lBQ2xFLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBUztZQUNoQyxPQUFPLEVBQUUsUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDN0QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBYSxFQUFFLE9BQTBCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQXlELGtCQUFrQixFQUFFO1lBQ2hHLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sRUFBUztZQUNwQyxPQUFPLEVBQUUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFO1NBQ25DLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDakMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQWEsc0JBQXNCLElBQUksU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEgsQ0FBQztJQUNEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFZLHNCQUFzQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUNELHFCQUFxQjtJQUNyQixVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQWEscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLFlBQW9CLEVBQUUsSUFBVztRQUM1QyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssWUFBWTtZQUNwQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLE1BQU0sR0FBRyxHQUFHLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQVMseUJBQXlCLFlBQVksRUFBRSxFQUFFO1lBQ2hHLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzdDLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUU7U0FDbkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRDs7Ozs7TUFLRTtJQUNLLElBQUksQ0FBQyxJQUFZLEVBQUUsSUFBYSxFQUNyQyxJQUFzQztRQUN0QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNyRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDeEIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hELElBQUksR0FBRyxLQUFLLGNBQWM7b0JBQ3hCLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDO3FCQUNyQixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ3hDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTt3QkFDbkMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDekIsSUFBSSxJQUFJLElBQUksS0FBSyxhQUFhLElBQUssUUFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7NEJBQ2hFLFFBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7cUJBQ3pDO29CQUNELElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUNyQjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSyxTQUFTLENBQUMsSUFBWSxFQUM1QixLQUFlLEVBQ2YsTUFBZ0I7UUFDaEIsT0FBTyxDQUFDLE1BQTRCLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2hFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25CLE1BQU0sV0FBVyxHQUFzQixFQUFFLENBQUM7Z0JBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO2dCQUN2RSxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFO29CQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbkIsT0FBTztpQkFDUjtnQkFDRCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUN6QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNqQixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDbkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUFFLE9BQU87d0JBQ2pCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNyRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDdEQsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFOzRCQUNULElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsSUFBSSxDQUFDOzRCQUMxQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFO2dDQUN0QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUNsQixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO29DQUNiLE9BQU8sR0FBRyxLQUFLLENBQUM7b0NBQ2hCLE1BQU07aUNBQ1A7Z0NBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7b0NBQ1QsTUFBTTtnQ0FDUixDQUFDLEVBQUUsQ0FBQzs2QkFDTDs0QkFDRCxJQUFJLE9BQU8sRUFBRTtnQ0FDWCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQVcsQ0FBQztnQ0FDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dDQUN6QixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDckUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0NBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBQzFELFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7NkJBQy9CO3lCQUNGO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTt3QkFDWCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUM1RCxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7cUJBQ3ZCO3lCQUNJLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTt3QkFDZixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDeEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUMxQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDeEQsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztxQkFDL0I7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxXQUFXLENBQUMsTUFBTTtvQkFDcEIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7d0JBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ2hCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDckIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN2QjtvQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoQixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7T0FHRztJQUNLLGNBQWMsQ0FBSSxJQUFZLEVBQUUsT0FBa0I7UUFDeEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQ2xFLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbkIsTUFBTSxXQUFXLEdBQXNCLEVBQUUsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ2YsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEQsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO3dCQUN2QixXQUFXO3dCQUNYLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO3dCQUN4QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUM5RCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQzNCLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7cUJBQzlCO2dCQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ04sSUFBSSxXQUFXLENBQUMsTUFBTTtvQkFDcEIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7d0JBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ2hCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDckIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN2QjtvQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNqQixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7d0dBOVlVLFdBQVcsa0JBSUYsYUFBYTs0R0FKdEIsV0FBVyxjQURFLE1BQU07MkZBQ25CLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFLbkIsTUFBTTsyQkFBQyxhQUFhOztBQTZZbkMsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRztJQUNqQyxPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDMUIsR0FBRyxFQUFFLEVBQ0wsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFDckIsQ0FBQztBQUNELDJDQUEyQztBQUMzQyxNQUFNLFVBQVUsUUFBUTtJQUd0QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFDaEIsT0FBTyxDQUFDLE1BQTRCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzNELENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDWixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzaGFyZVJlcGxheSwgdGFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IHNldEN1cnJlbmN5Q29kZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1iYXNlJztcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNTdHJpbmcgfSBmcm9tICcuLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEJpekRvY0NvbmZpZywgQklaRE9DX0NPTkZJRywgUGFyYW1NYXAsIFNjb3BlVHlwZSB9IGZyb20gJy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IEZpZWxkSW5mbywgQXhpc1R5cGUsIEF4ZXNNYXAgfSBmcm9tICcuLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhc291cmNlU2VydmljZSB9IGZyb20gJy4uL2NvcmUvZGF0YXNvdXJjZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZ2V0Q3VycmVuY3lTeW1ib2wsIGdldExvY2FsZU51bWJlckZvcm1hdCwgTnVtYmVyRm9ybWF0U3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFDQ09VTlRfREVMSU1JVEVSID0gJy4nLCBERUZBVUxUX0NVUlJFTkNZID0gJ1VTRCc7XHJcblxyXG4vKiogaW4gY2FzZSB4QXhpcyBvciBzZXJpZXMgaXMgZ2l2ZW4gbW9yZSB0aGFuIG9uZSBheGlzLFxyXG4gKiB0aGUgdmFsdWUgcmV0dXJuZWQgaXMgY29tYmluZWQgb2YgdmFsdWVzIHNlcGVyYXRlZCBieSB0aGlzIGNoYXJhY3Rlci4gKi9cclxuZXhwb3J0IGNvbnN0IEFYRVNfQ09ERV9ESVZJREVSID0gJ19fJztcclxuXHJcbmV4cG9ydCBjb25zdCBBWEVTX0xBQkVMX0RJVklERVIgPSAnLSc7XHJcbi8qKiByZXByZXNlbnRzIGEgcGxhY2UgaW4gcGF0dGVybiB0byBiZSByZXBsYWNlZCBieSBiYXNlIGF4aXMuICovXHJcbmV4cG9ydCBjb25zdCBBWElTX01BUF9DSEFSID0gJyMnLCBBWElTX01BUF9BU19JUyA9ICcqJztcclxuXHJcbmV4cG9ydCBjb25zdCBBWElTX1NQRUNJQUxfQ0hBUlMgPSAvW1xcLjsjXFwtLFxcIV0vO1xyXG5cclxuLyoqIGFsbG93ZWQgY2hhcmFjdGVycyBmb3IgYXhpcyB2YWx1ZSAvIGNvbGxlY3Rpb24gLyByYW5nZSAvIHBhdHRlcm4uICovXHJcbi8vXFxwTFxyXG5leHBvcnQgY29uc3QgQVhJU19WQUxVRV9QQVRURVJOID0gL14oKCE/XFx3KyhcXCxcXHcrKSopfCghP1xcdytcXC1cXHcrKXwoIT9bXFx3XFwuXFwqXFwjXSspKShbO10oKCE/XFx3KyhcXCxcXHcrKSopfCghP1xcdytcXC1cXHcrKXwoIT9bXFx3XFwuXFwqXFwjXSspKSkqJC87XHJcblxyXG5leHBvcnQgY29uc3QgQ0xEUl9GSUxFUyA9IFsnY2xkci1kYXRhL21haW4vezB9L2N1cnJlbmNpZXMuanNvbicsICdjbGRyLWRhdGEvbWFpbi97MH0vY2EtZ3JlZ29yaWFuLmpzb24nLCAnY2xkci1kYXRhL21haW4vezB9L251bWJlcnMuanNvbicsICdjbGRyLWRhdGEvbWFpbi97MH0vdGltZVpvbmVOYW1lcy5qc29uJywgJ2NsZHItZGF0YS9zdXBwbGVtZW50YWwvbnVtYmVyaW5nU3lzdGVtcy5qc29uJ107XHJcblxyXG4vKiogcXVlcnkgY3ViZSAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQ3ViZVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhY2hlOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4Y2hhbmdlUmF0ZXM6IHsgW2NvZGU6IHN0cmluZ106IE9ic2VydmFibGU8bnVtYmVyPiB9ID0ge307XHJcbiAgLy8gY3RvclxyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQklaRE9DX0NPTkZJRykgcHJpdmF0ZSBfY29uZmlnOiBCaXpEb2NDb25maWcsXHJcbiAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBfdHlwZTogRGF0YXNvdXJjZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSkge1xyXG4gICAgX2NvbmZpZyAmJiBfY29uZmlnLmN1cnJlbmN5Q29kZSAmJiBzZXRDdXJyZW5jeUNvZGUoX2NvbmZpZy5jdXJyZW5jeUNvZGUpO1xyXG4gIH1cclxuICBwcml2YXRlIF9jYWNoZU9yID0gPFQ+KG5hbWU6IHN0cmluZywgZm46ICgpID0+IFQpOiBUID0+IHRoaXMuX2NhY2hlW25hbWVdIHx8ICh0aGlzLl9jYWNoZVtuYW1lXSA9IGZuKCkpO1xyXG4gIC8qKiBzeXN0ZW0gY3VycmVuY3kgKi9cclxuICBnZXQgbnVtYmVyRm9ybWF0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW5jeUNvZGUgP1xyXG4gICAgICBnZXRMb2NhbGVOdW1iZXJGb3JtYXQodGhpcy5fc2Vzc2lvbi5sYW5ndWFnZSwgTnVtYmVyRm9ybWF0U3R5bGUuQ3VycmVuY3kpLlxyXG4gICAgICAgIHJlcGxhY2UoJ8KkJywgZ2V0Q3VycmVuY3lTeW1ib2wodGhpcy5jdXJyZW5jeUNvZGUsICduYXJyb3cnKSkgOlxyXG4gICAgICBnZXRMb2NhbGVOdW1iZXJGb3JtYXQodGhpcy5fc2Vzc2lvbi5sYW5ndWFnZSwgTnVtYmVyRm9ybWF0U3R5bGUuRGVjaW1hbCk7XHJcbiAgfVxyXG4gIGdldCBjdXJyZW5jeUNvZGUoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHsgY3VycmVuY3lDb2RlIH0gPSB0aGlzLl9jb25maWcgfHwge307XHJcbiAgICByZXR1cm4gY3VycmVuY3lDb2RlIHx8IERFRkFVTFRfQ1VSUkVOQ1k7XHJcbiAgfVxyXG4gIGdldCBkaWdpdHNJbmZvKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB7IGZyYWN0aW9uRGlnaXRzIH0gPSB0aGlzO1xyXG4gICAgcmV0dXJuIGAxLiR7ZnJhY3Rpb25EaWdpdHN9LSR7ZnJhY3Rpb25EaWdpdHN9YDtcclxuICB9XHJcbiAgZ2V0IGZyYWN0aW9uRGlnaXRzKCk6IG51bWJlciB7XHJcbiAgICBjb25zdCB7IGZvcm1hdHMgfSA9IHRoaXMuX2NvbmZpZywgeyBmcmFjdGlvbkRpZ2l0cyB9ID0gZm9ybWF0cyB8fCB7fTtcclxuICAgIHJldHVybiBmcmFjdGlvbkRpZ2l0cyAhPT0gdW5kZWZpbmVkID8gZnJhY3Rpb25EaWdpdHMgOiAyO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBxdWVyeSBjdWJlIGJ5IGF4ZXMsIHNlcmllcyBhbmQgaW5kaWNlc1xyXG4gICAqIEBwYXJhbSBjdWJlIG5hbWVcclxuICAgKiBAcGFyYW0geEF4aXMgZ3JvdXAgYnkgb25lIG9yIG1vcmUgYXhpc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgc2VyaWVzKGN1YmU6IHN0cmluZywgeEF4aXM6IHN0cmluZyB8IHN0cmluZ1tdLFxyXG4gICAgb3B0aW9ucz86IHtcclxuICAgICAgLyoqIGdyb3VwIHNlcmllcyBieSBvbmUgb3IgbW9yZSBheGlzICovXHJcbiAgICAgIHNlcmllcz86IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gICAgICAvKiogaW5jbHVkZSBvbmUgb3IgbW9yZSBpbmRleCBzZXJpZSAqL1xyXG4gICAgICBpbmRpY2VzPzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgICAgIGdyb3VwSW5kaWNlcz86IGJvb2xlYW4sXHJcbiAgICAgIC8qKiBheGVzICovXHJcbiAgICAgIGZpbHRlcnM/OiB7IFtheGlzOiBzdHJpbmddOiBBeGlzVHlwZSB9O1xyXG4gICAgICBzY29wZT86IFNjb3BlVHlwZSxcclxuICAgICAgLyoqIHJlcGxhY2UgYmFzZSAqL1xyXG4gICAgICBiYXNlPzogeyBbYXhpczogc3RyaW5nXTogKHN0cmluZyB8IG51bWJlcikgfSB8IEFycmF5PHN0cmluZyB8IG51bWJlcj47XHJcbiAgICB9KTogT2JzZXJ2YWJsZTxTZXJpZXNbXT4ge1xyXG4gICAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XHJcbiAgICBjb25zdCB7IGZpbHRlcnM6IGF4ZXMsIHNlcmllcywgaW5kaWNlcywgYmFzZSwgc2NvcGUsIGdyb3VwSW5kaWNlcyB9ID0gb3B0aW9ucywgZmlsdGVycyA9IHsgLi4uYXhlcyB9O1xyXG4gICAgLy8gbm9ybWFsaXplIGFyZ3NcclxuICAgIGJhc2UgJiYgdGhpcy5iYXNlKGN1YmUsIGZpbHRlcnMsIGJhc2UpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PFNlcmllc1tdPihgL2FwaS9jdWJlLyR7Y3ViZX1gLCB7XHJcbiAgICAgIHhBeGlzLFxyXG4gICAgICBzZXJpZXMsXHJcbiAgICAgIGluZGljZXMsXHJcbiAgICAgIGZpbHRlcnMsXHJcbiAgICAgIHNjb3BlLCBncm91cEluZGljZXNcclxuICAgIH0pLnBpcGUodGhpcy5fZGVjb3JhdGUoY3ViZSwgaXNBcnJheSh4QXhpcykgPyB4QXhpcyA6IFt4QXhpc10sXHJcbiAgICAgIHNlcmllcyA/IGlzQXJyYXkoc2VyaWVzKSA/IHNlcmllcyA6IFtzZXJpZXNdIDogbnVsbCkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBhZ2dyZWdhdGUgY3ViZSB0byBmbGF0IGNvbGxlY3Rpb24gb2YgY29sdW1ucyBhbmQgdmFsdWUocylcclxuICAgKiBAcGFyYW0gY3ViZSBuYW1lXHJcbiAgICogQHBhcmFtIGNvbHVtbnNcclxuICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAqL1xyXG4gIHRhYmxlKGN1YmU6IHN0cmluZywgY29sdW1uczogc3RyaW5nW10sIG9wdGlvbnM/OiB7XHJcbiAgICAvKiogYXhlcyAqL1xyXG4gICAgZmlsdGVycz86IEF4ZXNNYXA7XHJcbiAgICAvKiogaW5jbHVkZSBvbmUgb3IgbW9yZSBpbmRleCB2YWx1ZXMgKi9cclxuICAgIGluZGljZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICAgIHNjb3BlPzogU2NvcGVUeXBlLFxyXG4gIH0pOiBPYnNlcnZhYmxlPHsgdmFsdWU6IG51bWJlciB9W10+IHtcclxuICAgIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xyXG4gICAgY29uc3QgeyBmaWx0ZXJzLCBpbmRpY2VzLCBzY29wZSB9ID0gb3B0aW9ucztcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDx7IHZhbHVlOiBudW1iZXIgfVtdPihgL2FwaS9jdWJlL3RhYmxlLyR7Y3ViZX1gLCB7XHJcbiAgICAgIGNvbHVtbnMsXHJcbiAgICAgIGluZGljZXMsXHJcbiAgICAgIGZpbHRlcnMsXHJcbiAgICAgIHNjb3BlXHJcbiAgICB9KS5waXBlKHRoaXMuX2RlY29yYXRlVGFibGUoY3ViZSwgY29sdW1ucykpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBpbmZvcm1hdGlvbiBvbiBleHBlY3RlZCBleHBsb3JlIHR5cGVcclxuICAgKiBAcGFyYW0gY3ViZSBuYW1lXHJcbiAgICogQHBhcmFtIGF4ZXMgZmlsdGVyc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgcmVzb2x2ZShjdWJlOiBzdHJpbmcsIGF4ZXM6IHsgW2tleTogc3RyaW5nXTogQXhpc1R5cGUgfSwgb3B0aW9ucz86IHtcclxuICAgIC8qKiByZXBsYWNlIGJhc2UgKi9cclxuICAgIGJhc2U/OiB7IFtheGlzOiBzdHJpbmddOiAoc3RyaW5nIHwgbnVtYmVyKSB9IHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICB9KTogT2JzZXJ2YWJsZTxFeHBsb3JlVHlwZT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0geyAuLi5heGVzIH0gYXMgYW55O1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgY29uc3QgeyBiYXNlIH0gPSBvcHRpb25zO1xyXG4gICAgICBiYXNlICYmIHRoaXMuYmFzZShjdWJlLCBwYXJhbXMsIGJhc2UpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PEV4cGxvcmVUeXBlPihgL2FwaS9jdWJlL2V4cGxvcmV0eXBlLyR7Y3ViZX1gLCB7IHBhcmFtcyB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogZXhwbG9yZSBpdGVtcyBieSBheGlzXHJcbiAgICogQHBhcmFtIGN1YmUgbmFtZVxyXG4gICAqIEBwYXJhbSBheGVzIGZpbHRlcnNcclxuICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAqL1xyXG4gIGV4cGxvcmUoY3ViZTogc3RyaW5nLCBheGVzOiB7IFtrZXk6IHN0cmluZ106IEF4aXNUeXBlIH0sIG9wdGlvbnM/OiB7XHJcbiAgICAvKiogcmVzdHJpY3QgcmVzdWx0cyB0byB1c2VyIHBhdHRlcm5zIG9yIHBvc2l0aW9ucyAqL1xyXG4gICAgc2NvcGU/OiBTY29wZVR5cGUsXHJcbiAgICAvKiogcmVwbGFjZSBiYXNlICovXHJcbiAgICBiYXNlPzogeyBbYXhpczogc3RyaW5nXTogKHN0cmluZyB8IG51bWJlcikgfSB8IEFycmF5PHN0cmluZyB8IG51bWJlcj47XHJcbiAgfSk6IE9ic2VydmFibGU8YW55W10+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4uYXhlcyB9IGFzIGFueTtcclxuICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgIGNvbnN0IHsgYmFzZSwgc2NvcGUgfSA9IG9wdGlvbnM7XHJcbiAgICAgIGJhc2UgJiYgdGhpcy5iYXNlKGN1YmUsIHBhcmFtcywgYmFzZSk7XHJcbiAgICAgIGlmIChzY29wZSkgcGFyYW1zLnNjb3BlID0gc2NvcGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8YW55W10+KFxyXG4gICAgICBgL2FwaS9jdWJlL2V4cGxvcmUvJHtjdWJlfWAsXHJcbiAgICAgIHsgcGFyYW1zIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gYXhlc1xyXG4gICAqIEBwYXJhbSBjdWJlXHJcbiAgICovXHJcbiAgbmFtZU9mKGF4ZXM6IHsgW2F4aXM6IHN0cmluZ106IEF4aXNUeXBlIH0sIGN1YmU6IHN0cmluZykge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSBjdWJlKTtcclxuICAgIGNvbnN0IG9ic2VydmFibGVzID0gb3B0aW9ucy5heGVzLmZpbHRlcihhID0+IGlzU3RyaW5nKGF4ZXNbYS5uYW1lXSkgJiZcclxuICAgICAgLy8gdmFsdWVcclxuICAgICAgIUFYSVNfU1BFQ0lBTF9DSEFSUy50ZXN0KGF4ZXNbYS5uYW1lXSBhcyBzdHJpbmcpKS5tYXAoYSA9PlxyXG4gICAgICAgIHRoaXMuX3R5cGUuZ2V0KGEuZGF0YVR5cGUsIGF4ZXNbYS5uYW1lXSBhcyBzdHJpbmcpKTtcclxuICAgIHJldHVybiAob2JzZXJ2YWJsZXMubGVuZ3RoID8gZm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnBpcGUobWFwKG8gPT4gby5qb2luKCcgJykpKSA6IG9mKG51bGwpKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogZXhwbG9yZSBpbmRpY2VzIGJ5IGF4aXNcclxuICAgKiBAcGFyYW0gY3ViZSBuYW1lXHJcbiAgICogQHBhcmFtIGluZGV4IG5hbWVcclxuICAgKiBAcGFyYW0gYXhlcyBmaWx0ZXJzXHJcbiAgICogQHBhcmFtIG9wdGlvbnNcclxuICAgKi9cclxuICBpbmRpY2VzKGN1YmU6IHN0cmluZywgaW5kZXg6IHN0cmluZywgYXhlczogeyBbYXhpczogc3RyaW5nXTogQXhpc1R5cGUgfSxcclxuICAgIG9wdGlvbnM/OiB7XHJcbiAgICAgIC8qKiByZXN0cmljdCByZXN1bHRzIHRvIHVzZXIgcGF0dGVybnMgb3IgcG9zaXRpb25zICovXHJcbiAgICAgIHNjb3BlPzogU2NvcGVUeXBlXHJcbiAgICAgIGJhc2U/OiB7IFtheGlzOiBzdHJpbmddOiAoc3RyaW5nIHwgbnVtYmVyKSB9IHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICAgIH0pOiBPYnNlcnZhYmxlPGFueVtdPiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7IC4uLmF4ZXMgfSBhcyBhbnk7XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICBjb25zdCB7IGJhc2UsIHNjb3BlIH0gPSBvcHRpb25zO1xyXG4gICAgICBiYXNlICYmIHRoaXMuYmFzZShjdWJlLCBwYXJhbXMsIGJhc2UpO1xyXG4gICAgICBpZiAoc2NvcGUpIHBhcmFtcy5zY29wZSA9IHNjb3BlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PGFueVtdPihcclxuICAgICAgYC9hcGkvY3ViZS9leHBsb3JlaW5kZXgvJHtjdWJlfS8ke2luZGV4fWAsIHsgcGFyYW1zIH0pLlxyXG4gICAgICBwaXBlKHRoaXMuX2RlY29yYXRlVGFibGUoY3ViZSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBnZXQgZXhwbG9yZSBpdGVtIGJ5IGF4aXMgYW5kIGtleShzKVxyXG4gICAqIEBwYXJhbSBjdWJlXHJcbiAgICogQHBhcmFtIGF4ZXNcclxuICAgKiBAcGFyYW0ga2V5c1xyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgaXRlbShjdWJlOiBzdHJpbmcsIGF4ZXM6IHsgW2F4aXM6IHN0cmluZ106IEF4aXNUeXBlIH0sIGtleXM6IChzdHJpbmcgfCBudW1iZXIpW10gfCBzdHJpbmcgfCBudW1iZXIsIG9wdGlvbnM/OiB7XHJcbiAgICAvKiogcmVwbGFjZSBiYXNlICovXHJcbiAgICBiYXNlPzogeyBbYXhpczogc3RyaW5nXTogKHN0cmluZyB8IG51bWJlcikgfSB8IEFycmF5PHN0cmluZyB8IG51bWJlcj47XHJcbiAgfSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7IC4uLmF4ZXMgfSBhcyBhbnk7XHJcbiAgICBwYXJhbXNbJ2tleSddID0gaXNBcnJheShrZXlzKSA/IGtleXNbMF0gOiBrZXlzO1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgY29uc3QgeyBiYXNlIH0gPSBvcHRpb25zO1xyXG4gICAgICBiYXNlICYmIHRoaXMuYmFzZShjdWJlLCBwYXJhbXMsIGJhc2UpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0KGAvYXBpL2N1YmUvZXhwbG9yZWl0ZW0vJHtjdWJlfWAsIHsgcGFyYW1zIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gY3ViZSBuYW1lXHJcbiAgICogQHBhcmFtIGF4ZXMgY29uZGl0aW9uXHJcbiAgICovXHJcbiAgY29uc3RyYWludHMoY3ViZTogc3RyaW5nLCBheGVzPzogeyBba2V5OiBzdHJpbmddOiBBeGlzVHlwZSB9LCBvcHRpb25zPzogeyBzb3VyY2U6ICdjb25zdHJhaW50cycgfCAnY29tYmluYXRpb25zJyB9KTogT2JzZXJ2YWJsZTx7IFtkYXRhVHlwZTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8eyBbZGF0YVR5cGU6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogYW55IH0gfT4oXHJcbiAgICAgICFvcHRpb25zIHx8IG9wdGlvbnMuc291cmNlID09PSAnY29uc3RyYWludHMnID9cclxuICAgICAgICBgL2FwaS9jdWJlL2NvbnN0cmFpbnRzLyR7Y3ViZX1gIDogYC9hcGkvY3ViZS9jb21iaW5hdGlvbnNjb25zdHJhaW50cy8ke2N1YmV9YCwge1xyXG4gICAgICBwYXJhbXM6IHsgLi4uYXhlcyB9IGFzIGFueVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBjdWJlIG5hbWVcclxuICAgKiBAcGFyYW0gYXhpcyBuYW1lXHJcbiAgICovXHJcbiAgdmFsdWVzKGN1YmU6IHN0cmluZywgYXhpczogc3RyaW5nLCBkZXBlbmRlbmNpZXM/OiBQYXJhbU1hcCk6IE9ic2VydmFibGU8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4ge1xyXG4gICAgbGV0IGNhY2hlSWQgPSBjdWJlICsgYXhpcztcclxuICAgIGRlcGVuZGVuY2llcyAmJiBPYmplY3Qua2V5cyhkZXBlbmRlbmNpZXMpLmZvckVhY2goayA9PiBjYWNoZUlkICs9IGspO1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlT3IoY2FjaGVJZCwgKCk9PiB0aGlzLl9odHRwLmdldDx7IFtkYXRhVHlwZTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB9PihcclxuICAgICAgYC9hcGkvY3ViZS9zZWdtZW50dmFsdWVzLyR7Y3ViZX0vJHtheGlzfWAsIHsgcGFyYW1zOiBkZXBlbmRlbmNpZXMgfSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBnZXQgYXhpcyBjb21iaW5hdGlvbnNcclxuICAgKiBAcGFyYW0gY3ViZSBuYW1lXHJcbiAgICogQHBhcmFtIGF4ZXMgZmlsdGVyc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgY29tYmluYXRpb25zKGN1YmU6IHN0cmluZywgYXhlcz86IHsgW2tleTogc3RyaW5nXTogQXhpc1R5cGUgfSwgb3B0aW9ucz86IHtcclxuICAgIC8qKiB0b3AgKi9cclxuICAgIHRha2U/OiBudW1iZXI7XHJcbiAgICAvKiogcHJvY2VzcyBpbiBiYWNrZ3JvdW5kICovXHJcbiAgICBwcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nW11bXT4ge1xyXG4gICAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XHJcbiAgICBjb25zdCB7IHRha2UsIHByb2dyZXNzIH0gPSBvcHRpb25zO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PHN0cmluZ1tdW10+KGAvYXBpL2N1YmUvY29tYmluYXRpb25zLyR7Y3ViZX1gLCB7XHJcbiAgICAgIHBhcmFtczogeyAuLi5heGVzLCB0YWtlIH0gYXMgYW55LFxyXG4gICAgICBoZWFkZXJzOiBwcm9ncmVzcyA9PT0gZmFsc2UgPyB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IDoge31cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gdmFsdWVcclxuICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAqL1xyXG4gIHNlYXJjaCh2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiB7IHRha2U/OiBudW1iZXIgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PHsgY3ViZTogc3RyaW5nLCBheGlzOiBzdHJpbmcsIGtleTogYW55LCB2YWx1ZTogYW55IH1bXT4oJy9hcGkvY3ViZS9zZWFyY2gnLCB7XHJcbiAgICAgIHBhcmFtczogeyB2YWx1ZSwgLi4ub3B0aW9ucyB9IGFzIGFueSxcclxuICAgICAgaGVhZGVyczogeyAnbm8tcHJvZ3Jlc3MnOiAndHJ1ZScgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIGdldCBzZWdtZW50c1xyXG4gICAqIEBwYXJhbSBjdWJlXHJcbiAgICovXHJcbiAgc2VnbWVudHMoY3ViZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlZ21lbnRNYXA+IHtcclxuICAgIHJldHVybiB0aGlzLl9jYWNoZU9yKGAke3R5cGV9LXNlZ21lbnRzYCwgKCkgPT4gdGhpcy5faHR0cC5nZXQ8U2VnbWVudE1hcD4oYC9hcGkvY3ViZS9zZWdtZW50cy8ke2N1YmV9P3R5cGU9JHt0eXBlfWApKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogZ2V0IHVzZXIgcGF0dGVybnNcclxuICAgKiBAcGFyYW0gY3ViZVxyXG4gICAqL1xyXG4gIHBhdHRlcm5zKGN1YmU6IHN0cmluZyk6IE9ic2VydmFibGU8UGF0dGVybltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVPcihgJHtjdWJlfS1wYXR0ZXJuc2AsICgpID0+IHRoaXMuX2h0dHAuZ2V0PFBhdHRlcm5bXT4oYC9hcGkvY3ViZS9wYXR0ZXJucy8ke2N1YmV9YCkpO1xyXG4gIH1cclxuICAvKiogZ2V0IGN1cnJlbmNpZXMgKi9cclxuICBjdXJyZW5jaWVzKCk6IE9ic2VydmFibGU8Q3VycmVuY3lbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlT3IoJ2N1cnJlbmNpZXMnLCAoKSA9PlxyXG4gICAgICB0aGlzLl9odHRwLmdldDxDdXJyZW5jeVtdPignYXBpL2N1YmUvY3VycmVuY2llcycpLnBpcGUoc2hhcmVSZXBsYXkoKSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBnZXQgZXhjaGFuZ2UgcmF0ZVxyXG4gICAqIEBwYXJhbSBjdXJyZW5jeUNvZGVcclxuICAgKiBAcGFyYW0gZGF0ZVxyXG4gICAqL1xyXG4gIGV4Y2hhbmdlUmF0ZShjdXJyZW5jeUNvZGU6IHN0cmluZywgZGF0ZT86IERhdGUpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgaWYgKHRoaXMuY3VycmVuY3lDb2RlID09PSBjdXJyZW5jeUNvZGUpXHJcbiAgICAgIHJldHVybiBvZigxKTtcclxuICAgIGNvbnN0IGtleSA9IGN1cnJlbmN5Q29kZSArIChkYXRlID8gZGF0ZS50b0pTT04oKSA6ICcnKTtcclxuICAgIGlmICh0aGlzLl9leGNoYW5nZVJhdGVzW2tleV0pXHJcbiAgICAgIHJldHVybiB0aGlzLl9leGNoYW5nZVJhdGVzW2tleV07XHJcbiAgICByZXR1cm4gdGhpcy5fZXhjaGFuZ2VSYXRlc1trZXldID0gdGhpcy5faHR0cC5nZXQ8bnVtYmVyPihgYXBpL2N1YmUvZXhjaGFuZ2VSYXRlLyR7Y3VycmVuY3lDb2RlfWAsIHtcclxuICAgICAgcGFyYW1zOiBkYXRlID8geyBkYXRlOiBkYXRlLnRvSlNPTigpIH0gOiBudWxsLFxyXG4gICAgICBoZWFkZXJzOiB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9XHJcbiAgICB9KS5waXBlKHNoYXJlUmVwbGF5KCkpO1xyXG4gIH1cclxuICAvKipcclxuICAqIHJlcGxhY2VzICogb3IgIyB3aXRoIG9yaWdpbiBheGlzIGF0IGNoYXIgcGxhY2VcclxuICAqIEBwYXJhbSBjdWJlIG5hbWVcclxuICAqIEBwYXJhbSBheGVzIG1hcFxyXG4gICogQHBhcmFtIGJhc2Ugb3JpZ2luXHJcbiAgKi9cclxuICBwdWJsaWMgYmFzZShjdWJlOiBzdHJpbmcsIGF4ZXM6IEF4ZXNNYXAsXHJcbiAgICBiYXNlOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgQXhlc01hcCk6IHZvaWQge1xyXG4gICAgY29uc3QgY2N1YmUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gY3ViZSk7XHJcbiAgICBjY3ViZS5heGVzLmZvckVhY2goKGEsIGkpID0+IHtcclxuICAgICAgY29uc3QgdmFsID0gYXhlc1thLm5hbWVdO1xyXG4gICAgICBpZiAodmFsICYmIGlzU3RyaW5nKHZhbCkpIHtcclxuICAgICAgICBjb25zdCBheGlzYmFzZSA9IGlzQXJyYXkoYmFzZSkgPyBiYXNlW2ldIDogYmFzZVthLm5hbWVdO1xyXG4gICAgICAgIGlmICh2YWwgPT09IEFYSVNfTUFQX0FTX0lTKVxyXG4gICAgICAgICAgYXhlc1thLm5hbWVdID0gYXhpc2Jhc2U7XHJcbiAgICAgICAgZWxzZSBpZiAodmFsLmluZGV4T2YoQVhJU19NQVBfQ0hBUikgPiAtMSkge1xyXG4gICAgICAgICAgbGV0IGF4aXMgPSAnJztcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdmFsLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGxldCBjaGFyID0gdmFsLmNoYXJBdChqKTtcclxuICAgICAgICAgICAgYXhpcyArPSBjaGFyID09PSBBWElTX01BUF9DSEFSICYmIChheGlzYmFzZSBhcyBzdHJpbmcpLmxlbmd0aCA+IGogP1xyXG4gICAgICAgICAgICAgIChheGlzYmFzZSBhcyBzdHJpbmcpLmNoYXJBdChqKSA6IGNoYXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBheGVzW2EubmFtZV0gPSBheGlzO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIGFkZHMgdmFsdWVzIHRvIHNvdXJjZSBrZXlzXHJcbiAgICogQHBhcmFtIGN1YmVcclxuICAgKiBAcGFyYW0geEF4aXNcclxuICAgKiBAcGFyYW0gc2VyaWVzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZGVjb3JhdGUoY3ViZTogc3RyaW5nLFxyXG4gICAgeEF4aXM6IHN0cmluZ1tdLFxyXG4gICAgc2VyaWVzOiBzdHJpbmdbXSk6IChzb3VyY2U6IE9ic2VydmFibGU8U2VyaWVzW10+KSA9PiBPYnNlcnZhYmxlPFNlcmllc1tdPiB7XHJcbiAgICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxTZXJpZXNbXT4pID0+IG5ldyBPYnNlcnZhYmxlKG9ic2VydmUgPT4ge1xyXG4gICAgICBzb3VyY2Uuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9ic2VydmFibGVzOiBPYnNlcnZhYmxlPGFueT5bXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gY3ViZSk7XHJcbiAgICAgICAgY29uc3QgYXhpc1R5cGVNYXAgPSB7fTtcclxuICAgICAgICBvcHRpb25zLmF4ZXMuZm9yRWFjaCh4ID0+IGF4aXNUeXBlTWFwW3gubmFtZV0gPSB4LmRhdGFUeXBlKTtcclxuICAgICAgICBpZiAoIXIubGVuZ3RoKSB7XHJcbiAgICAgICAgICBvYnNlcnZlLm5leHQocik7XHJcbiAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGJhc2UgPSByWzBdLnBvaW50cztcclxuICAgICAgICByLmZvckVhY2goKHMsIGkpID0+IHtcclxuICAgICAgICAgIHMucG9pbnRzLmZvckVhY2gocCA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcC54KSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IHBvYnNlcnZhYmxlID0gZm9ya0pvaW4ocC54LnNwbGl0KEFYRVNfQ09ERV9ESVZJREVSKS5tYXAoKGssIGopID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5fdHlwZS5nZXQoYXhpc1R5cGVNYXBbeEF4aXNbal1dLCBrKSkpLlxyXG4gICAgICAgICAgICAgIHBpcGUodGFwKG8gPT4gcC5uYW1lID0gby5qb2luKEFYRVNfTEFCRUxfRElWSURFUikpKTtcclxuICAgICAgICAgICAgb2JzZXJ2YWJsZXMucHVzaChwb2JzZXJ2YWJsZSk7XHJcbiAgICAgICAgICAgIGlmIChpID4gMCkge1xyXG4gICAgICAgICAgICAgIGxldCBqID0gMCwgbWlzc2luZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgd2hpbGUgKGogPCBiYXNlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHggPSBiYXNlW2pdLng7XHJcbiAgICAgICAgICAgICAgICBpZiAocC54ID09PSB4KSB7XHJcbiAgICAgICAgICAgICAgICAgIG1pc3NpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocC54IDwgeClcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBqKys7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChtaXNzaW5nKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9uZSA9IHsgeDogcC54LCB5OiAwIH0gYXMgUG9pbnQ7XHJcbiAgICAgICAgICAgICAgICBiYXNlLnNwbGljZShqLCAwLCBjbG9uZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2JzZXJ2YWJsZSA9IGZvcmtKb2luKHAueC5zcGxpdChBWEVTX0NPREVfRElWSURFUikubWFwKChrLCBqKSA9PlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLl90eXBlLmdldChheGlzVHlwZU1hcFt4QXhpc1tqXV0sIGspKSkuXHJcbiAgICAgICAgICAgICAgICAgIHBpcGUodGFwKG8gPT4gY2xvbmUubmFtZSA9IG8uam9pbihBWEVTX0xBQkVMX0RJVklERVIpKSk7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZhYmxlcy5wdXNoKGNvYnNlcnZhYmxlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKHMuaW5kZXgpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBvcHRpb25zLmluZGljZXMuZmluZChpID0+IGkubmFtZSA9PT0gcy5pbmRleCk7XHJcbiAgICAgICAgICAgIHMudGl0bGUgPSBpbmRleC50aXRsZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKHMubmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzb2JzZXJ2YWJsZSA9IGZvcmtKb2luKHMubmFtZS5zcGxpdChBWEVTX0NPREVfRElWSURFUikubWFwKChrLCBpKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuX3R5cGUuZ2V0KGF4aXNUeXBlTWFwW3Nlcmllc1tpXV0sIGspXHJcbiAgICAgICAgICAgICkpLnBpcGUodGFwKHYgPT4gcy50aXRsZSA9IHYuam9pbihBWEVTX0xBQkVMX0RJVklERVIpKSk7XHJcbiAgICAgICAgICAgIG9ic2VydmFibGVzLnB1c2goc29ic2VydmFibGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChvYnNlcnZhYmxlcy5sZW5ndGgpXHJcbiAgICAgICAgICBmb3JrSm9pbihvYnNlcnZhYmxlcykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KHIpO1xyXG4gICAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9LCBlID0+IG9ic2VydmUuZXJyb3IoZSkpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgb2JzZXJ2ZS5uZXh0KHIpO1xyXG4gICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZSA9PiBvYnNlcnZlLmVycm9yKGUpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBhZGRzIHZhbHVlcyB0byBzb3VyY2Uga2V5c1xyXG4gICAqIEBwYXJhbSBjdWJlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZGVjb3JhdGVUYWJsZTxUPihjdWJlOiBzdHJpbmcsIGNvbHVtbnM/OiBzdHJpbmdbXSk6IChzb3VyY2U6IE9ic2VydmFibGU8VFtdPikgPT4gT2JzZXJ2YWJsZTxUW10+IHtcclxuICAgIGNvbnN0IGNjdWJlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IGN1YmUpLFxyXG4gICAgICBheGVzID0gY2N1YmUuYXhlcy5maWx0ZXIoYSA9PiAhY29sdW1ucyB8fCBjb2x1bW5zLmluZGV4T2YoYS5uYW1lKSA+IC0xKTtcclxuICAgIHJldHVybiAoc291cmNlKSA9PiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlID0+IHtcclxuICAgICAgc291cmNlLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICBjb25zdCBvYnNlcnZhYmxlczogT2JzZXJ2YWJsZTxhbnk+W10gPSBbXTtcclxuICAgICAgICByLmZvckVhY2gocm93ID0+XHJcbiAgICAgICAgICBheGVzLmZvckVhY2goYSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgbmFtZSwgZGF0YVR5cGUgfSA9IGEsIHZhbHVlID0gcm93W25hbWVdO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIC8vIGtlZXAga2V5XHJcbiAgICAgICAgICAgICAgcm93WydfJyArIG5hbWVdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZSA9IHRoaXMuX3R5cGUuZ2V0KGRhdGFUeXBlLCB2YWx1ZSkucGlwZSh0YXAodiA9PlxyXG4gICAgICAgICAgICAgICAgcm93W25hbWVdID0gdiB8fCB2YWx1ZSkpO1xyXG4gICAgICAgICAgICAgIG9ic2VydmFibGVzLnB1c2gob2JzZXJ2YWJsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICBpZiAob2JzZXJ2YWJsZXMubGVuZ3RoKVxyXG4gICAgICAgICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIG9ic2VydmUubmV4dChyKTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSwgZSA9PiBvYnNlcnZlLmVycm9yKGUpKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIG9ic2VydmUubmV4dChbXSk7XHJcbiAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlID0+IG9ic2VydmUuZXJyb3IoZSkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvZ3Jlc3ModGltZSA9IDIwMCk6IChzb3VyY2U6IE9ic2VydmFibGU8YW55PikgPT4gT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgcmV0dXJuIHNvdXJjZSA9PiBzb3VyY2UucGlwZShcclxuICAgIHRhcCgpLFxyXG4gICAgbWFwKCgpID0+IGZhbHNlKSlcclxufVxyXG4vKiogbW9kZWxpemUgY3ViZSByZXN1bHRzIGFzIG5lc3RlZCBtYXBzICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtb2RlbGl6ZSgpOiAoc291cmNlOiBPYnNlcnZhYmxlPFNlcmllc1tdPikgPT4gT2JzZXJ2YWJsZTx7XHJcbiAgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfTtcclxufT4ge1xyXG4gIGNvbnN0IGRhdGEgPSB7fTtcclxuICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxTZXJpZXNbXT4pID0+IHNvdXJjZS5waXBlKG1hcChyID0+IHtcclxuICAgIHIuZm9yRWFjaChzID0+IHtcclxuICAgICAgY29uc3Qgcm93ID0gZGF0YVtzLmluZGV4IHx8IHMubmFtZV0gPSB7fTtcclxuICAgICAgcy5wb2ludHMuZm9yRWFjaChwID0+IHJvd1twLnhdID0gcC55KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfSkpO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV4cGxvcmVUeXBlIHtcclxuICBjb2x1bW5zOiBGaWVsZEluZm9bXTtcclxuICB0ZW1wbGF0ZT86IHN0cmluZztcclxuICBmaWVsZHM/OiBGaWVsZEluZm9bXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFNlcmllcyB7XHJcbiAgcG9pbnRzOiBQb2ludFtdO1xyXG4gIG5hbWU/OiBzdHJpbmc7XHJcbiAgaW5kZXg/OiBzdHJpbmc7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBQb2ludCB7XHJcbiAgeDogc3RyaW5nO1xyXG4gIHk6IG51bWJlcjtcclxuICBuYW1lPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3VycmVuY3kgeyBjb2RlOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgc3ltYm9sOiBzdHJpbmcgfVxyXG5cclxuZXhwb3J0IHR5cGUgU2VnbWVudE1hcCA9IHsgW2NvZGU6IHN0cmluZ106IHN0cmluZyB9O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuIHsgdGl0bGU6IHN0cmluZzsgYXhlczogQXhlc01hcCB9XHJcbiJdfQ==
397
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ViZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL2N1YmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFnQixhQUFhLEVBQXVCLE1BQU0sdUJBQXVCLENBQUM7QUFJekYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBRTlGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7QUFFL0Q7MkVBQzJFO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7QUFDdEMsaUVBQWlFO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUUsY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUM7QUFFaEQsd0VBQXdFO0FBQ3hFLEtBQUs7QUFDTCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxzR0FBc0csQ0FBQztBQUV6SSxNQUFNLENB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SW5CLE1BQU07MkJBQUMsYUFBYTs7QUE0WW5DLE1BQU0sVUFBVSxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUc7SUFDakMsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzFCLEdBQUcsRUFBRSxFQUNMLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ3JCLENBQUM7QUFDRCwyQ0FBMkM7QUFDM0MsTUFBTSxVQUFVLFFBQVE7SUFHdEIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxNQUE0QixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUMzRCxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN6QyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmb3JrSm9pbiwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc2hhcmVSZXBsYXksIHRhcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBzZXRDdXJyZW5jeUNvZGUgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYmFzZSc7XHJcbmltcG9ydCB7IGlzQXJyYXksIGlzU3RyaW5nIH0gZnJvbSAnLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBCaXpEb2NDb25maWcsIEJJWkRPQ19DT05GSUcsIFBhcmFtTWFwLCBTY29wZVR5cGUgfSBmcm9tICcuLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBGaWVsZEluZm8sIEF4aXNUeXBlLCBBeGVzTWFwIH0gZnJvbSAnLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IGdldEN1cnJlbmN5U3ltYm9sLCBnZXRMb2NhbGVOdW1iZXJGb3JtYXQsIE51bWJlckZvcm1hdFN0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmV4cG9ydCBjb25zdCBBQ0NPVU5UX0RFTElNSVRFUiA9ICcuJywgREVGQVVMVF9DVVJSRU5DWSA9ICdVU0QnO1xyXG5cclxuLyoqIGluIGNhc2UgeEF4aXMgb3Igc2VyaWVzIGlzIGdpdmVuIG1vcmUgdGhhbiBvbmUgYXhpcyxcclxuICogdGhlIHZhbHVlIHJldHVybmVkIGlzIGNvbWJpbmVkIG9mIHZhbHVlcyBzZXBlcmF0ZWQgYnkgdGhpcyBjaGFyYWN0ZXIuICovXHJcbmV4cG9ydCBjb25zdCBBWEVTX0NPREVfRElWSURFUiA9ICdfXyc7XHJcblxyXG5leHBvcnQgY29uc3QgQVhFU19MQUJFTF9ESVZJREVSID0gJy0nO1xyXG4vKiogcmVwcmVzZW50cyBhIHBsYWNlIGluIHBhdHRlcm4gdG8gYmUgcmVwbGFjZWQgYnkgYmFzZSBheGlzLiAqL1xyXG5leHBvcnQgY29uc3QgQVhJU19NQVBfQ0hBUiA9ICcjJywgQVhJU19NQVBfQVNfSVMgPSAnKic7XHJcblxyXG5leHBvcnQgY29uc3QgQVhJU19TUEVDSUFMX0NIQVJTID0gL1tcXC47I1xcLSxcXCFdLztcclxuXHJcbi8qKiBhbGxvd2VkIGNoYXJhY3RlcnMgZm9yIGF4aXMgdmFsdWUgLyBjb2xsZWN0aW9uIC8gcmFuZ2UgLyBwYXR0ZXJuLiAqL1xyXG4vL1xccExcclxuZXhwb3J0IGNvbnN0IEFYSVNfVkFMVUVfUEFUVEVSTiA9IC9eKCghP1xcdysoXFwsXFx3KykqKXwoIT9cXHcrXFwtXFx3Kyl8KCE/W1xcd1xcLlxcKlxcI10rKSkoWztdKCghP1xcdysoXFwsXFx3KykqKXwoIT9cXHcrXFwtXFx3Kyl8KCE/W1xcd1xcLlxcKlxcI10rKSkpKiQvO1xyXG5cclxuZXhwb3J0IGNvbnN0IENMRFJfRklMRVMgPSBbJ2NsZHItZGF0YS9tYWluL3swfS9jdXJyZW5jaWVzLmpzb24nLCAnY2xkci1kYXRhL21haW4vezB9L2NhLWdyZWdvcmlhbi5qc29uJywgJ2NsZHItZGF0YS9tYWluL3swfS9udW1iZXJzLmpzb24nLCAnY2xkci1kYXRhL21haW4vezB9L3RpbWVab25lTmFtZXMuanNvbicsICdjbGRyLWRhdGEvc3VwcGxlbWVudGFsL251bWJlcmluZ1N5c3RlbXMuanNvbiddO1xyXG5cclxuLyoqIHF1ZXJ5IGN1YmUgKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEN1YmVTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9jYWNoZTogeyBbbmFtZTogc3RyaW5nXTogT2JzZXJ2YWJsZTxhbnk+IH0gPSB7fTtcclxuICAvLyBjdG9yXHJcbiAgY29uc3RydWN0b3IoQEluamVjdChCSVpET0NfQ09ORklHKSBwcml2YXRlIF9jb25maWc6IEJpekRvY0NvbmZpZyxcclxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIF90eXBlOiBEYXRhc291cmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlKSB7XHJcbiAgICBfY29uZmlnICYmIF9jb25maWcuY3VycmVuY3lDb2RlICYmIHNldEN1cnJlbmN5Q29kZShfY29uZmlnLmN1cnJlbmN5Q29kZSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NhY2hlT3IgPSA8VD4obmFtZTogc3RyaW5nLCBmbjogKCkgPT4gT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4gPT5cclxuICAgIHRoaXMuX2NhY2hlW25hbWVdIHx8ICh0aGlzLl9jYWNoZVtuYW1lXSA9IGZuKCkucGlwZShzaGFyZVJlcGxheSgpKSk7XHJcbiAgLyoqIHN5c3RlbSBjdXJyZW5jeSAqL1xyXG4gIGdldCBudW1iZXJGb3JtYXQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmN1cnJlbmN5Q29kZSA/XHJcbiAgICAgIGdldExvY2FsZU51bWJlckZvcm1hdCh0aGlzLl9zZXNzaW9uLmxhbmd1YWdlLCBOdW1iZXJGb3JtYXRTdHlsZS5DdXJyZW5jeSkuXHJcbiAgICAgICAgcmVwbGFjZSgnwqQnLCBnZXRDdXJyZW5jeVN5bWJvbCh0aGlzLmN1cnJlbmN5Q29kZSwgJ25hcnJvdycpKSA6XHJcbiAgICAgIGdldExvY2FsZU51bWJlckZvcm1hdCh0aGlzLl9zZXNzaW9uLmxhbmd1YWdlLCBOdW1iZXJGb3JtYXRTdHlsZS5EZWNpbWFsKTtcclxuICB9XHJcbiAgZ2V0IGN1cnJlbmN5Q29kZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeyBjdXJyZW5jeUNvZGUgfSA9IHRoaXMuX2NvbmZpZyB8fCB7fTtcclxuICAgIHJldHVybiBjdXJyZW5jeUNvZGUgfHwgREVGQVVMVF9DVVJSRU5DWTtcclxuICB9XHJcbiAgZ2V0IGRpZ2l0c0luZm8oKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHsgZnJhY3Rpb25EaWdpdHMgfSA9IHRoaXM7XHJcbiAgICByZXR1cm4gYDEuJHtmcmFjdGlvbkRpZ2l0c30tJHtmcmFjdGlvbkRpZ2l0c31gO1xyXG4gIH1cclxuICBnZXQgZnJhY3Rpb25EaWdpdHMoKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IHsgZm9ybWF0cyB9ID0gdGhpcy5fY29uZmlnLCB7IGZyYWN0aW9uRGlnaXRzIH0gPSBmb3JtYXRzIHx8IHt9O1xyXG4gICAgcmV0dXJuIGZyYWN0aW9uRGlnaXRzICE9PSB1bmRlZmluZWQgPyBmcmFjdGlvbkRpZ2l0cyA6IDI7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIHF1ZXJ5IGN1YmUgYnkgYXhlcywgc2VyaWVzIGFuZCBpbmRpY2VzXHJcbiAgICogQHBhcmFtIGN1YmUgbmFtZVxyXG4gICAqIEBwYXJhbSB4QXhpcyBncm91cCBieSBvbmUgb3IgbW9yZSBheGlzXHJcbiAgICogQHBhcmFtIG9wdGlvbnNcclxuICAgKi9cclxuICBzZXJpZXMoY3ViZTogc3RyaW5nLCB4QXhpczogc3RyaW5nIHwgc3RyaW5nW10sXHJcbiAgICBvcHRpb25zPzoge1xyXG4gICAgICAvKiogZ3JvdXAgc2VyaWVzIGJ5IG9uZSBvciBtb3JlIGF4aXMgKi9cclxuICAgICAgc2VyaWVzPzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgICAgIC8qKiBpbmNsdWRlIG9uZSBvciBtb3JlIGluZGV4IHNlcmllICovXHJcbiAgICAgIGluZGljZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICAgICAgZ3JvdXBJbmRpY2VzPzogYm9vbGVhbixcclxuICAgICAgLyoqIGF4ZXMgKi9cclxuICAgICAgZmlsdGVycz86IHsgW2F4aXM6IHN0cmluZ106IEF4aXNUeXBlIH07XHJcbiAgICAgIHNjb3BlPzogU2NvcGVUeXBlLFxyXG4gICAgICAvKiogcmVwbGFjZSBiYXNlICovXHJcbiAgICAgIGJhc2U/OiB7IFtheGlzOiBzdHJpbmddOiAoc3RyaW5nIHwgbnVtYmVyKSB9IHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICAgIH0pOiBPYnNlcnZhYmxlPFNlcmllc1tdPiB7XHJcbiAgICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcclxuICAgIGNvbnN0IHsgZmlsdGVyczogYXhlcywgc2VyaWVzLCBpbmRpY2VzLCBiYXNlLCBzY29wZSwgZ3JvdXBJbmRpY2VzIH0gPSBvcHRpb25zLCBmaWx0ZXJzID0geyAuLi5heGVzIH07XHJcbiAgICAvLyBub3JtYWxpemUgYXJnc1xyXG4gICAgYmFzZSAmJiB0aGlzLmJhc2UoY3ViZSwgZmlsdGVycywgYmFzZSk7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8U2VyaWVzW10+KGAvYXBpL2N1YmUvJHtjdWJlfWAsIHtcclxuICAgICAgeEF4aXMsXHJcbiAgICAgIHNlcmllcyxcclxuICAgICAgaW5kaWNlcyxcclxuICAgICAgZmlsdGVycyxcclxuICAgICAgc2NvcGUsIGdyb3VwSW5kaWNlc1xyXG4gICAgfSkucGlwZSh0aGlzLl9kZWNvcmF0ZShjdWJlLCBpc0FycmF5KHhBeGlzKSA/IHhBeGlzIDogW3hBeGlzXSxcclxuICAgICAgc2VyaWVzID8gaXNBcnJheShzZXJpZXMpID8gc2VyaWVzIDogW3Nlcmllc10gOiBudWxsKSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIGFnZ3JlZ2F0ZSBjdWJlIHRvIGZsYXQgY29sbGVjdGlvbiBvZiBjb2x1bW5zIGFuZCB2YWx1ZShzKVxyXG4gICAqIEBwYXJhbSBjdWJlIG5hbWVcclxuICAgKiBAcGFyYW0gY29sdW1uc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgdGFibGUoY3ViZTogc3RyaW5nLCBjb2x1bW5zOiBzdHJpbmdbXSwgb3B0aW9ucz86IHtcclxuICAgIC8qKiBheGVzICovXHJcbiAgICBmaWx0ZXJzPzogQXhlc01hcDtcclxuICAgIC8qKiBpbmNsdWRlIG9uZSBvciBtb3JlIGluZGV4IHZhbHVlcyAqL1xyXG4gICAgaW5kaWNlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gICAgc2NvcGU/OiBTY29wZVR5cGUsXHJcbiAgfSk6IE9ic2VydmFibGU8eyB2YWx1ZTogbnVtYmVyIH1bXT4ge1xyXG4gICAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XHJcbiAgICBjb25zdCB7IGZpbHRlcnMsIGluZGljZXMsIHNjb3BlIH0gPSBvcHRpb25zO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PHsgdmFsdWU6IG51bWJlciB9W10+KGAvYXBpL2N1YmUvdGFibGUvJHtjdWJlfWAsIHtcclxuICAgICAgY29sdW1ucyxcclxuICAgICAgaW5kaWNlcyxcclxuICAgICAgZmlsdGVycyxcclxuICAgICAgc2NvcGVcclxuICAgIH0pLnBpcGUodGhpcy5fZGVjb3JhdGVUYWJsZShjdWJlLCBjb2x1bW5zKSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIGluZm9ybWF0aW9uIG9uIGV4cGVjdGVkIGV4cGxvcmUgdHlwZVxyXG4gICAqIEBwYXJhbSBjdWJlIG5hbWVcclxuICAgKiBAcGFyYW0gYXhlcyBmaWx0ZXJzXHJcbiAgICogQHBhcmFtIG9wdGlvbnNcclxuICAgKi9cclxuICByZXNvbHZlKGN1YmU6IHN0cmluZywgYXhlczogeyBba2V5OiBzdHJpbmddOiBBeGlzVHlwZSB9LCBvcHRpb25zPzoge1xyXG4gICAgLyoqIHJlcGxhY2UgYmFzZSAqL1xyXG4gICAgYmFzZT86IHsgW2F4aXM6IHN0cmluZ106IChzdHJpbmcgfCBudW1iZXIpIH0gfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xyXG4gIH0pOiBPYnNlcnZhYmxlPEV4cGxvcmVUeXBlPiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7IC4uLmF4ZXMgfSBhcyBhbnk7XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICBjb25zdCB7IGJhc2UgfSA9IG9wdGlvbnM7XHJcbiAgICAgIGJhc2UgJiYgdGhpcy5iYXNlKGN1YmUsIHBhcmFtcywgYmFzZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8RXhwbG9yZVR5cGU+KGAvYXBpL2N1YmUvZXhwbG9yZXR5cGUvJHtjdWJlfWAsIHsgcGFyYW1zIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBleHBsb3JlIGl0ZW1zIGJ5IGF4aXNcclxuICAgKiBAcGFyYW0gY3ViZSBuYW1lXHJcbiAgICogQHBhcmFtIGF4ZXMgZmlsdGVyc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgZXhwbG9yZShjdWJlOiBzdHJpbmcsIGF4ZXM6IHsgW2tleTogc3RyaW5nXTogQXhpc1R5cGUgfSwgb3B0aW9ucz86IHtcclxuICAgIC8qKiByZXN0cmljdCByZXN1bHRzIHRvIHVzZXIgcGF0dGVybnMgb3IgcG9zaXRpb25zICovXHJcbiAgICBzY29wZT86IFNjb3BlVHlwZSxcclxuICAgIC8qKiByZXBsYWNlIGJhc2UgKi9cclxuICAgIGJhc2U/OiB7IFtheGlzOiBzdHJpbmddOiAoc3RyaW5nIHwgbnVtYmVyKSB9IHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICB9KTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0geyAuLi5heGVzIH0gYXMgYW55O1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgY29uc3QgeyBiYXNlLCBzY29wZSB9ID0gb3B0aW9ucztcclxuICAgICAgYmFzZSAmJiB0aGlzLmJhc2UoY3ViZSwgcGFyYW1zLCBiYXNlKTtcclxuICAgICAgaWYgKHNjb3BlKSBwYXJhbXMuc2NvcGUgPSBzY29wZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxhbnlbXT4oXHJcbiAgICAgIGAvYXBpL2N1YmUvZXhwbG9yZS8ke2N1YmV9YCxcclxuICAgICAgeyBwYXJhbXMgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBheGVzXHJcbiAgICogQHBhcmFtIGN1YmVcclxuICAgKi9cclxuICBuYW1lT2YoYXhlczogQXhlc01hcCwgY3ViZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IGN1YmUpO1xyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZXMgPSBvcHRpb25zLmF4ZXMuZmlsdGVyKGEgPT4gaXNTdHJpbmcoYXhlc1thLm5hbWVdKSAmJlxyXG4gICAgICAvLyB2YWx1ZVxyXG4gICAgICAhQVhJU19TUEVDSUFMX0NIQVJTLnRlc3QoYXhlc1thLm5hbWVdIGFzIHN0cmluZykpLm1hcChhID0+XHJcbiAgICAgICAgdGhpcy5fdHlwZS5nZXQoYS5kYXRhVHlwZSwgYXhlc1thLm5hbWVdIGFzIHN0cmluZykpO1xyXG4gICAgcmV0dXJuIChvYnNlcnZhYmxlcy5sZW5ndGggPyBmb3JrSm9pbihvYnNlcnZhYmxlcykucGlwZShtYXAobyA9PiBvLmpvaW4oJyAnKSkpIDogb2YobnVsbCkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBleHBsb3JlIGluZGljZXMgYnkgYXhpc1xyXG4gICAqIEBwYXJhbSBjdWJlIG5hbWVcclxuICAgKiBAcGFyYW0gaW5kZXggbmFtZVxyXG4gICAqIEBwYXJhbSBheGVzIGZpbHRlcnNcclxuICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAqL1xyXG4gIGluZGljZXMoY3ViZTogc3RyaW5nLCBpbmRleDogc3RyaW5nLCBheGVzOiB7IFtheGlzOiBzdHJpbmddOiBBeGlzVHlwZSB9LFxyXG4gICAgb3B0aW9ucz86IHtcclxuICAgICAgLyoqIHJlc3RyaWN0IHJlc3VsdHMgdG8gdXNlciBwYXR0ZXJucyBvciBwb3NpdGlvbnMgKi9cclxuICAgICAgc2NvcGU/OiBTY29wZVR5cGVcclxuICAgICAgYmFzZT86IHsgW2F4aXM6IHN0cmluZ106IChzdHJpbmcgfCBudW1iZXIpIH0gfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xyXG4gICAgfSk6IE9ic2VydmFibGU8YW55W10+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4uYXhlcyB9IGFzIGFueTtcclxuICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgIGNvbnN0IHsgYmFzZSwgc2NvcGUgfSA9IG9wdGlvbnM7XHJcbiAgICAgIGJhc2UgJiYgdGhpcy5iYXNlKGN1YmUsIHBhcmFtcywgYmFzZSk7XHJcbiAgICAgIGlmIChzY29wZSkgcGFyYW1zLnNjb3BlID0gc2NvcGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8YW55W10+KFxyXG4gICAgICBgL2FwaS9jdWJlL2V4cGxvcmVpbmRleC8ke2N1YmV9LyR7aW5kZXh9YCwgeyBwYXJhbXMgfSkuXHJcbiAgICAgIHBpcGUodGhpcy5fZGVjb3JhdGVUYWJsZShjdWJlKSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIGdldCBleHBsb3JlIGl0ZW0gYnkgYXhpcyBhbmQga2V5KHMpXHJcbiAgICogQHBhcmFtIGN1YmVcclxuICAgKiBAcGFyYW0gYXhlc1xyXG4gICAqIEBwYXJhbSBrZXlzXHJcbiAgICogQHBhcmFtIG9wdGlvbnNcclxuICAgKi9cclxuICBpdGVtKGN1YmU6IHN0cmluZywgYXhlczogeyBbYXhpczogc3RyaW5nXTogQXhpc1R5cGUgfSwga2V5czogKHN0cmluZyB8IG51bWJlcilbXSB8IHN0cmluZyB8IG51bWJlciwgb3B0aW9ucz86IHtcclxuICAgIC8qKiByZXBsYWNlIGJhc2UgKi9cclxuICAgIGJhc2U/OiB7IFtheGlzOiBzdHJpbmddOiAoc3RyaW5nIHwgbnVtYmVyKSB9IHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICB9KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4uYXhlcyB9IGFzIGFueTtcclxuICAgIHBhcmFtc1sna2V5J10gPSBpc0FycmF5KGtleXMpID8ga2V5c1swXSA6IGtleXM7XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICBjb25zdCB7IGJhc2UgfSA9IG9wdGlvbnM7XHJcbiAgICAgIGJhc2UgJiYgdGhpcy5iYXNlKGN1YmUsIHBhcmFtcywgYmFzZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQoYC9hcGkvY3ViZS9leHBsb3JlaXRlbS8ke2N1YmV9YCwgeyBwYXJhbXMgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBjdWJlIG5hbWVcclxuICAgKiBAcGFyYW0gYXhlcyBjb25kaXRpb25cclxuICAgKi9cclxuICBjb25zdHJhaW50cyhjdWJlOiBzdHJpbmcsIGF4ZXM/OiB7IFtrZXk6IHN0cmluZ106IEF4aXNUeXBlIH0sIG9wdGlvbnM/OiB7IHNvdXJjZTogJ2NvbnN0cmFpbnRzJyB8ICdjb21iaW5hdGlvbnMnIH0pOiBPYnNlcnZhYmxlPHsgW2RhdGFUeXBlOiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IH0+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDx7IFtkYXRhVHlwZTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB9PihcclxuICAgICAgIW9wdGlvbnMgfHwgb3B0aW9ucy5zb3VyY2UgPT09ICdjb25zdHJhaW50cycgP1xyXG4gICAgICAgIGAvYXBpL2N1YmUvY29uc3RyYWludHMvJHtjdWJlfWAgOiBgL2FwaS9jdWJlL2NvbWJpbmF0aW9uc2NvbnN0cmFpbnRzLyR7Y3ViZX1gLCB7XHJcbiAgICAgIHBhcmFtczogeyAuLi5heGVzIH0gYXMgYW55XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGN1YmUgbmFtZVxyXG4gICAqIEBwYXJhbSBheGlzIG5hbWVcclxuICAgKi9cclxuICB2YWx1ZXMoY3ViZTogc3RyaW5nLCBheGlzOiBzdHJpbmcsIGRlcGVuZGVuY2llcz86IFBhcmFtTWFwKTogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IGFueSB9PiB7XHJcbiAgICBsZXQgY2FjaGVJZCA9IGN1YmUgKyBheGlzO1xyXG4gICAgZGVwZW5kZW5jaWVzICYmIE9iamVjdC5rZXlzKGRlcGVuZGVuY2llcykuZm9yRWFjaChrID0+IGNhY2hlSWQgKz0gayk7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVPcihjYWNoZUlkLCAoKSA9PiB0aGlzLl9odHRwLmdldDx7IFtkYXRhVHlwZTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB9PihcclxuICAgICAgYC9hcGkvY3ViZS9zZWdtZW50dmFsdWVzLyR7Y3ViZX0vJHtheGlzfWAsIHsgcGFyYW1zOiBkZXBlbmRlbmNpZXMgfSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBnZXQgYXhpcyBjb21iaW5hdGlvbnNcclxuICAgKiBAcGFyYW0gY3ViZSBuYW1lXHJcbiAgICogQHBhcmFtIGF4ZXMgZmlsdGVyc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgY29tYmluYXRpb25zKGN1YmU6IHN0cmluZywgYXhlcz86IHsgW2tleTogc3RyaW5nXTogQXhpc1R5cGUgfSwgb3B0aW9ucz86IHtcclxuICAgIC8qKiB0b3AgKi9cclxuICAgIHRha2U/OiBudW1iZXI7XHJcbiAgICAvKiogcHJvY2VzcyBpbiBiYWNrZ3JvdW5kICovXHJcbiAgICBwcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nW11bXT4ge1xyXG4gICAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XHJcbiAgICBjb25zdCB7IHRha2UsIHByb2dyZXNzIH0gPSBvcHRpb25zO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PHN0cmluZ1tdW10+KGAvYXBpL2N1YmUvY29tYmluYXRpb25zLyR7Y3ViZX1gLCB7XHJcbiAgICAgIHBhcmFtczogeyAuLi5heGVzLCB0YWtlIH0gYXMgYW55LFxyXG4gICAgICBoZWFkZXJzOiBwcm9ncmVzcyA9PT0gZmFsc2UgPyB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IDoge31cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gdmFsdWVcclxuICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAqL1xyXG4gIHNlYXJjaCh2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiB7IHRha2U/OiBudW1iZXIgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PHsgY3ViZTogc3RyaW5nLCBheGlzOiBzdHJpbmcsIGtleTogYW55LCB2YWx1ZTogYW55IH1bXT4oJy9hcGkvY3ViZS9zZWFyY2gnLCB7XHJcbiAgICAgIHBhcmFtczogeyB2YWx1ZSwgLi4ub3B0aW9ucyB9IGFzIGFueSxcclxuICAgICAgaGVhZGVyczogeyAnbm8tcHJvZ3Jlc3MnOiAndHJ1ZScgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIGdldCBzZWdtZW50c1xyXG4gICAqIEBwYXJhbSBjdWJlXHJcbiAgICovXHJcbiAgc2VnbWVudHMoY3ViZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlZ21lbnRNYXA+IHtcclxuICAgIHJldHVybiB0aGlzLl9jYWNoZU9yKGAke3R5cGV9LXNlZ21lbnRzYCwgKCkgPT4gdGhpcy5faHR0cC5nZXQ8U2VnbWVudE1hcD4oYC9hcGkvY3ViZS9zZWdtZW50cy8ke2N1YmV9P3R5cGU9JHt0eXBlfWApKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogZ2V0IHVzZXIgcGF0dGVybnNcclxuICAgKiBAcGFyYW0gY3ViZVxyXG4gICAqL1xyXG4gIHBhdHRlcm5zKGN1YmU6IHN0cmluZyk6IE9ic2VydmFibGU8UGF0dGVybltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVPcihgJHtjdWJlfS1wYXR0ZXJuc2AsICgpID0+IHRoaXMuX2h0dHAuZ2V0PFBhdHRlcm5bXT4oYC9hcGkvY3ViZS9wYXR0ZXJucy8ke2N1YmV9YCkpO1xyXG4gIH1cclxuICAvKiogZ2V0IGN1cnJlbmNpZXMgKi9cclxuICBjdXJyZW5jaWVzKCk6IE9ic2VydmFibGU8Q3VycmVuY3lbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlT3IoJ2N1cnJlbmNpZXMnLCAoKSA9PiB0aGlzLl9odHRwLmdldDxDdXJyZW5jeVtdPignYXBpL2N1YmUvY3VycmVuY2llcycpKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogZ2V0IGV4Y2hhbmdlIHJhdGVcclxuICAgKiBAcGFyYW0gY3VycmVuY3lDb2RlXHJcbiAgICogQHBhcmFtIGRhdGVcclxuICAgKi9cclxuICBleGNoYW5nZVJhdGUoY3VycmVuY3lDb2RlOiBzdHJpbmcsIGRhdGU/OiBEYXRlKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgIGlmICh0aGlzLmN1cnJlbmN5Q29kZSA9PT0gY3VycmVuY3lDb2RlKVxyXG4gICAgICByZXR1cm4gb2YoMSk7XHJcbiAgICBsZXQga2V5ID0gY3VycmVuY3lDb2RlO1xyXG4gICAgaWYgKGRhdGUpIGtleSArPSBkYXRlLnRvSlNPTigpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlT3Ioa2V5LCAoKSA9PiB0aGlzLl9odHRwLmdldDxudW1iZXI+KGBhcGkvY3ViZS9leGNoYW5nZVJhdGUvJHtjdXJyZW5jeUNvZGV9YCwge1xyXG4gICAgICBwYXJhbXM6IGRhdGUgPyB7IGRhdGU6IGRhdGUudG9KU09OKCkgfSA6IG51bGwsXHJcbiAgICAgIGhlYWRlcnM6IHsgJ25vLXByb2dyZXNzJzogJ3RydWUnIH1cclxuICAgIH0pKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgKiByZXBsYWNlcyAqIG9yICMgd2l0aCBvcmlnaW4gYXhpcyBhdCBjaGFyIHBsYWNlXHJcbiAgKiBAcGFyYW0gY3ViZSBuYW1lXHJcbiAgKiBAcGFyYW0gYXhlcyBtYXBcclxuICAqIEBwYXJhbSBiYXNlIG9yaWdpblxyXG4gICovXHJcbiAgcHVibGljIGJhc2UoY3ViZTogc3RyaW5nLCBheGVzOiBBeGVzTWFwLFxyXG4gICAgYmFzZTogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB8IEF4ZXNNYXApOiB2b2lkIHtcclxuICAgIGNvbnN0IGNjdWJlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IGN1YmUpO1xyXG4gICAgY2N1YmUuYXhlcy5mb3JFYWNoKChhLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbCA9IGF4ZXNbYS5uYW1lXTtcclxuICAgICAgaWYgKHZhbCAmJiBpc1N0cmluZyh2YWwpKSB7XHJcbiAgICAgICAgY29uc3QgYXhpc2Jhc2UgPSBpc0FycmF5KGJhc2UpID8gYmFzZVtpXSA6IGJhc2VbYS5uYW1lXTtcclxuICAgICAgICBpZiAodmFsID09PSBBWElTX01BUF9BU19JUylcclxuICAgICAgICAgIGF4ZXNbYS5uYW1lXSA9IGF4aXNiYXNlO1xyXG4gICAgICAgIGVsc2UgaWYgKHZhbC5pbmRleE9mKEFYSVNfTUFQX0NIQVIpID4gLTEpIHtcclxuICAgICAgICAgIGxldCBheGlzID0gJyc7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHZhbC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgY2hhciA9IHZhbC5jaGFyQXQoaik7XHJcbiAgICAgICAgICAgIGF4aXMgKz0gY2hhciA9PT0gQVhJU19NQVBfQ0hBUiAmJiAoYXhpc2Jhc2UgYXMgc3RyaW5nKS5sZW5ndGggPiBqID9cclxuICAgICAgICAgICAgICAoYXhpc2Jhc2UgYXMgc3RyaW5nKS5jaGFyQXQoaikgOiBjaGFyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXhlc1thLm5hbWVdID0gYXhpcztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBhZGRzIHZhbHVlcyB0byBzb3VyY2Uga2V5c1xyXG4gICAqIEBwYXJhbSBjdWJlXHJcbiAgICogQHBhcmFtIHhBeGlzXHJcbiAgICogQHBhcmFtIHNlcmllc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgX2RlY29yYXRlKGN1YmU6IHN0cmluZyxcclxuICAgIHhBeGlzOiBzdHJpbmdbXSxcclxuICAgIHNlcmllczogc3RyaW5nW10pOiAoc291cmNlOiBPYnNlcnZhYmxlPFNlcmllc1tdPikgPT4gT2JzZXJ2YWJsZTxTZXJpZXNbXT4ge1xyXG4gICAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8U2VyaWVzW10+KSA9PiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlID0+IHtcclxuICAgICAgc291cmNlLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICBjb25zdCBvYnNlcnZhYmxlczogT2JzZXJ2YWJsZTxhbnk+W10gPSBbXTtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IGN1YmUpO1xyXG4gICAgICAgIGNvbnN0IGF4aXNUeXBlTWFwID0ge307XHJcbiAgICAgICAgb3B0aW9ucy5heGVzLmZvckVhY2goeCA9PiBheGlzVHlwZU1hcFt4Lm5hbWVdID0geC5kYXRhVHlwZSk7XHJcbiAgICAgICAgaWYgKCFyLmxlbmd0aCkge1xyXG4gICAgICAgICAgb2JzZXJ2ZS5uZXh0KHIpO1xyXG4gICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBiYXNlID0gclswXS5wb2ludHM7XHJcbiAgICAgICAgci5mb3JFYWNoKChzLCBpKSA9PiB7XHJcbiAgICAgICAgICBzLnBvaW50cy5mb3JFYWNoKHAgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXAueCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjb25zdCBwb2JzZXJ2YWJsZSA9IGZvcmtKb2luKHAueC5zcGxpdChBWEVTX0NPREVfRElWSURFUikubWFwKChrLCBqKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuX3R5cGUuZ2V0KGF4aXNUeXBlTWFwW3hBeGlzW2pdXSwgaykpKS5cclxuICAgICAgICAgICAgICBwaXBlKHRhcChvID0+IHAubmFtZSA9IG8uam9pbihBWEVTX0xBQkVMX0RJVklERVIpKSk7XHJcbiAgICAgICAgICAgIG9ic2VydmFibGVzLnB1c2gocG9ic2VydmFibGUpO1xyXG4gICAgICAgICAgICBpZiAoaSA+IDApIHtcclxuICAgICAgICAgICAgICBsZXQgaiA9IDAsIG1pc3NpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHdoaWxlIChqIDwgYmFzZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGxldCB4ID0gYmFzZVtqXS54O1xyXG4gICAgICAgICAgICAgICAgaWYgKHAueCA9PT0geCkge1xyXG4gICAgICAgICAgICAgICAgICBtaXNzaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHAueCA8IHgpXHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgaisrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAobWlzc2luZykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmUgPSB7IHg6IHAueCwgeTogMCB9IGFzIFBvaW50O1xyXG4gICAgICAgICAgICAgICAgYmFzZS5zcGxpY2UoaiwgMCwgY2xvbmUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29ic2VydmFibGUgPSBmb3JrSm9pbihwLnguc3BsaXQoQVhFU19DT0RFX0RJVklERVIpLm1hcCgoaywgaikgPT5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5fdHlwZS5nZXQoYXhpc1R5cGVNYXBbeEF4aXNbal1dLCBrKSkpLlxyXG4gICAgICAgICAgICAgICAgICBwaXBlKHRhcChvID0+IGNsb25lLm5hbWUgPSBvLmpvaW4oQVhFU19MQUJFTF9ESVZJREVSKSkpO1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2YWJsZXMucHVzaChjb2JzZXJ2YWJsZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChzLmluZGV4KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gb3B0aW9ucy5pbmRpY2VzLmZpbmQoaSA9PiBpLm5hbWUgPT09IHMuaW5kZXgpO1xyXG4gICAgICAgICAgICBzLnRpdGxlID0gaW5kZXgudGl0bGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChzLm5hbWUpIHtcclxuICAgICAgICAgICAgY29uc3Qgc29ic2VydmFibGUgPSBmb3JrSm9pbihzLm5hbWUuc3BsaXQoQVhFU19DT0RFX0RJVklERVIpLm1hcCgoaywgaSkgPT5cclxuICAgICAgICAgICAgICB0aGlzLl90eXBlLmdldChheGlzVHlwZU1hcFtzZXJpZXNbaV1dLCBrKVxyXG4gICAgICAgICAgICApKS5waXBlKHRhcCh2ID0+IHMudGl0bGUgPSB2LmpvaW4oQVhFU19MQUJFTF9ESVZJREVSKSkpO1xyXG4gICAgICAgICAgICBvYnNlcnZhYmxlcy5wdXNoKHNvYnNlcnZhYmxlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAob2JzZXJ2YWJsZXMubGVuZ3RoKVxyXG4gICAgICAgICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIG9ic2VydmUubmV4dChyKTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSwgZSA9PiBvYnNlcnZlLmVycm9yKGUpKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIG9ic2VydmUubmV4dChyKTtcclxuICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGUgPT4gb2JzZXJ2ZS5lcnJvcihlKSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogYWRkcyB2YWx1ZXMgdG8gc291cmNlIGtleXNcclxuICAgKiBAcGFyYW0gY3ViZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2RlY29yYXRlVGFibGU8VD4oY3ViZTogc3RyaW5nLCBjb2x1bW5zPzogc3RyaW5nW10pOiAoc291cmNlOiBPYnNlcnZhYmxlPFRbXT4pID0+IE9ic2VydmFibGU8VFtdPiB7XHJcbiAgICBjb25zdCBjY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSBjdWJlKSxcclxuICAgICAgYXhlcyA9IGNjdWJlLmF4ZXMuZmlsdGVyKGEgPT4gIWNvbHVtbnMgfHwgY29sdW1ucy5pbmRleE9mKGEubmFtZSkgPiAtMSk7XHJcbiAgICByZXR1cm4gKHNvdXJjZSkgPT4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIHNvdXJjZS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8YW55PltdID0gW107XHJcbiAgICAgICAgci5mb3JFYWNoKHJvdyA9PlxyXG4gICAgICAgICAgYXhlcy5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IG5hbWUsIGRhdGFUeXBlIH0gPSBhLCB2YWx1ZSA9IHJvd1tuYW1lXTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAvLyBrZWVwIGtleVxyXG4gICAgICAgICAgICAgIHJvd1snXycgKyBuYW1lXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgIGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLl90eXBlLmdldChkYXRhVHlwZSwgdmFsdWUpLnBpcGUodGFwKHYgPT5cclxuICAgICAgICAgICAgICAgIHJvd1tuYW1lXSA9IHYgfHwgdmFsdWUpKTtcclxuICAgICAgICAgICAgICBvYnNlcnZhYmxlcy5wdXNoKG9ic2VydmFibGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgaWYgKG9ic2VydmFibGVzLmxlbmd0aClcclxuICAgICAgICAgIGZvcmtKb2luKG9ic2VydmFibGVzKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBvYnNlcnZlLm5leHQocik7XHJcbiAgICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgICAgIH0sIGUgPT4gb2JzZXJ2ZS5lcnJvcihlKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBvYnNlcnZlLm5leHQoW10pO1xyXG4gICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZSA9PiBvYnNlcnZlLmVycm9yKGUpKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHByb2dyZXNzKHRpbWUgPSAyMDApOiAoc291cmNlOiBPYnNlcnZhYmxlPGFueT4pID0+IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gIHJldHVybiBzb3VyY2UgPT4gc291cmNlLnBpcGUoXHJcbiAgICB0YXAoKSxcclxuICAgIG1hcCgoKSA9PiBmYWxzZSkpXHJcbn1cclxuLyoqIG1vZGVsaXplIGN1YmUgcmVzdWx0cyBhcyBuZXN0ZWQgbWFwcyAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxpemUoKTogKHNvdXJjZTogT2JzZXJ2YWJsZTxTZXJpZXNbXT4pID0+IE9ic2VydmFibGU8e1xyXG4gIFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH07XHJcbn0+IHtcclxuICBjb25zdCBkYXRhID0ge307XHJcbiAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8U2VyaWVzW10+KSA9PiBzb3VyY2UucGlwZShtYXAociA9PiB7XHJcbiAgICByLmZvckVhY2gocyA9PiB7XHJcbiAgICAgIGNvbnN0IHJvdyA9IGRhdGFbcy5pbmRleCB8fCBzLm5hbWVdID0ge307XHJcbiAgICAgIHMucG9pbnRzLmZvckVhY2gocCA9PiByb3dbcC54XSA9IHAueSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH0pKTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeHBsb3JlVHlwZSB7XHJcbiAgY29sdW1uczogRmllbGRJbmZvW107XHJcbiAgdGVtcGxhdGU/OiBzdHJpbmc7XHJcbiAgZmllbGRzPzogRmllbGRJbmZvW107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTZXJpZXMge1xyXG4gIHBvaW50czogUG9pbnRbXTtcclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIGluZGV4Pzogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnQge1xyXG4gIHg6IHN0cmluZztcclxuICB5OiBudW1iZXI7XHJcbiAgbmFtZT86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEN1cnJlbmN5IHsgY29kZTogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IHN5bWJvbDogc3RyaW5nIH1cclxuXHJcbmV4cG9ydCB0eXBlIFNlZ21lbnRNYXAgPSB7IFtjb2RlOiBzdHJpbmddOiBzdHJpbmcgfTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybiB7IHRpdGxlOiBzdHJpbmc7IGF4ZXM6IEF4ZXNNYXAgfVxyXG4iXX0=
@@ -311,7 +311,8 @@ export class CubeSpreadsheetComponent {
311
311
  const header = i === 0 || (this.series && j === 0), isnumber = this.series ? !header : isNumber(c.value);
312
312
  return {
313
313
  type: isnumber ? 'number' : 'text',
314
- index: j + 1, value: c.value,
314
+ index: j + 1,
315
+ value: c.value,
315
316
  style: {
316
317
  numberFormat,
317
318
  hAlign: isnumber ? 'right' : 'center',
@@ -366,4 +367,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
366
367
  }], id: [{
367
368
  type: HostBinding
368
369
  }] } });
369
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByZWFkc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL2dyaWQvc3ByZWFkc2hlZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxXQUFXLEVBQXlCLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFFN0ksT0FBTyxFQUFvQyxXQUFXLEVBQTBELFFBQVEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RLLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVd4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7O0FBU3pELE1BQU0sT0FBTyx3QkFBd0I7SUEyQ25DLDRFQUE0RTtJQUM1RSxZQUNVLFFBQXdCLEVBQ3hCLEdBQWtCLEVBQ2xCLFFBQXFCLEVBQ3JCLFVBQTRCLEVBQzVCLEdBQXNCLEVBQ3RCLFdBQXVCO1FBTHZCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUM1QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXpCZCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFN0Msa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2hELE9BQUUsR0FBRyxvQkFBb0Isd0JBQXdCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUU1RSxlQUFVLEdBQWUsRUFBRSxDQUFDO1FBRW5CLGdCQUFXLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFvQixDQUFDO1FBQ3ZELHFCQUFnQixHQUFHLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBMkIsQ0FBQztRQU14RSxXQUFNLEdBQStCLEVBQUUsQ0FBQztRQUN4QyxjQUFTLEdBQStCLEVBQUUsQ0FBQztJQVVkLENBQUM7SUF6Q3RDLElBQ0ksS0FBSyxDQUFDLEdBQXNCO1FBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUdELElBQ0ksTUFBTSxDQUFDLEdBQXNCO1FBQy9CLElBQUksR0FBRztZQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELElBQ0ksT0FBTyxDQUFDLEdBQXNCO1FBQ2hDLElBQUksR0FBRztZQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQTZCRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0SCxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUE7UUFDNUYsK0JBQStCO1FBQy9CLHNDQUFzQztRQUN0QyxnREFBZ0Q7UUFDaEQsc0JBQXNCO1FBQ3RCLHdEQUF3RDtRQUN4RCx1REFBdUQ7UUFDdkQsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUUsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hDLE9BQU87b0JBQ0wsS0FBSyxFQUFFLEdBQUc7aUJBQ0ksQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNoQixLQUFLLEVBQUUsRUFBRTthQUNWLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQzVELEtBQUssRUFBRSxFQUFFO2FBQ0ssQ0FDZixDQUFDLENBQUM7U0FDSjthQUNJO1lBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDbkQsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQ25ELEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sUUFBUSxHQUFtQixFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDO29CQUNkLEtBQUssRUFBRSxHQUFHO2lCQUNYLENBQUMsQ0FBQztZQUNILHlCQUF5QjtZQUN6QixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFO2dCQUNwRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDL0IsS0FBSyxFQUFFLEVBQUU7aUJBQ0ssQ0FDZixDQUFDLENBQUM7WUFDTCxDQUFDLENBQWlCLENBQUM7WUFDckIsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QixzQkFBc0I7WUFDdEIsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV2QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdkM7UUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXO1lBQ3ZELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUVmLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDLEVBQUUsQ0FBQyxDQUFvQixFQUFFLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQzs7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNoRyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxFQUFFLENBQUMsQ0FBb0IsRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ08sVUFBVSxDQUFDLElBQTBCO1FBQzNDLE1BQU0sS0FBSyxHQUFHLEVBQUUsRUFBRSxLQUFLLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQW9CLENBQUM7UUFDeEYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ2pDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUs7U0FDVCxDQUFDLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBZSxDQUFDLENBQUMsQ0FBQztRQUNqRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ1QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFDbkUsS0FBSztTQUNPLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUM7Z0JBQ2pCLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTthQUNOLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDZixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNsQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNyRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDMUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBUTthQUNiLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWE7Z0JBQzFCLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFRO2FBQ2hCLENBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQWMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVcsQ0FBQyxDQUFXO1FBQzdCLE1BQU0sS0FBSyxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFvQixDQUFDO1FBQzVFLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFlLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVM7WUFDN0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBZSxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQzFHLElBQUksS0FBSyxFQUFFO2dCQUNULEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDckMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQVE7b0JBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYTtvQkFDMUIsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXO2lCQUN4QixDQUFDLENBQ0QsQ0FBQztnQkFDRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFjLENBQUMsQ0FBQzthQUN6RDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBZSxDQUFDLEVBQ3BELEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNsRCxJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7b0JBQ3JDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFRO29CQUMvQixNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWE7b0JBQzFCLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVztpQkFDeEIsQ0FBQyxDQUNELENBQUM7YUFDSDs7Z0JBRUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQVEsRUFBRSxDQUFDLENBQzFELENBQUM7WUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFjLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLO1FBQ1gsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDakMsV0FBVyxFQUFFLElBQUk7WUFDakIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsVUFBVSxFQUFFLEtBQUs7WUFDakIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxlQUFlLEVBQUUsS0FBSztZQUN0QixpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDOUIsTUFBTSxFQUFFLENBQUM7b0JBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUNyQixtREFBbUQ7b0JBQ25ELGdCQUFnQjtvQkFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVO2lCQUN0QixDQUFDO1lBQ0YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFvQjtRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDckMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ1YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQztTQUNwQjtRQUNELElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNWLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNoQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUM7U0FDcEI7UUFDRCxNQUFNLElBQUksR0FBTyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3hGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNWLEdBQUc7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3JCLE1BQU0sR0FBRyxHQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDZixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQzt5QkFDaEIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO3dCQUMvQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRzs0QkFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztxQkFDOUQ7eUJBQ0ksSUFBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO3dCQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM3RixDQUFDLENBQUMsQ0FBQztnQkFDSCxDQUFDLEVBQUUsQ0FBQzthQUNMLFFBQ00sQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3BDO2FBQ0k7WUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDUixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7O29CQUN0QixPQUFPO2FBQ2I7aUJBQ0ksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNoQixJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzs7b0JBQ3RCLE9BQU87YUFDYjtpQkFDSSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssR0FBRztnQkFBRSxPQUFPO2lCQUM5RSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUFFLE9BQU87aUJBQ3RGO2dCQUNILElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzFCO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUNPLE1BQU0sQ0FBQyxDQUFTLEVBQUUsRUFBVSxFQUFFLElBQVE7UUFDNUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2IsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQztpQkFDZixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztpQkFDOUIsSUFBSyxJQUFJLENBQUMsS0FBSyxDQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxLQUFLLENBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsQ0FBQyxFQUFFLENBQUM7U0FDTDtJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsQ0FBUyxFQUFFLEVBQVUsRUFBRSxJQUFRO1FBQzVDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNiLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7aUJBQ2YsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQzlCLElBQUssSUFBSSxDQUFDLEtBQUssQ0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsRUFBRSxDQUFDO1NBQ0w7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDekIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUN6QyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQ3pDLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FDakI7WUFDRSxVQUFVLEVBQUU7Z0JBQ1Y7b0JBQ0UsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTztvQkFDaEMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFhLENBQUEsQ0FBQztvQkFDOUUsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUN2Qjt3QkFDRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7d0JBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFOzRCQUMxQixNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ2hELFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDdkQsT0FBTztnQ0FDTCxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU07Z0NBQ2xDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztnQ0FDNUIsS0FBSyxFQUFFO29DQUNMLFlBQVk7b0NBQ1osTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRO29DQUNyQyxJQUFJLEVBQUUsTUFBTTtpQ0FDYjs2QkFDTSxDQUFDO3dCQUNaLENBQUMsQ0FDQTtxQkFDTSxDQUFBLENBQUM7aUJBQ0E7YUFDZjtTQUNGLEVBQ0QsTUFBTSxDQUNQLENBQUM7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxDQUFDOztBQXBXYywrQkFBTSxHQUFHLENBQUUsQ0FBQTtxSEFEZix3QkFBd0I7eUdBQXhCLHdCQUF3Qix1WUFMekIsRUFBRTsyRkFLRCx3QkFBd0I7a0JBUHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxXQUFXO3FCQUNuQjtpQkFDRjttUEFJQyxLQUFLO3NCQURKLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxLQUFLO2dCQUdOLElBQUk7c0JBREgsS0FBSztnQkFJRixLQUFLO3NCQURSLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUdGLE1BQU07c0JBRFQsS0FBSztnQkFLRixPQUFPO3NCQURWLEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQUVhLE9BQU87c0JBQXpCLE1BQU07Z0JBQ0UsT0FBTztzQkFBZixLQUFLO2dCQUNhLGFBQWE7c0JBQS9CLE1BQU07Z0JBQ1EsRUFBRTtzQkFBaEIsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgQ29tcG9uZW50LCBPdXRwdXQsIE9uSW5pdCwgSG9zdEJpbmRpbmcsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgSW5wdXQsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEh0dHBSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBDZWxsTW9kZWwsIENvbHVtbk1vZGVsLCBSb3dNb2RlbCwgU3ByZWFkc2hlZXQsIENlbGxTdHlsZU1vZGVsLCBTZWxlY3RFdmVudEFyZ3MsIEF1dG9GaWxsU2V0dGluZ3NNb2RlbCwgaXNOdW1iZXIgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItc3ByZWFkc2hlZXRcIjtcclxuaW1wb3J0IHsgV29ya2Jvb2sgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0JztcclxuaW1wb3J0IHsgV29ya3NoZWV0IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvd29ya3NoZWV0JztcclxuaW1wb3J0IHsgUm93IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvcm93JztcclxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvY29sdW1uJztcclxuaW1wb3J0IHsgQXhpc0NsaWNrRXZlbnQsIEN1YmVWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vZGVjbGFyYXRpb25zXCI7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIEN1YmUsIEN1YmVBeGlzLCBDdWJlSW5kZXgsIFlBeGlzIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlLCBTZXJpZXMgfSBmcm9tIFwiLi4vY3ViZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNTdHJpbmcgfSBmcm9tIFwiLi4vLi4vY29yZS9mdW5jdGlvbnNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWN1YmUtc3ByZWFkc2hlZXQnLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ2N1YmUtdmlldydcclxuICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWJlU3ByZWFkc2hlZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEN1YmVWaWV3ZXJDb21wb25lbnQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG4gIEBJbnB1dCgpXHJcbiAgd2lkdGg6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIGhlaWdodDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3ViZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2N1YmU6IEN1YmU7XHJcbiAgQElucHV0KClcclxuICBzZXQgeEF4aXModmFsOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgdGhpcy5feEF4aXMgPSBpc0FycmF5KHZhbCkgPyB2YWwgOiBbdmFsXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICB5QXhpcz86IFlBeGlzO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlcmllcyh2YWw6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsKSB0aGlzLl9zZXJpZXMgPSBpc0FycmF5KHZhbCkgPyB2YWwgOiBbdmFsXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBzZXQgaW5kaWNlcyh2YWw6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsKSB0aGlzLl9pbmRpY2VzID0gaXNBcnJheSh2YWwpID8gdmFsIDogW3ZhbF07XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVycz86IEF4ZXNNYXA7XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGV4cGxvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEF4aXNDbGlja0V2ZW50PigpO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGxvYWRpbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQEhvc3RCaW5kaW5nKCkgaWQgPSBgY3ViZS1zcHJlYWRzaGVldC0ke0N1YmVTcHJlYWRzaGVldENvbXBvbmVudC5uZXh0SWQrK31gO1xyXG4gIHNwcmVhZHNoZWV0OiBTcHJlYWRzaGVldDtcclxuICBkYXRhU291cmNlOiBSb3dNb2RlbFtdID0gW107XHJcbiAgY29sdW1uczogQ29sdW1uTW9kZWxbXTtcclxuICByZWFkb25seSBudW1iZXJTdHlsZSA9IHsgdGV4dEFsaWduOiAncmlnaHQnIH0gYXMgQ2VsbFN0eWxlTW9kZWw7XHJcbiAgcmVhZG9ubHkgYXV0b0ZpbGxTZXR0aW5ncyA9IHsgc2hvd0ZpbGxPcHRpb25zOiBmYWxzZSB9IGFzIEF1dG9GaWxsU2V0dGluZ3NNb2RlbDtcclxuICBwcml2YXRlIF94QXhpczogc3RyaW5nW107XHJcbiAgcHJpdmF0ZSBfc2VyaWVzPzogc3RyaW5nW107XHJcbiAgcHJpdmF0ZSBfaW5kaWNlcz86IHN0cmluZ1tdO1xyXG4gIHByaXZhdGUgX2F4ZXM6IEN1YmVBeGlzW107XHJcbiAgcHJpdmF0ZSBfY2luZGljZXM6IEN1YmVJbmRleFtdO1xyXG4gIHByaXZhdGUgX3lyb3dzOiB7IGtleTogYW55OyB2YWx1ZTogYW55IH1bXSA9IFtdO1xyXG4gIHByaXZhdGUgX3hjb2x1bW5zOiB7IGtleTogYW55OyB2YWx1ZTogYW55IH1bXSA9IFtdO1xyXG4gIHByaXZhdGUgX3ByZXBhcmU6IFByb21pc2U8YW55W10+O1xyXG4gIHByaXZhdGUgX251bWJlckZvcm1hdDogc3RyaW5nO1xyXG4gIC8vcHJpdmF0ZSByZWFkb25seSBfaW50bDogSW50ZXJuYXRpb25hbGl6YXRpb24gPSBuZXcgSW50ZXJuYXRpb25hbGl6YXRpb24oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RzOiBEYXRhc291cmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3ViZSA9IHRoaXMuY3ViZSA/IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSB0aGlzLmN1YmUpIDogdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzWzBdO1xyXG4gICAgdGhpcy5fbnVtYmVyRm9ybWF0ID0gYCR7dGhpcy5fY3ViZS5jdXJyZW5jeUNvZGUgPyAnYycgOiAnbid9JHt0aGlzLl9zZXJ2aWNlLmZyYWN0aW9uRGlnaXRzfWBcclxuICAgIC8vdGhpcy5faW50bC5nZXROdW1iZXJQYXR0ZXJuKHtcclxuICAgIC8vICBjdXJyZW5jeTogdGhpcy5fY3ViZS5jdXJyZW5jeUNvZGUsXHJcbiAgICAvLyAgZm9ybWF0OiB0aGlzLl9jdWJlLmN1cnJlbmN5Q29kZSA/ICdjJyA6ICduJyxcclxuICAgIC8vICB1c2VHcm91cGluZzogdHJ1ZSxcclxuICAgIC8vICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHMsXHJcbiAgICAvLyAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiB0aGlzLl9zZXJ2aWNlLmZyYWN0aW9uRGlnaXRzXHJcbiAgICAvL30gYXMgTnVtYmVyRm9ybWF0T3B0aW9ucyk7XHJcbiAgICBpZiAoIXRoaXMuX3Nlcmllcykge1xyXG4gICAgICB0aGlzLl9heGVzID0gdGhpcy5feEF4aXMubWFwKGMgPT4gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT0gYykpO1xyXG4gICAgICBpZiAodGhpcy5faW5kaWNlcykgdGhpcy5fY2luZGljZXMgPSB0aGlzLl9jdWJlLmluZGljZXMuZmlsdGVyKGkgPT4gdGhpcy5faW5kaWNlcy5pbmRleE9mKGkubmFtZSkgPiAtMSk7XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuX2F4ZXMubWFwKF8gPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB3aWR0aDogMTIwXHJcbiAgICAgICAgfSBhcyBDb2x1bW5Nb2RlbDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY29sdW1ucy5wdXNoKHtcclxuICAgICAgICB3aWR0aDogOTBcclxuICAgICAgfSAvKiB2YWx1ZSAqLyk7XHJcbiAgICAgIHRoaXMuX2luZGljZXMgJiYgdGhpcy5faW5kaWNlcy5mb3JFYWNoKF8gPT4gdGhpcy5jb2x1bW5zLnB1c2goe1xyXG4gICAgICAgIHdpZHRoOiA5MFxyXG4gICAgICB9IGFzIENvbHVtbk1vZGVsXHJcbiAgICAgICkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IHlOYW1lID0gdGhpcy5fc2VyaWVzWzBdLCB4TmFtZSA9IHRoaXMuX3hBeGlzWzBdLFxyXG4gICAgICAgIHhBeGlzID0gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHhOYW1lKSxcclxuICAgICAgICB5QXhpcyA9IHRoaXMuX2N1YmUuYXhlcy5maW5kKGEgPT4gYS5uYW1lID09PSB5TmFtZSk7XHJcbiAgICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSBbe1xyXG4gICAgICAgIHdpZHRoOiAxMjBcclxuICAgICAgfV07XHJcbiAgICAgIC8vIGFjcXVpcmUgY29sdW1ucyBzb3VyY2VcclxuICAgICAgbGV0IG9ic2VydmUgPSB0aGlzLl9kcy5hbGwoeEF4aXMuZGF0YVR5cGUpLnRvUHJvbWlzZSgpLlxyXG4gICAgICAgIHRoZW4oYyA9PiB7XHJcbiAgICAgICAgICB0aGlzLl94Y29sdW1ucyA9IGM7XHJcbiAgICAgICAgICBjLmZvckVhY2goXyA9PiB0aGlzLmNvbHVtbnMucHVzaCh7XHJcbiAgICAgICAgICAgIHdpZHRoOiA5MFxyXG4gICAgICAgICAgfSBhcyBDb2x1bW5Nb2RlbFxyXG4gICAgICAgICAgKSk7XHJcbiAgICAgICAgfSkgYXMgUHJvbWlzZTxhbnk+O1xyXG4gICAgICBwcm9taXNlcy5wdXNoKG9ic2VydmUpO1xyXG4gICAgICAvLyBhY3F1aXJlIHJvd3Mgc291cmNlXHJcbiAgICAgIG9ic2VydmUgPSB0aGlzLl9kcy5hbGwoeUF4aXMuZGF0YVR5cGUpLnRvUHJvbWlzZSgpLlxyXG4gICAgICAgIHRoZW4ociA9PiB0aGlzLl95cm93cyA9IHIpO1xyXG4gICAgICBwcm9taXNlcy5wdXNoKG9ic2VydmUpO1xyXG5cclxuICAgICAgdGhpcy5fcHJlcGFyZSA9IFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgIH1cclxuICAgIHRoaXMuZXhlY3V0ZSgpO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snZmlsdGVycyddICYmICFjaGFuZ2VzWydmaWx0ZXJzJ10uZmlyc3RDaGFuZ2UpXHJcbiAgICAgIHRoaXMuZXhlY3V0ZSgpO1xyXG4gICAgZWxzZVxyXG4gICAgICBpZiAoY2hhbmdlc1snaGVpZ2h0J10gfHwgY2hhbmdlc1snd2lkdGgnXSlcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gIH1cclxuICByZXNpemUoKSB7XHJcbiAgICBpZiAodGhpcy5zcHJlYWRzaGVldCkge1xyXG4gICAgICB0aGlzLnNwcmVhZHNoZWV0LmhlaWdodCA9IHRoaXMuaGVpZ2h0O1xyXG4gICAgICB0aGlzLnNwcmVhZHNoZWV0LndpZHRoID0gdGhpcy53aWR0aDtcclxuICAgICAgdGhpcy5zcHJlYWRzaGVldC5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleGVjdXRlKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICBpZiAoIXRoaXMuX3NlcmllcylcclxuICAgICAgdGhpcy5fc2VydmljZS50YWJsZSh0aGlzLl9jdWJlLm5hbWUsIHRoaXMuX3hBeGlzLCB7IGZpbHRlcnM6IHRoaXMuZmlsdGVycywgaW5kaWNlczogdGhpcy5faW5kaWNlcyB9KS5cclxuICAgICAgICBzdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9kYXRhdGFibGUoZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfSwgKGU6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcihlLnN0YXR1cyA9PT0gNDAxID8gJ1VuYXV0aG9yaXplZCcgOiBudWxsKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIGVsc2UgdGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5jdWJlLCB0aGlzLl94QXhpcywgeyBzZXJpZXM6IHRoaXMuX3NlcmllcywgZmlsdGVyczogdGhpcy5maWx0ZXJzIH0pLlxyXG4gICAgICBzdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2RhdGFzZXJpZXMoZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sIChlOiBIdHRwUmVzcG9uc2U8YW55PikgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKGUuc3RhdHVzID09PSA0MDEgPyAnVW5hdXRob3JpemVkJyA6IG51bGwpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RhdGF0YWJsZShkYXRhOiB7IHZhbHVlOiBudW1iZXI7IH1bXSkge1xyXG4gICAgY29uc3QgY2VsbHMgPSBbXSwgc3R5bGUgPSB7IGZvbnRXZWlnaHQ6ICdib2xkJywgdGV4dEFsaWduOiAnY2VudGVyJyB9IGFzIENlbGxTdHlsZU1vZGVsO1xyXG4gICAgdGhpcy5fYXhlcy5mb3JFYWNoKGMgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgIHZhbHVlOiBjLnRpdGxlLCBzdHlsZVxyXG4gICAgfSBhcyBDZWxsTW9kZWwpKTtcclxuICAgIHRoaXMuX2luZGljZXMgJiYgdGhpcy5fY2luZGljZXMuZm9yRWFjaChpID0+IGNlbGxzLnB1c2goeyB2YWx1ZTogaS50aXRsZSwgc3R5bGUgfSBhcyBDZWxsTW9kZWwpKTtcclxuICAgIGNlbGxzLnB1c2goe1xyXG4gICAgICB2YWx1ZTogdGhpcy55QXhpcyA/IHRoaXMueUF4aXMudGl0bGUgOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdWYWx1ZScpLFxyXG4gICAgICBzdHlsZVxyXG4gICAgfSBhcyBDZWxsTW9kZWwpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0gW3tcclxuICAgICAgY2VsbHMsIGhlaWdodDogMjVcclxuICAgIH0gYXMgUm93TW9kZWxdO1xyXG4gICAgZGF0YS5mb3JFYWNoKGQgPT4ge1xyXG4gICAgICBjb25zdCBjZWxscyA9IFtdO1xyXG4gICAgICB0aGlzLl94QXhpcy5mb3JFYWNoKGMgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgICAgdmFsdWU6IGRbY10sXHJcbiAgICAgIH0gYXMgQ2VsbE1vZGVsKSk7XHJcbiAgICAgIHRoaXMuX2luZGljZXMgJiYgdGhpcy5faW5kaWNlcy5mb3JFYWNoKGkgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgICAgc3R5bGU6IHRoaXMubnVtYmVyU3R5bGUsXHJcbiAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgdmFsdWU6IChkW2ldIHx8IDApIGFzIGFueSxcclxuICAgICAgfSBhcyBDZWxsTW9kZWwpKTtcclxuICAgICAgY2VsbHMucHVzaCh7XHJcbiAgICAgICAgc3R5bGU6IHRoaXMubnVtYmVyU3R5bGUsXHJcbiAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgdmFsdWU6IChkLnZhbHVlIHx8IDApIGFzIGFueSxcclxuICAgICAgfSBhcyBDZWxsTW9kZWwpO1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UucHVzaCh7IGNlbGxzLCBzb3VyY2U6IGQsIGhlaWdodDogMjUgfSBhcyBSb3dNb2RlbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RhdGFzZXJpZXMoZDogU2VyaWVzW10pIHtcclxuICAgIGNvbnN0IHN0eWxlID0geyBmb250V2VpZ2h0OiAnYm9sZCcsIHRleHRBbGlnbjogJ2NlbnRlcicgfSBhcyBDZWxsU3R5bGVNb2RlbDtcclxuICAgIGNvbnN0IGNlbGxzID0gW3sgdmFsdWU6ICcnIH0gYXMgQ2VsbE1vZGVsXTtcclxuICAgIHRoaXMuX3hjb2x1bW5zLmZvckVhY2goYyA9PiBjZWxscy5wdXNoKHsgdmFsdWU6IGMudmFsdWUsIHN0eWxlIH0pKTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IFt7IGNlbGxzLCBoZWlnaHQ6IDI1IH1dO1xyXG5cclxuICAgIHRoaXMuX2luZGljZXMgJiYgdGhpcy5fY2luZGljZXMuXHJcbiAgICAgIGZvckVhY2goaSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2VsbHMgPSBbeyB2YWx1ZTogaS50aXRsZSwgc3R5bGUgfSBhcyBDZWxsTW9kZWxdLCBzZXJpZSA9IGQuZmluZChzID0+IHMuaW5kZXggPT09IGkubmFtZSksIG1hcCA9IHt9O1xyXG4gICAgICAgIGlmIChzZXJpZSkge1xyXG4gICAgICAgICAgc2VyaWUucG9pbnRzLmZvckVhY2gocCA9PiBtYXBbcC54XSA9IHAueSk7XHJcbiAgICAgICAgICB0aGlzLl94Y29sdW1ucy5mb3JFYWNoKGMgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICAgIHZhbHVlOiAobWFwW2Mua2V5XSB8fCAwKSBhcyBhbnksXHJcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgICAgICBzdHlsZTogdGhpcy5udW1iZXJTdHlsZVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UucHVzaCh7IGNlbGxzLCBoZWlnaHQ6IDI1IH0gYXMgUm93TW9kZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLl95cm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBjb25zdCBjZWxscyA9IFt7IHZhbHVlOiByLnZhbHVlLCBzdHlsZSB9IGFzIENlbGxNb2RlbF0sXHJcbiAgICAgICAgc2VyaWUgPSBkLmZpbmQocyA9PiBzLm5hbWUgPT09IHIua2V5KSwgbWFwID0ge307XHJcbiAgICAgIGlmIChzZXJpZSkge1xyXG4gICAgICAgIHNlcmllLnBvaW50cy5mb3JFYWNoKHAgPT4gbWFwW3AueF0gPSBwLnkpO1xyXG4gICAgICAgIHRoaXMuX3hjb2x1bW5zLmZvckVhY2goYyA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICAgIHZhbHVlOiAobWFwW2Mua2V5XSB8fCAwKSBhcyBhbnksXHJcbiAgICAgICAgICBmb3JtYXQ6IHRoaXMuX251bWJlckZvcm1hdCxcclxuICAgICAgICAgIHN0eWxlOiB0aGlzLm51bWJlclN0eWxlXHJcbiAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLl94Y29sdW1ucy5mb3JFYWNoKF8gPT4gY2VsbHMucHVzaCh7IHZhbHVlOiAwIGFzIGFueSB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wdXNoKHsgY2VsbHMsIGhlaWdodDogMjUgfSBhcyBSb3dNb2RlbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RyYXcoKSB7XHJcbiAgICB0aGlzLnNwcmVhZHNoZWV0ICYmIHRoaXMuc3ByZWFkc2hlZXQuZGVzdHJveSgpO1xyXG4gICAgdGhpcy5zcHJlYWRzaGVldCA9IG5ldyBTcHJlYWRzaGVldCh7XHJcbiAgICAgIGlzUHJvdGVjdGVkOiB0cnVlLFxyXG4gICAgICBhbGxvd0VkaXRpbmc6IGZhbHNlLFxyXG4gICAgICBhbGxvd0RlbGV0ZTogZmFsc2UsXHJcbiAgICAgIGFsbG93SW5zZXJ0OiBmYWxzZSxcclxuICAgICAgc2hvd1JpYmJvbjogZmFsc2UsXHJcbiAgICAgIGFsbG93QXV0b0ZpbGw6IGZhbHNlLFxyXG4gICAgICBhdXRvRmlsbFNldHRpbmdzOiB0aGlzLmF1dG9GaWxsU2V0dGluZ3MsXHJcbiAgICAgIGVuYWJsZUNsaXBib2FyZDogZmFsc2UsXHJcbiAgICAgIGVuYWJsZUNvbnRleHRNZW51OiBmYWxzZSxcclxuICAgICAgc2hvd0Zvcm11bGFCYXI6IGZhbHNlLFxyXG4gICAgICBzaG93U2hlZXRUYWJzOiBmYWxzZSxcclxuICAgICAgc2VsZWN0OiB0aGlzLnNlbGVjdC5iaW5kKHRoaXMpLFxyXG4gICAgICBzaGVldHM6IFt7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIC8vZnJvemVuQ29sdW1uczogdGhpcy5zZXJpZXMgIT09IHVuZGVmaW5lZCA/IDEgOiAwLFxyXG4gICAgICAgIC8vZnJvemVuUm93czogMSxcclxuICAgICAgICByb3dzOiB0aGlzLmRhdGFTb3VyY2UsXHJcbiAgICAgIH1dLFxyXG4gICAgICB3aWR0aDogdGhpcy53aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcclxuICAgIH0sIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG4gIHNlbGVjdChldnQ6IFNlbGVjdEV2ZW50QXJncykge1xyXG4gICAgY29uc3QgYWRkcmVzcyA9IHRoaXMuc3ByZWFkc2hlZXQuZ2V0QWRkcmVzc0luZm8oZXZ0LnJhbmdlKTtcclxuICAgIGxldCBbeSwgeCwgeTEsIHgxXSA9IGFkZHJlc3MuaW5kaWNlcztcclxuICAgIGlmICh5MSA8IHkpIHtcclxuICAgICAgY29uc3QgcmFuZ2UgPSB5O1xyXG4gICAgICB5ID0geTEsIHkxID0gcmFuZ2U7XHJcbiAgICB9XHJcbiAgICBpZiAoeDEgPCB4KSB7XHJcbiAgICAgIGNvbnN0IHJhbmdlID0geDtcclxuICAgICAgeCA9IHgxLCB4MSA9IHJhbmdlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXhlczoge30gPSB7fTtcclxuICAgIGlmICghdGhpcy5fc2VyaWVzKSB7XHJcbiAgICAgIGlmICh5ID09PSAwKSByZXR1cm47XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5faW5kaWNlcyAmJiB5IDwgdGhpcy5faW5kaWNlcy5sZW5ndGggPyB0aGlzLl9jaW5kaWNlc1t5XS5uYW1lIDogbnVsbDtcclxuICAgICAgbGV0IGkgPSB5O1xyXG4gICAgICBkbyB7XHJcbiAgICAgICAgdGhpcy5fYXhlcy5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgICAgY29uc3Qga2V5ID0gKHRoaXMuZGF0YVNvdXJjZVtpXSBhcyBhbnkpLnNvdXJjZVsnXycgKyBhLm5hbWVdO1xyXG4gICAgICAgICAgaWYgKCFheGVzW2EubmFtZV0pXHJcbiAgICAgICAgICAgIGF4ZXNbYS5uYW1lXSA9IGtleTtcclxuICAgICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKGF4ZXNbYS5uYW1lXSkpIHtcclxuICAgICAgICAgICAgaWYgKGF4ZXNbYS5uYW1lXSAhPT0ga2V5KSBheGVzW2EubmFtZV0gPSBbYXhlc1thLm5hbWVdLCBrZXldO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoKGF4ZXNbYS5uYW1lXSBhcyBzdHJpbmdbXSkuaW5kZXhPZihrZXkpIDwgMCkgKGF4ZXNbYS5uYW1lXSBhcyBzdHJpbmdbXSkucHVzaChrZXkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGkrKztcclxuICAgICAgfVxyXG4gICAgICB3aGlsZSAoaSA8PSB5MSk7XHJcbiAgICAgIHRoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcywgaW5kZXggfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHkgPT09IDApIHtcclxuICAgICAgICBpZiAoeSA8IHkxKVxyXG4gICAgICAgICAgdGhpcy5fZmlsbHgoeCwgeDEsIGF4ZXMpO1xyXG4gICAgICAgIGVsc2UgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHggPT09IDApIHtcclxuICAgICAgICBpZiAoeCA8IHgxKVxyXG4gICAgICAgICAgdGhpcy5fZmlsbHkoeSwgeTEsIGF4ZXMpO1xyXG4gICAgICAgIGVsc2UgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHkgPT09IHkxICYmIHggPT09IHgxICYmIHRoaXMuZGF0YVNvdXJjZVt5XS5jZWxsc1t4XS52YWx1ZSA9PT0gJzAnKSByZXR1cm47XHJcbiAgICAgIGVsc2UgaWYgKHkgPiB0aGlzLmRhdGFTb3VyY2UubGVuZ3RoIC0gMSB8fCB4ID4gdGhpcy5kYXRhU291cmNlW3ldLmNlbGxzLmxlbmd0aCAtIDEpIHJldHVybjtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fZmlsbHgoeCwgeDEsIGF4ZXMpO1xyXG4gICAgICAgIHRoaXMuX2ZpbGx5KHksIHkxLCBheGVzKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV4cGxvcmUuZW1pdCh7IGF4ZXMgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX2ZpbGx5KHk6IG51bWJlciwgeTE6IG51bWJlciwgYXhlczoge30pIHtcclxuICAgIGNvbnN0IHlOYW1lID0gdGhpcy5fc2VyaWVzWzBdO1xyXG4gICAgbGV0IGkgPSB5IC0gMTtcclxuICAgIHdoaWxlIChpIDwgeTEpIHtcclxuICAgICAgbGV0IHsga2V5IH0gPSB0aGlzLl95cm93c1tpXTtcclxuICAgICAgaWYgKCFheGVzW3lOYW1lXSlcclxuICAgICAgICBheGVzW3lOYW1lXSA9IGtleTtcclxuICAgICAgZWxzZSBpZiAoaXNTdHJpbmcoYXhlc1t5TmFtZV0pKVxyXG4gICAgICAgIGF4ZXNbeU5hbWVdID0gW2F4ZXNbeU5hbWVdLCBrZXldO1xyXG4gICAgICBlbHNlIGlmICgoYXhlc1t5TmFtZV0gYXMgc3RyaW5nW10pLmluZGV4T2Yoa2V5KSA8IDApXHJcbiAgICAgICAgKGF4ZXNbeU5hbWVdIGFzIHN0cmluZ1tdKS5wdXNoKGtleSk7XHJcbiAgICAgIGkrKztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpbGx4KHg6IG51bWJlciwgeDE6IG51bWJlciwgYXhlczoge30pIHtcclxuICAgIGNvbnN0IHhOYW1lID0gdGhpcy5feEF4aXNbMF07XHJcbiAgICBsZXQgaSA9IHggLSAxO1xyXG4gICAgd2hpbGUgKGkgPCB4MSkge1xyXG4gICAgICBsZXQgeyBrZXkgfSA9IHRoaXMuX3hjb2x1bW5zW2ldO1xyXG4gICAgICBpZiAoIWF4ZXNbeE5hbWVdKVxyXG4gICAgICAgIGF4ZXNbeE5hbWVdID0ga2V5O1xyXG4gICAgICBlbHNlIGlmIChpc1N0cmluZyhheGVzW3hOYW1lXSkpXHJcbiAgICAgICAgYXhlc1t4TmFtZV0gPSBbYXhlc1t4TmFtZV0sIGtleV07XHJcbiAgICAgIGVsc2UgaWYgKChheGVzW3hOYW1lXSBhcyBzdHJpbmdbXSkuaW5kZXhPZihrZXkpIDwgMClcclxuICAgICAgICAoYXhlc1t4TmFtZV0gYXMgc3RyaW5nW10pLnB1c2goa2V5KTtcclxuICAgICAgaSsrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0VG9FeGNlbCh0aXRsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB7IHJvd3MgfSA9IHRoaXMuc3ByZWFkc2hlZXQuc2hlZXRzWzBdLFxyXG4gICAgICBudW1iZXJGb3JtYXQgPSB0aGlzLl9zZXJ2aWNlLm51bWJlckZvcm1hdCxcclxuICAgICAgYm9vayA9IG5ldyBXb3JrYm9vayhcclxuICAgICAgICB7XHJcbiAgICAgICAgICB3b3Jrc2hlZXRzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBlbmFibGVSdGw6IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSxcclxuICAgICAgICAgICAgICBuYW1lOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdTaGVldE4nLCAxKSxcclxuICAgICAgICAgICAgICBjb2x1bW5zOiByb3dzWzBdLmNlbGxzLm1hcCgoXywgaSkgPT4gKHsgaW5kZXg6IGkgKyAxLCB3aWR0aDogMTUwIH0gYXMgQ29sdW1uKSksXHJcbiAgICAgICAgICAgICAgcm93czogcm93cy5tYXAoKHIsIGkpID0+IChcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgaW5kZXg6IGkgKyAxLFxyXG4gICAgICAgICAgICAgICAgICBjZWxsczogci5jZWxscy5tYXAoKGMsIGopID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXIgPSBpID09PSAwIHx8ICh0aGlzLnNlcmllcyAmJiBqID09PSAwKSxcclxuICAgICAgICAgICAgICAgICAgICAgIGlzbnVtYmVyID0gdGhpcy5zZXJpZXMgPyAhaGVhZGVyIDogaXNOdW1iZXIoYy52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGlzbnVtYmVyID8gJ251bWJlcicgOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaiArIDEsIHZhbHVlOiBjLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoQWxpZ246IGlzbnVtYmVyID8gJ3JpZ2h0JyA6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2xkOiBoZWFkZXJcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGFzIENlbGw7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgfSBhcyBSb3cpKSxcclxuICAgICAgICAgICAgfSBhcyBXb3Jrc2hlZXQsXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ3hsc3gnXHJcbiAgICAgICk7XHJcbiAgICBib29rLnNhdmUoYCR7dGl0bGV9Lnhsc3hgKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnNwcmVhZHNoZWV0ICYmIHRoaXMuc3ByZWFkc2hlZXQuZGVzdHJveSgpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgQ2VsbCB7IH1cclxuIl19
370
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByZWFkc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL2dyaWQvc3ByZWFkc2hlZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxXQUFXLEVBQXlCLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFFN0ksT0FBTyxFQUFvQyxXQUFXLEVBQTBELFFBQVEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RLLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVd4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7O0FBU3pELE1BQU0sT0FBTyx3QkFBd0I7SUEyQ25DLDRFQUE0RTtJQUM1RSxZQUNVLFFBQXdCLEVBQ3hCLEdBQWtCLEVBQ2xCLFFBQXFCLEVBQ3JCLFVBQTRCLEVBQzVCLEdBQXNCLEVBQ3RCLFdBQXVCO1FBTHZCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUM1QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXpCZCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFN0Msa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2hELE9BQUUsR0FBRyxvQkFBb0Isd0JBQXdCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUU1RSxlQUFVLEdBQWUsRUFBRSxDQUFDO1FBRW5CLGdCQUFXLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFvQixDQUFDO1FBQ3ZELHFCQUFnQixHQUFHLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBMkIsQ0FBQztRQU14RSxXQUFNLEdBQStCLEVBQUUsQ0FBQztRQUN4QyxjQUFTLEdBQStCLEVBQUUsQ0FBQztJQVVkLENBQUM7SUF6Q3RDLElBQ0ksS0FBSyxDQUFDLEdBQXNCO1FBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUdELElBQ0ksTUFBTSxDQUFDLEdBQXNCO1FBQy9CLElBQUksR0FBRztZQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELElBQ0ksT0FBTyxDQUFDLEdBQXNCO1FBQ2hDLElBQUksR0FBRztZQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQTZCRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0SCxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUE7UUFDNUYsK0JBQStCO1FBQy9CLHNDQUFzQztRQUN0QyxnREFBZ0Q7UUFDaEQsc0JBQXNCO1FBQ3RCLHdEQUF3RDtRQUN4RCx1REFBdUQ7UUFDdkQsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUUsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hDLE9BQU87b0JBQ0wsS0FBSyxFQUFFLEdBQUc7aUJBQ0ksQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNoQixLQUFLLEVBQUUsRUFBRTthQUNWLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQzVELEtBQUssRUFBRSxFQUFFO2FBQ0ssQ0FDZixDQUFDLENBQUM7U0FDSjthQUNJO1lBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDbkQsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQ25ELEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ3RELE1BQU0sUUFBUSxHQUFtQixFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDO29CQUNkLEtBQUssRUFBRSxHQUFHO2lCQUNYLENBQUMsQ0FBQztZQUNILHlCQUF5QjtZQUN6QixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFO2dCQUNwRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDL0IsS0FBSyxFQUFFLEVBQUU7aUJBQ0ssQ0FDZixDQUFDLENBQUM7WUFDTCxDQUFDLENBQWlCLENBQUM7WUFDckIsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QixzQkFBc0I7WUFDdEIsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV2QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdkM7UUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXO1lBQ3ZELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUVmLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDLEVBQUUsQ0FBQyxDQUFvQixFQUFFLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQzs7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNoRyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxFQUFFLENBQUMsQ0FBb0IsRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ08sVUFBVSxDQUFDLElBQTBCO1FBQzNDLE1BQU0sS0FBSyxHQUFHLEVBQUUsRUFBRSxLQUFLLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQW9CLENBQUM7UUFDeEYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ2pDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUs7U0FDVCxDQUFDLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBZSxDQUFDLENBQUMsQ0FBQztRQUNqRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ1QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFDbkUsS0FBSztTQUNPLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUM7Z0JBQ2pCLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTthQUNOLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDZixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNsQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNyRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDMUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBUTthQUNiLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWE7Z0JBQzFCLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFRO2FBQ2hCLENBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQWMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVcsQ0FBQyxDQUFXO1FBQzdCLE1BQU0sS0FBSyxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFvQixDQUFDO1FBQzVFLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFlLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVM7WUFDN0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBZSxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQzFHLElBQUksS0FBSyxFQUFFO2dCQUNULEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDckMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQVE7b0JBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYTtvQkFDMUIsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXO2lCQUN4QixDQUFDLENBQ0QsQ0FBQztnQkFDRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFjLENBQUMsQ0FBQzthQUN6RDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBZSxDQUFDLEVBQ3BELEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNsRCxJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7b0JBQ3JDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFRO29CQUMvQixNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWE7b0JBQzFCLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVztpQkFDeEIsQ0FBQyxDQUNELENBQUM7YUFDSDs7Z0JBRUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQVEsRUFBRSxDQUFDLENBQzFELENBQUM7WUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFjLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLO1FBQ1gsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDakMsV0FBVyxFQUFFLElBQUk7WUFDakIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsVUFBVSxFQUFFLEtBQUs7WUFDakIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxlQUFlLEVBQUUsS0FBSztZQUN0QixpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDOUIsTUFBTSxFQUFFLENBQUM7b0JBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUNyQixtREFBbUQ7b0JBQ25ELGdCQUFnQjtvQkFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVO2lCQUN0QixDQUFDO1lBQ0YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFvQjtRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDckMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ1YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQztTQUNwQjtRQUNELElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNWLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNoQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUM7U0FDcEI7UUFDRCxNQUFNLElBQUksR0FBTyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3hGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNWLEdBQUc7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3JCLE1BQU0sR0FBRyxHQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDZixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQzt5QkFDaEIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO3dCQUMvQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRzs0QkFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztxQkFDOUQ7eUJBQ0ksSUFBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO3dCQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM3RixDQUFDLENBQUMsQ0FBQztnQkFDSCxDQUFDLEVBQUUsQ0FBQzthQUNMLFFBQ00sQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3BDO2FBQ0k7WUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDUixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7O29CQUN0QixPQUFPO2FBQ2I7aUJBQ0ksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNoQixJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzs7b0JBQ3RCLE9BQU87YUFDYjtpQkFDSSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssR0FBRztnQkFBRSxPQUFPO2lCQUM5RSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUFFLE9BQU87aUJBQ3RGO2dCQUNILElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzFCO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUNPLE1BQU0sQ0FBQyxDQUFTLEVBQUUsRUFBVSxFQUFFLElBQVE7UUFDNUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2IsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQztpQkFDZixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztpQkFDOUIsSUFBSyxJQUFJLENBQUMsS0FBSyxDQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxLQUFLLENBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsQ0FBQyxFQUFFLENBQUM7U0FDTDtJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsQ0FBUyxFQUFFLEVBQVUsRUFBRSxJQUFRO1FBQzVDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNiLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7aUJBQ2YsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQzlCLElBQUssSUFBSSxDQUFDLEtBQUssQ0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsRUFBRSxDQUFDO1NBQ0w7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDekIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUN6QyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQ3pDLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FDakI7WUFDRSxVQUFVLEVBQUU7Z0JBQ1Y7b0JBQ0UsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTztvQkFDaEMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFhLENBQUEsQ0FBQztvQkFDOUUsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUN2Qjt3QkFDRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7d0JBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFOzRCQUMxQixNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ2hELFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDdkQsT0FBTztnQ0FDTCxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU07Z0NBQ2xDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQztnQ0FDWixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7Z0NBQ2QsS0FBSyxFQUFFO29DQUNMLFlBQVk7b0NBQ1osTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRO29DQUNyQyxJQUFJLEVBQUUsTUFBTTtpQ0FDYjs2QkFDTSxDQUFDO3dCQUNaLENBQUMsQ0FDQTtxQkFDTSxDQUFBLENBQUM7aUJBQ0E7YUFDZjtTQUNGLEVBQ0QsTUFBTSxDQUNQLENBQUM7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxDQUFDOztBQXJXYywrQkFBTSxHQUFHLENBQUUsQ0FBQTtxSEFEZix3QkFBd0I7eUdBQXhCLHdCQUF3Qix1WUFMekIsRUFBRTsyRkFLRCx3QkFBd0I7a0JBUHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxXQUFXO3FCQUNuQjtpQkFDRjttUEFJQyxLQUFLO3NCQURKLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxLQUFLO2dCQUdOLElBQUk7c0JBREgsS0FBSztnQkFJRixLQUFLO3NCQURSLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUdGLE1BQU07c0JBRFQsS0FBSztnQkFLRixPQUFPO3NCQURWLEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLO2dCQUVhLE9BQU87c0JBQXpCLE1BQU07Z0JBQ0UsT0FBTztzQkFBZixLQUFLO2dCQUNhLGFBQWE7c0JBQS9CLE1BQU07Z0JBQ1EsRUFBRTtzQkFBaEIsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgQ29tcG9uZW50LCBPdXRwdXQsIE9uSW5pdCwgSG9zdEJpbmRpbmcsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgSW5wdXQsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEh0dHBSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBDZWxsTW9kZWwsIENvbHVtbk1vZGVsLCBSb3dNb2RlbCwgU3ByZWFkc2hlZXQsIENlbGxTdHlsZU1vZGVsLCBTZWxlY3RFdmVudEFyZ3MsIEF1dG9GaWxsU2V0dGluZ3NNb2RlbCwgaXNOdW1iZXIgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItc3ByZWFkc2hlZXRcIjtcclxuaW1wb3J0IHsgV29ya2Jvb2sgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0JztcclxuaW1wb3J0IHsgV29ya3NoZWV0IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvd29ya3NoZWV0JztcclxuaW1wb3J0IHsgUm93IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvcm93JztcclxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvY29sdW1uJztcclxuaW1wb3J0IHsgQXhpc0NsaWNrRXZlbnQsIEN1YmVWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vZGVjbGFyYXRpb25zXCI7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIEN1YmUsIEN1YmVBeGlzLCBDdWJlSW5kZXgsIFlBeGlzIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlLCBTZXJpZXMgfSBmcm9tIFwiLi4vY3ViZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNTdHJpbmcgfSBmcm9tIFwiLi4vLi4vY29yZS9mdW5jdGlvbnNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWN1YmUtc3ByZWFkc2hlZXQnLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ2N1YmUtdmlldydcclxuICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWJlU3ByZWFkc2hlZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEN1YmVWaWV3ZXJDb21wb25lbnQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG4gIEBJbnB1dCgpXHJcbiAgd2lkdGg6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIGhlaWdodDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3ViZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2N1YmU6IEN1YmU7XHJcbiAgQElucHV0KClcclxuICBzZXQgeEF4aXModmFsOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgdGhpcy5feEF4aXMgPSBpc0FycmF5KHZhbCkgPyB2YWwgOiBbdmFsXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICB5QXhpcz86IFlBeGlzO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlcmllcyh2YWw6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsKSB0aGlzLl9zZXJpZXMgPSBpc0FycmF5KHZhbCkgPyB2YWwgOiBbdmFsXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBzZXQgaW5kaWNlcyh2YWw6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsKSB0aGlzLl9pbmRpY2VzID0gaXNBcnJheSh2YWwpID8gdmFsIDogW3ZhbF07XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVycz86IEF4ZXNNYXA7XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGV4cGxvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEF4aXNDbGlja0V2ZW50PigpO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGxvYWRpbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQEhvc3RCaW5kaW5nKCkgaWQgPSBgY3ViZS1zcHJlYWRzaGVldC0ke0N1YmVTcHJlYWRzaGVldENvbXBvbmVudC5uZXh0SWQrK31gO1xyXG4gIHNwcmVhZHNoZWV0OiBTcHJlYWRzaGVldDtcclxuICBkYXRhU291cmNlOiBSb3dNb2RlbFtdID0gW107XHJcbiAgY29sdW1uczogQ29sdW1uTW9kZWxbXTtcclxuICByZWFkb25seSBudW1iZXJTdHlsZSA9IHsgdGV4dEFsaWduOiAncmlnaHQnIH0gYXMgQ2VsbFN0eWxlTW9kZWw7XHJcbiAgcmVhZG9ubHkgYXV0b0ZpbGxTZXR0aW5ncyA9IHsgc2hvd0ZpbGxPcHRpb25zOiBmYWxzZSB9IGFzIEF1dG9GaWxsU2V0dGluZ3NNb2RlbDtcclxuICBwcml2YXRlIF94QXhpczogc3RyaW5nW107XHJcbiAgcHJpdmF0ZSBfc2VyaWVzPzogc3RyaW5nW107XHJcbiAgcHJpdmF0ZSBfaW5kaWNlcz86IHN0cmluZ1tdO1xyXG4gIHByaXZhdGUgX2F4ZXM6IEN1YmVBeGlzW107XHJcbiAgcHJpdmF0ZSBfY2luZGljZXM6IEN1YmVJbmRleFtdO1xyXG4gIHByaXZhdGUgX3lyb3dzOiB7IGtleTogYW55OyB2YWx1ZTogYW55IH1bXSA9IFtdO1xyXG4gIHByaXZhdGUgX3hjb2x1bW5zOiB7IGtleTogYW55OyB2YWx1ZTogYW55IH1bXSA9IFtdO1xyXG4gIHByaXZhdGUgX3ByZXBhcmU6IFByb21pc2U8YW55W10+O1xyXG4gIHByaXZhdGUgX251bWJlckZvcm1hdDogc3RyaW5nO1xyXG4gIC8vcHJpdmF0ZSByZWFkb25seSBfaW50bDogSW50ZXJuYXRpb25hbGl6YXRpb24gPSBuZXcgSW50ZXJuYXRpb25hbGl6YXRpb24oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RzOiBEYXRhc291cmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3ViZSA9IHRoaXMuY3ViZSA/IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSB0aGlzLmN1YmUpIDogdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzWzBdO1xyXG4gICAgdGhpcy5fbnVtYmVyRm9ybWF0ID0gYCR7dGhpcy5fY3ViZS5jdXJyZW5jeUNvZGUgPyAnYycgOiAnbid9JHt0aGlzLl9zZXJ2aWNlLmZyYWN0aW9uRGlnaXRzfWBcclxuICAgIC8vdGhpcy5faW50bC5nZXROdW1iZXJQYXR0ZXJuKHtcclxuICAgIC8vICBjdXJyZW5jeTogdGhpcy5fY3ViZS5jdXJyZW5jeUNvZGUsXHJcbiAgICAvLyAgZm9ybWF0OiB0aGlzLl9jdWJlLmN1cnJlbmN5Q29kZSA/ICdjJyA6ICduJyxcclxuICAgIC8vICB1c2VHcm91cGluZzogdHJ1ZSxcclxuICAgIC8vICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHMsXHJcbiAgICAvLyAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiB0aGlzLl9zZXJ2aWNlLmZyYWN0aW9uRGlnaXRzXHJcbiAgICAvL30gYXMgTnVtYmVyRm9ybWF0T3B0aW9ucyk7XHJcbiAgICBpZiAoIXRoaXMuX3Nlcmllcykge1xyXG4gICAgICB0aGlzLl9heGVzID0gdGhpcy5feEF4aXMubWFwKGMgPT4gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT0gYykpO1xyXG4gICAgICBpZiAodGhpcy5faW5kaWNlcykgdGhpcy5fY2luZGljZXMgPSB0aGlzLl9jdWJlLmluZGljZXMuZmlsdGVyKGkgPT4gdGhpcy5faW5kaWNlcy5pbmRleE9mKGkubmFtZSkgPiAtMSk7XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuX2F4ZXMubWFwKF8gPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB3aWR0aDogMTIwXHJcbiAgICAgICAgfSBhcyBDb2x1bW5Nb2RlbDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY29sdW1ucy5wdXNoKHtcclxuICAgICAgICB3aWR0aDogOTBcclxuICAgICAgfSAvKiB2YWx1ZSAqLyk7XHJcbiAgICAgIHRoaXMuX2luZGljZXMgJiYgdGhpcy5faW5kaWNlcy5mb3JFYWNoKF8gPT4gdGhpcy5jb2x1bW5zLnB1c2goe1xyXG4gICAgICAgIHdpZHRoOiA5MFxyXG4gICAgICB9IGFzIENvbHVtbk1vZGVsXHJcbiAgICAgICkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IHlOYW1lID0gdGhpcy5fc2VyaWVzWzBdLCB4TmFtZSA9IHRoaXMuX3hBeGlzWzBdLFxyXG4gICAgICAgIHhBeGlzID0gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHhOYW1lKSxcclxuICAgICAgICB5QXhpcyA9IHRoaXMuX2N1YmUuYXhlcy5maW5kKGEgPT4gYS5uYW1lID09PSB5TmFtZSk7XHJcbiAgICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSBbe1xyXG4gICAgICAgIHdpZHRoOiAxMjBcclxuICAgICAgfV07XHJcbiAgICAgIC8vIGFjcXVpcmUgY29sdW1ucyBzb3VyY2VcclxuICAgICAgbGV0IG9ic2VydmUgPSB0aGlzLl9kcy5hbGwoeEF4aXMuZGF0YVR5cGUpLnRvUHJvbWlzZSgpLlxyXG4gICAgICAgIHRoZW4oYyA9PiB7XHJcbiAgICAgICAgICB0aGlzLl94Y29sdW1ucyA9IGM7XHJcbiAgICAgICAgICBjLmZvckVhY2goXyA9PiB0aGlzLmNvbHVtbnMucHVzaCh7XHJcbiAgICAgICAgICAgIHdpZHRoOiA5MFxyXG4gICAgICAgICAgfSBhcyBDb2x1bW5Nb2RlbFxyXG4gICAgICAgICAgKSk7XHJcbiAgICAgICAgfSkgYXMgUHJvbWlzZTxhbnk+O1xyXG4gICAgICBwcm9taXNlcy5wdXNoKG9ic2VydmUpO1xyXG4gICAgICAvLyBhY3F1aXJlIHJvd3Mgc291cmNlXHJcbiAgICAgIG9ic2VydmUgPSB0aGlzLl9kcy5hbGwoeUF4aXMuZGF0YVR5cGUpLnRvUHJvbWlzZSgpLlxyXG4gICAgICAgIHRoZW4ociA9PiB0aGlzLl95cm93cyA9IHIpO1xyXG4gICAgICBwcm9taXNlcy5wdXNoKG9ic2VydmUpO1xyXG5cclxuICAgICAgdGhpcy5fcHJlcGFyZSA9IFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgIH1cclxuICAgIHRoaXMuZXhlY3V0ZSgpO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snZmlsdGVycyddICYmICFjaGFuZ2VzWydmaWx0ZXJzJ10uZmlyc3RDaGFuZ2UpXHJcbiAgICAgIHRoaXMuZXhlY3V0ZSgpO1xyXG4gICAgZWxzZVxyXG4gICAgICBpZiAoY2hhbmdlc1snaGVpZ2h0J10gfHwgY2hhbmdlc1snd2lkdGgnXSlcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gIH1cclxuICByZXNpemUoKSB7XHJcbiAgICBpZiAodGhpcy5zcHJlYWRzaGVldCkge1xyXG4gICAgICB0aGlzLnNwcmVhZHNoZWV0LmhlaWdodCA9IHRoaXMuaGVpZ2h0O1xyXG4gICAgICB0aGlzLnNwcmVhZHNoZWV0LndpZHRoID0gdGhpcy53aWR0aDtcclxuICAgICAgdGhpcy5zcHJlYWRzaGVldC5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleGVjdXRlKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICBpZiAoIXRoaXMuX3NlcmllcylcclxuICAgICAgdGhpcy5fc2VydmljZS50YWJsZSh0aGlzLl9jdWJlLm5hbWUsIHRoaXMuX3hBeGlzLCB7IGZpbHRlcnM6IHRoaXMuZmlsdGVycywgaW5kaWNlczogdGhpcy5faW5kaWNlcyB9KS5cclxuICAgICAgICBzdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9kYXRhdGFibGUoZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfSwgKGU6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcihlLnN0YXR1cyA9PT0gNDAxID8gJ1VuYXV0aG9yaXplZCcgOiBudWxsKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIGVsc2UgdGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5jdWJlLCB0aGlzLl94QXhpcywgeyBzZXJpZXM6IHRoaXMuX3NlcmllcywgZmlsdGVyczogdGhpcy5maWx0ZXJzIH0pLlxyXG4gICAgICBzdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2RhdGFzZXJpZXMoZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sIChlOiBIdHRwUmVzcG9uc2U8YW55PikgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKGUuc3RhdHVzID09PSA0MDEgPyAnVW5hdXRob3JpemVkJyA6IG51bGwpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RhdGF0YWJsZShkYXRhOiB7IHZhbHVlOiBudW1iZXI7IH1bXSkge1xyXG4gICAgY29uc3QgY2VsbHMgPSBbXSwgc3R5bGUgPSB7IGZvbnRXZWlnaHQ6ICdib2xkJywgdGV4dEFsaWduOiAnY2VudGVyJyB9IGFzIENlbGxTdHlsZU1vZGVsO1xyXG4gICAgdGhpcy5fYXhlcy5mb3JFYWNoKGMgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgIHZhbHVlOiBjLnRpdGxlLCBzdHlsZVxyXG4gICAgfSBhcyBDZWxsTW9kZWwpKTtcclxuICAgIHRoaXMuX2luZGljZXMgJiYgdGhpcy5fY2luZGljZXMuZm9yRWFjaChpID0+IGNlbGxzLnB1c2goeyB2YWx1ZTogaS50aXRsZSwgc3R5bGUgfSBhcyBDZWxsTW9kZWwpKTtcclxuICAgIGNlbGxzLnB1c2goe1xyXG4gICAgICB2YWx1ZTogdGhpcy55QXhpcyA/IHRoaXMueUF4aXMudGl0bGUgOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdWYWx1ZScpLFxyXG4gICAgICBzdHlsZVxyXG4gICAgfSBhcyBDZWxsTW9kZWwpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0gW3tcclxuICAgICAgY2VsbHMsIGhlaWdodDogMjVcclxuICAgIH0gYXMgUm93TW9kZWxdO1xyXG4gICAgZGF0YS5mb3JFYWNoKGQgPT4ge1xyXG4gICAgICBjb25zdCBjZWxscyA9IFtdO1xyXG4gICAgICB0aGlzLl94QXhpcy5mb3JFYWNoKGMgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgICAgdmFsdWU6IGRbY10sXHJcbiAgICAgIH0gYXMgQ2VsbE1vZGVsKSk7XHJcbiAgICAgIHRoaXMuX2luZGljZXMgJiYgdGhpcy5faW5kaWNlcy5mb3JFYWNoKGkgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgICAgc3R5bGU6IHRoaXMubnVtYmVyU3R5bGUsXHJcbiAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgdmFsdWU6IChkW2ldIHx8IDApIGFzIGFueSxcclxuICAgICAgfSBhcyBDZWxsTW9kZWwpKTtcclxuICAgICAgY2VsbHMucHVzaCh7XHJcbiAgICAgICAgc3R5bGU6IHRoaXMubnVtYmVyU3R5bGUsXHJcbiAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgdmFsdWU6IChkLnZhbHVlIHx8IDApIGFzIGFueSxcclxuICAgICAgfSBhcyBDZWxsTW9kZWwpO1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UucHVzaCh7IGNlbGxzLCBzb3VyY2U6IGQsIGhlaWdodDogMjUgfSBhcyBSb3dNb2RlbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RhdGFzZXJpZXMoZDogU2VyaWVzW10pIHtcclxuICAgIGNvbnN0IHN0eWxlID0geyBmb250V2VpZ2h0OiAnYm9sZCcsIHRleHRBbGlnbjogJ2NlbnRlcicgfSBhcyBDZWxsU3R5bGVNb2RlbDtcclxuICAgIGNvbnN0IGNlbGxzID0gW3sgdmFsdWU6ICcnIH0gYXMgQ2VsbE1vZGVsXTtcclxuICAgIHRoaXMuX3hjb2x1bW5zLmZvckVhY2goYyA9PiBjZWxscy5wdXNoKHsgdmFsdWU6IGMudmFsdWUsIHN0eWxlIH0pKTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IFt7IGNlbGxzLCBoZWlnaHQ6IDI1IH1dO1xyXG5cclxuICAgIHRoaXMuX2luZGljZXMgJiYgdGhpcy5fY2luZGljZXMuXHJcbiAgICAgIGZvckVhY2goaSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2VsbHMgPSBbeyB2YWx1ZTogaS50aXRsZSwgc3R5bGUgfSBhcyBDZWxsTW9kZWxdLCBzZXJpZSA9IGQuZmluZChzID0+IHMuaW5kZXggPT09IGkubmFtZSksIG1hcCA9IHt9O1xyXG4gICAgICAgIGlmIChzZXJpZSkge1xyXG4gICAgICAgICAgc2VyaWUucG9pbnRzLmZvckVhY2gocCA9PiBtYXBbcC54XSA9IHAueSk7XHJcbiAgICAgICAgICB0aGlzLl94Y29sdW1ucy5mb3JFYWNoKGMgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICAgIHZhbHVlOiAobWFwW2Mua2V5XSB8fCAwKSBhcyBhbnksXHJcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgICAgICBzdHlsZTogdGhpcy5udW1iZXJTdHlsZVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UucHVzaCh7IGNlbGxzLCBoZWlnaHQ6IDI1IH0gYXMgUm93TW9kZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLl95cm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBjb25zdCBjZWxscyA9IFt7IHZhbHVlOiByLnZhbHVlLCBzdHlsZSB9IGFzIENlbGxNb2RlbF0sXHJcbiAgICAgICAgc2VyaWUgPSBkLmZpbmQocyA9PiBzLm5hbWUgPT09IHIua2V5KSwgbWFwID0ge307XHJcbiAgICAgIGlmIChzZXJpZSkge1xyXG4gICAgICAgIHNlcmllLnBvaW50cy5mb3JFYWNoKHAgPT4gbWFwW3AueF0gPSBwLnkpO1xyXG4gICAgICAgIHRoaXMuX3hjb2x1bW5zLmZvckVhY2goYyA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICAgIHZhbHVlOiAobWFwW2Mua2V5XSB8fCAwKSBhcyBhbnksXHJcbiAgICAgICAgICBmb3JtYXQ6IHRoaXMuX251bWJlckZvcm1hdCxcclxuICAgICAgICAgIHN0eWxlOiB0aGlzLm51bWJlclN0eWxlXHJcbiAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLl94Y29sdW1ucy5mb3JFYWNoKF8gPT4gY2VsbHMucHVzaCh7IHZhbHVlOiAwIGFzIGFueSB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wdXNoKHsgY2VsbHMsIGhlaWdodDogMjUgfSBhcyBSb3dNb2RlbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RyYXcoKSB7XHJcbiAgICB0aGlzLnNwcmVhZHNoZWV0ICYmIHRoaXMuc3ByZWFkc2hlZXQuZGVzdHJveSgpO1xyXG4gICAgdGhpcy5zcHJlYWRzaGVldCA9IG5ldyBTcHJlYWRzaGVldCh7XHJcbiAgICAgIGlzUHJvdGVjdGVkOiB0cnVlLFxyXG4gICAgICBhbGxvd0VkaXRpbmc6IGZhbHNlLFxyXG4gICAgICBhbGxvd0RlbGV0ZTogZmFsc2UsXHJcbiAgICAgIGFsbG93SW5zZXJ0OiBmYWxzZSxcclxuICAgICAgc2hvd1JpYmJvbjogZmFsc2UsXHJcbiAgICAgIGFsbG93QXV0b0ZpbGw6IGZhbHNlLFxyXG4gICAgICBhdXRvRmlsbFNldHRpbmdzOiB0aGlzLmF1dG9GaWxsU2V0dGluZ3MsXHJcbiAgICAgIGVuYWJsZUNsaXBib2FyZDogZmFsc2UsXHJcbiAgICAgIGVuYWJsZUNvbnRleHRNZW51OiBmYWxzZSxcclxuICAgICAgc2hvd0Zvcm11bGFCYXI6IGZhbHNlLFxyXG4gICAgICBzaG93U2hlZXRUYWJzOiBmYWxzZSxcclxuICAgICAgc2VsZWN0OiB0aGlzLnNlbGVjdC5iaW5kKHRoaXMpLFxyXG4gICAgICBzaGVldHM6IFt7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIC8vZnJvemVuQ29sdW1uczogdGhpcy5zZXJpZXMgIT09IHVuZGVmaW5lZCA/IDEgOiAwLFxyXG4gICAgICAgIC8vZnJvemVuUm93czogMSxcclxuICAgICAgICByb3dzOiB0aGlzLmRhdGFTb3VyY2UsXHJcbiAgICAgIH1dLFxyXG4gICAgICB3aWR0aDogdGhpcy53aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcclxuICAgIH0sIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG4gIHNlbGVjdChldnQ6IFNlbGVjdEV2ZW50QXJncykge1xyXG4gICAgY29uc3QgYWRkcmVzcyA9IHRoaXMuc3ByZWFkc2hlZXQuZ2V0QWRkcmVzc0luZm8oZXZ0LnJhbmdlKTtcclxuICAgIGxldCBbeSwgeCwgeTEsIHgxXSA9IGFkZHJlc3MuaW5kaWNlcztcclxuICAgIGlmICh5MSA8IHkpIHtcclxuICAgICAgY29uc3QgcmFuZ2UgPSB5O1xyXG4gICAgICB5ID0geTEsIHkxID0gcmFuZ2U7XHJcbiAgICB9XHJcbiAgICBpZiAoeDEgPCB4KSB7XHJcbiAgICAgIGNvbnN0IHJhbmdlID0geDtcclxuICAgICAgeCA9IHgxLCB4MSA9IHJhbmdlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXhlczoge30gPSB7fTtcclxuICAgIGlmICghdGhpcy5fc2VyaWVzKSB7XHJcbiAgICAgIGlmICh5ID09PSAwKSByZXR1cm47XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5faW5kaWNlcyAmJiB5IDwgdGhpcy5faW5kaWNlcy5sZW5ndGggPyB0aGlzLl9jaW5kaWNlc1t5XS5uYW1lIDogbnVsbDtcclxuICAgICAgbGV0IGkgPSB5O1xyXG4gICAgICBkbyB7XHJcbiAgICAgICAgdGhpcy5fYXhlcy5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgICAgY29uc3Qga2V5ID0gKHRoaXMuZGF0YVNvdXJjZVtpXSBhcyBhbnkpLnNvdXJjZVsnXycgKyBhLm5hbWVdO1xyXG4gICAgICAgICAgaWYgKCFheGVzW2EubmFtZV0pXHJcbiAgICAgICAgICAgIGF4ZXNbYS5uYW1lXSA9IGtleTtcclxuICAgICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKGF4ZXNbYS5uYW1lXSkpIHtcclxuICAgICAgICAgICAgaWYgKGF4ZXNbYS5uYW1lXSAhPT0ga2V5KSBheGVzW2EubmFtZV0gPSBbYXhlc1thLm5hbWVdLCBrZXldO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoKGF4ZXNbYS5uYW1lXSBhcyBzdHJpbmdbXSkuaW5kZXhPZihrZXkpIDwgMCkgKGF4ZXNbYS5uYW1lXSBhcyBzdHJpbmdbXSkucHVzaChrZXkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGkrKztcclxuICAgICAgfVxyXG4gICAgICB3aGlsZSAoaSA8PSB5MSk7XHJcbiAgICAgIHRoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcywgaW5kZXggfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHkgPT09IDApIHtcclxuICAgICAgICBpZiAoeSA8IHkxKVxyXG4gICAgICAgICAgdGhpcy5fZmlsbHgoeCwgeDEsIGF4ZXMpO1xyXG4gICAgICAgIGVsc2UgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHggPT09IDApIHtcclxuICAgICAgICBpZiAoeCA8IHgxKVxyXG4gICAgICAgICAgdGhpcy5fZmlsbHkoeSwgeTEsIGF4ZXMpO1xyXG4gICAgICAgIGVsc2UgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHkgPT09IHkxICYmIHggPT09IHgxICYmIHRoaXMuZGF0YVNvdXJjZVt5XS5jZWxsc1t4XS52YWx1ZSA9PT0gJzAnKSByZXR1cm47XHJcbiAgICAgIGVsc2UgaWYgKHkgPiB0aGlzLmRhdGFTb3VyY2UubGVuZ3RoIC0gMSB8fCB4ID4gdGhpcy5kYXRhU291cmNlW3ldLmNlbGxzLmxlbmd0aCAtIDEpIHJldHVybjtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fZmlsbHgoeCwgeDEsIGF4ZXMpO1xyXG4gICAgICAgIHRoaXMuX2ZpbGx5KHksIHkxLCBheGVzKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV4cGxvcmUuZW1pdCh7IGF4ZXMgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX2ZpbGx5KHk6IG51bWJlciwgeTE6IG51bWJlciwgYXhlczoge30pIHtcclxuICAgIGNvbnN0IHlOYW1lID0gdGhpcy5fc2VyaWVzWzBdO1xyXG4gICAgbGV0IGkgPSB5IC0gMTtcclxuICAgIHdoaWxlIChpIDwgeTEpIHtcclxuICAgICAgbGV0IHsga2V5IH0gPSB0aGlzLl95cm93c1tpXTtcclxuICAgICAgaWYgKCFheGVzW3lOYW1lXSlcclxuICAgICAgICBheGVzW3lOYW1lXSA9IGtleTtcclxuICAgICAgZWxzZSBpZiAoaXNTdHJpbmcoYXhlc1t5TmFtZV0pKVxyXG4gICAgICAgIGF4ZXNbeU5hbWVdID0gW2F4ZXNbeU5hbWVdLCBrZXldO1xyXG4gICAgICBlbHNlIGlmICgoYXhlc1t5TmFtZV0gYXMgc3RyaW5nW10pLmluZGV4T2Yoa2V5KSA8IDApXHJcbiAgICAgICAgKGF4ZXNbeU5hbWVdIGFzIHN0cmluZ1tdKS5wdXNoKGtleSk7XHJcbiAgICAgIGkrKztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpbGx4KHg6IG51bWJlciwgeDE6IG51bWJlciwgYXhlczoge30pIHtcclxuICAgIGNvbnN0IHhOYW1lID0gdGhpcy5feEF4aXNbMF07XHJcbiAgICBsZXQgaSA9IHggLSAxO1xyXG4gICAgd2hpbGUgKGkgPCB4MSkge1xyXG4gICAgICBsZXQgeyBrZXkgfSA9IHRoaXMuX3hjb2x1bW5zW2ldO1xyXG4gICAgICBpZiAoIWF4ZXNbeE5hbWVdKVxyXG4gICAgICAgIGF4ZXNbeE5hbWVdID0ga2V5O1xyXG4gICAgICBlbHNlIGlmIChpc1N0cmluZyhheGVzW3hOYW1lXSkpXHJcbiAgICAgICAgYXhlc1t4TmFtZV0gPSBbYXhlc1t4TmFtZV0sIGtleV07XHJcbiAgICAgIGVsc2UgaWYgKChheGVzW3hOYW1lXSBhcyBzdHJpbmdbXSkuaW5kZXhPZihrZXkpIDwgMClcclxuICAgICAgICAoYXhlc1t4TmFtZV0gYXMgc3RyaW5nW10pLnB1c2goa2V5KTtcclxuICAgICAgaSsrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0VG9FeGNlbCh0aXRsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB7IHJvd3MgfSA9IHRoaXMuc3ByZWFkc2hlZXQuc2hlZXRzWzBdLFxyXG4gICAgICBudW1iZXJGb3JtYXQgPSB0aGlzLl9zZXJ2aWNlLm51bWJlckZvcm1hdCxcclxuICAgICAgYm9vayA9IG5ldyBXb3JrYm9vayhcclxuICAgICAgICB7XHJcbiAgICAgICAgICB3b3Jrc2hlZXRzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBlbmFibGVSdGw6IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSxcclxuICAgICAgICAgICAgICBuYW1lOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdTaGVldE4nLCAxKSxcclxuICAgICAgICAgICAgICBjb2x1bW5zOiByb3dzWzBdLmNlbGxzLm1hcCgoXywgaSkgPT4gKHsgaW5kZXg6IGkgKyAxLCB3aWR0aDogMTUwIH0gYXMgQ29sdW1uKSksXHJcbiAgICAgICAgICAgICAgcm93czogcm93cy5tYXAoKHIsIGkpID0+IChcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgaW5kZXg6IGkgKyAxLFxyXG4gICAgICAgICAgICAgICAgICBjZWxsczogci5jZWxscy5tYXAoKGMsIGopID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXIgPSBpID09PSAwIHx8ICh0aGlzLnNlcmllcyAmJiBqID09PSAwKSxcclxuICAgICAgICAgICAgICAgICAgICAgIGlzbnVtYmVyID0gdGhpcy5zZXJpZXMgPyAhaGVhZGVyIDogaXNOdW1iZXIoYy52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGlzbnVtYmVyID8gJ251bWJlcicgOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaiArIDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYy52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckZvcm1hdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaEFsaWduOiBpc251bWJlciA/ICdyaWdodCcgOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9sZDogaGVhZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBDZWxsO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIH0gYXMgUm93KSksXHJcbiAgICAgICAgICAgIH0gYXMgV29ya3NoZWV0LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICAgICd4bHN4J1xyXG4gICAgICApO1xyXG4gICAgYm9vay5zYXZlKGAke3RpdGxlfS54bHN4YCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zcHJlYWRzaGVldCAmJiB0aGlzLnNwcmVhZHNoZWV0LmRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuaW50ZXJmYWNlIENlbGwgeyB9XHJcbiJdfQ==
@@ -1,6 +1,5 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { CubeMatrixBase } from './matrix.base';
3
- import { OpenPolicy } from '../../core/configuration';
4
3
  import * as i0 from "@angular/core";
5
4
  import * as i1 from "../../core/slots/pane-ref";
6
5
  import * as i2 from "../../core/slots/router.service";
@@ -50,8 +49,7 @@ export class CubeMatrixPaneComponent extends CubeMatrixBase {
50
49
  }
51
50
  onFilter(queryParams) {
52
51
  this._router.navigate([], {
53
- queryParams, policy: this._pane.mode ?
54
- OpenPolicy.Tab : OpenPolicy.Replace
52
+ queryParams
55
53
  });
56
54
  }
57
55
  explore(queryParams) {
@@ -61,11 +59,11 @@ export class CubeMatrixPaneComponent extends CubeMatrixBase {
61
59
  }
62
60
  }
63
61
  CubeMatrixPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CubeMatrixPaneComponent, deps: [{ token: i1.PaneRef }, { token: i2.PanesRouter }, { token: i3.TranslateService }, { token: i4.CubeService }, { token: i5.DatasourceService }, { token: i6.SessionService }], target: i0.ɵɵFactoryTarget.Component });
64
- CubeMatrixPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: CubeMatrixPaneComponent, selector: "ng-component", host: { classAttribute: "pane" }, usesInheritance: true, ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"table.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"patterns && patterns.length\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #options xPosition=\"before\">\r\n <!-- patterns -->\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"aggregate(p)\">{{p.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"reset()\" [disabled]=\"!pattern\" [bizdocTooltip]=\"'Clear' | translate\">\r\n <mat-icon>clear_all</mat-icon>\r\n </button>\r\n <!-- filters -->\r\n <ng-container *ngFor=\"let f of filters\">\r\n <button mat-button [matMenuTriggerFor]=\"fmenu\">{{values[f.name]| typeValue : f.dataType | async}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #fmenu xPosition=\"before\">\r\n <button mat-menu-item *ngFor=\"let kv of sources[f.name] | async\"\r\n (click)=\"filter(f.name, kv.key, kv.value)\">\r\n {{kv.value}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n</mat-toolbar>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<bizdoc-cube-matrix [cube]=\"cube\" [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\" [sum]=sum\r\n [filters]=\"axes\"\r\n [xAxisTotalLabel]=\"xAxisTotalLabel\"\r\n [seriesTotalLabel]=\"seriesTotalLabel\"\r\n (loadingChange)=\"loading = $event\" (explore)='explore($event)'></bizdoc-cube-matrix>\r\n", styles: [":host{min-width:450px}:host ::ng-deep .cube-table thead{position:sticky;top:0}\n"], components: [{ type: i7.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i12.CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: ["seriesTotalLabel", "xAxisTotalLabel", "cube", "xAxis", "series", "indices", "scope", "sum", "filters", "loading", "interactive"], outputs: ["explore", "loadingChange"] }], directives: [{ type: i13.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i14.MatIconAnimate, selector: "[matAnimate]" }, { type: i15.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i15.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i16.TranslatePipe, "async": i15.AsyncPipe, "typeValue": i17.TypeValuePipe } });
62
+ CubeMatrixPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: CubeMatrixPaneComponent, selector: "ng-component", host: { classAttribute: "pane" }, usesInheritance: true, ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"table.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\"\r\n data-help=\"download\" (click)=\"matrix.export()\">\r\n <mat-icon>save_alt</mat-icon>\r\n </button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"patterns && patterns.length\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #options xPosition=\"before\">\r\n <!-- patterns -->\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"aggregate(p)\">{{p.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"reset()\" [disabled]=\"!pattern\" [bizdocTooltip]=\"'Clear' | translate\">\r\n <mat-icon>clear_all</mat-icon>\r\n </button>\r\n <!-- filters -->\r\n <ng-container *ngFor=\"let f of filters\">\r\n <button mat-button [matMenuTriggerFor]=\"fmenu\">{{values[f.name]| typeValue : f.dataType | async}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #fmenu xPosition=\"before\">\r\n <button mat-menu-item *ngFor=\"let kv of sources[f.name] | async\"\r\n (click)=\"filter(f.name, kv.key, kv.value)\">\r\n {{kv.value}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n</mat-toolbar>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<bizdoc-cube-matrix [cube]=\"cube\" [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\" [sum]=sum\r\n [filters]=\"axes\" #matrix\r\n [xAxisTotalLabel]=\"xAxisTotalLabel\"\r\n [seriesTotalLabel]=\"seriesTotalLabel\"\r\n (loadingChange)=\"loading = $event\" (explore)='explore($event)'></bizdoc-cube-matrix>\r\n", styles: [":host{min-width:450px}:host ::ng-deep .cube-table thead{position:sticky;top:0}\n"], components: [{ type: i7.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i12.CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: ["seriesTotalLabel", "xAxisTotalLabel", "cube", "xAxis", "series", "indices", "scope", "sum", "filters", "loading", "interactive"], outputs: ["explore", "loadingChange"] }], directives: [{ type: i13.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i14.MatIconAnimate, selector: "[matAnimate]" }, { type: i15.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i15.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i16.TranslatePipe, "async": i15.AsyncPipe, "typeValue": i17.TypeValuePipe } });
65
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: CubeMatrixPaneComponent, decorators: [{
66
64
  type: Component,
67
65
  args: [{ host: {
68
66
  class: 'pane'
69
- }, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"table.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"patterns && patterns.length\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #options xPosition=\"before\">\r\n <!-- patterns -->\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"aggregate(p)\">{{p.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"reset()\" [disabled]=\"!pattern\" [bizdocTooltip]=\"'Clear' | translate\">\r\n <mat-icon>clear_all</mat-icon>\r\n </button>\r\n <!-- filters -->\r\n <ng-container *ngFor=\"let f of filters\">\r\n <button mat-button [matMenuTriggerFor]=\"fmenu\">{{values[f.name]| typeValue : f.dataType | async}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #fmenu xPosition=\"before\">\r\n <button mat-menu-item *ngFor=\"let kv of sources[f.name] | async\"\r\n (click)=\"filter(f.name, kv.key, kv.value)\">\r\n {{kv.value}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n</mat-toolbar>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<bizdoc-cube-matrix [cube]=\"cube\" [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\" [sum]=sum\r\n [filters]=\"axes\"\r\n [xAxisTotalLabel]=\"xAxisTotalLabel\"\r\n [seriesTotalLabel]=\"seriesTotalLabel\"\r\n (loadingChange)=\"loading = $event\" (explore)='explore($event)'></bizdoc-cube-matrix>\r\n", styles: [":host{min-width:450px}:host ::ng-deep .cube-table thead{position:sticky;top:0}\n"] }]
67
+ }, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"table.refresh()\" [bizdocTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\"\r\n data-help=\"download\" (click)=\"matrix.export()\">\r\n <mat-icon>save_alt</mat-icon>\r\n </button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"patterns && patterns.length\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #options xPosition=\"before\">\r\n <!-- patterns -->\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"aggregate(p)\">{{p.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"reset()\" [disabled]=\"!pattern\" [bizdocTooltip]=\"'Clear' | translate\">\r\n <mat-icon>clear_all</mat-icon>\r\n </button>\r\n <!-- filters -->\r\n <ng-container *ngFor=\"let f of filters\">\r\n <button mat-button [matMenuTriggerFor]=\"fmenu\">{{values[f.name]| typeValue : f.dataType | async}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #fmenu xPosition=\"before\">\r\n <button mat-menu-item *ngFor=\"let kv of sources[f.name] | async\"\r\n (click)=\"filter(f.name, kv.key, kv.value)\">\r\n {{kv.value}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n</mat-toolbar>\r\n<mat-progress-bar mode=\"query\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<bizdoc-cube-matrix [cube]=\"cube\" [xAxis]=\"xAxis\" [series]=\"series\" [indices]=\"indices\" [sum]=sum\r\n [filters]=\"axes\" #matrix\r\n [xAxisTotalLabel]=\"xAxisTotalLabel\"\r\n [seriesTotalLabel]=\"seriesTotalLabel\"\r\n (loadingChange)=\"loading = $event\" (explore)='explore($event)'></bizdoc-cube-matrix>\r\n", styles: [":host{min-width:450px}:host ::ng-deep .cube-table thead{position:sticky;top:0}\n"] }]
70
68
  }], ctorParameters: function () { return [{ type: i1.PaneRef }, { type: i2.PanesRouter }, { type: i3.TranslateService }, { type: i4.CubeService }, { type: i5.DatasourceService }, { type: i6.SessionService }]; } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LnBhbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC9tYXRyaXgucGFuZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L21hdHJpeC5wYW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFPbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVdEQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGNBQWM7SUFDekQscUJBQXFCO0lBQ3JCLFlBQ1UsS0FBdUMsRUFDdkMsT0FBb0IsRUFDcEIsVUFBNEIsRUFDcEMsT0FBb0IsRUFDcEIsRUFBcUIsRUFDckIsT0FBdUI7UUFDdkIsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFOcEIsVUFBSyxHQUFMLEtBQUssQ0FBa0M7UUFDdkMsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtJQUt0QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUM1QyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSTtnQkFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUIsTUFBTTtZQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFDRCxRQUFRLENBQUMsV0FBb0I7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ3hCLFdBQVcsRUFBRSxNQUFNLEVBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2YsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU87U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sQ0FBQyxXQUFvQjtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQ3BELFdBQVc7U0FDWixDQUFDLENBQUM7SUFFTCxDQUFDOztvSEEvQ1UsdUJBQXVCO3dHQUF2Qix1QkFBdUIsNkdDbEJwQywrdURBNEJBOzJGRFZhLHVCQUF1QjtrQkFQbkMsU0FBUzsyQkFHRjt3QkFDSixLQUFLLEVBQUUsTUFBTTtxQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhc291cmNlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZGF0YXNvdXJjZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3ViZVNlcnZpY2UgfSBmcm9tICcuLi9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYW5lc1JvdXRlciB9IGZyb20gJy4uLy4uL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYW5lUmVmIH0gZnJvbSAnLi4vLi4vY29yZS9zbG90cy9wYW5lLXJlZic7XHJcbmltcG9ydCB7IEF4ZXNNYXAgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IEN1YmVNYXRyaXhCYXNlIH0gZnJvbSAnLi9tYXRyaXguYmFzZSc7XHJcbmltcG9ydCB7IE9wZW5Qb2xpY3kgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vbWF0cml4LnBhbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21hdHJpeC5wYW5lLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdwYW5lJ1xyXG4gIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1YmVNYXRyaXhQYW5lQ29tcG9uZW50IGV4dGVuZHMgQ3ViZU1hdHJpeEJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8qKiBjdWJlLWluZm8gY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfcGFuZTogUGFuZVJlZjxDdWJlTWF0cml4UGFuZUNvbXBvbmVudD4sXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFBhbmVzUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgc2VydmljZTogQ3ViZVNlcnZpY2UsXHJcbiAgICBkczogRGF0YXNvdXJjZVNlcnZpY2UsXHJcbiAgICBzZXNzaW9uOiBTZXNzaW9uU2VydmljZSkge1xyXG4gICAgc3VwZXIoc2VydmljZSwgZHMsIHNlc3Npb24pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wYW5lLnBhcmFtc0NoYW5nZS5zdWJzY3JpYmUocCA9PiB7XHJcbiAgICAgIHRoaXMuY3ViZSA9IHBbJ2N1YmUnXTtcclxuICAgICAgdGhpcy5fcGFuZS50aXRsZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ01hdHJpeCcpO1xyXG4gICAgICB0aGlzLl9wYW5lLmdyb3VwID0gdGhpcy5jb25maWd1cmF0aW9uLnRpdGxlO1xyXG4gICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmljb24pXHJcbiAgICAgICAgdGhpcy5fcGFuZS5pY29uID0gdGhpcy5jb25maWd1cmF0aW9uLmljb247XHJcbiAgICAgIHRoaXMueEF4aXMgPSBwWyd4QXhpcyddO1xyXG4gICAgICB0aGlzLnNlcmllcyA9IHBbJ3NlcmllcyddO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9wYW5lLmRhdGFDaGFuZ2Uuc3Vic2NyaWJlKGQgPT4ge1xyXG4gICAgICB0aGlzLmluZGljZXMgPSBkWydpbmRpY2VzJ107XHJcbiAgICAgIC8qKiAqL1xyXG4gICAgICB0aGlzLmFnZ3JlZ2F0aW9uID0gZFsnYWdncmVnYXRlJ107XHJcbiAgICAgIHRoaXMuc3VtID0gZFsnc3VtJ107XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uID0gZFsnZmlsdGVycyddO1xyXG4gICAgICB0aGlzLnhBeGlzVG90YWxMYWJlbCA9IGRbJ3hBeGlzVG90YWxMYWJlbCddO1xyXG4gICAgICB0aGlzLnNlcmllc1RvdGFsTGFiZWwgPSBkWydzZXJpZXNUb3RhbExhYmVsJ107XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3BhbmUucXVlcnlQYXJhbXNDaGFuZ2Uuc3Vic2NyaWJlKHAgPT5cclxuICAgICAgdGhpcy5vcmlnaW5hbEF4ZXMgPSB0aGlzLmF4ZXMgPSBwXHJcbiAgICApO1xyXG4gIH1cclxuICBvbkZpbHRlcihxdWVyeVBhcmFtczogQXhlc01hcCkge1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zLCBwb2xpY3k6XHJcbiAgICAgICAgdGhpcy5fcGFuZS5tb2RlID9cclxuICAgICAgICAgIE9wZW5Qb2xpY3kuVGFiIDogT3BlblBvbGljeS5SZXBsYWNlXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZXhwbG9yZShxdWVyeVBhcmFtczogQXhlc01hcCkge1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnY3ViZScsIHRoaXMuY3ViZSwgJ2V4cGxvcmUnXSwge1xyXG4gICAgICBxdWVyeVBhcmFtc1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxufVxyXG4iLCI8bWF0LXRvb2xiYXIgY2xhc3M9XCJuYXYtdG9vbGJhclwiPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ0YWJsZS5yZWZyZXNoKClcIiBbYml6ZG9jVG9vbHRpcF09XCInUmVmcmVzaCcgfCB0cmFuc2xhdGVcIj48bWF0LWljb24gbWF0QW5pbWF0ZT1cInJvdGF0ZVwiPmF1dG9yZW5ldzwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJvcHRpb25zXCIgKm5nSWY9XCJwYXR0ZXJucyAmJiBwYXR0ZXJucy5sZW5ndGhcIj48bWF0LWljb24gW2NsYXNzLmZpbGxlZF09XCJwYXR0ZXJuXCI+ZmlsdGVyX2FsdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPG1hdC1tZW51ICNvcHRpb25zIHhQb3NpdGlvbj1cImJlZm9yZVwiPlxyXG4gICAgPCEtLSBwYXR0ZXJucyAtLT5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgcCBvZiBwYXR0ZXJuc1wiIChjbGljayk9XCJhZ2dyZWdhdGUocClcIj57e3AudGl0bGV9fTwvYnV0dG9uPlxyXG4gIDwvbWF0LW1lbnU+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlc2V0KClcIiBbZGlzYWJsZWRdPVwiIXBhdHRlcm5cIiBbYml6ZG9jVG9vbHRpcF09XCInQ2xlYXInIHwgdHJhbnNsYXRlXCI+XHJcbiAgICA8bWF0LWljb24+Y2xlYXJfYWxsPC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuICA8IS0tIGZpbHRlcnMgLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZiBvZiBmaWx0ZXJzXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImZtZW51XCI+e3t2YWx1ZXNbZi5uYW1lXXwgdHlwZVZhbHVlIDogZi5kYXRhVHlwZSB8IGFzeW5jfX0gPG1hdC1pY29uPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8bWF0LW1lbnUgI2ZtZW51IHhQb3NpdGlvbj1cImJlZm9yZVwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGt2IG9mIHNvdXJjZXNbZi5uYW1lXSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsdGVyKGYubmFtZSwga3Yua2V5LCBrdi52YWx1ZSlcIj5cclxuICAgICAgICB7e2t2LnZhbHVlfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L21hdC1tZW51PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L21hdC10b29sYmFyPlxyXG48bWF0LXByb2dyZXNzLWJhciBtb2RlPVwicXVlcnlcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJsb2FkaW5nID8gJ3Zpc2libGUnOidoaWRkZW4nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG48Yml6ZG9jLWN1YmUtbWF0cml4IFtjdWJlXT1cImN1YmVcIiBbeEF4aXNdPVwieEF4aXNcIiBbc2VyaWVzXT1cInNlcmllc1wiIFtpbmRpY2VzXT1cImluZGljZXNcIiBbc3VtXT1zdW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcnNdPVwiYXhlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3hBeGlzVG90YWxMYWJlbF09XCJ4QXhpc1RvdGFsTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzZXJpZXNUb3RhbExhYmVsXT1cInNlcmllc1RvdGFsTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobG9hZGluZ0NoYW5nZSk9XCJsb2FkaW5nID0gJGV2ZW50XCIgKGV4cGxvcmUpPSdleHBsb3JlKCRldmVudCknPjwvYml6ZG9jLWN1YmUtbWF0cml4PlxyXG4iXX0=
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LnBhbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC9tYXRyaXgucGFuZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L21hdHJpeC5wYW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFPbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVcvQyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsY0FBYztJQUN6RCxxQkFBcUI7SUFDckIsWUFDVSxLQUF1QyxFQUN2QyxPQUFvQixFQUNwQixVQUE0QixFQUNwQyxPQUFvQixFQUNwQixFQUFxQixFQUNyQixPQUF1QjtRQUN2QixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQU5wQixVQUFLLEdBQUwsS0FBSyxDQUFrQztRQUN2QyxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ3BCLGVBQVUsR0FBVixVQUFVLENBQWtCO0lBS3RDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQzVDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJO2dCQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1QixNQUFNO1lBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUNELFFBQVEsQ0FBQyxXQUFvQjtRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDeEIsV0FBVztTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLENBQUMsV0FBb0I7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsRUFBRTtZQUNwRCxXQUFXO1NBQ1osQ0FBQyxDQUFDO0lBRUwsQ0FBQzs7b0hBN0NVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDZHQ2xCcEMsbzdEQWdDQTsyRkRkYSx1QkFBdUI7a0JBUG5DLFNBQVM7MkJBR0Y7d0JBQ0osS0FBSyxFQUFFLE1BQU07cUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlIH0gZnJvbSAnLi4vY3ViZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3JvdXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFuZVJlZiB9IGZyb20gJy4uLy4uL2NvcmUvc2xvdHMvcGFuZS1yZWYnO1xyXG5pbXBvcnQgeyBBeGVzTWFwIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDdWJlTWF0cml4QmFzZSB9IGZyb20gJy4vbWF0cml4LmJhc2UnO1xyXG5pbXBvcnQgeyBPcGVuUG9saWN5IH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hdHJpeC5wYW5lLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tYXRyaXgucGFuZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAncGFuZSdcclxuICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWJlTWF0cml4UGFuZUNvbXBvbmVudCBleHRlbmRzIEN1YmVNYXRyaXhCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvKiogY3ViZS1pbmZvIGN0b3IgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3BhbmU6IFBhbmVSZWY8Q3ViZU1hdHJpeFBhbmVDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBQYW5lc1JvdXRlcixcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHNlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgZHM6IERhdGFzb3VyY2VTZXJ2aWNlLFxyXG4gICAgc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UpIHtcclxuICAgIHN1cGVyKHNlcnZpY2UsIGRzLCBzZXNzaW9uKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGFuZS5wYXJhbXNDaGFuZ2Uuc3Vic2NyaWJlKHAgPT4ge1xyXG4gICAgICB0aGlzLmN1YmUgPSBwWydjdWJlJ107XHJcbiAgICAgIHRoaXMuX3BhbmUudGl0bGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdNYXRyaXgnKTtcclxuICAgICAgdGhpcy5fcGFuZS5ncm91cCA9IHRoaXMuY29uZmlndXJhdGlvbi50aXRsZTtcclxuICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5pY29uKVxyXG4gICAgICAgIHRoaXMuX3BhbmUuaWNvbiA9IHRoaXMuY29uZmlndXJhdGlvbi5pY29uO1xyXG4gICAgICB0aGlzLnhBeGlzID0gcFsneEF4aXMnXTtcclxuICAgICAgdGhpcy5zZXJpZXMgPSBwWydzZXJpZXMnXTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fcGFuZS5kYXRhQ2hhbmdlLnN1YnNjcmliZShkID0+IHtcclxuICAgICAgdGhpcy5pbmRpY2VzID0gZFsnaW5kaWNlcyddO1xyXG4gICAgICAvKiogKi9cclxuICAgICAgdGhpcy5hZ2dyZWdhdGlvbiA9IGRbJ2FnZ3JlZ2F0ZSddO1xyXG4gICAgICB0aGlzLnN1bSA9IGRbJ3N1bSddO1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbiA9IGRbJ2ZpbHRlcnMnXTtcclxuICAgICAgdGhpcy54QXhpc1RvdGFsTGFiZWwgPSBkWyd4QXhpc1RvdGFsTGFiZWwnXTtcclxuICAgICAgdGhpcy5zZXJpZXNUb3RhbExhYmVsID0gZFsnc2VyaWVzVG90YWxMYWJlbCddO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9wYW5lLnF1ZXJ5UGFyYW1zQ2hhbmdlLnN1YnNjcmliZShwID0+XHJcbiAgICAgIHRoaXMub3JpZ2luYWxBeGVzID0gdGhpcy5heGVzID0gcFxyXG4gICAgKTtcclxuICB9XHJcbiAgb25GaWx0ZXIocXVlcnlQYXJhbXM6IEF4ZXNNYXApIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSwge1xyXG4gICAgICBxdWVyeVBhcmFtc1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGV4cGxvcmUocXVlcnlQYXJhbXM6IEF4ZXNNYXApIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ2N1YmUnLCB0aGlzLmN1YmUsICdleHBsb3JlJ10sIHtcclxuICAgICAgcXVlcnlQYXJhbXNcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbn1cclxuIiwiPG1hdC10b29sYmFyIGNsYXNzPVwibmF2LXRvb2xiYXJcIj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidGFibGUucmVmcmVzaCgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1JlZnJlc2gnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uIG1hdEFuaW1hdGU9XCJyb3RhdGVcIj5hdXRvcmVuZXc8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFtiaXpkb2NUb29sdGlwXT1cIidEb3dubG9hZCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgZGF0YS1oZWxwPVwiZG93bmxvYWRcIiAoY2xpY2spPVwibWF0cml4LmV4cG9ydCgpXCI+XHJcbiAgICA8bWF0LWljb24+c2F2ZV9hbHQ8L21hdC1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwib3B0aW9uc1wiICpuZ0lmPVwicGF0dGVybnMgJiYgcGF0dGVybnMubGVuZ3RoXCI+PG1hdC1pY29uIFtjbGFzcy5maWxsZWRdPVwicGF0dGVyblwiPmZpbHRlcl9hbHQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxtYXQtbWVudSAjb3B0aW9ucyB4UG9zaXRpb249XCJiZWZvcmVcIj5cclxuICAgIDwhLS0gcGF0dGVybnMgLS0+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHAgb2YgcGF0dGVybnNcIiAoY2xpY2spPVwiYWdncmVnYXRlKHApXCI+e3twLnRpdGxlfX08L2J1dHRvbj5cclxuICA8L21hdC1tZW51PlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZXNldCgpXCIgW2Rpc2FibGVkXT1cIiFwYXR0ZXJuXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NsZWFyJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgPG1hdC1pY29uPmNsZWFyX2FsbDwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbiAgPCEtLSBmaWx0ZXJzIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGYgb2YgZmlsdGVyc1wiPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJmbWVudVwiPnt7dmFsdWVzW2YubmFtZV18IHR5cGVWYWx1ZSA6IGYuZGF0YVR5cGUgfCBhc3luY319IDxtYXQtaWNvbj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPG1hdC1tZW51ICNmbWVudSB4UG9zaXRpb249XCJiZWZvcmVcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBrdiBvZiBzb3VyY2VzW2YubmFtZV0gfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbHRlcihmLm5hbWUsIGt2LmtleSwga3YudmFsdWUpXCI+XHJcbiAgICAgICAge3trdi52YWx1ZX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtbWVudT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cInF1ZXJ5XCIgW3N0eWxlLnZpc2liaWxpdHldPVwibG9hZGluZyA/ICd2aXNpYmxlJzonaGlkZGVuJ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuPGJpemRvYy1jdWJlLW1hdHJpeCBbY3ViZV09XCJjdWJlXCIgW3hBeGlzXT1cInhBeGlzXCIgW3Nlcmllc109XCJzZXJpZXNcIiBbaW5kaWNlc109XCJpbmRpY2VzXCIgW3N1bV09c3VtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJzXT1cImF4ZXNcIiAjbWF0cml4XHJcbiAgICAgICAgICAgICAgICAgICAgW3hBeGlzVG90YWxMYWJlbF09XCJ4QXhpc1RvdGFsTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzZXJpZXNUb3RhbExhYmVsXT1cInNlcmllc1RvdGFsTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobG9hZGluZ0NoYW5nZSk9XCJsb2FkaW5nID0gJGV2ZW50XCIgKGV4cGxvcmUpPSdleHBsb3JlKCRldmVudCknPjwvYml6ZG9jLWN1YmUtbWF0cml4PlxyXG4iXX0=