carbon-components-angular 5.12.0 → 5.12.2
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/docs/documentation/components/ContentSwitcher.html +1 -1
- package/docs/documentation/components/Table.html +134 -136
- package/docs/documentation/components/TableHead.html +42 -84
- package/docs/documentation/coverage.html +3 -3
- package/docs/documentation/js/search/search_index.js +2 -2
- package/docs/documentation/modules/TagModule/dependencies.svg +4 -4
- package/docs/documentation/modules/TagModule.html +4 -4
- package/docs/documentation/modules/ThemeModule/dependencies.svg +4 -4
- package/docs/documentation/modules/ThemeModule.html +4 -4
- package/docs/documentation/modules/TilesModule/dependencies.svg +99 -99
- package/docs/documentation/modules/TilesModule.html +99 -99
- package/docs/documentation/modules/TimePickerModule/dependencies.svg +4 -4
- package/docs/documentation/modules/TimePickerModule.html +4 -4
- package/docs/documentation/modules/ToggleModule/dependencies.svg +41 -45
- package/docs/documentation/modules/ToggleModule.html +41 -45
- package/docs/documentation/modules/ToggletipModule/dependencies.svg +4 -4
- package/docs/documentation/modules/ToggletipModule.html +4 -4
- package/docs/documentation/modules/TooltipModule/dependencies.svg +4 -4
- package/docs/documentation/modules/TooltipModule.html +4 -4
- package/docs/documentation.json +171 -182
- package/docs/storybook/5868.140403a3.iframe.bundle.js +1 -0
- package/docs/storybook/content-switcher-content-switcher-stories.d8a420bd.iframe.bundle.js +1 -0
- package/docs/storybook/iframe.html +2 -2
- package/docs/storybook/main.e231b099.iframe.bundle.js +1 -0
- package/docs/storybook/project.json +1 -1
- package/docs/storybook/{runtime~main.e61e8f0b.iframe.bundle.js → runtime~main.6bac1547.iframe.bundle.js} +1 -1
- package/docs/storybook/table-table-stories.2c7e06c4.iframe.bundle.js +1 -0
- package/esm2020/content-switcher/content-switcher.component.mjs +2 -2
- package/esm2020/table/head/table-head.component.mjs +2 -10
- package/esm2020/table/table.component.mjs +2 -4
- package/fesm2015/carbon-components-angular-content-switcher.mjs +1 -1
- package/fesm2015/carbon-components-angular-content-switcher.mjs.map +1 -1
- package/fesm2015/carbon-components-angular-table.mjs +2 -12
- package/fesm2015/carbon-components-angular-table.mjs.map +1 -1
- package/fesm2020/carbon-components-angular-content-switcher.mjs +1 -1
- package/fesm2020/carbon-components-angular-content-switcher.mjs.map +1 -1
- package/fesm2020/carbon-components-angular-table.mjs +2 -12
- package/fesm2020/carbon-components-angular-table.mjs.map +1 -1
- package/package.json +1 -1
- package/table/head/table-head.component.d.ts +1 -6
- package/docs/storybook/5868.2c92ef26.iframe.bundle.js +0 -1
- package/docs/storybook/content-switcher-content-switcher-stories.0e556d81.iframe.bundle.js +0 -1
- package/docs/storybook/main.78985516.iframe.bundle.js +0 -1
- package/docs/storybook/table-table-stories.c0b6231b.iframe.bundle.js +0 -1
|
@@ -721,7 +721,6 @@ Table.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0
|
|
|
721
721
|
[checkboxHeaderLabel]="getCheckboxHeaderLabel()"
|
|
722
722
|
[filterTitle]="getFilterTitle()"
|
|
723
723
|
[model]="model"
|
|
724
|
-
[size]="size"
|
|
725
724
|
[selectAllCheckbox]="selectAllCheckbox"
|
|
726
725
|
[selectAllCheckboxSomeSelected]="selectAllCheckboxSomeSelected"
|
|
727
726
|
[showSelectionColumn]="showSelectionColumn"
|
|
@@ -772,7 +771,7 @@ Table.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0
|
|
|
772
771
|
</tr>
|
|
773
772
|
</tfoot>
|
|
774
773
|
</table>
|
|
775
|
-
`, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.TableDirective, selector: "[cdsTable], [ibmTable]", inputs: ["sortable", "noBorder", "striped", "skeleton", "size"] }, { kind: "component", type: i4.TableHead, selector: "[cdsTableHead], [ibmTableHead]", inputs: ["model", "showSelectionColumn", "enableSingleSelect", "selectAllCheckboxSomeSelected", "selectAllCheckbox", "skeleton", "stickyHeader", "sortable", "
|
|
774
|
+
`, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.TableDirective, selector: "[cdsTable], [ibmTable]", inputs: ["sortable", "noBorder", "striped", "skeleton", "size"] }, { kind: "component", type: i4.TableHead, selector: "[cdsTableHead], [ibmTableHead]", inputs: ["model", "showSelectionColumn", "enableSingleSelect", "selectAllCheckboxSomeSelected", "selectAllCheckbox", "skeleton", "stickyHeader", "sortable", "checkboxHeaderLabel", "sortDescendingLabel", "sortAscendingLabel", "filterTitle"], outputs: ["sort", "selectAll", "deselectAll"] }, { kind: "component", type: i5.TableBody, selector: "[cdsTableBody], [ibmTableBody]", inputs: ["model", "enableSingleSelect", "expandButtonAriaLabel", "checkboxRowLabel", "showSelectionColumn", "size", "selectionLabelColumn", "skeleton"], outputs: ["selectRow", "deselectRow", "rowClick"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
776
775
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: Table, decorators: [{
|
|
777
776
|
type: Component,
|
|
778
777
|
args: [{ selector: "cds-table, ibm-table", template: `
|
|
@@ -795,7 +794,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
795
794
|
[checkboxHeaderLabel]="getCheckboxHeaderLabel()"
|
|
796
795
|
[filterTitle]="getFilterTitle()"
|
|
797
796
|
[model]="model"
|
|
798
|
-
[size]="size"
|
|
799
797
|
[selectAllCheckbox]="selectAllCheckbox"
|
|
800
798
|
[selectAllCheckboxSomeSelected]="selectAllCheckboxSomeSelected"
|
|
801
799
|
[showSelectionColumn]="showSelectionColumn"
|
|
@@ -906,4 +904,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
906
904
|
}], scrollLoad: [{
|
|
907
905
|
type: Output
|
|
908
906
|
}] } });
|
|
909
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUtaLFdBQVcsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUUzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV2RyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBR3hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnSkc7QUFpRkgsTUFBTSxPQUFPLEtBQUs7SUF1WWpCOztPQUVHO0lBQ0gsWUFDVyxVQUFzQixFQUN0QixjQUE4QixFQUM5QixJQUFVO1FBRlYsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsU0FBSSxHQUFKLElBQUksQ0FBTTtRQXBTckI7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RyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBMERJLElBQUk7c0JBQWIsTUFBTTtnQkFPRyxTQUFTO3NCQUFsQixNQUFNO2dCQU9HLFdBQVc7c0JBQXBCLE1BQU07Z0JBT0csU0FBUztzQkFBbEIsTUFBTTtnQkFPRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLFFBQVE7c0JBQWpCLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0QXBwbGljYXRpb25SZWYsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdEV2ZW50RW1pdHRlcixcblx0RWxlbWVudFJlZixcblx0QWZ0ZXJWaWV3SW5pdCxcblx0VGVtcGxhdGVSZWYsXG5cdE9uRGVzdHJveSxcblx0SG9zdEJpbmRpbmdcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHsgVGFibGVNb2RlbCB9IGZyb20gXCIuL3RhYmxlLW1vZGVsLmNsYXNzXCI7XG5pbXBvcnQgeyBUYWJsZUhlYWRlckl0ZW0gfSBmcm9tIFwiLi90YWJsZS1oZWFkZXItaXRlbS5jbGFzc1wiO1xuaW1wb3J0IHsgVGFibGVJdGVtIH0gZnJvbSBcIi4vdGFibGUtaXRlbS5jbGFzc1wiO1xuXG5pbXBvcnQgeyBnZXRGb2N1c0VsZW1lbnRMaXN0LCB0YWJiYWJsZVNlbGVjdG9ySWdub3JlVGFiSW5kZXggfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEkxOG4sIE92ZXJyaWRhYmxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaTE4blwiO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci91dGlsc1wiO1xuaW1wb3J0IHsgRGF0YUdyaWRJbnRlcmFjdGlvbk1vZGVsIH0gZnJvbSBcIi4vZGF0YS1ncmlkLWludGVyYWN0aW9uLW1vZGVsLmNsYXNzXCI7XG5pbXBvcnQgeyBUYWJsZURvbUFkYXB0ZXIgfSBmcm9tIFwiLi90YWJsZS1hZGFwdGVyLmNsYXNzXCI7XG5pbXBvcnQgeyBUYWJsZVJvd1NpemUgfSBmcm9tIFwiLi90YWJsZS50eXBlc1wiO1xuXG4vKipcbiAqIEJ1aWxkIHlvdXIgdGFibGUgd2l0aCB0aGlzIGNvbXBvbmVudCBieSBleHRlbmRpbmcgdGhpbmdzIHRoYXQgZGlmZmVyIGZyb20gZGVmYXVsdC5cbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLXRhYmxlLS1iYXNpYylcbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSB1c3VhbCB3cml0ZS15b3VyLW93bi1odG1sIGFwcHJvYWNoIHlvdSBoYWQgd2l0aCBgPHRhYmxlPmAsXG4gKiBjYXJib24gdGFibGUgdXNlcyBtb2RlbC12aWV3LWNvbnRyb2xsZXIgYXBwcm9hY2guXG4gKlxuICogSGVyZSwgeW91IGNyZWF0ZSBhIHZpZXcgKHdpdGggYnVpbHQtaW4gY29udHJvbGxlcikgYW5kIHByb3ZpZGUgaXQgYSBtb2RlbC5cbiAqIENoYW5nZXMgeW91IG1ha2UgdG8gdGhlIG1vZGVsIGFyZSByZWZsZWN0ZWQgaW4gdGhlIHZpZXcuIFByb3ZpZGUgc2FtZSBtb2RlbCB5b3UgdXNlXG4gKiBpbiB0aGUgdGFibGUgdG8gdGhlIGA8Y2RzLXBhZ2luYXRpb24+YCBjb21wb25lbnRzLlxuICogVGhleSBwcm92aWRlIGEgZGlmZmVyZW50IHZpZXcgb3ZlciB0aGUgc2FtZSBkYXRhLlxuICpcbiAqICMjIEJhc2ljIHVzYWdlXG4gKlxuICogYGBgaHRtbFxuICogPGNkcy10YWJsZSBbbW9kZWxdPVwibW9kZWxcIj48L2Nkcy10YWJsZT5cbiAqIGBgYFxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHB1YmxpYyBtb2RlbCA9IG5ldyBUYWJsZU1vZGVsKCk7XG4gKlxuICogdGhpcy5tb2RlbC5kYXRhID0gW1xuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJhc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJxd2VyXCJ9KV0sXG4gKiBcdFtuZXcgVGFibGVJdGVtKHtkYXRhOiBcImNzZGZcIn0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiBcInp3ZXJcIn0pXSxcbiAqIFx0W25ldyBUYWJsZUl0ZW0oe2RhdGE6IFwiYnNkZlwifSksIG5ldyBUYWJsZUl0ZW0oe2RhdGE6IFwic3dlclwifSldLFxuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJjc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJ0d2VyXCJ9KV1cbiAqIF07XG4gKiBgYGBcbiAqXG4gKiAjIyBDdXN0b21pemF0aW9uXG4gKlxuICogSWYgeW91IGhhdmUgY3VzdG9tIGRhdGEgaW4geW91ciB0YWJsZSwgeW91IG5lZWQgYSB3YXkgdG8gZGlzcGxheSBpdC4gWW91IGNhbiBkbyB0aGF0XG4gKiBieSBwcm92aWRpbmcgYSB0ZW1wbGF0ZSB0byBgVGFibGVJdGVtYC5cbiAqXG4gKiBgYGBodG1sXG4gKiA8bmctdGVtcGxhdGUgI2N1c3RvbVRhYmxlSXRlbVRlbXBsYXRlIGxldC1kYXRhPVwiZGF0YVwiPlxuICogXHQ8YSBbcm91dGVyTGlua109XCJkYXRhLmxpbmtcIj57e2RhdGEubmFtZX19IHt7ZGF0YS5zdXJuYW1lfX08L2E+XG4gKiA8L25nLXRlbXBsYXRlPlxuICogYGBgXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY3VzdG9tVGFibGVJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gKlxuICogdGhpcy5jdXN0b21Nb2RlbC5kYXRhID0gW1xuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJhc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YToge25hbWU6IFwiTGVzc3lcIiwgbGluazogXCIvdGFibGVcIn0sIHRlbXBsYXRlOiB0aGlzLmN1c3RvbVRhYmxlSXRlbVRlbXBsYXRlfSldLFxuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJjc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJzd2VyXCJ9KV0sXG4gKiBcdFtuZXcgVGFibGVJdGVtKHtkYXRhOiBcImJzZGZcIn0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiB7bmFtZTogXCJBbGljZVwiLCBzdXJuYW1lOiBcIkJvYlwifSwgdGVtcGxhdGU6IHRoaXMuY3VzdG9tVGFibGVJdGVtVGVtcGxhdGV9KV0sXG4gKiBcdFtuZXcgVGFibGVJdGVtKHtkYXRhOiBcImNzZGZcIn0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiBcInR3ZXJcIn0pXSxcbiAqIF07XG4gKiBgYGBcbiAqXG4gKiAjIyMgU29ydGluZyBhbmQgZmlsdGVyaW5nXG4gKlxuICogSW4gY2FzZSB5b3UgbmVlZCBjdXN0b20gc29ydGluZyBhbmQvb3IgZmlsdGVyaW5nIHlvdSBzaG91bGQgc3ViY2xhc3MgYFRhYmxlSGVhZGVySXRlbWBcbiAqIGFuZCBvdmVycmlkZSBuZWVkZWQgZnVuY3Rpb25zLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIEZpbHRlcmFibGVIZWFkZXJJdGVtIGV4dGVuZHMgVGFibGVIZWFkZXJJdGVtIHtcbiAqIFx0Ly8gY3VzdG9tIGZpbHRlciBmdW5jdGlvblxuICogXHRmaWx0ZXIoaXRlbTogVGFibGVJdGVtKTogYm9vbGVhbiB7XG4gKiBcdFx0aWYgKHR5cGVvZiBpdGVtLmRhdGEgPT09IFwic3RyaW5nXCIgJiYgaXRlbS5kYXRhLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLmZpbHRlckRhdGEuZGF0YS50b0xvd2VyQ2FzZSgpKSA+PSAwIHx8XG4gKiBcdFx0aXRlbS5kYXRhLm5hbWUgJiYgaXRlbS5kYXRhLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuZmlsdGVyRGF0YS5kYXRhLnRvTG93ZXJDYXNlKCkpID49IDAgfHxcbiAqIFx0XHRpdGVtLmRhdGEuc3VybmFtZSAmJiBpdGVtLmRhdGEuc3VybmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5maWx0ZXJEYXRhLmRhdGEudG9Mb3dlckNhc2UoKSkgPj0gMCkge1xuICogXHRcdFx0cmV0dXJuIGZhbHNlO1xuICogXHRcdH1cbiAqIFx0XHRyZXR1cm4gdHJ1ZTtcbiAqIFx0fVxuICpcbiAqIFx0c2V0IGZpbHRlckNvdW50KG4pIHt9XG4gKiBcdGdldCBmaWx0ZXJDb3VudCgpIHtcbiAqIFx0XHRyZXR1cm4gKHRoaXMuZmlsdGVyRGF0YSAmJiB0aGlzLmZpbHRlckRhdGEuZGF0YSAmJiB0aGlzLmZpbHRlckRhdGEuZGF0YS5sZW5ndGggPiAwKSA/IDEgOiAwO1xuICogXHR9XG4gKlxuICogXHQvLyB1c2VkIGZvciBjdXN0b20gc29ydGluZ1xuICogXHRjb21wYXJlKG9uZTogVGFibGVJdGVtLCB0d286IFRhYmxlSXRlbSkge1xuICogXHRcdGNvbnN0IHN0cmluZ09uZSA9IChvbmUuZGF0YS5uYW1lIHx8IG9uZS5kYXRhLnN1cm5hbWUgfHwgb25lLmRhdGEpLnRvTG93ZXJDYXNlKCk7XG4gKiBcdFx0Y29uc3Qgc3RyaW5nVHdvID0gKHR3by5kYXRhLm5hbWUgfHwgdHdvLmRhdGEuc3VybmFtZSB8fCB0d28uZGF0YSkudG9Mb3dlckNhc2UoKTtcbiAqXG4gKiBcdFx0aWYgKHN0cmluZ09uZSA+IHN0cmluZ1R3bykge1xuICogXHRcdFx0cmV0dXJuIDE7XG4gKiBcdFx0fSBlbHNlIGlmIChzdHJpbmdPbmUgPCBzdHJpbmdUd28pIHtcbiAqIFx0XHRcdHJldHVybiAtMTtcbiAqIFx0XHR9IGVsc2Uge1xuICogXHRcdFx0cmV0dXJuIDA7XG4gKiBcdFx0fVxuICogXHR9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBJZiB5b3Ugd2FudCB0byBkbyB5b3VyIHNvcnRpbmcgb24gdGhlIGJhY2tlbmQgb3IgcXVlcnkgZm9yIHNvcnRlZCBkYXRhIGFzIGEgcmVzdWx0IG9mIHVzZXJcbiAqIGNsaWNraW5nIHRoZSB0YWJsZSBoZWFkZXIsIGNoZWNrIHRhYmxlIFtgc29ydGBdKCNzb3J0KSBvdXRwdXQgZG9jdW1lbnRhdGlvblxuICpcbiAqIFNlZSBgVGFibGVIZWFkZXJJdGVtYCBjbGFzcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiAjIyBObyBkYXRhIHRlbXBsYXRlXG4gKlxuICogV2hlbiB0YWJsZSBoYXMgbm8gZGF0YSB0byBzaG93LCBpdCBjYW4gc2hvdyBhIG1lc3NhZ2UgeW91IHByb3ZpZGUgaXQgaW5zdGVhZC5cbiAqXG4gKiBgYGBodG1sXG4gKiA8Y2RzLXRhYmxlIFttb2RlbF09XCJtb2RlbFwiPk5vIGRhdGEuPC9jZHMtdGFibGU+XG4gKiBgYGBcbiAqXG4gKiAuLi4gd2lsbCBzaG93IGBObyBkYXRhLmAgbWVzc2FnZSwgYnV0IHlvdSBjYW4gZ2V0IGNyZWF0aXZlIGFuZCBwcm92aWRlIGFueSB0ZW1wbGF0ZSB5b3Ugd2FudFxuICogdG8gcmVwbGFjZSB0YWJsZSdzIGRlZmF1bHQgYHRib2R5YC5cbiAqXG4gKiAjIyBVc2UgcGFnaW5hdGlvbiBhcyB0YWJsZSBmb290ZXJcbiAqXG4gKiBgYGBodG1sXG4gKiA8Y2RzLXBhZ2luYXRpb24gW21vZGVsXT1cIm1vZGVsXCIgKHNlbGVjdFBhZ2UpPVwic2VsZWN0UGFnZSgkZXZlbnQpXCI+PC9jZHMtcGFnaW5hdGlvbj5cbiAqIGBgYFxuICpcbiAqIGBzZWxlY3RQYWdlKClgIGZ1bmN0aW9uIHNob3VsZCBmZXRjaCB0aGUgZGF0YSBmcm9tIGJhY2tlbmQsIGNyZWF0ZSBuZXcgYGRhdGFgLCBhcHBseSBpdCB0byBgbW9kZWwuZGF0YWAsXG4gKiBhbmQgdXBkYXRlIGBtb2RlbC5jdXJyZW50UGFnZWAuXG4gKlxuICogSWYgdGhlIGRhdGEgeW91ciBzZXJ2ZXIgcmV0dXJucyBpcyBhIHR3byBkaW1lbnNpb25hbCBhcnJheSBvZiBvYmplY3RzLCBpdCB3b3VsZCBsb29rIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogc2VsZWN0UGFnZShwYWdlKSB7XG4gKiBcdHRoaXMuZ2V0UGFnZShwYWdlKS50aGVuKChkYXRhOiBBcnJheTxBcnJheTxhbnk+PikgPT4ge1xuICogXHRcdC8vIHNldCB0aGUgZGF0YSBhbmQgdXBkYXRlIHBhZ2VcbiAqIFx0XHR0aGlzLm1vZGVsLmRhdGEgPSB0aGlzLnByZXBhcmVEYXRhKGRhdGEpO1xuICogXHRcdHRoaXMubW9kZWwuY3VycmVudFBhZ2UgPSBwYWdlO1xuICogXHR9KTtcbiAqIH1cbiAqXG4gKiBwcm90ZWN0ZWQgcHJlcGFyZURhdGEoZGF0YTogQXJyYXk8QXJyYXk8YW55Pj4pIHtcbiAqIFx0Ly8gY3JlYXRlIG5ldyBkYXRhIGZyb20gdGhlIHNlcnZpY2UgZGF0YVxuICogXHRsZXQgbmV3RGF0YSA9IFtdO1xuICogXHRkYXRhLmZvckVhY2goZGF0YVJvdyA9PiB7XG4gKiBcdFx0bGV0IHJvdyA9IFtdO1xuICogXHRcdGRhdGFSb3cuZm9yRWFjaChkYXRhRWxlbWVudCA9PiB7XG4gKiBcdFx0XHRyb3cucHVzaChuZXcgVGFibGVJdGVtKHtcbiAqIFx0XHRcdFx0ZGF0YTogZGF0YUVsZW1lbnQsXG4gKiBcdFx0XHRcdHRlbXBsYXRlOiB0eXBlb2YgZGF0YUVsZW1lbnQgPT09IFwic3RyaW5nXCIgPyB1bmRlZmluZWQgOiB0aGlzLnBhZ2luYXRpb25UYWJsZUl0ZW1UZW1wbGF0ZVxuICogXHRcdFx0XHQvLyB5b3VyIHRlbXBsYXRlIGNhbiBoYW5kbGUgYWxsIHRoZSBkYXRhIHR5cGVzIHNvIHlvdSBkb24ndCBoYXZlIHRvIGNvbmRpdGlvbmFsbHkgc2V0IGl0XG4gKiBcdFx0XHRcdC8vIHlvdSBjYW4gYWxzbyBzZXQgZGlmZmVyZW50IHRlbXBsYXRlcyBmb3IgZGlmZmVyZW50IGNvbHVtbnMgYmFzZWQgb24gaW5kZXhcbiAqIFx0XHRcdH0pKTtcbiAqIFx0XHR9KTtcbiAqIFx0XHRuZXdEYXRhLnB1c2gocm93KTtcbiAqIFx0fSk7XG4gKiBcdHJldHVybiBuZXdEYXRhO1xuICogfVxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogXCJjZHMtdGFibGUsIGlibS10YWJsZVwiLFxuXHR0ZW1wbGF0ZTogYFxuXHQ8dGFibGVcblx0XHRjZHNUYWJsZVxuXHRcdFtzb3J0YWJsZV09XCJzb3J0YWJsZVwiXG5cdFx0W25vQm9yZGVyXT1cIm5vQm9yZGVyXCJcblx0XHRbbmdDbGFzc109XCJ7J2Nkcy0tZGF0YS10YWJsZS0tc3RpY2t5LWhlYWRlcic6IHN0aWNreUhlYWRlcn1cIlxuXHRcdFtzaXplXT1cInNpemVcIlxuXHRcdFtzdHJpcGVkXT1cInN0cmlwZWRcIlxuXHRcdFtza2VsZXRvbl09XCJza2VsZXRvblwiXG5cdFx0W2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZGJ5XCJcblx0XHRbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRieVwiPlxuXHRcdDx0aGVhZFxuXHRcdFx0Y2RzVGFibGVIZWFkXG5cdFx0XHRbc29ydGFibGVdPVwic29ydGFibGVcIlxuXHRcdFx0KGRlc2VsZWN0QWxsKT1cIm9uRGVzZWxlY3RBbGwoKVwiXG5cdFx0XHQoc2VsZWN0QWxsKT1cIm9uU2VsZWN0QWxsKClcIlxuXHRcdFx0KHNvcnQpPVwiZG9Tb3J0KCRldmVudClcIlxuXHRcdFx0W2NoZWNrYm94SGVhZGVyTGFiZWxdPVwiZ2V0Q2hlY2tib3hIZWFkZXJMYWJlbCgpXCJcblx0XHRcdFtmaWx0ZXJUaXRsZV09XCJnZXRGaWx0ZXJUaXRsZSgpXCJcblx0XHRcdFttb2RlbF09XCJtb2RlbFwiXG5cdFx0XHRbc2l6ZV09XCJzaXplXCJcblx0XHRcdFtzZWxlY3RBbGxDaGVja2JveF09XCJzZWxlY3RBbGxDaGVja2JveFwiXG5cdFx0XHRbc2VsZWN0QWxsQ2hlY2tib3hTb21lU2VsZWN0ZWRdPVwic2VsZWN0QWxsQ2hlY2tib3hTb21lU2VsZWN0ZWRcIlxuXHRcdFx0W3Nob3dTZWxlY3Rpb25Db2x1bW5dPVwic2hvd1NlbGVjdGlvbkNvbHVtblwiXG5cdFx0XHRbZW5hYmxlU2luZ2xlU2VsZWN0XT1cImVuYWJsZVNpbmdsZVNlbGVjdFwiXG5cdFx0XHRbc2tlbGV0b25dPVwic2tlbGV0b25cIlxuXHRcdFx0W3NvcnRBc2NlbmRpbmdMYWJlbF09XCJzb3J0QXNjZW5kaW5nTGFiZWxcIlxuXHRcdFx0W3NvcnREZXNjZW5kaW5nTGFiZWxdPVwic29ydERlc2NlbmRpbmdMYWJlbFwiXG5cdFx0XHRbc3RpY2t5SGVhZGVyXT1cInN0aWNreUhlYWRlclwiPlxuXHRcdDwvdGhlYWQ+XG5cdFx0PHRib2R5XG5cdFx0XHRjZHNUYWJsZUJvZHlcblx0XHRcdChkZXNlbGVjdFJvdyk9XCJvblNlbGVjdFJvdygkZXZlbnQpXCJcblx0XHRcdChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50KVwiXG5cdFx0XHQoc2VsZWN0Um93KT1cIm9uU2VsZWN0Um93KCRldmVudClcIlxuXHRcdFx0W2NoZWNrYm94Um93TGFiZWxdPVwiZ2V0Q2hlY2tib3hSb3dMYWJlbCgpXCJcblx0XHRcdFtlbmFibGVTaW5nbGVTZWxlY3RdPVwiZW5hYmxlU2luZ2xlU2VsZWN0XCJcblx0XHRcdChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIlxuXHRcdFx0W2V4cGFuZEJ1dHRvbkFyaWFMYWJlbF09XCJleHBhbmRCdXR0b25BcmlhTGFiZWxcIlxuXHRcdFx0W21vZGVsXT1cIm1vZGVsXCJcblx0XHRcdFtzaXplXT1cInNpemVcIlxuXHRcdFx0W25nU3R5bGVdPVwieydvdmVyZmxvdy15JzogJ3Njcm9sbCd9XCJcblx0XHRcdFtzZWxlY3Rpb25MYWJlbENvbHVtbl09XCJzZWxlY3Rpb25MYWJlbENvbHVtblwiXG5cdFx0XHRbc2hvd1NlbGVjdGlvbkNvbHVtbl09XCJzaG93U2VsZWN0aW9uQ29sdW1uXCJcblx0XHRcdFtza2VsZXRvbl09XCJza2VsZXRvblwiXG5cdFx0XHQqbmdJZj1cIiFub0RhdGE7IGVsc2Ugbm9EYXRhVGVtcGxhdGVcIj5cblx0XHQ8L3Rib2R5PlxuXHRcdDxuZy10ZW1wbGF0ZSAjbm9EYXRhVGVtcGxhdGU+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvbmctdGVtcGxhdGU+XG5cdFx0PHRmb290PlxuXHRcdFx0PG5nLXRlbXBsYXRlXG5cdFx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclRlbXBsYXRlXCI+XG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0PHRyICpuZ0lmPVwidGhpcy5tb2RlbC5pc0xvYWRpbmdcIj5cblx0XHRcdFx0PHRkIGNsYXNzPVwidGFibGVfbG9hZGluZy1pbmRpY2F0b3JcIj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS1sb2FkaW5nIGNkcy0tbG9hZGluZy0tc21hbGxcIj5cblx0XHRcdFx0XHRcdDxzdmcgY2xhc3M9XCJjZHMtLWxvYWRpbmdfX3N2Z1wiIHZpZXdCb3g9XCItNzUgLTc1IDE1MCAxNTBcIj5cblx0XHRcdFx0XHRcdFx0PGNpcmNsZSBjbGFzcz1cImNkcy0tbG9hZGluZ19fc3Ryb2tlXCIgY3g9XCIwXCIgY3k9XCIwXCIgcj1cIjM3LjVcIiAvPlxuXHRcdFx0XHRcdFx0PC9zdmc+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvdGQ+XG5cdFx0XHQ8L3RyPlxuXHRcdFx0PHRyICpuZ0lmPVwidGhpcy5tb2RlbC5pc0VuZFwiPlxuXHRcdFx0XHQ8dGQgY2xhc3M9XCJ0YWJsZV9lbmQtaW5kaWNhdG9yXCI+XG5cdFx0XHRcdFx0PGg1Pnt7Z2V0RW5kT2ZEYXRhVGV4dCgpIHwgYXN5bmN9fTwvaDU+XG5cdFx0XHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwic2Nyb2xsVG9Ub3AoJGV2ZW50KVwiIGNsYXNzPVwiYnRuLS1zZWNvbmRhcnktc21cIj5cblx0XHRcdFx0XHRcdHt7Z2V0U2Nyb2xsVG9wVGV4dCgpIHwgYXN5bmN9fVxuXHRcdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHQ8L3RkPlxuXHRcdFx0PC90cj5cblx0XHQ8L3Rmb290PlxuXHQ8L3RhYmxlPlxuXHRgLFxuXHRzdHlsZXM6IFtgXG5cdFx0Omhvc3Qge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0fVxuXHRgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgc2tlbGV0b24gbW9kZWwgd2l0aCBhIHJvdyBhbmQgY29sdW1uIGNvdW50IHNwZWNpZmllZCBieSB0aGUgdXNlclxuXHQgKlxuXHQgKiBFeGFtcGxlOlxuXHQgKlxuXHQgKiBgYGB0eXBlc2NyaXB0XG5cdCAqIHRoaXMubW9kZWwgPSBUYWJsZS5za2VsZXRvbk1vZGVsKDUsIDUpO1xuXHQgKiBgYGBcblx0ICovXG5cdHN0YXRpYyBza2VsZXRvbk1vZGVsKHJvd0NvdW50OiBudW1iZXIsIGNvbHVtbkNvdW50OiBudW1iZXIpIHtcblx0XHRjb25zdCBtb2RlbCA9IG5ldyBUYWJsZU1vZGVsKCk7XG5cdFx0bGV0IGhlYWRlciA9IG5ldyBBcnJheTxUYWJsZUhlYWRlckl0ZW0+KCk7XG5cdFx0bGV0IGRhdGEgPSBuZXcgQXJyYXk8QXJyYXk8VGFibGVJdGVtPj4oKTtcblx0XHRsZXQgcm93ID0gbmV3IEFycmF5PFRhYmxlSXRlbT4oKTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uQ291bnQ7IGkrKykge1xuXHRcdFx0aGVhZGVyLnB1c2gobmV3IFRhYmxlSGVhZGVySXRlbSgpKTtcblx0XHRcdHJvdy5wdXNoKG5ldyBUYWJsZUl0ZW0oKSk7XG5cdFx0fVxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm93Q291bnQgLSAxOyBpKyspIHtcblx0XHRcdGRhdGEucHVzaChyb3cpO1xuXHRcdH1cblxuXHRcdG1vZGVsLmhlYWRlciA9IGhlYWRlcjtcblx0XHRtb2RlbC5kYXRhID0gZGF0YTtcblx0XHRyZXR1cm4gbW9kZWw7XG5cdH1cblxuXHRzdGF0aWMgc2V0VGFiSW5kZXgoZWxlbWVudDogSFRNTEVsZW1lbnQsIGluZGV4OiAtMSB8IDApIHtcblx0XHRjb25zdCBmb2N1c0VsZW1lbnRMaXN0ID0gZ2V0Rm9jdXNFbGVtZW50TGlzdChlbGVtZW50LCB0YWJiYWJsZVNlbGVjdG9ySWdub3JlVGFiSW5kZXgpO1xuXHRcdGlmIChlbGVtZW50LmZpcnN0RWxlbWVudENoaWxkICYmIGVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiY2RzLS10YWJsZS1zb3J0XCIpICYmIGZvY3VzRWxlbWVudExpc3QubGVuZ3RoID4gMSkge1xuXHRcdFx0Zm9jdXNFbGVtZW50TGlzdFsxXS50YWJJbmRleCA9IGluZGV4O1xuXHRcdH0gZWxzZSBpZiAoZm9jdXNFbGVtZW50TGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRmb2N1c0VsZW1lbnRMaXN0WzBdLnRhYkluZGV4ID0gaW5kZXg7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVsZW1lbnQudGFiSW5kZXggPSBpbmRleDtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgZm9jdXMoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcblx0XHRjb25zdCBmb2N1c0VsZW1lbnRMaXN0ID0gZ2V0Rm9jdXNFbGVtZW50TGlzdChlbGVtZW50LCB0YWJiYWJsZVNlbGVjdG9ySWdub3JlVGFiSW5kZXgpO1xuXHRcdGlmIChlbGVtZW50LmZpcnN0RWxlbWVudENoaWxkICYmIGVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiY2RzLS10YWJsZS1zb3J0XCIpICYmIGZvY3VzRWxlbWVudExpc3QubGVuZ3RoID4gMSkge1xuXHRcdFx0Zm9jdXNFbGVtZW50TGlzdFsxXS5mb2N1cygpO1xuXHRcdH0gZWxzZSBpZiAoZm9jdXNFbGVtZW50TGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRmb2N1c0VsZW1lbnRMaXN0WzBdLmZvY3VzKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVsZW1lbnQuZm9jdXMoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSWQgb2YgdGhlIHRhYmxlIGhlYWRlciB0aXRsZSBlbGVtZW50XG5cdCAqL1xuXHRASW5wdXQoKSBhcmlhTGFiZWxsZWRieTogc3RyaW5nO1xuXHQvKipcblx0ICogSWQgb2YgdGhlIHRhYmxlIGhlYWRlciBkZXNjcmlwdGlvbiBlbGVtZW50XG5cdCAqL1xuXHRASW5wdXQoKSBhcmlhRGVzY3JpYmVkYnk6IHN0cmluZztcblxuXHQvKipcblx0ICogYFRhYmxlTW9kZWxgIHdpdGggZGF0YSB0aGUgdGFibGUgaXMgdG8gZGlzcGxheS5cblx0ICovXG5cdEBJbnB1dCgpXG5cdHNldCBtb2RlbChtOiBUYWJsZU1vZGVsKSB7XG5cdFx0aWYgKHRoaXMuX21vZGVsKSB7XG5cdFx0XHR0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcblx0XHRcdC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IHN1YnNjcmlwdGlvbiBpbnN0YW5jZSBoZXJlIGJlY2F1c2UgdW5zdWJzY3JpYmluZyBwcmV2ZW50cyBhbnkgbmV3IHN1YnNjcmlwdGlvbnNcblx0XHRcdC8vIGZyb20gYmVpbmcgYWRkZWQgZm9yIHNvbWUgcmVhc29uLiBXaGVuIGEgbmV3IG1vZGVsIGlzIHNldCwgbm9uZSBvZiB0aGUgc3Vic2NyaXB0aW9ucyB3b3VsZCBleGlzdC5cblx0XHRcdHRoaXMuc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblx0XHR9XG5cblx0XHR0aGlzLl9tb2RlbCA9IG07XG5cblx0XHRjb25zdCByb3dzQ2hhbmdlID0gdGhpcy5fbW9kZWwucm93c1NlbGVjdGVkQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVNlbGVjdEFsbENoZWNrYm94KCkpO1xuXHRcdGNvbnN0IGRhdGFDaGFuZ2UgPSB0aGlzLl9tb2RlbC5kYXRhQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5pc0RhdGFHcmlkKSB7XG5cdFx0XHRcdHRoaXMucmVzZXRUYWJJbmRleCgpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy51cGRhdGVTZWxlY3RBbGxDaGVja2JveCgpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLmFkZChyb3dzQ2hhbmdlKTtcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGRhdGFDaGFuZ2UpO1xuXG5cdFx0aWYgKHRoaXMuaXNEYXRhR3JpZCkge1xuXHRcdFx0Y29uc3QgZXhwYW5kZWRDaGFuZ2UgPSB0aGlzLl9tb2RlbC5yb3dzRXhwYW5kZWRDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdFx0Ly8gQWxsb3dzIHRoZSBleHBhbmRlZCByb3cgdG8gaGF2ZSBhIGZvY3VzIHN0YXRlIHdoZW4gaXQgZXhpc3RzIGluIHRoZSBET01cblx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgZXhwYW5kZWRSb3dzID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5jZHMtLWV4cGFuZGFibGUtcm93Om5vdCguY2RzLS1wYXJlbnQtcm93KVwiKTtcblx0XHRcdFx0XHRBcnJheS5mcm9tPGFueT4oZXhwYW5kZWRSb3dzKS5mb3JFYWNoKHJvdyA9PiB7XG5cdFx0XHRcdFx0XHRpZiAocm93LmZpcnN0RWxlbWVudENoaWxkLnRhYkluZGV4ID09PSB1bmRlZmluZWQgfHwgcm93LmZpcnN0RWxlbWVudENoaWxkLnRhYkluZGV4ICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0XHRyb3cuZmlyc3RFbGVtZW50Q2hpbGQudGFiSW5kZXggPSAtMTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoZXhwYW5kZWRDaGFuZ2UpO1xuXHRcdH1cblx0fVxuXG5cdGdldCBtb2RlbCgpOiBUYWJsZU1vZGVsIHtcblx0XHRyZXR1cm4gdGhpcy5fbW9kZWw7XG5cdH1cblxuXHQvKipcblx0ICogU2l6ZSBvZiB0aGUgdGFibGUgcm93cy5cblx0ICovXG5cdEBJbnB1dCgpIHNpemU6IFRhYmxlUm93U2l6ZSA9IFwibWRcIjtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgbG9hZGluZyB0YWJsZS5cblx0ICovXG5cdEBJbnB1dCgpIHNrZWxldG9uID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhIGRhdGEgZ3JpZCB3aXRoIGtleWJvYXJkIGludGVyYWN0aW9ucy5cblx0ICovXG5cdEBJbnB1dCgpIHNldCBpc0RhdGFHcmlkKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5faXNEYXRhR3JpZCA9IHZhbHVlO1xuXHRcdGlmICh0aGlzLmlzVmlld1JlYWR5KSB7XG5cdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0dGhpcy5lbmFibGVEYXRhR3JpZEludGVyYWN0aW9ucygpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5kaXNhYmxlRGF0YUdyaWRJbnRlcmFjdGlvbnMoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0dGluZyBzb3J0YWJsZSB0byBmYWxzZSB3aWxsIGRpc2FibGUgYWxsIGhlYWRlcnMgaW5jbHVkaW5nIGhlYWRlcnMgd2hpY2ggYXJlIHNvcnRhYmxlLiBJcyBpc1xuXHQgKiBwb3NzaWJsZSB0byBzZXQgdGhlIHNvcnRhYmxlIHN0YXRlIG9uIHRoZSBoZWFkZXIgaXRlbSB0byBkaXNhYmxlL2VuYWJsZSBzb3J0aW5nIGZvciBvbmx5IHNvbWUgaGVhZGVycy5cblx0ICovXG5cdEBJbnB1dCgpIHNvcnRhYmxlID0gdHJ1ZTtcblxuXHRASW5wdXQoKSBub0JvcmRlciA9IHRydWU7XG5cblx0Z2V0IGlzRGF0YUdyaWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX2lzRGF0YUdyaWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ29udHJvbHMgd2hldGhlciB0byBzaG93IHRoZSBzZWxlY3Rpb24gY2hlY2tib3hlcyBjb2x1bW4gb3Igbm90LlxuXHQgKi9cblx0QElucHV0KCkgc2hvd1NlbGVjdGlvbkNvbHVtbiA9IHRydWU7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoZXRoZXIgdG8gZW5hYmxlIG11bHRpcGxlIG9yIHNpbmdsZSByb3cgc2VsZWN0aW9uLlxuXHQgKi9cblx0QElucHV0KCkgZW5hYmxlU2luZ2xlU2VsZWN0ID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIERpc3RhbmNlIChpbiBweCkgZnJvbSB0aGUgYm90dG9tIHRoYXQgdmlldyBoYXMgdG8gcmVhY2ggYmVmb3JlXG5cdCAqIGBzY3JvbGxMb2FkYCBldmVudCBpcyBlbWl0dGVkLlxuXHQgKi9cblx0QElucHV0KCkgc2Nyb2xsTG9hZERpc3RhbmNlID0gMDtcblxuXHQvKipcblx0ICogQHRvZG8gLSBFbmFibGUgY29sdW1uIHJlc2l6ZSB3aGVuIENhcmJvbiBvZmZpY2lhbGx5IHN1cHBvcnRzIGZlYXR1cmVcblx0ICogU2V0IHRvIGB0cnVlYCB0byBlbmFibGUgdXNlcnMgdG8gcmVzaXplIGNvbHVtbnMuXG5cdCAqXG5cdCAqIFdvcmtzIGZvciBjb2x1bW5zIHdpdGggd2lkdGggc2V0IGluIHBpeGVscy5cblx0ICpcblx0ICovXG5cdC8vIEBJbnB1dCgpIGNvbHVtbnNSZXNpemFibGUgPSBmYWxzZTtcblxuXHQvKipcblx0ICogQHRvZG8gLSBFbmFibGUgY29sdW1ucyBkcmFnICYgZHJvcCB3aGVuIENhcmJvbiBvZmZpY2lhbGx5IHN1cHBvcnRzIGZlYXR1cmVcblx0ICogU2V0IHRvIGB0cnVlYCB0byBlbmFibGUgdXNlcnMgdG8gZHJhZyBhbmQgZHJvcCBjb2x1bW5zLlxuXHQgKlxuXHQgKiBDaGFuZ2luZyB0aGUgY29sdW1uIG9yZGVyIGluIHRhYmxlIGNoYW5nZXMgdGFibGUgbW9kZWwuIEJlIGF3YXJlIG9mIGl0IHdoZW4geW91IGFkZCBhZGRpdGlvbmFsIGRhdGFcblx0ICogdG8gdGhlIG1vZGVsLlxuXHQgKlxuXHQgKi9cblx0Ly8gQElucHV0KCkgY29sdW1uc0RyYWdnYWJsZSA9IGZhbHNlO1xuXG5cdEBJbnB1dCgpXG5cdHNldCBleHBhbmRCdXR0b25BcmlhTGFiZWwodmFsdWU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuXHRcdHRoaXMuX2V4cGFuZEJ1dHRvbkFyaWFMYWJlbC5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblx0Z2V0IGV4cGFuZEJ1dHRvbkFyaWFMYWJlbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fZXhwYW5kQnV0dG9uQXJpYUxhYmVsLnZhbHVlO1xuXHR9XG5cdEBJbnB1dCgpXG5cdHNldCBzb3J0RGVzY2VuZGluZ0xhYmVsKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9zb3J0RGVzY2VuZGluZ0xhYmVsLm92ZXJyaWRlKHZhbHVlKTtcblx0fVxuXHRnZXQgc29ydERlc2NlbmRpbmdMYWJlbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fc29ydERlc2NlbmRpbmdMYWJlbC52YWx1ZTtcblx0fVxuXHRASW5wdXQoKVxuXHRzZXQgc29ydEFzY2VuZGluZ0xhYmVsKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9zb3J0QXNjZW5kaW5nTGFiZWwub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cdGdldCBzb3J0QXNjZW5kaW5nTGFiZWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3NvcnRBc2NlbmRpbmdMYWJlbC52YWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeHBlY3RzIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIHNvbWUgb3IgYWxsIG9mOlxuXHQgKiBgYGBcblx0ICoge1xuXHQgKlx0XHRcIkZJTFRFUlwiOiBcIkZpbHRlclwiLFxuXHQgKlx0XHRcIkVORF9PRl9EQVRBXCI6IFwiWW91J3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiB5b3VyIGNvbnRlbnRcIixcblx0ICpcdFx0XCJTQ1JPTExfVE9QXCI6IFwiU2Nyb2xsIHRvIHRvcFwiLFxuXHQgKlx0XHRcIkNIRUNLQk9YX0hFQURFUlwiOiBcIlNlbGVjdCBhbGwgcm93c1wiLFxuXHQgKlx0XHRcIkNIRUNLQk9YX1JPV1wiOiBcIlNlbGVjdCByb3dcIlxuXHQgKiB9XG5cdCAqIGBgYFxuXHQgKi9cblx0QElucHV0KClcblx0c2V0IHRyYW5zbGF0aW9ucyh2YWx1ZSkge1xuXHRcdGNvbnN0IHZhbHVlV2l0aERlZmF1bHRzID0gbWVyZ2UodGhpcy5pMThuLmdldE11bHRpcGxlKFwiVEFCTEVcIiksIHZhbHVlKTtcblx0XHR0aGlzLl9maWx0ZXJUaXRsZS5vdmVycmlkZSh2YWx1ZVdpdGhEZWZhdWx0cy5GSUxURVIpO1xuXHRcdHRoaXMuX2VuZE9mRGF0YVRleHQub3ZlcnJpZGUodmFsdWVXaXRoRGVmYXVsdHMuRU5EX09GX0RBVEEpO1xuXHRcdHRoaXMuX3Njcm9sbFRvcFRleHQub3ZlcnJpZGUodmFsdWVXaXRoRGVmYXVsdHMuU0NST0xMX1RPUCk7XG5cdFx0dGhpcy5fY2hlY2tib3hIZWFkZXJMYWJlbC5vdmVycmlkZSh2YWx1ZVdpdGhEZWZhdWx0cy5DSEVDS0JPWF9IRUFERVIpO1xuXHRcdHRoaXMuX2NoZWNrYm94Um93TGFiZWwub3ZlcnJpZGUodmFsdWVXaXRoRGVmYXVsdHMuQ0hFQ0tCT1hfUk9XKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdG8gYGZhbHNlYCB0byByZW1vdmUgdGFibGUgcm93cyAoemVicmEpIHN0cmlwZXMuXG5cdCAqL1xuXHRASW5wdXQoKSBzdHJpcGVkID0gdHJ1ZTtcblxuXHQvKipcblx0ICogQWxsb3dzIHRhYmxlIGNvbnRlbnQgdG8gc2Nyb2xsIGhvcml6b250YWxseVxuXHQgKi9cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1kYXRhLXRhYmxlLWNvbnRlbnRcIikgdGFibGVDb250ZW50ID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCB0byBzdGljayB0aGUgaGVhZGVyIHRvIHRoZSB0b3Agb2YgdGhlIHRhYmxlXG5cdCAqL1xuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWRhdGEtdGFibGVfaW5uZXItY29udGFpbmVyXCIpIEBJbnB1dCgpIHN0aWNreUhlYWRlciA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBTZXQgZm9vdGVyIHRlbXBsYXRlIHRvIGN1c3RvbWl6ZSB3aGF0IGlzIGRpc3BsYXllZCBpbiB0aGUgdGZvb3Qgc2VjdGlvbiBvZiB0aGUgdGFibGVcblx0ICovXG5cdEBJbnB1dCgpIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdC8qKlxuXHQgKiBVc2VkIHRvIHBvcHVsYXRlIHRoZSByb3cgc2VsZWN0aW9uIGNoZWNrYm94IGxhYmVsIHdpdGggYSB1c2VmdWwgdmFsdWUgaWYgc2V0LlxuXHQgKlxuXHQgKiBFeGFtcGxlOlxuXHQgKiBgYGBcblx0ICogPGNkcy10YWJsZSBbc2VsZWN0aW9uTGFiZWxDb2x1bW5dPVwiMFwiPjwvY2RzLXRhYmxlPlxuXHQgKiA8IS0tIHJlc3VsdHMgaW4gYXJpYS1sYWJlbD1cIlNlbGVjdCBmaXJzdCBjb2x1bW4gdmFsdWVcIlxuXHQgKiAod2hlcmUgXCJmaXJzdCBjb2x1bW4gdmFsdWVcIiBpcyB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGNvbHVtbiBpbiB0aGUgcm93IC0tPlxuXHQgKiBgYGBcblx0ICovXG5cdEBJbnB1dCgpIHNlbGVjdGlvbkxhYmVsQ29sdW1uOiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIEVtaXRzIGFuIGluZGV4IG9mIHRoZSBjb2x1bW4gdGhhdCB3YW50cyB0byBiZSBzb3J0ZWQuXG5cdCAqXG5cdCAqIElmIG5vIG9ic2VydmVycyBhcmUgcHJvdmlkZWQgKGRlZmF1bHQpLCB0YWJsZSB3aWxsIGF0dGVtcHQgdG8gZG8gYSBzaW1wbGUgc29ydCBvZiB0aGUgZGF0YSBsb2FkZWRcblx0ICogaW50byB0aGUgbW9kZWwuXG5cdCAqXG5cdCAqIElmIGFuIG9ic2VydmVyIGlzIHByb3ZpZGVkLCB0YWJsZSB3aWxsIG5vdCBhdHRlbXB0IGFueSBzb3J0aW5nIG9mIGl0cyBvd24gYW5kIGl0IGlzIHVwIHRvIHRoZSBvYnNlcnZlclxuXHQgKiB0byBzb3J0IHRoZSB0YWJsZS4gVGhpcyBpcyB3aGF0IHlvdSB0eXBpY2FsbHkgd2FudCBpZiB5b3UncmUgdXNpbmcgYSBiYWNrZW5kIHF1ZXJ5IHRvIGdldCB0aGUgc29ydGVkXG5cdCAqIGRhdGEgb3Igd2FudCB0byBzb3J0IGRhdGEgYWNyb3NzIG11bHRpcGxlIHBhZ2VzLlxuXHQgKlxuXHQgKiBVc2FnZTpcblx0ICpcblx0ICogYGBgdHlwZXNjcmlwdFxuXHQgKiBAQ29tcG9uZW50KHtcblx0ICogXHRzZWxlY3RvcjogXCJhcHAtdGFibGVcIixcblx0ICogXHR0ZW1wbGF0ZTogYFxuXHQgKiBcdFx0PGNkcy10YWJsZVxuXHQgKiBcdFx0XHRbbW9kZWxdPVwibW9kZWxcIlxuXHQgKiBcdFx0XHQoc29ydCk9XCJzaW1wbGVTb3J0KCRldmVudClcIj5cblx0ICogXHRcdFx0Tm8gZGF0YS5cblx0ICogXHRcdDwvY2RzLXRhYmxlPlxuXHQgKiBcdGBcblx0ICogfSlcblx0ICogZXhwb3J0IGNsYXNzIFRhYmxlQXBwIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXHQgKiBcdEBJbnB1dCgpIG1vZGVsID0gbmV3IFRhYmxlTW9kZWwoKTtcblx0ICpcblx0ICogXHRuZ09uSW5pdCgpIHtcblx0ICogXHRcdHRoaXMubW9kZWwuaGVhZGVyID0gW1xuXHQgKiBcdFx0XHRuZXcgVGFibGVIZWFkZXJJdGVtKHsgZGF0YTogXCJOYW1lXCIgfSksXG5cdCAqIFx0XHRcdG5ldyBUYWJsZUhlYWRlckl0ZW0oeyBkYXRhOiBcImh3ZXJcIiB9KVxuXHQgKiBcdFx0XTtcblx0ICpcblx0ICogXHRcdHRoaXMubW9kZWwuZGF0YSA9IFtcblx0ICogXHRcdFx0W25ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcIk5hbWUgMVwiIH0pLCBuZXcgVGFibGVJdGVtKHsgZGF0YTogXCJxd2VyXCIgfSldLFxuXHQgKiBcdFx0XHRbbmV3IFRhYmxlSXRlbSh7IGRhdGE6IFwiTmFtZSAzXCIgfSksIG5ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcInp3ZXJcIiB9KV0sXG5cdCAqIFx0XHRcdFtuZXcgVGFibGVJdGVtKHsgZGF0YTogXCJOYW1lIDJcIiB9KSwgbmV3IFRhYmxlSXRlbSh7IGRhdGE6IFwic3dlclwiIH0pXSxcblx0ICogXHRcdFx0W25ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcIk5hbWUgNFwiIH0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiBcInR3ZXJcIn0pXSxcblx0ICogXHRcdFx0W25ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcIk5hbWUgNVwiIH0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiBcInR3ZXJcIn0pXSxcblx0ICogXHRcdFx0W25ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcIk5hbWUgNlwiIH0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiBcInR3ZXJcIn0pXVxuXHQgKiBcdFx0XTtcblx0ICogXHR9XG5cdCAqXG5cdCAqIFx0c2ltcGxlU29ydChpbmRleDogbnVtYmVyKSB7XG5cdCAqIFx0XHQvLyB0aGlzIGZ1bmN0aW9uIGRvZXMgYSBzaW1wbGUgc29ydCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB0YWJsZSBhbmQgaWYgdGhhdCdzXG5cdCAqIFx0XHQvLyBhbGwgeW91IHdhbnQsIHlvdSBkb24ndCBuZWVkIHRvIGRvIHRoaXMuXG5cdCAqXG5cdCAqIFx0XHQvLyBoZXJlIHlvdSBjYW4gcXVlcnkgeW91ciBiYWNrZW5kIGFuZCB1cGRhdGUgdGhlIG1vZGVsLmRhdGEgYmFzZWQgb24gdGhlIHJlc3VsdFxuXHQgKiBcdFx0aWYgKHRoaXMubW9kZWwuaGVhZGVyW2luZGV4XS5zb3J0ZWQpIHtcblx0ICogXHRcdFx0Ly8gaWYgYWxyZWFkeSBzb3J0ZWQgZmxpcCBzb3J0aW5nIGRpcmVjdGlvblxuXHQgKiBcdFx0XHR0aGlzLm1vZGVsLmhlYWRlcltpbmRleF0uYXNjZW5kaW5nID0gdGhpcy5tb2RlbC5oZWFkZXJbaW5kZXhdLmRlc2NlbmRpbmc7XG5cdCAqIFx0XHR9XG5cdCAqIFx0XHR0aGlzLm1vZGVsLnNvcnQoaW5kZXgpO1xuXHQgKiBcdH1cblx0ICogfVxuXHQgKiBgYGBcblx0ICovXG5cdEBPdXRwdXQoKSBzb3J0ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cblx0LyoqXG5cdCAqIEVtaXRzIGlmIGFsbCByb3dzIGFyZSBzZWxlY3RlZC5cblx0ICpcblx0ICogQHBhcmFtIG1vZGVsXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2VsZWN0QWxsID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XG5cblx0LyoqXG5cdCAqIEVtaXRzIGlmIGFsbCByb3dzIGFyZSBkZXNlbGVjdGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0gbW9kZWxcblx0ICovXG5cdEBPdXRwdXQoKSBkZXNlbGVjdEFsbCA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0PigpO1xuXG5cdC8qKlxuXHQgKiBFbWl0cyBpZiBhIHNpbmdsZSByb3cgaXMgc2VsZWN0ZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSAoe21vZGVsOiB0aGlzLm1vZGVsLCBzZWxlY3RlZFJvd0luZGV4OiBpbmRleH0pXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2VsZWN0Um93ID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XG5cblx0LyoqXG5cdCAqIEVtaXRzIGlmIGEgc2luZ2xlIHJvdyBpcyBkZXNlbGVjdGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0gKHttb2RlbDogdGhpcy5tb2RlbCwgZGVzZWxlY3RlZFJvd0luZGV4OiBpbmRleH0pXG5cdCAqL1xuXHRAT3V0cHV0KCkgZGVzZWxlY3RSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdD4oKTtcblxuXHQvKipcblx0ICogRW1pdHMgaWYgYSByb3cgaXRlbSBleGNsdWRpbmcgZXhwYW5kQnV0dG9ucywgY2hlY2tib3hlcywgb3IgcmFkaW9zIGlzIGNsaWNrZWQuXG5cdCAqL1xuXHRAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuXHQvKipcblx0ICogRW1pdHMgd2hlbiB0YWJsZSByZXF1aXJlcyBtb3JlIGRhdGEgdG8gYmUgbG9hZGVkLlxuXHQgKi9cblx0QE91dHB1dCgpIHNjcm9sbExvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlTW9kZWw+KCk7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIGFsbCBjaGVja2JveGVzIGFyZSB2aWV3ZWQgYXMgc2VsZWN0ZWQuXG5cdCAqL1xuXHRzZWxlY3RBbGxDaGVja2JveCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB0aGUgaW5kZXRlcm1pbmF0ZSBzdGF0ZSBvZiB0aGUgaGVhZGVyIGNoZWNrYm94LlxuXHQgKi9cblx0c2VsZWN0QWxsQ2hlY2tib3hTb21lU2VsZWN0ZWQgPSBmYWxzZTtcblxuXHRnZXQgbm9EYXRhKCkge1xuXHRcdHJldHVybiAhdGhpcy5tb2RlbC5kYXRhIHx8XG5cdFx0XHR0aGlzLm1vZGVsLmRhdGEubGVuZ3RoID09PSAwIHx8XG5cdFx0XHR0aGlzLm1vZGVsLmRhdGEubGVuZ3RoID09PSAxICYmIHRoaXMubW9kZWwuZGF0YVswXS5sZW5ndGggPT09IDA7XG5cdH1cblxuXHRwdWJsaWMgaXNDb2x1bW5EcmFnZ2luZyA9IGZhbHNlO1xuXHRwdWJsaWMgY29sdW1uRHJhZ2dlZEhvdmVySW5kZXggPSAtMTtcblx0cHVibGljIGNvbHVtbkRyYWdnZWRQb3NpdGlvbiA9IFwiXCI7XG5cblx0cHJvdGVjdGVkIF9tb2RlbDogVGFibGVNb2RlbDtcblx0cHJvdGVjdGVkIF9pc0RhdGFHcmlkID0gZmFsc2U7XG5cdC8vIGZsYWcgdG8gcHJldmVudCBnZXR0ZXJzL3NldHRlcnMgZnJvbSBxdWVyeWluZyB0aGUgdmlldyBiZWZvcmUgaXQncyBmdWxseSBpbnN0YW50aWF0ZWRcblx0cHJvdGVjdGVkIGlzVmlld1JlYWR5ID0gZmFsc2U7XG5cblx0cHJvdGVjdGVkIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cdHByb3RlY3RlZCBwb3NpdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG5cdHByb3RlY3RlZCBpbnRlcmFjdGlvbk1vZGVsOiBEYXRhR3JpZEludGVyYWN0aW9uTW9kZWw7XG5cdHByb3RlY3RlZCBpbnRlcmFjdGlvblBvc2l0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cblx0cHJvdGVjdGVkIF9leHBhbmRCdXR0b25BcmlhTGFiZWwgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJUQUJMRS5FWFBBTkRfQlVUVE9OXCIpO1xuXHRwcm90ZWN0ZWQgX3NvcnREZXNjZW5kaW5nTGFiZWwgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJUQUJMRS5TT1JUX0RFU0NFTkRJTkdcIik7XG5cdHByb3RlY3RlZCBfc29ydEFzY2VuZGluZ0xhYmVsID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiVEFCTEUuU09SVF9BU0NFTkRJTkdcIik7XG5cdHByb3RlY3RlZCBfY2hlY2tib3hIZWFkZXJMYWJlbCA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIlRBQkxFLkNIRUNLQk9YX0hFQURFUlwiKTtcblx0cHJvdGVjdGVkIF9jaGVja2JveFJvd0xhYmVsID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiVEFCTEUuQ0hFQ0tCT1hfUk9XXCIpO1xuXHRwcm90ZWN0ZWQgX2VuZE9mRGF0YVRleHQgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJUQUJMRS5FTkRfT0ZfREFUQVwiKTtcblx0cHJvdGVjdGVkIF9zY3JvbGxUb3BUZXh0ID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiVEFCTEUuU0NST0xMX1RPUFwiKTtcblx0cHJvdGVjdGVkIF9maWx0ZXJUaXRsZSA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIlRBQkxFLkZJTFRFUlwiKTtcblxuXHRwcm90ZWN0ZWQgY29sdW1uUmVzaXplV2lkdGg6IG51bWJlcjtcblx0cHJvdGVjdGVkIGNvbHVtblJlc2l6ZU1vdXNlWDogbnVtYmVyO1xuXHRwcm90ZWN0ZWQgbW91c2VNb3ZlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cdHByb3RlY3RlZCBtb3VzZVVwU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVGFibGUuXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcblx0XHRwcm90ZWN0ZWQgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxuXHRcdHByb3RlY3RlZCBpMThuOiBJMThuXG5cdCkgeyB9XG5cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdHRoaXMuaXNWaWV3UmVhZHkgPSB0cnVlO1xuXHRcdGlmICh0aGlzLmlzRGF0YUdyaWQpIHtcblx0XHRcdHRoaXMuZW5hYmxlRGF0YUdyaWRJbnRlcmFjdGlvbnMoKTtcblx0XHR9XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcblx0XHRpZiAodGhpcy5wb3NpdGlvblN1YnNjcmlwdGlvbikge1xuXHRcdFx0dGhpcy5wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0fVxuXG5cdGVuYWJsZURhdGFHcmlkSW50ZXJhY3Rpb25zKCkge1xuXHRcdC8vIGlmIHdlIGhhdmUgYW4gYGludGVyYWN0aW9Nb2RlbGAgd2UndmUgYWxyZWFkeSBlbmFibGVkIGRhdGFncmlkXG5cdFx0aWYgKHRoaXMuaW50ZXJhY3Rpb25Nb2RlbCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJ0YWJsZVwiKSBhcyBIVE1MVGFibGVFbGVtZW50O1xuXHRcdGNvbnN0IHRhYmxlQWRhcHRlciA9IG5ldyBUYWJsZURvbUFkYXB0ZXIodGFibGUpO1xuXHRcdGNvbnN0IGtleWRvd25FdmVudFN0cmVhbSA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0YWJsZSwgXCJrZXlkb3duXCIpO1xuXHRcdGNvbnN0IGNsaWNrRXZlbnRTdHJlYW0gPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGFibGUsIFwiY2xpY2tcIik7XG5cdFx0dGhpcy5pbnRlcmFjdGlvbk1vZGVsID0gbmV3IERhdGFHcmlkSW50ZXJhY3Rpb25Nb2RlbChrZXlkb3duRXZlbnRTdHJlYW0sIGNsaWNrRXZlbnRTdHJlYW0sIHRhYmxlQWRhcHRlcik7XG5cdFx0dGhpcy5wb3NpdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMuaW50ZXJhY3Rpb25Nb2RlbC5wb3NpdGlvbi5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuXHRcdFx0Y29uc3QgW2N1cnJlbnRSb3csIGN1cnJlbnRDb2x1bW5dID0gZXZlbnQuY3VycmVudDtcblx0XHRcdGNvbnN0IFtwcmV2aW91c1JvdywgcHJldmlvdXNDb2x1bW5dID0gZXZlbnQucHJldmlvdXM7XG5cblx0XHRcdGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGFibGVBZGFwdGVyLmdldENlbGwoY3VycmVudFJvdywgY3VycmVudENvbHVtbik7XG5cdFx0XHRUYWJsZS5zZXRUYWJJbmRleChjdXJyZW50RWxlbWVudCwgMCk7XG5cblx0XHRcdC8vIGlmIHRoZSBtb2RlbCBoYXMganVzdCBpbml0aWFsaXplZCBkb24ndCBmb2N1cyBvciByZXNldCBhbnl0aGluZ1xuXHRcdFx0aWYgKHByZXZpb3VzUm93ID09PSAtMSB8fCBwcmV2aW91c0NvbHVtbiA9PT0gLTEpIHsgcmV0dXJuOyB9XG5cdFx0XHQvLyBNYWtlIHRoZSBwcmV2aW91cyBjZWxsIHVuZm9jdXNhYmxlIChpZiBpdCdzIG5vdCB0aGUgY3VycmVudClcblx0XHRcdGlmIChwcmV2aW91c1JvdyAhPT0gY3VycmVudFJvdyB8fCBwcmV2aW91c0NvbHVtbiAhPT0gY3VycmVudENvbHVtbikge1xuXHRcdFx0XHRjb25zdCBwcmV2aW91c0VsZW1lbnQgPSB0YWJsZUFkYXB0ZXIuZ2V0Q2VsbChwcmV2aW91c1JvdywgcHJldmlvdXNDb2x1bW4pO1xuXHRcdFx0XHRUYWJsZS5zZXRUYWJJbmRleChwcmV2aW91c0VsZW1lbnQsIC0xKTtcblx0XHRcdH1cblx0XHRcdFRhYmxlLmZvY3VzKGN1cnJlbnRFbGVtZW50KTtcblx0XHR9KTtcblx0XHQvLyBjYWxsIHRoaXMgYWZ0ZXIgYXNzaWduaW5nIGB0aGlzLmludGVyYWN0aW9uTW9kZWxgIHNpbmNlIGl0IGRlcGVuZHMgb24gaXRcblx0XHR0aGlzLnJlc2V0VGFiSW5kZXgoKTtcblx0fVxuXG5cdGRpc2FibGVEYXRhR3JpZEludGVyYWN0aW9ucygpIHtcblx0XHQvLyB1bnN1YnNjcmliZSBmaXJzdCBzbyB3ZSBkb24ndCBjYXVzZSB0aGUgZm9jdXMgdG8gZmx5IGFyb3VuZFxuXHRcdGlmICh0aGlzLnBvc2l0aW9uU3Vic2NyaXB0aW9uKSB7XG5cdFx0XHR0aGlzLnBvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHRcdC8vIHVuZG8gdGFiIGluZGV4aW5nIChhbHNvIHJlc2V0cyB0aGUgbW9kZWwpXG5cdFx0dGhpcy5yZXNldFRhYkluZGV4KDApO1xuXHRcdC8vIG51bGwgb3V0IHRoZSBtb2RlbCByZWZcblx0XHR0aGlzLmludGVyYWN0aW9uTW9kZWwgPSBudWxsO1xuXHR9XG5cblx0b25TZWxlY3RBbGwoKSB7XG5cdFx0dGhpcy5tb2RlbC5zZWxlY3RBbGwodHJ1ZSk7XG5cdFx0dGhpcy5zZWxlY3RBbGwuZW1pdCh0aGlzLm1vZGVsKTtcblx0fVxuXG5cdG9uRGVzZWxlY3RBbGwoKSB7XG5cdFx0dGhpcy5tb2RlbC5zZWxlY3RBbGwoZmFsc2UpO1xuXHRcdHRoaXMuZGVzZWxlY3RBbGwuZW1pdCh0aGlzLm1vZGVsKTtcblx0fVxuXG5cdG9uU2VsZWN0Um93KGV2ZW50KSB7XG5cdFx0Ly8gY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhlIHNlbGVjdGVkUm93SW5kZXggcHJvcGVydHlcblx0XHRpZiAoT2JqZWN0LmtleXMoZXZlbnQpLmluY2x1ZGVzKFwic2VsZWN0ZWRSb3dJbmRleFwiKSkge1xuXHRcdFx0aWYgKHRoaXMuZW5hYmxlU2luZ2xlU2VsZWN0KSB7XG5cdFx0XHRcdHRoaXMubW9kZWwuc2VsZWN0QWxsKGZhbHNlKTtcblx0XHRcdH1cblx0XHRcdHRoaXMubW9kZWwuc2VsZWN0Um93KGV2ZW50LnNlbGVjdGVkUm93SW5kZXgsIHRydWUpO1xuXHRcdFx0dGhpcy5zZWxlY3RSb3cuZW1pdChldmVudCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubW9kZWwuc2VsZWN0Um93KGV2ZW50LmRlc2VsZWN0ZWRSb3dJbmRleCwgZmFsc2UpO1xuXHRcdFx0dGhpcy5kZXNlbGVjdFJvdy5lbWl0KGV2ZW50KTtcblx0XHR9XG5cdH1cblxuXHRvblJvd0NsaWNrKGluZGV4OiBudW1iZXIpIHtcblx0XHR0aGlzLnJvd0NsaWNrLmVtaXQoaW5kZXgpO1xuXHR9XG5cblx0dXBkYXRlU2VsZWN0QWxsQ2hlY2tib3goKSB7XG5cdFx0Y29uc3Qgc2VsZWN0ZWRSb3dzQ291bnQgPSB0aGlzLm1vZGVsLnNlbGVjdGVkUm93c0NvdW50KCk7XG5cblx0XHRpZiAoc2VsZWN0ZWRSb3dzQ291bnQgPD0gMCkge1xuXHRcdFx0Ly8gcmVzZXQgc2VsZWN0IGFsbCBjaGVja2JveCBpZiBub3RoaW5nIHNlbGVjdGVkXG5cdFx0XHR0aGlzLnNlbGVjdEFsbENoZWNrYm94ID0gZmFsc2U7XG5cdFx0XHR0aGlzLnNlbGVjdEFsbENoZWNrYm94U29tZVNlbGVjdGVkID0gZmFsc2U7XG5cdFx0fSBlbHNlIGlmIChzZWxlY3RlZFJvd3NDb3VudCA8IHRoaXMubW9kZWwuZGF0YS5sZW5ndGgpIHtcblx0XHRcdHRoaXMuc2VsZWN0QWxsQ2hlY2tib3ggPSB0cnVlO1xuXHRcdFx0dGhpcy5zZWxlY3RBbGxDaGVja2JveFNvbWVTZWxlY3RlZCA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2VsZWN0QWxsQ2hlY2tib3ggPSB0cnVlO1xuXHRcdFx0dGhpcy5zZWxlY3RBbGxDaGVja2JveFNvbWVTZWxlY3RlZCA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdHJlc2V0VGFiSW5kZXgobmV3VGFiSW5kZXggPSAtMSkge1xuXHRcdC8vIGVuc3VyZSB0aGUgdmlldyBpcyByZWFkeSBmb3IgdGhlIHJlc2V0IGJlZm9yZSB3ZSBwcmVmb3JtIHRoZSBhY3R1YWwgcmVzZXRcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdC8vIHJlc2V0IGFsbCB0aGUgdGFiSW5kZXhlcyB3ZSBjYW4gZmluZFxuXHRcdFx0Y29uc3QgZm9jdXNFbGVtZW50TGlzdCA9IGdldEZvY3VzRWxlbWVudExpc3QodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRhYmJhYmxlU2VsZWN0b3JJZ25vcmVUYWJJbmRleCk7XG5cdFx0XHRpZiAoZm9jdXNFbGVtZW50TGlzdCkge1xuXHRcdFx0XHRmb2N1c0VsZW1lbnRMaXN0LmZvckVhY2godGFiYmFibGUgPT4ge1xuXHRcdFx0XHRcdHRhYmJhYmxlLnRhYkluZGV4ID0gbmV3VGFiSW5kZXg7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Ly8gcmVzZXQgaW50ZXJhY3Rpb24gbW9kZWwgcG9zaXRpb25zIGFuZCB0YWJJbmRleGVzXG5cdFx0XHRpZiAodGhpcy5pbnRlcmFjdGlvbk1vZGVsKSB7XG5cdFx0XHRcdHRoaXMuaW50ZXJhY3Rpb25Nb2RlbC5yZXNldFRhYkluZGV4ZXMobmV3VGFiSW5kZXgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0Y29sdW1uUmVzaXplU3RhcnQoZXZlbnQsIGNvbHVtbikge1xuXHRcdHRoaXMuY29sdW1uUmVzaXplV2lkdGggPSBwYXJzZUludChjb2x1bW4uc3R5bGUud2lkdGgsIDEwKTtcblx0XHR0aGlzLmNvbHVtblJlc2l6ZU1vdXNlWCA9IGV2ZW50LmNsaWVudFg7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuXHRcdHRoaXMubW91c2VNb3ZlU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KGRvY3VtZW50LmJvZHksIFwibW91c2Vtb3ZlXCIpLnN1YnNjcmliZShldmVudCA9PiB7XG5cdFx0XHR0aGlzLmNvbHVtblJlc2l6ZVByb2dyZXNzKGV2ZW50LCBjb2x1bW4pO1xuXHRcdH0pO1xuXHRcdHRoaXMubW91c2VVcFN1YnNjcmlwdGlvbiA9IGZyb21FdmVudChkb2N1bWVudC5ib2R5LCBcIm1vdXNldXBcIikuc3Vic2NyaWJlKGV2ZW50ID0+IHtcblx0XHRcdHRoaXMuY29sdW1uUmVzaXplRW5kKGV2ZW50LCBjb2x1bW4pO1xuXHRcdH0pO1xuXHR9XG5cblx0Y29sdW1uUmVzaXplUHJvZ3Jlc3MoZXZlbnQsIGNvbHVtbikge1xuXHRcdGNvbnN0IG1vdmUgPSBldmVudC5jbGllbnRYIC0gdGhpcy5jb2x1bW5SZXNpemVNb3VzZVg7XG5cdFx0Y29sdW1uLnN0eWxlLndpZHRoID0gYCR7dGhpcy5jb2x1bW5SZXNpemVXaWR0aCArIG1vdmV9cHhgO1xuXHR9XG5cblx0Y29sdW1uUmVzaXplRW5kKGV2ZW50LCBjb2x1bW4pIHtcblx0XHR0aGlzLm1vdXNlTW92ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXHRcdHRoaXMubW91c2VVcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNjcm9sbHMgb24gdGhlIGA8dGJvZHk+YCBlbGVtZW50LlxuXHQgKiBFbWl0cyB0aGUgYHNjcm9sbExvYWRgIGV2ZW50LlxuXHQgKi9cblx0b25TY3JvbGwoZXZlbnQpIHtcblx0XHRjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBldmVudC50YXJnZXQuc2Nyb2xsSGVpZ2h0IC0gZXZlbnQudGFyZ2V0LmNsaWVudEhlaWdodCAtIGV2ZW50LnRhcmdldC5zY3JvbGxUb3A7XG5cblx0XHRpZiAoZGlzdGFuY2VGcm9tQm90dG9tIDw9IHRoaXMuc2Nyb2xsTG9hZERpc3RhbmNlKSB7XG5cdFx0XHR0aGlzLnNjcm9sbExvYWQuZW1pdCh0aGlzLm1vZGVsKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5tb2RlbC5pc0VuZCA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdGNvbHVtbkRyYWdTdGFydChldmVudCwgY29sdW1uSW5kZXgpIHtcblx0XHR0aGlzLmlzQ29sdW1uRHJhZ2dpbmcgPSB0cnVlO1xuXHRcdHRoaXMuY29sdW1uRHJhZ2dlZEhvdmVySW5kZXggPSBjb2x1bW5JbmRleDtcblx0XHRldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShcImNvbHVtbkluZGV4XCIsIEpTT04uc3RyaW5naWZ5KGNvbHVtbkluZGV4KSk7XG5cdH1cblxuXHRjb2x1bW5EcmFnRW5kKGV2ZW50LCBjb2x1bW5JbmRleCkge1xuXHRcdHRoaXMuaXNDb2x1bW5EcmFnZ2luZyA9IGZhbHNlO1xuXHRcdHRoaXMuY29sdW1uRHJhZ2dlZEhvdmVySW5kZXggPSAtMTtcblx0fVxuXG5cdGNvbHVtbkRyYWdFbnRlcihldmVudCwgcG9zaXRpb24sIGNvbHVtbkluZGV4KSB7XG5cdFx0dGhpcy5jb2x1bW5EcmFnZ2VkUG9zaXRpb24gPSBwb3NpdGlvbjtcblx0XHR0aGlzLmNvbHVtbkRyYWdnZWRIb3ZlckluZGV4ID0gY29sdW1uSW5kZXg7XG5cdH1cblxuXHRjb2x1bW5EcmFnTGVhdmUoZXZlbnQsIHBvc2l0aW9uLCBjb2x1bW5JbmRleCkge1xuXHRcdHRoaXMuY29sdW1uRHJhZ2dlZFBvc2l0aW9uID0gXCJcIjtcblx0fVxuXG5cdGNvbHVtbkRyYWdvdmVyKGV2ZW50LCBwb3NpdGlvbiwgY29sdW1uSW5kZXgpIHtcblx0XHR0aGlzLmNvbHVtbkRyYWdnZWRIb3ZlckluZGV4ID0gY29sdW1uSW5kZXg7XG5cdFx0dGhpcy5jb2x1bW5EcmFnZ2VkUG9zaXRpb24gPSBwb3NpdGlvbjtcblxuXHRcdC8vIG5lZWRlZCB0byB0ZWxsIGJyb3dzZXIgdG8gYWxsb3cgZHJvcHBpbmdcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHR9XG5cblx0Y29sdW1uRHJvcChldmVudCwgcG9zaXRpb24sIGNvbHVtbkluZGV4KSB7XG5cdFx0dGhpcy5pc0NvbHVtbkRyYWdnaW5nID0gZmFsc2U7XG5cdFx0dGhpcy5jb2x1bW5EcmFnZ2VkSG92ZXJJbmRleCA9IC0xO1xuXHRcdHRoaXMuY29sdW1uRHJhZ2dlZFBvc2l0aW9uID0gXCJcIjtcblxuXHRcdHRoaXMubW9kZWwubW92ZUNvbHVtbihcblx0XHRcdHBhcnNlSW50KGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKFwiY29sdW1uSW5kZXhcIiksIDEwKSxcblx0XHRcdGNvbHVtbkluZGV4ICsgKHBvc2l0aW9uID09PSBcInJpZ2h0XCIgPyAxIDogMClcblx0XHQpO1xuXHR9XG5cblx0ZG9Tb3J0KGluZGV4OiBudW1iZXIpIHtcblx0XHRpZiAodGhpcy5zb3J0Lm9ic2VydmVycy5sZW5ndGggPT09IDApIHtcblx0XHRcdC8vIG5vIHNvcnQgcHJvdmlkZWQgc28gZG8gdGhlIHNpbXBsZSBzb3J0XG5cdFx0XHRpZiAodGhpcy5tb2RlbC5oZWFkZXJbaW5kZXhdLnNvcnRlZCkge1xuXHRcdFx0XHQvLyBpZiBhbHJlYWR5IHNvcnRlZCBmbGlwIHNvcnRpbmcgZGlyZWN0aW9uXG5cdFx0XHRcdHRoaXMubW9kZWwuaGVhZGVyW2luZGV4XS5hc2NlbmRpbmcgPSB0aGlzLm1vZGVsLmhlYWRlcltpbmRleF0uZGVzY2VuZGluZztcblx0XHRcdH1cblx0XHRcdHRoaXMubW9kZWwuc29ydChpbmRleCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zb3J0LmVtaXQoaW5kZXgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNjcm9sbHMgb24gdGhlIGA8dGJvZHk+YCBlbGVtZW50LlxuXHQgKiBFbWl0cyB0aGUgYHNjcm9sbExvYWRgIGV2ZW50LlxuXHQgKi9cblx0c2Nyb2xsVG9Ub3AoZXZlbnQpIHtcblx0XHRldmVudC50YXJnZXQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5jaGlsZHJlblsxXS5zY3JvbGxUb3AgPSAwO1xuXHRcdHRoaXMubW9kZWwuaXNFbmQgPSBmYWxzZTtcblx0fVxuXG5cdGdldFNlbGVjdGlvbkxhYmVsVmFsdWUocm93OiBUYWJsZUl0ZW1bXSkge1xuXHRcdGlmICghdGhpcy5zZWxlY3Rpb25MYWJlbENvbHVtbikge1xuXHRcdFx0cmV0dXJuIHsgdmFsdWU6IHRoaXMuaTE4bi5nZXQoKS5UQUJMRS5ST1cgfTtcblx0XHR9XG5cdFx0cmV0dXJuIHsgdmFsdWU6IHJvd1t0aGlzLnNlbGVjdGlvbkxhYmVsQ29sdW1uXS5kYXRhIH07XG5cdH1cblxuXHRnZXRFeHBhbmRCdXR0b25BcmlhTGFiZWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2V4cGFuZEJ1dHRvbkFyaWFMYWJlbC5zdWJqZWN0O1xuXHR9XG5cdGdldFNvcnREZXNjZW5kaW5nTGFiZWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3NvcnREZXNjZW5kaW5nTGFiZWwuc3ViamVjdDtcblx0fVxuXHRnZXRTb3J0QXNjZW5kaW5nTGFiZWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3NvcnRBc2NlbmRpbmdMYWJlbC5zdWJqZWN0O1xuXHR9XG5cblx0Z2V0Q2hlY2tib3hIZWFkZXJMYWJlbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fY2hlY2tib3hIZWFkZXJMYWJlbC5zdWJqZWN0O1xuXHR9XG5cblx0Z2V0Q2hlY2tib3hSb3dMYWJlbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fY2hlY2tib3hSb3dMYWJlbC5zdWJqZWN0O1xuXHR9XG5cblx0Z2V0RW5kT2ZEYXRhVGV4dCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fZW5kT2ZEYXRhVGV4dC5zdWJqZWN0O1xuXHR9XG5cblx0Z2V0U2Nyb2xsVG9wVGV4dCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fc2Nyb2xsVG9wVGV4dC5zdWJqZWN0O1xuXHR9XG5cblx0Z2V0RmlsdGVyVGl0bGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2ZpbHRlclRpdGxlLnN1YmplY3Q7XG5cdH1cbn1cbiJdfQ==
|
|
907
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUtaLFdBQVcsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUUzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV2RyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBR3hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnSkc7QUFnRkgsTUFBTSxPQUFPLEtBQUs7SUF1WWpCOztPQUVHO0lBQ0gsWUFDVyxVQUFzQixFQUN0QixjQUE4QixFQUM5QixJQUFVO1FBRlYsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsU0FBSSxHQUFKLElBQUksQ0FBTTtRQXBTckI7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b0JBQW9CO3NCQUE1QixLQUFLO2dCQTBESSxJQUFJO3NCQUFiLE1BQU07Z0JBT0csU0FBUztzQkFBbEIsTUFBTTtnQkFPRyxXQUFXO3NCQUFwQixNQUFNO2dCQU9HLFNBQVM7c0JBQWxCLE1BQU07Z0JBT0csV0FBVztzQkFBcEIsTUFBTTtnQkFLRyxRQUFRO3NCQUFqQixNQUFNO2dCQUtHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdEFwcGxpY2F0aW9uUmVmLFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRFdmVudEVtaXR0ZXIsXG5cdEVsZW1lbnRSZWYsXG5cdEFmdGVyVmlld0luaXQsXG5cdFRlbXBsYXRlUmVmLFxuXHRPbkRlc3Ryb3ksXG5cdEhvc3RCaW5kaW5nXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZyb21FdmVudCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5cbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tIFwiLi90YWJsZS1tb2RlbC5jbGFzc1wiO1xuaW1wb3J0IHsgVGFibGVIZWFkZXJJdGVtIH0gZnJvbSBcIi4vdGFibGUtaGVhZGVyLWl0ZW0uY2xhc3NcIjtcbmltcG9ydCB7IFRhYmxlSXRlbSB9IGZyb20gXCIuL3RhYmxlLWl0ZW0uY2xhc3NcIjtcblxuaW1wb3J0IHsgZ2V0Rm9jdXNFbGVtZW50TGlzdCwgdGFiYmFibGVTZWxlY3Rvcklnbm9yZVRhYkluZGV4IH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBJMThuLCBPdmVycmlkYWJsZSB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2kxOG5cIjtcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvdXRpbHNcIjtcbmltcG9ydCB7IERhdGFHcmlkSW50ZXJhY3Rpb25Nb2RlbCB9IGZyb20gXCIuL2RhdGEtZ3JpZC1pbnRlcmFjdGlvbi1tb2RlbC5jbGFzc1wiO1xuaW1wb3J0IHsgVGFibGVEb21BZGFwdGVyIH0gZnJvbSBcIi4vdGFibGUtYWRhcHRlci5jbGFzc1wiO1xuaW1wb3J0IHsgVGFibGVSb3dTaXplIH0gZnJvbSBcIi4vdGFibGUudHlwZXNcIjtcblxuLyoqXG4gKiBCdWlsZCB5b3VyIHRhYmxlIHdpdGggdGhpcyBjb21wb25lbnQgYnkgZXh0ZW5kaW5nIHRoaW5ncyB0aGF0IGRpZmZlciBmcm9tIGRlZmF1bHQuXG4gKlxuICogW1NlZSBkZW1vXSguLi8uLi8/cGF0aD0vc3RvcnkvY29tcG9uZW50cy10YWJsZS0tYmFzaWMpXG4gKlxuICogSW5zdGVhZCBvZiB0aGUgdXN1YWwgd3JpdGUteW91ci1vd24taHRtbCBhcHByb2FjaCB5b3UgaGFkIHdpdGggYDx0YWJsZT5gLFxuICogY2FyYm9uIHRhYmxlIHVzZXMgbW9kZWwtdmlldy1jb250cm9sbGVyIGFwcHJvYWNoLlxuICpcbiAqIEhlcmUsIHlvdSBjcmVhdGUgYSB2aWV3ICh3aXRoIGJ1aWx0LWluIGNvbnRyb2xsZXIpIGFuZCBwcm92aWRlIGl0IGEgbW9kZWwuXG4gKiBDaGFuZ2VzIHlvdSBtYWtlIHRvIHRoZSBtb2RlbCBhcmUgcmVmbGVjdGVkIGluIHRoZSB2aWV3LiBQcm92aWRlIHNhbWUgbW9kZWwgeW91IHVzZVxuICogaW4gdGhlIHRhYmxlIHRvIHRoZSBgPGNkcy1wYWdpbmF0aW9uPmAgY29tcG9uZW50cy5cbiAqIFRoZXkgcHJvdmlkZSBhIGRpZmZlcmVudCB2aWV3IG92ZXIgdGhlIHNhbWUgZGF0YS5cbiAqXG4gKiAjIyBCYXNpYyB1c2FnZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxjZHMtdGFibGUgW21vZGVsXT1cIm1vZGVsXCI+PC9jZHMtdGFibGU+XG4gKiBgYGBcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBwdWJsaWMgbW9kZWwgPSBuZXcgVGFibGVNb2RlbCgpO1xuICpcbiAqIHRoaXMubW9kZWwuZGF0YSA9IFtcbiAqIFx0W25ldyBUYWJsZUl0ZW0oe2RhdGE6IFwiYXNkZlwifSksIG5ldyBUYWJsZUl0ZW0oe2RhdGE6IFwicXdlclwifSldLFxuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJjc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJ6d2VyXCJ9KV0sXG4gKiBcdFtuZXcgVGFibGVJdGVtKHtkYXRhOiBcImJzZGZcIn0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiBcInN3ZXJcIn0pXSxcbiAqIFx0W25ldyBUYWJsZUl0ZW0oe2RhdGE6IFwiY3NkZlwifSksIG5ldyBUYWJsZUl0ZW0oe2RhdGE6IFwidHdlclwifSldXG4gKiBdO1xuICogYGBgXG4gKlxuICogIyMgQ3VzdG9taXphdGlvblxuICpcbiAqIElmIHlvdSBoYXZlIGN1c3RvbSBkYXRhIGluIHlvdXIgdGFibGUsIHlvdSBuZWVkIGEgd2F5IHRvIGRpc3BsYXkgaXQuIFlvdSBjYW4gZG8gdGhhdFxuICogYnkgcHJvdmlkaW5nIGEgdGVtcGxhdGUgdG8gYFRhYmxlSXRlbWAuXG4gKlxuICogYGBgaHRtbFxuICogPG5nLXRlbXBsYXRlICNjdXN0b21UYWJsZUl0ZW1UZW1wbGF0ZSBsZXQtZGF0YT1cImRhdGFcIj5cbiAqIFx0PGEgW3JvdXRlckxpbmtdPVwiZGF0YS5saW5rXCI+e3tkYXRhLm5hbWV9fSB7e2RhdGEuc3VybmFtZX19PC9hPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqIGBgYFxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGN1c3RvbVRhYmxlSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICpcbiAqIHRoaXMuY3VzdG9tTW9kZWwuZGF0YSA9IFtcbiAqIFx0W25ldyBUYWJsZUl0ZW0oe2RhdGE6IFwiYXNkZlwifSksIG5ldyBUYWJsZUl0ZW0oe2RhdGE6IHtuYW1lOiBcIkxlc3N5XCIsIGxpbms6IFwiL3RhYmxlXCJ9LCB0ZW1wbGF0ZTogdGhpcy5jdXN0b21UYWJsZUl0ZW1UZW1wbGF0ZX0pXSxcbiAqIFx0W25ldyBUYWJsZUl0ZW0oe2RhdGE6IFwiY3NkZlwifSksIG5ldyBUYWJsZUl0ZW0oe2RhdGE6IFwic3dlclwifSldLFxuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJic2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YToge25hbWU6IFwiQWxpY2VcIiwgc3VybmFtZTogXCJCb2JcIn0sIHRlbXBsYXRlOiB0aGlzLmN1c3RvbVRhYmxlSXRlbVRlbXBsYXRlfSldLFxuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJjc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJ0d2VyXCJ9KV0sXG4gKiBdO1xuICogYGBgXG4gKlxuICogIyMjIFNvcnRpbmcgYW5kIGZpbHRlcmluZ1xuICpcbiAqIEluIGNhc2UgeW91IG5lZWQgY3VzdG9tIHNvcnRpbmcgYW5kL29yIGZpbHRlcmluZyB5b3Ugc2hvdWxkIHN1YmNsYXNzIGBUYWJsZUhlYWRlckl0ZW1gXG4gKiBhbmQgb3ZlcnJpZGUgbmVlZGVkIGZ1bmN0aW9ucy5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBGaWx0ZXJhYmxlSGVhZGVySXRlbSBleHRlbmRzIFRhYmxlSGVhZGVySXRlbSB7XG4gKiBcdC8vIGN1c3RvbSBmaWx0ZXIgZnVuY3Rpb25cbiAqIFx0ZmlsdGVyKGl0ZW06IFRhYmxlSXRlbSk6IGJvb2xlYW4ge1xuICogXHRcdGlmICh0eXBlb2YgaXRlbS5kYXRhID09PSBcInN0cmluZ1wiICYmIGl0ZW0uZGF0YS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5maWx0ZXJEYXRhLmRhdGEudG9Mb3dlckNhc2UoKSkgPj0gMCB8fFxuICogXHRcdGl0ZW0uZGF0YS5uYW1lICYmIGl0ZW0uZGF0YS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLmZpbHRlckRhdGEuZGF0YS50b0xvd2VyQ2FzZSgpKSA+PSAwIHx8XG4gKiBcdFx0aXRlbS5kYXRhLnN1cm5hbWUgJiYgaXRlbS5kYXRhLnN1cm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuZmlsdGVyRGF0YS5kYXRhLnRvTG93ZXJDYXNlKCkpID49IDApIHtcbiAqIFx0XHRcdHJldHVybiBmYWxzZTtcbiAqIFx0XHR9XG4gKiBcdFx0cmV0dXJuIHRydWU7XG4gKiBcdH1cbiAqXG4gKiBcdHNldCBmaWx0ZXJDb3VudChuKSB7fVxuICogXHRnZXQgZmlsdGVyQ291bnQoKSB7XG4gKiBcdFx0cmV0dXJuICh0aGlzLmZpbHRlckRhdGEgJiYgdGhpcy5maWx0ZXJEYXRhLmRhdGEgJiYgdGhpcy5maWx0ZXJEYXRhLmRhdGEubGVuZ3RoID4gMCkgPyAxIDogMDtcbiAqIFx0fVxuICpcbiAqIFx0Ly8gdXNlZCBmb3IgY3VzdG9tIHNvcnRpbmdcbiAqIFx0Y29tcGFyZShvbmU6IFRhYmxlSXRlbSwgdHdvOiBUYWJsZUl0ZW0pIHtcbiAqIFx0XHRjb25zdCBzdHJpbmdPbmUgPSAob25lLmRhdGEubmFtZSB8fCBvbmUuZGF0YS5zdXJuYW1lIHx8IG9uZS5kYXRhKS50b0xvd2VyQ2FzZSgpO1xuICogXHRcdGNvbnN0IHN0cmluZ1R3byA9ICh0d28uZGF0YS5uYW1lIHx8IHR3by5kYXRhLnN1cm5hbWUgfHwgdHdvLmRhdGEpLnRvTG93ZXJDYXNlKCk7XG4gKlxuICogXHRcdGlmIChzdHJpbmdPbmUgPiBzdHJpbmdUd28pIHtcbiAqIFx0XHRcdHJldHVybiAxO1xuICogXHRcdH0gZWxzZSBpZiAoc3RyaW5nT25lIDwgc3RyaW5nVHdvKSB7XG4gKiBcdFx0XHRyZXR1cm4gLTE7XG4gKiBcdFx0fSBlbHNlIHtcbiAqIFx0XHRcdHJldHVybiAwO1xuICogXHRcdH1cbiAqIFx0fVxuICogfVxuICogYGBgXG4gKlxuICogSWYgeW91IHdhbnQgdG8gZG8geW91ciBzb3J0aW5nIG9uIHRoZSBiYWNrZW5kIG9yIHF1ZXJ5IGZvciBzb3J0ZWQgZGF0YSBhcyBhIHJlc3VsdCBvZiB1c2VyXG4gKiBjbGlja2luZyB0aGUgdGFibGUgaGVhZGVyLCBjaGVjayB0YWJsZSBbYHNvcnRgXSgjc29ydCkgb3V0cHV0IGRvY3VtZW50YXRpb25cbiAqXG4gKiBTZWUgYFRhYmxlSGVhZGVySXRlbWAgY2xhc3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogIyMgTm8gZGF0YSB0ZW1wbGF0ZVxuICpcbiAqIFdoZW4gdGFibGUgaGFzIG5vIGRhdGEgdG8gc2hvdywgaXQgY2FuIHNob3cgYSBtZXNzYWdlIHlvdSBwcm92aWRlIGl0IGluc3RlYWQuXG4gKlxuICogYGBgaHRtbFxuICogPGNkcy10YWJsZSBbbW9kZWxdPVwibW9kZWxcIj5ObyBkYXRhLjwvY2RzLXRhYmxlPlxuICogYGBgXG4gKlxuICogLi4uIHdpbGwgc2hvdyBgTm8gZGF0YS5gIG1lc3NhZ2UsIGJ1dCB5b3UgY2FuIGdldCBjcmVhdGl2ZSBhbmQgcHJvdmlkZSBhbnkgdGVtcGxhdGUgeW91IHdhbnRcbiAqIHRvIHJlcGxhY2UgdGFibGUncyBkZWZhdWx0IGB0Ym9keWAuXG4gKlxuICogIyMgVXNlIHBhZ2luYXRpb24gYXMgdGFibGUgZm9vdGVyXG4gKlxuICogYGBgaHRtbFxuICogPGNkcy1wYWdpbmF0aW9uIFttb2RlbF09XCJtb2RlbFwiIChzZWxlY3RQYWdlKT1cInNlbGVjdFBhZ2UoJGV2ZW50KVwiPjwvY2RzLXBhZ2luYXRpb24+XG4gKiBgYGBcbiAqXG4gKiBgc2VsZWN0UGFnZSgpYCBmdW5jdGlvbiBzaG91bGQgZmV0Y2ggdGhlIGRhdGEgZnJvbSBiYWNrZW5kLCBjcmVhdGUgbmV3IGBkYXRhYCwgYXBwbHkgaXQgdG8gYG1vZGVsLmRhdGFgLFxuICogYW5kIHVwZGF0ZSBgbW9kZWwuY3VycmVudFBhZ2VgLlxuICpcbiAqIElmIHRoZSBkYXRhIHlvdXIgc2VydmVyIHJldHVybnMgaXMgYSB0d28gZGltZW5zaW9uYWwgYXJyYXkgb2Ygb2JqZWN0cywgaXQgd291bGQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHNlbGVjdFBhZ2UocGFnZSkge1xuICogXHR0aGlzLmdldFBhZ2UocGFnZSkudGhlbigoZGF0YTogQXJyYXk8QXJyYXk8YW55Pj4pID0+IHtcbiAqIFx0XHQvLyBzZXQgdGhlIGRhdGEgYW5kIHVwZGF0ZSBwYWdlXG4gKiBcdFx0dGhpcy5tb2RlbC5kYXRhID0gdGhpcy5wcmVwYXJlRGF0YShkYXRhKTtcbiAqIFx0XHR0aGlzLm1vZGVsLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAqIFx0fSk7XG4gKiB9XG4gKlxuICogcHJvdGVjdGVkIHByZXBhcmVEYXRhKGRhdGE6IEFycmF5PEFycmF5PGFueT4+KSB7XG4gKiBcdC8vIGNyZWF0ZSBuZXcgZGF0YSBmcm9tIHRoZSBzZXJ2aWNlIGRhdGFcbiAqIFx0bGV0IG5ld0RhdGEgPSBbXTtcbiAqIFx0ZGF0YS5mb3JFYWNoKGRhdGFSb3cgPT4ge1xuICogXHRcdGxldCByb3cgPSBbXTtcbiAqIFx0XHRkYXRhUm93LmZvckVhY2goZGF0YUVsZW1lbnQgPT4ge1xuICogXHRcdFx0cm93LnB1c2gobmV3IFRhYmxlSXRlbSh7XG4gKiBcdFx0XHRcdGRhdGE6IGRhdGFFbGVtZW50LFxuICogXHRcdFx0XHR0ZW1wbGF0ZTogdHlwZW9mIGRhdGFFbGVtZW50ID09PSBcInN0cmluZ1wiID8gdW5kZWZpbmVkIDogdGhpcy5wYWdpbmF0aW9uVGFibGVJdGVtVGVtcGxhdGVcbiAqIFx0XHRcdFx0Ly8geW91ciB0ZW1wbGF0ZSBjYW4gaGFuZGxlIGFsbCB0aGUgZGF0YSB0eXBlcyBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBjb25kaXRpb25hbGx5IHNldCBpdFxuICogXHRcdFx0XHQvLyB5b3UgY2FuIGFsc28gc2V0IGRpZmZlcmVudCB0ZW1wbGF0ZXMgZm9yIGRpZmZlcmVudCBjb2x1bW5zIGJhc2VkIG9uIGluZGV4XG4gKiBcdFx0XHR9KSk7XG4gKiBcdFx0fSk7XG4gKiBcdFx0bmV3RGF0YS5wdXNoKHJvdyk7XG4gKiBcdH0pO1xuICogXHRyZXR1cm4gbmV3RGF0YTtcbiAqIH1cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLXRhYmxlLCBpYm0tdGFibGVcIixcblx0dGVtcGxhdGU6IGBcblx0PHRhYmxlXG5cdFx0Y2RzVGFibGVcblx0XHRbc29ydGFibGVdPVwic29ydGFibGVcIlxuXHRcdFtub0JvcmRlcl09XCJub0JvcmRlclwiXG5cdFx0W25nQ2xhc3NdPVwieydjZHMtLWRhdGEtdGFibGUtLXN0aWNreS1oZWFkZXInOiBzdGlja3lIZWFkZXJ9XCJcblx0XHRbc2l6ZV09XCJzaXplXCJcblx0XHRbc3RyaXBlZF09XCJzdHJpcGVkXCJcblx0XHRbc2tlbGV0b25dPVwic2tlbGV0b25cIlxuXHRcdFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRieVwiXG5cdFx0W2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkYnlcIj5cblx0XHQ8dGhlYWRcblx0XHRcdGNkc1RhYmxlSGVhZFxuXHRcdFx0W3NvcnRhYmxlXT1cInNvcnRhYmxlXCJcblx0XHRcdChkZXNlbGVjdEFsbCk9XCJvbkRlc2VsZWN0QWxsKClcIlxuXHRcdFx0KHNlbGVjdEFsbCk9XCJvblNlbGVjdEFsbCgpXCJcblx0XHRcdChzb3J0KT1cImRvU29ydCgkZXZlbnQpXCJcblx0XHRcdFtjaGVja2JveEhlYWRlckxhYmVsXT1cImdldENoZWNrYm94SGVhZGVyTGFiZWwoKVwiXG5cdFx0XHRbZmlsdGVyVGl0bGVdPVwiZ2V0RmlsdGVyVGl0bGUoKVwiXG5cdFx0XHRbbW9kZWxdPVwibW9kZWxcIlxuXHRcdFx0W3NlbGVjdEFsbENoZWNrYm94XT1cInNlbGVjdEFsbENoZWNrYm94XCJcblx0XHRcdFtzZWxlY3RBbGxDaGVja2JveFNvbWVTZWxlY3RlZF09XCJzZWxlY3RBbGxDaGVja2JveFNvbWVTZWxlY3RlZFwiXG5cdFx0XHRbc2hvd1NlbGVjdGlvbkNvbHVtbl09XCJzaG93U2VsZWN0aW9uQ29sdW1uXCJcblx0XHRcdFtlbmFibGVTaW5nbGVTZWxlY3RdPVwiZW5hYmxlU2luZ2xlU2VsZWN0XCJcblx0XHRcdFtza2VsZXRvbl09XCJza2VsZXRvblwiXG5cdFx0XHRbc29ydEFzY2VuZGluZ0xhYmVsXT1cInNvcnRBc2NlbmRpbmdMYWJlbFwiXG5cdFx0XHRbc29ydERlc2NlbmRpbmdMYWJlbF09XCJzb3J0RGVzY2VuZGluZ0xhYmVsXCJcblx0XHRcdFtzdGlja3lIZWFkZXJdPVwic3RpY2t5SGVhZGVyXCI+XG5cdFx0PC90aGVhZD5cblx0XHQ8dGJvZHlcblx0XHRcdGNkc1RhYmxlQm9keVxuXHRcdFx0KGRlc2VsZWN0Um93KT1cIm9uU2VsZWN0Um93KCRldmVudClcIlxuXHRcdFx0KHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCJcblx0XHRcdChzZWxlY3RSb3cpPVwib25TZWxlY3RSb3coJGV2ZW50KVwiXG5cdFx0XHRbY2hlY2tib3hSb3dMYWJlbF09XCJnZXRDaGVja2JveFJvd0xhYmVsKClcIlxuXHRcdFx0W2VuYWJsZVNpbmdsZVNlbGVjdF09XCJlbmFibGVTaW5nbGVTZWxlY3RcIlxuXHRcdFx0KHJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXG5cdFx0XHRbZXhwYW5kQnV0dG9uQXJpYUxhYmVsXT1cImV4cGFuZEJ1dHRvbkFyaWFMYWJlbFwiXG5cdFx0XHRbbW9kZWxdPVwibW9kZWxcIlxuXHRcdFx0W3NpemVdPVwic2l6ZVwiXG5cdFx0XHRbbmdTdHlsZV09XCJ7J292ZXJmbG93LXknOiAnc2Nyb2xsJ31cIlxuXHRcdFx0W3NlbGVjdGlvbkxhYmVsQ29sdW1uXT1cInNlbGVjdGlvbkxhYmVsQ29sdW1uXCJcblx0XHRcdFtzaG93U2VsZWN0aW9uQ29sdW1uXT1cInNob3dTZWxlY3Rpb25Db2x1bW5cIlxuXHRcdFx0W3NrZWxldG9uXT1cInNrZWxldG9uXCJcblx0XHRcdCpuZ0lmPVwiIW5vRGF0YTsgZWxzZSBub0RhdGFUZW1wbGF0ZVwiPlxuXHRcdDwvdGJvZHk+XG5cdFx0PG5nLXRlbXBsYXRlICNub0RhdGFUZW1wbGF0ZT48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9uZy10ZW1wbGF0ZT5cblx0XHQ8dGZvb3Q+XG5cdFx0XHQ8bmctdGVtcGxhdGVcblx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGVcIj5cblx0XHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0XHQ8dHIgKm5nSWY9XCJ0aGlzLm1vZGVsLmlzTG9hZGluZ1wiPlxuXHRcdFx0XHQ8dGQgY2xhc3M9XCJ0YWJsZV9sb2FkaW5nLWluZGljYXRvclwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjZHMtLWxvYWRpbmcgY2RzLS1sb2FkaW5nLS1zbWFsbFwiPlxuXHRcdFx0XHRcdFx0PHN2ZyBjbGFzcz1cImNkcy0tbG9hZGluZ19fc3ZnXCIgdmlld0JveD1cIi03NSAtNzUgMTUwIDE1MFwiPlxuXHRcdFx0XHRcdFx0XHQ8Y2lyY2xlIGNsYXNzPVwiY2RzLS1sb2FkaW5nX19zdHJva2VcIiBjeD1cIjBcIiBjeT1cIjBcIiByPVwiMzcuNVwiIC8+XG5cdFx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC90ZD5cblx0XHRcdDwvdHI+XG5cdFx0XHQ8dHIgKm5nSWY9XCJ0aGlzLm1vZGVsLmlzRW5kXCI+XG5cdFx0XHRcdDx0ZCBjbGFzcz1cInRhYmxlX2VuZC1pbmRpY2F0b3JcIj5cblx0XHRcdFx0XHQ8aDU+e3tnZXRFbmRPZkRhdGFUZXh0KCkgfCBhc3luY319PC9oNT5cblx0XHRcdFx0XHQ8YnV0dG9uIChjbGljayk9XCJzY3JvbGxUb1RvcCgkZXZlbnQpXCIgY2xhc3M9XCJidG4tLXNlY29uZGFyeS1zbVwiPlxuXHRcdFx0XHRcdFx0e3tnZXRTY3JvbGxUb3BUZXh0KCkgfCBhc3luY319XG5cdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdDwvdGQ+XG5cdFx0XHQ8L3RyPlxuXHRcdDwvdGZvb3Q+XG5cdDwvdGFibGU+XG5cdGAsXG5cdHN0eWxlczogW2Bcblx0XHQ6aG9zdCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR9XG5cdGBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBza2VsZXRvbiBtb2RlbCB3aXRoIGEgcm93IGFuZCBjb2x1bW4gY291bnQgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyXG5cdCAqXG5cdCAqIEV4YW1wbGU6XG5cdCAqXG5cdCAqIGBgYHR5cGVzY3JpcHRcblx0ICogdGhpcy5tb2RlbCA9IFRhYmxlLnNrZWxldG9uTW9kZWwoNSwgNSk7XG5cdCAqIGBgYFxuXHQgKi9cblx0c3RhdGljIHNrZWxldG9uTW9kZWwocm93Q291bnQ6IG51bWJlciwgY29sdW1uQ291bnQ6IG51bWJlcikge1xuXHRcdGNvbnN0IG1vZGVsID0gbmV3IFRhYmxlTW9kZWwoKTtcblx0XHRsZXQgaGVhZGVyID0gbmV3IEFycmF5PFRhYmxlSGVhZGVySXRlbT4oKTtcblx0XHRsZXQgZGF0YSA9IG5ldyBBcnJheTxBcnJheTxUYWJsZUl0ZW0+PigpO1xuXHRcdGxldCByb3cgPSBuZXcgQXJyYXk8VGFibGVJdGVtPigpO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5Db3VudDsgaSsrKSB7XG5cdFx0XHRoZWFkZXIucHVzaChuZXcgVGFibGVIZWFkZXJJdGVtKCkpO1xuXHRcdFx0cm93LnB1c2gobmV3IFRhYmxlSXRlbSgpKTtcblx0XHR9XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCByb3dDb3VudCAtIDE7IGkrKykge1xuXHRcdFx0ZGF0YS5wdXNoKHJvdyk7XG5cdFx0fVxuXG5cdFx0bW9kZWwuaGVhZGVyID0gaGVhZGVyO1xuXHRcdG1vZGVsLmRhdGEgPSBkYXRhO1xuXHRcdHJldHVybiBtb2RlbDtcblx0fVxuXG5cdHN0YXRpYyBzZXRUYWJJbmRleChlbGVtZW50OiBIVE1MRWxlbWVudCwgaW5kZXg6IC0xIHwgMCkge1xuXHRcdGNvbnN0IGZvY3VzRWxlbWVudExpc3QgPSBnZXRGb2N1c0VsZW1lbnRMaXN0KGVsZW1lbnQsIHRhYmJhYmxlU2VsZWN0b3JJZ25vcmVUYWJJbmRleCk7XG5cdFx0aWYgKGVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQgJiYgZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGFzc0xpc3QuY29udGFpbnMoXCJjZHMtLXRhYmxlLXNvcnRcIikgJiYgZm9jdXNFbGVtZW50TGlzdC5sZW5ndGggPiAxKSB7XG5cdFx0XHRmb2N1c0VsZW1lbnRMaXN0WzFdLnRhYkluZGV4ID0gaW5kZXg7XG5cdFx0fSBlbHNlIGlmIChmb2N1c0VsZW1lbnRMaXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdGZvY3VzRWxlbWVudExpc3RbMF0udGFiSW5kZXggPSBpbmRleDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZWxlbWVudC50YWJJbmRleCA9IGluZGV4O1xuXHRcdH1cblx0fVxuXG5cdHN0YXRpYyBmb2N1cyhlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuXHRcdGNvbnN0IGZvY3VzRWxlbWVudExpc3QgPSBnZXRGb2N1c0VsZW1lbnRMaXN0KGVsZW1lbnQsIHRhYmJhYmxlU2VsZWN0b3JJZ25vcmVUYWJJbmRleCk7XG5cdFx0aWYgKGVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQgJiYgZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGFzc0xpc3QuY29udGFpbnMoXCJjZHMtLXRhYmxlLXNvcnRcIikgJiYgZm9jdXNFbGVtZW50TGlzdC5sZW5ndGggPiAxKSB7XG5cdFx0XHRmb2N1c0VsZW1lbnRMaXN0WzFdLmZvY3VzKCk7XG5cdFx0fSBlbHNlIGlmIChmb2N1c0VsZW1lbnRMaXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdGZvY3VzRWxlbWVudExpc3RbMF0uZm9jdXMoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZWxlbWVudC5mb2N1cygpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBJZCBvZiB0aGUgdGFibGUgaGVhZGVyIHRpdGxlIGVsZW1lbnRcblx0ICovXG5cdEBJbnB1dCgpIGFyaWFMYWJlbGxlZGJ5OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBJZCBvZiB0aGUgdGFibGUgaGVhZGVyIGRlc2NyaXB0aW9uIGVsZW1lbnRcblx0ICovXG5cdEBJbnB1dCgpIGFyaWFEZXNjcmliZWRieTogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBgVGFibGVNb2RlbGAgd2l0aCBkYXRhIHRoZSB0YWJsZSBpcyB0byBkaXNwbGF5LlxuXHQgKi9cblx0QElucHV0KClcblx0c2V0IG1vZGVsKG06IFRhYmxlTW9kZWwpIHtcblx0XHRpZiAodGhpcy5fbW9kZWwpIHtcblx0XHRcdHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuXHRcdFx0Ly8gTmVlZCB0byBjcmVhdGUgYSBuZXcgc3Vic2NyaXB0aW9uIGluc3RhbmNlIGhlcmUgYmVjYXVzZSB1bnN1YnNjcmliaW5nIHByZXZlbnRzIGFueSBuZXcgc3Vic2NyaXB0aW9uc1xuXHRcdFx0Ly8gZnJvbSBiZWluZyBhZGRlZCBmb3Igc29tZSByZWFzb24uIFdoZW4gYSBuZXcgbW9kZWwgaXMgc2V0LCBub25lIG9mIHRoZSBzdWJzY3JpcHRpb25zIHdvdWxkIGV4aXN0LlxuXHRcdFx0dGhpcy5zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXHRcdH1cblxuXHRcdHRoaXMuX21vZGVsID0gbTtcblxuXHRcdGNvbnN0IHJvd3NDaGFuZ2UgPSB0aGlzLl9tb2RlbC5yb3dzU2VsZWN0ZWRDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlU2VsZWN0QWxsQ2hlY2tib3goKSk7XG5cdFx0Y29uc3QgZGF0YUNoYW5nZSA9IHRoaXMuX21vZGVsLmRhdGFDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdGlmICh0aGlzLmlzRGF0YUdyaWQpIHtcblx0XHRcdFx0dGhpcy5yZXNldFRhYkluZGV4KCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnVwZGF0ZVNlbGVjdEFsbENoZWNrYm94KCk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHJvd3NDaGFuZ2UpO1xuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoZGF0YUNoYW5nZSk7XG5cblx0XHRpZiAodGhpcy5pc0RhdGFHcmlkKSB7XG5cdFx0XHRjb25zdCBleHBhbmRlZENoYW5nZSA9IHRoaXMuX21vZGVsLnJvd3NFeHBhbmRlZENoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0XHQvLyBBbGxvd3MgdGhlIGV4cGFuZGVkIHJvdyB0byBoYXZlIGEgZm9jdXMgc3RhdGUgd2hlbiBpdCBleGlzdHMgaW4gdGhlIERPTVxuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCBleHBhbmRlZFJvd3MgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmNkcy0tZXhwYW5kYWJsZS1yb3c6bm90KC5jZHMtLXBhcmVudC1yb3cpXCIpO1xuXHRcdFx0XHRcdEFycmF5LmZyb208YW55PihleHBhbmRlZFJvd3MpLmZvckVhY2gocm93ID0+IHtcblx0XHRcdFx0XHRcdGlmIChyb3cuZmlyc3RFbGVtZW50Q2hpbGQudGFiSW5kZXggPT09IHVuZGVmaW5lZCB8fCByb3cuZmlyc3RFbGVtZW50Q2hpbGQudGFiSW5kZXggIT09IC0xKSB7XG5cdFx0XHRcdFx0XHRcdHJvdy5maXJzdEVsZW1lbnRDaGlsZC50YWJJbmRleCA9IC0xO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5zdWJzY3JpcHRpb25zLmFkZChleHBhbmRlZENoYW5nZSk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0IG1vZGVsKCk6IFRhYmxlTW9kZWwge1xuXHRcdHJldHVybiB0aGlzLl9tb2RlbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBTaXplIG9mIHRoZSB0YWJsZSByb3dzLlxuXHQgKi9cblx0QElucHV0KCkgc2l6ZTogVGFibGVSb3dTaXplID0gXCJtZFwiO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCBmb3IgYSBsb2FkaW5nIHRhYmxlLlxuXHQgKi9cblx0QElucHV0KCkgc2tlbGV0b24gPSBmYWxzZTtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgZGF0YSBncmlkIHdpdGgga2V5Ym9hcmQgaW50ZXJhY3Rpb25zLlxuXHQgKi9cblx0QElucHV0KCkgc2V0IGlzRGF0YUdyaWQodmFsdWU6IGJvb2xlYW4pIHtcblx0XHR0aGlzLl9pc0RhdGFHcmlkID0gdmFsdWU7XG5cdFx0aWYgKHRoaXMuaXNWaWV3UmVhZHkpIHtcblx0XHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0XHR0aGlzLmVuYWJsZURhdGFHcmlkSW50ZXJhY3Rpb25zKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmRpc2FibGVEYXRhR3JpZEludGVyYWN0aW9ucygpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXR0aW5nIHNvcnRhYmxlIHRvIGZhbHNlIHdpbGwgZGlzYWJsZSBhbGwgaGVhZGVycyBpbmNsdWRpbmcgaGVhZGVycyB3aGljaCBhcmUgc29ydGFibGUuIElzIGlzXG5cdCAqIHBvc3NpYmxlIHRvIHNldCB0aGUgc29ydGFibGUgc3RhdGUgb24gdGhlIGhlYWRlciBpdGVtIHRvIGRpc2FibGUvZW5hYmxlIHNvcnRpbmcgZm9yIG9ubHkgc29tZSBoZWFkZXJzLlxuXHQgKi9cblx0QElucHV0KCkgc29ydGFibGUgPSB0cnVlO1xuXG5cdEBJbnB1dCgpIG5vQm9yZGVyID0gdHJ1ZTtcblxuXHRnZXQgaXNEYXRhR3JpZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5faXNEYXRhR3JpZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGV0aGVyIHRvIHNob3cgdGhlIHNlbGVjdGlvbiBjaGVja2JveGVzIGNvbHVtbiBvciBub3QuXG5cdCAqL1xuXHRASW5wdXQoKSBzaG93U2VsZWN0aW9uQ29sdW1uID0gdHJ1ZTtcblxuXHQvKipcblx0ICogQ29udHJvbHMgd2hldGhlciB0byBlbmFibGUgbXVsdGlwbGUgb3Igc2luZ2xlIHJvdyBzZWxlY3Rpb24uXG5cdCAqL1xuXHRASW5wdXQoKSBlbmFibGVTaW5nbGVTZWxlY3QgPSBmYWxzZTtcblxuXHQvKipcblx0ICogRGlzdGFuY2UgKGluIHB4KSBmcm9tIHRoZSBib3R0b20gdGhhdCB2aWV3IGhhcyB0byByZWFjaCBiZWZvcmVcblx0ICogYHNjcm9sbExvYWRgIGV2ZW50IGlzIGVtaXR0ZWQuXG5cdCAqL1xuXHRASW5wdXQoKSBzY3JvbGxMb2FkRGlzdGFuY2UgPSAwO1xuXG5cdC8qKlxuXHQgKiBAdG9kbyAtIEVuYWJsZSBjb2x1bW4gcmVzaXplIHdoZW4gQ2FyYm9uIG9mZmljaWFsbHkgc3VwcG9ydHMgZmVhdHVyZVxuXHQgKiBTZXQgdG8gYHRydWVgIHRvIGVuYWJsZSB1c2VycyB0byByZXNpemUgY29sdW1ucy5cblx0ICpcblx0ICogV29ya3MgZm9yIGNvbHVtbnMgd2l0aCB3aWR0aCBzZXQgaW4gcGl4ZWxzLlxuXHQgKlxuXHQgKi9cblx0Ly8gQElucHV0KCkgY29sdW1uc1Jlc2l6YWJsZSA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBAdG9kbyAtIEVuYWJsZSBjb2x1bW5zIGRyYWcgJiBkcm9wIHdoZW4gQ2FyYm9uIG9mZmljaWFsbHkgc3VwcG9ydHMgZmVhdHVyZVxuXHQgKiBTZXQgdG8gYHRydWVgIHRvIGVuYWJsZSB1c2VycyB0byBkcmFnIGFuZCBkcm9wIGNvbHVtbnMuXG5cdCAqXG5cdCAqIENoYW5naW5nIHRoZSBjb2x1bW4gb3JkZXIgaW4gdGFibGUgY2hhbmdlcyB0YWJsZSBtb2RlbC4gQmUgYXdhcmUgb2YgaXQgd2hlbiB5b3UgYWRkIGFkZGl0aW9uYWwgZGF0YVxuXHQgKiB0byB0aGUgbW9kZWwuXG5cdCAqXG5cdCAqL1xuXHQvLyBASW5wdXQoKSBjb2x1bW5zRHJhZ2dhYmxlID0gZmFsc2U7XG5cblx0QElucHV0KClcblx0c2V0IGV4cGFuZEJ1dHRvbkFyaWFMYWJlbCh2YWx1ZTogc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+KSB7XG5cdFx0dGhpcy5fZXhwYW5kQnV0dG9uQXJpYUxhYmVsLm92ZXJyaWRlKHZhbHVlKTtcblx0fVxuXHRnZXQgZXhwYW5kQnV0dG9uQXJpYUxhYmVsKCkge1xuXHRcdHJldHVybiB0aGlzLl9leHBhbmRCdXR0b25BcmlhTGFiZWwudmFsdWU7XG5cdH1cblx0QElucHV0KClcblx0c2V0IHNvcnREZXNjZW5kaW5nTGFiZWwodmFsdWU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuXHRcdHRoaXMuX3NvcnREZXNjZW5kaW5nTGFiZWwub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cdGdldCBzb3J0RGVzY2VuZGluZ0xhYmVsKCkge1xuXHRcdHJldHVybiB0aGlzLl9zb3J0RGVzY2VuZGluZ0xhYmVsLnZhbHVlO1xuXHR9XG5cdEBJbnB1dCgpXG5cdHNldCBzb3J0QXNjZW5kaW5nTGFiZWwodmFsdWU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuXHRcdHRoaXMuX3NvcnRBc2NlbmRpbmdMYWJlbC5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblx0Z2V0IHNvcnRBc2NlbmRpbmdMYWJlbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fc29ydEFzY2VuZGluZ0xhYmVsLnZhbHVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV4cGVjdHMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgc29tZSBvciBhbGwgb2Y6XG5cdCAqIGBgYFxuXHQgKiB7XG5cdCAqXHRcdFwiRklMVEVSXCI6IFwiRmlsdGVyXCIsXG5cdCAqXHRcdFwiRU5EX09GX0RBVEFcIjogXCJZb3UndmUgcmVhY2hlZCB0aGUgZW5kIG9mIHlvdXIgY29udGVudFwiLFxuXHQgKlx0XHRcIlNDUk9MTF9UT1BcIjogXCJTY3JvbGwgdG8gdG9wXCIsXG5cdCAqXHRcdFwiQ0hFQ0tCT1hfSEVBREVSXCI6IFwiU2VsZWN0IGFsbCByb3dzXCIsXG5cdCAqXHRcdFwiQ0hFQ0tCT1hfUk9XXCI6IFwiU2VsZWN0IHJvd1wiXG5cdCAqIH1cblx0ICogYGBgXG5cdCAqL1xuXHRASW5wdXQoKVxuXHRzZXQgdHJhbnNsYXRpb25zKHZhbHVlKSB7XG5cdFx0Y29uc3QgdmFsdWVXaXRoRGVmYXVsdHMgPSBtZXJnZSh0aGlzLmkxOG4uZ2V0TXVsdGlwbGUoXCJUQUJMRVwiKSwgdmFsdWUpO1xuXHRcdHRoaXMuX2ZpbHRlclRpdGxlLm92ZXJyaWRlKHZhbHVlV2l0aERlZmF1bHRzLkZJTFRFUik7XG5cdFx0dGhpcy5fZW5kT2ZEYXRhVGV4dC5vdmVycmlkZSh2YWx1ZVdpdGhEZWZhdWx0cy5FTkRfT0ZfREFUQSk7XG5cdFx0dGhpcy5fc2Nyb2xsVG9wVGV4dC5vdmVycmlkZSh2YWx1ZVdpdGhEZWZhdWx0cy5TQ1JPTExfVE9QKTtcblx0XHR0aGlzLl9jaGVja2JveEhlYWRlckxhYmVsLm92ZXJyaWRlKHZhbHVlV2l0aERlZmF1bHRzLkNIRUNLQk9YX0hFQURFUik7XG5cdFx0dGhpcy5fY2hlY2tib3hSb3dMYWJlbC5vdmVycmlkZSh2YWx1ZVdpdGhEZWZhdWx0cy5DSEVDS0JPWF9ST1cpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0byBgZmFsc2VgIHRvIHJlbW92ZSB0YWJsZSByb3dzICh6ZWJyYSkgc3RyaXBlcy5cblx0ICovXG5cdEBJbnB1dCgpIHN0cmlwZWQgPSB0cnVlO1xuXG5cdC8qKlxuXHQgKiBBbGxvd3MgdGFibGUgY29udGVudCB0byBzY3JvbGwgaG9yaXpvbnRhbGx5XG5cdCAqL1xuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWRhdGEtdGFibGUtY29udGVudFwiKSB0YWJsZUNvbnRlbnQgPSB0cnVlO1xuXG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIHRvIHN0aWNrIHRoZSBoZWFkZXIgdG8gdGhlIHRvcCBvZiB0aGUgdGFibGVcblx0ICovXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tZGF0YS10YWJsZV9pbm5lci1jb250YWluZXJcIikgQElucHV0KCkgc3RpY2t5SGVhZGVyID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFNldCBmb290ZXIgdGVtcGxhdGUgdG8gY3VzdG9taXplIHdoYXQgaXMgZGlzcGxheWVkIGluIHRoZSB0Zm9vdCBzZWN0aW9uIG9mIHRoZSB0YWJsZVxuXHQgKi9cblx0QElucHV0KCkgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cblx0LyoqXG5cdCAqIFVzZWQgdG8gcG9wdWxhdGUgdGhlIHJvdyBzZWxlY3Rpb24gY2hlY2tib3ggbGFiZWwgd2l0aCBhIHVzZWZ1bCB2YWx1ZSBpZiBzZXQuXG5cdCAqXG5cdCAqIEV4YW1wbGU6XG5cdCAqIGBgYFxuXHQgKiA8Y2RzLXRhYmxlIFtzZWxlY3Rpb25MYWJlbENvbHVtbl09XCIwXCI+PC9jZHMtdGFibGU+XG5cdCAqIDwhLS0gcmVzdWx0cyBpbiBhcmlhLWxhYmVsPVwiU2VsZWN0IGZpcnN0IGNvbHVtbiB2YWx1ZVwiXG5cdCAqICh3aGVyZSBcImZpcnN0IGNvbHVtbiB2YWx1ZVwiIGlzIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgY29sdW1uIGluIHRoZSByb3cgLS0+XG5cdCAqIGBgYFxuXHQgKi9cblx0QElucHV0KCkgc2VsZWN0aW9uTGFiZWxDb2x1bW46IG51bWJlcjtcblxuXHQvKipcblx0ICogRW1pdHMgYW4gaW5kZXggb2YgdGhlIGNvbHVtbiB0aGF0IHdhbnRzIHRvIGJlIHNvcnRlZC5cblx0ICpcblx0ICogSWYgbm8gb2JzZXJ2ZXJzIGFyZSBwcm92aWRlZCAoZGVmYXVsdCksIHRhYmxlIHdpbGwgYXR0ZW1wdCB0byBkbyBhIHNpbXBsZSBzb3J0IG9mIHRoZSBkYXRhIGxvYWRlZFxuXHQgKiBpbnRvIHRoZSBtb2RlbC5cblx0ICpcblx0ICogSWYgYW4gb2JzZXJ2ZXIgaXMgcHJvdmlkZWQsIHRhYmxlIHdpbGwgbm90IGF0dGVtcHQgYW55IHNvcnRpbmcgb2YgaXRzIG93biBhbmQgaXQgaXMgdXAgdG8gdGhlIG9ic2VydmVyXG5cdCAqIHRvIHNvcnQgdGhlIHRhYmxlLiBUaGlzIGlzIHdoYXQgeW91IHR5cGljYWxseSB3YW50IGlmIHlvdSdyZSB1c2luZyBhIGJhY2tlbmQgcXVlcnkgdG8gZ2V0IHRoZSBzb3J0ZWRcblx0ICogZGF0YSBvciB3YW50IHRvIHNvcnQgZGF0YSBhY3Jvc3MgbXVsdGlwbGUgcGFnZXMuXG5cdCAqXG5cdCAqIFVzYWdlOlxuXHQgKlxuXHQgKiBgYGB0eXBlc2NyaXB0XG5cdCAqIEBDb21wb25lbnQoe1xuXHQgKiBcdHNlbGVjdG9yOiBcImFwcC10YWJsZVwiLFxuXHQgKiBcdHRlbXBsYXRlOiBgXG5cdCAqIFx0XHQ8Y2RzLXRhYmxlXG5cdCAqIFx0XHRcdFttb2RlbF09XCJtb2RlbFwiXG5cdCAqIFx0XHRcdChzb3J0KT1cInNpbXBsZVNvcnQoJGV2ZW50KVwiPlxuXHQgKiBcdFx0XHRObyBkYXRhLlxuXHQgKiBcdFx0PC9jZHMtdGFibGU+XG5cdCAqIFx0YFxuXHQgKiB9KVxuXHQgKiBleHBvcnQgY2xhc3MgVGFibGVBcHAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cdCAqIFx0QElucHV0KCkgbW9kZWwgPSBuZXcgVGFibGVNb2RlbCgpO1xuXHQgKlxuXHQgKiBcdG5nT25Jbml0KCkge1xuXHQgKiBcdFx0dGhpcy5tb2RlbC5oZWFkZXIgPSBbXG5cdCAqIFx0XHRcdG5ldyBUYWJsZUhlYWRlckl0ZW0oeyBkYXRhOiBcIk5hbWVcIiB9KSxcblx0ICogXHRcdFx0bmV3IFRhYmxlSGVhZGVySXRlbSh7IGRhdGE6IFwiaHdlclwiIH0pXG5cdCAqIFx0XHRdO1xuXHQgKlxuXHQgKiBcdFx0dGhpcy5tb2RlbC5kYXRhID0gW1xuXHQgKiBcdFx0XHRbbmV3IFRhYmxlSXRlbSh7IGRhdGE6IFwiTmFtZSAxXCIgfSksIG5ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcInF3ZXJcIiB9KV0sXG5cdCAqIFx0XHRcdFtuZXcgVGFibGVJdGVtKHsgZGF0YTogXCJOYW1lIDNcIiB9KSwgbmV3IFRhYmxlSXRlbSh7IGRhdGE6IFwiendlclwiIH0pXSxcblx0ICogXHRcdFx0W25ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcIk5hbWUgMlwiIH0pLCBuZXcgVGFibGVJdGVtKHsgZGF0YTogXCJzd2VyXCIgfSldLFxuXHQgKiBcdFx0XHRbbmV3IFRhYmxlSXRlbSh7IGRhdGE6IFwiTmFtZSA0XCIgfSksIG5ldyBUYWJsZUl0ZW0oe2RhdGE6IFwidHdlclwifSldLFxuXHQgKiBcdFx0XHRbbmV3IFRhYmxlSXRlbSh7IGRhdGE6IFwiTmFtZSA1XCIgfSksIG5ldyBUYWJsZUl0ZW0oe2RhdGE6IFwidHdlclwifSldLFxuXHQgKiBcdFx0XHRbbmV3IFRhYmxlSXRlbSh7IGRhdGE6IFwiTmFtZSA2XCIgfSksIG5ldyBUYWJsZUl0ZW0oe2RhdGE6IFwidHdlclwifSldXG5cdCAqIFx0XHRdO1xuXHQgKiBcdH1cblx0ICpcblx0ICogXHRzaW1wbGVTb3J0KGluZGV4OiBudW1iZXIpIHtcblx0ICogXHRcdC8vIHRoaXMgZnVuY3Rpb24gZG9lcyBhIHNpbXBsZSBzb3J0LCB3aGljaCBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlIHRhYmxlIGFuZCBpZiB0aGF0J3Ncblx0ICogXHRcdC8vIGFsbCB5b3Ugd2FudCwgeW91IGRvbid0IG5lZWQgdG8gZG8gdGhpcy5cblx0ICpcblx0ICogXHRcdC8vIGhlcmUgeW91IGNhbiBxdWVyeSB5b3VyIGJhY2tlbmQgYW5kIHVwZGF0ZSB0aGUgbW9kZWwuZGF0YSBiYXNlZCBvbiB0aGUgcmVzdWx0XG5cdCAqIFx0XHRpZiAodGhpcy5tb2RlbC5oZWFkZXJbaW5kZXhdLnNvcnRlZCkge1xuXHQgKiBcdFx0XHQvLyBpZiBhbHJlYWR5IHNvcnRlZCBmbGlwIHNvcnRpbmcgZGlyZWN0aW9uXG5cdCAqIFx0XHRcdHRoaXMubW9kZWwuaGVhZGVyW2luZGV4XS5hc2NlbmRpbmcgPSB0aGlzLm1vZGVsLmhlYWRlcltpbmRleF0uZGVzY2VuZGluZztcblx0ICogXHRcdH1cblx0ICogXHRcdHRoaXMubW9kZWwuc29ydChpbmRleCk7XG5cdCAqIFx0fVxuXHQgKiB9XG5cdCAqIGBgYFxuXHQgKi9cblx0QE91dHB1dCgpIHNvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuXHQvKipcblx0ICogRW1pdHMgaWYgYWxsIHJvd3MgYXJlIHNlbGVjdGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0gbW9kZWxcblx0ICovXG5cdEBPdXRwdXQoKSBzZWxlY3RBbGwgPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdD4oKTtcblxuXHQvKipcblx0ICogRW1pdHMgaWYgYWxsIHJvd3MgYXJlIGRlc2VsZWN0ZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSBtb2RlbFxuXHQgKi9cblx0QE91dHB1dCgpIGRlc2VsZWN0QWxsID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XG5cblx0LyoqXG5cdCAqIEVtaXRzIGlmIGEgc2luZ2xlIHJvdyBpcyBzZWxlY3RlZC5cblx0ICpcblx0ICogQHBhcmFtICh7bW9kZWw6IHRoaXMubW9kZWwsIHNlbGVjdGVkUm93SW5kZXg6IGluZGV4fSlcblx0ICovXG5cdEBPdXRwdXQoKSBzZWxlY3RSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdD4oKTtcblxuXHQvKipcblx0ICogRW1pdHMgaWYgYSBzaW5nbGUgcm93IGlzIGRlc2VsZWN0ZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSAoe21vZGVsOiB0aGlzLm1vZGVsLCBkZXNlbGVjdGVkUm93SW5kZXg6IGluZGV4fSlcblx0ICovXG5cdEBPdXRwdXQoKSBkZXNlbGVjdFJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0PigpO1xuXG5cdC8qKlxuXHQgKiBFbWl0cyBpZiBhIHJvdyBpdGVtIGV4Y2x1ZGluZyBleHBhbmRCdXR0b25zLCBjaGVja2JveGVzLCBvciByYWRpb3MgaXMgY2xpY2tlZC5cblx0ICovXG5cdEBPdXRwdXQoKSByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG5cdC8qKlxuXHQgKiBFbWl0cyB3aGVuIHRhYmxlIHJlcXVpcmVzIG1vcmUgZGF0YSB0byBiZSBsb2FkZWQuXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2Nyb2xsTG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVNb2RlbD4oKTtcblxuXHQvKipcblx0ICogQ29udHJvbHMgaWYgYWxsIGNoZWNrYm94ZXMgYXJlIHZpZXdlZCBhcyBzZWxlY3RlZC5cblx0ICovXG5cdHNlbGVjdEFsbENoZWNrYm94ID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHRoZSBpbmRldGVybWluYXRlIHN0YXRlIG9mIHRoZSBoZWFkZXIgY2hlY2tib3guXG5cdCAqL1xuXHRzZWxlY3RBbGxDaGVja2JveFNvbWVTZWxlY3RlZCA9IGZhbHNlO1xuXG5cdGdldCBub0RhdGEoKSB7XG5cdFx0cmV0dXJuICF0aGlzLm1vZGVsLmRhdGEgfHxcblx0XHRcdHRoaXMubW9kZWwuZGF0YS5sZW5ndGggPT09IDAgfHxcblx0XHRcdHRoaXMubW9kZWwuZGF0YS5sZW5ndGggPT09IDEgJiYgdGhpcy5tb2RlbC5kYXRhWzBdLmxlbmd0aCA9PT0gMDtcblx0fVxuXG5cdHB1YmxpYyBpc0NvbHVtbkRyYWdnaW5nID0gZmFsc2U7XG5cdHB1YmxpYyBjb2x1bW5EcmFnZ2VkSG92ZXJJbmRleCA9IC0xO1xuXHRwdWJsaWMgY29sdW1uRHJhZ2dlZFBvc2l0aW9uID0gXCJcIjtcblxuXHRwcm90ZWN0ZWQgX21vZGVsOiBUYWJsZU1vZGVsO1xuXHRwcm90ZWN0ZWQgX2lzRGF0YUdyaWQgPSBmYWxzZTtcblx0Ly8gZmxhZyB0byBwcmV2ZW50IGdldHRlcnMvc2V0dGVycyBmcm9tIHF1ZXJ5aW5nIHRoZSB2aWV3IGJlZm9yZSBpdCdzIGZ1bGx5IGluc3RhbnRpYXRlZFxuXHRwcm90ZWN0ZWQgaXNWaWV3UmVhZHkgPSBmYWxzZTtcblxuXHRwcm90ZWN0ZWQgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblx0cHJvdGVjdGVkIHBvc2l0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cblx0cHJvdGVjdGVkIGludGVyYWN0aW9uTW9kZWw6IERhdGFHcmlkSW50ZXJhY3Rpb25Nb2RlbDtcblx0cHJvdGVjdGVkIGludGVyYWN0aW9uUG9zaXRpb25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuXHRwcm90ZWN0ZWQgX2V4cGFuZEJ1dHRvbkFyaWFMYWJlbCA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIlRBQkxFLkVYUEFORF9CVVRUT05cIik7XG5cdHByb3RlY3RlZCBfc29ydERlc2NlbmRpbmdMYWJlbCA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIlRBQkxFLlNPUlRfREVTQ0VORElOR1wiKTtcblx0cHJvdGVjdGVkIF9zb3J0QXNjZW5kaW5nTGFiZWwgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJUQUJMRS5TT1JUX0FTQ0VORElOR1wiKTtcblx0cHJvdGVjdGVkIF9jaGVja2JveEhlYWRlckxhYmVsID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiVEFCTEUuQ0hFQ0tCT1hfSEVBREVSXCIpO1xuXHRwcm90ZWN0ZWQgX2NoZWNrYm94Um93TGFiZWwgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJUQUJMRS5DSEVDS0JPWF9ST1dcIik7XG5cdHByb3RlY3RlZCBfZW5kT2ZEYXRhVGV4dCA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIlRBQkxFLkVORF9PRl9EQVRBXCIpO1xuXHRwcm90ZWN0ZWQgX3Njcm9sbFRvcFRleHQgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJUQUJMRS5TQ1JPTExfVE9QXCIpO1xuXHRwcm90ZWN0ZWQgX2ZpbHRlclRpdGxlID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiVEFCTEUuRklMVEVSXCIpO1xuXG5cdHByb3RlY3RlZCBjb2x1bW5SZXNpemVXaWR0aDogbnVtYmVyO1xuXHRwcm90ZWN0ZWQgY29sdW1uUmVzaXplTW91c2VYOiBudW1iZXI7XG5cdHByb3RlY3RlZCBtb3VzZU1vdmVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblx0cHJvdGVjdGVkIG1vdXNlVXBTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBUYWJsZS5cblx0ICovXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuXHRcdHByb3RlY3RlZCBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsXG5cdFx0cHJvdGVjdGVkIGkxOG46IEkxOG5cblx0KSB7IH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKSB7XG5cdFx0dGhpcy5pc1ZpZXdSZWFkeSA9IHRydWU7XG5cdFx0aWYgKHRoaXMuaXNEYXRhR3JpZCkge1xuXHRcdFx0dGhpcy5lbmFibGVEYXRhR3JpZEludGVyYWN0aW9ucygpO1xuXHRcdH1cblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuXHRcdGlmICh0aGlzLnBvc2l0aW9uU3Vic2NyaXB0aW9uKSB7XG5cdFx0XHR0aGlzLnBvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHR9XG5cblx0ZW5hYmxlRGF0YUdyaWRJbnRlcmFjdGlvbnMoKSB7XG5cdFx0Ly8gaWYgd2UgaGF2ZSBhbiBgaW50ZXJhY3Rpb01vZGVsYCB3ZSd2ZSBhbHJlYWR5IGVuYWJsZWQgZGF0YWdyaWRcblx0XHRpZiAodGhpcy5pbnRlcmFjdGlvbk1vZGVsKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHRhYmxlID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcInRhYmxlXCIpIGFzIEhUTUxUYWJsZUVsZW1lbnQ7XG5cdFx0Y29uc3QgdGFibGVBZGFwdGVyID0gbmV3IFRhYmxlRG9tQWRhcHRlcih0YWJsZSk7XG5cdFx0Y29uc3Qga2V5ZG93bkV2ZW50U3RyZWFtID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHRhYmxlLCBcImtleWRvd25cIik7XG5cdFx0Y29uc3QgY2xpY2tFdmVudFN0cmVhbSA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pih0YWJsZSwgXCJjbGlja1wiKTtcblx0XHR0aGlzLmludGVyYWN0aW9uTW9kZWwgPSBuZXcgRGF0YUdyaWRJbnRlcmFjdGlvbk1vZGVsKGtleWRvd25FdmVudFN0cmVhbSwgY2xpY2tFdmVudFN0cmVhbSwgdGFibGVBZGFwdGVyKTtcblx0XHR0aGlzLnBvc2l0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5pbnRlcmFjdGlvbk1vZGVsLnBvc2l0aW9uLnN1YnNjcmliZShldmVudCA9PiB7XG5cdFx0XHRjb25zdCBbY3VycmVudFJvdywgY3VycmVudENvbHVtbl0gPSBldmVudC5jdXJyZW50O1xuXHRcdFx0Y29uc3QgW3ByZXZpb3VzUm93LCBwcmV2aW91c0NvbHVtbl0gPSBldmVudC5wcmV2aW91cztcblxuXHRcdFx0Y29uc3QgY3VycmVudEVsZW1lbnQgPSB0YWJsZUFkYXB0ZXIuZ2V0Q2VsbChjdXJyZW50Um93LCBjdXJyZW50Q29sdW1uKTtcblx0XHRcdFRhYmxlLnNldFRhYkluZGV4KGN1cnJlbnRFbGVtZW50LCAwKTtcblxuXHRcdFx0Ly8gaWYgdGhlIG1vZGVsIGhhcyBqdXN0IGluaXRpYWxpemVkIGRvbid0IGZvY3VzIG9yIHJlc2V0IGFueXRoaW5nXG5cdFx0XHRpZiAocHJldmlvdXNSb3cgPT09IC0xIHx8IHByZXZpb3VzQ29sdW1uID09PSAtMSkgeyByZXR1cm47IH1cblx0XHRcdC8vIE1ha2UgdGhlIHByZXZpb3VzIGNlbGwgdW5mb2N1c2FibGUgKGlmIGl0J3Mgbm90IHRoZSBjdXJyZW50KVxuXHRcdFx0aWYgKHByZXZpb3VzUm93ICE9PSBjdXJyZW50Um93IHx8IHByZXZpb3VzQ29sdW1uICE9PSBjdXJyZW50Q29sdW1uKSB7XG5cdFx0XHRcdGNvbnN0IHByZXZpb3VzRWxlbWVudCA9IHRhYmxlQWRhcHRlci5nZXRDZWxsKHByZXZpb3VzUm93LCBwcmV2aW91c0NvbHVtbik7XG5cdFx0XHRcdFRhYmxlLnNldFRhYkluZGV4KHByZXZpb3VzRWxlbWVudCwgLTEpO1xuXHRcdFx0fVxuXHRcdFx0VGFibGUuZm9jdXMoY3VycmVudEVsZW1lbnQpO1xuXHRcdH0pO1xuXHRcdC8vIGNhbGwgdGhpcyBhZnRlciBhc3NpZ25pbmcgYHRoaXMuaW50ZXJhY3Rpb25Nb2RlbGAgc2luY2UgaXQgZGVwZW5kcyBvbiBpdFxuXHRcdHRoaXMucmVzZXRUYWJJbmRleCgpO1xuXHR9XG5cblx0ZGlzYWJsZURhdGFHcmlkSW50ZXJhY3Rpb25zKCkge1xuXHRcdC8vIHVuc3Vic2NyaWJlIGZpcnN0IHNvIHdlIGRvbid0IGNhdXNlIHRoZSBmb2N1cyB0byBmbHkgYXJvdW5kXG5cdFx0aWYgKHRoaXMucG9zaXRpb25TdWJzY3JpcHRpb24pIHtcblx0XHRcdHRoaXMucG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdFx0Ly8gdW5kbyB0YWIgaW5kZXhpbmcgKGFsc28gcmVzZXRzIHRoZSBtb2RlbClcblx0XHR0aGlzLnJlc2V0VGFiSW5kZXgoMCk7XG5cdFx0Ly8gbnVsbCBvdXQgdGhlIG1vZGVsIHJlZlxuXHRcdHRoaXMuaW50ZXJhY3Rpb25Nb2RlbCA9IG51bGw7XG5cdH1cblxuXHRvblNlbGVjdEFsbCgpIHtcblx0XHR0aGlzLm1vZGVsLnNlbGVjdEFsbCh0cnVlKTtcblx0XHR0aGlzLnNlbGVjdEFsbC5lbWl0KHRoaXMubW9kZWwpO1xuXHR9XG5cblx0b25EZXNlbGVjdEFsbCgpIHtcblx0XHR0aGlzLm1vZGVsLnNlbGVjdEFsbChmYWxzZSk7XG5cdFx0dGhpcy5kZXNlbGVjdEFsbC5lbWl0KHRoaXMubW9kZWwpO1xuXHR9XG5cblx0b25TZWxlY3RSb3coZXZlbnQpIHtcblx0XHQvLyBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgc2VsZWN0ZWRSb3dJbmRleCBwcm9wZXJ0eVxuXHRcdGlmIChPYmplY3Qua2V5cyhldmVudCkuaW5jbHVkZXMoXCJzZWxlY3RlZFJvd0luZGV4XCIpKSB7XG5cdFx0XHRpZiAodGhpcy5lbmFibGVTaW5nbGVTZWxlY3QpIHtcblx0XHRcdFx0dGhpcy5tb2RlbC5zZWxlY3RBbGwoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5tb2RlbC5zZWxlY3RSb3coZXZlbnQuc2VsZWN0ZWRSb3dJbmRleCwgdHJ1ZSk7XG5cdFx0XHR0aGlzLnNlbGVjdFJvdy5lbWl0KGV2ZW50KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5tb2RlbC5zZWxlY3RSb3coZXZlbnQuZGVzZWxlY3RlZFJvd0luZGV4LCBmYWxzZSk7XG5cdFx0XHR0aGlzLmRlc2VsZWN0Um93LmVtaXQoZXZlbnQpO1xuXHRcdH1cblx0fVxuXG5cdG9uUm93Q2xpY2soaW5kZXg6IG51bWJlcikge1xuXHRcdHRoaXMucm93Q2xpY2suZW1pdChpbmRleCk7XG5cdH1cblxuXHR1cGRhdGVTZWxlY3RBbGxDaGVja2JveCgpIHtcblx0XHRjb25zdCBzZWxlY3RlZFJvd3NDb3VudCA9IHRoaXMubW9kZWwuc2VsZWN0ZWRSb3dzQ291bnQoKTtcblxuXHRcdGlmIChzZWxlY3RlZFJvd3NDb3VudCA8PSAwKSB7XG5cdFx0XHQvLyByZXNldCBzZWxlY3QgYWxsIGNoZWNrYm94IGlmIG5vdGhpbmcgc2VsZWN0ZWRcblx0XHRcdHRoaXMuc2VsZWN0QWxsQ2hlY2tib3ggPSBmYWxzZTtcblx0XHRcdHRoaXMuc2VsZWN0QWxsQ2hlY2tib3hTb21lU2VsZWN0ZWQgPSBmYWxzZTtcblx0XHR9IGVsc2UgaWYgKHNlbGVjdGVkUm93c0NvdW50IDwgdGhpcy5tb2RlbC5kYXRhLmxlbmd0aCkge1xuXHRcdFx0dGhpcy5zZWxlY3RBbGxDaGVja2JveCA9IHRydWU7XG5cdFx0XHR0aGlzLnNlbGVjdEFsbENoZWNrYm94U29tZVNlbGVjdGVkID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZWxlY3RBbGxDaGVja2JveCA9IHRydWU7XG5cdFx0XHR0aGlzLnNlbGVjdEFsbENoZWNrYm94U29tZVNlbGVjdGVkID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0cmVzZXRUYWJJbmRleChuZXdUYWJJbmRleCA9IC0xKSB7XG5cdFx0Ly8gZW5zdXJlIHRoZSB2aWV3IGlzIHJlYWR5IGZvciB0aGUgcmVzZXQgYmVmb3JlIHdlIHByZWZvcm0gdGhlIGFjdHVhbCByZXNldFxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0Ly8gcmVzZXQgYWxsIHRoZSB0YWJJbmRleGVzIHdlIGNhbiBmaW5kXG5cdFx0XHRjb25zdCBmb2N1c0VsZW1lbnRMaXN0ID0gZ2V0Rm9jdXNFbGVtZW50TGlzdCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGFiYmFibGVTZWxlY3Rvcklnbm9yZVRhYkluZGV4KTtcblx0XHRcdGlmIChmb2N1c0VsZW1lbnRMaXN0KSB7XG5cdFx0XHRcdGZvY3VzRWxlbWVudExpc3QuZm9yRWFjaCh0YWJiYWJsZSA9PiB7XG5cdFx0XHRcdFx0dGFiYmFibGUudGFiSW5kZXggPSBuZXdUYWJJbmRleDtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHQvLyByZXNldCBpbnRlcmFjdGlvbiBtb2RlbCBwb3NpdGlvbnMgYW5kIHRhYkluZGV4ZXNcblx0XHRcdGlmICh0aGlzLmludGVyYWN0aW9uTW9kZWwpIHtcblx0XHRcdFx0dGhpcy5pbnRlcmFjdGlvbk1vZGVsLnJlc2V0VGFiSW5kZXhlcyhuZXdUYWJJbmRleCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRjb2x1bW5SZXNpemVTdGFydChldmVudCwgY29sdW1uKSB7XG5cdFx0dGhpcy5jb2x1bW5SZXNpemVXaWR0aCA9IHBhcnNlSW50KGNvbHVtbi5zdHlsZS53aWR0aCwgMTApO1xuXHRcdHRoaXMuY29sdW1uUmVzaXplTW91c2VYID0gZXZlbnQuY2xpZW50WDtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0dGhpcy5tb3VzZU1vdmVTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQoZG9jdW1lbnQuYm9keSwgXCJtb3VzZW1vdmVcIikuc3Vic2NyaWJlKGV2ZW50ID0+IHtcblx0XHRcdHRoaXMuY29sdW1uUmVzaXplUHJvZ3Jlc3MoZXZlbnQsIGNvbHVtbik7XG5cdFx0fSk7XG5cdFx0dGhpcy5tb3VzZVVwU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KGRvY3VtZW50LmJvZHksIFwibW91c2V1cFwiKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuXHRcdFx0dGhpcy5jb2x1bW5SZXNpemVFbmQoZXZlbnQsIGNvbHVtbik7XG5cdFx0fSk7XG5cdH1cblxuXHRjb2x1bW5SZXNpemVQcm9ncmVzcyhldmVudCwgY29sdW1uKSB7XG5cdFx0Y29uc3QgbW92ZSA9IGV2ZW50LmNsaWVudFggLSB0aGlzLmNvbHVtblJlc2l6ZU1vdXNlWDtcblx0XHRjb2x1bW4uc3R5bGUud2lkdGggPSBgJHt0aGlzLmNvbHVtblJlc2l6ZVdpZHRoICsgbW92ZX1weGA7XG5cdH1cblxuXHRjb2x1bW5SZXNpemVFbmQoZXZlbnQsIGNvbHVtbikge1xuXHRcdHRoaXMubW91c2VNb3ZlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cdFx0dGhpcy5tb3VzZVVwU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cdH1cblxuXHQvKipcblx0ICogVHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgc2Nyb2xscyBvbiB0aGUgYDx0Ym9keT5gIGVsZW1lbnQuXG5cdCAqIEVtaXRzIHRoZSBgc2Nyb2xsTG9hZGAgZXZlbnQuXG5cdCAqL1xuXHRvblNjcm9sbChldmVudCkge1xuXHRcdGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IGV2ZW50LnRhcmdldC5zY3JvbGxIZWlnaHQgLSBldmVudC50YXJnZXQuY2xpZW50SGVpZ2h0IC0gZXZlbnQudGFyZ2V0LnNjcm9sbFRvcDtcblxuXHRcdGlmIChkaXN0YW5jZUZyb21Cb3R0b20gPD0gdGhpcy5zY3JvbGxMb2FkRGlzdGFuY2UpIHtcblx0XHRcdHRoaXMuc2Nyb2xsTG9hZC5lbWl0KHRoaXMubW9kZWwpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm1vZGVsLmlzRW5kID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0Y29sdW1uRHJhZ1N0YXJ0KGV2ZW50LCBjb2x1bW5JbmRleCkge1xuXHRcdHRoaXMuaXNDb2x1bW5EcmFnZ2luZyA9IHRydWU7XG5cdFx0dGhpcy5jb2x1bW5EcmFnZ2VkSG92ZXJJbmRleCA9IGNvbHVtbkluZGV4O1xuXHRcdGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwiY29sdW1uSW5kZXhcIiwgSlNPTi5zdHJpbmdpZnkoY29sdW1uSW5kZXgpKTtcblx0fVxuXG5cdGNvbHVtbkRyYWdFbmQoZXZlbnQsIGNvbHVtbkluZGV4KSB7XG5cdFx0dGhpcy5pc0NvbHVtbkRyYWdnaW5nID0gZmFsc2U7XG5cdFx0dGhpcy5jb2x1bW5EcmFnZ2VkSG92ZXJJbmRleCA9IC0xO1xuXHR9XG5cblx0Y29sdW1uRHJhZ0VudGVyKGV2ZW50LCBwb3NpdGlvbiwgY29sdW1uSW5kZXgpIHtcblx0XHR0aGlzLmNvbHVtbkRyYWdnZWRQb3NpdGlvbiA9IHBvc2l0aW9uO1xuXHRcdHRoaXMuY29sdW1uRHJhZ2dlZEhvdmVySW5kZXggPSBjb2x1bW5JbmRleDtcblx0fVxuXG5cdGNvbHVtbkRyYWdMZWF2ZShldmVudCwgcG9zaXRpb24sIGNvbHVtbkluZGV4KSB7XG5cdFx0dGhpcy5jb2x1bW5EcmFnZ2VkUG9zaXRpb24gPSBcIlwiO1xuXHR9XG5cblx0Y29sdW1uRHJhZ292ZXIoZXZlbnQsIHBvc2l0aW9uLCBjb2x1bW5JbmRleCkge1xuXHRcdHRoaXMuY29sdW1uRHJhZ2dlZEhvdmVySW5kZXggPSBjb2x1bW5JbmRleDtcblx0XHR0aGlzLmNvbHVtbkRyYWdnZWRQb3NpdGlvbiA9IHBvc2l0aW9uO1xuXG5cdFx0Ly8gbmVlZGVkIHRvIHRlbGwgYnJvd3NlciB0byBhbGxvdyBkcm9wcGluZ1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdH1cblxuXHRjb2x1bW5Ecm9wKGV2ZW50LCBwb3NpdGlvbiwgY29sdW1uSW5kZXgpIHtcblx0XHR0aGlzLmlzQ29sdW1uRHJhZ2dpbmcgPSBmYWxzZTtcblx0XHR0aGlzLmNvbHVtbkRyYWdnZWRIb3ZlckluZGV4ID0gLTE7XG5cdFx0dGhpcy5jb2x1bW5EcmFnZ2VkUG9zaXRpb24gPSBcIlwiO1xuXG5cdFx0dGhpcy5tb2RlbC5tb3ZlQ29sdW1uKFxuXHRcdFx0cGFyc2VJbnQoZXZlbnQuZGF0YVRyYW5zZmVyLmdldERhdGEoXCJjb2x1bW5JbmRleFwiKSwgMTApLFxuXHRcdFx0Y29sdW1uSW5kZXggKyAocG9zaXRpb24gPT09IFwicmlnaHRcIiA/IDEgOiAwKVxuXHRcdCk7XG5cdH1cblxuXHRkb1NvcnQoaW5kZXg6IG51bWJlcikge1xuXHRcdGlmICh0aGlzLnNvcnQub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0Ly8gbm8gc29ydCBwcm92aWRlZCBzbyBkbyB0aGUgc2ltcGxlIHNvcnRcblx0XHRcdGlmICh0aGlzLm1vZGVsLmhlYWRlcltpbmRleF0uc29ydGVkKSB7XG5cdFx0XHRcdC8vIGlmIGFscmVhZHkgc29ydGVkIGZsaXAgc29ydGluZyBkaXJlY3Rpb25cblx0XHRcdFx0dGhpcy5tb2RlbC5oZWFkZXJbaW5kZXhdLmFzY2VuZGluZyA9IHRoaXMubW9kZWwuaGVhZGVyW2luZGV4XS5kZXNjZW5kaW5nO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5tb2RlbC5zb3J0KGluZGV4KTtcblx0XHR9XG5cblx0XHR0aGlzLnNvcnQuZW1pdChpbmRleCk7XG5cdH1cblxuXHQvKipcblx0ICogVHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgc2Nyb2xscyBvbiB0aGUgYDx0Ym9keT5gIGVsZW1lbnQuXG5cdCAqIEVtaXRzIHRoZSBgc2Nyb2xsTG9hZGAgZXZlbnQuXG5cdCAqL1xuXHRzY3JvbGxUb1RvcChldmVudCkge1xuXHRcdGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuWzFdLnNjcm9sbFRvcCA9IDA7XG5cdFx0dGhpcy5tb2RlbC5pc0VuZCA9IGZhbHNlO1xuXHR9XG5cblx0Z2V0U2VsZWN0aW9uTGFiZWxWYWx1ZShyb3c6IFRhYmxlSXRlbVtdKSB7XG5cdFx0aWYgKCF0aGlzLnNlbGVjdGlvbkxhYmVsQ29sdW1uKSB7XG5cdFx0XHRyZXR1cm4geyB2YWx1ZTogdGhpcy5pMThuLmdldCgpLlRBQkxFLlJPVyB9O1xuXHRcdH1cblx0XHRyZXR1cm4geyB2YWx1ZTogcm93W3RoaXMuc2VsZWN0aW9uTGFiZWxDb2x1bW5dLmRhdGEgfTtcblx0fVxuXG5cdGdldEV4cGFuZEJ1dHRvbkFyaWFMYWJlbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fZXhwYW5kQnV0dG9uQXJpYUxhYmVsLnN1YmplY3Q7XG5cdH1cblx0Z2V0U29ydERlc2NlbmRpbmdMYWJlbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fc29ydERlc2NlbmRpbmdMYWJlbC5zdWJqZWN0O1xuXHR9XG5cdGdldFNvcnRBc2NlbmRpbmdMYWJlbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fc29ydEFzY2VuZGluZ0xhYmVsLnN1YmplY3Q7XG5cdH1cblxuXHRnZXRDaGVja2JveEhlYWRlckxhYmVsKCkge1xuXHRcdHJldHVybiB0aGlzLl9jaGVja2JveEhlYWRlckxhYmVsLnN1YmplY3Q7XG5cdH1cblxuXHRnZXRDaGVja2JveFJvd0xhYmVsKCkge1xuXHRcdHJldHVybiB0aGlzLl9jaGVja2JveFJvd0xhYmVsLnN1YmplY3Q7XG5cdH1cblxuXHRnZXRFbmRPZkRhdGFUZXh0KCkge1xuXHRcdHJldHVybiB0aGlzLl9lbmRPZkRhdGFUZXh0LnN1YmplY3Q7XG5cdH1cblxuXHRnZXRTY3JvbGxUb3BUZXh0KCkge1xuXHRcdHJldHVybiB0aGlzLl9zY3JvbGxUb3BUZXh0LnN1YmplY3Q7XG5cdH1cblxuXHRnZXRGaWx0ZXJUaXRsZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fZmlsdGVyVGl0bGUuc3ViamVjdDtcblx0fVxufVxuIl19
|
|
@@ -161,7 +161,7 @@ class ContentSwitcher {
|
|
|
161
161
|
});
|
|
162
162
|
}
|
|
163
163
|
hostkeys(event) {
|
|
164
|
-
const buttonList = Array.from(this.elementRef.nativeElement.querySelectorAll("[cdsContentOption]"));
|
|
164
|
+
const buttonList = Array.from(this.elementRef.nativeElement.querySelectorAll("[cdsContentOption], [ibmContentOption]"));
|
|
165
165
|
switch (event.key) {
|
|
166
166
|
case "ArrowRight":
|
|
167
167
|
event.preventDefault();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carbon-components-angular-content-switcher.mjs","sources":["../../src/content-switcher/content-switcher-option.directive.ts","../../src/content-switcher/content-switcher.component.ts","../../src/content-switcher/content-switcher.module.ts","../../src/content-switcher/carbon-components-angular-content-switcher.ts"],"sourcesContent":["import {\n\tDirective,\n\tHostBinding,\n\tInput,\n\tHostListener,\n\tOutput,\n\tEventEmitter,\n\tElementRef,\n\tOnInit,\n\tRenderer2\n} from \"@angular/core\";\n\n@Directive({\n\tselector: \"[cdsContentOption], [ibmContentOption]\"\n})\nexport class ContentSwitcherOption implements OnInit {\n\t/**\n\t * Used to activate the option. Only one option may be `active` at a time\n\t */\n\t@Input() set active (value: boolean) {\n\t\tthis._active = value;\n\t\tthis.selectedClass = value;\n\t\tthis.ariaSelected = value;\n\t\tthis.tabindex = value ? \"0\" : \"-1\";\n\t}\n\n\tget active() {\n\t\treturn this._active;\n\t}\n\n\t/**\n\t * Internal name for the option.\n\t * Should be something that identifies the option to the application.\n\t * Accessible from the `ContentSwitcher` `selected` emitter\n\t */\n\t@Input() name = \"option\";\n\n\t/**\n\t * Emits when the option is selected.\n\t */\n\t@Output() selected = new EventEmitter<boolean>();\n\n\t@Output() onClick = new EventEmitter<MouseEvent>();\n\n\t@Output() onFocus = new EventEmitter<FocusEvent>();\n\n\t@HostBinding(\"class\") switcherClass = \"cds--content-switcher-btn\";\n\t@HostBinding(\"class.cds--content-switcher--selected\") selectedClass = false;\n\t@HostBinding(\"attr.role\") role = \"tab\";\n\t@HostBinding(\"attr.aria-selected\") ariaSelected = false;\n\t@HostBinding(\"attr.tabIndex\") tabindex = \"-1\";\n\n\tprotected _active = false;\n\n\tconstructor(private renderer: Renderer2, private hostElement: ElementRef) {}\n\n\t@HostListener(\"click\", [\"$event\"])\n\thostClick(event: MouseEvent) {\n\t\tthis.onClick.emit(event);\n\t\t// skip setting and emitting if the option is already active\n\t\tif (this.active) { return; }\n\t\tthis.active = true;\n\t\tthis.selected.emit(true);\n\t}\n\n\t@HostListener(\"focus\", [\"$event\"])\n\tdoFocus(event: FocusEvent) {\n\t\tthis.onFocus.emit(event);\n\t\t// skip setting and emitting if the option is already active\n\t\tif (this.active) { return; }\n\t\tthis.active = true;\n\t\tthis.selected.emit(true);\n\t}\n\n\t/*\n\t* encapsulating the content in a span with cds--content-switcher__label class\n\t* to mimic what is done in the react version\n\t*/\n\tngOnInit(): void {\n\t\tconst hostNativeElement = (this.hostElement.nativeElement as HTMLElement);\n\t\tconst spanWrapper = this.renderer.createElement(\"span\");\n\t\tthis.renderer.addClass(spanWrapper, \"cds--content-switcher__label\");\n\t\tconst hostChildren: ChildNode[] = [];\n\t\thostNativeElement.childNodes.forEach(node => hostChildren.push(node));\n\t\thostChildren.forEach(node => {\n\t\t\tthis.renderer.removeChild(hostNativeElement, node);\n\t\t\tthis.renderer.appendChild(spanWrapper, node);\n\t\t});\n\t\tthis.renderer.appendChild(hostNativeElement, spanWrapper);\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tContentChildren,\n\tQueryList,\n\tOutput,\n\tEventEmitter,\n\tAfterViewInit,\n\tHostListener,\n\tElementRef\n} from \"@angular/core\";\nimport { ContentSwitcherOption } from \"./content-switcher-option.directive\";\nimport { isFocusInLastItem, isFocusInFirstItem } from \"carbon-components-angular/common\";\n\n/**\n * The content switcher can be used for toggling between distinct options.\n * Similar to tabs, but without an associated content panel\n *\n * [See demo](../../?path=/story/components-content-switcher--basic)\n *\n * ```html\n * <cds-content-switcher (selected)=\"selected($event)\">\n *\t\t<button cdsContentOption>First section</button>\n *\t\t<button cdsContentOption>Second section</button>\n *\t\t<button cdsContentOption>Third section</button>\n *\t</cds-content-switcher>\n *\t```\n */\n@Component({\n\tselector: \"cds-content-switcher, ibm-content-switcher\",\n\ttemplate: `\n\t\t<div\n\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\tclass=\"cds--content-switcher\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'cds--content-switcher--sm': size === 'sm',\n\t\t\t\t'cds--content-switcher--md': size === 'md',\n\t\t\t\t'cds--content-switcher--lg': size === 'lg'\n\t\t\t}\"\n\t\t\trole=\"tablist\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t`\n})\nexport class ContentSwitcher implements AfterViewInit {\n\t@Input() ariaLabel = \"content switcher\";\n\n\t/**\n\t * Set content switcher size\n\t */\n\t@Input() size: \"sm\" | \"md\" | \"lg\" = \"md\";\n\n\t/**\n\t * Emits the activated `ContentSwitcherOption`\n\t */\n\t@Output() selected = new EventEmitter<ContentSwitcherOption>();\n\n\t@ContentChildren(ContentSwitcherOption) options: QueryList<ContentSwitcherOption>;\n\n\tconstructor(protected elementRef: ElementRef) {}\n\n\tngAfterViewInit() {\n\t\tconst firstActive = this.options.find(option => option.active);\n\t\t// delay setting active until the DOM has settled\n\t\tif (!firstActive) {\n\t\t\tsetTimeout(() => this.options.first.active = true);\n\t\t}\n\t\t// subscribe to each item, emit when one is selected, and reset the active states\n\t\tthis.options.forEach(option => {\n\t\t\toption.selected.subscribe((_: boolean) => {\n\t\t\t\tconst active = option;\n\t\t\t\tthis.options.forEach(option => {\n\t\t\t\t\tif (option !== active) {\n\t\t\t\t\t\toption.active = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.selected.emit(active);\n\t\t\t});\n\t\t});\n\t}\n\n\t@HostListener(\"keydown\", [\"$event\"])\n\thostkeys(event: KeyboardEvent) {\n\t\tconst buttonList = Array.from<any>(this.elementRef.nativeElement.querySelectorAll(\"[cdsContentOption]\"));\n\n\t\tswitch (event.key) {\n\t\t\tcase \"ArrowRight\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (!isFocusInLastItem(event, buttonList)) {\n\t\t\t\t\tconst index = buttonList.findIndex(item => item === event.target);\n\t\t\t\t\tbuttonList[index + 1].focus();\n\t\t\t\t} else {\n\t\t\t\t\tbuttonList[0].focus();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"ArrowLeft\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (!isFocusInFirstItem(event, buttonList)) {\n\t\t\t\t\tconst index = buttonList.findIndex(item => item === event.target);\n\t\t\t\t\tbuttonList[index - 1].focus();\n\t\t\t\t} else {\n\t\t\t\t\tbuttonList[buttonList.length - 1].focus();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Home\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tbuttonList[0].focus();\n\t\t\t\tbreak;\n\n\t\t\tcase \"End\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tbuttonList[buttonList.length - 1].focus();\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { ContentSwitcher } from \"./content-switcher.component\";\nimport { ContentSwitcherOption } from \"./content-switcher-option.directive\";\n\n@NgModule({\n\tdeclarations: [\n\t\tContentSwitcher,\n\t\tContentSwitcherOption\n\t],\n\texports: [\n\t\tContentSwitcher,\n\t\tContentSwitcherOption\n\t],\n\timports: [CommonModule]\n})\nexport class ContentSwitcherModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"carbon-components-angular-content-switcher.mjs","sources":["../../src/content-switcher/content-switcher-option.directive.ts","../../src/content-switcher/content-switcher.component.ts","../../src/content-switcher/content-switcher.module.ts","../../src/content-switcher/carbon-components-angular-content-switcher.ts"],"sourcesContent":["import {\n\tDirective,\n\tHostBinding,\n\tInput,\n\tHostListener,\n\tOutput,\n\tEventEmitter,\n\tElementRef,\n\tOnInit,\n\tRenderer2\n} from \"@angular/core\";\n\n@Directive({\n\tselector: \"[cdsContentOption], [ibmContentOption]\"\n})\nexport class ContentSwitcherOption implements OnInit {\n\t/**\n\t * Used to activate the option. Only one option may be `active` at a time\n\t */\n\t@Input() set active (value: boolean) {\n\t\tthis._active = value;\n\t\tthis.selectedClass = value;\n\t\tthis.ariaSelected = value;\n\t\tthis.tabindex = value ? \"0\" : \"-1\";\n\t}\n\n\tget active() {\n\t\treturn this._active;\n\t}\n\n\t/**\n\t * Internal name for the option.\n\t * Should be something that identifies the option to the application.\n\t * Accessible from the `ContentSwitcher` `selected` emitter\n\t */\n\t@Input() name = \"option\";\n\n\t/**\n\t * Emits when the option is selected.\n\t */\n\t@Output() selected = new EventEmitter<boolean>();\n\n\t@Output() onClick = new EventEmitter<MouseEvent>();\n\n\t@Output() onFocus = new EventEmitter<FocusEvent>();\n\n\t@HostBinding(\"class\") switcherClass = \"cds--content-switcher-btn\";\n\t@HostBinding(\"class.cds--content-switcher--selected\") selectedClass = false;\n\t@HostBinding(\"attr.role\") role = \"tab\";\n\t@HostBinding(\"attr.aria-selected\") ariaSelected = false;\n\t@HostBinding(\"attr.tabIndex\") tabindex = \"-1\";\n\n\tprotected _active = false;\n\n\tconstructor(private renderer: Renderer2, private hostElement: ElementRef) {}\n\n\t@HostListener(\"click\", [\"$event\"])\n\thostClick(event: MouseEvent) {\n\t\tthis.onClick.emit(event);\n\t\t// skip setting and emitting if the option is already active\n\t\tif (this.active) { return; }\n\t\tthis.active = true;\n\t\tthis.selected.emit(true);\n\t}\n\n\t@HostListener(\"focus\", [\"$event\"])\n\tdoFocus(event: FocusEvent) {\n\t\tthis.onFocus.emit(event);\n\t\t// skip setting and emitting if the option is already active\n\t\tif (this.active) { return; }\n\t\tthis.active = true;\n\t\tthis.selected.emit(true);\n\t}\n\n\t/*\n\t* encapsulating the content in a span with cds--content-switcher__label class\n\t* to mimic what is done in the react version\n\t*/\n\tngOnInit(): void {\n\t\tconst hostNativeElement = (this.hostElement.nativeElement as HTMLElement);\n\t\tconst spanWrapper = this.renderer.createElement(\"span\");\n\t\tthis.renderer.addClass(spanWrapper, \"cds--content-switcher__label\");\n\t\tconst hostChildren: ChildNode[] = [];\n\t\thostNativeElement.childNodes.forEach(node => hostChildren.push(node));\n\t\thostChildren.forEach(node => {\n\t\t\tthis.renderer.removeChild(hostNativeElement, node);\n\t\t\tthis.renderer.appendChild(spanWrapper, node);\n\t\t});\n\t\tthis.renderer.appendChild(hostNativeElement, spanWrapper);\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tContentChildren,\n\tQueryList,\n\tOutput,\n\tEventEmitter,\n\tAfterViewInit,\n\tHostListener,\n\tElementRef\n} from \"@angular/core\";\nimport { ContentSwitcherOption } from \"./content-switcher-option.directive\";\nimport { isFocusInLastItem, isFocusInFirstItem } from \"carbon-components-angular/common\";\n\n/**\n * The content switcher can be used for toggling between distinct options.\n * Similar to tabs, but without an associated content panel\n *\n * [See demo](../../?path=/story/components-content-switcher--basic)\n *\n * ```html\n * <cds-content-switcher (selected)=\"selected($event)\">\n *\t\t<button cdsContentOption>First section</button>\n *\t\t<button cdsContentOption>Second section</button>\n *\t\t<button cdsContentOption>Third section</button>\n *\t</cds-content-switcher>\n *\t```\n */\n@Component({\n\tselector: \"cds-content-switcher, ibm-content-switcher\",\n\ttemplate: `\n\t\t<div\n\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\tclass=\"cds--content-switcher\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'cds--content-switcher--sm': size === 'sm',\n\t\t\t\t'cds--content-switcher--md': size === 'md',\n\t\t\t\t'cds--content-switcher--lg': size === 'lg'\n\t\t\t}\"\n\t\t\trole=\"tablist\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t`\n})\nexport class ContentSwitcher implements AfterViewInit {\n\t@Input() ariaLabel = \"content switcher\";\n\n\t/**\n\t * Set content switcher size\n\t */\n\t@Input() size: \"sm\" | \"md\" | \"lg\" = \"md\";\n\n\t/**\n\t * Emits the activated `ContentSwitcherOption`\n\t */\n\t@Output() selected = new EventEmitter<ContentSwitcherOption>();\n\n\t@ContentChildren(ContentSwitcherOption) options: QueryList<ContentSwitcherOption>;\n\n\tconstructor(protected elementRef: ElementRef) {}\n\n\tngAfterViewInit() {\n\t\tconst firstActive = this.options.find(option => option.active);\n\t\t// delay setting active until the DOM has settled\n\t\tif (!firstActive) {\n\t\t\tsetTimeout(() => this.options.first.active = true);\n\t\t}\n\t\t// subscribe to each item, emit when one is selected, and reset the active states\n\t\tthis.options.forEach(option => {\n\t\t\toption.selected.subscribe((_: boolean) => {\n\t\t\t\tconst active = option;\n\t\t\t\tthis.options.forEach(option => {\n\t\t\t\t\tif (option !== active) {\n\t\t\t\t\t\toption.active = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.selected.emit(active);\n\t\t\t});\n\t\t});\n\t}\n\n\t@HostListener(\"keydown\", [\"$event\"])\n\thostkeys(event: KeyboardEvent) {\n\t\tconst buttonList = Array.from<any>(this.elementRef.nativeElement.querySelectorAll(\"[cdsContentOption], [ibmContentOption]\"));\n\n\t\tswitch (event.key) {\n\t\t\tcase \"ArrowRight\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (!isFocusInLastItem(event, buttonList)) {\n\t\t\t\t\tconst index = buttonList.findIndex(item => item === event.target);\n\t\t\t\t\tbuttonList[index + 1].focus();\n\t\t\t\t} else {\n\t\t\t\t\tbuttonList[0].focus();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"ArrowLeft\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (!isFocusInFirstItem(event, buttonList)) {\n\t\t\t\t\tconst index = buttonList.findIndex(item => item === event.target);\n\t\t\t\t\tbuttonList[index - 1].focus();\n\t\t\t\t} else {\n\t\t\t\t\tbuttonList[buttonList.length - 1].focus();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"Home\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tbuttonList[0].focus();\n\t\t\t\tbreak;\n\n\t\t\tcase \"End\":\n\t\t\t\tevent.preventDefault();\n\t\t\t\tbuttonList[buttonList.length - 1].focus();\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { ContentSwitcher } from \"./content-switcher.component\";\nimport { ContentSwitcherOption } from \"./content-switcher-option.directive\";\n\n@NgModule({\n\tdeclarations: [\n\t\tContentSwitcher,\n\t\tContentSwitcherOption\n\t],\n\texports: [\n\t\tContentSwitcher,\n\t\tContentSwitcherOption\n\t],\n\timports: [CommonModule]\n})\nexport class ContentSwitcherModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAea,qBAAqB,CAAA;IAuCjC,WAAoB,CAAA,QAAmB,EAAU,WAAuB,EAAA;AAApD,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAAU,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AAxBxE;;;;AAIG;AACM,QAAA,IAAI,CAAA,IAAA,GAAG,QAAQ,CAAC;AAEzB;;AAEG;AACO,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAW,CAAC;AAEvC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAc,CAAC;AAEzC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAc,CAAC;AAE7B,QAAA,IAAa,CAAA,aAAA,GAAG,2BAA2B,CAAC;AACZ,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAClD,QAAA,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;AACJ,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AAEpC,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;KAEkD;AAtC5E;;AAEG;IACH,IAAa,MAAM,CAAE,KAAc,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC;KACnC;AAED,IAAA,IAAI,MAAM,GAAA;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;KACpB;AA6BD,IAAA,SAAS,CAAC,KAAiB,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;QAEzB,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO;AAAE,SAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACzB;AAGD,IAAA,OAAO,CAAC,KAAiB,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;QAEzB,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO;AAAE,SAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACzB;AAED;;;AAGE;IACF,QAAQ,GAAA;AACP,QAAA,MAAM,iBAAiB,GAAI,IAAI,CAAC,WAAW,CAAC,aAA6B,CAAC;QAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,8BAA8B,CAAC,CAAC;QACpE,MAAM,YAAY,GAAgB,EAAE,CAAC;AACrC,QAAA,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,IAAG;YAC3B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;KAC1D;;kHA1EW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,uCAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wCAAwC;iBAClD,CAAA;yHAKa,MAAM,EAAA,CAAA;sBAAlB,KAAK;gBAgBG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAKI,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBAEG,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBAEG,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBAEe,aAAa,EAAA,CAAA;sBAAlC,WAAW;uBAAC,OAAO,CAAA;gBACkC,aAAa,EAAA,CAAA;sBAAlE,WAAW;uBAAC,uCAAuC,CAAA;gBAC1B,IAAI,EAAA,CAAA;sBAA7B,WAAW;uBAAC,WAAW,CAAA;gBACW,YAAY,EAAA,CAAA;sBAA9C,WAAW;uBAAC,oBAAoB,CAAA;gBACH,QAAQ,EAAA,CAAA;sBAArC,WAAW;uBAAC,eAAe,CAAA;gBAO5B,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAUjC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACnDlC;;;;;;;;;;;;;AAaG;MAiBU,eAAe,CAAA;AAe3B,IAAA,WAAA,CAAsB,UAAsB,EAAA;AAAtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAdnC,QAAA,IAAS,CAAA,SAAA,GAAG,kBAAkB,CAAC;AAExC;;AAEG;AACM,QAAA,IAAI,CAAA,IAAA,GAAuB,IAAI,CAAC;AAEzC;;AAEG;AACO,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAyB,CAAC;KAIf;IAEhD,eAAe,GAAA;AACd,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;;QAE/D,IAAI,CAAC,WAAW,EAAE;AACjB,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AACnD,SAAA;;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;YAC7B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAU,KAAI;gBACxC,MAAM,MAAM,GAAG,MAAM,CAAC;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;oBAC7B,IAAI,MAAM,KAAK,MAAM,EAAE;AACtB,wBAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,qBAAA;AACF,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACH;AAGD,IAAA,QAAQ,CAAC,KAAoB,EAAA;AAC5B,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAE7H,QAAQ,KAAK,CAAC,GAAG;AAChB,YAAA,KAAK,YAAY;gBAChB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,EAAG;AAC3C,oBAAA,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;oBAClE,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC9B,iBAAA;AAAM,qBAAA;AACN,oBAAA,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB,iBAAA;gBACD,MAAM;AAEP,YAAA,KAAK,WAAW;gBACf,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,EAAG;AAC5C,oBAAA,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;oBAClE,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC9B,iBAAA;AAAM,qBAAA;oBACN,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1C,iBAAA;gBACD,MAAM;AAEP,YAAA,KAAK,MAAM;gBACV,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,gBAAA,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBACtB,MAAM;AAEP,YAAA,KAAK,KAAK;gBACT,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC1C,MAAM;AACP,SAAA;KACD;;4GAxEW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAaV,qBAAqB,EA3B5B,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;AAYT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAEW,eAAe,EAAA,UAAA,EAAA,CAAA;kBAhB3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;AAYT,CAAA,CAAA;iBACD,CAAA;iGAES,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAKG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAKI,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBAEiC,OAAO,EAAA,CAAA;sBAA9C,eAAe;uBAAC,qBAAqB,CAAA;gBAyBtC,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MChEvB,qBAAqB,CAAA;;kHAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAThC,eAAe;QACf,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAMZ,YAAY,CAAA,EAAA,OAAA,EAAA,CAHrB,eAAe;QACf,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAIV,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAFvB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAEV,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,YAAY,EAAE;wBACb,eAAe;wBACf,qBAAqB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACR,eAAe;wBACf,qBAAqB;AACrB,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,CAAC;iBACvB,CAAA;;;AChBD;;AAEG;;;;"}
|
|
@@ -2011,10 +2011,6 @@ class TableHead {
|
|
|
2011
2011
|
* possible to set the sortable state on the header item to disable/enable sorting for only some headers.
|
|
2012
2012
|
*/
|
|
2013
2013
|
this.sortable = true;
|
|
2014
|
-
/**
|
|
2015
|
-
* Size of the table rows.
|
|
2016
|
-
*/
|
|
2017
|
-
this.size = "md";
|
|
2018
2014
|
/**
|
|
2019
2015
|
* Emits an index of the column that wants to be sorted.
|
|
2020
2016
|
*/
|
|
@@ -2088,7 +2084,7 @@ class TableHead {
|
|
|
2088
2084
|
}
|
|
2089
2085
|
}
|
|
2090
2086
|
TableHead.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableHead, deps: [{ token: i1.I18n }], target: i0.ɵɵFactoryTarget.Component });
|
|
2091
|
-
TableHead.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TableHead, selector: "[cdsTableHead], [ibmTableHead]", inputs: { model: "model", showSelectionColumn: "showSelectionColumn", enableSingleSelect: "enableSingleSelect", selectAllCheckboxSomeSelected: "selectAllCheckboxSomeSelected", selectAllCheckbox: "selectAllCheckbox", skeleton: "skeleton", stickyHeader: "stickyHeader", sortable: "sortable",
|
|
2087
|
+
TableHead.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TableHead, selector: "[cdsTableHead], [ibmTableHead]", inputs: { model: "model", showSelectionColumn: "showSelectionColumn", enableSingleSelect: "enableSingleSelect", selectAllCheckboxSomeSelected: "selectAllCheckboxSomeSelected", selectAllCheckbox: "selectAllCheckbox", skeleton: "skeleton", stickyHeader: "stickyHeader", sortable: "sortable", checkboxHeaderLabel: "checkboxHeaderLabel", sortDescendingLabel: "sortDescendingLabel", sortAscendingLabel: "sortAscendingLabel", filterTitle: "filterTitle" }, outputs: { sort: "sort", selectAll: "selectAll", deselectAll: "deselectAll" }, ngImport: i0, template: `
|
|
2092
2088
|
<ng-container *ngIf="model">
|
|
2093
2089
|
<tr>
|
|
2094
2090
|
<th
|
|
@@ -2112,7 +2108,6 @@ TableHead.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14
|
|
|
2112
2108
|
[checked]="selectAllCheckbox"
|
|
2113
2109
|
[indeterminate]="selectAllCheckboxSomeSelected"
|
|
2114
2110
|
[ariaLabel]="getCheckboxHeaderLabel()"
|
|
2115
|
-
[size]="size"
|
|
2116
2111
|
[skeleton]="skeleton"
|
|
2117
2112
|
[name]="model.getHeaderId('select')"
|
|
2118
2113
|
(change)="onSelectAllCheckboxChange()"
|
|
@@ -2174,7 +2169,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
2174
2169
|
[checked]="selectAllCheckbox"
|
|
2175
2170
|
[indeterminate]="selectAllCheckboxSomeSelected"
|
|
2176
2171
|
[ariaLabel]="getCheckboxHeaderLabel()"
|
|
2177
|
-
[size]="size"
|
|
2178
2172
|
[skeleton]="skeleton"
|
|
2179
2173
|
[name]="model.getHeaderId('select')"
|
|
2180
2174
|
(change)="onSelectAllCheckboxChange()"
|
|
@@ -2226,8 +2220,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
2226
2220
|
type: Input
|
|
2227
2221
|
}], sortable: [{
|
|
2228
2222
|
type: Input
|
|
2229
|
-
}], size: [{
|
|
2230
|
-
type: Input
|
|
2231
2223
|
}], checkboxHeaderLabel: [{
|
|
2232
2224
|
type: Input
|
|
2233
2225
|
}], sortDescendingLabel: [{
|
|
@@ -3826,7 +3818,6 @@ Table.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0
|
|
|
3826
3818
|
[checkboxHeaderLabel]="getCheckboxHeaderLabel()"
|
|
3827
3819
|
[filterTitle]="getFilterTitle()"
|
|
3828
3820
|
[model]="model"
|
|
3829
|
-
[size]="size"
|
|
3830
3821
|
[selectAllCheckbox]="selectAllCheckbox"
|
|
3831
3822
|
[selectAllCheckboxSomeSelected]="selectAllCheckboxSomeSelected"
|
|
3832
3823
|
[showSelectionColumn]="showSelectionColumn"
|
|
@@ -3877,7 +3868,7 @@ Table.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0
|
|
|
3877
3868
|
</tr>
|
|
3878
3869
|
</tfoot>
|
|
3879
3870
|
</table>
|
|
3880
|
-
`, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: TableDirective, selector: "[cdsTable], [ibmTable]", inputs: ["sortable", "noBorder", "striped", "skeleton", "size"] }, { kind: "component", type: TableHead, selector: "[cdsTableHead], [ibmTableHead]", inputs: ["model", "showSelectionColumn", "enableSingleSelect", "selectAllCheckboxSomeSelected", "selectAllCheckbox", "skeleton", "stickyHeader", "sortable", "
|
|
3871
|
+
`, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: TableDirective, selector: "[cdsTable], [ibmTable]", inputs: ["sortable", "noBorder", "striped", "skeleton", "size"] }, { kind: "component", type: TableHead, selector: "[cdsTableHead], [ibmTableHead]", inputs: ["model", "showSelectionColumn", "enableSingleSelect", "selectAllCheckboxSomeSelected", "selectAllCheckbox", "skeleton", "stickyHeader", "sortable", "checkboxHeaderLabel", "sortDescendingLabel", "sortAscendingLabel", "filterTitle"], outputs: ["sort", "selectAll", "deselectAll"] }, { kind: "component", type: TableBody, selector: "[cdsTableBody], [ibmTableBody]", inputs: ["model", "enableSingleSelect", "expandButtonAriaLabel", "checkboxRowLabel", "showSelectionColumn", "size", "selectionLabelColumn", "skeleton"], outputs: ["selectRow", "deselectRow", "rowClick"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
3881
3872
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: Table, decorators: [{
|
|
3882
3873
|
type: Component,
|
|
3883
3874
|
args: [{ selector: "cds-table, ibm-table", template: `
|
|
@@ -3900,7 +3891,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
3900
3891
|
[checkboxHeaderLabel]="getCheckboxHeaderLabel()"
|
|
3901
3892
|
[filterTitle]="getFilterTitle()"
|
|
3902
3893
|
[model]="model"
|
|
3903
|
-
[size]="size"
|
|
3904
3894
|
[selectAllCheckbox]="selectAllCheckbox"
|
|
3905
3895
|
[selectAllCheckboxSomeSelected]="selectAllCheckboxSomeSelected"
|
|
3906
3896
|
[showSelectionColumn]="showSelectionColumn"
|