@microsoft/windows-admin-center-sdk 4.123.0 → 4.232.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/id-ID/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/esm2020/src/controls/accordion/accordion-panel/accordion-panel.component.mjs +36 -12
- package/angular/esm2020/src/controls/actions/containers/action-container.component.mjs +2 -3
- package/angular/esm2020/src/controls/alert-bar/alert-bar.component.mjs +2 -2
- package/angular/esm2020/src/controls/breadcrumb-header/breadcrumb-header.component.mjs +1 -1
- package/angular/esm2020/src/controls/common/base.component.mjs +1 -1
- package/angular/esm2020/src/controls/common/spacer-base.component.mjs +25 -1
- package/angular/esm2020/src/controls/context-menu/context-menu.component.mjs +2 -3
- package/angular/esm2020/src/controls/data-table/data-table.component.mjs +7 -7
- package/angular/esm2020/src/controls/dialog/base-dialog.component.mjs +2 -4
- package/angular/esm2020/src/controls/dialog/confirmation-list-dialog/confirmation-list-dialog.component.mjs +2 -2
- package/angular/esm2020/src/controls/dropdown/dropdown.component.mjs +1 -4
- package/angular/esm2020/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.mjs +59 -0
- package/angular/esm2020/src/controls/form/form-field/array/array-form-field.component.mjs +24 -35
- package/angular/esm2020/src/controls/form/form-field/clock/clock-form-field.component.mjs +10 -7
- package/angular/esm2020/src/controls/form/form-field/form-field-accessibility-manager-base.service.mjs +105 -0
- package/angular/esm2020/src/controls/form/form-field/form-field.component.mjs +1 -1
- package/angular/esm2020/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.mjs +38 -0
- package/angular/esm2020/src/controls/form/form-field/list/list-form-field.component.mjs +56 -38
- package/angular/esm2020/src/controls/form/form-field/number/number-form-field.component.mjs +22 -4
- package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.mjs +54 -0
- package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.mjs +67 -67
- package/angular/esm2020/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.mjs +5 -5
- package/angular/esm2020/src/controls/form/forms.module.mjs +19 -2
- package/angular/esm2020/src/controls/icon/icon-text/icon-text.component.mjs +6 -6
- package/angular/esm2020/src/controls/icon/layered-icon/status/status-icon.component.mjs +1 -1
- package/angular/esm2020/src/controls/layout/editable-layout.component.mjs +2 -3
- package/angular/esm2020/src/controls/node-credentials-form/node-credentials-form.component.mjs +2 -2
- package/angular/esm2020/src/controls/page-alert-bar/page-alert-bar.component.mjs +4 -4
- package/angular/esm2020/src/controls/property-grid/property-grid.component.mjs +33 -13
- package/angular/esm2020/src/controls/schema/tabbed-form-loader.component.mjs +2 -2
- package/angular/esm2020/src/controls/settings/common-settings/common-settings.component.mjs +5 -5
- package/angular/esm2020/src/controls/settings/settings-form.directive.mjs +3 -7
- package/angular/esm2020/src/controls/settings/settings-form.service.mjs +2 -4
- package/angular/esm2020/src/controls/snap-in-extension/snap-in-extension.component.mjs +1 -1
- package/angular/esm2020/src/controls/split-view/split-view.component.mjs +2 -2
- package/angular/esm2020/src/controls/wizard/models/wizard-step-snap-in-output.mjs +1 -1
- package/angular/esm2020/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.component.mjs +3 -3
- package/angular/esm2020/src/data/extension-broker/snap-in-listener.mjs +80 -0
- package/angular/esm2020/src/data/index.mjs +2 -1
- package/angular/esm2020/src/directives/router/router-link.directive.mjs +2 -2
- package/angular/esm2020/src/directives/svg/svg.directive.mjs +2 -3
- package/angular/esm2020/src/generated/strings.mjs +1 -1
- package/angular/esm2020/src/service/navigation.service.mjs +3 -8
- package/angular/esm2020/src/service/user-alive.service.mjs +2 -4
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +665 -239
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +636 -237
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/angular/package.json +1 -1
- package/angular/src/controls/accordion/accordion-panel/accordion-panel.component.d.ts +13 -4
- package/angular/src/controls/common/spacer-base.component.d.ts +11 -2
- package/angular/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.d.ts +38 -0
- package/angular/src/controls/form/form-field/array/array-form-field.component.d.ts +3 -1
- package/angular/src/controls/form/form-field/form-field-accessibility-manager-base.service.d.ts +37 -0
- package/angular/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.d.ts +25 -0
- package/angular/src/controls/form/form-field/list/list-form-field.component.d.ts +12 -2
- package/angular/src/controls/form/form-field/number/number-form-field.component.d.ts +8 -0
- package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.d.ts +37 -0
- package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.d.ts +12 -8
- package/angular/src/controls/icon/icon-text/icon-text.component.d.ts +1 -1
- package/angular/src/controls/property-grid/property-grid.component.d.ts +2 -0
- package/angular/src/controls/wizard/models/wizard-step-snap-in-output.d.ts +1 -1
- package/{core → angular/src}/data/extension-broker/snap-in-listener.d.ts +49 -46
- package/angular/src/data/index.d.ts +1 -0
- package/angular/src/directives/svg/svg.directive.d.ts +1 -2
- package/angular/src/generated/strings.d.ts +12 -0
- package/core/async/cancellation.js +312 -0
- package/core/async/index.js +312 -0
- package/core/async/progress.js +312 -0
- package/core/azure/azure-constants.d.ts +2 -2
- package/core/azure/azure-constants.d.ts.map +1 -1
- package/core/azure/azure-constants.js +322 -3
- package/core/azure/azure-constants.js.map +1 -1
- package/core/azure/azure-logging.js +312 -0
- package/core/azure/azure-manager.js +312 -0
- package/core/azure/models/aadAppConfig-data.js +312 -0
- package/core/azure/models/azureArcStatusEnum.js +312 -0
- package/core/azure/models/azureTokenResult-data.js +312 -0
- package/core/azure/resources/deployment-operation-request-body.js +312 -0
- package/core/azure/resources/deployment-operation-response.js +312 -0
- package/core/azure/resources/location-data.js +315 -0
- package/core/azure/resources/resource-group-data.js +312 -0
- package/core/azure/resources/subscription-data.js +312 -0
- package/core/base/data-store/browser-storage-data-store.js +315 -0
- package/core/base/data-store/cached-data-store.js +312 -0
- package/core/base/data-store/data-store.js +312 -0
- package/core/base/data-store/local-data-store.js +312 -0
- package/core/base/data-store/memory-data-store.js +312 -0
- package/core/base/data-store/session-data-store.js +312 -0
- package/core/base/date/date-like.js +312 -0
- package/core/base/date/date-range.js +312 -0
- package/core/base/date/date-time.js +312 -0
- package/core/base/date/date-type.js +312 -0
- package/core/base/date/time-unit.js +312 -0
- package/core/base/decorators/base.js +312 -0
- package/core/base/decorators/debounce.decorators.js +312 -0
- package/core/base/decorators/delay.decorator.js +315 -0
- package/core/base/decorators/yield.decorator.js +312 -0
- package/core/base/environment.js +312 -0
- package/core/base/json.js +312 -0
- package/core/base/msft-sme.mock.js +316 -0
- package/core/base/polyfills/array.js +315 -0
- package/core/base/polyfills/string.js +312 -0
- package/core/base/rxjs-lifetime-manager.js +312 -0
- package/core/base/utilities.js +312 -0
- package/core/base/versioned-object.js +312 -0
- package/core/data/accessibility-manager.js +312 -0
- package/core/data/active-directory/active-directory.js +312 -0
- package/core/data/active-directory/models/account-info.js +312 -0
- package/core/data/active-directory/models/active-directory-search-options.js +312 -0
- package/core/data/active-directory/models/search-type.js +312 -0
- package/core/data/animation.js +312 -0
- package/core/data/app-context.js +312 -0
- package/core/data/asset-manager.js +315 -0
- package/core/data/base64-array-buffer.js +312 -0
- package/core/data/batch-connection.js +312 -0
- package/core/data/cim-connection.js +312 -0
- package/core/data/cim-stream.js +312 -0
- package/core/data/cim.js +312 -0
- package/core/data/column-picker.js +312 -0
- package/core/data/cookie.js +312 -0
- package/core/data/core-environment.js +315 -0
- package/core/data/crypto.js +312 -0
- package/core/data/deployment-share.js +312 -0
- package/core/data/disposable.js +312 -0
- package/core/data/electron.js +315 -0
- package/core/data/error-extended.js +312 -0
- package/core/data/extension-broker/dialog-listener.js +312 -0
- package/core/data/extension-broker/extension-broker.js +312 -0
- package/core/data/extension-broker/extension-listener.js +312 -0
- package/core/data/extension-broker/model/extension-broker-request-payload.js +312 -0
- package/core/data/extension-broker/model/extension-broker-response-error.js +312 -0
- package/core/data/extension-broker/model/extension-broker-response-payload.js +312 -0
- package/core/data/extension-broker/model/extension-entries.js +315 -0
- package/core/data/extension-broker/model/extension-instance.js +315 -0
- package/core/data/extension-broker/model/extension-rect.js +312 -0
- package/core/data/extension-broker/model/extension-search-options.js +312 -0
- package/core/data/extension-broker/service-listener.js +312 -0
- package/core/data/extension-broker/worker-listener.js +312 -0
- package/core/data/extension-broker/worker-set.js +312 -0
- package/core/data/file-transfer.js +312 -0
- package/core/data/gateway-connection.js +312 -0
- package/core/data/gateway-status.js +312 -0
- package/core/data/gateway-url-builder.js +312 -0
- package/core/data/gateway-url-translator.d.ts +1 -0
- package/core/data/gateway-url-translator.d.ts.map +1 -1
- package/core/data/gateway-url-translator.js +337 -6
- package/core/data/gateway-url-translator.js.map +1 -1
- package/core/data/gateway-urls.js +312 -0
- package/core/data/globalization.js +315 -0
- package/core/data/http-constants.js +315 -0
- package/core/data/http.js +312 -0
- package/core/data/jobs/jobs-manager.js +312 -0
- package/core/data/jobs/models/job-credentials.js +312 -0
- package/core/data/jobs/models/job-node.js +312 -0
- package/core/data/jobs/models/job-paginated-response.js +315 -0
- package/core/data/jobs/models/job-pagination-options.js +315 -0
- package/core/data/jobs/models/job.js +312 -0
- package/core/data/jobs/models/node-job.js +312 -0
- package/core/data/jobs/models/powershell-job.js +312 -0
- package/core/data/language.js +315 -0
- package/core/data/lifetime-data.js +312 -0
- package/core/data/localization-manager.js +312 -0
- package/core/data/native-q.js +312 -0
- package/core/data/net.d.ts.map +1 -1
- package/core/data/net.js +313 -1
- package/core/data/net.js.map +1 -1
- package/core/data/node-connection.d.ts.map +1 -1
- package/core/data/node-connection.js +312 -2
- package/core/data/node-connection.js.map +1 -1
- package/core/data/node-extension-install.js +312 -0
- package/core/data/powershell-alternate.js +312 -0
- package/core/data/powershell-batch.js +312 -0
- package/core/data/powershell-connection.js +312 -0
- package/core/data/powershell-crypto.js +312 -0
- package/core/data/powershell-stream.js +312 -0
- package/core/data/powershell.js +312 -0
- package/core/data/query-cache.js +312 -0
- package/core/data/resource-cache.js +312 -0
- package/core/data/schedule-reboot.js +312 -0
- package/core/data/settings-manager.js +312 -0
- package/core/data/settings-manger.mock.js +312 -0
- package/core/data/sme-extension.js +312 -0
- package/core/data/ssh-stream.js +312 -0
- package/core/data/units.js +312 -0
- package/core/data/uri-builder.js +315 -0
- package/core/data/wdac-operations.js +312 -0
- package/core/data/websocket-stream.js +312 -0
- package/core/diagnostics/error-monitor.js +312 -0
- package/core/diagnostics/log-level.js +312 -0
- package/core/diagnostics/log-record.js +312 -0
- package/core/diagnostics/logging-constants.js +312 -0
- package/core/diagnostics/logging.js +312 -0
- package/core/diagnostics/logging.mock.js +312 -0
- package/core/diagnostics/sme-web-telemetry-models.js +312 -0
- package/core/diagnostics/sme-web-telemetry.d.ts +1 -2
- package/core/diagnostics/sme-web-telemetry.d.ts.map +1 -1
- package/core/diagnostics/sme-web-telemetry.js +336 -15
- package/core/diagnostics/sme-web-telemetry.js.map +1 -1
- package/core/diagnostics/telemetry-control-type.js +312 -0
- package/core/diagnostics/telemetry-options.js +312 -0
- package/core/diagnostics/telemetry-record.js +312 -0
- package/core/dom/dom.js +312 -0
- package/core/frame/frame-connection.js +312 -0
- package/core/frame/frame-connection.mock.js +312 -0
- package/core/frame/shell-navigation-connection.js +312 -0
- package/core/generated/powershell-scripts.d.ts.map +1 -1
- package/core/generated/powershell-scripts.js +313 -1
- package/core/generated/powershell-scripts.js.map +1 -1
- package/core/generated/strings.js +312 -0
- package/core/host/host-core-manager.js +312 -0
- package/core/host/host-core-message-type.js +312 -0
- package/core/host/host-core-messages.js +312 -0
- package/core/index.d.ts +0 -1
- package/core/index.d.ts.map +1 -1
- package/core/index.js +312 -1
- package/core/index.js.map +1 -1
- package/core/manifest/environment-modules.js +312 -0
- package/core/manifest/manifest-loader.js +312 -0
- package/core/notification/client-notification-instance.js +312 -0
- package/core/notification/client-notification.js +312 -0
- package/core/notification/notification-connection.js +312 -0
- package/core/notification/notification-link-type.js +312 -0
- package/core/notification/notification-manager.js +312 -0
- package/core/notification/notification-message.js +312 -0
- package/core/notification/notification-state.js +312 -0
- package/core/notification/notification.js +312 -0
- package/core/notification/powershell-notification.js +312 -0
- package/core/notification/socket-signalr.js +312 -0
- package/core/notification/work-item-connection.js +312 -0
- package/core/notification/work-item-manager.js +312 -0
- package/core/notification/work-item-request.js +312 -0
- package/core/performance/performance-profile-data-type.js +312 -0
- package/core/performance/performance-profile-data.js +312 -0
- package/core/performance/performance-profile-database.js +312 -0
- package/core/performance/performance-profile-record.js +312 -0
- package/core/performance/performance-profile.d.ts.map +1 -1
- package/core/performance/performance-profile.js +321 -9
- package/core/performance/performance-profile.js.map +1 -1
- package/core/performance/performance-tracker.js +312 -0
- package/core/polyfills.js +312 -0
- package/core/resources/scripts/public/crypto/Get-DecryptedDataFromNode.ps1 +216 -0
- package/core/resources/scripts/public/crypto/Get-EncryptionJWKOnNode.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32LogicalDisk.ps1 +218 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32NetworkAdapter.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32PhysicalMemory.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32Processor.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-ClusterInventory.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-ClusterNodes.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +246 -8
- package/core/rpc/alive/rpc-alive-client.js +312 -0
- package/core/rpc/alive/rpc-alive-handler.js +312 -0
- package/core/rpc/alive/rpc-alive-model.js +315 -0
- package/core/rpc/alive/rpc-alive-subject-server.js +312 -0
- package/core/rpc/alive/rpc-observable-alive-client.js +312 -0
- package/core/rpc/alive/rpc-observable-alive-model.js +312 -0
- package/core/rpc/alive/rpc-observable-alive-server.js +312 -0
- package/core/rpc/azure/rpc-azure-model.js +312 -0
- package/core/rpc/azure/rpc-azure-request-client.js +312 -0
- package/core/rpc/azure/rpc-azure-request-handler.js +312 -0
- package/core/rpc/azure/rpc-azure-request-subject-server.js +312 -0
- package/core/rpc/azure/rpc-azure-response-client.js +312 -0
- package/core/rpc/azure/rpc-azure-response-handler.js +315 -0
- package/core/rpc/credssp/rpc-credssp-model.js +312 -0
- package/core/rpc/credssp/rpc-credssp-request-client.js +312 -0
- package/core/rpc/credssp/rpc-credssp-request-handler.js +315 -0
- package/core/rpc/credssp/rpc-credssp-request-subject-server.js +312 -0
- package/core/rpc/credssp/rpc-credssp-response-client.js +312 -0
- package/core/rpc/credssp/rpc-credssp-response-handler.js +315 -0
- package/core/rpc/dialog/rpc-dialog-client.js +312 -0
- package/core/rpc/dialog/rpc-dialog-handler.js +312 -0
- package/core/rpc/dialog/rpc-dialog-model.js +312 -0
- package/core/rpc/dialog/rpc-dialog-subject-server.js +315 -0
- package/core/rpc/electron/rpc-electron-model.js +312 -0
- package/core/rpc/electron/rpc-electron-request-client.js +312 -0
- package/core/rpc/electron/rpc-electron-request-handler.js +312 -0
- package/core/rpc/electron/rpc-electron-request-subject-server.js +312 -0
- package/core/rpc/electron/rpc-electron-response-client.js +312 -0
- package/core/rpc/electron/rpc-electron-response-handler.js +312 -0
- package/core/rpc/elevate/rpc-observable-elevate-client.js +312 -0
- package/core/rpc/elevate/rpc-observable-elevate-model.js +312 -0
- package/core/rpc/elevate/rpc-observable-elevate-server.js +312 -0
- package/core/rpc/error-monitor/rpc-observable-error-monitor-client.js +312 -0
- package/core/rpc/error-monitor/rpc-observable-error-monitor-model.js +315 -0
- package/core/rpc/error-monitor/rpc-observable-error-monitor-server.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-model.js +315 -0
- package/core/rpc/extension-broker/rpc-extension-broker-module-request-subject-server.js +315 -0
- package/core/rpc/extension-broker/rpc-extension-broker-request-client.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-request-handler.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-request-subject-server.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-response-client.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-response-handler.js +312 -0
- package/core/rpc/extension-data/rpc-observable-extension-data-client.js +312 -0
- package/core/rpc/extension-data/rpc-observable-extension-data-model.js +312 -0
- package/core/rpc/extension-data/rpc-observable-extension-data-server.js +312 -0
- package/core/rpc/forward/rpc-forward-auto-client.js +312 -0
- package/core/rpc/forward/rpc-forward-down-client.js +315 -0
- package/core/rpc/forward/rpc-forward-down-handler.js +312 -0
- package/core/rpc/forward/rpc-forward-model.js +312 -0
- package/core/rpc/forward/rpc-forward-up-client.js +312 -0
- package/core/rpc/forward/rpc-forward-up-handler.js +312 -0
- package/core/rpc/forward/rpc-forward-up-subject-server.js +312 -0
- package/core/rpc/log/rpc-log-client.js +312 -0
- package/core/rpc/log/rpc-log-handler.js +312 -0
- package/core/rpc/log/rpc-log-model.js +312 -0
- package/core/rpc/log/rpc-log-subject-server.js +312 -0
- package/core/rpc/notification/rpc-notification-client.js +312 -0
- package/core/rpc/notification/rpc-notification-handler.js +312 -0
- package/core/rpc/notification/rpc-notification-model.js +312 -0
- package/core/rpc/notification/rpc-notification-subject-server.js +312 -0
- package/core/rpc/overlay/rpc-overlay-close-client.js +312 -0
- package/core/rpc/overlay/rpc-overlay-close-handler.js +312 -0
- package/core/rpc/overlay/rpc-overlay-model.js +312 -0
- package/core/rpc/overlay/rpc-overlay-open-client.js +315 -0
- package/core/rpc/overlay/rpc-overlay-open-handler.js +312 -0
- package/core/rpc/overlay/rpc-overlay-open-subject-server.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-client.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-config-client.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-config-server.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-model.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-server.js +312 -0
- package/core/rpc/report/rpc-report-client.js +312 -0
- package/core/rpc/report/rpc-report-handler.js +312 -0
- package/core/rpc/report/rpc-report-model.js +312 -0
- package/core/rpc/report/rpc-report-subject-server.js +315 -0
- package/core/rpc/rpc-base.js +312 -0
- package/core/rpc/rpc-channel.js +312 -0
- package/core/rpc/rpc-forwarder.js +312 -0
- package/core/rpc/rpc-inbound-client.js +312 -0
- package/core/rpc/rpc-inbound.js +312 -0
- package/core/rpc/rpc-manager.js +312 -0
- package/core/rpc/rpc-module-subject-server.js +315 -0
- package/core/rpc/rpc-observable-client.js +312 -0
- package/core/rpc/rpc-observable-request.js +312 -0
- package/core/rpc/rpc-observable-result.js +312 -0
- package/core/rpc/rpc-observable-server.js +312 -0
- package/core/rpc/rpc-outbound-client.js +312 -0
- package/core/rpc/rpc-outbound.js +312 -0
- package/core/rpc/rpc-subject-server.js +312 -0
- package/core/rpc/rpc.js +312 -0
- package/core/rpc/seek/rpc-seek-client.js +312 -0
- package/core/rpc/seek/rpc-seek-handler.js +315 -0
- package/core/rpc/seek/rpc-seek-model.js +312 -0
- package/core/rpc/settings/rpc-settings-client.js +315 -0
- package/core/rpc/settings/rpc-settings-handler.js +312 -0
- package/core/rpc/settings/rpc-settings-model.js +312 -0
- package/core/rpc/settings/rpc-settings-subject-server.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-client.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-handler.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-model.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-subject-server.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-model.js +315 -0
- package/core/rpc/sme-extension/rpc-sme-extension-request-client.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-request-handler.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-request-subject-server.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-response-client.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-response-handler.js +312 -0
- package/core/rpc/telemetry/rpc-telemetry-client.js +312 -0
- package/core/rpc/telemetry/rpc-telemetry-handler.js +315 -0
- package/core/rpc/telemetry/rpc-telemetry-model.js +312 -0
- package/core/rpc/telemetry/rpc-telemetry-subject-server.js +312 -0
- package/core/rpc/update-data/rpc-update-data-client.js +312 -0
- package/core/rpc/update-data/rpc-update-data-handler.js +312 -0
- package/core/rpc/update-data/rpc-update-data-model.js +312 -0
- package/core/rpc/update-data/rpc-update-data-subject-server.js +312 -0
- package/core/rpc/update-theme/rpc-observable-update-theme-client.js +312 -0
- package/core/rpc/update-theme/rpc-observable-update-theme-model.js +312 -0
- package/core/rpc/update-theme/rpc-observable-update-theme-server.js +312 -0
- package/core/rpc/work-item/rpc-work-item-client.js +312 -0
- package/core/rpc/work-item/rpc-work-item-handler.js +312 -0
- package/core/rpc/work-item/rpc-work-item-model.js +312 -0
- package/core/rpc/work-item/rpc-work-item-subject-server.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-client.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-handler.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-model.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-subject-server.js +312 -0
- package/core/security/active-connection.js +312 -0
- package/core/security/authorization-manager.js +312 -0
- package/core/security/connection-manager-settings/common-connection-settings.js +315 -0
- package/core/security/connection-manager-settings/connection-settings.js +312 -0
- package/core/security/connection-manager.js +312 -0
- package/core/security/connection-stream.js +312 -0
- package/core/security/connection.js +312 -0
- package/core/security/credssp-manager.js +312 -0
- package/core/security/sign-on-manager.js +312 -0
- package/core/security/tag-manager.js +312 -0
- package/core/security/tool-condition-validator.js +312 -0
- package/core/security/tool-connection-query.js +312 -0
- package/core/security/user-principal.js +312 -0
- package/core/shared/cluster-inventory/cluster-inventory-cache.js +312 -0
- package/core/shared/cluster-inventory/cluster-inventory.js +312 -0
- package/core/shared/cluster-inventory/cluster-node-inventory.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory-cache.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory-detail-cache.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory-detail.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory.js +312 -0
- package/core/shared/inventory-query-caches.js +312 -0
- package/core/shared/server-inventory/server-inventory-cache.js +312 -0
- package/core/shared/server-inventory/server-inventory-detail-cache.js +312 -0
- package/core/shared/server-inventory/server-inventory-detail.js +315 -0
- package/core/shared/server-inventory/server-inventory.js +312 -0
- package/core/shared/shared-cache.js +312 -0
- package/core/shared/tool-inventory/tool-inventory-cache.js +312 -0
- package/core/shared/tool-inventory/tool-inventory.js +312 -0
- package/core/special.js +315 -0
- package/core/test-utilities/accessibility-tester.js +312 -0
- package/core/test-utilities/console.mock.js +312 -0
- package/core/test-utilities/jasmine-axe-matcher.js +312 -0
- package/core/test-utilities/wait-async.js +312 -0
- package/core/test.js +312 -0
- package/core/testing.js +312 -0
- package/core/workflow/persistent-local-storage.js +312 -0
- package/core/workflow/persistent-work-item-apply-state.js +316 -0
- package/core/workflow/persistent-work-item-state.js +312 -0
- package/core/workflow/persistent-work-item.js +315 -0
- package/core/workflow/persistent-workflow-builder.js +312 -0
- package/core/workflow/persistent-workflow-context.js +312 -0
- package/core/workflow/persistent-workflow-runner.js +312 -0
- package/core/workflow/persistent-workflow-snapshot.js +312 -0
- package/core/workflow/persistent-workflow-store.js +312 -0
- package/core/workflow/persistent-workflow.js +312 -0
- package/package.json +11 -9
- package/styles/css/main-v2.css +1 -1
- package/styles/fonts/SegoeUI/Bold/SegoeUIBold-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/Light/SegoeUILight-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/Normal/SegoeUI-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/SemiBold/SegoeUISemiBold-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/SemiLight/SegoeUISemiLight-5.27.woff +0 -0
- package/styles/fonts/ServMDL2/ServMDL2-4.66.woff +0 -0
- package/tools/build/webpack/index-html.transform.js +312 -0
- package/tools/build/webpack/shell.index-html.transform.js +312 -0
- package/tools/build/webpack/shell.webpack.config.js +312 -0
- package/tools/build/webpack/webpack.config.js +312 -0
- package/tools/code-formatter/.eslintrc.base.json +3 -1
- package/tools/code-formatter/lint.d.ts.map +1 -1
- package/tools/code-formatter/lint.js +319 -1
- package/tools/code-formatter/lint.js.map +1 -1
- package/tools/code-formatter/utilities.d.ts +7 -0
- package/tools/code-formatter/utilities.d.ts.map +1 -0
- package/tools/code-formatter/utilities.js +395 -0
- package/tools/code-formatter/utilities.js.map +1 -0
- package/tools/gulp-doc-generator/index.js +312 -0
- package/tools/gulp-manifest-resource/index.js +312 -0
- package/tools/gulp-manifest-validator/index.js +312 -0
- package/tools/gulp-merge-json-in-folders/index.js +312 -0
- package/tools/gulp-merge-json-in-folders/json-merge.js +312 -0
- package/tools/gulp-ps-cim/index.js +315 -0
- package/tools/gulp-ps-code/index.d.ts.map +1 -1
- package/tools/gulp-ps-code/index.js +323 -2
- package/tools/gulp-ps-code/index.js.map +1 -1
- package/tools/gulp-ps-code/ps-code-convert.js +312 -0
- package/tools/gulp-ps-manifest/index.js +312 -0
- package/tools/gulp-ps-module/index.d.ts.map +1 -1
- package/tools/gulp-ps-module/index.js +327 -3
- package/tools/gulp-ps-module/index.js.map +1 -1
- package/tools/gulp-ps-resjson/index.js +315 -0
- package/tools/gulp-resjson/index.js +315 -0
- package/tools/gulp-resjson/resjson-convert.js +312 -0
- package/tools/gulp-schema-form/index.js +312 -0
- package/tools/gulp-svg-code/index.js +312 -0
- package/tools/gulp-svg-code/svg-code-convert.js +312 -0
- package/tools/gulp-update-notes-resource/index.d.ts.map +1 -1
- package/tools/gulp-update-notes-resource/index.js +316 -4
- package/tools/gulp-update-notes-resource/index.js.map +1 -1
- package/tools/module-template/.eslintrc.json +3 -0
- package/tools/module-template/build/increment-package-version.ps1 +216 -0
- package/tools/module-template/build/push-incremented-version.ps1 +216 -1
- package/tools/module-template/build/update-powershell-code.ps1 +216 -0
- package/tools/module-template/gulpfile.ts/common/clean.ts +2 -0
- package/tools/module-template/gulpfile.ts/common/pack.ts +17 -5
- package/tools/module-template/gulpfile.ts/common/powershell.ts +40 -2
- package/tools/module-template/gulpfile.ts/common/utilities.ts +1 -0
- package/tools/pack-nuget/index.d.ts.map +1 -1
- package/tools/pack-nuget/index.js +321 -3
- package/tools/pack-nuget/index.js.map +1 -1
- package/tools/scripts/Invoke-PesterTest.ps1 +216 -0
- package/tools/scripts/New-ExtensionPackage.ps1 +373 -6
- package/tools/scripts/Search-NonAsciiText.ps1 +216 -0
- package/tools/scripts/package-information/README.md +3 -0
- package/tools/scripts/package-information/ms-logo.png +0 -0
- package/tools/test-runner/index.js +312 -0
- package/tools/utilities/index.js +312 -0
- package/tools/wac-cli/src/angular15/configs/angular-json-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/ci-build-yml-config.js +315 -0
- package/tools/wac-cli/src/angular15/configs/config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts +9 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts.map +1 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js +328 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js.map +1 -0
- package/tools/wac-cli/src/angular15/configs/git-ignore-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/jasmine-test-config.js +315 -0
- package/tools/wac-cli/src/angular15/configs/package-json-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/replace-config.js +315 -0
- package/tools/wac-cli/src/angular15/configs/tsconfig-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/ui-test-automation-lagacy-config.js +312 -0
- package/tools/wac-cli/src/angular15/main.d.ts +19 -3
- package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
- package/tools/wac-cli/src/angular15/main.js +353 -7
- package/tools/wac-cli/src/angular15/main.js.map +1 -1
- package/tools/wac-cli/src/angular15/upgrader/angular-json-upgrader.js +316 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/ajax-response-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/css-syntax-error-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/declare-override-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/error-updater-angular15.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/form-control-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/iif-updater-util.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/load-children-callback-updater.js +315 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/log-parser.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/observable-throw-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/parameter-count-violation-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/string-replace-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/subjuct-next-updater-util.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/ci-build-yml-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts +18 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts.map +1 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js +361 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js.map +1 -0
- package/tools/wac-cli/src/angular15/upgrader/file-replacement-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/git-ignore-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/jasmine-test-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/package-json-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/remove-upgrader.js +315 -0
- package/tools/wac-cli/src/angular15/upgrader/replace-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/tsconfig-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/ui-test-automation-legacy-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/version-json-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/utils/add-item.js +312 -0
- package/tools/wac-cli/src/angular15/utils/command-runner.js +312 -0
- package/tools/wac-cli/src/angular15/utils/file-comparison.js +315 -0
- package/tools/wac-cli/src/angular15/utils/file-replacement.js +312 -0
- package/tools/wac-cli/src/angular15/utils/file-writer.js +312 -0
- package/tools/wac-cli/src/angular15/utils/logger.js +312 -0
- package/tools/wac-cli/src/angular15/utils/main-debugger.js +312 -0
- package/tools/wac-cli/src/angular15/utils/relative-path.js +312 -0
- package/tools/wac-cli/src/angular15/utils/remove-item.js +312 -0
- package/tools/wac-cli/src/angular15/utils/space-generator.js +312 -0
- package/tools/wac-cli/src/angular15/utils/update-shell-references.js +316 -0
- package/tools/wac-cli/src/common.js +312 -0
- package/tools/wac-cli/src/create/main.js +312 -0
- package/tools/wac-cli/src/eslint/main.js +312 -0
- package/tools/wac-cli/src/index.js +312 -0
- package/tools/wac-cli/src/upgrade/error-updater.js +312 -0
- package/tools/wac-cli/src/upgrade/error-updaters/component-selector-updater.js +315 -0
- package/tools/wac-cli/src/upgrade/error-updaters/only-arrow-functions-updater.js +315 -0
- package/tools/wac-cli/src/upgrade/error-updaters/updater-lookup.js +312 -0
- package/tools/wac-cli/src/upgrade/file-updater.js +312 -0
- package/tools/wac-cli/src/upgrade/get-files.js +312 -0
- package/tools/wac-cli/src/upgrade/main.js +312 -0
- package/tools/wac-cli/src/upgrade/models/error-result.js +312 -0
- package/tools/wac-cli/src/upgrade/models/updater-interface.js +312 -0
- package/tools/wac-cli/src/upgrade/package-updater.js +312 -0
- package/tools/wac-cli/templates/wac-template/src/favicon.ico +0 -0
- package/tools/wac-cli/templates/wac-template/src/karma.conf.js +312 -0
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Error.ps1 +216 -0
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Exception.ps1 +216 -0
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Process.ps1 +216 -1
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Service.ps1 +216 -1
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-WinRmState.ps1 +216 -1
- package/core/data/extension-broker/snap-in-listener.d.ts.map +0 -1
- package/core/data/extension-broker/snap-in-listener.js +0 -73
- package/core/data/extension-broker/snap-in-listener.js.map +0 -1
- package/microsoft-windows-admin-center-sdk-4.123.0.tgz +0 -0
|
@@ -46,8 +46,8 @@ function CommonSettingsComponent_header_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
46
46
|
i0.ɵɵadvance(1);
|
|
47
47
|
i0.ɵɵtextInterpolate(ctx_r0.settingsTitle);
|
|
48
48
|
} }
|
|
49
|
-
function
|
|
50
|
-
i0.ɵɵelementStart(0, "
|
|
49
|
+
function CommonSettingsComponent_li_10_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
50
|
+
i0.ɵɵelementStart(0, "div", 17);
|
|
51
51
|
i0.ɵɵtext(1);
|
|
52
52
|
i0.ɵɵelementEnd();
|
|
53
53
|
} if (rf & 2) {
|
|
@@ -112,7 +112,7 @@ function CommonSettingsComponent_li_10_a_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
112
112
|
} }
|
|
113
113
|
function CommonSettingsComponent_li_10_Template(rf, ctx) { if (rf & 1) {
|
|
114
114
|
i0.ɵɵelementStart(0, "li", 14);
|
|
115
|
-
i0.ɵɵtemplate(1,
|
|
115
|
+
i0.ɵɵtemplate(1, CommonSettingsComponent_li_10_div_1_Template, 2, 3, "div", 15);
|
|
116
116
|
i0.ɵɵtemplate(2, CommonSettingsComponent_li_10_a_2_Template, 8, 21, "a", 16);
|
|
117
117
|
i0.ɵɵelementEnd();
|
|
118
118
|
} if (rf & 2) {
|
|
@@ -564,7 +564,7 @@ __decorate([
|
|
|
564
564
|
], CommonSettingsComponent.prototype, "onWindowBreakpointChanged", null);
|
|
565
565
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CommonSettingsComponent, [{
|
|
566
566
|
type: Component,
|
|
567
|
-
args: [{ selector: 'sme-common-settings', template: "<sme-settings [settingsTitle]=\"hackToolHeader ? '' : settingsTitle\" [class.sme-settings-external-header]=\"externalHeader\">\r\n <sme-settings-navigation class=\"sme-position-stretch-v-phone-up sme-position-stretch-h\" style=\"min-width: 160px\">\r\n <header class=\"sme-layout-tool-header\" *ngIf=\"hackToolHeader\">\r\n <h2 class=\"sme-position-flex-none sme-font-h3\" [attr.aria-label]=\"settingsTitle\">{{settingsTitle}}</h2>\r\n </header>\r\n <div role=\"region\" [attr.aria-label]=\"settingsTitle\" class=\"sme-position-stretch sme-arrange-stack-v\">\r\n <div class=\"sme-position-flex-none sme-focus-zone\">\r\n <form class=\"sme-margin-squish-v-sm\">\r\n <sme-form-field #searchTextBox type=\"search\" name=\"toolsListSearch\" [(ngModel)]=\"filter\" [placeholder]=\"searchBoxPlaceholder\"\r\n [autofocus]=\"true\" [count]=\"filteredSettings ? filteredSettings.length : 0\"\r\n (search)=\"onSearch()\"></sme-form-field>\r\n </form>\r\n </div>\r\n <nav role=\"tablist\" class=\"sme-arrange-stack-v sme-focus-zone\"\r\n [ngClass]=\"scrollableSecondaryNav ? 'sme-position-flex-auto sme-arrange-overflow-auto-y' : ''\">\r\n <ul class=\"sme-position-flex-auto sme-arrange-stack-v sme-arrange-overflow-hide-x sme-arrange-overflow-auto-y\"\r\n role=\"presentation\">\r\n <li *ngFor=\"let group of groupTools; let j = index\" class=\"sme-margin-inset-none\" role=\"presentation\">\r\n <
|
|
567
|
+
args: [{ selector: 'sme-common-settings', template: "<sme-settings [settingsTitle]=\"hackToolHeader ? '' : settingsTitle\" [class.sme-settings-external-header]=\"externalHeader\">\r\n <sme-settings-navigation class=\"sme-position-stretch-v-phone-up sme-position-stretch-h\" style=\"min-width: 160px\">\r\n <header class=\"sme-layout-tool-header\" *ngIf=\"hackToolHeader\">\r\n <h2 class=\"sme-position-flex-none sme-font-h3\" [attr.aria-label]=\"settingsTitle\">{{settingsTitle}}</h2>\r\n </header>\r\n <div role=\"region\" [attr.aria-label]=\"settingsTitle\" class=\"sme-position-stretch sme-arrange-stack-v\">\r\n <div class=\"sme-position-flex-none sme-focus-zone\">\r\n <form class=\"sme-margin-squish-v-sm\">\r\n <sme-form-field #searchTextBox type=\"search\" name=\"toolsListSearch\" [(ngModel)]=\"filter\" [placeholder]=\"searchBoxPlaceholder\"\r\n [autofocus]=\"true\" [count]=\"filteredSettings ? filteredSettings.length : 0\"\r\n (search)=\"onSearch()\"></sme-form-field>\r\n </form>\r\n </div>\r\n <nav role=\"tablist\" class=\"sme-arrange-stack-v sme-focus-zone\"\r\n [ngClass]=\"scrollableSecondaryNav ? 'sme-position-flex-auto sme-arrange-overflow-auto-y' : ''\">\r\n <ul class=\"sme-position-flex-auto sme-arrange-stack-v sme-arrange-overflow-hide-x sme-arrange-overflow-auto-y\"\r\n role=\"presentation\">\r\n <li *ngFor=\"let group of groupTools; let j = index\" class=\"sme-margin-inset-none\" role=\"presentation\">\r\n <div [id]=\"idBag.group + '-' + j\" class=\"sme-font-h4 sme-font-h4-settings\" *ngIf=\"group.group!==defaultGroup\"\r\n [title]=\"group.group\">{{ group.group }}</div>\r\n <a *ngFor=\"let setting of group.options; let i = index\"\r\n class=\"sme-padding-squish-v-sm sme-arrange-stack-h sme-arrange-stack-centered-v sme-scheme-nav-item\" role=\"tab\"\r\n href=\"setting.routeParams.extras && setting.routeParams.extras.replaceUrl\"\r\n [attr.aria-selected]=\"selectedSetting === setting\"\r\n [routerLink]=\"setting.routeParams.commands\" routerLinkActive=\"sme-active\"\r\n (smeRouterLinkActivated)=\"onSmeRouterLinkActivated(setting)\"\r\n [preserveFragment]=\"setting.routeParams.extras && setting.routeParams.extras.preserveFragment\"\r\n [skipLocationChange]=\"setting.routeParams.extras && setting.routeParams.extras.skipLocationChange\"\r\n [replaceUrl]=\"setting.routeParams.extras && setting.routeParams.extras.replaceUrl\"\r\n [queryParams]=\"setting.routeParams.extras && setting.routeParams.extras.queryParams\"\r\n [title]=\"setting.label\" attr.aria-labelledby=\"{{idBag.option}}-{{j}}-{{i}} {{idBag.group}}-{{j}}\">\r\n <div class=\"sme-margin-right-xs sme-layout-flex sme-position-flex-align-center\">\r\n <div *ngIf=\"setting.smeIconClassName\" class=\"sme-icon\" [ngClass]=\"getSmeIconClass(setting)\"></div>\r\n <div *ngIf=\"setting.urlIcon\" class=\"sme-url-icon\" [style.background-image]=\"setting.urlIcon\"></div>\r\n <div *ngIf=\"!setting.urlIcon && !setting.smeIconClassName\" class=\"sme-url-icon\" [style.background-image]=\"defaultIcon\"></div>\r\n </div>\r\n <div class=\"sme-position-flex-auto\">\r\n <span [id]=\"idBag.option + '-' + j + '-' + i\" [class.sme-dirty]=\"!!(setting.form && setting.form.dirty)\"\r\n [class.sme-pristine]=\"!(setting.form && setting.form.dirty)\" class=\"sme-font-label sme-layout-flex sme-position-flex-align-center\">{{ setting.label }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n <div *ngIf=\"hackShowOverlay\">\r\n <div *ngFor=\"let layer of layers\"\r\n class=\"sme-layout-absolute sme-position-inset-none sme-layer-above sme-scheme-backdrop-opaque\"\r\n (click)=\"onOverlayClick(layer)\"></div>\r\n </div>\r\n </sme-settings-navigation>\r\n <sme-settings-header *ngIf=\"!!showHeader\">\r\n <h3 id=\"sme-shell-setting-selectedTitle\" [attr.aria-label]=\"selectedSetting.label\" *ngIf=\"!!selectedSetting\">\r\n {{ selectedSetting.label }}</h3>\r\n </sme-settings-header>\r\n <sme-settings-content>\r\n <router-outlet></router-outlet>\r\n </sme-settings-content>\r\n <sme-settings-footer>\r\n <ng-content></ng-content>\r\n </sme-settings-footer>\r\n</sme-settings>\r\n" }]
|
|
568
568
|
}], function () { return [{ type: i0.Injector }, { type: i1.Router }, { type: i2.SettingsFormService }, { type: i0.IterableDiffers }, { type: i3.AppContextService }, { type: i4.RpcShellService }, { type: undefined, decorators: [{
|
|
569
569
|
type: Optional
|
|
570
570
|
}, {
|
|
@@ -595,4 +595,4 @@ __decorate([
|
|
|
595
595
|
type: ViewChild,
|
|
596
596
|
args: [SettingsComponent]
|
|
597
597
|
}], deferredOnLayoutChanged: [], onLayoutChanged: [], onWindowBreakpointChanged: [] }); })();
|
|
598
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL3NldHRpbmdzL2NvbW1vbi1zZXR0aW5ncy9jb21tb24tc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2V0dGluZ3MvY29tbW9uLXNldHRpbmdzL2NvbW1vbi1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFFTCxlQUFlLEVBSWYsUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBR0gsTUFBTSxFQUVULE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0VBQStFLENBQUM7QUFHdEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRWhGLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxv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QURuQixTQUFTO21CQUFDLGVBQWU7WUFJbkIsYUFBYTtrQkFEbkIsS0FBSztZQUlDLFFBQVE7a0JBRGQsS0FBSztZQUlDLFVBQVU7a0JBRGhCLEtBQUs7WUFJQyxlQUFlO2tCQURyQixLQUFLO1lBSUMsY0FBYztrQkFEcEIsS0FBSztZQU9DLGtCQUFrQjtrQkFEeEIsS0FBSztZQUlDLFNBQVM7a0JBRGYsS0FBSztZQVVDLHNCQUFzQjtrQkFENUIsS0FBSztZQUlDLGlCQUFpQjtrQkFEdkIsU0FBUzttQkFBQyxpQkFBaUI7WUFxRnBCLHVCQUF1QixNQUt2QixlQUFlLE1BS2YseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0NoZWNrZWQsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBEb0NoZWNrLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIEl0ZXJhYmxlRGlmZmVyLFxyXG4gICAgSXRlcmFibGVEaWZmZXJzLFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICAgIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBOYXZpZ2F0aW9uRXh0cmFzLFxyXG4gICAgUm91dGVyLFxyXG4gICAgUm91dGVyU3RhdGVTbmFwc2hvdFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IERlYm91bmNlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9iYXNlL2RlY29yYXRvcnMvZGVib3VuY2UuZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IFlpZWxkIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9iYXNlL2RlY29yYXRvcnMveWllbGQuZGVjb3JhdG9yJztcclxuaW1wb3J0IHsgTmV0IH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL25ldCc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50TW9kdWxlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9tYW5pZmVzdC9lbnZpcm9ubWVudC1tb2R1bGVzJztcclxuaW1wb3J0IHsgUnBjT3ZlcmxheUNsb3NlQ2xpZW50IH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9ycGMvb3ZlcmxheS9ycGMtb3ZlcmxheS1jbG9zZS1jbGllbnQnO1xyXG5pbXBvcnQgeyBScGNEaWFsb2dPdmVybGF5RGF0YSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcnBjL292ZXJsYXkvcnBjLW92ZXJsYXktbW9kZWwnO1xyXG5pbXBvcnQgeyBEZWZlcnJlZERhdGEgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL3JwYy9ycGMnO1xyXG5pbXBvcnQgeyBScGNUeXBlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9ycGMvcnBjLWJhc2UnO1xyXG5pbXBvcnQgeyBScGNPdXRib3VuZCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcnBjL3JwYy1vdXRib3VuZCc7XHJcbmltcG9ydCB7IEVNUFRZLCBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFwcENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9hcHAtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUnBjU2hlbGxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9ycGMtc2hlbGwuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IFNlYXJjaEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Zvcm0nO1xyXG5pbXBvcnQgeyBDYW5Db21wb25lbnREZWFjdGl2YXRlIH0gZnJvbSAnLi4vc2V0dGluZ3MtY2FuLWRlYWN0aXZhdGUtZ3VhcmQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNldHRpbmdzRm9ybVNlcnZpY2UgfSBmcm9tICcuLi9zZXR0aW5ncy1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4uL3NldHRpbmdzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vblNldHRpbmdzTmF2aWdhdGlvbkl0ZW0sIENvbW1vblNldHRpbmdzTmF2aWdhdGlvbkl0ZW1XaXRoRm9ybSB9IGZyb20gJy4vY29tbW9uLXNldHRpbmdzLW5hdmlnYXRpb24taXRlbSc7XHJcbmltcG9ydCB7IFNldHRpbmdzUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIgfSBmcm9tICcuL3NldHRpbmdzLXJlc3BvbnNpdmUtd2luZG93LW1hbmFnZXInO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHcm91cFRvb2xzTWVudSB7XHJcbiAgICBncm91cDogc3RyaW5nO1xyXG4gICAgb3B0aW9uczogQ29tbW9uU2V0dGluZ3NOYXZpZ2F0aW9uSXRlbVdpdGhGb3JtW107XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb250YWluZXIgYXJvdW5kIHNldHRpbmdzIGNvbXBvbmVudCwgaGFuZGxlcyBjb21tb24gc2V0dGluZ3MgYmVoYXZpb3IuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLWNvbW1vbi1zZXR0aW5ncycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tbW9uLXNldHRpbmdzLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uU2V0dGluZ3NDb21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIERvQ2hlY2ssIEFmdGVyVmlld0NoZWNrZWQge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNvdXJjZSBuYW1lIHRvIHVzZSBmb3IgbG9nZ2luZ1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGxvZ1NvdXJjZU5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuICdDb21tb25TZXR0aW5nc0NvbXBvbmVudCc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBubyBoZWFkZXIgaXMgYmVpbmcgdXNlZCBpbnRlcm5hbGx5LCB0aGUgY29udHJvbCB3aWxsIGRlcGVuZCBvbiBleHRlcm5hbCBoZWFkZXIgYmVpbmcgY3VzdG9taXplZFxyXG4gICAgICogRm9yIGluc3RhbmNlLCBhIGJyZWFkY3J1bWIgaGVhZGVyIGNhbiBiZSB1c2VkLiBBbmQgaW4gdGhpcyBjYXNlLCBubyBleHRyYSBzY3JvbGwgYmFyIGNhbiBiZSByZW5kZXJlZCBvbiBwaG9uZSBkb3duLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZXh0ZXJuYWxIZWFkZXIgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBjb21iaW5lZEZvcm06IEZvcm1Hcm91cDtcclxuICAgIHB1YmxpYyByZWFkb25seSBkZWZhdWx0R3JvdXAgPSAnZGVmYXVsdCc7XHJcbiAgICBwdWJsaWMgZ3JvdXBUb29sczogR3JvdXBUb29sc01lbnVbXTtcclxuICAgIHB1YmxpYyBsYXllcnM6IFJwY0RpYWxvZ092ZXJsYXlEYXRhW10gPSBbXTtcclxuICAgIHB1YmxpYyBzZWxlY3RlZFNldHRpbmc6IENvbW1vblNldHRpbmdzTmF2aWdhdGlvbkl0ZW07XHJcbiAgICBwdWJsaWMgZGVmYXVsdEljb246IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlYXJjaCBib3ggZmlsdGVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmlsdGVyID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZWFyY2ggYm94IHBsYWNlaG9sZGVyLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlYXJjaEJveFBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZmlsdGVyZWRTZXR0aW5nczogQ29tbW9uU2V0dGluZ3NOYXZpZ2F0aW9uSXRlbVtdID0gW107XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoVGV4dEJveCcpXHJcbiAgICBwdWJsaWMgc2VhcmNoVGV4dEJveDogU2VhcmNoRm9ybUZpZWxkQ29tcG9uZW50O1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0dGluZ3NUaXRsZTogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0dGluZ3M6IENvbW1vblNldHRpbmdzTmF2aWdhdGlvbkl0ZW1bXTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNob3dIZWFkZXIgPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaGFja1Nob3dPdmVybGF5ID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBoYWNrVG9vbEhlYWRlciA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgY29ubmVjdGlvbiBzZXR0aW5ncyBwYWdlLCB0aGUgY29udGVudHMgYXJlIGFsbCBpZnJhbWUsIHNwZWNpYWwgbG9naWMgdG8gZ2V0IHJpZCBvZiB0aGUgZXh0cmEgc2Nyb2xsIGJhciBmb3IgaWZyYW1lLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNvbm5lY3Rpb25TZXR0aW5ncyA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYmFja1JvdXRlOiB7IGNvbW1hbmRzOiBhbnlbXSwgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgdGFiIGxpc3Qgc2hvd2luZyB0aGUgU2V0dGluZ3MgaXRlbXMgaXMgc2Nyb2xsYWJsZSBvciBub3RcclxuICAgICAqIERlZmF1bHQgdG8gdHJ1ZS4gQWxsb3dpbmcgc2VwYXJhdGUgc2Nyb2xsIGJhciBmb3IgdGhlIG5hdmJhciBhbmQgdGhlIHNlbGVjdGVkIFNldHRpbmdzLlxyXG4gICAgICogU2V0IHRvIGZhbHNlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFuZCB1c2UgcHJldmlvdXMgYmVoYXZpb3Igd2hlcmUgdGhlcmUgaXNcclxuICAgICAqIG9ubHkgMSBzaW5nbGUgc2Nyb2xsIGJhciBmb3IgYm90aCBuYXZiYXIgYW5kIGNvbnRlbnQgb2YgdGhlIHNlbGVjdGVkIFNldHRpbmdzIGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2Nyb2xsYWJsZVNlY29uZGFyeU5hdiA9IHRydWU7XHJcblxyXG4gICAgQFZpZXdDaGlsZChTZXR0aW5nc0NvbXBvbmVudClcclxuICAgIHB1YmxpYyBzZXR0aW5nc0NvbXBvbmVudDogU2V0dGluZ3NDb21wb25lbnQ7XHJcblxyXG4gICAgcHJpdmF0ZSBsYXRlc3RGb3JtOiBGb3JtR3JvdXA7XHJcbiAgICBwcml2YXRlIGxhdGVzdFByaXN0aW5lRm9ybVZhbHVlOiBhbnk7XHJcbiAgICBwcml2YXRlIGxhdGVzdEZvcm1VcGRhdGVWYWx1ZUluQ29tcG9uZW50OiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBzZXR0aW5nc0RpZmZlcjogSXRlcmFibGVEaWZmZXI8YW55PjtcclxuICAgIHByaXZhdGUgYXV0b2ZvY3VzID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgc2V0dGluZ3NSZXNwb25zaXZlV2luZG93TWFuYWdlcjogU2V0dGluZ3NSZXNwb25zaXZlV2luZG93TWFuYWdlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgc2V0dGluZ3NGb3JtczogU2V0dGluZ3NGb3JtU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGl0ZXJhYmxlRGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxyXG4gICAgICAgIHByaXZhdGUgYXBwQ29udGV4dDogQXBwQ29udGV4dFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBycGNTaGVsbFNlcnZpY2U6IFJwY1NoZWxsU2VydmljZSxcclxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFNNRV9MQVlPVVRfUFJPVklERVIpIGxheW91dDogTGF5b3V0XHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICAgICAgdGhpcy5jb21iaW5lZEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgICB0aGlzLnNlYXJjaEJveFBsYWNlaG9sZGVyID0gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLnNlYXJjaFBsYWNlSG9sZGVyO1xyXG5cclxuICAgICAgICBpZiAobGF5b3V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NSZXNwb25zaXZlV2luZG93TWFuYWdlciA9IG5ldyBTZXR0aW5nc1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyKGxheW91dCk7XHJcbiAgICAgICAgICAgIC8vIG9uIHBhcmVudCBsYXlvdXQgY2hhbmdlcywgcmUtZW1pdCB0aGUgbGF5b3V0IGNoYW5nZSB0byBvdXIgZXZlbnRcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2gobGF5b3V0LmxheW91dENoYW5nZWQuc3Vic2NyaWJlKCgoKSA9PiB0aGlzLm9uTGF5b3V0Q2hhbmdlZCgpKSkpO1xyXG4gICAgICAgICAgICAvLyBvbiB3aW5kb3cgYnJlYWsgcG9pbnQgY2hhbmdlcywgZW1pdCB0aGUgZXZlbnQgYWJvdXQgY3JpdGljYWwgY2xhc3NlcyBhbmQgc3R5bGluZyB1cGRhdGVzIHNpZ25hbC5cclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2gobGF5b3V0LndpbmRvd0JyZWFrcG9pbnRDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uV2luZG93QnJlYWtwb2ludENoYW5nZWQoKSkpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kZWZlcnJlZE9uTGF5b3V0Q2hhbmdlZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5mb3JtQWRkZWQoKS5zdWJzY3JpYmUoKGZvcm1BZGRlZERhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIHRvIGF2b2lkIGR1cGxpY2F0ZXMgd2UgZmlyc3QgcmVtb3ZlIHRoZSBmb3JtIGlmIGl0IGV4aXN0c1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXRlc3RGb3JtID0gZm9ybUFkZGVkRGF0YS5mb3JtR3JvdXA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhdGVzdFByaXN0aW5lRm9ybVZhbHVlID0gdGhpcy5nZXRSYXdWYWx1ZVJlY3Vyc2l2ZShmb3JtQWRkZWREYXRhLmZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhdGVzdEZvcm1VcGRhdGVWYWx1ZUluQ29tcG9uZW50ID0gZm9ybUFkZGVkRGF0YS51cGRhdGVWYWx1ZUluQ29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWNhbGN1bGF0ZUFjdGl2ZVBhbmVsKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0RpZmZlciA9IHRoaXMuaXRlcmFibGVEaWZmZXJzLmZpbmQodGhpcy5zZXR0aW5ncykuY3JlYXRlKG51bGwpO1xyXG4gICAgICAgIHRoaXMucmVjYWxjdWxhdGVBY3RpdmVQYW5lbCgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5oYWNrU2hvd092ZXJsYXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJwY1NoZWxsU2VydmljZS5vdmVybGF5T3BlblN1YmplY3Quc3Vic2NyaWJlKChkZWZlcnJlZERhdGE6IERlZmVycmVkRGF0YTxScGNEaWFsb2dPdmVybGF5RGF0YSwgdm9pZD4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBvdmVybGF5IHRvb2xzIHdpdGggb25lIG1vcmUgbGF5ZXIgb3IgcmVtb3ZlIG9uZSBmcm9tIHRvcFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWZlcnJlZERhdGEuZGF0YS5vdmVybGF5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGF5ZXJzLnB1c2goZGVmZXJyZWREYXRhLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5sYXllcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheWVycy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JwYyBPdmVybGF5Q2xvc2U6IGNsb3NlIHJlcXVlc3QgaXMgY2FsbGVkIHdoaWxlIGxheWVyIGlzIG5vIGxvbmdlciBhdmFpbGFibGUnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWREYXRhLmRlZmVycmVkLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc2hvd0hlYWRlciAmJiAhdGhpcy5oYWNrVG9vbEhlYWRlcikge1xyXG4gICAgICAgICAgICB0aGlzLmV4dGVybmFsSGVhZGVyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0SWNvbiA9IEVudmlyb25tZW50TW9kdWxlLmdldEZvcm1hdHRlZEljb25SZWZVcmwoJy9hc3NldHMvaWNvbnMvZGVmYXVsdC5zdmc/dj0xJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXMpIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBpZiAoY2hhbmdlcy5zZXR0aW5ncykge1xyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzRGlmZmVyID0gdGhpcy5pdGVyYWJsZURpZmZlcnMuZmluZCh0aGlzLnNldHRpbmdzKS5jcmVhdGUobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3JlYXRlTWVudSgpO1xyXG4gICAgICAgIHRoaXMucmVjYWxjdWxhdGVBY3RpdmVQYW5lbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGRlZmVycmVkIGxheW91dCBjaGFuZ2VkIGhhbmRsZXIuXHJcbiAgICAgKi9cclxuICAgIEBEZWJvdW5jZSgpXHJcbiAgICBwcml2YXRlIGRlZmVycmVkT25MYXlvdXRDaGFuZ2VkKCkge1xyXG4gICAgICAgIHRoaXMub25MYXlvdXRDaGFuZ2VkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQFlpZWxkKClcclxuICAgIHByaXZhdGUgb25MYXlvdXRDaGFuZ2VkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NSZXNwb25zaXZlV2luZG93TWFuYWdlci5zZXRJZnJhbWVIZWlnaHQodGhpcy5jb25uZWN0aW9uU2V0dGluZ3MsIHRoaXMuaG9zdEVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIEBZaWVsZCgpXHJcbiAgICBwcml2YXRlIG9uV2luZG93QnJlYWtwb2ludENoYW5nZWQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhvc3RFbGVtZW50IHx8ICF0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLm9uV2luZG93U2l6ZUNoYW5nZWRDb21tb25TZXR0aW5ncyh0aGlzLmNvbm5lY3Rpb25TZXR0aW5ncywgdGhpcy5ob3N0RWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nRG9DaGVjaygpIHtcclxuICAgICAgICBzdXBlci5uZ0RvQ2hlY2soKTtcclxuICAgICAgICBpZiAodGhpcy5zZXR0aW5nc0RpZmZlcikge1xyXG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5zZXR0aW5nc0RpZmZlci5kaWZmKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICBpZiAoY2hhbmdlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVNZW51KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5hdXRvZm9jdXMpIHtcclxuICAgICAgICAgICAgY29uc3QgZm9jdXNFbGVtZW50cyA9IHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbcm9sZT1cInRhYlwiXScpO1xyXG4gICAgICAgICAgICBpZiAoZm9jdXNFbGVtZW50cyAmJiBmb2N1c0VsZW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgZm9jdXNFbGVtZW50c1swXS5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvZm9jdXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2V0dGluZyBUaXRsZSBoZWFkZXIgaXMgbWFuYWdlZCBieSBjaGlsZCBjb21wb25lbnQgdGhpcy5zZXR0aW5nc0NvbXBvbmVudCxcclxuICAgICAgICAvLyBhZnRlciBjdXJyZW50IHZpZXcgYW5kIGNoaWxkIHZpZXcgaGFzIGJlZW4gcmVuZGVyZWQsIHBhc3MgYWxvbmcgdGhlIHNlbGVjdGVkU2V0dGluZ1xyXG4gICAgICAgIC8vIHN0cmluZyBpZiBpdCBleGlzdHMgc28gY2hpbGQgdmlldyB3aWxsIHJlbmRlciB0aGUgdGl0bGVcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFNldHRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5vblNtZVJvdXRlckxpbmtBY3RpdmF0ZWQodGhpcy5zZWxlY3RlZFNldHRpbmcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY3JlYXRlTWVudSgpIHtcclxuICAgICAgICAvLyBCZWZvcmUgY3JlYXRpbmcgdGhlIFNldHRpbmdzIG1lbnUsIGZpbHRlciB0aGUgU2V0dGluZ3MgbWVudSB0byBvbmx5IGRpc3BsYXlcclxuICAgICAgICAvLyBpdGVtcyB0aGF0IG1hdGNoZXMgdGhlIGZpbHRlclxyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRTZXR0aW5ncyA9IHRoaXMuZmlsdGVyU2V0dGluZygpO1xyXG5cclxuICAgICAgICBjb25zdCBncm91cFRvb2xzOiBHcm91cFRvb2xzTWVudVtdID0gW107XHJcbiAgICAgICAgZ3JvdXBUb29sc1snZGVmYXVsdCddID0geyBncm91cDogJ2RlZmF1bHQnLCBvcHRpb25zOiBbXSB9O1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRTZXR0aW5ncy5mb3JFYWNoKChzZXR0aW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghISFzZXR0aW5nLmdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICBncm91cFRvb2xzWydkZWZhdWx0J10ub3B0aW9ucy5wdXNoKHNldHRpbmcpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEhIWdyb3VwVG9vbHNbc2V0dGluZy5ncm91cF0pIHtcclxuICAgICAgICAgICAgICAgICAgICBncm91cFRvb2xzW3NldHRpbmcuZ3JvdXBdID0geyBncm91cDogc2V0dGluZy5ncm91cCwgdGl0bGU6IHNldHRpbmcuZ3JvdXBUaXRsZSwgb3B0aW9uczogW10gfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGdyb3VwVG9vbHNbc2V0dGluZy5ncm91cF0ub3B0aW9ucy5wdXNoKHNldHRpbmcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5ncm91cFRvb2xzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIGdyb3VwVG9vbHMpIHtcclxuICAgICAgICAgICAgaWYgKHByb3ApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBUb29scy5wdXNoKGdyb3VwVG9vbHNbcHJvcF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWNhbGN1bGF0ZUFjdGl2ZVBhbmVsKCkge1xyXG4gICAgICAgIGNvbnN0IHNldHRpbmcgPSA8Q29tbW9uU2V0dGluZ3NOYXZpZ2F0aW9uSXRlbVdpdGhGb3JtPnRoaXMuc2VsZWN0ZWRTZXR0aW5nO1xyXG4gICAgICAgIGlmIChNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKHNldHRpbmcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5nLmZvcm0gJiYgc2V0dGluZy5mb3JtLmRpcnR5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZ2V0UmF3VmFsdWVSZWN1cnNpdmUoc2V0dGluZy5mb3JtKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzZXR0aW5nLnVwZGF0ZVZhbHVlSW5Db21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5uZXdGb3JtVmFsdWUoc2V0dGluZy5mb3JtLCBmb3JtVmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXRlc3RGb3JtLnNldFZhbHVlKGZvcm1WYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMubGF0ZXN0Rm9ybS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0Zvcm1zLnJlbW92ZUZvcm0oc2V0dGluZy5mb3JtKTtcclxuICAgICAgICBzZXR0aW5nLmZvcm0gPSB0aGlzLmxhdGVzdEZvcm07XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5nLmZvcm0pIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tYmluZWRGb3JtLmNvbnRyb2xzW3NldHRpbmcubGFiZWxdKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbWJpbmVkRm9ybS5zZXRDb250cm9sKHNldHRpbmcubGFiZWwsIHNldHRpbmcuZm9ybSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbWJpbmVkRm9ybS5hZGRDb250cm9sKHNldHRpbmcubGFiZWwsIHNldHRpbmcuZm9ybSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldHRpbmcudXBkYXRlVmFsdWVJbkNvbXBvbmVudCA9IHRoaXMubGF0ZXN0Rm9ybVVwZGF0ZVZhbHVlSW5Db21wb25lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRpc2NhcmRBbGxDaGlsZEZvcm1zKCkge1xyXG4gICAgICAgIC8vIEZvciB0aGUgY3VycmVudCBhY3RpdmUgc2V0dGluZywgd2UgbmVlZCB0byByZXNldCB0aGUgZm9ybSB0byBpdHNcclxuICAgICAgICAvLyBvcmlnaW5hbCBwcmlzdGluZSBmb3JtIHdoZW4gZGlzY2FyZGluZyBjaGFuZ2VzXHJcbiAgICAgICAgY29uc3QgYWN0aXZlU2V0dGluZyA9IHRoaXMuc2VsZWN0ZWRTZXR0aW5nO1xyXG4gICAgICAgIGNvbnN0IHNldHRpbmdXaXRoRm9ybSA9IDxDb21tb25TZXR0aW5nc05hdmlnYXRpb25JdGVtV2l0aEZvcm0+YWN0aXZlU2V0dGluZztcclxuICAgICAgICBpZiAoc2V0dGluZ1dpdGhGb3JtLmZvcm0pIHtcclxuICAgICAgICAgICAgc2V0dGluZ1dpdGhGb3JtLmZvcm0ucmVzZXQodGhpcy5sYXRlc3RQcmlzdGluZUZvcm1WYWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmdzLmZvckVhY2goKG90aGVyU2V0dGluZykgPT4ge1xyXG4gICAgICAgICAgICBpZiAob3RoZXJTZXR0aW5nICE9PSBhY3RpdmVTZXR0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvdGhlcnNldHRpbmdXaXRoRm9ybSA9IDxDb21tb25TZXR0aW5nc05hdmlnYXRpb25JdGVtV2l0aEZvcm0+b3RoZXJTZXR0aW5nO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nc0Zvcm1zLnJlbW92ZUZvcm0ob3RoZXJzZXR0aW5nV2l0aEZvcm0uZm9ybSk7XHJcbiAgICAgICAgICAgICAgICBvdGhlcnNldHRpbmdXaXRoRm9ybS5mb3JtID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbWJpbmVkRm9ybS5jb250cm9sc1tvdGhlcnNldHRpbmdXaXRoRm9ybS5sYWJlbF0pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbWJpbmVkRm9ybS5yZW1vdmVDb250cm9sKG90aGVyc2V0dGluZ1dpdGhGb3JtLmxhYmVsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhY2NlcHRBbGxDaGlsZEZvcm1zVmFsdWUoKSB7XHJcbiAgICAgICAgY29uc3QgYWN0aXZlU2V0dGluZyA9IHRoaXMuc2VsZWN0ZWRTZXR0aW5nO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZm9yRWFjaCgoc2V0dGluZykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzZXR0aW5nV2l0aEZvcm0gPSA8Q29tbW9uU2V0dGluZ3NOYXZpZ2F0aW9uSXRlbVdpdGhGb3JtPnNldHRpbmc7XHJcbiAgICAgICAgICAgIGlmIChzZXR0aW5nV2l0aEZvcm0uZm9ybSkge1xyXG4gICAgICAgICAgICAgICAgc2V0dGluZ1dpdGhGb3JtLmZvcm0ucmVzZXQodGhpcy5nZXRSYXdWYWx1ZVJlY3Vyc2l2ZShzZXR0aW5nV2l0aEZvcm0uZm9ybSkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVNldHRpbmcgPT09IHNldHRpbmdXaXRoRm9ybSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGF0ZXN0UHJpc3RpbmVGb3JtVmFsdWUgPSB0aGlzLmdldFJhd1ZhbHVlUmVjdXJzaXZlKHNldHRpbmdXaXRoRm9ybS5mb3JtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTbWVJY29uQ2xhc3Moc2V0dGluZzogQ29tbW9uU2V0dGluZ3NOYXZpZ2F0aW9uSXRlbSkge1xyXG4gICAgICAgIGNvbnN0IG5nQ2xhc3NQYXJhbWV0ZXIgPSB7fTtcclxuICAgICAgICBpZiAoc2V0dGluZy5zbWVJY29uQ2xhc3NOYW1lKSB7XHJcbiAgICAgICAgICAgIG5nQ2xhc3NQYXJhbWV0ZXJbc2V0dGluZy5zbWVJY29uQ2xhc3NOYW1lXSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZ0NsYXNzUGFyYW1ldGVyO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjYW5EZWFjdGl2YXRlKFxyXG4gICAgICAgIGNvbXBvbmVudDogQ2FuQ29tcG9uZW50RGVhY3RpdmF0ZSxcclxuICAgICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3NDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NDb21wb25lbnQuY2FuRGVhY3RpdmF0ZShjb21wb25lbnQsIHJvdXRlLCBzdGF0ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGluaXRpYWwgaG9zdCBjbGFzc2VzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXRJbml0aWFsSG9zdENsYXNzZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldEluaXRpYWxIb3N0Q2xhc3NlcygpLmNvbmNhdChbXHJcbiAgICAgICAgICAgICdzbWUtY29tbW9uLXNldHRpbmdzJ1xyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyB0aGUgaWRCYWcgdXNlZCBieSB0aGlzIGNvbXBvbmVudCB0byBzdG9yZSB1bmlxdWUgZWxlbWVudCBpZHMuXHJcbiAgICAgKiBpZCB2YWx1ZXMgd2lsbCBiZSBhc3NpZ25lZCBiZSB0aGUgQHNlZSBCYXNlQ29tcG9uZW50IHN1cGVyIGNsYXNzLlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY3JlYXRlSWRCYWcoKTogTXNmdFNtZS5TdHJpbmdNYXA8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZ3JvdXA6ICcnLFxyXG4gICAgICAgICAgICBvcHRpb246ICcnXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25PdmVybGF5Q2xpY2sobGF5ZXI6IFJwY0RpYWxvZ092ZXJsYXlEYXRhKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbGF5ZXJScGMgPSB0aGlzLmFwcENvbnRleHQucnBjLnJwY01hbmFnZXIucnBjQ2hhbm5lbC5nZXRScGM8UnBjT3V0Ym91bmQ+KFxyXG4gICAgICAgICAgICBsYXllci5zb3VyY2VOYW1lLFxyXG4gICAgICAgICAgICBsYXllci5zb3VyY2VTdWJOYW1lLFxyXG4gICAgICAgICAgICBScGNUeXBlLk91dGJvdW5kXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmcm9tKFJwY092ZXJsYXlDbG9zZUNsaWVudC5vdmVybGF5Q2xvc2UodGhpcy5hcHBDb250ZXh0LnJwYywgeyBvdmVybGF5OiBmYWxzZSwgZGlhbG9nSWQ6IGxheWVyLmRpYWxvZ0lkIH0sIGxheWVyUnBjKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiByZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lm92ZXJsYXlDbG9zZWQgJiYgdGhpcy5sYXllcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheWVycy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub3RpZmljYXRpb24gPSB0aGlzLmFwcENvbnRleHQubm90aWZpY2F0aW9uLmNyZWF0ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24uc2hvd0Vycm9yKHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5PdmVybGF5LmNsb3NlRXJyb3JUaXRsZSwgTmV0LmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxheWVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGF5ZXJzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IGNvbnRyb2wgYW5kIGFsbCBpdHMgY2hpbGRyZW4gcmVjdXJzaXZlbGx5LFxyXG4gICAgICogaW5jbHVkaW5nIGRpc2FibGVkIGNvbnRyb2xzLlxyXG4gICAgICpcclxuICAgICAqIFdvcmthcm91bmQgZm9yIG1pc3NpbmcgZnVuY3Rpb25hbGl0eSBhZGRlZCBpbiBsYXRlciB2ZXJzaW9ucyBvZiBhbmd1bGFyXHJcbiAgICAgKiBDdXJyZW50bHkgZ2V0UmF3VmFsdWUgb25seSByZXR1cm5zIHRoZSB2YWx1ZSBvZiBodGUgY3VycmVudCBjb250cm9sIGRpc2FibGVkXHJcbiAgICAgKiBjaGlsZHJlbiBidXQgb25seSBlbmFibGVkIGNvbnRyb2xzIG9mIG90aGVyIGRlc2NlbmRhbnRzOlxyXG4gICAgICogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9jb21taXQvMWVjZTczNjZjOGI2N2YzODdmYmUxM2Y4ZDEyOGMxOWY0YzUwZGQxOVxyXG4gICAgICpcclxuICAgICAqIE9uY2Ugd2UgdXBncmFkZSBhbmd1bGFyIHZlcnNpb24gd2UgY2FuIHJlbW92ZSB0aGlzIGNvZGUuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZvcm1Db250cm9sIFRoZSBmb3JtIGNvbnRyb2wgdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0UmF3VmFsdWVSZWN1cnNpdmUoZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGFueSB7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0ge307XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZvcm1Db250cm9sLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZVtrZXldID0gdGhpcy5nZXRSYXdWYWx1ZVJlY3Vyc2l2ZShmb3JtQ29udHJvbC5jb250cm9sc1trZXldKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZvcm1Db250cm9sLmNvbnRyb2xzLm1hcCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSYXdWYWx1ZVJlY3Vyc2l2ZShjb250cm9sKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgdGhpcy5zZWxlY3RlZFNldHRpbmcgdG8gdGhlIG5ld2x5IHNlbGVjdGVkIFNldHRpbmdzIGl0ZW0gd2hlbiB1c2VyIG5hdmlnYXRlIHRvIGEgbmV3IFNldHRpbmdzIGl0ZW1cclxuICAgICAqIEFsc28gY2FsbCB0aGUgY2hpbGQgY29tcG9uZW50IHRoaXMuc2V0dGluZ3NDb21wb25lbnQgdG8gdXBkYXRlIHRoZSBzZXR0aW5nc1RpdGxlIHRvIHJlZmxlY3QgdGhlIHRpdGxlXHJcbiAgICAgKiBvZiB0aGUgbmV3bHkgc2VsZWN0ZWQgU2V0dGluZ3MgaXRlbVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBuZXdTZXR0aW5nIFRoZSBuZXdseSBzZWxlY3RlZCBTZXR0aW5ncyBpdGVtXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvblNtZVJvdXRlckxpbmtBY3RpdmF0ZWQobmV3U2V0dGluZzogQ29tbW9uU2V0dGluZ3NOYXZpZ2F0aW9uSXRlbSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZXR0aW5nID0gbmV3U2V0dGluZztcclxuICAgICAgICBpZiAodGhpcy5zZXR0aW5nc0NvbXBvbmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzQ29tcG9uZW50LnVwZGF0ZVNlbGVjdGVkU2V0dGluZ1RpdGxlKG5ld1NldHRpbmcubGFiZWwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLnNldElmcmFtZUhlaWdodCh0aGlzLmNvbm5lY3Rpb25TZXR0aW5ncywgdGhpcy5ob3N0RWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgc2VhcmNoIGZpZWxkXHJcbiAgICAqL1xyXG4gICAgcHVibGljIG9uU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dEJveC5zZWFyY2hpbmcgPSB0cnVlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU1lbnUoKTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0Qm94LnNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBGaWx0ZXIgb3V0IHRoZSBzZXR0aW5ncyBJdGVtIGJhc2VkIG9uIHRoaXMuZmlsdGVyIHN0cmluZyBhbmQgbWF0Y2ggdGhlIHRpdGxlIG9mIFNldHRpbmdzIEl0ZW1zXHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBmaWx0ZXJTZXR0aW5nKCk6IENvbW1vblNldHRpbmdzTmF2aWdhdGlvbkl0ZW1bXSB7XHJcblxyXG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5zZXR0aW5ncztcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmZpbHRlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gc2V0dGluZ3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBsb2NhbEZpbHRlciA9IHRoaXMuZmlsdGVyLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBzZXR0aW5ncy5maWx0ZXIoc2V0dGluZyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZXR0aW5nLmxhYmVsLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5kZXhPZihsb2NhbEZpbHRlcikgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGlmIG5vdCBtYXRjaCB0aGUgZXhhY3QgdGl0bGUsIG5lZWQgdG8gbWF0Y2ggd2l0aCBrZXl3b3Jkc1xyXG4gICAgICAgICAgICBpZiAoc2V0dGluZy5rZXl3b3Jkcykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHNldHRpbmcua2V5d29yZHMuZmlsdGVyKGtleXdvcmQgPT4ga2V5d29yZC5pbmRleE9mKGxvY2FsRmlsdGVyKSA+IC0xKTtcclxuICAgICAgICAgICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxzbWUtc2V0dGluZ3MgW3NldHRpbmdzVGl0bGVdPVwiaGFja1Rvb2xIZWFkZXIgPyAnJyA6IHNldHRpbmdzVGl0bGVcIiBbY2xhc3Muc21lLXNldHRpbmdzLWV4dGVybmFsLWhlYWRlcl09XCJleHRlcm5hbEhlYWRlclwiPlxyXG4gIDxzbWUtc2V0dGluZ3MtbmF2aWdhdGlvbiBjbGFzcz1cInNtZS1wb3NpdGlvbi1zdHJldGNoLXYtcGhvbmUtdXAgc21lLXBvc2l0aW9uLXN0cmV0Y2gtaFwiIHN0eWxlPVwibWluLXdpZHRoOiAxNjBweFwiPlxyXG4gICAgPGhlYWRlciBjbGFzcz1cInNtZS1sYXlvdXQtdG9vbC1oZWFkZXJcIiAqbmdJZj1cImhhY2tUb29sSGVhZGVyXCI+XHJcbiAgICAgIDxoMiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLWZvbnQtaDNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInNldHRpbmdzVGl0bGVcIj57e3NldHRpbmdzVGl0bGV9fTwvaDI+XHJcbiAgICA8L2hlYWRlcj5cclxuICAgIDxkaXYgcm9sZT1cInJlZ2lvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwic2V0dGluZ3NUaXRsZVwiIGNsYXNzPVwic21lLXBvc2l0aW9uLXN0cmV0Y2ggc21lLWFycmFuZ2Utc3RhY2stdlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtZm9jdXMtem9uZVwiPlxyXG4gICAgICAgIDxmb3JtIGNsYXNzPVwic21lLW1hcmdpbi1zcXVpc2gtdi1zbVwiPlxyXG4gICAgICAgICAgPHNtZS1mb3JtLWZpZWxkICNzZWFyY2hUZXh0Qm94IHR5cGU9XCJzZWFyY2hcIiBuYW1lPVwidG9vbHNMaXN0U2VhcmNoXCIgWyhuZ01vZGVsKV09XCJmaWx0ZXJcIiBbcGxhY2Vob2xkZXJdPVwic2VhcmNoQm94UGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICBbYXV0b2ZvY3VzXT1cInRydWVcIiBbY291bnRdPVwiZmlsdGVyZWRTZXR0aW5ncyA/IGZpbHRlcmVkU2V0dGluZ3MubGVuZ3RoIDogMFwiXHJcbiAgICAgICAgICAgIChzZWFyY2gpPVwib25TZWFyY2goKVwiPjwvc21lLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5hdiByb2xlPVwidGFibGlzdFwiIGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2stdiBzbWUtZm9jdXMtem9uZVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJzY3JvbGxhYmxlU2Vjb25kYXJ5TmF2ID8gJ3NtZS1wb3NpdGlvbi1mbGV4LWF1dG8gc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0by15JyA6ICcnXCI+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtYXV0byBzbWUtYXJyYW5nZS1zdGFjay12IHNtZS1hcnJhbmdlLW92ZXJmbG93LWhpZGUteCBzbWUtYXJyYW5nZS1vdmVyZmxvdy1hdXRvLXlcIlxyXG4gICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiPlxyXG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cFRvb2xzOyBsZXQgaiA9IGluZGV4XCIgY2xhc3M9XCJzbWUtbWFyZ2luLWluc2V0LW5vbmVcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XHJcbiAgICAgICAgICAgIDxoNCBbaWRdPVwiaWRCYWcuZ3JvdXAgKyAnLScgKyBqXCIgY2xhc3M9XCJzbWUtZm9udC1oNCBzbWUtZm9udC1oNC1zZXR0aW5nc1wiICpuZ0lmPVwiZ3JvdXAuZ3JvdXAhPT1kZWZhdWx0R3JvdXBcIlxyXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJncm91cC5ncm91cFwiPnt7IGdyb3VwLmdyb3VwIH19PC9oND5cclxuICAgICAgICAgICAgPGEgKm5nRm9yPVwibGV0IHNldHRpbmcgb2YgZ3JvdXAub3B0aW9uczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzbWUtcGFkZGluZy1zcXVpc2gtdi1zbSBzbWUtYXJyYW5nZS1zdGFjay1oIHNtZS1hcnJhbmdlLXN0YWNrLWNlbnRlcmVkLXYgc21lLXNjaGVtZS1uYXYtaXRlbVwiIHJvbGU9XCJ0YWJcIlxyXG4gICAgICAgICAgICAgIGhyZWY9XCJzZXR0aW5nLnJvdXRlUGFyYW1zLmV4dHJhcyAmJiBzZXR0aW5nLnJvdXRlUGFyYW1zLmV4dHJhcy5yZXBsYWNlVXJsXCJcclxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInNlbGVjdGVkU2V0dGluZyA9PT0gc2V0dGluZ1wiXHJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwic2V0dGluZy5yb3V0ZVBhcmFtcy5jb21tYW5kc1wiIHJvdXRlckxpbmtBY3RpdmU9XCJzbWUtYWN0aXZlXCJcclxuICAgICAgICAgICAgICAoc21lUm91dGVyTGlua0FjdGl2YXRlZCk9XCJvblNtZVJvdXRlckxpbmtBY3RpdmF0ZWQoc2V0dGluZylcIlxyXG4gICAgICAgICAgICAgIFtwcmVzZXJ2ZUZyYWdtZW50XT1cInNldHRpbmcucm91dGVQYXJhbXMuZXh0cmFzICYmIHNldHRpbmcucm91dGVQYXJhbXMuZXh0cmFzLnByZXNlcnZlRnJhZ21lbnRcIlxyXG4gICAgICAgICAgICAgIFtza2lwTG9jYXRpb25DaGFuZ2VdPVwic2V0dGluZy5yb3V0ZVBhcmFtcy5leHRyYXMgJiYgc2V0dGluZy5yb3V0ZVBhcmFtcy5leHRyYXMuc2tpcExvY2F0aW9uQ2hhbmdlXCJcclxuICAgICAgICAgICAgICBbcmVwbGFjZVVybF09XCJzZXR0aW5nLnJvdXRlUGFyYW1zLmV4dHJhcyAmJiBzZXR0aW5nLnJvdXRlUGFyYW1zLmV4dHJhcy5yZXBsYWNlVXJsXCJcclxuICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwic2V0dGluZy5yb3V0ZVBhcmFtcy5leHRyYXMgJiYgc2V0dGluZy5yb3V0ZVBhcmFtcy5leHRyYXMucXVlcnlQYXJhbXNcIlxyXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJzZXR0aW5nLmxhYmVsXCIgYXR0ci5hcmlhLWxhYmVsbGVkYnk9XCJ7e2lkQmFnLm9wdGlvbn19LXt7an19LXt7aX19IHt7aWRCYWcuZ3JvdXB9fS17e2p9fVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWUtbWFyZ2luLXJpZ2h0LXhzIHNtZS1sYXlvdXQtZmxleCBzbWUtcG9zaXRpb24tZmxleC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZXR0aW5nLnNtZUljb25DbGFzc05hbWVcIiBjbGFzcz1cInNtZS1pY29uXCIgW25nQ2xhc3NdPVwiZ2V0U21lSWNvbkNsYXNzKHNldHRpbmcpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2V0dGluZy51cmxJY29uXCIgY2xhc3M9XCJzbWUtdXJsLWljb25cIiBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCJzZXR0aW5nLnVybEljb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2V0dGluZy51cmxJY29uICYmICFzZXR0aW5nLnNtZUljb25DbGFzc05hbWVcIiBjbGFzcz1cInNtZS11cmwtaWNvblwiIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cImRlZmF1bHRJY29uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LWF1dG9cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpZF09XCJpZEJhZy5vcHRpb24gKyAnLScgKyBqICsgJy0nICsgaVwiIFtjbGFzcy5zbWUtZGlydHldPVwiISEoc2V0dGluZy5mb3JtICYmIHNldHRpbmcuZm9ybS5kaXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc21lLXByaXN0aW5lXT1cIiEoc2V0dGluZy5mb3JtICYmIHNldHRpbmcuZm9ybS5kaXJ0eSlcIiBjbGFzcz1cInNtZS1mb250LWxhYmVsIHNtZS1sYXlvdXQtZmxleCBzbWUtcG9zaXRpb24tZmxleC1hbGlnbi1jZW50ZXJcIj57eyBzZXR0aW5nLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvbmF2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaGFja1Nob3dPdmVybGF5XCI+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGxheWVyIG9mIGxheWVyc1wiXHJcbiAgICAgICAgY2xhc3M9XCJzbWUtbGF5b3V0LWFic29sdXRlIHNtZS1wb3NpdGlvbi1pbnNldC1ub25lIHNtZS1sYXllci1hYm92ZSBzbWUtc2NoZW1lLWJhY2tkcm9wLW9wYXF1ZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uT3ZlcmxheUNsaWNrKGxheWVyKVwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9zbWUtc2V0dGluZ3MtbmF2aWdhdGlvbj5cclxuICA8c21lLXNldHRpbmdzLWhlYWRlciAqbmdJZj1cIiEhc2hvd0hlYWRlclwiPlxyXG4gICAgPGgzIGlkPVwic21lLXNoZWxsLXNldHRpbmctc2VsZWN0ZWRUaXRsZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwic2VsZWN0ZWRTZXR0aW5nLmxhYmVsXCIgKm5nSWY9XCIhIXNlbGVjdGVkU2V0dGluZ1wiPlxyXG4gICAgICB7eyBzZWxlY3RlZFNldHRpbmcubGFiZWwgfX08L2gzPlxyXG4gIDwvc21lLXNldHRpbmdzLWhlYWRlcj5cclxuICA8c21lLXNldHRpbmdzLWNvbnRlbnQ+XHJcbiAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcbiAgPC9zbWUtc2V0dGluZ3MtY29udGVudD5cclxuICA8c21lLXNldHRpbmdzLWZvb3Rlcj5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICA8L3NtZS1zZXR0aW5ncy1mb290ZXI+XHJcbjwvc21lLXNldHRpbmdzPlxyXG4iXX0=
|
|
598
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL3NldHRpbmdzL2NvbW1vbi1zZXR0aW5ncy9jb21tb24tc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2V0dGluZ3MvY29tbW9uLXNldHRpbmdzL2NvbW1vbi1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFFTCxlQUFlLEVBSWYsUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBR0gsTUFBTSxFQUVULE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0VBQStFLENBQUM7QUFHdEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRWhGLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxv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QURuQixTQUFTO21CQUFDLGVBQWU7WUFJbkIsYUFBYTtrQkFEbkIsS0FBSztZQUlDLFFBQVE7a0JBRGQsS0FBSztZQUlDLFVBQVU7a0JBRGhCLEtBQUs7WUFJQyxlQUFlO2tCQURyQixLQUFLO1lBSUMsY0FBYztrQkFEcEIsS0FBSztZQU9DLGtCQUFrQjtrQkFEeEIsS0FBSztZQUlDLFNBQVM7a0JBRGYsS0FBSztZQVVDLHNCQUFzQjtrQkFENUIsS0FBSztZQUlDLGlCQUFpQjtrQkFEdkIsU0FBUzttQkFBQyxpQkFBaUI7WUFxRnBCLHVCQUF1QixNQUt2QixlQUFlLE1BS2YseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0NoZWNrZWQsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBEb0NoZWNrLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIEl0ZXJhYmxlRGlmZmVyLFxyXG4gICAgSXRlcmFibGVEaWZmZXJzLFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICAgIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBOYXZpZ2F0aW9uRXh0cmFzLFxyXG4gICAgUm91dGVyLFxyXG4gICAgUm91dGVyU3RhdGVTbmFwc2hvdFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IERlYm91bmNlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9iYXNlL2RlY29yYXRvcnMvZGVib3VuY2UuZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IFlpZWxkIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9iYXNlL2RlY29yYXRvcnMveWllbGQuZGVjb3JhdG9yJztcclxuaW1wb3J0IHsgTmV0IH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL25ldCc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50TW9kdWxlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9tYW5pZmVzdC9lbnZpcm9ubWVudC1tb2R1bGVzJztcclxuaW1wb3J0IHsgUnBjT3ZlcmxheUNsb3NlQ2xpZW50IH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9ycGMvb3ZlcmxheS9ycGMtb3ZlcmxheS1jbG9zZS1jbGllbnQnO1xyXG5pbXBvcnQgeyBScGNEaWFsb2dPdmVybGF5RGF0YSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcnBjL292ZXJsYXkvcnBjLW92ZXJsYXktbW9kZWwnO1xyXG5pbXBvcnQgeyBEZWZlcnJlZERhdGEgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL3JwYy9ycGMnO1xyXG5pbXBvcnQgeyBScGNUeXBlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9ycGMvcnBjLWJhc2UnO1xyXG5pbXBvcnQgeyBScGNPdXRib3VuZCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcnBjL3JwYy1vdXRib3VuZCc7XHJcbmltcG9ydCB7IEVNUFRZLCBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFwcENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9hcHAtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUnBjU2hlbGxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9ycGMtc2hlbGwuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IFNlYXJjaEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Zvcm0nO1xyXG5pbXBvcnQgeyBDYW5Db21wb25lbnREZWFjdGl2YXRlIH0gZnJvbSAnLi4vc2V0dGluZ3MtY2FuLWRlYWN0aXZhdGUtZ3VhcmQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNldHRpbmdzRm9ybVNlcnZpY2UgfSBmcm9tICcuLi9zZXR0aW5ncy1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4uL3NldHRpbmdzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vblNldHRpbmdzTmF2aWdhdGlvbkl0ZW0sIENvbW1vblNldHRpbmdzTmF2aWdhdGlvbkl0ZW1XaXRoRm9ybSB9IGZyb20gJy4vY29tbW9uLXNldHRpbmdzLW5hdmlnYXRpb24taXRlbSc7XHJcbmltcG9ydCB7IFNldHRpbmdzUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIgfSBmcm9tICcuL3NldHRpbmdzLXJlc3BvbnNpdmUtd2luZG93LW1hbmFnZXInO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHcm91cFRvb2xzTWVudSB7XHJcbiAgICBncm91cDogc3RyaW5nO1xyXG4gICAgb3B0aW9uczogQ29tbW9uU2V0dGluZ3NOYXZpZ2F0aW9uSXRlbVdpdGhGb3JtW107XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb250YWluZXIgYXJvdW5kIHNldHRpbmdzIGNvbXBvbmVudCwgaGFuZGxlcyBjb21tb24gc2V0dGluZ3MgYmVoYXZpb3IuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLWNvbW1vbi1zZXR0aW5ncycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tbW9uLXNldHRpbmdzLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uU2V0dGluZ3NDb21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIERvQ2hlY2ssIEFmdGVyVmlld0NoZWNrZWQge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNvdXJjZSBuYW1lIHRvIHVzZSBmb3IgbG9nZ2luZ1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGxvZ1NvdXJjZU5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuICdDb21tb25TZXR0aW5nc0NvbXBvbmVudCc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBubyBoZWFkZXIgaXMgYmVpbmcgdXNlZCBpbnRlcm5hbGx5LCB0aGUgY29udHJvbCB3aWxsIGRlcGVuZCBvbiBleHRlcm5hbCBoZWFkZXIgYmVpbmcgY3VzdG9taXplZFxyXG4gICAgICogRm9yIGluc3RhbmNlLCBhIGJyZWFkY3J1bWIgaGVhZGVyIGNhbiBiZSB1c2VkLiBBbmQgaW4gdGhpcyBjYXNlLCBubyBleHRyYSBzY3JvbGwgYmFyIGNhbiBiZSByZW5kZXJlZCBvbiBwaG9uZSBkb3duLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZXh0ZXJuYWxIZWFkZXIgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBjb21iaW5lZEZvcm06IEZvcm1Hcm91cDtcclxuICAgIHB1YmxpYyByZWFkb25seSBkZWZhdWx0R3JvdXAgPSAnZGVmYXVsdCc7XHJcbiAgICBwdWJsaWMgZ3JvdXBUb29sczogR3JvdXBUb29sc01lbnVbXTtcclxuICAgIHB1YmxpYyBsYXllcnM6IFJwY0RpYWxvZ092ZXJsYXlEYXRhW10gPSBbXTtcclxuICAgIHB1YmxpYyBzZWxlY3RlZFNldHRpbmc6IENvbW1vblNldHRpbmdzTmF2aWdhdGlvbkl0ZW07XHJcbiAgICBwdWJsaWMgZGVmYXVsdEljb246IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlYXJjaCBib3ggZmlsdGVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmlsdGVyID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZWFyY2ggYm94IHBsYWNlaG9sZGVyLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlYXJjaEJveFBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZmlsdGVyZWRTZXR0aW5nczogQ29tbW9uU2V0dGluZ3NOYXZpZ2F0aW9uSXRlbVtdID0gW107XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoVGV4dEJveCcpXHJcbiAgICBwdWJsaWMgc2VhcmNoVGV4dEJveDogU2VhcmNoRm9ybUZpZWxkQ29tcG9uZW50O1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0dGluZ3NUaXRsZTogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0dGluZ3M6IENvbW1vblNldHRpbmdzTmF2aWdhdGlvbkl0ZW1bXTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNob3dIZWFkZXIgPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaGFja1Nob3dPdmVybGF5ID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBoYWNrVG9vbEhlYWRlciA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgY29ubmVjdGlvbiBzZXR0aW5ncyBwYWdlLCB0aGUgY29udGVudHMgYXJlIGFsbCBpZnJhbWUsIHNwZWNpYWwgbG9naWMgdG8gZ2V0IHJpZCBvZiB0aGUgZXh0cmEgc2Nyb2xsIGJhciBmb3IgaWZyYW1lLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNvbm5lY3Rpb25TZXR0aW5ncyA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYmFja1JvdXRlOiB7IGNvbW1hbmRzOiBhbnlbXSwgZXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcyB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgdGFiIGxpc3Qgc2hvd2luZyB0aGUgU2V0dGluZ3MgaXRlbXMgaXMgc2Nyb2xsYWJsZSBvciBub3RcclxuICAgICAqIERlZmF1bHQgdG8gdHJ1ZS4gQWxsb3dpbmcgc2VwYXJhdGUgc2Nyb2xsIGJhciBmb3IgdGhlIG5hdmJhciBhbmQgdGhlIHNlbGVjdGVkIFNldHRpbmdzLlxyXG4gICAgICogU2V0IHRvIGZhbHNlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFuZCB1c2UgcHJldmlvdXMgYmVoYXZpb3Igd2hlcmUgdGhlcmUgaXNcclxuICAgICAqIG9ubHkgMSBzaW5nbGUgc2Nyb2xsIGJhciBmb3IgYm90aCBuYXZiYXIgYW5kIGNvbnRlbnQgb2YgdGhlIHNlbGVjdGVkIFNldHRpbmdzIGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2Nyb2xsYWJsZVNlY29uZGFyeU5hdiA9IHRydWU7XHJcblxyXG4gICAgQFZpZXdDaGlsZChTZXR0aW5nc0NvbXBvbmVudClcclxuICAgIHB1YmxpYyBzZXR0aW5nc0NvbXBvbmVudDogU2V0dGluZ3NDb21wb25lbnQ7XHJcblxyXG4gICAgcHJpdmF0ZSBsYXRlc3RGb3JtOiBGb3JtR3JvdXA7XHJcbiAgICBwcml2YXRlIGxhdGVzdFByaXN0aW5lRm9ybVZhbHVlOiBhbnk7XHJcbiAgICBwcml2YXRlIGxhdGVzdEZvcm1VcGRhdGVWYWx1ZUluQ29tcG9uZW50OiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBzZXR0aW5nc0RpZmZlcjogSXRlcmFibGVEaWZmZXI8YW55PjtcclxuICAgIHByaXZhdGUgYXV0b2ZvY3VzID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgc2V0dGluZ3NSZXNwb25zaXZlV2luZG93TWFuYWdlcjogU2V0dGluZ3NSZXNwb25zaXZlV2luZG93TWFuYWdlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgc2V0dGluZ3NGb3JtczogU2V0dGluZ3NGb3JtU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGl0ZXJhYmxlRGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxyXG4gICAgICAgIHByaXZhdGUgYXBwQ29udGV4dDogQXBwQ29udGV4dFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBycGNTaGVsbFNlcnZpY2U6IFJwY1NoZWxsU2VydmljZSxcclxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFNNRV9MQVlPVVRfUFJPVklERVIpIGxheW91dDogTGF5b3V0XHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICAgICAgdGhpcy5jb21iaW5lZEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgICB0aGlzLnNlYXJjaEJveFBsYWNlaG9sZGVyID0gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLnNlYXJjaFBsYWNlSG9sZGVyO1xyXG5cclxuICAgICAgICBpZiAobGF5b3V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NSZXNwb25zaXZlV2luZG93TWFuYWdlciA9IG5ldyBTZXR0aW5nc1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyKGxheW91dCk7XHJcbiAgICAgICAgICAgIC8vIG9uIHBhcmVudCBsYXlvdXQgY2hhbmdlcywgcmUtZW1pdCB0aGUgbGF5b3V0IGNoYW5nZSB0byBvdXIgZXZlbnRcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2gobGF5b3V0LmxheW91dENoYW5nZWQuc3Vic2NyaWJlKCgoKSA9PiB0aGlzLm9uTGF5b3V0Q2hhbmdlZCgpKSkpO1xyXG4gICAgICAgICAgICAvLyBvbiB3aW5kb3cgYnJlYWsgcG9pbnQgY2hhbmdlcywgZW1pdCB0aGUgZXZlbnQgYWJvdXQgY3JpdGljYWwgY2xhc3NlcyBhbmQgc3R5bGluZyB1cGRhdGVzIHNpZ25hbC5cclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2gobGF5b3V0LndpbmRvd0JyZWFrcG9pbnRDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uV2luZG93QnJlYWtwb2ludENoYW5nZWQoKSkpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kZWZlcnJlZE9uTGF5b3V0Q2hhbmdlZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5mb3JtQWRkZWQoKS5zdWJzY3JpYmUoKGZvcm1BZGRlZERhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIHRvIGF2b2lkIGR1cGxpY2F0ZXMgd2UgZmlyc3QgcmVtb3ZlIHRoZSBmb3JtIGlmIGl0IGV4aXN0c1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXRlc3RGb3JtID0gZm9ybUFkZGVkRGF0YS5mb3JtR3JvdXA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhdGVzdFByaXN0aW5lRm9ybVZhbHVlID0gdGhpcy5nZXRSYXdWYWx1ZVJlY3Vyc2l2ZShmb3JtQWRkZWREYXRhLmZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhdGVzdEZvcm1VcGRhdGVWYWx1ZUluQ29tcG9uZW50ID0gZm9ybUFkZGVkRGF0YS51cGRhdGVWYWx1ZUluQ29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWNhbGN1bGF0ZUFjdGl2ZVBhbmVsKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0RpZmZlciA9IHRoaXMuaXRlcmFibGVEaWZmZXJzLmZpbmQodGhpcy5zZXR0aW5ncykuY3JlYXRlKG51bGwpO1xyXG4gICAgICAgIHRoaXMucmVjYWxjdWxhdGVBY3RpdmVQYW5lbCgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5oYWNrU2hvd092ZXJsYXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJwY1NoZWxsU2VydmljZS5vdmVybGF5T3BlblN1YmplY3Quc3Vic2NyaWJlKChkZWZlcnJlZERhdGE6IERlZmVycmVkRGF0YTxScGNEaWFsb2dPdmVybGF5RGF0YSwgdm9pZD4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBvdmVybGF5IHRvb2xzIHdpdGggb25lIG1vcmUgbGF5ZXIgb3IgcmVtb3ZlIG9uZSBmcm9tIHRvcFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWZlcnJlZERhdGEuZGF0YS5vdmVybGF5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGF5ZXJzLnB1c2goZGVmZXJyZWREYXRhLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5sYXllcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheWVycy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JwYyBPdmVybGF5Q2xvc2U6IGNsb3NlIHJlcXVlc3QgaXMgY2FsbGVkIHdoaWxlIGxheWVyIGlzIG5vIGxvbmdlciBhdmFpbGFibGUnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWREYXRhLmRlZmVycmVkLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc2hvd0hlYWRlciAmJiAhdGhpcy5oYWNrVG9vbEhlYWRlcikge1xyXG4gICAgICAgICAgICB0aGlzLmV4dGVybmFsSGVhZGVyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0SWNvbiA9IEVudmlyb25tZW50TW9kdWxlLmdldEZvcm1hdHRlZEljb25SZWZVcmwoJy9hc3NldHMvaWNvbnMvZGVmYXVsdC5zdmc/dj0xJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXMpIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBpZiAoY2hhbmdlcy5zZXR0aW5ncykge1xyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzRGlmZmVyID0gdGhpcy5pdGVyYWJsZURpZmZlcnMuZmluZCh0aGlzLnNldHRpbmdzKS5jcmVhdGUobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3JlYXRlTWVudSgpO1xyXG4gICAgICAgIHRoaXMucmVjYWxjdWxhdGVBY3RpdmVQYW5lbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGRlZmVycmVkIGxheW91dCBjaGFuZ2VkIGhhbmRsZXIuXHJcbiAgICAgKi9cclxuICAgIEBEZWJvdW5jZSgpXHJcbiAgICBwcml2YXRlIGRlZmVycmVkT25MYXlvdXRDaGFuZ2VkKCkge1xyXG4gICAgICAgIHRoaXMub25MYXlvdXRDaGFuZ2VkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQFlpZWxkKClcclxuICAgIHByaXZhdGUgb25MYXlvdXRDaGFuZ2VkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NSZXNwb25zaXZlV2luZG93TWFuYWdlci5zZXRJZnJhbWVIZWlnaHQodGhpcy5jb25uZWN0aW9uU2V0dGluZ3MsIHRoaXMuaG9zdEVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIEBZaWVsZCgpXHJcbiAgICBwcml2YXRlIG9uV2luZG93QnJlYWtwb2ludENoYW5nZWQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhvc3RFbGVtZW50IHx8ICF0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLm9uV2luZG93U2l6ZUNoYW5nZWRDb21tb25TZXR0aW5ncyh0aGlzLmNvbm5lY3Rpb25TZXR0aW5ncywgdGhpcy5ob3N0RWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nRG9DaGVjaygpIHtcclxuICAgICAgICBzdXBlci5uZ0RvQ2hlY2soKTtcclxuICAgICAgICBpZiAodGhpcy5zZXR0aW5nc0RpZmZlcikge1xyXG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5zZXR0aW5nc0RpZmZlci5kaWZmKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICBpZiAoY2hhbmdlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVNZW51KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5hdXRvZm9jdXMpIHtcclxuICAgICAgICAgICAgY29uc3QgZm9jdXNFbGVtZW50cyA9IHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbcm9sZT1cInRhYlwiXScpO1xyXG4gICAgICAgICAgICBpZiAoZm9jdXNFbGVtZW50cyAmJiBmb2N1c0VsZW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgZm9jdXNFbGVtZW50c1swXS5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvZm9jdXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2V0dGluZyBUaXRsZSBoZWFkZXIgaXMgbWFuYWdlZCBieSBjaGlsZCBjb21wb25lbnQgdGhpcy5zZXR0aW5nc0NvbXBvbmVudCxcclxuICAgICAgICAvLyBhZnRlciBjdXJyZW50IHZpZXcgYW5kIGNoaWxkIHZpZXcgaGFzIGJlZW4gcmVuZGVyZWQsIHBhc3MgYWxvbmcgdGhlIHNlbGVjdGVkU2V0dGluZ1xyXG4gICAgICAgIC8vIHN0cmluZyBpZiBpdCBleGlzdHMgc28gY2hpbGQgdmlldyB3aWxsIHJlbmRlciB0aGUgdGl0bGVcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFNldHRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5vblNtZVJvdXRlckxpbmtBY3RpdmF0ZWQodGhpcy5zZWxlY3RlZFNldHRpbmcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY3JlYXRlTWVudSgpIHtcclxuICAgICAgICAvLyBCZWZvcmUgY3JlYXRpbmcgdGhlIFNldHRpbmdzIG1lbnUsIGZpbHRlciB0aGUgU2V0dGluZ3MgbWVudSB0byBvbmx5IGRpc3BsYXlcclxuICAgICAgICAvLyBpdGVtcyB0aGF0IG1hdGNoZXMgdGhlIGZpbHRlclxyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRTZXR0aW5ncyA9IHRoaXMuZmlsdGVyU2V0dGluZygpO1xyXG5cclxuICAgICAgICBjb25zdCBncm91cFRvb2xzOiBHcm91cFRvb2xzTWVudVtdID0gW107XHJcbiAgICAgICAgZ3JvdXBUb29sc1snZGVmYXVsdCddID0geyBncm91cDogJ2RlZmF1bHQnLCBvcHRpb25zOiBbXSB9O1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRTZXR0aW5ncy5mb3JFYWNoKChzZXR0aW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghISFzZXR0aW5nLmdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICBncm91cFRvb2xzWydkZWZhdWx0J10ub3B0aW9ucy5wdXNoKHNldHRpbmcpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEhIWdyb3VwVG9vbHNbc2V0dGluZy5ncm91cF0pIHtcclxuICAgICAgICAgICAgICAgICAgICBncm91cFRvb2xzW3NldHRpbmcuZ3JvdXBdID0geyBncm91cDogc2V0dGluZy5ncm91cCwgdGl0bGU6IHNldHRpbmcuZ3JvdXBUaXRsZSwgb3B0aW9uczogW10gfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGdyb3VwVG9vbHNbc2V0dGluZy5ncm91cF0ub3B0aW9ucy5wdXNoKHNldHRpbmcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5ncm91cFRvb2xzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIGdyb3VwVG9vbHMpIHtcclxuICAgICAgICAgICAgaWYgKHByb3ApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBUb29scy5wdXNoKGdyb3VwVG9vbHNbcHJvcF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWNhbGN1bGF0ZUFjdGl2ZVBhbmVsKCkge1xyXG4gICAgICAgIGNvbnN0IHNldHRpbmcgPSA8Q29tbW9uU2V0dGluZ3NOYXZpZ2F0aW9uSXRlbVdpdGhGb3JtPnRoaXMuc2VsZWN0ZWRTZXR0aW5nO1xyXG4gICAgICAgIGlmIChNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKHNldHRpbmcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5nLmZvcm0gJiYgc2V0dGluZy5mb3JtLmRpcnR5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZ2V0UmF3VmFsdWVSZWN1cnNpdmUoc2V0dGluZy5mb3JtKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzZXR0aW5nLnVwZGF0ZVZhbHVlSW5Db21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NGb3Jtcy5uZXdGb3JtVmFsdWUoc2V0dGluZy5mb3JtLCBmb3JtVmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXRlc3RGb3JtLnNldFZhbHVlKGZvcm1WYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMubGF0ZXN0Rm9ybS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0Zvcm1zLnJlbW92ZUZvcm0oc2V0dGluZy5mb3JtKTtcclxuICAgICAgICBzZXR0aW5nLmZvcm0gPSB0aGlzLmxhdGVzdEZvcm07XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5nLmZvcm0pIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tYmluZWRGb3JtLmNvbnRyb2xzW3NldHRpbmcubGFiZWxdKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbWJpbmVkRm9ybS5zZXRDb250cm9sKHNldHRpbmcubGFiZWwsIHNldHRpbmcuZm9ybSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbWJpbmVkRm9ybS5hZGRDb250cm9sKHNldHRpbmcubGFiZWwsIHNldHRpbmcuZm9ybSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldHRpbmcudXBkYXRlVmFsdWVJbkNvbXBvbmVudCA9IHRoaXMubGF0ZXN0Rm9ybVVwZGF0ZVZhbHVlSW5Db21wb25lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRpc2NhcmRBbGxDaGlsZEZvcm1zKCkge1xyXG4gICAgICAgIC8vIEZvciB0aGUgY3VycmVudCBhY3RpdmUgc2V0dGluZywgd2UgbmVlZCB0byByZXNldCB0aGUgZm9ybSB0byBpdHNcclxuICAgICAgICAvLyBvcmlnaW5hbCBwcmlzdGluZSBmb3JtIHdoZW4gZGlzY2FyZGluZyBjaGFuZ2VzXHJcbiAgICAgICAgY29uc3QgYWN0aXZlU2V0dGluZyA9IHRoaXMuc2VsZWN0ZWRTZXR0aW5nO1xyXG4gICAgICAgIGNvbnN0IHNldHRpbmdXaXRoRm9ybSA9IDxDb21tb25TZXR0aW5nc05hdmlnYXRpb25JdGVtV2l0aEZvcm0+YWN0aXZlU2V0dGluZztcclxuICAgICAgICBpZiAoc2V0dGluZ1dpdGhGb3JtLmZvcm0pIHtcclxuICAgICAgICAgICAgc2V0dGluZ1dpdGhGb3JtLmZvcm0ucmVzZXQodGhpcy5sYXRlc3RQcmlzdGluZUZvcm1WYWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmdzLmZvckVhY2goKG90aGVyU2V0dGluZykgPT4ge1xyXG4gICAgICAgICAgICBpZiAob3RoZXJTZXR0aW5nICE9PSBhY3RpdmVTZXR0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvdGhlcnNldHRpbmdXaXRoRm9ybSA9IDxDb21tb25TZXR0aW5nc05hdmlnYXRpb25JdGVtV2l0aEZvcm0+b3RoZXJTZXR0aW5nO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nc0Zvcm1zLnJlbW92ZUZvcm0ob3RoZXJzZXR0aW5nV2l0aEZvcm0uZm9ybSk7XHJcbiAgICAgICAgICAgICAgICBvdGhlcnNldHRpbmdXaXRoRm9ybS5mb3JtID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbWJpbmVkRm9ybS5jb250cm9sc1tvdGhlcnNldHRpbmdXaXRoRm9ybS5sYWJlbF0pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbWJpbmVkRm9ybS5yZW1vdmVDb250cm9sKG90aGVyc2V0dGluZ1dpdGhGb3JtLmxhYmVsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhY2NlcHRBbGxDaGlsZEZvcm1zVmFsdWUoKSB7XHJcbiAgICAgICAgY29uc3QgYWN0aXZlU2V0dGluZyA9IHRoaXMuc2VsZWN0ZWRTZXR0aW5nO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZm9yRWFjaCgoc2V0dGluZykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzZXR0aW5nV2l0aEZvcm0gPSA8Q29tbW9uU2V0dGluZ3NOYXZpZ2F0aW9uSXRlbVdpdGhGb3JtPnNldHRpbmc7XHJcbiAgICAgICAgICAgIGlmIChzZXR0aW5nV2l0aEZvcm0uZm9ybSkge1xyXG4gICAgICAgICAgICAgICAgc2V0dGluZ1dpdGhGb3JtLmZvcm0ucmVzZXQodGhpcy5nZXRSYXdWYWx1ZVJlY3Vyc2l2ZShzZXR0aW5nV2l0aEZvcm0uZm9ybSkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVNldHRpbmcgPT09IHNldHRpbmdXaXRoRm9ybSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGF0ZXN0UHJpc3RpbmVGb3JtVmFsdWUgPSB0aGlzLmdldFJhd1ZhbHVlUmVjdXJzaXZlKHNldHRpbmdXaXRoRm9ybS5mb3JtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTbWVJY29uQ2xhc3Moc2V0dGluZzogQ29tbW9uU2V0dGluZ3NOYXZpZ2F0aW9uSXRlbSkge1xyXG4gICAgICAgIGNvbnN0IG5nQ2xhc3NQYXJhbWV0ZXIgPSB7fTtcclxuICAgICAgICBpZiAoc2V0dGluZy5zbWVJY29uQ2xhc3NOYW1lKSB7XHJcbiAgICAgICAgICAgIG5nQ2xhc3NQYXJhbWV0ZXJbc2V0dGluZy5zbWVJY29uQ2xhc3NOYW1lXSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZ0NsYXNzUGFyYW1ldGVyO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjYW5EZWFjdGl2YXRlKFxyXG4gICAgICAgIGNvbXBvbmVudDogQ2FuQ29tcG9uZW50RGVhY3RpdmF0ZSxcclxuICAgICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3NDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NDb21wb25lbnQuY2FuRGVhY3RpdmF0ZShjb21wb25lbnQsIHJvdXRlLCBzdGF0ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGluaXRpYWwgaG9zdCBjbGFzc2VzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXRJbml0aWFsSG9zdENsYXNzZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldEluaXRpYWxIb3N0Q2xhc3NlcygpLmNvbmNhdChbXHJcbiAgICAgICAgICAgICdzbWUtY29tbW9uLXNldHRpbmdzJ1xyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyB0aGUgaWRCYWcgdXNlZCBieSB0aGlzIGNvbXBvbmVudCB0byBzdG9yZSB1bmlxdWUgZWxlbWVudCBpZHMuXHJcbiAgICAgKiBpZCB2YWx1ZXMgd2lsbCBiZSBhc3NpZ25lZCBiZSB0aGUgQHNlZSBCYXNlQ29tcG9uZW50IHN1cGVyIGNsYXNzLlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY3JlYXRlSWRCYWcoKTogTXNmdFNtZS5TdHJpbmdNYXA8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZ3JvdXA6ICcnLFxyXG4gICAgICAgICAgICBvcHRpb246ICcnXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25PdmVybGF5Q2xpY2sobGF5ZXI6IFJwY0RpYWxvZ092ZXJsYXlEYXRhKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbGF5ZXJScGMgPSB0aGlzLmFwcENvbnRleHQucnBjLnJwY01hbmFnZXIucnBjQ2hhbm5lbC5nZXRScGM8UnBjT3V0Ym91bmQ+KFxyXG4gICAgICAgICAgICBsYXllci5zb3VyY2VOYW1lLFxyXG4gICAgICAgICAgICBsYXllci5zb3VyY2VTdWJOYW1lLFxyXG4gICAgICAgICAgICBScGNUeXBlLk91dGJvdW5kXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmcm9tKFJwY092ZXJsYXlDbG9zZUNsaWVudC5vdmVybGF5Q2xvc2UodGhpcy5hcHBDb250ZXh0LnJwYywgeyBvdmVybGF5OiBmYWxzZSwgZGlhbG9nSWQ6IGxheWVyLmRpYWxvZ0lkIH0sIGxheWVyUnBjKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiByZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lm92ZXJsYXlDbG9zZWQgJiYgdGhpcy5sYXllcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheWVycy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub3RpZmljYXRpb24gPSB0aGlzLmFwcENvbnRleHQubm90aWZpY2F0aW9uLmNyZWF0ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24uc2hvd0Vycm9yKHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5PdmVybGF5LmNsb3NlRXJyb3JUaXRsZSwgTmV0LmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxheWVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGF5ZXJzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IGNvbnRyb2wgYW5kIGFsbCBpdHMgY2hpbGRyZW4gcmVjdXJzaXZlbGx5LFxyXG4gICAgICogaW5jbHVkaW5nIGRpc2FibGVkIGNvbnRyb2xzLlxyXG4gICAgICpcclxuICAgICAqIFdvcmthcm91bmQgZm9yIG1pc3NpbmcgZnVuY3Rpb25hbGl0eSBhZGRlZCBpbiBsYXRlciB2ZXJzaW9ucyBvZiBhbmd1bGFyXHJcbiAgICAgKiBDdXJyZW50bHkgZ2V0UmF3VmFsdWUgb25seSByZXR1cm5zIHRoZSB2YWx1ZSBvZiBodGUgY3VycmVudCBjb250cm9sIGRpc2FibGVkXHJcbiAgICAgKiBjaGlsZHJlbiBidXQgb25seSBlbmFibGVkIGNvbnRyb2xzIG9mIG90aGVyIGRlc2NlbmRhbnRzOlxyXG4gICAgICogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9jb21taXQvMWVjZTczNjZjOGI2N2YzODdmYmUxM2Y4ZDEyOGMxOWY0YzUwZGQxOVxyXG4gICAgICpcclxuICAgICAqIE9uY2Ugd2UgdXBncmFkZSBhbmd1bGFyIHZlcnNpb24gd2UgY2FuIHJlbW92ZSB0aGlzIGNvZGUuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZvcm1Db250cm9sIFRoZSBmb3JtIGNvbnRyb2wgdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0UmF3VmFsdWVSZWN1cnNpdmUoZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGFueSB7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0ge307XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZvcm1Db250cm9sLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZVtrZXldID0gdGhpcy5nZXRSYXdWYWx1ZVJlY3Vyc2l2ZShmb3JtQ29udHJvbC5jb250cm9sc1trZXldKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZvcm1Db250cm9sLmNvbnRyb2xzLm1hcCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSYXdWYWx1ZVJlY3Vyc2l2ZShjb250cm9sKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgdGhpcy5zZWxlY3RlZFNldHRpbmcgdG8gdGhlIG5ld2x5IHNlbGVjdGVkIFNldHRpbmdzIGl0ZW0gd2hlbiB1c2VyIG5hdmlnYXRlIHRvIGEgbmV3IFNldHRpbmdzIGl0ZW1cclxuICAgICAqIEFsc28gY2FsbCB0aGUgY2hpbGQgY29tcG9uZW50IHRoaXMuc2V0dGluZ3NDb21wb25lbnQgdG8gdXBkYXRlIHRoZSBzZXR0aW5nc1RpdGxlIHRvIHJlZmxlY3QgdGhlIHRpdGxlXHJcbiAgICAgKiBvZiB0aGUgbmV3bHkgc2VsZWN0ZWQgU2V0dGluZ3MgaXRlbVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBuZXdTZXR0aW5nIFRoZSBuZXdseSBzZWxlY3RlZCBTZXR0aW5ncyBpdGVtXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvblNtZVJvdXRlckxpbmtBY3RpdmF0ZWQobmV3U2V0dGluZzogQ29tbW9uU2V0dGluZ3NOYXZpZ2F0aW9uSXRlbSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZXR0aW5nID0gbmV3U2V0dGluZztcclxuICAgICAgICBpZiAodGhpcy5zZXR0aW5nc0NvbXBvbmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzQ29tcG9uZW50LnVwZGF0ZVNlbGVjdGVkU2V0dGluZ1RpdGxlKG5ld1NldHRpbmcubGFiZWwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc1Jlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLnNldElmcmFtZUhlaWdodCh0aGlzLmNvbm5lY3Rpb25TZXR0aW5ncywgdGhpcy5ob3N0RWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgc2VhcmNoIGZpZWxkXHJcbiAgICAqL1xyXG4gICAgcHVibGljIG9uU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dEJveC5zZWFyY2hpbmcgPSB0cnVlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU1lbnUoKTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0Qm94LnNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBGaWx0ZXIgb3V0IHRoZSBzZXR0aW5ncyBJdGVtIGJhc2VkIG9uIHRoaXMuZmlsdGVyIHN0cmluZyBhbmQgbWF0Y2ggdGhlIHRpdGxlIG9mIFNldHRpbmdzIEl0ZW1zXHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBmaWx0ZXJTZXR0aW5nKCk6IENvbW1vblNldHRpbmdzTmF2aWdhdGlvbkl0ZW1bXSB7XHJcblxyXG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5zZXR0aW5ncztcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmZpbHRlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gc2V0dGluZ3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBsb2NhbEZpbHRlciA9IHRoaXMuZmlsdGVyLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBzZXR0aW5ncy5maWx0ZXIoc2V0dGluZyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZXR0aW5nLmxhYmVsLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5kZXhPZihsb2NhbEZpbHRlcikgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGlmIG5vdCBtYXRjaCB0aGUgZXhhY3QgdGl0bGUsIG5lZWQgdG8gbWF0Y2ggd2l0aCBrZXl3b3Jkc1xyXG4gICAgICAgICAgICBpZiAoc2V0dGluZy5rZXl3b3Jkcykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHNldHRpbmcua2V5d29yZHMuZmlsdGVyKGtleXdvcmQgPT4ga2V5d29yZC5pbmRleE9mKGxvY2FsRmlsdGVyKSA+IC0xKTtcclxuICAgICAgICAgICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxzbWUtc2V0dGluZ3MgW3NldHRpbmdzVGl0bGVdPVwiaGFja1Rvb2xIZWFkZXIgPyAnJyA6IHNldHRpbmdzVGl0bGVcIiBbY2xhc3Muc21lLXNldHRpbmdzLWV4dGVybmFsLWhlYWRlcl09XCJleHRlcm5hbEhlYWRlclwiPlxyXG4gIDxzbWUtc2V0dGluZ3MtbmF2aWdhdGlvbiBjbGFzcz1cInNtZS1wb3NpdGlvbi1zdHJldGNoLXYtcGhvbmUtdXAgc21lLXBvc2l0aW9uLXN0cmV0Y2gtaFwiIHN0eWxlPVwibWluLXdpZHRoOiAxNjBweFwiPlxyXG4gICAgPGhlYWRlciBjbGFzcz1cInNtZS1sYXlvdXQtdG9vbC1oZWFkZXJcIiAqbmdJZj1cImhhY2tUb29sSGVhZGVyXCI+XHJcbiAgICAgIDxoMiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLWZvbnQtaDNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInNldHRpbmdzVGl0bGVcIj57e3NldHRpbmdzVGl0bGV9fTwvaDI+XHJcbiAgICA8L2hlYWRlcj5cclxuICAgIDxkaXYgcm9sZT1cInJlZ2lvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwic2V0dGluZ3NUaXRsZVwiIGNsYXNzPVwic21lLXBvc2l0aW9uLXN0cmV0Y2ggc21lLWFycmFuZ2Utc3RhY2stdlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtZm9jdXMtem9uZVwiPlxyXG4gICAgICAgIDxmb3JtIGNsYXNzPVwic21lLW1hcmdpbi1zcXVpc2gtdi1zbVwiPlxyXG4gICAgICAgICAgPHNtZS1mb3JtLWZpZWxkICNzZWFyY2hUZXh0Qm94IHR5cGU9XCJzZWFyY2hcIiBuYW1lPVwidG9vbHNMaXN0U2VhcmNoXCIgWyhuZ01vZGVsKV09XCJmaWx0ZXJcIiBbcGxhY2Vob2xkZXJdPVwic2VhcmNoQm94UGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICBbYXV0b2ZvY3VzXT1cInRydWVcIiBbY291bnRdPVwiZmlsdGVyZWRTZXR0aW5ncyA/IGZpbHRlcmVkU2V0dGluZ3MubGVuZ3RoIDogMFwiXHJcbiAgICAgICAgICAgIChzZWFyY2gpPVwib25TZWFyY2goKVwiPjwvc21lLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5hdiByb2xlPVwidGFibGlzdFwiIGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2stdiBzbWUtZm9jdXMtem9uZVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJzY3JvbGxhYmxlU2Vjb25kYXJ5TmF2ID8gJ3NtZS1wb3NpdGlvbi1mbGV4LWF1dG8gc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0by15JyA6ICcnXCI+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtYXV0byBzbWUtYXJyYW5nZS1zdGFjay12IHNtZS1hcnJhbmdlLW92ZXJmbG93LWhpZGUteCBzbWUtYXJyYW5nZS1vdmVyZmxvdy1hdXRvLXlcIlxyXG4gICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiPlxyXG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cFRvb2xzOyBsZXQgaiA9IGluZGV4XCIgY2xhc3M9XCJzbWUtbWFyZ2luLWluc2V0LW5vbmVcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgW2lkXT1cImlkQmFnLmdyb3VwICsgJy0nICsgalwiIGNsYXNzPVwic21lLWZvbnQtaDQgc21lLWZvbnQtaDQtc2V0dGluZ3NcIiAqbmdJZj1cImdyb3VwLmdyb3VwIT09ZGVmYXVsdEdyb3VwXCJcclxuICAgICAgICAgICAgICBbdGl0bGVdPVwiZ3JvdXAuZ3JvdXBcIj57eyBncm91cC5ncm91cCB9fTwvZGl2PlxyXG4gICAgICAgICAgICA8YSAqbmdGb3I9XCJsZXQgc2V0dGluZyBvZiBncm91cC5vcHRpb25zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInNtZS1wYWRkaW5nLXNxdWlzaC12LXNtIHNtZS1hcnJhbmdlLXN0YWNrLWggc21lLWFycmFuZ2Utc3RhY2stY2VudGVyZWQtdiBzbWUtc2NoZW1lLW5hdi1pdGVtXCIgcm9sZT1cInRhYlwiXHJcbiAgICAgICAgICAgICAgaHJlZj1cInNldHRpbmcucm91dGVQYXJhbXMuZXh0cmFzICYmIHNldHRpbmcucm91dGVQYXJhbXMuZXh0cmFzLnJlcGxhY2VVcmxcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwic2VsZWN0ZWRTZXR0aW5nID09PSBzZXR0aW5nXCJcclxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJzZXR0aW5nLnJvdXRlUGFyYW1zLmNvbW1hbmRzXCIgcm91dGVyTGlua0FjdGl2ZT1cInNtZS1hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChzbWVSb3V0ZXJMaW5rQWN0aXZhdGVkKT1cIm9uU21lUm91dGVyTGlua0FjdGl2YXRlZChzZXR0aW5nKVwiXHJcbiAgICAgICAgICAgICAgW3ByZXNlcnZlRnJhZ21lbnRdPVwic2V0dGluZy5yb3V0ZVBhcmFtcy5leHRyYXMgJiYgc2V0dGluZy5yb3V0ZVBhcmFtcy5leHRyYXMucHJlc2VydmVGcmFnbWVudFwiXHJcbiAgICAgICAgICAgICAgW3NraXBMb2NhdGlvbkNoYW5nZV09XCJzZXR0aW5nLnJvdXRlUGFyYW1zLmV4dHJhcyAmJiBzZXR0aW5nLnJvdXRlUGFyYW1zLmV4dHJhcy5za2lwTG9jYXRpb25DaGFuZ2VcIlxyXG4gICAgICAgICAgICAgIFtyZXBsYWNlVXJsXT1cInNldHRpbmcucm91dGVQYXJhbXMuZXh0cmFzICYmIHNldHRpbmcucm91dGVQYXJhbXMuZXh0cmFzLnJlcGxhY2VVcmxcIlxyXG4gICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJzZXR0aW5nLnJvdXRlUGFyYW1zLmV4dHJhcyAmJiBzZXR0aW5nLnJvdXRlUGFyYW1zLmV4dHJhcy5xdWVyeVBhcmFtc1wiXHJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cInNldHRpbmcubGFiZWxcIiBhdHRyLmFyaWEtbGFiZWxsZWRieT1cInt7aWRCYWcub3B0aW9ufX0te3tqfX0te3tpfX0ge3tpZEJhZy5ncm91cH19LXt7an19XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNtZS1tYXJnaW4tcmlnaHQteHMgc21lLWxheW91dC1mbGV4IHNtZS1wb3NpdGlvbi1mbGV4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNldHRpbmcuc21lSWNvbkNsYXNzTmFtZVwiIGNsYXNzPVwic21lLWljb25cIiBbbmdDbGFzc109XCJnZXRTbWVJY29uQ2xhc3Moc2V0dGluZylcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZXR0aW5nLnVybEljb25cIiBjbGFzcz1cInNtZS11cmwtaWNvblwiIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cInNldHRpbmcudXJsSWNvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzZXR0aW5nLnVybEljb24gJiYgIXNldHRpbmcuc21lSWNvbkNsYXNzTmFtZVwiIGNsYXNzPVwic21lLXVybC1pY29uXCIgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiZGVmYXVsdEljb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lkXT1cImlkQmFnLm9wdGlvbiArICctJyArIGogKyAnLScgKyBpXCIgW2NsYXNzLnNtZS1kaXJ0eV09XCIhIShzZXR0aW5nLmZvcm0gJiYgc2V0dGluZy5mb3JtLmRpcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zbWUtcHJpc3RpbmVdPVwiIShzZXR0aW5nLmZvcm0gJiYgc2V0dGluZy5mb3JtLmRpcnR5KVwiIGNsYXNzPVwic21lLWZvbnQtbGFiZWwgc21lLWxheW91dC1mbGV4IHNtZS1wb3NpdGlvbi1mbGV4LWFsaWduLWNlbnRlclwiPnt7IHNldHRpbmcubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgPC9uYXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJoYWNrU2hvd092ZXJsYXlcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbGF5ZXIgb2YgbGF5ZXJzXCJcclxuICAgICAgICBjbGFzcz1cInNtZS1sYXlvdXQtYWJzb2x1dGUgc21lLXBvc2l0aW9uLWluc2V0LW5vbmUgc21lLWxheWVyLWFib3ZlIHNtZS1zY2hlbWUtYmFja2Ryb3Atb3BhcXVlXCJcclxuICAgICAgICAoY2xpY2spPVwib25PdmVybGF5Q2xpY2sobGF5ZXIpXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NtZS1zZXR0aW5ncy1uYXZpZ2F0aW9uPlxyXG4gIDxzbWUtc2V0dGluZ3MtaGVhZGVyICpuZ0lmPVwiISFzaG93SGVhZGVyXCI+XHJcbiAgICA8aDMgaWQ9XCJzbWUtc2hlbGwtc2V0dGluZy1zZWxlY3RlZFRpdGxlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJzZWxlY3RlZFNldHRpbmcubGFiZWxcIiAqbmdJZj1cIiEhc2VsZWN0ZWRTZXR0aW5nXCI+XHJcbiAgICAgIHt7IHNlbGVjdGVkU2V0dGluZy5sYWJlbCB9fTwvaDM+XHJcbiAgPC9zbWUtc2V0dGluZ3MtaGVhZGVyPlxyXG4gIDxzbWUtc2V0dGluZ3MtY29udGVudD5cclxuICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cclxuICA8L3NtZS1zZXR0aW5ncy1jb250ZW50PlxyXG4gIDxzbWUtc2V0dGluZ3MtZm9vdGVyPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDwvc21lLXNldHRpbmdzLWZvb3Rlcj5cclxuPC9zbWUtc2V0dGluZ3M+XHJcbiJdfQ==
|
|
@@ -12,9 +12,7 @@ export class SettingsFormDirective {
|
|
|
12
12
|
}
|
|
13
13
|
ngOnChanges(changes) {
|
|
14
14
|
if (this.smeUpdateDataInComponent && this.smeSettingsForm) {
|
|
15
|
-
|
|
16
|
-
this.updateDataInComponentSubscription.unsubscribe();
|
|
17
|
-
}
|
|
15
|
+
this.updateDataInComponentSubscription?.unsubscribe();
|
|
18
16
|
this.updateDataInComponentSubscription = this.formsService.updateFormValue().subscribe((data) => {
|
|
19
17
|
this.smeSettingsFormValueUpdate.emit(data.formGroupNewData);
|
|
20
18
|
});
|
|
@@ -27,9 +25,7 @@ export class SettingsFormDirective {
|
|
|
27
25
|
}
|
|
28
26
|
}
|
|
29
27
|
ngOnDestroy() {
|
|
30
|
-
|
|
31
|
-
this.updateDataInComponentSubscription.unsubscribe();
|
|
32
|
-
}
|
|
28
|
+
this.updateDataInComponentSubscription?.unsubscribe();
|
|
33
29
|
}
|
|
34
30
|
}
|
|
35
31
|
/** @nocollapse */ SettingsFormDirective.ɵfac = function SettingsFormDirective_Factory(t) { return new (t || SettingsFormDirective)(i0.ɵɵdirectiveInject(i1.SettingsFormService)); };
|
|
@@ -44,4 +40,4 @@ export class SettingsFormDirective {
|
|
|
44
40
|
}], smeSettingsFormValueUpdate: [{
|
|
45
41
|
type: Output
|
|
46
42
|
}] }); })();
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtZm9ybS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9zZXR0aW5ncy9zZXR0aW5ncy1mb3JtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXdCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFHOUQsTUFBTSxPQUFPLHFCQUFxQjtJQWE5QixZQUFvQixZQUFpQztRQUFqQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFYOUMsb0JBQWUsR0FBYyxJQUFJLENBQUM7UUFNbEMsK0JBQTBCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUlyRCxZQUFPLEdBQWMsSUFBSSxDQUFDO0lBQ3dCLENBQUM7SUFFbkQsV0FBVyxDQUFDLE9BQXNCO1FBQ3JDLElBQUksSUFBSSxDQUFDLHdCQUF3QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdkQsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBRXRELElBQUksQ0FBQyxpQ0FBaUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUM1RixJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2hFLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUMzQyx5Q0FBeUM7WUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsaUNBQWlDLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDMUQsQ0FBQzs7NkdBbENRLHFCQUFxQjt1R0FBckIscUJBQXFCO3VGQUFyQixxQkFBcUI7Y0FEakMsU0FBUztlQUFDLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFO3NFQUdqQyxlQUFlO2tCQURyQixLQUFLO1lBSUMsd0JBQXdCO2tCQUQ5QixLQUFLO1lBSUMsMEJBQTBCO2tCQURoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNldHRpbmdzRm9ybVNlcnZpY2UgfSBmcm9tICcuL3NldHRpbmdzLWZvcm0uc2VydmljZSc7XHJcblxyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbc21lU2V0dGluZ3NGb3JtXScgfSlcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzRm9ybURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc21lU2V0dGluZ3NGb3JtOiBGb3JtR3JvdXAgPSBudWxsO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc21lVXBkYXRlRGF0YUluQ29tcG9uZW50OiBib29sZWFuO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNtZVNldHRpbmdzRm9ybVZhbHVlVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVEYXRhSW5Db21wb25lbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBwdWJsaWMgb2xkRm9ybTogRm9ybUdyb3VwID0gbnVsbDtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybXNTZXJ2aWNlOiBTZXR0aW5nc0Zvcm1TZXJ2aWNlKSB7IH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmICh0aGlzLnNtZVVwZGF0ZURhdGFJbkNvbXBvbmVudCAmJiB0aGlzLnNtZVNldHRpbmdzRm9ybSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURhdGFJbkNvbXBvbmVudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRGF0YUluQ29tcG9uZW50U3Vic2NyaXB0aW9uID0gdGhpcy5mb3Jtc1NlcnZpY2UudXBkYXRlRm9ybVZhbHVlKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNtZVNldHRpbmdzRm9ybVZhbHVlVXBkYXRlLmVtaXQoZGF0YS5mb3JtR3JvdXBOZXdEYXRhKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnc21lU2V0dGluZ3NGb3JtJykpIHtcclxuICAgICAgICAgICAgLy8gVE9ETzogUmVnaXN0ZXIgdGhlIGZvcm0gaW4gdGhlIHNlcnZpY2VcclxuICAgICAgICAgICAgdGhpcy5mb3Jtc1NlcnZpY2UucmVtb3ZlRm9ybSh0aGlzLm9sZEZvcm0pO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1zU2VydmljZS5hZGRGb3JtKHRoaXMuc21lU2V0dGluZ3NGb3JtLCB0aGlzLnNtZVVwZGF0ZURhdGFJbkNvbXBvbmVudCk7XHJcbiAgICAgICAgICAgIHRoaXMub2xkRm9ybSA9IHRoaXMuc21lU2V0dGluZ3NGb3JtO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXRhSW5Db21wb25lbnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -68,9 +68,7 @@ export class SettingsFormService {
|
|
|
68
68
|
return fallBackRoute;
|
|
69
69
|
}
|
|
70
70
|
ngOnDestroy() {
|
|
71
|
-
|
|
72
|
-
this.routerSubscription.unsubscribe();
|
|
73
|
-
}
|
|
71
|
+
this.routerSubscription?.unsubscribe();
|
|
74
72
|
}
|
|
75
73
|
}
|
|
76
74
|
/** @nocollapse */ SettingsFormService.ɵfac = function SettingsFormService_Factory(t) { return new (t || SettingsFormService)(i0.ɵɵinject(i1.Router)); };
|
|
@@ -78,4 +76,4 @@ export class SettingsFormService {
|
|
|
78
76
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SettingsFormService, [{
|
|
79
77
|
type: Injectable
|
|
80
78
|
}], function () { return [{ type: i1.Router }]; }, null); })();
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2V0dGluZ3Mvc2V0dGluZ3MtZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQWF4QyxNQUFNLE9BQU8sbUJBQW1CO0lBYTVCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWDNCLGFBQVEsR0FBZ0IsRUFBRSxDQUFDO1FBRTFCLHFCQUFnQixHQUEyQixJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQUN4RSx1QkFBa0IsR0FBdUIsSUFBSSxPQUFPLEVBQWEsQ0FBQztRQUNsRSx3QkFBbUIsR0FBaUMsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFRM0YsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTthQUN2QyxJQUFJLENBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxDQUFDO2FBQ25ELFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQzthQUN4QztpQkFBTTtnQkFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ3BDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU0sT0FBTyxDQUFDLElBQWUsRUFBRSxxQkFBOEI7UUFDMUQsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2dCQUN2QixTQUFTLEVBQUUsSUFBSTtnQkFDZixzQkFBc0IsRUFBRSxxQkFBcUI7YUFDaEQsQ0FBQyxDQUFDO1lBRUgsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzVCO1NBQ0o7SUFDTCxDQUFDO0lBRU0sVUFBVSxDQUFDLElBQWU7UUFDN0IsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN2QztJQUNMLENBQUM7SUFFTSxZQUFZLENBQUMsSUFBZSxFQUFFLFFBQWE7UUFDOUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztZQUMxQixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGdCQUFnQixFQUFFLFFBQVE7U0FDN0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFNBQVM7UUFDWixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRU0sV0FBVztRQUNkLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFTSxlQUFlO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFTSxvQkFBb0I7UUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVNLHFCQUFxQjtRQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDeEMsQ0FBQztJQUVNLFlBQVksQ0FBQyxnQkFBd0IsR0FBRztRQUMzQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3pCO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDM0MsQ0FBQzs7eUdBcEZRLG1CQUFtQjt3R0FBbkIsbUJBQW1CLFdBQW5CLG1CQUFtQjt1RkFBbkIsbUJBQW1CO2NBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVGb3JtVmFsdWVEYXRhIHtcclxuICAgIGZvcm1Hcm91cFRvVXBkYXRlOiBGb3JtR3JvdXA7XHJcbiAgICBmb3JtR3JvdXBOZXdEYXRhOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUFkZGVkRGF0YSB7XHJcbiAgICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxuICAgIHVwZGF0ZVZhbHVlSW5Db21wb25lbnQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzRm9ybVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICAgIHB1YmxpYyBhbGxGb3JtczogRm9ybUdyb3VwW10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIGZvcm1BZGRlZFN1YmplY3Q6IFN1YmplY3Q8Rm9ybUFkZGVkRGF0YT4gPSBuZXcgU3ViamVjdDxGb3JtQWRkZWREYXRhPigpO1xyXG4gICAgcHJpdmF0ZSBmb3JtUmVtb3ZlZFN1YmplY3Q6IFN1YmplY3Q8Rm9ybUdyb3VwPiA9IG5ldyBTdWJqZWN0PEZvcm1Hcm91cD4oKTtcclxuICAgIHByaXZhdGUgdXBkYXRlRm9ybVZhbHVlRGF0YTogU3ViamVjdDxVcGRhdGVGb3JtVmFsdWVEYXRhPiA9IG5ldyBTdWJqZWN0PFVwZGF0ZUZvcm1WYWx1ZURhdGE+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSByb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgYmFja1JvdXRlOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIG5leHRCYWNrUm91dGU6IHN0cmluZztcclxuICAgIHByaXZhdGUgZnJlZXplQmFja1JvdXRlOiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgICAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZyZWV6ZUJhY2tSb3V0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dEJhY2tSb3V0ZSA9IHRoaXMucm91dGVyLnVybDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrUm91dGUgPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGRGb3JtKGZvcm06IEZvcm1Hcm91cCwgdXBkYXRlRGF0YUluQ29tcG9uZW50OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKGZvcm0pIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtQWRkZWRTdWJqZWN0Lm5leHQoe1xyXG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwOiBmb3JtLFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlVmFsdWVJbkNvbXBvbmVudDogdXBkYXRlRGF0YUluQ29tcG9uZW50XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuYWxsRm9ybXMuaW5kZXhPZihmb3JtKSA8IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRm9ybXMucHVzaChmb3JtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVtb3ZlRm9ybShmb3JtOiBGb3JtR3JvdXApIHtcclxuICAgICAgICBpZiAoZm9ybSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1SZW1vdmVkU3ViamVjdC5uZXh0KGZvcm0pO1xyXG4gICAgICAgICAgICBNc2Z0U21lLnJlbW92ZSh0aGlzLmFsbEZvcm1zLCBmb3JtKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5ld0Zvcm1WYWx1ZShmb3JtOiBGb3JtR3JvdXAsIG5ld1ZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1WYWx1ZURhdGEubmV4dCh7XHJcbiAgICAgICAgICAgIGZvcm1Hcm91cFRvVXBkYXRlOiBmb3JtLFxyXG4gICAgICAgICAgICBmb3JtR3JvdXBOZXdEYXRhOiBuZXdWYWx1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBmb3JtQWRkZWQoKTogT2JzZXJ2YWJsZTxGb3JtQWRkZWREYXRhPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUFkZGVkU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZm9ybVJlbW92ZWQoKTogT2JzZXJ2YWJsZTxGb3JtR3JvdXA+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtUmVtb3ZlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVwZGF0ZUZvcm1WYWx1ZSgpOiBPYnNlcnZhYmxlPFVwZGF0ZUZvcm1WYWx1ZURhdGE+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVGb3JtVmFsdWVEYXRhLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdG9wUHJvY2Vzc2luZ0V2ZW50cygpIHtcclxuICAgICAgICB0aGlzLmZyZWV6ZUJhY2tSb3V0ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXJ0UHJvY2Vzc2luZ0V2ZW50cygpIHtcclxuICAgICAgICB0aGlzLmZyZWV6ZUJhY2tSb3V0ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYmFja1JvdXRlID0gdGhpcy5uZXh0QmFja1JvdXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRCYWNrUm91dGUoZmFsbEJhY2tSb3V0ZTogc3RyaW5nID0gJy8nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYmFja1JvdXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhY2tSb3V0ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxsQmFja1JvdXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -172,4 +172,4 @@ __decorate([
|
|
|
172
172
|
type: HostListener,
|
|
173
173
|
args: ['window:scroll']
|
|
174
174
|
}], onLayoutChanged: [] }); })();
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcC1pbi1leHRlbnNpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc25hcC1pbi1leHRlbnNpb24vc25hcC1pbi1leHRlbnNpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc25hcC1pbi1leHRlbnNpb24vc25hcC1pbi1leHRlbnNpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDWSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBVSxRQUFRLEVBQUUsS0FBSyxFQUErQixNQUFNLEVBQUUsU0FBUyxFQUNoSSxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFJakcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFVLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7SUNWN0Qsb0NBQXVEOztBRGdCekQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGlCQUFpQjtJQXFDM0QsWUFBWSxRQUFrQixFQUFVLHNCQUE4QztRQUNsRixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFEb0IsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQXJCL0UsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBd0J2RCxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxH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LENBQUMsSUFBSSxDQUFDO1lBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQztTQUM3QztRQUVELElBQUksS0FBSyxHQUFHLGtCQUFrQixDQUFDLEtBQUssRUFBRTtZQUNsQyxNQUFNLE1BQU0sR0FBRyxLQUFLLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDO1lBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQztTQUM3QztJQUNMLENBQUM7O21IQW5LUSx3QkFBd0I7MEdBQXhCLHdCQUF3Qjs7Ozs7O3VHQUF4QixjQUFVOztRQ2pCdkIsaUNBQXdFO1FBQ3RFLHFHQUF1RDtRQUN6RCxpQkFBTTs7UUFEZ0IsZUFBYTtRQUFiLGtDQUFhOztBRGtHL0I7SUFBQyxLQUFLLEVBQUU7Ozs7K0RBb0NQO3VGQXRIUSx3QkFBd0I7Y0FKcEMsU0FBUzsyQkFDSSx1QkFBdUI7Z0dBVTFCLFdBQVc7a0JBRGpCLFNBQVM7bUJBQUMsYUFBYTtZQUlqQixXQUFXO2tCQURqQixLQUFLO1lBSUMsS0FBSztrQkFEWCxLQUFLO1lBSUMsTUFBTTtrQkFEWixNQUFNO1lBV3dCLFFBQVE7a0JBQXRDLFlBQVk7bUJBQUMsZUFBZTtZQXlEckIsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3QsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBZaWVsZCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL3lpZWxkLmRlY29yYXRvcic7XHJcbmltcG9ydCB7IFNuYXBJbkV4dGVuc2lvbkluc3RhbmNlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL2V4dGVuc2lvbi1icm9rZXIvbW9kZWwvZXh0ZW5zaW9uLWluc3RhbmNlJztcclxuaW1wb3J0IHsgRXh0ZW5zaW9uUmVjdCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvZGF0YS9leHRlbnNpb24tYnJva2VyL21vZGVsL2V4dGVuc2lvbi1yZWN0JztcclxuaW1wb3J0IHsgU25hcEluT3V0cHV0IH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL2V4dGVuc2lvbi1icm9rZXIvc25hcC1pbi1saXN0ZW5lcic7XHJcbmltcG9ydCB7IERvbSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvZG9tL2RvbSc7XHJcbmltcG9ydCB7IG1lcmdlTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFeHRlbnNpb25Ccm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9leHRlbnNpb24tYnJva2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1vbi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExheW91dCwgU01FX0xBWU9VVF9QUk9WSURFUiB9IGZyb20gJy4uL2NvbW1vbi9sYXlvdXQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1zbmFwLWluLWV4dGVuc2lvbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc25hcC1pbi1leHRlbnNpb24uY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbmFwSW5FeHRlbnNpb25Db21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0IHtcclxuICAgIC8qKlxyXG4gICAgKiBJbmplY3RlZCBAc2VlIExheW91dCBwYXJlbnQgaW5zdGFuY2UgYm91bmQgdG8gdGhpcyBjb21wb25lbnQuXHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBsYXlvdXQ6IExheW91dDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdwbGFjZWhvbGRlcicpXHJcbiAgICBwdWJsaWMgcGxhY2Vob2xkZXI6IGFueTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGV4dGVuc2lvbklkOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpbnB1dDogYW55O1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIG91dHB1dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBwdWJsaWMgaW5zdGFuY2U6IFNuYXBJbkV4dGVuc2lvbkluc3RhbmNlO1xyXG5cclxuICAgIHB1YmxpYyBsb2FkaW5nOiBib29sZWFuO1xyXG5cclxuICAgIHB1YmxpYyBvdmVyZmxvd0VsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG5cclxuICAgIHB1YmxpYyBzY3JvbGxFdmVudEhhbmRsZXI6ICgpID0+IHZvaWQ7XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcpIG9uU2Nyb2xsKCkge1xyXG4gICAgICAgIHRoaXMub25MYXlvdXRDaGFuZ2VkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc291cmNlIG5hbWUgdG8gdXNlIGZvciBsb2dnaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ1NuYXBJbkV4dGVuc2lvbkNvbXBvbmVudCc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIGV4dGVuc2lvbkJyb2tlclNlcnZpY2U6IEV4dGVuc2lvbkJyb2tlclNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcblxyXG4gICAgICAgIHRoaXMubGF5b3V0ID0gaW5qZWN0b3IuZ2V0KFNNRV9MQVlPVVRfUFJPVklERVIsIG51bGwsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZXh0ZW5zaW9uQnJva2VyU2VydmljZS5jcmVhdGVTbmFwSW4odGhpcy5leHRlbnNpb25JZCkucGlwZShcclxuICAgICAgICAgICAgbWVyZ2VNYXAoKGluc3RhbmNlOiBTbmFwSW5FeHRlbnNpb25JbnN0YW5jZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSA9IGluc3RhbmNlO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5jYWxsKCdpbnB1dCcsIDAsIFt0aGlzLmlucHV0XSkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IGZpZ3VyZSBvdXQgaWYgd2UgbmVlZCB0aGUgdGltZW91dFxyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25MYXlvdXRDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgMjAwXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxFdmVudEhhbmRsZXIgPSB0aGlzLm9uTGF5b3V0Q2hhbmdlZC5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5sYXlvdXQubGF5b3V0Q2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkxheW91dENoYW5nZWQoKSkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UubGlzdGVuKCdvdXRwdXQnKTtcclxuICAgICAgICAgICAgfSkpLnN1YnNjcmliZShvdXRwdXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG91dHB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0V2ZW50T3V0cHV0KG91dHB1dC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dC5lbWl0KG91dHB1dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UuZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT24gbGF5b3V0IGNoYW5nZWQgZXZlbnQgaGFuZGxlciwgb2NjdXJzIGV2ZXJ5IHRpbWUgdGhlIGxheW91dCBoYXMgYmVlbiBjaGFuZ2VkLlxyXG4gICAgICovXHJcbiAgICBAWWllbGQoKVxyXG4gICAgcHJpdmF0ZSBvbkxheW91dENoYW5nZWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm92ZXJmbG93RWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVyZmxvd0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5zY3JvbGxFdmVudEhhbmRsZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+dGhpcy5wbGFjZWhvbGRlci5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlclJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb25SZWN0OiBFeHRlbnNpb25SZWN0ID0ge1xyXG4gICAgICAgICAgICAgICAgYm90dG9tOiBwbGFjZWhvbGRlclJlY3QuYm90dG9tLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBwbGFjZWhvbGRlclJlY3QuaGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgbGVmdDogcGxhY2Vob2xkZXJSZWN0LmxlZnQsXHJcbiAgICAgICAgICAgICAgICByaWdodDogcGxhY2Vob2xkZXJSZWN0LnJpZ2h0LFxyXG4gICAgICAgICAgICAgICAgdG9wOiBwbGFjZWhvbGRlclJlY3QudG9wLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHBsYWNlaG9sZGVyUmVjdC53aWR0aFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3dQYXJlbnQgPSBEb20uZ2V0T3ZlcmZsb3dBbmNlc3RvcihlbGVtZW50KTtcclxuICAgICAgICAgICAgaWYgKG92ZXJmbG93UGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvdmVyZmxvd1BhcmVudFJlY3QgPSBvdmVyZmxvd1BhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgICAgICAgIGV4dGVuc2lvblJlY3Qub3ZlcmZsb3dQYXJlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0OiBvdmVyZmxvd1BhcmVudC5zY3JvbGxIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsV2lkdGg6IG92ZXJmbG93UGFyZW50LnNjcm9sbFdpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudEhlaWdodDogb3ZlcmZsb3dQYXJlbnQuY2xpZW50SGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudFdpZHRoOiBvdmVyZmxvd1BhcmVudC5jbGllbnRXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgICB0b3A6IG92ZXJmbG93UGFyZW50UmVjdC50b3AsXHJcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IG92ZXJmbG93UGFyZW50UmVjdC5yaWdodCxcclxuICAgICAgICAgICAgICAgICAgICBib3R0b206IG92ZXJmbG93UGFyZW50UmVjdC5ib3R0b20sXHJcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogb3ZlcmZsb3dQYXJlbnRSZWN0LmxlZnRcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJmbG93RWxlbWVudCA9IG92ZXJmbG93UGFyZW50O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVyZmxvd0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5zY3JvbGxFdmVudEhhbmRsZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UubW92ZShleHRlbnNpb25SZWN0KS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHByb2Nlc3NFdmVudE91dHB1dChvdXRwdXREYXRhOiBTbmFwSW5PdXRwdXQpIHtcclxuICAgICAgICBpZiAob3V0cHV0RGF0YSkge1xyXG4gICAgICAgICAgICBpZiAob3V0cHV0RGF0YS5kZWx0YVkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmZsb3dFbGVtZW50LnNjcm9sbFRvcCArPSBvdXRwdXREYXRhLmRlbHRhWTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChvdXRwdXREYXRhLmZvY3VzZWRFbGVtZW50UmVjdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVGb2N1c0V2ZW50KG91dHB1dERhdGEuZm9jdXNlZEVsZW1lbnRSZWN0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZUZvY3VzRXZlbnQoZm9jdXNlZFJlY3Q6IERPTVJlY3QpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gPEhUTUxFbGVtZW50PnRoaXMucGxhY2Vob2xkZXIubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBjb25zdCBwbGFjZWhvbGRlclJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IG92ZXJmbG93UGFyZW50UmVjdCA9IHRoaXMub3ZlcmZsb3dFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICAvLyBnZXQgdGhlIGZvY3VzZWQgZWxlbWVudHMgbG9jYXRpb24gcmVsYXRpdmUgdG8gdGhlIHBsYWNlaG9sZGVyJ3MgZnJhbWVcclxuICAgICAgICBjb25zdCB0b3AgPSBwbGFjZWhvbGRlclJlY3QudG9wICsgZm9jdXNlZFJlY3QudG9wO1xyXG4gICAgICAgIGNvbnN0IGJvdHRvbSA9IHBsYWNlaG9sZGVyUmVjdC50b3AgKyBmb2N1c2VkUmVjdC5ib3R0b207XHJcbiAgICAgICAgY29uc3QgbGVmdCA9IHBsYWNlaG9sZGVyUmVjdC5sZWZ0ICsgZm9jdXNlZFJlY3QubGVmdDtcclxuICAgICAgICBjb25zdCByaWdodCA9IHBsYWNlaG9sZGVyUmVjdC5sZWZ0ICsgZm9jdXNlZFJlY3QucmlnaHQ7XHJcblxyXG4gICAgICAgIC8vIFRPRE86IGVkZ2UgY2FzZXMgZm9yIHRoZXNlIGZvciBleGFtcGxlLCBmb2N1c1JlY3QgaXMgYmlnZ2VyIHRoYW4gb3ZlcmZsb3dQYXJlbnRcclxuICAgICAgICBpZiAodG9wIDwgb3ZlcmZsb3dQYXJlbnRSZWN0LnRvcCkge1xyXG4gICAgICAgICAgICAvLyBhYm92ZSB2aWV3cG9ydCwgbW92ZSB0byBiZSB1bmRlciB2aWV3IHBvcnRcclxuICAgICAgICAgICAgY29uc3QgZGVsdGFZID0gdG9wIC0gb3ZlcmZsb3dQYXJlbnRSZWN0LnRvcDtcclxuICAgICAgICAgICAgdGhpcy5vdmVyZmxvd0VsZW1lbnQuc2Nyb2xsVG9wICs9IGRlbHRhWTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChib3R0b20gPiBvdmVyZmxvd1BhcmVudFJlY3QuYm90dG9tKSB7XHJcbiAgICAgICAgICAgIC8vIGJlbG93IHZpZXdwb3J0XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhWSA9IGJvdHRvbSAtIG92ZXJmbG93UGFyZW50UmVjdC5ib3R0b207XHJcbiAgICAgICAgICAgIHRoaXMub3ZlcmZsb3dFbGVtZW50LnNjcm9sbFRvcCArPSBkZWx0YVk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobGVmdCA8IG92ZXJmbG93UGFyZW50UmVjdC5sZWZ0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhWCA9IGxlZnQgLSBvdmVyZmxvd1BhcmVudFJlY3QubGVmdDtcclxuICAgICAgICAgICAgdGhpcy5vdmVyZmxvd0VsZW1lbnQuc2Nyb2xsTGVmdCArPSBkZWx0YVg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmlnaHQgPiBvdmVyZmxvd1BhcmVudFJlY3QucmlnaHQpIHtcclxuICAgICAgICAgICAgY29uc3QgZGVsdGFYID0gcmlnaHQgLSBvdmVyZmxvd1BhcmVudFJlY3QucmlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMub3ZlcmZsb3dFbGVtZW50LnNjcm9sbExlZnQgKz0gZGVsdGFYO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2ICNwbGFjZWhvbGRlciBjbGFzcz1cInNtZS1wb3NpdGlvbi1zdHJldGNoLXYgc21lLXBvc2l0aW9uLXN0cmV0Y2gtaFwiPlxyXG4gIDxzbWUtbG9hZGluZy13aGVlbCAqbmdJZj1cImxvYWRpbmdcIj48L3NtZS1sb2FkaW5nLXdoZWVsPlxyXG48L2Rpdj5cclxuIl19
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcC1pbi1leHRlbnNpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc25hcC1pbi1leHRlbnNpb24vc25hcC1pbi1leHRlbnNpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc25hcC1pbi1leHRlbnNpb24vc25hcC1pbi1leHRlbnNpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDWSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUM5RyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFHakcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFVLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7SUNWN0Qsb0NBQXVEOztBRGdCekQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGlCQUFpQjtJQXFDM0QsWUFBWSxRQUFrQixFQUFVLHNCQUE4QztRQUNsRixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFEb0IsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQXJCL0UsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBd0J2RCxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxH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LENBQUMsSUFBSSxDQUFDO1lBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQztTQUM3QztRQUVELElBQUksS0FBSyxHQUFHLGtCQUFrQixDQUFDLEtBQUssRUFBRTtZQUNsQyxNQUFNLE1BQU0sR0FBRyxLQUFLLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDO1lBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQztTQUM3QztJQUNMLENBQUM7O21IQW5LUSx3QkFBd0I7MEdBQXhCLHdCQUF3Qjs7Ozs7O3VHQUF4QixjQUFVOztRQ2pCdkIsaUNBQXdFO1FBQ3RFLHFHQUF1RDtRQUN6RCxpQkFBTTs7UUFEZ0IsZUFBYTtRQUFiLGtDQUFhOztBRGtHL0I7SUFBQyxLQUFLLEVBQUU7Ozs7K0RBb0NQO3VGQXRIUSx3QkFBd0I7Y0FKcEMsU0FBUzsyQkFDSSx1QkFBdUI7Z0dBVTFCLFdBQVc7a0JBRGpCLFNBQVM7bUJBQUMsYUFBYTtZQUlqQixXQUFXO2tCQURqQixLQUFLO1lBSUMsS0FBSztrQkFEWCxLQUFLO1lBSUMsTUFBTTtrQkFEWixNQUFNO1lBV3dCLFFBQVE7a0JBQXRDLFlBQVk7bUJBQUMsZUFBZTtZQXlEckIsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBZaWVsZCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL3lpZWxkLmRlY29yYXRvcic7XHJcbmltcG9ydCB7IFNuYXBJbkV4dGVuc2lvbkluc3RhbmNlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL2V4dGVuc2lvbi1icm9rZXIvbW9kZWwvZXh0ZW5zaW9uLWluc3RhbmNlJztcclxuaW1wb3J0IHsgRXh0ZW5zaW9uUmVjdCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvZGF0YS9leHRlbnNpb24tYnJva2VyL21vZGVsL2V4dGVuc2lvbi1yZWN0JztcclxuaW1wb3J0IHsgRG9tIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kb20vZG9tJztcclxuaW1wb3J0IHsgbWVyZ2VNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNuYXBJbk91dHB1dCB9IGZyb20gJy4uLy4uL2RhdGEvZXh0ZW5zaW9uLWJyb2tlci9zbmFwLWluLWxpc3RlbmVyJztcclxuaW1wb3J0IHsgRXh0ZW5zaW9uQnJva2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvZXh0ZW5zaW9uLWJyb2tlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9jb21tb24vYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMYXlvdXQsIFNNRV9MQVlPVVRfUFJPVklERVIgfSBmcm9tICcuLi9jb21tb24vbGF5b3V0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtc25hcC1pbi1leHRlbnNpb24nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NuYXAtaW4tZXh0ZW5zaW9uLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU25hcEluRXh0ZW5zaW9uQ29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcbiAgICAvKipcclxuICAgICogSW5qZWN0ZWQgQHNlZSBMYXlvdXQgcGFyZW50IGluc3RhbmNlIGJvdW5kIHRvIHRoaXMgY29tcG9uZW50LlxyXG4gICAgKi9cclxuICAgIHByaXZhdGUgbGF5b3V0OiBMYXlvdXQ7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgncGxhY2Vob2xkZXInKVxyXG4gICAgcHVibGljIHBsYWNlaG9sZGVyOiBhbnk7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBleHRlbnNpb25JZDogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaW5wdXQ6IGFueTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBvdXRwdXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgcHVibGljIGluc3RhbmNlOiBTbmFwSW5FeHRlbnNpb25JbnN0YW5jZTtcclxuXHJcbiAgICBwdWJsaWMgbG9hZGluZzogYm9vbGVhbjtcclxuXHJcbiAgICBwdWJsaWMgb3ZlcmZsb3dFbGVtZW50OiBIVE1MRWxlbWVudDtcclxuXHJcbiAgICBwdWJsaWMgc2Nyb2xsRXZlbnRIYW5kbGVyOiAoKSA9PiB2b2lkO1xyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnKSBvblNjcm9sbCgpIHtcclxuICAgICAgICB0aGlzLm9uTGF5b3V0Q2hhbmdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNvdXJjZSBuYW1lIHRvIHVzZSBmb3IgbG9nZ2luZ1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGxvZ1NvdXJjZU5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuICdTbmFwSW5FeHRlbnNpb25Db21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBleHRlbnNpb25Ccm9rZXJTZXJ2aWNlOiBFeHRlbnNpb25Ccm9rZXJTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG5cclxuICAgICAgICB0aGlzLmxheW91dCA9IGluamVjdG9yLmdldChTTUVfTEFZT1VUX1BST1ZJREVSLCBudWxsLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmV4dGVuc2lvbkJyb2tlclNlcnZpY2UuY3JlYXRlU25hcEluKHRoaXMuZXh0ZW5zaW9uSWQpLnBpcGUoXHJcbiAgICAgICAgICAgIG1lcmdlTWFwKChpbnN0YW5jZTogU25hcEluRXh0ZW5zaW9uSW5zdGFuY2UpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UgPSBpbnN0YW5jZTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UuY2FsbCgnaW5wdXQnLCAwLCBbdGhpcy5pbnB1dF0pLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBmaWd1cmUgb3V0IGlmIHdlIG5lZWQgdGhlIHRpbWVvdXRcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTGF5b3V0Q2hhbmdlZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIDIwMFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsRXZlbnRIYW5kbGVyID0gdGhpcy5vbkxheW91dENoYW5nZWQuYmluZCh0aGlzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGF5b3V0LmxheW91dENoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMub25MYXlvdXRDaGFuZ2VkKCkpKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlLmxpc3Rlbignb3V0cHV0Jyk7XHJcbiAgICAgICAgICAgIH0pKS5zdWJzY3JpYmUob3V0cHV0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvdXRwdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NFdmVudE91dHB1dChvdXRwdXQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdXRwdXQuZW1pdChvdXRwdXQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICkpO1xyXG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xyXG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9uIGxheW91dCBjaGFuZ2VkIGV2ZW50IGhhbmRsZXIsIG9jY3VycyBldmVyeSB0aW1lIHRoZSBsYXlvdXQgaGFzIGJlZW4gY2hhbmdlZC5cclxuICAgICAqL1xyXG4gICAgQFlpZWxkKClcclxuICAgIHByaXZhdGUgb25MYXlvdXRDaGFuZ2VkKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5vdmVyZmxvd0VsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmZsb3dFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsRXZlbnRIYW5kbGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gPEhUTUxFbGVtZW50PnRoaXMucGxhY2Vob2xkZXIubmF0aXZlRWxlbWVudDtcclxuICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9uUmVjdDogRXh0ZW5zaW9uUmVjdCA9IHtcclxuICAgICAgICAgICAgICAgIGJvdHRvbTogcGxhY2Vob2xkZXJSZWN0LmJvdHRvbSxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogcGxhY2Vob2xkZXJSZWN0LmhlaWdodCxcclxuICAgICAgICAgICAgICAgIGxlZnQ6IHBsYWNlaG9sZGVyUmVjdC5sZWZ0LFxyXG4gICAgICAgICAgICAgICAgcmlnaHQ6IHBsYWNlaG9sZGVyUmVjdC5yaWdodCxcclxuICAgICAgICAgICAgICAgIHRvcDogcGxhY2Vob2xkZXJSZWN0LnRvcCxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiBwbGFjZWhvbGRlclJlY3Qud2lkdGhcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93UGFyZW50ID0gRG9tLmdldE92ZXJmbG93QW5jZXN0b3IoZWxlbWVudCk7XHJcbiAgICAgICAgICAgIGlmIChvdmVyZmxvd1BhcmVudCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3dQYXJlbnRSZWN0ID0gb3ZlcmZsb3dQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgICAgICAgICBleHRlbnNpb25SZWN0Lm92ZXJmbG93UGFyZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbEhlaWdodDogb3ZlcmZsb3dQYXJlbnQuc2Nyb2xsSGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbFdpZHRoOiBvdmVyZmxvd1BhcmVudC5zY3JvbGxXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgICBjbGllbnRIZWlnaHQ6IG92ZXJmbG93UGFyZW50LmNsaWVudEhlaWdodCxcclxuICAgICAgICAgICAgICAgICAgICBjbGllbnRXaWR0aDogb3ZlcmZsb3dQYXJlbnQuY2xpZW50V2lkdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBvdmVyZmxvd1BhcmVudFJlY3QudG9wLFxyXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBvdmVyZmxvd1BhcmVudFJlY3QucmlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBvdmVyZmxvd1BhcmVudFJlY3QuYm90dG9tLFxyXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IG92ZXJmbG93UGFyZW50UmVjdC5sZWZ0XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVyZmxvd0VsZW1lbnQgPSBvdmVyZmxvd1BhcmVudDtcclxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmZsb3dFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsRXZlbnRIYW5kbGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLm1vdmUoZXh0ZW5zaW9uUmVjdCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBwcm9jZXNzRXZlbnRPdXRwdXQob3V0cHV0RGF0YTogU25hcEluT3V0cHV0KSB7XHJcbiAgICAgICAgaWYgKG91dHB1dERhdGEpIHtcclxuICAgICAgICAgICAgaWYgKG91dHB1dERhdGEuZGVsdGFZKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJmbG93RWxlbWVudC5zY3JvbGxUb3AgKz0gb3V0cHV0RGF0YS5kZWx0YVk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3V0cHV0RGF0YS5mb2N1c2VkRWxlbWVudFJlY3QpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRm9jdXNFdmVudChvdXRwdXREYXRhLmZvY3VzZWRFbGVtZW50UmVjdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVGb2N1c0V2ZW50KGZvY3VzZWRSZWN0OiBET01SZWN0KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IDxIVE1MRWxlbWVudD50aGlzLnBsYWNlaG9sZGVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICBjb25zdCBvdmVyZmxvd1BhcmVudFJlY3QgPSB0aGlzLm92ZXJmbG93RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgLy8gZ2V0IHRoZSBmb2N1c2VkIGVsZW1lbnRzIGxvY2F0aW9uIHJlbGF0aXZlIHRvIHRoZSBwbGFjZWhvbGRlcidzIGZyYW1lXHJcbiAgICAgICAgY29uc3QgdG9wID0gcGxhY2Vob2xkZXJSZWN0LnRvcCArIGZvY3VzZWRSZWN0LnRvcDtcclxuICAgICAgICBjb25zdCBib3R0b20gPSBwbGFjZWhvbGRlclJlY3QudG9wICsgZm9jdXNlZFJlY3QuYm90dG9tO1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSBwbGFjZWhvbGRlclJlY3QubGVmdCArIGZvY3VzZWRSZWN0LmxlZnQ7XHJcbiAgICAgICAgY29uc3QgcmlnaHQgPSBwbGFjZWhvbGRlclJlY3QubGVmdCArIGZvY3VzZWRSZWN0LnJpZ2h0O1xyXG5cclxuICAgICAgICAvLyBUT0RPOiBlZGdlIGNhc2VzIGZvciB0aGVzZSBmb3IgZXhhbXBsZSwgZm9jdXNSZWN0IGlzIGJpZ2dlciB0aGFuIG92ZXJmbG93UGFyZW50XHJcbiAgICAgICAgaWYgKHRvcCA8IG92ZXJmbG93UGFyZW50UmVjdC50b3ApIHtcclxuICAgICAgICAgICAgLy8gYWJvdmUgdmlld3BvcnQsIG1vdmUgdG8gYmUgdW5kZXIgdmlldyBwb3J0XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhWSA9IHRvcCAtIG92ZXJmbG93UGFyZW50UmVjdC50b3A7XHJcbiAgICAgICAgICAgIHRoaXMub3ZlcmZsb3dFbGVtZW50LnNjcm9sbFRvcCArPSBkZWx0YVk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYm90dG9tID4gb3ZlcmZsb3dQYXJlbnRSZWN0LmJvdHRvbSkge1xyXG4gICAgICAgICAgICAvLyBiZWxvdyB2aWV3cG9ydFxyXG4gICAgICAgICAgICBjb25zdCBkZWx0YVkgPSBib3R0b20gLSBvdmVyZmxvd1BhcmVudFJlY3QuYm90dG9tO1xyXG4gICAgICAgICAgICB0aGlzLm92ZXJmbG93RWxlbWVudC5zY3JvbGxUb3AgKz0gZGVsdGFZO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGxlZnQgPCBvdmVyZmxvd1BhcmVudFJlY3QubGVmdCkge1xyXG4gICAgICAgICAgICBjb25zdCBkZWx0YVggPSBsZWZ0IC0gb3ZlcmZsb3dQYXJlbnRSZWN0LmxlZnQ7XHJcbiAgICAgICAgICAgIHRoaXMub3ZlcmZsb3dFbGVtZW50LnNjcm9sbExlZnQgKz0gZGVsdGFYO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJpZ2h0ID4gb3ZlcmZsb3dQYXJlbnRSZWN0LnJpZ2h0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhWCA9IHJpZ2h0IC0gb3ZlcmZsb3dQYXJlbnRSZWN0LnJpZ2h0O1xyXG4gICAgICAgICAgICB0aGlzLm92ZXJmbG93RWxlbWVudC5zY3JvbGxMZWZ0ICs9IGRlbHRhWDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiAjcGxhY2Vob2xkZXIgY2xhc3M9XCJzbWUtcG9zaXRpb24tc3RyZXRjaC12IHNtZS1wb3NpdGlvbi1zdHJldGNoLWhcIj5cclxuICA8c21lLWxvYWRpbmctd2hlZWwgKm5nSWY9XCJsb2FkaW5nXCI+PC9zbWUtbG9hZGluZy13aGVlbD5cclxuPC9kaXY+XHJcbiJdfQ==
|