@eui/core 16.0.0-next.1 → 16.0.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/dependencies.html +59 -63
- package/docs/js/search/search_index.js +2 -2
- package/docs/properties.html +1 -1
- package/{esm2020 → esm2022}/lib/eui-core.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/interceptors/add-lang-param.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/cache-prevention.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/cors-security.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/csrf-prevention.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/eu-login-session-timeout-handling.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/openid/openid-connect.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/openid/openid-connect.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/interceptors/ux-request-error-model.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/errors/global-error-handler.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/errors/http-error-handler.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/i18n/i18n.loader.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/i18n/i18n.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/i18n/i18n.service.mock.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/locale/locale.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/locale/locale.service.mock.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/log/log.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/services/log/log.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/permission/permission.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/queue/api-queue.service.mjs +4 -4
- package/esm2022/lib/services/storage/local-forage.service.mjs +93 -0
- package/esm2022/lib/services/storage/local-storage.service.mjs +75 -0
- package/esm2022/lib/services/storage/session-storage.service.mjs +75 -0
- package/{esm2020 → esm2022}/lib/services/store/effects/app.effects.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/store/store.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/store/store.service.mock.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/user/user.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/user/user.service.mock.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/ux-app-shell.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/ux-dynamic-component/ux-dynamic-component.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/ux-dynamic-menu/ux-dynamic-menu.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/ux-error-feedback/ux-error-feedback.service.mjs +4 -4
- package/esm2022/lib/services/ux-timezone.service.mjs +717 -0
- package/{fesm2020 → fesm2022}/eui-core.mjs +105 -104
- package/fesm2022/eui-core.mjs.map +1 -0
- package/lib/services/ux-timezone.service.d.ts.map +1 -1
- package/package.json +5 -11
- package/esm2020/lib/services/storage/local-forage.service.mjs +0 -93
- package/esm2020/lib/services/storage/local-storage.service.mjs +0 -75
- package/esm2020/lib/services/storage/session-storage.service.mjs +0 -75
- package/esm2020/lib/services/ux-timezone.service.mjs +0 -716
- package/fesm2015/eui-core.mjs +0 -4624
- package/fesm2015/eui-core.mjs.map +0 -1
- package/fesm2020/eui-core.mjs.map +0 -1
- /package/{esm2020 → esm2022}/eui-core.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/date-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/dom-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/event-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/form-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/format-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/http-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/helpers/utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interceptors/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interceptors/openid/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/interceptors/openid/openid-connect.service.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/app/eui-init-app.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/app/eui-pre-init-app.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/app/eui-startup.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/app/factories/log.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/app/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/config/defaults.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/config/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/errors/eui.error.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/errors/http-error-handler-callback-functions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/errors/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/i18n/i18n.resource.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/i18n/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/locale/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/log/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/log/log.service.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/queue/api-queue.service.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/queue/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/storage/async-storage.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/storage/async-storage.service.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/storage/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/storage/storage.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/storage/storage.service.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/actions/app.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/actions/i18n.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/actions/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/actions/locale.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/actions/notifications.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/actions/user.actions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/effects/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/app.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/core.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/i18n.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/locale.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/meta.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/notifications.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/store/reducers/user.reducers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/user/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/ux-error-feedback/ux-error-handler.operator.mjs +0 -0
|
@@ -653,10 +653,10 @@ export class UxAppShellService {
|
|
|
653
653
|
}
|
|
654
654
|
});
|
|
655
655
|
}
|
|
656
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: UxAppShellService, deps: [{ token: GLOBAL_CONFIG_TOKEN, optional: true }, { token: i1.HttpClient }, { token: PLATFORM_ID }, { token: i2.Router }, { token: i3.StoreService }, { token: i4.I18nService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
657
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: UxAppShellService, providedIn: 'root' }); }
|
|
656
658
|
}
|
|
657
|
-
|
|
658
|
-
/** @nocollapse */ UxAppShellService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: UxAppShellService, providedIn: 'root' });
|
|
659
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: UxAppShellService, decorators: [{
|
|
659
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: UxAppShellService, decorators: [{
|
|
660
660
|
type: Injectable,
|
|
661
661
|
args: [{
|
|
662
662
|
providedIn: 'root',
|
|
@@ -672,4 +672,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2",
|
|
|
672
672
|
}] }, { type: i2.Router }, { type: i3.StoreService }, { type: i4.I18nService, decorators: [{
|
|
673
673
|
type: Optional
|
|
674
674
|
}] }]; } });
|
|
675
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtYXBwLXNoZWxsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3V4LWFwcC1zaGVsbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBaUMsYUFBYSxFQUF5QixNQUFNLFdBQVcsQ0FBQztBQUMvRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxPQUFPLEVBQVUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQ3hDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBZ0VoQyxNQUFNLFlBQVksR0FBWTtJQUMxQixPQUFPLEVBQUUsRUFBRTtJQUNYLFlBQVksRUFBRSxFQUFFO0lBQ2hCLFdBQVcsRUFBRSxFQUFFO0lBQ2YsU0FBUyxFQUFFLElBQUk7SUFDZixZQUFZLEVBQUUsSUFBSTtJQUNsQixxQkFBcUIsRUFBRSxJQUFJO0lBQzNCLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLG9CQUFvQixFQUFFLEtBQUs7SUFDM0IsNEJBQTRCLEVBQUUsS0FBSztJQUNuQyxzQkFBc0IsRUFBRSxJQUFJO0lBQzVCLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLFNBQVMsRUFBRSxL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cG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkZWZlciwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXhFdUxhbmd1YWdlcywgR2xvYmFsQ29uZmlnLCBVeExpbmssIFV4TW9kYWwsIGdldEFjdGl2ZUxhbmcsIFV4TWVzc2FnZSwgVXhMYW5ndWFnZSB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBHTE9CQUxfQ09ORklHX1RPS0VOIH0gZnJvbSAnLi9jb25maWcvdG9rZW5zJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi9pMThuJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkVuZCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JlL3N0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC1lcy9pc0VxdWFsJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLWVzL2dldCc7XG4vLyBpbXBvcnQgeyBVeFJvb3RJbmplY3Rvckd1YXJkIH0gZnJvbSAnLi91eC1yb290LWluamVjdG9yLmd1YXJkJztcblxuZXhwb3J0IGludGVyZmFjZSBVSVN0YXRlIHtcbiAgICAvLyBhcHAgc3RhdGVcbiAgICBhcHBOYW1lPzogc3RyaW5nO1xuICAgIGFwcFNob3J0TmFtZT86IHN0cmluZztcbiAgICBhcHBTdWJUaXRsZT86IHN0cmluZztcblxuICAgIC8vIHVzZXIgc3RhdGVcbiAgICB1c2VySW5mb3M/OiBzdHJpbmc7XG4gICAgdXNlclN1YkluZm9zPzogc3RyaW5nO1xuICAgIGltcGVyc29uYXRlZFVzZXJJbmZvcz86IHN0cmluZztcblxuICAgIC8vIFNpZGViYXIgc3RhdGVcbiAgICBpc1NpZGViYXJPcGVuPzogYm9vbGVhbjtcbiAgICBpc1NpZGViYXJIb3Zlcj86IGJvb2xlYW47XG4gICAgaXNTaWRlYmFyQWN0aXZlPzogYm9vbGVhbjtcbiAgICBpc1NpZGViYXJJbm5lckFjdGl2ZT86IGJvb2xlYW47XG4gICAgaXNTaWRlYmFyU3RhdGVDbG9zZVdpdGhJY29ucz86IGJvb2xlYW47XG4gICAgaXNTaWRlYmFyRXhwYW5kT25Ib3Zlcj86IGJvb2xlYW47XG4gICAgaGFzU2lkZWJhcj86IGJvb2xlYW47XG4gICAgaGFzQnJlYWRjcnVtYj86IGJvb2xlYW47XG4gICAgaGFzSGVhZGVyPzogYm9vbGVhbjtcbiAgICBoYXNIZWFkZXJMb2dvPzogYm9vbGVhbjtcbiAgICBoYXNIZWFkZXJFbnZpcm9ubWVudD86IGJvb2xlYW47XG4gICAgaGFzVG9vbGJhcj86IGJvb2xlYW47XG4gICAgaGFzVG9vbGJhck1lbnU/OiBib29sZWFuO1xuICAgIGVudmlyb25tZW50VmFsdWU/OiBzdHJpbmc7XG4gICAgaXNTaWRlYmFySGlkZGVuPzogYm9vbGVhbjtcbiAgICBoYXNUb3BNZXNzYWdlPzogYm9vbGVhbjtcblxuICAgIC8vIHdpbmRvdyBzdGF0ZVxuICAgIHdpbmRvd1dpZHRoPzogbnVtYmVyO1xuICAgIHdpbmRvd0hlaWdodD86IG51bWJlcjtcbiAgICBtYWluQ29udGVudEhlaWdodD86IG51bWJlcjtcbiAgICBwYWdlSGVhZGVySGVpZ2h0PzogbnVtYmVyO1xuICAgIGJyZWFrcG9pbnQ/OiBzdHJpbmc7XG4gICAgd3JhcHBlckNsYXNzZXM/OiBzdHJpbmc7XG4gICAgYnJlYWtwb2ludHM/OiBhbnk7XG5cbiAgICAvLyBuYXZpZ2F0aW9uIHN0YXRlXG4gICAgbWVudUxpbmtzPzogVXhMaW5rW107XG4gICAgc2lkZWJhckxpbmtzPzogVXhMaW5rW107XG4gICAgY29tYmluZWRMaW5rcz86IFV4TGlua1tdO1xuXG4gICAgLy8gb3RoZXIgc3RhdGVzXG4gICAgaXNCbG9ja0RvY3VtZW50QWN0aXZlPzogYm9vbGVhbjtcblxuICAgIC8vIGRldmljZSBpbmZvXG4gICAgZGV2aWNlSW5mbzogYW55O1xuXG4gICAgLy8gbGFuZ3VhZ2UgaW5mb3NcbiAgICBhY3RpdmVMYW5ndWFnZTogc3RyaW5nO1xuICAgIGxhbmd1YWdlczogKHN0cmluZyB8IFV4TGFuZ3VhZ2UpW107XG5cbiAgICAvLyBhcHAgbWV0YWRhdGFcbiAgICBhcHBNZXRhZGF0YTogYW55O1xuXG4gICAgLy8gdmFyaW91cyBkeW5hbWljIHN0YXRlXG4gICAgaGFzTW9kYWxBY3RpdmU/OiBib29sZWFuO1xuICAgIGlzRGltbWVyQWN0aXZlPzogYm9vbGVhbjsgLy8gVXNhZ2U6IG1hcCB0byBldWkgYmFzZSBkaXJlY3RpdmUgaW5wdXQgY29lcmNlIGV1aUhpZ2hsaWdodGVkXG59XG5cbmNvbnN0IGluaXRpYWxTdGF0ZTogVUlTdGF0ZSA9IHtcbiAgICBhcHBOYW1lOiAnJyxcbiAgICBhcHBTaG9ydE5hbWU6ICcnLFxuICAgIGFwcFN1YlRpdGxlOiAnJyxcbiAgICB1c2VySW5mb3M6IG51bGwsXG4gICAgdXNlclN1YkluZm9zOiBudWxsLFxuICAgIGltcGVyc29uYXRlZFVzZXJJbmZvczogbnVsbCxcbiAgICBpc1NpZGViYXJPcGVuOiB0cnVlLFxuICAgIGlzU2lkZWJhckhvdmVyOiBmYWxzZSxcbiAgICBpc1NpZGViYXJBY3RpdmU6IGZhbHNlLFxuICAgIGlzU2lkZWJhcklubmVyQWN0aXZlOiBmYWxzZSxcbiAgICBpc1NpZGViYXJTdGF0ZUNsb3NlV2l0aEljb25zOiBmYWxzZSxcbiAgICBpc1NpZGViYXJFeHBhbmRPbkhvdmVyOiB0cnVlLFxuICAgIGhhc1NpZGViYXI6IGZhbHNlLFxuICAgIGhhc0hlYWRlcjogZmFsc2UsXG4gICAgaGFzQnJlYWRjcnVtYjogZmFsc2UsXG4gICAgaGFzSGVhZGVyTG9nbzogZmFsc2UsXG4gICAgaGFzSGVhZGVyRW52aXJvbm1lbnQ6IGZhbHNlLFxuICAgIGhhc1Rvb2xiYXI6IGZhbHNlLFxuICAgIGhhc1Rvb2xiYXJNZW51OiBmYWxzZSxcbiAgICBlbnZpcm9ubWVudFZhbHVlOiAnJyxcbiAgICBpc1NpZGViYXJIaWRkZW46IGZhbHNlLFxuICAgIGhhc1RvcE1lc3NhZ2U6IGZhbHNlLFxuICAgIHdpbmRvd1dpZHRoOiAwLFxuICAgIHdpbmRvd0hlaWdodDogMCxcbiAgICBtYWluQ29udGVudEhlaWdodDogMCxcbiAgICBwYWdlSGVhZGVySGVpZ2h0OiAwLFxuICAgIHdyYXBwZXJDbGFzc2VzOiAnJyxcbiAgICBicmVha3BvaW50OiAnJyxcbiAgICBicmVha3BvaW50czoge1xuICAgICAgICBpc01vYmlsZTogZmFsc2UsXG4gICAgICAgIGlzVGFibGV0OiBmYWxzZSxcbiAgICAgICAgaXNMdERlc2t0b3A6IGZhbHNlLFxuICAgICAgICBpc0Rlc2t0b3A6IGZhbHNlLFxuICAgICAgICBpc1hMOiBmYWxzZSxcbiAgICAgICAgaXNYWEw6IGZhbHNlLFxuICAgIH0sXG4gICAgbWVudUxpbmtzOiBbXSxcbiAgICBzaWRlYmFyTGlua3M6IFtdLFxuICAgIGNvbWJpbmVkTGlua3M6IFtdLFxuICAgIGlzQmxvY2tEb2N1bWVudEFjdGl2ZTogZmFsc2UsXG4gICAgZGV2aWNlSW5mbzogbnVsbCxcbiAgICBhY3RpdmVMYW5ndWFnZTogJ2VuJyxcbiAgICBsYW5ndWFnZXM6IFV4RXVMYW5ndWFnZXMuZ2V0TGFuZ3VhZ2VzKCksXG4gICAgYXBwTWV0YWRhdGE6IG51bGwsXG4gICAgaGFzTW9kYWxBY3RpdmU6IGZhbHNlLFxuICAgIGlzRGltbWVyQWN0aXZlOiBmYWxzZSxcbn07XG5cbi8vIFRPRE86IHRoaXMgc2VydmljZSBuZWVkcyB0byBiZSB0cmFuc2ZlcnJlZCBpbiB0aGUgcmVzcGVjdGl2ZSBjb21wb25lbnRcbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFV4QXBwU2hlbGxTZXJ2aWNlIHtcbiAgICBncm93bE1lc3NhZ2VzID0gW107XG4gICAgaXNHcm93bFN0aWNreSA9IGZhbHNlO1xuICAgIGdyb3dsTGlmZSA9IDMwMDA7XG4gICAgZ3Jvd2xQb3NpdGlvbiA9ICdib3R0b20tcmlnaHQnO1xuICAgIGdyb3dsQ2FsbGJhY2s6IGFueSA9IG51bGw7XG4gICAgYWN0aXZlTW9kYWxzOiBVeE1vZGFsW10gPSBbXTtcbiAgICBvcGVuTW9kYWxJZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgICBuYXZpZ2F0aW9uU3RhcnRDdXN0b21IYW5kbGVyOiAoKSA9PiB2b2lkO1xuICAgIG5hdmlnYXRpb25FbmRDdXN0b21IYW5kbGVyOiAoKSA9PiB2b2lkO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGdldCBzdGF0ZSQoKTogT2JzZXJ2YWJsZTxVSVN0YXRlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGV4cG9zZWQgb2JzZXJ2YWJsZXNcblxuICAgIGdldCBicmVha3BvaW50JCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGJyZWFrcG9pbnRzJCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludHMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBzdGF0ZSBvcGVyYXRpb25zXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLVxuICAgIGdldCBzdGF0ZSgpOiBVSVN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBwdWJsaWMgc2V0dGVycyBhbmQgZnVuY3Rpb25zXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHNldCBpc1NpZGViYXJPcGVuKGlzT3BlbjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBpc1NpZGViYXJPcGVuOiBpc09wZW4sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBpc1NpZGViYXJPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc1NpZGViYXJPcGVuO1xuICAgIH1cblxuICAgIHNldCBpc1NpZGViYXJIb3Zlcihpc0hvdmVyOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmlzU2lkZWJhckV4cGFuZE9uSG92ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgaXNTaWRlYmFySG92ZXI6IGlzSG92ZXIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBpc1NpZGViYXJIb3ZlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuaXNTaWRlYmFySG92ZXI7XG4gICAgfVxuXG4gICAgc2V0IGlzU2lkZWJhckFjdGl2ZShpc0FjdGl2ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBpc1NpZGViYXJBY3RpdmU6IGlzQWN0aXZlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXQgaXNTaWRlYmFySW5uZXJBY3RpdmUoaXNPcGVuOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGlzU2lkZWJhcklubmVyQWN0aXZlOiBpc09wZW4sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldCBzaWRlYmFyTGlua3MobGlua3M6IFV4TGlua1tdKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIHNpZGViYXJMaW5rczogbGlua3MsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldCBtZW51TGlua3MobGlua3M6IFV4TGlua1tdKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIG1lbnVMaW5rczogbGlua3MsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldCBpc0Jsb2NrRG9jdW1lbnRBY3RpdmUoaXNBY3RpdmU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgaXNCbG9ja0RvY3VtZW50QWN0aXZlOiBpc0FjdGl2ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0hlYWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuaGFzSGVhZGVyO1xuICAgIH1cblxuICAgIC8vIEVkaXQgbW9kZVxuICAgIGdldCBpc0RpbW1lckFjdGl2ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuaXNEaW1tZXJBY3RpdmU7XG4gICAgfVxuXG4gICAgc2V0IGlzRGltbWVyQWN0aXZlKGlzQWN0aXZlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGlzRGltbWVyQWN0aXZlOiBpc0FjdGl2ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjc3NWYXJzID0gW107XG4gICAgcHJpdmF0ZSBfc3RhdGUkOiBCZWhhdmlvclN1YmplY3Q8VUlTdGF0ZT47XG4gICAgcHJpdmF0ZSBfYnJlYWtwb2ludCQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+O1xuICAgIHByaXZhdGUgX2JyZWFrcG9pbnRzJDogQmVoYXZpb3JTdWJqZWN0PGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChHTE9CQUxfQ09ORklHX1RPS0VOKSBwcm90ZWN0ZWQgY29uZmlnOiBHbG9iYWxDb25maWcsXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBvYmplY3QsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgc3RvcmVTZXJ2aWNlOiBTdG9yZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIGxldCBzdGF0ZVdpdGhDb25maWcgPSBpbml0aWFsU3RhdGU7XG4gICAgICAgIGNvbnN0IGxhbmd1YWdlcyA9IGNvbmZpZz8uaTE4bj8uaTE4blNlcnZpY2U/Lmxhbmd1YWdlcyB8fCBpbml0aWFsU3RhdGUubGFuZ3VhZ2VzO1xuICAgICAgICBjb25zdCBkZWZhdWx0TGFuZ3VhZ2UgPSBjb25maWc/LmkxOG4/LmkxOG5TZXJ2aWNlPy5kZWZhdWx0TGFuZ3VhZ2UgfHwgaW5pdGlhbFN0YXRlLmFjdGl2ZUxhbmd1YWdlO1xuICAgICAgICBzdGF0ZVdpdGhDb25maWcgPSB7XG4gICAgICAgICAgICAuLi5zdGF0ZVdpdGhDb25maWcsXG4gICAgICAgICAgICAuLi57XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgIGFjdGl2ZUxhbmd1YWdlOiBkZWZhdWx0TGFuZ3VhZ2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9zdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHN0YXRlV2l0aENvbmZpZyk7XG4gICAgICAgIHRoaXMuX2JyZWFrcG9pbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuICAgICAgICB0aGlzLmJpbmRBY3RpdmVMYW5ndWFnZVRvQXBwU2hlbGxTdGF0ZSgpO1xuXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICByb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFN0YXRlKG5leHRTdGF0ZTogVUlTdGF0ZSwgdXBkYXRlSTE4ID0gdHJ1ZSkge1xuICAgICAgICBsZXQgYnJlYWtwb2ludCwgYnJlYWtwb2ludHMsIHdyYXBwZXJDbGFzc2VzO1xuICAgICAgICBsZXQgY29tYmluZWRMaW5rcztcblxuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgd2luZG93IHdpZHRoIGhhcyBiZWVuIHVwZGF0ZWQgZnJvbSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICBpZiAodGhpcy5zdGF0ZS53aW5kb3dXaWR0aCAhPT0gbmV4dFN0YXRlLndpbmRvd1dpZHRoKSB7XG4gICAgICAgICAgICBicmVha3BvaW50ID0gdGhpcy5nZXRCcmVha3BvaW50KG5leHRTdGF0ZS53aW5kb3dXaWR0aCk7XG4gICAgICAgICAgICBicmVha3BvaW50cyA9IHRoaXMuZ2V0QnJlYWtwb2ludHMoYnJlYWtwb2ludCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQkLm5leHQoYnJlYWtwb2ludCk7XG4gICAgICAgICAgICB0aGlzLl9icmVha3BvaW50cyQubmV4dChicmVha3BvaW50cyk7XG5cbiAgICAgICAgICAgIC8vIGlmIG5vdCBwcm9wYWdhdGUgdGhlIG9sZCBvbmVzIHdpdGhvdXQgZG9pbmcgYW55IGNhbGN1bGF0aW9uc1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnJlYWtwb2ludCA9IHN0YXRlLmJyZWFrcG9pbnQ7XG4gICAgICAgICAgICBicmVha3BvaW50cyA9IHN0YXRlLmJyZWFrcG9pbnRzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZmluYWxseSBnZXQgdGhlIHdyYXBwZXIgY2xhc3NlcyB3aGVuIGJvdGggdGhlIHN0YXRlIGFuZCBicmVha3BvaW50IGFyZSBrbm93blxuICAgICAgICB3cmFwcGVyQ2xhc3NlcyA9IHRoaXMuZ2V0V3JhcHBlckNsYXNzZXMobmV4dFN0YXRlLCBicmVha3BvaW50KTtcblxuICAgICAgICAvLyBjaGVjayBpZiB0aGUgbWVudUxpbmtzIG9yIHNpZGViYXJMaW5rcyBoYXZlIGNoYW5nZWQgZnJvbSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5tZW51TGlua3MgIT09IG5leHRTdGF0ZS5tZW51TGlua3MgfHwgdGhpcy5zdGF0ZS5zaWRlYmFyTGlua3MgIT09IG5leHRTdGF0ZS5zaWRlYmFyTGlua3MpIHtcbiAgICAgICAgICAgIGNvbWJpbmVkTGlua3MgPSBbLi4ubmV4dFN0YXRlLm1lbnVMaW5rcywgLi4ubmV4dFN0YXRlLnNpZGViYXJMaW5rc107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21iaW5lZExpbmtzID0gdGhpcy5zdGF0ZS5jb21iaW5lZExpbmtzO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhdGVCZWZvcmVVcGRhdGUgPSB7IC4uLnRoaXMuc3RhdGUgfTtcblxuICAgICAgICAvLyB3ZSBwdXQgaXQgYWxsIHRvZ2V0aGVyIHdpdGggdGhlIGNhbGN1bGF0ZWQgcHJvcGVydGllc1xuICAgICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAuLi5uZXh0U3RhdGUsXG4gICAgICAgICAgICB3cmFwcGVyQ2xhc3NlcyxcbiAgICAgICAgICAgIGJyZWFrcG9pbnQsXG4gICAgICAgICAgICBicmVha3BvaW50cyxcbiAgICAgICAgICAgIGNvbWJpbmVkTGlua3MsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIHVwZGF0ZSB0aGUgU3RvcmUgTGFuZ3VhZ2VcbiAgICAgICAgaWYgKHVwZGF0ZUkxOCAmJiBuZXh0U3RhdGUuYWN0aXZlTGFuZ3VhZ2UgIT09IHN0YXRlQmVmb3JlVXBkYXRlLmFjdGl2ZUxhbmd1YWdlKSB7XG4gICAgICAgICAgICB0aGlzLmkxOG5TZXJ2aWNlLnVwZGF0ZVN0YXRlKHsgYWN0aXZlTGFuZzogbmV4dFN0YXRlLmFjdGl2ZUxhbmd1YWdlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYSBzbGljZSBmcm9tIHRoZSBzdGF0ZSB3aGV0aGVyIHRoYXQgY2hhbmdlc1xuICAgICAqXG4gICAgICogQHBhcmFtIGtleSBjYW4gYmUgJ2tleScgb3IgJ2tleS5zdWIuc3ViJ1xuICAgICAqL1xuICAgIGdldFN0YXRlKGtleT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgICAgICAgLy8gY2hlY2sgaWYga2V5IGV4aXN0c1xuICAgICAgICAgICAga2V5XG4gICAgICAgICAgICAgICAgPyB0aGlzLnN0YXRlJC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgIG1hcCgoc3RhdGUpID0+IGdldChzdGF0ZSwga2V5KSksXG4gICAgICAgICAgICAgICAgICAgICAgLy8gZmlsdGVyKChzdGF0ZSkgPT4gc3RhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCh4LCB5KSA9PiBpc0VxdWFsKHgsIHkpKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdGhpcy5zdGF0ZSRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2lkZWJhclRvZ2dsZSgpIHtcbiAgICAgICAgdGhpcy5pc1NpZGViYXJPcGVuID0gIXRoaXMuc3RhdGUuaXNTaWRlYmFyT3BlbjtcbiAgICB9XG5cbiAgICAvLyBFZGl0IG1vZGVcbiAgICBwdWJsaWMgZGltbWVyQWN0aXZlVG9nZ2xlKCkge1xuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuaXNEaW1tZXJBY3RpdmU7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGlzRGltbWVyQWN0aXZlOiAhaXNBY3RpdmUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFjdGl2YXRlRWRpdE1vZGVDc3NWYXJzKCFpc0FjdGl2ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpbW1lckFjdGl2ZVN0YXRlKGFjdGl2ZVN0YXRlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGlzRGltbWVyQWN0aXZlOiBhY3RpdmVTdGF0ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVFZGl0TW9kZUNzc1ZhcnMoYWN0aXZlU3RhdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZUVkaXRNb2RlQ3NzVmFycyhpc0FjdGl2ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENzc1ZhclZhbHVlKCctLWV1aS1kb2NwYWdlLW5hdmlnYXRpb24tei1pbmRleCcsICdpbmhlcml0Jyk7IC8vIFJlc2V0IGRvYy1wYWdlLW5hdmlnYXRpb24tY29sdW1uIHotaW5kZXhcbiAgICAgICAgICAgIHRoaXMuX3NldENzc1ZhclZhbHVlKCctLWV1aS16LWluZGV4LXNpZGViYXInLCAnaW5oZXJpdCcpOyAvLyBSZXNldCBldWktYXBwLXNpZGViYXIgei1pbmRleFxuICAgICAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLXotaW5kZXgtcm9vdCcsICdpbmhlcml0Jyk7IC8vIFJlc2V0IGV1aS1hcHAtbWFpbi1jb250ZW50IHotaW5kZXhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENzc1ZhclZhbHVlKCctLWV1aS1kb2NwYWdlLW5hdmlnYXRpb24tei1pbmRleCcsICcyJyk7IC8vIFJlc3RvcmUgZG9jLXBhZ2UtbmF2aWdhdGlvbi1jb2x1bW4gei1pbmRleFxuICAgICAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLXotaW5kZXgtc2lkZWJhcicsICcxMDQ0Jyk7IC8vIFJlc3RvcmUgZXVpLWFwcC1zaWRlYmFyIHotaW5kZXhcbiAgICAgICAgICAgIHRoaXMuX3NldENzc1ZhclZhbHVlKCctLWV1aS16LWluZGV4LXJvb3QnLCAnMScpOyAvLyBSZXN0b3JlIGV1aS1hcHAtbWFpbi1jb250ZW50IHotaW5kZXhcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tXG4gICAgLy8gcHVibGljIG1ldGhvZHNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBmZXRjaEFwcE1ldGFkYXRhKG1ldGFkYXRhRmlsZVBhdGggPSAnYXNzZXRzL2FwcC1tZXRhZGF0YS5qc29uJykge1xuICAgICAgICB0aGlzLmdldEpzb24obWV0YWRhdGFGaWxlUGF0aCkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgICAgICBhcHBNZXRhZGF0YTogZGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWN0aXZhdGVTaWRlYmFyKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBoYXNTaWRlYmFyOiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuc3RhdGUuaXNTaWRlYmFySGlkZGVuKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2YXRlU2lkZWJhckNzc1ZhcnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVNpZGViYXJIZWFkZXIoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVTaWRlYmFySGVhZGVyQ3NzVmFycygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVNpZGViYXJGb290ZXIoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVTaWRlYmFyRm9vdGVyQ3NzVmFycygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZUhlYWRlcigpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgaGFzSGVhZGVyOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZUhlYWRlckNzc1ZhcnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWN0aXZhdGVCcmVhZGNydW1iKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBoYXNCcmVhZGNydW1iOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZUJyZWFkY3J1bWJDc3NWYXJzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlVG9wTWVzc2FnZShoZWlnaHQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBoYXNUb3BNZXNzYWdlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZVRvcE1lc3NhZ2VDc3NWYXJzKGhlaWdodCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlVG9vbGJhcigpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgaGFzVG9vbGJhcjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVUb29sYmFyQ3NzVmFycygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVRvb2xiYXJNZW51KCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBoYXNUb29sYmFyTWVudTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZldGNoQ3NzVmFycygpIHtcbiAgICAgICAgY29uc3QgY3NzVmFyTmFtZXMgPSBbXG4gICAgICAgICAgICAnLS1ldWktYXBwLWhlYWRlci1oZWlnaHQtZGVmYXVsdCcsXG4gICAgICAgICAgICAnLS1ldWktYXBwLWhlYWRlci1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtaGVhZGVyLWhlaWdodC1zaHJpbmsnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1icmVhZGNydW1iLWhlaWdodC1kZWZhdWx0JyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtYnJlYWRjcnVtYi1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtdG9wLW1lc3NhZ2UtaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC10b3AtbWVzc2FnZS1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtdG9wLW1lc3NhZ2UtaGVpZ2h0LXNocmluaycsXG4gICAgICAgICAgICAnLS1ldWktYXBwLXRvb2xiYXItaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodC1hY3RpdmUnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWFjdGl2ZScsXG4gICAgICAgICAgICAnLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UtZGVmYXVsdCcsXG4gICAgICAgICAgICAnLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtc2lkZWJhci1oZWFkZXItaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLWhlYWRlci1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLWZvb3Rlci1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmNzc1ZhcnMgPSBjc3NWYXJOYW1lcy5tYXAoKHYpID0+ICh7IGtleTogdiwgdmFsdWU6IHRoaXMuZ2V0Q3NzVmFyVmFsdWUodikgfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0Q3NzVmFycygpIHtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1oZWFkZXItaGVpZ2h0LWRlZmF1bHQnLCAnLS1ldWktYXBwLWhlYWRlci1oZWlnaHQnKTtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1icmVhZGNydW1iLWhlaWdodC1kZWZhdWx0JywgJy0tZXVpLWFwcC1icmVhZGNydW1iLWhlaWdodCcpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXRvcC1tZXNzYWdlLWhlaWdodC1kZWZhdWx0JywgJy0tZXVpLWFwcC10b3AtbWVzc2FnZS1oZWlnaHQnKTtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodC1kZWZhdWx0JywgJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodCcpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItd2lkdGgtZGVmYXVsdCcsICctLWV1aS1hcHAtc2lkZWJhci13aWR0aCcpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UtZGVmYXVsdCcsICctLWV1aS1hcHAtc2lkZWJhci13aWR0aC1jbG9zZScpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItaGVhZGVyLWhlaWdodC1kZWZhdWx0JywgJy0tZXVpLWFwcC1zaWRlYmFyLWhlYWRlci1oZWlnaHQnKTtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1zaWRlYmFyLWZvb3Rlci1oZWlnaHQtZGVmYXVsdCcsICctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlSGVhZGVyQ3NzVmFycygpIHtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1oZWFkZXItaGVpZ2h0LWFjdGl2ZScsICctLWV1aS1hcHAtaGVhZGVyLWhlaWdodCcpO1xuICAgIH1cbiAgICBwdWJsaWMgYWN0aXZhdGVCcmVhZGNydW1iQ3NzVmFycygpIHtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1icmVhZGNydW1iLWhlaWdodC1hY3RpdmUnLCAnLS1ldWktYXBwLWJyZWFkY3J1bWItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlVG9wTWVzc2FnZUNzc1ZhcnMoaGVpZ2h0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLWFwcC10b3AtbWVzc2FnZS1oZWlnaHQnLCBgJHtoZWlnaHR9cHhgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWN0aXZhdGVUb29sYmFyQ3NzVmFycygpIHtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodC1hY3RpdmUnLCAnLS1ldWktYXBwLXRvb2xiYXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlRm9vdGVyQ3NzVmFycygpIHtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1mb290ZXItaGVpZ2h0LWFjdGl2ZScsICctLWV1aS1hcHAtZm9vdGVyLWhlaWdodCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRIZWFkZXJTaHJpbmtDc3NWYXIoYWN0aXZlOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtaGVhZGVyLWhlaWdodC1zaHJpbmsnLCAnLS1ldWktYXBwLWhlYWRlci1oZWlnaHQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtaGVhZGVyLWhlaWdodC1hY3RpdmUnLCAnLS1ldWktYXBwLWhlYWRlci1oZWlnaHQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVNpZGViYXJDc3NWYXJzKCkge1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItd2lkdGgtYWN0aXZlJywgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoJyk7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtc2lkZWJhci13aWR0aC1jbG9zZS1hY3RpdmUnLCAnLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlU2lkZWJhckNzc1ZhcnMoKSB7XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1ldWktYXBwLXNpZGViYXItaGVhZGVyLWhlaWdodCcpO1xuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXVpLWFwcC1zaWRlYmFyLWZvb3Rlci1oZWlnaHQnKTtcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWV1aS1hcHAtc2lkZWJhci13aWR0aCcpO1xuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWNsb3NlJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlU2lkZWJhckhlYWRlckNzc1ZhcnMoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtc2lkZWJhci1oZWFkZXItaGVpZ2h0LWFjdGl2ZScsICctLWV1aS1hcHAtc2lkZWJhci1oZWFkZXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlU2lkZWJhckZvb3RlckNzc1ZhcnMoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0LWFjdGl2ZScsICctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGlzcGxheXMgYSBncm93bCBVeE1lc3NhZ2UgaXRlbSwgaXNTdGlja3lcbiAgICAgKi9cbiAgICBncm93bChtc2c6IFV4TWVzc2FnZSwgaXNTdGlja3k/OiBib29sZWFuLCBpc011bHRpcGxlPzogYm9vbGVhbiwgbGlmZT86IG51bWJlciwgcG9zaXRpb24/OiBzdHJpbmcsIGNhbGxiYWNrPzogKCkgPT4gdm9pZCkge1xuICAgICAgICBpZiAobXNnLnNldmVyaXR5ICE9PSAnaW5mbycgJiYgbXNnLnNldmVyaXR5ICE9PSAnd2FybmluZycgJiYgbXNnLnNldmVyaXR5ICE9PSAnc3VjY2VzcycgJiYgbXNnLnNldmVyaXR5ICE9PSAnZGFuZ2VyJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVeEFwcFNoZWxsU2VydmljZS5ncm93bCgpIEVSUk9SIDogbWVzc2FnZSBzZXZlcml0eSBtdXN0IGJlIGVpdGhlciA6IHN1Y2Nlc3MsIHdhcm5pbmcsIGluZm8sIGRhbmdlcicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzTXVsdGlwbGUgPT09IHVuZGVmaW5lZCB8fCAhaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xNZXNzYWdlcyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ncm93bE1lc3NhZ2VzID0gdGhpcy5ncm93bE1lc3NhZ2VzLmNvbmNhdChtc2cpO1xuICAgICAgICAgICAgbXNnLmxpZmUgPSBsaWZlIHx8IG1zZy5saWZlO1xuICAgICAgICAgICAgbXNnLnN0aWNreSA9IGlzU3RpY2t5IHx8IG1zZy5zdGlja3k7XG5cbiAgICAgICAgICAgIGlmIChsaWZlID09PSB1bmRlZmluZWQgfHwgaXNOYU4obGlmZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAobXNnLnNldmVyaXR5ID09PSAnZGFuZ2VyJykge1xuICAgICAgICAgICAgICAgICAgICBpc1N0aWNreSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm93bExpZmUgPSAzMDAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm93bExpZmUgPSBsaWZlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNTdGlja3kpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzR3Jvd2xTdGlja3kgPSBpc1N0aWNreTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0dyb3dsU3RpY2t5ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm93bENhbGxiYWNrID0gKCkgPT4ge307XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhckdyb3dsKCkge1xuICAgICAgICB0aGlzLmdyb3dsTWVzc2FnZXMgPSBbXTtcbiAgICB9XG5cbiAgICBncm93bFN1Y2Nlc3MobXNnOiBzdHJpbmcsIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZ3Jvd2woeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnU1VDQ0VTUycsIGRldGFpbDogbXNnIH0sIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVkLCBwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgZ3Jvd2xFcnJvcihtc2c6IHN0cmluZywgcG9zaXRpb24/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5ncm93bCh7IHNldmVyaXR5OiAnZGFuZ2VyJywgc3VtbWFyeTogJ0VSUk9SJywgZGV0YWlsOiBtc2cgfSwgZmFsc2UsIGZhbHNlLCB1bmRlZmluZWQsIHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICAvLyBkYXRlIGhlbHBlcnNcblxuICAgIGdyb3dsV2FybmluZyhtc2c6IHN0cmluZywgcG9zaXRpb24/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5ncm93bCh7IHNldmVyaXR5OiAnd2FybmluZycsIHN1bW1hcnk6ICdXQVJOSU5HJywgZGV0YWlsOiBtc2cgfSwgZmFsc2UsIGZhbHNlLCB1bmRlZmluZWQsIHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBncm93bEluZm8obXNnOiBzdHJpbmcsIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZ3Jvd2woeyBzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiAnSU5GTycsIGRldGFpbDogbXNnIH0sIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVkLCBwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgb3Blbk1vZGFsKG1vZGFsSWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdtb2RhbC1vcGVuJyk7XG4gICAgICAgIGlmICghbW9kYWxJZCkge1xuICAgICAgICAgICAgbW9kYWxJZCA9ICdzaW5nbGVfbW9kYWwnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVNb2RhbHMucHVzaCh7XG4gICAgICAgICAgICBpZDogbW9kYWxJZCxcbiAgICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1vZGFsSWQgKyAnLWNsb3NlLWJ1dHRvbicpO1xuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgZWwuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG5cbiAgICBvcGVuTWVzc2FnZUJveChtZXNzYWdlQm94SWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCFtZXNzYWdlQm94SWQpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VCb3hJZCA9ICdtZXNzYWdlYm94X21vZGFsJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZW5Nb2RhbChtZXNzYWdlQm94SWQpO1xuICAgIH1cblxuICAgIGNsb3NlTWVzc2FnZUJveChtZXNzYWdlQm94SWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCFtZXNzYWdlQm94SWQpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VCb3hJZCA9ICdtZXNzYWdlYm94X21vZGFsJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NlTW9kYWwobWVzc2FnZUJveElkKTtcbiAgICB9XG5cbiAgICBpc01vZGFsT3Blbihtb2RhbElkPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICghbW9kYWxJZCkge1xuICAgICAgICAgICAgbW9kYWxJZCA9ICdzaW5nbGVfbW9kYWwnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU1vZGFscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCBtb2RhbEluZGV4OiBudW1iZXIgPSB0aGlzLmZpbmRNb2RhbEluZGV4KG1vZGFsSWQpO1xuICAgICAgICAgICAgaWYgKG1vZGFsSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlTW9kYWxzW21vZGFsSW5kZXhdLmlzT3BlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gUG9zaXRpb25zIGhlbHBlcnNcblxuICAgIGNsb3NlTW9kYWwobW9kYWxJZD86IHN0cmluZykge1xuICAgICAgICBpZiAoIW1vZGFsSWQpIHtcbiAgICAgICAgICAgIG1vZGFsSWQgPSAnc2luZ2xlX21vZGFsJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBNYWtlIHN1cmUgd2UgZmluZCB0aGUgbW9kYWwgYmVmb3JlIHNwbGljaW5nIHRoZSBhY3RpdmVNb2RhbHMgYXJyYXlcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maW5kTW9kYWxJbmRleChtb2RhbElkKTtcbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWxzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVNb2RhbHMgJiYgdGhpcy5hY3RpdmVNb2RhbHMubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnbW9kYWwtb3BlbicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgc3RpbGwgYW5vdGhlciAocGFyZW50KSBtb2RhbCBkaWFsb2cgb3BlbiwgZW5zdXJlIGl0IGlzIGZvY3VzZWQgdXBvbiB0byBiZSBhYmxlIHRvIGNsb3NlIGlzIHdpdGggdGhlIEVTQyBrZXk6XG4gICAgICAgICAgICBjb25zdCBsYXN0TW9kYWxJZCA9IHRoaXMuYWN0aXZlTW9kYWxzW3RoaXMuYWN0aXZlTW9kYWxzLmxlbmd0aCAtIDFdLmlkO1xuICAgICAgICAgICAgaWYgKGxhc3RNb2RhbElkKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobGFzdE1vZGFsSWQgKyAnLWNsb3NlLWJ1dHRvbicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZE1vZGFsSW5kZXgobW9kYWxJZDogc3RyaW5nKSB7XG4gICAgICAgIGxldCBpbmRleCA9IC0xO1xuXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU1vZGFscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hY3RpdmVNb2RhbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVNb2RhbHNbaV0uaWQgPT09IG1vZGFsSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gcHJpdmF0ZSBnZXR0ZXJzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tXG4gICAgcHJpdmF0ZSBnZXRDc3NWYXJWYWx1ZShpbnB1dFByb3BlcnR5KSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShpbnB1dFByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENzc1ZhcihpbnB1dFByb3BlcnR5LCBvdXRwdXRQcm9wZXJ0eSkge1xuICAgICAgICBjb25zdCBjc3NWYXJWYWx1ZSA9IHRoaXMuY3NzVmFycy5maWx0ZXIoKHYpID0+IHYua2V5ID09PSBpbnB1dFByb3BlcnR5KVswXS52YWx1ZTtcbiAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUob3V0cHV0UHJvcGVydHksIGNzc1ZhclZhbHVlKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coaW5wdXRQcm9wZXJ0eSwgb3V0cHV0UHJvcGVydHksIGNzc1ZhclZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRDc3NWYXJWYWx1ZSh2YXJOYW1lLCB2YXJWYWx1ZSkge1xuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkodmFyTmFtZSwgdmFyVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0V3JhcHBlckNsYXNzZXMoc3RhdGU6IFVJU3RhdGUsIGJyZWFrcG9pbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGNsYXNzZXMucHVzaChicmVha3BvaW50KTtcblxuICAgICAgICBpZiAoc3RhdGUuaGFzU2lkZWJhcikge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmlzU2lkZWJhck9wZW4gJiYgKHN0YXRlLmlzU2lkZWJhckFjdGl2ZSB8fCBzdGF0ZS5pc1NpZGViYXJJbm5lckFjdGl2ZSkpIHtcbiAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NpZGViYXItc3RhdGUtb3BlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5pc1NpZGViYXJPcGVuICYmIChzdGF0ZS5pc1NpZGViYXJBY3RpdmUgfHwgc3RhdGUuaXNTaWRlYmFySW5uZXJBY3RpdmUpKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLXN0YXRlLWNsb3NlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhdGUuaXNTaWRlYmFyQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLWFjdGl2ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlLmlzU2lkZWJhcklubmVyQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLWlubmVyLWFjdGl2ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlLmlzU2lkZWJhclN0YXRlQ2xvc2VXaXRoSWNvbnMpIHtcbiAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NpZGViYXItc3RhdGUtY2xvc2Utd2l0aC1pY29ucycpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBORVcgQVBQLVNIRUxMIHByb3BzXG4gICAgICAgICAgICBpZiAoc3RhdGUuaXNTaWRlYmFySGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLS1oaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0ZS5pc1NpZGViYXJPcGVuKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLS1vcGVuJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnc2lkZWJhci0tY2xvc2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0ZS5pc1NpZGViYXJIb3Zlcikge1xuICAgICAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnc2lkZWJhci0taG92ZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZGV2aWNlSW5mbyAmJiBzdGF0ZS5kZXZpY2VJbmZvLmlzRkYpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnZmYnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZGV2aWNlSW5mbyAmJiBzdGF0ZS5kZXZpY2VJbmZvLmlzSUUpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnaWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZGV2aWNlSW5mbyAmJiBzdGF0ZS5kZXZpY2VJbmZvLmlzSUUxMSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdpZTExJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmRldmljZUluZm8gJiYgc3RhdGUuZGV2aWNlSW5mby5pc0Nocm9tZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdjaHJvbWUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRCcmVha3BvaW50KHdpbmRvd1dpZHRoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBsZXQgYmtwID0gJyc7XG5cbiAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBjYXNlIHdpbmRvd1dpZHRoID49IDAgJiYgd2luZG93V2lkdGggPCA1NzY6XG4gICAgICAgICAgICAgICAgYmtwID0gJ3hzJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2Ugd2luZG93V2lkdGggPj0gNTc2ICYmIHdpbmRvd1dpZHRoIDwgNzY4OlxuICAgICAgICAgICAgICAgIGJrcCA9ICdzbSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHdpbmRvd1dpZHRoID49IDc2OCAmJiB3aW5kb3dXaWR0aCA8IDk5MjpcbiAgICAgICAgICAgICAgICBia3AgPSAnbWQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSB3aW5kb3dXaWR0aCA+PSA5OTIgJiYgd2luZG93V2lkdGggPCAxMjAwOlxuICAgICAgICAgICAgICAgIGJrcCA9ICdsZyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHdpbmRvd1dpZHRoID49IDEyMDAgJiYgd2luZG93V2lkdGggPCAxNDAwOlxuICAgICAgICAgICAgICAgIGJrcCA9ICd4bCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHdpbmRvd1dpZHRoID49IDE0MDA6XG4gICAgICAgICAgICAgICAgYmtwID0gJ3h4bCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJrcDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJyZWFrcG9pbnRzKGJrcDogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlzTW9iaWxlOiBia3AgPT09ICd4cycgfHwgYmtwID09PSAnc20nLFxuICAgICAgICAgICAgaXNUYWJsZXQ6IGJrcCA9PT0gJ21kJyxcbiAgICAgICAgICAgIGlzTHREZXNrdG9wOiBia3AgPT09ICd4cycgfHwgYmtwID09PSAnc20nIHx8IGJrcCA9PT0gJ21kJyxcbiAgICAgICAgICAgIGlzRGVza3RvcDogYmtwID09PSAnbGcnLFxuICAgICAgICAgICAgaXNYTDogYmtwID09PSAneGwnLFxuICAgICAgICAgICAgaXNYWEw6IGJrcCA9PT0gJ3h4bCcsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRKc29uKHVybDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKS50b1Byb21pc2UoKS50aGVuKHRoaXMuZXh0cmFjdERhdGEpLmNhdGNoKHRoaXMuaGFuZGxlRXJyb3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdERhdGEocmVzOiBSZXNwb25zZSkge1xuICAgICAgICBjb25zdCBib2R5ID0gcmVzO1xuICAgICAgICByZXR1cm4gYm9keSB8fCB7fTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCcsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZEFjdGl2ZUxhbmd1YWdlVG9BcHBTaGVsbFN0YXRlKCkge1xuICAgICAgICB0aGlzLnN0b3JlU2VydmljZS5zZWxlY3QoZ2V0QWN0aXZlTGFuZykuc3Vic2NyaWJlKChhY3RpdmVMYW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlTGFuZyAhPT0gdGhpcy5zdGF0ZS5hY3RpdmVMYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVMYW5ndWFnZTogYWN0aXZlTGFuZyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
675
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtYXBwLXNoZWxsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3V4LWFwcC1zaGVsbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBaUMsYUFBYSxFQUF5QixNQUFNLFdBQVcsQ0FBQztBQUMvRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxPQUFPLEVBQVUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQ3hDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBZ0VoQyxNQUFNLFlBQVksR0FBWTtJQUMxQixPQUFPLEVBQUUsRUFBRTtJQUNYLFlBQVksRUFBRSxFQUFFO0lBQ2hCLFdBQVcsRUFBRSxFQUFFO0lBQ2YsU0FBUyxFQUFFLElBQUk7SUFDZixZQUFZLEVBQUUsSUFBSTtJQUNsQixxQkFBcUIsRUFBRSxJQUFJO0lBQzNCLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLG9CQUFvQixFQUFFLEtBQUs7SUFDM0IsNEJBQTRCLEVBQUUsS0FBSztJQUNuQyxzQkFBc0IsRUFBRSxJQUFJO0lBQzVCLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLFNBQVMsRUFBRSxL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cG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkZWZlciwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXhFdUxhbmd1YWdlcywgR2xvYmFsQ29uZmlnLCBVeExpbmssIFV4TW9kYWwsIGdldEFjdGl2ZUxhbmcsIFV4TWVzc2FnZSwgVXhMYW5ndWFnZSB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBHTE9CQUxfQ09ORklHX1RPS0VOIH0gZnJvbSAnLi9jb25maWcvdG9rZW5zJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi9pMThuJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkVuZCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JlL3N0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC1lcy9pc0VxdWFsJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLWVzL2dldCc7XG4vLyBpbXBvcnQgeyBVeFJvb3RJbmplY3Rvckd1YXJkIH0gZnJvbSAnLi91eC1yb290LWluamVjdG9yLmd1YXJkJztcblxuZXhwb3J0IGludGVyZmFjZSBVSVN0YXRlIHtcbiAgICAvLyBhcHAgc3RhdGVcbiAgICBhcHBOYW1lPzogc3RyaW5nO1xuICAgIGFwcFNob3J0TmFtZT86IHN0cmluZztcbiAgICBhcHBTdWJUaXRsZT86IHN0cmluZztcblxuICAgIC8vIHVzZXIgc3RhdGVcbiAgICB1c2VySW5mb3M/OiBzdHJpbmc7XG4gICAgdXNlclN1YkluZm9zPzogc3RyaW5nO1xuICAgIGltcGVyc29uYXRlZFVzZXJJbmZvcz86IHN0cmluZztcblxuICAgIC8vIFNpZGViYXIgc3RhdGVcbiAgICBpc1NpZGViYXJPcGVuPzogYm9vbGVhbjtcbiAgICBpc1NpZGViYXJIb3Zlcj86IGJvb2xlYW47XG4gICAgaXNTaWRlYmFyQWN0aXZlPzogYm9vbGVhbjtcbiAgICBpc1NpZGViYXJJbm5lckFjdGl2ZT86IGJvb2xlYW47XG4gICAgaXNTaWRlYmFyU3RhdGVDbG9zZVdpdGhJY29ucz86IGJvb2xlYW47XG4gICAgaXNTaWRlYmFyRXhwYW5kT25Ib3Zlcj86IGJvb2xlYW47XG4gICAgaGFzU2lkZWJhcj86IGJvb2xlYW47XG4gICAgaGFzQnJlYWRjcnVtYj86IGJvb2xlYW47XG4gICAgaGFzSGVhZGVyPzogYm9vbGVhbjtcbiAgICBoYXNIZWFkZXJMb2dvPzogYm9vbGVhbjtcbiAgICBoYXNIZWFkZXJFbnZpcm9ubWVudD86IGJvb2xlYW47XG4gICAgaGFzVG9vbGJhcj86IGJvb2xlYW47XG4gICAgaGFzVG9vbGJhck1lbnU/OiBib29sZWFuO1xuICAgIGVudmlyb25tZW50VmFsdWU/OiBzdHJpbmc7XG4gICAgaXNTaWRlYmFySGlkZGVuPzogYm9vbGVhbjtcbiAgICBoYXNUb3BNZXNzYWdlPzogYm9vbGVhbjtcblxuICAgIC8vIHdpbmRvdyBzdGF0ZVxuICAgIHdpbmRvd1dpZHRoPzogbnVtYmVyO1xuICAgIHdpbmRvd0hlaWdodD86IG51bWJlcjtcbiAgICBtYWluQ29udGVudEhlaWdodD86IG51bWJlcjtcbiAgICBwYWdlSGVhZGVySGVpZ2h0PzogbnVtYmVyO1xuICAgIGJyZWFrcG9pbnQ/OiBzdHJpbmc7XG4gICAgd3JhcHBlckNsYXNzZXM/OiBzdHJpbmc7XG4gICAgYnJlYWtwb2ludHM/OiBhbnk7XG5cbiAgICAvLyBuYXZpZ2F0aW9uIHN0YXRlXG4gICAgbWVudUxpbmtzPzogVXhMaW5rW107XG4gICAgc2lkZWJhckxpbmtzPzogVXhMaW5rW107XG4gICAgY29tYmluZWRMaW5rcz86IFV4TGlua1tdO1xuXG4gICAgLy8gb3RoZXIgc3RhdGVzXG4gICAgaXNCbG9ja0RvY3VtZW50QWN0aXZlPzogYm9vbGVhbjtcblxuICAgIC8vIGRldmljZSBpbmZvXG4gICAgZGV2aWNlSW5mbzogYW55O1xuXG4gICAgLy8gbGFuZ3VhZ2UgaW5mb3NcbiAgICBhY3RpdmVMYW5ndWFnZTogc3RyaW5nO1xuICAgIGxhbmd1YWdlczogKHN0cmluZyB8IFV4TGFuZ3VhZ2UpW107XG5cbiAgICAvLyBhcHAgbWV0YWRhdGFcbiAgICBhcHBNZXRhZGF0YTogYW55O1xuXG4gICAgLy8gdmFyaW91cyBkeW5hbWljIHN0YXRlXG4gICAgaGFzTW9kYWxBY3RpdmU/OiBib29sZWFuO1xuICAgIGlzRGltbWVyQWN0aXZlPzogYm9vbGVhbjsgLy8gVXNhZ2U6IG1hcCB0byBldWkgYmFzZSBkaXJlY3RpdmUgaW5wdXQgY29lcmNlIGV1aUhpZ2hsaWdodGVkXG59XG5cbmNvbnN0IGluaXRpYWxTdGF0ZTogVUlTdGF0ZSA9IHtcbiAgICBhcHBOYW1lOiAnJyxcbiAgICBhcHBTaG9ydE5hbWU6ICcnLFxuICAgIGFwcFN1YlRpdGxlOiAnJyxcbiAgICB1c2VySW5mb3M6IG51bGwsXG4gICAgdXNlclN1YkluZm9zOiBudWxsLFxuICAgIGltcGVyc29uYXRlZFVzZXJJbmZvczogbnVsbCxcbiAgICBpc1NpZGViYXJPcGVuOiB0cnVlLFxuICAgIGlzU2lkZWJhckhvdmVyOiBmYWxzZSxcbiAgICBpc1NpZGViYXJBY3RpdmU6IGZhbHNlLFxuICAgIGlzU2lkZWJhcklubmVyQWN0aXZlOiBmYWxzZSxcbiAgICBpc1NpZGViYXJTdGF0ZUNsb3NlV2l0aEljb25zOiBmYWxzZSxcbiAgICBpc1NpZGViYXJFeHBhbmRPbkhvdmVyOiB0cnVlLFxuICAgIGhhc1NpZGViYXI6IGZhbHNlLFxuICAgIGhhc0hlYWRlcjogZmFsc2UsXG4gICAgaGFzQnJlYWRjcnVtYjogZmFsc2UsXG4gICAgaGFzSGVhZGVyTG9nbzogZmFsc2UsXG4gICAgaGFzSGVhZGVyRW52aXJvbm1lbnQ6IGZhbHNlLFxuICAgIGhhc1Rvb2xiYXI6IGZhbHNlLFxuICAgIGhhc1Rvb2xiYXJNZW51OiBmYWxzZSxcbiAgICBlbnZpcm9ubWVudFZhbHVlOiAnJyxcbiAgICBpc1NpZGViYXJIaWRkZW46IGZhbHNlLFxuICAgIGhhc1RvcE1lc3NhZ2U6IGZhbHNlLFxuICAgIHdpbmRvd1dpZHRoOiAwLFxuICAgIHdpbmRvd0hlaWdodDogMCxcbiAgICBtYWluQ29udGVudEhlaWdodDogMCxcbiAgICBwYWdlSGVhZGVySGVpZ2h0OiAwLFxuICAgIHdyYXBwZXJDbGFzc2VzOiAnJyxcbiAgICBicmVha3BvaW50OiAnJyxcbiAgICBicmVha3BvaW50czoge1xuICAgICAgICBpc01vYmlsZTogZmFsc2UsXG4gICAgICAgIGlzVGFibGV0OiBmYWxzZSxcbiAgICAgICAgaXNMdERlc2t0b3A6IGZhbHNlLFxuICAgICAgICBpc0Rlc2t0b3A6IGZhbHNlLFxuICAgICAgICBpc1hMOiBmYWxzZSxcbiAgICAgICAgaXNYWEw6IGZhbHNlLFxuICAgIH0sXG4gICAgbWVudUxpbmtzOiBbXSxcbiAgICBzaWRlYmFyTGlua3M6IFtdLFxuICAgIGNvbWJpbmVkTGlua3M6IFtdLFxuICAgIGlzQmxvY2tEb2N1bWVudEFjdGl2ZTogZmFsc2UsXG4gICAgZGV2aWNlSW5mbzogbnVsbCxcbiAgICBhY3RpdmVMYW5ndWFnZTogJ2VuJyxcbiAgICBsYW5ndWFnZXM6IFV4RXVMYW5ndWFnZXMuZ2V0TGFuZ3VhZ2VzKCksXG4gICAgYXBwTWV0YWRhdGE6IG51bGwsXG4gICAgaGFzTW9kYWxBY3RpdmU6IGZhbHNlLFxuICAgIGlzRGltbWVyQWN0aXZlOiBmYWxzZSxcbn07XG5cbi8vIFRPRE86IHRoaXMgc2VydmljZSBuZWVkcyB0byBiZSB0cmFuc2ZlcnJlZCBpbiB0aGUgcmVzcGVjdGl2ZSBjb21wb25lbnRcbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFV4QXBwU2hlbGxTZXJ2aWNlIHtcbiAgICBncm93bE1lc3NhZ2VzID0gW107XG4gICAgaXNHcm93bFN0aWNreSA9IGZhbHNlO1xuICAgIGdyb3dsTGlmZSA9IDMwMDA7XG4gICAgZ3Jvd2xQb3NpdGlvbiA9ICdib3R0b20tcmlnaHQnO1xuICAgIGdyb3dsQ2FsbGJhY2s6IGFueSA9IG51bGw7XG4gICAgYWN0aXZlTW9kYWxzOiBVeE1vZGFsW10gPSBbXTtcbiAgICBvcGVuTW9kYWxJZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgICBuYXZpZ2F0aW9uU3RhcnRDdXN0b21IYW5kbGVyOiAoKSA9PiB2b2lkO1xuICAgIG5hdmlnYXRpb25FbmRDdXN0b21IYW5kbGVyOiAoKSA9PiB2b2lkO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGdldCBzdGF0ZSQoKTogT2JzZXJ2YWJsZTxVSVN0YXRlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGV4cG9zZWQgb2JzZXJ2YWJsZXNcblxuICAgIGdldCBicmVha3BvaW50JCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGJyZWFrcG9pbnRzJCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludHMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBzdGF0ZSBvcGVyYXRpb25zXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLVxuICAgIGdldCBzdGF0ZSgpOiBVSVN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBwdWJsaWMgc2V0dGVycyBhbmQgZnVuY3Rpb25zXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHNldCBpc1NpZGViYXJPcGVuKGlzT3BlbjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBpc1NpZGViYXJPcGVuOiBpc09wZW4sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBpc1NpZGViYXJPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc1NpZGViYXJPcGVuO1xuICAgIH1cblxuICAgIHNldCBpc1NpZGViYXJIb3Zlcihpc0hvdmVyOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmlzU2lkZWJhckV4cGFuZE9uSG92ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgaXNTaWRlYmFySG92ZXI6IGlzSG92ZXIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBpc1NpZGViYXJIb3ZlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuaXNTaWRlYmFySG92ZXI7XG4gICAgfVxuXG4gICAgc2V0IGlzU2lkZWJhckFjdGl2ZShpc0FjdGl2ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBpc1NpZGViYXJBY3RpdmU6IGlzQWN0aXZlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXQgaXNTaWRlYmFySW5uZXJBY3RpdmUoaXNPcGVuOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGlzU2lkZWJhcklubmVyQWN0aXZlOiBpc09wZW4sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldCBzaWRlYmFyTGlua3MobGlua3M6IFV4TGlua1tdKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIHNpZGViYXJMaW5rczogbGlua3MsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldCBtZW51TGlua3MobGlua3M6IFV4TGlua1tdKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIG1lbnVMaW5rczogbGlua3MsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldCBpc0Jsb2NrRG9jdW1lbnRBY3RpdmUoaXNBY3RpdmU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgaXNCbG9ja0RvY3VtZW50QWN0aXZlOiBpc0FjdGl2ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0hlYWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuaGFzSGVhZGVyO1xuICAgIH1cblxuICAgIC8vIEVkaXQgbW9kZVxuICAgIGdldCBpc0RpbW1lckFjdGl2ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuaXNEaW1tZXJBY3RpdmU7XG4gICAgfVxuXG4gICAgc2V0IGlzRGltbWVyQWN0aXZlKGlzQWN0aXZlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGlzRGltbWVyQWN0aXZlOiBpc0FjdGl2ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjc3NWYXJzID0gW107XG4gICAgcHJpdmF0ZSBfc3RhdGUkOiBCZWhhdmlvclN1YmplY3Q8VUlTdGF0ZT47XG4gICAgcHJpdmF0ZSBfYnJlYWtwb2ludCQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+O1xuICAgIHByaXZhdGUgX2JyZWFrcG9pbnRzJDogQmVoYXZpb3JTdWJqZWN0PGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChHTE9CQUxfQ09ORklHX1RPS0VOKSBwcm90ZWN0ZWQgY29uZmlnOiBHbG9iYWxDb25maWcsXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBvYmplY3QsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgc3RvcmVTZXJ2aWNlOiBTdG9yZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIGxldCBzdGF0ZVdpdGhDb25maWcgPSBpbml0aWFsU3RhdGU7XG4gICAgICAgIGNvbnN0IGxhbmd1YWdlcyA9IGNvbmZpZz8uaTE4bj8uaTE4blNlcnZpY2U/Lmxhbmd1YWdlcyB8fCBpbml0aWFsU3RhdGUubGFuZ3VhZ2VzO1xuICAgICAgICBjb25zdCBkZWZhdWx0TGFuZ3VhZ2UgPSBjb25maWc/LmkxOG4/LmkxOG5TZXJ2aWNlPy5kZWZhdWx0TGFuZ3VhZ2UgfHwgaW5pdGlhbFN0YXRlLmFjdGl2ZUxhbmd1YWdlO1xuICAgICAgICBzdGF0ZVdpdGhDb25maWcgPSB7XG4gICAgICAgICAgICAuLi5zdGF0ZVdpdGhDb25maWcsXG4gICAgICAgICAgICAuLi57XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgIGFjdGl2ZUxhbmd1YWdlOiBkZWZhdWx0TGFuZ3VhZ2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9zdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHN0YXRlV2l0aENvbmZpZyk7XG4gICAgICAgIHRoaXMuX2JyZWFrcG9pbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuICAgICAgICB0aGlzLmJpbmRBY3RpdmVMYW5ndWFnZVRvQXBwU2hlbGxTdGF0ZSgpO1xuXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICByb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFN0YXRlKG5leHRTdGF0ZTogVUlTdGF0ZSwgdXBkYXRlSTE4ID0gdHJ1ZSkge1xuICAgICAgICBsZXQgYnJlYWtwb2ludCwgYnJlYWtwb2ludHMsIHdyYXBwZXJDbGFzc2VzO1xuICAgICAgICBsZXQgY29tYmluZWRMaW5rcztcblxuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgd2luZG93IHdpZHRoIGhhcyBiZWVuIHVwZGF0ZWQgZnJvbSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICBpZiAodGhpcy5zdGF0ZS53aW5kb3dXaWR0aCAhPT0gbmV4dFN0YXRlLndpbmRvd1dpZHRoKSB7XG4gICAgICAgICAgICBicmVha3BvaW50ID0gdGhpcy5nZXRCcmVha3BvaW50KG5leHRTdGF0ZS53aW5kb3dXaWR0aCk7XG4gICAgICAgICAgICBicmVha3BvaW50cyA9IHRoaXMuZ2V0QnJlYWtwb2ludHMoYnJlYWtwb2ludCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQkLm5leHQoYnJlYWtwb2ludCk7XG4gICAgICAgICAgICB0aGlzLl9icmVha3BvaW50cyQubmV4dChicmVha3BvaW50cyk7XG5cbiAgICAgICAgICAgIC8vIGlmIG5vdCBwcm9wYWdhdGUgdGhlIG9sZCBvbmVzIHdpdGhvdXQgZG9pbmcgYW55IGNhbGN1bGF0aW9uc1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnJlYWtwb2ludCA9IHN0YXRlLmJyZWFrcG9pbnQ7XG4gICAgICAgICAgICBicmVha3BvaW50cyA9IHN0YXRlLmJyZWFrcG9pbnRzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZmluYWxseSBnZXQgdGhlIHdyYXBwZXIgY2xhc3NlcyB3aGVuIGJvdGggdGhlIHN0YXRlIGFuZCBicmVha3BvaW50IGFyZSBrbm93blxuICAgICAgICB3cmFwcGVyQ2xhc3NlcyA9IHRoaXMuZ2V0V3JhcHBlckNsYXNzZXMobmV4dFN0YXRlLCBicmVha3BvaW50KTtcblxuICAgICAgICAvLyBjaGVjayBpZiB0aGUgbWVudUxpbmtzIG9yIHNpZGViYXJMaW5rcyBoYXZlIGNoYW5nZWQgZnJvbSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5tZW51TGlua3MgIT09IG5leHRTdGF0ZS5tZW51TGlua3MgfHwgdGhpcy5zdGF0ZS5zaWRlYmFyTGlua3MgIT09IG5leHRTdGF0ZS5zaWRlYmFyTGlua3MpIHtcbiAgICAgICAgICAgIGNvbWJpbmVkTGlua3MgPSBbLi4ubmV4dFN0YXRlLm1lbnVMaW5rcywgLi4ubmV4dFN0YXRlLnNpZGViYXJMaW5rc107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21iaW5lZExpbmtzID0gdGhpcy5zdGF0ZS5jb21iaW5lZExpbmtzO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhdGVCZWZvcmVVcGRhdGUgPSB7IC4uLnRoaXMuc3RhdGUgfTtcblxuICAgICAgICAvLyB3ZSBwdXQgaXQgYWxsIHRvZ2V0aGVyIHdpdGggdGhlIGNhbGN1bGF0ZWQgcHJvcGVydGllc1xuICAgICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAuLi5uZXh0U3RhdGUsXG4gICAgICAgICAgICB3cmFwcGVyQ2xhc3NlcyxcbiAgICAgICAgICAgIGJyZWFrcG9pbnQsXG4gICAgICAgICAgICBicmVha3BvaW50cyxcbiAgICAgICAgICAgIGNvbWJpbmVkTGlua3MsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIHVwZGF0ZSB0aGUgU3RvcmUgTGFuZ3VhZ2VcbiAgICAgICAgaWYgKHVwZGF0ZUkxOCAmJiBuZXh0U3RhdGUuYWN0aXZlTGFuZ3VhZ2UgIT09IHN0YXRlQmVmb3JlVXBkYXRlLmFjdGl2ZUxhbmd1YWdlKSB7XG4gICAgICAgICAgICB0aGlzLmkxOG5TZXJ2aWNlLnVwZGF0ZVN0YXRlKHsgYWN0aXZlTGFuZzogbmV4dFN0YXRlLmFjdGl2ZUxhbmd1YWdlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYSBzbGljZSBmcm9tIHRoZSBzdGF0ZSB3aGV0aGVyIHRoYXQgY2hhbmdlc1xuICAgICAqXG4gICAgICogQHBhcmFtIGtleSBjYW4gYmUgJ2tleScgb3IgJ2tleS5zdWIuc3ViJ1xuICAgICAqL1xuICAgIGdldFN0YXRlKGtleT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgICAgICAgLy8gY2hlY2sgaWYga2V5IGV4aXN0c1xuICAgICAgICAgICAga2V5XG4gICAgICAgICAgICAgICAgPyB0aGlzLnN0YXRlJC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgIG1hcCgoc3RhdGUpID0+IGdldChzdGF0ZSwga2V5KSksXG4gICAgICAgICAgICAgICAgICAgICAgLy8gZmlsdGVyKChzdGF0ZSkgPT4gc3RhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCh4LCB5KSA9PiBpc0VxdWFsKHgsIHkpKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdGhpcy5zdGF0ZSRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2lkZWJhclRvZ2dsZSgpIHtcbiAgICAgICAgdGhpcy5pc1NpZGViYXJPcGVuID0gIXRoaXMuc3RhdGUuaXNTaWRlYmFyT3BlbjtcbiAgICB9XG5cbiAgICAvLyBFZGl0IG1vZGVcbiAgICBwdWJsaWMgZGltbWVyQWN0aXZlVG9nZ2xlKCkge1xuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuaXNEaW1tZXJBY3RpdmU7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGlzRGltbWVyQWN0aXZlOiAhaXNBY3RpdmUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFjdGl2YXRlRWRpdE1vZGVDc3NWYXJzKCFpc0FjdGl2ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpbW1lckFjdGl2ZVN0YXRlKGFjdGl2ZVN0YXRlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGlzRGltbWVyQWN0aXZlOiBhY3RpdmVTdGF0ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVFZGl0TW9kZUNzc1ZhcnMoYWN0aXZlU3RhdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZUVkaXRNb2RlQ3NzVmFycyhpc0FjdGl2ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENzc1ZhclZhbHVlKCctLWV1aS1kb2NwYWdlLW5hdmlnYXRpb24tei1pbmRleCcsICdpbmhlcml0Jyk7IC8vIFJlc2V0IGRvYy1wYWdlLW5hdmlnYXRpb24tY29sdW1uIHotaW5kZXhcbiAgICAgICAgICAgIHRoaXMuX3NldENzc1ZhclZhbHVlKCctLWV1aS16LWluZGV4LXNpZGViYXInLCAnaW5oZXJpdCcpOyAvLyBSZXNldCBldWktYXBwLXNpZGViYXIgei1pbmRleFxuICAgICAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLXotaW5kZXgtcm9vdCcsICdpbmhlcml0Jyk7IC8vIFJlc2V0IGV1aS1hcHAtbWFpbi1jb250ZW50IHotaW5kZXhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENzc1ZhclZhbHVlKCctLWV1aS1kb2NwYWdlLW5hdmlnYXRpb24tei1pbmRleCcsICcyJyk7IC8vIFJlc3RvcmUgZG9jLXBhZ2UtbmF2aWdhdGlvbi1jb2x1bW4gei1pbmRleFxuICAgICAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLXotaW5kZXgtc2lkZWJhcicsICcxMDQ0Jyk7IC8vIFJlc3RvcmUgZXVpLWFwcC1zaWRlYmFyIHotaW5kZXhcbiAgICAgICAgICAgIHRoaXMuX3NldENzc1ZhclZhbHVlKCctLWV1aS16LWluZGV4LXJvb3QnLCAnMScpOyAvLyBSZXN0b3JlIGV1aS1hcHAtbWFpbi1jb250ZW50IHotaW5kZXhcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tXG4gICAgLy8gcHVibGljIG1ldGhvZHNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBmZXRjaEFwcE1ldGFkYXRhKG1ldGFkYXRhRmlsZVBhdGggPSAnYXNzZXRzL2FwcC1tZXRhZGF0YS5qc29uJykge1xuICAgICAgICB0aGlzLmdldEpzb24obWV0YWRhdGFGaWxlUGF0aCkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgICAgICBhcHBNZXRhZGF0YTogZGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWN0aXZhdGVTaWRlYmFyKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBoYXNTaWRlYmFyOiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuc3RhdGUuaXNTaWRlYmFySGlkZGVuKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2YXRlU2lkZWJhckNzc1ZhcnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVNpZGViYXJIZWFkZXIoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVTaWRlYmFySGVhZGVyQ3NzVmFycygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVNpZGViYXJGb290ZXIoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVTaWRlYmFyRm9vdGVyQ3NzVmFycygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZUhlYWRlcigpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgaGFzSGVhZGVyOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZUhlYWRlckNzc1ZhcnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWN0aXZhdGVCcmVhZGNydW1iKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBoYXNCcmVhZGNydW1iOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZUJyZWFkY3J1bWJDc3NWYXJzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlVG9wTWVzc2FnZShoZWlnaHQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBoYXNUb3BNZXNzYWdlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZVRvcE1lc3NhZ2VDc3NWYXJzKGhlaWdodCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlVG9vbGJhcigpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgaGFzVG9vbGJhcjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVUb29sYmFyQ3NzVmFycygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVRvb2xiYXJNZW51KCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBoYXNUb29sYmFyTWVudTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZldGNoQ3NzVmFycygpIHtcbiAgICAgICAgY29uc3QgY3NzVmFyTmFtZXMgPSBbXG4gICAgICAgICAgICAnLS1ldWktYXBwLWhlYWRlci1oZWlnaHQtZGVmYXVsdCcsXG4gICAgICAgICAgICAnLS1ldWktYXBwLWhlYWRlci1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtaGVhZGVyLWhlaWdodC1zaHJpbmsnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1icmVhZGNydW1iLWhlaWdodC1kZWZhdWx0JyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtYnJlYWRjcnVtYi1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtdG9wLW1lc3NhZ2UtaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC10b3AtbWVzc2FnZS1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtdG9wLW1lc3NhZ2UtaGVpZ2h0LXNocmluaycsXG4gICAgICAgICAgICAnLS1ldWktYXBwLXRvb2xiYXItaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodC1hY3RpdmUnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWFjdGl2ZScsXG4gICAgICAgICAgICAnLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UtZGVmYXVsdCcsXG4gICAgICAgICAgICAnLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtc2lkZWJhci1oZWFkZXItaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLWhlYWRlci1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLWZvb3Rlci1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmNzc1ZhcnMgPSBjc3NWYXJOYW1lcy5tYXAoKHYpID0+ICh7IGtleTogdiwgdmFsdWU6IHRoaXMuZ2V0Q3NzVmFyVmFsdWUodikgfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0Q3NzVmFycygpIHtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1oZWFkZXItaGVpZ2h0LWRlZmF1bHQnLCAnLS1ldWktYXBwLWhlYWRlci1oZWlnaHQnKTtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1icmVhZGNydW1iLWhlaWdodC1kZWZhdWx0JywgJy0tZXVpLWFwcC1icmVhZGNydW1iLWhlaWdodCcpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXRvcC1tZXNzYWdlLWhlaWdodC1kZWZhdWx0JywgJy0tZXVpLWFwcC10b3AtbWVzc2FnZS1oZWlnaHQnKTtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodC1kZWZhdWx0JywgJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodCcpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItd2lkdGgtZGVmYXVsdCcsICctLWV1aS1hcHAtc2lkZWJhci13aWR0aCcpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UtZGVmYXVsdCcsICctLWV1aS1hcHAtc2lkZWJhci13aWR0aC1jbG9zZScpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItaGVhZGVyLWhlaWdodC1kZWZhdWx0JywgJy0tZXVpLWFwcC1zaWRlYmFyLWhlYWRlci1oZWlnaHQnKTtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1zaWRlYmFyLWZvb3Rlci1oZWlnaHQtZGVmYXVsdCcsICctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlSGVhZGVyQ3NzVmFycygpIHtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1oZWFkZXItaGVpZ2h0LWFjdGl2ZScsICctLWV1aS1hcHAtaGVhZGVyLWhlaWdodCcpO1xuICAgIH1cbiAgICBwdWJsaWMgYWN0aXZhdGVCcmVhZGNydW1iQ3NzVmFycygpIHtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1icmVhZGNydW1iLWhlaWdodC1hY3RpdmUnLCAnLS1ldWktYXBwLWJyZWFkY3J1bWItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlVG9wTWVzc2FnZUNzc1ZhcnMoaGVpZ2h0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLWFwcC10b3AtbWVzc2FnZS1oZWlnaHQnLCBgJHtoZWlnaHR9cHhgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWN0aXZhdGVUb29sYmFyQ3NzVmFycygpIHtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodC1hY3RpdmUnLCAnLS1ldWktYXBwLXRvb2xiYXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlRm9vdGVyQ3NzVmFycygpIHtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1mb290ZXItaGVpZ2h0LWFjdGl2ZScsICctLWV1aS1hcHAtZm9vdGVyLWhlaWdodCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRIZWFkZXJTaHJpbmtDc3NWYXIoYWN0aXZlOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtaGVhZGVyLWhlaWdodC1zaHJpbmsnLCAnLS1ldWktYXBwLWhlYWRlci1oZWlnaHQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtaGVhZGVyLWhlaWdodC1hY3RpdmUnLCAnLS1ldWktYXBwLWhlYWRlci1oZWlnaHQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVNpZGViYXJDc3NWYXJzKCkge1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItd2lkdGgtYWN0aXZlJywgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoJyk7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtc2lkZWJhci13aWR0aC1jbG9zZS1hY3RpdmUnLCAnLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlU2lkZWJhckNzc1ZhcnMoKSB7XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1ldWktYXBwLXNpZGViYXItaGVhZGVyLWhlaWdodCcpO1xuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXVpLWFwcC1zaWRlYmFyLWZvb3Rlci1oZWlnaHQnKTtcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWV1aS1hcHAtc2lkZWJhci13aWR0aCcpO1xuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWNsb3NlJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlU2lkZWJhckhlYWRlckNzc1ZhcnMoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtc2lkZWJhci1oZWFkZXItaGVpZ2h0LWFjdGl2ZScsICctLWV1aS1hcHAtc2lkZWJhci1oZWFkZXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlU2lkZWJhckZvb3RlckNzc1ZhcnMoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0LWFjdGl2ZScsICctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGlzcGxheXMgYSBncm93bCBVeE1lc3NhZ2UgaXRlbSwgaXNTdGlja3lcbiAgICAgKi9cbiAgICBncm93bChtc2c6IFV4TWVzc2FnZSwgaXNTdGlja3k/OiBib29sZWFuLCBpc011bHRpcGxlPzogYm9vbGVhbiwgbGlmZT86IG51bWJlciwgcG9zaXRpb24/OiBzdHJpbmcsIGNhbGxiYWNrPzogKCkgPT4gdm9pZCkge1xuICAgICAgICBpZiAobXNnLnNldmVyaXR5ICE9PSAnaW5mbycgJiYgbXNnLnNldmVyaXR5ICE9PSAnd2FybmluZycgJiYgbXNnLnNldmVyaXR5ICE9PSAnc3VjY2VzcycgJiYgbXNnLnNldmVyaXR5ICE9PSAnZGFuZ2VyJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVeEFwcFNoZWxsU2VydmljZS5ncm93bCgpIEVSUk9SIDogbWVzc2FnZSBzZXZlcml0eSBtdXN0IGJlIGVpdGhlciA6IHN1Y2Nlc3MsIHdhcm5pbmcsIGluZm8sIGRhbmdlcicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzTXVsdGlwbGUgPT09IHVuZGVmaW5lZCB8fCAhaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xNZXNzYWdlcyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ncm93bE1lc3NhZ2VzID0gdGhpcy5ncm93bE1lc3NhZ2VzLmNvbmNhdChtc2cpO1xuICAgICAgICAgICAgbXNnLmxpZmUgPSBsaWZlIHx8IG1zZy5saWZlO1xuICAgICAgICAgICAgbXNnLnN0aWNreSA9IGlzU3RpY2t5IHx8IG1zZy5zdGlja3k7XG5cbiAgICAgICAgICAgIGlmIChsaWZlID09PSB1bmRlZmluZWQgfHwgaXNOYU4obGlmZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAobXNnLnNldmVyaXR5ID09PSAnZGFuZ2VyJykge1xuICAgICAgICAgICAgICAgICAgICBpc1N0aWNreSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm93bExpZmUgPSAzMDAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm93bExpZmUgPSBsaWZlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNTdGlja3kpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzR3Jvd2xTdGlja3kgPSBpc1N0aWNreTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0dyb3dsU3RpY2t5ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm93bENhbGxiYWNrID0gKCkgPT4ge307XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhckdyb3dsKCkge1xuICAgICAgICB0aGlzLmdyb3dsTWVzc2FnZXMgPSBbXTtcbiAgICB9XG5cbiAgICBncm93bFN1Y2Nlc3MobXNnOiBzdHJpbmcsIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZ3Jvd2woeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnU1VDQ0VTUycsIGRldGFpbDogbXNnIH0sIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVkLCBwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgZ3Jvd2xFcnJvcihtc2c6IHN0cmluZywgcG9zaXRpb24/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5ncm93bCh7IHNldmVyaXR5OiAnZGFuZ2VyJywgc3VtbWFyeTogJ0VSUk9SJywgZGV0YWlsOiBtc2cgfSwgZmFsc2UsIGZhbHNlLCB1bmRlZmluZWQsIHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICAvLyBkYXRlIGhlbHBlcnNcblxuICAgIGdyb3dsV2FybmluZyhtc2c6IHN0cmluZywgcG9zaXRpb24/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5ncm93bCh7IHNldmVyaXR5OiAnd2FybmluZycsIHN1bW1hcnk6ICdXQVJOSU5HJywgZGV0YWlsOiBtc2cgfSwgZmFsc2UsIGZhbHNlLCB1bmRlZmluZWQsIHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBncm93bEluZm8obXNnOiBzdHJpbmcsIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZ3Jvd2woeyBzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiAnSU5GTycsIGRldGFpbDogbXNnIH0sIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVkLCBwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgb3Blbk1vZGFsKG1vZGFsSWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdtb2RhbC1vcGVuJyk7XG4gICAgICAgIGlmICghbW9kYWxJZCkge1xuICAgICAgICAgICAgbW9kYWxJZCA9ICdzaW5nbGVfbW9kYWwnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVNb2RhbHMucHVzaCh7XG4gICAgICAgICAgICBpZDogbW9kYWxJZCxcbiAgICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1vZGFsSWQgKyAnLWNsb3NlLWJ1dHRvbicpO1xuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgZWwuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG5cbiAgICBvcGVuTWVzc2FnZUJveChtZXNzYWdlQm94SWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCFtZXNzYWdlQm94SWQpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VCb3hJZCA9ICdtZXNzYWdlYm94X21vZGFsJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZW5Nb2RhbChtZXNzYWdlQm94SWQpO1xuICAgIH1cblxuICAgIGNsb3NlTWVzc2FnZUJveChtZXNzYWdlQm94SWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCFtZXNzYWdlQm94SWQpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VCb3hJZCA9ICdtZXNzYWdlYm94X21vZGFsJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NlTW9kYWwobWVzc2FnZUJveElkKTtcbiAgICB9XG5cbiAgICBpc01vZGFsT3Blbihtb2RhbElkPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICghbW9kYWxJZCkge1xuICAgICAgICAgICAgbW9kYWxJZCA9ICdzaW5nbGVfbW9kYWwnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU1vZGFscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCBtb2RhbEluZGV4OiBudW1iZXIgPSB0aGlzLmZpbmRNb2RhbEluZGV4KG1vZGFsSWQpO1xuICAgICAgICAgICAgaWYgKG1vZGFsSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlTW9kYWxzW21vZGFsSW5kZXhdLmlzT3BlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gUG9zaXRpb25zIGhlbHBlcnNcblxuICAgIGNsb3NlTW9kYWwobW9kYWxJZD86IHN0cmluZykge1xuICAgICAgICBpZiAoIW1vZGFsSWQpIHtcbiAgICAgICAgICAgIG1vZGFsSWQgPSAnc2luZ2xlX21vZGFsJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBNYWtlIHN1cmUgd2UgZmluZCB0aGUgbW9kYWwgYmVmb3JlIHNwbGljaW5nIHRoZSBhY3RpdmVNb2RhbHMgYXJyYXlcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maW5kTW9kYWxJbmRleChtb2RhbElkKTtcbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWxzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVNb2RhbHMgJiYgdGhpcy5hY3RpdmVNb2RhbHMubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnbW9kYWwtb3BlbicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgc3RpbGwgYW5vdGhlciAocGFyZW50KSBtb2RhbCBkaWFsb2cgb3BlbiwgZW5zdXJlIGl0IGlzIGZvY3VzZWQgdXBvbiB0byBiZSBhYmxlIHRvIGNsb3NlIGlzIHdpdGggdGhlIEVTQyBrZXk6XG4gICAgICAgICAgICBjb25zdCBsYXN0TW9kYWxJZCA9IHRoaXMuYWN0aXZlTW9kYWxzW3RoaXMuYWN0aXZlTW9kYWxzLmxlbmd0aCAtIDFdLmlkO1xuICAgICAgICAgICAgaWYgKGxhc3RNb2RhbElkKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobGFzdE1vZGFsSWQgKyAnLWNsb3NlLWJ1dHRvbicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZE1vZGFsSW5kZXgobW9kYWxJZDogc3RyaW5nKSB7XG4gICAgICAgIGxldCBpbmRleCA9IC0xO1xuXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU1vZGFscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hY3RpdmVNb2RhbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVNb2RhbHNbaV0uaWQgPT09IG1vZGFsSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gcHJpdmF0ZSBnZXR0ZXJzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tXG4gICAgcHJpdmF0ZSBnZXRDc3NWYXJWYWx1ZShpbnB1dFByb3BlcnR5KSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShpbnB1dFByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENzc1ZhcihpbnB1dFByb3BlcnR5LCBvdXRwdXRQcm9wZXJ0eSkge1xuICAgICAgICBjb25zdCBjc3NWYXJWYWx1ZSA9IHRoaXMuY3NzVmFycy5maWx0ZXIoKHYpID0+IHYua2V5ID09PSBpbnB1dFByb3BlcnR5KVswXS52YWx1ZTtcbiAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUob3V0cHV0UHJvcGVydHksIGNzc1ZhclZhbHVlKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coaW5wdXRQcm9wZXJ0eSwgb3V0cHV0UHJvcGVydHksIGNzc1ZhclZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRDc3NWYXJWYWx1ZSh2YXJOYW1lLCB2YXJWYWx1ZSkge1xuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkodmFyTmFtZSwgdmFyVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0V3JhcHBlckNsYXNzZXMoc3RhdGU6IFVJU3RhdGUsIGJyZWFrcG9pbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGNsYXNzZXMucHVzaChicmVha3BvaW50KTtcblxuICAgICAgICBpZiAoc3RhdGUuaGFzU2lkZWJhcikge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmlzU2lkZWJhck9wZW4gJiYgKHN0YXRlLmlzU2lkZWJhckFjdGl2ZSB8fCBzdGF0ZS5pc1NpZGViYXJJbm5lckFjdGl2ZSkpIHtcbiAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NpZGViYXItc3RhdGUtb3BlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdGF0ZS5pc1NpZGViYXJPcGVuICYmIChzdGF0ZS5pc1NpZGViYXJBY3RpdmUgfHwgc3RhdGUuaXNTaWRlYmFySW5uZXJBY3RpdmUpKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLXN0YXRlLWNsb3NlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhdGUuaXNTaWRlYmFyQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLWFjdGl2ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlLmlzU2lkZWJhcklubmVyQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLWlubmVyLWFjdGl2ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlLmlzU2lkZWJhclN0YXRlQ2xvc2VXaXRoSWNvbnMpIHtcbiAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NpZGViYXItc3RhdGUtY2xvc2Utd2l0aC1pY29ucycpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBORVcgQVBQLVNIRUxMIHByb3BzXG4gICAgICAgICAgICBpZiAoc3RhdGUuaXNTaWRlYmFySGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLS1oaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0ZS5pc1NpZGViYXJPcGVuKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLS1vcGVuJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnc2lkZWJhci0tY2xvc2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0ZS5pc1NpZGViYXJIb3Zlcikge1xuICAgICAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnc2lkZWJhci0taG92ZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZGV2aWNlSW5mbyAmJiBzdGF0ZS5kZXZpY2VJbmZvLmlzRkYpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnZmYnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZGV2aWNlSW5mbyAmJiBzdGF0ZS5kZXZpY2VJbmZvLmlzSUUpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnaWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZGV2aWNlSW5mbyAmJiBzdGF0ZS5kZXZpY2VJbmZvLmlzSUUxMSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdpZTExJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmRldmljZUluZm8gJiYgc3RhdGUuZGV2aWNlSW5mby5pc0Nocm9tZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdjaHJvbWUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRCcmVha3BvaW50KHdpbmRvd1dpZHRoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBsZXQgYmtwID0gJyc7XG5cbiAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBjYXNlIHdpbmRvd1dpZHRoID49IDAgJiYgd2luZG93V2lkdGggPCA1NzY6XG4gICAgICAgICAgICAgICAgYmtwID0gJ3hzJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2Ugd2luZG93V2lkdGggPj0gNTc2ICYmIHdpbmRvd1dpZHRoIDwgNzY4OlxuICAgICAgICAgICAgICAgIGJrcCA9ICdzbSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHdpbmRvd1dpZHRoID49IDc2OCAmJiB3aW5kb3dXaWR0aCA8IDk5MjpcbiAgICAgICAgICAgICAgICBia3AgPSAnbWQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSB3aW5kb3dXaWR0aCA+PSA5OTIgJiYgd2luZG93V2lkdGggPCAxMjAwOlxuICAgICAgICAgICAgICAgIGJrcCA9ICdsZyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHdpbmRvd1dpZHRoID49IDEyMDAgJiYgd2luZG93V2lkdGggPCAxNDAwOlxuICAgICAgICAgICAgICAgIGJrcCA9ICd4bCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHdpbmRvd1dpZHRoID49IDE0MDA6XG4gICAgICAgICAgICAgICAgYmtwID0gJ3h4bCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJrcDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJyZWFrcG9pbnRzKGJrcDogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlzTW9iaWxlOiBia3AgPT09ICd4cycgfHwgYmtwID09PSAnc20nLFxuICAgICAgICAgICAgaXNUYWJsZXQ6IGJrcCA9PT0gJ21kJyxcbiAgICAgICAgICAgIGlzTHREZXNrdG9wOiBia3AgPT09ICd4cycgfHwgYmtwID09PSAnc20nIHx8IGJrcCA9PT0gJ21kJyxcbiAgICAgICAgICAgIGlzRGVza3RvcDogYmtwID09PSAnbGcnLFxuICAgICAgICAgICAgaXNYTDogYmtwID09PSAneGwnLFxuICAgICAgICAgICAgaXNYWEw6IGJrcCA9PT0gJ3h4bCcsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRKc29uKHVybDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKS50b1Byb21pc2UoKS50aGVuKHRoaXMuZXh0cmFjdERhdGEpLmNhdGNoKHRoaXMuaGFuZGxlRXJyb3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdERhdGEocmVzOiBSZXNwb25zZSkge1xuICAgICAgICBjb25zdCBib2R5ID0gcmVzO1xuICAgICAgICByZXR1cm4gYm9keSB8fCB7fTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCcsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZEFjdGl2ZUxhbmd1YWdlVG9BcHBTaGVsbFN0YXRlKCkge1xuICAgICAgICB0aGlzLnN0b3JlU2VydmljZS5zZWxlY3QoZ2V0QWN0aXZlTGFuZykuc3Vic2NyaWJlKChhY3RpdmVMYW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlTGFuZyAhPT0gdGhpcy5zdGF0ZS5hY3RpdmVMYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVMYW5ndWFnZTogYWN0aXZlTGFuZyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
package/{esm2020 → esm2022}/lib/services/ux-dynamic-component/ux-dynamic-component.service.mjs
RENAMED
|
@@ -54,10 +54,10 @@ export class UxDynamicComponentService {
|
|
|
54
54
|
injectorTokens.set(DYNAMIC_COMPONENT_CONFIG, data);
|
|
55
55
|
return new PortalInjector(this.injector, injectorTokens);
|
|
56
56
|
}
|
|
57
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: UxDynamicComponentService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
58
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: UxDynamicComponentService }); }
|
|
57
59
|
}
|
|
58
|
-
|
|
59
|
-
/** @nocollapse */ UxDynamicComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: UxDynamicComponentService });
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: UxDynamicComponentService, decorators: [{
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: UxDynamicComponentService, decorators: [{
|
|
61
61
|
type: Injectable
|
|
62
62
|
}], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ApplicationRef }]; } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZHluYW1pYy1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvdXgtZHluYW1pYy1jb21wb25lbnQvdXgtZHluYW1pYy1jb21wb25lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNFLFVBQVUsRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDekksT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFpQixNQUFNLHFCQUFxQixDQUFDOztBQUV0RyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBUywwQkFBMEIsQ0FBQyxDQUFDO0FBRy9GLE1BQU0sT0FBTyx5QkFBeUI7SUFLbEMsWUFBb0Isd0JBQWtELEVBQVUsUUFBa0IsRUFBVSxNQUFzQjtRQUE5Ryw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWdCO0lBQUcsQ0FBQztJQUV0STs7Ozs7T0FLRztJQUNJLEdBQUcsQ0FBSSxTQUEyQixFQUFFLEVBQWUsRUFBRSxNQUFZO1FBQ3BFLHVIQUF1SDtRQUN2SCx5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FDakMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUNyQyxJQUFJLENBQUMsd0JBQXdCLEVBQzdCLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FDaEIsQ0FBQztRQUVGLDhFQUE4RTtRQUM5RSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFJLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRyx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuRSxJQUFJLE1BQU0sRUFBRTtZQUNSLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUNsQixhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzlCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDdEIsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjthQUMzRCxDQUFDLENBQUM7U0FDTjtRQUVELE9BQU87WUFDSCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLHVCQUF1QixFQUFFLElBQUksQ0FBQyx1QkFBdUI7U0FDeEQsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsYUFBOEI7UUFDeEMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxJQUFTO1FBQzVCLE1BQU0sY0FBYyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDckMsY0FBYyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRCxPQUFPLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0QsQ0FBQztpSUFoRVEseUJBQXlCO3FJQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBDb21wb25lbnRSZWYsIEVsZW1lbnRSZWYsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBEb21Qb3J0YWxPdXRsZXQsIFBvcnRhbEluamVjdG9yLCBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbmV4cG9ydCBjb25zdCBEWU5BTUlDX0NPTVBPTkVOVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48b2JqZWN0PignRFlOQU1JQ19DT01QT05FTlRfQ09ORklHJyk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVeER5bmFtaWNDb21wb25lbnRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHBvcnRhbEhvc3Q6IERvbVBvcnRhbE91dGxldDtcbiAgICBwcml2YXRlIHBvcnRhbDogQ29tcG9uZW50UG9ydGFsPGFueT47XG4gICAgcHJpdmF0ZSBwb3J0YWxDb21wb25lbnRJbnN0YW5jZTogQ29tcG9uZW50UmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmKSB7fVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGNvbXBvbmVudCB0byBwb3J0YWwgaG9zdCBkeW5hbWljYWxseVxuICAgICAqIEBwYXJhbSBjb21wb25lbnQgVGhlIGNvbXBvbmVudCB0byBiZSBpbmplY3RlZFxuICAgICAqIEBwYXJhbSBlbCBUaGUgZWxlbWVudCByZWZlcmVuY2UgZm9yIHRoZSBjb21wb25lbnQgdG8gYmUgaW5qZWN0ZWRcbiAgICAgKiBAcGFyYW0gY29uZmlnIFRoZSBkYXRhIHRvIGJlIHBhc3NlZCAoY29uZmlnKSBmb3IgdGhlIERZTkFNSUNfQ09NUE9ORU5UX0NPTkZJRyB0b2tlblxuICAgICAqL1xuICAgIHB1YmxpYyBhZGQ8VD4oY29tcG9uZW50OiBDb21wb25lbnRUeXBlPFQ+LCBlbD86IEVsZW1lbnRSZWYsIGNvbmZpZz86IGFueSkge1xuICAgICAgICAvLyBUT0RPOiB0YWtlIGEgbG9vayBhbmQgcmVwbGFjZSBkZXByZWNhdGVkIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy8yNDMzNFxuICAgICAgICAvLyBDcmVhdGUgYSBwb3J0YWxIb3N0IGZyb20gYSBET00gZWxlbWVudFxuICAgICAgICB0aGlzLnBvcnRhbEhvc3QgPSBuZXcgRG9tUG9ydGFsT3V0bGV0KFxuICAgICAgICAgICAgZWwgPyBlbC5uYXRpdmVFbGVtZW50IDogZG9jdW1lbnQuYm9keSxcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICAgICAgdGhpcy5hcHBSZWYsXG4gICAgICAgICAgICB0aGlzLmluamVjdG9yXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gTG9jYXRlIHRoZSBjb21wb25lbnQgZmFjdG9yeSBmb3IgdGhlIENvbXBvbmVudFRvSW5jbHVkZUR5bmFtaWNhbGx5Q29tcG9uZW50XG4gICAgICAgIHRoaXMucG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbDxUPihjb21wb25lbnQsIG51bGwsIGNvbmZpZyA/IHRoaXMuY3JlYXRlSW5qZWN0b3IoY29uZmlnKSA6IG51bGwpO1xuXG4gICAgICAgIC8vIEF0dGFjaCBwb3J0YWwgdG8gaG9zdFxuICAgICAgICB0aGlzLnBvcnRhbENvbXBvbmVudEluc3RhbmNlID0gdGhpcy5wb3J0YWxIb3N0LmF0dGFjaCh0aGlzLnBvcnRhbCk7XG5cbiAgICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihjb25maWcsIHtcbiAgICAgICAgICAgICAgICBwb3J0YWxIb3N0UmVmOiB0aGlzLnBvcnRhbEhvc3QsXG4gICAgICAgICAgICAgICAgcG9ydGFsUmVmOiB0aGlzLnBvcnRhbCxcbiAgICAgICAgICAgICAgICBwb3J0YWxDb21wb25lbnRJbnN0YW5jZVJlZjogdGhpcy5wb3J0YWxDb21wb25lbnRJbnN0YW5jZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBvcnRhbEhvc3Q6IHRoaXMucG9ydGFsSG9zdCxcbiAgICAgICAgICAgIHBvcnRhbDogdGhpcy5wb3J0YWwsXG4gICAgICAgICAgICBwb3J0YWxDb21wb25lbnRJbnN0YW5jZTogdGhpcy5wb3J0YWxDb21wb25lbnRJbnN0YW5jZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkZXRhY2hlcyBhIHBvcnRhbEhvc3RcbiAgICAgKiBAcGFyYW0gcG9ydGFsSG9zdFJlZiByZWZlcmVuY2Ugb2YgcG9ydGFsIGhvc3QgdG8gYmUgZGV0YWNoZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlKHBvcnRhbEhvc3RSZWY6IERvbVBvcnRhbE91dGxldCkge1xuICAgICAgICBwb3J0YWxIb3N0UmVmLmRldGFjaCgpO1xuXG4gICAgICAgIHRoaXMucG9ydGFsSG9zdCA9IG51bGw7XG4gICAgICAgIHRoaXMucG9ydGFsID0gbnVsbDtcbiAgICAgICAgdGhpcy5wb3J0YWxDb21wb25lbnRJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBhIGN1c3RvbSBpbmplY3RvciB0byBiZSB1c2VkIHdoZW4gcHJvdmlkaW5nIGN1c3RvbSBpbmplY3Rpb24gdG9rZW5zIHRvIGNvbXBvbmVudHMgaW5zaWRlIGEgcG9ydGFsXG4gICAgICogQHBhcmFtIGRhdGEgdG8gYmUgdXNlZCBieSBEWU5BTUlDX0NPTVBPTkVOVF9DT05GSUcgdG9rZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZUluamVjdG9yKGRhdGE6IGFueSk6IEluamVjdG9yIHtcbiAgICAgICAgY29uc3QgaW5qZWN0b3JUb2tlbnMgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICBpbmplY3RvclRva2Vucy5zZXQoRFlOQU1JQ19DT01QT05FTlRfQ09ORklHLCBkYXRhKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQb3J0YWxJbmplY3Rvcih0aGlzLmluamVjdG9yLCBpbmplY3RvclRva2Vucyk7XG4gICAgfVxufVxuIl19
|
|
@@ -54,13 +54,13 @@ export class UxDynamicMenuService {
|
|
|
54
54
|
return true;
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: UxDynamicMenuService, deps: [{ token: i1.EuiPermissionService }, { token: i2.StoreService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
58
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: UxDynamicMenuService, providedIn: 'root' }); }
|
|
57
59
|
}
|
|
58
|
-
|
|
59
|
-
/** @nocollapse */ UxDynamicMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: UxDynamicMenuService, providedIn: 'root' });
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: UxDynamicMenuService, decorators: [{
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: UxDynamicMenuService, decorators: [{
|
|
61
61
|
type: Injectable,
|
|
62
62
|
args: [{
|
|
63
63
|
providedIn: 'root',
|
|
64
64
|
}]
|
|
65
65
|
}], ctorParameters: function () { return [{ type: i1.EuiPermissionService }, { type: i2.StoreService }]; } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZHluYW1pYy1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3V4LWR5bmFtaWMtbWVudS91eC1keW5hbWljLW1lbnUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxXQUFXLENBQUM7Ozs7QUFPakQsTUFBTSxPQUFPLG9CQUFvQjtJQUc3Qiw4REFBOEQ7SUFDOUQsc0ZBQXNGO0lBQ3RGLFlBQW9CLFlBQWtDLEVBQVUsS0FBbUI7UUFBL0QsaUJBQVksR0FBWixZQUFZLENBQXNCO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUpuRixjQUFTLEdBQWUsRUFBRSxDQUFDO1FBS3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQy9DLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQ25DO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsdUJBQXVCLENBQUMsS0FBb0I7UUFDeEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDL0Q7WUFFRCw0Q0FBNEM7WUFDNUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDbEQsT0FBTyxLQUFLLENBQUM7aUJBQ2hCO2FBQ0o7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3JCLEtBQUssTUFBTSxhQUFhLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtvQkFDN0MsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRTt3QkFDN0MsT0FBTyxLQUFLLENBQUM7cUJBQ2hCO2lCQUNKO2FBQ0o7WUFFRCxnRUFBZ0U7WUFDaEUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUM1RDtZQUNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDdEIsS0FBSyxNQUFNLGNBQWMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUMvQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFO3dCQUM5QyxPQUFPLElBQUksQ0FBQztxQkFDZjtpQkFDSjtnQkFDRCw0REFBNEQ7Z0JBQzVELE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBRUQsNkRBQTZEO1lBQzdELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztpSUF0RFEsb0JBQW9CO3FJQUFwQixvQkFBb0IsY0FGakIsTUFBTTs7MkZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldFVzZXJTdGF0ZSwgVXhMaW5rIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IEV1aVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vcGVybWlzc2lvbi9wZXJtaXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmUvc3RvcmUuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFV4RHluYW1pY01lbnVTZXJ2aWNlIHtcbiAgICBtZW51TGlua3M6IEFycmF5PGFueT4gPSBbXTtcblxuICAgIC8vIFRPRE86IGl0IHNob3VsZCBiZSBtb3ZlZCBldWlzZXJ2aWNlLCBvciBpdCBzaG91bGQgYmUgc3RhdGljXG4gICAgLy8gVE9ETzogY2FuIHdlIG1vdmVkIHRoYXQgc2VydmljZSBpbnNpZGUgdGhlIG1vZHVsZSBvZiB0aGUgY29tcG9uZW50IHRoYXQncyB1c2luZyBpdD9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHV4UGVybWlzc2lvbjogRXVpUGVybWlzc2lvblNlcnZpY2UsIHByaXZhdGUgc3RvcmU6IFN0b3JlU2VydmljZSkge1xuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChnZXRVc2VyU3RhdGUpLnN1YnNjcmliZSgodXNlcikgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXIubWVudUxpbmtzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51TGlua3MgPSB1c2VyLm1lbnVMaW5rcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TWVudUxpbmtzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51TGlua3M7XG4gICAgfVxuXG4gICAgZmlsdGVyVXhMaW5rc1dpdGhSaWdodHMobGlua3M6IEFycmF5PFV4TGluaz4pOiBBcnJheTxVeExpbms+IHtcbiAgICAgICAgcmV0dXJuIGxpbmtzLmZpbHRlcigobGluaykgPT4ge1xuICAgICAgICAgICAgaWYgKGxpbmsuaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBsaW5rLmNoaWxkcmVuID0gdGhpcy5maWx0ZXJVeExpbmtzV2l0aFJpZ2h0cyhsaW5rLmNoaWxkcmVuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlIHVzZXIgaXMgZGVuaWVkIGFjY2VzczpcbiAgICAgICAgICAgIGlmIChsaW5rLmRlbmllZFJpZ2h0SWQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy51eFBlcm1pc3Npb24uY2hlY2tSaWdodChsaW5rLmRlbmllZFJpZ2h0SWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGluay5kZW5pZWRSaWdodElkcykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZGVuaWVkUmlnaHRJZCBvZiBsaW5rLmRlbmllZFJpZ2h0SWRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnV4UGVybWlzc2lvbi5jaGVja1JpZ2h0KGRlbmllZFJpZ2h0SWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRoZW4gY2hlY2sgaWYgdGhlIHVzZXIgbmVlZHMgdG8gYmUgYWxsb3dlZCBhY2Nlc3MgZXhwbGljaXRseTpcbiAgICAgICAgICAgIGlmIChsaW5rLmFsbG93ZWRSaWdodElkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXhQZXJtaXNzaW9uLmNoZWNrUmlnaHQobGluay5hbGxvd2VkUmlnaHRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGluay5hbGxvd2VkUmlnaHRJZHMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFsbG93ZWRSaWdodElkIG9mIGxpbmsuYWxsb3dlZFJpZ2h0SWRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnV4UGVybWlzc2lvbi5jaGVja1JpZ2h0KGFsbG93ZWRSaWdodElkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVXNlciBkb2Vzbid0IGhhdmUgb25lIG9mIHRoZSBhbGxvd2VkIHJpZ2h0cy4gRGVueSBhY2Nlc3M6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBY2Nlc3MgdG8gdGhlIG1lbnUgaXRlbSBpcyBub3QgZGVuaWVkLCB0aGVyZWZvcmUgYWxsb3cgaXQ6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -52,10 +52,10 @@ export class UxErrorFeedbackService {
|
|
|
52
52
|
createGlobalErrorManager() {
|
|
53
53
|
return new UxErrorManager(this, true);
|
|
54
54
|
}
|
|
55
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: UxErrorFeedbackService, deps: [{ token: i1.UxAppShellService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
56
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: UxErrorFeedbackService, providedIn: 'root' }); }
|
|
55
57
|
}
|
|
56
|
-
|
|
57
|
-
/** @nocollapse */ UxErrorFeedbackService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: UxErrorFeedbackService, providedIn: 'root' });
|
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: UxErrorFeedbackService, decorators: [{
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: UxErrorFeedbackService, decorators: [{
|
|
59
59
|
type: Injectable,
|
|
60
60
|
args: [{
|
|
61
61
|
providedIn: 'root',
|
|
@@ -96,4 +96,4 @@ export class UxErrorManager {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZXJyb3ItZmVlZGJhY2suc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvdXgtZXJyb3ItZmVlZGJhY2svdXgtZXJyb3ItZmVlZGJhY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gseUJBQXlCLEVBSXpCLDJCQUEyQixHQUM5QixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUszQyxNQUFNLE9BQU8sc0JBQXNCO0lBRy9CLFlBQW9CLFNBQTRCLEVBQVUsZ0JBQWtDO1FBQXhFLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUY1RixXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQTRCLENBQUM7SUFFOEMsQ0FBQztJQUVoRzs7T0FFRztJQUNILFlBQVksQ0FBQyxHQUF3QixFQUFFLFVBQW1CLEVBQUUsT0FBZ0IsRUFBRSxVQUFvQjtRQUM5RixJQUFJLFVBQVUsRUFBRTtZQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksMkJBQTJCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUM3RzthQUFNO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSwyQkFBMkIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FB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O0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBNkIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqSDthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUE2QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3RHO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBVeENsZWFyRXJyb3JGZWVkYmFja0V2ZW50LFxuICAgIFV4RXJyb3JGZWVkYmFjayxcbiAgICBVeEVycm9yRmVlZGJhY2tFdmVudFR5cGUsXG4gICAgVXhIdHRwRXJyb3JSZXNwb25zZSxcbiAgICBVeFB1Ymxpc2hFcnJvckZlZWRiYWNrRXZlbnQsXG59IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB3aXRoVXhFcnJvck1hbmFnZXIgfSBmcm9tICcuL3V4LWVycm9yLWhhbmRsZXIub3BlcmF0b3InO1xuaW1wb3J0IHsgVXhBcHBTaGVsbFNlcnZpY2UgfSBmcm9tICcuLi91eC1hcHAtc2hlbGwuc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFV4RXJyb3JGZWVkYmFja1NlcnZpY2Uge1xuICAgIGVycm9ycyA9IG5ldyBTdWJqZWN0PFV4RXJyb3JGZWVkYmFja0V2ZW50VHlwZT4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYXNTZXJ2aWNlOiBVeEFwcFNoZWxsU2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gICAgLyoqXG4gICAgICogIFB1Ymxpc2hlcyBlcnJvcnMgdG8gdGFyZ2V0ZWQgY29tcG9uZW50c1xuICAgICAqL1xuICAgIHB1Ymxpc2hFcnJvcihlcnI6IFV4SHR0cEVycm9yUmVzcG9uc2UsIGluc3RhbmNlSWQ/OiBzdHJpbmcsIGdyb3VwSWQ/OiBzdHJpbmcsIGFjY3VtdWxhdGU/OiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpbnN0YW5jZUlkKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9ycy5uZXh0KG5ldyBVeFB1Ymxpc2hFcnJvckZlZWRiYWNrRXZlbnQoZXJyLnV4SHR0cEVycm9yT3V0cHV0LCBpbnN0YW5jZUlkLCBncm91cElkLCBhY2N1bXVsYXRlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVycm9ycy5uZXh0KG5ldyBVeFB1Ymxpc2hFcnJvckZlZWRiYWNrRXZlbnQoZXJyLnV4SHR0cEVycm9yT3V0cHV0LCB1bmRlZmluZWQsIGdyb3VwSWQsIGFjY3VtdWxhdGUpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBHcm93bCBlcnJvcnNcbiAgICAgKi9cbiAgICBncm93bEVycm9yKGVycjogVXhIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICBjb25zdCBmZWVkQmFja3MgPSBlcnIudXhIdHRwRXJyb3JPdXRwdXQuZ2V0RmVlZEJhY2tzKCk7XG4gICAgICAgIGNvbnN0IGlzR3Jvd2xTdGlja3kgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaXNHcm93bE11bHRpcGxlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZ3Jvd2xMaWZlID0gMTAwMDA7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gJ2JvdHRvbS1yaWdodCc7XG4gICAgICAgIGZlZWRCYWNrcy5mb3JFYWNoKChmZWVkYmFjazogVXhFcnJvckZlZWRiYWNrKSA9PlxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldChmZWVkYmFjay5tc2dJZClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRyYW5zbGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFzU2VydmljZS5ncm93bChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0eTogZmVlZGJhY2suc2V2ZXJpdHkgfHwgJ2RhbmdlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeTogJ0VSUk9SJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0dyb3dsU3RpY2t5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNHcm93bE11bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3Jvd2xMaWZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNsZWFyRXJyb3IoaWQ/OiBzdHJpbmcsIGdyb3VwSWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5lcnJvcnMubmV4dChuZXcgVXhDbGVhckVycm9yRmVlZGJhY2tFdmVudChpZCwgZ3JvdXBJZCkpO1xuICAgIH1cblxuICAgIGNyZWF0ZUxvY2FsRXJyb3JNYW5hZ2VyKCk6IFV4RXJyb3JNYW5hZ2VyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBVeEVycm9yTWFuYWdlcih0aGlzKTtcbiAgICB9XG5cbiAgICBjcmVhdGVHbG9iYWxFcnJvck1hbmFnZXIoKTogVXhFcnJvck1hbmFnZXIge1xuICAgICAgICByZXR1cm4gbmV3IFV4RXJyb3JNYW5hZ2VyKHRoaXMsIHRydWUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFV4RXJyb3JNYW5hZ2VyIHtcbiAgICByZWFkb25seSBodHRwRXJyb3JPcGVyYXRvciA9IHdpdGhVeEVycm9yTWFuYWdlcih0aGlzKTtcbiAgICBwcml2YXRlIGlkID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB1eEVycm9yRmVlZGJhY2tTZXJ2aWNlOiBVeEVycm9yRmVlZGJhY2tTZXJ2aWNlLCBwcml2YXRlIGlzR2xvYmFsPzogYm9vbGVhbikge31cblxuICAgIHB1Ymxpc2hFcnJvcihlcnI6IFV4SHR0cEVycm9yUmVzcG9uc2UsIGdyb3VwSWQ/OiBzdHJpbmcsIGFjY3VtdWxhdGU/OiBib29sZWFuKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0dsb2JhbCkge1xuICAgICAgICAgICAgdGhpcy51eEVycm9yRmVlZGJhY2tTZXJ2aWNlLnB1Ymxpc2hFcnJvcihlcnIsIHRoaXMuaWQsIGdyb3VwSWQsIGFjY3VtdWxhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51eEVycm9yRmVlZGJhY2tTZXJ2aWNlLnB1Ymxpc2hFcnJvcihlcnIsIHVuZGVmaW5lZCwgZ3JvdXBJZCwgYWNjdW11bGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhckVycm9yKGdyb3VwSWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzR2xvYmFsKSB7XG4gICAgICAgICAgICB0aGlzLnV4RXJyb3JGZWVkYmFja1NlcnZpY2UuY2xlYXJFcnJvcih0aGlzLmlkLCBncm91cElkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXhFcnJvckZlZWRiYWNrU2VydmljZS5jbGVhckVycm9yKHVuZGVmaW5lZCwgZ3JvdXBJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBncm93bEVycm9yKGVycjogVXhIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICB0aGlzLnV4RXJyb3JGZWVkYmFja1NlcnZpY2UuZ3Jvd2xFcnJvcihlcnIpO1xuICAgIH1cblxuICAgIGVycm9ycygpOiBPYnNlcnZhYmxlPFV4RXJyb3JGZWVkYmFja0V2ZW50VHlwZT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNHbG9iYWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnV4RXJyb3JGZWVkYmFja1NlcnZpY2UuZXJyb3JzLnBpcGUoZmlsdGVyKChldnQ6IFV4RXJyb3JGZWVkYmFja0V2ZW50VHlwZSkgPT4gZXZ0LmlkID09PSB0aGlzLmlkKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51eEVycm9yRmVlZGJhY2tTZXJ2aWNlLmVycm9ycy5waXBlKGZpbHRlcigoZXZ0OiBVeEVycm9yRmVlZGJhY2tFdmVudFR5cGUpID0+ICFldnQuaWQpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|