@sd-angular/core 1.3.99 → 1.3.101

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.
@@ -94,7 +94,7 @@ export class SdGridMaterial {
94
94
  });
95
95
  _filterExportInfo.set(this, (pageNumber, pageSize) => {
96
96
  var _a, _b;
97
- const { columnFilter, externalFilter, filterDef } = this.filterRegister.get();
97
+ const { columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();
98
98
  return {
99
99
  rawColumnFilter: columnFilter || {},
100
100
  rawExternalFilter: externalFilter || {},
@@ -120,18 +120,23 @@ export class SdGridMaterial {
120
120
  _loadFilterRegister.set(this, () => {
121
121
  var _a, _b, _c, _d, _e;
122
122
  // Init filter
123
- this.filterRegister = this.gridFilterService.register((_b = (_a = this.gridOption) === null || _a === void 0 ? void 0 : _a.filter) === null || _b === void 0 ? void 0 : _b.key, {
124
- columns: (_c = this.gridOption) === null || _c === void 0 ? void 0 : _c.columns,
125
- externalFilters: (_e = (_d = this.gridOption) === null || _d === void 0 ? void 0 : _d.filter) === null || _e === void 0 ? void 0 : _e.externalFilters,
126
- filterDefs: this.filterDefs
127
- });
128
- __classPrivateFieldGet(this, _subscription).add(this.filterRegister.observer.pipe(debounceTime(500), map((configuration) => {
129
- this.columnFilter = configuration.columnFilter;
130
- __classPrivateFieldGet(this, _paginator).pageIndex = 0;
131
- __classPrivateFieldGet(this, _reload).next({
132
- force: false,
123
+ if (this.gridOption) {
124
+ const hasRegister = !!this.filterRegister;
125
+ this.filterRegister = this.gridFilterService.register((_b = (_a = this.gridOption) === null || _a === void 0 ? void 0 : _a.filter) === null || _b === void 0 ? void 0 : _b.key, {
126
+ columns: (_c = this.gridOption) === null || _c === void 0 ? void 0 : _c.columns,
127
+ externalFilters: (_e = (_d = this.gridOption) === null || _d === void 0 ? void 0 : _d.filter) === null || _e === void 0 ? void 0 : _e.externalFilters,
128
+ filterDefs: this.filterDefs
133
129
  });
134
- })).subscribe());
130
+ if (!hasRegister) {
131
+ __classPrivateFieldGet(this, _subscription).add(this.filterRegister.value.observer.pipe(debounceTime(500), map((filterValue) => {
132
+ this.columnFilter = filterValue.columnFilter;
133
+ __classPrivateFieldGet(this, _paginator).pageIndex = 0;
134
+ __classPrivateFieldGet(this, _reload).next({
135
+ force: false,
136
+ });
137
+ })).subscribe());
138
+ }
139
+ }
135
140
  });
136
141
  _filterLocal.set(this, (localItems, filterInfo) => {
137
142
  const { columns } = this.gridOption;
@@ -251,7 +256,7 @@ export class SdGridMaterial {
251
256
  });
252
257
  _getFilter.set(this, () => {
253
258
  var _a, _b, _c, _d, _e, _f;
254
- const { columnFilter, externalFilter, filterDef } = this.filterRegister.get();
259
+ const { columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();
255
260
  return {
256
261
  rawColumnFilter: columnFilter || {},
257
262
  rawExternalFilter: externalFilter || {},
@@ -688,15 +693,11 @@ export class SdGridMaterial {
688
693
  this.ref.detectChanges();
689
694
  });
690
695
  this.clearFilter = () => {
691
- this.filterRegister.remove();
692
- // if (this.gridOption?.filter?.inlineColumn) {
693
- // this.columnFilter = {};
694
- // }
695
- // this.gridFilter?.onClearFilter();
696
+ this.filterRegister.value.remove();
696
697
  };
697
698
  this.setFilter = (args) => {
698
699
  const { columnFilter, externalFilter, filterDef } = args || {};
699
- this.filterRegister.set({
700
+ this.filterRegister.value.set({
700
701
  columnFilter,
701
702
  externalFilter,
702
703
  filterDef
@@ -1058,4 +1059,4 @@ SdGridMaterial.propDecorators = {
1058
1059
  sdFooterDefs: [{ type: ContentChildren, args: [SdMaterialFooterDefDirective,] }],
1059
1060
  sdFilterDefs: [{ type: ContentChildren, args: [SdMaterialFilterDefDirective,] }]
1060
1061
  };
1061
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1tYXRlcmlhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2dyaWQtbWF0ZXJpYWwvIiwic291cmNlcyI6WyJzcmMvbGliL2dyaWQtbWF0ZXJpYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUVULFFBQVEsRUFDUixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBR1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQVE3QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLDRCQUE0QixFQUU3QixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUErQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM5RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM3RixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUM5RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM3RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDakYsT0FBTyxFQUFnQyxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFjakYsTUFBTSxPQUFPLGNBQWM7SUF1SHpCLFlBQ1UsR0FBc0IsRUFDbUIsYUFBMkMsRUFDcEYsd0JBQW9ELEVBQ3BELGFBQThCLEVBQzlCLGFBQThCLEVBQzlCLGdCQUFvQyxFQUNwQyxpQkFBc0MsRUFDdEMsdUJBQWtEO1FBUGxELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ21CLGtCQUFhLEdBQWIsYUFBYSxDQUE4QjtRQUNwRiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTRCO1FBQ3BELGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQUNwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBQ3RDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBMkI7UUE1SDVELFFBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFxQ2hCLHlCQUFpQixJQUFJLE9BQU8sRUFBd0IsRUFBQztRQUdyRCxzQkFBcUIsRUFBRSxFQUFDO1FBQ3hCLFVBQUssR0FBNEIsRUFBRSxDQUFDO1FBQ3BDLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBR3hCLFVBQVU7UUFDVixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLFdBQVc7UUFDWCxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsNkJBQXlCO1FBY3pCLFVBQVU7UUFDVix3QkFBZTtRQXVCZixXQUFXO1FBQ2tDLGVBQVUsR0FBRyxJQUFJLFNBQVMsRUFBOEIsQ0FBQztRQUN0RyxZQUFPLEdBRUgsRUFBRSxDQUFDO1FBRVAsYUFBYTtRQUNrQyxpQkFBWSxHQUFHLElBQUksU0FBUyxFQUFnQyxDQUFDO1FBQzVHLGNBQVMsR0FFTCxFQUFFLENBQUM7UUFDUCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGFBQWE7UUFDa0MsaUJBQVksR0FBRyxJQUFJLFNBQVMsRUFBZ0MsQ0FBQztRQUM1RyxlQUFVLEdBQW1DLEVBQUUsQ0FBQztRQUVoRCxTQUFTO1FBQ1QsaUJBQVksR0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLGNBQWM7UUFDZCx3QkFBZ0IsSUFBSSxZQUFZLEVBQUUsRUFBQztRQUNuQyxrQkFBVSxJQUFJLE9BQU8sRUFFakIsRUFBQztRQUNMLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsUUFBUSxDQUFDO1FBQ3ZCLHlCQUFpQixLQUFLLEVBQUM7UUF5Q3ZCLHVCQUFlLEdBQUcsRUFBRTtZQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNsQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3JDLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFO29CQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLE9BQU8sQ0FBQztpQkFDbkQ7YUFDRjtRQUNILENBQUMsRUFBQTtRQUVELHlCQUFpQixHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNqQztZQUNELGlDQUFpQztZQUNqQyxnQ0FBZ0M7WUFDaEMsSUFBSTtRQUNOLENBQUMsRUFBQTtRQUVELHlCQUFpQixHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUN6QyxJQUFJLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRTtvQkFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsU0FBUyxDQUFDO2lCQUMzRDthQUNGO1FBQ0gsQ0FBQyxFQUFBO1FBRUQsNEJBQW9CLENBQUMsVUFBa0IsRUFBRSxRQUFnQixFQUErQixFQUFFOztZQUN4RixNQUFNLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzlFLE9BQU87Z0JBQ0wsZUFBZSxFQUFFLFlBQVksSUFBSSxFQUFFO2dCQUNuQyxpQkFBaUIsRUFBRSxjQUFjLElBQUksRUFBRTtnQkFDdkMsWUFBWSxFQUFFLFNBQVMsSUFBSSxFQUFFO2dCQUM3QixPQUFPLEVBQUUsb0ZBQVksTUFBTSxLQUFJLEVBQUU7Z0JBQ2pDLGNBQWMsRUFBRSxvRkFBWSxTQUFTLEtBQUksRUFBRTtnQkFDM0MsVUFBVTtnQkFDVixRQUFRO2dCQUNSLFVBQVUsRUFBRSxJQUFJO2FBQ2pCLENBQUM7UUFDSixDQUFDLEVBQUE7UUFFRCw2QkFBcUIsQ0FBQyxNQUE0QixFQUFFLEVBQUU7O1lBQ3BELGtCQUFrQjtZQUNsQixNQUFNLENBQUMsUUFBUSxHQUFHO2dCQUNoQixNQUFNLFFBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFFBQVEsMENBQUUsTUFBTTtnQkFDaEMsUUFBUSxvQkFBRSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsUUFBUSwwQ0FBRSxRQUFRLCtDQUFJLElBQUksQ0FBQyxhQUFhLDBDQUFFLFFBQVEsMENBQUUsUUFBUSx5Q0FBSSw0QkFBNEIsQ0FBQyxRQUFRLDBDQUFFLFFBQVE7Z0JBQ2pJLEtBQUssb0JBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFFBQVEsMENBQUUsS0FBSywrQ0FBSSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxRQUFRLDBDQUFFLEtBQUsseUNBQUksNEJBQTRCLENBQUMsUUFBUSwwQ0FBRSxLQUFLO2dCQUNySCxvQkFBb0IsY0FBRSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsUUFBUSwwQ0FBRSxvQkFBb0IsbUNBQUksS0FBSzthQUN0RSxDQUFDO1lBQ0YsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxFQUFBO1FBRUQsOEJBQXNCLEdBQUcsRUFBRTs7WUFDekIsY0FBYztZQUNkLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsYUFBQyxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLEdBQUcsRUFBRTtnQkFDbEYsT0FBTyxRQUFFLElBQUksQ0FBQyxVQUFVLDBDQUFFLE9BQU87Z0JBQ2pDLGVBQWUsY0FBRSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLGVBQWU7Z0JBQ3pELFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTthQUM1QixDQUFDLENBQUM7WUFDSCw0Q0FBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdEQsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO2dCQUMvQyx5Q0FBZ0IsU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDOUIsc0NBQWEsSUFBSSxDQUFDO29CQUNoQixLQUFLLEVBQUUsS0FBSztpQkFDYixDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDakIsQ0FBQyxFQUFBO1FBRUQsdUJBQWUsQ0FBQyxVQUFpQixFQUFFLFVBQXVDLEVBQUUsRUFBRTtZQUM1RSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNwQyxNQUFNLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLFVBQVUsQ0FBQztZQUN0RixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFOztnQkFDckMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7b0JBQzVCLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDO29CQUMvQixNQUFNLFdBQVcsR0FBVyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDM0YsTUFBTSxXQUFXLEdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ2hGLElBQUksV0FBVyxFQUFFO3dCQUNmLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxLQUFLLFVBQVUsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7NEJBQzdFLE9BQU8sS0FBSyxDQUFDO3lCQUNkO3dCQUNELElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTs0QkFDckIsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dDQUMzQyxPQUFPLEtBQUssQ0FBQzs2QkFDZDt5QkFDRjs2QkFBTSxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7NEJBQzVCLElBQUksV0FBVyxLQUFLLFdBQVcsRUFBRTtnQ0FDL0IsT0FBTyxLQUFLLENBQUM7NkJBQ2Q7eUJBQ0Y7NkJBQU0sSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFOzRCQUM1QixNQUFNLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzRCQUNsRyxNQUFNLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQzs0QkFDNUIsSUFBSSxNQUFNLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTtnQ0FDMUIsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFO29DQUMzQixPQUFPLEtBQUssQ0FBQztpQ0FDZDtnQ0FDRCxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRTtvQ0FDckQsT0FBTyxLQUFLLENBQUM7aUNBQ2Q7cUNBQU0sSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLE1BQU0sR0FBRyxNQUFNLEVBQUU7b0NBQzVELE9BQU8sS0FBSyxDQUFDO2lDQUNkO3FDQUFNLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFO29DQUM1RCxPQUFPLEtBQUssQ0FBQztpQ0FDZDtxQ0FBTSxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxJQUFJLE1BQU0sRUFBRTtvQ0FDNUQsT0FBTyxLQUFLLENBQUM7aUNBQ2Q7cUNBQU0sSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFO29DQUM1QixPQUFPLEtBQUssQ0FBQztpQ0FDZDs2QkFDRjt5QkFDRjs2QkFBTSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7NEJBQzFCLElBQUksV0FBVyxLQUFLLEdBQUcsSUFBSSxXQUFXLEtBQUssR0FBRyxJQUFJLFdBQVcsS0FBSyxNQUFNLEVBQUU7Z0NBQ3hFLE9BQU8sS0FBSyxDQUFDOzZCQUNkO2lDQUFNLElBQUksV0FBVyxLQUFLLEdBQUcsSUFBSSxXQUFXLEtBQUssR0FBRyxJQUFJLFdBQVcsS0FBSyxPQUFPLEVBQUU7Z0NBQ2hGLE9BQU8sS0FBSyxDQUFDOzZCQUNkO3lCQUNGOzZCQUFNLElBQUksSUFBSSxLQUFLLFVBQVUsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7NEJBQ3BFLE1BQU0sSUFBSSxlQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsMENBQUUsSUFBSSxtQ0FBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3BFLE1BQU0sRUFBRSxlQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsMENBQUUsRUFBRSxtQ0FBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ2hFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ2xDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQzVCLElBQUksUUFBUSxJQUFJLE1BQU0sRUFBRTtnQ0FDdEIsSUFBSSxDQUFDLFdBQVcsRUFBRTtvQ0FDaEIsT0FBTyxLQUFLLENBQUM7aUNBQ2Q7Z0NBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0NBQ25ELE1BQU0sWUFBWSxHQUFHLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLE9BQU8sT0FBTSxJQUFJLENBQUM7Z0NBQ2pELE1BQU0sVUFBVSxHQUFHLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE9BQU8sT0FBTSxJQUFJLENBQUM7Z0NBRTdDLElBQUksWUFBWSxJQUFJLFlBQVksR0FBRyxVQUFVLEVBQUU7b0NBQzdDLE9BQU8sS0FBSyxDQUFDO2lDQUNkO2dDQUNELElBQUksVUFBVSxJQUFJLFVBQVUsR0FBRyxVQUFVLEVBQUU7b0NBQ3pDLE9BQU8sS0FBSyxDQUFDO2lDQUNkOzZCQUNGO3lCQUNGO3FCQUNGO2lCQUNGO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPO1lBQ1AsSUFBSSxPQUFPLElBQUksY0FBYyxFQUFFO2dCQUM3QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxNQUFNLEVBQUU7b0JBQ1YsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUM7b0JBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUU7d0JBQzNCLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTs0QkFDckIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt5QkFDbkQ7d0JBQ0QsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxVQUFVLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTs0QkFDN0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDOzRCQUNwRCxNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7NEJBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQzt5QkFDaEI7d0JBQ0QsTUFBTSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQzdDLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUMxQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7NEJBQ1gsT0FBTyxDQUFDLENBQUM7eUJBQ1Y7d0JBQ0QsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFOzRCQUNYLE9BQU8sQ0FBQyxDQUFDLENBQUM7eUJBQ1g7d0JBQ0QsT0FBTyxDQUFDLENBQUM7b0JBQ1gsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxjQUFjLEtBQUssTUFBTSxFQUFFO3dCQUM3QixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7cUJBQ2pCO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPO2dCQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO29CQUNsQyxPQUFPLEtBQUssSUFBSSxVQUFVLEdBQUcsUUFBUTsyQkFDaEMsS0FBSyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztnQkFDM0MsQ0FBQyxDQUFDO2dCQUNGLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTTthQUNwQixDQUFDO1FBQ0osQ0FBQyxFQUFBO1FBRUQscUJBQWEsR0FBZ0MsRUFBRTs7WUFDN0MsTUFBTSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM5RSxPQUFPO2dCQUNMLGVBQWUsRUFBRSxZQUFZLElBQUksRUFBRTtnQkFDbkMsaUJBQWlCLEVBQUUsY0FBYyxJQUFJLEVBQUU7Z0JBQ3ZDLFlBQVksRUFBRSxTQUFTLElBQUksRUFBRTtnQkFDN0IsT0FBTyxFQUFFLG9GQUFZLE1BQU0sS0FBSSxFQUFFO2dCQUNqQyxjQUFjLEVBQUUsb0ZBQVksU0FBUyxLQUFJLEVBQUU7Z0JBQzNDLFVBQVUsRUFBRSx5RkFBaUIsU0FBUyxLQUFJLENBQUM7Z0JBQzNDLFFBQVEsRUFBRSx5RkFBaUIsUUFBUSxrQkFBSSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxRQUFRLDBDQUFFLFFBQVEsQ0FBQSxJQUFJLEVBQUU7YUFDakYsQ0FBQTtRQUNILENBQUMsRUFBQTtRQUVELGdCQUFRLENBQU8sU0FBc0MsRUFBRSxRQUFpQixJQUFJLEVBQUUsRUFBRTtZQUM5RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDckMsSUFBSTtvQkFDRixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDOUMsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQ3hCLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7cUJBQzdCO29CQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDO29CQUMxQixPQUFPO3dCQUNMLEtBQUssRUFBRSxDQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxLQUFLLEtBQUksRUFBRTt3QkFDeEIsS0FBSyxFQUFFLENBQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLEtBQUssS0FBSSxDQUFDO3FCQUN4QixDQUFDO2lCQUNIO2dCQUFDLE9BQU8sS0FBSyxFQUFFO29CQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDbkQsT0FBTzt3QkFDTCxLQUFLLEVBQUUsRUFBRTt3QkFDVCxLQUFLLEVBQUUsQ0FBQztxQkFDVCxDQUFDO2lCQUNIO3dCQUFTO29CQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUMxQjthQUNGO2lCQUFNO2dCQUNMLElBQUksS0FBSyxFQUFFO29CQUNULElBQUk7d0JBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDeEMsSUFBSSxPQUFPLFlBQVksT0FBTyxFQUFFOzRCQUM5Qix1QkFBQSxJQUFJLGVBQWUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBQzt5QkFDMUM7NkJBQU07NEJBQ0wsdUJBQUEsSUFBSSxlQUFlLE9BQU8sSUFBSSxFQUFFLEVBQUM7eUJBQ2xDO3dCQUNELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTywyQ0FBa0IsRUFBRTs0QkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7NEJBQ3BFLHVCQUFBLElBQUksZUFBZSxFQUFFLEVBQUM7eUJBQ3ZCO3FCQUNGO29CQUFDLE9BQU8sS0FBSyxFQUFFO3dCQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQzt3QkFDbkQsdUJBQUEsSUFBSSxlQUFlLEVBQUUsRUFBQztxQkFDdkI7NEJBQVM7d0JBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7d0JBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7cUJBQzFCO2lCQUNGO2dCQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN6QixPQUFPLGdEQUFBLElBQUksNkNBQWdDLFNBQVMsQ0FBQyxDQUFDO2FBQ3ZEO1FBQ0gsQ0FBQyxDQUFBLEVBQUE7UUFFRCxrQkFBVSxDQUFPLElBQXFDLEVBQUUsRUFBRTs7WUFDeEQsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxTQUFTLEdBQUc7WUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxLQUFLLEtBQUksRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsS0FBSyxLQUFJLENBQUMsQ0FBQztZQUM5Qix1R0FBdUc7WUFDdkcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLFVBQVUscUJBQVEsSUFBSSxDQUFFLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7WUFDSCx5QkFBTSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLFFBQVEsbURBQUcsSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdkQsd0RBQUEsSUFBSSxDQUF1QixDQUFDO1FBQzlCLENBQUMsQ0FBQSxFQUFBO1FBRUQsV0FBTSxHQUFHLENBQU8sUUFBaUIsSUFBSSxFQUFFLEVBQUU7WUFDdkMsTUFBTSxJQUFJLEdBQUcsTUFBTSx5Q0FBQSxJQUFJLEVBQU8sOENBQUEsSUFBSSxDQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDeEQsMkNBQUEsSUFBSSxFQUFTLElBQUksQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQSxDQUFBO1FBRUQseUJBQWlCLENBQU8sYUFBcUIsQ0FBQyxFQUFFLFdBQW1CLEtBQUssRUFBRSxFQUFFOztZQUMxRSxVQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSwwQ0FBRSxLQUFLLEVBQUU7Z0JBQ2pDLHFHQUFxRztnQkFDckcsSUFBSSxNQUFNLFNBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLDBDQUFFLEtBQUssQ0FBQyxxREFBQSxJQUFJLEVBQW1CLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUN6RixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ3pCLE9BQU8sTUFBTSxDQUFDO2lCQUNmO2dCQUNELElBQUksWUFBWSxDQUFRLE1BQU0sQ0FBQyxFQUFFO29CQUMvQixNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO2lCQUM3QjtnQkFDRCxJQUFJLFlBQVksQ0FBa0MsTUFBTSxDQUFDLEVBQUU7b0JBQ3pELE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQzdCO2dCQUNELE9BQU8sTUFBTSxNQUFNLENBQUM7YUFDckI7aUJBQU07Z0JBQ0wsTUFBTSxVQUFVLEdBQUcscURBQUEsSUFBSSxFQUFtQixVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2hFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO29CQUNyQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDL0MsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQ3hCLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7cUJBQzdCO29CQUNELE9BQU8sTUFBTSxNQUFNLENBQUM7aUJBQ3JCO3FCQUFNO29CQUNMLElBQUksYUFBYSxHQUFVLEVBQUUsQ0FBQztvQkFDOUIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxVQUFVLEVBQUU7d0JBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ3hDLElBQUksT0FBTyxZQUFZLE9BQU8sRUFBRTs0QkFDOUIsYUFBYSxHQUFHLE1BQU0sT0FBTyxDQUFDO3lCQUMvQjs2QkFBTTs0QkFDTCxhQUFhLEdBQUcsT0FBTyxDQUFDO3lCQUN6QjtxQkFDRjt5QkFBTTt3QkFDTCxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7cUJBQ3ZDO29CQUNELE9BQU8sZ0RBQUEsSUFBSSxFQUFjLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztpQkFDckQ7YUFDRjtRQUNILENBQUMsQ0FBQSxFQUFBO1FBTUQsc0JBQWMsR0FBMkIsRUFBRTtZQUN6QyxNQUFNLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFDLE9BQUEsUUFBQyxDQUFDLENBQUMsTUFBTSwwQ0FBRSxRQUFRLENBQUEsQ0FBQSxFQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7O2dCQUN4RSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO29CQUMzQixPQUFPO2lCQUNSO2dCQUNELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7b0JBQzlCLE1BQUEsTUFBTSxDQUFDLFFBQVEsMENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQUMsT0FBQSxRQUFDLENBQUMsQ0FBQyxNQUFNLDBDQUFFLFFBQVEsQ0FBQSxDQUFBLEVBQUEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7d0JBQ3RFLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7NEJBQ2hDLE9BQU87eUJBQ1I7d0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDNUIsQ0FBQyxFQUFFO29CQUNILE9BQU87aUJBQ1I7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRTtvQkFDbEMsTUFBQSxNQUFNLENBQUMsUUFBUSwwQ0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBQyxPQUFBLFFBQUMsQ0FBQyxDQUFDLE1BQU0sMENBQUUsUUFBUSxDQUFBLENBQUEsRUFBQSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTt3QkFDdEUsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTs0QkFDaEMsT0FBTzt5QkFDUjt3QkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUM1QixDQUFDLEVBQUU7b0JBQ0gsT0FBTztpQkFDUjtnQkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxFQUFBO1FBRUQsOEJBQXNCLEdBQWlDLEVBQUU7O1lBQ3ZELE9BQU8sYUFBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sMENBQUUsT0FBTywwQ0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBQyxPQUFBLFFBQUMsQ0FBQyxDQUFDLE1BQU0sMENBQUUsUUFBUSxDQUFBLENBQUEsRUFBQSxNQUFLLEVBQUUsQ0FBQztRQUNqRixDQUFDLEVBQUE7UUFFRCxvQkFBWSxDQUFPLElBQXVFLEVBQUUsRUFBRTs7WUFDNUYsSUFBSTtnQkFDRixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDN0IsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDdkIsTUFBTSxRQUFRLEdBQUcsYUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLGtCQUFrQixLQUFJLElBQUksQ0FBQztnQkFDckUsTUFBTSxLQUFLLEdBQUcsYUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLEtBQUssS0FBSSxDQUFDLENBQUM7Z0JBQ2xELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ3ZCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFDbkIsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDeEIsTUFBTSxLQUFLLEdBQVUsRUFBRSxDQUFDO2dCQUN4QixJQUFJLFFBQVEsR0FHTCxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxVQUFVLEdBQUcsR0FBUyxFQUFFOztvQkFDNUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUM1QyxRQUFRLEdBQUcsRUFBRSxDQUFDO29CQUNkLFdBQVcsR0FBRyxFQUFFLENBQUM7b0JBQ2pCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO3dCQUM1QixJQUFJLE9BQU8sSUFBSSxNQUFNLEVBQUU7NEJBQ3JCLFdBQVcsR0FBRyxDQUFDLEdBQUcsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNoRCxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQzt5QkFDdEI7NkJBQU07NEJBQ0wsV0FBVyxHQUFHLENBQUMsR0FBRyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQzt5QkFDM0M7cUJBQ0Y7b0JBQ0QsVUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sMENBQUUsT0FBTyxFQUFFO3dCQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQzVELElBQUksT0FBTyxZQUFZLE9BQU8sRUFBRTs0QkFDOUIsV0FBVyxHQUFHLE1BQU0sT0FBTyxDQUFDO3lCQUM3Qjs2QkFBTTs0QkFDTCxXQUFXLEdBQUcsT0FBTyxDQUFDO3lCQUN2QjtxQkFDRjtvQkFDRCxNQUFNLFNBQVMsR0FBRyxLQUFLLEdBQUcsUUFBUSxDQUFDO29CQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQztvQkFDakUsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLE9BQU8sR0FBRyxDQUFDO29CQUM3QyxNQUFNLFVBQVUsR0FBRywrQ0FBQSxJQUFJLENBQWMsQ0FBQztvQkFDdEMsTUFBTSxrQkFBa0IsR0FBRyx1REFBQSxJQUFJLENBQXNCLENBQUM7b0JBQ3RELEtBQUssTUFBTSxJQUFJLElBQUksV0FBVyxFQUFFO3dCQUM5QixNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7d0JBQ3BCLE1BQU0sTUFBTSxHQUFHLENBQU8sWUFBNEIsRUFBRSxFQUFFOzs0QkFDcEQsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNuRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3BFLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNwRixJQUFJLGNBQWMsYUFBZCxjQUFjLHVCQUFkLGNBQWMsQ0FBRSxTQUFTLEVBQUU7Z0NBQzdCLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2dDQUN2RixPQUFPOzZCQUNSOzRCQUNELElBQUksQ0FBQyxNQUFNLEVBQUU7Z0NBQ1gsT0FBTzs2QkFDUjs0QkFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFO2dDQUNoRSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRTtnQ0FDN0QsT0FBTzs2QkFDUjs0QkFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dDQUNoRCxPQUFPOzZCQUNSOzRCQUNELElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtnQ0FDcEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRTtvQ0FDM0QsUUFBUSxFQUFFLElBQUk7aUNBQ2YsQ0FBQyxDQUFDO2dDQUNILElBQUksU0FBUyxZQUFZLE9BQU8sRUFBRTtvQ0FDaEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLFNBQVMsQ0FBQztpQ0FDckM7cUNBQU07b0NBQ0wsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUM7aUNBQy9CO2dDQUNELEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUNBQUksRUFBRSxDQUFDOzZCQUM3QztpQ0FBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFO2dDQUN2RyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQzs2QkFDeEI7aUNBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQ0FDL0QsdURBQXVEO2dDQUN2RCxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7NkJBQ3hDO2lDQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7Z0NBQ2pDLDRGQUE0RjtnQ0FDNUYsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO29DQUN0QixHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQUEsTUFBTSxDQUFDLE1BQU0sMENBQUUsYUFBYSxLQUFJLE1BQU0sQ0FBQztpQ0FDNUQ7cUNBQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtvQ0FDeEUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFBLE1BQU0sQ0FBQyxNQUFNLDBDQUFFLGNBQWMsS0FBSSxPQUFPLENBQUM7aUNBQzlEOzZCQUNGO2lDQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7Z0NBQ2pDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0NBQzlCLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQUM7Z0NBQ2pDLElBQUksYUFBYSxFQUFFO29DQUNqQixJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztpQ0FDbEM7Z0NBQ0QsMkNBQTJDO2dDQUMzQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDOzZCQUN2RDtpQ0FBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO2dDQUNyQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dDQUM5QixNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxDQUFDO2dDQUNqQyxJQUFJLGFBQWEsRUFBRTtvQ0FDakIsSUFBSSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7aUNBQ2xDO2dDQUNELCtDQUErQztnQ0FDL0MsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDOzZCQUM3RDtpQ0FBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO2dDQUNqQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dDQUM5QixNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxDQUFDO2dDQUNqQyxJQUFJLGFBQWEsRUFBRTtvQ0FDakIsSUFBSSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7aUNBQ2xDO2dDQUNELDJDQUEyQztnQ0FDM0MsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzs2QkFDbEQ7aUNBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQ0FDbkMsb0RBQW9EO2dDQUNwRCxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDOzZCQUN2RjtpQ0FBTTtnQ0FDTCxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7NkJBQ3hDO3dCQUNILENBQUMsQ0FBQSxDQUFDO3dCQUNGLDJDQUEyQzt3QkFDM0MsS0FBSyxNQUFNLFlBQVksSUFBSSxPQUFPLEVBQUU7NEJBQ2xDLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO3lCQUM1Qjt3QkFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUNqQjtnQkFDSCxDQUFDLENBQUEsQ0FBQTtnQkFDRCxPQUFPLFVBQVUsR0FBRyxRQUFRLEdBQUcsS0FBSyxFQUFFO29CQUNwQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtEQUFBLElBQUksRUFBZ0IsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQ3pELFVBQVUsRUFBRSxDQUFDO29CQUNiLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUU7d0JBQzNCLFNBQVM7cUJBQ1Y7b0JBQ0QsTUFBTSxVQUFVLEVBQUUsQ0FBQztpQkFDcEI7Z0JBQ0QsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDdkIsTUFBTSxVQUFVLEVBQUUsQ0FBQztpQkFDcEI7Z0JBQ0QsSUFBSSxFQUFDLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxRQUFRLENBQUEsRUFBRTtvQkFDbkIsSUFBSSxLQUFLLEVBQUU7d0JBQ1QsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQzs0QkFDakMsT0FBTzs0QkFDUCxLQUFLOzRCQUNMLFFBQVEsY0FBRSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLFFBQVE7eUJBQzVDLENBQUMsQ0FBQzt3QkFDSCxPQUFPO3FCQUNSO29CQUNELE1BQU0sTUFBTSxHQUlOLEVBQUUsQ0FBQztvQkFDVCxJQUFJLEtBQUssQ0FBQyxPQUFPLGFBQUMsSUFBSSxDQUFDLFVBQVUsMENBQUUsTUFBTSwwQ0FBRSxNQUFNLENBQUMsRUFBRTt3QkFDbEQsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7NEJBQ2pELElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0NBQzdDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7b0NBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUM7d0NBQ1YsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO3dDQUNoQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7d0NBQ2xCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtxQ0FDckIsQ0FBQyxDQUFDO2lDQUNKO3FDQUFNO29DQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUM7d0NBQ1YsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO3dDQUNoQixLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFO3dDQUMxQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07cUNBQ3JCLENBQUMsQ0FBQztpQ0FDSjs2QkFDRjt5QkFDRjtxQkFDRjtvQkFDRCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO3dCQUM5QixPQUFPO3dCQUNQLEtBQUs7d0JBQ0wsUUFBUSxjQUFFLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sMENBQUUsUUFBUTt3QkFDM0MsTUFBTTtxQkFDUCxDQUFDLENBQUM7b0JBQ0gsT0FBTztpQkFDUjtnQkFDRCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7b0JBQ3hDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixPQUFPO29CQUNQLEtBQUs7aUJBQ04sQ0FBQyxDQUFDO2FBQ0o7b0JBQVM7Z0JBQ1IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO2dCQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQzFCO1FBQ0gsQ0FBQyxDQUFBLEVBQUE7UUFFRCxhQUFRLEdBQUcsQ0FBTyxJQUF1RSxFQUFFLEVBQUU7WUFDM0YsNkNBQUEsSUFBSSxFQUFXLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQSxDQUFBO1FBRUQsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDcEIseUNBQWdCLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUE7UUFFRCxhQUFRLEdBQUcsQ0FBTyxPQUE4QixFQUFFLEVBQUU7O1lBQ2xELFVBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLDBDQUFFLE1BQU0sRUFBRTtnQkFDMUMsT0FBTzthQUNSO1lBQ0QsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO2dCQUN2QixPQUFPO2FBQ1I7WUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQ3RCLE9BQU8sQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUMzQixPQUFPO2FBQ1I7WUFDRCxNQUFNLElBQUkscUJBQUcsSUFBSSxDQUFDLFVBQVUsMENBQUUsY0FBYywwQ0FBRSxRQUFRLG1EQUFHLE9BQU8sQ0FBQyxDQUFDO1lBQ2xFLElBQUksUUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsMENBQUUsUUFBUSxDQUFBLEVBQUU7Z0JBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDO2FBQ3hFO1lBQ0QsSUFBSSxJQUFJLFlBQVksT0FBTyxFQUFFO2dCQUMzQixPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDZCxPQUFPLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztvQkFDM0IsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQzVCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDO2FBQy9DO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUM1QixPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzthQUMzQjtRQUNILENBQUMsQ0FBQSxDQUFBO1FBRUQsYUFBUSxHQUFHLENBQUMsT0FBOEIsRUFBRSxFQUFFOztZQUM1QyxnQkFBSSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsT0FBTywwQ0FBRSxLQUFLLDBDQUFFLE1BQU0sRUFBRTtnQkFDbkMsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsT0FBTywwQ0FBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFO2dCQUN4RSxZQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUywwQ0FBRSxRQUFRLG1EQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDckYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdkQsd0RBQUEsSUFBSSxDQUF1QixDQUFDO2FBQzdCO2lCQUFNO2dCQUNMLFVBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLDBDQUFFLE1BQU0sRUFBRTtvQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQztvQkFDekUsd0RBQUEsSUFBSSxDQUF1QixDQUFDO29CQUM1QixPQUFPO2lCQUNSO2dCQUNELFlBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLDBDQUFFLFFBQVEsbURBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNyRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN2RCx3REFBQSxJQUFJLENBQXVCLENBQUM7YUFDN0I7UUFDSCxDQUFDLENBQUE7UUFFRCxnQkFBVyxHQUFHLEdBQUcsRUFBRTs7WUFDakIsTUFBQSxJQUFJLENBQUMsS0FBSywwQ0FBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7O2dCQUN0QixJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxvQkFBQyxJQUFJLENBQUMsVUFBVSwwQ0FBRSxTQUFTLDBDQUFFLE9BQU8sMENBQUUsTUFBTSxDQUFBLFdBQUksQ0FBQyxDQUFDLE9BQU8sMENBQUUsTUFBTSxDQUFBLENBQUMsRUFBRTtvQkFDdkYsQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2lCQUNqQztZQUNILENBQUMsRUFBRTtZQUNILFlBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLDBDQUFFLFdBQVcsbURBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDL0Usd0RBQUEsSUFBSSxDQUF1QixDQUFDO1FBQzlCLENBQUMsQ0FBQTtRQUVELHFCQUFnQixHQUFHLENBQUMsS0FBK0IsRUFBRSxFQUFFO1lBQ3JELEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxLQUFLLEVBQUU7WUFDMUMsd0RBQUEsSUFBSSxDQUF1QixDQUFDO1FBQzlCLENBQUMsQ0FBQTtRQUVELCtCQUF1QixHQUFHLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7aUJBQzVELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDVixNQUFNLEVBQ0osVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixVQUFVLEVBQ1YsSUFBSSxFQUNKLFNBQVMsS0FHUCxJQUFJO2dCQUZOLDJGQUEyRjtnQkFDeEYsTUFBTSxVQUNQLElBQUksRUFkRiwrS0FjTCxDQUFPLENBQUM7Z0JBQ1QsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQyxDQUFRLENBQUM7WUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsRUFBQTtRQUVELGdCQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsK0NBQStDO1lBQy9DLDRCQUE0QjtZQUM1QixJQUFJO1lBQ0osb0NBQW9DO1FBQ3RDLENBQUMsQ0FBQTtRQUVELGNBQVMsR0FBRyxDQUFDLElBSVosRUFBRSxFQUFFO1lBQ0gsTUFBTSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztnQkFDdEIsWUFBWTtnQkFDWixjQUFjO2dCQUNkLFNBQVM7YUFDVixDQUFDLENBQUE7WUFDRixxRUFBcUU7WUFDckUsMkNBQTJDO1lBQzNDLElBQUk7WUFDSixvQ0FBb0M7UUFDdEMsQ0FBQyxDQUFBO1FBRUQsYUFBUSxHQUFHLEdBQUcsRUFBRTs7WUFDZCxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xELElBQUksRUFBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTyxDQUFBLEVBQUU7Z0JBQ3BCLE9BQU87YUFDUjtZQUNELE1BQU0sSUFBSSxHQUF1QixFQUFFLENBQUM7WUFDcEMsdUJBQXVCO1lBQ3ZCLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7b0JBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO2lCQUN6QjtxQkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO29CQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztpQkFDM0I7cUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtvQkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQzNCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUU7Z0JBQ3BCLE1BQUEsTUFBTSxDQUFDLEtBQUssK0NBQVosTUFBTSxFQUFTLElBQUksNkNBQW9CO2FBQ3hDO2lCQUFNO2dCQUNMLE1BQUEsTUFBTSxDQUFDLEtBQUssK0NBQVosTUFBTSxFQUFTLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFO2FBQ2xDO1lBQ0QsaURBQWlEO1lBQ2pELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7Z0JBQzNCLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtvQkFDcEIsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFO3dCQUNwQix1QkFBQSxJQUFJLGVBQWUsQ0FBQyw0Q0FBbUIsRUFBRSxJQUFJLENBQUMsRUFBQztxQkFDaEQ7b0JBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDcEM7cUJBQU07b0JBQ0wsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFO3dCQUNwQix1QkFBQSxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsNENBQW1CLENBQUMsRUFBQztxQkFDaEQ7b0JBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDcEM7YUFDRjtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRztnQkFDdEIsU0FBUyxvQkFBTyxJQUFJLENBQUU7YUFDdkIsQ0FBQztRQUNKLENBQUMsQ0FBQTtRQUNELGFBQVEsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQzFCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsbUNBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsS0FDeEIsU0FBUyxvQkFBTyxJQUFJLElBQ3JCLENBQUM7WUFDRixvQ0FBb0M7WUFDcEMsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDM0IsbUJBQW1CO2dCQUNuQiwwREFBMEQ7YUFDM0Q7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQTtRQUNELFdBQU0sR0FBRyxDQUFPLElBQTJCLEVBQUUsRUFBRTtZQUM3QyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hDLE9BQU87YUFDUjtZQUNELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ25DLElBQUk7Z0JBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ3BDLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFDbkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDL0QsSUFBSSxNQUFNLFlBQVksT0FBTyxFQUFFO3dCQUM3QixNQUFNLE9BQU8sR0FBRyxNQUFNLE1BQU0sQ0FBQzt3QkFDN0IsSUFBSSxPQUFPLEVBQUU7NEJBQ1gsTUFBTSxPQUFPLENBQUM7eUJBQ2Y7cUJBQ0Y7eUJBQU07d0JBQ0wsSUFBSSxNQUFNLEVBQUU7NEJBQ1YsTUFBTSxNQUFNLENBQUM7eUJBQ2Q7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO29CQUNqQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuQyxJQUFJLE1BQU0sWUFBWSxPQUFPLEVBQUU7d0JBQzdCLE1BQU0sTUFBTSxDQUFDO3FCQUNkO2lCQUNGO2dCQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7b0JBQzdELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO3dCQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUMvQjtvQkFDRCxxQ0FBcUM7aUJBQ3RDO2dCQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO2dCQUM5QixvQ0FBb0M7YUFDckM7WUFBQyxPQUFPLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEM7b0JBQVM7Z0JBQ1IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDMUI7UUFDSCxDQUFDLENBQUEsQ0FBQTtRQUNELGFBQVEsR0FBRyxDQUFDLElBQTJCLEVBQUUsRUFBRTs7WUFDekMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkMsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDNUIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7b0JBQ3BDLE1BQU0sSUFBSSxHQUFHLDBDQUFpQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzVDLDBDQUFpQixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNqQyx1QkFBQSxJQUFJLGVBQWUsQ0FBQyw0Q0FBbUIsQ0FBQyxFQUFDO2lCQUMxQztnQkFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO29CQUNwQyxNQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRLCtDQUFoQixNQUFNLEVBQWEsSUFBSSw2Q0FBb0I7aUJBQzVDO3FCQUFNO29CQUNMLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFFBQVEsK0NBQWhCLE1BQU0sRUFBYSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtpQkFDdEM7Z0JBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDekIsT0FBTzthQUNSO1lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDM0IsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFFBQVEsRUFBRTtvQkFDbEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7d0JBQ3BDLE1BQU0sSUFBSSxHQUFHLDBDQUFpQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzVDLDBDQUFpQixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNqQyx1QkFBQSxJQUFJLGVBQWUsQ0FBQyw0Q0FBbUIsQ0FBQyxFQUFDO3FCQUMxQztvQkFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzlCO3FCQUFNO29CQUNMLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDdEQ7YUFDRjtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1lBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFBO1FBQ0QsYUFBUSxHQUFHLENBQU8sSUFBMkIsRUFBRSxFQUFFOztZQUMvQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQyxJQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLEVBQUU7Z0JBQ3hCLE1BQU0sWUFBWSxHQUFHLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hELElBQUksWUFBWSxZQUFZLE9BQU8sRUFBRTtvQkFDbkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxNQUFNLEVBQUU7d0JBQ1gsT0FBTztxQkFDUjtpQkFDRjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsWUFBWSxFQUFFO3dCQUNqQixPQUFPO3FCQUNSO2lCQUNGO2FBQ0Y7WUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUM1QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtvQkFDcEMsTUFBTSxJQUFJLEdBQUcsMENBQWlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDNUMsMENBQWlCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2pDLHVCQUFBLElBQUksZUFBZSxDQUFDLDRDQUFtQixDQUFDLEVBQUM7aUJBQzFDO2dCQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7b0JBQ3BDLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFFBQVEsK0NBQWhCLE1BQU0sRUFBYSxJQUFJLDZDQUFvQjtpQkFDNUM7cUJBQU07b0JBQ0wsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsUUFBUSwrQ0FBaEIsTUFBTSxFQUFhLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFO2lCQUN0QztnQkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN6QixPQUFPO2FBQ1I7UUFDSCxDQUFDLENBQUEsQ0FBQTtRQUVELFFBQUcsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFPLEVBQUUsRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzlCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDcEM7UUFDSCxDQUFDLENBQUE7UUFFRCxXQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBTyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM5QjtRQUNILENBQUMsQ0FBQTtRQUVELFdBQU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQ3ZCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDOUI7UUFDSCxDQUFDLENBQUE7UUFFRCxnQkFBVyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRixDQUFDLENBQUE7UUF1RkQsa0JBQWEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBNzdCL0MsQ0FBQztJQXhIRCxJQUE2QixXQUFXLENBQUMsVUFBd0I7UUFDL0QsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7WUFDaEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7WUFDN0IsdURBQXVEO1lBQ3ZELDhCQUE4QjtZQUM5Qix1QkFBdUI7WUFDdkIsZ0JBQWdCO1lBQ2hCLHFDQUFxQztZQUNyQywwQkFBMEI7WUFDMUIsc0JBQXNCO1lBQ3RCLHlCQUF5QjtZQUN6QixVQUFVO1lBQ1YsUUFBUTtZQUNSLGtCQUFrQjtTQUNuQjtJQUNILENBQUM7SUFFRCxJQUFhLE1BQU0sQ0FBQyxNQUE0QjtRQUM5QyxJQUFJLE1BQU0sRUFBRTtZQUNWLE1BQU0sR0FBRyxzREFBQSxJQUFJLEVBQW9CLE1BQU0sQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1lBQ3pCLDhCQUE4QjtZQUM5Qix1QkFBQSxJQUFJLGtCQUFrQixLQUFLLEVBQUM7WUFDNUIsc0JBQXNCO1lBQ3RCLGlCQUFpQjtZQUNqQixNQUFNO1lBQ04sTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMseUJBQXlCLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQztZQUN4RCxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsNkNBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBZUQsSUFBNkIsU0FBUyxDQUFDLFNBQXVCO1FBQzVELElBQUksU0FBUyxJQUFJLDZDQUFvQixTQUFTLEVBQUU7WUFDOUMsdUJBQUEsSUFBSSxjQUFjLFNBQVMsRUFBQztZQUM1Qiw0Q0FBbUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUN4QyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNQLHNDQUFhLElBQUksQ0FBQztvQkFDaEIsS0FBSyxFQUFFLEtBQUs7aUJBQ2IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUlELElBQXdCLElBQUksQ0FBQyxJQUFhO1FBQ3hDLElBQUksSUFBSSxJQUFJLHdDQUFlLElBQUksRUFBRTtZQUMvQix1QkFBQSxJQUFJLFNBQVMsSUFBSSxFQUFDO1lBQ2xCLDRDQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1Asc0NBQWEsSUFBSSxDQUFDO29CQUNoQixLQUFLLEVBQUUsS0FBSztpQkFDYixDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBa0RELFFBQVE7UUFDTixnREFBQSxJQUFJLENBQWUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZUFBZTtRQUNiLDRDQUFtQixHQUFHLENBQUMsc0NBQWEsSUFBSSxDQUN0QyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLFNBQVMsQ0FBQyxDQUFNLElBQUksRUFBQyxFQUFFO1lBQ3JCLE1BQU0sVUFBVSxHQUFHLDhDQUFBLElBQUksQ0FBYSxDQUFDO1lBQ3JDLE1BQU0sTUFBTSxHQUFHLE1BQU0seUNBQUEsSUFBSSxFQUFPLFVBQVUsRUFBRSw2Q0FBb0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEYsdUJBQUEsSUFBSSxrQkFBa0IsSUFBSSxFQUFDO1lBQzNCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQSxDQUFDLENBQ0gsQ0FBQyxTQUFTLHVDQUFjLENBQUMsQ0FBQztRQUMzQiw0Q0FBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLDRDQUFtQixDQUFDLENBQUM7UUFDakcsNENBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyw4Q0FBcUIsQ0FBQyxDQUFDO1FBQ3JHLDRDQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsOENBQXFCLENBQUMsQ0FBQztRQUNyRyw0Q0FBbUIsR0FBRyxDQUFDLGFBQWEsQ0FBQztZQUNuQyw2Q0FBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDM0UsdURBQUEsSUFBSSxDQUFzQixDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsNENBQW1CLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFtVEQsSUFBSSxDQUFDLEtBQTRCLEVBQUUsT0FBaUI7UUFDbEQsZUFBZSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBc2hCRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNwQixPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNoRixPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDWixNQUFNLEVBQ0osWUFBWSxFQUNaLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFVBQVUsRUFDVixVQUFVLEVBQ1YsSUFBSSxFQUNKLFNBQVMsRUFDVCxVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxPQUFPLEVBQ1AsU0FBUyxLQUNLLElBQUksRUFBZixNQUFNLFVBQUssSUFBSSxFQWpCZCxrUEFpQk8sQ0FBTyxDQUFDO1lBQ3JCLE9BQU8sZ0NBQ0YsTUFBTSxLQUNULGtCQUFrQixHQUNaLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNCLE1BQU0sRUFDSixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEVBQ1YsVUFBVSxFQUNWLElBQUksRUFDSixTQUFTLEVBQ1QsVUFBVSxFQUNWLE9BQU8sRUFDUCxjQUFjLEVBQ2QsT0FBTyxFQUNQLFNBQVMsS0FDSyxJQUFJLEVBQWYsTUFBTSxVQUFLLElBQUksRUFoQmQsNE5BZ0JPLENBQU8sQ0FBQztZQUNyQixPQUFPLE1BQVcsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixpREFBd0I7SUFDMUIsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLDBDQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakMsTUFBTSxFQUNKLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFVBQVUsRUFDVixVQUFVLEVBQ1YsSUFBSSxFQUNKLFNBQVMsRUFDVCxVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxPQUFPLEVBQ1AsU0FBUyxLQUNLLElBQUksRUFBZixNQUFNLFVBQUssSUFBSSxFQWhCZCw0TkFnQk8sQ0FBTyxDQUFDO1lBQ3JCLE9BQU8sTUFBVyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUlELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQzVELENBQUM7Ozs7WUE3a0NGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixtaHlCQUE2QztnQkFFN0MsVUFBVSxFQUFFO29CQUNWLE9BQU8sQ0FBQyxjQUFjLEVBQUU7d0JBQ3RCLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO3dCQUNoRixLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7d0JBQ2hFLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztxQkFDdEYsQ0FBQztpQkFDSDs7YUFDRjs7O1lBekRDLGlCQUFpQjs0Q0FtTGQsTUFBTSxTQUFDLG9CQUFvQixjQUFHLFFBQVE7WUE5SWxDLDBCQUEwQjtZQUZJLGVBQWU7WUFYN0MsZUFBZTtZQWlCZixrQkFBa0I7WUFHbEIsbUJBQW1CO1lBRm5CLHlCQUF5Qjs7O3VCQWlCL0IsU0FBUyxTQUFDLGlCQUFpQjswQkFJM0IsU0FBUyxTQUFDLGFBQWE7MEJBR3ZCLFNBQVMsU0FBQyxZQUFZO3FCQWlCdEIsS0FBSzt3QkE2QkwsU0FBUyxTQUFDLFlBQVk7bUJBZXRCLFNBQVMsU0FBQyxPQUFPOzRCQWNqQixTQUFTLFNBQUMsYUFBYTsrQkFHdkIsWUFBWSxTQUFDLG9DQUFvQzswQkFHakQsWUFBWSxTQUFDLCtCQUErQjt5QkFHNUMsZUFBZSxTQUFDLDBCQUEwQjsyQkFNMUMsZUFBZSxTQUFDLDRCQUE0QjsyQkFPNUMsZUFBZSxTQUFDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIEluamVjdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgUXVlcnlMaXN0LFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgQ29udGVudENoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7XHJcbiAgU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZWdpc3RlcixcclxuICBTZEdyaWRNYXRlcmlhbEZpbHRlclJlcXVlc3RcclxufSBmcm9tICcuL3NlcnZpY2VzL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBTZEdyaWRNYXRlcmlhbE9wdGlvblxyXG59IGZyb20gJy4vbW9kZWxzL2dyaWQtb3B0aW9uLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBHUklEX01BVEVSSUFMX0NPTkZJRyxcclxuICBERUZBVUxUX0dSSURfTUFURVJJQUxfQ09ORklHLFxyXG4gIElTZEdyaWRNYXRlcmlhbENvbmZpZ3VyYXRpb25cclxufSBmcm9tICcuL21vZGVscy9ncmlkLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNkTm90aWZ5U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbm90aWZ5JztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbENvbHVtbiB9IGZyb20gJy4vbW9kZWxzL2dyaWQtY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbENlbGxEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtY2VsbC1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNkR3JpZEZpbHRlciB9IGZyb20gJy4vY29tcG9uZW50cy9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NkLW1hdGVyaWFsLWZpbHRlci1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbFN1YkluZm9ybWF0aW9uRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NkLW1hdGVyaWFsLXN1Yi1pbmZvcm1hdGlvbi1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC1tYXRlcmlhbC1mb290ZXItZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNkTWF0ZXJpYWxFbXB0eURhdGFEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtZW1wdHktZGF0YS1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RQb3B1cEV4cG9ydCB9IGZyb20gJy4vY29tcG9uZW50cy9wb3B1cC1leHBvcnQvcG9wdXAtZXhwb3J0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNkRXhwb3J0Q29sdW1uLCBTZEV4cG9ydEZpbGUsIFNkRXhwb3J0U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvZXhwb3J0JztcclxuaW1wb3J0IHsgU2RHcmlkQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vbW9kZWxzL2dyaWQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgU2RHcmlkQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2dyaWQtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxFeHBvcnRDb2x1bW4gfSBmcm9tICcuL21vZGVscy9ncmlkLWV4cG9ydC5tb2RlbCc7XHJcbmltcG9ydCB7IFNkUXVpY2tBY3Rpb24gfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3F1aWNrLWFjdGlvbic7XHJcbmltcG9ydCB7IFNkR3JpZE1hdGVyaWFsSXRlbSwgU2RJdGVtIH0gZnJvbSAnLi9tb2RlbHMvZ3JpZC5tb2RlbCc7XHJcbmltcG9ydCB7IFNkQ29sdW1uVmFsdWVzUGlwZSB9IGZyb20gJy4vcGlwZXMvY29sdW1uLXZhbHVlcy5waXBlJztcclxuaW1wb3J0IHsgU2RFZGl0b3JIYW5kbGVyQ29sdW1uUGlwZSB9IGZyb20gJy4vcGlwZXMvZWRpdG9yLWhhbmRsZXItY29sdW1uLnBpcGUnO1xyXG5pbXBvcnQgeyBTZFNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY29tbW9uJztcclxuaW1wb3J0IHsgU2RHcmlkRmlsdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtbWF0ZXJpYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkLW1hdGVyaWFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ncmlkLW1hdGVyaWFsLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xyXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgbWluSGVpZ2h0OiAnMCcsIHZpc2liaWxpdHk6ICdoaWRkZW4nIH0pKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEdyaWRNYXRlcmlhbDxUID0gYW55PiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKFNkU2Nyb2xsRGlyZWN0aXZlKSBzZFNjcm9sbDogU2RTY3JvbGxEaXJlY3RpdmU7XHJcbiAgZmlsdGVyUmVnaXN0ZXI6IFNkR3JpZE1hdGVyaWFsRmlsdGVyUmVnaXN0ZXI7XHJcbiAga2V5ID0gdXVpZC52NCgpO1xyXG4gIGdyaWRDb25maWd1cmF0aW9uT2JzZXJ2ZXI6IE9ic2VydmFibGU8U2RHcmlkQ29uZmlndXJhdGlvbj47XHJcbiAgQFZpZXdDaGlsZChTZFF1aWNrQWN0aW9uKSBxdWlja0FjdGlvbjogU2RRdWlja0FjdGlvbjtcclxuXHJcbiAgZ3JpZEZpbHRlcjogU2RHcmlkRmlsdGVyO1xyXG4gIEBWaWV3Q2hpbGQoU2RHcmlkRmlsdGVyKSBzZXQgX2dyaWRGaWx0ZXIoZ3JpZEZpbHRlcjogU2RHcmlkRmlsdGVyKSB7XHJcbiAgICBpZiAoZ3JpZEZpbHRlciAmJiB0aGlzLmdyaWRGaWx0ZXIgIT09IGdyaWRGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5ncmlkRmlsdGVyID0gZ3JpZEZpbHRlcjtcclxuICAgICAgLy8gdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChncmlkRmlsdGVyLmZpbHRlckNoYW5nZS5waXBlKFxyXG4gICAgICAvLyAgIGZpbHRlcihyZWxvYWQgPT4gcmVsb2FkKSxcclxuICAgICAgLy8gICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgLy8gICBtYXAoKCkgPT4ge1xyXG4gICAgICAvLyAgICAgdGhpcy4jcGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICAgIC8vICAgICB0aGlzLiNyZWxvYWQubmV4dCh7XHJcbiAgICAgIC8vICAgICAgIGZvcmNlOiBmYWxzZSxcclxuICAgICAgLy8gICAgICAgc291cmNlOiAnRklMVEVSJ1xyXG4gICAgICAvLyAgICAgfSk7XHJcbiAgICAgIC8vICAgfSksXHJcbiAgICAgIC8vICkuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IG9wdGlvbihvcHRpb246IFNkR3JpZE1hdGVyaWFsT3B0aW9uKSB7XHJcbiAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgIG9wdGlvbiA9IHRoaXMuI2luaXRDb25maWd1cmF0aW9uKG9wdGlvbik7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbiA9IG9wdGlvbjtcclxuICAgICAgLy8gdGhpcy4jbG9hZEZpbHRlclJlZ2lzdGVyKCk7XHJcbiAgICAgIHRoaXMuI2xvYWRDb21wbGV0ZWQgPSBmYWxzZTtcclxuICAgICAgLy8gdGhpcy4jcmVsb2FkLm5leHQoe1xyXG4gICAgICAvLyAgIGZvcmNlOiB0cnVlLFxyXG4gICAgICAvLyB9KTtcclxuICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMuZ3JpZENvbmZpZ3VyYXRpb25TZXJ2aWNlLmluaXQodGhpcy5rZXksIHRoaXMuZ3JpZE9wdGlvbik7XHJcbiAgICAgIHRoaXMuZ3JpZENvbmZpZ3VyYXRpb25PYnNlcnZlciA9IGNvbmZpZ3VyYXRpb24ub2JzZXJ2ZXI7XHJcbiAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZCgpO1xyXG4gICAgICB0aGlzLiNvcHRpb25DaGFuZ2VzLm5leHQodGhpcy5ncmlkT3B0aW9uKTtcclxuICAgIH1cclxuICB9XHJcbiAgI29wdGlvbkNoYW5nZXMgPSBuZXcgU3ViamVjdDxTZEdyaWRNYXRlcmlhbE9wdGlvbj4oKTtcclxuXHJcbiAgZ3JpZE9wdGlvbjogU2RHcmlkTWF0ZXJpYWxPcHRpb247XHJcbiAgI2xvY2FsSXRlbXM6IGFueVtdID0gW107XHJcbiAgaXRlbXM6IFNkR3JpZE1hdGVyaWFsSXRlbTxUPltdID0gW107XHJcbiAgc2VsZWN0ZWRJdGVtczogVFtdID0gW107XHJcbiAgdG90YWw6IG51bWJlcjtcclxuXHJcbiAgLy8gTG9hZGluZ1xyXG4gIGlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAvLyBQYWdpbmF0ZVxyXG4gIGlzSGlkZGVuUGFnaW5hdG9yID0gZmFsc2U7XHJcbiAgI3BhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBzZXQgcGFnaW5hdG9yKHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yKSB7XHJcbiAgICBpZiAocGFnaW5hdG9yICYmIHRoaXMuI3BhZ2luYXRvciAhPT0gcGFnaW5hdG9yKSB7XHJcbiAgICAgIHRoaXMuI3BhZ2luYXRvciA9IHBhZ2luYXRvcjtcclxuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChwYWdpbmF0b3IucGFnZS5waXBlKFxyXG4gICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLiNyZWxvYWQubmV4dCh7XHJcbiAgICAgICAgICAgIGZvcmNlOiBmYWxzZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICkuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU29ydGluZ1xyXG4gICNzb3J0OiBNYXRTb3J0O1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc2V0IHNvcnQoc29ydDogTWF0U29ydCkge1xyXG4gICAgaWYgKHNvcnQgJiYgdGhpcy4jc29ydCAhPT0gc29ydCkge1xyXG4gICAgICB0aGlzLiNzb3J0ID0gc29ydDtcclxuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChzb3J0LnNvcnRDaGFuZ2UucGlwZShcclxuICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy4jcmVsb2FkLm5leHQoe1xyXG4gICAgICAgICAgICBmb3JjZTogZmFsc2VcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApLnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEV4cG9ydFxyXG4gIEBWaWV3Q2hpbGQoU2RQb3B1cEV4cG9ydCkgc2RQb3B1cEV4cG9ydDogU2RQb3B1cEV4cG9ydDtcclxuXHJcbiAgLy8gU3ViIEluZm9ybWF0aW9uXHJcbiAgQENvbnRlbnRDaGlsZChTZE1hdGVyaWFsU3ViSW5mb3JtYXRpb25EZWZEaXJlY3RpdmUpIHNkU3ViSW5mb3JtYXRpb246IFNkTWF0ZXJpYWxTdWJJbmZvcm1hdGlvbkRlZkRpcmVjdGl2ZTtcclxuXHJcbiAgLy8gRW1wdHkgRGF0YVxyXG4gIEBDb250ZW50Q2hpbGQoU2RNYXRlcmlhbEVtcHR5RGF0YURlZkRpcmVjdGl2ZSkgc2RFbXB0eURhdGE6IFNkTWF0ZXJpYWxFbXB0eURhdGFEZWZEaXJlY3RpdmU7XHJcblxyXG4gIC8vIENlbGwgRGVmXHJcbiAgQENvbnRlbnRDaGlsZHJlbihTZE1hdGVyaWFsQ2VsbERlZkRpcmVjdGl2ZSkgc2RDZWxsRGVmcyA9IG5ldyBRdWVyeUxpc3Q8U2RNYXRlcmlhbENlbGxEZWZEaXJlY3RpdmU+KCk7XHJcbiAgY2VsbERlZjoge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogU2RNYXRlcmlhbENlbGxEZWZEaXJlY3RpdmVcclxuICB9ID0ge307XHJcblxyXG4gIC8vIEZvb3RlciBEZWZcclxuICBAQ29udGVudENoaWxkcmVuKFNkTWF0ZXJpYWxGb290ZXJEZWZEaXJlY3RpdmUpIHNkRm9vdGVyRGVmcyA9IG5ldyBRdWVyeUxpc3Q8U2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZT4oKTtcclxuICBmb290ZXJEZWY6IHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IFNkTWF0ZXJpYWxGb290ZXJEZWZEaXJlY3RpdmVcclxuICB9ID0ge307XHJcbiAgaGFzRm9vdGVyID0gZmFsc2U7XHJcblxyXG4gIC8vIEZpbHRlciBEZWZcclxuICBAQ29udGVudENoaWxkcmVuKFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmUpIHNkRmlsdGVyRGVmcyA9IG5ldyBRdWVyeUxpc3Q8U2RNYXRlcmlhbEZpbHRlckRlZkRpcmVjdGl2ZT4oKTtcclxuICBmaWx0ZXJEZWZzOiBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlW10gPSBbXTtcclxuXHJcbiAgLy8gRmlsdGVyXHJcbiAgY29sdW1uRmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgLy8gU3ViY3JpcHRpb25cclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICNyZWxvYWQgPSBuZXcgU3ViamVjdDx7XHJcbiAgICBmb3JjZTogYm9vbGVhbixcclxuICB9PigpO1xyXG4gIGlzRXhwb3J0aW5nID0gZmFsc2U7XHJcbiAgaXNTZWxlY3RBbGwgPSBmYWxzZTtcclxuICBleHBvcnRUaXRsZSA9ICdFeHBvcnQnO1xyXG4gICNsb2FkQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KEdSSURfTUFURVJJQUxfQ09ORklHKSBAT3B0aW9uYWwoKSBwdWJsaWMgY29uZmlndXJhdGlvbjogSVNkR3JpZE1hdGVyaWFsQ29uZmlndXJhdGlvbixcclxuICAgIHByaXZhdGUgZ3JpZENvbmZpZ3VyYXRpb25TZXJ2aWNlOiBTZEdyaWRDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogU2RFeHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbHVtblZhbHVlc1BpcGU6IFNkQ29sdW1uVmFsdWVzUGlwZSxcclxuICAgIHByaXZhdGUgZ3JpZEZpbHRlclNlcnZpY2U6IFNkR3JpZEZpbHRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVkaXRvckhhbmRsZXJDb2x1bW5QaXBlOiBTZEVkaXRvckhhbmRsZXJDb2x1bW5QaXBlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuI2luaXRDZWxsRGVmKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuI3JlbG9hZC5waXBlKFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcclxuICAgICAgc3dpdGNoTWFwKGFzeW5jIGRhdGEgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlckluZm8gPSB0aGlzLiNnZXRGaWx0ZXIoKTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLiNsb2FkKGZpbHRlckluZm8sICF0aGlzLiNsb2FkQ29tcGxldGVkIHx8IGRhdGEuZm9yY2UpO1xyXG4gICAgICAgIHRoaXMuI2xvYWRDb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSh0aGlzLiNyZW5kZXIpKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5zZENlbGxEZWZzLmNoYW5nZXMucGlwZShzdGFydFdpdGgoW10pKS5zdWJzY3JpYmUodGhpcy4jaW5pdENlbGxEZWYpKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5zZEZvb3RlckRlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0Rm9vdGVyRGVmKSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuc2RGaWx0ZXJEZWZzLmNoYW5nZXMucGlwZShzdGFydFdpdGgoW10pKS5zdWJzY3JpYmUodGhpcy4jaW5pdEZpbHRlckRlZikpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgdGhpcy4jb3B0aW9uQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmdyaWRPcHRpb24pKSxcclxuICAgICAgdGhpcy5zZEZpbHRlckRlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmZpbHRlckRlZnMpKV0pLnN1YnNjcmliZSgoYSkgPT4ge1xyXG4gICAgICAgIHRoaXMuI2xvYWRGaWx0ZXJSZWdpc3RlcigpO1xyXG4gICAgICB9KSk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgI2luaXRDZWxsRGVmID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jZWxsRGVmID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGNlbGxEZWYgb2YgdGhpcy5zZENlbGxEZWZzKSB7XHJcbiAgICAgIGlmIChjZWxsRGVmLnNkTWF0ZXJpYWxDZWxsRGVmKSB7XHJcbiAgICAgICAgdGhpcy5jZWxsRGVmW2NlbGxEZWYuc2RNYXRlcmlhbENlbGxEZWZdID0gY2VsbERlZjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI2luaXRGaWx0ZXJEZWYgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpbHRlckRlZnMgPSBbXTtcclxuICAgIGZvciAoY29uc3QgZmlsdGVyRGVmIG9mIHRoaXMuc2RGaWx0ZXJEZWZzKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyRGVmcy5wdXNoKGZpbHRlckRlZik7XHJcbiAgICB9XHJcbiAgICAvLyBpZiAodGhpcy5maWx0ZXJEZWZzPy5sZW5ndGgpIHtcclxuICAgIC8vICAgdGhpcy4jbG9hZEZpbHRlclJlZ2lzdGVyKCk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICAjaW5pdEZvb3RlckRlZiA9ICgpID0+IHtcclxuICAgIHRoaXMuZm9vdGVyRGVmID0ge307XHJcbiAgICB0aGlzLmhhc0Zvb3RlciA9IGZhbHNlO1xyXG4gICAgZm9yIChjb25zdCBmb290ZXJEZWYgb2YgdGhpcy5zZEZvb3RlckRlZnMpIHtcclxuICAgICAgaWYgKGZvb3RlckRlZi5zZE1hdGVyaWFsRm9vdGVyRGVmKSB7XHJcbiAgICAgICAgdGhpcy5oYXNGb290ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZm9vdGVyRGVmW2Zvb3RlckRlZi5zZE1hdGVyaWFsRm9vdGVyRGVmXSA9IGZvb3RlckRlZjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI2ZpbHRlckV4cG9ydEluZm8gPSAocGFnZU51bWJlcjogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZXF1ZXN0ID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1uRmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZmlsdGVyRGVmIH0gPSB0aGlzLmZpbHRlclJlZ2lzdGVyLmdldCgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcmF3Q29sdW1uRmlsdGVyOiBjb2x1bW5GaWx0ZXIgfHwge30sXHJcbiAgICAgIHJhd0V4dGVybmFsRmlsdGVyOiBleHRlcm5hbEZpbHRlciB8fCB7fSxcclxuICAgICAgcmF3RmlsdGVyRGVmOiBmaWx0ZXJEZWYgfHwge30sXHJcbiAgICAgIG9yZGVyQnk6IHRoaXMuI3NvcnQ/LmFjdGl2ZSB8fCAnJyxcclxuICAgICAgb3JkZXJEaXJlY3Rpb246IHRoaXMuI3NvcnQ/LmRpcmVjdGlvbiB8fCAnJyxcclxuICAgICAgcGFnZU51bWJlcixcclxuICAgICAgcGFnZVNpemUsXHJcbiAgICAgIGlzRXhwb3J0ZWQ6IHRydWVcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAjaW5pdENvbmZpZ3VyYXRpb24gPSAob3B0aW9uOiBTZEdyaWRNYXRlcmlhbE9wdGlvbikgPT4ge1xyXG4gICAgLy8gSW5pdCBwYWdpbmF0aW9uXHJcbiAgICBvcHRpb24ucGFnaW5hdGUgPSB7XHJcbiAgICAgIGhpZGRlbjogb3B0aW9uPy5wYWdpbmF0ZT8uaGlkZGVuLFxyXG4gICAgICBwYWdlU2l6ZTogb3B0aW9uPy5wYWdpbmF0ZT8ucGFnZVNpemUgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5wYWdpbmF0ZT8ucGFnZVNpemUgPz8gREVGQVVMVF9HUklEX01BVEVSSUFMX0NPTkZJRy5wYWdpbmF0ZT8ucGFnZVNpemUsXHJcbiAgICAgIHBhZ2VzOiBvcHRpb24/LnBhZ2luYXRlPy5wYWdlcyA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LnBhZ2luYXRlPy5wYWdlcyA/PyBERUZBVUxUX0dSSURfTUFURVJJQUxfQ09ORklHLnBhZ2luYXRlPy5wYWdlcyxcclxuICAgICAgc2hvd0ZpcnN0TGFzdEJ1dHRvbnM6IG9wdGlvbj8ucGFnaW5hdGU/LnNob3dGaXJzdExhc3RCdXR0b25zID8/IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIG9wdGlvbjtcclxuICB9XHJcblxyXG4gICNsb2FkRmlsdGVyUmVnaXN0ZXIgPSAoKSA9PiB7XHJcbiAgICAvLyBJbml0IGZpbHRlclxyXG4gICAgdGhpcy5maWx0ZXJSZWdpc3RlciA9IHRoaXMuZ3JpZEZpbHRlclNlcnZpY2UucmVnaXN0ZXIodGhpcy5ncmlkT3B0aW9uPy5maWx0ZXI/LmtleSwge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmdyaWRPcHRpb24/LmNvbHVtbnMsXHJcbiAgICAgIGV4dGVybmFsRmlsdGVyczogdGhpcy5ncmlkT3B0aW9uPy5maWx0ZXI/LmV4dGVybmFsRmlsdGVycyxcclxuICAgICAgZmlsdGVyRGVmczogdGhpcy5maWx0ZXJEZWZzXHJcbiAgICB9KTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5maWx0ZXJSZWdpc3Rlci5vYnNlcnZlci5waXBlKFxyXG4gICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgbWFwKChjb25maWd1cmF0aW9uKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSBjb25maWd1cmF0aW9uLmNvbHVtbkZpbHRlcjtcclxuICAgICAgICB0aGlzLiNwYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuICAgICAgICB0aGlzLiNyZWxvYWQubmV4dCh7XHJcbiAgICAgICAgICBmb3JjZTogZmFsc2UsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICAjZmlsdGVyTG9jYWwgPSAobG9jYWxJdGVtczogYW55W10sIGZpbHRlckluZm86IFNkR3JpZE1hdGVyaWFsRmlsdGVyUmVxdWVzdCkgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zIH0gPSB0aGlzLmdyaWRPcHRpb247XHJcbiAgICBjb25zdCB7IHJhd0NvbHVtbkZpbHRlciwgb3JkZXJCeSwgb3JkZXJEaXJlY3Rpb24sIHBhZ2VTaXplLCBwYWdlTnVtYmVyIH0gPSBmaWx0ZXJJbmZvO1xyXG4gICAgY29uc3QgaXRlbXMgPSBsb2NhbEl0ZW1zLmZpbHRlcihpdGVtID0+IHtcclxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgIGNvbnN0IHsgZmllbGQsIHR5cGUgfSA9IGNvbHVtbjtcclxuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZTogc3RyaW5nID0gKHJhd0NvbHVtbkZpbHRlcltmaWVsZF0gfHwgJycpLnRvU3RyaW5nKCkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgY29uc3QgY29sdW1uVmFsdWU6IHN0cmluZyA9IChpdGVtW2ZpZWxkXSB8fCAnJykudG9TdHJpbmcoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAoZmlsdGVyVmFsdWUpIHtcclxuICAgICAgICAgIGlmICghY29sdW1uVmFsdWUgJiYgdHlwZSAhPT0gJ2RhdGV0aW1lJyAmJiB0eXBlICE9PSAnZGF0ZScgJiYgdHlwZSAhPT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0eXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uVmFsdWUuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd2YWx1ZXMnKSB7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5WYWx1ZSAhPT0gZmlsdGVyVmFsdWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgY29uc3QgZlZhbHVlID0gK2ZpbHRlclZhbHVlLnJlcGxhY2UoJz49JywgJycpLnJlcGxhY2UoJzw9JywgJycpLnJlcGxhY2UoJz4nLCAnJykucmVwbGFjZSgnPCcsICcnKTtcclxuICAgICAgICAgICAgY29uc3QgY1ZhbHVlID0gK2NvbHVtblZhbHVlO1xyXG4gICAgICAgICAgICBpZiAoZlZhbHVlIHx8IGZWYWx1ZSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgIGlmICghY1ZhbHVlICYmIGNWYWx1ZSAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoZmlsdGVyVmFsdWUuaW5kZXhPZignPj0nKSA+IC0xICYmIGNWYWx1ZSA8IGZWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVmFsdWUuaW5kZXhPZignPD0nKSA+IC0xICYmIGNWYWx1ZSA+IGZWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVmFsdWUuaW5kZXhPZignPCcpID4gLTEgJiYgY1ZhbHVlID49IGZWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVmFsdWUuaW5kZXhPZignPicpID4gLTEgJiYgY1ZhbHVlIDw9IGZWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY1ZhbHVlICE9PSBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXJWYWx1ZSA9PT0gJzEnICYmIGNvbHVtblZhbHVlICE9PSAnMScgJiYgY29sdW1uVmFsdWUgIT09ICd0cnVlJykge1xyXG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJWYWx1ZSA9PT0gJzAnICYmIGNvbHVtblZhbHVlICE9PSAnMCcgJiYgY29sdW1uVmFsdWUgIT09ICdmYWxzZScpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGV0aW1lJyB8fCB0eXBlID09PSAnZGF0ZScgfHwgdHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyb20gPSByYXdDb2x1bW5GaWx0ZXJbZmllbGRdPy5mcm9tID8/IHJhd0NvbHVtbkZpbHRlcltmaWVsZF07XHJcbiAgICAgICAgICAgIGNvbnN0IHRvID0gcmF3Q29sdW1uRmlsdGVyW2ZpZWxkXT8udG8gPz8gcmF3Q29sdW1uRmlsdGVyW2ZpZWxkXTtcclxuICAgICAgICAgICAgY29uc3QgZnJvbURhdGUgPSBEYXRlLmJlZ2luKGZyb20pO1xyXG4gICAgICAgICAgICBjb25zdCB0b0RhdGUgPSBEYXRlLmVuZCh0byk7XHJcbiAgICAgICAgICAgIGlmIChmcm9tRGF0ZSB8fCB0b0RhdGUpIHtcclxuICAgICAgICAgICAgICBpZiAoIWNvbHVtblZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBjb25zdCBjb2x1bW5UaW1lID0gbmV3IERhdGUoY29sdW1uVmFsdWUpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICBjb25zdCBmcm9tRGF0ZVRpbWUgPSBmcm9tRGF0ZT8uZ2V0VGltZSgpIHx8IG51bGw7XHJcbiAgICAgICAgICAgICAgY29uc3QgdG9EYXRlVGltZSA9IHRvRGF0ZT8uZ2V0VGltZSgpIHx8IG51bGw7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChmcm9tRGF0ZVRpbWUgJiYgZnJvbURhdGVUaW1lID4gY29sdW1uVGltZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodG9EYXRlVGltZSAmJiBjb2x1bW5UaW1lID4gdG9EYXRlVGltZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0pO1xyXG4gICAgLy8gU29ydFxyXG4gICAgaWYgKG9yZGVyQnkgJiYgb3JkZXJEaXJlY3Rpb24pIHtcclxuICAgICAgY29uc3QgY29sdW1uID0gY29sdW1ucy5maW5kKGUgPT4gZS5maWVsZCA9PT0gb3JkZXJCeSk7XHJcbiAgICAgIGlmIChjb2x1bW4pIHtcclxuICAgICAgICBjb25zdCB7IHR5cGUsIGZpZWxkIH0gPSBjb2x1bW47XHJcbiAgICAgICAgaXRlbXMuc29ydCgoY3VycmVudCwgbmV4dCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoY3VycmVudFtmaWVsZF0gfHwgMCkgLSAobmV4dFtmaWVsZF0gfHwgMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RhdGUnIHx8IHR5cGUgPT09ICdkYXRldGltZScgfHwgdHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGQxID0gbmV3IERhdGUoY3VycmVudFtmaWVsZF0gfHwgJycpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgY29uc3QgZDIgPSBuZXcgRGF0ZShjdXJyZW50W2ZpZWxkXSB8fCAnJykuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gZDEgLSBkMjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHMxID0gKGN1cnJlbnRbZmllbGRdIHx8ICcnKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgY29uc3QgczIgPSAobmV4dFtmaWVsZF0gfHwgJycpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBpZiAoczEgPiBzMikge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChzMSA8IHMyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChvcmRlckRpcmVjdGlvbiA9PT0gJ2Rlc2MnKSB7XHJcbiAgICAgICAgICBpdGVtcy5yZXZlcnNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpdGVtczogaXRlbXMuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBpbmRleCA+PSBwYWdlTnVtYmVyICogcGFnZVNpemVcclxuICAgICAgICAgICYmIGluZGV4IDwgKHBhZ2VOdW1iZXIgKyAxKSAqIHBhZ2VTaXplO1xyXG4gICAgICB9KSxcclxuICAgICAgdG90YWw6IGl0ZW1zLmxlbmd0aFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gICNnZXRGaWx0ZXIgPSAoKTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZXF1ZXN0ID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1uRmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZmlsdGVyRGVmIH0gPSB0aGlzLmZpbHRlclJlZ2lzdGVyLmdldCgpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcmF3Q29sdW1uRmlsdGVyOiBjb2x1bW5GaWx0ZXIgfHwge30sXHJcbiAgICAgIHJhd0V4dGVybmFsRmlsdGVyOiBleHRlcm5hbEZpbHRlciB8fCB7fSxcclxuICAgICAgcmF3RmlsdGVyRGVmOiBmaWx0ZXJEZWYgfHwge30sXHJcbiAgICAgIG9yZGVyQnk6IHRoaXMuI3NvcnQ/LmFjdGl2ZSB8fCAnJyxcclxuICAgICAgb3JkZXJEaXJlY3Rpb246IHRoaXMuI3NvcnQ/LmRpcmVjdGlvbiB8fCAnJyxcclxuICAgICAgcGFnZU51bWJlcjogdGhpcy4jcGFnaW5hdG9yPy5wYWdlSW5kZXggfHwgMCxcclxuICAgICAgcGFnZVNpemU6IHRoaXMuI3BhZ2luYXRvcj8ucGFnZVNpemUgfHwgdGhpcy5ncmlkT3B0aW9uPy5wYWdpbmF0ZT8ucGFnZVNpemUgfHwgNTBcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNsb2FkID0gYXN5bmMgKGZpbHRlclJlcTogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZXF1ZXN0LCBmb3JjZTogYm9vbGVhbiA9IHRydWUpID0+IHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ3NlcnZlcicpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5ncmlkT3B0aW9uLml0ZW1zKGZpbHRlclJlcSk7XHJcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXN1bHQ7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGl0ZW1zOiBkYXRhPy5pdGVtcyB8fCBbXSxcclxuICAgICAgICAgIHRvdGFsOiBkYXRhPy50b3RhbCB8fCAwXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoJ0PDsyBs4buXaSB44bqjeSByYScpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBpdGVtczogW10sXHJcbiAgICAgICAgICB0b3RhbDogMFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChmb3JjZSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5ncmlkT3B0aW9uLml0ZW1zKCk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0cyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgdGhpcy4jbG9jYWxJdGVtcyA9IChhd2FpdCByZXN1bHRzKSB8fCBbXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSByZXN1bHRzIHx8IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuI2xvY2FsSXRlbXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZygnROG7ryBsaeG7h3Uga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgbeG6o25nJyk7XHJcbiAgICAgICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoJ0PDsyBs4buXaSB44bqjeSByYScpO1xyXG4gICAgICAgICAgdGhpcy4jbG9jYWxJdGVtcyA9IFtdO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHJldHVybiB0aGlzLiNmaWx0ZXJMb2NhbCh0aGlzLiNsb2NhbEl0ZW1zLCBmaWx0ZXJSZXEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI3JlbmRlciA9IGFzeW5jIChhcmdzOiB7IGl0ZW1zOiBhbnlbXSwgdG90YWw6IG51bWJlciB9KSA9PiB7XHJcbiAgICB0aGlzLnNkU2Nyb2xsPy5zY3JvbGxUb3AoKTtcclxuICAgIHRoaXMuaXRlbXMgPSBhcmdzPy5pdGVtcyB8fCBbXTtcclxuICAgIHRoaXMudG90YWwgPSBhcmdzPy50b3RhbCB8fCAwO1xyXG4gICAgLy8gdGhpcy5pc0hpZGRlblBhZ2luYXRvciA9IHRoaXMuZmlsdGVySW5mby5wYWdlTnVtYmVyID09PSAwICYmIHRoaXMudG90YWwgPD0gdGhpcy5maWx0ZXJJbmZvLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtOiBTZEl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5vcmlnaW5JdGVtID0geyAuLi5pdGVtIH07XHJcbiAgICB9KTtcclxuICAgIGF3YWl0IHRoaXMuZ3JpZE9wdGlvbj8ucmVsb2FkPy5vblJlbG9hZD8uKHRoaXMuaXRlbXMpO1xyXG4gICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRoaXMuaXRlbXMuZXZlcnkoZSA9PiBlLmlzU2VsZWN0ZWQpO1xyXG4gICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgcmVsb2FkID0gYXN5bmMgKGZvcmNlOiBib29sZWFuID0gdHJ1ZSkgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuI2xvYWQodGhpcy4jZ2V0RmlsdGVyKCksIGZvcmNlKTtcclxuICAgIHRoaXMuI3JlbmRlcihkYXRhKTtcclxuICB9XHJcblxyXG4gICNleHBvcnRlZEl0ZW1zID0gYXN5bmMgKHBhZ2VOdW1iZXI6IG51bWJlciA9IDAsIHBhZ2VTaXplOiBudW1iZXIgPSAxMDAwMCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/Lml0ZW1zKSB7XHJcbiAgICAgIC8vIGNvbnN0IGV4cG9ydGVkSXRlbXMgPSB0aGlzLmdyaWRPcHRpb24uZXhwb3J0Py5pdGVtcyh0aGlzLiNmaWx0ZXJFeHBvcnRJbmZvKHBhZ2VOdW1iZXIsIHBhZ2VTaXplKSk7XHJcbiAgICAgIGxldCByZXN1bHQgPSB0aGlzLmdyaWRPcHRpb24uZXhwb3J0Py5pdGVtcyh0aGlzLiNmaWx0ZXJFeHBvcnRJbmZvKHBhZ2VOdW1iZXIsIHBhZ2VTaXplKSk7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc09ic2VydmFibGU8YW55W10+KHJlc3VsdCkpIHtcclxuICAgICAgICByZXN1bHQgPSByZXN1bHQudG9Qcm9taXNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzT2JzZXJ2YWJsZTx7IGl0ZW1zOiBhbnlbXSwgdG90YWw6IG51bWJlciB9PihyZXN1bHQpKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRvUHJvbWlzZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhd2FpdCByZXN1bHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmaWx0ZXJJbmZvID0gdGhpcy4jZmlsdGVyRXhwb3J0SW5mbyhwYWdlTnVtYmVyLCBwYWdlU2l6ZSk7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ3NlcnZlcicpIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5ncmlkT3B0aW9uLml0ZW1zKGZpbHRlckluZm8pO1xyXG4gICAgICAgIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRvUHJvbWlzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzdWx0O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBleHBvcnRlZEl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIGlmICh0eXBlb2YgKHRoaXMuZ3JpZE9wdGlvbi5pdGVtcykgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLmdyaWRPcHRpb24uaXRlbXMoKTtcclxuICAgICAgICAgIGlmIChyZXN1bHRzIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICBleHBvcnRlZEl0ZW1zID0gYXdhaXQgcmVzdWx0cztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGV4cG9ydGVkSXRlbXMgPSByZXN1bHRzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBleHBvcnRlZEl0ZW1zID0gdGhpcy5ncmlkT3B0aW9uLml0ZW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy4jZmlsdGVyTG9jYWwoZXhwb3J0ZWRJdGVtcywgZmlsdGVySW5mbyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPiwgY29sdW1uczogc3RyaW5nW10pIHtcclxuICAgIG1vdmVJdGVtSW5BcnJheShjb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgI2FsbENvbHVtbnMgPSAoKTogU2RHcmlkTWF0ZXJpYWxDb2x1bW5bXSA9PiB7XHJcbiAgICBjb25zdCBjb2x1bW5zOiBTZEdyaWRNYXRlcmlhbENvbHVtbltdID0gW107XHJcbiAgICB0aGlzLmdyaWRPcHRpb24uY29sdW1ucy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKS5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2ltYWdlJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4/LmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpLmZvckVhY2goY2hpbGRDb2x1bW4gPT4ge1xyXG4gICAgICAgICAgaWYgKGNoaWxkQ29sdW1uLnR5cGUgPT09ICdpbWFnZScpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29sdW1ucy5wdXNoKGNoaWxkQ29sdW1uKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4tY29sJykge1xyXG4gICAgICAgIGNvbHVtbi5jaGlsZHJlbj8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkuZm9yRWFjaChjaGlsZENvbHVtbiA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hpbGRDb2x1bW4udHlwZSA9PT0gJ2ltYWdlJykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb2x1bW5zLnB1c2goY2hpbGRDb2x1bW4pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb2x1bW5zLnB1c2goY29sdW1uKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbHVtbnM7XHJcbiAgfVxyXG5cclxuICAjYWxsRXhwb3J0ZWRDb2x1bW5zID0gKCk6IFNkR3JpZE1hdGVyaWFsRXhwb3J0Q29sdW1uW10gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/LmNvbHVtbnM/LmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgI29uRXhwb3J0ID0gYXN5bmMgKGFyZ3M6IHsgZmlsZTogU2RFeHBvcnRGaWxlLCBjb2x1bW5zOiBTZEV4cG9ydENvbHVtbltdLCBpc0NTVjogYm9vbGVhbiB9KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB7IGZpbGUsIGlzQ1NWIH0gPSBhcmdzO1xyXG4gICAgICBsZXQgeyBjb2x1bW5zIH0gPSBhcmdzO1xyXG4gICAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5tYXhJdGVtc1BlclJlcXVlc3QgfHwgMTAwMDtcclxuICAgICAgY29uc3QgYmF0Y2ggPSB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uYmF0Y2ggfHwgMTtcclxuICAgICAgbGV0IHRvdGFsID0gdGhpcy50b3RhbDtcclxuICAgICAgbGV0IHBhZ2VOdW1iZXIgPSAwO1xyXG4gICAgICBsZXQgZXhwb3J0SXRlbXMgPSBbXTtcclxuICAgICAgdGhpcy5pc0V4cG9ydGluZyA9IHRydWU7XHJcbiAgICAgIGNvbnN0IGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gICAgICBsZXQgcHJvbWlzZXM6IFByb21pc2U8YW55W10gfCB7XHJcbiAgICAgICAgaXRlbXM6IGFueVtdO1xyXG4gICAgICAgIHRvdGFsOiBudW1iZXI7XHJcbiAgICAgIH0+W10gPSBbXTtcclxuICAgICAgY29uc3QgaGFuZGxlRGF0YSA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xyXG4gICAgICAgIHByb21pc2VzID0gW107XHJcbiAgICAgICAgZXhwb3J0SXRlbXMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XHJcbiAgICAgICAgICBpZiAoJ2l0ZW1zJyBpbiByZXN1bHQpIHtcclxuICAgICAgICAgICAgZXhwb3J0SXRlbXMgPSBbLi4uZXhwb3J0SXRlbXMsIC4uLnJlc3VsdC5pdGVtc107XHJcbiAgICAgICAgICAgIHRvdGFsID0gcmVzdWx0LnRvdGFsO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZXhwb3J0SXRlbXMgPSBbLi4uZXhwb3J0SXRlbXMsIC4uLnJlc3VsdF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24uZXhwb3J0Py5tYXBwaW5nKSB7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5ncmlkT3B0aW9uLmV4cG9ydC5tYXBwaW5nKGV4cG9ydEl0ZW1zKTtcclxuICAgICAgICAgIGlmIChyZXN1bHRzIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICBleHBvcnRJdGVtcyA9IGF3YWl0IHJlc3VsdHM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBleHBvcnRJdGVtcyA9IHJlc3VsdHM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRvdGFsUGFnZSA9IHRvdGFsIC8gcGFnZVNpemU7XHJcbiAgICAgICAgY29uc3QgcGVyY2VudCA9IE1hdGgucm91bmQoKHBhZ2VOdW1iZXIgLSAxKSAqIDEwMC4wIC8gdG90YWxQYWdlKTtcclxuICAgICAgICB0aGlzLmV4cG9ydFRpdGxlID0gYEV4cG9ydGluZy4uLiR7cGVyY2VudH0lYDtcclxuICAgICAgICBjb25zdCBhbGxDb2x1bW5zID0gdGhpcy4jYWxsQ29sdW1ucygpO1xyXG4gICAgICAgIGNvbnN0IGFsbEV4cG9ydGVkQ29sdW1ucyA9IHRoaXMuI2FsbEV4cG9ydGVkQ29sdW1ucygpO1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHBvcnRJdGVtcykge1xyXG4gICAgICAgICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcclxuICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IGFzeW5jIChleHBvcnRDb2x1bW46IFNkRXhwb3J0Q29sdW1uKSA9PiB7XHJcbiAgICAgICAgICAgIG9ialtleHBvcnRDb2x1bW4uZmllbGRdID0gaXRlbVtleHBvcnRDb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBhbGxDb2x1bW5zLmZpbmQoZSA9PiBlLmZpZWxkID09PSBleHBvcnRDb2x1bW4uZmllbGQpO1xyXG4gICAgICAgICAgICBjb25zdCBleHBvcnRlZENvbHVtbiA9IGFsbEV4cG9ydGVkQ29sdW1ucy5maW5kKGUgPT4gZS5maWVsZCA9PT0gZXhwb3J0Q29sdW1uLmZpZWxkKTtcclxuICAgICAgICAgICAgaWYgKGV4cG9ydGVkQ29sdW1uPy50cmFuc2Zvcm0pIHtcclxuICAgICAgICAgICAgICBvYmpbZXhwb3J0ZWRDb2x1bW4uZmllbGRdID0gZXhwb3J0ZWRDb2x1bW4udHJhbnNmb3JtKGl0ZW1bZXhwb3J0ZWRDb2x1bW4uZmllbGRdLCBpdGVtKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFjb2x1bW4pIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4nIHx8IGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4tY29sJykge1xyXG4gICAgICAgICAgICAgIGNvbHVtbj8uY2hpbGRyZW4uZm9yRWFjaChjaGlsZENvbHVtbiA9PiBoYW5kbGUoY2hpbGRDb2x1bW4pKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFjb2x1bW5zLnNvbWUoZSA9PiBlLmZpZWxkID09PSBjb2x1bW4uZmllbGQpKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4udHJhbnNmb3JtKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gY29sdW1uLnRyYW5zZm9ybShpdGVtW2NvbHVtbi5maWVsZF0sIGl0ZW0sIHtcclxuICAgICAgICAgICAgICAgIGlzRXhwb3J0OiB0cnVlXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybSBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gYXdhaXQgdHJhbnNmb3JtO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IHRyYW5zZm9ybTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBvYmpbY29sdW1uLmZpZWxkXSA/PyAnJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtW2NvbHVtbi5maWVsZF0gPT09IHVuZGVmaW5lZCB8fCBpdGVtW2NvbHVtbi5maWVsZF0gPT09IG51bGwgfHwgaXRlbVtjb2x1bW4uZmllbGRdID09PSAnJykge1xyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gJyc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdzdHJpbmcnIHx8IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGNlbGwgbMOgIHN0cmluZyBob+G6t2MgbnVtYmVyIHRow6wgZ8OhbiBi4bqxbmcgY2jDrW5oIG7Ds1xyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnYm9vbCcpIHtcclxuICAgICAgICAgICAgICAvLyBO4bq/dSBsw6AgYm9vbCB0aMOsIGfDoW4gYuG6sW5nIGdpw6EgdHLhu4sgdHJ1ZVZhbHVlIHbDoCBmYWxzZVZhbHVlIChu4bq/dSBjw7MpLCBt4bq3YyDEkeG7i25oIGzDoCBUUlVFL0ZBTFNFXHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW1bY29sdW1uLmZpZWxkXSkge1xyXG4gICAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4ub3B0aW9uPy5kaXNwbGF5T25UcnVlIHx8ICdUcnVlJztcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9ialtjb2x1bW4uZmllbGRdICE9PSB1bmRlZmluZWQgJiYgb2JqW2NvbHVtbi5maWVsZF0gIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gY29sdW1uLm9wdGlvbj8uZGlzcGxheU9uRmFsc2UgfHwgJ0ZhbHNlJztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRlID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHsgdHJhbnNmb3JtRGF0ZSB9ID0gY29sdW1uO1xyXG4gICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1EYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRlID0gdHJhbnNmb3JtRGF0ZShkYXRlLCBpdGVtKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgbMOgIGRhdGUgdGjDrCBjb252ZXJ0IHRoZW8gxJHDum5nIGZvcm1hdFxyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gRGF0ZS50b0Zvcm1hdChkYXRlLCAnZGQvTU0veXl5eScpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnZGF0ZXRpbWUnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGUgPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgICAgY29uc3QgeyB0cmFuc2Zvcm1EYXRlIH0gPSBjb2x1bW47XHJcbiAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybURhdGUpIHtcclxuICAgICAgICAgICAgICAgIGRhdGUgPSB0cmFuc2Zvcm1EYXRlKGRhdGUsIGl0ZW0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBO4bq/dSBsw6AgZGF0ZXRpbWUgdGjDrCBjb252ZXJ0IHRoZW8gxJHDum5nIGZvcm1hdFxyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gRGF0ZS50b0Zvcm1hdChkYXRlLCAnZGQvTU0veXl5eSBISDptbScpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgICAgICBsZXQgZGF0ZSA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgICBjb25zdCB7IHRyYW5zZm9ybURhdGUgfSA9IGNvbHVtbjtcclxuICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgZGF0ZSA9IHRyYW5zZm9ybURhdGUoZGF0ZSwgaXRlbSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCB0aW1lIHRow6wgY29udmVydCB0aGVvIMSRw7puZyBmb3JtYXRcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IERhdGUudG9Gb3JtYXQoZGF0ZSwgJ0hIOm1tJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSB7XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgbMOgIHZhbHVlcyB0aMOsIGzhuqV5IGdpw6EgdHLhu4sgY+G7p2EgdmFsdWUgxJHGsOG7o2MgY2jhu41uXHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBhd2FpdCB0aGlzLmNvbHVtblZhbHVlc1BpcGUudHJhbnNmb3JtKGl0ZW1bY29sdW1uLmZpZWxkXSwgY29sdW1uKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIC8vIHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLmZvckVhY2goaGFuZGxlKTtcclxuICAgICAgICAgIGZvciAoY29uc3QgZXhwb3J0Q29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICAgICAgYXdhaXQgaGFuZGxlKGV4cG9ydENvbHVtbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpdGVtcy5wdXNoKG9iaik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChwYWdlTnVtYmVyICogcGFnZVNpemUgPCB0b3RhbCkge1xyXG4gICAgICAgIHByb21pc2VzLnB1c2godGhpcy4jZXhwb3J0ZWRJdGVtcyhwYWdlTnVtYmVyLCBwYWdlU2l6ZSkpO1xyXG4gICAgICAgIHBhZ2VOdW1iZXIrKztcclxuICAgICAgICBpZiAocHJvbWlzZXMubGVuZ3RoIDwgYmF0Y2gpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCBoYW5kbGVEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByb21pc2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBhd2FpdCBoYW5kbGVEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFmaWxlPy5maWxlUGF0aCkge1xyXG4gICAgICAgIGlmIChpc0NTVikge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydENTVih7XHJcbiAgICAgICAgICAgIGNvbHVtbnMsXHJcbiAgICAgICAgICAgIGl0ZW1zLFxyXG4gICAgICAgICAgICBmaWxlTmFtZTogdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LmZpbGVOYW1lXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2hlZXRzOiB7XHJcbiAgICAgICAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgICBpdGVtczogYW55W10sXHJcbiAgICAgICAgICBmaWVsZHM6IHN0cmluZ1tdXHJcbiAgICAgICAgfVtdID0gW107XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LnNoZWV0cykpIHtcclxuICAgICAgICAgIGZvciAoY29uc3Qgc2hlZXQgb2YgdGhpcy5ncmlkT3B0aW9uLmV4cG9ydC5zaGVldHMpIHtcclxuICAgICAgICAgICAgaWYgKHNoZWV0Lm5hbWUgJiYgc2hlZXQuaXRlbXMgJiYgc2hlZXQuZmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2hlZXQuaXRlbXMpKSB7XHJcbiAgICAgICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGl0ZW1zOiBzaGVldC5pdGVtcyxcclxuICAgICAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHNcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGl0ZW1zOiBhd2FpdCBzaGVldC5pdGVtcygpLFxyXG4gICAgICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkc1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnQoe1xyXG4gICAgICAgICAgY29sdW1ucyxcclxuICAgICAgICAgIGl0ZW1zLFxyXG4gICAgICAgICAgZmlsZU5hbWU6IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5maWxlTmFtZSxcclxuICAgICAgICAgIHNoZWV0c1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0QnlUZW1wbGF0ZSh7XHJcbiAgICAgICAgZmlsZVBhdGg6IGZpbGUuZmlsZVBhdGgsXHJcbiAgICAgICAgZmlsZU5hbWU6IGZpbGUuZmlsZU5hbWUsXHJcbiAgICAgICAgY29sdW1ucyxcclxuICAgICAgICBpdGVtc1xyXG4gICAgICB9KTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuaXNFeHBvcnRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5leHBvcnRUaXRsZSA9IGBFeHBvcnRgO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkV4cG9ydCA9IGFzeW5jIChhcmdzOiB7IGZpbGU6IFNkRXhwb3J0RmlsZSwgY29sdW1uczogU2RFeHBvcnRDb2x1bW5bXSwgaXNDU1Y6IGJvb2xlYW4gfSkgPT4ge1xyXG4gICAgdGhpcy4jb25FeHBvcnQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlckNoYW5nZSA9ICgpID0+IHtcclxuICAgIHRoaXMuI3BhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xyXG4gICAgdGhpcy5yZWxvYWQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgb25FeHBhbmQgPSBhc3luYyAocm93RGF0YTogU2RHcmlkTWF0ZXJpYWxJdGVtPFQ+KSA9PiB7XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnN1YkluZm9ybWF0aW9uPy5hbHdheXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHJvd0RhdGEuaXNFeHBhbmRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHJvd0RhdGEuaXNFeHBhbmRlZCkge1xyXG4gICAgICByb3dEYXRhLmlzRXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZ3JpZE9wdGlvbj8uc3ViSW5mb3JtYXRpb24/Lm9uRXhwYW5kPy4ocm93RGF0YSk7XHJcbiAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbi5zdWJJbmZvcm1hdGlvbj8ubXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5pc0V4cGFuZGluZyA9IGl0ZW0uaXNFeHBhbmRlZCA9IGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICByb3dEYXRhLmlzRXhwYW5kaW5nID0gdHJ1ZTtcclxuICAgICAgZGF0YS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgcm93RGF0YS5leHBhbmREZXRhaWwgPSByZXM7XHJcbiAgICAgICAgcm93RGF0YS5pc0V4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgfSkuZmluYWxseSgoKSA9PiByb3dEYXRhLmlzRXhwYW5kaW5nID0gZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcm93RGF0YS5leHBhbmREZXRhaWwgPSBkYXRhO1xyXG4gICAgICByb3dEYXRhLmlzRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAocm93RGF0YTogU2RHcmlkTWF0ZXJpYWxJdGVtPFQ+KSA9PiB7XHJcbiAgICBpZiAocm93RGF0YT8uc2RHcm91cD8uaXRlbXM/Lmxlbmd0aCkge1xyXG4gICAgICByb3dEYXRhPy5zZEdyb3VwPy5pdGVtcy5mb3JFYWNoKGUgPT4gZS5pc1NlbGVjdGVkID0gcm93RGF0YS5pc1NlbGVjdGVkKTtcclxuICAgICAgdGhpcy5ncmlkT3B0aW9uLnNlbGVjdGlvbj8ub25TZWxlY3Q/Lihyb3dEYXRhLCB0aGlzLml0ZW1zLmZpbHRlcihlID0+IGUuaXNTZWxlY3RlZCkpO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsID0gdGhpcy5pdGVtcy5ldmVyeShlID0+IGUuaXNTZWxlY3RlZCk7XHJcbiAgICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24uc2VsZWN0aW9uPy5zaW5nbGUpIHtcclxuICAgICAgICB0aGlzLml0ZW1zLmZpbHRlcihlID0+IGUgIT09IHJvd0RhdGEpLmZvckVhY2goZSA9PiBlLmlzU2VsZWN0ZWQgPSBmYWxzZSk7XHJcbiAgICAgICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdyaWRPcHRpb24uc2VsZWN0aW9uPy5vblNlbGVjdD8uKHJvd0RhdGEsIHRoaXMuaXRlbXMuZmlsdGVyKGUgPT4gZS5pc1NlbGVjdGVkKSk7XHJcbiAgICAgIHRoaXMuaXNTZWxlY3RBbGwgPSB0aGlzLml0ZW1zLmV2ZXJ5KGUgPT4gZS5pc1NlbGVjdGVkKTtcclxuICAgICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RBbGwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLml0ZW1zPy5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICBpZiAoZS5zZWxlY3RhYmxlICYmICghdGhpcy5ncmlkT3B0aW9uPy5zZWxlY3Rpb24/LmFjdGlvbnM/Lmxlbmd0aCB8fCBlLmFjdGlvbnM/Lmxlbmd0aCkpIHtcclxuICAgICAgICBlLmlzU2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0QWxsO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbi5zZWxlY3Rpb24/Lm9uU2VsZWN0QWxsPy4odGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlLmlzU2VsZWN0ZWQpKTtcclxuICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICB9XHJcblxyXG4gIG9uQ2xlYXJTZWxlY3Rpb24gPSAoaXRlbXM/OiBTZEdyaWRNYXRlcmlhbEl0ZW08VD5bXSkgPT4ge1xyXG4gICAgaXRlbXMgPSBpdGVtcyB8fCB0aGlzLml0ZW1zO1xyXG4gICAgdGhpcy5pc1NlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgaXRlbXM/LmZvckVhY2goZSA9PiBlLmlzU2VsZWN0ZWQgPSBmYWxzZSk7XHJcbiAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICAjdXBkYXRlU2VsZWN0ZWRJdGVtcyA9ICgpID0+IHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKVxyXG4gICAgICAubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgIGNvbnN0IHtcclxuICAgICAgICAgIGlzU2VsZWN0ZWQsXHJcbiAgICAgICAgICBpc0V4cGFuZGVkLFxyXG4gICAgICAgICAgaXNFeHBhbmRpbmcsXHJcbiAgICAgICAgICBleHBhbmREZXRhaWwsXHJcbiAgICAgICAgICBlZGl0b3JFcnJvck1lc3NhZ2UsXHJcbiAgICAgICAgICBlZGl0b3JIYW5kbGVyQ29sdW1uLFxyXG4gICAgICAgICAgZWRpdG9ySGFuZGxlclJvdyxcclxuICAgICAgICAgIGVkaXRvclN0YXR1cyxcclxuICAgICAgICAgIG9yaWdpbkl0ZW0sXHJcbiAgICAgICAgICBzZElkLFxyXG4gICAgICAgICAgc2RWZXJzaW9uLFxyXG4gICAgICAgICAgLy8gR2nhu68gbOG6oWkgY8OhYyB0csaw4budbmcgdGjDtG5nIHRpbiBjaG8gc2VsZWN0YWJsZSAoYWN0aW9uLCBncm91cGVkQWN0aW9uLCBzZEdyb3VwLCBzZWxlY3RhYmxlKVxyXG4gICAgICAgICAgLi4ucmVzdWx0XHJcbiAgICAgICAgfSA9IGl0ZW07XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfSkgYXMgVFtdO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJGaWx0ZXIgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpbHRlclJlZ2lzdGVyLnJlbW92ZSgpO1xyXG4gICAgLy8gaWYgKHRoaXMuZ3JpZE9wdGlvbj8uZmlsdGVyPy5pbmxpbmVDb2x1bW4pIHtcclxuICAgIC8vICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSB7fTtcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuZ3JpZEZpbHRlcj8ub25DbGVhckZpbHRlcigpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmlsdGVyID0gKGFyZ3M6IHtcclxuICAgIGNvbHVtbkZpbHRlcjogYW55LFxyXG4gICAgZXh0ZXJuYWxGaWx0ZXI6IGFueSxcclxuICAgIGZpbHRlckRlZjogYW55XHJcbiAgfSkgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5GaWx0ZXIsIGV4dGVybmFsRmlsdGVyLCBmaWx0ZXJEZWYgfSA9IGFyZ3MgfHwge307XHJcbiAgICB0aGlzLmZpbHRlclJlZ2lzdGVyLnNldCh7XHJcbiAgICAgIGNvbHVtbkZpbHRlcixcclxuICAgICAgZXh0ZXJuYWxGaWx0ZXIsXHJcbiAgICAgIGZpbHRlckRlZlxyXG4gICAgfSlcclxuICAgIC8vIGlmICh0aGlzLmdyaWRPcHRpb24/LmZpbHRlcj8uaW5saW5lQ29sdW1uICYmIGFyZ3M/LmNvbHVtbkZpbHRlcikge1xyXG4gICAgLy8gICB0aGlzLmNvbHVtbkZpbHRlciA9IGFyZ3MuY29sdW1uRmlsdGVyO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5ncmlkRmlsdGVyPy5zZXRGaWx0ZXIoYXJncyk7XHJcbiAgfVxyXG5cclxuICBvbkNyZWF0ZSA9ICgpID0+IHtcclxuICAgIGNvbnN0IHsgdHlwZSwgZWRpdG9yLCBjb2x1bW5zIH0gPSB0aGlzLmdyaWRPcHRpb247XHJcbiAgICBpZiAoIWVkaXRvcj8uYWRkYWJsZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtOiBTZEdyaWRNYXRlcmlhbEl0ZW0gPSB7fTtcclxuICAgIC8vIEfDoW4gZ2nDoSB0cuG7iyBt4bq3YyDEkeG7i25oXHJcbiAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJykge1xyXG4gICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9ICcnO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnYm9vbCcpIHtcclxuICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgZWRpdG9yLm9uQWRkPy4oaXRlbSwgdGhpcy4jbG9jYWxJdGVtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlZGl0b3Iub25BZGQ/LihpdGVtLCB0aGlzLml0ZW1zKTtcclxuICAgIH1cclxuICAgIC8vIMSQxrBhIGl0ZW0gbMOqbiBkw7JuZyDEkeG6p3UgdGnDqm4gbuG6v3UgdHlwZSBraMOhYyBwb3B1cFxyXG4gICAgaWYgKGVkaXRvci50eXBlICE9PSAncG9wdXAnKSB7XHJcbiAgICAgIGlmIChlZGl0b3IuYWRkVG9MYXN0KSB7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSBbLi4udGhpcy4jbG9jYWxJdGVtcywgaXRlbV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtcywgaXRlbV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSBbaXRlbSwgLi4udGhpcy4jbG9jYWxJdGVtc107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXRlbXMgPSBbaXRlbSwgLi4udGhpcy5pdGVtc107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGl0ZW0uZWRpdG9yU3RhdHVzID0gJ2NyZWF0ZSc7XHJcbiAgICBpdGVtLmVkaXRvckhhbmRsZXJSb3cgPSB7XHJcbiAgICAgIHRlbXBvcmFyeTogeyAuLi5pdGVtIH1cclxuICAgIH07XHJcbiAgfVxyXG4gIG9uVXBkYXRlID0gKGl0ZW06IFNkSXRlbSkgPT4ge1xyXG4gICAgY29uc3QgeyBlZGl0b3IgfSA9IHRoaXMuZ3JpZE9wdGlvbjtcclxuICAgIGl0ZW0uZWRpdG9yU3RhdHVzID0gJ3VwZGF0ZSc7XHJcbiAgICBpdGVtLmVkaXRvckhhbmRsZXJSb3cgPSB7XHJcbiAgICAgIC4uLml0ZW0uZWRpdG9ySGFuZGxlclJvdyxcclxuICAgICAgdGVtcG9yYXJ5OiB7IC4uLml0ZW0gfVxyXG4gICAgfTtcclxuICAgIC8vIHRoaXMuZ2VuZXJhdGVFZGl0b3JIYW5sZGVyKGl0ZW0pO1xyXG4gICAgaWYgKGVkaXRvci50eXBlID09PSAncG9wdXAnKSB7XHJcbiAgICAgIC8vIFjhu60gbMO9IGNhc2UgcG9wdXBcclxuICAgICAgLy8gdGhpcy5zZEdyaWRQb3B1cEVkaXRvci5vcGVuKGl0ZW0sIGNvbHVtbnMsIGlzTW9kaWZpZWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBvblNhdmUgPSBhc3luYyAoaXRlbTogU2RHcmlkTWF0ZXJpYWxJdGVtPFQ+KSA9PiB7XHJcbiAgICBpZiAoaXRlbS5lZGl0b3JIYW5kbGVyUm93LnNhdmluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGVkaXRvciB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgdHJ5IHtcclxuICAgICAgaXRlbS5lZGl0b3JIYW5kbGVyUm93LnNhdmluZyA9IHRydWU7XHJcbiAgICAgIGlmIChlZGl0b3IudmFsaWRhdGUpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBlZGl0b3IudmFsaWRhdGUoaXRlbSwgdGhpcy5pdGVtcy5pbmRleE9mKGl0ZW0pKTtcclxuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHJlc3VsdDtcclxuICAgICAgICAgIGlmIChtZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG1lc3NhZ2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgdGhyb3cgcmVzdWx0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoZWRpdG9yLm9uU2F2ZSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGVkaXRvci5vblNhdmUoaXRlbSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgIGF3YWl0IHJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpdGVtLmVkaXRvclN0YXR1cyA9PT0gJ2NyZWF0ZScgJiYgZWRpdG9yLnR5cGUgPT09ICdwb3B1cCcpIHtcclxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKDAsIDAsIGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0aGlzLnZpZXdJdGVtcy5zcGxpY2UoMCwgMCwgaXRlbSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGl0ZW0uZWRpdG9yU3RhdHVzID0gdW5kZWZpbmVkO1xyXG4gICAgICAvLyB0aGlzLmdlbmVyYXRlRWRpdG9ySGFubGRlcihpdGVtKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoZXJyKTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIGl0ZW0uZWRpdG9ySGFuZGxlclJvdy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvbkNhbmNlbCA9IChpdGVtOiBTZEdyaWRNYXRlcmlhbEl0ZW08VD4pID0+IHtcclxuICAgIGNvbnN0IHsgZWRpdG9yIH0gPSB0aGlzLmdyaWRPcHRpb247XHJcbiAgICBpZiAoZWRpdG9yLnR5cGUgPT09ICdpbmxpbmUnKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgIGNvbnN0IGlkeDIgPSB0aGlzLiNsb2NhbEl0ZW1zLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgICAgdGhpcy4jbG9jYWxJdGVtcy5zcGxpY2UoaWR4MiwgMSk7XHJcbiAgICAgICAgdGhpcy4jbG9jYWxJdGVtcyA9IFsuLi50aGlzLiNsb2NhbEl0ZW1zXTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpZHgxID0gdGhpcy5pdGVtcy5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpZHgxLCAxKTtcclxuICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zXTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgZWRpdG9yPy5vbkNhbmNlbD8uKGl0ZW0sIHRoaXMuI2xvY2FsSXRlbXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGVkaXRvcj8ub25DYW5jZWw/LihpdGVtLCB0aGlzLml0ZW1zKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChlZGl0b3IudHlwZSA9PT0gJ2ZvY3VzJykge1xyXG4gICAgICBpZiAoaXRlbS5lZGl0b3JTdGF0dXMgPT09ICdjcmVhdGUnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgICBjb25zdCBpZHgyID0gdGhpcy4jbG9jYWxJdGVtcy5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICAgICAgdGhpcy4jbG9jYWxJdGVtcy5zcGxpY2UoaWR4MiwgMSk7XHJcbiAgICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gWy4uLnRoaXMuI2xvY2FsSXRlbXNdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpZHgxID0gdGhpcy5pdGVtcy5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGlkeDEsIDEpO1xyXG4gICAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihpdGVtLCBpdGVtLmVkaXRvckhhbmRsZXJSb3cudGVtcG9yYXJ5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaXRlbS5lZGl0b3JTdGF0dXMgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIG9uUmVtb3ZlID0gYXN5bmMgKGl0ZW06IFNkR3JpZE1hdGVyaWFsSXRlbTxUPikgPT4ge1xyXG4gICAgY29uc3QgeyBlZGl0b3IgfSA9IHRoaXMuZ3JpZE9wdGlvbjtcclxuICAgIGlmIChlZGl0b3I/LmJlZm9yZVJlbW92ZSkge1xyXG4gICAgICBjb25zdCBiZWZvcmVSZW1vdmUgPSBlZGl0b3I/LmJlZm9yZVJlbW92ZShpdGVtKTtcclxuICAgICAgaWYgKGJlZm9yZVJlbW92ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBiZWZvcmVSZW1vdmU7XHJcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCFiZWZvcmVSZW1vdmUpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChlZGl0b3IudHlwZSA9PT0gJ2lubGluZScpIHtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgY29uc3QgaWR4MiA9IHRoaXMuI2xvY2FsSXRlbXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zLnNwbGljZShpZHgyLCAxKTtcclxuICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gWy4uLnRoaXMuI2xvY2FsSXRlbXNdO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlkeDEgPSB0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGlkeDEsIDEpO1xyXG4gICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuaXRlbXNdO1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICBlZGl0b3I/Lm9uUmVtb3ZlPy4oaXRlbSwgdGhpcy4jbG9jYWxJdGVtcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZWRpdG9yPy5vblJlbW92ZT8uKGl0ZW0sIHRoaXMuaXRlbXMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkID0gKGlkeDogbnVtYmVyLCBpdGVtOiBUKSA9PiB7XHJcbiAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPiBpZHgpIHtcclxuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaWR4LCAwLCBpdGVtKTtcclxuICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtcywgaXRlbV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGUgPSAoaWR4OiBudW1iZXIsIGl0ZW06IFQpID0+IHtcclxuICAgIGlmICh0aGlzLml0ZW1zW2lkeF0pIHtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLml0ZW1zW2lkeF0sIGl0ZW0pO1xyXG4gICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuaXRlbXNdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlID0gKGlkeDogbnVtYmVyKSA9PiB7XHJcbiAgICBpZiAodGhpcy5pdGVtc1tpZHhdKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWZyZXNoSXRlbSA9IChpZHg6IG51bWJlcikgPT4ge1xyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXNbaWR4XTtcclxuICAgIHRoaXMuZWRpdG9ySGFuZGxlckNvbHVtblBpcGUudHJhbnNmb3JtKGl0ZW0uc2RWZXJzaW9uLCBpdGVtLCB0aGlzLmdyaWRPcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVkaXRlZEl0ZW1zKCk6IChUICYgeyBlZGl0b3JFcnJvck1lc3NhZ2U6IHN0cmluZyB9KVtdIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IHtcclxuICAgICAgaWYgKCFpdGVtLm9yaWdpbkl0ZW0pIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoT2JqZWN0LmtleXMoaXRlbS5vcmlnaW5JdGVtKS5zb21lKGtleSA9PiBpdGVtLm9yaWdpbkl0ZW1ba2V5XSAhPT0gaXRlbVtrZXldKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pLm1hcChpdGVtID0+IHtcclxuICAgICAgY29uc3Qge1xyXG4gICAgICAgIGVkaXRvclN0YXR1cyxcclxuICAgICAgICBlZGl0b3JIYW5kbGVyUm93LFxyXG4gICAgICAgIGVkaXRvckhhbmRsZXJDb2x1bW4sXHJcbiAgICAgICAgZWRpdG9yRXJyb3JNZXNzYWdlLFxyXG4gICAgICAgIGV4cGFuZERldGFpbCxcclxuICAgICAgICBpc0V4cGFuZGVkLFxyXG4gICAgICAgIGlzRXhwYW5kaW5nLFxyXG4gICAgICAgIGlzU2VsZWN0ZWQsXHJcbiAgICAgICAgb3JpZ2luSXRlbSxcclxuICAgICAgICBzZElkLFxyXG4gICAgICAgIHNkVmVyc2lvbixcclxuICAgICAgICBzZWxlY3RhYmxlLFxyXG4gICAgICAgIGFjdGlvbnMsXHJcbiAgICAgICAgZ3JvdXBlZEFjdGlvbnMsXHJcbiAgICAgICAgc2RHcm91cCxcclxuICAgICAgICB0ZW1wb3JhcnksXHJcbiAgICAgICAgLi4ucmVzdWx0IH0gPSBpdGVtO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnJlc3VsdCxcclxuICAgICAgICBlZGl0b3JFcnJvck1lc3NhZ2VcclxuICAgICAgfSBhcyBhbnk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBncmlkSXRlbXMoKTogVFtdIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLm1hcChpdGVtID0+IHtcclxuICAgICAgY29uc3Qge1xyXG4gICAgICAgIGVkaXRvclN0YXR1cyxcclxuICAgICAgICBlZGl0b3JIYW5kbGVyUm93LFxyXG4gICAgICAgIGVkaXRvckhhbmRsZXJDb2x1bW4sXHJcbiAgICAgICAgZXhwYW5kRGV0YWlsLFxyXG4gICAgICAgIGlzRXhwYW5kZWQsXHJcbiAgICAgICAgaXNFeHBhbmRpbmcsXHJcbiAgICAgICAgaXNTZWxlY3RlZCxcclxuICAgICAgICBvcmlnaW5JdGVtLFxyXG4gICAgICAgIHNkSWQsXHJcbiAgICAgICAgc2RWZXJzaW9uLFxyXG4gICAgICAgIHNlbGVjdGFibGUsXHJcbiAgICAgICAgYWN0aW9ucyxcclxuICAgICAgICBncm91cGVkQWN0aW9ucyxcclxuICAgICAgICBzZEdyb3VwLFxyXG4gICAgICAgIHRlbXBvcmFyeSxcclxuICAgICAgICAuLi5yZXN1bHQgfSA9IGl0ZW07XHJcbiAgICAgIHJldHVybiByZXN1bHQgYXMgVDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxvY2FsSXRlbXMoKTogVFtdIHtcclxuICAgIHJldHVybiB0aGlzLiNsb2NhbEl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxvY2FsR3JpZEl0ZW1zKCk6IFRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy4jbG9jYWxJdGVtcy5tYXAoaXRlbSA9PiB7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICBlZGl0b3JTdGF0dXMsXHJcbiAgICAgICAgZWRpdG9ySGFuZGxlclJvdyxcclxuICAgICAgICBlZGl0b3JIYW5kbGVyQ29sdW1uLFxyXG4gICAgICAgIGV4cGFuZERldGFpbCxcclxuICAgICAgICBpc0V4cGFuZGVkLFxyXG4gICAgICAgIGlzRXhwYW5kaW5nLFxyXG4gICAgICAgIGlzU2VsZWN0ZWQsXHJcbiAgICAgICAgb3JpZ2luSXRlbSxcclxuICAgICAgICBzZElkLFxyXG4gICAgICAgIHNkVmVyc2lvbixcclxuICAgICAgICBzZWxlY3RhYmxlLFxyXG4gICAgICAgIGFjdGlvbnMsXHJcbiAgICAgICAgZ3JvdXBlZEFjdGlvbnMsXHJcbiAgICAgICAgc2RHcm91cCxcclxuICAgICAgICB0ZW1wb3JhcnksXHJcbiAgICAgICAgLi4ucmVzdWx0IH0gPSBpdGVtO1xyXG4gICAgICByZXR1cm4gcmVzdWx0IGFzIFQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRldGVjdENoYW5nZXMgPSAoKSA9PiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gIGdldCBpc0VkaXRpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5zb21lKGUgPT4gZS5lZGl0b3JTdGF0dXMgIT09IHVuZGVmaW5lZCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1062
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1tYXRlcmlhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2dyaWQtbWF0ZXJpYWwvIiwic291cmNlcyI6WyJzcmMvbGliL2dyaWQtbWF0ZXJpYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUVULFFBQVEsRUFDUixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBR1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQVE3QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLDRCQUE0QixFQUU3QixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUErQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZ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WTttQkFldEIsU0FBUyxTQUFDLE9BQU87NEJBY2pCLFNBQVMsU0FBQyxhQUFhOytCQUd2QixZQUFZLFNBQUMsb0NBQW9DOzBCQUdqRCxZQUFZLFNBQUMsK0JBQStCO3lCQUc1QyxlQUFlLFNBQUMsMEJBQTBCOzJCQU0xQyxlQUFlLFNBQUMsNEJBQTRCOzJCQU81QyxlQUFlLFNBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgSW5qZWN0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBRdWVyeUxpc3QsXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveSxcclxuICBDb250ZW50Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcclxuaW1wb3J0IHtcclxuICBTZEdyaWRNYXRlcmlhbEZpbHRlclJlZ2lzdGVyLFxyXG4gIFNkR3JpZE1hdGVyaWFsRmlsdGVyUmVxdWVzdFxyXG59IGZyb20gJy4vc2VydmljZXMvZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIFNkR3JpZE1hdGVyaWFsT3B0aW9uXHJcbn0gZnJvbSAnLi9tb2RlbHMvZ3JpZC1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEdSSURfTUFURVJJQUxfQ09ORklHLFxyXG4gIERFRkFVTFRfR1JJRF9NQVRFUklBTF9DT05GSUcsXHJcbiAgSVNkR3JpZE1hdGVyaWFsQ29uZmlndXJhdGlvblxyXG59IGZyb20gJy4vbW9kZWxzL2dyaWQtY29uZmlndXJhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2ROb3RpZnlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFNkR3JpZE1hdGVyaWFsQ29sdW1uIH0gZnJvbSAnLi9tb2RlbHMvZ3JpZC1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsQ2VsbERlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC1tYXRlcmlhbC1jZWxsLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2RHcmlkRmlsdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtZmlsdGVyLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsU3ViSW5mb3JtYXRpb25EZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtc3ViLWluZm9ybWF0aW9uLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsRm9vdGVyRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NkLW1hdGVyaWFsLWZvb3Rlci1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbEVtcHR5RGF0YURlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC1tYXRlcmlhbC1lbXB0eS1kYXRhLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTZFBvcHVwRXhwb3J0IH0gZnJvbSAnLi9jb21wb25lbnRzL3BvcHVwLWV4cG9ydC9wb3B1cC1leHBvcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2RFeHBvcnRDb2x1bW4sIFNkRXhwb3J0RmlsZSwgU2RFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9leHBvcnQnO1xyXG5pbXBvcnQgeyBTZEdyaWRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9tb2RlbHMvZ3JpZC1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBTZEdyaWRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZ3JpZC1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbEV4cG9ydENvbHVtbiB9IGZyb20gJy4vbW9kZWxzL2dyaWQtZXhwb3J0Lm1vZGVsJztcclxuaW1wb3J0IHsgU2RRdWlja0FjdGlvbiB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvcXVpY2stYWN0aW9uJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxJdGVtLCBTZEl0ZW0gfSBmcm9tICcuL21vZGVscy9ncmlkLm1vZGVsJztcclxuaW1wb3J0IHsgU2RDb2x1bW5WYWx1ZXNQaXBlIH0gZnJvbSAnLi9waXBlcy9jb2x1bW4tdmFsdWVzLnBpcGUnO1xyXG5pbXBvcnQgeyBTZEVkaXRvckhhbmRsZXJDb2x1bW5QaXBlIH0gZnJvbSAnLi9waXBlcy9lZGl0b3ItaGFuZGxlci1jb2x1bW4ucGlwZSc7XHJcbmltcG9ydCB7IFNkU2Nyb2xsRGlyZWN0aXZlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9jb21tb24nO1xyXG5pbXBvcnQgeyBTZEdyaWRGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZ3JpZC1tYXRlcmlhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtbWF0ZXJpYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dyaWQtbWF0ZXJpYWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdkZXRhaWxFeHBhbmQnLCBbXHJcbiAgICAgIHN0YXRlKCdjb2xsYXBzZWQnLCBzdHlsZSh7IGhlaWdodDogJzAnLCBtaW5IZWlnaHQ6ICcwJywgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxyXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonLCB2aXNpYmlsaXR5OiAndmlzaWJsZScgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkR3JpZE1hdGVyaWFsPFQgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoU2RTY3JvbGxEaXJlY3RpdmUpIHNkU2Nyb2xsOiBTZFNjcm9sbERpcmVjdGl2ZTtcclxuICBmaWx0ZXJSZWdpc3RlcjogU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZWdpc3RlcjtcclxuICBrZXkgPSB1dWlkLnY0KCk7XHJcbiAgZ3JpZENvbmZpZ3VyYXRpb25PYnNlcnZlcjogT2JzZXJ2YWJsZTxTZEdyaWRDb25maWd1cmF0aW9uPjtcclxuICBAVmlld0NoaWxkKFNkUXVpY2tBY3Rpb24pIHF1aWNrQWN0aW9uOiBTZFF1aWNrQWN0aW9uO1xyXG5cclxuICBncmlkRmlsdGVyOiBTZEdyaWRGaWx0ZXI7XHJcbiAgQFZpZXdDaGlsZChTZEdyaWRGaWx0ZXIpIHNldCBfZ3JpZEZpbHRlcihncmlkRmlsdGVyOiBTZEdyaWRGaWx0ZXIpIHtcclxuICAgIGlmIChncmlkRmlsdGVyICYmIHRoaXMuZ3JpZEZpbHRlciAhPT0gZ3JpZEZpbHRlcikge1xyXG4gICAgICB0aGlzLmdyaWRGaWx0ZXIgPSBncmlkRmlsdGVyO1xyXG4gICAgICAvLyB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKGdyaWRGaWx0ZXIuZmlsdGVyQ2hhbmdlLnBpcGUoXHJcbiAgICAgIC8vICAgZmlsdGVyKHJlbG9hZCA9PiByZWxvYWQpLFxyXG4gICAgICAvLyAgIGRlYm91bmNlVGltZSg1MDApLFxyXG4gICAgICAvLyAgIG1hcCgoKSA9PiB7XHJcbiAgICAgIC8vICAgICB0aGlzLiNwYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuICAgICAgLy8gICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgLy8gICAgICAgZm9yY2U6IGZhbHNlLFxyXG4gICAgICAvLyAgICAgICBzb3VyY2U6ICdGSUxURVInXHJcbiAgICAgIC8vICAgICB9KTtcclxuICAgICAgLy8gICB9KSxcclxuICAgICAgLy8gKS5zdWJzY3JpYmUoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgb3B0aW9uKG9wdGlvbjogU2RHcmlkTWF0ZXJpYWxPcHRpb24pIHtcclxuICAgIGlmIChvcHRpb24pIHtcclxuICAgICAgb3B0aW9uID0gdGhpcy4jaW5pdENvbmZpZ3VyYXRpb24ob3B0aW9uKTtcclxuICAgICAgdGhpcy5ncmlkT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgICAvLyB0aGlzLiNsb2FkRmlsdGVyUmVnaXN0ZXIoKTtcclxuICAgICAgdGhpcy4jbG9hZENvbXBsZXRlZCA9IGZhbHNlO1xyXG4gICAgICAvLyB0aGlzLiNyZWxvYWQubmV4dCh7XHJcbiAgICAgIC8vICAgZm9yY2U6IHRydWUsXHJcbiAgICAgIC8vIH0pO1xyXG4gICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5ncmlkQ29uZmlndXJhdGlvblNlcnZpY2UuaW5pdCh0aGlzLmtleSwgdGhpcy5ncmlkT3B0aW9uKTtcclxuICAgICAgdGhpcy5ncmlkQ29uZmlndXJhdGlvbk9ic2VydmVyID0gY29uZmlndXJhdGlvbi5vYnNlcnZlcjtcclxuICAgICAgY29uZmlndXJhdGlvbi5sb2FkKCk7XHJcbiAgICAgIHRoaXMuI29wdGlvbkNoYW5nZXMubmV4dCh0aGlzLmdyaWRPcHRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuICAjb3B0aW9uQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PFNkR3JpZE1hdGVyaWFsT3B0aW9uPigpO1xyXG5cclxuICBncmlkT3B0aW9uOiBTZEdyaWRNYXRlcmlhbE9wdGlvbjtcclxuICAjbG9jYWxJdGVtczogYW55W10gPSBbXTtcclxuICBpdGVtczogU2RHcmlkTWF0ZXJpYWxJdGVtPFQ+W10gPSBbXTtcclxuICBzZWxlY3RlZEl0ZW1zOiBUW10gPSBbXTtcclxuICB0b3RhbDogbnVtYmVyO1xyXG5cclxuICAvLyBMb2FkaW5nXHJcbiAgaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIC8vIFBhZ2luYXRlXHJcbiAgaXNIaWRkZW5QYWdpbmF0b3IgPSBmYWxzZTtcclxuICAjcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHNldCBwYWdpbmF0b3IocGFnaW5hdG9yOiBNYXRQYWdpbmF0b3IpIHtcclxuICAgIGlmIChwYWdpbmF0b3IgJiYgdGhpcy4jcGFnaW5hdG9yICE9PSBwYWdpbmF0b3IpIHtcclxuICAgICAgdGhpcy4jcGFnaW5hdG9yID0gcGFnaW5hdG9yO1xyXG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHBhZ2luYXRvci5wYWdlLnBpcGUoXHJcbiAgICAgICAgbWFwKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgZm9yY2U6IGZhbHNlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KSxcclxuICAgICAgKS5zdWJzY3JpYmUoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBTb3J0aW5nXHJcbiAgI3NvcnQ6IE1hdFNvcnQ7XHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzZXQgc29ydChzb3J0OiBNYXRTb3J0KSB7XHJcbiAgICBpZiAoc29ydCAmJiB0aGlzLiNzb3J0ICE9PSBzb3J0KSB7XHJcbiAgICAgIHRoaXMuI3NvcnQgPSBzb3J0O1xyXG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHNvcnQuc29ydENoYW5nZS5waXBlKFxyXG4gICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLiNyZWxvYWQubmV4dCh7XHJcbiAgICAgICAgICAgIGZvcmNlOiBmYWxzZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICkuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRXhwb3J0XHJcbiAgQFZpZXdDaGlsZChTZFBvcHVwRXhwb3J0KSBzZFBvcHVwRXhwb3J0OiBTZFBvcHVwRXhwb3J0O1xyXG5cclxuICAvLyBTdWIgSW5mb3JtYXRpb25cclxuICBAQ29udGVudENoaWxkKFNkTWF0ZXJpYWxTdWJJbmZvcm1hdGlvbkRlZkRpcmVjdGl2ZSkgc2RTdWJJbmZvcm1hdGlvbjogU2RNYXRlcmlhbFN1YkluZm9ybWF0aW9uRGVmRGlyZWN0aXZlO1xyXG5cclxuICAvLyBFbXB0eSBEYXRhXHJcbiAgQENvbnRlbnRDaGlsZChTZE1hdGVyaWFsRW1wdHlEYXRhRGVmRGlyZWN0aXZlKSBzZEVtcHR5RGF0YTogU2RNYXRlcmlhbEVtcHR5RGF0YURlZkRpcmVjdGl2ZTtcclxuXHJcbiAgLy8gQ2VsbCBEZWZcclxuICBAQ29udGVudENoaWxkcmVuKFNkTWF0ZXJpYWxDZWxsRGVmRGlyZWN0aXZlKSBzZENlbGxEZWZzID0gbmV3IFF1ZXJ5TGlzdDxTZE1hdGVyaWFsQ2VsbERlZkRpcmVjdGl2ZT4oKTtcclxuICBjZWxsRGVmOiB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBTZE1hdGVyaWFsQ2VsbERlZkRpcmVjdGl2ZVxyXG4gIH0gPSB7fTtcclxuXHJcbiAgLy8gRm9vdGVyIERlZlxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZSkgc2RGb290ZXJEZWZzID0gbmV3IFF1ZXJ5TGlzdDxTZE1hdGVyaWFsRm9vdGVyRGVmRGlyZWN0aXZlPigpO1xyXG4gIGZvb3RlckRlZjoge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZVxyXG4gIH0gPSB7fTtcclxuICBoYXNGb290ZXIgPSBmYWxzZTtcclxuXHJcbiAgLy8gRmlsdGVyIERlZlxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RNYXRlcmlhbEZpbHRlckRlZkRpcmVjdGl2ZSkgc2RGaWx0ZXJEZWZzID0gbmV3IFF1ZXJ5TGlzdDxTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlPigpO1xyXG4gIGZpbHRlckRlZnM6IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmVbXSA9IFtdO1xyXG5cclxuICAvLyBGaWx0ZXJcclxuICBjb2x1bW5GaWx0ZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAvLyBTdWJjcmlwdGlvblxyXG4gICNzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgI3JlbG9hZCA9IG5ldyBTdWJqZWN0PHtcclxuICAgIGZvcmNlOiBib29sZWFuLFxyXG4gIH0+KCk7XHJcbiAgaXNFeHBvcnRpbmcgPSBmYWxzZTtcclxuICBpc1NlbGVjdEFsbCA9IGZhbHNlO1xyXG4gIGV4cG9ydFRpdGxlID0gJ0V4cG9ydCc7XHJcbiAgI2xvYWRDb21wbGV0ZWQgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoR1JJRF9NQVRFUklBTF9DT05GSUcpIEBPcHRpb25hbCgpIHB1YmxpYyBjb25maWd1cmF0aW9uOiBJU2RHcmlkTWF0ZXJpYWxDb25maWd1cmF0aW9uLFxyXG4gICAgcHJpdmF0ZSBncmlkQ29uZmlndXJhdGlvblNlcnZpY2U6IFNkR3JpZENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBTZEV4cG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZSxcclxuICAgIHByaXZhdGUgY29sdW1uVmFsdWVzUGlwZTogU2RDb2x1bW5WYWx1ZXNQaXBlLFxyXG4gICAgcHJpdmF0ZSBncmlkRmlsdGVyU2VydmljZTogU2RHcmlkRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgZWRpdG9ySGFuZGxlckNvbHVtblBpcGU6IFNkRWRpdG9ySGFuZGxlckNvbHVtblBpcGUpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy4jaW5pdENlbGxEZWYoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy4jcmVsb2FkLnBpcGUoXHJcbiAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICBzd2l0Y2hNYXAoYXN5bmMgZGF0YSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVySW5mbyA9IHRoaXMuI2dldEZpbHRlcigpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuI2xvYWQoZmlsdGVySW5mbywgIXRoaXMuI2xvYWRDb21wbGV0ZWQgfHwgZGF0YS5mb3JjZSk7XHJcbiAgICAgICAgdGhpcy4jbG9hZENvbXBsZXRlZCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKHRoaXMuI3JlbmRlcikpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNkQ2VsbERlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0Q2VsbERlZikpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNkRm9vdGVyRGVmcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKFtdKSkuc3Vic2NyaWJlKHRoaXMuI2luaXRGb290ZXJEZWYpKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5zZEZpbHRlckRlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0RmlsdGVyRGVmKSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLiNvcHRpb25DaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZ3JpZE9wdGlvbikpLFxyXG4gICAgICB0aGlzLnNkRmlsdGVyRGVmcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZmlsdGVyRGVmcykpXSkuc3Vic2NyaWJlKChhKSA9PiB7XHJcbiAgICAgICAgdGhpcy4jbG9hZEZpbHRlclJlZ2lzdGVyKCk7XHJcbiAgICAgIH0pKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAjaW5pdENlbGxEZWYgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNlbGxEZWYgPSB7fTtcclxuICAgIGZvciAoY29uc3QgY2VsbERlZiBvZiB0aGlzLnNkQ2VsbERlZnMpIHtcclxuICAgICAgaWYgKGNlbGxEZWYuc2RNYXRlcmlhbENlbGxEZWYpIHtcclxuICAgICAgICB0aGlzLmNlbGxEZWZbY2VsbERlZi5zZE1hdGVyaWFsQ2VsbERlZl0gPSBjZWxsRGVmO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAjaW5pdEZpbHRlckRlZiA9ICgpID0+IHtcclxuICAgIHRoaXMuZmlsdGVyRGVmcyA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBmaWx0ZXJEZWYgb2YgdGhpcy5zZEZpbHRlckRlZnMpIHtcclxuICAgICAgdGhpcy5maWx0ZXJEZWZzLnB1c2goZmlsdGVyRGVmKTtcclxuICAgIH1cclxuICAgIC8vIGlmICh0aGlzLmZpbHRlckRlZnM/Lmxlbmd0aCkge1xyXG4gICAgLy8gICB0aGlzLiNsb2FkRmlsdGVyUmVnaXN0ZXIoKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gICNpbml0Rm9vdGVyRGVmID0gKCkgPT4ge1xyXG4gICAgdGhpcy5mb290ZXJEZWYgPSB7fTtcclxuICAgIHRoaXMuaGFzRm9vdGVyID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IGZvb3RlckRlZiBvZiB0aGlzLnNkRm9vdGVyRGVmcykge1xyXG4gICAgICBpZiAoZm9vdGVyRGVmLnNkTWF0ZXJpYWxGb290ZXJEZWYpIHtcclxuICAgICAgICB0aGlzLmhhc0Zvb3RlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5mb290ZXJEZWZbZm9vdGVyRGVmLnNkTWF0ZXJpYWxGb290ZXJEZWZdID0gZm9vdGVyRGVmO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAjZmlsdGVyRXhwb3J0SW5mbyA9IChwYWdlTnVtYmVyOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIpOiBTZEdyaWRNYXRlcmlhbEZpbHRlclJlcXVlc3QgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5GaWx0ZXIsIGV4dGVybmFsRmlsdGVyLCBmaWx0ZXJEZWYgfSA9IHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUuZ2V0KCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICByYXdDb2x1bW5GaWx0ZXI6IGNvbHVtbkZpbHRlciB8fCB7fSxcclxuICAgICAgcmF3RXh0ZXJuYWxGaWx0ZXI6IGV4dGVybmFsRmlsdGVyIHx8IHt9LFxyXG4gICAgICByYXdGaWx0ZXJEZWY6IGZpbHRlckRlZiB8fCB7fSxcclxuICAgICAgb3JkZXJCeTogdGhpcy4jc29ydD8uYWN0aXZlIHx8ICcnLFxyXG4gICAgICBvcmRlckRpcmVjdGlvbjogdGhpcy4jc29ydD8uZGlyZWN0aW9uIHx8ICcnLFxyXG4gICAgICBwYWdlTnVtYmVyLFxyXG4gICAgICBwYWdlU2l6ZSxcclxuICAgICAgaXNFeHBvcnRlZDogdHJ1ZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gICNpbml0Q29uZmlndXJhdGlvbiA9IChvcHRpb246IFNkR3JpZE1hdGVyaWFsT3B0aW9uKSA9PiB7XHJcbiAgICAvLyBJbml0IHBhZ2luYXRpb25cclxuICAgIG9wdGlvbi5wYWdpbmF0ZSA9IHtcclxuICAgICAgaGlkZGVuOiBvcHRpb24/LnBhZ2luYXRlPy5oaWRkZW4sXHJcbiAgICAgIHBhZ2VTaXplOiBvcHRpb24/LnBhZ2luYXRlPy5wYWdlU2l6ZSA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LnBhZ2luYXRlPy5wYWdlU2l6ZSA/PyBERUZBVUxUX0dSSURfTUFURVJJQUxfQ09ORklHLnBhZ2luYXRlPy5wYWdlU2l6ZSxcclxuICAgICAgcGFnZXM6IG9wdGlvbj8ucGFnaW5hdGU/LnBhZ2VzID8/IHRoaXMuY29uZmlndXJhdGlvbj8ucGFnaW5hdGU/LnBhZ2VzID8/IERFRkFVTFRfR1JJRF9NQVRFUklBTF9DT05GSUcucGFnaW5hdGU/LnBhZ2VzLFxyXG4gICAgICBzaG93Rmlyc3RMYXN0QnV0dG9uczogb3B0aW9uPy5wYWdpbmF0ZT8uc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgPz8gZmFsc2VcclxuICAgIH07XHJcbiAgICByZXR1cm4gb3B0aW9uO1xyXG4gIH1cclxuXHJcbiAgI2xvYWRGaWx0ZXJSZWdpc3RlciA9ICgpID0+IHtcclxuICAgIC8vIEluaXQgZmlsdGVyXHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uKSB7XHJcbiAgICAgIGNvbnN0IGhhc1JlZ2lzdGVyID0gISF0aGlzLmZpbHRlclJlZ2lzdGVyO1xyXG4gICAgICB0aGlzLmZpbHRlclJlZ2lzdGVyID0gdGhpcy5ncmlkRmlsdGVyU2VydmljZS5yZWdpc3Rlcih0aGlzLmdyaWRPcHRpb24/LmZpbHRlcj8ua2V5LCB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5ncmlkT3B0aW9uPy5jb2x1bW5zLFxyXG4gICAgICAgIGV4dGVybmFsRmlsdGVyczogdGhpcy5ncmlkT3B0aW9uPy5maWx0ZXI/LmV4dGVybmFsRmlsdGVycyxcclxuICAgICAgICBmaWx0ZXJEZWZzOiB0aGlzLmZpbHRlckRlZnNcclxuICAgICAgfSk7XHJcbiAgICAgIGlmKCFoYXNSZWdpc3Rlcikge1xyXG4gICAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5vYnNlcnZlci5waXBlKFxyXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgICAgICBtYXAoKGZpbHRlclZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW1uRmlsdGVyID0gZmlsdGVyVmFsdWUuY29sdW1uRmlsdGVyO1xyXG4gICAgICAgICAgICB0aGlzLiNwYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuICAgICAgICAgICAgdGhpcy4jcmVsb2FkLm5leHQoe1xyXG4gICAgICAgICAgICAgIGZvcmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI2ZpbHRlckxvY2FsID0gKGxvY2FsSXRlbXM6IGFueVtdLCBmaWx0ZXJJbmZvOiBTZEdyaWRNYXRlcmlhbEZpbHRlclJlcXVlc3QpID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1ucyB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgY29uc3QgeyByYXdDb2x1bW5GaWx0ZXIsIG9yZGVyQnksIG9yZGVyRGlyZWN0aW9uLCBwYWdlU2l6ZSwgcGFnZU51bWJlciB9ID0gZmlsdGVySW5mbztcclxuICAgIGNvbnN0IGl0ZW1zID0gbG9jYWxJdGVtcy5maWx0ZXIoaXRlbSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBjb25zdCB7IGZpZWxkLCB0eXBlIH0gPSBjb2x1bW47XHJcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWU6IHN0cmluZyA9IChyYXdDb2x1bW5GaWx0ZXJbZmllbGRdIHx8ICcnKS50b1N0cmluZygpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGNvbnN0IGNvbHVtblZhbHVlOiBzdHJpbmcgPSAoaXRlbVtmaWVsZF0gfHwgJycpLnRvU3RyaW5nKCkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKGZpbHRlclZhbHVlKSB7XHJcbiAgICAgICAgICBpZiAoIWNvbHVtblZhbHVlICYmIHR5cGUgIT09ICdkYXRldGltZScgJiYgdHlwZSAhPT0gJ2RhdGUnICYmIHR5cGUgIT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWYgKGNvbHVtblZhbHVlLmluZGV4T2YoZmlsdGVyVmFsdWUpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndmFsdWVzJykge1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uVmFsdWUgIT09IGZpbHRlclZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZWYWx1ZSA9ICtmaWx0ZXJWYWx1ZS5yZXBsYWNlKCc+PScsICcnKS5yZXBsYWNlKCc8PScsICcnKS5yZXBsYWNlKCc+JywgJycpLnJlcGxhY2UoJzwnLCAnJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNWYWx1ZSA9ICtjb2x1bW5WYWx1ZTtcclxuICAgICAgICAgICAgaWYgKGZWYWx1ZSB8fCBmVmFsdWUgPT09IDApIHtcclxuICAgICAgICAgICAgICBpZiAoIWNWYWx1ZSAmJiBjVmFsdWUgIT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJz49JykgPiAtMSAmJiBjVmFsdWUgPCBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJzw9JykgPiAtMSAmJiBjVmFsdWUgPiBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJzwnKSA+IC0xICYmIGNWYWx1ZSA+PSBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJz4nKSA+IC0xICYmIGNWYWx1ZSA8PSBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNWYWx1ZSAhPT0gZlZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyVmFsdWUgPT09ICcxJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJzEnICYmIGNvbHVtblZhbHVlICE9PSAndHJ1ZScpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVmFsdWUgPT09ICcwJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJzAnICYmIGNvbHVtblZhbHVlICE9PSAnZmFsc2UnKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRldGltZScgfHwgdHlwZSA9PT0gJ2RhdGUnIHx8IHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICBjb25zdCBmcm9tID0gcmF3Q29sdW1uRmlsdGVyW2ZpZWxkXT8uZnJvbSA/PyByYXdDb2x1bW5GaWx0ZXJbZmllbGRdO1xyXG4gICAgICAgICAgICBjb25zdCB0byA9IHJhd0NvbHVtbkZpbHRlcltmaWVsZF0/LnRvID8/IHJhd0NvbHVtbkZpbHRlcltmaWVsZF07XHJcbiAgICAgICAgICAgIGNvbnN0IGZyb21EYXRlID0gRGF0ZS5iZWdpbihmcm9tKTtcclxuICAgICAgICAgICAgY29uc3QgdG9EYXRlID0gRGF0ZS5lbmQodG8pO1xyXG4gICAgICAgICAgICBpZiAoZnJvbURhdGUgfHwgdG9EYXRlKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFjb2x1bW5WYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgY29sdW1uVGltZSA9IG5ldyBEYXRlKGNvbHVtblZhbHVlKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZnJvbURhdGVUaW1lID0gZnJvbURhdGU/LmdldFRpbWUoKSB8fCBudWxsO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRvRGF0ZVRpbWUgPSB0b0RhdGU/LmdldFRpbWUoKSB8fCBudWxsO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZnJvbURhdGVUaW1lICYmIGZyb21EYXRlVGltZSA+IGNvbHVtblRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHRvRGF0ZVRpbWUgJiYgY29sdW1uVGltZSA+IHRvRGF0ZVRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICAgIC8vIFNvcnRcclxuICAgIGlmIChvcmRlckJ5ICYmIG9yZGVyRGlyZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZChlID0+IGUuZmllbGQgPT09IG9yZGVyQnkpO1xyXG4gICAgICBpZiAoY29sdW1uKSB7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBmaWVsZCB9ID0gY29sdW1uO1xyXG4gICAgICAgIGl0ZW1zLnNvcnQoKGN1cnJlbnQsIG5leHQpID0+IHtcclxuICAgICAgICAgIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICByZXR1cm4gKGN1cnJlbnRbZmllbGRdIHx8IDApIC0gKG5leHRbZmllbGRdIHx8IDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdkYXRlJyB8fCB0eXBlID09PSAnZGF0ZXRpbWUnIHx8IHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICBjb25zdCBkMSA9IG5ldyBEYXRlKGN1cnJlbnRbZmllbGRdIHx8ICcnKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGQyID0gbmV3IERhdGUoY3VycmVudFtmaWVsZF0gfHwgJycpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGQxIC0gZDI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBzMSA9IChjdXJyZW50W2ZpZWxkXSB8fCAnJykudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGNvbnN0IHMyID0gKG5leHRbZmllbGRdIHx8ICcnKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgaWYgKHMxID4gczIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoczEgPCBzMikge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAob3JkZXJEaXJlY3Rpb24gPT09ICdkZXNjJykge1xyXG4gICAgICAgICAgaXRlbXMucmV2ZXJzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXRlbXM6IGl0ZW1zLmZpbHRlcigoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPj0gcGFnZU51bWJlciAqIHBhZ2VTaXplXHJcbiAgICAgICAgICAmJiBpbmRleCA8IChwYWdlTnVtYmVyICsgMSkgKiBwYWdlU2l6ZTtcclxuICAgICAgfSksXHJcbiAgICAgIHRvdGFsOiBpdGVtcy5sZW5ndGhcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAjZ2V0RmlsdGVyID0gKCk6IFNkR3JpZE1hdGVyaWFsRmlsdGVyUmVxdWVzdCA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbkZpbHRlciwgZXh0ZXJuYWxGaWx0ZXIsIGZpbHRlckRlZiB9ID0gdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5nZXQoKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHJhd0NvbHVtbkZpbHRlcjogY29sdW1uRmlsdGVyIHx8IHt9LFxyXG4gICAgICByYXdFeHRlcm5hbEZpbHRlcjogZXh0ZXJuYWxGaWx0ZXIgfHwge30sXHJcbiAgICAgIHJhd0ZpbHRlckRlZjogZmlsdGVyRGVmIHx8IHt9LFxyXG4gICAgICBvcmRlckJ5OiB0aGlzLiNzb3J0Py5hY3RpdmUgfHwgJycsXHJcbiAgICAgIG9yZGVyRGlyZWN0aW9uOiB0aGlzLiNzb3J0Py5kaXJlY3Rpb24gfHwgJycsXHJcbiAgICAgIHBhZ2VOdW1iZXI6IHRoaXMuI3BhZ2luYXRvcj8ucGFnZUluZGV4IHx8IDAsXHJcbiAgICAgIHBhZ2VTaXplOiB0aGlzLiNwYWdpbmF0b3I/LnBhZ2VTaXplIHx8IHRoaXMuZ3JpZE9wdGlvbj8ucGFnaW5hdGU/LnBhZ2VTaXplIHx8IDUwXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAjbG9hZCA9IGFzeW5jIChmaWx0ZXJSZXE6IFNkR3JpZE1hdGVyaWFsRmlsdGVyUmVxdWVzdCwgZm9yY2U6IGJvb2xlYW4gPSB0cnVlKSA9PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdzZXJ2ZXInKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcyhmaWx0ZXJSZXEpO1xyXG4gICAgICAgIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRvUHJvbWlzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzdWx0O1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBpdGVtczogZGF0YT8uaXRlbXMgfHwgW10sXHJcbiAgICAgICAgICB0b3RhbDogZGF0YT8udG90YWwgfHwgMFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKCdDw7MgbOG7l2kgeOG6o3kgcmEnKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaXRlbXM6IFtdLFxyXG4gICAgICAgICAgdG90YWw6IDBcclxuICAgICAgICB9O1xyXG4gICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoZm9yY2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcygpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdHMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSAoYXdhaXQgcmVzdWx0cykgfHwgW107XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gcmVzdWx0cyB8fCBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLiNsb2NhbEl0ZW1zKSkge1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoJ0Thu68gbGnhu4d1IGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IG3huqNuZycpO1xyXG4gICAgICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKCdDw7MgbOG7l2kgeOG6o3kgcmEnKTtcclxuICAgICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSBbXTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm4gdGhpcy4jZmlsdGVyTG9jYWwodGhpcy4jbG9jYWxJdGVtcywgZmlsdGVyUmVxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNyZW5kZXIgPSBhc3luYyAoYXJnczogeyBpdGVtczogYW55W10sIHRvdGFsOiBudW1iZXIgfSkgPT4ge1xyXG4gICAgdGhpcy5zZFNjcm9sbD8uc2Nyb2xsVG9wKCk7XHJcbiAgICB0aGlzLml0ZW1zID0gYXJncz8uaXRlbXMgfHwgW107XHJcbiAgICB0aGlzLnRvdGFsID0gYXJncz8udG90YWwgfHwgMDtcclxuICAgIC8vIHRoaXMuaXNIaWRkZW5QYWdpbmF0b3IgPSB0aGlzLmZpbHRlckluZm8ucGFnZU51bWJlciA9PT0gMCAmJiB0aGlzLnRvdGFsIDw9IHRoaXMuZmlsdGVySW5mby5wYWdlU2l6ZTtcclxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRlbTogU2RJdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0ub3JpZ2luSXRlbSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgfSk7XHJcbiAgICBhd2FpdCB0aGlzLmdyaWRPcHRpb24/LnJlbG9hZD8ub25SZWxvYWQ/Lih0aGlzLml0ZW1zKTtcclxuICAgIHRoaXMuaXNTZWxlY3RBbGwgPSB0aGlzLml0ZW1zLmV2ZXJ5KGUgPT4gZS5pc1NlbGVjdGVkKTtcclxuICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICB9XHJcblxyXG4gIHJlbG9hZCA9IGFzeW5jIChmb3JjZTogYm9vbGVhbiA9IHRydWUpID0+IHtcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLiNsb2FkKHRoaXMuI2dldEZpbHRlcigpLCBmb3JjZSk7XHJcbiAgICB0aGlzLiNyZW5kZXIoZGF0YSk7XHJcbiAgfVxyXG5cclxuICAjZXhwb3J0ZWRJdGVtcyA9IGFzeW5jIChwYWdlTnVtYmVyOiBudW1iZXIgPSAwLCBwYWdlU2l6ZTogbnVtYmVyID0gMTAwMDApID0+IHtcclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24uZXhwb3J0Py5pdGVtcykge1xyXG4gICAgICAvLyBjb25zdCBleHBvcnRlZEl0ZW1zID0gdGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uaXRlbXModGhpcy4jZmlsdGVyRXhwb3J0SW5mbyhwYWdlTnVtYmVyLCBwYWdlU2l6ZSkpO1xyXG4gICAgICBsZXQgcmVzdWx0ID0gdGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uaXRlbXModGhpcy4jZmlsdGVyRXhwb3J0SW5mbyhwYWdlTnVtYmVyLCBwYWdlU2l6ZSkpO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNPYnNlcnZhYmxlPGFueVtdPihyZXN1bHQpKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRvUHJvbWlzZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc09ic2VydmFibGU8eyBpdGVtczogYW55W10sIHRvdGFsOiBudW1iZXIgfT4ocmVzdWx0KSkge1xyXG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC50b1Byb21pc2UoKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYXdhaXQgcmVzdWx0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZmlsdGVySW5mbyA9IHRoaXMuI2ZpbHRlckV4cG9ydEluZm8ocGFnZU51bWJlciwgcGFnZVNpemUpO1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdzZXJ2ZXInKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcyhmaWx0ZXJJbmZvKTtcclxuICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC50b1Byb21pc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3VsdDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgZXhwb3J0ZWRJdGVtczogYW55W10gPSBbXTtcclxuICAgICAgICBpZiAodHlwZW9mICh0aGlzLmdyaWRPcHRpb24uaXRlbXMpID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5ncmlkT3B0aW9uLml0ZW1zKCk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0cyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgZXhwb3J0ZWRJdGVtcyA9IGF3YWl0IHJlc3VsdHM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBleHBvcnRlZEl0ZW1zID0gcmVzdWx0cztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZXhwb3J0ZWRJdGVtcyA9IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuI2ZpbHRlckxvY2FsKGV4cG9ydGVkSXRlbXMsIGZpbHRlckluZm8pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4sIGNvbHVtbnM6IHN0cmluZ1tdKSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoY29sdW1ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICB9XHJcblxyXG4gICNhbGxDb2x1bW5zID0gKCk6IFNkR3JpZE1hdGVyaWFsQ29sdW1uW10gPT4ge1xyXG4gICAgY29uc3QgY29sdW1uczogU2RHcmlkTWF0ZXJpYWxDb2x1bW5bXSA9IFtdO1xyXG4gICAgdGhpcy5ncmlkT3B0aW9uLmNvbHVtbnMuZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdpbWFnZScpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgY29sdW1uLmNoaWxkcmVuPy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKS5mb3JFYWNoKGNoaWxkQ29sdW1uID0+IHtcclxuICAgICAgICAgIGlmIChjaGlsZENvbHVtbi50eXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbHVtbnMucHVzaChjaGlsZENvbHVtbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuLWNvbCcpIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4/LmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpLmZvckVhY2goY2hpbGRDb2x1bW4gPT4ge1xyXG4gICAgICAgICAgaWYgKGNoaWxkQ29sdW1uLnR5cGUgPT09ICdpbWFnZScpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29sdW1ucy5wdXNoKGNoaWxkQ29sdW1uKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29sdW1ucy5wdXNoKGNvbHVtbik7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgI2FsbEV4cG9ydGVkQ29sdW1ucyA9ICgpOiBTZEdyaWRNYXRlcmlhbEV4cG9ydENvbHVtbltdID0+IHtcclxuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb24uZXhwb3J0Py5jb2x1bW5zPy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKSB8fCBbXTtcclxuICB9XHJcblxyXG4gICNvbkV4cG9ydCA9IGFzeW5jIChhcmdzOiB7IGZpbGU6IFNkRXhwb3J0RmlsZSwgY29sdW1uczogU2RFeHBvcnRDb2x1bW5bXSwgaXNDU1Y6IGJvb2xlYW4gfSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgeyBmaWxlLCBpc0NTViB9ID0gYXJncztcclxuICAgICAgbGV0IHsgY29sdW1ucyB9ID0gYXJncztcclxuICAgICAgY29uc3QgcGFnZVNpemUgPSB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8ubWF4SXRlbXNQZXJSZXF1ZXN0IHx8IDEwMDA7XHJcbiAgICAgIGNvbnN0IGJhdGNoID0gdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LmJhdGNoIHx8IDE7XHJcbiAgICAgIGxldCB0b3RhbCA9IHRoaXMudG90YWw7XHJcbiAgICAgIGxldCBwYWdlTnVtYmVyID0gMDtcclxuICAgICAgbGV0IGV4cG9ydEl0ZW1zID0gW107XHJcbiAgICAgIHRoaXMuaXNFeHBvcnRpbmcgPSB0cnVlO1xyXG4gICAgICBjb25zdCBpdGVtczogYW55W10gPSBbXTtcclxuICAgICAgbGV0IHByb21pc2VzOiBQcm9taXNlPGFueVtdIHwge1xyXG4gICAgICAgIGl0ZW1zOiBhbnlbXTtcclxuICAgICAgICB0b3RhbDogbnVtYmVyO1xyXG4gICAgICB9PltdID0gW107XHJcbiAgICAgIGNvbnN0IGhhbmRsZURhdGEgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgICAgICBwcm9taXNlcyA9IFtdO1xyXG4gICAgICAgIGV4cG9ydEl0ZW1zID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xyXG4gICAgICAgICAgaWYgKCdpdGVtcycgaW4gcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gWy4uLmV4cG9ydEl0ZW1zLCAuLi5yZXN1bHQuaXRlbXNdO1xyXG4gICAgICAgICAgICB0b3RhbCA9IHJlc3VsdC50b3RhbDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gWy4uLmV4cG9ydEl0ZW1zLCAuLi5yZXN1bHRdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8ubWFwcGluZykge1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQubWFwcGluZyhleHBvcnRJdGVtcyk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0cyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgZXhwb3J0SXRlbXMgPSBhd2FpdCByZXN1bHRzO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZXhwb3J0SXRlbXMgPSByZXN1bHRzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0b3RhbFBhZ2UgPSB0b3RhbCAvIHBhZ2VTaXplO1xyXG4gICAgICAgIGNvbnN0IHBlcmNlbnQgPSBNYXRoLnJvdW5kKChwYWdlTnVtYmVyIC0gMSkgKiAxMDAuMCAvIHRvdGFsUGFnZSk7XHJcbiAgICAgICAgdGhpcy5leHBvcnRUaXRsZSA9IGBFeHBvcnRpbmcuLi4ke3BlcmNlbnR9JWA7XHJcbiAgICAgICAgY29uc3QgYWxsQ29sdW1ucyA9IHRoaXMuI2FsbENvbHVtbnMoKTtcclxuICAgICAgICBjb25zdCBhbGxFeHBvcnRlZENvbHVtbnMgPSB0aGlzLiNhbGxFeHBvcnRlZENvbHVtbnMoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZXhwb3J0SXRlbXMpIHtcclxuICAgICAgICAgIGNvbnN0IG9iajogYW55ID0ge307XHJcbiAgICAgICAgICBjb25zdCBoYW5kbGUgPSBhc3luYyAoZXhwb3J0Q29sdW1uOiBTZEV4cG9ydENvbHVtbikgPT4ge1xyXG4gICAgICAgICAgICBvYmpbZXhwb3J0Q29sdW1uLmZpZWxkXSA9IGl0ZW1bZXhwb3J0Q29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgY29uc3QgY29sdW1uID0gYWxsQ29sdW1ucy5maW5kKGUgPT4gZS5maWVsZCA9PT0gZXhwb3J0Q29sdW1uLmZpZWxkKTtcclxuICAgICAgICAgICAgY29uc3QgZXhwb3J0ZWRDb2x1bW4gPSBhbGxFeHBvcnRlZENvbHVtbnMuZmluZChlID0+IGUuZmllbGQgPT09IGV4cG9ydENvbHVtbi5maWVsZCk7XHJcbiAgICAgICAgICAgIGlmIChleHBvcnRlZENvbHVtbj8udHJhbnNmb3JtKSB7XHJcbiAgICAgICAgICAgICAgb2JqW2V4cG9ydGVkQ29sdW1uLmZpZWxkXSA9IGV4cG9ydGVkQ29sdW1uLnRyYW5zZm9ybShpdGVtW2V4cG9ydGVkQ29sdW1uLmZpZWxkXSwgaXRlbSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghY29sdW1uKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuLWNvbCcpIHtcclxuICAgICAgICAgICAgICBjb2x1bW4/LmNoaWxkcmVuLmZvckVhY2goY2hpbGRDb2x1bW4gPT4gaGFuZGxlKGNoaWxkQ29sdW1uKSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghY29sdW1ucy5zb21lKGUgPT4gZS5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29sdW1uLnRyYW5zZm9ybSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IGNvbHVtbi50cmFuc2Zvcm0oaXRlbVtjb2x1bW4uZmllbGRdLCBpdGVtLCB7XHJcbiAgICAgICAgICAgICAgICBpc0V4cG9ydDogdHJ1ZVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0gaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGF3YWl0IHRyYW5zZm9ybTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSB0cmFuc2Zvcm07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gb2JqW2NvbHVtbi5maWVsZF0gPz8gJyc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbVtjb2x1bW4uZmllbGRdID09PSB1bmRlZmluZWQgfHwgaXRlbVtjb2x1bW4uZmllbGRdID09PSBudWxsIHx8IGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gJycpIHtcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9ICcnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnc3RyaW5nJyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAvLyBO4bq/dSBjZWxsIGzDoCBzdHJpbmcgaG/hurdjIG51bWJlciB0aMOsIGfDoW4gYuG6sW5nIGNow61uaCBuw7NcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgbMOgIGJvb2wgdGjDrCBnw6FuIGLhurFuZyBnacOhIHRy4buLIHRydWVWYWx1ZSB2w6AgZmFsc2VWYWx1ZSAobuG6v3UgY8OzKSwgbeG6t2MgxJHhu4tuaCBsw6AgVFJVRS9GQUxTRVxyXG4gICAgICAgICAgICAgIGlmIChpdGVtW2NvbHVtbi5maWVsZF0pIHtcclxuICAgICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gY29sdW1uLm9wdGlvbj8uZGlzcGxheU9uVHJ1ZSB8fCAnVHJ1ZSc7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChvYmpbY29sdW1uLmZpZWxkXSAhPT0gdW5kZWZpbmVkICYmIG9ialtjb2x1bW4uZmllbGRdICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5vcHRpb24/LmRpc3BsYXlPbkZhbHNlIHx8ICdGYWxzZSc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgICAgICAgICBsZXQgZGF0ZSA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgICBjb25zdCB7IHRyYW5zZm9ybURhdGUgfSA9IGNvbHVtbjtcclxuICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgZGF0ZSA9IHRyYW5zZm9ybURhdGUoZGF0ZSwgaXRlbSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCBkYXRlIHRow6wgY29udmVydCB0aGVvIMSRw7puZyBmb3JtYXRcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IERhdGUudG9Gb3JtYXQoZGF0ZSwgJ2RkL01NL3l5eXknKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRlID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHsgdHJhbnNmb3JtRGF0ZSB9ID0gY29sdW1uO1xyXG4gICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1EYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRlID0gdHJhbnNmb3JtRGF0ZShkYXRlLCBpdGVtKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgbMOgIGRhdGV0aW1lIHRow6wgY29udmVydCB0aGVvIMSRw7puZyBmb3JtYXRcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IERhdGUudG9Gb3JtYXQoZGF0ZSwgJ2RkL01NL3l5eXkgSEg6bW0nKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGUgPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgICAgY29uc3QgeyB0cmFuc2Zvcm1EYXRlIH0gPSBjb2x1bW47XHJcbiAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybURhdGUpIHtcclxuICAgICAgICAgICAgICAgIGRhdGUgPSB0cmFuc2Zvcm1EYXRlKGRhdGUsIGl0ZW0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBO4bq/dSBsw6AgdGltZSB0aMOsIGNvbnZlcnQgdGhlbyDEkcO6bmcgZm9ybWF0XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBEYXRlLnRvRm9ybWF0KGRhdGUsICdISDptbScpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJykge1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCB2YWx1ZXMgdGjDrCBs4bqleSBnacOhIHRy4buLIGPhu6dhIHZhbHVlIMSRxrDhu6NjIGNo4buNblxyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gYXdhaXQgdGhpcy5jb2x1bW5WYWx1ZXNQaXBlLnRyYW5zZm9ybShpdGVtW2NvbHVtbi5maWVsZF0sIGNvbHVtbik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICAvLyB0aGlzLmdyaWRPcHRpb24uY29sdW1ucy5mb3JFYWNoKGhhbmRsZSk7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGV4cG9ydENvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGhhbmRsZShleHBvcnRDb2x1bW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaXRlbXMucHVzaChvYmopO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB3aGlsZSAocGFnZU51bWJlciAqIHBhZ2VTaXplIDwgdG90YWwpIHtcclxuICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMuI2V4cG9ydGVkSXRlbXMocGFnZU51bWJlciwgcGFnZVNpemUpKTtcclxuICAgICAgICBwYWdlTnVtYmVyKys7XHJcbiAgICAgICAgaWYgKHByb21pc2VzLmxlbmd0aCA8IGJhdGNoKSB7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgaGFuZGxlRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgYXdhaXQgaGFuZGxlRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghZmlsZT8uZmlsZVBhdGgpIHtcclxuICAgICAgICBpZiAoaXNDU1YpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRDU1Yoe1xyXG4gICAgICAgICAgICBjb2x1bW5zLFxyXG4gICAgICAgICAgICBpdGVtcyxcclxuICAgICAgICAgICAgZmlsZU5hbWU6IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5maWxlTmFtZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNoZWV0czoge1xyXG4gICAgICAgICAgbmFtZTogc3RyaW5nLFxyXG4gICAgICAgICAgaXRlbXM6IGFueVtdLFxyXG4gICAgICAgICAgZmllbGRzOiBzdHJpbmdbXVxyXG4gICAgICAgIH1bXSA9IFtdO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5zaGVldHMpKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQuc2hlZXRzKSB7XHJcbiAgICAgICAgICAgIGlmIChzaGVldC5uYW1lICYmIHNoZWV0Lml0ZW1zICYmIHNoZWV0LmZpZWxkcykge1xyXG4gICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNoZWV0Lml0ZW1zKSkge1xyXG4gICAgICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICBpdGVtczogc2hlZXQuaXRlbXMsXHJcbiAgICAgICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICBpdGVtczogYXdhaXQgc2hlZXQuaXRlbXMoKSxcclxuICAgICAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHNcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0KHtcclxuICAgICAgICAgIGNvbHVtbnMsXHJcbiAgICAgICAgICBpdGVtcyxcclxuICAgICAgICAgIGZpbGVOYW1lOiB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uZmlsZU5hbWUsXHJcbiAgICAgICAgICBzaGVldHNcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydEJ5VGVtcGxhdGUoe1xyXG4gICAgICAgIGZpbGVQYXRoOiBmaWxlLmZpbGVQYXRoLFxyXG4gICAgICAgIGZpbGVOYW1lOiBmaWxlLmZpbGVOYW1lLFxyXG4gICAgICAgIGNvbHVtbnMsXHJcbiAgICAgICAgaXRlbXNcclxuICAgICAgfSk7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmlzRXhwb3J0aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZXhwb3J0VGl0bGUgPSBgRXhwb3J0YDtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25FeHBvcnQgPSBhc3luYyAoYXJnczogeyBmaWxlOiBTZEV4cG9ydEZpbGUsIGNvbHVtbnM6IFNkRXhwb3J0Q29sdW1uW10sIGlzQ1NWOiBib29sZWFuIH0pID0+IHtcclxuICAgIHRoaXMuI29uRXhwb3J0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJDaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICB0aGlzLiNwYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuICAgIHRoaXMucmVsb2FkKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIG9uRXhwYW5kID0gYXN5bmMgKHJvd0RhdGE6IFNkR3JpZE1hdGVyaWFsSXRlbTxUPikgPT4ge1xyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi5zdWJJbmZvcm1hdGlvbj8uYWx3YXlzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChyb3dEYXRhLmlzRXhwYW5kaW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChyb3dEYXRhLmlzRXhwYW5kZWQpIHtcclxuICAgICAgcm93RGF0YS5pc0V4cGFuZGVkID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdyaWRPcHRpb24/LnN1YkluZm9ybWF0aW9uPy5vbkV4cGFuZD8uKHJvd0RhdGEpO1xyXG4gICAgaWYgKCF0aGlzLmdyaWRPcHRpb24uc3ViSW5mb3JtYXRpb24/Lm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IGl0ZW0uaXNFeHBhbmRpbmcgPSBpdGVtLmlzRXhwYW5kZWQgPSBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgcm93RGF0YS5pc0V4cGFuZGluZyA9IHRydWU7XHJcbiAgICAgIGRhdGEudGhlbihyZXMgPT4ge1xyXG4gICAgICAgIHJvd0RhdGEuZXhwYW5kRGV0YWlsID0gcmVzO1xyXG4gICAgICAgIHJvd0RhdGEuaXNFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4gcm93RGF0YS5pc0V4cGFuZGluZyA9IGZhbHNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJvd0RhdGEuZXhwYW5kRGV0YWlsID0gZGF0YTtcclxuICAgICAgcm93RGF0YS5pc0V4cGFuZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKHJvd0RhdGE6IFNkR3JpZE1hdGVyaWFsSXRlbTxUPikgPT4ge1xyXG4gICAgaWYgKHJvd0RhdGE/LnNkR3JvdXA/Lml0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgcm93RGF0YT8uc2RHcm91cD8uaXRlbXMuZm9yRWFjaChlID0+IGUuaXNTZWxlY3RlZCA9IHJvd0RhdGEuaXNTZWxlY3RlZCk7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbi5zZWxlY3Rpb24/Lm9uU2VsZWN0Py4ocm93RGF0YSwgdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlLmlzU2VsZWN0ZWQpKTtcclxuICAgICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRoaXMuaXRlbXMuZXZlcnkoZSA9PiBlLmlzU2VsZWN0ZWQpO1xyXG4gICAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnNlbGVjdGlvbj8uc2luZ2xlKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlICE9PSByb3dEYXRhKS5mb3JFYWNoKGUgPT4gZS5pc1NlbGVjdGVkID0gZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ncmlkT3B0aW9uLnNlbGVjdGlvbj8ub25TZWxlY3Q/Lihyb3dEYXRhLCB0aGlzLml0ZW1zLmZpbHRlcihlID0+IGUuaXNTZWxlY3RlZCkpO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsID0gdGhpcy5pdGVtcy5ldmVyeShlID0+IGUuaXNTZWxlY3RlZCk7XHJcbiAgICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0QWxsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pdGVtcz8uZm9yRWFjaChlID0+IHtcclxuICAgICAgaWYgKGUuc2VsZWN0YWJsZSAmJiAoIXRoaXMuZ3JpZE9wdGlvbj8uc2VsZWN0aW9uPy5hY3Rpb25zPy5sZW5ndGggfHwgZS5hY3Rpb25zPy5sZW5ndGgpKSB7XHJcbiAgICAgICAgZS5pc1NlbGVjdGVkID0gdGhpcy5pc1NlbGVjdEFsbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdyaWRPcHRpb24uc2VsZWN0aW9uPy5vblNlbGVjdEFsbD8uKHRoaXMuaXRlbXMuZmlsdGVyKGUgPT4gZS5pc1NlbGVjdGVkKSk7XHJcbiAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyU2VsZWN0aW9uID0gKGl0ZW1zPzogU2RHcmlkTWF0ZXJpYWxJdGVtPFQ+W10pID0+IHtcclxuICAgIGl0ZW1zID0gaXRlbXMgfHwgdGhpcy5pdGVtcztcclxuICAgIHRoaXMuaXNTZWxlY3RBbGwgPSBmYWxzZTtcclxuICAgIGl0ZW1zPy5mb3JFYWNoKGUgPT4gZS5pc1NlbGVjdGVkID0gZmFsc2UpO1xyXG4gICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgI3VwZGF0ZVNlbGVjdGVkSXRlbXMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZClcclxuICAgICAgLm1hcChpdGVtID0+IHtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICBpc1NlbGVjdGVkLFxyXG4gICAgICAgICAgaXNFeHBhbmRlZCxcclxuICAgICAgICAgIGlzRXhwYW5kaW5nLFxyXG4gICAgICAgICAgZXhwYW5kRGV0YWlsLFxyXG4gICAgICAgICAgZWRpdG9yRXJyb3JNZXNzYWdlLFxyXG4gICAgICAgICAgZWRpdG9ySGFuZGxlckNvbHVtbixcclxuICAgICAgICAgIGVkaXRvckhhbmRsZXJSb3csXHJcbiAgICAgICAgICBlZGl0b3JTdGF0dXMsXHJcbiAgICAgICAgICBvcmlnaW5JdGVtLFxyXG4gICAgICAgICAgc2RJZCxcclxuICAgICAgICAgIHNkVmVyc2lvbixcclxuICAgICAgICAgIC8vIEdp4buvIGzhuqFpIGPDoWMgdHLGsOG7nW5nIHRow7RuZyB0aW4gY2hvIHNlbGVjdGFibGUgKGFjdGlvbiwgZ3JvdXBlZEFjdGlvbiwgc2RHcm91cCwgc2VsZWN0YWJsZSlcclxuICAgICAgICAgIC4uLnJlc3VsdFxyXG4gICAgICAgIH0gPSBpdGVtO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH0pIGFzIFRbXTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNsZWFyRmlsdGVyID0gKCkgPT4ge1xyXG4gICAgdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5yZW1vdmUoKTtcclxuICB9XHJcblxyXG4gIHNldEZpbHRlciA9IChhcmdzOiB7XHJcbiAgICBjb2x1bW5GaWx0ZXI6IGFueSxcclxuICAgIGV4dGVybmFsRmlsdGVyOiBhbnksXHJcbiAgICBmaWx0ZXJEZWY6IGFueVxyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1uRmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZmlsdGVyRGVmIH0gPSBhcmdzIHx8IHt9O1xyXG4gICAgdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5zZXQoe1xyXG4gICAgICBjb2x1bW5GaWx0ZXIsXHJcbiAgICAgIGV4dGVybmFsRmlsdGVyLFxyXG4gICAgICBmaWx0ZXJEZWZcclxuICAgIH0pXHJcbiAgICAvLyBpZiAodGhpcy5ncmlkT3B0aW9uPy5maWx0ZXI/LmlubGluZUNvbHVtbiAmJiBhcmdzPy5jb2x1bW5GaWx0ZXIpIHtcclxuICAgIC8vICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSBhcmdzLmNvbHVtbkZpbHRlcjtcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuZ3JpZEZpbHRlcj8uc2V0RmlsdGVyKGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgb25DcmVhdGUgPSAoKSA9PiB7XHJcbiAgICBjb25zdCB7IHR5cGUsIGVkaXRvciwgY29sdW1ucyB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgaWYgKCFlZGl0b3I/LmFkZGFibGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXRlbTogU2RHcmlkTWF0ZXJpYWxJdGVtID0ge307XHJcbiAgICAvLyBHw6FuIGdpw6EgdHLhu4sgbeG6t2MgxJHhu4tuaFxyXG4gICAgY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ3ZhbHVlcycpIHtcclxuICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSAnJztcclxuICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmICh0eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgIGVkaXRvci5vbkFkZD8uKGl0ZW0sIHRoaXMuI2xvY2FsSXRlbXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZWRpdG9yLm9uQWRkPy4oaXRlbSwgdGhpcy5pdGVtcyk7XHJcbiAgICB9XHJcbiAgICAvLyDEkMawYSBpdGVtIGzDqm4gZMOybmcgxJHhuqd1IHRpw6puIG7hur91IHR5cGUga2jDoWMgcG9wdXBcclxuICAgIGlmIChlZGl0b3IudHlwZSAhPT0gJ3BvcHVwJykge1xyXG4gICAgICBpZiAoZWRpdG9yLmFkZFRvTGFzdCkge1xyXG4gICAgICAgIGlmICh0eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gWy4uLnRoaXMuI2xvY2FsSXRlbXMsIGl0ZW1dO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuaXRlbXMsIGl0ZW1dO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gW2l0ZW0sIC4uLnRoaXMuI2xvY2FsSXRlbXNdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLml0ZW1zID0gW2l0ZW0sIC4uLnRoaXMuaXRlbXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpdGVtLmVkaXRvclN0YXR1cyA9ICdjcmVhdGUnO1xyXG4gICAgaXRlbS5lZGl0b3JIYW5kbGVyUm93ID0ge1xyXG4gICAgICB0ZW1wb3Jhcnk6IHsgLi4uaXRlbSB9XHJcbiAgICB9O1xyXG4gIH1cclxuICBvblVwZGF0ZSA9IChpdGVtOiBTZEl0ZW0pID0+IHtcclxuICAgIGNvbnN0IHsgZWRpdG9yIH0gPSB0aGlzLmdyaWRPcHRpb247XHJcbiAgICBpdGVtLmVkaXRvclN0YXR1cyA9ICd1cGRhdGUnO1xyXG4gICAgaXRlbS5lZGl0b3JIYW5kbGVyUm93ID0ge1xyXG4gICAgICAuLi5pdGVtLmVkaXRvckhhbmRsZXJSb3csXHJcbiAgICAgIHRlbXBvcmFyeTogeyAuLi5pdGVtIH1cclxuICAgIH07XHJcbiAgICAvLyB0aGlzLmdlbmVyYXRlRWRpdG9ySGFubGRlcihpdGVtKTtcclxuICAgIGlmIChlZGl0b3IudHlwZSA9PT0gJ3BvcHVwJykge1xyXG4gICAgICAvLyBY4butIGzDvSBjYXNlIHBvcHVwXHJcbiAgICAgIC8vIHRoaXMuc2RHcmlkUG9wdXBFZGl0b3Iub3BlbihpdGVtLCBjb2x1bW5zLCBpc01vZGlmaWVkKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgb25TYXZlID0gYXN5bmMgKGl0ZW06IFNkR3JpZE1hdGVyaWFsSXRlbTxUPikgPT4ge1xyXG4gICAgaWYgKGl0ZW0uZWRpdG9ySGFuZGxlclJvdy5zYXZpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBlZGl0b3IgfSA9IHRoaXMuZ3JpZE9wdGlvbjtcclxuICAgIHRyeSB7XHJcbiAgICAgIGl0ZW0uZWRpdG9ySGFuZGxlclJvdy5zYXZpbmcgPSB0cnVlO1xyXG4gICAgICBpZiAoZWRpdG9yLnZhbGlkYXRlKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZWRpdG9yLnZhbGlkYXRlKGl0ZW0sIHRoaXMuaXRlbXMuaW5kZXhPZihpdGVtKSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCByZXN1bHQ7XHJcbiAgICAgICAgICBpZiAobWVzc2FnZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBtZXNzYWdlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHRocm93IHJlc3VsdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVkaXRvci5vblNhdmUpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBlZGl0b3Iub25TYXZlKGl0ZW0pO1xyXG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICBhd2FpdCByZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXRlbS5lZGl0b3JTdGF0dXMgPT09ICdjcmVhdGUnICYmIGVkaXRvci50eXBlID09PSAncG9wdXAnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zLnNwbGljZSgwLCAwLCBpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy52aWV3SXRlbXMuc3BsaWNlKDAsIDAsIGl0ZW0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpdGVtLmVkaXRvclN0YXR1cyA9IHVuZGVmaW5lZDtcclxuICAgICAgLy8gdGhpcy5nZW5lcmF0ZUVkaXRvckhhbmxkZXIoaXRlbSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKGVycik7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICBpdGVtLmVkaXRvckhhbmRsZXJSb3cuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25DYW5jZWwgPSAoaXRlbTogU2RHcmlkTWF0ZXJpYWxJdGVtPFQ+KSA9PiB7XHJcbiAgICBjb25zdCB7IGVkaXRvciB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgaWYgKGVkaXRvci50eXBlID09PSAnaW5saW5lJykge1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICBjb25zdCBpZHgyID0gdGhpcy4jbG9jYWxJdGVtcy5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuI2xvY2FsSXRlbXMuc3BsaWNlKGlkeDIsIDEpO1xyXG4gICAgICAgIHRoaXMuI2xvY2FsSXRlbXMgPSBbLi4udGhpcy4jbG9jYWxJdGVtc107XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaWR4MSA9IHRoaXMuaXRlbXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaWR4MSwgMSk7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgIGVkaXRvcj8ub25DYW5jZWw/LihpdGVtLCB0aGlzLiNsb2NhbEl0ZW1zKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlZGl0b3I/Lm9uQ2FuY2VsPy4oaXRlbSwgdGhpcy5pdGVtcyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZWRpdG9yLnR5cGUgPT09ICdmb2N1cycpIHtcclxuICAgICAgaWYgKGl0ZW0uZWRpdG9yU3RhdHVzID09PSAnY3JlYXRlJykge1xyXG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgICAgY29uc3QgaWR4MiA9IHRoaXMuI2xvY2FsSXRlbXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICAgIHRoaXMuI2xvY2FsSXRlbXMuc3BsaWNlKGlkeDIsIDEpO1xyXG4gICAgICAgICAgdGhpcy4jbG9jYWxJdGVtcyA9IFsuLi50aGlzLiNsb2NhbEl0ZW1zXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaWR4MSA9IHRoaXMuaXRlbXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICB0aGlzLml0ZW1zLnNwbGljZShpZHgxLCAxKTtcclxuICAgICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuaXRlbXNdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oaXRlbSwgaXRlbS5lZGl0b3JIYW5kbGVyUm93LnRlbXBvcmFyeSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGl0ZW0uZWRpdG9yU3RhdHVzID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBvblJlbW92ZSA9IGFzeW5jIChpdGVtOiBTZEdyaWRNYXRlcmlhbEl0ZW08VD4pID0+IHtcclxuICAgIGNvbnN0IHsgZWRpdG9yIH0gPSB0aGlzLmdyaWRPcHRpb247XHJcbiAgICBpZiAoZWRpdG9yPy5iZWZvcmVSZW1vdmUpIHtcclxuICAgICAgY29uc3QgYmVmb3JlUmVtb3ZlID0gZWRpdG9yPy5iZWZvcmVSZW1vdmUoaXRlbSk7XHJcbiAgICAgIGlmIChiZWZvcmVSZW1vdmUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmVmb3JlUmVtb3ZlO1xyXG4gICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghYmVmb3JlUmVtb3ZlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZWRpdG9yLnR5cGUgPT09ICdpbmxpbmUnKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgIGNvbnN0IGlkeDIgPSB0aGlzLiNsb2NhbEl0ZW1zLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgICAgdGhpcy4jbG9jYWxJdGVtcy5zcGxpY2UoaWR4MiwgMSk7XHJcbiAgICAgICAgdGhpcy4jbG9jYWxJdGVtcyA9IFsuLi50aGlzLiNsb2NhbEl0ZW1zXTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpZHgxID0gdGhpcy5pdGVtcy5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpZHgxLCAxKTtcclxuICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zXTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgZWRpdG9yPy5vblJlbW92ZT8uKGl0ZW0sIHRoaXMuI2xvY2FsSXRlbXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGVkaXRvcj8ub25SZW1vdmU/LihpdGVtLCB0aGlzLml0ZW1zKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZCA9IChpZHg6IG51bWJlciwgaXRlbTogVCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID4gaWR4KSB7XHJcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGlkeCwgMCwgaXRlbSk7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuaXRlbXMsIGl0ZW1dO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlID0gKGlkeDogbnVtYmVyLCBpdGVtOiBUKSA9PiB7XHJcbiAgICBpZiAodGhpcy5pdGVtc1tpZHhdKSB7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5pdGVtc1tpZHhdLCBpdGVtKTtcclxuICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZSA9IChpZHg6IG51bWJlcikgPT4ge1xyXG4gICAgaWYgKHRoaXMuaXRlbXNbaWR4XSkge1xyXG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpZHgsIDEpO1xyXG4gICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuaXRlbXNdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaEl0ZW0gPSAoaWR4OiBudW1iZXIpID0+IHtcclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zW2lkeF07XHJcbiAgICB0aGlzLmVkaXRvckhhbmRsZXJDb2x1bW5QaXBlLnRyYW5zZm9ybShpdGVtLnNkVmVyc2lvbiwgaXRlbSwgdGhpcy5ncmlkT3B0aW9uKTtcclxuICB9XHJcblxyXG4gIGdldCBlZGl0ZWRJdGVtcygpOiAoVCAmIHsgZWRpdG9yRXJyb3JNZXNzYWdlOiBzdHJpbmcgfSlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiB7XHJcbiAgICAgIGlmICghaXRlbS5vcmlnaW5JdGVtKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKE9iamVjdC5rZXlzKGl0ZW0ub3JpZ2luSXRlbSkuc29tZShrZXkgPT4gaXRlbS5vcmlnaW5JdGVtW2tleV0gIT09IGl0ZW1ba2V5XSkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9KS5tYXAoaXRlbSA9PiB7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICBlZGl0b3JTdGF0dXMsXHJcbiAgICAgICAgZWRpdG9ySGFuZGxlclJvdyxcclxuICAgICAgICBlZGl0b3JIYW5kbGVyQ29sdW1uLFxyXG4gICAgICAgIGVkaXRvckVycm9yTWVzc2FnZSxcclxuICAgICAgICBleHBhbmREZXRhaWwsXHJcbiAgICAgICAgaXNFeHBhbmRlZCxcclxuICAgICAgICBpc0V4cGFuZGluZyxcclxuICAgICAgICBpc1NlbGVjdGVkLFxyXG4gICAgICAgIG9yaWdpbkl0ZW0sXHJcbiAgICAgICAgc2RJZCxcclxuICAgICAgICBzZFZlcnNpb24sXHJcbiAgICAgICAgc2VsZWN0YWJsZSxcclxuICAgICAgICBhY3Rpb25zLFxyXG4gICAgICAgIGdyb3VwZWRBY3Rpb25zLFxyXG4gICAgICAgIHNkR3JvdXAsXHJcbiAgICAgICAgdGVtcG9yYXJ5LFxyXG4gICAgICAgIC4uLnJlc3VsdCB9ID0gaXRlbTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5yZXN1bHQsXHJcbiAgICAgICAgZWRpdG9yRXJyb3JNZXNzYWdlXHJcbiAgICAgIH0gYXMgYW55O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZ3JpZEl0ZW1zKCk6IFRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5tYXAoaXRlbSA9PiB7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICBlZGl0b3JTdGF0dXMsXHJcbiAgICAgICAgZWRpdG9ySGFuZGxlclJvdyxcclxuICAgICAgICBlZGl0b3JIYW5kbGVyQ29sdW1uLFxyXG4gICAgICAgIGV4cGFuZERldGFpbCxcclxuICAgICAgICBpc0V4cGFuZGVkLFxyXG4gICAgICAgIGlzRXhwYW5kaW5nLFxyXG4gICAgICAgIGlzU2VsZWN0ZWQsXHJcbiAgICAgICAgb3JpZ2luSXRlbSxcclxuICAgICAgICBzZElkLFxyXG4gICAgICAgIHNkVmVyc2lvbixcclxuICAgICAgICBzZWxlY3RhYmxlLFxyXG4gICAgICAgIGFjdGlvbnMsXHJcbiAgICAgICAgZ3JvdXBlZEFjdGlvbnMsXHJcbiAgICAgICAgc2RHcm91cCxcclxuICAgICAgICB0ZW1wb3JhcnksXHJcbiAgICAgICAgLi4ucmVzdWx0IH0gPSBpdGVtO1xyXG4gICAgICByZXR1cm4gcmVzdWx0IGFzIFQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBsb2NhbEl0ZW1zKCk6IFRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy4jbG9jYWxJdGVtcztcclxuICB9XHJcblxyXG4gIGdldCBsb2NhbEdyaWRJdGVtcygpOiBUW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuI2xvY2FsSXRlbXMubWFwKGl0ZW0gPT4ge1xyXG4gICAgICBjb25zdCB7XHJcbiAgICAgICAgZWRpdG9yU3RhdHVzLFxyXG4gICAgICAgIGVkaXRvckhhbmRsZXJSb3csXHJcbiAgICAgICAgZWRpdG9ySGFuZGxlckNvbHVtbixcclxuICAgICAgICBleHBhbmREZXRhaWwsXHJcbiAgICAgICAgaXNFeHBhbmRlZCxcclxuICAgICAgICBpc0V4cGFuZGluZyxcclxuICAgICAgICBpc1NlbGVjdGVkLFxyXG4gICAgICAgIG9yaWdpbkl0ZW0sXHJcbiAgICAgICAgc2RJZCxcclxuICAgICAgICBzZFZlcnNpb24sXHJcbiAgICAgICAgc2VsZWN0YWJsZSxcclxuICAgICAgICBhY3Rpb25zLFxyXG4gICAgICAgIGdyb3VwZWRBY3Rpb25zLFxyXG4gICAgICAgIHNkR3JvdXAsXHJcbiAgICAgICAgdGVtcG9yYXJ5LFxyXG4gICAgICAgIC4uLnJlc3VsdCB9ID0gaXRlbTtcclxuICAgICAgcmV0dXJuIHJlc3VsdCBhcyBUO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZXRlY3RDaGFuZ2VzID0gKCkgPT4gdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICBnZXQgaXNFZGl0aW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuc29tZShlID0+IGUuZWRpdG9yU3RhdHVzICE9PSB1bmRlZmluZWQpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,3 +1,3 @@
1
1
  export class SdGridMaterialQuickFilter {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1maWx0ZXIubW9kZWwuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2dyaWQtbWF0ZXJpYWwvIiwic291cmNlcyI6WyJzcmMvbGliL3NlcnZpY2VzL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyx5QkFBeUI7Q0FXckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtZmlsdGVyLWRlZi5kaXJlY3RpdmVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTZEdyaWRNYXRlcmlhbFF1aWNrRmlsdGVyIHtcclxuICBjb2RlOiBzdHJpbmc7XHJcbiAgY29sdW1uRmlsdGVyOiB7XHJcbiAgICBbZmllbGQ6IHN0cmluZ106IGFueVxyXG4gIH07XHJcbiAgZXh0ZXJuYWxGaWx0ZXI6IHtcclxuICAgIFtmaWVsZDogc3RyaW5nXTogYW55XHJcbiAgfTtcclxuICBmaWx0ZXJEZWY6IHtcclxuICAgIFtmaWVsZDogc3RyaW5nXTogYW55XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb24ge1xyXG4gIHNlbGVjdGVkUXVpY2tGaWx0ZXI6IHN0cmluZztcclxuICBxdWlja0ZpbHRlcnM6IFNkR3JpZE1hdGVyaWFsUXVpY2tGaWx0ZXJbXTtcclxuXHJcbiAgaW5saW5lQ29sdW1uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgLy8g4bqobiBoaeG7h24gZmlsdGVyIGNvbHVtblxyXG4gIGNvbHVtbkZpbHRlcj86IFJlY29yZDxzdHJpbmcsIGFueT47IC8vIEdpw6EgdHLhu4sgZmlsdGVyIGNvbHVtblxyXG5cclxuICBpbmxpbmVFeHRlcm5hbDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47IC8vIOG6qG4gaGnhu4duIGZpbHRlciBleHRlcm5hbFxyXG4gIGV4dGVybmFsRmlsdGVyPzogUmVjb3JkPHN0cmluZywgYW55PjsgLy8gR2nDoSB0cuG7iyBmaWx0ZXIgZXh0ZXJuYWxcclxuXHJcbiAgaW5saW5lRmlsdGVyRGVmOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgLy8g4bqobiBoaeG7h24gZmlsdGVyIGRlZlxyXG4gIGZpbHRlckRlZj86IFJlY29yZDxzdHJpbmcsIGFueT47IC8vIEdpw6EgdHLhu4sgZmlsdGVyIGRlZlxyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZEdyaWRNYXRlcmlhbEZpbHRlclJlcXVlc3Qge1xyXG4gIHJhd0NvbHVtbkZpbHRlcjoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55XHJcbiAgfTtcclxuICByYXdFeHRlcm5hbEZpbHRlcjoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55XHJcbiAgfTtcclxuICByYXdGaWx0ZXJEZWY6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueVxyXG4gIH07XHJcbiAgcGFnZU51bWJlcjogbnVtYmVyO1xyXG4gIHBhZ2VTaXplOiBudW1iZXI7XHJcbiAgb3JkZXJCeTogc3RyaW5nO1xyXG4gIG9yZGVyRGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJyB8ICcnO1xyXG4gIGlzRXhwb3J0ZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNkR3JpZE1hdGVyaWFsRmlsdGVyT3B0aW9uIHtcclxuICBrZXk/OiBzdHJpbmc7XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGV4dGVybmFsRmlsdGVycz86IFNkR3JpZE1hdGVyaWFsRXh0ZXJuYWxGaWx0ZXJbXTtcclxuICBpbmxpbmVDb2x1bW4/OiBib29sZWFuO1xyXG4gIHNvcnRzPzogc3RyaW5nW107XHJcbiAgZW5hYmxlQ29sbGFwc2U/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIFNkR3JpZE1hdGVyaWFsRXh0ZXJuYWxGaWx0ZXIgPVxyXG4gIFRleHRGaWx0ZXIgfFxyXG4gIERhdGVGaWx0ZXIgfFxyXG4gIERhdGVUaW1lRmlsdGVyIHxcclxuICBEYXRlUmFuZ2VGaWx0ZXIgfFxyXG4gIE51bWJlckZpbHRlciB8XHJcbiAgVmFsdWVzRmlsdGVyIHxcclxuICBCb29sRmlsdGVyO1xyXG5cclxuaW50ZXJmYWNlIEJhc2VGaWx0ZXIge1xyXG4gIGZpZWxkOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBkZWZhdWx0U2hvd2luZz86IGJvb2xlYW47XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVGV4dEZpbHRlciBleHRlbmRzIEJhc2VGaWx0ZXIge1xyXG4gIHR5cGU6ICdzdHJpbmcnO1xyXG4gIGRlZmF1bHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBEYXRlRmlsdGVyIGV4dGVuZHMgQmFzZUZpbHRlciB7XHJcbiAgdHlwZTogJ2RhdGUnO1xyXG4gIGRlZmF1bHQ/OiBEYXRlIHwgc3RyaW5nO1xyXG4gIG1pbkRhdGU/OiBzdHJpbmcgfCBEYXRlO1xyXG4gIG1heERhdGU/OiBzdHJpbmcgfCBEYXRlO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRGF0ZVRpbWVGaWx0ZXIgZXh0ZW5kcyBCYXNlRmlsdGVyIHtcclxuICB0eXBlOiAnZGF0ZXRpbWUnO1xyXG4gIGRlZmF1bHQ/OiBEYXRlIHwgc3RyaW5nO1xyXG4gIG1pbkRhdGU/OiBzdHJpbmcgfCBEYXRlO1xyXG4gIG1heERhdGU/OiBzdHJpbmcgfCBEYXRlO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRGF0ZVJhbmdlRmlsdGVyIGV4dGVuZHMgQmFzZUZpbHRlciB7XHJcbiAgdHlwZTogJ2RhdGVyYW5nZSc7XHJcbiAgZW5hYmxlVGltZT86IGJvb2xlYW47XHJcbiAgbWluRGF0ZT86IHN0cmluZyB8IERhdGU7XHJcbiAgbWF4RGF0ZT86IHN0cmluZyB8IERhdGU7XHJcbiAgZGVmYXVsdD86IHtcclxuICAgIGZyb20/OiBEYXRlIHwgc3RyaW5nO1xyXG4gICAgdG8/OiBEYXRlIHwgc3RyaW5nO1xyXG4gIH07XHJcbn1cclxuXHJcbmludGVyZmFjZSBOdW1iZXJGaWx0ZXIgZXh0ZW5kcyBCYXNlRmlsdGVyIHtcclxuICB0eXBlOiAnbnVtYmVyJztcclxuICBkZWZhdWx0PzogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVmFsdWVzRmlsdGVyIGV4dGVuZHMgQmFzZUZpbHRlciB7XHJcbiAgdHlwZTogJ3ZhbHVlcyc7XHJcbiAgb3B0aW9uPzoge1xyXG4gICAgaXRlbXM6IGFueVtdIHwgKChzZWFyY2hUZXh0Pzogc3RyaW5nKSA9PiBQcm9taXNlPGFueVtdPik7XHJcbiAgICB2YWx1ZUZpZWxkOiBzdHJpbmc7XHJcbiAgICBkaXNwbGF5RmllbGQ6IHN0cmluZztcclxuICAgIHNlbGVjdGlvbj86ICdBVVRPQ09NUExFVEUnIHwgJ01VTFRJUExFJyB8ICdNVUxUSVBMRUFVVE9DT01QTEVURSc7XHJcbiAgICBzZWxlY3RBbGw/OiBib29sZWFuXHJcbiAgfTtcclxuICBkZWZhdWx0Pzogc3RyaW5nIHwgc3RyaW5nW107XHJcbn1cclxuXHJcbmludGVyZmFjZSBCb29sRmlsdGVyIGV4dGVuZHMgQmFzZUZpbHRlciB7XHJcbiAgdHlwZTogJ2Jvb2wnO1xyXG4gIG9wdGlvbj86IHtcclxuICAgIGRpc3BsYXlPblRydWU/OiBzdHJpbmc7XHJcbiAgICBkaXNwbGF5T25GYWxzZT86IHN0cmluZztcclxuICB9O1xyXG4gIGRlZmF1bHQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNkR3JpZE1hdGVyaWFsRmlsdGVyUmVnaXN0ZXIge1xyXG4gIGdldDogKCkgPT4gU2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uO1xyXG4gIHNldDogKGNvbmZpZ3VyYXRpb246IFBhcnRpYWw8U2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uPikgPT4gU2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uO1xyXG4gIHJlbW92ZTogKCkgPT4gdm9pZDtcclxuICBzdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8U2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uPjtcclxuICBvYnNlcnZlcjogT2JzZXJ2YWJsZTxTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb24+O1xyXG59Il19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1maWx0ZXIubW9kZWwuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2dyaWQtbWF0ZXJpYWwvIiwic291cmNlcyI6WyJzcmMvbGliL3NlcnZpY2VzL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyx5QkFBeUI7Q0FXckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtZmlsdGVyLWRlZi5kaXJlY3RpdmVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTZEdyaWRNYXRlcmlhbFF1aWNrRmlsdGVyIHtcclxuICBjb2RlOiBzdHJpbmc7XHJcbiAgY29sdW1uRmlsdGVyOiB7XHJcbiAgICBbZmllbGQ6IHN0cmluZ106IGFueVxyXG4gIH07XHJcbiAgZXh0ZXJuYWxGaWx0ZXI6IHtcclxuICAgIFtmaWVsZDogc3RyaW5nXTogYW55XHJcbiAgfTtcclxuICBmaWx0ZXJEZWY6IHtcclxuICAgIFtmaWVsZDogc3RyaW5nXTogYW55XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb24ge1xyXG4gIC8vIHNlbGVjdGVkUXVpY2tGaWx0ZXI6IHN0cmluZztcclxuICAvLyBxdWlja0ZpbHRlcnM6IFNkR3JpZE1hdGVyaWFsUXVpY2tGaWx0ZXJbXTtcclxuXHJcbiAgaW5saW5lQ29sdW1uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgLy8g4bqobiBoaeG7h24gZmlsdGVyIGNvbHVtblxyXG4gIC8vIGNvbHVtbkZpbHRlcj86IFJlY29yZDxzdHJpbmcsIGFueT47IC8vIEdpw6EgdHLhu4sgZmlsdGVyIGNvbHVtblxyXG5cclxuICBpbmxpbmVFeHRlcm5hbDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47IC8vIOG6qG4gaGnhu4duIGZpbHRlciBleHRlcm5hbFxyXG4gIC8vIGV4dGVybmFsRmlsdGVyPzogUmVjb3JkPHN0cmluZywgYW55PjsgLy8gR2nDoSB0cuG7iyBmaWx0ZXIgZXh0ZXJuYWxcclxuXHJcbiAgaW5saW5lRmlsdGVyRGVmOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgLy8g4bqobiBoaeG7h24gZmlsdGVyIGRlZlxyXG4gIC8vIGZpbHRlckRlZj86IFJlY29yZDxzdHJpbmcsIGFueT47IC8vIEdpw6EgdHLhu4sgZmlsdGVyIGRlZlxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNkR3JpZE1hdGVyaWFsRmlsdGVyVmFsdWUge1xyXG4gIGNvbHVtbkZpbHRlcj86IFJlY29yZDxzdHJpbmcsIGFueT47IC8vIEdpw6EgdHLhu4sgZmlsdGVyIGNvbHVtblxyXG5cclxuICBleHRlcm5hbEZpbHRlcj86IFJlY29yZDxzdHJpbmcsIGFueT47IC8vIEdpw6EgdHLhu4sgZmlsdGVyIGV4dGVybmFsXHJcblxyXG4gIGZpbHRlckRlZj86IFJlY29yZDxzdHJpbmcsIGFueT47IC8vIEdpw6EgdHLhu4sgZmlsdGVyIGRlZlxyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZEdyaWRNYXRlcmlhbEZpbHRlclJlcXVlc3Qge1xyXG4gIHJhd0NvbHVtbkZpbHRlcjoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55XHJcbiAgfTtcclxuICByYXdFeHRlcm5hbEZpbHRlcjoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55XHJcbiAgfTtcclxuICByYXdGaWx0ZXJEZWY6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueVxyXG4gIH07XHJcbiAgcGFnZU51bWJlcjogbnVtYmVyO1xyXG4gIHBhZ2VTaXplOiBudW1iZXI7XHJcbiAgb3JkZXJCeTogc3RyaW5nO1xyXG4gIG9yZGVyRGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJyB8ICcnO1xyXG4gIGlzRXhwb3J0ZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNkR3JpZE1hdGVyaWFsRmlsdGVyT3B0aW9uIHtcclxuICBrZXk/OiBzdHJpbmc7XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGV4dGVybmFsRmlsdGVycz86IFNkR3JpZE1hdGVyaWFsRXh0ZXJuYWxGaWx0ZXJbXTtcclxuICBpbmxpbmVDb2x1bW4/OiBib29sZWFuO1xyXG4gIHNvcnRzPzogc3RyaW5nW107XHJcbiAgZW5hYmxlQ29sbGFwc2U/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIFNkR3JpZE1hdGVyaWFsRXh0ZXJuYWxGaWx0ZXIgPVxyXG4gIFRleHRGaWx0ZXIgfFxyXG4gIERhdGVGaWx0ZXIgfFxyXG4gIERhdGVUaW1lRmlsdGVyIHxcclxuICBEYXRlUmFuZ2VGaWx0ZXIgfFxyXG4gIE51bWJlckZpbHRlciB8XHJcbiAgVmFsdWVzRmlsdGVyIHxcclxuICBCb29sRmlsdGVyO1xyXG5cclxuaW50ZXJmYWNlIEJhc2VGaWx0ZXIge1xyXG4gIGZpZWxkOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBkZWZhdWx0U2hvd2luZz86IGJvb2xlYW47XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVGV4dEZpbHRlciBleHRlbmRzIEJhc2VGaWx0ZXIge1xyXG4gIHR5cGU6ICdzdHJpbmcnO1xyXG4gIGRlZmF1bHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBEYXRlRmlsdGVyIGV4dGVuZHMgQmFzZUZpbHRlciB7XHJcbiAgdHlwZTogJ2RhdGUnO1xyXG4gIGRlZmF1bHQ/OiBEYXRlIHwgc3RyaW5nO1xyXG4gIG1pbkRhdGU/OiBzdHJpbmcgfCBEYXRlO1xyXG4gIG1heERhdGU/OiBzdHJpbmcgfCBEYXRlO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRGF0ZVRpbWVGaWx0ZXIgZXh0ZW5kcyBCYXNlRmlsdGVyIHtcclxuICB0eXBlOiAnZGF0ZXRpbWUnO1xyXG4gIGRlZmF1bHQ/OiBEYXRlIHwgc3RyaW5nO1xyXG4gIG1pbkRhdGU/OiBzdHJpbmcgfCBEYXRlO1xyXG4gIG1heERhdGU/OiBzdHJpbmcgfCBEYXRlO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRGF0ZVJhbmdlRmlsdGVyIGV4dGVuZHMgQmFzZUZpbHRlciB7XHJcbiAgdHlwZTogJ2RhdGVyYW5nZSc7XHJcbiAgZW5hYmxlVGltZT86IGJvb2xlYW47XHJcbiAgbWluRGF0ZT86IHN0cmluZyB8IERhdGU7XHJcbiAgbWF4RGF0ZT86IHN0cmluZyB8IERhdGU7XHJcbiAgZGVmYXVsdD86IHtcclxuICAgIGZyb20/OiBEYXRlIHwgc3RyaW5nO1xyXG4gICAgdG8/OiBEYXRlIHwgc3RyaW5nO1xyXG4gIH07XHJcbn1cclxuXHJcbmludGVyZmFjZSBOdW1iZXJGaWx0ZXIgZXh0ZW5kcyBCYXNlRmlsdGVyIHtcclxuICB0eXBlOiAnbnVtYmVyJztcclxuICBkZWZhdWx0PzogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVmFsdWVzRmlsdGVyIGV4dGVuZHMgQmFzZUZpbHRlciB7XHJcbiAgdHlwZTogJ3ZhbHVlcyc7XHJcbiAgb3B0aW9uPzoge1xyXG4gICAgaXRlbXM6IGFueVtdIHwgKChzZWFyY2hUZXh0Pzogc3RyaW5nKSA9PiBQcm9taXNlPGFueVtdPik7XHJcbiAgICB2YWx1ZUZpZWxkOiBzdHJpbmc7XHJcbiAgICBkaXNwbGF5RmllbGQ6IHN0cmluZztcclxuICAgIHNlbGVjdGlvbj86ICdBVVRPQ09NUExFVEUnIHwgJ01VTFRJUExFJyB8ICdNVUxUSVBMRUFVVE9DT01QTEVURSc7XHJcbiAgICBzZWxlY3RBbGw/OiBib29sZWFuXHJcbiAgfTtcclxuICBkZWZhdWx0Pzogc3RyaW5nIHwgc3RyaW5nW107XHJcbn1cclxuXHJcbmludGVyZmFjZSBCb29sRmlsdGVyIGV4dGVuZHMgQmFzZUZpbHRlciB7XHJcbiAgdHlwZTogJ2Jvb2wnO1xyXG4gIG9wdGlvbj86IHtcclxuICAgIGRpc3BsYXlPblRydWU/OiBzdHJpbmc7XHJcbiAgICBkaXNwbGF5T25GYWxzZT86IHN0cmluZztcclxuICB9O1xyXG4gIGRlZmF1bHQ/OiBib29sZWFuO1xyXG59XHJcblxyXG4vLyBleHBvcnQgaW50ZXJmYWNlIFNkR3JpZE1hdGVyaWFsRmlsdGVyUmVnaXN0ZXIge1xyXG4vLyAgIGdldDogKCkgPT4gU2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uO1xyXG4vLyAgIHNldDogKGNvbmZpZ3VyYXRpb246IFBhcnRpYWw8U2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uPikgPT4gU2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uO1xyXG4vLyAgIHJlbW92ZTogKCkgPT4gdm9pZDtcclxuLy8gICBzdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8U2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uPjtcclxuLy8gICBvYnNlcnZlcjogT2JzZXJ2YWJsZTxTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb24+O1xyXG4vLyB9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNkR3JpZE1hdGVyaWFsRmlsdGVyUmVnaXN0ZXIge1xyXG4gIGNvbmZpZ3VyYXRpb246IHtcclxuICAgIGdldDogKCkgPT4gU2RHcmlkTWF0ZXJpYWxGaWx0ZXJDb25maWd1cmF0aW9uO1xyXG4gICAgc2V0OiAoY29uZmlndXJhdGlvbjogUGFydGlhbDxTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb24+KSA9PiBTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb247XHJcbiAgICByZW1vdmU6ICgpID0+IHZvaWQ7XHJcbiAgICBvYnNlcnZlcjogT2JzZXJ2YWJsZTxTZEdyaWRNYXRlcmlhbEZpbHRlckNvbmZpZ3VyYXRpb24+O1xyXG4gIH0sXHJcbiAgdmFsdWU6IHtcclxuICAgIGdldDogKCkgPT4gU2RHcmlkTWF0ZXJpYWxGaWx0ZXJWYWx1ZTtcclxuICAgIHNldDogKHZhbHVlOiBQYXJ0aWFsPFNkR3JpZE1hdGVyaWFsRmlsdGVyVmFsdWU+KSA9PiBTZEdyaWRNYXRlcmlhbEZpbHRlclZhbHVlO1xyXG4gICAgcmVtb3ZlOiAoKSA9PiB2b2lkO1xyXG4gICAgb2JzZXJ2ZXI6IE9ic2VydmFibGU8U2RHcmlkTWF0ZXJpYWxGaWx0ZXJWYWx1ZT47XHJcbiAgfVxyXG59Il19