@microsoft/windows-admin-center-sdk 2.186.0 → 2.294.0
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/angular/assets/strings/cs-CZ/strings.json +1 -1
- package/angular/assets/strings/de-DE/strings.json +1 -1
- package/angular/assets/strings/es-ES/strings.json +1 -1
- package/angular/assets/strings/fr-FR/strings.json +1 -1
- package/angular/assets/strings/hu-HU/strings.json +1 -1
- package/angular/assets/strings/it-IT/strings.json +1 -1
- package/angular/assets/strings/ja-JP/strings.json +1 -1
- package/angular/assets/strings/ko-KR/strings.json +1 -1
- package/angular/assets/strings/nl-NL/strings.json +1 -1
- package/angular/assets/strings/pl-PL/strings.json +1 -1
- package/angular/assets/strings/pt-BR/strings.json +1 -1
- package/angular/assets/strings/pt-PT/strings.json +1 -1
- package/angular/assets/strings/ru-RU/strings.json +1 -1
- package/angular/assets/strings/strings.json +1 -1
- package/angular/assets/strings/sv-SE/strings.json +1 -1
- package/angular/assets/strings/tr-TR/strings.json +1 -1
- package/angular/assets/strings/zh-CN/strings.json +1 -1
- package/angular/assets/strings/zh-TW/strings.json +1 -1
- package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js +1103 -1209
- package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js.map +1 -1
- package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js +2 -2
- package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js.map +1 -1
- package/angular/esm2015/src/controls/actions/actions.module.js +2 -2
- package/angular/esm2015/src/controls/actions/containers/action-bar/action-bar.component.js +2 -2
- package/angular/esm2015/src/controls/actions/items/action-button/action-button-renderer.component.js +5 -5
- package/angular/esm2015/src/controls/actions/items/action-dropdown/action-dropdown.component.js +31 -13
- package/angular/esm2015/src/controls/actions/items/action-item.component.js +7 -3
- package/angular/esm2015/src/controls/badge/badge-base.component.js +2 -13
- package/angular/esm2015/src/controls/badge/bugfixes-feature-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/coming-soon-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/credssp-enabled-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/critical-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/custom-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/feedback-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/improvement-feature-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/new-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/new-feature-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/preview-badge.component.js +42 -70
- package/angular/esm2015/src/controls/badge/warning-badge.component.js +42 -70
- package/angular/esm2015/src/controls/breadcrumb/breadcrumb.component.js +6 -6
- package/angular/esm2015/src/controls/breadcrumb-header/breadcrumb-header.component.js +2 -2
- package/angular/esm2015/src/controls/data-table/data-table-column.component.js +5 -3
- package/angular/esm2015/src/controls/data-table/data-table.component.js +20 -26
- package/angular/esm2015/src/controls/data-table/extensions/data-table-column-picker-extension.js +2 -1
- package/angular/esm2015/src/controls/details/details.component.js +2 -2
- package/angular/esm2015/src/controls/dialog/base-dialog.component.js +1 -1
- package/angular/esm2015/src/controls/dialog/confirmation-dialog/confirmation-dialog.component.js +20 -30
- package/angular/esm2015/src/controls/dialog/dialog.service.js +7 -3
- package/angular/esm2015/src/controls/dropdown/dropdown.component.js +2 -2
- package/angular/esm2015/src/controls/form/form-field/array/array-form-field.component.js +50 -40
- package/angular/esm2015/src/controls/form/form-field/checklist/checklist-form-field.component.js +3 -3
- package/angular/esm2015/src/controls/form/form-field/combobox/combobox-form-field.component.js +14 -13
- package/angular/esm2015/src/controls/form/form-field/datetime/datetime-form-field.component.js +2 -2
- package/angular/esm2015/src/controls/form/form-field/form-field.component.js +16 -4
- package/angular/esm2015/src/controls/form/form-field/options-form-field/form-field-option.component.js +5 -3
- package/angular/esm2015/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.js +25 -21
- package/angular/esm2015/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.js +5 -5
- package/angular/esm2015/src/controls/form/form-field/search/search-form-field.component.js +2 -2
- package/angular/esm2015/src/controls/form/form-field/tags/tags-form-field.component.js +2 -2
- package/angular/esm2015/src/controls/form/validation-alert/validation-alert.component.js +4 -10
- package/angular/esm2015/src/controls/form/validation-alert/validation-alert.js +1 -1
- package/angular/esm2015/src/controls/horizontal-bar-chart/stacked-horizontal-bar-chart.component.js +17 -1
- package/angular/esm2015/src/controls/icon/layered-icon/layered-icon.component.js +12 -1
- package/angular/esm2015/src/controls/icon/layered-icon/status/status-icon.component.js +53 -9
- package/angular/esm2015/src/controls/loading-wheel/loading-wheel.component.js +17 -1
- package/angular/esm2015/src/controls/master-view/master-view.component.js +34 -30
- package/angular/esm2015/src/controls/pivot/pivot-tab.component.js +1 -1
- package/angular/esm2015/src/controls/pivot/pivot.component.js +21 -9
- package/angular/esm2015/src/controls/property-grid/property-grid.component.js +13 -29
- package/angular/esm2015/src/controls/schema-form/schema-form-content.component.js +7 -4
- package/angular/esm2015/src/controls/settings/common-settings/common-settings.component.js +23 -35
- package/angular/esm2015/src/controls/settings/settings.component.js +28 -1
- package/angular/esm2015/src/controls/settings/settings.module.js +8 -3
- package/angular/esm2015/src/controls/tooltip/tooltip-host.component.js +16 -5
- package/angular/esm2015/src/controls/wizard/wizard.component.js +38 -6
- package/angular/esm2015/src/directives/clamp/clamp.directive.js +26 -7
- package/angular/esm2015/src/directives/discard/discard.directive.js +2 -2
- package/angular/esm2015/src/directives/markdown/markdown.directive.js +5 -18
- package/angular/esm2015/src/generated/strings.js +1 -1
- package/angular/esm2015/src/guards/experiment.guard.service.js +14 -1
- package/angular/esm2015/src/pipes/boolean-converter-pipe.js +11 -1
- package/angular/esm2015/src/pipes/byte-unit-converter-pipe.js +11 -1
- package/angular/esm2015/src/pipes/enum-converter-pipe.js +16 -1
- package/angular/esm2015/src/pipes/format-pipe.js +11 -1
- package/angular/esm2015/src/pipes/highlight-pipe.js +11 -1
- package/angular/esm2015/src/pipes/yesno-converter-pipe.js +11 -1
- package/angular/esm2015/src/service/gateway.service.js +8 -5
- package/angular/esm2015/src/service/notification.service.js +23 -1
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js +1042 -1069
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js.map +1 -1
- package/angular/package.json +0 -1
- package/angular/src/controls/actions/items/action-dropdown/action-dropdown.component.d.ts +2 -0
- package/angular/src/controls/actions/items/action-item.component.d.ts +11 -1
- package/angular/src/controls/badge/badge-base.component.d.ts +0 -4
- package/angular/src/controls/data-table/data-table-column.component.d.ts +2 -1
- package/angular/src/controls/data-table/data-table.component.d.ts +4 -0
- package/angular/src/controls/dialog/base-dialog.component.d.ts +1 -1
- package/angular/src/controls/form/form-field/form-field.component.d.ts +10 -1
- package/angular/src/controls/form/form-field/options-form-field/form-field-option.component.d.ts +5 -1
- package/angular/src/controls/form/validation-alert/validation-alert.component.d.ts +0 -4
- package/angular/src/controls/form/validation-alert/validation-alert.d.ts +0 -1
- package/angular/src/controls/horizontal-bar-chart/stacked-horizontal-bar-chart.component.d.ts +16 -0
- package/angular/src/controls/icon/layered-icon/layered-icon.component.d.ts +11 -0
- package/angular/src/controls/icon/layered-icon/status/status-icon.component.d.ts +13 -2
- package/angular/src/controls/loading-wheel/loading-wheel.component.d.ts +16 -0
- package/angular/src/controls/master-view/master-view.component.d.ts +1 -0
- package/angular/src/controls/pivot/pivot-tab.component.d.ts +0 -1
- package/angular/src/controls/pivot/pivot.component.d.ts +4 -0
- package/angular/src/controls/settings/common-settings/common-settings.component.d.ts +6 -5
- package/angular/src/controls/settings/settings.component.d.ts +27 -0
- package/angular/src/controls/settings/settings.module.d.ts +7 -6
- package/angular/src/controls/tooltip/tooltip-host.component.d.ts +1 -1
- package/angular/src/controls/wizard/wizard.component.d.ts +23 -0
- package/angular/src/directives/clamp/clamp.directive.d.ts +5 -0
- package/angular/src/directives/markdown/markdown.directive.d.ts +2 -3
- package/angular/src/generated/strings.d.ts +9 -0
- package/angular/src/guards/experiment.guard.service.d.ts +13 -0
- package/angular/src/pipes/boolean-converter-pipe.d.ts +10 -0
- package/angular/src/pipes/byte-unit-converter-pipe.d.ts +10 -0
- package/angular/src/pipes/enum-converter-pipe.d.ts +15 -0
- package/angular/src/pipes/format-pipe.d.ts +10 -0
- package/angular/src/pipes/highlight-pipe.d.ts +10 -0
- package/angular/src/pipes/yesno-converter-pipe.d.ts +10 -0
- package/angular/src/service/gateway.service.d.ts +3 -1
- package/angular/src/service/notification.service.d.ts +22 -0
- package/core/base/environment.d.ts +7 -0
- package/core/base/environment.js.map +1 -1
- package/core/base/versioned-object.js +2 -2
- package/core/base/versioned-object.js.map +1 -1
- package/core/data/cim-stream.js +8 -1
- package/core/data/cim-stream.js.map +1 -1
- package/core/data/core-environment.d.ts +4 -0
- package/core/data/core-environment.js +1 -0
- package/core/data/core-environment.js.map +1 -1
- package/core/data/crypto.js +10 -9
- package/core/data/crypto.js.map +1 -1
- package/core/data/file-transfer.js +5 -1
- package/core/data/file-transfer.js.map +1 -1
- package/core/data/gateway-connection.d.ts +11 -1
- package/core/data/gateway-connection.js +51 -9
- package/core/data/gateway-connection.js.map +1 -1
- package/core/data/http-constants.d.ts +5 -1
- package/core/data/http-constants.js +5 -1
- package/core/data/http-constants.js.map +1 -1
- package/core/data/net.d.ts +15 -11
- package/core/data/net.js +44 -41
- package/core/data/net.js.map +1 -1
- package/core/data/node-connection.d.ts +2 -2
- package/core/data/node-connection.js.map +1 -1
- package/core/data/powershell-stream.js +11 -3
- package/core/data/powershell-stream.js.map +1 -1
- package/core/data/powershell.d.ts +17 -1
- package/core/data/powershell.js +35 -9
- package/core/data/powershell.js.map +1 -1
- package/core/data/settings-manager.d.ts +9 -0
- package/core/data/settings-manager.js +18 -1
- package/core/data/settings-manager.js.map +1 -1
- package/core/generated/powershell-scripts.d.ts +5 -4
- package/core/generated/powershell-scripts.js +5 -4
- package/core/generated/powershell-scripts.js.map +1 -1
- package/core/host/host-core-manager.d.ts +36 -0
- package/core/host/host-core-manager.js +134 -0
- package/core/host/host-core-manager.js.map +1 -0
- package/core/host/host-core-message-type.d.ts +12 -0
- package/core/host/host-core-message-type.js +17 -0
- package/core/host/host-core-message-type.js.map +1 -0
- package/core/host/host-core-messages.d.ts +14 -0
- package/core/host/host-core-messages.js +3 -0
- package/core/host/host-core-messages.js.map +1 -0
- package/core/manifest/manifest-loader.d.ts +2 -1
- package/core/manifest/manifest-loader.js +27 -18
- package/core/manifest/manifest-loader.js.map +1 -1
- package/core/notification/notification.js +4 -0
- package/core/notification/notification.js.map +1 -1
- package/core/security/authorization-manager.d.ts +44 -0
- package/core/security/authorization-manager.js +111 -5
- package/core/security/authorization-manager.js.map +1 -1
- package/core/security/sign-on-manager.d.ts +109 -0
- package/core/security/sign-on-manager.js +119 -0
- package/core/security/sign-on-manager.js.map +1 -0
- package/core/security/tag-manager.js.map +1 -1
- package/core/shared/cluster-inventory/cluster-inventory-cache.js +3 -2
- package/core/shared/cluster-inventory/cluster-inventory-cache.js.map +1 -1
- package/core/shared/gateway-inventory/gateway-inventory-cache.d.ts +1 -1
- package/core/shared/gateway-inventory/gateway-inventory-cache.js +1 -1
- package/core/shared/gateway-inventory/gateway-inventory-cache.js.map +1 -1
- package/core/shared/server-inventory/server-inventory-cache.js +2 -1
- package/core/shared/server-inventory/server-inventory-cache.js.map +1 -1
- package/core/shared/tool-inventory/tool-inventory-cache.js +1 -1
- package/core/shared/tool-inventory/tool-inventory-cache.js.map +1 -1
- package/e2e/assets/strings/cs-CZ/strings.json +1 -1
- package/e2e/assets/strings/de-DE/strings.json +1 -1
- package/e2e/assets/strings/es-ES/strings.json +1 -1
- package/e2e/assets/strings/fr-FR/strings.json +1 -1
- package/e2e/assets/strings/hu-HU/strings.json +1 -1
- package/e2e/assets/strings/it-IT/strings.json +1 -1
- package/e2e/assets/strings/ja-JP/strings.json +1 -1
- package/e2e/assets/strings/ko-KR/strings.json +1 -1
- package/e2e/assets/strings/nl-NL/strings.json +1 -1
- package/e2e/assets/strings/pl-PL/strings.json +1 -1
- package/e2e/assets/strings/pt-BR/strings.json +1 -1
- package/e2e/assets/strings/pt-PT/strings.json +1 -1
- package/e2e/assets/strings/ru-RU/strings.json +1 -1
- package/e2e/assets/strings/strings.json +1 -1
- package/e2e/assets/strings/sv-SE/strings.json +1 -1
- package/e2e/assets/strings/tr-TR/strings.json +1 -1
- package/e2e/assets/strings/zh-CN/strings.json +1 -1
- package/e2e/assets/strings/zh-TW/strings.json +1 -1
- package/package.json +5 -5
- package/styles/css/fonts.css +2 -2
- package/styles/css/main.css +1 -1
- package/styles/fonts/ServMDL2/ServMDL2-4.62.woff +0 -0
- package/styles/fonts/ServMDL2/ServMDL2.json +238 -2039
- package/styles/fonts/ServMDL2/ServMDL2.scss +238 -2039
- package/tools/gulp-manifest-resource/index.js +3 -1
- package/tools/gulp-manifest-resource/index.js.map +1 -1
- package/tools/gulp-ps-cim/index.js +1 -1
- package/tools/gulp-ps-cim/index.js.map +1 -1
- package/tools/gulp-ps-cim/powershell-cim-config-schema.json +1 -1
- package/tools/gulp-ps-code/index.js +36 -2
- package/tools/gulp-ps-code/index.js.map +1 -1
- package/tools/gulp-ps-code/ps-code-convert.js +4 -8
- package/tools/gulp-ps-code/ps-code-convert.js.map +1 -1
- package/tools/gulp-ps-resjson/index.js +79 -74
- package/tools/gulp-ps-resjson/index.js.map +1 -1
- package/tools/module-template/build/pipelines/codeinspector.yml +27 -0
- package/tools/module-template/gulpfile.ts/common/lint.ts +3 -3
- package/tools/module-template/gulpfile.ts/common/pack.ts +14 -14
- package/tools/module-template/gulpfile.ts/common/ui-test-automation.ts +40 -0
- package/tools/module-template/gulpfile.ts/common/utilities.ts +10 -10
- package/tools/module-template/gulpfile.ts/common/validate.ts +14 -4
- package/tools/module-template/gulpfile.ts/index.ts +20 -8
- package/tools/wac-cli/src/upgrade/file-updater.d.ts +1 -0
- package/tools/wac-cli/src/upgrade/file-updater.js +7 -1
- package/tools/wac-cli/src/upgrade/file-updater.js.map +1 -1
- package/styles/fonts/ServMDL2/ServMDL2-4.33.woff +0 -0
|
@@ -207,7 +207,7 @@ export class DropdownComponent {
|
|
|
207
207
|
i0.ɵɵlistener("keyup", function DropdownComponent_keyup_HostBindingHandler($event) { return ctx.onKeyup($event); });
|
|
208
208
|
} if (rf & 2) {
|
|
209
209
|
i0.ɵɵclassProp("sme-disabled", ctx.disabled);
|
|
210
|
-
} }, inputs: { autoToggle: "autoToggle", autoWidth: "autoWidth", calculateHeight: "calculateHeight", displayToSide: "displayToSide", isContextMenu: "isContextMenu", dropdownApplyFormFieldOffsetWidth: "dropdownApplyFormFieldOffsetWidth", disabled: "disabled" }, outputs: { onToggled: "onToggled", toggled: "toggled" }, ngContentSelectors: _c4, decls: 6, vars: 6, consts: [[1, "sme-dropdown-toggle-container"], ["smeDropdownToggle", ""], [1, "sme-layout-dropdown", "sme-layout-fixed", "sme-position-below", "sme-scheme-dropdown", "sme-layer-nav", "sme-shadow-dropdown", 3, "ngClass"], ["smeDropdownContent", ""]], template: function DropdownComponent_Template(rf, ctx) { if (rf & 1) {
|
|
210
|
+
} }, inputs: { autoToggle: "autoToggle", autoWidth: "autoWidth", calculateHeight: "calculateHeight", displayToSide: "displayToSide", isContextMenu: "isContextMenu", dropdownApplyFormFieldOffsetWidth: "dropdownApplyFormFieldOffsetWidth", disabled: "disabled" }, outputs: { onToggled: "onToggled", toggled: "toggled" }, ngContentSelectors: _c4, decls: 6, vars: 6, consts: [["data-uta-id", "dropdown-toggle", 1, "sme-dropdown-toggle-container"], ["smeDropdownToggle", ""], ["data-uta-id", "dropdown-content", 1, "sme-layout-dropdown", "sme-layout-fixed", "sme-position-below", "sme-scheme-dropdown", "sme-layer-nav", "sme-shadow-dropdown", 3, "ngClass"], ["smeDropdownContent", ""]], template: function DropdownComponent_Template(rf, ctx) { if (rf & 1) {
|
|
211
211
|
i0.ɵɵprojectionDef(_c2);
|
|
212
212
|
i0.ɵɵelementStart(0, "div", 0, 1);
|
|
213
213
|
i0.ɵɵprojection(2);
|
|
@@ -261,4 +261,4 @@ export class DropdownComponent {
|
|
|
261
261
|
type: HostListener,
|
|
262
262
|
args: ['keyup', ['$event']]
|
|
263
263
|
}] }); })();
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQzlGLE9BQU8sRUFBVSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7O0FBR3JEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUg7O0dBRUc7QUFLSCxNQUFNLE9BQU8saUJBQWlCO0lBeUYxQjs7T0FFRztJQUNILFlBQ1ksUUFBbUIsRUFDbkIsT0FBbUIsRUFDbkIsZUFBZ0MsRUFDUyxNQUFjO1FBSHZELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBckZsRCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQTBCaEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFhN0I7O1dBRUc7UUFFSSxzQ0FBaUMsR0FBRyxJQUFJLENBQUM7UUFFaEQ7O1dBRUc7UUFDSSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FB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QUFDO0lBQ2pCLENBQUM7O3FHQWxPUSxpQkFBaUIsMElBZ0dGLG1CQUFtQjt5RUFoR2xDLGlCQUFpQjs7Ozs7Ozs7b0dBQWpCLG1CQUFlOzs7OztRQzVDNUIsaUNBQThEO1FBQzVELGtCQUF1RDtRQUN6RCxpQkFBTTtRQUNOLGlDQUNvSztRQUNsSyxxQkFBd0Q7UUFDMUQsaUJBQU07O1FBRkosZUFBaUs7UUFBakssMkdBQWlLOzt1RkR3Q3RKLGlCQUFpQjtjQUo3QixTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLFdBQVcsRUFBRSwyQkFBMkI7YUFDM0M7O3NCQWlHUSxRQUFROztzQkFBSSxNQUFNO3VCQUFDLG1CQUFtQjt3QkF4RnRCLFNBQVM7a0JBQTdCLE1BQU07WUFHVSxPQUFPO2tCQUF2QixNQUFNO1lBS1MsVUFBVTtrQkFBekIsS0FBSztZQUtVLFNBQVM7a0JBQXhCLEtBQUs7WUFNQyxlQUFlO2tCQURyQixLQUFLO1lBT0MsYUFBYTtrQkFEbkIsS0FBSztZQUtDLGFBQWE7a0JBRG5CLEtBQUs7WUFNQyxjQUFjO2tCQURwQixTQUFTO21CQUFDLG9CQUFvQjtZQU94QixhQUFhO2tCQURuQixTQUFTO21CQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQU96QyxpQ0FBaUM7a0JBRHZDLEtBQUs7WUFnQ1UsUUFBUTtrQkFEdkIsV0FBVzttQkFBQyxvQkFBb0I7O2tCQUNoQyxLQUFLO1lBK0RDLE9BQU87a0JBRGIsWUFBWTttQkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFJlbmRlcmVyMixcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEZXByZWNhdGVkIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9iYXNlL2RlY29yYXRvcnMvZGVwcmVjYXRpb24uZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IEtleUNvZGUgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RhdGEvYWNjZXNzaWJpbGl0eS1tYW5hZ2VyJztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IERyb3Bkb3duU2VydmljZSB9IGZyb20gJy4vZHJvcGRvd24uc2VydmljZSc7XHJcbmltcG9ydCB7IERyb3Bkb3duIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBzbWVEb2Mge0BsYWJlbCBEcm9wZG93biBAaWQgc21lLWRyb3Bkb3duLWNvbXBvbmVudCBAaW50ZXJuYWx9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhhbXBsZXMvZHJvcGRvd24tb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgQmFzaWMgVXNhZ2UgQGlkIGJhc2ljLXVzYWdlfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2Jhc2ljLXVzYWdlLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIERyb3Bkb3duIHdpdGggYWR2YW5jZWQgY29udGVudCBAaWQgYWR2YW5jZWQtZHJvcGRvd259XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYWR2YW5jZWQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FkdmFuY2VkLWRyb3Bkb3duLmNvbXBvbmVudC50c31cclxuICpcclxuICovXHJcblxyXG4vKipcclxuICogQ29tcG9uZW50IHRvIGNyZWF0ZSBhbiBkcm9wZG93blxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1kcm9wZG93bicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBEcm9wZG93biB7XHJcbiAgICBwcml2YXRlIGxheW91dENoYW5nZVN1YnNjcmliZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCBFbWl0dGVyIGZvciB3aGVuIHRoZSBkcm9wZG93biBvcGVucyBvciBjbG9zZXMuIEVtaXRzIGEgYm9vbGVhbiB0byBpbmRpY2F0ZSBpZiB0aGUgZHJvcGRvd24gaXMgb3BlblxyXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgOS8yNS8yMDE5LiBQbGVhc2UgdXNlICd0b2dnbGVkJyBpbnN0ZWFkXHJcbiAgICAgKi9cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1vdXRwdXQtb24tcHJlZml4XHJcbiAgICBAT3V0cHV0KCkgcHVibGljIGdldCBvblRvZ2dsZWQoKTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVkO1xyXG4gICAgfVxyXG4gICAgQE91dHB1dCgpIHB1YmxpYyB0b2dnbGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHNob3VsZCBhdXRvbWF0aWNhbGx5IHRvZ2dsZSB0byBkcm9wZG93biB3aGVuIHRoZSB0b2dnbGUgZWxlbWVudCBpcyBjbGlja2VkLiBEZWZhdWx0cyB0byB0cnVlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvVG9nZ2xlOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gc2V0IHRoZSBkcm9wZG93biBjb250ZW50IHdpZHRoIHRvIGJlIGJhc2VkIG9uIHRoZSBhY3R1YWwgY29udGVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b1dpZHRoOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgZGV0ZXJtaW5lIHdoZXRoZXIgdG8gY2FsY3VsYXRlIGhlaWdodCBmb3IgdGhlIGRyb3Bkb3duXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY2FsY3VsYXRlSGVpZ2h0OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgZHJvcGRvd24gbWVudSB0byBzaWRlIG9mIHRvZ2dsZS4gRGVmYXVsdHMgdG8gYmVsb3dcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkaXNwbGF5VG9TaWRlOiBib29sZWFuO1xyXG5cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlzQ29udGV4dE1lbnUgPSBmYWxzZTtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNvbnRlbnQgZWxlbWVudC4gVGhpcyBtdXN0IGJlIHByb3ZpZGVkIGJ5IHRoZSBEcm9wZG93bkNvbnRlbnREaXJlY3RpdmUgb3IgcG9zc2libHkgc29tZSBjdXN0b20gaW1wbGVtZW50YXRpb25cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgnc21lRHJvcGRvd25Db250ZW50JylcclxuICAgIHB1YmxpYyBjb250ZW50RWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSB0b2dnbGUgZWxlbWVudC4gVGhpcyBtdXN0IGJlIHByb3ZpZGVkIGJ5IHRoZSBEcm9wZG93blRvZ2dsZURpcmVjdGl2ZSBvciBwb3NzaWJseSBzb21lIGN1c3RvbSBpbXBsZW1lbnRhdGlvblxyXG4gICAgICovXHJcbiAgICBAVmlld0NoaWxkKCdzbWVEcm9wZG93blRvZ2dsZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgdG9nZ2xlRWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERldGVybWluZSBpZiB0aGUgZHJvcGRvd24gd2lsbCB1c2UgdGhlIHNtZS1mb3JtLWZpZWxkIHRvIGxpbWl0IGl0cyBtYXgtd2lkdGhcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkcm9wZG93bkFwcGx5Rm9ybUZpZWxkT2Zmc2V0V2lkdGggPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHRoZSBvcGVuIHN0YXRlIG9mIHRoZSBkcm9wZG93blxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXNPcGVuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaG93IGZhciB0aGUgZHJvcGRvd24gY29udGVudCBoYXMgYmVlbiB0cmFuc2xhdGVkIHRvIHJlbWFpbiBmdWxseSBvbiBzY3JlZW5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGxlZnQgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGhvdyBmYXIgdGhlIGRyb3Bkb3duIGNvbnRlbnQgaGFzIGJlZW4gdHJhbnNsYXRlZCB0byByZW1haW4gZnVsbHkgb24gc2NyZWVuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0b3AgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIHRoZSBkcm9wZG93biBpcyBsYXJnZXIgdGhhbiB0aGUgaG9yaXpvbnRhbCBzcGFjZSBhdmFpbGFibGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIG92ZXJmbG93WCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIHRoZSBkcm9wZG93biBpcyBsYXJnZXIgdGhhbiB0aGUgdmVydGljYWwgc3BhY2UgYXZhaWxhYmxlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvdmVyZmxvd1kgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IGRyb3Bkb3duIHNob3VsZCBiZSBkaXNhYmxlZC5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWUtZGlzYWJsZWQnKVxyXG4gICAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZVRvZ2dsZUNsaWNrOiBGdW5jdGlvbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBEcm9wZG93bkRpcmVjdGl2ZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgZHJvcGRvd25TZXJ2aWNlOiBEcm9wZG93blNlcnZpY2UsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChTTUVfTEFZT1VUX1BST1ZJREVSKSBwcml2YXRlIGxheW91dDogTGF5b3V0KSB7XHJcbiAgICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoZWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc21lLWxheW91dC1yZWxhdGl2ZScpO1xyXG4gICAgICAgIHRoaXMuYXV0b1RvZ2dsZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbmd1bGFycyBPbiBJbml0IExpZmVjeWNsZSBIb29rXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNDb250ZXh0TWVudSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnRvZ2dsZUVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2FyaWEtaGFzcG9wdXAnLCAndHJ1ZScpO1xyXG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlVG9nZ2xlQ2xpY2sgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLnRvZ2dsZUVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2NsaWNrJyxcclxuICAgICAgICAgICAgICAgIChldmVudCkgPT4gdGhpcy5vblRvZ2dsZUNsaWNrKGV2ZW50KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kcm9wZG93blNlcnZpY2Uub3Blbih0aGlzLCB0aGlzLmNhbGN1bGF0ZUhlaWdodCwgdGhpcy5kaXNwbGF5VG9TaWRlKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmxheW91dCkge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dENoYW5nZVN1YnNjcmliZXIgPSB0aGlzLmxheW91dC5sYXlvdXRDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byBwb3N0cG9uZWQgdGhlIGRyb3Bkb3duIFVJIHVwZGF0ZSB0byBuZXh0IHJlZnJlc2ggY3ljbGUuXHJcbiAgICAgICAgICAgICAgICAvLyBUaGlzIHRoZSBjdXJyZW50IHJlZnJlc2ggY3ljbGUgY2FuIGJlIHVzZWQgZm9yIGFueSBjb21wb25lbnRzIHRvIHVwZGF0ZSBpdHMgb3duIFVJIHdoaWNoIG1heSBpbXBhY3QgZHJvcGRvd24gVUkuXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duU2VydmljZS51cGRhdGVQb3NpdGlvbih0aGlzLCB0aGlzLmNhbGN1bGF0ZUhlaWdodCwgdGhpcy5kaXNwbGF5VG9TaWRlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbmd1bGFycyBPbiBEZXN0cm95IExpZmVjeWNsZSBIb29rXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgLy8gdGhpcy51bnN1YnNjcmliZVRvZ2dsZUNsaWNrKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmxheW91dENoYW5nZVN1YnNjcmliZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2VTdWJzY3JpYmVyLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3BlbnMgdGhpcyBkcm9wZG93blxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3BlbigpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZSh0cnVlLCB0aGlzLmNhbGN1bGF0ZUhlaWdodCwgdGhpcy5kaXNwbGF5VG9TaWRlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RlbiB0byBrZXlib2FyZCBldmVudCBhbmQgY2xvc2UgZHJvcGRvd24gd2hlbiB1c2VycyBkbyBub3QgZm9jdXMgb24gZHJvcGRvd24gbGlzdFxyXG4gICAgICovXHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25LZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBLZXlDb2RlLlRhYikge1xyXG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IDxIVE1MRWxlbWVudD5ldmVudC50YXJnZXQ7XHJcbiAgICAgICAgICAgIHdoaWxlICghdGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoZWxlbWVudCkgJiYgIXRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoZWxlbWVudCkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnc21lLWZvY3VzLXRyYXAnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jbG9zZShldmVudCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICgoZXZlbnQua2V5Q29kZSA9PT0gS2V5Q29kZS5MZWZ0QXJyb3cgJiYgKDxIVE1MRWxlbWVudD5ldmVudC50YXJnZXQpLmNsYXNzTmFtZS5pbmRleE9mKCdzbWUtZHJvcGRvd24tdG9nZ2xlJykgPiAtMSkpIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZShldmVudCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09PSBLZXlDb2RlLkVzY2FwZSkge1xyXG4gICAgICAgICAgICAvLyBwcmV2ZW50IGV2ZW50IHByb3BhZ2F0aW9uIHdoZW4gaW5zaWRlIGEgZGlhbG9nXHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDbG9zZXMgdGhpcyBkcm9wZG93blxyXG4gICAgICogQHBhcmFtIGV2ZW50IGtleWJvYXJkIGV2ZW50IGluY2x1ZGluZyB0aGUgY3VycmVudCBldmVudCB0YXJnZXRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsb3NlKGV2ZW50PzogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlKGZhbHNlLCBudWxsLCB0aGlzLmRpc3BsYXlUb1NpZGUsIGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRvZ2dsZXMgdGhlIGRyb3Bkb3duXHJcbiAgICAgKiBAcGFyYW0gb3BlbiBPcHRpb25hbC4gSWYgcHJvdmlkZWQsIGZvcmNlcyB0aGUgZHJvcGRvd24gb3BlbiBvciBjbG9zZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0b2dnbGUob3Blbj86IGJvb2xlYW4sIGNhbGN1bGF0ZUhlaWdodD86IGJvb2xlYW4sIGRpc3BsYXlUb1NpZGU/OiBib29sZWFuLCBldmVudD86IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICAvLyBJZiB3ZSBhcmUgYWxyZWFkeSBpbiB0aGUgY29ycmVjdCBzdGF0ZSwgcmV0dXJuXHJcbiAgICAgICAgaWYgKCFNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKG9wZW4pICYmIG9wZW4gPT09IHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICAgICAgICAvLyBjbG9zZSBpZiBvcGVuZWRcclxuICAgICAgICAgICAgdGhpcy5kcm9wZG93blNlcnZpY2UuY2xvc2UodGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMudG9nZ2xlRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25TZXJ2aWNlLmNsb3NlTmVzdGVkKHRoaXMsIGV2ZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBlbWl0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBkcm9wZG93blxyXG4gICAgICAgICAgICB0aGlzLm9uVG9nZ2xlZC5lbWl0KHRoaXMuaXNPcGVuKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBvcGVuIGlmIGNsb3NlZFxyXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duU2VydmljZS5vcGVuKHRoaXMsIGNhbGN1bGF0ZUhlaWdodCwgZGlzcGxheVRvU2lkZSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnRvZ2dsZUVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xvc2VFdmVudCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgLy8gZW1pdCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZHJvcGRvd25cclxuICAgICAgICAgICAgICAgIHRoaXMub25Ub2dnbGVkLmVtaXQodGhpcy5pc09wZW4pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXIgZm9yIHRoZSBjbGljayBldmVudCBmb3IgdGhlIHRvZ2dsZSBlbGVtZW50XHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgdGhlIG1vdXNlIGV2ZW50IG9mIHRoZSBjbGlja1xyXG4gICAgICogQHBhcmFtIG1hbnVhbFRvZ2dsZSBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIG1hbnVhbGx5IHRvZ2dsZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25Ub2dnbGVDbGljayhldmVudDogYW55LCBtYW51YWxUb2dnbGU/OiBib29sZWFuKSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmF1dG9Ub2dnbGUgfHwgbWFudWFsVG9nZ2xlKSB7XHJcbiAgICAgICAgICAgIC8vIHRvZ2dsZSB0aGUgZHJvcGRvd24gaWYgbm90IGRpc2FibGVkXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGUobnVsbCwgdGhpcy5jYWxjdWxhdGVIZWlnaHQsIHRoaXMuZGlzcGxheVRvU2lkZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2ICNzbWVEcm9wZG93blRvZ2dsZSBjbGFzcz1cInNtZS1kcm9wZG93bi10b2dnbGUtY29udGFpbmVyXCI+XHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnNtZS1kcm9wZG93bi10b2dnbGVcIj48L25nLWNvbnRlbnQ+XHJcbjwvZGl2PlxyXG48ZGl2ICNzbWVEcm9wZG93bkNvbnRlbnQgY2xhc3M9XCJzbWUtbGF5b3V0LWRyb3Bkb3duIHNtZS1sYXlvdXQtZml4ZWQgc21lLXBvc2l0aW9uLWJlbG93IHNtZS1zY2hlbWUtZHJvcGRvd24gc21lLWxheWVyLW5hdiBzbWUtc2hhZG93LWRyb3Bkb3duXCJcclxuICBbbmdDbGFzc109XCJ7J3NtZS1sYXlvdXQtaGlkZGVuJzogIWlzT3BlbiwgJ3NtZS1sYXlvdXQtaW5saW5lLWJsb2NrJzogaXNPcGVuLCAnc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0by14Jzogb3ZlcmZsb3dYLCAnc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0by15Jzogb3ZlcmZsb3dZfVwiPlxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5zbWUtZHJvcGRvd24tY29udGVudFwiPjwvbmctY29udGVudD5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQzlGLE9BQU8sRUFBVSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7O0FBR3JEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUg7O0dBRUc7QUFLSCxNQUFNLE9BQU8saUJBQWlCO0lBeUYxQjs7T0FFRztJQUNILFlBQ1ksUUFBbUIsRUFDbkIsT0FBbUIsRUFDbkIsZUFBZ0MsRUFDUyxNQUFjO1FBSHZELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBckZsRCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQTBCaEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFhN0I7O1dBRUc7UUFFSSxzQ0FBaUMsR0FBRyxJQUFJLENBQUM7UUFFaEQ7O1dBRUc7UUFDSSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXRCOztXQUVHO1FBQ0ksU0FBSSxHQUFHLENBQUMsQ0FBQztRQUVoQjs7V0FFRztRQUNJLFFBQUcsR0FBRyxDQUFDLENBQUM7UUFFZjs7V0FFRztRQUNJLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFekI7O1dBRUc7UUFDSSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXpCOztXQUVHO1FBRWEsYUFBUSxHQUFHLEtBQUssQ0FBQztRQVk3QixRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBaEdEOzs7T0FHRztJQUNILCtDQUErQztJQUMvQyxJQUFxQixTQUFTO1FBQzFCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBMkZEOztPQUVHO0lBQ0ksUUFBUTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN0RixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUN4RixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQzdDO2FBQU07WUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDaEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNuRSw0RUFBNEU7Z0JBQzVFLG1IQUFtSDtnQkFDbkgsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3hGLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixpQ0FBaUM7UUFFakMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDN0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSTtRQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUVJLE9BQU8sQ0FBQyxLQUFvQjtRQUMvQixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLE9BQU8sR0FBZ0IsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN4QyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM5RyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7b0JBQzlDLE9BQU87aUJBQ1Y7Z0JBQ0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7YUFDbkM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3JCO2FBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLFNBQVMsSUFBa0IsS0FBSyxDQUFDLE1BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3JCO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDekMsaURBQWlEO1lBQ2pELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDcEM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLEtBQXFCO1FBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBYyxFQUFFLGVBQXlCLEVBQUUsYUFBdUIsRUFBRSxLQUFxQjtRQUNuRyxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUMxRCxPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixrQkFBa0I7WUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZGLElBQUksS0FBSyxFQUFFO2dCQUNQLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNqRDtZQUNELHlDQUF5QztZQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDcEM7YUFBTTtZQUNILGlCQUFpQjtZQUNqQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDdEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtvQkFDakUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDVix5Q0FBeUM7Z0JBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBR0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhLENBQUMsS0FBVSxFQUFFLFlBQXNCO1FBQ25ELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksWUFBWSxFQUFFO1lBQ2pDLHNDQUFzQztZQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDL0Q7U0FDSjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7O3FHQWxPUSxpQkFBaUIsMElBZ0dGLG1CQUFtQjt5RUFoR2xDLGlCQUFpQjs7Ozs7Ozs7b0dBQWpCLG1CQUFlOzs7OztRQzVDNUIsaUNBQTRGO1FBQzFGLGtCQUF1RDtRQUN6RCxpQkFBTTtRQUNOLGlDQUdpQztRQUMvQixxQkFBd0Q7UUFDMUQsaUJBQU07O1FBSEosZUFBaUs7UUFBakssMkdBQWlLOzt1RkR1Q3RKLGlCQUFpQjtjQUo3QixTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLFdBQVcsRUFBRSwyQkFBMkI7YUFDM0M7O3NCQWlHUSxRQUFROztzQkFBSSxNQUFNO3VCQUFDLG1CQUFtQjt3QkF4RnRCLFNBQVM7a0JBQTdCLE1BQU07WUFHVSxPQUFPO2tCQUF2QixNQUFNO1lBS1MsVUFBVTtrQkFBekIsS0FBSztZQUtVLFNBQVM7a0JBQXhCLEtBQUs7WUFNQyxlQUFlO2tCQURyQixLQUFLO1lBT0MsYUFBYTtrQkFEbkIsS0FBSztZQUtDLGFBQWE7a0JBRG5CLEtBQUs7WUFNQyxjQUFjO2tCQURwQixTQUFTO21CQUFDLG9CQUFvQjtZQU94QixhQUFhO2tCQURuQixTQUFTO21CQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQU96QyxpQ0FBaUM7a0JBRHZDLEtBQUs7WUFnQ1UsUUFBUTtrQkFEdkIsV0FBVzttQkFBQyxvQkFBb0I7O2tCQUNoQyxLQUFLO1lBK0RDLE9BQU87a0JBRGIsWUFBWTttQkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFJlbmRlcmVyMixcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEZXByZWNhdGVkIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9iYXNlL2RlY29yYXRvcnMvZGVwcmVjYXRpb24uZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IEtleUNvZGUgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RhdGEvYWNjZXNzaWJpbGl0eS1tYW5hZ2VyJztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IERyb3Bkb3duU2VydmljZSB9IGZyb20gJy4vZHJvcGRvd24uc2VydmljZSc7XHJcbmltcG9ydCB7IERyb3Bkb3duIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBzbWVEb2Mge0BsYWJlbCBEcm9wZG93biBAaWQgc21lLWRyb3Bkb3duLWNvbXBvbmVudCBAaW50ZXJuYWx9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhhbXBsZXMvZHJvcGRvd24tb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgQmFzaWMgVXNhZ2UgQGlkIGJhc2ljLXVzYWdlfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2Jhc2ljLXVzYWdlLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIERyb3Bkb3duIHdpdGggYWR2YW5jZWQgY29udGVudCBAaWQgYWR2YW5jZWQtZHJvcGRvd259XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYWR2YW5jZWQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWx9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FkdmFuY2VkLWRyb3Bkb3duLmNvbXBvbmVudC50c31cclxuICpcclxuICovXHJcblxyXG4vKipcclxuICogQ29tcG9uZW50IHRvIGNyZWF0ZSBhbiBkcm9wZG93blxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1kcm9wZG93bicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBEcm9wZG93biB7XHJcbiAgICBwcml2YXRlIGxheW91dENoYW5nZVN1YnNjcmliZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCBFbWl0dGVyIGZvciB3aGVuIHRoZSBkcm9wZG93biBvcGVucyBvciBjbG9zZXMuIEVtaXRzIGEgYm9vbGVhbiB0byBpbmRpY2F0ZSBpZiB0aGUgZHJvcGRvd24gaXMgb3BlblxyXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgOS8yNS8yMDE5LiBQbGVhc2UgdXNlICd0b2dnbGVkJyBpbnN0ZWFkXHJcbiAgICAgKi9cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1vdXRwdXQtb24tcHJlZml4XHJcbiAgICBAT3V0cHV0KCkgcHVibGljIGdldCBvblRvZ2dsZWQoKTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVkO1xyXG4gICAgfVxyXG4gICAgQE91dHB1dCgpIHB1YmxpYyB0b2dnbGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHNob3VsZCBhdXRvbWF0aWNhbGx5IHRvZ2dsZSB0byBkcm9wZG93biB3aGVuIHRoZSB0b2dnbGUgZWxlbWVudCBpcyBjbGlja2VkLiBEZWZhdWx0cyB0byB0cnVlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvVG9nZ2xlOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gc2V0IHRoZSBkcm9wZG93biBjb250ZW50IHdpZHRoIHRvIGJlIGJhc2VkIG9uIHRoZSBhY3R1YWwgY29udGVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b1dpZHRoOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgZGV0ZXJtaW5lIHdoZXRoZXIgdG8gY2FsY3VsYXRlIGhlaWdodCBmb3IgdGhlIGRyb3Bkb3duXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY2FsY3VsYXRlSGVpZ2h0OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgZHJvcGRvd24gbWVudSB0byBzaWRlIG9mIHRvZ2dsZS4gRGVmYXVsdHMgdG8gYmVsb3dcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkaXNwbGF5VG9TaWRlOiBib29sZWFuO1xyXG5cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlzQ29udGV4dE1lbnUgPSBmYWxzZTtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNvbnRlbnQgZWxlbWVudC4gVGhpcyBtdXN0IGJlIHByb3ZpZGVkIGJ5IHRoZSBEcm9wZG93bkNvbnRlbnREaXJlY3RpdmUgb3IgcG9zc2libHkgc29tZSBjdXN0b20gaW1wbGVtZW50YXRpb25cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgnc21lRHJvcGRvd25Db250ZW50JylcclxuICAgIHB1YmxpYyBjb250ZW50RWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSB0b2dnbGUgZWxlbWVudC4gVGhpcyBtdXN0IGJlIHByb3ZpZGVkIGJ5IHRoZSBEcm9wZG93blRvZ2dsZURpcmVjdGl2ZSBvciBwb3NzaWJseSBzb21lIGN1c3RvbSBpbXBsZW1lbnRhdGlvblxyXG4gICAgICovXHJcbiAgICBAVmlld0NoaWxkKCdzbWVEcm9wZG93blRvZ2dsZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgdG9nZ2xlRWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERldGVybWluZSBpZiB0aGUgZHJvcGRvd24gd2lsbCB1c2UgdGhlIHNtZS1mb3JtLWZpZWxkIHRvIGxpbWl0IGl0cyBtYXgtd2lkdGhcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkcm9wZG93bkFwcGx5Rm9ybUZpZWxkT2Zmc2V0V2lkdGggPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHRoZSBvcGVuIHN0YXRlIG9mIHRoZSBkcm9wZG93blxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXNPcGVuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaG93IGZhciB0aGUgZHJvcGRvd24gY29udGVudCBoYXMgYmVlbiB0cmFuc2xhdGVkIHRvIHJlbWFpbiBmdWxseSBvbiBzY3JlZW5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGxlZnQgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGhvdyBmYXIgdGhlIGRyb3Bkb3duIGNvbnRlbnQgaGFzIGJlZW4gdHJhbnNsYXRlZCB0byByZW1haW4gZnVsbHkgb24gc2NyZWVuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0b3AgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIHRoZSBkcm9wZG93biBpcyBsYXJnZXIgdGhhbiB0aGUgaG9yaXpvbnRhbCBzcGFjZSBhdmFpbGFibGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIG92ZXJmbG93WCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIHRoZSBkcm9wZG93biBpcyBsYXJnZXIgdGhhbiB0aGUgdmVydGljYWwgc3BhY2UgYXZhaWxhYmxlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvdmVyZmxvd1kgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IGRyb3Bkb3duIHNob3VsZCBiZSBkaXNhYmxlZC5cclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWUtZGlzYWJsZWQnKVxyXG4gICAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZVRvZ2dsZUNsaWNrOiBGdW5jdGlvbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBEcm9wZG93bkRpcmVjdGl2ZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgZHJvcGRvd25TZXJ2aWNlOiBEcm9wZG93blNlcnZpY2UsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChTTUVfTEFZT1VUX1BST1ZJREVSKSBwcml2YXRlIGxheW91dDogTGF5b3V0KSB7XHJcbiAgICAgICAgcmVuZGVyZXIuYWRkQ2xhc3MoZWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc21lLWxheW91dC1yZWxhdGl2ZScpO1xyXG4gICAgICAgIHRoaXMuYXV0b1RvZ2dsZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbmd1bGFycyBPbiBJbml0IExpZmVjeWNsZSBIb29rXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNDb250ZXh0TWVudSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnRvZ2dsZUVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2FyaWEtaGFzcG9wdXAnLCAndHJ1ZScpO1xyXG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlVG9nZ2xlQ2xpY2sgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLnRvZ2dsZUVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2NsaWNrJyxcclxuICAgICAgICAgICAgICAgIChldmVudCkgPT4gdGhpcy5vblRvZ2dsZUNsaWNrKGV2ZW50KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kcm9wZG93blNlcnZpY2Uub3Blbih0aGlzLCB0aGlzLmNhbGN1bGF0ZUhlaWdodCwgdGhpcy5kaXNwbGF5VG9TaWRlKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmxheW91dCkge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dENoYW5nZVN1YnNjcmliZXIgPSB0aGlzLmxheW91dC5sYXlvdXRDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byBwb3N0cG9uZWQgdGhlIGRyb3Bkb3duIFVJIHVwZGF0ZSB0byBuZXh0IHJlZnJlc2ggY3ljbGUuXHJcbiAgICAgICAgICAgICAgICAvLyBUaGlzIHRoZSBjdXJyZW50IHJlZnJlc2ggY3ljbGUgY2FuIGJlIHVzZWQgZm9yIGFueSBjb21wb25lbnRzIHRvIHVwZGF0ZSBpdHMgb3duIFVJIHdoaWNoIG1heSBpbXBhY3QgZHJvcGRvd24gVUkuXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duU2VydmljZS51cGRhdGVQb3NpdGlvbih0aGlzLCB0aGlzLmNhbGN1bGF0ZUhlaWdodCwgdGhpcy5kaXNwbGF5VG9TaWRlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbmd1bGFycyBPbiBEZXN0cm95IExpZmVjeWNsZSBIb29rXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgLy8gdGhpcy51bnN1YnNjcmliZVRvZ2dsZUNsaWNrKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmxheW91dENoYW5nZVN1YnNjcmliZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2VTdWJzY3JpYmVyLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3BlbnMgdGhpcyBkcm9wZG93blxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3BlbigpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZSh0cnVlLCB0aGlzLmNhbGN1bGF0ZUhlaWdodCwgdGhpcy5kaXNwbGF5VG9TaWRlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RlbiB0byBrZXlib2FyZCBldmVudCBhbmQgY2xvc2UgZHJvcGRvd24gd2hlbiB1c2VycyBkbyBub3QgZm9jdXMgb24gZHJvcGRvd24gbGlzdFxyXG4gICAgICovXHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25LZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBLZXlDb2RlLlRhYikge1xyXG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IDxIVE1MRWxlbWVudD5ldmVudC50YXJnZXQ7XHJcbiAgICAgICAgICAgIHdoaWxlICghdGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoZWxlbWVudCkgJiYgIXRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoZWxlbWVudCkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnc21lLWZvY3VzLXRyYXAnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jbG9zZShldmVudCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICgoZXZlbnQua2V5Q29kZSA9PT0gS2V5Q29kZS5MZWZ0QXJyb3cgJiYgKDxIVE1MRWxlbWVudD5ldmVudC50YXJnZXQpLmNsYXNzTmFtZS5pbmRleE9mKCdzbWUtZHJvcGRvd24tdG9nZ2xlJykgPiAtMSkpIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZShldmVudCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09PSBLZXlDb2RlLkVzY2FwZSkge1xyXG4gICAgICAgICAgICAvLyBwcmV2ZW50IGV2ZW50IHByb3BhZ2F0aW9uIHdoZW4gaW5zaWRlIGEgZGlhbG9nXHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDbG9zZXMgdGhpcyBkcm9wZG93blxyXG4gICAgICogQHBhcmFtIGV2ZW50IGtleWJvYXJkIGV2ZW50IGluY2x1ZGluZyB0aGUgY3VycmVudCBldmVudCB0YXJnZXRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsb3NlKGV2ZW50PzogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlKGZhbHNlLCBudWxsLCB0aGlzLmRpc3BsYXlUb1NpZGUsIGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRvZ2dsZXMgdGhlIGRyb3Bkb3duXHJcbiAgICAgKiBAcGFyYW0gb3BlbiBPcHRpb25hbC4gSWYgcHJvdmlkZWQsIGZvcmNlcyB0aGUgZHJvcGRvd24gb3BlbiBvciBjbG9zZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0b2dnbGUob3Blbj86IGJvb2xlYW4sIGNhbGN1bGF0ZUhlaWdodD86IGJvb2xlYW4sIGRpc3BsYXlUb1NpZGU/OiBib29sZWFuLCBldmVudD86IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICAvLyBJZiB3ZSBhcmUgYWxyZWFkeSBpbiB0aGUgY29ycmVjdCBzdGF0ZSwgcmV0dXJuXHJcbiAgICAgICAgaWYgKCFNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKG9wZW4pICYmIG9wZW4gPT09IHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICAgICAgICAvLyBjbG9zZSBpZiBvcGVuZWRcclxuICAgICAgICAgICAgdGhpcy5kcm9wZG93blNlcnZpY2UuY2xvc2UodGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMudG9nZ2xlRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25TZXJ2aWNlLmNsb3NlTmVzdGVkKHRoaXMsIGV2ZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBlbWl0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBkcm9wZG93blxyXG4gICAgICAgICAgICB0aGlzLm9uVG9nZ2xlZC5lbWl0KHRoaXMuaXNPcGVuKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBvcGVuIGlmIGNsb3NlZFxyXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duU2VydmljZS5vcGVuKHRoaXMsIGNhbGN1bGF0ZUhlaWdodCwgZGlzcGxheVRvU2lkZSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnRvZ2dsZUVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xvc2VFdmVudCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgLy8gZW1pdCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZHJvcGRvd25cclxuICAgICAgICAgICAgICAgIHRoaXMub25Ub2dnbGVkLmVtaXQodGhpcy5pc09wZW4pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXIgZm9yIHRoZSBjbGljayBldmVudCBmb3IgdGhlIHRvZ2dsZSBlbGVtZW50XHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgdGhlIG1vdXNlIGV2ZW50IG9mIHRoZSBjbGlja1xyXG4gICAgICogQHBhcmFtIG1hbnVhbFRvZ2dsZSBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIG1hbnVhbGx5IHRvZ2dsZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25Ub2dnbGVDbGljayhldmVudDogYW55LCBtYW51YWxUb2dnbGU/OiBib29sZWFuKSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmF1dG9Ub2dnbGUgfHwgbWFudWFsVG9nZ2xlKSB7XHJcbiAgICAgICAgICAgIC8vIHRvZ2dsZSB0aGUgZHJvcGRvd24gaWYgbm90IGRpc2FibGVkXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGUobnVsbCwgdGhpcy5jYWxjdWxhdGVIZWlnaHQsIHRoaXMuZGlzcGxheVRvU2lkZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2ICNzbWVEcm9wZG93blRvZ2dsZSBjbGFzcz1cInNtZS1kcm9wZG93bi10b2dnbGUtY29udGFpbmVyXCIgZGF0YS11dGEtaWQ9XCJkcm9wZG93bi10b2dnbGVcIj5cclxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuc21lLWRyb3Bkb3duLXRvZ2dsZVwiPjwvbmctY29udGVudD5cclxuPC9kaXY+XHJcbjxkaXYgI3NtZURyb3Bkb3duQ29udGVudFxyXG4gIGNsYXNzPVwic21lLWxheW91dC1kcm9wZG93biBzbWUtbGF5b3V0LWZpeGVkIHNtZS1wb3NpdGlvbi1iZWxvdyBzbWUtc2NoZW1lLWRyb3Bkb3duIHNtZS1sYXllci1uYXYgc21lLXNoYWRvdy1kcm9wZG93blwiXHJcbiAgW25nQ2xhc3NdPVwieydzbWUtbGF5b3V0LWhpZGRlbic6ICFpc09wZW4sICdzbWUtbGF5b3V0LWlubGluZS1ibG9jayc6IGlzT3BlbiwgJ3NtZS1hcnJhbmdlLW92ZXJmbG93LWF1dG8teCc6IG92ZXJmbG93WCwgJ3NtZS1hcnJhbmdlLW92ZXJmbG93LWF1dG8teSc6IG92ZXJmbG93WX1cIlxyXG4gIGRhdGEtdXRhLWlkPVwiZHJvcGRvd24tY29udGVudFwiPlxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5zbWUtZHJvcGRvd24tY29udGVudFwiPjwvbmctY29udGVudD5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -17,8 +17,8 @@ import * as i7 from "../../../accordion/accordion.component";
|
|
|
17
17
|
import * as i8 from "@angular/common";
|
|
18
18
|
import * as i9 from "../../validation-alert/validation-alert.component";
|
|
19
19
|
import * as i10 from "../../../accordion/accordion-panel/accordion-panel.component";
|
|
20
|
-
import * as i11 from "
|
|
21
|
-
import * as i12 from "
|
|
20
|
+
import * as i11 from "../../fieldset/fieldset.directive";
|
|
21
|
+
import * as i12 from "../../../../directives/template-outlet/template-outlet.directive";
|
|
22
22
|
import * as i13 from "../../../tooltip/tooltip.directive";
|
|
23
23
|
import * as i14 from "../../../../directives/disabled/disabled.directive";
|
|
24
24
|
const _c0 = ["field"];
|
|
@@ -31,54 +31,63 @@ function ArrayFormFieldLoaderComponent_ng_template_2_Template(rf, ctx) { if (rf
|
|
|
31
31
|
} }
|
|
32
32
|
const _c1 = ["addButton"];
|
|
33
33
|
const _c2 = ["type", "array"];
|
|
34
|
+
const _c3 = function (a0, a1) { return { index: a0, ariaLabelId: a1 }; };
|
|
35
|
+
function ArrayFormFieldComponent_sme_accordion_panel_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
36
|
+
i0.ɵɵelementContainer(0, 15);
|
|
37
|
+
} if (rf & 2) {
|
|
38
|
+
const ctx_r8 = i0.ɵɵnextContext();
|
|
39
|
+
const item_r2 = ctx_r8.$implicit;
|
|
40
|
+
const i_r3 = ctx_r8.index;
|
|
41
|
+
const ctx_r4 = i0.ɵɵnextContext();
|
|
42
|
+
i0.ɵɵproperty("template", ctx_r4.headerTemplate)("data", item_r2)("hostData", i0.ɵɵpureFunction2(3, _c3, i_r3, ctx_r4.getItemAriaId(i_r3, "itemHeader")));
|
|
43
|
+
} }
|
|
34
44
|
function ArrayFormFieldComponent_sme_accordion_panel_3_button_3_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
-
const
|
|
36
|
-
i0.ɵɵelementStart(0, "button",
|
|
37
|
-
i0.ɵɵlistener("click", function ArrayFormFieldComponent_sme_accordion_panel_3_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
38
|
-
i0.ɵɵelement(1, "span",
|
|
45
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
46
|
+
i0.ɵɵelementStart(0, "button", 16);
|
|
47
|
+
i0.ɵɵlistener("click", function ArrayFormFieldComponent_sme_accordion_panel_3_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const item_r2 = i0.ɵɵnextContext().$implicit; const ctx_r9 = i0.ɵɵnextContext(); return ctx_r9.moveUp(item_r2); });
|
|
48
|
+
i0.ɵɵelement(1, "span", 17);
|
|
39
49
|
i0.ɵɵelementEnd();
|
|
40
50
|
} if (rf & 2) {
|
|
41
|
-
const
|
|
42
|
-
i0.ɵɵproperty("title",
|
|
43
|
-
i0.ɵɵattribute("aria-label",
|
|
51
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
52
|
+
i0.ɵɵproperty("title", ctx_r5.strings.MsftSmeShell.Angular.Form.Array.promoteButtonTooltip)("smeDisabled", ctx_r5.loadingOrDisabled);
|
|
53
|
+
i0.ɵɵattribute("aria-label", ctx_r5.strings.MsftSmeShell.Angular.Form.Array.promoteButtonAriaLabel);
|
|
44
54
|
} }
|
|
45
55
|
function ArrayFormFieldComponent_sme_accordion_panel_3_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
-
const
|
|
47
|
-
i0.ɵɵelementStart(0, "button",
|
|
48
|
-
i0.ɵɵlistener("click", function ArrayFormFieldComponent_sme_accordion_panel_3_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
49
|
-
i0.ɵɵelement(1, "span",
|
|
56
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
57
|
+
i0.ɵɵelementStart(0, "button", 18);
|
|
58
|
+
i0.ɵɵlistener("click", function ArrayFormFieldComponent_sme_accordion_panel_3_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const item_r2 = i0.ɵɵnextContext().$implicit; const ctx_r12 = i0.ɵɵnextContext(); return ctx_r12.moveDown(item_r2); });
|
|
59
|
+
i0.ɵɵelement(1, "span", 19);
|
|
50
60
|
i0.ɵɵelementEnd();
|
|
51
61
|
} if (rf & 2) {
|
|
52
|
-
const
|
|
53
|
-
i0.ɵɵproperty("title",
|
|
54
|
-
i0.ɵɵattribute("aria-label",
|
|
62
|
+
const ctx_r6 = i0.ɵɵnextContext(2);
|
|
63
|
+
i0.ɵɵproperty("title", ctx_r6.strings.MsftSmeShell.Angular.Form.Array.demoteButtonTooltip)("smeDisabled", ctx_r6.loadingOrDisabled);
|
|
64
|
+
i0.ɵɵattribute("aria-label", ctx_r6.strings.MsftSmeShell.Angular.Form.Array.demoteButtonAriaLabel);
|
|
55
65
|
} }
|
|
56
66
|
function ArrayFormFieldComponent_sme_accordion_panel_3_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
57
|
-
const
|
|
58
|
-
i0.ɵɵelementStart(0, "button",
|
|
59
|
-
i0.ɵɵlistener("click", function ArrayFormFieldComponent_sme_accordion_panel_3_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
60
|
-
i0.ɵɵelement(1, "span",
|
|
67
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
68
|
+
i0.ɵɵelementStart(0, "button", 20);
|
|
69
|
+
i0.ɵɵlistener("click", function ArrayFormFieldComponent_sme_accordion_panel_3_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const item_r2 = i0.ɵɵnextContext().$implicit; const ctx_r15 = i0.ɵɵnextContext(); return ctx_r15.delete(item_r2); });
|
|
70
|
+
i0.ɵɵelement(1, "span", 21);
|
|
61
71
|
i0.ɵɵelementEnd();
|
|
62
72
|
} if (rf & 2) {
|
|
63
|
-
const
|
|
64
|
-
i0.ɵɵproperty("title",
|
|
65
|
-
i0.ɵɵattribute("aria-label",
|
|
73
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
74
|
+
i0.ɵɵproperty("title", ctx_r7.strings.MsftSmeShell.Angular.Form.Array.removeButtonTooltip)("smeDisabled", ctx_r7.loadingOrDisabled);
|
|
75
|
+
i0.ɵɵattribute("aria-label", ctx_r7.strings.MsftSmeShell.Angular.Form.Array.removeButtonAriaLabel);
|
|
66
76
|
} }
|
|
67
|
-
const _c3 = function (a0, a1) { return { index: a0, ariaLabelId: a1 }; };
|
|
68
77
|
function ArrayFormFieldComponent_sme_accordion_panel_3_Template(rf, ctx) { if (rf & 1) {
|
|
69
78
|
i0.ɵɵelementStart(0, "sme-accordion-panel", 7);
|
|
70
79
|
i0.ɵɵelementStart(1, "sme-panel-control");
|
|
71
|
-
i0.ɵɵ
|
|
80
|
+
i0.ɵɵtemplate(2, ArrayFormFieldComponent_sme_accordion_panel_3_ng_container_2_Template, 1, 6, "ng-container", 8);
|
|
72
81
|
i0.ɵɵtemplate(3, ArrayFormFieldComponent_sme_accordion_panel_3_button_3_Template, 2, 3, "button", 9);
|
|
73
|
-
i0.ɵɵtemplate(4, ArrayFormFieldComponent_sme_accordion_panel_3_button_4_Template, 2, 3, "button",
|
|
74
|
-
i0.ɵɵtemplate(5, ArrayFormFieldComponent_sme_accordion_panel_3_button_5_Template, 2, 3, "button",
|
|
82
|
+
i0.ɵɵtemplate(4, ArrayFormFieldComponent_sme_accordion_panel_3_button_4_Template, 2, 3, "button", 10);
|
|
83
|
+
i0.ɵɵtemplate(5, ArrayFormFieldComponent_sme_accordion_panel_3_button_5_Template, 2, 3, "button", 11);
|
|
75
84
|
i0.ɵɵelementEnd();
|
|
76
|
-
i0.ɵɵelementStart(6, "span",
|
|
85
|
+
i0.ɵɵelementStart(6, "span", 12);
|
|
77
86
|
i0.ɵɵtext(7);
|
|
78
87
|
i0.ɵɵelementEnd();
|
|
79
|
-
i0.ɵɵelementStart(8, "fieldset",
|
|
80
|
-
i0.ɵɵelementStart(9, "div",
|
|
81
|
-
i0.ɵɵelementContainer(10,
|
|
88
|
+
i0.ɵɵelementStart(8, "fieldset", 13);
|
|
89
|
+
i0.ɵɵelementStart(9, "div", 14);
|
|
90
|
+
i0.ɵɵelementContainer(10, 15);
|
|
82
91
|
i0.ɵɵelementEnd();
|
|
83
92
|
i0.ɵɵelementEnd();
|
|
84
93
|
i0.ɵɵelementEnd();
|
|
@@ -87,8 +96,9 @@ function ArrayFormFieldComponent_sme_accordion_panel_3_Template(rf, ctx) { if (r
|
|
|
87
96
|
const i_r3 = ctx.index;
|
|
88
97
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
89
98
|
i0.ɵɵproperty("header", ctx_r0.getItemTitle(item_r2, i_r3))("isExpandable", false);
|
|
99
|
+
i0.ɵɵattribute("data-uta-id", "array-form-field-item-" + i_r3);
|
|
90
100
|
i0.ɵɵadvance(2);
|
|
91
|
-
i0.ɵɵproperty("
|
|
101
|
+
i0.ɵɵproperty("ngIf", ctx_r0.headerTemplate);
|
|
92
102
|
i0.ɵɵadvance(1);
|
|
93
103
|
i0.ɵɵproperty("ngIf", ctx_r0.showMove);
|
|
94
104
|
i0.ɵɵadvance(1);
|
|
@@ -105,12 +115,12 @@ function ArrayFormFieldComponent_sme_accordion_panel_3_Template(rf, ctx) { if (r
|
|
|
105
115
|
i0.ɵɵadvance(1);
|
|
106
116
|
i0.ɵɵproperty("id", ctx_r0.getItemAriaId(i_r3, "itemContainer"));
|
|
107
117
|
i0.ɵɵadvance(1);
|
|
108
|
-
i0.ɵɵproperty("template", ctx_r0.itemTemplate)("data", item_r2)("hostData", i0.ɵɵpureFunction2(
|
|
118
|
+
i0.ɵɵproperty("template", ctx_r0.itemTemplate)("data", item_r2)("hostData", i0.ɵɵpureFunction2(16, _c3, i_r3, ctx_r0.getItemAriaId(i_r3, "item")));
|
|
109
119
|
} }
|
|
110
120
|
function ArrayFormFieldComponent_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
111
|
-
const
|
|
112
|
-
i0.ɵɵelementStart(0, "button",
|
|
113
|
-
i0.ɵɵlistener("click", function ArrayFormFieldComponent_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
121
|
+
const _r20 = i0.ɵɵgetCurrentView();
|
|
122
|
+
i0.ɵɵelementStart(0, "button", 22, 23);
|
|
123
|
+
i0.ɵɵlistener("click", function ArrayFormFieldComponent_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(); return ctx_r19.add(); });
|
|
114
124
|
i0.ɵɵtext(2);
|
|
115
125
|
i0.ɵɵelementEnd();
|
|
116
126
|
} if (rf & 2) {
|
|
@@ -421,11 +431,11 @@ let ArrayFormFieldComponent = class ArrayFormFieldComponent extends SmeInternalF
|
|
|
421
431
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.addButton = _t.first);
|
|
422
432
|
} }, hostVars: 1, hostBindings: function ArrayFormFieldComponent_HostBindings(rf, ctx) { if (rf & 2) {
|
|
423
433
|
i0.ɵɵattribute("aria-label", ctx.ariaLabel);
|
|
424
|
-
} }, inputs: { adjustControlButtonLocation: "adjustControlButtonLocation", newItem: "newItem", showAdd: "showAdd", showRemove: "showRemove", showMove: "showMove", canCloseAll: "canCloseAll", canCloseAny: "canCloseAny", canOpenMultiple: "canOpenMultiple", maxItems: "maxItems", addButtonText: "addButtonText", headerTemplate: "headerTemplate", itemTitle: "itemTitle" }, outputs: { askForNewItem: "askForNewItem", askForItemHeader: "askForItemHeader", askForRemoveEvaluator: "askForRemoveEvaluator" }, features: [i0.ɵɵInheritDefinitionFeature], attrs: _c2, decls: 8, vars: 8, consts: [[3, "formField"], [1, "sme-array"], [3, "canCloseAny", "canCloseAll", "canOpenMultiple"], [3, "header", "isExpandable", 4, "ngFor", "ngForOf"], ["type", "button", "class", "sme-button-trigger sme-button-auto-width sme-icon sme-icon-add sme-margin-bottom-xs", 3, "smeDisabled", "title", "click", 4, "ngIf"], [3, "alert"], ["aria-live", "assertive", "aria-relevant", "all", 1, "sme-screen-reader"], [3, "header", "isExpandable"], ["smeTemplateOutlet", "", "hostDataName", "context", 3, "template", "data", "hostData"], ["type", "button", "class", "sme-button-trigger sme-button-auto-width sme-form-field-height sme-padding-horizontal-xs", 3, "title", "smeDisabled", "click", 4, "ngIf"], [1, "sme-screen-reader", 3, "id"], [1, "sme-arrange-stack-h", "sme-margin-bottom-lg", "sme-array-item"], [1, "sme-position-flex-auto", "sme-padding-inset-md", 3, "id"], ["type", "button", 1, "sme-button-trigger", "sme-button-auto-width", "sme-form-field-height", "sme-padding-horizontal-xs", 3, "title", "smeDisabled", "click"], [1, "sme-icon", "sme-icon-up"], [1, "sme-icon", "sme-icon-down"], [1, "sme-icon", "sme-icon-delete", "sme-color-red"], ["type", "button", 1, "sme-button-trigger", "sme-button-auto-width", "sme-icon", "sme-icon-add", "sme-margin-bottom-xs", 3, "smeDisabled", "title", "click"], ["addButton", ""]], template: function ArrayFormFieldComponent_Template(rf, ctx) { if (rf & 1) {
|
|
434
|
+
} }, inputs: { adjustControlButtonLocation: "adjustControlButtonLocation", newItem: "newItem", showAdd: "showAdd", showRemove: "showRemove", showMove: "showMove", canCloseAll: "canCloseAll", canCloseAny: "canCloseAny", canOpenMultiple: "canOpenMultiple", maxItems: "maxItems", addButtonText: "addButtonText", headerTemplate: "headerTemplate", itemTitle: "itemTitle" }, outputs: { askForNewItem: "askForNewItem", askForItemHeader: "askForItemHeader", askForRemoveEvaluator: "askForRemoveEvaluator" }, features: [i0.ɵɵInheritDefinitionFeature], attrs: _c2, decls: 8, vars: 8, consts: [[3, "formField"], [1, "sme-array"], [3, "canCloseAny", "canCloseAll", "canOpenMultiple"], [3, "header", "isExpandable", 4, "ngFor", "ngForOf"], ["type", "button", "data-uta-id", "add-button", "class", "sme-button-trigger sme-button-auto-width sme-icon sme-icon-add sme-margin-bottom-xs", 3, "smeDisabled", "title", "click", 4, "ngIf"], [3, "alert"], ["aria-live", "assertive", "aria-relevant", "all", 1, "sme-screen-reader"], [3, "header", "isExpandable"], ["smeTemplateOutlet", "", "hostDataName", "context", 3, "template", "data", "hostData", 4, "ngIf"], ["type", "button", "class", "sme-button-trigger sme-button-auto-width sme-form-field-height sme-padding-horizontal-xs", "data-uta-id", "promote-button", 3, "title", "smeDisabled", "click", 4, "ngIf"], ["type", "button", "class", "sme-button-trigger sme-button-auto-width sme-form-field-height sme-padding-horizontal-xs", "data-uta-id", "demote-button", 3, "title", "smeDisabled", "click", 4, "ngIf"], ["type", "button", "class", "sme-button-trigger sme-button-auto-width sme-form-field-height sme-padding-horizontal-xs", "data-uta-id", "remove-button", 3, "title", "smeDisabled", "click", 4, "ngIf"], [1, "sme-screen-reader", 3, "id"], [1, "sme-arrange-stack-h", "sme-margin-bottom-lg", "sme-array-item"], [1, "sme-position-flex-auto", "sme-padding-inset-md", 3, "id"], ["smeTemplateOutlet", "", "hostDataName", "context", 3, "template", "data", "hostData"], ["type", "button", "data-uta-id", "promote-button", 1, "sme-button-trigger", "sme-button-auto-width", "sme-form-field-height", "sme-padding-horizontal-xs", 3, "title", "smeDisabled", "click"], [1, "sme-icon", "sme-icon-up"], ["type", "button", "data-uta-id", "demote-button", 1, "sme-button-trigger", "sme-button-auto-width", "sme-form-field-height", "sme-padding-horizontal-xs", 3, "title", "smeDisabled", "click"], [1, "sme-icon", "sme-icon-down"], ["type", "button", "data-uta-id", "remove-button", 1, "sme-button-trigger", "sme-button-auto-width", "sme-form-field-height", "sme-padding-horizontal-xs", 3, "title", "smeDisabled", "click"], [1, "sme-icon", "sme-icon-delete", "sme-color-red"], ["type", "button", "data-uta-id", "add-button", 1, "sme-button-trigger", "sme-button-auto-width", "sme-icon", "sme-icon-add", "sme-margin-bottom-xs", 3, "smeDisabled", "title", "click"], ["addButton", ""]], template: function ArrayFormFieldComponent_Template(rf, ctx) { if (rf & 1) {
|
|
425
435
|
i0.ɵɵelementStart(0, "sme-form-field-layout", 0);
|
|
426
436
|
i0.ɵɵelementStart(1, "div", 1);
|
|
427
437
|
i0.ɵɵelementStart(2, "sme-accordion", 2);
|
|
428
|
-
i0.ɵɵtemplate(3, ArrayFormFieldComponent_sme_accordion_panel_3_Template, 11,
|
|
438
|
+
i0.ɵɵtemplate(3, ArrayFormFieldComponent_sme_accordion_panel_3_Template, 11, 19, "sme-accordion-panel", 3);
|
|
429
439
|
i0.ɵɵelementEnd();
|
|
430
440
|
i0.ɵɵtemplate(4, ArrayFormFieldComponent_button_4_Template, 3, 4, "button", 4);
|
|
431
441
|
i0.ɵɵelementEnd();
|
|
@@ -446,7 +456,7 @@ let ArrayFormFieldComponent = class ArrayFormFieldComponent extends SmeInternalF
|
|
|
446
456
|
i0.ɵɵproperty("alert", ctx.alert);
|
|
447
457
|
i0.ɵɵadvance(2);
|
|
448
458
|
i0.ɵɵtextInterpolate(ctx.screenReaderEvent);
|
|
449
|
-
} }, directives: [i6.FormFieldLayoutComponent, i7.AccordionComponent, i8.NgForOf, i8.NgIf, i9.ValidationAlertComponent, i10.AccordionPanelComponent, i10.PanelControlComponent, i11.
|
|
459
|
+
} }, directives: [i6.FormFieldLayoutComponent, i7.AccordionComponent, i8.NgForOf, i8.NgIf, i9.ValidationAlertComponent, i10.AccordionPanelComponent, i10.PanelControlComponent, i11.FieldsetDirective, i12.TemplateOutletDirective, i13.TooltipDirective, i14.DisabledDirective], encapsulation: 2 });
|
|
450
460
|
ArrayFormFieldComponent = __decorate([
|
|
451
461
|
SmeSchemaProperty({
|
|
452
462
|
type: SchemaPrimitiveType.Array,
|
|
@@ -504,4 +514,4 @@ export { ArrayFormFieldComponent };
|
|
|
504
514
|
type: ViewChild,
|
|
505
515
|
args: ['addButton']
|
|
506
516
|
}] }); })();
|
|
507
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9mb3JtL2Zvcm0tZmllbGQvYXJyYXkvYXJyYXktZm9ybS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9mb3JtL2Zvcm0tZmllbGQvYXJyYXkvYXJyYXktZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUNBQXVDLEVBQTRCLE1BQU0sNkNBQTZDLENBQUM7QUFDaEksT0FBTyxFQUF3QixtQkFBbUIsRUFBa0IsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFjLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTJCNUUsMkNBQytEOzs7O0lBRHhDLDJEQUFzQywyQkFBQSxrQkFBQTs7Ozs7O0lDeEMvRCxrQ0FJb0M7SUFEcUMscVFBQXNCO0lBRTdGLDJCQUEwQztJQUM1QyxpQkFBUzs7O0lBSFAsMkZBQXNFLHlDQUFBO0lBRHRFLG1HQUFrRjs7OztJQUtwRixrQ0FJb0M7SUFEb0MsMFFBQXdCO0lBRTlGLDJCQUE0QztJQUM5QyxpQkFBUzs7O0lBSFAsMEZBQXFFLHlDQUFBO0lBRHJFLGtHQUFpRjs7OztJQUtuRixrQ0FJb0M7SUFEb0Msd1FBQXNCO0lBRTVGLDJCQUE0RDtJQUM5RCxpQkFBUzs7O0lBSFAsMEZBQXFFLHlDQUFBO0lBRHJFLGtHQUFpRjs7OztJQXBCdkYsOENBQXVIO0lBQ3JILHlDQUFtQjtJQUNqQiwyQkFDc0Y7SUFDdEYsb0dBTVM7SUFDVCxvR0FNUztJQUNULG9HQU1TO0lBQ1gsaUJBQW9CO0lBRXBCLGdDQUFnRTtJQUFBLFlBQWE7SUFBQSxpQkFBTztJQUNwRixvQ0FFK0Q7SUFFN0QsK0JBQWtHO0lBQ2hHLDRCQUNnRjtJQUNsRixpQkFBTTtJQUNSLGlCQUFXO0lBRWIsaUJBQXNCOzs7OztJQXRDeUMsMkRBQWdDLHVCQUFBO0lBRTNELGVBQTJCO0lBQTNCLGdEQUEyQixpQkFBQSx5RkFBQTtJQUVsRCxlQUFjO0lBQWQsc0NBQWM7SUFPZCxlQUFjO0lBQWQsc0NBQWM7SUFPZCxlQUE0QjtJQUE1QiwwREFBNEI7SUFTUCxlQUErQjtJQUEvQix1REFBK0I7SUFBQyxlQUFhO0lBQWIsc0NBQWE7SUFHM0UsZUFBNEQ7SUFBNUQsOEVBQTREO0lBRnBELHFFQUFpRDtJQUlBLGVBQXdDO0lBQXhDLGdFQUF3QztJQUMvRCxlQUF5QjtJQUF6Qiw4Q0FBeUIsaUJBQUEsbUZBQUE7Ozs7SUFRakUsc0NBSXFGO0lBQWhCLDBMQUFlO0lBQUMsWUFBaUI7SUFBQSxpQkFBUzs7O0lBSDdHLDBIQUFrRiwwRUFBQTtJQUVsRiwrRkFBOEU7SUFDSyxlQUFpQjtJQUFqQiwwQ0FBaUI7O0FEZDFHLGlDQUFpQztBQW1CakMsZ0NBQWdDO0FBQ2hDLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSx1Q0FBdUM7SUFJL0UsYUFBYSxDQUFDLE1BQU07UUFDdkIsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekYsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVNLGlDQUFpQztRQUNwQyxNQUFNLGtCQUFrQixHQUF5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUMxRSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLGtCQUFrQixDQUFDLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO2dCQUN0RSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQzthQUN4RDtZQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLElBQUksQ0FBQyxHQUFHLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzlFLElBQUksa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO29CQUN4RixNQUFNLEdBQUcsSUFBSSxDQUFDO29CQUNkLE1BQU07aUJBQ1Q7YUFDSjtTQUNKO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQzs7bUtBekJRLDZCQUE2QjtxRkFBN0IsNkJBQTZCOzs7Ozs7UUFqQnRDLDRDQVFLO1FBUitCLDZKQUFrQiwySEFDeUQseUJBQXFCLElBRDlFLDZIQUdoQyx3REFBZ0QsUUFBUSxJQUh4QixtTEFJYSxxRUFBNkQsUUFBUSxJQUpsRjtRQVNsRCwyRkFHYztRQUNsQixpQkFBaUI7O1FBYm1CLGtDQUFrQixpQ0FBQSxpREFBQSx5Q0FBQSw2REFBQSx3RUFBQSxxSUFBQSw0RUFBQSxrSUFBQTswR0EyRDdDLHVCQUF1QjswRkExQ3ZCLDZCQUE2Qjt1RkFBN0IsNkJBQTZCO2NBbkJ6QyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7S0FlVDthQUNKO2dCQUlXLHVCQUF1QjtrQkFEOUIsU0FBUzttQkFBQyxPQUFPOztBQTJCdEI7O0dBRUc7SUFZVSx1QkFBdUIsU0FBdkIsdUJBQXdCLFNBQVEsNkJBQW9DO0lBcUg3RTs7T0FFRztJQUNILFlBQ0ksUUFBa0I7UUFFbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBaEdwQjs7V0FFRztRQUVJLGtCQUFhLEdBQXlDLElBQUksWUFBWSxFQUEwQixDQUFDO1FBRXhHLDhFQUE4RTtRQUV2RSxxQkFBZ0IsR0FBdUMsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFFdkcsMkdBQTJHO1FBRXBHLDBCQUFxQixHQUEyQyxJQUFJLFlBQVksRUFBNEIsQ0FBQztRQUVwSDs7V0FFRztRQUVJLGdDQUEyQixHQUFHLEtBQUssQ0FBQztRQStFdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFhLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBUSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUNqRyxJQUFJLENBQUMsVUFBVSxHQUFhLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBUSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDeEcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBbklEOztPQUVHO0lBQ0gsSUFBYyxhQUFhO1FBQ3ZCLE9BQU8seUJBQXlCLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxZQUFZO1FBQ25CLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRTtZQUNqRSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQztTQUNqRDtRQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBMEVELElBQ1csU0FBUyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLEtBQUssTUFBTSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ1csU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUE2QkQ7O09BRUc7SUFDSSxRQUFRO1FBQ1gsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQWtCLEVBQUUsRUFBRTtnQkFDakUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO29CQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDeEM7Z0JBRUQsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO29CQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO2lCQUN0QztnQkFFRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN4QztnQkFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2xELENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDWDtJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLHVCQUF1QixDQUFDLEtBQWE7UUFDekMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDbEcsQ0FBQztJQUVEOztPQUVHO0lBQ0ksR0FBRztRQUNOLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUUxQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDMUQsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUV0RCxNQUFNLFVBQVUsR0FBZ0IsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVyRSxJQUFJLFVBQVUsRUFBRTtnQkFDWixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDdEI7WUFFRCxhQUFhLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxJQUFTO1FBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZDLG9EQUFvRDtRQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDbEUsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUxRCxJQUFJLGFBQWEsRUFBRTtZQUNmLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsaUZBQWlGO1FBQ2pGLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXJDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsSUFBUztRQUNuQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDWCxNQUFNLElBQUkscUJBQVEsSUFBSSxDQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMscUJBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDN0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDakc7YUFBTTtZQUNILElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1NBQzFHO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUSxDQUFDLElBQVM7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLE1BQU0sSUFBSSxxQkFBUSxJQUFJLENBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxxQkFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNoRzthQUFNO1lBQ0gsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDekc7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxrQkFBa0I7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBYSxFQUFFLE1BQWM7UUFDOUMsUUFBUSxNQUFNLEVBQUU7WUFDWixLQUFLLE1BQU07Z0JBQ1AsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDNUMsS0FBSyxZQUFZO2dCQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEtBQUssRUFBRSxDQUFDO1lBQ25ELEtBQUssZUFBZTtnQkFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsS0FBSyxFQUFFLENBQUM7WUFDdEQsT0FBTyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLElBQVMsRUFBRSxLQUFhO1FBQ3hDLE1BQU0sS0FBSyxHQUF5QixFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFTSxhQUFhLENBQUMsSUFBUyxFQUFFLEtBQWE7UUFDekMsTUFBTSxLQUFLLEdBQTZCLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkMsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN0RixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sUUFBUSxDQUFDLENBQWM7UUFFN0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQzdCO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO2dCQUNwQixPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQzdCO1NBQ0o7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7WUFDekQsT0FBTztnQkFDSCxlQUFlLEVBQUU7b0JBQ2IsTUFBTSxFQUFFLElBQUk7aUJBQ2Y7YUFDSixDQUFDO1NBQ0w7UUFFRCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFdBQVc7UUFDakIsdUNBQ1EsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUN2QixXQUFXLEVBQUUsRUFBRSxFQUNmLElBQUksRUFBRSxFQUFFLElBQ1Y7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSyxVQUFVO1FBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN6QzthQUFNO1lBQ0gsTUFBTSxLQUFLLEdBQTJCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLE9BQU8sS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0NBQ0osQ0FBQTtpSEEzVVksdUJBQXVCOytFQUF2Qix1QkFBdUI7b0NBd0JsQiwwQkFBMEI7Ozs7Ozs7Ozs7OztRQ3pINUMsZ0RBQTBDO1FBRXhDLDhCQUF1QjtRQUNyQix3Q0FBMkc7UUFDekcsMEdBc0NzQjtRQUN4QixpQkFBZ0I7UUFFaEIsOEVBSStHO1FBQ2pILGlCQUFNO1FBRU4sMENBQTZEO1FBQzdELDhCQUF5RTtRQUFBLFlBQXFCO1FBQUEsaUJBQU07UUFDdEcsaUJBQXdCOztRQXRERCwrQkFBa0I7UUFHdEIsZUFBMkI7UUFBM0IsNkNBQTJCLGdDQUFBLHdDQUFBO1FBQ0YsZUFBVTtRQUFWLG1DQUFVO1FBeUM5QixlQUFhO1FBQWIsa0NBQWE7UUFPYixlQUFlO1FBQWYsaUNBQWU7UUFDb0MsZUFBcUI7UUFBckIsMkNBQXFCOztBRDRDbkYsdUJBQXVCO0lBWG5DLGlCQUFpQixDQUFDO1FBQ2YsSUFBSSxFQUFFLG1CQUFtQixDQUFDLEtBQUs7UUFDL0IsTUFBTSxFQUFFLGFBQWE7UUFDckIsZUFBZSxFQUFFLElBQUk7UUFDckIsV0FBVyxFQUFFLDZDQUE2QztRQUMxRCxlQUFlLEVBQUUsNkJBQTZCO0tBQ2pELENBQUM7cUNBOEhnQixRQUFRO0dBekhiLHVCQUF1QixDQTJVbkM7U0EzVVksdUJBQXVCO3VGQUF2Qix1QkFBdUI7Y0FKbkMsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSw4QkFBOEI7Z0JBQ3hDLFdBQVcsRUFBRSxtQ0FBbUM7YUFDbkQ7MkRBMEJVLGdCQUFnQjtrQkFEdEIsWUFBWTttQkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFPbkQsYUFBYTtrQkFEbkIsTUFBTTtZQUtBLGdCQUFnQjtrQkFEdEIsTUFBTTtZQUtBLHFCQUFxQjtrQkFEM0IsTUFBTTtZQU9BLDJCQUEyQjtrQkFEakMsS0FBSztZQU9DLE9BQU87a0JBRGIsS0FBSztZQU9DLE9BQU87a0JBRGIsS0FBSztZQU9DLFVBQVU7a0JBRGhCLEtBQUs7WUFPQyxRQUFRO2tCQURkLEtBQUs7WUFJQyxXQUFXO2tCQURqQixLQUFLO1lBSUMsV0FBVztrQkFEakIsS0FBSztZQUlDLGVBQWU7a0JBRHJCLEtBQUs7WUFPQyxRQUFRO2tCQURkLEtBQUs7WUFJQyxhQUFhO2tCQURuQixLQUFLO1lBSUMsY0FBYztrQkFEcEIsS0FBSztZQUlLLFNBQVM7a0JBRG5CLEtBQUs7WUFhSyxTQUFTO2tCQURuQixXQUFXO21CQUFDLGlCQUFpQjtZQVd0QixTQUFTO2tCQURoQixTQUFTO21CQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdHJpbmdzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZ2VuZXJhdGVkL3N0cmluZ3MnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uQWxlcnRzIH0gZnJvbSAnLi4vLi4vLi4vZm9ybS92YWxpZGF0aW9uLWFsZXJ0L3ZhbGlkYXRpb24tYWxlcnQnO1xyXG5pbXBvcnQgeyBTbWVTY2hlbWFQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uL3NjaGVtYS9zY2hlbWEtZGVjb3JhdG9yJztcclxuaW1wb3J0IHsgQXJyYXlQcm9wZXJ0eVNjaGVtYUZpZWxkTG9hZGVyQ29tcG9uZW50LCBTY2hlbWFGaWVsZEhvc3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zY2hlbWEvc2NoZW1hLWZpZWxkLWhvc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2NoZW1hT2JqZWN0UHJvcGVydHksIFNjaGVtYVByaW1pdGl2ZVR5cGUsIFNjaGVtYVByb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vc2NoZW1hL3NjaGVtYS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBTY2hlbWFVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi9zY2hlbWEvc2NoZW1hLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IFNtZUludGVybmFsRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRJc29sYXRvckNvbXBvbmVudCwgRm9ybVN0YXR1cyB9IGZyb20gJy4uL2lzb2xhdG9yL2lzb2xhdG9yLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFza0Zvck5ld0l0ZW1FdmVudEFyZ3Mge1xyXG4gICAgaXRlbTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFza0Zvckl0ZW1IZWFkZXJBcmdzIHtcclxuICAgIGhlYWRlckV2YWxGdW5jOiBNc2Z0U21lLkZ1bmMyPGFueSwgbnVtYmVyLCBzdHJpbmc+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFza0ZvclJlbW92ZUV2YWxGdW5jQXJncyB7XHJcbiAgICByZW1vdmVFdmFsRnVuYzogTXNmdFNtZS5GdW5jMjxhbnksIG51bWJlciwgYm9vbGVhbj47XHJcbn1cclxuXHJcbi8vIHRzbGludDpkaXNhYmxlOm1heC1saW5lLWxlbmd0aFxyXG5AQ29tcG9uZW50KHtcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICA8c21lLWZvcm0tZmllbGQgI2ZpZWxkIHR5cGU9XCJhcnJheVwiIFsobmdNb2RlbCldPVwiZGF0YVwiIFtuYW1lXT1cInByb3BlcnR5U2NoZW1hLm5hbWVcIiBbbGFiZWxdPVwibG9jYWxpemUocHJvcGVydHlTY2hlbWEubGFiZWwpXCJcclxuICAgICAgICBbcmVxdWlyZWRdPVwicHJvcGVydHlTY2hlbWEucmVxdWlyZWRcIiBbZGVzY3JpcHRpb25dPVwibG9jYWxpemUocHJvcGVydHlTY2hlbWEuZGVzY3JpcHRpb24pXCIgKGFza0Zvck5ld0l0ZW0pPVwiYXNrRm9yTmV3SXRlbSgkZXZlbnQpXCJcclxuICAgICAgICBbYWRqdXN0Q29udHJvbEJ1dHRvbkxvY2F0aW9uXT1cInNob3VsZEFkanVzdENvbnRyb2xCdXR0b25Mb2NhdGlvbigpXCJcclxuICAgICAgICAoY3VzdG9tVmFsaWRhdGUpPVwicmVzb2x2ZUZ1bmN0aW9uKHByb3BlcnR5U2NoZW1hLmN1c3RvbVZhbGlkYXRpb24pKCRldmVudClcIlxyXG4gICAgICAgIChjdXN0b21Bc3luY1ZhbGlkYXRlKT1cInByb3BlcnR5U2NoZW1hLmN1c3RvbUFzeW5jVmFsaWRhdGlvbiAmJiByZXNvbHZlRnVuY3Rpb24ocHJvcGVydHlTY2hlbWEuY3VzdG9tQXN5bmNWYWxpZGF0aW9uLmhhbmRsZXIpKCRldmVudClcIlxyXG4gICAgICAgIFtwZW5kaW5nTWVzc2FnZV09XCJwcm9wZXJ0eVNjaGVtYS5jdXN0b21Bc3luY1ZhbGlkYXRpb24gJiYgbG9jYWxpemUocHJvcGVydHlTY2hlbWEuY3VzdG9tQXN5bmNWYWxpZGF0aW9uLnBlbmRpbmdNZXNzYWdlKVwiXHJcbiAgICAgICAgW2N1c3RvbUFzeW5jVmFsaWRhdGVEaXNhYmxlZF09XCJzaG91bGRDdXN0b21Bc3luY1ZhbGlkYXRpb25CZURpc2FibGVkKClcIlxyXG4gICAgICAgIFtjdXN0b21Bc3luY1ZhbGlkYXRlRGVib3VuY2VUaW1lXT1cInByb3BlcnR5U2NoZW1hLmN1c3RvbUFzeW5jVmFsaWRhdGlvbiAmJiArcHJvcGVydHlTY2hlbWEuY3VzdG9tQXN5bmNWYWxpZGF0aW9uLmhhbmRsZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LW1vZGVsPlxyXG4gICAgICAgICAgICA8c21lLXNjaGVtYS1maWVsZC1ob3N0IFtwcm9wZXJ0eVNjaGVtYV09XCJwcm9wZXJ0eVNjaGVtYS5pdGVtXCJcclxuICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cImNvbnRleHRcIiBbZGF0YV09XCJtb2RlbFwiPjwvc21lLXNjaGVtYS1maWVsZC1ob3N0PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3NtZS1mb3JtLWZpZWxkPlxyXG4gICAgYFxyXG59KVxyXG4vLyB0c2xpbnQ6ZW5hYmxlOm1heC1saW5lLWxlbmd0aFxyXG5leHBvcnQgY2xhc3MgQXJyYXlGb3JtRmllbGRMb2FkZXJDb21wb25lbnQgZXh0ZW5kcyBBcnJheVByb3BlcnR5U2NoZW1hRmllbGRMb2FkZXJDb21wb25lbnQge1xyXG4gICAgQFZpZXdDaGlsZCgnZmllbGQnKVxyXG4gICAgcHJpdmF0ZSBhcnJheUZvcm1GaWVsZENvbXBvbmVudDogQXJyYXlGb3JtRmllbGRDb21wb25lbnQ7XHJcblxyXG4gICAgcHVibGljIGFza0Zvck5ld0l0ZW0oJGV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IFNjaGVtYVV0aWxpdGllcy5nZW5lcmF0ZURhdGFCYXNlZE9uU2NoZW1hUHJvcGVydHkodGhpcy5wcm9wZXJ0eVNjaGVtYS5pdGVtKTtcclxuICAgICAgICAkZXZlbnQuaXRlbSA9IGl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNob3VsZEFkanVzdENvbnRyb2xCdXR0b25Mb2NhdGlvbigpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBpdGVtUHJvcGVydHlTY2hlbWEgPSA8U2NoZW1hT2JqZWN0UHJvcGVydHk+dGhpcy5wcm9wZXJ0eVNjaGVtYS5pdGVtO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSAhISh0aGlzLnByb3BlcnR5U2NoZW1hLml0ZW0ubGFiZWwgfHwgdGhpcy5wcm9wZXJ0eVNjaGVtYS5pdGVtLmRlc2NyaXB0aW9uKTtcclxuICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICBsZXQgY29sdW1uQ291bnQgPSAxO1xyXG4gICAgICAgICAgICBpZiAoaXRlbVByb3BlcnR5U2NoZW1hLm9wdGlvbnMgJiYgaXRlbVByb3BlcnR5U2NoZW1hLm9wdGlvbnMuY29sdW1uQ291bnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbkNvdW50ID0gaXRlbVByb3BlcnR5U2NoZW1hLm9wdGlvbnMuY29sdW1uQ291bnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5Db3VudCAmJiBpIDwgaXRlbVByb3BlcnR5U2NoZW1hLnByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtUHJvcGVydHlTY2hlbWEucHJvcGVydGllc1tpXS5sYWJlbCB8fCBpdGVtUHJvcGVydHlTY2hlbWEucHJvcGVydGllc1tpXS5kZXNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEFjY2Vzc2libGUgSW1wbGVtZW50YXRpb24gb2YgYSBmb3JtIGZpZWxkIGZvciAuc21lLWFycmF5XHJcbiAqL1xyXG5AU21lU2NoZW1hUHJvcGVydHkoe1xyXG4gICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5BcnJheSxcclxuICAgIGZvcm1hdDogJ3NpbXBsZS1saXN0JyxcclxuICAgIGlzRGVmYXVsdEZvcm1hdDogdHJ1ZSxcclxuICAgIGRlc2NyaXB0aW9uOiBgQSBmb3JtIGZpZWxkIGNvbnRyb2wgYmluZGluZyB0byBhcnJheSBkYXRhLmAsXHJcbiAgICBsb2FkZXJDb21wb25lbnQ6IEFycmF5Rm9ybUZpZWxkTG9hZGVyQ29tcG9uZW50XHJcbn0pXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtZm9ybS1maWVsZFt0eXBlPVwiYXJyYXlcIl0nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FycmF5LWZvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcnJheUZvcm1GaWVsZENvbXBvbmVudCBleHRlbmRzIFNtZUludGVybmFsRm9ybUZpZWxkQ29tcG9uZW50PGFueVtdPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBwcml2YXRlIF9pdGVtVGl0bGU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnQXJyYXlGb3JtRmllbGRDb21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgaXRlbSB0ZW1wbGF0ZSBmcm9tIGVpdGhlciB0aGUgc3ViRm9ybVRlbXBsYXRlIG9yIHN1YkZpZWxkSXNvbGF0b3IgaWYgcHJvdmlkZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaXRlbVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnN1YkZpZWxkSXNvbGF0b3IgJiYgdGhpcy5zdWJGaWVsZElzb2xhdG9yLnN1YkZpZWxkVGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3ViRmllbGRJc29sYXRvci5zdWJGaWVsZFRlbXBsYXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5zdWJGb3JtVGVtcGxhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBwcm92aWRlZCwgdGhlIHN1YiBmaWVsZCBpc29sYXRvciBwcmV2ZW50cyBjaGlsZCBuZ21vZGVscyBmcm9tIHJlZ2lzdGVyaW5nIHdpdGggdGhlIGZvcm0uXHJcbiAgICAgKiBJbnN0ZWFkLCB3ZSB3aWxsIHVzZSBpdCB0byBtYW5hZ2Ugb3VyIG93biB2YWxpZGl0eVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKEZvcm1GaWVsZElzb2xhdG9yQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHVibGljIHN1YkZpZWxkSXNvbGF0b3I6IEZvcm1GaWVsZElzb2xhdG9yQ29tcG9uZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hlbiBubyBcIm5ld0l0ZW1cIiBpcyBwcm92aWRlZC4gVGhpcyBvdXRwdXQgd2lsbCBiZSBjYWxsZWQgYW55dGltZSBhIG5ldyBpdGVtIGlzIHJlcXVpcmVkLlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhc2tGb3JOZXdJdGVtOiBFdmVudEVtaXR0ZXI8QXNrRm9yTmV3SXRlbUV2ZW50QXJncz4gPSBuZXcgRXZlbnRFbWl0dGVyPEFza0Zvck5ld0l0ZW1FdmVudEFyZ3M+KCk7XHJcblxyXG4gICAgLy8gRXZlbnQgdXNlZCB0byBwcm92aWRlIGEgY3VzdG9tIGZ1bmN0aW9uIHRoYXQgYnVpbGRzIGluZGl2aWR1YWwgaXRlbSBoZWFkZXJzXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhc2tGb3JJdGVtSGVhZGVyOiBFdmVudEVtaXR0ZXI8QXNrRm9ySXRlbUhlYWRlckFyZ3M+ID0gbmV3IEV2ZW50RW1pdHRlcjxBc2tGb3JJdGVtSGVhZGVyQXJncz4oKTtcclxuXHJcbiAgICAvLyBFdmVudCB1c2VkIHRvIHByb3ZpZGUgYSBjdXN0b20gZnVuY3Rpb24gdGhhdCBldmFsdWF0ZXMgd2hldGhlciB0byBzaG93IG9yIGhpZGUgaW5kaXZpZHVhbCByZW1vdmUgYnV0dG9uc1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYXNrRm9yUmVtb3ZlRXZhbHVhdG9yOiBFdmVudEVtaXR0ZXI8QXNrRm9yUmVtb3ZlRXZhbEZ1bmNBcmdzPiA9IG5ldyBFdmVudEVtaXR0ZXI8QXNrRm9yUmVtb3ZlRXZhbEZ1bmNBcmdzPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGFycmF5IGl0ZW0gYnV0dG9uIGxvY2F0aW9ucyBzaG91bGQgYmUgYWRqdXN0ZWQgdG8gYWNjb3VudCBmb3Igbm8gaXRlbSBsYWJlbC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhZGp1c3RDb250cm9sQnV0dG9uTG9jYXRpb24gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIElucHV0IGZvciBnZW5lcmF0aW5nIGEgbmV3IGl0ZW0gZnJvbSBhbiBleGlzdGluZyBvYmplY3RcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBuZXdJdGVtOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGFkZCBhbmQgcmVtb3ZlIGFjdGlvbnMgc2hvdWxkIGJlIHNob3duXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd0FkZDogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyBpZiB0aGUgcmVtb3ZlIGFjdGlvbnMgc2hvdWxkIGJlIHNob3duIGZvciBhbGwgaXRlbXNcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzaG93UmVtb3ZlOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIHRoZSBtb3ZlIGFjdGlvbnMgc2hvdWxkIGJlIHNob3duXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd01vdmU6IGJvb2xlYW47XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjYW5DbG9zZUFsbDogYm9vbGVhbjtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNhbkNsb3NlQW55OiBib29sZWFuO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY2FuT3Blbk11bHRpcGxlOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGFycmF5XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbWF4SXRlbXM6IG51bWJlcjtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGFkZEJ1dHRvblRleHQ6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGl0ZW1UaXRsZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5faXRlbVRpdGxlID0gYCR7dmFsdWV9IHswfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBpdGVtVGl0bGUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXRlbVRpdGxlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGFyaWEgbGFiZWwgZm9yIHRoaXMgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJylcclxuICAgIHB1YmxpYyBnZXQgYXJpYUxhYmVsKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWVyZ2VkRGVzY3JpcHRpb25MYWJlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hlbiB1cGRhdGVkLCB0aGUgc2NyZWVuIHJlYWRlciB3aWxsIGFubm91bmNlIHRoaXMgc3RyaW5nXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzY3JlZW5SZWFkZXJFdmVudDogc3RyaW5nO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2FkZEJ1dHRvbicpXHJcbiAgICBwcml2YXRlIGFkZEJ1dHRvbjogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBKc29uRm9ybUZpZWxkQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvclxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMuc2hvd0FkZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93UmVtb3ZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1heEl0ZW1zID0gLTE7XHJcbiAgICAgICAgdGhpcy5zaG93TW92ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5DbG9zZUFsbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5DbG9zZUFueSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuT3Blbk11bHRpcGxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZEJ1dHRvblRleHQgPSAoPFN0cmluZ3M+TXNmdFNtZS5zZWxmKCkuUmVzb3VyY2VzLnN0cmluZ3MpLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5hZGQ7XHJcbiAgICAgICAgdGhpcy5faXRlbVRpdGxlID0gKDxTdHJpbmdzPk1zZnRTbWUuc2VsZigpLlJlc291cmNlcy5zdHJpbmdzKS5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Gb3JtLkFycmF5Lml0ZW1UaXRsZTtcclxuICAgICAgICB0aGlzLnNjcmVlblJlYWRlckV2ZW50ID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWV0aG9kIGNhbGxlZCBhZnRlciB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxpemVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncm9sZScsICdncm91cCcpO1xyXG4gICAgICAgIGlmICh0aGlzLnN1YkZpZWxkSXNvbGF0b3IpIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YkZpZWxkSXNvbGF0b3Iuc3RhdHVzQ2hhbmdlZC5zdWJzY3JpYmUoKHN0YXR1czogRm9ybVN0YXR1cykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMucGVuZGluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nTW9kZWwuY29udHJvbC5tYXJrQXNQZW5kaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLmRpcnR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdNb2RlbC5jb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLnRvdWNoZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ01vZGVsLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ01vZGVsLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgYSBoaWRkZW4gYXJpYS1saXZlIHJlZ2lvbiB3aXRoIGluZm9ybWF0aW9uIGFib3V0IGNoYW5nZXMgdG8gdGhlIHBhZ2U7IGlmIHRoZSBzYW1lIGV2ZW50IGlzIGJlaW5nIHJlcGVhdGVkLCB0aGUgZXZlbnQgc3RyaW5nXHJcbiAgICAgKiBpcyBzZXQgaW4gbG93ZXJjYXNlLCBzbyB0aGUgc2NyZWVuIHJlYWRlciB0aGlua3MgaXQncyBhIG5ldyBzdHJpbmcuIENsZWFyaW5nIGFuZCByZS1zZXR0aW5nIHRoZSBmaWVsZCBkb2VzIG5vdCBwcm9tcHQgdGhlIHNjcmVlblxyXG4gICAgICogcmVhZGVyIHRvIHJlYWQgdGhlIGFyaWEtbGl2ZSByZWdpb24uXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgdGhlIHN0cmluZyB0byBiZSBhbm5vdW5jZWRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVTY3JlZW5SZWFkZXJFdmVudChldmVudDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zY3JlZW5SZWFkZXJFdmVudCA9IGV2ZW50ID09PSB0aGlzLnNjcmVlblJlYWRlckV2ZW50ID8gZXZlbnQudG9Mb2NhbGVMb3dlckNhc2UoKSA6IGV2ZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhbiBpdGVtIHRvIHRoZSBhcnJheVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdldE5ld0l0ZW0oKTtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudmFsdWUubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMudmFsdWUucHVzaChpdGVtKTtcclxuICAgICAgICB0aGlzLnRyaWdnZXJWYWx1ZUNoYW5nZSgpO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbUlkID0gdGhpcy5nZXRJdGVtQXJpYUlkKGluZGV4LCAnaXRlbUNvbnRhaW5lcicpO1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaXRlbUlkKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0SW5wdXQgPSA8SFRNTEVsZW1lbnQ+aXRlbUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGZpcnN0SW5wdXQpIHtcclxuICAgICAgICAgICAgICAgIGZpcnN0SW5wdXQuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaXRlbUNvbnRhaW5lci5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVsZXRlcyBhbiBpdGVtIGZyb20gdGhlIGFycmF5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxldGUoaXRlbTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnZhbHVlLmluZGV4T2YoaXRlbSk7XHJcblxyXG4gICAgICAgIC8vIHJldHVybiB0aGUgdmlldyB0byB0aGUgcHJldmlvdXMgaXRlbSBpbiB0aGUgbGlzdC5cclxuICAgICAgICBjb25zdCBwcmV2SXRlbUlkID0gdGhpcy5nZXRJdGVtQXJpYUlkKGluZGV4IC0gMSwgJ2l0ZW1Db250YWluZXInKTtcclxuICAgICAgICBjb25zdCBwcmV2Q29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJldkl0ZW1JZCk7XHJcblxyXG4gICAgICAgIGlmIChwcmV2Q29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHByZXZDb250YWluZXIuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGZvY3VzIG9uIHRoZSBhZGQgYnV0dG9uLCBvdGhlcndpc2UgZm9jdXMgaXMgcmVzZXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFnZVxyXG4gICAgICAgIHRoaXMuYWRkQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuXHJcbiAgICAgICAgdGhpcy52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMudHJpZ2dlclZhbHVlQ2hhbmdlKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTY3JlZW5SZWFkZXJFdmVudCh0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuRm9ybS5BcnJheS5yZW1vdmVCdXR0b25FdmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWNyZWFzZXMgdGhlIGluZGV4IG9mIGFuIGl0ZW0gYnkgMVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbW92ZVVwKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy52YWx1ZS5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgdGVtcCA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlW2luZGV4XSA9IHsgLi4udGhpcy52YWx1ZVtpbmRleCAtIDFdIH07XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWVbaW5kZXggLSAxXSA9IHRlbXA7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2NyZWVuUmVhZGVyRXZlbnQodGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkZvcm0uQXJyYXkucHJvbW90ZUJ1dHRvbkV2ZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcmVlblJlYWRlckV2ZW50KHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Gb3JtLkFycmF5LnByb21vdGVCdXR0b25QcmV2ZW50ZWRFdmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5jcmVhc2VzIHRoZSBpbmRleCBvZiBhbiBpdGVtIGJ5IDFcclxuICAgICAqL1xyXG4gICAgcHVibGljIG1vdmVEb3duKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy52YWx1ZS5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICAgIGlmIChpbmRleCA8IHRoaXMudmFsdWUubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICBjb25zdCB0ZW1wID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWVbaW5kZXhdID0geyAuLi50aGlzLnZhbHVlW2luZGV4ICsgMV0gfTtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZVtpbmRleCArIDFdID0gdGVtcDtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTY3JlZW5SZWFkZXJFdmVudCh0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuRm9ybS5BcnJheS5kZW1vdGVCdXR0b25FdmVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTY3JlZW5SZWFkZXJFdmVudCh0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuRm9ybS5BcnJheS5kZW1vdGVCdXR0b25QcmV2ZW50ZWRFdmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1ldGhvZCBjYWxsZWQgd2hlbiBhIDxzZWxlY3Q+IGVsZW1lbnQncyB2YWx1ZSBjaGFuZ2VzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJpZ2dlclZhbHVlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZV07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEl0ZW1BcmlhSWQoaW5kZXg6IG51bWJlciwgaWROYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIHN3aXRjaCAoaWROYW1lKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2l0ZW0nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuaWRCYWdbJ2l0ZW0nXX0tJHtpbmRleH1gO1xyXG4gICAgICAgICAgICBjYXNlICdpdGVtSGVhZGVyJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLmlkQmFnWydpdGVtJ119LWhlYWRlci0ke2luZGV4fWA7XHJcbiAgICAgICAgICAgIGNhc2UgJ2l0ZW1Db250YWluZXInOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuaWRCYWdbJ2l0ZW0nXX0tY29udGFpbmVyLSR7aW5kZXh9YDtcclxuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRJdGVtVGl0bGUoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBldmVudDogQXNrRm9ySXRlbUhlYWRlckFyZ3MgPSB7IGhlYWRlckV2YWxGdW5jOiBudWxsIH07XHJcbiAgICAgICAgdGhpcy5hc2tGb3JJdGVtSGVhZGVyLmVtaXQoZXZlbnQpO1xyXG5cclxuICAgICAgICByZXR1cm4gZXZlbnQuaGVhZGVyRXZhbEZ1bmMgPyBldmVudC5oZWFkZXJFdmFsRnVuYyhpdGVtLCBpbmRleCkgOiB0aGlzLml0ZW1UaXRsZS5mb3JtYXQoaW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTaG93UmVtb3ZlKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50OiBBc2tGb3JSZW1vdmVFdmFsRnVuY0FyZ3MgPSB7IHJlbW92ZUV2YWxGdW5jOiBudWxsIH07XHJcbiAgICAgICAgdGhpcy5hc2tGb3JSZW1vdmVFdmFsdWF0b3IuZW1pdChldmVudCk7XHJcblxyXG4gICAgICAgIHJldHVybiBldmVudC5yZW1vdmVFdmFsRnVuYyA/IGV2ZW50LnJlbW92ZUV2YWxGdW5jKGl0ZW0sIGluZGV4KSA6IHRoaXMuc2hvd1JlbW92ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcmZvcm1zIHZhbGlkYXRpb24gdGhhdCBpcyBpbnRlcm5hbCB0byB0aGlzIGNvbnRyb2xcclxuICAgICAqIEBwYXJhbSBjIFRoZSBmb3JtIGNvbnRyb2wgYXR0YWNoZWQgdG8gdGhpcyBpbnN0YW5jZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgdmFsaWRhdGUoYzogRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uQWxlcnRzIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgaWYgKE1zZnRTbWUuaXNOdWxsT3JVbmRlZmluZWQodGhpcy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IHJlcXVpcmVkOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghdGhpcy52YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IHJlcXVpcmVkOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnN1YkZpZWxkSXNvbGF0b3IgJiYgIXRoaXMuc3ViRmllbGRJc29sYXRvci5pc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpbnZhbGlkU3ViRmllbGQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBoaWRkZW46IHRydWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBzdXBlci52YWxpZGF0ZShjKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBjb21wb25lbnQgdG8gc3RvcmUgdW5pcXVlIGVsZW1lbnQgaWRzLlxyXG4gICAgICogaWQgdmFsdWVzIHdpbGwgYmUgYXNzaWduZWQgYmUgdGhlIEBzZWUgQmFzZUNvbXBvbmVudCBzdXBlciBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUlkQmFnKCk6IE1zZnRTbWUuU3RyaW5nTWFwPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLiBzdXBlci5jcmVhdGVJZEJhZygpLFxyXG4gICAgICAgICAgICBkZXRhaWxzU3BhbjogJycsXHJcbiAgICAgICAgICAgIGl0ZW06ICcnXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlcyBhIG5ldyBpdGVtIHRvIGJlIGFkZGVkIHRvIHRoZSBhcnJheVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldE5ld0l0ZW0oKTogYW55IHtcclxuICAgICAgICBpZiAodGhpcy5uZXdJdGVtKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNc2Z0U21lLmRlZXBDb3B5KHRoaXMubmV3SXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgZXZlbnQ6IEFza0Zvck5ld0l0ZW1FdmVudEFyZ3MgPSB7IGl0ZW06IG51bGwgfTtcclxuICAgICAgICAgICAgdGhpcy5hc2tGb3JOZXdJdGVtLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm4gZXZlbnQuaXRlbSB8fCB7fTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPHNtZS1mb3JtLWZpZWxkLWxheW91dCBbZm9ybUZpZWxkXT1cInRoaXNcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInNtZS1hcnJheVwiPlxyXG4gICAgPHNtZS1hY2NvcmRpb24gW2NhbkNsb3NlQW55XT1cImNhbkNsb3NlQW55XCIgW2NhbkNsb3NlQWxsXT1cImNhbkNsb3NlQWxsXCIgW2Nhbk9wZW5NdWx0aXBsZV09XCJjYW5PcGVuTXVsdGlwbGVcIj5cclxuICAgICAgPHNtZS1hY2NvcmRpb24tcGFuZWwgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmFsdWU7IGxldCBpID0gaW5kZXhcIiBbaGVhZGVyXT1cImdldEl0ZW1UaXRsZShpdGVtLCBpKVwiIFtpc0V4cGFuZGFibGVdPVwiZmFsc2VcIj5cclxuICAgICAgICA8c21lLXBhbmVsLWNvbnRyb2w+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIHNtZVRlbXBsYXRlT3V0bGV0IFt0ZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiIFtkYXRhXT1cIml0ZW1cIiBob3N0RGF0YU5hbWU9XCJjb250ZXh0XCJcclxuICAgICAgICAgICAgW2hvc3REYXRhXT1cIntpbmRleDogaSwgYXJpYUxhYmVsSWQ6IGdldEl0ZW1BcmlhSWQoaSwgJ2l0ZW1IZWFkZXInKX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93TW92ZVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNtZS1idXR0b24tdHJpZ2dlciBzbWUtYnV0dG9uLWF1dG8td2lkdGggc21lLWZvcm0tZmllbGQtaGVpZ2h0IHNtZS1wYWRkaW5nLWhvcml6b250YWwteHNcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuRm9ybS5BcnJheS5wcm9tb3RlQnV0dG9uQXJpYUxhYmVsXCJcclxuICAgICAgICAgICAgW3RpdGxlXT1cInN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuRm9ybS5BcnJheS5wcm9tb3RlQnV0dG9uVG9vbHRpcFwiIChjbGljayk9XCJtb3ZlVXAoaXRlbSlcIlxyXG4gICAgICAgICAgICBbc21lRGlzYWJsZWRdPVwibG9hZGluZ09yRGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWUtaWNvbiBzbWUtaWNvbi11cFwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dNb3ZlXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic21lLWJ1dHRvbi10cmlnZ2VyIHNtZS1idXR0b24tYXV0by13aWR0aCBzbWUtZm9ybS1maWVsZC1oZWlnaHQgc21lLXBhZGRpbmctaG9yaXpvbnRhbC14c1wiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Gb3JtLkFycmF5LmRlbW90ZUJ1dHRvbkFyaWFMYWJlbFwiXHJcbiAgICAgICAgICAgIFt0aXRsZV09XCJzdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkZvcm0uQXJyYXkuZGVtb3RlQnV0dG9uVG9vbHRpcFwiIChjbGljayk9XCJtb3ZlRG93bihpdGVtKVwiXHJcbiAgICAgICAgICAgIFtzbWVEaXNhYmxlZF09XCJsb2FkaW5nT3JEaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNtZS1pY29uIHNtZS1pY29uLWRvd25cIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJnZXRTaG93UmVtb3ZlKGl0ZW0sIGkpXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic21lLWJ1dHRvbi10cmlnZ2VyIHNtZS1idXR0b24tYXV0by13aWR0aCBzbWUtZm9ybS1maWVsZC1oZWlnaHQgc21lLXBhZGRpbmctaG9yaXpvbnRhbC14c1wiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Gb3JtLkFycmF5LnJlbW92ZUJ1dHRvbkFyaWFMYWJlbFwiXHJcbiAgICAgICAgICAgIFt0aXRsZV09XCJzdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkZvcm0uQXJyYXkucmVtb3ZlQnV0dG9uVG9vbHRpcFwiIChjbGljayk9XCJkZWxldGUoaXRlbSlcIlxyXG4gICAgICAgICAgICBbc21lRGlzYWJsZWRdPVwibG9hZGluZ09yRGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWUtaWNvbiBzbWUtaWNvbi1kZWxldGUgc21lLWNvbG9yLXJlZFwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvc21lLXBhbmVsLWNvbnRyb2w+XHJcblxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic21lLXNjcmVlbi1yZWFkZXJcIiBbaWRdPVwiZ2V0SXRlbUFyaWFJZChpLCAnaXRlbScpXCI+e3tpdGVtVGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICA8ZmllbGRzZXQgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImdldEl0ZW1BcmlhSWQoaSwgJ2l0ZW0nKVwiXHJcbiAgICAgICAgICBjbGFzcz1cInNtZS1hcnJhbmdlLXN0YWNrLWggc21lLW1hcmdpbi1ib3R0b20tbGcgc21lLWFycmF5LWl0ZW1cIlxyXG4gICAgICAgICAgW2NsYXNzLnNtZS1zdWJmb3JtLWluZGVudC1ub25lXT1cIm9yaWVudGF0aW9uPT09J2hvcml6b250YWwnXCI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LWF1dG8gc21lLXBhZGRpbmctaW5zZXQtbWRcIiBbaWRdPVwiZ2V0SXRlbUFyaWFJZChpLCAnaXRlbUNvbnRhaW5lcicpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgc21lVGVtcGxhdGVPdXRsZXQgW3RlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiIFtkYXRhXT1cIml0ZW1cIiBob3N0RGF0YU5hbWU9XCJjb250ZXh0XCJcclxuICAgICAgICAgICAgICBbaG9zdERhdGFdPVwie2luZGV4OiBpLCBhcmlhTGFiZWxJZDogZ2V0SXRlbUFyaWFJZChpLCAnaXRlbScpfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9maWVsZHNldD5cclxuXHJcbiAgICAgIDwvc21lLWFjY29yZGlvbi1wYW5lbD5cclxuICAgIDwvc21lLWFjY29yZGlvbj5cclxuXHJcbiAgICA8YnV0dG9uICNhZGRCdXR0b24gKm5nSWY9XCJzaG93QWRkXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIFtzbWVEaXNhYmxlZF09XCJsb2FkaW5nT3JEaXNhYmxlZCB8fCAobWF4SXRlbXMgIT09IC0xICYmIHZhbHVlLmxlbmd0aCA+PSBtYXhJdGVtcylcIlxyXG4gICAgICBjbGFzcz1cInNtZS1idXR0b24tdHJpZ2dlciBzbWUtYnV0dG9uLWF1dG8td2lkdGggc21lLWljb24gc21lLWljb24tYWRkIHNtZS1tYXJnaW4tYm90dG9tLXhzXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkZvcm0uQXJyYXkuYWRkQnV0dG9uQXJpYUxhYmVsXCJcclxuICAgICAgW3RpdGxlXT1cInN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuRm9ybS5BcnJheS5hZGRCdXR0b25Ub29sdGlwXCIgKGNsaWNrKT1cImFkZCgpXCI+e3thZGRCdXR0b25UZXh0fX08L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPHNtZS12YWxpZGF0aW9uLWFsZXJ0IFthbGVydF09XCJhbGVydFwiPjwvc21lLXZhbGlkYXRpb24tYWxlcnQ+XHJcbiAgPGRpdiBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1yZWxldmFudD1cImFsbFwiPnt7c2NyZWVuUmVhZGVyRXZlbnR9fTwvZGl2PlxyXG48L3NtZS1mb3JtLWZpZWxkLWxheW91dD5cclxuIl19
|
|
517
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9mb3JtL2Zvcm0tZmllbGQvYXJyYXkvYXJyYXktZm9ybS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9mb3JtL2Zvcm0tZmllbGQvYXJyYXkvYXJyYXktZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUNBQXVDLEVBQTRCLE1BQU0sNkNBQTZDLENBQUM7QUFDaEksT0FBTyxFQUF3QixtQkFBbUIsRUFBa0IsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFjLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTJCNUUsMkNBQytEOzs7O0lBRHhDLDJEQUFzQywyQkFBQSxrQkFBQTs7Ozs7O0lDMUMvRCw0QkFDc0Y7Ozs7OztJQUQvQixnREFBMkIsaUJBQUEsd0ZBQUE7Ozs7SUFFbEYsa0NBSWlFO0lBRFEsc1FBQXNCO0lBRTdGLDJCQUEwQztJQUM1QyxpQkFBUzs7O0lBSFAsMkZBQXNFLHlDQUFBO0lB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QSxxQkFBcUI7a0JBRDNCLE1BQU07WUFPQSwyQkFBMkI7a0JBRGpDLEtBQUs7WUFPQyxPQUFPO2tCQURiLEtBQUs7WUFPQyxPQUFPO2tCQURiLEtBQUs7WUFPQyxVQUFVO2tCQURoQixLQUFLO1lBT0MsUUFBUTtrQkFEZCxLQUFLO1lBSUMsV0FBVztrQkFEakIsS0FBSztZQUlDLFdBQVc7a0JBRGpCLEtBQUs7WUFJQyxlQUFlO2tCQURyQixLQUFLO1lBT0MsUUFBUTtrQkFEZCxLQUFLO1lBSUMsYUFBYTtrQkFEbkIsS0FBSztZQUlDLGNBQWM7a0JBRHBCLEtBQUs7WUFJSyxTQUFTO2tCQURuQixLQUFLO1lBYUssU0FBUztrQkFEbkIsV0FBVzttQkFBQyxpQkFBaUI7WUFXdEIsU0FBUztrQkFEaEIsU0FBUzttQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbnRlbnRDaGlsZCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3RyaW5ncyB9IGZyb20gJy4uLy4uLy4uLy4uL2dlbmVyYXRlZC9zdHJpbmdzJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkFsZXJ0cyB9IGZyb20gJy4uLy4uLy4uL2Zvcm0vdmFsaWRhdGlvbi1hbGVydC92YWxpZGF0aW9uLWFsZXJ0JztcclxuaW1wb3J0IHsgU21lU2NoZW1hUHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi9zY2hlbWEvc2NoZW1hLWRlY29yYXRvcic7XHJcbmltcG9ydCB7IEFycmF5UHJvcGVydHlTY2hlbWFGaWVsZExvYWRlckNvbXBvbmVudCwgU2NoZW1hRmllbGRIb3N0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vc2NoZW1hL3NjaGVtYS1maWVsZC1ob3N0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNjaGVtYU9iamVjdFByb3BlcnR5LCBTY2hlbWFQcmltaXRpdmVUeXBlLCBTY2hlbWFQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uL3NjaGVtYS9zY2hlbWEtbW9kZWxzJztcclxuaW1wb3J0IHsgU2NoZW1hVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vc2NoZW1hL3NjaGVtYS11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBTbWVJbnRlcm5hbEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUZpZWxkSXNvbGF0b3JDb21wb25lbnQsIEZvcm1TdGF0dXMgfSBmcm9tICcuLi9pc29sYXRvci9pc29sYXRvci5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBc2tGb3JOZXdJdGVtRXZlbnRBcmdzIHtcclxuICAgIGl0ZW06IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBc2tGb3JJdGVtSGVhZGVyQXJncyB7XHJcbiAgICBoZWFkZXJFdmFsRnVuYzogTXNmdFNtZS5GdW5jMjxhbnksIG51bWJlciwgc3RyaW5nPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBc2tGb3JSZW1vdmVFdmFsRnVuY0FyZ3Mge1xyXG4gICAgcmVtb3ZlRXZhbEZ1bmM6IE1zZnRTbWUuRnVuYzI8YW55LCBudW1iZXIsIGJvb2xlYW4+O1xyXG59XHJcblxyXG4vLyB0c2xpbnQ6ZGlzYWJsZTptYXgtbGluZS1sZW5ndGhcclxuQENvbXBvbmVudCh7XHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgPHNtZS1mb3JtLWZpZWxkICNmaWVsZCB0eXBlPVwiYXJyYXlcIiBbKG5nTW9kZWwpXT1cImRhdGFcIiBbbmFtZV09XCJwcm9wZXJ0eVNjaGVtYS5uYW1lXCIgW2xhYmVsXT1cImxvY2FsaXplKHByb3BlcnR5U2NoZW1hLmxhYmVsKVwiXHJcbiAgICAgICAgW3JlcXVpcmVkXT1cInByb3BlcnR5U2NoZW1hLnJlcXVpcmVkXCIgW2Rlc2NyaXB0aW9uXT1cImxvY2FsaXplKHByb3BlcnR5U2NoZW1hLmRlc2NyaXB0aW9uKVwiIChhc2tGb3JOZXdJdGVtKT1cImFza0Zvck5ld0l0ZW0oJGV2ZW50KVwiXHJcbiAgICAgICAgW2FkanVzdENvbnRyb2xCdXR0b25Mb2NhdGlvbl09XCJzaG91bGRBZGp1c3RDb250cm9sQnV0dG9uTG9jYXRpb24oKVwiXHJcbiAgICAgICAgKGN1c3RvbVZhbGlkYXRlKT1cInJlc29sdmVGdW5jdGlvbihwcm9wZXJ0eVNjaGVtYS5jdXN0b21WYWxpZGF0aW9uKSgkZXZlbnQpXCJcclxuICAgICAgICAoY3VzdG9tQXN5bmNWYWxpZGF0ZSk9XCJwcm9wZXJ0eVNjaGVtYS5jdXN0b21Bc3luY1ZhbGlkYXRpb24gJiYgcmVzb2x2ZUZ1bmN0aW9uKHByb3BlcnR5U2NoZW1hLmN1c3RvbUFzeW5jVmFsaWRhdGlvbi5oYW5kbGVyKSgkZXZlbnQpXCJcclxuICAgICAgICBbcGVuZGluZ01lc3NhZ2VdPVwicHJvcGVydHlTY2hlbWEuY3VzdG9tQXN5bmNWYWxpZGF0aW9uICYmIGxvY2FsaXplKHByb3BlcnR5U2NoZW1hLmN1c3RvbUFzeW5jVmFsaWRhdGlvbi5wZW5kaW5nTWVzc2FnZSlcIlxyXG4gICAgICAgIFtjdXN0b21Bc3luY1ZhbGlkYXRlRGlzYWJsZWRdPVwic2hvdWxkQ3VzdG9tQXN5bmNWYWxpZGF0aW9uQmVEaXNhYmxlZCgpXCJcclxuICAgICAgICBbY3VzdG9tQXN5bmNWYWxpZGF0ZURlYm91bmNlVGltZV09XCJwcm9wZXJ0eVNjaGVtYS5jdXN0b21Bc3luY1ZhbGlkYXRpb24gJiYgK3Byb3BlcnR5U2NoZW1hLmN1c3RvbUFzeW5jVmFsaWRhdGlvbi5oYW5kbGVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1tb2RlbD5cclxuICAgICAgICAgICAgPHNtZS1zY2hlbWEtZmllbGQtaG9zdCBbcHJvcGVydHlTY2hlbWFdPVwicHJvcGVydHlTY2hlbWEuaXRlbVwiXHJcbiAgICAgICAgICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCIgW2RhdGFdPVwibW9kZWxcIj48L3NtZS1zY2hlbWEtZmllbGQtaG9zdD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9zbWUtZm9ybS1maWVsZD5cclxuICAgIGBcclxufSlcclxuLy8gdHNsaW50OmVuYWJsZTptYXgtbGluZS1sZW5ndGhcclxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybUZpZWxkTG9hZGVyQ29tcG9uZW50IGV4dGVuZHMgQXJyYXlQcm9wZXJ0eVNjaGVtYUZpZWxkTG9hZGVyQ29tcG9uZW50IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2ZpZWxkJylcclxuICAgIHByaXZhdGUgYXJyYXlGb3JtRmllbGRDb21wb25lbnQ6IEFycmF5Rm9ybUZpZWxkQ29tcG9uZW50O1xyXG5cclxuICAgIHB1YmxpYyBhc2tGb3JOZXdJdGVtKCRldmVudCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBTY2hlbWFVdGlsaXRpZXMuZ2VuZXJhdGVEYXRhQmFzZWRPblNjaGVtYVByb3BlcnR5KHRoaXMucHJvcGVydHlTY2hlbWEuaXRlbSk7XHJcbiAgICAgICAgJGV2ZW50Lml0ZW0gPSBpdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzaG91bGRBZGp1c3RDb250cm9sQnV0dG9uTG9jYXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgaXRlbVByb3BlcnR5U2NoZW1hID0gPFNjaGVtYU9iamVjdFByb3BlcnR5PnRoaXMucHJvcGVydHlTY2hlbWEuaXRlbTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gISEodGhpcy5wcm9wZXJ0eVNjaGVtYS5pdGVtLmxhYmVsIHx8IHRoaXMucHJvcGVydHlTY2hlbWEuaXRlbS5kZXNjcmlwdGlvbik7XHJcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICAgICAgbGV0IGNvbHVtbkNvdW50ID0gMTtcclxuICAgICAgICAgICAgaWYgKGl0ZW1Qcm9wZXJ0eVNjaGVtYS5vcHRpb25zICYmIGl0ZW1Qcm9wZXJ0eVNjaGVtYS5vcHRpb25zLmNvbHVtbkNvdW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5Db3VudCA9IGl0ZW1Qcm9wZXJ0eVNjaGVtYS5vcHRpb25zLmNvbHVtbkNvdW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uQ291bnQgJiYgaSA8IGl0ZW1Qcm9wZXJ0eVNjaGVtYS5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbVByb3BlcnR5U2NoZW1hLnByb3BlcnRpZXNbaV0ubGFiZWwgfHwgaXRlbVByb3BlcnR5U2NoZW1hLnByb3BlcnRpZXNbaV0uZGVzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBY2Nlc3NpYmxlIEltcGxlbWVudGF0aW9uIG9mIGEgZm9ybSBmaWVsZCBmb3IgLnNtZS1hcnJheVxyXG4gKi9cclxuQFNtZVNjaGVtYVByb3BlcnR5KHtcclxuICAgIHR5cGU6IFNjaGVtYVByaW1pdGl2ZVR5cGUuQXJyYXksXHJcbiAgICBmb3JtYXQ6ICdzaW1wbGUtbGlzdCcsXHJcbiAgICBpc0RlZmF1bHRGb3JtYXQ6IHRydWUsXHJcbiAgICBkZXNjcmlwdGlvbjogYEEgZm9ybSBmaWVsZCBjb250cm9sIGJpbmRpbmcgdG8gYXJyYXkgZGF0YS5gLFxyXG4gICAgbG9hZGVyQ29tcG9uZW50OiBBcnJheUZvcm1GaWVsZExvYWRlckNvbXBvbmVudFxyXG59KVxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLWZvcm0tZmllbGRbdHlwZT1cImFycmF5XCJdJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hcnJheS1mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJyYXlGb3JtRmllbGRDb21wb25lbnQgZXh0ZW5kcyBTbWVJbnRlcm5hbEZvcm1GaWVsZENvbXBvbmVudDxhbnlbXT4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgcHJpdmF0ZSBfaXRlbVRpdGxlOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc291cmNlIG5hbWUgdG8gdXNlIGZvciBsb2dnaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ0FycmF5Rm9ybUZpZWxkQ29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGl0ZW0gdGVtcGxhdGUgZnJvbSBlaXRoZXIgdGhlIHN1YkZvcm1UZW1wbGF0ZSBvciBzdWJGaWVsZElzb2xhdG9yIGlmIHByb3ZpZGVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGl0ZW1UZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcclxuICAgICAgICBpZiAodGhpcy5zdWJGaWVsZElzb2xhdG9yICYmIHRoaXMuc3ViRmllbGRJc29sYXRvci5zdWJGaWVsZFRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YkZpZWxkSXNvbGF0b3Iuc3ViRmllbGRUZW1wbGF0ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViRm9ybVRlbXBsYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgcHJvdmlkZWQsIHRoZSBzdWIgZmllbGQgaXNvbGF0b3IgcHJldmVudHMgY2hpbGQgbmdtb2RlbHMgZnJvbSByZWdpc3RlcmluZyB3aXRoIHRoZSBmb3JtLlxyXG4gICAgICogSW5zdGVhZCwgd2Ugd2lsbCB1c2UgaXQgdG8gbWFuYWdlIG91ciBvd24gdmFsaWRpdHlcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChGb3JtRmllbGRJc29sYXRvckNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBzdWJGaWVsZElzb2xhdG9yOiBGb3JtRmllbGRJc29sYXRvckNvbXBvbmVudDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZW4gbm8gXCJuZXdJdGVtXCIgaXMgcHJvdmlkZWQuIFRoaXMgb3V0cHV0IHdpbGwgYmUgY2FsbGVkIGFueXRpbWUgYSBuZXcgaXRlbSBpcyByZXF1aXJlZC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYXNrRm9yTmV3SXRlbTogRXZlbnRFbWl0dGVyPEFza0Zvck5ld0l0ZW1FdmVudEFyZ3M+ID0gbmV3IEV2ZW50RW1pdHRlcjxBc2tGb3JOZXdJdGVtRXZlbnRBcmdzPigpO1xyXG5cclxuICAgIC8vIEV2ZW50IHVzZWQgdG8gcHJvdmlkZSBhIGN1c3RvbSBmdW5jdGlvbiB0aGF0IGJ1aWxkcyBpbmRpdmlkdWFsIGl0ZW0gaGVhZGVyc1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYXNrRm9ySXRlbUhlYWRlcjogRXZlbnRFbWl0dGVyPEFza0Zvckl0ZW1IZWFkZXJBcmdzPiA9IG5ldyBFdmVudEVtaXR0ZXI8QXNrRm9ySXRlbUhlYWRlckFyZ3M+KCk7XHJcblxyXG4gICAgLy8gRXZlbnQgdXNlZCB0byBwcm92aWRlIGEgY3VzdG9tIGZ1bmN0aW9uIHRoYXQgZXZhbHVhdGVzIHdoZXRoZXIgdG8gc2hvdyBvciBoaWRlIGluZGl2aWR1YWwgcmVtb3ZlIGJ1dHRvbnNcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGFza0ZvclJlbW92ZUV2YWx1YXRvcjogRXZlbnRFbWl0dGVyPEFza0ZvclJlbW92ZUV2YWxGdW5jQXJncz4gPSBuZXcgRXZlbnRFbWl0dGVyPEFza0ZvclJlbW92ZUV2YWxGdW5jQXJncz4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSBhcnJheSBpdGVtIGJ1dHRvbiBsb2NhdGlvbnMgc2hvdWxkIGJlIGFkanVzdGVkIHRvIGFjY291bnQgZm9yIG5vIGl0ZW0gbGFiZWwuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWRqdXN0Q29udHJvbEJ1dHRvbkxvY2F0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnB1dCBmb3IgZ2VuZXJhdGluZyBhIG5ldyBpdGVtIGZyb20gYW4gZXhpc3Rpbmcgb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbmV3SXRlbTogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIHRoZSBhZGQgYW5kIHJlbW92ZSBhY3Rpb25zIHNob3VsZCBiZSBzaG93blxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNob3dBZGQ6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHJlbW92ZSBhY3Rpb25zIHNob3VsZCBiZSBzaG93biBmb3IgYWxsIGl0ZW1zXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd1JlbW92ZTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyBpZiB0aGUgbW92ZSBhY3Rpb25zIHNob3VsZCBiZSBzaG93blxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNob3dNb3ZlOiBib29sZWFuO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY2FuQ2xvc2VBbGw6IGJvb2xlYW47XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjYW5DbG9zZUFueTogYm9vbGVhbjtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNhbk9wZW5NdWx0aXBsZTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBhcnJheVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIG1heEl0ZW1zOiBudW1iZXI7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhZGRCdXR0b25UZXh0OiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBpdGVtVGl0bGUodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX2l0ZW1UaXRsZSA9IGAke3ZhbHVlfSB7MH1gO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgaXRlbVRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1UaXRsZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBhcmlhIGxhYmVsIGZvciB0aGlzIGluc3RhbmNlLlxyXG4gICAgICovXHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbCcpXHJcbiAgICBwdWJsaWMgZ2V0IGFyaWFMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1lcmdlZERlc2NyaXB0aW9uTGFiZWwoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZW4gdXBkYXRlZCwgdGhlIHNjcmVlbiByZWFkZXIgd2lsbCBhbm5vdW5jZSB0aGlzIHN0cmluZ1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2NyZWVuUmVhZGVyRXZlbnQ6IHN0cmluZztcclxuXHJcbiAgICBAVmlld0NoaWxkKCdhZGRCdXR0b24nKVxyXG4gICAgcHJpdmF0ZSBhZGRCdXR0b246IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgSnNvbkZvcm1GaWVsZENvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgICAgICB0aGlzLnNob3dBZGQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1JlbW92ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tYXhJdGVtcyA9IC0xO1xyXG4gICAgICAgIHRoaXMuc2hvd01vdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuQ2xvc2VBbGwgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuQ2xvc2VBbnkgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhbk9wZW5NdWx0aXBsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRCdXR0b25UZXh0ID0gKDxTdHJpbmdzPk1zZnRTbWUuc2VsZigpLlJlc291cmNlcy5zdHJpbmdzKS5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uYWRkO1xyXG4gICAgICAgIHRoaXMuX2l0ZW1UaXRsZSA9ICg8U3RyaW5ncz5Nc2Z0U21lLnNlbGYoKS5SZXNvdXJjZXMuc3RyaW5ncykuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuRm9ybS5BcnJheS5pdGVtVGl0bGU7XHJcbiAgICAgICAgdGhpcy5zY3JlZW5SZWFkZXJFdmVudCA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1ldGhvZCBjYWxsZWQgYWZ0ZXIgdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsaXplZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnZ3JvdXAnKTtcclxuICAgICAgICBpZiAodGhpcy5zdWJGaWVsZElzb2xhdG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJGaWVsZElzb2xhdG9yLnN0YXR1c0NoYW5nZWQuc3Vic2NyaWJlKChzdGF0dXM6IEZvcm1TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLnBlbmRpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ01vZGVsLmNvbnRyb2wubWFya0FzUGVuZGluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5kaXJ0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nTW9kZWwuY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy50b3VjaGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdNb2RlbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmdNb2RlbC5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIGEgaGlkZGVuIGFyaWEtbGl2ZSByZWdpb24gd2l0aCBpbmZvcm1hdGlvbiBhYm91dCBjaGFuZ2VzIHRvIHRoZSBwYWdlOyBpZiB0aGUgc2FtZSBldmVudCBpcyBiZWluZyByZXBlYXRlZCwgdGhlIGV2ZW50IHN0cmluZ1xyXG4gICAgICogaXMgc2V0IGluIGxvd2VyY2FzZSwgc28gdGhlIHNjcmVlbiByZWFkZXIgdGhpbmtzIGl0J3MgYSBuZXcgc3RyaW5nLiBDbGVhcmluZyBhbmQgcmUtc2V0dGluZyB0aGUgZmllbGQgZG9lcyBub3QgcHJvbXB0IHRoZSBzY3JlZW5cclxuICAgICAqIHJlYWRlciB0byByZWFkIHRoZSBhcmlhLWxpdmUgcmVnaW9uLlxyXG4gICAgICogQHBhcmFtIGV2ZW50IHRoZSBzdHJpbmcgdG8gYmUgYW5ub3VuY2VkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlU2NyZWVuUmVhZGVyRXZlbnQoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2NyZWVuUmVhZGVyRXZlbnQgPSBldmVudCA9PT0gdGhpcy5zY3JlZW5SZWFkZXJFdmVudCA/IGV2ZW50LnRvTG9jYWxlTG93ZXJDYXNlKCkgOiBldmVudDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYW4gaXRlbSB0byB0aGUgYXJyYXlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5nZXROZXdJdGVtKCk7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnZhbHVlLmxlbmd0aDtcclxuICAgICAgICB0aGlzLnZhbHVlLnB1c2goaXRlbSk7XHJcbiAgICAgICAgdGhpcy50cmlnZ2VyVmFsdWVDaGFuZ2UoKTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JZCA9IHRoaXMuZ2V0SXRlbUFyaWFJZChpbmRleCwgJ2l0ZW1Db250YWluZXInKTtcclxuICAgICAgICAgICAgY29uc3QgaXRlbUNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGl0ZW1JZCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBmaXJzdElucHV0ID0gPEhUTUxFbGVtZW50Pml0ZW1Db250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChmaXJzdElucHV0KSB7XHJcbiAgICAgICAgICAgICAgICBmaXJzdElucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGl0ZW1Db250YWluZXIuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlbGV0ZXMgYW4gaXRlbSBmcm9tIHRoZSBhcnJheVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGVsZXRlKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy52YWx1ZS5pbmRleE9mKGl0ZW0pO1xyXG5cclxuICAgICAgICAvLyByZXR1cm4gdGhlIHZpZXcgdG8gdGhlIHByZXZpb3VzIGl0ZW0gaW4gdGhlIGxpc3QuXHJcbiAgICAgICAgY29uc3QgcHJldkl0ZW1JZCA9IHRoaXMuZ2V0SXRlbUFyaWFJZChpbmRleCAtIDEsICdpdGVtQ29udGFpbmVyJyk7XHJcbiAgICAgICAgY29uc3QgcHJldkNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByZXZJdGVtSWQpO1xyXG5cclxuICAgICAgICBpZiAocHJldkNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICBwcmV2Q29udGFpbmVyLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBmb2N1cyBvbiB0aGUgYWRkIGJ1dHRvbiwgb3RoZXJ3aXNlIGZvY3VzIGlzIHJlc2V0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhZ2VcclxuICAgICAgICB0aGlzLmFkZEJ1dHRvbi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLnRyaWdnZXJWYWx1ZUNoYW5nZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2NyZWVuUmVhZGVyRXZlbnQodGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkZvcm0uQXJyYXkucmVtb3ZlQnV0dG9uRXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVjcmVhc2VzIHRoZSBpbmRleCBvZiBhbiBpdGVtIGJ5IDFcclxuICAgICAqL1xyXG4gICAgcHVibGljIG1vdmVVcChpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudmFsdWUuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICBpZiAoaW5kZXggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlbXAgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZVtpbmRleF0gPSB7IC4uLnRoaXMudmFsdWVbaW5kZXggLSAxXSB9O1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlW2luZGV4IC0gMV0gPSB0ZW1wO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcmVlblJlYWRlckV2ZW50KHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Gb3JtLkFycmF5LnByb21vdGVCdXR0b25FdmVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTY3JlZW5SZWFkZXJFdmVudCh0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuRm9ybS5BcnJheS5wcm9tb3RlQnV0dG9uUHJldmVudGVkRXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluY3JlYXNlcyB0aGUgaW5kZXggb2YgYW4gaXRlbSBieSAxXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtb3ZlRG93bihpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudmFsdWUuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICBpZiAoaW5kZXggPCB0aGlzLnZhbHVlLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgY29uc3QgdGVtcCA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlW2luZGV4XSA9IHsgLi4udGhpcy52YWx1ZVtpbmRleCArIDFdIH07XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWVbaW5kZXggKyAxXSA9IHRlbXA7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2NyZWVuUmVhZGVyRXZlbnQodGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkZvcm0uQXJyYXkuZGVtb3RlQnV0dG9uRXZlbnQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2NyZWVuUmVhZGVyRXZlbnQodGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkZvcm0uQXJyYXkuZGVtb3RlQnV0dG9uUHJldmVudGVkRXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtZXRob2QgY2FsbGVkIHdoZW4gYSA8c2VsZWN0PiBlbGVtZW50J3MgdmFsdWUgY2hhbmdlcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHRyaWdnZXJWYWx1ZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWVdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRJdGVtQXJpYUlkKGluZGV4OiBudW1iZXIsIGlkTmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgICAgICBzd2l0Y2ggKGlkTmFtZSkge1xyXG4gICAgICAgICAgICBjYXNlICdpdGVtJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLmlkQmFnWydpdGVtJ119LSR7aW5kZXh9YDtcclxuICAgICAgICAgICAgY2FzZSAnaXRlbUhlYWRlcic6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5pZEJhZ1snaXRlbSddfS1oZWFkZXItJHtpbmRleH1gO1xyXG4gICAgICAgICAgICBjYXNlICdpdGVtQ29udGFpbmVyJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLmlkQmFnWydpdGVtJ119LWNvbnRhaW5lci0ke2luZGV4fWA7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0SXRlbVRpdGxlKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgZXZlbnQ6IEFza0Zvckl0ZW1IZWFkZXJBcmdzID0geyBoZWFkZXJFdmFsRnVuYzogbnVsbCB9O1xyXG4gICAgICAgIHRoaXMuYXNrRm9ySXRlbUhlYWRlci5lbWl0KGV2ZW50KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGV2ZW50LmhlYWRlckV2YWxGdW5jID8gZXZlbnQuaGVhZGVyRXZhbEZ1bmMoaXRlbSwgaW5kZXgpIDogdGhpcy5pdGVtVGl0bGUuZm9ybWF0KGluZGV4KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U2hvd1JlbW92ZShpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBldmVudDogQXNrRm9yUmVtb3ZlRXZhbEZ1bmNBcmdzID0geyByZW1vdmVFdmFsRnVuYzogbnVsbCB9O1xyXG4gICAgICAgIHRoaXMuYXNrRm9yUmVtb3ZlRXZhbHVhdG9yLmVtaXQoZXZlbnQpO1xyXG5cclxuICAgICAgICByZXR1cm4gZXZlbnQucmVtb3ZlRXZhbEZ1bmMgPyBldmVudC5yZW1vdmVFdmFsRnVuYyhpdGVtLCBpbmRleCkgOiB0aGlzLnNob3dSZW1vdmU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXJmb3JtcyB2YWxpZGF0aW9uIHRoYXQgaXMgaW50ZXJuYWwgdG8gdGhpcyBjb250cm9sXHJcbiAgICAgKiBAcGFyYW0gYyBUaGUgZm9ybSBjb250cm9sIGF0dGFjaGVkIHRvIHRoaXMgaW5zdGFuY2VcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkFsZXJ0cyB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyByZXF1aXJlZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIXRoaXMudmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyByZXF1aXJlZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zdWJGaWVsZElzb2xhdG9yICYmICF0aGlzLnN1YkZpZWxkSXNvbGF0b3IuaXNWYWxpZCkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaW52YWxpZFN1YkZpZWxkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGlkZGVuOiB0cnVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gc3VwZXIudmFsaWRhdGUoYyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIHRoZSBpZEJhZyB1c2VkIGJ5IHRoaXMgY29tcG9uZW50IHRvIHN0b3JlIHVuaXF1ZSBlbGVtZW50IGlkcy5cclxuICAgICAqIGlkIHZhbHVlcyB3aWxsIGJlIGFzc2lnbmVkIGJlIHRoZSBAc2VlIEJhc2VDb21wb25lbnQgc3VwZXIgY2xhc3MuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjcmVhdGVJZEJhZygpOiBNc2Z0U21lLlN0cmluZ01hcDxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi4gc3VwZXIuY3JlYXRlSWRCYWcoKSxcclxuICAgICAgICAgICAgZGV0YWlsc1NwYW46ICcnLFxyXG4gICAgICAgICAgICBpdGVtOiAnJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF0ZXMgYSBuZXcgaXRlbSB0byBiZSBhZGRlZCB0byB0aGUgYXJyYXlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXROZXdJdGVtKCk6IGFueSB7XHJcbiAgICAgICAgaWYgKHRoaXMubmV3SXRlbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gTXNmdFNtZS5kZWVwQ29weSh0aGlzLm5ld0l0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50OiBBc2tGb3JOZXdJdGVtRXZlbnRBcmdzID0geyBpdGVtOiBudWxsIH07XHJcbiAgICAgICAgICAgIHRoaXMuYXNrRm9yTmV3SXRlbS5lbWl0KGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuIGV2ZW50Lml0ZW0gfHwge307XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxzbWUtZm9ybS1maWVsZC1sYXlvdXQgW2Zvcm1GaWVsZF09XCJ0aGlzXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJzbWUtYXJyYXlcIj5cclxuICAgIDxzbWUtYWNjb3JkaW9uIFtjYW5DbG9zZUFueV09XCJjYW5DbG9zZUFueVwiIFtjYW5DbG9zZUFsbF09XCJjYW5DbG9zZUFsbFwiIFtjYW5PcGVuTXVsdGlwbGVdPVwiY2FuT3Blbk11bHRpcGxlXCI+XHJcbiAgICAgIDxzbWUtYWNjb3JkaW9uLXBhbmVsICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZhbHVlOyBsZXQgaSA9IGluZGV4XCIgW2hlYWRlcl09XCJnZXRJdGVtVGl0bGUoaXRlbSwgaSlcIiBbaXNFeHBhbmRhYmxlXT1cImZhbHNlXCIgW2F0dHIuZGF0YS11dGEtaWRdPVwiJ2FycmF5LWZvcm0tZmllbGQtaXRlbS0nICsgaVwiPlxyXG4gICAgICAgIDxzbWUtcGFuZWwtY29udHJvbD5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZVwiIHNtZVRlbXBsYXRlT3V0bGV0IFt0ZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiIFtkYXRhXT1cIml0ZW1cIiBob3N0RGF0YU5hbWU9XCJjb250ZXh0XCJcclxuICAgICAgICAgICAgW2hvc3REYXRhXT1cIntpbmRleDogaSwgYXJpYUxhYmVsSWQ6IGdldEl0ZW1BcmlhSWQoaSwgJ2l0ZW1IZWFkZXInKX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93TW92ZVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNtZS1idXR0b24tdHJpZ2dlciBzbWUtYnV0dG9uLWF1dG8td2lkdGggc21lLWZvcm0tZmllbGQtaGVpZ2h0IHNtZS1wYWRkaW5nLWhvcml6b250YWwteHNcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuRm9ybS5BcnJheS5wcm9tb3RlQnV0dG9uQXJpYUxhYmVsXCJcclxuICAgICAgICAgICAgW3RpdGxlXT1cInN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuRm9ybS5BcnJheS5wcm9tb3RlQnV0dG9uVG9vbHRpcFwiIChjbGljayk9XCJtb3ZlVXAoaXRlbSlcIlxyXG4gICAgICAgICAgICBbc21lRGlzYWJsZWRdPVwibG9hZGluZ09yRGlzYWJsZWRcIiBkYXRhLXV0YS1pZD1cInByb21vdGUtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic21lLWljb24gc21lLWljb24tdXBcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93TW92ZVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNtZS1idXR0b24tdHJpZ2dlciBzbWUtYnV0dG9uLWF1dG8td2lkdGggc21lLWZvcm0tZmllbGQtaGVpZ2h0IHNtZS1wYWRkaW5nLWhvcml6b250YWwteHNcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuRm9ybS5BcnJheS5kZW1vdGVCdXR0b25BcmlhTGFiZWxcIlxyXG4gICAgICAgICAgICBbdGl0bGVdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Gb3JtLkFycmF5LmRlbW90ZUJ1dHRvblRvb2x0aXBcIiAoY2xpY2spPVwibW92ZURvd24oaXRlbSlcIlxyXG4gICAgICAgICAgICBbc21lRGlzYWJsZWRdPVwibG9hZGluZ09yRGlzYWJsZWRcIiBkYXRhLXV0YS1pZD1cImRlbW90ZS1idXR0b25cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWUtaWNvbiBzbWUtaWNvbi1kb3duXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZ2V0U2hvd1JlbW92ZShpdGVtLCBpKVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cInNtZS1idXR0b24tdHJpZ2dlciBzbWUtYnV0dG9uLWF1dG8td2lkdGggc21lLWZvcm0tZmllbGQtaGVpZ2h0IHNtZS1wYWRkaW5nLWhvcml6b250YWwteHNcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuRm9ybS5BcnJheS5yZW1vdmVCdXR0b25BcmlhTGFiZWxcIlxyXG4gICAgICAgICAgICBbdGl0bGVdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Gb3JtLkFycmF5LnJlbW92ZUJ1dHRvblRvb2x0aXBcIiAoY2xpY2spPVwiZGVsZXRlKGl0ZW0pXCJcclxuICAgICAgICAgICAgW3NtZURpc2FibGVkXT1cImxvYWRpbmdPckRpc2FibGVkXCIgZGF0YS11dGEtaWQ9XCJyZW1vdmUtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic21lLWljb24gc21lLWljb24tZGVsZXRlIHNtZS1jb2xvci1yZWRcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3NtZS1wYW5lbC1jb250cm9sPlxyXG5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCIgW2lkXT1cImdldEl0ZW1BcmlhSWQoaSwgJ2l0ZW0nKVwiPnt7aXRlbVRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgPGZpZWxkc2V0IFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJnZXRJdGVtQXJpYUlkKGksICdpdGVtJylcIlxyXG4gICAgICAgICAgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay1oIHNtZS1tYXJnaW4tYm90dG9tLWxnIHNtZS1hcnJheS1pdGVtXCJcclxuICAgICAgICAgIFtjbGFzcy5zbWUtc3ViZm9ybS1pbmRlbnQtbm9uZV09XCJvcmllbnRhdGlvbj09PSdob3Jpem9udGFsJ1wiPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1hdXRvIHNtZS1wYWRkaW5nLWluc2V0LW1kXCIgW2lkXT1cImdldEl0ZW1BcmlhSWQoaSwgJ2l0ZW1Db250YWluZXInKVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIHNtZVRlbXBsYXRlT3V0bGV0IFt0ZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIiBbZGF0YV09XCJpdGVtXCIgaG9zdERhdGFOYW1lPVwiY29udGV4dFwiXHJcbiAgICAgICAgICAgICAgW2hvc3REYXRhXT1cIntpbmRleDogaSwgYXJpYUxhYmVsSWQ6IGdldEl0ZW1BcmlhSWQoaSwgJ2l0ZW0nKX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZmllbGRzZXQ+XHJcblxyXG4gICAgICA8L3NtZS1hY2NvcmRpb24tcGFuZWw+XHJcbiAgICA8L3NtZS1hY2NvcmRpb24+XHJcblxyXG4gICAgPGJ1dHRvbiAjYWRkQnV0dG9uICpuZ0lmPVwic2hvd0FkZFwiIHR5cGU9XCJidXR0b25cIiBkYXRhLXV0YS1pZD1cImFkZC1idXR0b25cIlxyXG4gICAgICBbc21lRGlzYWJsZWRdPVwibG9hZGluZ09yRGlzYWJsZWQgfHwgKG1heEl0ZW1zICE9PSAtMSAmJiB2YWx1ZS5sZW5ndGggPj0gbWF4SXRlbXMpXCJcclxuICAgICAgY2xhc3M9XCJzbWUtYnV0dG9uLXRyaWdnZXIgc21lLWJ1dHRvbi1hdXRvLXdpZHRoIHNtZS1pY29uIHNtZS1pY29uLWFkZCBzbWUtbWFyZ2luLWJvdHRvbS14c1wiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Gb3JtLkFycmF5LmFkZEJ1dHRvbkFyaWFMYWJlbFwiXHJcbiAgICAgIFt0aXRsZV09XCJzdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkZvcm0uQXJyYXkuYWRkQnV0dG9uVG9vbHRpcFwiIChjbGljayk9XCJhZGQoKVwiPnt7YWRkQnV0dG9uVGV4dH19PC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxzbWUtdmFsaWRhdGlvbi1hbGVydCBbYWxlcnRdPVwiYWxlcnRcIj48L3NtZS12YWxpZGF0aW9uLWFsZXJ0PlxyXG4gIDxkaXYgY2xhc3M9XCJzbWUtc2NyZWVuLXJlYWRlclwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIGFyaWEtcmVsZXZhbnQ9XCJhbGxcIj57e3NjcmVlblJlYWRlckV2ZW50fX08L2Rpdj5cclxuPC9zbWUtZm9ybS1maWVsZC1sYXlvdXQ+XHJcbiJdfQ==
|