@tuki-io/tuki-widgets 0.0.158 → 0.0.161
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/esm2020/contact-center/cc-readiness/cc-readiness.module.mjs +1 -1
- package/esm2020/contact-center/cc-readiness/cc-readiness.service.mjs +1 -1
- package/esm2020/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.mjs +3 -3
- package/esm2020/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.mjs +3 -3
- package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +2 -2
- package/esm2020/di2mt/widgets/upgrade-overview/cards/pending-activation-users/pending-activation-users.component.mjs +17 -17
- package/esm2020/user-creation/public-api.mjs +13 -0
- package/esm2020/user-creation/src/shared/material.module.mjs +76 -0
- package/esm2020/user-creation/src/shared/services/user-creation-api.service.mjs +10 -0
- package/esm2020/user-creation/src/shared/shared.module.mjs +33 -0
- package/esm2020/user-creation/src/user-creation.module.mjs +58 -0
- package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.mjs +23 -0
- package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component.mjs +19 -0
- package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.mjs +20 -0
- package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +34 -0
- package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.mjs +192 -0
- package/esm2020/user-creation/tuki-io-tuki-widgets-user-creation.mjs +5 -0
- package/esm2020/user-device-manage/src/app.constants.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +1 -1
- package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.mjs +22 -12
- package/esm2020/user-device-manage/src/device-info/device-info.component.mjs +3 -3
- package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +36 -26
- package/esm2020/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
- package/esm2020/user-device-manage/src/pipes/mac-address.pipe.mjs +1 -1
- package/esm2020/user-device-manage/src/services/api.service.mjs +1 -1
- package/esm2020/user-device-manage/src/services/dns.service.mjs +34 -2
- package/esm2020/user-device-manage/src/services/line.service.mjs +4 -4
- package/esm2020/user-device-manage/src/services/user.service.mjs +68 -47
- package/esm2020/user-device-manage/src/shared/tk-page-section/page-section.component.mjs +1 -1
- package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +3 -3
- package/esm2020/user-manage/src/app.constants.mjs +1 -1
- package/esm2020/user-manage/src/classes/line-association-interface.mjs +1 -1
- package/esm2020/user-manage/src/classes/line-directory.mjs +1 -1
- package/esm2020/user-manage/src/classes/line.mjs +1 -1
- package/esm2020/user-manage/src/classes/pagination.mjs +1 -1
- package/esm2020/user-manage/src/classes/simplified-user.mjs +1 -1
- package/esm2020/user-manage/src/device-list/device-list.component.mjs +3 -3
- package/esm2020/user-manage/src/device-list/device-row/device-row.component.mjs +3 -3
- package/esm2020/user-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
- package/esm2020/user-manage/src/services/api.service.mjs +1 -1
- package/esm2020/user-manage/src/services/user.service.mjs +1 -1
- package/esm2020/user-manage/src/user-calling/user-calling.component.mjs +4 -6
- package/esm2020/user-manage/src/user-info/user-info.component.mjs +3 -3
- package/esm2020/user-manage/src/user-manage.module.mjs +1 -1
- package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +3 -3
- package/esm2020/users-list/src/app.constants.mjs +1 -1
- package/esm2020/users-list/src/classes/move-user.mjs +1 -1
- package/esm2020/users-list/src/components/table-toolbar/table-toolbar.component.mjs +9 -3
- package/esm2020/users-list/src/services/dns.service.mjs +2 -2
- package/esm2020/users-list/src/services/user.service.mjs +1 -1
- package/esm2020/users-list/src/users-list.component.mjs +9 -3
- package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +3 -3
- package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs +2 -2
- package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +20 -20
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +429 -0
- package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +317 -249
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +13 -15
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +19 -7
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs +2 -2
- package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +20 -20
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +440 -0
- package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +320 -251
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +13 -15
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +19 -7
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
- package/package.json +9 -1
- package/user-creation/index.d.ts +5 -0
- package/user-creation/public-api.d.ts +2 -0
- package/user-creation/src/shared/material.module.d.ts +15 -0
- package/user-creation/src/shared/services/user-creation-api.service.d.ts +5 -0
- package/user-creation/src/shared/shared.module.d.ts +10 -0
- package/user-creation/src/user-creation.module.d.ts +15 -0
- package/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.d.ts +8 -0
- package/user-creation/src/widgets/user-creation-wizard/components/user-overview-step/user-overview-step.component.d.ts +11 -0
- package/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.d.ts +8 -0
- package/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.d.ts +11 -0
- package/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.d.ts +81 -0
- package/user-device-manage/src/classes/deviceProfile.d.ts +9 -0
- package/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.d.ts +6 -2
- package/user-device-manage/src/device-manage-widget.component.d.ts +7 -3
- package/user-device-manage/src/services/dns.service.d.ts +4 -0
- package/user-device-manage/src/services/user.service.d.ts +20 -18
- package/users-list/src/components/table-toolbar/table-toolbar.component.d.ts +3 -1
- package/users-list/src/users-list.component.d.ts +3 -1
|
@@ -46,6 +46,7 @@ export class UsersListComponent {
|
|
|
46
46
|
this.openUser = new EventEmitter();
|
|
47
47
|
this.userMoved = new EventEmitter();
|
|
48
48
|
this.switchToWizard = new EventEmitter();
|
|
49
|
+
this.createUserRequested = new EventEmitter();
|
|
49
50
|
this.displayedColumns = DISPLAYED_COLS;
|
|
50
51
|
this.showMoveUserWizard = false;
|
|
51
52
|
this.moveUserPending = false;
|
|
@@ -323,6 +324,9 @@ export class UsersListComponent {
|
|
|
323
324
|
searchByType(userType) {
|
|
324
325
|
this.searchUsers('', userType);
|
|
325
326
|
}
|
|
327
|
+
onCreateUserRequested() {
|
|
328
|
+
this.createUserRequested.emit();
|
|
329
|
+
}
|
|
326
330
|
filterByToken(users, token) {
|
|
327
331
|
const tok = (token || '').toLowerCase();
|
|
328
332
|
const filtered = (users || []).filter((user) => {
|
|
@@ -414,10 +418,10 @@ export class UsersListComponent {
|
|
|
414
418
|
}
|
|
415
419
|
}
|
|
416
420
|
UsersListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListComponent, deps: [{ token: i1.UserService }, { token: i2.APIService }, { token: i3.ApiWebexService }, { token: i4.NotificationService }, { token: i5.UsersSearchService }, { token: i6.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
417
|
-
UsersListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UsersListComponent, selector: "app-users-list", inputs: { token: "token", customerId: "customerId", siteId: "siteId", host: "host" }, outputs: { openUser: "openUser", userMoved: "userMoved", switchToWizard: "switchToWizard" }, ngImport: i0, template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\r\n <tk-users-table-toolbar\r\n [totalUsersCount]=\"totalUsersCount\"\r\n (searchChange)=\"searchUsers($event)\"\r\n (searchByType)=\"searchByType($event)\"\r\n ></tk-users-table-toolbar>\r\n <table\r\n class=\"webex-table\"\r\n mat-table\r\n *ngIf=\"users?.length\"\r\n #table\r\n [dataSource]=\"dataSource\"\r\n >\r\n <!-- <ng-container matColumnDef=\"user-icon\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\r\n </td>\r\n </ng-container> -->\r\n\r\n <ng-container matColumnDef=\"name\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"webex-table-th\"\r\n style=\"padding-left: 60px\"\r\n >\r\n Display name\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n <div class=\"display-name-wrapper\">\r\n <span\r\n class=\"user-name-text\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n >\r\n {{ user.firstName }} {{ user.lastName }}\r\n </span>\r\n <span class=\"icon-webex-box\"\r\n ><span class=\"icon-webex icon-webex-user\"></span\r\n ></span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"email\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ user.email }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"status\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n <span class=\"header-with-info\">\r\n Status\r\n <img src=\"assets/icons/info-circle-regular.svg\" width=\"16\" alt=\"\" />\r\n </span>\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n [matTooltip]=\"user.status !== 'Active' && user.webexUUID ? 'Pending cutover to MT. Please contact your administrator for details.' : ''\"\r\n matTooltipPosition=\"above\"\r\n >\r\n <span\r\n class=\"icon-user-status\"\r\n [ngClass]=\"{ 'icon-user-status-active': user.status === 'Active' }\"\r\n ></span\r\n >{{ user.status }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"webex-table-th\"\r\n style=\"padding-left: 24px; padding-top: 4px\"\r\n >\r\n <img src=\"assets/icons/settings-regular.svg\" width=\"16\" alt=\"\" />\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user; let i = index\"\r\n style=\"position: relative;\"\r\n >\r\n <mat-progress-spinner\r\n class=\"field-spinner\"\r\n [diameter]=\"30\"\r\n strokeWidth=\"3\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"user.status === 'In Progress' || user.status === 'Pending Activation' || user.status === 'Pending Deactivation'\"\r\n ></mat-progress-spinner>\r\n <button\r\n *ngIf=\"\r\n !(\r\n moveUserPending &&\r\n moveInProgressUserId &&\r\n moveInProgressUserId === user?.userid\r\n )\r\n \"\r\n class=\"button-action-dot\"\r\n mat-icon-button\r\n [matMenuTriggerFor]=\"menu\"\r\n >\r\n <div class=\"icon-actions-dots\">\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n </div>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\r\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\r\n <button\r\n [disabled]=\"user.webexUUID || user.status !== 'Active'\"\r\n *ngIf=\"!user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'QuickMove', 'MT')\"\r\n >\r\n Quick Upgrade User to MT\r\n </button>\r\n <button\r\n [disabled]=\"user.webexUUID || user.status !== 'Active'\"\r\n *ngIf=\"!user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'MT', 'MT')\"\r\n >\r\n Upgrade User to MT\r\n </button>\r\n <button\r\n *ngIf=\"user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'DI', 'DI')\"\r\n >\r\n Revert User to UCM/DI\r\n </button>\r\n <button mat-menu-item [disabled]=\"!user.webexUUID || user.status === 'Active'\" (click)=\"onFirmwareUpgradeClicked(user)\">Activate User</button>\r\n <button mat-menu-item [disabled]=\"!user.webexUUID || user.status !== 'Active'\" (click)=\"onRevertClicked(user)\">Revert</button>\r\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"role\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n Admin roles\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ user.roleName || \"-\" }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"source\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n Provisioning Type\r\n </th>\r\n <td\r\n class=\"user-provisioning-type\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n <ng-container *ngIf=\"user.webexUUID\">\r\n <span [matTooltip]=\"'Multi-Tenant'\" class=\"icon-wrapper\" matTooltipPosition=\"right\"\r\n ><img src=\"assets/icons/webex.svg\" width=\"20\" alt=\"\"\r\n /></span>\r\n </ng-container>\r\n <ng-container *ngIf=\"!user.webexUUID\">\r\n <span *ngIf=\"user.cucmId == ON_PREM_ID\" class=\"icon-wrapper\" [matTooltip]=\"'On Prem'\" matTooltipPosition=\"right\"\r\n ><img src=\"assets/icons/local_24.svg\" width=\"20\" alt=\"\"\r\n /></span>\r\n <span *ngIf=\"user.cucmId != ON_PREM_ID\" class=\"icon-wrapper\" [matTooltip]=\"'Dedicated Instance'\" matTooltipPosition=\"right\"\r\n ><img src=\"assets/icons/di_cloud_24.svg\" width=\"20\" alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"last-active-time\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n <span class=\"header-with-info\">\r\n Last active time\r\n <!-- <mat-icon class=\"info-icon\">info</mat-icon> -->\r\n <img src=\"assets/icons/info-circle-regular.svg\" width=\"16\" alt=\"\" />\r\n </span>\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n 2/16/26\r\n </td>\r\n /\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"\r\n [ngClass]=\"{\r\n 'disabled-user-row':\r\n moveUserPending &&\r\n moveInProgressUserId &&\r\n moveInProgressUserId === row?.userid,\r\n 'inactive-user-row': row.status !== 'Active'\r\n }\">\r\n </tr>\r\n </table>\r\n\r\n <app-pagination\r\n [pagination]=\"usersSearchService.getPagination()\"\r\n [showPageSizeOptions]=\"true\"\r\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\r\n (pageEmitter)=\"pageEvent($event)\"\r\n >\r\n </app-pagination>\r\n</div>\r\n\r\n<app-move-user-wizard\r\n *ngIf=\"showMoveUserWizard\"\r\n [user]=\"moveUser\"\r\n (done)=\"closeMoveUserWizard(true)\"\r\n [customerId]=\"customerId\"\r\n (runMoveUser)=\"runMoveUserToMT()\"\r\n (closeMoveUserWizard)=\"closeMoveUserWizard(false)\"\r\n></app-move-user-wizard>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";#users-list{letter-spacing:.5px}.header-with-info{display:flex;align-items:center;gap:.5rem}.header-with-info .info-icon{font-size:16px;color:#c3c3c3;cursor:pointer}table.mat-table{border-spacing:0;width:100%}::ng-deep .mat-paginator{background:none}.icon-user-status{width:.5rem;height:.5rem;border-radius:50%;background-color:#707070;margin:0 5px 0 0}.icon-user-status.icon-user-status-active{background-color:#1d805f;display:inline-block}.mat-select{height:100%;line-height:35px}.mat-form-field-wrapper{padding-bottom:0!important}.mat-form-field{padding:0;max-width:300px}.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:.7rem;line-height:1rem;background:#545454;border-radius:2rem;line-height:40px;text-align:center;flex-shrink:0}.icon-webex{filter:brightness(0) invert(1);background-repeat:no-repeat;background-position:center;display:inline-block;height:20px;width:20px;background-size:contain}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M23.23 16.757a5.746 5.746 0 1 0-7.041-9.048 5 5 0 0 0 .071-.705 4.75 4.75 0 1 0-7.705 3.689 8.43 8.43 0 0 0-6.305 7.84c0 1.052.543 2.521 3.13 3.55 1.643.595 3.371.92 5.118.965a7.8 7.8 0 0 0-.248 1.926c0 1.1.57 2.636 3.285 3.716a18.1 18.1 0 0 0 6.463 1.06c4.853 0 9.75-1.476 9.75-4.776a8.86 8.86 0 0 0-6.517-8.217M20 7.755a4.25 4.25 0 0 1 .006 8.499h-.013a4.25 4.25 0 0 1 .007-8.5M8.26 7.004a3.25 3.25 0 1 1 6.5 0 3.25 3.25 0 0 1-6.5 0m2.76 14.574c-4.177-.093-7.27-1.368-7.27-3.045 0-3.737 3.478-6.778 7.752-6.778a8.7 8.7 0 0 1 2.757.45 5.75 5.75 0 0 0 2.508 4.552 9.43 9.43 0 0 0-5.747 4.82m8.978 6.672c-4.703 0-8.249-1.408-8.249-3.276 0-3.982 3.7-7.22 8.25-7.22s8.248 3.238 8.248 7.22c0 1.868-3.546 3.276-8.25 3.276%22%2F%3E%3C%2Fsvg%3E\")}.icon-webex-info{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D %3Ccircle cx%3D%2212%22 cy%3D%2212%22 r%3D%2211%22 stroke%3D%22currentColor%22 stroke-width%3D%221.5%22%2F%3E%0D %3Ccircle cx%3D%2212%22 cy%3D%227.5%22 r%3D%221%22 fill%3D%22currentColor%22%2F%3E%0D %3Crect x%3D%2211%22 y%3D%2210%22 width%3D%222%22 height%3D%227%22 rx%3D%221%22 fill%3D%22currentColor%22%2F%3E%0D%3C%2Fsvg%3E\")}.icon-webex-cogs{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D %3Ccircle cx%3D%2212%22 cy%3D%2212%22 r%3D%223.5%22 stroke%3D%22currentColor%22 stroke-width%3D%221.2%22%2F%3E%0D %0D %3Cpath d%3D%22M12 2C12.8 2 13.5 2.5 13.8 3.2L14.2 4.2C14.4 4.8 15 5.2 15.7 5.1L16.8 4.9C17.8 4.7 18.8 5.2 19.3 6.1L20.5 8.2C21 9.1 20.9 10.2 20.1 11L19.4 11.6C18.9 12 18.9 12.7 19.4 13.1L20.1 13.7C20.9 14.5 21 15.6 20.5 16.5L19.3 18.6C18.8 19.5 17.8 20 16.8 19.8L15.7 19.6C15 19.5 14.4 19.9 14.2 20.5L13.8 21.5C13.5 22.2 12.8 22.7 12 22.7C11.2 22.7 10.5 22.2 10.2 21.5L9.8 20.5C9.6 19.9 9 19.5 8.3 19.6L7.2 19.8C6.2 20 5.2 19.5 4.7 18.6L3.5 16.5C3 15.6 3.1 14.5 3.9 13.7L4.6 13.1C5.1 12.7 5.1 12 4.6 11.6L3.9 11C3.1 10.2 3 9.1 3.5 8.2L4.7 6.1C5.2 5.2 6.2 4.7 7.2 4.9L8.3 5.1C9 5.2 9.6 4.8 9.8 4.2L10.2 3.2C10.5 2.5 11.2 2 12 2Z%22 %0D stroke%3D%22currentColor%22 %0D stroke-width%3D%221.2%22 %0D stroke-linejoin%3D%22round%22%2F%3E%0D%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;font-style:normal}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:gray!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-size:14px}.user-info-box h3{display:block;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#ededed;color:#636363;font-size:12px}.webex-table th:hover{background-color:#dedede}.webex-table th ::ng-deep .mat-icon{font-size:16px;display:flex;align-items:center}.webex-table tr{background:#fff;color:#000000f2;font-size:14px}.webex-table tr:hover:not(.disabled-user-row){background:#ededed;cursor:pointer}.webex-table tr.inactive-user-row{opacity:.35}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{padding:0 24px 0 12px;border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.webex-table .display-name-wrapper{display:flex;align-items:center;justify-content:left;flex-flow:row-reverse;gap:1rem}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#f3f6f6;border:1px solid #e2e9ef;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important;line-height:35px!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}.mat-form-field-wrapper,.mat-form-field-flex{height:30px!important}.mat-form-field-appearance-outline .mat-form-field-outline,.mat-form-field-outline .mat-form-field-outline-thick{height:35px!important}.mat-select{line-height:20px!important}.mat-form-field-appearance-outline .mat-form-field-infix{padding:14px 12px 10px;border-top:0;max-width:300px}.mat-tab-group{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.mat-tab-label{font-weight:500!important;font-size:14px!important;height:auto!important;min-width:auto!important;padding:0!important}.mat-ink-bar{background-color:#000000e6!important;height:3px!important}.mat-form-field-wrapper{padding-bottom:0}.mat-form-field{max-width:300px}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}:host ::ng-deep .mat-form-field-wrapper{height:30px}:host ::ng-deep .mat-form-field-flex{height:30px}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:host ::ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}:host ::ng-deep .mat-select{line-height:20px}:host ::ng-deep .mat-form-field-infix{border-top:0px!important}:host ::ng-deep .mat-paginator{background:transparent!important}:host ::ng-deep .mat-paginator-container{min-height:30px!important}:host ::ng-deep .mat-paginator-range-label{margin:0 10px 0 24px!important;font-size:15px!important}:host ::ng-deep .pagination{font-size:13px;color:#0000008a}:host ::ng-deep .per-page-block{display:flex;line-height:42px!important}:host ::ng-deep .item_per_page{line-height:42px!important}:host ::ng-deep .select-page-size{line-height:42px!important}:host ::ng-deep mat-progress-spinner.page-spinner{position:fixed;margin:auto;inset:0}:host ::ng-deep mat-progress-spinner.field-spinner{position:absolute;margin:-15px -29px}:host ::ng-deep mat-progress-spinner.tab-spinner{position:relative;margin:0 auto auto}.icon-dot{display:block;color:#4f4f4f;font-size:16px;line-height:5px}.button-action-dot:hover{background:#dfdfdf}.button-action-dot{padding:0 5px 5px;border-radius:.25rem}.user-provisioning-type{text-align:start}.user-provisioning-type .icon-wrapper{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i12.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i12.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i12.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i13.PaginationComponent, selector: "app-pagination", inputs: ["pagination", "showPageSizeOptions", "showRefreshButton", "lengthPending"], outputs: ["pageEmitter", "pageNumberChangeEmitter"] }, { kind: "component", type: i14.AppLoaderComponent, selector: "app-loader" }, { kind: "component", type: i15.MoveUserWizardComponent, selector: "app-move-user-wizard", inputs: ["user", "customerId"], outputs: ["closeMoveUserWizard", "done", "runMoveUser"] }, { kind: "component", type: i16.TableToolbarComponent, selector: "tk-users-table-toolbar", inputs: ["totalUsersCount"], outputs: ["searchChange", "searchByType"] }] });
|
|
421
|
+
UsersListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UsersListComponent, selector: "app-users-list", inputs: { token: "token", customerId: "customerId", siteId: "siteId", host: "host" }, outputs: { openUser: "openUser", userMoved: "userMoved", switchToWizard: "switchToWizard", createUserRequested: "createUserRequested" }, ngImport: i0, template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\r\n <tk-users-table-toolbar\r\n [totalUsersCount]=\"totalUsersCount\"\r\n (searchChange)=\"searchUsers($event)\"\r\n (searchByType)=\"searchByType($event)\"\r\n (addUser)=\"onCreateUserRequested()\"\r\n ></tk-users-table-toolbar>\r\n <table\r\n class=\"webex-table\"\r\n mat-table\r\n *ngIf=\"users?.length\"\r\n #table\r\n [dataSource]=\"dataSource\"\r\n >\r\n <!-- <ng-container matColumnDef=\"user-icon\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\r\n </td>\r\n </ng-container> -->\r\n\r\n <ng-container matColumnDef=\"name\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"webex-table-th\"\r\n style=\"padding-left: 60px\"\r\n >\r\n Display name\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n <div class=\"display-name-wrapper\">\r\n <span\r\n class=\"user-name-text\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n >\r\n {{ user.firstName }} {{ user.lastName }}\r\n </span>\r\n <span class=\"icon-webex-box\"\r\n ><span class=\"icon-webex icon-webex-user\"></span\r\n ></span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"email\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ user.email }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"status\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n <span class=\"header-with-info\">\r\n Status\r\n <img src=\"assets/icons/info-circle-regular.svg\" width=\"16\" alt=\"\" />\r\n </span>\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n [matTooltip]=\"user.status !== 'Active' && user.webexUUID ? 'Pending cutover to MT. Please contact your administrator for details.' : ''\"\r\n matTooltipPosition=\"above\"\r\n >\r\n <span\r\n class=\"icon-user-status\"\r\n [ngClass]=\"{ 'icon-user-status-active': user.status === 'Active' }\"\r\n ></span\r\n >{{ user.status }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"webex-table-th\"\r\n style=\"padding-left: 24px; padding-top: 4px\"\r\n >\r\n <img src=\"assets/icons/settings-regular.svg\" width=\"16\" alt=\"\" />\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user; let i = index\"\r\n style=\"position: relative;\"\r\n >\r\n <mat-progress-spinner\r\n class=\"field-spinner\"\r\n [diameter]=\"30\"\r\n strokeWidth=\"3\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"user.status === 'In Progress' || user.status === 'Pending Activation' || user.status === 'Pending Deactivation'\"\r\n ></mat-progress-spinner>\r\n <button\r\n *ngIf=\"\r\n !(\r\n moveUserPending &&\r\n moveInProgressUserId &&\r\n moveInProgressUserId === user?.userid\r\n )\r\n \"\r\n class=\"button-action-dot\"\r\n mat-icon-button\r\n [matMenuTriggerFor]=\"menu\"\r\n >\r\n <div class=\"icon-actions-dots\">\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n </div>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\r\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\r\n <button\r\n [disabled]=\"user.webexUUID || user.status !== 'Active'\"\r\n *ngIf=\"!user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'QuickMove', 'MT')\"\r\n >\r\n Quick Upgrade User to MT\r\n </button>\r\n <button\r\n [disabled]=\"user.webexUUID || user.status !== 'Active'\"\r\n *ngIf=\"!user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'MT', 'MT')\"\r\n >\r\n Upgrade User to MT\r\n </button>\r\n <button\r\n *ngIf=\"user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'DI', 'DI')\"\r\n >\r\n Revert User to UCM/DI\r\n </button>\r\n <button mat-menu-item [disabled]=\"!user.webexUUID || user.status === 'Active'\" (click)=\"onFirmwareUpgradeClicked(user)\">Activate User</button>\r\n <button mat-menu-item [disabled]=\"!user.webexUUID || user.status !== 'Active'\" (click)=\"onRevertClicked(user)\">Revert</button>\r\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"role\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n Admin roles\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ user.roleName || \"-\" }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"source\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n Provisioning Type\r\n </th>\r\n <td\r\n class=\"user-provisioning-type\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n <ng-container *ngIf=\"user.webexUUID\">\r\n <span [matTooltip]=\"'Multi-Tenant'\" class=\"icon-wrapper\" matTooltipPosition=\"right\"\r\n ><img src=\"assets/icons/webex.svg\" width=\"20\" alt=\"\"\r\n /></span>\r\n </ng-container>\r\n <ng-container *ngIf=\"!user.webexUUID\">\r\n <span *ngIf=\"user.cucmId == ON_PREM_ID\" class=\"icon-wrapper\" [matTooltip]=\"'On Prem'\" matTooltipPosition=\"right\"\r\n ><img src=\"assets/icons/local_24.svg\" width=\"20\" alt=\"\"\r\n /></span>\r\n <span *ngIf=\"user.cucmId != ON_PREM_ID\" class=\"icon-wrapper\" [matTooltip]=\"'Dedicated Instance'\" matTooltipPosition=\"right\"\r\n ><img src=\"assets/icons/di_cloud_24.svg\" width=\"20\" alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"last-active-time\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n <span class=\"header-with-info\">\r\n Last active time\r\n <!-- <mat-icon class=\"info-icon\">info</mat-icon> -->\r\n <img src=\"assets/icons/info-circle-regular.svg\" width=\"16\" alt=\"\" />\r\n </span>\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n 2/16/26\r\n </td>\r\n /\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"\r\n [ngClass]=\"{\r\n 'disabled-user-row':\r\n moveUserPending &&\r\n moveInProgressUserId &&\r\n moveInProgressUserId === row?.userid,\r\n 'inactive-user-row': row.status !== 'Active'\r\n }\">\r\n </tr>\r\n </table>\r\n\r\n <app-pagination\r\n [pagination]=\"usersSearchService.getPagination()\"\r\n [showPageSizeOptions]=\"true\"\r\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\r\n (pageEmitter)=\"pageEvent($event)\"\r\n >\r\n </app-pagination>\r\n</div>\r\n\r\n<app-move-user-wizard\r\n *ngIf=\"showMoveUserWizard\"\r\n [user]=\"moveUser\"\r\n (done)=\"closeMoveUserWizard(true)\"\r\n [customerId]=\"customerId\"\r\n (runMoveUser)=\"runMoveUserToMT()\"\r\n (closeMoveUserWizard)=\"closeMoveUserWizard(false)\"\r\n></app-move-user-wizard>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";#users-list{letter-spacing:.5px}.header-with-info{display:flex;align-items:center;gap:.5rem}.header-with-info .info-icon{font-size:16px;color:#c3c3c3;cursor:pointer}table.mat-table{border-spacing:0;width:100%}::ng-deep .mat-paginator{background:none}.icon-user-status{width:.5rem;height:.5rem;border-radius:50%;background-color:#707070;margin:0 5px 0 0}.icon-user-status.icon-user-status-active{background-color:#1d805f;display:inline-block}.mat-select{height:100%;line-height:35px}.mat-form-field-wrapper{padding-bottom:0!important}.mat-form-field{padding:0;max-width:300px}.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:.7rem;line-height:1rem;background:#545454;border-radius:2rem;line-height:40px;text-align:center;flex-shrink:0}.icon-webex{filter:brightness(0) invert(1);background-repeat:no-repeat;background-position:center;display:inline-block;height:20px;width:20px;background-size:contain}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M23.23 16.757a5.746 5.746 0 1 0-7.041-9.048 5 5 0 0 0 .071-.705 4.75 4.75 0 1 0-7.705 3.689 8.43 8.43 0 0 0-6.305 7.84c0 1.052.543 2.521 3.13 3.55 1.643.595 3.371.92 5.118.965a7.8 7.8 0 0 0-.248 1.926c0 1.1.57 2.636 3.285 3.716a18.1 18.1 0 0 0 6.463 1.06c4.853 0 9.75-1.476 9.75-4.776a8.86 8.86 0 0 0-6.517-8.217M20 7.755a4.25 4.25 0 0 1 .006 8.499h-.013a4.25 4.25 0 0 1 .007-8.5M8.26 7.004a3.25 3.25 0 1 1 6.5 0 3.25 3.25 0 0 1-6.5 0m2.76 14.574c-4.177-.093-7.27-1.368-7.27-3.045 0-3.737 3.478-6.778 7.752-6.778a8.7 8.7 0 0 1 2.757.45 5.75 5.75 0 0 0 2.508 4.552 9.43 9.43 0 0 0-5.747 4.82m8.978 6.672c-4.703 0-8.249-1.408-8.249-3.276 0-3.982 3.7-7.22 8.25-7.22s8.248 3.238 8.248 7.22c0 1.868-3.546 3.276-8.25 3.276%22%2F%3E%3C%2Fsvg%3E\")}.icon-webex-info{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D %3Ccircle cx%3D%2212%22 cy%3D%2212%22 r%3D%2211%22 stroke%3D%22currentColor%22 stroke-width%3D%221.5%22%2F%3E%0D %3Ccircle cx%3D%2212%22 cy%3D%227.5%22 r%3D%221%22 fill%3D%22currentColor%22%2F%3E%0D %3Crect x%3D%2211%22 y%3D%2210%22 width%3D%222%22 height%3D%227%22 rx%3D%221%22 fill%3D%22currentColor%22%2F%3E%0D%3C%2Fsvg%3E\")}.icon-webex-cogs{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D %3Ccircle cx%3D%2212%22 cy%3D%2212%22 r%3D%223.5%22 stroke%3D%22currentColor%22 stroke-width%3D%221.2%22%2F%3E%0D %0D %3Cpath d%3D%22M12 2C12.8 2 13.5 2.5 13.8 3.2L14.2 4.2C14.4 4.8 15 5.2 15.7 5.1L16.8 4.9C17.8 4.7 18.8 5.2 19.3 6.1L20.5 8.2C21 9.1 20.9 10.2 20.1 11L19.4 11.6C18.9 12 18.9 12.7 19.4 13.1L20.1 13.7C20.9 14.5 21 15.6 20.5 16.5L19.3 18.6C18.8 19.5 17.8 20 16.8 19.8L15.7 19.6C15 19.5 14.4 19.9 14.2 20.5L13.8 21.5C13.5 22.2 12.8 22.7 12 22.7C11.2 22.7 10.5 22.2 10.2 21.5L9.8 20.5C9.6 19.9 9 19.5 8.3 19.6L7.2 19.8C6.2 20 5.2 19.5 4.7 18.6L3.5 16.5C3 15.6 3.1 14.5 3.9 13.7L4.6 13.1C5.1 12.7 5.1 12 4.6 11.6L3.9 11C3.1 10.2 3 9.1 3.5 8.2L4.7 6.1C5.2 5.2 6.2 4.7 7.2 4.9L8.3 5.1C9 5.2 9.6 4.8 9.8 4.2L10.2 3.2C10.5 2.5 11.2 2 12 2Z%22 %0D stroke%3D%22currentColor%22 %0D stroke-width%3D%221.2%22 %0D stroke-linejoin%3D%22round%22%2F%3E%0D%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;font-style:normal}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:gray!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-size:14px}.user-info-box h3{display:block;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#ededed;color:#636363;font-size:12px}.webex-table th:hover{background-color:#dedede}.webex-table th ::ng-deep .mat-icon{font-size:16px;display:flex;align-items:center}.webex-table tr{background:#fff;color:#000000f2;font-size:14px}.webex-table tr:hover:not(.disabled-user-row){background:#ededed;cursor:pointer}.webex-table tr.inactive-user-row{opacity:.35}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{padding:0 24px 0 12px;border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.webex-table .display-name-wrapper{display:flex;align-items:center;justify-content:left;flex-flow:row-reverse;gap:1rem}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#f3f6f6;border:1px solid #e2e9ef;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important;line-height:35px!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}.mat-form-field-wrapper,.mat-form-field-flex{height:30px!important}.mat-form-field-appearance-outline .mat-form-field-outline,.mat-form-field-outline .mat-form-field-outline-thick{height:35px!important}.mat-select{line-height:20px!important}.mat-form-field-appearance-outline .mat-form-field-infix{padding:14px 12px 10px;border-top:0;max-width:300px}.mat-tab-group{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.mat-tab-label{font-weight:500!important;font-size:14px!important;height:auto!important;min-width:auto!important;padding:0!important}.mat-ink-bar{background-color:#000000e6!important;height:3px!important}.mat-form-field-wrapper{padding-bottom:0}.mat-form-field{max-width:300px}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}:host ::ng-deep .mat-form-field-wrapper{height:30px}:host ::ng-deep .mat-form-field-flex{height:30px}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:host ::ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}:host ::ng-deep .mat-select{line-height:20px}:host ::ng-deep .mat-form-field-infix{border-top:0px!important}:host ::ng-deep .mat-paginator{background:transparent!important}:host ::ng-deep .mat-paginator-container{min-height:30px!important}:host ::ng-deep .mat-paginator-range-label{margin:0 10px 0 24px!important;font-size:15px!important}:host ::ng-deep .pagination{font-size:13px;color:#0000008a}:host ::ng-deep .per-page-block{display:flex;line-height:42px!important}:host ::ng-deep .item_per_page{line-height:42px!important}:host ::ng-deep .select-page-size{line-height:42px!important}:host ::ng-deep mat-progress-spinner.page-spinner{position:fixed;margin:auto;inset:0}:host ::ng-deep mat-progress-spinner.field-spinner{position:absolute;margin:-15px -29px}:host ::ng-deep mat-progress-spinner.tab-spinner{position:relative;margin:0 auto auto}.icon-dot{display:block;color:#4f4f4f;font-size:16px;line-height:5px}.button-action-dot:hover{background:#dfdfdf}.button-action-dot{padding:0 5px 5px;border-radius:.25rem}.user-provisioning-type{text-align:start}.user-provisioning-type .icon-wrapper{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i12.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i12.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i12.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i13.PaginationComponent, selector: "app-pagination", inputs: ["pagination", "showPageSizeOptions", "showRefreshButton", "lengthPending"], outputs: ["pageEmitter", "pageNumberChangeEmitter"] }, { kind: "component", type: i14.AppLoaderComponent, selector: "app-loader" }, { kind: "component", type: i15.MoveUserWizardComponent, selector: "app-move-user-wizard", inputs: ["user", "customerId"], outputs: ["closeMoveUserWizard", "done", "runMoveUser"] }, { kind: "component", type: i16.TableToolbarComponent, selector: "tk-users-table-toolbar", inputs: ["totalUsersCount"], outputs: ["searchChange", "searchByType", "addUser"] }] });
|
|
418
422
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UsersListComponent, decorators: [{
|
|
419
423
|
type: Component,
|
|
420
|
-
args: [{ selector: 'app-users-list', template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\r\n <tk-users-table-toolbar\r\n [totalUsersCount]=\"totalUsersCount\"\r\n (searchChange)=\"searchUsers($event)\"\r\n (searchByType)=\"searchByType($event)\"\r\n ></tk-users-table-toolbar>\r\n <table\r\n class=\"webex-table\"\r\n mat-table\r\n *ngIf=\"users?.length\"\r\n #table\r\n [dataSource]=\"dataSource\"\r\n >\r\n <!-- <ng-container matColumnDef=\"user-icon\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\r\n </td>\r\n </ng-container> -->\r\n\r\n <ng-container matColumnDef=\"name\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"webex-table-th\"\r\n style=\"padding-left: 60px\"\r\n >\r\n Display name\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n <div class=\"display-name-wrapper\">\r\n <span\r\n class=\"user-name-text\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n >\r\n {{ user.firstName }} {{ user.lastName }}\r\n </span>\r\n <span class=\"icon-webex-box\"\r\n ><span class=\"icon-webex icon-webex-user\"></span\r\n ></span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"email\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ user.email }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"status\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n <span class=\"header-with-info\">\r\n Status\r\n <img src=\"assets/icons/info-circle-regular.svg\" width=\"16\" alt=\"\" />\r\n </span>\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n [matTooltip]=\"user.status !== 'Active' && user.webexUUID ? 'Pending cutover to MT. Please contact your administrator for details.' : ''\"\r\n matTooltipPosition=\"above\"\r\n >\r\n <span\r\n class=\"icon-user-status\"\r\n [ngClass]=\"{ 'icon-user-status-active': user.status === 'Active' }\"\r\n ></span\r\n >{{ user.status }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"webex-table-th\"\r\n style=\"padding-left: 24px; padding-top: 4px\"\r\n >\r\n <img src=\"assets/icons/settings-regular.svg\" width=\"16\" alt=\"\" />\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user; let i = index\"\r\n style=\"position: relative;\"\r\n >\r\n <mat-progress-spinner\r\n class=\"field-spinner\"\r\n [diameter]=\"30\"\r\n strokeWidth=\"3\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"user.status === 'In Progress' || user.status === 'Pending Activation' || user.status === 'Pending Deactivation'\"\r\n ></mat-progress-spinner>\r\n <button\r\n *ngIf=\"\r\n !(\r\n moveUserPending &&\r\n moveInProgressUserId &&\r\n moveInProgressUserId === user?.userid\r\n )\r\n \"\r\n class=\"button-action-dot\"\r\n mat-icon-button\r\n [matMenuTriggerFor]=\"menu\"\r\n >\r\n <div class=\"icon-actions-dots\">\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n </div>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\r\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\r\n <button\r\n [disabled]=\"user.webexUUID || user.status !== 'Active'\"\r\n *ngIf=\"!user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'QuickMove', 'MT')\"\r\n >\r\n Quick Upgrade User to MT\r\n </button>\r\n <button\r\n [disabled]=\"user.webexUUID || user.status !== 'Active'\"\r\n *ngIf=\"!user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'MT', 'MT')\"\r\n >\r\n Upgrade User to MT\r\n </button>\r\n <button\r\n *ngIf=\"user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'DI', 'DI')\"\r\n >\r\n Revert User to UCM/DI\r\n </button>\r\n <button mat-menu-item [disabled]=\"!user.webexUUID || user.status === 'Active'\" (click)=\"onFirmwareUpgradeClicked(user)\">Activate User</button>\r\n <button mat-menu-item [disabled]=\"!user.webexUUID || user.status !== 'Active'\" (click)=\"onRevertClicked(user)\">Revert</button>\r\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"role\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n Admin roles\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ user.roleName || \"-\" }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"source\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n Provisioning Type\r\n </th>\r\n <td\r\n class=\"user-provisioning-type\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n <ng-container *ngIf=\"user.webexUUID\">\r\n <span [matTooltip]=\"'Multi-Tenant'\" class=\"icon-wrapper\" matTooltipPosition=\"right\"\r\n ><img src=\"assets/icons/webex.svg\" width=\"20\" alt=\"\"\r\n /></span>\r\n </ng-container>\r\n <ng-container *ngIf=\"!user.webexUUID\">\r\n <span *ngIf=\"user.cucmId == ON_PREM_ID\" class=\"icon-wrapper\" [matTooltip]=\"'On Prem'\" matTooltipPosition=\"right\"\r\n ><img src=\"assets/icons/local_24.svg\" width=\"20\" alt=\"\"\r\n /></span>\r\n <span *ngIf=\"user.cucmId != ON_PREM_ID\" class=\"icon-wrapper\" [matTooltip]=\"'Dedicated Instance'\" matTooltipPosition=\"right\"\r\n ><img src=\"assets/icons/di_cloud_24.svg\" width=\"20\" alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"last-active-time\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n <span class=\"header-with-info\">\r\n Last active time\r\n <!-- <mat-icon class=\"info-icon\">info</mat-icon> -->\r\n <img src=\"assets/icons/info-circle-regular.svg\" width=\"16\" alt=\"\" />\r\n </span>\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n 2/16/26\r\n </td>\r\n /\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"\r\n [ngClass]=\"{\r\n 'disabled-user-row':\r\n moveUserPending &&\r\n moveInProgressUserId &&\r\n moveInProgressUserId === row?.userid,\r\n 'inactive-user-row': row.status !== 'Active'\r\n }\">\r\n </tr>\r\n </table>\r\n\r\n <app-pagination\r\n [pagination]=\"usersSearchService.getPagination()\"\r\n [showPageSizeOptions]=\"true\"\r\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\r\n (pageEmitter)=\"pageEvent($event)\"\r\n >\r\n </app-pagination>\r\n</div>\r\n\r\n<app-move-user-wizard\r\n *ngIf=\"showMoveUserWizard\"\r\n [user]=\"moveUser\"\r\n (done)=\"closeMoveUserWizard(true)\"\r\n [customerId]=\"customerId\"\r\n (runMoveUser)=\"runMoveUserToMT()\"\r\n (closeMoveUserWizard)=\"closeMoveUserWizard(false)\"\r\n></app-move-user-wizard>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";#users-list{letter-spacing:.5px}.header-with-info{display:flex;align-items:center;gap:.5rem}.header-with-info .info-icon{font-size:16px;color:#c3c3c3;cursor:pointer}table.mat-table{border-spacing:0;width:100%}::ng-deep .mat-paginator{background:none}.icon-user-status{width:.5rem;height:.5rem;border-radius:50%;background-color:#707070;margin:0 5px 0 0}.icon-user-status.icon-user-status-active{background-color:#1d805f;display:inline-block}.mat-select{height:100%;line-height:35px}.mat-form-field-wrapper{padding-bottom:0!important}.mat-form-field{padding:0;max-width:300px}.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:.7rem;line-height:1rem;background:#545454;border-radius:2rem;line-height:40px;text-align:center;flex-shrink:0}.icon-webex{filter:brightness(0) invert(1);background-repeat:no-repeat;background-position:center;display:inline-block;height:20px;width:20px;background-size:contain}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M23.23 16.757a5.746 5.746 0 1 0-7.041-9.048 5 5 0 0 0 .071-.705 4.75 4.75 0 1 0-7.705 3.689 8.43 8.43 0 0 0-6.305 7.84c0 1.052.543 2.521 3.13 3.55 1.643.595 3.371.92 5.118.965a7.8 7.8 0 0 0-.248 1.926c0 1.1.57 2.636 3.285 3.716a18.1 18.1 0 0 0 6.463 1.06c4.853 0 9.75-1.476 9.75-4.776a8.86 8.86 0 0 0-6.517-8.217M20 7.755a4.25 4.25 0 0 1 .006 8.499h-.013a4.25 4.25 0 0 1 .007-8.5M8.26 7.004a3.25 3.25 0 1 1 6.5 0 3.25 3.25 0 0 1-6.5 0m2.76 14.574c-4.177-.093-7.27-1.368-7.27-3.045 0-3.737 3.478-6.778 7.752-6.778a8.7 8.7 0 0 1 2.757.45 5.75 5.75 0 0 0 2.508 4.552 9.43 9.43 0 0 0-5.747 4.82m8.978 6.672c-4.703 0-8.249-1.408-8.249-3.276 0-3.982 3.7-7.22 8.25-7.22s8.248 3.238 8.248 7.22c0 1.868-3.546 3.276-8.25 3.276%22%2F%3E%3C%2Fsvg%3E\")}.icon-webex-info{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D %3Ccircle cx%3D%2212%22 cy%3D%2212%22 r%3D%2211%22 stroke%3D%22currentColor%22 stroke-width%3D%221.5%22%2F%3E%0D %3Ccircle cx%3D%2212%22 cy%3D%227.5%22 r%3D%221%22 fill%3D%22currentColor%22%2F%3E%0D %3Crect x%3D%2211%22 y%3D%2210%22 width%3D%222%22 height%3D%227%22 rx%3D%221%22 fill%3D%22currentColor%22%2F%3E%0D%3C%2Fsvg%3E\")}.icon-webex-cogs{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D %3Ccircle cx%3D%2212%22 cy%3D%2212%22 r%3D%223.5%22 stroke%3D%22currentColor%22 stroke-width%3D%221.2%22%2F%3E%0D %0D %3Cpath d%3D%22M12 2C12.8 2 13.5 2.5 13.8 3.2L14.2 4.2C14.4 4.8 15 5.2 15.7 5.1L16.8 4.9C17.8 4.7 18.8 5.2 19.3 6.1L20.5 8.2C21 9.1 20.9 10.2 20.1 11L19.4 11.6C18.9 12 18.9 12.7 19.4 13.1L20.1 13.7C20.9 14.5 21 15.6 20.5 16.5L19.3 18.6C18.8 19.5 17.8 20 16.8 19.8L15.7 19.6C15 19.5 14.4 19.9 14.2 20.5L13.8 21.5C13.5 22.2 12.8 22.7 12 22.7C11.2 22.7 10.5 22.2 10.2 21.5L9.8 20.5C9.6 19.9 9 19.5 8.3 19.6L7.2 19.8C6.2 20 5.2 19.5 4.7 18.6L3.5 16.5C3 15.6 3.1 14.5 3.9 13.7L4.6 13.1C5.1 12.7 5.1 12 4.6 11.6L3.9 11C3.1 10.2 3 9.1 3.5 8.2L4.7 6.1C5.2 5.2 6.2 4.7 7.2 4.9L8.3 5.1C9 5.2 9.6 4.8 9.8 4.2L10.2 3.2C10.5 2.5 11.2 2 12 2Z%22 %0D stroke%3D%22currentColor%22 %0D stroke-width%3D%221.2%22 %0D stroke-linejoin%3D%22round%22%2F%3E%0D%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;font-style:normal}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:gray!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-size:14px}.user-info-box h3{display:block;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#ededed;color:#636363;font-size:12px}.webex-table th:hover{background-color:#dedede}.webex-table th ::ng-deep .mat-icon{font-size:16px;display:flex;align-items:center}.webex-table tr{background:#fff;color:#000000f2;font-size:14px}.webex-table tr:hover:not(.disabled-user-row){background:#ededed;cursor:pointer}.webex-table tr.inactive-user-row{opacity:.35}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{padding:0 24px 0 12px;border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.webex-table .display-name-wrapper{display:flex;align-items:center;justify-content:left;flex-flow:row-reverse;gap:1rem}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#f3f6f6;border:1px solid #e2e9ef;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important;line-height:35px!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}.mat-form-field-wrapper,.mat-form-field-flex{height:30px!important}.mat-form-field-appearance-outline .mat-form-field-outline,.mat-form-field-outline .mat-form-field-outline-thick{height:35px!important}.mat-select{line-height:20px!important}.mat-form-field-appearance-outline .mat-form-field-infix{padding:14px 12px 10px;border-top:0;max-width:300px}.mat-tab-group{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.mat-tab-label{font-weight:500!important;font-size:14px!important;height:auto!important;min-width:auto!important;padding:0!important}.mat-ink-bar{background-color:#000000e6!important;height:3px!important}.mat-form-field-wrapper{padding-bottom:0}.mat-form-field{max-width:300px}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}:host ::ng-deep .mat-form-field-wrapper{height:30px}:host ::ng-deep .mat-form-field-flex{height:30px}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:host ::ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}:host ::ng-deep .mat-select{line-height:20px}:host ::ng-deep .mat-form-field-infix{border-top:0px!important}:host ::ng-deep .mat-paginator{background:transparent!important}:host ::ng-deep .mat-paginator-container{min-height:30px!important}:host ::ng-deep .mat-paginator-range-label{margin:0 10px 0 24px!important;font-size:15px!important}:host ::ng-deep .pagination{font-size:13px;color:#0000008a}:host ::ng-deep .per-page-block{display:flex;line-height:42px!important}:host ::ng-deep .item_per_page{line-height:42px!important}:host ::ng-deep .select-page-size{line-height:42px!important}:host ::ng-deep mat-progress-spinner.page-spinner{position:fixed;margin:auto;inset:0}:host ::ng-deep mat-progress-spinner.field-spinner{position:absolute;margin:-15px -29px}:host ::ng-deep mat-progress-spinner.tab-spinner{position:relative;margin:0 auto auto}.icon-dot{display:block;color:#4f4f4f;font-size:16px;line-height:5px}.button-action-dot:hover{background:#dfdfdf}.button-action-dot{padding:0 5px 5px;border-radius:.25rem}.user-provisioning-type{text-align:start}.user-provisioning-type .icon-wrapper{display:flex;align-items:center;justify-content:center}\n"] }]
|
|
424
|
+
args: [{ selector: 'app-users-list', template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\r\n <tk-users-table-toolbar\r\n [totalUsersCount]=\"totalUsersCount\"\r\n (searchChange)=\"searchUsers($event)\"\r\n (searchByType)=\"searchByType($event)\"\r\n (addUser)=\"onCreateUserRequested()\"\r\n ></tk-users-table-toolbar>\r\n <table\r\n class=\"webex-table\"\r\n mat-table\r\n *ngIf=\"users?.length\"\r\n #table\r\n [dataSource]=\"dataSource\"\r\n >\r\n <!-- <ng-container matColumnDef=\"user-icon\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\r\n </td>\r\n </ng-container> -->\r\n\r\n <ng-container matColumnDef=\"name\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"webex-table-th\"\r\n style=\"padding-left: 60px\"\r\n >\r\n Display name\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n <div class=\"display-name-wrapper\">\r\n <span\r\n class=\"user-name-text\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n >\r\n {{ user.firstName }} {{ user.lastName }}\r\n </span>\r\n <span class=\"icon-webex-box\"\r\n ><span class=\"icon-webex icon-webex-user\"></span\r\n ></span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"email\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ user.email }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"status\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n <span class=\"header-with-info\">\r\n Status\r\n <img src=\"assets/icons/info-circle-regular.svg\" width=\"16\" alt=\"\" />\r\n </span>\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n [matTooltip]=\"user.status !== 'Active' && user.webexUUID ? 'Pending cutover to MT. Please contact your administrator for details.' : ''\"\r\n matTooltipPosition=\"above\"\r\n >\r\n <span\r\n class=\"icon-user-status\"\r\n [ngClass]=\"{ 'icon-user-status-active': user.status === 'Active' }\"\r\n ></span\r\n >{{ user.status }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"webex-table-th\"\r\n style=\"padding-left: 24px; padding-top: 4px\"\r\n >\r\n <img src=\"assets/icons/settings-regular.svg\" width=\"16\" alt=\"\" />\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user; let i = index\"\r\n style=\"position: relative;\"\r\n >\r\n <mat-progress-spinner\r\n class=\"field-spinner\"\r\n [diameter]=\"30\"\r\n strokeWidth=\"3\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"user.status === 'In Progress' || user.status === 'Pending Activation' || user.status === 'Pending Deactivation'\"\r\n ></mat-progress-spinner>\r\n <button\r\n *ngIf=\"\r\n !(\r\n moveUserPending &&\r\n moveInProgressUserId &&\r\n moveInProgressUserId === user?.userid\r\n )\r\n \"\r\n class=\"button-action-dot\"\r\n mat-icon-button\r\n [matMenuTriggerFor]=\"menu\"\r\n >\r\n <div class=\"icon-actions-dots\">\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n </div>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\r\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\r\n <button\r\n [disabled]=\"user.webexUUID || user.status !== 'Active'\"\r\n *ngIf=\"!user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'QuickMove', 'MT')\"\r\n >\r\n Quick Upgrade User to MT\r\n </button>\r\n <button\r\n [disabled]=\"user.webexUUID || user.status !== 'Active'\"\r\n *ngIf=\"!user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'MT', 'MT')\"\r\n >\r\n Upgrade User to MT\r\n </button>\r\n <button\r\n *ngIf=\"user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'DI', 'DI')\"\r\n >\r\n Revert User to UCM/DI\r\n </button>\r\n <button mat-menu-item [disabled]=\"!user.webexUUID || user.status === 'Active'\" (click)=\"onFirmwareUpgradeClicked(user)\">Activate User</button>\r\n <button mat-menu-item [disabled]=\"!user.webexUUID || user.status !== 'Active'\" (click)=\"onRevertClicked(user)\">Revert</button>\r\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"role\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n Admin roles\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ user.roleName || \"-\" }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"source\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n Provisioning Type\r\n </th>\r\n <td\r\n class=\"user-provisioning-type\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n <ng-container *ngIf=\"user.webexUUID\">\r\n <span [matTooltip]=\"'Multi-Tenant'\" class=\"icon-wrapper\" matTooltipPosition=\"right\"\r\n ><img src=\"assets/icons/webex.svg\" width=\"20\" alt=\"\"\r\n /></span>\r\n </ng-container>\r\n <ng-container *ngIf=\"!user.webexUUID\">\r\n <span *ngIf=\"user.cucmId == ON_PREM_ID\" class=\"icon-wrapper\" [matTooltip]=\"'On Prem'\" matTooltipPosition=\"right\"\r\n ><img src=\"assets/icons/local_24.svg\" width=\"20\" alt=\"\"\r\n /></span>\r\n <span *ngIf=\"user.cucmId != ON_PREM_ID\" class=\"icon-wrapper\" [matTooltip]=\"'Dedicated Instance'\" matTooltipPosition=\"right\"\r\n ><img src=\"assets/icons/di_cloud_24.svg\" width=\"20\" alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"last-active-time\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n <span class=\"header-with-info\">\r\n Last active time\r\n <!-- <mat-icon class=\"info-icon\">info</mat-icon> -->\r\n <img src=\"assets/icons/info-circle-regular.svg\" width=\"16\" alt=\"\" />\r\n </span>\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n 2/16/26\r\n </td>\r\n /\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"\r\n [ngClass]=\"{\r\n 'disabled-user-row':\r\n moveUserPending &&\r\n moveInProgressUserId &&\r\n moveInProgressUserId === row?.userid,\r\n 'inactive-user-row': row.status !== 'Active'\r\n }\">\r\n </tr>\r\n </table>\r\n\r\n <app-pagination\r\n [pagination]=\"usersSearchService.getPagination()\"\r\n [showPageSizeOptions]=\"true\"\r\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\r\n (pageEmitter)=\"pageEvent($event)\"\r\n >\r\n </app-pagination>\r\n</div>\r\n\r\n<app-move-user-wizard\r\n *ngIf=\"showMoveUserWizard\"\r\n [user]=\"moveUser\"\r\n (done)=\"closeMoveUserWizard(true)\"\r\n [customerId]=\"customerId\"\r\n (runMoveUser)=\"runMoveUserToMT()\"\r\n (closeMoveUserWizard)=\"closeMoveUserWizard(false)\"\r\n></app-move-user-wizard>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";#users-list{letter-spacing:.5px}.header-with-info{display:flex;align-items:center;gap:.5rem}.header-with-info .info-icon{font-size:16px;color:#c3c3c3;cursor:pointer}table.mat-table{border-spacing:0;width:100%}::ng-deep .mat-paginator{background:none}.icon-user-status{width:.5rem;height:.5rem;border-radius:50%;background-color:#707070;margin:0 5px 0 0}.icon-user-status.icon-user-status-active{background-color:#1d805f;display:inline-block}.mat-select{height:100%;line-height:35px}.mat-form-field-wrapper{padding-bottom:0!important}.mat-form-field{padding:0;max-width:300px}.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;font-size:.7rem;line-height:1rem;background:#545454;border-radius:2rem;line-height:40px;text-align:center;flex-shrink:0}.icon-webex{filter:brightness(0) invert(1);background-repeat:no-repeat;background-position:center;display:inline-block;height:20px;width:20px;background-size:contain}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M23.23 16.757a5.746 5.746 0 1 0-7.041-9.048 5 5 0 0 0 .071-.705 4.75 4.75 0 1 0-7.705 3.689 8.43 8.43 0 0 0-6.305 7.84c0 1.052.543 2.521 3.13 3.55 1.643.595 3.371.92 5.118.965a7.8 7.8 0 0 0-.248 1.926c0 1.1.57 2.636 3.285 3.716a18.1 18.1 0 0 0 6.463 1.06c4.853 0 9.75-1.476 9.75-4.776a8.86 8.86 0 0 0-6.517-8.217M20 7.755a4.25 4.25 0 0 1 .006 8.499h-.013a4.25 4.25 0 0 1 .007-8.5M8.26 7.004a3.25 3.25 0 1 1 6.5 0 3.25 3.25 0 0 1-6.5 0m2.76 14.574c-4.177-.093-7.27-1.368-7.27-3.045 0-3.737 3.478-6.778 7.752-6.778a8.7 8.7 0 0 1 2.757.45 5.75 5.75 0 0 0 2.508 4.552 9.43 9.43 0 0 0-5.747 4.82m8.978 6.672c-4.703 0-8.249-1.408-8.249-3.276 0-3.982 3.7-7.22 8.25-7.22s8.248 3.238 8.248 7.22c0 1.868-3.546 3.276-8.25 3.276%22%2F%3E%3C%2Fsvg%3E\")}.icon-webex-info{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D %3Ccircle cx%3D%2212%22 cy%3D%2212%22 r%3D%2211%22 stroke%3D%22currentColor%22 stroke-width%3D%221.5%22%2F%3E%0D %3Ccircle cx%3D%2212%22 cy%3D%227.5%22 r%3D%221%22 fill%3D%22currentColor%22%2F%3E%0D %3Crect x%3D%2211%22 y%3D%2210%22 width%3D%222%22 height%3D%227%22 rx%3D%221%22 fill%3D%22currentColor%22%2F%3E%0D%3C%2Fsvg%3E\")}.icon-webex-cogs{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D %3Ccircle cx%3D%2212%22 cy%3D%2212%22 r%3D%223.5%22 stroke%3D%22currentColor%22 stroke-width%3D%221.2%22%2F%3E%0D %0D %3Cpath d%3D%22M12 2C12.8 2 13.5 2.5 13.8 3.2L14.2 4.2C14.4 4.8 15 5.2 15.7 5.1L16.8 4.9C17.8 4.7 18.8 5.2 19.3 6.1L20.5 8.2C21 9.1 20.9 10.2 20.1 11L19.4 11.6C18.9 12 18.9 12.7 19.4 13.1L20.1 13.7C20.9 14.5 21 15.6 20.5 16.5L19.3 18.6C18.8 19.5 17.8 20 16.8 19.8L15.7 19.6C15 19.5 14.4 19.9 14.2 20.5L13.8 21.5C13.5 22.2 12.8 22.7 12 22.7C11.2 22.7 10.5 22.2 10.2 21.5L9.8 20.5C9.6 19.9 9 19.5 8.3 19.6L7.2 19.8C6.2 20 5.2 19.5 4.7 18.6L3.5 16.5C3 15.6 3.1 14.5 3.9 13.7L4.6 13.1C5.1 12.7 5.1 12 4.6 11.6L3.9 11C3.1 10.2 3 9.1 3.5 8.2L4.7 6.1C5.2 5.2 6.2 4.7 7.2 4.9L8.3 5.1C9 5.2 9.6 4.8 9.8 4.2L10.2 3.2C10.5 2.5 11.2 2 12 2Z%22 %0D stroke%3D%22currentColor%22 %0D stroke-width%3D%221.2%22 %0D stroke-linejoin%3D%22round%22%2F%3E%0D%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;font-style:normal}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:gray!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-size:14px}.user-info-box h3{display:block;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#ededed;color:#636363;font-size:12px}.webex-table th:hover{background-color:#dedede}.webex-table th ::ng-deep .mat-icon{font-size:16px;display:flex;align-items:center}.webex-table tr{background:#fff;color:#000000f2;font-size:14px}.webex-table tr:hover:not(.disabled-user-row){background:#ededed;cursor:pointer}.webex-table tr.inactive-user-row{opacity:.35}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{padding:0 24px 0 12px;border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.webex-table .display-name-wrapper{display:flex;align-items:center;justify-content:left;flex-flow:row-reverse;gap:1rem}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#f3f6f6;border:1px solid #e2e9ef;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important;line-height:35px!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}.mat-form-field-wrapper,.mat-form-field-flex{height:30px!important}.mat-form-field-appearance-outline .mat-form-field-outline,.mat-form-field-outline .mat-form-field-outline-thick{height:35px!important}.mat-select{line-height:20px!important}.mat-form-field-appearance-outline .mat-form-field-infix{padding:14px 12px 10px;border-top:0;max-width:300px}.mat-tab-group{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.mat-tab-label{font-weight:500!important;font-size:14px!important;height:auto!important;min-width:auto!important;padding:0!important}.mat-ink-bar{background-color:#000000e6!important;height:3px!important}.mat-form-field-wrapper{padding-bottom:0}.mat-form-field{max-width:300px}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}:host ::ng-deep .mat-form-field-wrapper{height:30px}:host ::ng-deep .mat-form-field-flex{height:30px}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:host ::ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}:host ::ng-deep .mat-select{line-height:20px}:host ::ng-deep .mat-form-field-infix{border-top:0px!important}:host ::ng-deep .mat-paginator{background:transparent!important}:host ::ng-deep .mat-paginator-container{min-height:30px!important}:host ::ng-deep .mat-paginator-range-label{margin:0 10px 0 24px!important;font-size:15px!important}:host ::ng-deep .pagination{font-size:13px;color:#0000008a}:host ::ng-deep .per-page-block{display:flex;line-height:42px!important}:host ::ng-deep .item_per_page{line-height:42px!important}:host ::ng-deep .select-page-size{line-height:42px!important}:host ::ng-deep mat-progress-spinner.page-spinner{position:fixed;margin:auto;inset:0}:host ::ng-deep mat-progress-spinner.field-spinner{position:absolute;margin:-15px -29px}:host ::ng-deep mat-progress-spinner.tab-spinner{position:relative;margin:0 auto auto}.icon-dot{display:block;color:#4f4f4f;font-size:16px;line-height:5px}.button-action-dot:hover{background:#dfdfdf}.button-action-dot{padding:0 5px 5px;border-radius:.25rem}.user-provisioning-type{text-align:start}.user-provisioning-type .icon-wrapper{display:flex;align-items:center;justify-content:center}\n"] }]
|
|
421
425
|
}], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.APIService }, { type: i3.ApiWebexService }, { type: i4.NotificationService }, { type: i5.UsersSearchService }, { type: i6.MatDialog }]; }, propDecorators: { token: [{
|
|
422
426
|
type: Input
|
|
423
427
|
}], customerId: [{
|
|
@@ -430,7 +434,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
430
434
|
type: Output
|
|
431
435
|
}], switchToWizard: [{
|
|
432
436
|
type: Output
|
|
437
|
+
}], createUserRequested: [{
|
|
438
|
+
type: Output
|
|
433
439
|
}], host: [{
|
|
434
440
|
type: Input
|
|
435
441
|
}] } });
|
|
436
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlcnMtbGlzdC9zcmMvdXNlcnMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlcnMtbGlzdC9zcmMvdXNlcnMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBZ0IsT0FBTyxFQUFnQixTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd4RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc3RCxPQUFPLEVBQXFDLFVBQVUsRUFBRSxjQUFjLEVBQW1CLE1BQU0saUJBQWlCLENBQUM7QUFFakgsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUvRyxNQUFNLGNBQWMsR0FBRztJQUNyQixNQUFNO0lBQ04sT0FBTztJQUNQLFFBQVE7SUFDUixrQkFBa0I7SUFDbEIsTUFBTTtJQUNOLFFBQVE7SUFDUixTQUFTO0NBQ1YsQ0FBQztBQUNGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLG1CQUFtQjtDQUN2QyxDQUFDO0FBT0YsTUFBTSxPQUFPLGtCQUFrQjtJQXlCN0IsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7SUFDdEMsQ0FBQztJQUVELFlBQ1MsV0FBd0IsRUFDdkIsVUFBc0IsRUFDdEIsZUFBZ0MsRUFDaEMsYUFBa0MsRUFDbkMsa0JBQXNDLEVBQ3JDLE1B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clxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBJU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXNlcnNTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91c2Vycy1zZWFyY2guc2VydmljZSc7XHJcbmltcG9ydCB7IExpc3RVc2VyIH0gZnJvbSAnLi9jbGFzc2VzL3VzZXItbGlzdCc7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgQXBpV2ViZXhTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGktd2ViZXguc2VydmljZSc7XHJcbmltcG9ydCB7IENVU1RPTUVSX0RFU1RJTkFUSU9OLCBNQVhfSU5URUdFUiwgT05fUFJFTV9JRCwgVVNFUl9UWVBFU19NQVAsIFVTRVJfVFlQRVNfVFlQRSB9IGZyb20gJy4vYXBwLmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFVzZXJMaXN0Q29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vdXNlci1saXN0LWNvbmZpcm0tZGlhbG9nL3VzZXItbGlzdC1jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuY29uc3QgRElTUExBWUVEX0NPTFMgPSBbXHJcbiAgJ25hbWUnLFxyXG4gICdlbWFpbCcsXHJcbiAgJ3N0YXR1cycsXHJcbiAgJ2xhc3QtYWN0aXZlLXRpbWUnLFxyXG4gICdyb2xlJyxcclxuICAnc291cmNlJyxcclxuICAnYWN0aW9ucycsXHJcbl07XHJcbmNvbnN0IExPQ0FMX1NUT1JBR0UgPSB7XHJcbiAgVVNFUl9JTl9NSUdSQVRJT046ICd1c2VySWRJbk1pZ3JhdGlvbicsXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC11c2Vycy1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXNlcnMtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXNlcnMtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlcnNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGN1c3RvbWVySWQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc2l0ZUlkITogbnVtYmVyO1xyXG4gIEBPdXRwdXQoKSBvcGVuVXNlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdXNlck1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzd2l0Y2hUb1dpemFyZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBob3N0ITogc3RyaW5nO1xyXG5cclxuICBkYXRhUGVuZGluZyE6IGJvb2xlYW47XHJcbiAgbW92ZUluUHJvZ3Jlc3NVc2VySWQhOiBzdHJpbmc7XHJcbiAgdXNlcnMhOiBMaXN0VXNlcltdO1xyXG4gIGRhdGFTb3VyY2UhOiBNYXRUYWJsZURhdGFTb3VyY2U8TGlzdFVzZXI+O1xyXG4gIGRpc3BsYXllZENvbHVtbnMgPSBESVNQTEFZRURfQ09MUztcclxuICBtb3ZlVXNlcjogYW55O1xyXG4gIG1vdmVVc2VySW5kZXg6IGFueTtcclxuICBzaG93TW92ZVVzZXJXaXphcmQgPSBmYWxzZTtcclxuICBtb3ZlVXNlclBlbmRpbmcgPSBmYWxzZTtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBPTl9QUkVNX0lEID0gT05fUFJFTV9JRDtcclxuXHJcbiAgdG90YWxVc2Vyc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBnZXQgZm9ybSgpOiBGb3JtR3JvdXAge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2U/LnVzZXI/LmZvcm07XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFQSVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVdlYmV4U2VydmljZTogQXBpV2ViZXhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIHVzZXJzU2VhcmNoU2VydmljZTogVXNlcnNTZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlLnNldERlZmF1bHRWYWx1ZXMoKTtcclxuICAgIHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlLmN1c3RvbWVySWQgPSB0aGlzLmN1c3RvbWVySWQ7XHJcbiAgICB0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5zaXRlSWQgPSB0aGlzLnNpdGVJZDtcclxuICAgIHRoaXMuYXBpU2VydmljZS50b2tlbiA9IHRoaXMudG9rZW47XHJcbiAgICB0aGlzLmFwaVdlYmV4U2VydmljZS50b2tlbiA9IHRoaXMudG9rZW47XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuYXBpVXJsID0gdGhpcy5ob3N0ICsgJy9kY3AnO1xyXG4gICAgdGhpcy5hcGlXZWJleFNlcnZpY2UuYXBpVXJsID0gdGhpcy5ob3N0ICsgJy93ZWJleCc7XHJcblxyXG4gICAgdGhpcy5nZXRNaWdyYXRlZFVzZXJzKCk7XHJcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5mb3VuZFVzZXJzJC5zdWJzY3JpYmUoXHJcbiAgICAgICh1c2VyczogTGlzdFVzZXJbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZURhdGFTb3VyY2UodXNlcnMpO1xyXG4gICAgICB9LFxyXG4gICAgKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ3VzZXJzIGxpc3QgcGFyaXMgNzc3MycpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YnNjcmlwdGlvbikgPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBwYWdlTnVtYmVyQ2hhbmdlRXZlbnQocGVyUGFnZU51bWJlcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5wYWdlU2l6ZSA9IHBlclBhZ2VOdW1iZXI7XHJcbiAgICB0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5wYWdlSW5kZXggPSAwO1xyXG4gICAgdGhpcy5ydW5TZWFyY2goKTtcclxuICB9XHJcblxyXG4gIGNsb3NlTW92ZVVzZXJXaXphcmQoYWZ0ZXJVc2VyTW92ZT86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMubW92ZVVzZXIgPSBudWxsO1xyXG4gICAgdGhpcy5tb3ZlVXNlckluZGV4ID0gbnVsbDtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKExPQ0FMX1NUT1JBR0UuVVNFUl9JTl9NSUdSQVRJT04pO1xyXG4gICAgdGhpcy5zaG93TW92ZVVzZXJXaXphcmQgPSBmYWxzZTtcclxuICAgIHRoaXMuc3dpdGNoVG9XaXphcmQuZW1pdChmYWxzZSk7XHJcbiAgICBpZiAoYWZ0ZXJVc2VyTW92ZSkge1xyXG4gICAgICB0aGlzLmdldE1pZ3JhdGVkVXNlcnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhZ2VFdmVudChldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5wYWdlU2l6ZSA9IGV2ZW50LnBhZ2VTaXplO1xyXG4gICAgdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UucGFnZUluZGV4ID0gZXZlbnQucGFnZUluZGV4O1xyXG4gICAgdGhpcy5ydW5TZWFyY2goKTtcclxuICB9XHJcblxyXG4gIG9uVXNlckNsaWNrKHVzZXI6IExpc3RVc2VyKTogdm9pZCB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaXNXZWJleCcsIFN0cmluZyghIXVzZXIud2ViZXhVVUlEKSk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnd2ViZXhVVUlEJywgJ251bGwnKTtcclxuICAgIGlmKHVzZXIud2ViZXhVVUlEKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd3ZWJleFVVSUQnLCBTdHJpbmcodXNlci53ZWJleFVVSUQpKTtcclxuICAgIH1cclxuICAgIHRoaXMub3BlblVzZXIuZW1pdCh1c2VyKTtcclxuICB9XHJcblxyXG4gIG1vdmVVc2VyVG9NVCh1c2VyOiBMaXN0VXNlciwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHVzZXIgJiYgdXNlci5zaXRlSWQgJiYgdXNlci51c2VyaWQpIHtcclxuICAgICAgdGhpcy5tb3ZlVXNlclBlbmRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLm1vdmVJblByb2dyZXNzVXNlcklkID0gdXNlci51c2VyaWQ7XHJcbiAgICAgIHRoaXMuc2V0U3RhdHVzVG9Vc2VyKGluZGV4LCAnSW4gUHJvZ3Jlc3MnKTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTE9DQUxfU1RPUkFHRS5VU0VSX0lOX01JR1JBVElPTiwgdXNlci51c2VyaWQpO1xyXG5cclxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAgIC5tb3ZlVXNlclRvTVQodGhpcy5jdXN0b21lcklkLCB1c2VyKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubW92ZVVzZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLm1vdmVVc2VySW5kZXggPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmdldE1pZ3JhdGVkVXNlcnMoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlVXNlckluTWlncmF0aW9uUHJvZ3Jlc3MoKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0dXNUb1VzZXIoaW5kZXgsICdNaWdyYXRpb24gRXJyb3InKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vdmVVc2VyVG9ESSh1c2VyOiBMaXN0VXNlciwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHVzZXIgJiYgdXNlci5zaXRlSWQgJiYgdXNlci53ZWJleFVVSUQpIHtcclxuICAgICAgdGhpcy5tb3ZlVXNlclBlbmRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLm1vdmVJblByb2dyZXNzVXNlcklkID0gdXNlci51c2VyaWQ7XHJcbiAgICAgIHRoaXMudXNlcnNbaW5kZXhdLnN0YXR1cyA9ICdJbiBQcm9ncmVzcyc7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExPQ0FMX1NUT1JBR0UuVVNFUl9JTl9NSUdSQVRJT04sIHVzZXIudXNlcmlkKTtcclxuXHJcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMudXNlclNlcnZpY2VcclxuICAgICAgICAubW92ZVVzZXJUb0RJKHRoaXMuY3VzdG9tZXJJZCwgdXNlcilcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZVVzZXJJbk1pZ3JhdGlvblByb2dyZXNzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdHVzVG9Vc2VyKGluZGV4LCAnQWN0aXZlJyk7XHJcbiAgICAgICAgICAgIHRoaXMudXNlcnNbaW5kZXhdLndlYmV4VVVJRCA9ICcnO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UubWlncmF0ZWRVc2VycyAmJlxyXG4gICAgICAgICAgICAgIHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlLm1pZ3JhdGVkVXNlcnMubGVuZ3RoXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlLm1pZ3JhdGVkVXNlcnMgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UubWlncmF0ZWRVc2Vycy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgIChtaWdyYXRlZFVzZXI6IGFueSkgPT4gbWlncmF0ZWRVc2VyLnVzZXJpZCAhPT0gdXNlci5lbWFpbCxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlVXNlckluTWlncmF0aW9uUHJvZ3Jlc3MoKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0dXNUb1VzZXIoaW5kZXgsICdNaWdyYXRpb24gRXJyb3InKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlVXNlckluTWlncmF0aW9uUHJvZ3Jlc3MoKTogdm9pZCB7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShMT0NBTF9TVE9SQUdFLlVTRVJfSU5fTUlHUkFUSU9OKTtcclxuICAgIHRoaXMubW92ZUluUHJvZ3Jlc3NVc2VySWQgPSAnJztcclxuICAgIHRoaXMubW92ZVVzZXJQZW5kaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFN0YXR1c1RvVXNlcihpbmRleDogbnVtYmVyLCBzdGF0dXM6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXNlcnMgJiYgdGhpcy51c2Vyc1tpbmRleF0pIHtcclxuICAgICAgdGhpcy51c2Vyc1tpbmRleF0uc3RhdHVzID0gc3RhdHVzO1xyXG4gICAgICAvLyBpZiAoc3RhdHVzID09PSAnTWlncmF0ZWQnKSB7XHJcbiAgICAgIC8vICAgdGhpcy51c2Vyc1tpbmRleF0ucm9sZU5hbWUgPSAnJztcclxuICAgICAgLy8gICB0aGlzLnVzZXJzW2luZGV4XS5pc01pZ3JhdGVkID0gdHJ1ZTtcclxuICAgICAgLy8gICB0aGlzLnVzZXJzW2luZGV4XS5zdGF0dXMgPSBzdGF0dXM7XHJcbiAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgdGhpcy51c2Vyc1tpbmRleF0ucm9sZU5hbWUgPSAnRGVkaWNhdGVkIEluc3RhbmNlIENhbGxpbmcgdXNlcic7XHJcbiAgICAgIC8vICAgdGhpcy51c2Vyc1tpbmRleF0uaXNNaWdyYXRlZCA9IGZhbHNlO1xyXG4gICAgICAvLyAgIHRoaXMudXNlcnNbaW5kZXhdLnN0YXR1cyA9IHN0YXR1cztcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSh0aGlzLnVzZXJzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURhdGFTb3VyY2UodXNlcnM6IExpc3RVc2VyW10pOiB2b2lkIHtcclxuICAgIGlmICh1c2Vycz8ubGVuZ3RoKSB7XHJcbiAgICAgIC8vIHRoaXMuc2V0UmFuZG9tVXNlclJvbGUodXNlcnMpO1xyXG4gICAgICB0aGlzLnVzZXJzID0gdXNlcnM7XHJcbiAgICAgIC8vIHNldCB0b3RhbCByb3dzIGNvdW50IGZvciB0b29sYmFyL3BhZ2luYXRpb24gZnJvbSBzZXJ2ZXItc2lkZSBwYWdpbmF0aW9uIHdoZW4gYXZhaWxhYmxlXHJcbiAgICAgIHRoaXMudG90YWxVc2Vyc0NvdW50ID0gdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2U/LnRvdGFsIHx8IHVzZXJzLmxlbmd0aDtcclxuICAgICAgdGhpcy5zZXRVc2VyTWlncmF0aW9uUHJvZ3Jlc3MoKTtcclxuICAgICAgdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2Uuc2V0TWlncmF0ZWRQcm9wVG9Vc2Vycyh0aGlzLnVzZXJzKTtcclxuICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSh1c2Vycyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVzZXJSb2xlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXNlcnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnVzZXJzLmZvckVhY2goKHVzZXIpID0+IHtcclxuICAgICAgICBpZiAoIXVzZXIuaXNNaWdyYXRlZCkge1xyXG4gICAgICAgICAgdXNlci5yb2xlTmFtZSA9ICdEZWRpY2F0ZWQgSW5zdGFuY2UgQ2FsbGluZyB1c2VyJztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRSYW5kb21Vc2VyUm9sZSh1c2VyczogTGlzdFVzZXJbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgbWF4ID0gTWF0aC5yb3VuZChcclxuICAgICAgdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UucGFnZVNpemUgLSB0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5wYWdlU2l6ZSAvIDQsXHJcbiAgICApO1xyXG4gICAgY29uc3QgbWluID0gTWF0aC5yb3VuZCh0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5wYWdlU2l6ZSAvIDIpO1xyXG4gICAgY29uc3QgcmFuZG9tQW1vdW50ID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikgKyBtaW4pO1xyXG4gICAgY29uc3QgaW5kZXhlcyA9IHRoaXMuZ2V0QXJyYXlPZlJhbmRvbVVzZXJJbmRleGVzKHJhbmRvbUFtb3VudCk7XHJcbiAgICBpbmRleGVzLmZvckVhY2goKGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICh1c2Vyc1tpbmRleF0pIHtcclxuICAgICAgICB1c2Vyc1tpbmRleF0ucm9sZU5hbWUgPSAnRGVkaWNhdGVkIEluc3RhbmNlIENhbGxpbmcgdXNlcic7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBcnJheU9mUmFuZG9tVXNlckluZGV4ZXMocmFuZG9tQW1vdW50OiBudW1iZXIpOiBudW1iZXJbXSB7XHJcbiAgICBjb25zdCBpbmRleGVzID0gW107XHJcbiAgICB3aGlsZSAocmFuZG9tQW1vdW50ID4gMCkge1xyXG4gICAgICBjb25zdCBpbmRleCA9IE1hdGgucm91bmQoXHJcbiAgICAgICAgTWF0aC5yYW5kb20oKSAqICh0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5wYWdlU2l6ZSAtIDEpLFxyXG4gICAgICApO1xyXG4gICAgICBpbmRleGVzLnB1c2goaW5kZXgpO1xyXG4gICAgICByYW5kb21BbW91bnQtLTtcclxuICAgIH1cclxuICAgIHJldHVybiBpbmRleGVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBydW5TZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFQZW5kaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlLnF1aWNrUmVndWxhclVzZXJzU2VhcmNoKCkuc3Vic2NyaWJlKFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5lcnJvcignVGhlIGRhdGEgY2FuIG5vdCBiZSByZWNlaXZlZCcpO1xyXG4gICAgICB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXNlck1pZ3JhdGlvblByb2dyZXNzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdXNlcklkSW5NaWdyYXRpb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcclxuICAgICAgTE9DQUxfU1RPUkFHRS5VU0VSX0lOX01JR1JBVElPTixcclxuICAgICk7XHJcbiAgICBpZiAodXNlcklkSW5NaWdyYXRpb24pIHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnVzZXJzLmZpbmRJbmRleChcclxuICAgICAgICAodXNlcikgPT4gdXNlci51c2VyaWQgPT09IHVzZXJJZEluTWlncmF0aW9uLFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLm1vdmVJblByb2dyZXNzVXNlcklkID0gaW5kZXggPiAtMSA/IHRoaXMudXNlcnNbaW5kZXhdLnVzZXJpZCA6ICcnO1xyXG4gICAgICB0aGlzLm1vdmVVc2VyUGVuZGluZyA9IGluZGV4ID4gLTE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE1pZ3JhdGVkVXNlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFQZW5kaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IHtcclxuICAgICAgY3VzdG9tZXJpZDogdGhpcy5jdXN0b21lcklkLFxyXG4gICAgICBzaXRlaWQ6IHRoaXMuc2l0ZUlkLFxyXG4gICAgICAnY2xvdWQtb25seSc6ICd0cnVlJyxcclxuICAgIH07XHJcbiAgICAvLyB0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5xdWlja1dlYmV4VXNlcnNTZWFyY2goc2VhcmNoUGFyYW1zLCB0cnVlLCBNQVhfSU5URUdFUilcclxuICAgIHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlXHJcbiAgICAgIC5nZXRNaWdyYXRlZFVzZXJzKHRoaXMuY3VzdG9tZXJJZClcclxuICAgICAgLy8gdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UuZ2V0TWlncmF0ZWRXZWJleFVzZXJzKHRoaXMuY3VzdG9tZXJJZClcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB1c2VySWRJbk1pZ3JhdGlvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFxyXG4gICAgICAgICAgICBMT0NBTF9TVE9SQUdFLlVTRVJfSU5fTUlHUkFUSU9OLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgdXNlcklkSW5NaWdyYXRpb24gJiZcclxuICAgICAgICAgICAgdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UubWlncmF0ZWRVc2Vycy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKG1pZ3JhdGVkVXNlcjogYW55KSA9PiBtaWdyYXRlZFVzZXIudXNlcmlkID09PSB1c2VySWRJbk1pZ3JhdGlvbixcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKExPQ0FMX1NUT1JBR0UuVVNFUl9JTl9NSUdSQVRJT04pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5ydW5TZWFyY2goKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5lcnJvcignVGhlIGRhdGEgY2FuIG5vdCBiZSByZWNlaXZlZCcpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBvbk1vdmVVc2VyKHVzZXI6IExpc3RVc2VyLCBpbmRleDogbnVtYmVyLCB0eXBlOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVXNlckxpc3RDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0aXRsZTogYFVwZ3JhZGUgdXNlciAke3VzZXIudXNlcmlkfSB0byBNdWx0aSBUZW5hbnQ/YCxcclxuICAgICAgICBtZXNzYWdlOiBgPHA+VXBncmFkaW5nIHRoaXMgdXNlciB3aWxsIHByZXBhcmUgdGhlIGFjY291bnQgZm9yIG1pZ3JhdGlvbiB0byBNdWx0aSBUZW5hbnQuPC9wPlxyXG4gICAgICAgICAgPHA+RHVyaW5nIHRoaXMgcHJvY2VzcywgdGhlIHVzZXIgY29uZmlndXJhdGlvbiB3aWxsIGJlIGNvcGllZCB0byB0aGUgTXVsdGkgVGVuYW50IGVudmlyb25tZW50LlxyXG4gICAgICAgICAgVGhlIHVzZXIgd2lsbCByZW1haW4gYWN0aXZlIG9uIHRoZSBjdXJyZW50IHN5c3RlbSB1bnRpbCB0aGUgQWN0aXZhdGUgc3RlcCBpcyBjb21wbGV0ZWQuPC9wPlxyXG4gICAgICAgICAgPHA+RG8geW91IHdhbnQgdG8gY29udGludWU/PC9wPmAsXHJcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdZZXMsIHVwZ3JhZGUnLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICBjYXNlICdRdWlja01vdmUnOlxyXG4gICAgICAgICAgICB0aGlzLm1vdmVVc2VyVG9NVCh1c2VyLCBpbmRleCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnTVQnOlxyXG4gICAgICAgICAgICB0aGlzLm1vdmVVc2VyID0gdXNlcjtcclxuICAgICAgICAgICAgdGhpcy5tb3ZlVXNlckluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd01vdmVVc2VyV2l6YXJkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zd2l0Y2hUb1dpemFyZC5lbWl0KHRydWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ0RJJzpcclxuICAgICAgICAgICAgdGhpcy5tb3ZlVXNlclRvREkodXNlciwgaW5kZXgpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcnVuTW92ZVVzZXJUb01UKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW92ZVVzZXIgJiYgdGhpcy5tb3ZlVXNlci5zaXRlSWQgJiYgdGhpcy5tb3ZlVXNlci51c2VyaWQpIHtcclxuICAgICAgdGhpcy51c2VyU2VydmljZS5tb3ZlVXNlclBlbmRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLm1vdmVJblByb2dyZXNzVXNlcklkID0gdGhpcy5tb3ZlVXNlci51c2VyaWQ7XHJcbiAgICAgIHRoaXMuc2V0U3RhdHVzVG9Vc2VyKHRoaXMubW92ZVVzZXJJbmRleCwgJ0luIFByb2dyZXNzJyk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgIExPQ0FMX1NUT1JBR0UuVVNFUl9JTl9NSUdSQVRJT04sXHJcbiAgICAgICAgdGhpcy5tb3ZlVXNlci51c2VyaWQsXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAubW92ZVVzZXJUb01UKHRoaXMuY3VzdG9tZXJJZCwgdGhpcy5tb3ZlVXNlcilcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnVzZXJNb3ZlZCQubmV4dCh0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlVXNlckluTWlncmF0aW9uUHJvZ3Jlc3MoKTtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdHVzVG9Vc2VyKHRoaXMubW92ZVVzZXJJbmRleCwgJ01pZ3JhdGlvbiBFcnJvcicpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaFVzZXJzKHRva2VuOiBzdHJpbmcsIHR5cGU/OiBVU0VSX1RZUEVTX1RZUEUpOiB2b2lkIHtcclxuICAgIC8vIGlmIHRva2VuIGlzIGVtcHR5IOKAlCByZXN0b3JlIGN1cnJlbnQgcGFnZSBkYXRhc291cmNlXHJcbiAgICBpZiAoIXRva2VuICYmICF0eXBlKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy51c2Vycyk7XHJcbiAgICAgIHRoaXMudG90YWxVc2Vyc0NvdW50ID0gdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2U/LnRvdGFsIHx8IHRoaXMudXNlcnMubGVuZ3RoO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZmV0Y2ggYWxsIHVzZXJzIChzZXJ2ZXItc2lkZSkgYW5kIGZpbHRlciBsb2NhbGx5IGFjcm9zcyB0aGUgd2hvbGUgZGF0YXNldFxyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5nZXRBbGxSZWd1bGFyVXNlcnMoKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChhbGxVc2VyczogTGlzdFVzZXJbXSkgPT4ge1xyXG4gICAgICAgICAgbGV0IGZpbHRlcmVkOiBMaXN0VXNlcltdO1xyXG4gICAgICAgICAgaWYodHlwZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGZpbHRlcmVkID0gdGhpcy5maWx0ZXJCeVRva2VuKGFsbFVzZXJzLCB0b2tlbik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmaWx0ZXJlZCA9IHRoaXMuZmlsdGVyQnlUeXBlKGFsbFVzZXJzLCB0eXBlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UoZmlsdGVyZWQpO1xyXG4gICAgICAgICAgdGhpcy50b3RhbFVzZXJzQ291bnQgPSBmaWx0ZXJlZC5sZW5ndGg7XHJcbiAgICAgICAgICB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZXJyb3IoJ1RoZSBkYXRhIGNhbiBub3QgYmUgcmVjZWl2ZWQnKTtcclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEJ5VHlwZSh1c2VyVHlwZTogVVNFUl9UWVBFU19UWVBFKSB7XHJcbiAgICB0aGlzLnNlYXJjaFVzZXJzKCcnLCB1c2VyVHlwZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlckJ5VG9rZW4odXNlcnM6IExpc3RVc2VyW10sIHRva2VuOiBzdHJpbmcpOiBMaXN0VXNlcltdIHtcclxuICAgIGNvbnN0IHRvayA9ICh0b2tlbiB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGZpbHRlcmVkID0gKHVzZXJzIHx8IFtdKS5maWx0ZXIoKHVzZXI6IExpc3RVc2VyKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpcnN0TmFtZSA9ICh1c2VyPy5maXJzdE5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IGxhc3ROYW1lID0gKHVzZXI/Lmxhc3ROYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBjb25zdCBmdWxsTmFtZSA9IGAke2ZpcnN0TmFtZX0gJHtsYXN0TmFtZX1gLnRyaW0oKTtcclxuICAgICAgY29uc3QgZW1haWwgPSAodXNlcj8uZW1haWwgfHwgJycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgZmlyc3ROYW1lLmluY2x1ZGVzKHRvaykgfHxcclxuICAgICAgICBsYXN0TmFtZS5pbmNsdWRlcyh0b2spIHx8XHJcbiAgICAgICAgZnVsbE5hbWUuaW5jbHVkZXModG9rKSB8fFxyXG4gICAgICAgIGVtYWlsLmluY2x1ZGVzKHRvaylcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmaWx0ZXJlZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyQnlUeXBlKHVzZXJzOiBMaXN0VXNlcltdLCB1c2VyVHlwZTogVVNFUl9UWVBFU19UWVBFKTogTGlzdFVzZXJbXSB7XHJcbiAgICBsZXQgZmlsdGVyZWRVc2VyczogTGlzdFVzZXJbXTtcclxuICAgIGlmKHVzZXJUeXBlID09PSBVU0VSX1RZUEVTX01BUC5DVUNNKSB7XHJcbiAgICAgIGZpbHRlcmVkVXNlcnMgPSB1c2Vycy5maWx0ZXIoKHVzZXIpID0+ICF1c2VyLndlYmV4VVVJRCAmJiB1c2VyLmN1Y21JZCAhPSBPTl9QUkVNX0lEKTtcclxuICAgIH0gZWxzZSBpZih1c2VyVHlwZSA9PT0gVVNFUl9UWVBFU19NQVAuV0VCRVgpIHtcclxuICAgICAgZmlsdGVyZWRVc2VycyA9IHVzZXJzLmZpbHRlcigodXNlcikgPT4gdXNlci53ZWJleFVVSUQgIT09IG51bGwgJiYgdXNlci53ZWJleFVVSUQgIT09IHVuZGVmaW5lZCk7XHJcbiAgICB9IGVsc2UgaWYodXNlclR5cGUgPT09IFVTRVJfVFlQRVNfTUFQLk9OUFJFTSkge1xyXG4gICAgICBmaWx0ZXJlZFVzZXJzID0gdXNlcnMuZmlsdGVyKCh1c2VyKSA9PiAhdXNlci53ZWJleFVVSUQgJiYgdXNlci5jdWNtSWQgPT0gT05fUFJFTV9JRCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWx0ZXJlZFVzZXJzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZpbHRlcmVkVXNlcnM7XHJcbiAgfVxyXG5cclxuICBvbkZpcm13YXJlVXBncmFkZUNsaWNrZWQodXNlcjogTGlzdFVzZXIpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVXNlckxpc3RDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0aXRsZTogYEFjdGl2YXRlIHVzZXIgJHt1c2VyLnVzZXJpZH0gb24gTXVsdGkgVGVuYW50P2AsXHJcbiAgICAgICAgbWVzc2FnZTogYDxwPkFjdGl2YXRpbmcgdGhpcyB1c2VyIHdpbGwgcGVyZm9ybSB0aGUgY3V0b3ZlciB0byBNdWx0aSBUZW5hbnQgYW5kIGNvbXBsZXRlIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy48L3A+XHJcbiAgICAgICAgICA8cD5BZnRlciBhY3RpdmF0aW9uLCB0aGUgdXNlciB3aWxsIGJlY29tZSBhY3RpdmUgb24gTXVsdGkgVGVuYW50IGFuZCB0aGUgb3JpZ2luYWwgdXNlciB3aWxsIGJlY29tZSBpbmFjdGl2ZS48L3A+XHJcbiAgICAgICAgICA8cD5EbyB5b3Ugd2FudCB0byBjb250aW51ZT88L3A+YCxcclxuICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ0FjdGl2YXRlJyxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5iZWZvcmVDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmKHJlc3VsdCkge1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbWVyVHlwZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkZXN0aW5hdGlvbicpIGFzIGtleW9mIHR5cGVvZiBDVVNUT01FUl9ERVNUSU5BVElPTjtcclxuICAgICAgICB0aGlzLnNldFVzZXJQZW5kaW5nU3RhdHVzKHVzZXIsICdQZW5kaW5nIEFjdGl2YXRpb24nKTtcclxuXHJcbiAgICAgICAgLy8gdGhpcy51c2VyU2VydmljZS50cmlnZ2VyRmlybXdhcmVVcGdyYWRlKHRoaXMuY3VzdG9tZXJJZCwgbnVsbCwgW10sIGN1c3RvbWVyVHlwZSlcclxuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnN3YXBTdGF0dXNlcyh0aGlzLmN1c3RvbWVySWQsIHVzZXIuZW1haWwgfHwgJycpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGltZXIoMTIwMDAwKSlcclxuICAgICAgICAgICAgLy8gc3dpdGNoTWFwKCgpID0+IHRpbWVyKDIwMDApKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFVzZXJQZW5kaW5nU3RhdHVzKHVzZXIsICdBY3RpdmUnKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldE9yaWdpbmFsVXNlclN0YXR1cyh1c2VyLmVtYWlsLCAnSW5hY3RpdmUnKTtcclxuICAgICAgICAgICAgICAvLyB0aGlzLm5vdGlmaWNhdGlvbnMuc3VjY2VzcyhgJHt1c2VyLnVzZXJpZH0gc3VjY2Vzc2Z1bGx5IHVwZ3JhZGVkYCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRVc2VyUGVuZGluZ1N0YXR1cyh1c2VyLCAnSW5hY3RpdmUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pICAgIFxyXG4gIH1cclxuXHJcbiAgb25SZXZlcnRDbGlja2VkKHVzZXI6IExpc3RVc2VyKSB7XHJcbiAgICBpZiAodXNlcj8ud2ViZXhVVUlEKSB7XHJcbiAgICAgIHRoaXMuc2V0VXNlclBlbmRpbmdTdGF0dXModXNlciwgJ1BlbmRpbmcgRGVhY3RpdmF0aW9uJyk7XHJcbiAgICAgIHRoaXMudXNlclNlcnZpY2Uuc3dhcFN0YXR1c2VzKHRoaXMuY3VzdG9tZXJJZCwgdXNlci5lbWFpbCB8fCAnJylcclxuICAgICAgLy8gdGhpcy51c2VyU2VydmljZS5yZXZlcnRNaWdyYXRpb24odGhpcy5jdXN0b21lcklkLCB1c2VyLndlYmV4VVVJRClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aW1lcigyMDAwKSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldFVzZXJQZW5kaW5nU3RhdHVzKHVzZXIsICdJbmFjdGl2ZScpO1xyXG4gICAgICAgICAgdGhpcy5zZXRPcmlnaW5hbFVzZXJTdGF0dXModXNlci5lbWFpbCwgJ0FjdGl2ZScpO1xyXG4gICAgICAgICAgLy8gdGhpcy5ub3RpZmljYXRpb25zLnN1Y2Nlc3MoYCR7dXNlci51c2VyaWR9IHN1Y2Nlc3NmdWxseSBkZWFjdGl2YXRlZGApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0VXNlclBlbmRpbmdTdGF0dXModXNlciwgJ0FjdGl2ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVzZXJQZW5kaW5nU3RhdHVzKHVzZXI6IExpc3RVc2VyLCBzdGF0dXM6IHN0cmluZykge1xyXG4gICAgdXNlci5zdGF0dXMgPSBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE9yaWdpbmFsVXNlclN0YXR1cyhlbWFpbCA9ICcnLCBzdGF0dXM6IHN0cmluZykge1xyXG4gICAgY29uc3Qgb3JpZ2luYWxVc2VyID0gdGhpcy51c2Vycy5maW5kKCh1c2VyKSA9PiB1c2VyLmVtYWlsID09PSBlbWFpbCAmJiAhdXNlci53ZWJleFVVSUQpO1xyXG4gICAgaWYob3JpZ2luYWxVc2VyKSB7XHJcbiAgICAgIG9yaWdpbmFsVXNlci5zdGF0dXMgPSBzdGF0dXM7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtbG9hZGVyICpuZ0lmPVwiZGF0YVBlbmRpbmdcIj48L2FwcC1sb2FkZXI+XHJcbjxkaXYgKm5nSWY9XCIhc2hvd01vdmVVc2VyV2l6YXJkXCIgaWQ9XCJ1c2Vycy1saXN0XCI+XHJcbiAgPHRrLXVzZXJzLXRhYmxlLXRvb2xiYXJcclxuICAgIFt0b3RhbFVzZXJzQ291bnRdPVwidG90YWxVc2Vyc0NvdW50XCJcclxuICAgIChzZWFyY2hDaGFuZ2UpPVwic2VhcmNoVXNlcnMoJGV2ZW50KVwiXHJcbiAgICAoc2VhcmNoQnlUeXBlKT1cInNlYXJjaEJ5VHlwZSgkZXZlbnQpXCJcclxuICA+PC90ay11c2Vycy10YWJsZS10b29sYmFyPlxyXG4gIDx0YWJsZVxyXG4gICAgY2xhc3M9XCJ3ZWJleC10YWJsZVwiXHJcbiAgICBtYXQtdGFibGVcclxuICAgICpuZ0lmPVwidXNlcnM/Lmxlbmd0aFwiXHJcbiAgICAjdGFibGVcclxuICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxyXG4gID5cclxuICAgIDwhLS0gPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ1c2VyLWljb25cIj5cclxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cIndlYmV4LXRhYmxlLXRoXCI+PC90aD5cclxuICAgICAgPHRkIGNsYXNzPVwidXNlci1zaXRlXCIgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgdXNlclwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkLXVzZXItcm93JzogbW92ZVVzZXJQZW5kaW5nICYmIG1vdmVJblByb2dyZXNzVXNlcklkICYmIG1vdmVJblByb2dyZXNzVXNlcklkID09PSB1c2VyPy51c2VyaWR9XCJcclxuICAgICAgICAgIChjbGljayk9XCJvblVzZXJDbGljayh1c2VyKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi13ZWJleC1ib3hcIj48c3BhbiBjbGFzcz1cImljb24td2ViZXggaWNvbi13ZWJleC11c2VyXCI+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvbmctY29udGFpbmVyPiAtLT5cclxuXHJcbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm5hbWVcIj5cclxuICAgICAgPHRoXHJcbiAgICAgICAgbWF0LWhlYWRlci1jZWxsXHJcbiAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICBjbGFzcz1cIndlYmV4LXRhYmxlLXRoXCJcclxuICAgICAgICBzdHlsZT1cInBhZGRpbmctbGVmdDogNjBweFwiXHJcbiAgICAgID5cclxuICAgICAgICBEaXNwbGF5IG5hbWVcclxuICAgICAgPC90aD5cclxuICAgICAgPHRkXHJcbiAgICAgICAgY2xhc3M9XCJ1c2VyLXNpdGVcIlxyXG4gICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgdXNlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uVXNlckNsaWNrKHVzZXIpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5LW5hbWUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLW5hbWUtdGV4dFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2luYWN0aXZlLXVzZXItcm93JzogdXNlci5zdGF0dXMgIT09ICdBY3RpdmUnIH1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyB1c2VyLmZpcnN0TmFtZSB9fSB7eyB1c2VyLmxhc3ROYW1lIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24td2ViZXgtYm94XCJcclxuICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwiaWNvbi13ZWJleCBpY29uLXdlYmV4LXVzZXJcIj48L3NwYW5cclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImVtYWlsXCI+XHJcbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJ3ZWJleC10YWJsZS10aFwiPkVtYWlsPC90aD5cclxuICAgICAgPHRkXHJcbiAgICAgICAgY2xhc3M9XCJ1c2VyLXNpdGVcIlxyXG4gICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgdXNlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uVXNlckNsaWNrKHVzZXIpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHVzZXIuZW1haWwgfX1cclxuICAgICAgPC90ZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3RhdHVzXCI+XHJcbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJ3ZWJleC10YWJsZS10aFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyLXdpdGgtaW5mb1wiPlxyXG4gICAgICAgICAgU3RhdHVzXHJcbiAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9pbmZvLWNpcmNsZS1yZWd1bGFyLnN2Z1wiIHdpZHRoPVwiMTZcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC90aD5cclxuICAgICAgPHRkXHJcbiAgICAgICAgY2xhc3M9XCJ1c2VyLXNpdGVcIlxyXG4gICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgdXNlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uVXNlckNsaWNrKHVzZXIpXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJ1c2VyLnN0YXR1cyAhPT0gJ0FjdGl2ZScgJiYgdXNlci53ZWJleFVVSUQgPyAnUGVuZGluZyBjdXRvdmVyIHRvIE1ULiBQbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IgZm9yIGRldGFpbHMuJyA6ICcnXCJcclxuICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJpY29uLXVzZXItc3RhdHVzXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ljb24tdXNlci1zdGF0dXMtYWN0aXZlJzogdXNlci5zdGF0dXMgPT09ICdBY3RpdmUnIH1cIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgICA+e3sgdXNlci5zdGF0dXMgfX1cclxuICAgICAgPC90ZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uc1wiPlxyXG4gICAgICA8dGhcclxuICAgICAgICBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgICAgIGNsYXNzPVwid2ViZXgtdGFibGUtdGhcIlxyXG4gICAgICAgIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAyNHB4OyBwYWRkaW5nLXRvcDogNHB4XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL3NldHRpbmdzLXJlZ3VsYXIuc3ZnXCIgd2lkdGg9XCIxNlwiIGFsdD1cIlwiIC8+XHJcbiAgICAgIDwvdGg+XHJcbiAgICAgIDx0ZFxyXG4gICAgICAgIGNsYXNzPVwidXNlci1zaXRlXCJcclxuICAgICAgICBtYXQtY2VsbFxyXG4gICAgICAgICptYXRDZWxsRGVmPVwibGV0IHVzZXI7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXJcclxuICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3Bpbm5lclwiXHJcbiAgICAgICAgICBbZGlhbWV0ZXJdPVwiMzBcIlxyXG4gICAgICAgICAgc3Ryb2tlV2lkdGg9XCIzXCJcclxuICAgICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCJcclxuICAgICAgICAgICpuZ0lmPVwidXNlci5zdGF0dXMgPT09ICdJbiBQcm9ncmVzcycgfHwgdXNlci5zdGF0dXMgPT09ICdQZW5kaW5nIEFjdGl2YXRpb24nIHx8IHVzZXIuc3RhdHVzID09PSAnUGVuZGluZyBEZWFjdGl2YXRpb24nXCJcclxuICAgICAgICA+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAhKFxyXG4gICAgICAgICAgICAgIG1vdmVVc2VyUGVuZGluZyAmJlxyXG4gICAgICAgICAgICAgIG1vdmVJblByb2dyZXNzVXNlcklkICYmXHJcbiAgICAgICAgICAgICAgbW92ZUluUHJvZ3Jlc3NVc2VySWQgPT09IHVzZXI/LnVzZXJpZFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24tYWN0aW9uLWRvdFwiXHJcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1hY3Rpb25zLWRvdHNcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLWRvdFwiPi48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1kb3RcIj4uPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tZG90XCI+Ljwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbZGlzYWJsZWRdPVwidHJ1ZVwiPlJlc2VuZCBJbnZpdGF0aW9uPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2Rpc2FibGVkXT1cInRydWVcIj5SZXNldCBQYXNzd29yZDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidXNlci53ZWJleFVVSUQgfHwgdXNlci5zdGF0dXMgIT09ICdBY3RpdmUnXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhdXNlci5pc01pZ3JhdGVkXCJcclxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Nb3ZlVXNlcih1c2VyLCBpLCAnUXVpY2tNb3ZlJywgJ01UJylcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBRdWljayBVcGdyYWRlIFVzZXIgdG8gTVRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidXNlci53ZWJleFVVSUQgfHwgdXNlci5zdGF0dXMgIT09ICdBY3RpdmUnXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhdXNlci5pc01pZ3JhdGVkXCJcclxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Nb3ZlVXNlcih1c2VyLCBpLCAnTVQnLCAnTVQnKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFVwZ3JhZGUgVXNlciB0byBNVFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwidXNlci5pc01pZ3JhdGVkXCJcclxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Nb3ZlVXNlcih1c2VyLCBpLCAnREknLCAnREknKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFJldmVydCBVc2VyIHRvIFVDTS9ESVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2Rpc2FibGVkXT1cIiF1c2VyLndlYmV4VVVJRCB8fCB1c2VyLnN0YXR1cyA9PT0gJ0FjdGl2ZSdcIiAoY2xpY2spPVwib25GaXJtd2FyZVVwZ3JhZGVDbGlja2VkKHVzZXIpXCI+QWN0aXZhdGUgVXNlcjwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFtkaXNhYmxlZF09XCIhdXNlci53ZWJleFVVSUQgfHwgdXNlci5zdGF0dXMgIT09ICdBY3RpdmUnXCIgKGNsaWNrKT1cIm9uUmV2ZXJ0Q2xpY2tlZCh1c2VyKVwiPlJldmVydDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFtkaXNhYmxlZF09XCJ0cnVlXCI+RGVsZXRlIFVzZXI8L2J1dHRvbj5cclxuICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICA8L3RkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJyb2xlXCI+XHJcbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJ3ZWJleC10YWJsZS10aFwiPlxyXG4gICAgICAgIEFkbWluIHJvbGVzXHJcbiAgICAgIDwvdGg+XHJcbiAgICAgIDx0ZFxyXG4gICAgICAgIGNsYXNzPVwidXNlci1zaXRlXCJcclxuICAgICAgICBtYXQtY2VsbFxyXG4gICAgICAgICptYXRDZWxsRGVmPVwibGV0IHVzZXJcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2luYWN0aXZlLXVzZXItcm93JzogdXNlci5zdGF0dXMgIT09ICdBY3RpdmUnIH1cIlxyXG4gICAgICAgIChjbGljayk9XCJvblVzZXJDbGljayh1c2VyKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyB1c2VyLnJvbGVOYW1lIHx8IFwiLVwiIH19XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNvdXJjZVwiPlxyXG4gICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwid2ViZXgtdGFibGUtdGhcIj5cclxuICAgICAgICBQcm92aXNpb25pbmcgVHlwZVxyXG4gICAgICA8L3RoPlxyXG4gICAgICA8dGRcclxuICAgICAgICBjbGFzcz1cInVzZXItcHJvdmlzaW9uaW5nLXR5cGVcIlxyXG4gICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgdXNlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uVXNlckNsaWNrKHVzZXIpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2VyLndlYmV4VVVJRFwiPlxyXG4gICAgICAgICAgPHNwYW4gW21hdFRvb2x0aXBdPVwiJ011bHRpLVRlbmFudCdcIiBjbGFzcz1cImljb24td3JhcHBlclwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgICAgICAgICAgPjxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL3dlYmV4LnN2Z1wiIHdpZHRoPVwiMjBcIiBhbHQ9XCJcIlxyXG4gICAgICAgICAgLz48L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF1c2VyLndlYmV4VVVJRFwiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJ1c2VyLmN1Y21JZCA9PSBPTl9QUkVNX0lEXCIgY2xhc3M9XCJpY29uLXdyYXBwZXJcIiBbbWF0VG9vbHRpcF09XCInT24gUHJlbSdcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcbiAgICAgICAgICAgID48aW1nIHNyYz1cImFzc2V0cy9pY29ucy9sb2NhbF8yNC5zdmdcIiB3aWR0aD1cIjIwXCIgYWx0PVwiXCJcclxuICAgICAgICAgIC8+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJ1c2VyLmN1Y21JZCAhPSBPTl9QUkVNX0lEXCIgY2xhc3M9XCJpY29uLXdyYXBwZXJcIiBbbWF0VG9vbHRpcF09XCInRGVkaWNhdGVkIEluc3RhbmNlJ1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgICAgICAgICAgPjxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2RpX2Nsb3VkXzI0LnN2Z1wiIHdpZHRoPVwiMjBcIiBhbHQ9XCJcIlxyXG4gICAgICAgICAgLz48L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImxhc3QtYWN0aXZlLXRpbWVcIj5cclxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cIndlYmV4LXRhYmxlLXRoXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItd2l0aC1pbmZvXCI+XHJcbiAgICAgICAgICBMYXN0IGFjdGl2ZSB0aW1lXHJcbiAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cImluZm8taWNvblwiPmluZm88L21hdC1pY29uPiAtLT5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2luZm8tY2lyY2xlLXJlZ3VsYXIuc3ZnXCIgd2lkdGg9XCIxNlwiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L3RoPlxyXG4gICAgICA8dGRcclxuICAgICAgICBjbGFzcz1cInVzZXItc2l0ZVwiXHJcbiAgICAgICAgbWF0LWNlbGxcclxuICAgICAgICAqbWF0Q2VsbERlZj1cImxldCB1c2VyXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdpbmFjdGl2ZS11c2VyLXJvdyc6IHVzZXIuc3RhdHVzICE9PSAnQWN0aXZlJyB9XCJcclxuICAgICAgICAoY2xpY2spPVwib25Vc2VyQ2xpY2sodXNlcilcIlxyXG4gICAgICA+XHJcbiAgICAgICAgMi8xNi8yNlxyXG4gICAgICA8L3RkPlxyXG4gICAgICAvXHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxyXG4gICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgJ2Rpc2FibGVkLXVzZXItcm93JzpcclxuICAgICAgICAgIG1vdmVVc2VyUGVuZGluZyAmJlxyXG4gICAgICAgICAgbW92ZUluUHJvZ3Jlc3NVc2VySWQgJiZcclxuICAgICAgICAgIG1vdmVJblByb2dyZXNzVXNlcklkID09PSByb3c/LnVzZXJpZCxcclxuICAgICAgICAnaW5hY3RpdmUtdXNlci1yb3cnOiByb3cuc3RhdHVzICE9PSAnQWN0aXZlJ1xyXG4gICAgICB9XCI+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGFibGU+XHJcblxyXG4gIDxhcHAtcGFnaW5hdGlvblxyXG4gICAgW3BhZ2luYXRpb25dPVwidXNlcnNTZWFyY2hTZXJ2aWNlLmdldFBhZ2luYXRpb24oKVwiXHJcbiAgICBbc2hvd1BhZ2VTaXplT3B0aW9uc109XCJ0cnVlXCJcclxuICAgIChwYWdlTnVtYmVyQ2hhbmdlRW1pdHRlcik9XCJwYWdlTnVtYmVyQ2hhbmdlRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAocGFnZUVtaXR0ZXIpPVwicGFnZUV2ZW50KCRldmVudClcIlxyXG4gID5cclxuICA8L2FwcC1wYWdpbmF0aW9uPlxyXG48L2Rpdj5cclxuXHJcbjxhcHAtbW92ZS11c2VyLXdpemFyZFxyXG4gICpuZ0lmPVwic2hvd01vdmVVc2VyV2l6YXJkXCJcclxuICBbdXNlcl09XCJtb3ZlVXNlclwiXHJcbiAgKGRvbmUpPVwiY2xvc2VNb3ZlVXNlcldpemFyZCh0cnVlKVwiXHJcbiAgW2N1c3RvbWVySWRdPVwiY3VzdG9tZXJJZFwiXHJcbiAgKHJ1bk1vdmVVc2VyKT1cInJ1bk1vdmVVc2VyVG9NVCgpXCJcclxuICAoY2xvc2VNb3ZlVXNlcldpemFyZCk9XCJjbG9zZU1vdmVVc2VyV2l6YXJkKGZhbHNlKVwiXHJcbj48L2FwcC1tb3ZlLXVzZXItd2l6YXJkPlxyXG4iXX0=
|
|
442
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlcnMtbGlzdC9zcmMvdXNlcnMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlcnMtbGlzdC9zcmMvdXNlcnMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBZ0IsT0FBTyxFQUFnQixTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd4RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc3RCxPQUFPLEVBQXFDLFVBQVUsRUFBRSxjQUFjLEVBQW1CLE1BQU0saUJBQWlCLENBQUM7QUFFakgsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUvRyxNQUFNLGNBQWMsR0FBRztJQUNyQixNQUFNO0lBQ04sT0FBTztJQUNQLFFBQVE7SUFDUixrQkFBa0I7SUFDbEIsTUFBTTtJQUNOLFFBQVE7SUFDUixTQUFTO0NBQ1YsQ0FBQztBQUNGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLG1CQUFtQjtDQUN2QyxDQUFDO0FBT0YsTUFBTSxPQUFPLGtCQUFrQjtJQTRCN0IsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7SUFDdEMsQ0FBQztJQUVELFlBQ1MsV0FBd0IsRUFDdkIsVUFBc0IsRUFDdEIsZUFBZ0MsRUFDaEMsYUFBa0MsRUFDbkMsa0JBQXNDLEVBQ3JDLE1B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LGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVFLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBJU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXNlcnNTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91c2Vycy1zZWFyY2guc2VydmljZSc7XHJcbmltcG9ydCB7IExpc3RVc2VyIH0gZnJvbSAnLi9jbGFzc2VzL3VzZXItbGlzdCc7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgQXBpV2ViZXhTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGktd2ViZXguc2VydmljZSc7XHJcbmltcG9ydCB7IENVU1RPTUVSX0RFU1RJTkFUSU9OLCBNQVhfSU5URUdFUiwgT05fUFJFTV9JRCwgVVNFUl9UWVBFU19NQVAsIFVTRVJfVFlQRVNfVFlQRSB9IGZyb20gJy4vYXBwLmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFVzZXJMaXN0Q29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vdXNlci1saXN0LWNvbmZpcm0tZGlhbG9nL3VzZXItbGlzdC1jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuY29uc3QgRElTUExBWUVEX0NPTFMgPSBbXHJcbiAgJ25hbWUnLFxyXG4gICdlbWFpbCcsXHJcbiAgJ3N0YXR1cycsXHJcbiAgJ2xhc3QtYWN0aXZlLXRpbWUnLFxyXG4gICdyb2xlJyxcclxuICAnc291cmNlJyxcclxuICAnYWN0aW9ucycsXHJcbl07XHJcbmNvbnN0IExPQ0FMX1NUT1JBR0UgPSB7XHJcbiAgVVNFUl9JTl9NSUdSQVRJT046ICd1c2VySWRJbk1pZ3JhdGlvbicsXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC11c2Vycy1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXNlcnMtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXNlcnMtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlcnNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGN1c3RvbWVySWQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc2l0ZUlkITogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KCkgb3BlblVzZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHVzZXJNb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc3dpdGNoVG9XaXphcmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNyZWF0ZVVzZXJSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgXHJcbiAgQElucHV0KCkgaG9zdCE6IHN0cmluZztcclxuXHJcbiAgZGF0YVBlbmRpbmchOiBib29sZWFuO1xyXG4gIG1vdmVJblByb2dyZXNzVXNlcklkITogc3RyaW5nO1xyXG4gIHVzZXJzITogTGlzdFVzZXJbXTtcclxuICBkYXRhU291cmNlITogTWF0VGFibGVEYXRhU291cmNlPExpc3RVc2VyPjtcclxuICBkaXNwbGF5ZWRDb2x1bW5zID0gRElTUExBWUVEX0NPTFM7XHJcbiAgbW92ZVVzZXI6IGFueTtcclxuICBtb3ZlVXNlckluZGV4OiBhbnk7XHJcbiAgc2hvd01vdmVVc2VyV2l6YXJkID0gZmFsc2U7XHJcbiAgbW92ZVVzZXJQZW5kaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgT05fUFJFTV9JRCA9IE9OX1BSRU1fSUQ7XHJcblxyXG4gIHRvdGFsVXNlcnNDb3VudDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgZ2V0IGZvcm0oKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlPy51c2VyPy5mb3JtO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBUElTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcGlXZWJleFNlcnZpY2U6IEFwaVdlYmV4U2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIHB1YmxpYyB1c2Vyc1NlYXJjaFNlcnZpY2U6IFVzZXJzU2VhcmNoU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5zZXREZWZhdWx0VmFsdWVzKCk7XHJcbiAgICB0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5jdXN0b21lcklkID0gdGhpcy5jdXN0b21lcklkO1xyXG4gICAgdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2Uuc2l0ZUlkID0gdGhpcy5zaXRlSWQ7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UudG9rZW4gPSB0aGlzLnRva2VuO1xyXG4gICAgdGhpcy5hcGlXZWJleFNlcnZpY2UudG9rZW4gPSB0aGlzLnRva2VuO1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmFwaVVybCA9IHRoaXMuaG9zdCArICcvZGNwJztcclxuICAgIHRoaXMuYXBpV2ViZXhTZXJ2aWNlLmFwaVVybCA9IHRoaXMuaG9zdCArICcvd2ViZXgnO1xyXG5cclxuICAgIHRoaXMuZ2V0TWlncmF0ZWRVc2VycygpO1xyXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UuZm91bmRVc2VycyQuc3Vic2NyaWJlKFxyXG4gICAgICAodXNlcnM6IExpc3RVc2VyW10pID0+IHtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVEYXRhU291cmNlKHVzZXJzKTtcclxuICAgICAgfSxcclxuICAgICk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCd1c2VycyBsaXN0IHBhcmlzIDc3NzMnKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWJzY3JpcHRpb24pID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcGFnZU51bWJlckNoYW5nZUV2ZW50KHBlclBhZ2VOdW1iZXI6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UucGFnZVNpemUgPSBwZXJQYWdlTnVtYmVyO1xyXG4gICAgdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UucGFnZUluZGV4ID0gMDtcclxuICAgIHRoaXMucnVuU2VhcmNoKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZU1vdmVVc2VyV2l6YXJkKGFmdGVyVXNlck1vdmU/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vdmVVc2VyID0gbnVsbDtcclxuICAgIHRoaXMubW92ZVVzZXJJbmRleCA9IG51bGw7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShMT0NBTF9TVE9SQUdFLlVTRVJfSU5fTUlHUkFUSU9OKTtcclxuICAgIHRoaXMuc2hvd01vdmVVc2VyV2l6YXJkID0gZmFsc2U7XHJcbiAgICB0aGlzLnN3aXRjaFRvV2l6YXJkLmVtaXQoZmFsc2UpO1xyXG4gICAgaWYgKGFmdGVyVXNlck1vdmUpIHtcclxuICAgICAgdGhpcy5nZXRNaWdyYXRlZFVzZXJzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwYWdlRXZlbnQoZXZlbnQ6IFBhZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UucGFnZVNpemUgPSBldmVudC5wYWdlU2l6ZTtcclxuICAgIHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlLnBhZ2VJbmRleCA9IGV2ZW50LnBhZ2VJbmRleDtcclxuICAgIHRoaXMucnVuU2VhcmNoKCk7XHJcbiAgfVxyXG5cclxuICBvblVzZXJDbGljayh1c2VyOiBMaXN0VXNlcik6IHZvaWQge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2lzV2ViZXgnLCBTdHJpbmcoISF1c2VyLndlYmV4VVVJRCkpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3dlYmV4VVVJRCcsICdudWxsJyk7XHJcbiAgICBpZih1c2VyLndlYmV4VVVJRCkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnd2ViZXhVVUlEJywgU3RyaW5nKHVzZXIud2ViZXhVVUlEKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wZW5Vc2VyLmVtaXQodXNlcik7XHJcbiAgfVxyXG5cclxuICBtb3ZlVXNlclRvTVQodXNlcjogTGlzdFVzZXIsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh1c2VyICYmIHVzZXIuc2l0ZUlkICYmIHVzZXIudXNlcmlkKSB7XHJcbiAgICAgIHRoaXMubW92ZVVzZXJQZW5kaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tb3ZlSW5Qcm9ncmVzc1VzZXJJZCA9IHVzZXIudXNlcmlkO1xyXG4gICAgICB0aGlzLnNldFN0YXR1c1RvVXNlcihpbmRleCwgJ0luIFByb2dyZXNzJyk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExPQ0FMX1NUT1JBR0UuVVNFUl9JTl9NSUdSQVRJT04sIHVzZXIudXNlcmlkKTtcclxuXHJcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMudXNlclNlcnZpY2VcclxuICAgICAgICAubW92ZVVzZXJUb01UKHRoaXMuY3VzdG9tZXJJZCwgdXNlcilcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1vdmVVc2VyID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5tb3ZlVXNlckluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5nZXRNaWdyYXRlZFVzZXJzKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZVVzZXJJbk1pZ3JhdGlvblByb2dyZXNzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdHVzVG9Vc2VyKGluZGV4LCAnTWlncmF0aW9uIEVycm9yJyk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb3ZlVXNlclRvREkodXNlcjogTGlzdFVzZXIsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh1c2VyICYmIHVzZXIuc2l0ZUlkICYmIHVzZXIud2ViZXhVVUlEKSB7XHJcbiAgICAgIHRoaXMubW92ZVVzZXJQZW5kaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tb3ZlSW5Qcm9ncmVzc1VzZXJJZCA9IHVzZXIudXNlcmlkO1xyXG4gICAgICB0aGlzLnVzZXJzW2luZGV4XS5zdGF0dXMgPSAnSW4gUHJvZ3Jlc3MnO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMT0NBTF9TVE9SQUdFLlVTRVJfSU5fTUlHUkFUSU9OLCB1c2VyLnVzZXJpZCk7XHJcblxyXG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgICAgLm1vdmVVc2VyVG9ESSh0aGlzLmN1c3RvbWVySWQsIHVzZXIpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVVc2VySW5NaWdyYXRpb25Qcm9ncmVzcygpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXR1c1RvVXNlcihpbmRleCwgJ0FjdGl2ZScpO1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJzW2luZGV4XS53ZWJleFVVSUQgPSAnJztcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlLm1pZ3JhdGVkVXNlcnMgJiZcclxuICAgICAgICAgICAgICB0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5taWdyYXRlZFVzZXJzLmxlbmd0aFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5taWdyYXRlZFVzZXJzID1cclxuICAgICAgICAgICAgICAgIHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlLm1pZ3JhdGVkVXNlcnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAobWlncmF0ZWRVc2VyOiBhbnkpID0+IG1pZ3JhdGVkVXNlci51c2VyaWQgIT09IHVzZXIuZW1haWwsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZVVzZXJJbk1pZ3JhdGlvblByb2dyZXNzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdHVzVG9Vc2VyKGluZGV4LCAnTWlncmF0aW9uIEVycm9yJyk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZVVzZXJJbk1pZ3JhdGlvblByb2dyZXNzKCk6IHZvaWQge1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTE9DQUxfU1RPUkFHRS5VU0VSX0lOX01JR1JBVElPTik7XHJcbiAgICB0aGlzLm1vdmVJblByb2dyZXNzVXNlcklkID0gJyc7XHJcbiAgICB0aGlzLm1vdmVVc2VyUGVuZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTdGF0dXNUb1VzZXIoaW5kZXg6IG51bWJlciwgc3RhdHVzOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnVzZXJzICYmIHRoaXMudXNlcnNbaW5kZXhdKSB7XHJcbiAgICAgIHRoaXMudXNlcnNbaW5kZXhdLnN0YXR1cyA9IHN0YXR1cztcclxuICAgICAgLy8gaWYgKHN0YXR1cyA9PT0gJ01pZ3JhdGVkJykge1xyXG4gICAgICAvLyAgIHRoaXMudXNlcnNbaW5kZXhdLnJvbGVOYW1lID0gJyc7XHJcbiAgICAgIC8vICAgdGhpcy51c2Vyc1tpbmRleF0uaXNNaWdyYXRlZCA9IHRydWU7XHJcbiAgICAgIC8vICAgdGhpcy51c2Vyc1tpbmRleF0uc3RhdHVzID0gc3RhdHVzO1xyXG4gICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAvLyAgIHRoaXMudXNlcnNbaW5kZXhdLnJvbGVOYW1lID0gJ0RlZGljYXRlZCBJbnN0YW5jZSBDYWxsaW5nIHVzZXInO1xyXG4gICAgICAvLyAgIHRoaXMudXNlcnNbaW5kZXhdLmlzTWlncmF0ZWQgPSBmYWxzZTtcclxuICAgICAgLy8gICB0aGlzLnVzZXJzW2luZGV4XS5zdGF0dXMgPSBzdGF0dXM7XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy51c2Vycyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVEYXRhU291cmNlKHVzZXJzOiBMaXN0VXNlcltdKTogdm9pZCB7XHJcbiAgICBpZiAodXNlcnM/Lmxlbmd0aCkge1xyXG4gICAgICAvLyB0aGlzLnNldFJhbmRvbVVzZXJSb2xlKHVzZXJzKTtcclxuICAgICAgdGhpcy51c2VycyA9IHVzZXJzO1xyXG4gICAgICAvLyBzZXQgdG90YWwgcm93cyBjb3VudCBmb3IgdG9vbGJhci9wYWdpbmF0aW9uIGZyb20gc2VydmVyLXNpZGUgcGFnaW5hdGlvbiB3aGVuIGF2YWlsYWJsZVxyXG4gICAgICB0aGlzLnRvdGFsVXNlcnNDb3VudCA9IHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlPy50b3RhbCB8fCB1c2Vycy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuc2V0VXNlck1pZ3JhdGlvblByb2dyZXNzKCk7XHJcbiAgICAgIHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlLnNldE1pZ3JhdGVkUHJvcFRvVXNlcnModGhpcy51c2Vycyk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodXNlcnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVc2VyUm9sZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnVzZXJzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy51c2Vycy5mb3JFYWNoKCh1c2VyKSA9PiB7XHJcbiAgICAgICAgaWYgKCF1c2VyLmlzTWlncmF0ZWQpIHtcclxuICAgICAgICAgIHVzZXIucm9sZU5hbWUgPSAnRGVkaWNhdGVkIEluc3RhbmNlIENhbGxpbmcgdXNlcic7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UmFuZG9tVXNlclJvbGUodXNlcnM6IExpc3RVc2VyW10pOiB2b2lkIHtcclxuICAgIGNvbnN0IG1heCA9IE1hdGgucm91bmQoXHJcbiAgICAgIHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlLnBhZ2VTaXplIC0gdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UucGFnZVNpemUgLyA0LFxyXG4gICAgKTtcclxuICAgIGNvbnN0IG1pbiA9IE1hdGgucm91bmQodGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UucGFnZVNpemUgLyAyKTtcclxuICAgIGNvbnN0IHJhbmRvbUFtb3VudCA9IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pICsgbWluKTtcclxuICAgIGNvbnN0IGluZGV4ZXMgPSB0aGlzLmdldEFycmF5T2ZSYW5kb21Vc2VySW5kZXhlcyhyYW5kb21BbW91bnQpO1xyXG4gICAgaW5kZXhlcy5mb3JFYWNoKChpbmRleCkgPT4ge1xyXG4gICAgICBpZiAodXNlcnNbaW5kZXhdKSB7XHJcbiAgICAgICAgdXNlcnNbaW5kZXhdLnJvbGVOYW1lID0gJ0RlZGljYXRlZCBJbnN0YW5jZSBDYWxsaW5nIHVzZXInO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QXJyYXlPZlJhbmRvbVVzZXJJbmRleGVzKHJhbmRvbUFtb3VudDogbnVtYmVyKTogbnVtYmVyW10ge1xyXG4gICAgY29uc3QgaW5kZXhlcyA9IFtdO1xyXG4gICAgd2hpbGUgKHJhbmRvbUFtb3VudCA+IDApIHtcclxuICAgICAgY29uc3QgaW5kZXggPSBNYXRoLnJvdW5kKFxyXG4gICAgICAgIE1hdGgucmFuZG9tKCkgKiAodGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UucGFnZVNpemUgLSAxKSxcclxuICAgICAgKTtcclxuICAgICAgaW5kZXhlcy5wdXNoKGluZGV4KTtcclxuICAgICAgcmFuZG9tQW1vdW50LS07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW5kZXhlcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcnVuU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnVzZXJzU2VhcmNoU2VydmljZS5xdWlja1JlZ3VsYXJVc2Vyc1NlYXJjaCgpLnN1YnNjcmliZShcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZXJyb3IoJ1RoZSBkYXRhIGNhbiBub3QgYmUgcmVjZWl2ZWQnKTtcclxuICAgICAgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVzZXJNaWdyYXRpb25Qcm9ncmVzcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVzZXJJZEluTWlncmF0aW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXHJcbiAgICAgIExPQ0FMX1NUT1JBR0UuVVNFUl9JTl9NSUdSQVRJT04sXHJcbiAgICApO1xyXG4gICAgaWYgKHVzZXJJZEluTWlncmF0aW9uKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy51c2Vycy5maW5kSW5kZXgoXHJcbiAgICAgICAgKHVzZXIpID0+IHVzZXIudXNlcmlkID09PSB1c2VySWRJbk1pZ3JhdGlvbixcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5tb3ZlSW5Qcm9ncmVzc1VzZXJJZCA9IGluZGV4ID4gLTEgPyB0aGlzLnVzZXJzW2luZGV4XS51c2VyaWQgOiAnJztcclxuICAgICAgdGhpcy5tb3ZlVXNlclBlbmRpbmcgPSBpbmRleCA+IC0xO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRNaWdyYXRlZFVzZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSB7XHJcbiAgICAgIGN1c3RvbWVyaWQ6IHRoaXMuY3VzdG9tZXJJZCxcclxuICAgICAgc2l0ZWlkOiB0aGlzLnNpdGVJZCxcclxuICAgICAgJ2Nsb3VkLW9ubHknOiAndHJ1ZScsXHJcbiAgICB9O1xyXG4gICAgLy8gdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UucXVpY2tXZWJleFVzZXJzU2VhcmNoKHNlYXJjaFBhcmFtcywgdHJ1ZSwgTUFYX0lOVEVHRVIpXHJcbiAgICB0aGlzLnVzZXJzU2VhcmNoU2VydmljZVxyXG4gICAgICAuZ2V0TWlncmF0ZWRVc2Vycyh0aGlzLmN1c3RvbWVySWQpXHJcbiAgICAgIC8vIHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlLmdldE1pZ3JhdGVkV2ViZXhVc2Vycyh0aGlzLmN1c3RvbWVySWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdXNlcklkSW5NaWdyYXRpb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcclxuICAgICAgICAgICAgTE9DQUxfU1RPUkFHRS5VU0VSX0lOX01JR1JBVElPTixcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHVzZXJJZEluTWlncmF0aW9uICYmXHJcbiAgICAgICAgICAgIHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlLm1pZ3JhdGVkVXNlcnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChtaWdyYXRlZFVzZXI6IGFueSkgPT4gbWlncmF0ZWRVc2VyLnVzZXJpZCA9PT0gdXNlcklkSW5NaWdyYXRpb24sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShMT0NBTF9TVE9SQUdFLlVTRVJfSU5fTUlHUkFUSU9OKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucnVuU2VhcmNoKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZXJyb3IoJ1RoZSBkYXRhIGNhbiBub3QgYmUgcmVjZWl2ZWQnKTtcclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgb25Nb3ZlVXNlcih1c2VyOiBMaXN0VXNlciwgaW5kZXg6IG51bWJlciwgdHlwZTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFVzZXJMaXN0Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdGl0bGU6IGBVcGdyYWRlIHVzZXIgJHt1c2VyLnVzZXJpZH0gdG8gTXVsdGkgVGVuYW50P2AsXHJcbiAgICAgICAgbWVzc2FnZTogYDxwPlVwZ3JhZGluZyB0aGlzIHVzZXIgd2lsbCBwcmVwYXJlIHRoZSBhY2NvdW50IGZvciBtaWdyYXRpb24gdG8gTXVsdGkgVGVuYW50LjwvcD5cclxuICAgICAgICAgIDxwPkR1cmluZyB0aGlzIHByb2Nlc3MsIHRoZSB1c2VyIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjb3BpZWQgdG8gdGhlIE11bHRpIFRlbmFudCBlbnZpcm9ubWVudC5cclxuICAgICAgICAgIFRoZSB1c2VyIHdpbGwgcmVtYWluIGFjdGl2ZSBvbiB0aGUgY3VycmVudCBzeXN0ZW0gdW50aWwgdGhlIEFjdGl2YXRlIHN0ZXAgaXMgY29tcGxldGVkLjwvcD5cclxuICAgICAgICAgIDxwPkRvIHlvdSB3YW50IHRvIGNvbnRpbnVlPzwvcD5gLFxyXG4gICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnWWVzLCB1cGdyYWRlJyxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgY2FzZSAnUXVpY2tNb3ZlJzpcclxuICAgICAgICAgICAgdGhpcy5tb3ZlVXNlclRvTVQodXNlciwgaW5kZXgpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ01UJzpcclxuICAgICAgICAgICAgdGhpcy5tb3ZlVXNlciA9IHVzZXI7XHJcbiAgICAgICAgICAgIHRoaXMubW92ZVVzZXJJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICB0aGlzLnNob3dNb3ZlVXNlcldpemFyZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc3dpdGNoVG9XaXphcmQuZW1pdCh0cnVlKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdESSc6XHJcbiAgICAgICAgICAgIHRoaXMubW92ZVVzZXJUb0RJKHVzZXIsIGluZGV4KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJ1bk1vdmVVc2VyVG9NVCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vdmVVc2VyICYmIHRoaXMubW92ZVVzZXIuc2l0ZUlkICYmIHRoaXMubW92ZVVzZXIudXNlcmlkKSB7XHJcbiAgICAgIHRoaXMudXNlclNlcnZpY2UubW92ZVVzZXJQZW5kaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tb3ZlSW5Qcm9ncmVzc1VzZXJJZCA9IHRoaXMubW92ZVVzZXIudXNlcmlkO1xyXG4gICAgICB0aGlzLnNldFN0YXR1c1RvVXNlcih0aGlzLm1vdmVVc2VySW5kZXgsICdJbiBQcm9ncmVzcycpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICBMT0NBTF9TVE9SQUdFLlVTRVJfSU5fTUlHUkFUSU9OLFxyXG4gICAgICAgIHRoaXMubW92ZVVzZXIudXNlcmlkLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMudXNlclNlcnZpY2VcclxuICAgICAgLm1vdmVVc2VyVG9NVCh0aGlzLmN1c3RvbWVySWQsIHRoaXMubW92ZVVzZXIpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy51c2VyU2VydmljZS51c2VyTW92ZWQkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVVzZXJJbk1pZ3JhdGlvblByb2dyZXNzKCk7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXR1c1RvVXNlcih0aGlzLm1vdmVVc2VySW5kZXgsICdNaWdyYXRpb24gRXJyb3InKTtcclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hVc2Vycyh0b2tlbjogc3RyaW5nLCB0eXBlPzogVVNFUl9UWVBFU19UWVBFKTogdm9pZCB7XHJcbiAgICAvLyBpZiB0b2tlbiBpcyBlbXB0eSDigJQgcmVzdG9yZSBjdXJyZW50IHBhZ2UgZGF0YXNvdXJjZVxyXG4gICAgaWYgKCF0b2tlbiAmJiAhdHlwZSkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMudXNlcnMpO1xyXG4gICAgICB0aGlzLnRvdGFsVXNlcnNDb3VudCA9IHRoaXMudXNlcnNTZWFyY2hTZXJ2aWNlPy50b3RhbCB8fCB0aGlzLnVzZXJzLmxlbmd0aDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGZldGNoIGFsbCB1c2VycyAoc2VydmVyLXNpZGUpIGFuZCBmaWx0ZXIgbG9jYWxseSBhY3Jvc3MgdGhlIHdob2xlIGRhdGFzZXRcclxuICAgIHRoaXMuZGF0YVBlbmRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy51c2Vyc1NlYXJjaFNlcnZpY2UuZ2V0QWxsUmVndWxhclVzZXJzKClcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoYWxsVXNlcnM6IExpc3RVc2VyW10pID0+IHtcclxuICAgICAgICAgIGxldCBmaWx0ZXJlZDogTGlzdFVzZXJbXTtcclxuICAgICAgICAgIGlmKHR5cGUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBmaWx0ZXJlZCA9IHRoaXMuZmlsdGVyQnlUb2tlbihhbGxVc2VycywgdG9rZW4pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmlsdGVyZWQgPSB0aGlzLmZpbHRlckJ5VHlwZShhbGxVc2VycywgdHlwZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKGZpbHRlcmVkKTtcclxuICAgICAgICAgIHRoaXMudG90YWxVc2Vyc0NvdW50ID0gZmlsdGVyZWQubGVuZ3RoO1xyXG4gICAgICAgICAgdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLmVycm9yKCdUaGUgZGF0YSBjYW4gbm90IGJlIHJlY2VpdmVkJyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hCeVR5cGUodXNlclR5cGU6IFVTRVJfVFlQRVNfVFlQRSkge1xyXG4gICAgdGhpcy5zZWFyY2hVc2VycygnJywgdXNlclR5cGUpO1xyXG4gIH1cclxuXHJcbiAgb25DcmVhdGVVc2VyUmVxdWVzdGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jcmVhdGVVc2VyUmVxdWVzdGVkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyQnlUb2tlbih1c2VyczogTGlzdFVzZXJbXSwgdG9rZW46IHN0cmluZyk6IExpc3RVc2VyW10ge1xyXG4gICAgY29uc3QgdG9rID0gKHRva2VuIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgZmlsdGVyZWQgPSAodXNlcnMgfHwgW10pLmZpbHRlcigodXNlcjogTGlzdFVzZXIpID0+IHtcclxuICAgICAgY29uc3QgZmlyc3ROYW1lID0gKHVzZXI/LmZpcnN0TmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgICAgY29uc3QgbGFzdE5hbWUgPSAodXNlcj8ubGFzdE5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IGZ1bGxOYW1lID0gYCR7Zmlyc3ROYW1lfSAke2xhc3ROYW1lfWAudHJpbSgpO1xyXG4gICAgICBjb25zdCBlbWFpbCA9ICh1c2VyPy5lbWFpbCB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICBmaXJzdE5hbWUuaW5jbHVkZXModG9rKSB8fFxyXG4gICAgICAgIGxhc3ROYW1lLmluY2x1ZGVzKHRvaykgfHxcclxuICAgICAgICBmdWxsTmFtZS5pbmNsdWRlcyh0b2spIHx8XHJcbiAgICAgICAgZW1haWwuaW5jbHVkZXModG9rKVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGZpbHRlcmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJCeVR5cGUodXNlcnM6IExpc3RVc2VyW10sIHVzZXJUeXBlOiBVU0VSX1RZUEVTX1RZUEUpOiBMaXN0VXNlcltdIHtcclxuICAgIGxldCBmaWx0ZXJlZFVzZXJzOiBMaXN0VXNlcltdO1xyXG4gICAgaWYodXNlclR5cGUgPT09IFVTRVJfVFlQRVNfTUFQLkNVQ00pIHtcclxuICAgICAgZmlsdGVyZWRVc2VycyA9IHVzZXJzLmZpbHRlcigodXNlcikgPT4gIXVzZXIud2ViZXhVVUlEICYmIHVzZXIuY3VjbUlkICE9IE9OX1BSRU1fSUQpO1xyXG4gICAgfSBlbHNlIGlmKHVzZXJUeXBlID09PSBVU0VSX1RZUEVTX01BUC5XRUJFWCkge1xyXG4gICAgICBmaWx0ZXJlZFVzZXJzID0gdXNlcnMuZmlsdGVyKCh1c2VyKSA9PiB1c2VyLndlYmV4VVVJRCAhPT0gbnVsbCAmJiB1c2VyLndlYmV4VVVJRCAhPT0gdW5kZWZpbmVkKTtcclxuICAgIH0gZWxzZSBpZih1c2VyVHlwZSA9PT0gVVNFUl9UWVBFU19NQVAuT05QUkVNKSB7XHJcbiAgICAgIGZpbHRlcmVkVXNlcnMgPSB1c2Vycy5maWx0ZXIoKHVzZXIpID0+ICF1c2VyLndlYmV4VVVJRCAmJiB1c2VyLmN1Y21JZCA9PSBPTl9QUkVNX0lEKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZpbHRlcmVkVXNlcnMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmlsdGVyZWRVc2VycztcclxuICB9XHJcblxyXG4gIG9uRmlybXdhcmVVcGdyYWRlQ2xpY2tlZCh1c2VyOiBMaXN0VXNlcikge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihVc2VyTGlzdENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHRpdGxlOiBgQWN0aXZhdGUgdXNlciAke3VzZXIudXNlcmlkfSBvbiBNdWx0aSBUZW5hbnQ/YCxcclxuICAgICAgICBtZXNzYWdlOiBgPHA+QWN0aXZhdGluZyB0aGlzIHVzZXIgd2lsbCBwZXJmb3JtIHRoZSBjdXRvdmVyIHRvIE11bHRpIFRlbmFudCBhbmQgY29tcGxldGUgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLjwvcD5cclxuICAgICAgICAgIDxwPkFmdGVyIGFjdGl2YXRpb24sIHRoZSB1c2VyIHdpbGwgYmVjb21lIGFjdGl2ZSBvbiBNdWx0aSBUZW5hbnQgYW5kIHRoZSBvcmlnaW5hbCB1c2VyIHdpbGwgYmVjb21lIGluYWN0aXZlLjwvcD5cclxuICAgICAgICAgIDxwPkRvIHlvdSB3YW50IHRvIGNvbnRpbnVlPzwvcD5gLFxyXG4gICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnQWN0aXZhdGUnLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzdWx0KSB7XHJcbiAgICAgICAgY29uc3QgY3VzdG9tZXJUeXBlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Rlc3RpbmF0aW9uJykgYXMga2V5b2YgdHlwZW9mIENVU1RPTUVSX0RFU1RJTkFUSU9OO1xyXG4gICAgICAgIHRoaXMuc2V0VXNlclBlbmRpbmdTdGF0dXModXNlciwgJ1BlbmRpbmcgQWN0aXZhdGlvbicpO1xyXG5cclxuICAgICAgICAvLyB0aGlzLnVzZXJTZXJ2aWNlLnRyaWdnZXJGaXJtd2FyZVVwZ3JhZGUodGhpcy5jdXN0b21lcklkLCBudWxsLCBbXSwgY3VzdG9tZXJUeXBlKVxyXG4gICAgICAgIHRoaXMudXNlclNlcnZpY2Uuc3dhcFN0YXR1c2VzKHRoaXMuY3VzdG9tZXJJZCwgdXNlci5lbWFpbCB8fCAnJylcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aW1lcigxMjAwMDApKVxyXG4gICAgICAgICAgICAvLyBzd2l0Y2hNYXAoKCkgPT4gdGltZXIoMjAwMCkpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0VXNlclBlbmRpbmdTdGF0dXModXNlciwgJ0FjdGl2ZScpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0T3JpZ2luYWxVc2VyU3RhdHVzKHVzZXIuZW1haWwsICdJbmFjdGl2ZScpO1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMubm90aWZpY2F0aW9ucy5zdWNjZXNzKGAke3VzZXIudXNlcmlkfSBzdWNjZXNzZnVsbHkgdXBncmFkZWRgKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFVzZXJQZW5kaW5nU3RhdHVzKHVzZXIsICdJbmFjdGl2ZScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSkgICAgXHJcbiAgfVxyXG5cclxuICBvblJldmVydENsaWNrZWQodXNlcjogTGlzdFVzZXIpIHtcclxuICAgIGlmICh1c2VyPy53ZWJleFVVSUQpIHtcclxuICAgICAgdGhpcy5zZXRVc2VyUGVuZGluZ1N0YXR1cyh1c2VyLCAnUGVuZGluZyBEZWFjdGl2YXRpb24nKTtcclxuICAgICAgdGhpcy51c2VyU2VydmljZS5zd2FwU3RhdHVzZXModGhpcy5jdXN0b21lcklkLCB1c2VyLmVtYWlsIHx8ICcnKVxyXG4gICAgICAvLyB0aGlzLnVzZXJTZXJ2aWNlLnJldmVydE1pZ3JhdGlvbih0aGlzLmN1c3RvbWVySWQsIHVzZXIud2ViZXhVVUlEKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRpbWVyKDIwMDApKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0VXNlclBlbmRpbmdTdGF0dXModXNlciwgJ0luYWN0aXZlJyk7XHJcbiAgICAgICAgICB0aGlzLnNldE9yaWdpbmFsVXNlclN0YXR1cyh1c2VyLmVtYWlsLCAnQWN0aXZlJyk7XHJcbiAgICAgICAgICAvLyB0aGlzLm5vdGlmaWNhdGlvbnMuc3VjY2VzcyhgJHt1c2VyLnVzZXJpZH0gc3VjY2Vzc2Z1bGx5IGRlYWN0aXZhdGVkYCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRVc2VyUGVuZGluZ1N0YXR1cyh1c2VyLCAnQWN0aXZlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXNlclBlbmRpbmdTdGF0dXModXNlcjogTGlzdFVzZXIsIHN0YXR1czogc3RyaW5nKSB7XHJcbiAgICB1c2VyLnN0YXR1cyA9IHN0YXR1cztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0T3JpZ2luYWxVc2VyU3RhdHVzKGVtYWlsID0gJycsIHN0YXR1czogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBvcmlnaW5hbFVzZXIgPSB0aGlzLnVzZXJzLmZpbmQoKHVzZXIpID0+IHVzZXIuZW1haWwgPT09IGVtYWlsICYmICF1c2VyLndlYmV4VVVJRCk7XHJcbiAgICBpZihvcmlnaW5hbFVzZXIpIHtcclxuICAgICAgb3JpZ2luYWxVc2VyLnN0YXR1cyA9IHN0YXR1cztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGFwcC1sb2FkZXIgKm5nSWY9XCJkYXRhUGVuZGluZ1wiPjwvYXBwLWxvYWRlcj5cclxuPGRpdiAqbmdJZj1cIiFzaG93TW92ZVVzZXJXaXphcmRcIiBpZD1cInVzZXJzLWxpc3RcIj5cclxuICA8dGstdXNlcnMtdGFibGUtdG9vbGJhclxyXG4gICAgW3RvdGFsVXNlcnNDb3VudF09XCJ0b3RhbFVzZXJzQ291bnRcIlxyXG4gICAgKHNlYXJjaENoYW5nZSk9XCJzZWFyY2hVc2VycygkZXZlbnQpXCJcclxuICAgIChzZWFyY2hCeVR5cGUpPVwic2VhcmNoQnlUeXBlKCRldmVudClcIlxyXG4gICAgKGFkZFVzZXIpPVwib25DcmVhdGVVc2VyUmVxdWVzdGVkKClcIlxyXG4gID48L3RrLXVzZXJzLXRhYmxlLXRvb2xiYXI+XHJcbiAgPHRhYmxlXHJcbiAgICBjbGFzcz1cIndlYmV4LXRhYmxlXCJcclxuICAgIG1hdC10YWJsZVxyXG4gICAgKm5nSWY9XCJ1c2Vycz8ubGVuZ3RoXCJcclxuICAgICN0YWJsZVxyXG4gICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXHJcbiAgPlxyXG4gICAgPCEtLSA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVzZXItaWNvblwiPlxyXG4gICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwid2ViZXgtdGFibGUtdGhcIj48L3RoPlxyXG4gICAgICA8dGQgY2xhc3M9XCJ1c2VyLXNpdGVcIiBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCB1c2VyXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQtdXNlci1yb3cnOiBtb3ZlVXNlclBlbmRpbmcgJiYgbW92ZUluUHJvZ3Jlc3NVc2VySWQgJiYgbW92ZUluUHJvZ3Jlc3NVc2VySWQgPT09IHVzZXI/LnVzZXJpZH1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVXNlckNsaWNrKHVzZXIpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXdlYmV4LWJveFwiPjxzcGFuIGNsYXNzPVwiaWNvbi13ZWJleCBpY29uLXdlYmV4LXVzZXJcIj48L3NwYW4+PC9zcGFuPlxyXG4gICAgICA8L3RkPlxyXG4gICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibmFtZVwiPlxyXG4gICAgICA8dGhcclxuICAgICAgICBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgICAgIGNsYXNzPVwid2ViZXgtdGFibGUtdGhcIlxyXG4gICAgICAgIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA2MHB4XCJcclxuICAgICAgPlxyXG4gICAgICAgIERpc3BsYXkgbmFtZVxyXG4gICAgICA8L3RoPlxyXG4gICAgICA8dGRcclxuICAgICAgICBjbGFzcz1cInVzZXItc2l0ZVwiXHJcbiAgICAgICAgbWF0LWNlbGxcclxuICAgICAgICAqbWF0Q2VsbERlZj1cImxldCB1c2VyXCJcclxuICAgICAgICAoY2xpY2spPVwib25Vc2VyQ2xpY2sodXNlcilcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpc3BsYXktbmFtZS13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cInVzZXItbmFtZS10ZXh0XCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaW5hY3RpdmUtdXNlci1yb3cnOiB1c2VyLnN0YXR1cyAhPT0gJ0FjdGl2ZScgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHVzZXIuZmlyc3ROYW1lIH19IHt7IHVzZXIubGFzdE5hbWUgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi13ZWJleC1ib3hcIlxyXG4gICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJpY29uLXdlYmV4IGljb24td2ViZXgtdXNlclwiPjwvc3BhblxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZW1haWxcIj5cclxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cIndlYmV4LXRhYmxlLXRoXCI+RW1haWw8L3RoPlxyXG4gICAgICA8dGRcclxuICAgICAgICBjbGFzcz1cInVzZXItc2l0ZVwiXHJcbiAgICAgICAgbWF0LWNlbGxcclxuICAgICAgICAqbWF0Q2VsbERlZj1cImxldCB1c2VyXCJcclxuICAgICAgICAoY2xpY2spPVwib25Vc2VyQ2xpY2sodXNlcilcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgdXNlci5lbWFpbCB9fVxyXG4gICAgICA8L3RkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGF0dXNcIj5cclxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cIndlYmV4LXRhYmxlLXRoXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItd2l0aC1pbmZvXCI+XHJcbiAgICAgICAgICBTdGF0dXNcclxuICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2luZm8tY2lyY2xlLXJlZ3VsYXIuc3ZnXCIgd2lkdGg9XCIxNlwiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L3RoPlxyXG4gICAgICA8dGRcclxuICAgICAgICBjbGFzcz1cInVzZXItc2l0ZVwiXHJcbiAgICAgICAgbWF0LWNlbGxcclxuICAgICAgICAqbWF0Q2VsbERlZj1cImxldCB1c2VyXCJcclxuICAgICAgICAoY2xpY2spPVwib25Vc2VyQ2xpY2sodXNlcilcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cInVzZXIuc3RhdHVzICE9PSAnQWN0aXZlJyAmJiB1c2VyLndlYmV4VVVJRCA/ICdQZW5kaW5nIGN1dG92ZXIgdG8gTVQuIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvciBmb3IgZGV0YWlscy4nIDogJydcIlxyXG4gICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cImljb24tdXNlci1zdGF0dXNcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaWNvbi11c2VyLXN0YXR1cy1hY3RpdmUnOiB1c2VyLnN0YXR1cyA9PT0gJ0FjdGl2ZScgfVwiXHJcbiAgICAgICAgPjwvc3BhblxyXG4gICAgICAgID57eyB1c2VyLnN0YXR1cyB9fVxyXG4gICAgICA8L3RkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhY3Rpb25zXCI+XHJcbiAgICAgIDx0aFxyXG4gICAgICAgIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAgICptYXRIZWFkZXJDZWxsRGVmXHJcbiAgICAgICAgY2xhc3M9XCJ3ZWJleC10YWJsZS10aFwiXHJcbiAgICAgICAgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDI0cHg7IHBhZGRpbmctdG9wOiA0cHhcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvc2V0dGluZ3MtcmVndWxhci5zdmdcIiB3aWR0aD1cIjE2XCIgYWx0PVwiXCIgLz5cclxuICAgICAgPC90aD5cclxuICAgICAgPHRkXHJcbiAgICAgICAgY2xhc3M9XCJ1c2VyLXNpdGVcIlxyXG4gICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgdXNlcjsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxyXG4gICAgICAgICAgY2xhc3M9XCJmaWVsZC1zcGlubmVyXCJcclxuICAgICAgICAgIFtkaWFtZXRlcl09XCIzMFwiXHJcbiAgICAgICAgICBzdHJva2VXaWR0aD1cIjNcIlxyXG4gICAgICAgICAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxyXG4gICAgICAgICAgKm5nSWY9XCJ1c2VyLnN0YXR1cyA9PT0gJ0luIFByb2dyZXNzJyB8fCB1c2VyLnN0YXR1cyA9PT0gJ1BlbmRpbmcgQWN0aXZhdGlvbicgfHwgdXNlci5zdGF0dXMgPT09ICdQZW5kaW5nIERlYWN0aXZhdGlvbidcIlxyXG4gICAgICAgID48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICEoXHJcbiAgICAgICAgICAgICAgbW92ZVVzZXJQZW5kaW5nICYmXHJcbiAgICAgICAgICAgICAgbW92ZUluUHJvZ3Jlc3NVc2VySWQgJiZcclxuICAgICAgICAgICAgICBtb3ZlSW5Qcm9ncmVzc1VzZXJJZCA9PT0gdXNlcj8udXNlcmlkXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1hY3Rpb24tZG90XCJcclxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWFjdGlvbnMtZG90c1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tZG90XCI+Ljwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLWRvdFwiPi48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1kb3RcIj4uPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFtkaXNhYmxlZF09XCJ0cnVlXCI+UmVzZW5kIEludml0YXRpb248L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbZGlzYWJsZWRdPVwidHJ1ZVwiPlJlc2V0IFBhc3N3b3JkPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1c2VyLndlYmV4VVVJRCB8fCB1c2VyLnN0YXR1cyAhPT0gJ0FjdGl2ZSdcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiF1c2VyLmlzTWlncmF0ZWRcIlxyXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk1vdmVVc2VyKHVzZXIsIGksICdRdWlja01vdmUnLCAnTVQnKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFF1aWNrIFVwZ3JhZGUgVXNlciB0byBNVFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1c2VyLndlYmV4VVVJRCB8fCB1c2VyLnN0YXR1cyAhPT0gJ0FjdGl2ZSdcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiF1c2VyLmlzTWlncmF0ZWRcIlxyXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk1vdmVVc2VyKHVzZXIsIGksICdNVCcsICdNVCcpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgVXBncmFkZSBVc2VyIHRvIE1UXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJ1c2VyLmlzTWlncmF0ZWRcIlxyXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk1vdmVVc2VyKHVzZXIsIGksICdESScsICdESScpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgUmV2ZXJ0IFVzZXIgdG8gVUNNL0RJXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbZGlzYWJsZWRdPVwiIXVzZXIud2ViZXhVVUlEIHx8IHVzZXIuc3RhdHVzID09PSAnQWN0aXZlJ1wiIChjbGljayk9XCJvbkZpcm13YXJlVXBncmFkZUNsaWNrZWQodXNlcilcIj5BY3RpdmF0ZSBVc2VyPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2Rpc2FibGVkXT1cIiF1c2VyLndlYmV4VVVJRCB8fCB1c2VyLnN0YXR1cyAhPT0gJ0FjdGl2ZSdcIiAoY2xpY2spPVwib25SZXZlcnRDbGlja2VkKHVzZXIpXCI+UmV2ZXJ0PC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2Rpc2FibGVkXT1cInRydWVcIj5EZWxldGUgVXNlcjwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInJvbGVcIj5cclxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cIndlYmV4LXRhYmxlLXRoXCI+XHJcbiAgICAgICAgQWRtaW4gcm9sZXNcclxuICAgICAgPC90aD5cclxuICAgICAgPHRkXHJcbiAgICAgICAgY2xhc3M9XCJ1c2VyLXNpdGVcIlxyXG4gICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgdXNlclwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaW5hY3RpdmUtdXNlci1yb3cnOiB1c2VyLnN0YXR1cyAhPT0gJ0FjdGl2ZScgfVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uVXNlckNsaWNrKHVzZXIpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHVzZXIucm9sZU5hbWUgfHwgXCItXCIgfX1cclxuICAgICAgPC90ZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic291cmNlXCI+XHJcbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJ3ZWJleC10YWJsZS10aFwiPlxyXG4gICAgICAgIFByb3Zpc2lvbmluZyBUeXBlXHJcbiAgICAgIDwvdGg+XHJcbiAgICAgIDx0ZFxyXG4gICAgICAgIGNsYXNzPVwidXNlci1wcm92aXNpb25pbmctdHlwZVwiXHJcbiAgICAgICAgbWF0LWNlbGxcclxuICAgICAgICAqbWF0Q2VsbERlZj1cImxldCB1c2VyXCJcclxuICAgICAgICAoY2xpY2spPVwib25Vc2VyQ2xpY2sodXNlcilcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXIud2ViZXhVVUlEXCI+XHJcbiAgICAgICAgICA8c3BhbiBbbWF0VG9vbHRpcF09XCInTXVsdGktVGVuYW50J1wiIGNsYXNzPVwiaWNvbi13cmFwcGVyXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxyXG4gICAgICAgICAgICA+PGltZyBzcmM9XCJhc3NldHMvaWNvbnMvd2ViZXguc3ZnXCIgd2lkdGg9XCIyMFwiIGFsdD1cIlwiXHJcbiAgICAgICAgICAvPjwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXVzZXIud2ViZXhVVUlEXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInVzZXIuY3VjbUlkID09IE9OX1BSRU1fSURcIiBjbGFzcz1cImljb24td3JhcHBlclwiIFttYXRUb29sdGlwXT1cIidPbiBQcmVtJ1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgICAgICAgICAgPjxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2xvY2FsXzI0LnN2Z1wiIHdpZHRoPVwiMjBcIiBhbHQ9XCJcIlxyXG4gICAgICAgICAgLz48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInVzZXIuY3VjbUlkICE9IE9OX1BSRU1fSURcIiBjbGFzcz1cImljb24td3JhcHBlclwiIFttYXRUb29sdGlwXT1cIidEZWRpY2F0ZWQgSW5zdGFuY2UnXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxyXG4gICAgICAgICAgICA+PGltZyBzcmM9XCJhc3NldHMvaWNvbnMvZGlfY2xvdWRfMjQuc3ZnXCIgd2lkdGg9XCIyMFwiIGFsdD1cIlwiXHJcbiAgICAgICAgICAvPjwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibGFzdC1hY3RpdmUtdGltZVwiPlxyXG4gICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwid2ViZXgtdGFibGUtdGhcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlci13aXRoLWluZm9cIj5cclxuICAgICAgICAgIExhc3QgYWN0aXZlIHRpbWVcclxuICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwiaW5mby1pY29uXCI+aW5mbzwvbWF0LWljb24+IC0tPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvaW5mby1jaXJjbGUtcmVndWxhci5zdmdcIiB3aWR0aD1cIjE2XCIgYWx0PVwiXCIgLz5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvdGg+XHJcbiAgICAgIDx0ZFxyXG4gICAgICAgIGNsYXNzPVwidXNlci1zaXRlXCJcclxuICAgICAgICBtYXQtY2VsbFxyXG4gICAgICAgICptYXRDZWxsRGVmPVwibGV0IHVzZXJcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2luYWN0aXZlLXVzZXItcm93JzogdXNlci5zdGF0dXMgIT09ICdBY3RpdmUnIH1cIlxyXG4gICAgICAgIChjbGljayk9XCJvblVzZXJDbGljayh1c2VyKVwiXHJcbiAgICAgID5cclxuICAgICAgICAyLzE2LzI2XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIC9cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XHJcbiAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAnZGlzYWJsZWQtdXNlci1yb3cnOlxyXG4gICAgICAgICAgbW92ZVVzZXJQZW5kaW5nICYmXHJcbiAgICAgICAgICBtb3ZlSW5Qcm9ncmVzc1VzZXJJZCAmJlxyXG4gICAgICAgICAgbW92ZUluUHJvZ3Jlc3NVc2VySWQgPT09IHJvdz8udXNlcmlkLFxyXG4gICAgICAgICdpbmFjdGl2ZS11c2VyLXJvdyc6IHJvdy5zdGF0dXMgIT09ICdBY3RpdmUnXHJcbiAgICAgIH1cIj5cclxuICAgIDwvdHI+XHJcbiAgPC90YWJsZT5cclxuXHJcbiAgPGFwcC1wYWdpbmF0aW9uXHJcbiAgICBbcGFnaW5hdGlvbl09XCJ1c2Vyc1NlYXJjaFNlcnZpY2UuZ2V0UGFnaW5hdGlvbigpXCJcclxuICAgIFtzaG93UGFnZVNpemVPcHRpb25zXT1cInRydWVcIlxyXG4gICAgKHBhZ2VOdW1iZXJDaGFuZ2VFbWl0dGVyKT1cInBhZ2VOdW1iZXJDaGFuZ2VFdmVudCgkZXZlbnQpXCJcclxuICAgIChwYWdlRW1pdHRlcik9XCJwYWdlRXZlbnQoJGV2ZW50KVwiXHJcbiAgPlxyXG4gIDwvYXBwLXBhZ2luYXRpb24+XHJcbjwvZGl2PlxyXG5cclxuPGFwcC1tb3ZlLXVzZXItd2l6YXJkXHJcbiAgKm5nSWY9XCJzaG93TW92ZVVzZXJXaXphcmRcIlxyXG4gIFt1c2VyXT1cIm1vdmVVc2VyXCJcclxuICAoZG9uZSk9XCJjbG9zZU1vdmVVc2VyV2l6YXJkKHRydWUpXCJcclxuICBbY3VzdG9tZXJJZF09XCJjdXN0b21lcklkXCJcclxuICAocnVuTW92ZVVzZXIpPVwicnVuTW92ZVVzZXJUb01UKClcIlxyXG4gIChjbG9zZU1vdmVVc2VyV2l6YXJkKT1cImNsb3NlTW92ZVVzZXJXaXphcmQoZmFsc2UpXCJcclxuPjwvYXBwLW1vdmUtdXNlci13aXphcmQ+XHJcbiJdfQ==
|
|
@@ -6,9 +6,9 @@ export class AppLoaderComponent {
|
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
AppLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
-
AppLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AppLoaderComponent, selector: "app-loader", ngImport: i0, template: "<div class=\"overlay\">\
|
|
9
|
+
AppLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AppLoaderComponent, selector: "app-loader", ngImport: i0, template: "<div class=\"overlay\">\n <mat-progress-spinner\n class=\"page-spinner\"\n mode=\"indeterminate\"\n [diameter]=\"70\"\n strokeWidth=\"3\"></mat-progress-spinner>\n</div>\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}.mat-progress-spinner circle,.mat-spinner circle{stroke:#000!important}\n"], dependencies: [{ kind: "component", type: i1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
10
10
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, decorators: [{
|
|
11
11
|
type: Component,
|
|
12
|
-
args: [{ selector: 'app-loader', encapsulation: ViewEncapsulation.None, template: "<div class=\"overlay\">\
|
|
12
|
+
args: [{ selector: 'app-loader', encapsulation: ViewEncapsulation.None, template: "<div class=\"overlay\">\n <mat-progress-spinner\n class=\"page-spinner\"\n mode=\"indeterminate\"\n [diameter]=\"70\"\n strokeWidth=\"3\"></mat-progress-spinner>\n</div>\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}.mat-progress-spinner circle,.mat-spinner circle{stroke:#000!important}\n"] }]
|
|
13
13
|
}], ctorParameters: function () { return []; } });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2Vycy1saXN0L3NyYy91dGlscy9hcHAtbG9hZGVyL2FwcC1sb2FkZXIudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlcnMtbGlzdC9zcmMvdXRpbHMvYXBwLWxvYWRlci9hcHAtbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVE3RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCO0lBQ0EsQ0FBQzs7Z0hBRlUsa0JBQWtCO29HQUFsQixrQkFBa0Isa0RDUi9CLDBMQU9BOzRGRENhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDRSxZQUFZLGlCQUdQLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1sb2FkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hcHAtbG9hZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcExvYWRlckNvbXBvbmVudCB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwib3ZlcmxheVwiPlxuICA8bWF0LXByb2dyZXNzLXNwaW5uZXJcbiAgICBjbGFzcz1cInBhZ2Utc3Bpbm5lclwiXG4gICAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxuICAgIFtkaWFtZXRlcl09XCI3MFwiXG4gICAgc3Ryb2tlV2lkdGg9XCIzXCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbjwvZGl2PlxuIl19
|