igniteui-angular 12.3.16 → 12.3.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +252 -252
- package/bundles/igniteui-angular.umd.js +14 -14
- package/bundles/igniteui-angular.umd.js.map +1 -1
- package/esm2015/lib/carousel/carousel-base.js +1 -1
- package/esm2015/lib/carousel/public_api.js +1 -1
- package/esm2015/lib/grids/common/cell.interface.js +1 -1
- package/esm2015/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.js +2 -2
- package/esm2015/lib/grids/filtering/excel-style/excel-style-header.component.js +2 -2
- package/esm2015/lib/grids/filtering/excel-style/public_api.js +1 -1
- package/esm2015/lib/grids/grid-public-cell.js +1 -1
- package/esm2015/lib/grids/grid-public-row.js +1 -1
- package/esm2015/lib/grids/grouping/group-by-area.directive.js +1 -1
- package/esm2015/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.js +2 -2
- package/esm2015/lib/grids/toolbar/grid-toolbar-exporter.component.js +2 -2
- package/esm2015/lib/grids/toolbar/grid-toolbar-hiding.component.js +2 -2
- package/esm2015/lib/grids/toolbar/grid-toolbar-pinning.component.js +2 -2
- package/esm2015/lib/grids/tree-grid/tree-grid.filtering.strategy.js +1 -1
- package/esm2015/lib/tabs/bottom-nav/bottom-nav-content.component.js +2 -2
- package/esm2015/lib/tabs/bottom-nav/bottom-nav-header.component.js +2 -2
- package/esm2015/lib/tabs/bottom-nav/bottom-nav-item.component.js +2 -2
- package/esm2015/lib/tabs/bottom-nav/bottom-nav.component.js +2 -2
- package/esm2015/lib/tabs/bottom-nav/bottom-nav.directives.js +1 -1
- package/esm2015/lib/tabs/bottom-nav/bottom-nav.module.js +1 -1
- package/esm2015/lib/tabs/bottom-nav/public_api.js +1 -1
- package/esm2015/lib/tabs/public_api.js +1 -1
- package/esm2015/lib/tabs/tab-content.directive.js +1 -1
- package/esm2015/lib/tabs/tab-header.directive.js +1 -1
- package/esm2015/lib/tabs/tab-item.directive.js +1 -1
- package/esm2015/lib/tabs/tabs/public_api.js +1 -1
- package/esm2015/lib/tabs/tabs/tab-content.component.js +2 -2
- package/esm2015/lib/tabs/tabs/tab-header.component.js +2 -2
- package/esm2015/lib/tabs/tabs/tab-item.component.js +2 -2
- package/esm2015/lib/tabs/tabs/tabs.component.js +2 -2
- package/esm2015/lib/tabs/tabs/tabs.directives.js +1 -1
- package/esm2015/lib/tabs/tabs/tabs.module.js +1 -1
- package/esm2015/lib/tabs/tabs.base.js +1 -1
- package/esm2015/lib/tabs/tabs.directive.js +1 -1
- package/fesm2015/igniteui-angular.js +14 -14
- package/fesm2015/igniteui-angular.js.map +1 -1
- package/igniteui-angular.metadata.json +1 -1
- package/migrations/update-12_1_0/changes/classes.json +28 -28
- package/package.json +1 -1
|
@@ -12,7 +12,7 @@ IgxExcelStyleHeaderComponent.decorators = [
|
|
|
12
12
|
{ type: Component, args: [{
|
|
13
13
|
preserveWhitespaces: false,
|
|
14
14
|
selector: 'igx-excel-style-header',
|
|
15
|
-
template: "<header *ngIf=\"esf.column\"\
|
|
15
|
+
template: "<header *ngIf=\"esf.column\"\n class=\"igx-excel-filter__menu-header\">\n <h4>{{ esf.column.header || esf.column.field }}</h4>\n <div class=\"igx-excel-filter__menu-header-actions\">\n <button *ngIf=\"showSelecting\"\n igxButton=\"icon\"\n (click)=\"esf.onSelect()\"\n [ngClass]=\"esf.selectedClass()\"\n [attr.aria-label]=\"esf.column.selected ? esf.grid.resourceStrings.igx_grid_excel_deselect : esf.grid.resourceStrings.igx_grid_excel_select\"\n >\n <igx-icon>done</igx-icon>\n </button>\n <button *ngIf=\"showPinning\"\n igxButton=\"icon\"\n (click)=\"esf.onPin()\"\n [attr.aria-label]=\"esf.column.pinned ? esf.grid.resourceStrings.igx_grid_excel_unpin : esf.grid.resourceStrings.igx_grid_excel_pin\"\n >\n <igx-icon family=\"imx-icons\" [name]=\"esf.column.pinned ? 'unpin-left' : 'pin-left'\"></igx-icon>\n </button>\n <button *ngIf=\"showHiding\"\n igxButton=\"icon\"\n (click)=\"esf.onHideToggle()\"\n [attr.aria-label]=\"esf.column.hidden ? esf.grid.resourceStrings.igx_grid_excel_show : esf.grid.resourceStrings.igx_grid_excel_hide\"\n >\n <igx-icon>{{ esf.column.hidden ? 'visibility' : 'visibility_off' }}</igx-icon>\n </button>\n </div>\n</header>\n"
|
|
16
16
|
},] }
|
|
17
17
|
];
|
|
18
18
|
IgxExcelStyleHeaderComponent.ctorParameters = () => [
|
|
@@ -23,4 +23,4 @@ IgxExcelStyleHeaderComponent.propDecorators = {
|
|
|
23
23
|
showSelecting: [{ type: Input }],
|
|
24
24
|
showHiding: [{ type: Input }]
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwtc3R5bGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9maWx0ZXJpbmcvZXhjZWwtc3R5bGUvZXhjZWwtc3R5bGUtaGVhZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU3Rjs7R0FFRztBQU1ILE1BQU0sT0FBTyw0QkFBNEI7SUFxQ3JDLFlBQW1CLEdBQXdDO1FBQXhDLFFBQUcsR0FBSCxHQUFHLENBQXFDO0lBQUksQ0FBQzs7O1lBMUNuRSxTQUFTLFNBQUM7Z0JBQ1AsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMscTNDQUFrRDthQUNyRDs7O1lBVFEsbUNBQW1DOzs7MEJBb0J2QyxLQUFLOzRCQVlMLEtBQUs7eUJBWUwsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneEdyaWRFeGNlbFN0eWxlRmlsdGVyaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9ncmlkLmV4Y2VsLXN0eWxlLWZpbHRlcmluZy5jb21wb25lbnQnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHVzZWQgZm9yIHByZXNlbnRpbmcgRXhjZWwgc3R5bGUgaGVhZGVyIFVJLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICBzZWxlY3RvcjogJ2lneC1leGNlbC1zdHlsZS1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9leGNlbC1zdHlsZS1oZWFkZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIElneEV4Y2VsU3R5bGVIZWFkZXJDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIFNldHMgd2hldGhlciB0aGUgY29sdW1uIHBpbm5pbmcgaWNvbiBzaG91bGQgYmUgc2hvd24gaW4gdGhlIGhlYWRlci5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWV4Y2VsLXN0eWxlLWhlYWRlciBbc2hvd1Bpbm5pbmddPVwidHJ1ZVwiPjwvaWd4LWV4Y2VsLXN0eWxlLWhlYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93UGlubmluZzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFNldHMgd2hldGhlciB0aGUgY29sdW1uIHNlbGVjdGluZyBpY29uIHNob3VsZCBiZSBzaG93biBpbiB0aGUgaGVhZGVyLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZXhjZWwtc3R5bGUtaGVhZGVyIFtzaG93U2VsZWN0aW5nXT1cInRydWVcIj48L2lneC1leGNlbC1zdHlsZS1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd1NlbGVjdGluZzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFNldHMgd2hldGhlciB0aGUgY29sdW1uIGhpZGluZyBpY29uIHNob3VsZCBiZSBzaG93biBpbiB0aGUgaGVhZGVyLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZXhjZWwtc3R5bGUtaGVhZGVyIFtzaG93SGlkaW5nXT1cInRydWVcIj48L2lneC1leGNlbC1zdHlsZS1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0hpZGluZzogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlc2Y6IElneEdyaWRFeGNlbFN0eWxlRmlsdGVyaW5nQ29tcG9uZW50KSB7IH1cbn1cbiJdfQ==
|
|
@@ -8,4 +8,4 @@ export * from './excel-style-search.component';
|
|
|
8
8
|
export * from './excel-style-selecting.component';
|
|
9
9
|
export * from './excel-style-sorting.component';
|
|
10
10
|
export * from './grid.excel-style-filtering.component';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9maWx0ZXJpbmcvZXhjZWwtc3R5bGUvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHdDQUF3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9leGNlbC1zdHlsZS1jbGVhci1maWx0ZXJzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2V4Y2VsLXN0eWxlLWNvbmRpdGlvbmFsLWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9leGNlbC1zdHlsZS1oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZXhjZWwtc3R5bGUtaGlkaW5nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2V4Y2VsLXN0eWxlLW1vdmluZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9leGNlbC1zdHlsZS1waW5uaW5nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2V4Y2VsLXN0eWxlLXNlYXJjaC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9leGNlbC1zdHlsZS1zZWxlY3RpbmcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZXhjZWwtc3R5bGUtc29ydGluZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkLmV4Y2VsLXN0eWxlLWZpbHRlcmluZy5jb21wb25lbnQnO1xuIl19
|
|
@@ -246,4 +246,4 @@ export class IgxGridCell {
|
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wdWJsaWMtY2VsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9ncmlkLXB1YmxpYy1jZWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVNsRCxNQUFNLE9BQU8sV0FBVztJQW9CdkIsWUFBWSxJQUE0RSxFQUN2RixHQUFZLEVBQ1osTUFBMEI7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7U0FDckI7YUFBTTtZQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztTQUMzQjtRQUNELElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFO1lBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO1NBQzNCO2FBQU07WUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztTQUN0QjtJQUNGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxHQUFHO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILElBQVcsTUFBTTtRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxTQUFTO1FB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YyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckQsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUs7Z0JBQzFELGNBQWMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRO2dCQUM1QyxjQUFjLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQzdDLE9BQU8sYUFBYSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRU8sT0FBTztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZXNvbHZlTmVzdGVkUGF0aCB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xyXG5pbXBvcnQgeyBDZWxsVHlwZSB9IGZyb20gJy4vY29tbW9uL2NlbGwuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUm93VHlwZSB9IGZyb20gJy4vY29tbW9uL3Jvdy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJZ3hHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9ncmlkL3B1YmxpY19hcGknO1xyXG5pbXBvcnQgeyBJZ3hIaWVyYXJjaGljYWxHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9oaWVyYXJjaGljYWwtZ3JpZC9wdWJsaWNfYXBpJztcclxuaW1wb3J0IHsgSWd4Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9wdWJsaWNfYXBpJztcclxuaW1wb3J0IHsgSVNlbGVjdGlvbk5vZGUgfSBmcm9tICcuL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IElneFRyZWVHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLWdyaWQvcHVibGljX2FwaSc7XHJcblxyXG5leHBvcnQgY2xhc3MgSWd4R3JpZENlbGwgaW1wbGVtZW50cyBDZWxsVHlwZSB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHVybnMgdGhlIGdyaWQgY29udGFpbmluZyB0aGUgY2VsbC5cclxuXHQgKlxyXG5cdCAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBncmlkOiBJZ3hHcmlkQ29tcG9uZW50IHwgSWd4VHJlZUdyaWRDb21wb25lbnQgfCBJZ3hIaWVyYXJjaGljYWxHcmlkQ29tcG9uZW50O1xyXG5cdHByaXZhdGUgX3JvdzogUm93VHlwZTtcclxuXHRwcml2YXRlIF9yb3dJbmRleDogbnVtYmVyO1xyXG5cdHByaXZhdGUgX2NvbHVtbjogSWd4Q29sdW1uQ29tcG9uZW50O1xyXG5cdHByaXZhdGUgX2NvbHVtbkZpZWxkOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBoaWRkZW5cclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdGdyaWQ6IElneEdyaWRDb21wb25lbnQgfCBJZ3hUcmVlR3JpZENvbXBvbmVudCB8IElneEhpZXJhcmNoaWNhbEdyaWRDb21wb25lbnQsXHJcblx0XHRyb3c6IG51bWJlciB8IFJvd1R5cGUsXHJcblx0XHRjb2x1bW46IHN0cmluZyB8IElneENvbHVtbkNvbXBvbmVudCk7XHJcblx0Y29uc3RydWN0b3IoZ3JpZDogSWd4R3JpZENvbXBvbmVudCB8IElneFRyZWVHcmlkQ29tcG9uZW50IHwgSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudCxcclxuXHRcdHJvdzogUm93VHlwZSxcclxuXHRcdGNvbHVtbjogSWd4Q29sdW1uQ29tcG9uZW50KSB7XHJcblx0XHR0aGlzLmdyaWQgPSBncmlkO1xyXG5cdFx0aWYgKHR5cGVvZiByb3cgPT09ICdudW1iZXInKSB7XHJcblx0XHRcdHRoaXMuX3Jvd0luZGV4ID0gcm93O1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5fcm93ID0gcm93O1xyXG5cdFx0XHR0aGlzLl9yb3dJbmRleCA9IHJvdy5pbmRleDtcclxuXHRcdH1cclxuXHRcdGlmICh0eXBlb2YgY29sdW1uID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHR0aGlzLl9jb2x1bW5GaWVsZCA9IGNvbHVtbjtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuX2NvbHVtbiA9IGNvbHVtbjtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHVybnMgdGhlIHJvdyBjb250YWluaW5nIHRoZSBjZWxsLlxyXG5cdCAqIGBgYHR5cGVzY3JpcHRcclxuXHQgKiBsZXQgcm93ID0gdGhpcy5jZWxsLnJvdztcclxuXHQgKiBgYGBcclxuXHQgKlxyXG5cdCAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgcm93KCk6IFJvd1R5cGUge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3JvdyB8fCB0aGlzLmdyaWQuY3JlYXRlUm93KHRoaXMuX3Jvd0luZGV4KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHVybnMgdGhlIGNvbHVtbiBvZiB0aGUgY2VsbC5cclxuXHQgKiBgYGB0eXBlc2NyaXB0XHJcblx0ICogbGV0IGNvbHVtbiA9IHRoaXMuY2VsbC5jb2x1bW47XHJcblx0ICogYGBgXHJcblx0ICpcclxuXHQgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IGNvbHVtbigpOiBJZ3hDb2x1bW5Db21wb25lbnQge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2NvbHVtbiB8fCB0aGlzLmdyaWQuZ2V0Q29sdW1uQnlOYW1lKHRoaXMuX2NvbHVtbkZpZWxkKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGN1cnJlbnQgZWRpdCB2YWx1ZSB3aGlsZSBhIGNlbGwgaXMgaW4gZWRpdCBtb2RlLlxyXG5cdCAqIGBgYHR5cGVzY3JpcHRcclxuXHQgKiBsZXQgZWRpdFZhbHVlID0gdGhpcy5jZWxsLmVkaXRWYWx1ZTtcclxuXHQgKiBgYGBcclxuXHQgKlxyXG5cdCAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgZWRpdFZhbHVlKCk6IGFueSB7XHJcblx0XHRpZiAodGhpcy5pc0NlbGxJbkVkaXRNb2RlKCkpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuZ3JpZC5jcnVkU2VydmljZS5jZWxsLmVkaXRWYWx1ZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgdGhlIGN1cnJlbnQgZWRpdCB2YWx1ZSB3aGlsZSBhIGNlbGwgaXMgaW4gZWRpdCBtb2RlLlxyXG5cdCAqIE9ubHkgZm9yIGNlbGwgZWRpdGluZyBtb2RlLlxyXG5cdCAqIGBgYHR5cGVzY3JpcHRcclxuXHQgKiB0aGlzLmNlbGwuZWRpdFZhbHVlID0gdmFsdWU7XHJcblx0ICogYGBgXHJcblx0ICpcclxuXHQgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcclxuXHQgKi9cclxuXHRwdWJsaWMgc2V0IGVkaXRWYWx1ZSh2YWx1ZTogYW55KSB7XHJcblx0XHRpZiAodGhpcy5pc0NlbGxJbkVkaXRNb2RlKCkpIHtcclxuXHRcdFx0dGhpcy5ncmlkLmNydWRTZXJ2aWNlLmNlbGwuZWRpdFZhbHVlID0gdmFsdWU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGNlbGwgaXMgZWRpdGFibGUuLlxyXG5cdCAqXHJcblx0ICogQG1lbWJlcm9mIElneEdyaWRDZWxsXHJcblx0ICovXHJcblx0cHVibGljIGdldCBlZGl0YWJsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmNvbHVtbi5lZGl0YWJsZSAmJiAhdGhpcy5yb3c/LmRpc2FibGVkO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgd2lkdGggb2YgdGhlIGNlbGwuXHJcblx0ICogYGBgdHlwZXNjcmlwdFxyXG5cdCAqIGxldCBjZWxsV2lkdGggPSB0aGlzLmNlbGwud2lkdGg7XHJcblx0ICogYGBgXHJcblx0ICpcclxuXHQgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IHdpZHRoKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5jb2x1bW4ud2lkdGg7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXR1cm5zIHRoZSBjZWxsIHZhbHVlLlxyXG5cdCAqXHJcblx0ICogQG1lbWJlcm9mIElneEdyaWRDZWxsXHJcblx0ICovXHJcblx0cHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xyXG5cdFx0Ly8gd2lsbCByZXR1cm4gdW5kZWZpbmVkIGZvciBhIGNvbHVtbiBsYXlvdXQsIGJlY2F1c2UgZ2V0Q2VsbEJ5Q29sdW1uVmlzaWJsZUluZGV4IG1heSByZXR1cm4gdGhlIGNvbHVtbiBsYXlvdXQgYXQgdGhhdCBpbmRleC5cclxuXHRcdC8vIGdldENlbGxCeUNvbHVtblZpc2libGVJbmRleCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25cclxuXHRcdHJldHVybiB0aGlzLmNvbHVtbi5maWVsZCA/XHJcblx0XHRcdHRoaXMuY29sdW1uLmhhc05lc3RlZFBhdGggPyByZXNvbHZlTmVzdGVkUGF0aCh0aGlzLnJvdz8uZGF0YSwgdGhpcy5jb2x1bW4uZmllbGQpIDogdGhpcy5yb3c/LmRhdGFbdGhpcy5jb2x1bW4uZmllbGRdXHJcblx0XHRcdDogdW5kZWZpbmVkO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlcyB0aGUgY2VsbCB2YWx1ZS5cclxuXHQgKlxyXG5cdCAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXQgdmFsdWUodmFsOiBhbnkpIHtcclxuXHRcdHRoaXMudXBkYXRlKHZhbCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHRoZSBjZWxsIGlkLlxyXG5cdCAqIEEgY2VsbCBpbiB0aGUgZ3JpZCBpcyBpZGVudGlmaWVkIGJ5OlxyXG5cdCAqIC0gcm93SUQgLSBwcmltYXJ5S2V5IGRhdGEgdmFsdWUgb3IgdGhlIHdob2xlIHJvd0RhdGEsIGlmIHRoZSBwcmltYXJ5S2V5IGlzIG9taXR0ZWQuXHJcblx0ICogLSByb3dJbmRleCAtIHRoZSByb3cgaW5kZXhcclxuXHQgKiAtIGNvbHVtbklEIC0gY29sdW1uIGluZGV4XHJcblx0ICpcclxuXHQgKiBgYGB0eXBlc2NyaXB0XHJcblx0ICogbGV0IGNlbGxJRCA9IGNlbGwuaWQ7XHJcblx0ICogYGBgXHJcblx0ICpcclxuXHQgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IGlkKCk6IGFueSB7XHJcblx0XHRjb25zdCBwcmltYXJ5S2V5ID0gdGhpcy5ncmlkLnByaW1hcnlLZXk7XHJcblx0XHRjb25zdCByb3dJRCA9IHByaW1hcnlLZXkgPyB0aGlzLnJvdz8uZGF0YVtwcmltYXJ5S2V5XSA6IHRoaXMucm93Py5kYXRhO1xyXG5cdFx0cmV0dXJuIHsgcm93SUQsIGNvbHVtbklEOiB0aGlzLmNvbHVtbi5pbmRleCwgcm93SW5kZXg6IHRoaXMuX3Jvd0luZGV4IHx8IHRoaXMucm93Py5pbmRleCB9O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0dXJucyBpZiB0aGUgcm93IGlzIGN1cnJlbnRseSBpbiBlZGl0IG1vZGUuXHJcblx0ICpcclxuXHQgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IGVkaXRNb2RlKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaXNDZWxsSW5FZGl0TW9kZSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU3RhcnRzL2VuZHMgZWRpdCBtb2RlIGZvciB0aGUgY2VsbC5cclxuXHQgKlxyXG5cdCAqIGBgYHR5cGVzY3JpcHRcclxuXHQgKiBjZWxsLmVkaXRNb2RlICA9ICFjZWxsLmVkaXRNb2RlO1xyXG5cdCAqIGBgYFxyXG5cdCAqXHJcblx0ICogQG1lbWJlcm9mIElneEdyaWRDZWxsXHJcblx0ICovXHJcblx0cHVibGljIHNldCBlZGl0TW9kZSh2YWx1ZTogYm9vbGVhbikge1xyXG5cdFx0Y29uc3QgaXNJbkVkaXRNb2RlID0gdGhpcy5pc0NlbGxJbkVkaXRNb2RlKCk7XHJcblx0XHRpZiAoIXRoaXMucm93IHx8IHRoaXMucm93Py5kZWxldGVkIHx8IGlzSW5FZGl0TW9kZSA9PT0gdmFsdWUpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuZWRpdGFibGUgJiYgdmFsdWUpIHtcclxuXHRcdFx0dGhpcy5lbmRFZGl0KCk7XHJcblx0XHRcdC8vIFRPRE8gcG9zc2libHkgZGVmaW5lIHNpbWlsYXIgbWV0aG9kIGluIGdyaWRBUEksIHdoaWNoIGRvZXMgbm90IGVtaXQgZXZlbnRcclxuXHRcdFx0dGhpcy5ncmlkLmNydWRTZXJ2aWNlLmVudGVyRWRpdE1vZGUodGhpcyk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuZW5kQ2VsbEVkaXQoKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuZ3JpZC5ub3RpZnlDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHdoZXRoZXIgdGhlIGNlbGwgaXMgc2VsZWN0ZWQuXHJcblx0ICogYGBgdHlwZXNjcmlwdFxyXG5cdCAqIGxldCBpc1NlbGVjdGVkID0gdGhpcy5jZWxsLnNlbGVjdGVkO1xyXG5cdCAqIGBgYFxyXG5cdCAqXHJcblx0ICpcclxuXHQgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkKHRoaXMuc2VsZWN0aW9uTm9kZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZWxlY3RzL2Rlc2VsZWN0cyB0aGUgY2VsbC5cclxuXHQgKiBgYGB0eXBlc2NyaXB0XHJcblx0ICogdGhpcy5jZWxsLnNlbGVjdGVkID0gdHJ1ZS5cclxuXHQgKiBgYGBcclxuXHQgKlxyXG5cdCAqXHJcblx0ICogQG1lbWJlcm9mIElneEdyaWRDZWxsXHJcblx0ICovXHJcblx0cHVibGljIHNldCBzZWxlY3RlZCh2YWw6IGJvb2xlYW4pIHtcclxuXHRcdGNvbnN0IG5vZGUgPSB0aGlzLnNlbGVjdGlvbk5vZGU7XHJcblx0XHRpZiAodmFsKSB7XHJcblx0XHRcdHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLmFkZChub2RlKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLnJlbW92ZShub2RlKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuZ3JpZC5ub3RpZnlDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZ2V0IGFjdGl2ZSgpIHtcclxuXHRcdGNvbnN0IG5vZGUgPSB0aGlzLmdyaWQubmF2aWdhdGlvbi5hY3RpdmVOb2RlO1xyXG5cdFx0cmV0dXJuIG5vZGUgPyBub2RlLnJvdyA9PT0gdGhpcy5yb3c/LmluZGV4ICYmIG5vZGUuY29sdW1uID09PSB0aGlzLmNvbHVtbi52aXNpYmxlSW5kZXggOiBmYWxzZTtcclxuXHR9XHJcblxyXG5cclxuXHQvKipcclxuXHQgKiBVcGRhdGVzIHRoZSBjZWxsIHZhbHVlLlxyXG5cdCAqXHJcblx0ICogYGBgdHlwZXNjcmlwdFxyXG5cdCAqIGNlbGwudXBkYXRlKG5ld1ZhbHVlKTtcclxuXHQgKiBgYGBcclxuXHQgKlxyXG5cdCAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cGRhdGUodmFsOiBhbnkpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnJvdz8uZGVsZXRlZCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5lbmRFZGl0KCk7XHJcblxyXG5cdFx0Y29uc3QgY2VsbCA9IHRoaXMuaXNDZWxsSW5FZGl0TW9kZSgpID8gdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmNlbGwgOiB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuY3JlYXRlQ2VsbCh0aGlzKTtcclxuXHRcdGNlbGwuZWRpdFZhbHVlID0gdmFsO1xyXG5cdFx0dGhpcy5ncmlkLmdyaWRBUEkudXBkYXRlX2NlbGwoY2VsbCk7XHJcblx0XHR0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuZW5kQ2VsbEVkaXQoKTtcclxuXHRcdHRoaXMuZ3JpZC5ub3RpZnlDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgZ2V0IHNlbGVjdGlvbk5vZGUoKTogSVNlbGVjdGlvbk5vZGUge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0cm93OiB0aGlzLnJvdz8uaW5kZXgsXHJcblx0XHRcdGNvbHVtbjogdGhpcy5jb2x1bW4uY29sdW1uTGF5b3V0Q2hpbGQgPyB0aGlzLmNvbHVtbi5wYXJlbnQudmlzaWJsZUluZGV4IDogdGhpcy5jb2x1bW4udmlzaWJsZUluZGV4LFxyXG5cdFx0XHRsYXlvdXQ6IHRoaXMuY29sdW1uLmNvbHVtbkxheW91dENoaWxkID8ge1xyXG5cdFx0XHRcdHJvd1N0YXJ0OiB0aGlzLmNvbHVtbi5yb3dTdGFydCxcclxuXHRcdFx0XHRjb2xTdGFydDogdGhpcy5jb2x1bW4uY29sU3RhcnQsXHJcblx0XHRcdFx0cm93RW5kOiB0aGlzLmNvbHVtbi5yb3dFbmQsXHJcblx0XHRcdFx0Y29sRW5kOiB0aGlzLmNvbHVtbi5jb2xFbmQsXHJcblx0XHRcdFx0Y29sdW1uVmlzaWJsZUluZGV4OiB0aGlzLmNvbHVtbi52aXNpYmxlSW5kZXhcclxuXHRcdFx0fSA6IG51bGxcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRcdHByaXZhdGUgaXNDZWxsSW5FZGl0TW9kZSgpOiBib29sZWFuIHtcclxuXHRcdFx0aWYgKHRoaXMuZ3JpZC5jcnVkU2VydmljZS5jZWxsSW5FZGl0TW9kZSkge1xyXG5cdFx0XHRcdGNvbnN0IGNlbGxJbkVkaXRNb2RlID0gdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmNlbGwuaWQ7XHJcblx0XHRcdFx0Y29uc3QgaXNDdXJyZW50Q2VsbCA9IGNlbGxJbkVkaXRNb2RlLnJvd0lEID09PSB0aGlzLmlkLnJvd0lEICYmXHJcblx0XHRcdFx0XHRcdGNlbGxJbkVkaXRNb2RlLnJvd0luZGV4ID09PSB0aGlzLmlkLnJvd0luZGV4ICYmXHJcblx0XHRcdFx0XHRcdGNlbGxJbkVkaXRNb2RlLmNvbHVtbklEID09PSB0aGlzLmlkLmNvbHVtbklEO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gaXNDdXJyZW50Q2VsbDtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0cHJpdmF0ZSBlbmRFZGl0KCk6IHZvaWQge1xyXG5cdFx0XHRcdGlmICghdGhpcy5pc0NlbGxJbkVkaXRNb2RlKCkpIHtcclxuXHRcdFx0XHRcdHRoaXMuZ3JpZC5ncmlkQVBJLnVwZGF0ZV9jZWxsKHRoaXMuZ3JpZC5jcnVkU2VydmljZS5jZWxsKTtcclxuXHRcdFx0XHRcdHRoaXMuZ3JpZC5jcnVkU2VydmljZS5lbmRDZWxsRWRpdCgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdH1cclxufVxyXG4iXX0=
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wdWJsaWMtY2VsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9ncmlkLXB1YmxpYy1jZWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVNsRCxNQUFNLE9BQU8sV0FBVztJQW9CdkIsWUFBWSxJQUE0RSxFQUN2RixHQUFZLEVBQ1osTUFBMEI7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7U0FDckI7YUFBTTtZQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztTQUMzQjtRQUNELElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFO1lBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO1NBQzNCO2FBQU07WUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztTQUN0QjtJQUNGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxHQUFHO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILElBQVcsTUFBTTtRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxTQUFTO1FB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YyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckQsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUs7Z0JBQzFELGNBQWMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRO2dCQUM1QyxjQUFjLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQzdDLE9BQU8sYUFBYSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRU8sT0FBTztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZXNvbHZlTmVzdGVkUGF0aCB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQ2VsbFR5cGUgfSBmcm9tICcuL2NvbW1vbi9jZWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSb3dUeXBlIH0gZnJvbSAnLi9jb21tb24vcm93LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9ncmlkL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudCB9IGZyb20gJy4vaGllcmFyY2hpY2FsLWdyaWQvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgSVNlbGVjdGlvbk5vZGUgfSBmcm9tICcuL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hUcmVlR3JpZENvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1ncmlkL3B1YmxpY19hcGknO1xuXG5leHBvcnQgY2xhc3MgSWd4R3JpZENlbGwgaW1wbGVtZW50cyBDZWxsVHlwZSB7XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGdyaWQgY29udGFpbmluZyB0aGUgY2VsbC5cblx0ICpcblx0ICogQG1lbWJlcm9mIElneEdyaWRDZWxsXG5cdCAqL1xuXHRwdWJsaWMgZ3JpZDogSWd4R3JpZENvbXBvbmVudCB8IElneFRyZWVHcmlkQ29tcG9uZW50IHwgSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudDtcblx0cHJpdmF0ZSBfcm93OiBSb3dUeXBlO1xuXHRwcml2YXRlIF9yb3dJbmRleDogbnVtYmVyO1xuXHRwcml2YXRlIF9jb2x1bW46IElneENvbHVtbkNvbXBvbmVudDtcblx0cHJpdmF0ZSBfY29sdW1uRmllbGQ6IHN0cmluZztcblxuXHQvKipcblx0ICogQGhpZGRlblxuXHQgKi9cblx0Y29uc3RydWN0b3IoXG5cdFx0Z3JpZDogSWd4R3JpZENvbXBvbmVudCB8IElneFRyZWVHcmlkQ29tcG9uZW50IHwgSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudCxcblx0XHRyb3c6IG51bWJlciB8IFJvd1R5cGUsXG5cdFx0Y29sdW1uOiBzdHJpbmcgfCBJZ3hDb2x1bW5Db21wb25lbnQpO1xuXHRjb25zdHJ1Y3RvcihncmlkOiBJZ3hHcmlkQ29tcG9uZW50IHwgSWd4VHJlZUdyaWRDb21wb25lbnQgfCBJZ3hIaWVyYXJjaGljYWxHcmlkQ29tcG9uZW50LFxuXHRcdHJvdzogUm93VHlwZSxcblx0XHRjb2x1bW46IElneENvbHVtbkNvbXBvbmVudCkge1xuXHRcdHRoaXMuZ3JpZCA9IGdyaWQ7XG5cdFx0aWYgKHR5cGVvZiByb3cgPT09ICdudW1iZXInKSB7XG5cdFx0XHR0aGlzLl9yb3dJbmRleCA9IHJvdztcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fcm93ID0gcm93O1xuXHRcdFx0dGhpcy5fcm93SW5kZXggPSByb3cuaW5kZXg7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgY29sdW1uID09PSAnc3RyaW5nJykge1xuXHRcdFx0dGhpcy5fY29sdW1uRmllbGQgPSBjb2x1bW47XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX2NvbHVtbiA9IGNvbHVtbjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgcm93IGNvbnRhaW5pbmcgdGhlIGNlbGwuXG5cdCAqIGBgYHR5cGVzY3JpcHRcblx0ICogbGV0IHJvdyA9IHRoaXMuY2VsbC5yb3c7XG5cdCAqIGBgYFxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcblx0ICovXG5cdHB1YmxpYyBnZXQgcm93KCk6IFJvd1R5cGUge1xuXHRcdHJldHVybiB0aGlzLl9yb3cgfHwgdGhpcy5ncmlkLmNyZWF0ZVJvdyh0aGlzLl9yb3dJbmRleCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29sdW1uIG9mIHRoZSBjZWxsLlxuXHQgKiBgYGB0eXBlc2NyaXB0XG5cdCAqIGxldCBjb2x1bW4gPSB0aGlzLmNlbGwuY29sdW1uO1xuXHQgKiBgYGBcblx0ICpcblx0ICogQG1lbWJlcm9mIElneEdyaWRDZWxsXG5cdCAqL1xuXHRwdWJsaWMgZ2V0IGNvbHVtbigpOiBJZ3hDb2x1bW5Db21wb25lbnQge1xuXHRcdHJldHVybiB0aGlzLl9jb2x1bW4gfHwgdGhpcy5ncmlkLmdldENvbHVtbkJ5TmFtZSh0aGlzLl9jb2x1bW5GaWVsZCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY3VycmVudCBlZGl0IHZhbHVlIHdoaWxlIGEgY2VsbCBpcyBpbiBlZGl0IG1vZGUuXG5cdCAqIGBgYHR5cGVzY3JpcHRcblx0ICogbGV0IGVkaXRWYWx1ZSA9IHRoaXMuY2VsbC5lZGl0VmFsdWU7XG5cdCAqIGBgYFxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcblx0ICovXG5cdHB1YmxpYyBnZXQgZWRpdFZhbHVlKCk6IGFueSB7XG5cdFx0aWYgKHRoaXMuaXNDZWxsSW5FZGl0TW9kZSgpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmNlbGwuZWRpdFZhbHVlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBjdXJyZW50IGVkaXQgdmFsdWUgd2hpbGUgYSBjZWxsIGlzIGluIGVkaXQgbW9kZS5cblx0ICogT25seSBmb3IgY2VsbCBlZGl0aW5nIG1vZGUuXG5cdCAqIGBgYHR5cGVzY3JpcHRcblx0ICogdGhpcy5jZWxsLmVkaXRWYWx1ZSA9IHZhbHVlO1xuXHQgKiBgYGBcblx0ICpcblx0ICogQG1lbWJlcm9mIElneEdyaWRDZWxsXG5cdCAqL1xuXHRwdWJsaWMgc2V0IGVkaXRWYWx1ZSh2YWx1ZTogYW55KSB7XG5cdFx0aWYgKHRoaXMuaXNDZWxsSW5FZGl0TW9kZSgpKSB7XG5cdFx0XHR0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuY2VsbC5lZGl0VmFsdWUgPSB2YWx1ZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB3aGV0aGVyIHRoZSBjZWxsIGlzIGVkaXRhYmxlLi5cblx0ICpcblx0ICogQG1lbWJlcm9mIElneEdyaWRDZWxsXG5cdCAqL1xuXHRwdWJsaWMgZ2V0IGVkaXRhYmxlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmNvbHVtbi5lZGl0YWJsZSAmJiAhdGhpcy5yb3c/LmRpc2FibGVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHdpZHRoIG9mIHRoZSBjZWxsLlxuXHQgKiBgYGB0eXBlc2NyaXB0XG5cdCAqIGxldCBjZWxsV2lkdGggPSB0aGlzLmNlbGwud2lkdGg7XG5cdCAqIGBgYFxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcblx0ICovXG5cdHB1YmxpYyBnZXQgd2lkdGgoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5jb2x1bW4ud2lkdGg7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY2VsbCB2YWx1ZS5cblx0ICpcblx0ICogQG1lbWJlcm9mIElneEdyaWRDZWxsXG5cdCAqL1xuXHRwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueSB7XG5cdFx0Ly8gd2lsbCByZXR1cm4gdW5kZWZpbmVkIGZvciBhIGNvbHVtbiBsYXlvdXQsIGJlY2F1c2UgZ2V0Q2VsbEJ5Q29sdW1uVmlzaWJsZUluZGV4IG1heSByZXR1cm4gdGhlIGNvbHVtbiBsYXlvdXQgYXQgdGhhdCBpbmRleC5cblx0XHQvLyBnZXRDZWxsQnlDb2x1bW5WaXNpYmxlSW5kZXggaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9uXG5cdFx0cmV0dXJuIHRoaXMuY29sdW1uLmZpZWxkID9cblx0XHRcdHRoaXMuY29sdW1uLmhhc05lc3RlZFBhdGggPyByZXNvbHZlTmVzdGVkUGF0aCh0aGlzLnJvdz8uZGF0YSwgdGhpcy5jb2x1bW4uZmllbGQpIDogdGhpcy5yb3c/LmRhdGFbdGhpcy5jb2x1bW4uZmllbGRdXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSBjZWxsIHZhbHVlLlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcblx0ICovXG5cdHB1YmxpYyBzZXQgdmFsdWUodmFsOiBhbnkpIHtcblx0XHR0aGlzLnVwZGF0ZSh2YWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGNlbGwgaWQuXG5cdCAqIEEgY2VsbCBpbiB0aGUgZ3JpZCBpcyBpZGVudGlmaWVkIGJ5OlxuXHQgKiAtIHJvd0lEIC0gcHJpbWFyeUtleSBkYXRhIHZhbHVlIG9yIHRoZSB3aG9sZSByb3dEYXRhLCBpZiB0aGUgcHJpbWFyeUtleSBpcyBvbWl0dGVkLlxuXHQgKiAtIHJvd0luZGV4IC0gdGhlIHJvdyBpbmRleFxuXHQgKiAtIGNvbHVtbklEIC0gY29sdW1uIGluZGV4XG5cdCAqXG5cdCAqIGBgYHR5cGVzY3JpcHRcblx0ICogbGV0IGNlbGxJRCA9IGNlbGwuaWQ7XG5cdCAqIGBgYFxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcblx0ICovXG5cdHB1YmxpYyBnZXQgaWQoKTogYW55IHtcblx0XHRjb25zdCBwcmltYXJ5S2V5ID0gdGhpcy5ncmlkLnByaW1hcnlLZXk7XG5cdFx0Y29uc3Qgcm93SUQgPSBwcmltYXJ5S2V5ID8gdGhpcy5yb3c/LmRhdGFbcHJpbWFyeUtleV0gOiB0aGlzLnJvdz8uZGF0YTtcblx0XHRyZXR1cm4geyByb3dJRCwgY29sdW1uSUQ6IHRoaXMuY29sdW1uLmluZGV4LCByb3dJbmRleDogdGhpcy5fcm93SW5kZXggfHwgdGhpcy5yb3c/LmluZGV4IH07XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBpZiB0aGUgcm93IGlzIGN1cnJlbnRseSBpbiBlZGl0IG1vZGUuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxuXHQgKi9cblx0cHVibGljIGdldCBlZGl0TW9kZSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5pc0NlbGxJbkVkaXRNb2RlKCk7XG5cdH1cblxuXHQvKipcblx0ICogU3RhcnRzL2VuZHMgZWRpdCBtb2RlIGZvciB0aGUgY2VsbC5cblx0ICpcblx0ICogYGBgdHlwZXNjcmlwdFxuXHQgKiBjZWxsLmVkaXRNb2RlICA9ICFjZWxsLmVkaXRNb2RlO1xuXHQgKiBgYGBcblx0ICpcblx0ICogQG1lbWJlcm9mIElneEdyaWRDZWxsXG5cdCAqL1xuXHRwdWJsaWMgc2V0IGVkaXRNb2RlKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0Y29uc3QgaXNJbkVkaXRNb2RlID0gdGhpcy5pc0NlbGxJbkVkaXRNb2RlKCk7XG5cdFx0aWYgKCF0aGlzLnJvdyB8fCB0aGlzLnJvdz8uZGVsZXRlZCB8fCBpc0luRWRpdE1vZGUgPT09IHZhbHVlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICh0aGlzLmVkaXRhYmxlICYmIHZhbHVlKSB7XG5cdFx0XHR0aGlzLmVuZEVkaXQoKTtcblx0XHRcdC8vIFRPRE8gcG9zc2libHkgZGVmaW5lIHNpbWlsYXIgbWV0aG9kIGluIGdyaWRBUEksIHdoaWNoIGRvZXMgbm90IGVtaXQgZXZlbnRcblx0XHRcdHRoaXMuZ3JpZC5jcnVkU2VydmljZS5lbnRlckVkaXRNb2RlKHRoaXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuZW5kQ2VsbEVkaXQoKTtcblx0XHR9XG5cdFx0dGhpcy5ncmlkLm5vdGlmeUNoYW5nZXMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHdoZXRoZXIgdGhlIGNlbGwgaXMgc2VsZWN0ZWQuXG5cdCAqIGBgYHR5cGVzY3JpcHRcblx0ICogbGV0IGlzU2VsZWN0ZWQgPSB0aGlzLmNlbGwuc2VsZWN0ZWQ7XG5cdCAqIGBgYFxuXHQgKlxuXHQgKlxuXHQgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcblx0ICovXG5cdHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkKHRoaXMuc2VsZWN0aW9uTm9kZSk7XG5cdH1cblxuXHQvKipcblx0ICogU2VsZWN0cy9kZXNlbGVjdHMgdGhlIGNlbGwuXG5cdCAqIGBgYHR5cGVzY3JpcHRcblx0ICogdGhpcy5jZWxsLnNlbGVjdGVkID0gdHJ1ZS5cblx0ICogYGBgXG5cdCAqXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxuXHQgKi9cblx0cHVibGljIHNldCBzZWxlY3RlZCh2YWw6IGJvb2xlYW4pIHtcblx0XHRjb25zdCBub2RlID0gdGhpcy5zZWxlY3Rpb25Ob2RlO1xuXHRcdGlmICh2YWwpIHtcblx0XHRcdHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLmFkZChub2RlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2UucmVtb3ZlKG5vZGUpO1xuXHRcdH1cblx0XHR0aGlzLmdyaWQubm90aWZ5Q2hhbmdlcygpO1xuXHR9XG5cblx0cHVibGljIGdldCBhY3RpdmUoKSB7XG5cdFx0Y29uc3Qgbm9kZSA9IHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmFjdGl2ZU5vZGU7XG5cdFx0cmV0dXJuIG5vZGUgPyBub2RlLnJvdyA9PT0gdGhpcy5yb3c/LmluZGV4ICYmIG5vZGUuY29sdW1uID09PSB0aGlzLmNvbHVtbi52aXNpYmxlSW5kZXggOiBmYWxzZTtcblx0fVxuXG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIGNlbGwgdmFsdWUuXG5cdCAqXG5cdCAqIGBgYHR5cGVzY3JpcHRcblx0ICogY2VsbC51cGRhdGUobmV3VmFsdWUpO1xuXHQgKiBgYGBcblx0ICpcblx0ICogQG1lbWJlcm9mIElneEdyaWRDZWxsXG5cdCAqL1xuXHRwdWJsaWMgdXBkYXRlKHZhbDogYW55KTogdm9pZCB7XG5cdFx0aWYgKHRoaXMucm93Py5kZWxldGVkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5lbmRFZGl0KCk7XG5cblx0XHRjb25zdCBjZWxsID0gdGhpcy5pc0NlbGxJbkVkaXRNb2RlKCkgPyB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuY2VsbCA6IHRoaXMuZ3JpZC5jcnVkU2VydmljZS5jcmVhdGVDZWxsKHRoaXMpO1xuXHRcdGNlbGwuZWRpdFZhbHVlID0gdmFsO1xuXHRcdHRoaXMuZ3JpZC5ncmlkQVBJLnVwZGF0ZV9jZWxsKGNlbGwpO1xuXHRcdHRoaXMuZ3JpZC5jcnVkU2VydmljZS5lbmRDZWxsRWRpdCgpO1xuXHRcdHRoaXMuZ3JpZC5ub3RpZnlDaGFuZ2VzKCk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgZ2V0IHNlbGVjdGlvbk5vZGUoKTogSVNlbGVjdGlvbk5vZGUge1xuXHRcdHJldHVybiB7XG5cdFx0XHRyb3c6IHRoaXMucm93Py5pbmRleCxcblx0XHRcdGNvbHVtbjogdGhpcy5jb2x1bW4uY29sdW1uTGF5b3V0Q2hpbGQgPyB0aGlzLmNvbHVtbi5wYXJlbnQudmlzaWJsZUluZGV4IDogdGhpcy5jb2x1bW4udmlzaWJsZUluZGV4LFxuXHRcdFx0bGF5b3V0OiB0aGlzLmNvbHVtbi5jb2x1bW5MYXlvdXRDaGlsZCA/IHtcblx0XHRcdFx0cm93U3RhcnQ6IHRoaXMuY29sdW1uLnJvd1N0YXJ0LFxuXHRcdFx0XHRjb2xTdGFydDogdGhpcy5jb2x1bW4uY29sU3RhcnQsXG5cdFx0XHRcdHJvd0VuZDogdGhpcy5jb2x1bW4ucm93RW5kLFxuXHRcdFx0XHRjb2xFbmQ6IHRoaXMuY29sdW1uLmNvbEVuZCxcblx0XHRcdFx0Y29sdW1uVmlzaWJsZUluZGV4OiB0aGlzLmNvbHVtbi52aXNpYmxlSW5kZXhcblx0XHRcdH0gOiBudWxsXG5cdFx0fTtcblx0fVxuXG5cdFx0cHJpdmF0ZSBpc0NlbGxJbkVkaXRNb2RlKCk6IGJvb2xlYW4ge1xuXHRcdFx0aWYgKHRoaXMuZ3JpZC5jcnVkU2VydmljZS5jZWxsSW5FZGl0TW9kZSkge1xuXHRcdFx0XHRjb25zdCBjZWxsSW5FZGl0TW9kZSA9IHRoaXMuZ3JpZC5jcnVkU2VydmljZS5jZWxsLmlkO1xuXHRcdFx0XHRjb25zdCBpc0N1cnJlbnRDZWxsID0gY2VsbEluRWRpdE1vZGUucm93SUQgPT09IHRoaXMuaWQucm93SUQgJiZcblx0XHRcdFx0XHRcdGNlbGxJbkVkaXRNb2RlLnJvd0luZGV4ID09PSB0aGlzLmlkLnJvd0luZGV4ICYmXG5cdFx0XHRcdFx0XHRjZWxsSW5FZGl0TW9kZS5jb2x1bW5JRCA9PT0gdGhpcy5pZC5jb2x1bW5JRDtcblx0XHRcdFx0XHRcdHJldHVybiBpc0N1cnJlbnRDZWxsO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHByaXZhdGUgZW5kRWRpdCgpOiB2b2lkIHtcblx0XHRcdFx0aWYgKCF0aGlzLmlzQ2VsbEluRWRpdE1vZGUoKSkge1xuXHRcdFx0XHRcdHRoaXMuZ3JpZC5ncmlkQVBJLnVwZGF0ZV9jZWxsKHRoaXMuZ3JpZC5jcnVkU2VydmljZS5jZWxsKTtcblx0XHRcdFx0XHR0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuZW5kQ2VsbEVkaXQoKTtcblx0XHRcdFx0fVxuXHRcdH1cbn1cbiJdfQ==
|
|
@@ -702,4 +702,4 @@ export class IgxSummaryRow {
|
|
|
702
702
|
return row;
|
|
703
703
|
}
|
|
704
704
|
}
|
|
705
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wdWJsaWMtcm93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2dyaWQtcHVibGljLXJvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSwwQkFBMEIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5HLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQU9qRCxPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUV6QyxNQUFlLE9BQU87SUFRbEI7O09BRUc7SUFDSCxJQUFXLFNBQVM7O1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxJQUFJLEtBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxJQUFXLEdBQUc7O1FBQ1YsTUFBTSxJQUFJLEdBQUcsTUFBQSxJQUFJLENBQUMsS0FBSyxtQ0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDeEMsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFXLFFBQVE7UUFDZixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHO1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxTQUFTLENBQUMsSUFBSTtZQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQVcsSUFBSTs7UUFDWCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBQSxJQUFJLENBQUMsS0FBSyxtQ0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDNUYsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFDMUQsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0JBQ25CLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDekIsT0FBTyxRQUFRLEdBQUcsUUFBUSxDQUFDO2lCQUM5QjtZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLE1BQUEsSUFBSSxDQUFDLEtBQUssbUNBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDakIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUN2QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDL0MsT0FBTyxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUM7U0FDbEU7YUFBTTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFXLE1BQU0sQ0FBQyxHQUFZO1FBQzFCLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ2Q7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBVyxRQUFRLENBQUMsR0FBWTtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBVyxRQUFRLENBQUMsR0FBWTtRQUM1QixJQUFJLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNoRTthQUFNO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLEtBQUs7UUFDWixNQUFNLEdBQUcsR0FBZSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLE1BQU0sSUFBSSxHQUFhLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekUsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksR0FBRztRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSztRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBQyxLQUFVO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzFDLElBQUksV0FBVyxDQUFDLGNBQWMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN0RSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLE1BQU07UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFVBQVcsU0FBUSxPQUFPO0lBQ25DOztPQUVHO0lBQ0gsWUFBbUIsSUFBc0IsRUFDOUIsS0FBYSxFQUFFLElBQVU7UUFDaEMsS0FBSyxFQUFFLENBQUM7UUFGTyxTQUFJLEdBQUosSUFBSSxDQUFrQjtRQUM5QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBRXBCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQy9FLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsU0FBUztRQUNoQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3JCLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1lBQy9CLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztZQUNyRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztZQUM1RCxJQUFJLG9CQUFvQixHQUFHLENBQUMsQ0FBQztZQUM3QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVuRSwwREFBMEQ7WUFDMUQsd0ZBQXdGO1lBQ3hGLHVHQUF1RztZQUN2RyxJQUFJLGFBQWEsSUFBSSxjQUFjLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakUsSUFBSSxjQUFjLElBQUksR0FBRyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDckUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUM5QjtvQkFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQzVGLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDL0I7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDTjtZQUVELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsS0FBSywwQkFBMEIsQ0FBQyxhQUFhLEVBQUU7Z0JBQy9FLGlFQUFpRTtnQkFDakUsMkVBQTJFO2dCQUMzRSw4REFBOEQ7Z0JBQzlELG9CQUFvQixHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUM3RixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxLQUFLLG1CQUFtQixDQUFDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxNQUFNO29CQUNyRixrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDbEYsb0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQzlCO2FBQ0o7WUFFRCxPQUFPLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxvQkFBb0IsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUN2RjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxNQUFNO1FBQ2IsSUFBSSxNQUFxQixDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtZQUN2QyxPQUFPLFNBQVMsQ0FBQztTQUNwQjtRQUVELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNoQyxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDakQ7WUFDRCxDQUFDLEVBQUUsQ0FBQztTQUNQO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGNBQWUsU0FBUSxPQUFPO0lBQ3ZDOztPQUVHO0lBQ0gsWUFBbUIsSUFBMEIsRUFDbEMsS0FBYSxFQUFFLElBQVUsRUFBVSxRQUEwQjtRQUNwRSxLQUFLLEVBQUUsQ0FBQztRQUZPLFNBQUksR0FBSixJQUFJLENBQXNCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBc0IsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFFcEUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0UsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxTQUFTOztRQUNoQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsMENBQUUsSUFBSSxLQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsS0FBSywwQkFBMEIsQ0FBQyxhQUFhLEVBQUU7Z0JBQy9FLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5RiwwRkFBMEY7Z0JBQzFGLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ25GLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqRix5SEFBeUg7Z0JBQ3pILE9BQU8sYUFBYSxHQUFHLG9CQUFvQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDNUQ7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxJQUFJLEtBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFXLElBQUk7O1FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQUEsSUFBSSxDQUFDLEtBQUssbUNBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzVGLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQzFELENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUNuQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ3pCLE9BQU8sUUFBUSxHQUFHLFFBQVEsQ0FBQztpQkFDOUI7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNWO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDZixNQUFNLFFBQVEsR0FBcUIsRUFBRSxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hFLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsTUFBTTs7UUFDYixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSwwQ0FBRSxLQUFLLENBQUMsQ0FBQztRQUM5RCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsV0FBVztRQUNsQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUMzQzthQUFNO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBVyxPQUFPOztRQUNkLE9BQU8sTUFBQSxJQUFJLENBQUMsUUFBUSxtQ0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFXLE1BQU0sQ0FBQyxHQUFZO1FBQzFCLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ2Q7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBVyxRQUFRLENBQUMsR0FBWTtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdkcsQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUFvQjtRQUN0QyxPQUFPLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDZixHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztTQUNwQjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLE9BQU87SUFDL0M7O09BRUc7SUFDSCxZQUFtQixJQUFrQyxFQUMxQyxLQUFhLEVBQUUsSUFBVTtRQUNoQyxLQUFLLEVBQUUsQ0FBQztRQUZPLFNBQUksR0FBSixJQUFJLENBQThCO1FBQzFDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFFcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0UsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFNBQVM7UUFDaEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNsRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNyRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsV0FBVyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLEdBQUcsWUFBWSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzFELENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsS0FBSztRQUNaLE1BQU0sR0FBRyxHQUFlLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEdBQWEsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQWdGdEI7O09BRUc7SUFDSCxZQUFZLElBQXNCLEVBQUUsS0FBYSxFQUFVLFNBQTBCO1FBQTFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQ2pGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUF2RUQ7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDZixNQUFNLFFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMvRCxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxTQUFTO1FBQ2hCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDaEIsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7WUFDL0IsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQ3JELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1lBQzVELElBQUksb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRW5FLDBEQUEwRDtZQUMxRCx3RkFBd0Y7WUFDeEYsdUdBQXVHO1lBQ3ZHLElBQUksYUFBYSxJQUFJLGNBQWMsRUFBRTtnQkFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7b0JBQzVDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNqRSxJQUFJLGNBQWMsSUFBSSxHQUFHLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUNyRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQzlCO29CQUNELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDNUYsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUMvQjtnQkFDTCxDQUFDLENBQUMsQ0FBQzthQUNOO1lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixLQUFLLDBCQUEwQixDQUFDLGFBQWEsRUFBRTtnQkFDL0UsaUVBQWlFO2dCQUNqRSwyRUFBMkU7Z0JBQzNFLDhEQUE4RDtnQkFDOUQsb0JBQW9CLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQzdGLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssbUJBQW1CLENBQUMsTUFBTSxJQUFJLGtCQUFrQixDQUFDLE1BQU07b0JBQ3JGLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUNsRixvQkFBb0IsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDOUI7YUFDSjtZQUVELE9BQU8sbUJBQW1CLENBQUMsTUFBTSxHQUFHLG9CQUFvQixHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3ZGO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBV0Q7Ozs7OztPQU1HO0lBQ0gsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBVyxRQUFRLENBQUMsR0FBWTtRQUM1QixJQUFJLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEUsQ0FBQyxDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQVcsUUFBUSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxRQUFRO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3hHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU07UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELElBQVksT0FBTztRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUE0QixDQUFDO0lBQ2xELENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxhQUFhO0lBMkZ0Qjs7T0FFRztJQUNILFlBQVksSUFBNEUsRUFDcEYsS0FBYSxFQUFVLFVBQTRDLEVBQUUsSUFBdUI7UUFBckUsZUFBVSxHQUFWLFVBQVUsQ0FBa0M7UUFDbkUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQTlFRDs7T0FFRztJQUNILElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDeEYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxTQUFTOztRQUNoQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ3RELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQXdCLENBQUM7Z0JBQzFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ2hCLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO29CQUMvQixNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztvQkFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztvQkFDckQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7b0JBQzVELElBQUksb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO29CQUM3QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFFbkUsMERBQTBEO29CQUMxRCx3RkFBd0Y7b0JBQ3hGLHVHQUF1RztvQkFDdkcsSUFBSSxhQUFhLElBQUksY0FBYyxFQUFFO3dCQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRTs0QkFDNUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ2pFLElBQUksY0FBYyxJQUFJLEdBQUcsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0NBQ3JFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs2QkFDOUI7NEJBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLFdBQVc7Z0NBQ3pELENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0NBQy9CLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs2QkFDL0I7d0JBQ0wsQ0FBQyxDQUFDLENBQUM7cUJBQ047b0JBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixLQUFLLDBCQUEwQixDQUFDLGFBQWEsRUFBRTt3QkFDL0UsaUVBQWlFO3dCQUNqRSwyRUFBMkU7d0JBQzNFLDhEQUE4RDt3QkFDOUQsb0JBQW9CLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7d0JBQzdGLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssbUJBQW1CLENBQUMsTUFBTSxJQUFJLGtCQUFrQixDQUFDLE1BQU07NEJBQ3JGLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFOzRCQUNsRixvQkFBb0IsSUFBSSxDQUFDLENBQUMsQ0FBQzt5QkFDOUI7cUJBQ0o7b0JBRUQsT0FBTyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7aUJBQ3ZGO3FCQUFNO29CQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztpQkFDckI7YUFDSjtpQkFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLENBQUMsUUFBUSxFQUFFO2dCQUNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUE0QixDQUFDO2dCQUM5QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEtBQUssMEJBQTBCLENBQUMsYUFBYSxFQUFFO29CQUMvRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDOUYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsS0FBSyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDbkYsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2pGLE9BQU8sYUFBYSxHQUFHLG9CQUFvQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7aUJBQzVEO2FBQ0o7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxJQUFJLEtBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFhTyxhQUFhLENBQUMsR0FBb0I7UUFDdEMsT0FBTyxHQUFHLENBQUMsTUFBTSxFQUFFO1lBQ2YsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7U0FDcEI7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElHcm91cEJ5UmVjb3JkIH0gZnJvbSAnLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwYnktcmVjb3JkLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IENlbGxUeXBlIH0gZnJvbSAnLi9jb21tb24vY2VsbC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJZ3hBZGRSb3csIElneEVkaXRSb3cgfSBmcm9tICcuL2NvbW1vbi9jcnVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHcmlkSW5zdGFuY2VUeXBlLCBHcmlkU3VtbWFyeUNhbGN1bGF0aW9uTW9kZSwgR3JpZFN1bW1hcnlQb3NpdGlvbiB9IGZyb20gJy4vY29tbW9uL2VudW1zJztcclxuaW1wb3J0IHsgUm93VHlwZSB9IGZyb20gJy4vY29tbW9uL3Jvdy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJZ3hHcmlkQ2VsbCB9IGZyb20gJy4vZ3JpZC1wdWJsaWMtY2VsbCc7XHJcbmltcG9ydCB7IElneEdyaWRBUElTZXJ2aWNlIH0gZnJvbSAnLi9ncmlkL2dyaWQtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJZ3hHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9ncmlkL2dyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudCB9IGZyb20gJy4vaGllcmFyY2hpY2FsLWdyaWQvaGllcmFyY2hpY2FsLWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSWd4U3VtbWFyeVJlc3VsdCB9IGZyb20gJy4vc3VtbWFyaWVzL2dyaWQtc3VtbWFyeSc7XHJcbmltcG9ydCB7IElneFRyZWVHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLWdyaWQvdHJlZS1ncmlkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElUcmVlR3JpZFJlY29yZCB9IGZyb20gJy4vdHJlZS1ncmlkL3RyZWUtZ3JpZC5pbnRlcmZhY2VzJztcclxuaW1wb3J0IG1lcmdlV2l0aCBmcm9tICdsb2Rhc2gubWVyZ2V3aXRoJztcclxuXHJcbmFic3RyYWN0IGNsYXNzIEJhc2VSb3cgaW1wbGVtZW50cyBSb3dUeXBlIHtcclxuICAgIHB1YmxpYyBpbmRleDogbnVtYmVyO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZ3JpZCB0aGF0IGNvbnRhaW5zIHRoZSByb3cuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBncmlkOiBJZ3hHcmlkQ29tcG9uZW50IHwgSWd4VHJlZUdyaWRDb21wb25lbnQgfCBJZ3hIaWVyYXJjaGljYWxHcmlkQ29tcG9uZW50O1xyXG4gICAgcHJvdGVjdGVkIF9kYXRhPzogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgdmlldyBpbmRleCBjYWxjdWxhdGVkIHBlciB0aGUgZ3JpZCBwYWdlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHZpZXdJbmRleCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ICsgKCh0aGlzLmdyaWQucGFnaW5hdG9yPy5wYWdlIHx8IDApICogKHRoaXMuZ3JpZC5wYWdpbmF0b3I/LnBlclBhZ2UgfHwgMCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgcm93IGtleS5cclxuICAgICAqIEEgcm93IGluIHRoZSBncmlkIGlzIGlkZW50aWZpZWQgZWl0aGVyIGJ5OlxyXG4gICAgICogLSBwcmltYXJ5S2V5IGRhdGEgdmFsdWUsXHJcbiAgICAgKiAtIHRoZSB3aG9sZSByb3dEYXRhLCBpZiB0aGUgcHJpbWFyeUtleSBpcyBvbWl0dGVkLlxyXG4gICAgICpcclxuICAgICAqIGBgYHR5cGVzY3JpcHRcclxuICAgICAqIGxldCByb3dLZXkgPSByb3cua2V5O1xyXG4gICAgICogYGBgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQga2V5KCk6IGFueSB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuX2RhdGEgPz8gdGhpcy5ncmlkLmRhdGFWaWV3W3RoaXMuaW5kZXhdO1xyXG4gICAgICAgIGNvbnN0IHByaW1hcnlLZXkgPSB0aGlzLmdyaWQucHJpbWFyeUtleTtcclxuICAgICAgICByZXR1cm4gcHJpbWFyeUtleSA/IGRhdGFbcHJpbWFyeUtleV0gOiBkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBpZiB0aGlzIHJlcHJlc2VudHMgYWRkIHJvdyBVSVxyXG4gICAgICpcclxuICAgICAqIGBgYHR5cGVzY3JpcHRcclxuICAgICAqIGxldCBpc0FkZFJvdyA9IHJvdy5hZGRSb3dVSTtcclxuICAgICAqIGBgYFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGFkZFJvd1VJKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMuZ3JpZC5jcnVkU2VydmljZS5yb3cgJiZcclxuICAgICAgICAgICAgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdy5nZXRDbGFzc05hbWUoKSA9PT0gSWd4QWRkUm93Lm5hbWUgJiZcclxuICAgICAgICAgICAgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdy5pZCA9PT0gdGhpcy5rZXk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZGF0YSByZWNvcmQgdGhhdCBwb3B1bGF0ZXMgdGhlIHJvdy5cclxuICAgICAqXHJcbiAgICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICAgKiBsZXQgcm93RGF0YSA9IHJvdy5kYXRhO1xyXG4gICAgICogYGBgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgZGF0YSgpOiBhbnkge1xyXG4gICAgICAgIGlmICh0aGlzLmluRWRpdE1vZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1lcmdlV2l0aCh0aGlzLmdyaWQuZGF0YUNsb25lU3RyYXRlZ3kuY2xvbmUodGhpcy5fZGF0YSA/PyB0aGlzLmdyaWQuZGF0YVZpZXdbdGhpcy5pbmRleF0pLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5nZXRBZ2dyZWdhdGVkVmFsdWUodGhpcy5rZXksIGZhbHNlKSxcclxuICAgICAgICAgICAgICAgIChvYmpWYWx1ZSwgc3JjVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzcmNWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9ialZhbHVlID0gc3JjVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhID8/IHRoaXMuZ3JpZC5kYXRhVmlld1t0aGlzLmluZGV4XTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXByZWNhdGVkIFVzZSAnZGF0YScgaW5zdGVhZFxyXG4gICAgICpcclxuICAgICAqIFRoZSBkYXRhIHJlY29yZCB0aGF0IHBvcHVsYXRlcyB0aGUgcm93XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgcm93RGF0YSgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgJ2tleScgaW5zdGVhZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHJvd0lEKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMua2V5O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBpZiB0aGUgcm93IGlzIGN1cnJlbnRseSBpbiBlZGl0IG1vZGUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaW5FZGl0TW9kZSgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5ncmlkLnJvd0VkaXRhYmxlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVkaXRSb3dTdGF0ZSA9IHRoaXMuZ3JpZC5jcnVkU2VydmljZS5yb3c7XHJcbiAgICAgICAgICAgIHJldHVybiAoZWRpdFJvd1N0YXRlICYmIGVkaXRSb3dTdGF0ZS5pZCA9PT0gdGhpcy5rZXkpIHx8IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHdoZXRoZXIgdGhlIHJvdyBpcyBwaW5uZWQuXHJcbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXHJcbiAgICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICAgKiBjb25zdCBpc1Bpbm5lZCA9IHJvdy5waW5uZWQ7XHJcbiAgICAgKiBgYGBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBwaW5uZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5pc1JlY29yZFBpbm5lZCh0aGlzLmRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB3aGV0aGVyIHRoZSByb3cgaXMgcGlubmVkLlxyXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxyXG4gICAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAgICogcm93LnBpbm5lZCA9ICFyb3cucGlubmVkO1xyXG4gICAgICogYGBgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXQgcGlubmVkKHZhbDogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICh2YWwpIHtcclxuICAgICAgICAgICAgdGhpcy5waW4oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnVucGluKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgcm93IGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZS5cclxuICAgICAqXHJcbiAgICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICAgKiBjb25zdCBpc0V4cGFuZGVkID0gcm93LmV4cGFuZGVkO1xyXG4gICAgICogYGBgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5ncmlkQVBJLmdldF9yb3dfZXhwYW5zaW9uX3N0YXRlKHRoaXMuZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFeHBhbmRzL2NvbGxhcHNlcyB0aGUgcm93LlxyXG4gICAgICpcclxuICAgICAqIGBgYHR5cGVzY3JpcHRcclxuICAgICAqIHJvdy5leHBhbmRlZCA9IHRydWU7XHJcbiAgICAgKiBgYGBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldCBleHBhbmRlZCh2YWw6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmdyaWQuZ3JpZEFQSS5zZXRfcm93X2V4cGFuc2lvbl9zdGF0ZSh0aGlzLmtleSwgdmFsKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgd2hldGhlciB0aGUgcm93IGlzIHNlbGVjdGVkLlxyXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxyXG4gICAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAgICogcm93LnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAqIGBgYFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5pc1Jvd1NlbGVjdGVkKHRoaXMua2V5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgd2hldGhlciB0aGUgcm93IGlzIHNlbGVjdGVkLlxyXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxyXG4gICAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAgICogcm93LnNlbGVjdGVkID0gIXJvdy5zZWxlY3RlZDtcclxuICAgICAqIGBgYFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0IHNlbGVjdGVkKHZhbDogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICh2YWwpIHtcclxuICAgICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0Um93c1dpdGhOb0V2ZW50KFt0aGlzLmtleV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLmRlc2VsZWN0Um93c1dpdGhOb0V2ZW50KFt0aGlzLmtleV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmdyaWQuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBpZiB0aGUgcm93IGlzIGluIGRlbGV0ZSBzdGF0ZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBkZWxldGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuZ3JpZEFQSS5yb3dfZGVsZXRlZF90cmFuc2FjdGlvbih0aGlzLmtleSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGlmIHRoZSByb3cgaGFzIGNoaWxkIHJvd3MuIEFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIElneEdyaWRSb3cuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaGFzQ2hpbGRyZW4oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5pc0dob3N0UmVjb3JkKHRoaXMuZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSByZW5kZXJlZCBjZWxscyBpbiB0aGUgcm93IGNvbXBvbmVudC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBjZWxscygpOiBDZWxsVHlwZVtdIHtcclxuICAgICAgICBjb25zdCByZXM6IENlbGxUeXBlW10gPSBbXTtcclxuICAgICAgICB0aGlzLmdyaWQuY29sdW1uTGlzdC5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNlbGw6IENlbGxUeXBlID0gbmV3IElneEdyaWRDZWxsKHRoaXMuZ3JpZCwgdGhpcy5pbmRleCwgY29sLmZpZWxkKTtcclxuICAgICAgICAgICAgcmVzLnB1c2goY2VsbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBpbnMgdGhlIHNwZWNpZmllZCByb3cuXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBlbWl0cyBgb25Sb3dQaW5uaW5nYCBldmVudC5cclxuICAgICAqXHJcbiAgICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICAgKiAvLyBwaW4gdGhlIHNlbGVjdGVkIHJvdyBmcm9tIHRoZSBncmlkXHJcbiAgICAgKiB0aGlzLmdyaWQuc2VsZWN0ZWRSb3dzWzBdLnBpbigpO1xyXG4gICAgICogYGBgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwaW4oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5waW5Sb3codGhpcy5rZXksIHRoaXMuaW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVW5waW5zIHRoZSBzcGVjaWZpZWQgcm93LlxyXG4gICAgICogVGhpcyBtZXRob2QgZW1pdHMgYG9uUm93UGlubmluZ2AgZXZlbnQuXHJcbiAgICAgKlxyXG4gICAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAgICogLy8gdW5waW4gdGhlIHNlbGVjdGVkIHJvdyBmcm9tIHRoZSBncmlkXHJcbiAgICAgKiB0aGlzLmdyaWQuc2VsZWN0ZWRSb3dzWzBdLnVucGluKCk7XHJcbiAgICAgKiBgYGBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHVucGluKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQudW5waW5Sb3codGhpcy5rZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyB0aGUgc3BlY2lmaWVkIHJvdyBvYmplY3QgYW5kIHRoZSBkYXRhIHNvdXJjZSByZWNvcmQgd2l0aCB0aGUgcGFzc2VkIHZhbHVlLlxyXG4gICAgICpcclxuICAgICAqIGBgYHR5cGVzY3JpcHRcclxuICAgICAqIC8vIHVwZGF0ZSB0aGUgc2Vjb25kIHNlbGVjdGVkIHJvdydzIHZhbHVlXHJcbiAgICAgKiBsZXQgbmV3VmFsdWUgPSBcIkFwcGxlXCI7XHJcbiAgICAgKiB0aGlzLmdyaWQuc2VsZWN0ZWRSb3dzWzFdLnVwZGF0ZShuZXdWYWx1ZSk7XHJcbiAgICAgKiBgYGBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHVwZGF0ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY3J1ZFNlcnZpY2UgPSB0aGlzLmdyaWQuY3J1ZFNlcnZpY2U7XHJcbiAgICAgICAgaWYgKGNydWRTZXJ2aWNlLmNlbGxJbkVkaXRNb2RlICYmIGNydWRTZXJ2aWNlLmNlbGwuaWQucm93SUQgPT09IHRoaXMua2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZW5kUGVuZGluZyhmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJvdyA9IG5ldyBJZ3hFZGl0Um93KHRoaXMua2V5LCB0aGlzLmluZGV4LCB0aGlzLmRhdGEsIHRoaXMuZ3JpZCk7XHJcbiAgICAgICAgdGhpcy5ncmlkLmdyaWRBUEkudXBkYXRlX3Jvdyhyb3csIHZhbHVlKTtcclxuICAgICAgICB0aGlzLmdyaWQubm90aWZ5Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyB0aGUgc3BlY2lmaWVkIHJvdyBmcm9tIHRoZSBncmlkJ3MgZGF0YSBzb3VyY2UuXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBlbWl0cyBgb25Sb3dEZWxldGVkYCBldmVudC5cclxuICAgICAqXHJcbiAgICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICAgKiAvLyBkZWxldGUgdGhlIHRoaXJkIHNlbGVjdGVkIHJvdyBmcm9tIHRoZSBncmlkXHJcbiAgICAgKiB0aGlzLmdyaWQuc2VsZWN0ZWRSb3dzWzJdLmRlbGV0ZSgpO1xyXG4gICAgICogYGBgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxldGUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ncmlkLmRlbGV0ZVJvd0J5SWQodGhpcy5rZXkpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSWd4R3JpZFJvdyBleHRlbmRzIEJhc2VSb3cgaW1wbGVtZW50cyBSb3dUeXBlIHtcclxuICAgIC8qKlxyXG4gICAgICogQGhpZGRlblxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3JpZDogSWd4R3JpZENvbXBvbmVudCxcclxuICAgICAgICBwdWJsaWMgaW5kZXg6IG51bWJlciwgZGF0YT86IGFueSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5fZGF0YSA9IGRhdGEgJiYgZGF0YS5hZGRSb3cgJiYgZGF0YS5yZWNvcmRSZWYgPyBkYXRhLnJlY29yZFJlZiA6IGRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSB2aWV3IGluZGV4IGNhbGN1bGF0ZWQgcGVyIHRoZSBncmlkIHBhZ2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgdmlld0luZGV4KCk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5wYWdpbmF0b3IpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJlY2VkaW5nRGV0YWlsUm93cyA9IFtdO1xyXG4gICAgICAgICAgICBjb25zdCBwcmVjZWRpbmdHcm91cFJvd3MgPSBbXTtcclxuICAgICAgICAgICAgY29uc3QgZmlyc3RSb3cgPSB0aGlzLmdyaWQuZGF0YVZpZXdbMF07XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc0RldGFpbFJvd3MgPSB0aGlzLmdyaWQuZXhwYW5zaW9uU3RhdGVzLnNpemU7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc0dyb3VwZWRSb3dzID0gdGhpcy5ncmlkLmdyb3VwaW5nRXhwcmVzc2lvbnMubGVuZ3RoO1xyXG4gICAgICAgICAgICBsZXQgcHJlY2VkaW5nU3VtbWFyeVJvd3MgPSAwO1xyXG4gICAgICAgICAgICBjb25zdCBmaXJzdFJvd0luZCA9IHRoaXMuZ3JpZC5ncm91cGluZ0ZsYXRSZXN1bHQuaW5kZXhPZihmaXJzdFJvdyk7XHJcblxyXG4gICAgICAgICAgICAvLyBmcm9tIGdyb3VwaW5nRmxhdFJlc3VsdCwgcmVzb2x2ZSB0d28gb3RoZXIgY29sbGVjdGlvbnM6XHJcbiAgICAgICAgICAgIC8vIHByZWNlZGluZ0dyb3VwZWRSb3dzIC0+IHVzZSBpdCB0byByZXNvbHZlIHN1bW1hcnlSb3cgZm9yIGVhY2ggZ3JvdXAgaW4gcHJldmlvdXMgcGFnZXNcclxuICAgICAgICAgICAgLy8gcHJlY2VkaW5nRGV0YWlsUm93cyAtPiBpc2UgaXQgdG8gcmVzb2x2ZSB0aGUgZGV0YWlsIHJvdyBmb3IgZWFjaCBleHBhbmRlZCBncmlkIHJvdyBpbiBwcmV2aW91cyBwYWdlc1xyXG4gICAgICAgICAgICBpZiAoaGFzRGV0YWlsUm93cyB8fCBoYXNHcm91cGVkUm93cykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLmdyb3VwaW5nRmxhdFJlc3VsdC5mb3JFYWNoKChyLCBpbmQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dJRCA9IHRoaXMuZ3JpZC5wcmltYXJ5S2V5ID8gclt0aGlzLmdyaWQucHJpbWFyeUtleV0gOiByO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNHcm91cGVkUm93cyAmJiBpbmQgPCBmaXJzdFJvd0luZCAmJiB0aGlzLmdyaWQuaXNHcm91cEJ5UmVjb3JkKHIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNlZGluZ0dyb3VwUm93cy5wdXNoKHIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkLmV4cGFuc2lvblN0YXRlcy5nZXQocm93SUQpICYmIGluZCA8IGZpcnN0Um93SW5kICYmICF0aGlzLmdyaWQuaXNHcm91cEJ5UmVjb3JkKHIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNlZGluZ0RldGFpbFJvd3MucHVzaChyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZC5zdW1tYXJ5Q2FsY3VsYXRpb25Nb2RlICE9PSBHcmlkU3VtbWFyeUNhbGN1bGF0aW9uTW9kZS5yb290TGV2ZWxPbmx5KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZiBmaXJzdFJvdyBpcyBhIGNoaWxkIG9mIHRoZSBsYXN0IGl0ZW0gaW4gcHJlY2VkaW5nR3JvdXBSb3dzLFxyXG4gICAgICAgICAgICAgICAgLy8gdGhlbiBzdW1tYXJ5Um93IGZvciB0aGlzIGdpdmVuIGdyb3VwZWRSZWNvcmQgaXMgcmVuZGVyZWQgYWZ0ZXIgZmlyc3RSb3csXHJcbiAgICAgICAgICAgICAgICAvLyBpLmUuIG5lZWQgdG8gZGVjcmVhc2UgZmlyc3RSb3dJbmQgdG8gYWNjb3VudCBmb3IgdGhlIGFib3ZlLlxyXG4gICAgICAgICAgICAgICAgcHJlY2VkaW5nU3VtbWFyeVJvd3MgPSBwcmVjZWRpbmdHcm91cFJvd3MuZmlsdGVyKGdyID0+IHRoaXMuZ3JpZC5pc0V4cGFuZGVkR3JvdXAoZ3IpKS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkLnN1bW1hcnlQb3NpdGlvbiA9PT0gR3JpZFN1bW1hcnlQb3NpdGlvbi5ib3R0b20gJiYgcHJlY2VkaW5nR3JvdXBSb3dzLmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHByZWNlZGluZ0dyb3VwUm93c1twcmVjZWRpbmdHcm91cFJvd3MubGVuZ3RoIC0gMV0ucmVjb3Jkcy5pbmRleE9mKGZpcnN0Um93KSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJlY2VkaW5nU3VtbWFyeVJvd3MgKz0gLTE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBwcmVjZWRpbmdEZXRhaWxSb3dzLmxlbmd0aCArIHByZWNlZGluZ1N1bW1hcnlSb3dzICsgZmlyc3RSb3dJbmQgKyB0aGlzLmluZGV4O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluZGV4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHBhcmVudCByb3csIGlmIGdyaWQgaXMgZ3JvdXBlZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBwYXJlbnQoKTogUm93VHlwZSB7XHJcbiAgICAgICAgbGV0IHBhcmVudDogSWd4R3JvdXBCeVJvdztcclxuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5ncm91cGluZ0V4cHJlc3Npb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGkgPSB0aGlzLmluZGV4IC0gMTtcclxuICAgICAgICB3aGlsZSAoaSA+PSAwICYmICFwYXJlbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVjID0gdGhpcy5ncmlkLmRhdGFWaWV3W2ldO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ncmlkLmlzR3JvdXBCeVJlY29yZChyZWMpKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBuZXcgSWd4R3JvdXBCeVJvdyh0aGlzLmdyaWQsIGksIHJlYyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaS0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFyZW50O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSWd4VHJlZUdyaWRSb3cgZXh0ZW5kcyBCYXNlUm93IGltcGxlbWVudHMgUm93VHlwZSB7XHJcbiAgICAvKipcclxuICAgICAqIEBoaWRkZW5cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIGdyaWQ6IElneFRyZWVHcmlkQ29tcG9uZW50LFxyXG4gICAgICAgIHB1YmxpYyBpbmRleDogbnVtYmVyLCBkYXRhPzogYW55LCBwcml2YXRlIF90cmVlUm93PzogSVRyZWVHcmlkUmVjb3JkKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLl9kYXRhID0gZGF0YSAmJiBkYXRhLmFkZFJvdyAmJiBkYXRhLnJlY29yZFJlZiA/IGRhdGEucmVjb3JkUmVmIDogZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHZpZXcgaW5kZXggY2FsY3VsYXRlZCBwZXIgdGhlIGdyaWQgcGFnZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCB2aWV3SW5kZXgoKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAodGhpcy5ncmlkLmhhc1N1bW1hcml6ZWRDb2x1bW5zICYmICgodGhpcy5ncmlkLnBhZ2luYXRvcj8ucGFnZSB8fCAwKSA+IDApKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdyaWQuc3VtbWFyeUNhbGN1bGF0aW9uTW9kZSAhPT0gR3JpZFN1bW1hcnlDYWxjdWxhdGlvbk1vZGUucm9vdExldmVsT25seSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RSb3dJbmRleCA9IHRoaXMuZ3JpZC5wcm9jZXNzZWRFeHBhbmRlZEZsYXREYXRhLmluZGV4T2YodGhpcy5ncmlkLmRhdGFWaWV3WzBdLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgLy8gZmlyc3RSb3dJbmRleCBpcyBiYXNlZCBvbiBkYXRhIHJlc3VsdCBhZnRlciBhbGwgcGlwZXMgdHJpZ2dlcmVkLCBleGNsdWRpbmcgc3VtbWFyeSBwaXBlXHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcmVjZWRpbmdTdW1tYXJ5Um93cyA9IHRoaXMuZ3JpZC5zdW1tYXJ5UG9zaXRpb24gPT09IEdyaWRTdW1tYXJ5UG9zaXRpb24uYm90dG9tID9cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQucm9vdFJlY29yZHMuaW5kZXhPZih0aGlzLmdldFJvb3RQYXJlbnQodGhpcy5ncmlkLmRhdGFWaWV3WzBdKSkgOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5yb290UmVjb3Jkcy5pbmRleE9mKHRoaXMuZ2V0Um9vdFBhcmVudCh0aGlzLmdyaWQuZGF0YVZpZXdbMF0pKSArIDE7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGVyZSBpcyBhIHN1bW1hcnkgcm93IGZvciBlYWNoIHJvb3QgcmVjb3JkLCBzbyB3ZSBjYWxjdWxhdGUgaG93IG1hbnkgcm9vdCByZWNvcmRzIGFyZSByZW5kZXJlZCBiZWZvcmUgdGhlIGN1cnJlbnQgcm93XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RSb3dJbmRleCArIHByZWNlZGluZ1N1bW1hcnlSb3dzICsgdGhpcy5pbmRleDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCArICgodGhpcy5ncmlkLnBhZ2luYXRvcj8ucGFnZSB8fCAwKSAqICh0aGlzLmdyaWQucGFnaW5hdG9yPy5wZXJQYWdlIHx8IDApKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqICBUaGUgZGF0YSBwYXNzZWQgdG8gdGhlIHJvdyBjb21wb25lbnQuXHJcbiAgICAgKlxyXG4gICAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAgICogbGV0IHNlbGVjdGVkUm93RGF0YSA9IHRoaXMuZ3JpZC5zZWxlY3RlZFJvd3NbMF0ucm93RGF0YTtcclxuICAgICAqIGBgYFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGRhdGEoKTogYW55IHtcclxuICAgICAgICBpZiAodGhpcy5pbkVkaXRNb2RlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtZXJnZVdpdGgodGhpcy5ncmlkLmRhdGFDbG9uZVN0cmF0ZWd5LmNsb25lKHRoaXMuX2RhdGEgPz8gdGhpcy5ncmlkLmRhdGFWaWV3W3RoaXMuaW5kZXhdKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZ2V0QWdncmVnYXRlZFZhbHVlKHRoaXMua2V5LCBmYWxzZSksXHJcbiAgICAgICAgICAgICAgICAob2JqVmFsdWUsIHNyY1ZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3JjVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvYmpWYWx1ZSA9IHNyY1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZWMgPSB0aGlzLmdyaWQuZGF0YVZpZXdbdGhpcy5pbmRleF07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGEgPyB0aGlzLl9kYXRhIDogdGhpcy5ncmlkLmlzVHJlZVJvdyhyZWMpID8gcmVjLmRhdGEgOiByZWM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBjaGlsZCByb3dzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGNoaWxkcmVuKCk6IFJvd1R5cGVbXSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGRyZW46IElneFRyZWVHcmlkUm93W10gPSBbXTtcclxuICAgICAgICBpZiAodGhpcy50cmVlUm93LmV4cGFuZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZVJvdy5jaGlsZHJlbi5mb3JFYWNoKChyZWMsIGkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJvdyA9IG5ldyBJZ3hUcmVlR3JpZFJvdyh0aGlzLmdyaWQsIHRoaXMuaW5kZXggKyAxICsgaSwgcmVjLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChyb3cpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgcGFyZW50IHJvdy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBwYXJlbnQoKTogUm93VHlwZSB7XHJcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5ncmlkLmdldFJvd0J5S2V5KHRoaXMudHJlZVJvdy5wYXJlbnQ/LnJvd0lEKTtcclxuICAgICAgICByZXR1cm4gcm93O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0cnVlIGlmIGNoaWxkIHJvd3MgZXhpc3QuIEFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIElneEdyaWRSb3cuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaGFzQ2hpbGRyZW4oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJlZVJvdy5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmVlUm93LmNoaWxkcmVuLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBgSVRyZWVHcmlkUmVjb3JkYCB3aXRoIG1ldGFkYXRhIGFib3V0IHRoZSByb3cgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHRyZWUgZ3JpZC5cclxuICAgICAqXHJcbiAgICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICAgKiBjb25zdCByb3dQYXJlbnQgPSB0aGlzLnRyZWVHcmlkLmdldFJvd0J5S2V5KDEpLnRyZWVSb3cucGFyZW50O1xyXG4gICAgICogYGBgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgdHJlZVJvdygpOiBJVHJlZUdyaWRSZWNvcmQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90cmVlUm93ID8/IHRoaXMuZ3JpZC5yZWNvcmRzLmdldCh0aGlzLmtleSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHdoZXRoZXIgdGhlIHJvdyBpcyBwaW5uZWQuXHJcbiAgICAgKlxyXG4gICAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAgICogbGV0IGlzUGlubmVkID0gcm93LnBpbm5lZDtcclxuICAgICAqIGBgYFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHBpbm5lZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmlzUmVjb3JkUGlubmVkKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB3aGV0aGVyIHRoZSByb3cgaXMgcGlubmVkLlxyXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxyXG4gICAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAgICogcm93LnBpbm5lZCA9ICFyb3cucGlubmVkO1xyXG4gICAgICogYGBgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXQgcGlubmVkKHZhbDogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICh2YWwpIHtcclxuICAgICAgICAgICAgdGhpcy5waW4oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnVucGluKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB3aGV0aGVyIHRoZSByb3cgaXMgZXhwYW5kZWQuXHJcbiAgICAgKlxyXG4gICAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAgICogbGV0IGVzRXhwYW5kZWQgPSByb3cuZXhwYW5kZWQ7XHJcbiAgICAgKiBgYGBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmdyaWRBUEkuZ2V0X3Jvd19leHBhbnNpb25fc3RhdGUodGhpcy50cmVlUm93KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV4cGFuZHMvY29sbGFwc2VzIHRoZSByb3cuXHJcbiAgICAgKlxyXG4gICAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAgICogcm93LmV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAqIGBgYFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0IGV4cGFuZGVkKHZhbDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuZ3JpZC5ncmlkQVBJLnNldF9yb3dfZXhwYW5zaW9uX3N0YXRlKHRoaXMua2V5LCB2YWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgLy8gVE9ETyBjZWxsXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5pc0dob3N0UmVjb3JkKHRoaXMuZGF0YSkgPyB0aGlzLnRyZWVSb3cuaXNGaWx0ZXJlZE91dFBhcmVudCA9PT0gdW5kZWZpbmVkIDogZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRSb290UGFyZW50KHJvdzogSVRyZWVHcmlkUmVjb3JkKTogSVRyZWVHcmlkUmVjb3JkIHtcclxuICAgICAgICB3aGlsZSAocm93LnBhcmVudCkge1xyXG4gICAgICAgICAgICByb3cgPSByb3cucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcm93O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSWd4SGllcmFyY2hpY2FsR3JpZFJvdyBleHRlbmRzIEJhc2VSb3cgaW1wbGVtZW50cyBSb3dUeXBlIHtcclxuICAgIC8qKlxyXG4gICAgICogQGhpZGRlblxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3JpZDogSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudCxcclxuICAgICAgICBwdWJsaWMgaW5kZXg6IG51bWJlciwgZGF0YT86IGFueSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5fZGF0YSA9IGRhdGEgJiYgZGF0YS5hZGRSb3cgJiYgZGF0YS5yZWNvcmRSZWYgPyBkYXRhLnJlY29yZFJlZiA6IGRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgcm93IGlzbGFuZHMgZXhpc3QuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaGFzQ2hpbGRyZW4oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy5ncmlkLmNoaWxkTGF5b3V0S2V5cy5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSB2aWV3IGluZGV4IGNhbGN1bGF0ZWQgcGVyIHRoZSBncmlkIHBhZ2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgdmlld0luZGV4KCkge1xyXG4gICAgICAgIGNvbnN0IGZpcnN0Um93SW5kID0gdGhpcy5ncmlkLmZpbHRlcmVkU29ydGVkRGF0YS5pbmRleE9mKHRoaXMuZ3JpZC5kYXRhVmlld1swXSk7XHJcbiAgICAgICAgY29uc3QgZXhwYW5kZWRSb3dzID0gdGhpcy5ncmlkLmZpbHRlcmVkU29ydGVkRGF0YS5maWx0ZXIoKHJlYywgaW5kKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvd0lEID0gdGhpcy5ncmlkLnByaW1hcnlLZXkgPyByZWNbdGhpcy5ncmlkLnByaW1hcnlLZXldIDogcmVjO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmV4cGFuc2lvblN0YXRlcy5nZXQocm93SUQpICYmIGluZCA8IGZpcnN0Um93SW5kO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBmaXJzdFJvd0luZCArIGV4cGFuZGVkUm93cy5sZW5ndGggKyB0aGlzLmluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgcmVuZGVyZWQgY2VsbHMgaW4gdGhlIHJvdyBjb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgY2VsbHMoKTogQ2VsbFR5cGVbXSB7XHJcbiAgICAgICAgY29uc3QgcmVzOiBDZWxsVHlwZVtdID0gW107XHJcbiAgICAgICAgdGhpcy5ncmlkLmNvbHVtbkxpc3QuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjZWxsOiBDZWxsVHlwZSA9IG5ldyBJZ3hHcmlkQ2VsbCh0aGlzLmdyaWQsIHRoaXMuaW5kZXgsIGNvbC5maWVsZCk7XHJcbiAgICAgICAgICAgIHJlcy5wdXNoKGNlbGwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBJZ3hHcm91cEJ5Um93IGltcGxlbWVudHMgUm93VHlwZSB7XHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHJvdyBpbmRleC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGluZGV4OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZ3JpZCB0aGF0IGNvbnRhaW5zIHRoZSByb3cuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBncmlkOiBJZ3hHcmlkQ29tcG9uZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBhbHdheXMgdHJ1ZSwgYmVjYXVzZSB0aGlzIGlzIGluIGluc3RhbmNlIG9mIGFuIElneEdyb3VwQnlSb3cuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc0dyb3VwQnlSb3c6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgSUdyb3VwQnlSZWNvcmQgb2JqZWN0LCByZXByZXNlbnRpbmcgdGhlIGdyb3VwIHJlY29yZCwgaWYgdGhlIHJvdyBpcyBhIEdyb3VwQnlSb3cuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgZ3JvdXBSb3coKTogSUdyb3VwQnlSZWNvcmQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9ncm91cFJvdyA/IHRoaXMuX2dyb3VwUm93IDogdGhpcy5ncmlkLmRhdGFWaWV3W3RoaXMuaW5kZXhdO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgY2hpbGQgcm93cy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBjaGlsZHJlbigpOiBSb3dUeXBlW10ge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuOiBJZ3hHcmlkUm93W10gPSBbXTtcclxuICAgICAgICB0aGlzLmdyb3VwUm93LnJlY29yZHMuZm9yRWFjaCgocmVjLCBpKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IG5ldyBJZ3hHcmlkUm93KHRoaXMuZ3JpZCwgdGhpcy5pbmRleCArIDEgKyBpLCByZWMpO1xyXG4gICAgICAgICAgICBjaGlsZHJlbi5wdXNoKHJvdyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgdmlldyBpbmRleCBjYWxjdWxhdGVkIHBlciB0aGUgZ3JpZCBwYWdlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHZpZXdJbmRleCgpOiBudW1iZXIge1xyXG4gICAgICAgIGlmICh0aGlzLmdyaWQucGFnZSkge1xyXG4gICAgICAgICAgICBjb25zdCBwcmVjZWRpbmdEZXRhaWxSb3dzID0gW107XHJcbiAgICAgICAgICAgIGNvbnN0IHByZWNlZGluZ0dyb3VwUm93cyA9IFtdO1xyXG4gICAgICAgICAgICBjb25zdCBmaXJzdFJvdyA9IHRoaXMuZ3JpZC5kYXRhVmlld1swXTtcclxuICAgICAgICAgICAgY29uc3QgaGFzRGV0YWlsUm93cyA9IHRoaXMuZ3JpZC5leHBhbnNpb25TdGF0ZXMuc2l6ZTtcclxuICAgICAgICAgICAgY29uc3QgaGFzR3JvdXBlZFJvd3MgPSB0aGlzLmdyaWQuZ3JvdXBpbmdFeHByZXNzaW9ucy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGxldCBwcmVjZWRpbmdTdW1tYXJ5Um93cyA9IDA7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Um93SW5kID0gdGhpcy5ncmlkLmdyb3VwaW5nRmxhdFJlc3VsdC5pbmRleE9mKGZpcnN0Um93KTtcclxuXHJcbiAgICAgICAgICAgIC8vIGZyb20gZ3JvdXBpbmdGbGF0UmVzdWx0LCByZXNvbHZlIHR3byBvdGhlciBjb2xsZWN0aW9uczpcclxuICAgICAgICAgICAgLy8gcHJlY2VkaW5nR3JvdXBlZFJvd3MgLT4gdXNlIGl0IHRvIHJlc29sdmUgc3VtbWFyeVJvdyBmb3IgZWFjaCBncm91cCBpbiBwcmV2aW91cyBwYWdlc1xyXG4gICAgICAgICAgICAvLyBwcmVjZWRpbmdEZXRhaWxSb3dzIC0+IGlzZSBpdCB0byByZXNvbHZlIHRoZSBkZXRhaWwgcm93IGZvciBlYWNoIGV4cGFuZGVkIGdyaWQgcm93IGluIHByZXZpb3VzIHBhZ2VzXHJcbiAgICAgICAgICAgIGlmIChoYXNEZXRhaWxSb3dzIHx8IGhhc0dyb3VwZWRSb3dzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWQuZ3JvdXBpbmdGbGF0UmVzdWx0LmZvckVhY2goKHIsIGluZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd0lEID0gdGhpcy5ncmlkLnByaW1hcnlLZXkgPyByW3RoaXMuZ3JpZC5wcmltYXJ5S2V5XSA6IHI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0dyb3VwZWRSb3dzICYmIGluZCA8IGZpcnN0Um93SW5kICYmIHRoaXMuZ3JpZC5pc0dyb3VwQnlSZWNvcmQocikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2VkaW5nR3JvdXBSb3dzLnB1c2gocik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmdyaWQuZXhwYW5zaW9uU3RhdGVzLmdldChyb3dJRCkgJiYgaW5kIDwgZmlyc3RSb3dJbmQgJiYgIXRoaXMuZ3JpZC5pc0dyb3VwQnlSZWNvcmQocikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2VkaW5nRGV0YWlsUm93cy5wdXNoKHIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5ncmlkLnN1bW1hcnlDYWxjdWxhdGlvbk1vZGUgIT09IEdyaWRTdW1tYXJ5Q2FsY3VsYXRpb25Nb2RlLnJvb3RMZXZlbE9ubHkpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlmIGZpcnN0Um93IGlzIGEgY2hpbGQgb2YgdGhlIGxhc3QgaXRlbSBpbiBwcmVjZWRpbmdHcm91cFJvd3MsXHJcbiAgICAgICAgICAgICAgICAvLyB0aGVuIHN1bW1hcnlSb3cgZm9yIHRoaXMgZ2l2ZW4gZ3JvdXBlZFJlY29yZCBpcyByZW5kZXJlZCBhZnRlciBmaXJzdFJvdyxcclxuICAgICAgICAgICAgICAgIC8vIGkuZS4gbmVlZCB0byBkZWNyZWFzZSBmaXJzdFJvd0luZCB0byBhY2NvdW50IGZvciB0aGUgYWJvdmUuXHJcbiAgICAgICAgICAgICAgICBwcmVjZWRpbmdTdW1tYXJ5Um93cyA9IHByZWNlZGluZ0dyb3VwUm93cy5maWx0ZXIoZ3IgPT4gdGhpcy5ncmlkLmlzRXhwYW5kZWRHcm91cChncikpLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdyaWQuc3VtbWFyeVBvc2l0aW9uID09PSBHcmlkU3VtbWFyeVBvc2l0aW9uLmJvdHRvbSAmJiBwcmVjZWRpbmdHcm91cFJvd3MubGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgICAgICAgcHJlY2VkaW5nR3JvdXBSb3dzW3ByZWNlZGluZ0dyb3VwUm93cy5sZW5ndGggLSAxXS5yZWNvcmRzLmluZGV4T2YoZmlyc3RSb3cpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcmVjZWRpbmdTdW1tYXJ5Um93cyArPSAtMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHByZWNlZGluZ0RldGFpbFJvd3MubGVuZ3RoICsgcHJlY2VkaW5nU3VtbWFyeVJvd3MgKyBmaXJzdFJvd0luZCArIHRoaXMuaW5kZXg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGhpZGRlblxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihncmlkOiBJZ3hHcmlkQ29tcG9uZW50LCBpbmRleDogbnVtYmVyLCBwcml2YXRlIF9ncm91cFJvdz86IElHcm91cEJ5UmVjb3JkKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkID0gZ3JpZDtcclxuICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgdGhpcy5pc0dyb3VwQnlSb3cgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB3aGV0aGVyIHRoZSByb3cgaXMgc2VsZWN0ZWQuXHJcbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXHJcbiAgICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICAgKiByb3cuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICogYGBgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uZXZlcnkocm93ID0+IHJvdy5zZWxlY3RlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHdoZXRoZXIgdGhlIHJvdyBpcyBzZWxlY3RlZC5cclxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cclxuICAgICAqIGBgYHR5cGVzY3JpcHRcclxuICAgICAqIHJvdy5zZWxlY3RlZCA9ICFyb3cuc2VsZWN0ZWQ7XHJcbiAgICAgKiBgYGBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldCBzZWxlY3RlZCh2YWw6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAodmFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaChyb3cgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0Um93c1dpdGhOb0V2ZW50KFtyb3cua2V5XSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaChyb3cgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2UuZGVzZWxlY3RSb3dzV2l0aE5vRXZlbnQoW3Jvdy5rZXldKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ3JpZC5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzL3NldHMgd2hldGhlciB0aGUgZ3JvdXAgcm93IGlzIGV4cGFuZGVkLlxyXG4gICAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAgICogY29uc3QgZ3JvdXBSb3dFeHBhbmRlZCA9IGdyb3VwUm93LmV4cGFuZGVkO1xyXG4gICAgICogYGBgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5pc0V4cGFuZGVkR3JvdXAodGhpcy5ncm91cFJvdyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCBleHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuZ3JpZEFQSS5zZXRfZ3JvdXByb3dfZXhwYW5zaW9uX3N0YXRlKHRoaXMuZ3JvdXBSb3csIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNBY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmFjdGl2ZU5vZGUgPyB0aGlzLmdyaWQubmF2aWdhdGlvbi5hY3RpdmVOb2RlLnJvdyA9PT0gdGhpcy5pbmRleCA6IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9nZ2xlcyB0aGUgZ3JvdXAgcm93IGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZS5cclxuICAgICAqIGBgYHR5cGVzY3JpcHRcclxuICAgICAqIGdyb3VwUm93LnRvZ2dsZSgpXHJcbiAgICAgKiBgYGBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHRvZ2dsZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdyaWQudG9nZ2xlR3JvdXAodGhpcy5ncm91cFJvdyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXQgZ3JpZEFQSSgpOiBJZ3hHcmlkQVBJU2VydmljZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5ncmlkQVBJIGFzIElneEdyaWRBUElTZXJ2aWNlO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSWd4U3VtbWFyeVJvdyBpbXBsZW1lbnRzIFJvd1R5cGUge1xyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSByb3cgaW5kZXguXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbmRleDogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGdyaWQgdGhhdCBjb250YWlucyB0aGUgcm93LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ3JpZDogSWd4R3JpZENvbXBvbmVudCB8IElneFRyZWVHcmlkQ29tcG9uZW50IHwgSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYWx3YXlzIHRydWUsIGJlY2F1c2UgdGhpcyBpcyBpbiBpbnN0YW5jZSBvZiBhbiBJZ3hHcm91cEJ5Um93LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXNTdW1tYXJ5Um93OiBib29sZWFuO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIGN1cmVudCBncmlkIHR5cGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBncmlkVHlwZTogR3JpZEluc3RhbmNlVHlwZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBJR3JvdXBCeVJlY29yZCBvYmplY3QsIHJlcHJlc2VudGluZyB0aGUgZ3JvdXAgcmVjb3JkLCBpZiB0aGUgcm93IGlzIGEgR3JvdXBCeVJvdy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBzdW1tYXJpZXMoKTogTWFwPHN0cmluZywgSWd4U3VtbWFyeVJlc3VsdFtdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1bW1hcmllcyA/IHRoaXMuX3N1bW1hcmllcyA6IHRoaXMuZ3JpZC5kYXRhVmlld1t0aGlzLmluZGV4XS5zdW1tYXJpZXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSB2aWV3IGluZGV4IGNhbGN1bGF0ZWQgcGVyIHRoZSBncmlkIHBhZ2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgdmlld0luZGV4KCk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5oYXNTdW1tYXJpemVkQ29sdW1ucyAmJiB0aGlzLmdyaWQucGFnZSA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IEdyaWRJbnN0YW5jZVR5cGUuR3JpZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkID0gdGhpcy5ncmlkIGFzIElneEdyaWRDb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkLnBhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVjZWRpbmdEZXRhaWxSb3dzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlY2VkaW5nR3JvdXBSb3dzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlyc3RSb3cgPSB0aGlzLmdyaWQuZGF0YVZpZXdbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzRGV0YWlsUm93cyA9IHRoaXMuZ3JpZC5leHBhbnNpb25TdGF0ZXMuc2l6ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNHcm91cGVkUm93cyA9IHRoaXMuZ3JpZC5ncm91cGluZ0V4cHJlc3Npb25zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJlY2VkaW5nU3VtbWFyeVJvd3MgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0Um93SW5kID0gdGhpcy5ncmlkLmdyb3VwaW5nRmxhdFJlc3VsdC5pbmRleE9mKGZpcnN0Um93KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSBncm91cGluZ0ZsYXRSZXN1bHQsIHJlc29sdmUgdHdvIG90aGVyIGNvbGxlY3Rpb25zOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHByZWNlZGluZ0dyb3VwZWRSb3dzIC0+IHVzZSBpdCB0byByZXNvbHZlIHN1bW1hcnlSb3cgZm9yIGVhY2ggZ3JvdXAgaW4gcHJldmlvdXMgcGFnZXNcclxuICAgICAgICAgICAgICAgICAgICAvLyBwcmVjZWRpbmdEZXRhaWxSb3dzIC0+IGlzZSBpdCB0byByZXNvbHZlIHRoZSBkZXRhaWwgcm93IGZvciBlYWNoIGV4cGFuZGVkIGdyaWQgcm93IGluIHByZXZpb3VzIHBhZ2VzXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0RldGFpbFJvd3MgfHwgaGFzR3JvdXBlZFJvd3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLmdyb3VwaW5nRmxhdFJlc3VsdC5mb3JFYWNoKChyLCBpbmQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd0lEID0gdGhpcy5ncmlkLnByaW1hcnlLZXkgPyByW3RoaXMuZ3JpZC5wcmltYXJ5S2V5XSA6IHI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzR3JvdXBlZFJvd3MgJiYgaW5kIDwgZmlyc3RSb3dJbmQgJiYgdGhpcy5ncmlkLmlzR3JvdXBCeVJlY29yZChyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNlZGluZ0dyb3VwUm93cy5wdXNoKHIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZC5leHBhbnNpb25TdGF0ZXMuZ2V0KHJvd0lEKSAmJiBpbmQgPCBmaXJzdFJvd0luZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLmdyaWQuaXNHcm91cEJ5UmVjb3JkKHIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2VkaW5nRGV0YWlsUm93cy5wdXNoKHIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmdyaWQuc3VtbWFyeUNhbGN1bGF0aW9uTW9kZSAhPT0gR3JpZFN1bW1hcnlDYWxjdWxhdGlvbk1vZGUucm9vdExldmVsT25seSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBmaXJzdFJvdyBpcyBhIGNoaWxkIG9mIHRoZSBsYXN0IGl0ZW0gaW4gcHJlY2VkaW5nR3JvdXBSb3dzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIHN1bW1hcnlSb3cgZm9yIHRoaXMgZ2l2ZW4gZ3JvdXBlZFJlY29yZCBpcyByZW5kZXJlZCBhZnRlciBmaXJzdFJvdyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaS5lLiBuZWVkIHRvIGRlY3JlYXNlIGZpcnN0Um93SW5kIHRvIGFjY291bnQgZm9yIHRoZSBhYm92ZS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2VkaW5nU3VtbWFyeVJvd3MgPSBwcmVjZWRpbmdHcm91cFJvd3MuZmlsdGVyKGdyID0+IHRoaXMuZ3JpZC5pc0V4cGFuZGVkR3JvdXAoZ3IpKS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmdyaWQuc3VtbWFyeVBvc2l0aW9uID09PSBHcmlkU3VtbWFyeVBvc2l0aW9uLmJvdHRvbSAmJiBwcmVjZWRpbmdHcm91cFJvd3MubGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjZWRpbmdHcm91cFJvd3NbcHJlY2VkaW5nR3JvdXBSb3dzLmxlbmd0aCAtIDFdLnJlY29yZHMuaW5kZXhPZihmaXJzdFJvdykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2VkaW5nU3VtbWFyeVJvd3MgKz0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmVjZWRpbmdEZXRhaWxSb3dzLmxlbmd0aCArIHByZWNlZGluZ1N1bW1hcnlSb3dzICsgZmlyc3RSb3dJbmQgKyB0aGlzLmluZGV4O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbmRleDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdyaWRUeXBlID09PSBHcmlkSW5zdGFuY2VUeXBlLlRyZWVHcmlkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWQgPSB0aGlzLmdyaWQgYXMgSWd4VHJlZUdyaWRDb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkLnN1bW1hcnlDYWxjdWxhdGlvbk1vZGUgIT09IEdyaWRTdW1tYXJ5Q2FsY3VsYXRpb25Nb2RlLnJvb3RMZXZlbE9ubHkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdFJvd0luZGV4ID0gdGhpcy5ncmlkLnByb2Nlc3NlZEV4cGFuZGVkRmxhdERhdGEuaW5kZXhPZih0aGlzLmdyaWQuZGF0YVZpZXdbMF0uZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlY2VkaW5nU3VtbWFyeVJvd3MgPSB0aGlzLmdyaWQuc3VtbWFyeVBvc2l0aW9uID09PSBHcmlkU3VtbWFyeVBvc2l0aW9uLmJvdHRvbSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5yb290UmVjb3Jkcy5pbmRleE9mKHRoaXMuZ2V0Um9vdFBhcmVudCh0aGlzLmdyaWQuZGF0YVZpZXdbMF0pKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5yb290UmVjb3Jkcy5pbmRleE9mKHRoaXMuZ2V0Um9vdFBhcmVudCh0aGlzLmdyaWQuZGF0YVZpZXdbMF0pKSArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0Um93SW5kZXggKyBwcmVjZWRpbmdTdW1tYXJ5Um93cyArIHRoaXMuaW5kZXg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ICsgKCh0aGlzLmdyaWQucGFnaW5hdG9yPy5wYWdlIHx8IDApICogKHRoaXMuZ3JpZC5wYWdpbmF0b3I/LnBlclBhZ2UgfHwgMCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGhpZGRlblxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihncmlkOiBJZ3hHcmlkQ29tcG9uZW50IHwgSWd4VHJlZUdyaWRDb21wb25lbnQgfCBJZ3hIaWVyYXJjaGljYWxHcmlkQ29tcG9uZW50LFxyXG4gICAgICAgIGluZGV4OiBudW1iZXIsIHByaXZhdGUgX3N1bW1hcmllcz86IE1hcDxzdHJpbmcsIElneFN1bW1hcnlSZXN1bHRbXT4sIHR5cGU/OiBHcmlkSW5zdGFuY2VUeXBlKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkID0gZ3JpZDtcclxuICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgdGhpcy5pc1N1bW1hcnlSb3cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZ3JpZFR5cGUgPSB0eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0Um9vdFBhcmVudChyb3c6IElUcmVlR3JpZFJlY29yZCk6IElUcmVlR3JpZFJlY29yZCB7XHJcbiAgICAgICAgd2hpbGUgKHJvdy5wYXJlbnQpIHtcclxuICAgICAgICAgICAgcm93ID0gcm93LnBhcmVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJvdztcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
705
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wdWJsaWMtcm93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2dyaWQtcHVibGljLXJvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSwwQkFBMEIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5HLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQU9qRCxPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUV6QyxNQUFlLE9BQU87SUFRbEI7O09BRUc7SUFDSCxJQUFXLFNBQVM7O1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxJQUFJLEtBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxJQUFXLEdBQUc7O1FBQ1YsTUFBTSxJQUFJLEdBQUcsTUFBQSxJQUFJLENBQUMsS0FBSyxtQ0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDeEMsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFX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Q0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2pGLE9BQU8sYUFBYSxHQUFHLG9CQUFvQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7aUJBQzVEO2FBQ0o7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxJQUFJLEtBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFhTyxhQUFhLENBQUMsR0FBb0I7UUFDdEMsT0FBTyxHQUFHLENBQUMsTUFBTSxFQUFFO1lBQ2YsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7U0FDcEI7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElHcm91cEJ5UmVjb3JkIH0gZnJvbSAnLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwYnktcmVjb3JkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDZWxsVHlwZSB9IGZyb20gJy4vY29tbW9uL2NlbGwuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneEFkZFJvdywgSWd4RWRpdFJvdyB9IGZyb20gJy4vY29tbW9uL2NydWQuc2VydmljZSc7XG5pbXBvcnQgeyBHcmlkSW5zdGFuY2VUeXBlLCBHcmlkU3VtbWFyeUNhbGN1bGF0aW9uTW9kZSwgR3JpZFN1bW1hcnlQb3NpdGlvbiB9IGZyb20gJy4vY29tbW9uL2VudW1zJztcbmltcG9ydCB7IFJvd1R5cGUgfSBmcm9tICcuL2NvbW1vbi9yb3cuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneEdyaWRDZWxsIH0gZnJvbSAnLi9ncmlkLXB1YmxpYy1jZWxsJztcbmltcG9ydCB7IElneEdyaWRBUElTZXJ2aWNlIH0gZnJvbSAnLi9ncmlkL2dyaWQtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4R3JpZENvbXBvbmVudCB9IGZyb20gJy4vZ3JpZC9ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hIaWVyYXJjaGljYWxHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9oaWVyYXJjaGljYWwtZ3JpZC9oaWVyYXJjaGljYWwtZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4U3VtbWFyeVJlc3VsdCB9IGZyb20gJy4vc3VtbWFyaWVzL2dyaWQtc3VtbWFyeSc7XG5pbXBvcnQgeyBJZ3hUcmVlR3JpZENvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1ncmlkL3RyZWUtZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSVRyZWVHcmlkUmVjb3JkIH0gZnJvbSAnLi90cmVlLWdyaWQvdHJlZS1ncmlkLmludGVyZmFjZXMnO1xuaW1wb3J0IG1lcmdlV2l0aCBmcm9tICdsb2Rhc2gubWVyZ2V3aXRoJztcblxuYWJzdHJhY3QgY2xhc3MgQmFzZVJvdyBpbXBsZW1lbnRzIFJvd1R5cGUge1xuICAgIHB1YmxpYyBpbmRleDogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIFRoZSBncmlkIHRoYXQgY29udGFpbnMgdGhlIHJvdy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ3JpZDogSWd4R3JpZENvbXBvbmVudCB8IElneFRyZWVHcmlkQ29tcG9uZW50IHwgSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudDtcbiAgICBwcm90ZWN0ZWQgX2RhdGE/OiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2aWV3IGluZGV4IGNhbGN1bGF0ZWQgcGVyIHRoZSBncmlkIHBhZ2UuXG4gICAgICovXG4gICAgcHVibGljIGdldCB2aWV3SW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXggKyAoKHRoaXMuZ3JpZC5wYWdpbmF0b3I/LnBhZ2UgfHwgMCkgKiAodGhpcy5ncmlkLnBhZ2luYXRvcj8ucGVyUGFnZSB8fCAwKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcm93IGtleS5cbiAgICAgKiBBIHJvdyBpbiB0aGUgZ3JpZCBpcyBpZGVudGlmaWVkIGVpdGhlciBieTpcbiAgICAgKiAtIHByaW1hcnlLZXkgZGF0YSB2YWx1ZSxcbiAgICAgKiAtIHRoZSB3aG9sZSByb3dEYXRhLCBpZiB0aGUgcHJpbWFyeUtleSBpcyBvbWl0dGVkLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCByb3dLZXkgPSByb3cua2V5O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQga2V5KCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9kYXRhID8/IHRoaXMuZ3JpZC5kYXRhVmlld1t0aGlzLmluZGV4XTtcbiAgICAgICAgY29uc3QgcHJpbWFyeUtleSA9IHRoaXMuZ3JpZC5wcmltYXJ5S2V5O1xuICAgICAgICByZXR1cm4gcHJpbWFyeUtleSA/IGRhdGFbcHJpbWFyeUtleV0gOiBkYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgaWYgdGhpcyByZXByZXNlbnRzIGFkZCByb3cgVUlcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaXNBZGRSb3cgPSByb3cuYWRkUm93VUk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBhZGRSb3dVSSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdyAmJlxuICAgICAgICAgICAgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdy5nZXRDbGFzc05hbWUoKSA9PT0gSWd4QWRkUm93Lm5hbWUgJiZcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5jcnVkU2VydmljZS5yb3cuaWQgPT09IHRoaXMua2V5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHJlY29yZCB0aGF0IHBvcHVsYXRlcyB0aGUgcm93LlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCByb3dEYXRhID0gcm93LmRhdGE7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBkYXRhKCk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLmluRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZVdpdGgodGhpcy5ncmlkLmRhdGFDbG9uZVN0cmF0ZWd5LmNsb25lKHRoaXMuX2RhdGEgPz8gdGhpcy5ncmlkLmRhdGFWaWV3W3RoaXMuaW5kZXhdKSxcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmdldEFnZ3JlZ2F0ZWRWYWx1ZSh0aGlzLmtleSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgIChvYmpWYWx1ZSwgc3JjVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3JjVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2JqVmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhID8/IHRoaXMuZ3JpZC5kYXRhVmlld1t0aGlzLmluZGV4XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgJ2RhdGEnIGluc3RlYWRcbiAgICAgKlxuICAgICAqIFRoZSBkYXRhIHJlY29yZCB0aGF0IHBvcHVsYXRlcyB0aGUgcm93XG4gICAgICovXG4gICAgcHVibGljIGdldCByb3dEYXRhKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlICdrZXknIGluc3RlYWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHJvd0lEKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmtleTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGlmIHRoZSByb3cgaXMgY3VycmVudGx5IGluIGVkaXQgbW9kZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGluRWRpdE1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmdyaWQucm93RWRpdGFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkaXRSb3dTdGF0ZSA9IHRoaXMuZ3JpZC5jcnVkU2VydmljZS5yb3c7XG4gICAgICAgICAgICByZXR1cm4gKGVkaXRSb3dTdGF0ZSAmJiBlZGl0Um93U3RhdGUuaWQgPT09IHRoaXMua2V5KSB8fCBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgd2hldGhlciB0aGUgcm93IGlzIHBpbm5lZC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGlzUGlubmVkID0gcm93LnBpbm5lZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHBpbm5lZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5pc1JlY29yZFBpbm5lZCh0aGlzLmRhdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgd2hldGhlciB0aGUgcm93IGlzIHBpbm5lZC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHJvdy5waW5uZWQgPSAhcm93LnBpbm5lZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IHBpbm5lZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgdGhpcy5waW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudW5waW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHJvdyBleHBhbmRlZC9jb2xsYXBzZWQgc3RhdGUuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgaXNFeHBhbmRlZCA9IHJvdy5leHBhbmRlZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmdyaWRBUEkuZ2V0X3Jvd19leHBhbnNpb25fc3RhdGUodGhpcy5kYXRhKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHBhbmRzL2NvbGxhcHNlcyB0aGUgcm93LlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHJvdy5leHBhbmRlZCA9IHRydWU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBleHBhbmRlZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5ncmlkLmdyaWRBUEkuc2V0X3Jvd19leHBhbnNpb25fc3RhdGUodGhpcy5rZXksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB3aGV0aGVyIHRoZSByb3cgaXMgc2VsZWN0ZWQuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiByb3cuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5pc1Jvd1NlbGVjdGVkKHRoaXMua2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHdoZXRoZXIgdGhlIHJvdyBpcyBzZWxlY3RlZC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHJvdy5zZWxlY3RlZCA9ICFyb3cuc2VsZWN0ZWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBzZWxlY3RlZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0Um93c1dpdGhOb0V2ZW50KFt0aGlzLmtleV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2UuZGVzZWxlY3RSb3dzV2l0aE5vRXZlbnQoW3RoaXMua2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGlmIHRoZSByb3cgaXMgaW4gZGVsZXRlIHN0YXRlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGVsZXRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5ncmlkQVBJLnJvd19kZWxldGVkX3RyYW5zYWN0aW9uKHRoaXMua2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGlmIHRoZSByb3cgaGFzIGNoaWxkIHJvd3MuIEFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIElneEdyaWRSb3cuXG4gICAgICovXG4gICAgcHVibGljIGdldCBoYXNDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuaXNHaG9zdFJlY29yZCh0aGlzLmRhdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHJlbmRlcmVkIGNlbGxzIGluIHRoZSByb3cgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY2VsbHMoKTogQ2VsbFR5cGVbXSB7XG4gICAgICAgIGNvbnN0IHJlczogQ2VsbFR5cGVbXSA9IFtdO1xuICAgICAgICB0aGlzLmdyaWQuY29sdW1uTGlzdC5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgICBjb25zdCBjZWxsOiBDZWxsVHlwZSA9IG5ldyBJZ3hHcmlkQ2VsbCh0aGlzLmdyaWQsIHRoaXMuaW5kZXgsIGNvbC5maWVsZCk7XG4gICAgICAgICAgICByZXMucHVzaChjZWxsKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGlucyB0aGUgc3BlY2lmaWVkIHJvdy5cbiAgICAgKiBUaGlzIG1ldGhvZCBlbWl0cyBgb25Sb3dQaW5uaW5nYCBldmVudC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBwaW4gdGhlIHNlbGVjdGVkIHJvdyBmcm9tIHRoZSBncmlkXG4gICAgICogdGhpcy5ncmlkLnNlbGVjdGVkUm93c1swXS5waW4oKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgcGluKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLnBpblJvdyh0aGlzLmtleSwgdGhpcy5pbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVW5waW5zIHRoZSBzcGVjaWZpZWQgcm93LlxuICAgICAqIFRoaXMgbWV0aG9kIGVtaXRzIGBvblJvd1Bpbm5pbmdgIGV2ZW50LlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIHVucGluIHRoZSBzZWxlY3RlZCByb3cgZnJvbSB0aGUgZ3JpZFxuICAgICAqIHRoaXMuZ3JpZC5zZWxlY3RlZFJvd3NbMF0udW5waW4oKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgdW5waW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQudW5waW5Sb3codGhpcy5rZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIHNwZWNpZmllZCByb3cgb2JqZWN0IGFuZCB0aGUgZGF0YSBzb3VyY2UgcmVjb3JkIHdpdGggdGhlIHBhc3NlZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyB1cGRhdGUgdGhlIHNlY29uZCBzZWxlY3RlZCByb3cncyB2YWx1ZVxuICAgICAqIGxldCBuZXdWYWx1ZSA9IFwiQXBwbGVcIjtcbiAgICAgKiB0aGlzLmdyaWQuc2VsZWN0ZWRSb3dzWzFdLnVwZGF0ZShuZXdWYWx1ZSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNydWRTZXJ2aWNlID0gdGhpcy5ncmlkLmNydWRTZXJ2aWNlO1xuICAgICAgICBpZiAoY3J1ZFNlcnZpY2UuY2VsbEluRWRpdE1vZGUgJiYgY3J1ZFNlcnZpY2UuY2VsbC5pZC5yb3dJRCA9PT0gdGhpcy5rZXkpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZW5kUGVuZGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm93ID0gbmV3IElneEVkaXRSb3codGhpcy5rZXksIHRoaXMuaW5kZXgsIHRoaXMuZGF0YSwgdGhpcy5ncmlkKTtcbiAgICAgICAgdGhpcy5ncmlkLmdyaWRBUEkudXBkYXRlX3Jvdyhyb3csIHZhbHVlKTtcbiAgICAgICAgdGhpcy5ncmlkLm5vdGlmeUNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgcm93IGZyb20gdGhlIGdyaWQncyBkYXRhIHNvdXJjZS5cbiAgICAgKiBUaGlzIG1ldGhvZCBlbWl0cyBgb25Sb3dEZWxldGVkYCBldmVudC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBkZWxldGUgdGhlIHRoaXJkIHNlbGVjdGVkIHJvdyBmcm9tIHRoZSBncmlkXG4gICAgICogdGhpcy5ncmlkLnNlbGVjdGVkUm93c1syXS5kZWxldGUoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdyaWQuZGVsZXRlUm93QnlJZCh0aGlzLmtleSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSWd4R3JpZFJvdyBleHRlbmRzIEJhc2VSb3cgaW1wbGVtZW50cyBSb3dUeXBlIHtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHVibGljIGdyaWQ6IElneEdyaWRDb21wb25lbnQsXG4gICAgICAgIHB1YmxpYyBpbmRleDogbnVtYmVyLCBkYXRhPzogYW55KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX2RhdGEgPSBkYXRhICYmIGRhdGEuYWRkUm93ICYmIGRhdGEucmVjb3JkUmVmID8gZGF0YS5yZWNvcmRSZWYgOiBkYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZpZXcgaW5kZXggY2FsY3VsYXRlZCBwZXIgdGhlIGdyaWQgcGFnZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZpZXdJbmRleCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5ncmlkLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgY29uc3QgcHJlY2VkaW5nRGV0YWlsUm93cyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgcHJlY2VkaW5nR3JvdXBSb3dzID0gW107XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJvdyA9IHRoaXMuZ3JpZC5kYXRhVmlld1swXTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0RldGFpbFJvd3MgPSB0aGlzLmdyaWQuZXhwYW5zaW9uU3RhdGVzLnNpemU7XG4gICAgICAgICAgICBjb25zdCBoYXNHcm91cGVkUm93cyA9IHRoaXMuZ3JpZC5ncm91cGluZ0V4cHJlc3Npb25zLmxlbmd0aDtcbiAgICAgICAgICAgIGxldCBwcmVjZWRpbmdTdW1tYXJ5Um93cyA9IDA7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJvd0luZCA9IHRoaXMuZ3JpZC5ncm91cGluZ0ZsYXRSZXN1bHQuaW5kZXhPZihmaXJzdFJvdyk7XG5cbiAgICAgICAgICAgIC8vIGZyb20gZ3JvdXBpbmdGbGF0UmVzdWx0LCByZXNvbHZlIHR3byBvdGhlciBjb2xsZWN0aW9uczpcbiAgICAgICAgICAgIC8vIHByZWNlZGluZ0dyb3VwZWRSb3dzIC0+IHVzZSBpdCB0byByZXNvbHZlIHN1bW1hcnlSb3cgZm9yIGVhY2ggZ3JvdXAgaW4gcHJldmlvdXMgcGFnZXNcbiAgICAgICAgICAgIC8vIHByZWNlZGluZ0RldGFpbFJvd3MgLT4gaXNlIGl0IHRvIHJlc29sdmUgdGhlIGRldGFpbCByb3cgZm9yIGVhY2ggZXhwYW5kZWQgZ3JpZCByb3cgaW4gcHJldmlvdXMgcGFnZXNcbiAgICAgICAgICAgIGlmIChoYXNEZXRhaWxSb3dzIHx8IGhhc0dyb3VwZWRSb3dzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLmdyb3VwaW5nRmxhdFJlc3VsdC5mb3JFYWNoKChyLCBpbmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93SUQgPSB0aGlzLmdyaWQucHJpbWFyeUtleSA/IHJbdGhpcy5ncmlkLnByaW1hcnlLZXldIDogcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0dyb3VwZWRSb3dzICYmIGluZCA8IGZpcnN0Um93SW5kICYmIHRoaXMuZ3JpZC5pc0dyb3VwQnlSZWNvcmQocikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNlZGluZ0dyb3VwUm93cy5wdXNoKHIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmdyaWQuZXhwYW5zaW9uU3RhdGVzLmdldChyb3dJRCkgJiYgaW5kIDwgZmlyc3RSb3dJbmQgJiYgIXRoaXMuZ3JpZC5pc0dyb3VwQnlSZWNvcmQocikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNlZGluZ0RldGFpbFJvd3MucHVzaChyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5ncmlkLnN1bW1hcnlDYWxjdWxhdGlvbk1vZGUgIT09IEdyaWRTdW1tYXJ5Q2FsY3VsYXRpb25Nb2RlLnJvb3RMZXZlbE9ubHkpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBmaXJzdFJvdyBpcyBhIGNoaWxkIG9mIHRoZSBsYXN0IGl0ZW0gaW4gcHJlY2VkaW5nR3JvdXBSb3dzLFxuICAgICAgICAgICAgICAgIC8vIHRoZW4gc3VtbWFyeVJvdyBmb3IgdGhpcyBnaXZlbiBncm91cGVkUmVjb3JkIGlzIHJlbmRlcmVkIGFmdGVyIGZpcnN0Um93LFxuICAgICAgICAgICAgICAgIC8vIGkuZS4gbmVlZCB0byBkZWNyZWFzZSBmaXJzdFJvd0luZCB0byBhY2NvdW50IGZvciB0aGUgYWJvdmUuXG4gICAgICAgICAgICAgICAgcHJlY2VkaW5nU3VtbWFyeVJvd3MgPSBwcmVjZWRpbmdHcm91cFJvd3MuZmlsdGVyKGdyID0+IHRoaXMuZ3JpZC5pc0V4cGFuZGVkR3JvdXAoZ3IpKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZC5zdW1tYXJ5UG9zaXRpb24gPT09IEdyaWRTdW1tYXJ5UG9zaXRpb24uYm90dG9tICYmIHByZWNlZGluZ0dyb3VwUm93cy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgcHJlY2VkaW5nR3JvdXBSb3dzW3ByZWNlZGluZ0dyb3VwUm93cy5sZW5ndGggLSAxXS5yZWNvcmRzLmluZGV4T2YoZmlyc3RSb3cpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJlY2VkaW5nU3VtbWFyeVJvd3MgKz0gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcHJlY2VkaW5nRGV0YWlsUm93cy5sZW5ndGggKyBwcmVjZWRpbmdTdW1tYXJ5Um93cyArIGZpcnN0Um93SW5kICsgdGhpcy5pbmRleDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluZGV4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcGFyZW50IHJvdywgaWYgZ3JpZCBpcyBncm91cGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcGFyZW50KCk6IFJvd1R5cGUge1xuICAgICAgICBsZXQgcGFyZW50OiBJZ3hHcm91cEJ5Um93O1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5ncm91cGluZ0V4cHJlc3Npb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpID0gdGhpcy5pbmRleCAtIDE7XG4gICAgICAgIHdoaWxlIChpID49IDAgJiYgIXBhcmVudCkge1xuICAgICAgICAgICAgY29uc3QgcmVjID0gdGhpcy5ncmlkLmRhdGFWaWV3W2ldO1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZC5pc0dyb3VwQnlSZWNvcmQocmVjKSkge1xuICAgICAgICAgICAgICAgIHBhcmVudCA9IG5ldyBJZ3hHcm91cEJ5Um93KHRoaXMuZ3JpZCwgaSwgcmVjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyZW50O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIElneFRyZWVHcmlkUm93IGV4dGVuZHMgQmFzZVJvdyBpbXBsZW1lbnRzIFJvd1R5cGUge1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3JpZDogSWd4VHJlZUdyaWRDb21wb25lbnQsXG4gICAgICAgIHB1YmxpYyBpbmRleDogbnVtYmVyLCBkYXRhPzogYW55LCBwcml2YXRlIF90cmVlUm93PzogSVRyZWVHcmlkUmVjb3JkKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX2RhdGEgPSBkYXRhICYmIGRhdGEuYWRkUm93ICYmIGRhdGEucmVjb3JkUmVmID8gZGF0YS5yZWNvcmRSZWYgOiBkYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZpZXcgaW5kZXggY2FsY3VsYXRlZCBwZXIgdGhlIGdyaWQgcGFnZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZpZXdJbmRleCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5ncmlkLmhhc1N1bW1hcml6ZWRDb2x1bW5zICYmICgodGhpcy5ncmlkLnBhZ2luYXRvcj8ucGFnZSB8fCAwKSA+IDApKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5ncmlkLnN1bW1hcnlDYWxjdWxhdGlvbk1vZGUgIT09IEdyaWRTdW1tYXJ5Q2FsY3VsYXRpb25Nb2RlLnJvb3RMZXZlbE9ubHkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdFJvd0luZGV4ID0gdGhpcy5ncmlkLnByb2Nlc3NlZEV4cGFuZGVkRmxhdERhdGEuaW5kZXhPZih0aGlzLmdyaWQuZGF0YVZpZXdbMF0uZGF0YSk7XG4gICAgICAgICAgICAgICAgLy8gZmlyc3RSb3dJbmRleCBpcyBiYXNlZCBvbiBkYXRhIHJlc3VsdCBhZnRlciBhbGwgcGlwZXMgdHJpZ2dlcmVkLCBleGNsdWRpbmcgc3VtbWFyeSBwaXBlXG4gICAgICAgICAgICAgICAgY29uc3QgcHJlY2VkaW5nU3VtbWFyeVJvd3MgPSB0aGlzLmdyaWQuc3VtbWFyeVBvc2l0aW9uID09PSBHcmlkU3VtbWFyeVBvc2l0aW9uLmJvdHRvbSA/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5yb290UmVjb3Jkcy5pbmRleE9mKHRoaXMuZ2V0Um9vdFBhcmVudCh0aGlzLmdyaWQuZGF0YVZpZXdbMF0pKSA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5yb290UmVjb3Jkcy5pbmRleE9mKHRoaXMuZ2V0Um9vdFBhcmVudCh0aGlzLmdyaWQuZGF0YVZpZXdbMF0pKSArIDE7XG4gICAgICAgICAgICAgICAgLy8gdGhlcmUgaXMgYSBzdW1tYXJ5IHJvdyBmb3IgZWFjaCByb290IHJlY29yZCwgc28gd2UgY2FsY3VsYXRlIGhvdyBtYW55IHJvb3QgcmVjb3JkcyBhcmUgcmVuZGVyZWQgYmVmb3JlIHRoZSBjdXJyZW50IHJvd1xuICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdFJvd0luZGV4ICsgcHJlY2VkaW5nU3VtbWFyeVJvd3MgKyB0aGlzLmluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ICsgKCh0aGlzLmdyaWQucGFnaW5hdG9yPy5wYWdlIHx8IDApICogKHRoaXMuZ3JpZC5wYWdpbmF0b3I/LnBlclBhZ2UgfHwgMCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBUaGUgZGF0YSBwYXNzZWQgdG8gdGhlIHJvdyBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHNlbGVjdGVkUm93RGF0YSA9IHRoaXMuZ3JpZC5zZWxlY3RlZFJvd3NbMF0ucm93RGF0YTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGRhdGEoKTogYW55IHtcbiAgICAgICAgaWYgKHRoaXMuaW5FZGl0TW9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIG1lcmdlV2l0aCh0aGlzLmdyaWQuZGF0YUNsb25lU3RyYXRlZ3kuY2xvbmUodGhpcy5fZGF0YSA/PyB0aGlzLmdyaWQuZGF0YVZpZXdbdGhpcy5pbmRleF0pLFxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZ2V0QWdncmVnYXRlZFZhbHVlKHRoaXMua2V5LCBmYWxzZSksXG4gICAgICAgICAgICAgICAgKG9ialZhbHVlLCBzcmNWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzcmNWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvYmpWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVjID0gdGhpcy5ncmlkLmRhdGFWaWV3W3RoaXMuaW5kZXhdO1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YSA/IHRoaXMuX2RhdGEgOiB0aGlzLmdyaWQuaXNUcmVlUm93KHJlYykgPyByZWMuZGF0YSA6IHJlYztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjaGlsZCByb3dzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY2hpbGRyZW4oKTogUm93VHlwZVtdIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW46IElneFRyZWVHcmlkUm93W10gPSBbXTtcbiAgICAgICAgaWYgKHRoaXMudHJlZVJvdy5leHBhbmRlZCkge1xuICAgICAgICAgICAgdGhpcy50cmVlUm93LmNoaWxkcmVuLmZvckVhY2goKHJlYywgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdyA9IG5ldyBJZ3hUcmVlR3JpZFJvdyh0aGlzLmdyaWQsIHRoaXMuaW5kZXggKyAxICsgaSwgcmVjLmRhdGEpO1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2gocm93KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwYXJlbnQgcm93LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcGFyZW50KCk6IFJvd1R5cGUge1xuICAgICAgICBjb25zdCByb3cgPSB0aGlzLmdyaWQuZ2V0Um93QnlLZXkodGhpcy50cmVlUm93LnBhcmVudD8ucm93SUQpO1xuICAgICAgICByZXR1cm4gcm93O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiBjaGlsZCByb3dzIGV4aXN0LiBBbHdheXMgcmV0dXJuIGZhbHNlIGZvciBJZ3hHcmlkUm93LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaGFzQ2hpbGRyZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnRyZWVSb3cuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyZWVSb3cuY2hpbGRyZW4ubGVuZ3RoID4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBgSVRyZWVHcmlkUmVjb3JkYCB3aXRoIG1ldGFkYXRhIGFib3V0IHRoZSByb3cgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHRyZWUgZ3JpZC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCByb3dQYXJlbnQgPSB0aGlzLnRyZWVHcmlkLmdldFJvd0J5S2V5KDEpLnRyZWVSb3cucGFyZW50O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdHJlZVJvdygpOiBJVHJlZUdyaWRSZWNvcmQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHJlZVJvdyA/PyB0aGlzLmdyaWQucmVjb3Jkcy5nZXQodGhpcy5rZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgd2hldGhlciB0aGUgcm93IGlzIHBpbm5lZC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaXNQaW5uZWQgPSByb3cucGlubmVkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcGlubmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmlzUmVjb3JkUGlubmVkKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgd2hldGhlciB0aGUgcm93IGlzIHBpbm5lZC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHJvdy5waW5uZWQgPSAhcm93LnBpbm5lZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IHBpbm5lZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgdGhpcy5waW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudW5waW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgd2hldGhlciB0aGUgcm93IGlzIGV4cGFuZGVkLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBlc0V4cGFuZGVkID0gcm93LmV4cGFuZGVkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuZ3JpZEFQSS5nZXRfcm93X2V4cGFuc2lvbl9zdGF0ZSh0aGlzLnRyZWVSb3cpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4cGFuZHMvY29sbGFwc2VzIHRoZSByb3cuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogcm93LmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IGV4cGFuZGVkKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmdyaWQuZ3JpZEFQSS5zZXRfcm93X2V4cGFuc2lvbl9zdGF0ZSh0aGlzLmtleSwgdmFsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBUT0RPIGNlbGxcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5pc0dob3N0UmVjb3JkKHRoaXMuZGF0YSkgPyB0aGlzLnRyZWVSb3cuaXNGaWx0ZXJlZE91dFBhcmVudCA9PT0gdW5kZWZpbmVkIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSb290UGFyZW50KHJvdzogSVRyZWVHcmlkUmVjb3JkKTogSVRyZWVHcmlkUmVjb3JkIHtcbiAgICAgICAgd2hpbGUgKHJvdy5wYXJlbnQpIHtcbiAgICAgICAgICAgIHJvdyA9IHJvdy5wYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJZ3hIaWVyYXJjaGljYWxHcmlkUm93IGV4dGVuZHMgQmFzZVJvdyBpbXBsZW1lbnRzIFJvd1R5cGUge1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3JpZDogSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudCxcbiAgICAgICAgcHVibGljIGluZGV4OiBudW1iZXIsIGRhdGE/OiBhbnkpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fZGF0YSA9IGRhdGEgJiYgZGF0YS5hZGRSb3cgJiYgZGF0YS5yZWNvcmRSZWYgPyBkYXRhLnJlY29yZFJlZiA6IGRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHJvdyBpc2xhbmRzIGV4aXN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaGFzQ2hpbGRyZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZ3JpZC5jaGlsZExheW91dEtleXMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZpZXcgaW5kZXggY2FsY3VsYXRlZCBwZXIgdGhlIGdyaWQgcGFnZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZpZXdJbmRleCgpIHtcbiAgICAgICAgY29uc3QgZmlyc3RSb3dJbmQgPSB0aGlzLmdyaWQuZmlsdGVyZWRTb3J0ZWREYXRhLmluZGV4T2YodGhpcy5ncmlkLmRhdGFWaWV3WzBdKTtcbiAgICAgICAgY29uc3QgZXhwYW5kZWRSb3dzID0gdGhpcy5ncmlkLmZpbHRlcmVkU29ydGVkRGF0YS5maWx0ZXIoKHJlYywgaW5kKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByb3dJRCA9IHRoaXMuZ3JpZC5wcmltYXJ5S2V5ID8gcmVjW3RoaXMuZ3JpZC5wcmltYXJ5S2V5XSA6IHJlYztcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWQuZXhwYW5zaW9uU3RhdGVzLmdldChyb3dJRCkgJiYgaW5kIDwgZmlyc3RSb3dJbmQ7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmlyc3RSb3dJbmQgKyBleHBhbmRlZFJvd3MubGVuZ3RoICsgdGhpcy5pbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSByZW5kZXJlZCBjZWxscyBpbiB0aGUgcm93IGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGNlbGxzKCk6IENlbGxUeXBlW10ge1xuICAgICAgICBjb25zdCByZXM6IENlbGxUeXBlW10gPSBbXTtcbiAgICAgICAgdGhpcy5ncmlkLmNvbHVtbkxpc3QuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VsbDogQ2VsbFR5cGUgPSBuZXcgSWd4R3JpZENlbGwodGhpcy5ncmlkLCB0aGlzLmluZGV4LCBjb2wuZmllbGQpO1xuICAgICAgICAgICAgcmVzLnB1c2goY2VsbCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIElneEdyb3VwQnlSb3cgaW1wbGVtZW50cyBSb3dUeXBlIHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSByb3cgaW5kZXguXG4gICAgICovXG4gICAgcHVibGljIGluZGV4OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZ3JpZCB0aGF0IGNvbnRhaW5zIHRoZSByb3cuXG4gICAgICovXG4gICAgcHVibGljIGdyaWQ6IElneEdyaWRDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFsd2F5cyB0cnVlLCBiZWNhdXNlIHRoaXMgaXMgaW4gaW5zdGFuY2Ugb2YgYW4gSWd4R3JvdXBCeVJvdy5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNHcm91cEJ5Um93OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIElHcm91cEJ5UmVjb3JkIG9iamVjdCwgcmVwcmVzZW50aW5nIHRoZSBncm91cCByZWNvcmQsIGlmIHRoZSByb3cgaXMgYSBHcm91cEJ5Um93LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZ3JvdXBSb3coKTogSUdyb3VwQnlSZWNvcmQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JvdXBSb3cgPyB0aGlzLl9ncm91cFJvdyA6IHRoaXMuZ3JpZC5kYXRhVmlld1t0aGlzLmluZGV4XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjaGlsZCByb3dzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY2hpbGRyZW4oKTogUm93VHlwZVtdIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW46IElneEdyaWRSb3dbXSA9IFtdO1xuICAgICAgICB0aGlzLmdyb3VwUm93LnJlY29yZHMuZm9yRWFjaCgocmVjLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByb3cgPSBuZXcgSWd4R3JpZFJvdyh0aGlzLmdyaWQsIHRoaXMuaW5kZXggKyAxICsgaSwgcmVjKTtcbiAgICAgICAgICAgIGNoaWxkcmVuLnB1c2gocm93KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2aWV3IGluZGV4IGNhbGN1bGF0ZWQgcGVyIHRoZSBncmlkIHBhZ2UuXG4gICAgICovXG4gICAgcHVibGljIGdldCB2aWV3SW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5wYWdlKSB7XG4gICAgICAgICAgICBjb25zdCBwcmVjZWRpbmdEZXRhaWxSb3dzID0gW107XG4gICAgICAgICAgICBjb25zdCBwcmVjZWRpbmdHcm91cFJvd3MgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Um93ID0gdGhpcy5ncmlkLmRhdGFWaWV3WzBdO1xuICAgICAgICAgICAgY29uc3QgaGFzRGV0YWlsUm93cyA9IHRoaXMuZ3JpZC5leHBhbnNpb25TdGF0ZXMuc2l6ZTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0dyb3VwZWRSb3dzID0gdGhpcy5ncmlkLmdyb3VwaW5nRXhwcmVzc2lvbnMubGVuZ3RoO1xuICAgICAgICAgICAgbGV0IHByZWNlZGluZ1N1bW1hcnlSb3dzID0gMDtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Um93SW5kID0gdGhpcy5ncmlkLmdyb3VwaW5nRmxhdFJlc3VsdC5pbmRleE9mKGZpcnN0Um93KTtcblxuICAgICAgICAgICAgLy8gZnJvbSBncm91cGluZ0ZsYXRSZXN1bHQsIHJlc29sdmUgdHdvIG90aGVyIGNvbGxlY3Rpb25zOlxuICAgICAgICAgICAgLy8gcHJlY2VkaW5nR3JvdXBlZFJvd3MgLT4gdXNlIGl0IHRvIHJlc29sdmUgc3VtbWFyeVJvdyBmb3IgZWFjaCBncm91cCBpbiBwcmV2aW91cyBwYWdlc1xuICAgICAgICAgICAgLy8gcHJlY2VkaW5nRGV0YWlsUm93cyAtPiBpc2UgaXQgdG8gcmVzb2x2ZSB0aGUgZGV0YWlsIHJvdyBmb3IgZWFjaCBleHBhbmRlZCBncmlkIHJvdyBpbiBwcmV2aW91cyBwYWdlc1xuICAgICAgICAgICAgaWYgKGhhc0RldGFpbFJvd3MgfHwgaGFzR3JvdXBlZFJvd3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWQuZ3JvdXBpbmdGbGF0UmVzdWx0LmZvckVhY2goKHIsIGluZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dJRCA9IHRoaXMuZ3JpZC5wcmltYXJ5S2V5ID8gclt0aGlzLmdyaWQucHJpbWFyeUtleV0gOiByO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzR3JvdXBlZFJvd3MgJiYgaW5kIDwgZmlyc3RSb3dJbmQgJiYgdGhpcy5ncmlkLmlzR3JvdXBCeVJlY29yZChyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2VkaW5nR3JvdXBSb3dzLnB1c2gocik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZC5leHBhbnNpb25TdGF0ZXMuZ2V0KHJvd0lEKSAmJiBpbmQgPCBmaXJzdFJvd0luZCAmJiAhdGhpcy5ncmlkLmlzR3JvdXBCeVJlY29yZChyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2VkaW5nRGV0YWlsUm93cy5wdXNoKHIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmdyaWQuc3VtbWFyeUNhbGN1bGF0aW9uTW9kZSAhPT0gR3JpZFN1bW1hcnlDYWxjdWxhdGlvbk1vZGUucm9vdExldmVsT25seSkge1xuICAgICAgICAgICAgICAgIC8vIGlmIGZpcnN0Um93IGlzIGEgY2hpbGQgb2YgdGhlIGxhc3QgaXRlbSBpbiBwcmVjZWRpbmdHcm91cFJvd3MsXG4gICAgICAgICAgICAgICAgLy8gdGhlbiBzdW1tYXJ5Um93IGZvciB0aGlzIGdpdmVuIGdyb3VwZWRSZWNvcmQgaXMgcmVuZGVyZWQgYWZ0ZXIgZmlyc3RSb3csXG4gICAgICAgICAgICAgICAgLy8gaS5lLiBuZWVkIHRvIGRlY3JlYXNlIGZpcnN0Um93SW5kIHRvIGFjY291bnQgZm9yIHRoZSBhYm92ZS5cbiAgICAgICAgICAgICAgICBwcmVjZWRpbmdTdW1tYXJ5Um93cyA9IHByZWNlZGluZ0dyb3VwUm93cy5maWx0ZXIoZ3IgPT4gdGhpcy5ncmlkLmlzRXhwYW5kZWRHcm91cChncikpLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkLnN1bW1hcnlQb3NpdGlvbiA9PT0gR3JpZFN1bW1hcnlQb3NpdGlvbi5ib3R0b20gJiYgcHJlY2VkaW5nR3JvdXBSb3dzLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICBwcmVjZWRpbmdHcm91cFJvd3NbcHJlY2VkaW5nR3JvdXBSb3dzLmxlbmd0aCAtIDFdLnJlY29yZHMuaW5kZXhPZihmaXJzdFJvdykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBwcmVjZWRpbmdTdW1tYXJ5Um93cyArPSAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBwcmVjZWRpbmdEZXRhaWxSb3dzLmxlbmd0aCArIHByZWNlZGluZ1N1bW1hcnlSb3dzICsgZmlyc3RSb3dJbmQgKyB0aGlzLmluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoZ3JpZDogSWd4R3JpZENvbXBvbmVudCwgaW5kZXg6IG51bWJlciwgcHJpdmF0ZSBfZ3JvdXBSb3c/OiBJR3JvdXBCeVJlY29yZCkge1xuICAgICAgICB0aGlzLmdyaWQgPSBncmlkO1xuICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXg7XG4gICAgICAgIHRoaXMuaXNHcm91cEJ5Um93ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHdoZXRoZXIgdGhlIHJvdyBpcyBzZWxlY3RlZC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHJvdy5zZWxlY3RlZCA9IHRydWU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uZXZlcnkocm93ID0+IHJvdy5zZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB3aGV0aGVyIHRoZSByb3cgaXMgc2VsZWN0ZWQuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiByb3cuc2VsZWN0ZWQgPSAhcm93LnNlbGVjdGVkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgc2VsZWN0ZWQodmFsOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdFJvd3NXaXRoTm9FdmVudChbcm93LmtleV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5kZXNlbGVjdFJvd3NXaXRoTm9FdmVudChbcm93LmtleV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgd2hldGhlciB0aGUgZ3JvdXAgcm93IGlzIGV4cGFuZGVkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBncm91cFJvd0V4cGFuZGVkID0gZ3JvdXBSb3cuZXhwYW5kZWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5pc0V4cGFuZGVkR3JvdXAodGhpcy5ncm91cFJvdyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBleHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmdyaWRBUEkuc2V0X2dyb3Vwcm93X2V4cGFuc2lvbl9zdGF0ZSh0aGlzLmdyb3VwUm93LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLm5hdmlnYXRpb24uYWN0aXZlTm9kZSA/IHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmFjdGl2ZU5vZGUucm93ID09PSB0aGlzLmluZGV4IDogZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgZ3JvdXAgcm93IGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogZ3JvdXBSb3cudG9nZ2xlKClcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdyaWQudG9nZ2xlR3JvdXAodGhpcy5ncm91cFJvdyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgZ3JpZEFQSSgpOiBJZ3hHcmlkQVBJU2VydmljZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuZ3JpZEFQSSBhcyBJZ3hHcmlkQVBJU2VydmljZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJZ3hTdW1tYXJ5Um93IGltcGxlbWVudHMgUm93VHlwZSB7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcm93IGluZGV4LlxuICAgICAqL1xuICAgIHB1YmxpYyBpbmRleDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGdyaWQgdGhhdCBjb250YWlucyB0aGUgcm93LlxuICAgICAqL1xuICAgIHB1YmxpYyBncmlkOiBJZ3hHcmlkQ29tcG9uZW50IHwgSWd4VHJlZUdyaWRDb21wb25lbnQgfCBJZ3hIaWVyYXJjaGljYWxHcmlkQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbHdheXMgdHJ1ZSwgYmVjYXVzZSB0aGlzIGlzIGluIGluc3RhbmNlIG9mIGFuIElneEdyb3VwQnlSb3cuXG4gICAgICovXG4gICAgcHVibGljIGlzU3VtbWFyeVJvdzogYm9vbGVhbjtcblxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VyZW50IGdyaWQgdHlwZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ3JpZFR5cGU6IEdyaWRJbnN0YW5jZVR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgSUdyb3VwQnlSZWNvcmQgb2JqZWN0LCByZXByZXNlbnRpbmcgdGhlIGdyb3VwIHJlY29yZCwgaWYgdGhlIHJvdyBpcyBhIEdyb3VwQnlSb3cuXG4gICAgICovXG4gICAgcHVibGljIGdldCBzdW1tYXJpZXMoKTogTWFwPHN0cmluZywgSWd4U3VtbWFyeVJlc3VsdFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdW1tYXJpZXMgPyB0aGlzLl9zdW1tYXJpZXMgOiB0aGlzLmdyaWQuZGF0YVZpZXdbdGhpcy5pbmRleF0uc3VtbWFyaWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZpZXcgaW5kZXggY2FsY3VsYXRlZCBwZXIgdGhlIGdyaWQgcGFnZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZpZXdJbmRleCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5ncmlkLmhhc1N1bW1hcml6ZWRDb2x1bW5zICYmIHRoaXMuZ3JpZC5wYWdlID4gMCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IEdyaWRJbnN0YW5jZVR5cGUuR3JpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZCA9IHRoaXMuZ3JpZCBhcyBJZ3hHcmlkQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdyaWQucGFnZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVjZWRpbmdEZXRhaWxSb3dzID0gW107XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZWNlZGluZ0dyb3VwUm93cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdFJvdyA9IHRoaXMuZ3JpZC5kYXRhVmlld1swXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzRGV0YWlsUm93cyA9IHRoaXMuZ3JpZC5leHBhbnNpb25TdGF0ZXMuc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzR3JvdXBlZFJvd3MgPSB0aGlzLmdyaWQuZ3JvdXBpbmdFeHByZXNzaW9ucy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmVjZWRpbmdTdW1tYXJ5Um93cyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0Um93SW5kID0gdGhpcy5ncmlkLmdyb3VwaW5nRmxhdFJlc3VsdC5pbmRleE9mKGZpcnN0Um93KTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIGdyb3VwaW5nRmxhdFJlc3VsdCwgcmVzb2x2ZSB0d28gb3RoZXIgY29sbGVjdGlvbnM6XG4gICAgICAgICAgICAgICAgICAgIC8vIHByZWNlZGluZ0dyb3VwZWRSb3dzIC0+IHVzZSBpdCB0byByZXNvbHZlIHN1bW1hcnlSb3cgZm9yIGVhY2ggZ3JvdXAgaW4gcHJldmlvdXMgcGFnZXNcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJlY2VkaW5nRGV0YWlsUm93cyAtPiBpc2UgaXQgdG8gcmVzb2x2ZSB0aGUgZGV0YWlsIHJvdyBmb3IgZWFjaCBleHBhbmRlZCBncmlkIHJvdyBpbiBwcmV2aW91cyBwYWdlc1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzRGV0YWlsUm93cyB8fCBoYXNHcm91cGVkUm93cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLmdyb3VwaW5nRmxhdFJlc3VsdC5mb3JFYWNoKChyLCBpbmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dJRCA9IHRoaXMuZ3JpZC5wcmltYXJ5S2V5ID8gclt0aGlzLmdyaWQucHJpbWFyeUtleV0gOiByO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNHcm91cGVkUm93cyAmJiBpbmQgPCBmaXJzdFJvd0luZCAmJiB0aGlzLmdyaWQuaXNHcm91cEJ5UmVjb3JkKHIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNlZGluZ0dyb3VwUm93cy5wdXNoKHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkLmV4cGFuc2lvblN0YXRlcy5nZXQocm93SUQpICYmIGluZCA8IGZpcnN0Um93SW5kICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLmdyaWQuaXNHcm91cEJ5UmVjb3JkKHIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNlZGluZ0RldGFpbFJvd3MucHVzaChyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmdyaWQuc3VtbWFyeUNhbGN1bGF0aW9uTW9kZSAhPT0gR3JpZFN1bW1hcnlDYWxjdWxhdGlvbk1vZGUucm9vdExldmVsT25seSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgZmlyc3RSb3cgaXMgYSBjaGlsZCBvZiB0aGUgbGFzdCBpdGVtIGluIHByZWNlZGluZ0dyb3VwUm93cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gc3VtbWFyeVJvdyBmb3IgdGhpcyBnaXZlbiBncm91cGVkUmVjb3JkIGlzIHJlbmRlcmVkIGFmdGVyIGZpcnN0Um93LFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaS5lLiBuZWVkIHRvIGRlY3JlYXNlIGZpcnN0Um93SW5kIHRvIGFjY291bnQgZm9yIHRoZSBhYm92ZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNlZGluZ1N1bW1hcnlSb3dzID0gcHJlY2VkaW5nR3JvdXBSb3dzLmZpbHRlcihnciA9PiB0aGlzLmdyaWQuaXNFeHBhbmRlZEdyb3VwKGdyKSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZC5zdW1tYXJ5UG9zaXRpb24gPT09IEdyaWRTdW1tYXJ5UG9zaXRpb24uYm90dG9tICYmIHByZWNlZGluZ0dyb3VwUm93cy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjZWRpbmdHcm91cFJvd3NbcHJlY2VkaW5nR3JvdXBSb3dzLmxlbmd0aCAtIDFdLnJlY29yZHMuaW5kZXhPZihmaXJzdFJvdykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNlZGluZ1N1bW1hcnlSb3dzICs9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZWNlZGluZ0RldGFpbFJvd3MubGVuZ3RoICsgcHJlY2VkaW5nU3VtbWFyeVJvd3MgKyBmaXJzdFJvd0luZCArIHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdyaWRUeXBlID09PSBHcmlkSW5zdGFuY2VUeXBlLlRyZWVHcmlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkID0gdGhpcy5ncmlkIGFzIElneFRyZWVHcmlkQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdyaWQuc3VtbWFyeUNhbGN1bGF0aW9uTW9kZSAhPT0gR3JpZFN1bW1hcnlDYWxjdWxhdGlvbk1vZGUucm9vdExldmVsT25seSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdFJvd0luZGV4ID0gdGhpcy5ncmlkLnByb2Nlc3NlZEV4cGFuZGVkRmxhdERhdGEuaW5kZXhPZih0aGlzLmdyaWQuZGF0YVZpZXdbMF0uZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZWNlZGluZ1N1bW1hcnlSb3dzID0gdGhpcy5ncmlkLnN1bW1hcnlQb3NpdGlvbiA9PT0gR3JpZFN1bW1hcnlQb3NpdGlvbi5ib3R0b20gP1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLnJvb3RSZWNvcmRzLmluZGV4T2YodGhpcy5nZXRSb290UGFyZW50KHRoaXMuZ3JpZC5kYXRhVmlld1swXSkpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5yb290UmVjb3Jkcy5pbmRleE9mKHRoaXMuZ2V0Um9vdFBhcmVudCh0aGlzLmdyaWQuZGF0YVZpZXdbMF0pKSArIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdFJvd0luZGV4ICsgcHJlY2VkaW5nU3VtbWFyeVJvd3MgKyB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ICsgKCh0aGlzLmdyaWQucGFnaW5hdG9yPy5wYWdlIHx8IDApICogKHRoaXMuZ3JpZC5wYWdpbmF0b3I/LnBlclBhZ2UgfHwgMCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihncmlkOiBJZ3hHcmlkQ29tcG9uZW50IHwgSWd4VHJlZUdyaWRDb21wb25lbnQgfCBJZ3hIaWVyYXJjaGljYWxHcmlkQ29tcG9uZW50LFxuICAgICAgICBpbmRleDogbnVtYmVyLCBwcml2YXRlIF9zdW1tYXJpZXM/OiBNYXA8c3RyaW5nLCBJZ3hTdW1tYXJ5UmVzdWx0W10+LCB0eXBlPzogR3JpZEluc3RhbmNlVHlwZSkge1xuICAgICAgICB0aGlzLmdyaWQgPSBncmlkO1xuICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXg7XG4gICAgICAgIHRoaXMuaXNTdW1tYXJ5Um93ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ncmlkVHlwZSA9IHR5cGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSb290UGFyZW50KHJvdzogSVRyZWVHcmlkUmVjb3JkKTogSVRyZWVHcmlkUmVjb3JkIHtcbiAgICAgICAgd2hpbGUgKHJvdy5wYXJlbnQpIHtcbiAgICAgICAgICAgIHJvdyA9IHJvdy5wYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICB9XG59XG4iXX0=
|
|
@@ -142,4 +142,4 @@ export class IgxGroupByMetaPipe {
|
|
|
142
142
|
IgxGroupByMetaPipe.decorators = [
|
|
143
143
|
{ type: Pipe, args: [{ name: 'igxGroupByMeta' },] }
|
|
144
144
|
];
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnktYXJlYS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvZ3JvdXBpbmcvZ3JvdXAtYnktYXJlYS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUNOLElBQUksRUFJSixZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE4QixnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFHdEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0U7Ozs7R0FJRztBQUVILE1BQU0sT0FBZ0IsdUJBQXVCO0lBd0V6QyxZQUFvQixHQUE0QixFQUFZLFFBQXNCO1FBQTlELFFBQUcsR0FBSCxHQUFHLENBQXlCO1FBQVksYUFBUSxHQUFSLFFBQVEsQ0FBYztRQS9EM0UsWUFBTyxHQUFtQixjQUFjLENBQUMsV0FBVyxDQUFDO1FBR3JELGlCQUFZLEdBQUksSUFBSSxDQUFDO1FBNkNyQixzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQVk3RCxpQkFBWSxHQUEwQixFQUFFLENBQUM7SUFHcUMsQ0FBQztJQTFEdkYsSUFDVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQ1csWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxPQUFP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bEM7Ozs7OztHQU1HO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQUVwQixTQUFTLENBQUMsR0FBVyxFQUFFLElBQWM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFDeEUsQ0FBQzs7O1lBTkosSUFBSSxTQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIElucHV0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUGlwZSxcclxuICAgIFBpcGVUcmFuc2Zvcm0sXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZHJlblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJQ2hpcHNBcmVhUmVvcmRlckV2ZW50QXJncywgSWd4Q2hpcENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NoaXBzL3B1YmxpY19hcGknO1xyXG5pbXBvcnQgeyBEaXNwbGF5RGVuc2l0eSB9IGZyb20gJy4uLy4uL2NvcmUvZGlzcGxheURlbnNpdHknO1xyXG5pbXBvcnQgeyBQbGF0Zm9ybVV0aWwgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcclxuaW1wb3J0IHsgSUdyb3VwaW5nRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9ncm91cGluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvc29ydGluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IElneENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbnMvY29sdW1uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyaWRUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSWd4Q29sdW1uTW92aW5nRHJhZ0RpcmVjdGl2ZSB9IGZyb20gJy4uL21vdmluZy9tb3ZpbmcuZHJhZy5kaXJlY3RpdmUnO1xyXG5cclxuLyoqXHJcbiAqIEFuIGludGVybmFsIGNvbXBvbmVudCByZXByZXNlbnRpbmcgYSBiYXNlIGdyb3VwLWJ5IGRyb3AgYXJlYS5cclxuICpcclxuICogQGhpZGRlbiBAaW50ZXJuYWxcclxuICovXHJcbiBARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIElneEdyb3VwQnlBcmVhRGlyZWN0aXZlIHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGRyb3AgYXJlYSB0ZW1wbGF0ZSBpZiBwcm92aWRlZCBieSB0aGUgcGFyZW50IGdyaWQuXHJcbiAgICAgKiBPdGhlcndpc2UsIHVzZXMgdGhlIGRlZmF1bHQgaW50ZXJuYWwgb25lLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRyb3BBcmVhVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHZvaWQ+O1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGVuc2l0eTogRGlzcGxheURlbnNpdHkgPSBEaXNwbGF5RGVuc2l0eS5jb21mb3J0YWJsZTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkLWdyb3VwYXJlYScpXHJcbiAgICBwdWJsaWMgZGVmYXVsdENsYXNzID0gIHRydWU7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC1ncm91cGFyZWEtLWNvc3knKVxyXG4gICAgcHVibGljIGdldCBjb3N5U3R5bGUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVuc2l0eSA9PT0gJ2Nvc3knO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWdyaWQtZ3JvdXBhcmVhLS1jb21wYWN0JylcclxuICAgIHB1YmxpYyBnZXQgY29tcGFjdFN0eWxlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlbnNpdHkgPT09ICdjb21wYWN0JztcclxuICAgIH1cclxuXHJcbiAgICAvKiogVGhlIHBhcmVudCBncmlkIGNvbnRhaW5pbmcgdGhlIGNvbXBvbmVudC4gKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ3JpZDogR3JpZFR5cGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZ3JvdXAtYnkgZXhwcmVzc2lvbnMgcHJvdmlkZWQgYnkgdGhlIHBhcmVudCBncmlkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCBleHByZXNzaW9ucygpOiBJR3JvdXBpbmdFeHByZXNzaW9uW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9leHByZXNzaW9ucztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0IGV4cHJlc3Npb25zKHZhbHVlOiBJR3JvdXBpbmdFeHByZXNzaW9uW10pIHtcclxuICAgICAgICB0aGlzLl9leHByZXNzaW9ucyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuY2hpcEV4cHJlc3Npb25zID0gdGhpcy5fZXhwcmVzc2lvbnM7XHJcbiAgICAgICAgdGhpcy5leHByZXNzaW9uc0NoYW5nZWQoKTtcclxuICAgICAgICB0aGlzLmV4cHJlc3Npb25zQ2hhbmdlLmVtaXQodGhpcy5fZXhwcmVzc2lvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGRlZmF1bHQgbWVzc2FnZSBmb3IgdGhlIGRlZmF1bHQgZHJvcCBhcmVhIHRlbXBsYXRlLlxyXG4gICAgICogT2J2aW91c2x5LCBpZiBhbm90aGVyIHRlbXBsYXRlIGlzIHByb3ZpZGVkLCB0aGlzIGlzIGlnbm9yZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IGRyb3BBcmVhTWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kcm9wQXJlYU1lc3NhZ2UgPz8gdGhpcy5ncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9ncm91cEJ5QXJlYV9tZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQgZHJvcEFyZWFNZXNzYWdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9kcm9wQXJlYU1lc3NhZ2UgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBleHByZXNzaW9uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SUdyb3VwaW5nRXhwcmVzc2lvbltdPigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGRyZW4oSWd4Q2hpcENvbXBvbmVudClcclxuICAgIHB1YmxpYyBjaGlwczogUXVlcnlMaXN0PElneENoaXBDb21wb25lbnQ+O1xyXG5cclxuICAgIHB1YmxpYyBjaGlwRXhwcmVzc2lvbnM6IElHcm91cGluZ0V4cHJlc3Npb25bXTtcclxuXHJcbiAgICAvKiogVGhlIG5hdGl2ZSBET00gZWxlbWVudC4gVXNlZCBpbiBzaXppbmcgY2FsY3VsYXRpb25zLiAqL1xyXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2V4cHJlc3Npb25zOiBJR3JvdXBpbmdFeHByZXNzaW9uW10gPSBbXTtcclxuICAgIHByaXZhdGUgX2Ryb3BBcmVhTWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcHJvdGVjdGVkIHBsYXRmb3JtOiBQbGF0Zm9ybVV0aWwpIHsgfVxyXG5cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGRyb3BBcmVhVmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuZ3JpZC5jb2x1bW5JbkRyYWcgJiYgdGhpcy5ncmlkLmNvbHVtbkluRHJhZy5ncm91cGFibGUpIHx8XHJcbiAgICAgICAgICAgICF0aGlzLmV4cHJlc3Npb25zLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlS2V5RG93bihpZDogc3RyaW5nLCBldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLnBsYXRmb3JtLmlzQWN0aXZhdGlvbktleShldmVudCkpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTb3J0aW5nKGlkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZUNsaWNrKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5nZXRDb2x1bW5CeU5hbWUoaWQpLmdyb3VwYWJsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRlU29ydGluZyhpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgIHB1YmxpYyBvbkRyYWdEcm9wKGV2ZW50KSB7XHJcbiAgICAgICAgY29uc3QgZHJhZzogSWd4Q29sdW1uTW92aW5nRHJhZ0RpcmVjdGl2ZSA9IGV2ZW50LmRldGFpbC5vd25lcjtcclxuICAgICAgICBpZiAoZHJhZyBpbnN0YW5jZW9mIElneENvbHVtbk1vdmluZ0RyYWdEaXJlY3RpdmUpIHtcclxuICAgICAgICAgICAgY29uc3QgY29sdW1uOiBJZ3hDb2x1bW5Db21wb25lbnQgPSBkcmFnLmNvbHVtbjtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZC5jb2x1bW5zLmluZGV4T2YoY29sdW1uKSA8IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgaXNHcm91cGVkID0gdGhpcy5leHByZXNzaW9ucy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uZmllbGROYW1lID09PSBjb2x1bW4uZmllbGQpICE9PSAtMTtcclxuICAgICAgICAgICAgaWYgKGNvbHVtbi5ncm91cGFibGUgJiYgIWlzR3JvdXBlZCAmJiAhY29sdW1uLmNvbHVtbkdyb3VwICYmICEhY29sdW1uLmZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cGluZ0V4cHJlc3Npb24gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGlyOiBTb3J0aW5nRGlyZWN0aW9uLkFzYyxcclxuICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlOiBjb2x1bW4uc29ydGluZ0lnbm9yZUNhc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k6IGNvbHVtbi5zb3J0U3RyYXRlZ3ksXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBpbmdDb21wYXJlcjogY29sdW1uLmdyb3VwaW5nQ29tcGFyZXJcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cEJ5KGdyb3VwaW5nRXhwcmVzc2lvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldFJlb3JkZXJlZEV4cHJlc3Npb25zKGNoaXBzQXJyYXk6IElneENoaXBDb21wb25lbnRbXSkge1xyXG4gICAgICAgIGNvbnN0IG5ld0V4cHJlc3Npb25zID0gW107XHJcblxyXG4gICAgICAgIGNoaXBzQXJyYXkuZm9yRWFjaChjaGlwID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZXhwciA9IHRoaXMuZXhwcmVzc2lvbnMuZmluZChpdGVtID0+IGl0ZW0uZmllbGROYW1lID09PSBjaGlwLmlkKTtcclxuXHJcbiAgICAgICAgICAgIC8vIGRpc2FsbG93IGNoYW5naW5nIG9yZGVyIGlmIHRoZXJlIGFyZSBjb2x1bW5zIHdpdGggZ3JvdXBhYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZ3JpZC5nZXRDb2x1bW5CeU5hbWUoZXhwci5maWVsZE5hbWUpPy5ncm91cGFibGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbmV3RXhwcmVzc2lvbnMucHVzaChleHByKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ld0V4cHJlc3Npb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB1cGRhdGVTb3J0aW5nKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBleHByID0gdGhpcy5ncmlkLnNvcnRpbmdFeHByZXNzaW9ucy5maW5kKGUgPT4gZS5maWVsZE5hbWUgPT09IGlkKTtcclxuICAgICAgICBleHByLmRpciA9IDMgLSBleHByLmRpcjtcclxuICAgICAgICB0aGlzLmdyaWQuc29ydChleHByKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZXhwcmVzc2lvbnNDaGFuZ2VkKCkge1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhYnN0cmFjdCBoYW5kbGVSZW9yZGVyKGV2ZW50OiBJQ2hpcHNBcmVhUmVvcmRlckV2ZW50QXJncyk7XHJcblxyXG4gICAgcHVibGljIGFic3RyYWN0IGhhbmRsZU1vdmVFbmQoKTtcclxuXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ3JvdXBCeShleHByZXNzaW9uOiBJR3JvdXBpbmdFeHByZXNzaW9uKTtcclxuXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgY2xlYXJHcm91cGluZyhuYW1lOiBzdHJpbmcpO1xyXG5cclxufVxyXG5cclxuLyoqXHJcbiAqIEEgcGlwZSB0byBjaXJjdW12ZW50IHRoZSB1c2Ugb2YgZ2V0dGVycy9tZXRob2RzIGp1c3QgdG8gZ2V0IHNvbWUgYWRkaXRpb25hbFxyXG4gKiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBncm91cGluZyBleHByZXNzaW9uIGFuZCBwYXNzIGl0IHRvIHRoZSBjaGlwIHJlcHJlc2VudGluZ1xyXG4gKiB0aGF0IGV4cHJlc3Npb24uXHJcbiAqXHJcbiAqIEBoaWRkZW4gQGludGVybmFsXHJcbiAqL1xyXG5AUGlwZSh7IG5hbWU6ICdpZ3hHcm91cEJ5TWV0YScgfSlcclxuZXhwb3J0IGNsYXNzIElneEdyb3VwQnlNZXRhUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oa2V5OiBzdHJpbmcsIGdyaWQ6IEdyaWRUeXBlKSB7XHJcbiAgICAgICAgY29uc3QgY29sdW1uID0gZ3JpZC5nZXRDb2x1bW5CeU5hbWUoa2V5KTtcclxuICAgICAgICByZXR1cm4geyBncm91cGFibGU6IGNvbHVtbi5ncm91cGFibGUsIHRpdGxlOiBjb2x1bW4uaGVhZGVyIHx8IGtleSB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnktYXJlYS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvZ3JvdXBpbmcvZ3JvdXAtYnktYXJlYS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUNOLElBQUksRUFJSixZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE4QixnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFHdEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0U7Ozs7R0FJRztBQUVILE1BQU0sT0FBZ0IsdUJBQXVCO0lBd0V6QyxZQUFvQixHQUE0QixFQUFZLFFBQXNCO1FBQTlELFFBQUcsR0FBSCxHQUFHLENBQXlCO1FBQVksYUFBUSxHQUFSLFFBQVEsQ0FBYztRQS9EM0UsWUFBTyxHQUFtQixjQUFjLENBQUMsV0FBVyxDQUFDO1FBR3JELGlCQUFZLEdBQUksSUFBSSxDQUFDO1FBNkNyQixzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQVk3RCxpQkFBWSxHQUEwQixFQUFFLENBQUM7SUFHcUMsQ0FBQztJQTFEdkYsSUFDVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQ1csWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxPQUFP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bEM7Ozs7OztHQU1HO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQUVwQixTQUFTLENBQUMsR0FBVyxFQUFFLElBQWM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFDeEUsQ0FBQzs7O1lBTkosSUFBSSxTQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFBpcGUsXG4gICAgUGlwZVRyYW5zZm9ybSxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUNoaXBzQXJlYVJlb3JkZXJFdmVudEFyZ3MsIElneENoaXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jaGlwcy9wdWJsaWNfYXBpJztcbmltcG9ydCB7IERpc3BsYXlEZW5zaXR5IH0gZnJvbSAnLi4vLi4vY29yZS9kaXNwbGF5RGVuc2l0eSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVV0aWwgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElHcm91cGluZ0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU29ydGluZ0RpcmVjdGlvbiB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IElneENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbnMvY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmlkVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Nb3ZpbmdEcmFnRGlyZWN0aXZlIH0gZnJvbSAnLi4vbW92aW5nL21vdmluZy5kcmFnLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQW4gaW50ZXJuYWwgY29tcG9uZW50IHJlcHJlc2VudGluZyBhIGJhc2UgZ3JvdXAtYnkgZHJvcCBhcmVhLlxuICpcbiAqIEBoaWRkZW4gQGludGVybmFsXG4gKi9cbiBARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJZ3hHcm91cEJ5QXJlYURpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogVGhlIGRyb3AgYXJlYSB0ZW1wbGF0ZSBpZiBwcm92aWRlZCBieSB0aGUgcGFyZW50IGdyaWQuXG4gICAgICogT3RoZXJ3aXNlLCB1c2VzIHRoZSBkZWZhdWx0IGludGVybmFsIG9uZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkcm9wQXJlYVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlbnNpdHk6IERpc3BsYXlEZW5zaXR5ID0gRGlzcGxheURlbnNpdHkuY29tZm9ydGFibGU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkLWdyb3VwYXJlYScpXG4gICAgcHVibGljIGRlZmF1bHRDbGFzcyA9ICB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC1ncm91cGFyZWEtLWNvc3knKVxuICAgIHB1YmxpYyBnZXQgY29zeVN0eWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZW5zaXR5ID09PSAnY29zeSc7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC1ncm91cGFyZWEtLWNvbXBhY3QnKVxuICAgIHB1YmxpYyBnZXQgY29tcGFjdFN0eWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZW5zaXR5ID09PSAnY29tcGFjdCc7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBwYXJlbnQgZ3JpZCBjb250YWluaW5nIHRoZSBjb21wb25lbnQuICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ3JpZDogR3JpZFR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZ3JvdXAtYnkgZXhwcmVzc2lvbnMgcHJvdmlkZWQgYnkgdGhlIHBhcmVudCBncmlkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBleHByZXNzaW9ucygpOiBJR3JvdXBpbmdFeHByZXNzaW9uW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhwcmVzc2lvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBleHByZXNzaW9ucyh2YWx1ZTogSUdyb3VwaW5nRXhwcmVzc2lvbltdKSB7XG4gICAgICAgIHRoaXMuX2V4cHJlc3Npb25zID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2hpcEV4cHJlc3Npb25zID0gdGhpcy5fZXhwcmVzc2lvbnM7XG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbnNDaGFuZ2VkKCk7XG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbnNDaGFuZ2UuZW1pdCh0aGlzLl9leHByZXNzaW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgbWVzc2FnZSBmb3IgdGhlIGRlZmF1bHQgZHJvcCBhcmVhIHRlbXBsYXRlLlxuICAgICAqIE9idmlvdXNseSwgaWYgYW5vdGhlciB0ZW1wbGF0ZSBpcyBwcm92aWRlZCwgdGhpcyBpcyBpZ25vcmVkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBkcm9wQXJlYU1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Ryb3BBcmVhTWVzc2FnZSA/PyB0aGlzLmdyaWQucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX2dyb3VwQnlBcmVhX21lc3NhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBkcm9wQXJlYU1lc3NhZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9kcm9wQXJlYU1lc3NhZ2UgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZXhwcmVzc2lvbnNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElHcm91cGluZ0V4cHJlc3Npb25bXT4oKTtcblxuICAgIEBWaWV3Q2hpbGRyZW4oSWd4Q2hpcENvbXBvbmVudClcbiAgICBwdWJsaWMgY2hpcHM6IFF1ZXJ5TGlzdDxJZ3hDaGlwQ29tcG9uZW50PjtcblxuICAgIHB1YmxpYyBjaGlwRXhwcmVzc2lvbnM6IElHcm91cGluZ0V4cHJlc3Npb25bXTtcblxuICAgIC8qKiBUaGUgbmF0aXZlIERPTSBlbGVtZW50LiBVc2VkIGluIHNpemluZyBjYWxjdWxhdGlvbnMuICovXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9leHByZXNzaW9uczogSUdyb3VwaW5nRXhwcmVzc2lvbltdID0gW107XG4gICAgcHJpdmF0ZSBfZHJvcEFyZWFNZXNzYWdlOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHByb3RlY3RlZCBwbGF0Zm9ybTogUGxhdGZvcm1VdGlsKSB7IH1cblxuXG4gICAgcHVibGljIGdldCBkcm9wQXJlYVZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAodGhpcy5ncmlkLmNvbHVtbkluRHJhZyAmJiB0aGlzLmdyaWQuY29sdW1uSW5EcmFnLmdyb3VwYWJsZSkgfHxcbiAgICAgICAgICAgICF0aGlzLmV4cHJlc3Npb25zLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlS2V5RG93bihpZDogc3RyaW5nLCBldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybS5pc0FjdGl2YXRpb25LZXkoZXZlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNvcnRpbmcoaWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUNsaWNrKGlkOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLmdyaWQuZ2V0Q29sdW1uQnlOYW1lKGlkKS5ncm91cGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZVNvcnRpbmcoaWQpO1xuICAgIH1cblxuICAgICBwdWJsaWMgb25EcmFnRHJvcChldmVudCkge1xuICAgICAgICBjb25zdCBkcmFnOiBJZ3hDb2x1bW5Nb3ZpbmdEcmFnRGlyZWN0aXZlID0gZXZlbnQuZGV0YWlsLm93bmVyO1xuICAgICAgICBpZiAoZHJhZyBpbnN0YW5jZW9mIElneENvbHVtbk1vdmluZ0RyYWdEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbjogSWd4Q29sdW1uQ29tcG9uZW50ID0gZHJhZy5jb2x1bW47XG4gICAgICAgICAgICBpZiAodGhpcy5ncmlkLmNvbHVtbnMuaW5kZXhPZihjb2x1bW4pIDwgMCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaXNHcm91cGVkID0gdGhpcy5leHByZXNzaW9ucy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uZmllbGROYW1lID09PSBjb2x1bW4uZmllbGQpICE9PSAtMTtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uZ3JvdXBhYmxlICYmICFpc0dyb3VwZWQgJiYgIWNvbHVtbi5jb2x1bW5Hcm91cCAmJiAhIWNvbHVtbi5maWVsZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwaW5nRXhwcmVzc2lvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiBjb2x1bW4uZmllbGQsXG4gICAgICAgICAgICAgICAgICAgIGRpcjogU29ydGluZ0RpcmVjdGlvbi5Bc2MsXG4gICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2U6IGNvbHVtbi5zb3J0aW5nSWdub3JlQ2FzZSxcbiAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k6IGNvbHVtbi5zb3J0U3RyYXRlZ3ksXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwaW5nQ29tcGFyZXI6IGNvbHVtbi5ncm91cGluZ0NvbXBhcmVyXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBCeShncm91cGluZ0V4cHJlc3Npb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFJlb3JkZXJlZEV4cHJlc3Npb25zKGNoaXBzQXJyYXk6IElneENoaXBDb21wb25lbnRbXSkge1xuICAgICAgICBjb25zdCBuZXdFeHByZXNzaW9ucyA9IFtdO1xuXG4gICAgICAgIGNoaXBzQXJyYXkuZm9yRWFjaChjaGlwID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4cHIgPSB0aGlzLmV4cHJlc3Npb25zLmZpbmQoaXRlbSA9PiBpdGVtLmZpZWxkTmFtZSA9PT0gY2hpcC5pZCk7XG5cbiAgICAgICAgICAgIC8vIGRpc2FsbG93IGNoYW5naW5nIG9yZGVyIGlmIHRoZXJlIGFyZSBjb2x1bW5zIHdpdGggZ3JvdXBhYmxlOiBmYWxzZVxuICAgICAgICAgICAgaWYgKCF0aGlzLmdyaWQuZ2V0Q29sdW1uQnlOYW1lKGV4cHIuZmllbGROYW1lKT8uZ3JvdXBhYmxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBuZXdFeHByZXNzaW9ucy5wdXNoKGV4cHIpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbmV3RXhwcmVzc2lvbnM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVNvcnRpbmcoaWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBleHByID0gdGhpcy5ncmlkLnNvcnRpbmdFeHByZXNzaW9ucy5maW5kKGUgPT4gZS5maWVsZE5hbWUgPT09IGlkKTtcbiAgICAgICAgZXhwci5kaXIgPSAzIC0gZXhwci5kaXI7XG4gICAgICAgIHRoaXMuZ3JpZC5zb3J0KGV4cHIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBleHByZXNzaW9uc0NoYW5nZWQoKSB7XG4gICAgfVxuXG4gICAgcHVibGljIGFic3RyYWN0IGhhbmRsZVJlb3JkZXIoZXZlbnQ6IElDaGlwc0FyZWFSZW9yZGVyRXZlbnRBcmdzKTtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBoYW5kbGVNb3ZlRW5kKCk7XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ3JvdXBCeShleHByZXNzaW9uOiBJR3JvdXBpbmdFeHByZXNzaW9uKTtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBjbGVhckdyb3VwaW5nKG5hbWU6IHN0cmluZyk7XG5cbn1cblxuLyoqXG4gKiBBIHBpcGUgdG8gY2lyY3VtdmVudCB0aGUgdXNlIG9mIGdldHRlcnMvbWV0aG9kcyBqdXN0IHRvIGdldCBzb21lIGFkZGl0aW9uYWxcbiAqIGluZm9ybWF0aW9uIGZyb20gdGhlIGdyb3VwaW5nIGV4cHJlc3Npb24gYW5kIHBhc3MgaXQgdG8gdGhlIGNoaXAgcmVwcmVzZW50aW5nXG4gKiB0aGF0IGV4cHJlc3Npb24uXG4gKlxuICogQGhpZGRlbiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoeyBuYW1lOiAnaWd4R3JvdXBCeU1ldGEnIH0pXG5leHBvcnQgY2xhc3MgSWd4R3JvdXBCeU1ldGFQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGtleTogc3RyaW5nLCBncmlkOiBHcmlkVHlwZSkge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBncmlkLmdldENvbHVtbkJ5TmFtZShrZXkpO1xuICAgICAgICByZXR1cm4geyBncm91cGFibGU6IGNvbHVtbi5ncm91cGFibGUsIHRpdGxlOiBjb2x1bW4uaGVhZGVyIHx8IGtleSB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -27,7 +27,7 @@ export class IgxGridToolbarAdvancedFilteringComponent {
|
|
|
27
27
|
IgxGridToolbarAdvancedFilteringComponent.decorators = [
|
|
28
28
|
{ type: Component, args: [{
|
|
29
29
|
selector: 'igx-grid-toolbar-advanced-filtering',
|
|
30
|
-
template: "<button igxButton=\"outlined\" [displayDensity]=\"grid.displayDensity\" name=\"btnAdvancedFiltering\" igxRipple\n [title]=\"grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_tooltip\"\n (click)=\"grid.openAdvancedFilteringDialog(overlaySettings)\"\n [ngClass]=\"grid.advancedFilteringExpressionsTree ? 'igx-grid-toolbar__adv-filter--filtered' : 'igx-grid-toolbar__adv-filter'\">\n <igx-icon>filter_list</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">{{ grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_label }}</span>\n</button>\n"
|
|
30
|
+
template: "<button igxButton=\"outlined\" type=\"button\" [displayDensity]=\"grid.displayDensity\" name=\"btnAdvancedFiltering\" igxRipple\n [title]=\"grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_tooltip\"\n (click)=\"grid.openAdvancedFilteringDialog(overlaySettings)\"\n [ngClass]=\"grid.advancedFilteringExpressionsTree ? 'igx-grid-toolbar__adv-filter--filtered' : 'igx-grid-toolbar__adv-filter'\">\n <igx-icon>filter_list</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">{{ grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_label }}</span>\n</button>\n"
|
|
31
31
|
},] }
|
|
32
32
|
];
|
|
33
33
|
IgxGridToolbarAdvancedFilteringComponent.ctorParameters = () => [
|
|
@@ -36,4 +36,4 @@ IgxGridToolbarAdvancedFilteringComponent.ctorParameters = () => [
|
|
|
36
36
|
IgxGridToolbarAdvancedFilteringComponent.propDecorators = {
|
|
37
37
|
overlaySettings: [{ type: Input }]
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC10b29sYmFyLWFkdmFuY2VkLWZpbHRlcmluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvdG9vbGJhci9ncmlkLXRvb2xiYXItYWR2YW5jZWQtZmlsdGVyaW5nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHbkU7Ozs7Ozs7Ozs7OztHQVlHO0FBS0gsTUFBTSxPQUFPLHdDQUF3QztJQVlqRCxZQUE0QixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtJQUFJLENBQUM7SUFWakU7O09BRUc7SUFDSCxJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzdCLENBQUM7OztZQVhKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUNBQXFDO2dCQUMvQyxrcUJBQStEO2FBQ2xFOzs7WUFuQlEsdUJBQXVCLHVCQWdDZixJQUFJOzs7OEJBSGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5U2V0dGluZ3MgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneEdyaWRUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9ncmlkLXRvb2xiYXIuY29tcG9uZW50JztcblxuXG4vKipcbiAqIFByb3ZpZGVzIGEgcHJlLWNvbmZpZ3VyZWQgYnV0dG9uIHRvIG9wZW4gdGhlIGFkdmFuY2VkIGZpbHRlcmluZyBkaWFsb2cgb2YgdGhlIGdyaWQuXG4gKlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4R3JpZFRvb2xiYXJNb2R1bGVcbiAqIEBpZ3hQYXJlbnQgSWd4R3JpZFRvb2xiYXJDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGlneC1ncmlkLXRvb2xiYXItYWR2YW5jZWQtZmlsdGVyaW5nPjwvaWd4LWdyaWQtdG9vbGJhci1hZHZhbmNlZC1maWx0ZXJpbmc+XG4gKiA8aWd4LWdyaWQtdG9vbGJhci1hZHZhbmNlZC1maWx0ZXJpbmc+Q3VzdG9tIHRleHQ8L2lneC1ncmlkLXRvb2xiYXItYWR2YW5jZWQtZmlsdGVyaW5nPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LWdyaWQtdG9vbGJhci1hZHZhbmNlZC1maWx0ZXJpbmcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ncmlkLXRvb2xiYXItYWR2YW5jZWQtZmlsdGVyaW5nLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkVG9vbGJhckFkdmFuY2VkRmlsdGVyaW5nQ29tcG9uZW50IHtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGdyaWQgY29udGFpbmluZyB0aGlzIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGdyaWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvb2xiYXIuZ3JpZDtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvdmVybGF5U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncztcblxuICAgIGNvbnN0cnVjdG9yKEBIb3N0KCkgcHJpdmF0ZSB0b29sYmFyOiBJZ3hHcmlkVG9vbGJhckNvbXBvbmVudCkgeyB9XG59XG4iXX0=
|
|
@@ -91,7 +91,7 @@ export class IgxGridToolbarExporterComponent extends BaseToolbarDirective {
|
|
|
91
91
|
IgxGridToolbarExporterComponent.decorators = [
|
|
92
92
|
{ type: Component, args: [{
|
|
93
93
|
selector: 'igx-grid-toolbar-exporter',
|
|
94
|
-
template: "<button [title]=\"grid?.resourceStrings.igx_grid_toolbar_exporter_button_tooltip\" [disabled]=\"isExporting\"\n igxButton=\"outlined\" [displayDensity]=\"grid.displayDensity\" igxRipple #btn (click)=\"toggle(btn, toggleRef)\">\n\n <igx-icon>import_export</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">\n {{ grid.exportText || grid?.resourceStrings.igx_grid_toolbar_exporter_button_label }}\n </span>\n <igx-icon>arrow_drop_down</igx-icon>\n</button>\n\n<div class=\"igx-grid-toolbar__dropdown\" id=\"btnExport\">\n <ul class=\"igx-grid-toolbar__dd-list\" igxToggle #toggleRef=\"toggle\">\n <li *ngIf=\"grid.exportExcel || exportExcel\" #btnExportExcel id=\"btnExportExcel\"\n class=\"igx-grid-toolbar__dd-list-items\" igxRipple (click)=\"export('excel', toggleRef)\">\n\n <ng-template #excel>\n <ng-content select=[excelText],excel-text></ng-content>\n </ng-template>\n <excel-text *ngIf=\"!hasExcelAttr\">\n {{ grid.exportExcelText || grid?.resourceStrings.igx_grid_toolbar_exporter_excel_entry_text}}\n </excel-text>\n <ng-container *ngTemplateOutlet=\"excel\"></ng-container>\n </li>\n\n <li *ngIf=\"grid.exportCsv || exportCSV\" #btnExportCsv id=\"btnExportCsv\" class=\"igx-grid-toolbar__dd-list-items\"\n igxRipple (click)=\"export('csv', toggleRef)\">\n\n <ng-template #csv>\n <ng-content select=[csvText],csv-text></ng-content>\n </ng-template>\n <csv-text *ngIf=\"!hasCSVAttr\">\n {{ grid.exportCsvText || grid?.resourceStrings.igx_grid_toolbar_exporter_csv_entry_text }}</csv-text>\n <ng-container *ngTemplateOutlet=\"csv\"></ng-container>\n </li>\n </ul>\n</div>\n"
|
|
94
|
+
template: "<button [title]=\"grid?.resourceStrings.igx_grid_toolbar_exporter_button_tooltip\" [disabled]=\"isExporting\"\n igxButton=\"outlined\" type=\"button\" [displayDensity]=\"grid.displayDensity\" igxRipple #btn (click)=\"toggle(btn, toggleRef)\">\n\n <igx-icon>import_export</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">\n {{ grid.exportText || grid?.resourceStrings.igx_grid_toolbar_exporter_button_label }}\n </span>\n <igx-icon>arrow_drop_down</igx-icon>\n</button>\n\n<div class=\"igx-grid-toolbar__dropdown\" id=\"btnExport\">\n <ul class=\"igx-grid-toolbar__dd-list\" igxToggle #toggleRef=\"toggle\">\n <li *ngIf=\"grid.exportExcel || exportExcel\" #btnExportExcel id=\"btnExportExcel\"\n class=\"igx-grid-toolbar__dd-list-items\" igxRipple (click)=\"export('excel', toggleRef)\">\n\n <ng-template #excel>\n <ng-content select=[excelText],excel-text></ng-content>\n </ng-template>\n <excel-text *ngIf=\"!hasExcelAttr\">\n {{ grid.exportExcelText || grid?.resourceStrings.igx_grid_toolbar_exporter_excel_entry_text}}\n </excel-text>\n <ng-container *ngTemplateOutlet=\"excel\"></ng-container>\n </li>\n\n <li *ngIf=\"grid.exportCsv || exportCSV\" #btnExportCsv id=\"btnExportCsv\" class=\"igx-grid-toolbar__dd-list-items\"\n igxRipple (click)=\"export('csv', toggleRef)\">\n\n <ng-template #csv>\n <ng-content select=[csvText],csv-text></ng-content>\n </ng-template>\n <csv-text *ngIf=\"!hasCSVAttr\">\n {{ grid.exportCsvText || grid?.resourceStrings.igx_grid_toolbar_exporter_csv_entry_text }}</csv-text>\n <ng-container *ngTemplateOutlet=\"csv\"></ng-container>\n </li>\n </ul>\n</div>\n"
|
|
95
95
|
},] }
|
|
96
96
|
];
|
|
97
97
|
IgxGridToolbarExporterComponent.ctorParameters = () => [
|
|
@@ -108,4 +108,4 @@ IgxGridToolbarExporterComponent.propDecorators = {
|
|
|
108
108
|
exportStarted: [{ type: Output }],
|
|
109
109
|
exportEnded: [{ type: Output }]
|
|
110
110
|
};
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC10b29sYmFyLWV4cG9ydGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy90b29sYmFyL2dyaWQtdG9vbGJhci1leHBvcnRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVksSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEUsT0FBTyxFQUNILFlBQVksRUFFWixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDMUIsTUFBTSwyQkFBMkIsQ0FBQztBQWVuQzs7Ozs7Ozs7OztHQVVHO0FBS0gsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLG9CQUFvQjtJQWtFckUsWUFDc0IsT0FBZ0MsRUFDMUMsYUFBc0MsRUFDdEMsV0FBa0M7UUFFMUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBSkcsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDMUMsa0JBQWEsR0FBYixhQUFhLENBQXlCO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUF1QjtRQXZDOUM7O1dBRUc7UUFFSSxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXhCOztXQUVHO1FBRUksZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFMUI7O1dBRUc7UUFFSSxhQUFRLEdBQUcsY0FBYyxDQUFDO1FBRWpDOzs7V0FHRztRQUVJLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFFNUQ7O1dBRUc7UUFFSSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFOUM7O1dBRUc7UUFDSSxnQkFBVyxHQUFHLEtBQUssQ0FBQztJQVEzQixDQUFDO0lBeEREOztPQUVHO0lBQ0gsSUFBVyxjQUFjO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNoQyxDQUFDO0lBOENNLE1BQU0sQ0FBQyxJQUFxQixFQUFFLFNBQThCO1FBQy9ELElBQUksT0FBMkIsQ0FBQztRQUNoQyxJQUFJLFFBQXlCLENBQUM7UUFFOUIsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLEtBQUssRUFBRSxDQUFDO1FBRW5CLFFBQVEsSUFBSSxFQUFFO1lBQ1YsS0FBSyxLQUFLO2dCQUNOLE9BQU8sR0FBRyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyRSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDNUIsTUFBTTtZQUNWLEtBQUssT0FBTztnQkFDUixPQUFPLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JELFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQ3JDO1FBRUQsTUFBTSxJQUFJLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXNCLENBQUM7UUFFdkYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRWpDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLE9BQU87U0FDVjtRQUVELFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7WUFoSEosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLHUzREFBcUQ7YUFDeEQ7OztZQXRDUSx1QkFBdUIsdUJBMEd2QixJQUFJO1lBbEdULHVCQUF1QjtZQUZ2QixxQkFBcUI7OzsyQkF1Q3BCLFlBQVksU0FBQyxxQkFBcUI7eUJBT2xDLFlBQVksU0FBQyxtQkFBbUI7d0JBb0JoQyxLQUFLOzBCQU1MLEtBQUs7dUJBTUwsS0FBSzs0QkFPTCxNQUFNOzBCQU1OLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPcHRpb25hbCwgSG9zdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNlVG9vbGJhckRpcmVjdGl2ZSB9IGZyb20gJy4vZ3JpZC10b29sYmFyLmJhc2UnO1xuaW1wb3J0IHsgSWd4R3JpZFRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2dyaWQtdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4RXhjZWxUZXh0RGlyZWN0aXZlLCBJZ3hDU1ZUZXh0RGlyZWN0aXZlIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDc3ZGaWxlVHlwZXMsXG4gICAgSWd4QmFzZUV4cG9ydGVyLFxuICAgIElneENzdkV4cG9ydGVyT3B0aW9ucyxcbiAgICBJZ3hDc3ZFeHBvcnRlclNlcnZpY2UsXG4gICAgSWd4RXhjZWxFeHBvcnRlck9wdGlvbnMsXG4gICAgSWd4RXhjZWxFeHBvcnRlclNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBJZ3hHcmlkQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2dyaWQtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4VG9nZ2xlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZSc7XG5cblxuZXhwb3J0IHR5cGUgSWd4RXhwb3J0ZXJPcHRpb25zID0gSWd4Q3N2RXhwb3J0ZXJPcHRpb25zIHwgSWd4RXhjZWxFeHBvcnRlck9wdGlvbnM7XG5cblxuZXhwb3J0IGludGVyZmFjZSBJZ3hFeHBvcnRlckV2ZW50IHtcbiAgICBleHBvcnRlcjogSWd4QmFzZUV4cG9ydGVyO1xuICAgIG9wdGlvbnM6IElneEV4cG9ydGVyT3B0aW9ucztcbiAgICBncmlkOiBJZ3hHcmlkQmFzZURpcmVjdGl2ZTtcbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYSBwcmUtY29uZmlndXJlZCBleHBvcnRlciBjb21wb25lbnQgZm9yIHRoZSBncmlkLlxuICpcbiAqIEByZW1hcmtzXG4gKiBUaGlzIGNvbXBvbmVudCBzdGlsbCBuZWVkcyB0aGUgYWN0dWFsIGV4cG9ydGVyIHNlcnZpY2UocykgcHJvdmlkZWQgaW4gdGhlIERJIGNoYWluXG4gKiBpbiBvcmRlciB0byBleHBvcnQgc29tZXRoaW5nLlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4R3JpZFRvb2xiYXJNb2R1bGVcbiAqIEBpZ3hQYXJlbnQgSWd4R3JpZFRvb2xiYXJDb21wb25lbnRcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LWdyaWQtdG9vbGJhci1leHBvcnRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtdG9vbGJhci1leHBvcnRlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZFRvb2xiYXJFeHBvcnRlckNvbXBvbmVudCBleHRlbmRzIEJhc2VUb29sYmFyRGlyZWN0aXZlIHtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneEV4Y2VsVGV4dERpcmVjdGl2ZSlcbiAgICBwdWJsaWMgaGFzRXhjZWxBdHRyOiBJZ3hFeGNlbFRleHREaXJlY3RpdmU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hDU1ZUZXh0RGlyZWN0aXZlKVxuICAgIHB1YmxpYyBoYXNDU1ZBdHRyOiBJZ3hDU1ZUZXh0RGlyZWN0aXZlO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBDU1YgZXhwb3J0ZXIgc2VydmljZSBpcyBhdmFpbGFibGUgaW4gdGhlIERJIGNoYWluLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaGFzQ3N2RXhwb3J0ZXIoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuY3N2RXhwb3J0ZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBFeGNlbCBleHBvcnRlciBzZXJ2aWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgREkgY2hhaW4uXG4gICAgICovXG4gICAgcHVibGljIGdldCBoYXNFeGNlbEV4cG9ydGVyKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLmV4Y2VsRXhwb3J0ZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdyBlbnRyeSBmb3IgQ1NWIGV4cG9ydC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBleHBvcnRDU1YgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyBlbnRyeSBmb3IgRXhjZWwgZXhwb3J0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGV4cG9ydEV4Y2VsID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIGZvciB0aGUgZXhwb3J0ZWQgZmlsZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWxlbmFtZSA9ICdFeHBvcnRlZERhdGEnO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHN0YXJ0aW5nIGFuIGV4cG9ydCBvcGVyYXRpb24uIFJlLWVtaXR0ZWQgYWRkaXRpb25hbGx5XG4gICAgICogYnkgdGhlIGdyaWQgaXRzZWxmLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBleHBvcnRTdGFydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJZ3hFeHBvcnRlckV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCBvbiBzdWNjZXNzZnVsIGVuZGluZyBvZiBhbiBleHBvcnQgb3BlcmF0aW9uLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBleHBvcnRFbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZXJlIGlzIGFuIGV4cG9ydCBpbiBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNFeHBvcnRpbmcgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASG9zdCgpIHByb3RlY3RlZCB0b29sYmFyOiBJZ3hHcmlkVG9vbGJhckNvbXBvbmVudCxcbiAgICAgICAgcHJpdmF0ZSBleGNlbEV4cG9ydGVyOiBJZ3hFeGNlbEV4cG9ydGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjc3ZFeHBvcnRlcjogSWd4Q3N2RXhwb3J0ZXJTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcih0b29sYmFyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhwb3J0KHR5cGU6ICdleGNlbCcgfCAnY3N2JywgdG9nZ2xlUmVmPzogSWd4VG9nZ2xlRGlyZWN0aXZlKTogdm9pZCB7XG4gICAgICAgIGxldCBvcHRpb25zOiBJZ3hFeHBvcnRlck9wdGlvbnM7XG4gICAgICAgIGxldCBleHBvcnRlcjogSWd4QmFzZUV4cG9ydGVyO1xuXG4gICAgICAgIHRvZ2dsZVJlZj8uY2xvc2UoKTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Nzdic6XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IG5ldyBJZ3hDc3ZFeHBvcnRlck9wdGlvbnModGhpcy5maWxlbmFtZSwgQ3N2RmlsZVR5cGVzLkNTVik7XG4gICAgICAgICAgICAgICAgZXhwb3J0ZXIgPSB0aGlzLmNzdkV4cG9ydGVyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZXhjZWwnOlxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBuZXcgSWd4RXhjZWxFeHBvcnRlck9wdGlvbnModGhpcy5maWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgZXhwb3J0ZXIgPSB0aGlzLmV4Y2VsRXhwb3J0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcmdzID0geyBleHBvcnRlciwgb3B0aW9ucywgZ3JpZDogdGhpcy5ncmlkLCBjYW5jZWw6IGZhbHNlIH0gYXMgSWd4RXhwb3J0ZXJFdmVudDtcblxuICAgICAgICB0aGlzLmV4cG9ydFN0YXJ0ZWQuZW1pdChhcmdzKTtcbiAgICAgICAgdGhpcy5ncmlkLnRvb2xiYXJFeHBvcnRpbmcuZW1pdChhcmdzKTtcbiAgICAgICAgdGhpcy5pc0V4cG9ydGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMudG9vbGJhci5zaG93UHJvZ3Jlc3MgPSB0cnVlO1xuXG4gICAgICAgIGlmIChhcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXhwb3J0ZXIuZXhwb3J0RW5kZWQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5leHBvcnRFbmRlZC5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLmlzRXhwb3J0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnRvb2xiYXIuc2hvd1Byb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV4cG9ydGVyLmV4cG9ydCh0aGlzLmdyaWQsIG9wdGlvbnMpO1xuICAgIH1cbn1cbiJdfQ==
|