@abp/ng.core 7.2.1 → 7.3.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2020 → esm2022}/abp-ng.core.mjs +4 -4
- package/esm2022/lib/abstracts/abstract-guard.mjs +2 -0
- package/{esm2020 → esm2022}/lib/abstracts/auth-response.model.mjs +1 -1
- package/esm2022/lib/abstracts/auth.guard.mjs +18 -0
- package/esm2022/lib/abstracts/auth.service.mjs +46 -0
- package/esm2022/lib/abstracts/index.mjs +6 -0
- package/esm2022/lib/abstracts/ng-model.component.mjs +60 -0
- package/esm2022/lib/clients/http.client.mjs +29 -0
- package/{esm2020 → esm2022}/lib/clients/index.mjs +1 -1
- package/esm2022/lib/components/dynamic-layout.component.mjs +101 -0
- package/{esm2020 → esm2022}/lib/components/index.mjs +3 -3
- package/esm2022/lib/components/replaceable-route-container.component.mjs +43 -0
- package/esm2022/lib/components/router-outlet.component.mjs +16 -0
- package/{esm2020 → esm2022}/lib/constants/different-locales.mjs +336 -336
- package/{esm2020 → esm2022}/lib/constants/index.mjs +1 -1
- package/esm2022/lib/core.module.mjs +285 -0
- package/esm2022/lib/directives/autofocus.directive.mjs +31 -0
- package/esm2022/lib/directives/debounce.directive.mjs +37 -0
- package/esm2022/lib/directives/for.directive.mjs +160 -0
- package/esm2022/lib/directives/form-submit.directive.mjs +78 -0
- package/{esm2020 → esm2022}/lib/directives/index.mjs +8 -8
- package/esm2022/lib/directives/init.directive.mjs +22 -0
- package/esm2022/lib/directives/permission.directive.mjs +75 -0
- package/esm2022/lib/directives/replaceable-template.directive.mjs +133 -0
- package/esm2022/lib/directives/stop-propagation.directive.mjs +33 -0
- package/{esm2020 → esm2022}/lib/enums/common.mjs +1 -1
- package/{esm2020 → esm2022}/lib/enums/index.mjs +1 -1
- package/{esm2020 → esm2022}/lib/guards/index.mjs +1 -1
- package/esm2022/lib/guards/permission.guard.mjs +41 -0
- package/esm2022/lib/handlers/routes.handler.mjs +52 -0
- package/esm2022/lib/interceptors/api.interceptor.mjs +28 -0
- package/{esm2020 → esm2022}/lib/interceptors/index.mjs +1 -1
- package/esm2022/lib/localization.module.mjs +17 -0
- package/{esm2020 → esm2022}/lib/models/auth.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/common.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/dtos.mjs +134 -134
- package/{esm2020 → esm2022}/lib/models/environment.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/index.mjs +9 -9
- package/{esm2020 → esm2022}/lib/models/localization.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/replaceable-components.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/rest.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/session.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/utility.mjs +1 -1
- package/{esm2020 → esm2022}/lib/pipes/index.mjs +7 -7
- package/esm2022/lib/pipes/localization.pipe.mjs +34 -0
- package/esm2022/lib/pipes/safe-html.pipe.mjs +24 -0
- package/esm2022/lib/pipes/short-date-time.pipe.mjs +35 -0
- package/esm2022/lib/pipes/short-date.pipe.mjs +35 -0
- package/esm2022/lib/pipes/short-time.pipe.mjs +35 -0
- package/esm2022/lib/pipes/sort.pipe.mjs +50 -0
- package/esm2022/lib/pipes/to-injector.pipe.mjs +30 -0
- package/{esm2020 → esm2022}/lib/providers/cookie-language.provider.mjs +21 -21
- package/{esm2020 → esm2022}/lib/providers/include-localization-resources.provider.mjs +5 -5
- package/{esm2020 → esm2022}/lib/providers/locale.provider.mjs +25 -25
- package/esm2022/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.mjs +28 -0
- package/{esm2020 → esm2022}/lib/proxy/pages/abp/multi-tenancy/index.mjs +1 -1
- package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.mjs +25 -0
- package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/index.mjs +1 -1
- package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.mjs +25 -0
- package/esm2022/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service.mjs +25 -0
- package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/index.mjs +5 -5
- package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.mjs +1 -1
- package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/index.mjs +1 -1
- package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.mjs +1 -1
- package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/index.mjs +1 -1
- package/{esm2020 → esm2022}/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models.mjs +1 -1
- package/{esm2020 → esm2022}/lib/proxy/volo/abp/http/modeling/index.mjs +1 -1
- package/{esm2020 → esm2022}/lib/proxy/volo/abp/http/modeling/models.mjs +1 -1
- package/{esm2020 → esm2022}/lib/proxy/volo/abp/localization/index.mjs +1 -1
- package/{esm2020 → esm2022}/lib/proxy/volo/abp/localization/models.mjs +1 -1
- package/{esm2020 → esm2022}/lib/proxy/volo/abp/models.mjs +1 -1
- package/esm2022/lib/services/config-state.service.mjs +182 -0
- package/esm2022/lib/services/content-projection.service.mjs +18 -0
- package/esm2022/lib/services/dom-insertion.service.mjs +35 -0
- package/esm2022/lib/services/environment.service.mjs +49 -0
- package/esm2022/lib/services/http-error-reporter.service.mjs +30 -0
- package/esm2022/lib/services/http-wait.service.mjs +76 -0
- package/{esm2020 → esm2022}/lib/services/index.mjs +21 -21
- package/esm2022/lib/services/lazy-load.service.mjs +41 -0
- package/esm2022/lib/services/list.service.mjs +103 -0
- package/esm2022/lib/services/local-storage.service.mjs +33 -0
- package/esm2022/lib/services/localization.service.mjs +218 -0
- package/esm2022/lib/services/multi-tenancy.service.mjs +49 -0
- package/esm2022/lib/services/permission.service.mjs +64 -0
- package/esm2022/lib/services/replaceable-components.service.mjs +50 -0
- package/esm2022/lib/services/resource-wait.service.mjs +40 -0
- package/esm2022/lib/services/rest.service.mjs +79 -0
- package/esm2022/lib/services/router-events.service.mjs +39 -0
- package/esm2022/lib/services/router-wait.service.mjs +52 -0
- package/esm2022/lib/services/routes.service.mjs +165 -0
- package/esm2022/lib/services/session-state.service.mjs +81 -0
- package/esm2022/lib/services/subscription.service.mjs +44 -0
- package/esm2022/lib/services/track-by.service.mjs +22 -0
- package/{esm2020 → esm2022}/lib/strategies/container.strategy.mjs +37 -37
- package/{esm2020 → esm2022}/lib/strategies/content-security.strategy.mjs +29 -29
- package/{esm2020 → esm2022}/lib/strategies/content.strategy.mjs +51 -51
- package/{esm2020 → esm2022}/lib/strategies/context.strategy.mjs +36 -36
- package/{esm2020 → esm2022}/lib/strategies/cross-origin.strategy.mjs +27 -27
- package/{esm2020 → esm2022}/lib/strategies/dom.strategy.mjs +26 -26
- package/{esm2020 → esm2022}/lib/strategies/index.mjs +8 -8
- package/{esm2020 → esm2022}/lib/strategies/loading.strategy.mjs +57 -57
- package/{esm2020 → esm2022}/lib/strategies/projection.strategy.mjs +79 -79
- package/{esm2020 → esm2022}/lib/tokens/app-config.token.mjs +2 -2
- package/{esm2020 → esm2022}/lib/tokens/check-authentication-state.mjs +2 -2
- package/{esm2020 → esm2022}/lib/tokens/cookie-language-key.token.mjs +4 -4
- package/{esm2020 → esm2022}/lib/tokens/http-context.token.mjs +2 -2
- package/{esm2020 → esm2022}/lib/tokens/include-localization-resources.token.mjs +2 -2
- package/{esm2020 → esm2022}/lib/tokens/index.mjs +15 -15
- package/{esm2020 → esm2022}/lib/tokens/list.token.mjs +2 -2
- package/{esm2020 → esm2022}/lib/tokens/localization.token.mjs +9 -9
- package/{esm2020 → esm2022}/lib/tokens/lodaer-delay.token.mjs +2 -2
- package/{esm2020 → esm2022}/lib/tokens/manage-profile.token.mjs +2 -2
- package/{esm2020 → esm2022}/lib/tokens/options.token.mjs +7 -7
- package/{esm2020 → esm2022}/lib/tokens/others-group.token.mjs +2 -2
- package/{esm2020 → esm2022}/lib/tokens/pipe-to-login.token.mjs +2 -2
- package/{esm2020 → esm2022}/lib/tokens/queue.token.mjs +2 -2
- package/{esm2020 → esm2022}/lib/tokens/set-token-response-to-storage.token.mjs +5 -5
- package/{esm2020 → esm2022}/lib/tokens/tenant-key.token.mjs +2 -2
- package/{esm2020 → esm2022}/lib/utils/array-utils.mjs +6 -6
- package/{esm2020 → esm2022}/lib/utils/common-utils.mjs +34 -34
- package/{esm2020 → esm2022}/lib/utils/date-extensions.mjs +5 -5
- package/{esm2020 → esm2022}/lib/utils/date-utils.mjs +12 -12
- package/{esm2020 → esm2022}/lib/utils/environment-utils.mjs +35 -35
- package/{esm2020 → esm2022}/lib/utils/factory-utils.mjs +24 -24
- package/{esm2020 → esm2022}/lib/utils/file-utils.mjs +13 -13
- package/{esm2020 → esm2022}/lib/utils/form-utils.mjs +11 -11
- package/{esm2020 → esm2022}/lib/utils/generator-utils.mjs +33 -33
- package/{esm2020 → esm2022}/lib/utils/http-utils.mjs +18 -18
- package/{esm2020 → esm2022}/lib/utils/index.mjs +20 -20
- package/{esm2020 → esm2022}/lib/utils/initial-utils.mjs +59 -59
- package/esm2022/lib/utils/internal-store-utils.mjs +37 -0
- package/{esm2020 → esm2022}/lib/utils/lazy-load-utils.mjs +39 -39
- package/{esm2020 → esm2022}/lib/utils/localization-utils.mjs +48 -48
- package/{esm2020 → esm2022}/lib/utils/multi-tenancy-utils.mjs +80 -80
- package/{esm2020 → esm2022}/lib/utils/number-utils.mjs +3 -3
- package/{esm2020 → esm2022}/lib/utils/object-utils.mjs +36 -36
- package/{esm2020 → esm2022}/lib/utils/queue.mjs +40 -40
- package/{esm2020 → esm2022}/lib/utils/route-utils.mjs +25 -25
- package/{esm2020 → esm2022}/lib/utils/string-utils.mjs +29 -29
- package/{esm2020 → esm2022}/lib/utils/tree-utils.mjs +69 -69
- package/{esm2020 → esm2022}/lib/validators/age.validator.mjs +13 -13
- package/{esm2020 → esm2022}/lib/validators/credit-card.validator.mjs +20 -20
- package/esm2022/lib/validators/index.mjs +29 -0
- package/{esm2020 → esm2022}/lib/validators/range.validator.mjs +14 -14
- package/{esm2020 → esm2022}/lib/validators/required.validator.mjs +14 -14
- package/{esm2020 → esm2022}/lib/validators/string-length.validator.mjs +14 -14
- package/esm2022/lib/validators/unique-character.validator.mjs +13 -0
- package/{esm2020 → esm2022}/lib/validators/url.validator.mjs +16 -16
- package/{esm2020 → esm2022}/lib/validators/username.validator.mjs +13 -13
- package/{esm2020 → esm2022}/locale/abp-ng.core-locale.mjs +4 -4
- package/{esm2020 → esm2022}/locale/public-api.mjs +1 -1
- package/{esm2020 → esm2022}/locale/utils/register-locale.mjs +46 -46
- package/{esm2020 → esm2022}/public-api.mjs +26 -26
- package/{esm2020 → esm2022}/testing/abp-ng.core-testing.mjs +4 -4
- package/esm2022/testing/lib/core-testing.module.mjs +68 -0
- package/{esm2020 → esm2022}/testing/lib/services/index.mjs +2 -2
- package/esm2022/testing/lib/services/mock-permission.service.mjs +36 -0
- package/esm2022/testing/lib/services/mock-rest.service.mjs +32 -0
- package/{esm2020 → esm2022}/testing/lib/utils/clear-page.util.mjs +9 -9
- package/{esm2020 → esm2022}/testing/lib/utils/index.mjs +2 -2
- package/{esm2020 → esm2022}/testing/lib/utils/wait.util.mjs +4 -4
- package/{esm2020 → esm2022}/testing/public-api.mjs +3 -3
- package/{fesm2020 → fesm2022}/abp-ng.core-locale.mjs +45 -45
- package/{fesm2020 → fesm2022}/abp-ng.core-testing.mjs +120 -120
- package/{fesm2020 → fesm2022}/abp-ng.core-testing.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/abp-ng.core.mjs +4199 -4187
- package/fesm2022/abp-ng.core.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/abstracts/abstract-guard.d.ts +5 -0
- package/lib/abstracts/auth-response.model.d.ts +10 -10
- package/lib/abstracts/auth.guard.d.ts +9 -10
- package/lib/abstracts/auth.service.d.ts +30 -30
- package/lib/abstracts/index.d.ts +5 -4
- package/lib/abstracts/ng-model.component.d.ts +25 -25
- package/lib/clients/http.client.d.ts +11 -11
- package/lib/clients/index.d.ts +1 -1
- package/lib/components/dynamic-layout.component.d.ts +28 -28
- package/lib/components/index.d.ts +3 -3
- package/lib/components/replaceable-route-container.component.d.ts +17 -17
- package/lib/components/router-outlet.component.d.ts +5 -5
- package/lib/constants/different-locales.d.ts +334 -334
- package/lib/constants/index.d.ts +1 -1
- package/lib/core.module.d.ts +57 -57
- package/lib/directives/autofocus.directive.d.ts +12 -12
- package/lib/directives/debounce.directive.d.ts +13 -13
- package/lib/directives/for.directive.d.ts +36 -36
- package/lib/directives/form-submit.directive.d.ts +23 -23
- package/lib/directives/index.d.ts +8 -8
- package/lib/directives/init.directive.d.ts +10 -10
- package/lib/directives/permission.directive.d.ts +24 -24
- package/lib/directives/replaceable-template.directive.d.ts +29 -29
- package/lib/directives/stop-propagation.directive.d.ts +12 -12
- package/lib/enums/common.d.ts +5 -5
- package/lib/enums/index.d.ts +1 -1
- package/lib/guards/index.d.ts +1 -1
- package/lib/guards/permission.guard.d.ts +16 -16
- package/lib/handlers/routes.handler.d.ts +11 -11
- package/lib/interceptors/api.interceptor.d.ts +14 -14
- package/lib/interceptors/index.d.ts +1 -1
- package/lib/localization.module.d.ts +7 -7
- package/lib/models/auth.d.ts +14 -14
- package/lib/models/common.d.ts +79 -79
- package/lib/models/dtos.d.ts +107 -107
- package/lib/models/environment.d.ts +38 -38
- package/lib/models/index.d.ts +9 -9
- package/lib/models/localization.d.ts +5 -5
- package/lib/models/replaceable-components.d.ts +45 -45
- package/lib/models/rest.d.ts +36 -36
- package/lib/models/session.d.ts +7 -7
- package/lib/models/utility.d.ts +14 -14
- package/lib/pipes/index.d.ts +7 -7
- package/lib/pipes/localization.pipe.d.ts +12 -12
- package/lib/pipes/safe-html.pipe.d.ts +9 -9
- package/lib/pipes/short-date-time.pipe.d.ts +12 -12
- package/lib/pipes/short-date.pipe.d.ts +12 -12
- package/lib/pipes/short-time.pipe.d.ts +12 -12
- package/lib/pipes/sort.pipe.d.ts +9 -9
- package/lib/pipes/to-injector.pipe.d.ts +10 -10
- package/lib/providers/cookie-language.provider.d.ts +3 -3
- package/lib/providers/include-localization-resources.provider.d.ts +2 -2
- package/lib/providers/locale.provider.d.ts +9 -9
- package/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.d.ts +12 -12
- package/lib/proxy/pages/abp/multi-tenancy/index.d.ts +1 -1
- package/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.d.ts +11 -11
- package/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/index.d.ts +1 -1
- package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.d.ts +11 -11
- package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service.d.ts +11 -11
- package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/index.d.ts +5 -5
- package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.d.ts +106 -106
- package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/index.d.ts +1 -1
- package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.d.ts +71 -71
- package/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/index.d.ts +1 -1
- package/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models.d.ts +14 -14
- package/lib/proxy/volo/abp/http/modeling/index.d.ts +1 -1
- package/lib/proxy/volo/abp/http/modeling/models.d.ts +88 -88
- package/lib/proxy/volo/abp/localization/index.d.ts +1 -1
- package/lib/proxy/volo/abp/localization/models.d.ts +7 -7
- package/lib/proxy/volo/abp/models.d.ts +4 -4
- package/lib/services/config-state.service.d.ts +379 -378
- package/lib/services/content-projection.service.d.ts +10 -10
- package/lib/services/dom-insertion.service.d.ts +10 -10
- package/lib/services/environment.service.d.ts +103 -103
- package/lib/services/http-error-reporter.service.d.ts +12 -12
- package/lib/services/http-wait.service.d.ts +30 -30
- package/lib/services/index.d.ts +21 -21
- package/lib/services/lazy-load.service.d.ts +13 -13
- package/lib/services/list.service.d.ts +39 -39
- package/lib/services/local-storage.service.d.ts +13 -13
- package/lib/services/localization.service.d.ts +54 -54
- package/lib/services/multi-tenancy.service.d.ts +22 -22
- package/lib/services/permission.service.d.ts +19 -19
- package/lib/services/replaceable-components.service.d.ts +19 -19
- package/lib/services/resource-wait.service.d.ts +15 -15
- package/lib/services/rest.service.d.ts +24 -24
- package/lib/services/router-events.service.d.ts +29 -29
- package/lib/services/router-wait.service.d.ts +20 -20
- package/lib/services/routes.service.d.ts +57 -57
- package/lib/services/session-state.service.d.ts +27 -27
- package/lib/services/subscription.service.d.ts +17 -17
- package/lib/services/track-by.service.d.ts +11 -11
- package/lib/strategies/container.strategy.d.ts +22 -22
- package/lib/strategies/content-security.strategy.d.ts +17 -17
- package/lib/strategies/content.strategy.d.ts +26 -26
- package/lib/strategies/context.strategy.d.ts +23 -23
- package/lib/strategies/cross-origin.strategy.d.ts +14 -14
- package/lib/strategies/dom.strategy.d.ts +13 -13
- package/lib/strategies/index.d.ts +8 -8
- package/lib/strategies/loading.strategy.d.ts +28 -28
- package/lib/strategies/projection.strategy.d.ts +39 -39
- package/lib/tokens/app-config.token.d.ts +3 -3
- package/lib/tokens/check-authentication-state.d.ts +3 -3
- package/lib/tokens/cookie-language-key.token.d.ts +2 -2
- package/lib/tokens/http-context.token.d.ts +2 -2
- package/lib/tokens/include-localization-resources.token.d.ts +2 -2
- package/lib/tokens/index.d.ts +15 -15
- package/lib/tokens/list.token.d.ts +2 -2
- package/lib/tokens/localization.token.d.ts +6 -6
- package/lib/tokens/lodaer-delay.token.d.ts +2 -2
- package/lib/tokens/manage-profile.token.d.ts +2 -2
- package/lib/tokens/options.token.d.ts +4 -4
- package/lib/tokens/others-group.token.d.ts +2 -2
- package/lib/tokens/pipe-to-login.token.d.ts +3 -3
- package/lib/tokens/queue.token.d.ts +3 -3
- package/lib/tokens/set-token-response-to-storage.token.d.ts +6 -6
- package/lib/tokens/tenant-key.token.d.ts +2 -2
- package/lib/utils/array-utils.d.ts +1 -1
- package/lib/utils/common-utils.d.ts +11 -11
- package/lib/utils/date-extensions.d.ts +6 -6
- package/lib/utils/date-utils.d.ts +4 -4
- package/lib/utils/environment-utils.d.ts +3 -3
- package/lib/utils/factory-utils.d.ts +11 -11
- package/lib/utils/file-utils.d.ts +1 -1
- package/lib/utils/form-utils.d.ts +2 -2
- package/lib/utils/generator-utils.d.ts +3 -3
- package/lib/utils/http-utils.d.ts +8 -8
- package/lib/utils/index.d.ts +20 -20
- package/lib/utils/initial-utils.d.ts +3 -3
- package/lib/utils/internal-store-utils.d.ts +14 -14
- package/lib/utils/lazy-load-utils.d.ts +4 -4
- package/lib/utils/localization-utils.d.ts +5 -5
- package/lib/utils/multi-tenancy-utils.d.ts +3 -3
- package/lib/utils/number-utils.d.ts +1 -1
- package/lib/utils/object-utils.d.ts +2 -2
- package/lib/utils/queue.d.ts +14 -14
- package/lib/utils/route-utils.d.ts +8 -8
- package/lib/utils/string-utils.d.ts +3 -3
- package/lib/utils/tree-utils.d.ts +26 -26
- package/lib/validators/age.validator.d.ts +10 -10
- package/lib/validators/credit-card.validator.d.ts +5 -5
- package/lib/validators/index.d.ts +28 -24
- package/lib/validators/range.validator.d.ts +12 -12
- package/lib/validators/required.validator.d.ts +8 -8
- package/lib/validators/string-length.validator.d.ts +14 -14
- package/lib/validators/unique-character.validator.d.ts +5 -0
- package/lib/validators/url.validator.d.ts +5 -5
- package/lib/validators/username.validator.d.ts +10 -10
- package/locale/index.d.ts +5 -5
- package/locale/public-api.d.ts +1 -1
- package/locale/utils/register-locale.d.ts +13 -13
- package/package.json +12 -22
- package/public-api.d.ts +25 -25
- package/testing/index.d.ts +5 -5
- package/testing/lib/core-testing.module.d.ts +16 -16
- package/testing/lib/services/index.d.ts +2 -2
- package/testing/lib/services/mock-permission.service.d.ts +10 -10
- package/testing/lib/services/mock-rest.service.d.ts +14 -14
- package/testing/lib/utils/clear-page.util.d.ts +2 -2
- package/testing/lib/utils/index.d.ts +2 -2
- package/testing/lib/utils/wait.util.d.ts +2 -2
- package/testing/public-api.d.ts +3 -3
- package/esm2020/lib/abstracts/auth.guard.mjs +0 -17
- package/esm2020/lib/abstracts/auth.service.mjs +0 -45
- package/esm2020/lib/abstracts/index.mjs +0 -5
- package/esm2020/lib/abstracts/ng-model.component.mjs +0 -59
- package/esm2020/lib/clients/http.client.mjs +0 -34
- package/esm2020/lib/components/dynamic-layout.component.mjs +0 -100
- package/esm2020/lib/components/replaceable-route-container.component.mjs +0 -42
- package/esm2020/lib/components/router-outlet.component.mjs +0 -15
- package/esm2020/lib/core.module.mjs +0 -282
- package/esm2020/lib/directives/autofocus.directive.mjs +0 -30
- package/esm2020/lib/directives/debounce.directive.mjs +0 -36
- package/esm2020/lib/directives/for.directive.mjs +0 -159
- package/esm2020/lib/directives/form-submit.directive.mjs +0 -77
- package/esm2020/lib/directives/init.directive.mjs +0 -21
- package/esm2020/lib/directives/permission.directive.mjs +0 -74
- package/esm2020/lib/directives/replaceable-template.directive.mjs +0 -132
- package/esm2020/lib/directives/stop-propagation.directive.mjs +0 -32
- package/esm2020/lib/guards/permission.guard.mjs +0 -44
- package/esm2020/lib/handlers/routes.handler.mjs +0 -51
- package/esm2020/lib/interceptors/api.interceptor.mjs +0 -27
- package/esm2020/lib/localization.module.mjs +0 -16
- package/esm2020/lib/pipes/localization.pipe.mjs +0 -33
- package/esm2020/lib/pipes/safe-html.pipe.mjs +0 -23
- package/esm2020/lib/pipes/short-date-time.pipe.mjs +0 -34
- package/esm2020/lib/pipes/short-date.pipe.mjs +0 -34
- package/esm2020/lib/pipes/short-time.pipe.mjs +0 -34
- package/esm2020/lib/pipes/sort.pipe.mjs +0 -49
- package/esm2020/lib/pipes/to-injector.pipe.mjs +0 -29
- package/esm2020/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.mjs +0 -27
- package/esm2020/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.mjs +0 -24
- package/esm2020/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.mjs +0 -24
- package/esm2020/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-localization.service.mjs +0 -24
- package/esm2020/lib/services/config-state.service.mjs +0 -178
- package/esm2020/lib/services/content-projection.service.mjs +0 -17
- package/esm2020/lib/services/dom-insertion.service.mjs +0 -34
- package/esm2020/lib/services/environment.service.mjs +0 -48
- package/esm2020/lib/services/http-error-reporter.service.mjs +0 -29
- package/esm2020/lib/services/http-wait.service.mjs +0 -75
- package/esm2020/lib/services/lazy-load.service.mjs +0 -40
- package/esm2020/lib/services/list.service.mjs +0 -102
- package/esm2020/lib/services/local-storage.service.mjs +0 -32
- package/esm2020/lib/services/localization.service.mjs +0 -217
- package/esm2020/lib/services/multi-tenancy.service.mjs +0 -48
- package/esm2020/lib/services/permission.service.mjs +0 -63
- package/esm2020/lib/services/replaceable-components.service.mjs +0 -49
- package/esm2020/lib/services/resource-wait.service.mjs +0 -39
- package/esm2020/lib/services/rest.service.mjs +0 -78
- package/esm2020/lib/services/router-events.service.mjs +0 -38
- package/esm2020/lib/services/router-wait.service.mjs +0 -51
- package/esm2020/lib/services/routes.service.mjs +0 -163
- package/esm2020/lib/services/session-state.service.mjs +0 -80
- package/esm2020/lib/services/subscription.service.mjs +0 -43
- package/esm2020/lib/services/track-by.service.mjs +0 -21
- package/esm2020/lib/utils/internal-store-utils.mjs +0 -37
- package/esm2020/lib/validators/index.mjs +0 -25
- package/esm2020/testing/lib/core-testing.module.mjs +0 -67
- package/esm2020/testing/lib/services/mock-permission.service.mjs +0 -35
- package/esm2020/testing/lib/services/mock-rest.service.mjs +0 -31
- package/fesm2015/abp-ng.core-locale.mjs +0 -57
- package/fesm2015/abp-ng.core-locale.mjs.map +0 -1
- package/fesm2015/abp-ng.core-testing.mjs +0 -146
- package/fesm2015/abp-ng.core-testing.mjs.map +0 -1
- package/fesm2015/abp-ng.core.mjs +0 -4460
- package/fesm2015/abp-ng.core.mjs.map +0 -1
- package/fesm2020/abp-ng.core.mjs.map +0 -1
- package/src/lib/proxy/README.md +0 -17
- /package/{fesm2020 → fesm2022}/abp-ng.core-locale.mjs.map +0 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Injectable, Injector } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, of, ReplaySubject, Subject, } from 'rxjs';
|
|
3
|
+
import { catchError, debounceTime, filter, shareReplay, switchMap, takeUntil, tap, } from 'rxjs/operators';
|
|
4
|
+
import { LIST_QUERY_DEBOUNCE_TIME } from '../tokens/list.token';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
class ListService {
|
|
7
|
+
set filter(value) {
|
|
8
|
+
this._filter = value;
|
|
9
|
+
this.get();
|
|
10
|
+
}
|
|
11
|
+
get filter() {
|
|
12
|
+
return this._filter;
|
|
13
|
+
}
|
|
14
|
+
set maxResultCount(value) {
|
|
15
|
+
this._maxResultCount = value;
|
|
16
|
+
this.get();
|
|
17
|
+
}
|
|
18
|
+
get maxResultCount() {
|
|
19
|
+
return this._maxResultCount;
|
|
20
|
+
}
|
|
21
|
+
set page(value) {
|
|
22
|
+
if (value === this._page)
|
|
23
|
+
return;
|
|
24
|
+
this._page = value;
|
|
25
|
+
this.get();
|
|
26
|
+
}
|
|
27
|
+
get page() {
|
|
28
|
+
return this._page;
|
|
29
|
+
}
|
|
30
|
+
set sortKey(value) {
|
|
31
|
+
this._sortKey = value;
|
|
32
|
+
this.get();
|
|
33
|
+
}
|
|
34
|
+
get sortKey() {
|
|
35
|
+
return this._sortKey;
|
|
36
|
+
}
|
|
37
|
+
set sortOrder(value) {
|
|
38
|
+
this._sortOrder = value;
|
|
39
|
+
this.get();
|
|
40
|
+
}
|
|
41
|
+
get sortOrder() {
|
|
42
|
+
return this._sortOrder;
|
|
43
|
+
}
|
|
44
|
+
get query$() {
|
|
45
|
+
return this._query$
|
|
46
|
+
.asObservable()
|
|
47
|
+
.pipe(this.delay, shareReplay({ bufferSize: 1, refCount: true }));
|
|
48
|
+
}
|
|
49
|
+
get isLoading$() {
|
|
50
|
+
return this._isLoading$.asObservable();
|
|
51
|
+
}
|
|
52
|
+
constructor(injector) {
|
|
53
|
+
this._filter = '';
|
|
54
|
+
this._maxResultCount = 10;
|
|
55
|
+
this._skipCount = 0;
|
|
56
|
+
this._page = 0;
|
|
57
|
+
this._sortKey = '';
|
|
58
|
+
this._sortOrder = '';
|
|
59
|
+
this._query$ = new ReplaySubject(1);
|
|
60
|
+
this._isLoading$ = new BehaviorSubject(false);
|
|
61
|
+
this.destroy$ = new Subject();
|
|
62
|
+
this.get = () => {
|
|
63
|
+
this.resetPageWhenUnchanged();
|
|
64
|
+
this.next();
|
|
65
|
+
};
|
|
66
|
+
this.getWithoutPageReset = () => {
|
|
67
|
+
this.next();
|
|
68
|
+
};
|
|
69
|
+
const delay = injector.get(LIST_QUERY_DEBOUNCE_TIME, 300);
|
|
70
|
+
this.delay = delay ? debounceTime(delay) : tap();
|
|
71
|
+
this.get();
|
|
72
|
+
}
|
|
73
|
+
hookToQuery(streamCreatorCallback) {
|
|
74
|
+
return this.query$.pipe(tap(() => this._isLoading$.next(true)), switchMap(query => streamCreatorCallback(query).pipe(catchError(() => of(null)))), filter(Boolean), tap(() => this._isLoading$.next(false)), shareReplay({ bufferSize: 1, refCount: true }), takeUntil(this.destroy$));
|
|
75
|
+
}
|
|
76
|
+
ngOnDestroy() {
|
|
77
|
+
this.destroy$.next();
|
|
78
|
+
}
|
|
79
|
+
resetPageWhenUnchanged() {
|
|
80
|
+
const skipCount = this._page * this._maxResultCount;
|
|
81
|
+
if (skipCount === this._skipCount) {
|
|
82
|
+
this._page = 0;
|
|
83
|
+
this._skipCount = 0;
|
|
84
|
+
}
|
|
85
|
+
else
|
|
86
|
+
this._skipCount = skipCount;
|
|
87
|
+
}
|
|
88
|
+
next() {
|
|
89
|
+
this._query$.next({
|
|
90
|
+
filter: this._filter || undefined,
|
|
91
|
+
maxResultCount: this._maxResultCount,
|
|
92
|
+
skipCount: this._page * this._maxResultCount,
|
|
93
|
+
sorting: this._sortOrder ? `${this._sortKey} ${this._sortOrder}` : undefined,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ListService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
97
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ListService }); }
|
|
98
|
+
}
|
|
99
|
+
export { ListService };
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ListService, decorators: [{
|
|
101
|
+
type: Injectable
|
|
102
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL2xpc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsZUFBZSxFQUdmLEVBQUUsRUFDRixhQUFhLEVBQ2IsT0FBTyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUVoRSxNQUNhLFdBQVc7SUFFdEIsSUFBSSxNQUFNLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDYixDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFHRCxJQUFJLGNBQWMsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFDRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFJRCxJQUFJLElBQUksQ0FBQyxLQUFhO1FBQ3BCLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUVqQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFD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QUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUVwRCxJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7U0FDckI7O1lBQU0sSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDckMsQ0FBQztJQUVPLElBQUk7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxTQUFTO1lBQ2pDLGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNwQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZTtZQUM1QyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNuRCxDQUFDLENBQUM7SUFDL0IsQ0FBQzs4R0FuSFUsV0FBVztrSEFBWCxXQUFXOztTQUFYLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBCZWhhdmlvclN1YmplY3QsXHJcbiAgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLFxyXG4gIE9ic2VydmFibGUsXHJcbiAgb2YsXHJcbiAgUmVwbGF5U3ViamVjdCxcclxuICBTdWJqZWN0LFxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIGNhdGNoRXJyb3IsXHJcbiAgZGVib3VuY2VUaW1lLFxyXG4gIGZpbHRlcixcclxuICBzaGFyZVJlcGxheSxcclxuICBzd2l0Y2hNYXAsXHJcbiAgdGFrZVVudGlsLFxyXG4gIHRhcCxcclxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFCUCB9IGZyb20gJy4uL21vZGVscy9jb21tb24nO1xyXG5pbXBvcnQgeyBQYWdlZFJlc3VsdER0byB9IGZyb20gJy4uL21vZGVscy9kdG9zJztcclxuaW1wb3J0IHsgTElTVF9RVUVSWV9ERUJPVU5DRV9USU1FIH0gZnJvbSAnLi4vdG9rZW5zL2xpc3QudG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTGlzdFNlcnZpY2U8UXVlcnlQYXJhbXNUeXBlID0gQUJQLlBhZ2VRdWVyeVBhcmFtcyB8IGFueT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2ZpbHRlciA9ICcnO1xyXG4gIHNldCBmaWx0ZXIodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fZmlsdGVyID0gdmFsdWU7XHJcbiAgICB0aGlzLmdldCgpO1xyXG4gIH1cclxuICBnZXQgZmlsdGVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbWF4UmVzdWx0Q291bnQgPSAxMDtcclxuICBzZXQgbWF4UmVzdWx0Q291bnQodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fbWF4UmVzdWx0Q291bnQgPSB2YWx1ZTtcclxuICAgIHRoaXMuZ2V0KCk7XHJcbiAgfVxyXG4gIGdldCBtYXhSZXN1bHRDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX21heFJlc3VsdENvdW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2tpcENvdW50ID0gMDtcclxuICBwcml2YXRlIF9wYWdlID0gMDtcclxuICBzZXQgcGFnZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuX3BhZ2UpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9wYWdlID0gdmFsdWU7XHJcbiAgICB0aGlzLmdldCgpO1xyXG4gIH1cclxuICBnZXQgcGFnZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhZ2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zb3J0S2V5ID0gJyc7XHJcbiAgc2V0IHNvcnRLZXkodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fc29ydEtleSA9IHZhbHVlO1xyXG4gICAgdGhpcy5nZXQoKTtcclxuICB9XHJcbiAgZ2V0IHNvcnRLZXkoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zb3J0S2V5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc29ydE9yZGVyID0gJyc7XHJcbiAgc2V0IHNvcnRPcmRlcih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zb3J0T3JkZXIgPSB2YWx1ZTtcclxuICAgIHRoaXMuZ2V0KCk7XHJcbiAgfVxyXG4gIGdldCBzb3J0T3JkZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zb3J0T3JkZXI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9xdWVyeSQgPSBuZXcgUmVwbGF5U3ViamVjdDxRdWVyeVBhcmFtc1R5cGU+KDEpO1xyXG5cclxuICBnZXQgcXVlcnkkKCk6IE9ic2VydmFibGU8UXVlcnlQYXJhbXNUeXBlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcXVlcnkkXHJcbiAgICAgIC5hc09ic2VydmFibGUoKVxyXG4gICAgICAucGlwZSh0aGlzLmRlbGF5LCBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHByaXZhdGUgZGVsYXk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxRdWVyeVBhcmFtc1R5cGU+O1xyXG5cclxuICBnZXQgaXNMb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5yZXNldFBhZ2VXaGVuVW5jaGFuZ2VkKCk7XHJcbiAgICB0aGlzLm5leHQoKTtcclxuICB9O1xyXG5cclxuICBnZXRXaXRob3V0UGFnZVJlc2V0ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5uZXh0KCk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICBjb25zdCBkZWxheSA9IGluamVjdG9yLmdldChMSVNUX1FVRVJZX0RFQk9VTkNFX1RJTUUsIDMwMCk7XHJcbiAgICB0aGlzLmRlbGF5ID0gZGVsYXkgPyBkZWJvdW5jZVRpbWUoZGVsYXkpIDogdGFwKCk7XHJcbiAgICB0aGlzLmdldCgpO1xyXG4gIH1cclxuXHJcbiAgaG9va1RvUXVlcnk8VD4oXHJcbiAgICBzdHJlYW1DcmVhdG9yQ2FsbGJhY2s6IFF1ZXJ5U3RyZWFtQ3JlYXRvckNhbGxiYWNrPFQsIFF1ZXJ5UGFyYW1zVHlwZT4sXHJcbiAgKTogT2JzZXJ2YWJsZTxQYWdlZFJlc3VsdER0bzxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMucXVlcnkkLnBpcGUoXHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLl9pc0xvYWRpbmckLm5leHQodHJ1ZSkpLFxyXG4gICAgICBzd2l0Y2hNYXAocXVlcnkgPT4gc3RyZWFtQ3JlYXRvckNhbGxiYWNrKHF1ZXJ5KS5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpKSksXHJcbiAgICAgIGZpbHRlcihCb29sZWFuKSxcclxuICAgICAgdGFwKCgpID0+IHRoaXMuX2lzTG9hZGluZyQubmV4dChmYWxzZSkpLFxyXG4gICAgICBzaGFyZVJlcGxheTxhbnk+KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldFBhZ2VXaGVuVW5jaGFuZ2VkKCkge1xyXG4gICAgY29uc3Qgc2tpcENvdW50ID0gdGhpcy5fcGFnZSAqIHRoaXMuX21heFJlc3VsdENvdW50O1xyXG5cclxuICAgIGlmIChza2lwQ291bnQgPT09IHRoaXMuX3NraXBDb3VudCkge1xyXG4gICAgICB0aGlzLl9wYWdlID0gMDtcclxuICAgICAgdGhpcy5fc2tpcENvdW50ID0gMDtcclxuICAgIH0gZWxzZSB0aGlzLl9za2lwQ291bnQgPSBza2lwQ291bnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5leHQoKSB7XHJcbiAgICB0aGlzLl9xdWVyeSQubmV4dCh7XHJcbiAgICAgIGZpbHRlcjogdGhpcy5fZmlsdGVyIHx8IHVuZGVmaW5lZCxcclxuICAgICAgbWF4UmVzdWx0Q291bnQ6IHRoaXMuX21heFJlc3VsdENvdW50LFxyXG4gICAgICBza2lwQ291bnQ6IHRoaXMuX3BhZ2UgKiB0aGlzLl9tYXhSZXN1bHRDb3VudCxcclxuICAgICAgc29ydGluZzogdGhpcy5fc29ydE9yZGVyID8gYCR7dGhpcy5fc29ydEtleX0gJHt0aGlzLl9zb3J0T3JkZXJ9YCA6IHVuZGVmaW5lZCxcclxuICAgIH0gYXMgYW55IGFzIFF1ZXJ5UGFyYW1zVHlwZSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBRdWVyeVN0cmVhbUNyZWF0b3JDYWxsYmFjazxULCBRdWVyeVBhcmFtc1R5cGUgPSBBQlAuUGFnZVF1ZXJ5UGFyYW1zPiA9IChcclxuICBxdWVyeTogUXVlcnlQYXJhbXNUeXBlLFxyXG4pID0+IE9ic2VydmFibGU8UGFnZWRSZXN1bHREdG88VD4+O1xyXG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
class AbpLocalStorageService {
|
|
4
|
+
constructor() { }
|
|
5
|
+
get length() {
|
|
6
|
+
return localStorage.length;
|
|
7
|
+
}
|
|
8
|
+
clear() {
|
|
9
|
+
localStorage.clear();
|
|
10
|
+
}
|
|
11
|
+
getItem(key) {
|
|
12
|
+
return localStorage.getItem(key);
|
|
13
|
+
}
|
|
14
|
+
key(index) {
|
|
15
|
+
return localStorage.key(index);
|
|
16
|
+
}
|
|
17
|
+
removeItem(key) {
|
|
18
|
+
localStorage.removeItem(key);
|
|
19
|
+
}
|
|
20
|
+
setItem(key, value) {
|
|
21
|
+
localStorage.setItem(key, value);
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpLocalStorageService, providedIn: 'root' }); }
|
|
25
|
+
}
|
|
26
|
+
export { AbpLocalStorageService };
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AbpLocalStorageService, decorators: [{
|
|
28
|
+
type: Injectable,
|
|
29
|
+
args: [{
|
|
30
|
+
providedIn: 'root',
|
|
31
|
+
}]
|
|
32
|
+
}], ctorParameters: function () { return []; } });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUdhLHNCQUFzQjtJQUNqQyxnQkFBZSxDQUFDO0lBRWhCLElBQUksTUFBTTtRQUNSLE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSztRQUNILFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQVc7UUFDakIsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxHQUFHLENBQUMsS0FBYTtRQUNmLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLEdBQVc7UUFDcEIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQ2hDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7OEdBckJVLHNCQUFzQjtrSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07O1NBRVAsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFicExvY2FsU3RvcmFnZVNlcnZpY2UgaW1wbGVtZW50cyBTdG9yYWdlIHtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcbiAgW25hbWU6IHN0cmluZ106IGFueTtcclxuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGNsZWFyKCk6IHZvaWQge1xyXG4gICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgfVxyXG4gIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XHJcbiAgfVxyXG4gIGtleShpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2Uua2V5KGluZGV4KTtcclxuICB9XHJcbiAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICB9XHJcbiAgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { registerLocaleData } from '@angular/common';
|
|
2
|
+
import { Injectable, Injector, isDevMode, Optional, SkipSelf } from '@angular/core';
|
|
3
|
+
import { BehaviorSubject, combineLatest, from, Subject } from 'rxjs';
|
|
4
|
+
import { filter, map, switchMap } from 'rxjs/operators';
|
|
5
|
+
import { localizations$ } from '../tokens/localization.token';
|
|
6
|
+
import { CORE_OPTIONS } from '../tokens/options.token';
|
|
7
|
+
import { createLocalizer, createLocalizerWithFallback } from '../utils/localization-utils';
|
|
8
|
+
import { interpolate } from '../utils/string-utils';
|
|
9
|
+
import { ConfigStateService } from './config-state.service';
|
|
10
|
+
import { SessionStateService } from './session-state.service';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "./session-state.service";
|
|
13
|
+
import * as i2 from "./config-state.service";
|
|
14
|
+
class LocalizationService {
|
|
15
|
+
/**
|
|
16
|
+
* Returns currently selected language
|
|
17
|
+
* Even though this looks like it's redundant to return the same value as `getLanguage()`,
|
|
18
|
+
* it's actually not. This could be invoked any time, and the latestLang could be different from the
|
|
19
|
+
* sessionState.getLanguage() value.
|
|
20
|
+
*/
|
|
21
|
+
get currentLang() {
|
|
22
|
+
return this.latestLang || this.sessionState.getLanguage();
|
|
23
|
+
}
|
|
24
|
+
get currentLang$() {
|
|
25
|
+
return this.sessionState.getLanguage$();
|
|
26
|
+
}
|
|
27
|
+
get languageChange$() {
|
|
28
|
+
return this._languageChange$.asObservable();
|
|
29
|
+
}
|
|
30
|
+
constructor(sessionState, injector, otherInstance, configState) {
|
|
31
|
+
this.sessionState = sessionState;
|
|
32
|
+
this.injector = injector;
|
|
33
|
+
this.configState = configState;
|
|
34
|
+
this.latestLang = this.sessionState.getLanguage();
|
|
35
|
+
this._languageChange$ = new Subject();
|
|
36
|
+
this.uiLocalizations$ = new BehaviorSubject(new Map());
|
|
37
|
+
this.localizations$ = new BehaviorSubject(new Map());
|
|
38
|
+
if (otherInstance)
|
|
39
|
+
throw new Error('LocalizationService should have only one instance.');
|
|
40
|
+
this.listenToSetLanguage();
|
|
41
|
+
this.initLocalizationValues();
|
|
42
|
+
}
|
|
43
|
+
initLocalizationValues() {
|
|
44
|
+
localizations$.subscribe(val => this.addLocalization(val));
|
|
45
|
+
const legacyResources$ = this.configState.getDeep$('localization.values');
|
|
46
|
+
const remoteLocalizations$ = this.configState.getDeep$('localization.resources');
|
|
47
|
+
const currentLanguage$ = this.sessionState.getLanguage$();
|
|
48
|
+
const uiLocalizations$ = combineLatest([currentLanguage$, this.uiLocalizations$]).pipe(map(([currentLang, localizations]) => localizations.get(currentLang)));
|
|
49
|
+
combineLatest([legacyResources$, remoteLocalizations$, uiLocalizations$])
|
|
50
|
+
.pipe(map(([legacy, resource, local]) => {
|
|
51
|
+
if (!resource) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const remote = combineLegacyandNewResources(legacy || {}, resource);
|
|
55
|
+
if (remote) {
|
|
56
|
+
if (!local) {
|
|
57
|
+
local = new Map();
|
|
58
|
+
}
|
|
59
|
+
Object.entries(remote).forEach(entry => {
|
|
60
|
+
const resourceName = entry[0];
|
|
61
|
+
const remoteTexts = entry[1];
|
|
62
|
+
let resource = local?.get(resourceName) || {};
|
|
63
|
+
resource = { ...resource, ...remoteTexts };
|
|
64
|
+
local?.set(resourceName, resource);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return local;
|
|
68
|
+
}), filter(Boolean))
|
|
69
|
+
.subscribe(val => this.localizations$.next(val));
|
|
70
|
+
}
|
|
71
|
+
addLocalization(localizations) {
|
|
72
|
+
if (!localizations)
|
|
73
|
+
return;
|
|
74
|
+
const localizationMap = this.uiLocalizations$.value;
|
|
75
|
+
localizations.forEach(loc => {
|
|
76
|
+
const cultureMap = localizationMap.get(loc.culture) || new Map();
|
|
77
|
+
loc.resources.forEach(res => {
|
|
78
|
+
let resource = cultureMap.get(res.resourceName) || {};
|
|
79
|
+
resource = { ...resource, ...res.texts };
|
|
80
|
+
cultureMap.set(res.resourceName, resource);
|
|
81
|
+
});
|
|
82
|
+
localizationMap.set(loc.culture, cultureMap);
|
|
83
|
+
});
|
|
84
|
+
this.uiLocalizations$.next(localizationMap);
|
|
85
|
+
}
|
|
86
|
+
listenToSetLanguage() {
|
|
87
|
+
this.sessionState
|
|
88
|
+
.onLanguageChange$()
|
|
89
|
+
.pipe(filter(lang => this.configState.getDeep('localization.currentCulture.cultureName') !== lang), switchMap(lang => this.configState.refreshAppState().pipe(map(() => lang))), filter(Boolean), switchMap(lang => from(this.registerLocale(lang).then(() => lang))))
|
|
90
|
+
.subscribe(lang => this._languageChange$.next(lang));
|
|
91
|
+
}
|
|
92
|
+
registerLocale(locale) {
|
|
93
|
+
const { registerLocaleFn } = this.injector.get(CORE_OPTIONS);
|
|
94
|
+
return registerLocaleFn(locale).then(module => {
|
|
95
|
+
if (module?.default)
|
|
96
|
+
registerLocaleData(module.default);
|
|
97
|
+
this.latestLang = locale;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Returns an observable localized text with the given interpolation parameters in current language.
|
|
102
|
+
* @param key Localizaton key to replace with localized text
|
|
103
|
+
* @param interpolateParams Values to interpolate
|
|
104
|
+
*/
|
|
105
|
+
get(key, ...interpolateParams) {
|
|
106
|
+
return this.configState
|
|
107
|
+
.getAll$()
|
|
108
|
+
.pipe(map(state => this.getLocalization(state, key, ...interpolateParams)));
|
|
109
|
+
}
|
|
110
|
+
getResource(resourceName) {
|
|
111
|
+
return this.localizations$.value.get(resourceName);
|
|
112
|
+
}
|
|
113
|
+
getResource$(resourceName) {
|
|
114
|
+
return this.localizations$.pipe(map(res => res.get(resourceName)));
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Returns localized text with the given interpolation parameters in current language.
|
|
118
|
+
* @param key Localization key to replace with localized text
|
|
119
|
+
* @param interpolateParams Values to intepolate.
|
|
120
|
+
*/
|
|
121
|
+
instant(key, ...interpolateParams) {
|
|
122
|
+
return this.getLocalization(this.configState.getAll(), key, ...interpolateParams);
|
|
123
|
+
}
|
|
124
|
+
localize(resourceName, key, defaultValue) {
|
|
125
|
+
return this.configState.getOne$('localization').pipe(map(createLocalizer), map(localize => localize(resourceName, key, defaultValue)));
|
|
126
|
+
}
|
|
127
|
+
localizeSync(resourceName, key, defaultValue) {
|
|
128
|
+
const localization = this.configState.getOne('localization');
|
|
129
|
+
return createLocalizer(localization)(resourceName, key, defaultValue);
|
|
130
|
+
}
|
|
131
|
+
localizeWithFallback(resourceNames, keys, defaultValue) {
|
|
132
|
+
return this.configState.getOne$('localization').pipe(map(createLocalizerWithFallback), map(localizeWithFallback => localizeWithFallback(resourceNames, keys, defaultValue)));
|
|
133
|
+
}
|
|
134
|
+
localizeWithFallbackSync(resourceNames, keys, defaultValue) {
|
|
135
|
+
const localization = this.configState.getOne('localization');
|
|
136
|
+
return createLocalizerWithFallback(localization)(resourceNames, keys, defaultValue);
|
|
137
|
+
}
|
|
138
|
+
getLocalization(state, key, ...interpolateParams) {
|
|
139
|
+
if (!key)
|
|
140
|
+
key = '';
|
|
141
|
+
let defaultValue = '';
|
|
142
|
+
if (typeof key !== 'string') {
|
|
143
|
+
defaultValue = key.defaultValue;
|
|
144
|
+
key = key.key;
|
|
145
|
+
}
|
|
146
|
+
const keys = key.split('::');
|
|
147
|
+
const warn = (message) => {
|
|
148
|
+
if (isDevMode())
|
|
149
|
+
console.warn(message);
|
|
150
|
+
};
|
|
151
|
+
if (keys.length < 2) {
|
|
152
|
+
warn('The localization source separator (::) not found.');
|
|
153
|
+
return defaultValue || key;
|
|
154
|
+
}
|
|
155
|
+
if (!state.localization)
|
|
156
|
+
return defaultValue || keys[1];
|
|
157
|
+
const sourceName = keys[0] || state.localization.defaultResourceName;
|
|
158
|
+
const sourceKey = keys[1];
|
|
159
|
+
if (sourceName === '_') {
|
|
160
|
+
return defaultValue || sourceKey;
|
|
161
|
+
}
|
|
162
|
+
if (!sourceName) {
|
|
163
|
+
warn('Localization source name is not specified and the defaultResourceName was not defined!');
|
|
164
|
+
return defaultValue || sourceKey;
|
|
165
|
+
}
|
|
166
|
+
const source = this.localizations$.value.get(sourceName);
|
|
167
|
+
if (!source) {
|
|
168
|
+
warn('Could not find localization source: ' + sourceName);
|
|
169
|
+
return defaultValue || sourceKey;
|
|
170
|
+
}
|
|
171
|
+
let localization = source[sourceKey];
|
|
172
|
+
if (typeof localization === 'undefined') {
|
|
173
|
+
return defaultValue || sourceKey;
|
|
174
|
+
}
|
|
175
|
+
interpolateParams = interpolateParams.filter(params => params != null);
|
|
176
|
+
if (localization)
|
|
177
|
+
localization = interpolate(localization, interpolateParams);
|
|
178
|
+
if (typeof localization !== 'string')
|
|
179
|
+
localization = '';
|
|
180
|
+
return localization || defaultValue || key;
|
|
181
|
+
}
|
|
182
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LocalizationService, deps: [{ token: i1.SessionStateService }, { token: i0.Injector }, { token: LocalizationService, optional: true, skipSelf: true }, { token: i2.ConfigStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
183
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LocalizationService, providedIn: 'root' }); }
|
|
184
|
+
}
|
|
185
|
+
export { LocalizationService };
|
|
186
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LocalizationService, decorators: [{
|
|
187
|
+
type: Injectable,
|
|
188
|
+
args: [{ providedIn: 'root' }]
|
|
189
|
+
}], ctorParameters: function () { return [{ type: i1.SessionStateService }, { type: i0.Injector }, { type: LocalizationService, decorators: [{
|
|
190
|
+
type: Optional
|
|
191
|
+
}, {
|
|
192
|
+
type: SkipSelf
|
|
193
|
+
}] }, { type: i2.ConfigStateService }]; } });
|
|
194
|
+
function recursivelyMergeBaseResources(baseResourceName, source) {
|
|
195
|
+
const item = source[baseResourceName];
|
|
196
|
+
if (item.baseResources.length === 0) {
|
|
197
|
+
return item;
|
|
198
|
+
}
|
|
199
|
+
return item.baseResources.reduce((acc, baseResource) => {
|
|
200
|
+
const baseItem = recursivelyMergeBaseResources(baseResource, source);
|
|
201
|
+
const texts = { ...baseItem.texts, ...item.texts };
|
|
202
|
+
return { ...acc, texts };
|
|
203
|
+
}, item);
|
|
204
|
+
}
|
|
205
|
+
function mergeResourcesWithBaseResource(resource) {
|
|
206
|
+
const entities = Object.keys(resource).map(key => {
|
|
207
|
+
const newValue = recursivelyMergeBaseResources(key, resource);
|
|
208
|
+
return [key, newValue];
|
|
209
|
+
});
|
|
210
|
+
return entities.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
|
|
211
|
+
}
|
|
212
|
+
function combineLegacyandNewResources(legacy, resource) {
|
|
213
|
+
const mergedResource = mergeResourcesWithBaseResource(resource);
|
|
214
|
+
return Object.entries(mergedResource).reduce((acc, [key, value]) => {
|
|
215
|
+
return { ...acc, [key]: value.texts };
|
|
216
|
+
}, legacy);
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU94RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFOUQsTUFDYSxtQkFBbUI7SUFVOUI7Ozs7O09BS0c7SUFDSCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELFlBQ1UsWUFBaUMsRUFDakMsUUFBa0IsRUFHMUIsYUFBa0MsRUFDMUIsV0FBK0I7UUFML0IsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFJbEIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBakNqQyxlQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRXpDLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUM1QyxJQUFJLEdBQUcsRUFBK0MsQ0FDdkQsQ0FBQztRQUVNLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxHQUFHLEVBQWtDLENBQUMsQ0FBQztRQTRCdEYsSUFBSSxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBRXpGLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUzRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUV2RSxDQUFDO1FBRUYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FFOUUsQ0FBQztRQUVGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUUxRCxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNwRixHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUN0RSxDQUFDO1FBRUYsYUFBYSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzthQUN0RSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDYixPQUFPO2FBQ1I7WUFDRCxNQUFNLE1BQU0sR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3BFLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQ1YsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7aUJBQ25CO2dCQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNyQyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDN0IsSUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzlDLFFBQVEsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsV0FBVyxFQUFFLENBQUM7b0JBRTNDLEtBQUssRUFBRSxHQUFHLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDLENBQUMsQ0FBQzthQUNKO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsT0FBTyxDQUFDLENBQ2hCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsZUFBZSxDQUFDLGFBQWtDO1FBQ2hELElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTztRQUUzQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1FBRXBELGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUIsTUFBTSxVQUFVLEdBQ2QsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQWtDLENBQUM7WUFFaEYsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzFCLElBQUksUUFBUSxHQUEyQixVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBRTlFLFFBQVEsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUV6QyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDLENBQUM7WUFFSCxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLFlBQVk7YUFDZCxpQkFBaUIsRUFBRTthQUNuQixJQUFJLENBQ0gsTUFBTSxDQUNKLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMseUNBQXlDLENBQUMsS0FBSyxJQUFJLENBQ3JGLEVBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDM0UsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNmLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ3BFO2FBQ0EsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYztRQUMzQixNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBYSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV2RSxPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1QyxJQUFJLE1BQU0sRUFBRSxPQUFPO2dCQUFFLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLEdBQXFDLEVBQUUsR0FBRyxpQkFBMkI7UUFDdkUsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixPQUFPLEVBQUU7YUFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELFdBQVcsQ0FBQyxZQUFvQjtRQUM5QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsWUFBWSxDQUFDLFlBQW9CO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsR0FBcUMsRUFBRSxHQUFHLGlCQUEyQjtRQUMzRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxRQUFRLENBQUMsWUFBb0IsRUFBRSxHQUFXLEVBQUUsWUFBb0I7UUFDOUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQ2xELEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFDcEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FDM0QsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsWUFBb0IsRUFBRSxHQUFXLEVBQUUsWUFBb0I7UUFDbEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDN0QsT0FBTyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsb0JBQW9CLENBQ2xCLGFBQXVCLEVBQ3ZCLElBQWMsRUFDZCxZQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FDbEQsR0FBRyxDQUFDLDJCQUEyQixDQUFDLEVBQ2hDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUNyRixDQUFDO0lBQ0osQ0FBQztJQUVELHdCQUF3QixDQUFDLGFBQXVCLEVBQUUsSUFBYyxFQUFFLFlBQW9CO1FBQ3BGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdELE9BQU8sMkJBQTJCLENBQUMsWUFBWSxDQUFDLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRU8sZUFBZSxDQUNyQixLQUFrQyxFQUNsQyxHQUFxQyxFQUNyQyxHQUFHLGlCQUEyQjtRQUU5QixJQUFJLENBQUMsR0FBRztZQUFFLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBRXRCLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQzNCLFlBQVksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDO1lBQ2hDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1NBQ2Y7UUFFRCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBYSxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7WUFDL0IsSUFBSSxTQUFTLEVBQUU7Z0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1lBQzFELE9BQU8sWUFBWSxJQUFLLEdBQWMsQ0FBQztTQUN4QztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtZQUFFLE9BQU8sWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQztRQUNyRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUIsSUFBSSxVQUFVLEtBQUssR0FBRyxFQUFFO1lBQ3RCLE9BQU8sWUFBWSxJQUFJLFNBQVMsQ0FBQztTQUNsQztRQUVELElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixJQUFJLENBQ0Ysd0ZBQXdGLENBQ3pGLENBQUM7WUFFRixPQUFPLFlBQVksSUFBSSxTQUFTLENBQUM7U0FDbEM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLElBQUksQ0FBQyxzQ0FBc0MsR0FBRyxVQUFVLENBQUMsQ0FBQztZQUMxRCxPQUFPLFlBQVksSUFBSSxTQUFTLENBQUM7U0FDbEM7UUFFRCxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxPQUFPLFlBQVksS0FBSyxXQUFXLEVBQUU7WUFDdkMsT0FBTyxZQUFZLElBQUksU0FBUyxDQUFDO1NBQ2xDO1FBRUQsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLElBQUksWUFBWTtZQUFFLFlBQVksR0FBRyxXQUFXLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFOUUsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRO1lBQUUsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUV4RCxPQUFPLFlBQVksSUFBSSxZQUFZLElBQUssR0FBYyxDQUFDO0lBQ3pELENBQUM7OEdBdFBVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTs7U0FDbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFnQzdCLFFBQVE7OzBCQUNSLFFBQVE7O0FBeU5iLFNBQVMsNkJBQTZCLENBQUMsZ0JBQXdCLEVBQUUsTUFBbUI7SUFDbEYsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFdEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDbkMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUU7UUFDckQsTUFBTSxRQUFRLEdBQUcsNkJBQTZCLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sS0FBSyxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25ELE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsU0FBUyw4QkFBOEIsQ0FBQyxRQUFxQjtJQUMzRCxNQUFNLFFBQVEsR0FBd0QsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDcEcsTUFBTSxRQUFRLEdBQUcsNkJBQTZCLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlELE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUVELFNBQVMsNEJBQTRCLENBQ25DLE1BQXlCLEVBQ3pCLFFBQXFCO0lBRXJCLE1BQU0sY0FBYyxHQUFHLDhCQUE4QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWhFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUNqRSxPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlZ2lzdGVyTG9jYWxlRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBpc0Rldk1vZGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZyb20sIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbic7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbldpdGhEZWZhdWx0IH0gZnJvbSAnLi4vbW9kZWxzL2xvY2FsaXphdGlvbic7XHJcbmltcG9ydCB7XHJcbiAgQXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvLFxyXG4gIEFwcGxpY2F0aW9uTG9jYWxpemF0aW9uUmVzb3VyY2VEdG8sXHJcbn0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9ucy9tb2RlbHMnO1xyXG5pbXBvcnQgeyBsb2NhbGl6YXRpb25zJCB9IGZyb20gJy4uL3Rva2Vucy9sb2NhbGl6YXRpb24udG9rZW4nO1xyXG5pbXBvcnQgeyBDT1JFX09QVElPTlMgfSBmcm9tICcuLi90b2tlbnMvb3B0aW9ucy50b2tlbic7XHJcbmltcG9ydCB7IGNyZWF0ZUxvY2FsaXplciwgY3JlYXRlTG9jYWxpemVyV2l0aEZhbGxiYWNrIH0gZnJvbSAnLi4vdXRpbHMvbG9jYWxpemF0aW9uLXV0aWxzJztcclxuaW1wb3J0IHsgaW50ZXJwb2xhdGUgfSBmcm9tICcuLi91dGlscy9zdHJpbmctdXRpbHMnO1xyXG5pbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy1zdGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblN0YXRlU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi1zdGF0ZS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25TZXJ2aWNlIHtcclxuICBwcml2YXRlIGxhdGVzdExhbmcgPSB0aGlzLnNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSgpO1xyXG4gIHByaXZhdGUgX2xhbmd1YWdlQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuXHJcbiAgcHJpdmF0ZSB1aUxvY2FsaXphdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChcclxuICAgIG5ldyBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pj4oKSxcclxuICApO1xyXG5cclxuICBwcml2YXRlIGxvY2FsaXphdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChuZXcgTWFwPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oKSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgY3VycmVudGx5IHNlbGVjdGVkIGxhbmd1YWdlXHJcbiAgICogRXZlbiB0aG91Z2ggdGhpcyBsb29rcyBsaWtlIGl0J3MgcmVkdW5kYW50IHRvIHJldHVybiB0aGUgc2FtZSB2YWx1ZSBhcyBgZ2V0TGFuZ3VhZ2UoKWAsXHJcbiAgICogaXQncyBhY3R1YWxseSBub3QuIFRoaXMgY291bGQgYmUgaW52b2tlZCBhbnkgdGltZSwgYW5kIHRoZSBsYXRlc3RMYW5nIGNvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHRoZVxyXG4gICAqIHNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSgpIHZhbHVlLlxyXG4gICAqL1xyXG4gIGdldCBjdXJyZW50TGFuZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubGF0ZXN0TGFuZyB8fCB0aGlzLnNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRMYW5nJCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvblN0YXRlLmdldExhbmd1YWdlJCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxhbmd1YWdlQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZXNzaW9uU3RhdGU6IFNlc3Npb25TdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIEBPcHRpb25hbCgpXHJcbiAgICBAU2tpcFNlbGYoKVxyXG4gICAgb3RoZXJJbnN0YW5jZTogTG9jYWxpemF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZSxcclxuICApIHtcclxuICAgIGlmIChvdGhlckluc3RhbmNlKSB0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsaXphdGlvblNlcnZpY2Ugc2hvdWxkIGhhdmUgb25seSBvbmUgaW5zdGFuY2UuJyk7XHJcblxyXG4gICAgdGhpcy5saXN0ZW5Ub1NldExhbmd1YWdlKCk7XHJcbiAgICB0aGlzLmluaXRMb2NhbGl6YXRpb25WYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdExvY2FsaXphdGlvblZhbHVlcygpIHtcclxuICAgIGxvY2FsaXphdGlvbnMkLnN1YnNjcmliZSh2YWwgPT4gdGhpcy5hZGRMb2NhbGl6YXRpb24odmFsKSk7XHJcblxyXG4gICAgY29uc3QgbGVnYWN5UmVzb3VyY2VzJCA9IHRoaXMuY29uZmlnU3RhdGUuZ2V0RGVlcCQoJ2xvY2FsaXphdGlvbi52YWx1ZXMnKSBhcyBPYnNlcnZhYmxlPFxyXG4gICAgICBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PlxyXG4gICAgPjtcclxuXHJcbiAgICBjb25zdCByZW1vdGVMb2NhbGl6YXRpb25zJCA9IHRoaXMuY29uZmlnU3RhdGUuZ2V0RGVlcCQoJ2xvY2FsaXphdGlvbi5yZXNvdXJjZXMnKSBhcyBPYnNlcnZhYmxlPFxyXG4gICAgICBSZWNvcmQ8c3RyaW5nLCBBcHBsaWNhdGlvbkxvY2FsaXphdGlvblJlc291cmNlRHRvPlxyXG4gICAgPjtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50TGFuZ3VhZ2UkID0gdGhpcy5zZXNzaW9uU3RhdGUuZ2V0TGFuZ3VhZ2UkKCk7XHJcblxyXG4gICAgY29uc3QgdWlMb2NhbGl6YXRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW2N1cnJlbnRMYW5ndWFnZSQsIHRoaXMudWlMb2NhbGl6YXRpb25zJF0pLnBpcGUoXHJcbiAgICAgIG1hcCgoW2N1cnJlbnRMYW5nLCBsb2NhbGl6YXRpb25zXSkgPT4gbG9jYWxpemF0aW9ucy5nZXQoY3VycmVudExhbmcpKSxcclxuICAgICk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbbGVnYWN5UmVzb3VyY2VzJCwgcmVtb3RlTG9jYWxpemF0aW9ucyQsIHVpTG9jYWxpemF0aW9ucyRdKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKFtsZWdhY3ksIHJlc291cmNlLCBsb2NhbF0pID0+IHtcclxuICAgICAgICAgIGlmICghcmVzb3VyY2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgcmVtb3RlID0gY29tYmluZUxlZ2FjeWFuZE5ld1Jlc291cmNlcyhsZWdhY3kgfHwge30sIHJlc291cmNlKTtcclxuICAgICAgICAgIGlmIChyZW1vdGUpIHtcclxuICAgICAgICAgICAgaWYgKCFsb2NhbCkge1xyXG4gICAgICAgICAgICAgIGxvY2FsID0gbmV3IE1hcCgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhyZW1vdGUpLmZvckVhY2goZW50cnkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHJlc291cmNlTmFtZSA9IGVudHJ5WzBdO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHJlbW90ZVRleHRzID0gZW50cnlbMV07XHJcbiAgICAgICAgICAgICAgbGV0IHJlc291cmNlID0gbG9jYWw/LmdldChyZXNvdXJjZU5hbWUpIHx8IHt9O1xyXG4gICAgICAgICAgICAgIHJlc291cmNlID0geyAuLi5yZXNvdXJjZSwgLi4ucmVtb3RlVGV4dHMgfTtcclxuXHJcbiAgICAgICAgICAgICAgbG9jYWw/LnNldChyZXNvdXJjZU5hbWUsIHJlc291cmNlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIGxvY2FsO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGZpbHRlcihCb29sZWFuKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUodmFsID0+IHRoaXMubG9jYWxpemF0aW9ucyQubmV4dCh2YWwpKTtcclxuICB9XHJcblxyXG4gIGFkZExvY2FsaXphdGlvbihsb2NhbGl6YXRpb25zPzogQUJQLkxvY2FsaXphdGlvbltdKSB7XHJcbiAgICBpZiAoIWxvY2FsaXphdGlvbnMpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBsb2NhbGl6YXRpb25NYXAgPSB0aGlzLnVpTG9jYWxpemF0aW9ucyQudmFsdWU7XHJcblxyXG4gICAgbG9jYWxpemF0aW9ucy5mb3JFYWNoKGxvYyA9PiB7XHJcbiAgICAgIGNvbnN0IGN1bHR1cmVNYXAgPVxyXG4gICAgICAgIGxvY2FsaXphdGlvbk1hcC5nZXQobG9jLmN1bHR1cmUpIHx8IG5ldyBNYXA8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PigpO1xyXG5cclxuICAgICAgbG9jLnJlc291cmNlcy5mb3JFYWNoKHJlcyA9PiB7XHJcbiAgICAgICAgbGV0IHJlc291cmNlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gY3VsdHVyZU1hcC5nZXQocmVzLnJlc291cmNlTmFtZSkgfHwge307XHJcblxyXG4gICAgICAgIHJlc291cmNlID0geyAuLi5yZXNvdXJjZSwgLi4ucmVzLnRleHRzIH07XHJcblxyXG4gICAgICAgIGN1bHR1cmVNYXAuc2V0KHJlcy5yZXNvdXJjZU5hbWUsIHJlc291cmNlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBsb2NhbGl6YXRpb25NYXAuc2V0KGxvYy5jdWx0dXJlLCBjdWx0dXJlTWFwKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudWlMb2NhbGl6YXRpb25zJC5uZXh0KGxvY2FsaXphdGlvbk1hcCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxpc3RlblRvU2V0TGFuZ3VhZ2UoKSB7XHJcbiAgICB0aGlzLnNlc3Npb25TdGF0ZVxyXG4gICAgICAub25MYW5ndWFnZUNoYW5nZSQoKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICBsYW5nID0+IHRoaXMuY29uZmlnU3RhdGUuZ2V0RGVlcCgnbG9jYWxpemF0aW9uLmN1cnJlbnRDdWx0dXJlLmN1bHR1cmVOYW1lJykgIT09IGxhbmcsXHJcbiAgICAgICAgKSxcclxuICAgICAgICBzd2l0Y2hNYXAobGFuZyA9PiB0aGlzLmNvbmZpZ1N0YXRlLnJlZnJlc2hBcHBTdGF0ZSgpLnBpcGUobWFwKCgpID0+IGxhbmcpKSksXHJcbiAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxyXG4gICAgICAgIHN3aXRjaE1hcChsYW5nID0+IGZyb20odGhpcy5yZWdpc3RlckxvY2FsZShsYW5nKS50aGVuKCgpID0+IGxhbmcpKSksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShsYW5nID0+IHRoaXMuX2xhbmd1YWdlQ2hhbmdlJC5uZXh0KGxhbmcpKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyTG9jYWxlKGxvY2FsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB7IHJlZ2lzdGVyTG9jYWxlRm4gfTogQUJQLlJvb3QgPSB0aGlzLmluamVjdG9yLmdldChDT1JFX09QVElPTlMpO1xyXG5cclxuICAgIHJldHVybiByZWdpc3RlckxvY2FsZUZuKGxvY2FsZSkudGhlbihtb2R1bGUgPT4ge1xyXG4gICAgICBpZiAobW9kdWxlPy5kZWZhdWx0KSByZWdpc3RlckxvY2FsZURhdGEobW9kdWxlLmRlZmF1bHQpO1xyXG4gICAgICB0aGlzLmxhdGVzdExhbmcgPSBsb2NhbGU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSBsb2NhbGl6ZWQgdGV4dCB3aXRoIHRoZSBnaXZlbiBpbnRlcnBvbGF0aW9uIHBhcmFtZXRlcnMgaW4gY3VycmVudCBsYW5ndWFnZS5cclxuICAgKiBAcGFyYW0ga2V5IExvY2FsaXphdG9uIGtleSB0byByZXBsYWNlIHdpdGggbG9jYWxpemVkIHRleHRcclxuICAgKiBAcGFyYW0gaW50ZXJwb2xhdGVQYXJhbXMgVmFsdWVzIHRvIGludGVycG9sYXRlXHJcbiAgICovXHJcbiAgZ2V0KGtleTogc3RyaW5nIHwgTG9jYWxpemF0aW9uV2l0aERlZmF1bHQsIC4uLmludGVycG9sYXRlUGFyYW1zOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdGF0ZVxyXG4gICAgICAuZ2V0QWxsJCgpXHJcbiAgICAgIC5waXBlKG1hcChzdGF0ZSA9PiB0aGlzLmdldExvY2FsaXphdGlvbihzdGF0ZSwga2V5LCAuLi5pbnRlcnBvbGF0ZVBhcmFtcykpKTtcclxuICB9XHJcblxyXG4gIGdldFJlc291cmNlKHJlc291cmNlTmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2NhbGl6YXRpb25zJC52YWx1ZS5nZXQocmVzb3VyY2VOYW1lKTtcclxuICB9XHJcblxyXG4gIGdldFJlc291cmNlJChyZXNvdXJjZU5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMubG9jYWxpemF0aW9ucyQucGlwZShtYXAocmVzID0+IHJlcy5nZXQocmVzb3VyY2VOYW1lKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBsb2NhbGl6ZWQgdGV4dCB3aXRoIHRoZSBnaXZlbiBpbnRlcnBvbGF0aW9uIHBhcmFtZXRlcnMgaW4gY3VycmVudCBsYW5ndWFnZS5cclxuICAgKiBAcGFyYW0ga2V5IExvY2FsaXphdGlvbiBrZXkgdG8gcmVwbGFjZSB3aXRoIGxvY2FsaXplZCB0ZXh0XHJcbiAgICogQHBhcmFtIGludGVycG9sYXRlUGFyYW1zIFZhbHVlcyB0byBpbnRlcG9sYXRlLlxyXG4gICAqL1xyXG4gIGluc3RhbnQoa2V5OiBzdHJpbmcgfCBMb2NhbGl6YXRpb25XaXRoRGVmYXVsdCwgLi4uaW50ZXJwb2xhdGVQYXJhbXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmdldExvY2FsaXphdGlvbih0aGlzLmNvbmZpZ1N0YXRlLmdldEFsbCgpLCBrZXksIC4uLmludGVycG9sYXRlUGFyYW1zKTtcclxuICB9XHJcblxyXG4gIGxvY2FsaXplKHJlc291cmNlTmFtZTogc3RyaW5nLCBrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1N0YXRlLmdldE9uZSQoJ2xvY2FsaXphdGlvbicpLnBpcGUoXHJcbiAgICAgIG1hcChjcmVhdGVMb2NhbGl6ZXIpLFxyXG4gICAgICBtYXAobG9jYWxpemUgPT4gbG9jYWxpemUocmVzb3VyY2VOYW1lLCBrZXksIGRlZmF1bHRWYWx1ZSkpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGxvY2FsaXplU3luYyhyZXNvdXJjZU5hbWU6IHN0cmluZywga2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBjb25zdCBsb2NhbGl6YXRpb24gPSB0aGlzLmNvbmZpZ1N0YXRlLmdldE9uZSgnbG9jYWxpemF0aW9uJyk7XHJcbiAgICByZXR1cm4gY3JlYXRlTG9jYWxpemVyKGxvY2FsaXphdGlvbikocmVzb3VyY2VOYW1lLCBrZXksIGRlZmF1bHRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBsb2NhbGl6ZVdpdGhGYWxsYmFjayhcclxuICAgIHJlc291cmNlTmFtZXM6IHN0cmluZ1tdLFxyXG4gICAga2V5czogc3RyaW5nW10sXHJcbiAgICBkZWZhdWx0VmFsdWU6IHN0cmluZyxcclxuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU3RhdGUuZ2V0T25lJCgnbG9jYWxpemF0aW9uJykucGlwZShcclxuICAgICAgbWFwKGNyZWF0ZUxvY2FsaXplcldpdGhGYWxsYmFjayksXHJcbiAgICAgIG1hcChsb2NhbGl6ZVdpdGhGYWxsYmFjayA9PiBsb2NhbGl6ZVdpdGhGYWxsYmFjayhyZXNvdXJjZU5hbWVzLCBrZXlzLCBkZWZhdWx0VmFsdWUpKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBsb2NhbGl6ZVdpdGhGYWxsYmFja1N5bmMocmVzb3VyY2VOYW1lczogc3RyaW5nW10sIGtleXM6IHN0cmluZ1tdLCBkZWZhdWx0VmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBsb2NhbGl6YXRpb24gPSB0aGlzLmNvbmZpZ1N0YXRlLmdldE9uZSgnbG9jYWxpemF0aW9uJyk7XHJcbiAgICByZXR1cm4gY3JlYXRlTG9jYWxpemVyV2l0aEZhbGxiYWNrKGxvY2FsaXphdGlvbikocmVzb3VyY2VOYW1lcywga2V5cywgZGVmYXVsdFZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TG9jYWxpemF0aW9uKFxyXG4gICAgc3RhdGU6IEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0byxcclxuICAgIGtleTogc3RyaW5nIHwgTG9jYWxpemF0aW9uV2l0aERlZmF1bHQsXHJcbiAgICAuLi5pbnRlcnBvbGF0ZVBhcmFtczogc3RyaW5nW11cclxuICApIHtcclxuICAgIGlmICgha2V5KSBrZXkgPSAnJztcclxuICAgIGxldCBkZWZhdWx0VmFsdWUgPSAnJztcclxuXHJcbiAgICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgZGVmYXVsdFZhbHVlID0ga2V5LmRlZmF1bHRWYWx1ZTtcclxuICAgICAga2V5ID0ga2V5LmtleTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KCc6OicpIGFzIHN0cmluZ1tdO1xyXG4gICAgY29uc3Qgd2FybiA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKGlzRGV2TW9kZSgpKSBjb25zb2xlLndhcm4obWVzc2FnZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChrZXlzLmxlbmd0aCA8IDIpIHtcclxuICAgICAgd2FybignVGhlIGxvY2FsaXphdGlvbiBzb3VyY2Ugc2VwYXJhdG9yICg6Oikgbm90IGZvdW5kLicpO1xyXG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IChrZXkgYXMgc3RyaW5nKTtcclxuICAgIH1cclxuICAgIGlmICghc3RhdGUubG9jYWxpemF0aW9uKSByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IGtleXNbMV07XHJcblxyXG4gICAgY29uc3Qgc291cmNlTmFtZSA9IGtleXNbMF0gfHwgc3RhdGUubG9jYWxpemF0aW9uLmRlZmF1bHRSZXNvdXJjZU5hbWU7XHJcbiAgICBjb25zdCBzb3VyY2VLZXkgPSBrZXlzWzFdO1xyXG5cclxuICAgIGlmIChzb3VyY2VOYW1lID09PSAnXycpIHtcclxuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCBzb3VyY2VLZXk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFzb3VyY2VOYW1lKSB7XHJcbiAgICAgIHdhcm4oXHJcbiAgICAgICAgJ0xvY2FsaXphdGlvbiBzb3VyY2UgbmFtZSBpcyBub3Qgc3BlY2lmaWVkIGFuZCB0aGUgZGVmYXVsdFJlc291cmNlTmFtZSB3YXMgbm90IGRlZmluZWQhJyxcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgc291cmNlS2V5O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMubG9jYWxpemF0aW9ucyQudmFsdWUuZ2V0KHNvdXJjZU5hbWUpO1xyXG4gICAgaWYgKCFzb3VyY2UpIHtcclxuICAgICAgd2FybignQ291bGQgbm90IGZpbmQgbG9jYWxpemF0aW9uIHNvdXJjZTogJyArIHNvdXJjZU5hbWUpO1xyXG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IHNvdXJjZUtleTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbG9jYWxpemF0aW9uID0gc291cmNlW3NvdXJjZUtleV07XHJcbiAgICBpZiAodHlwZW9mIGxvY2FsaXphdGlvbiA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCBzb3VyY2VLZXk7XHJcbiAgICB9XHJcblxyXG4gICAgaW50ZXJwb2xhdGVQYXJhbXMgPSBpbnRlcnBvbGF0ZVBhcmFtcy5maWx0ZXIocGFyYW1zID0+IHBhcmFtcyAhPSBudWxsKTtcclxuICAgIGlmIChsb2NhbGl6YXRpb24pIGxvY2FsaXphdGlvbiA9IGludGVycG9sYXRlKGxvY2FsaXphdGlvbiwgaW50ZXJwb2xhdGVQYXJhbXMpO1xyXG5cclxuICAgIGlmICh0eXBlb2YgbG9jYWxpemF0aW9uICE9PSAnc3RyaW5nJykgbG9jYWxpemF0aW9uID0gJyc7XHJcblxyXG4gICAgcmV0dXJuIGxvY2FsaXphdGlvbiB8fCBkZWZhdWx0VmFsdWUgfHwgKGtleSBhcyBzdHJpbmcpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVjdXJzaXZlbHlNZXJnZUJhc2VSZXNvdXJjZXMoYmFzZVJlc291cmNlTmFtZTogc3RyaW5nLCBzb3VyY2U6IFJlc291cmNlRHRvKTogQXBwbGljYXRpb25Mb2NhbGl6YXRpb25SZXNvdXJjZUR0byB7XHJcbiAgY29uc3QgaXRlbSA9IHNvdXJjZVtiYXNlUmVzb3VyY2VOYW1lXTtcclxuXHJcbiAgaWYgKGl0ZW0uYmFzZVJlc291cmNlcy5sZW5ndGggPT09IDApIHtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGl0ZW0uYmFzZVJlc291cmNlcy5yZWR1Y2UoKGFjYywgYmFzZVJlc291cmNlKSA9PiB7XHJcbiAgICBjb25zdCBiYXNlSXRlbSA9IHJlY3Vyc2l2ZWx5TWVyZ2VCYXNlUmVzb3VyY2VzKGJhc2VSZXNvdXJjZSwgc291cmNlKTtcclxuICAgIGNvbnN0IHRleHRzID0geyAuLi5iYXNlSXRlbS50ZXh0cywgLi4uaXRlbS50ZXh0cyB9O1xyXG4gICAgcmV0dXJuIHsgLi4uYWNjLCB0ZXh0cyB9O1xyXG4gIH0sIGl0ZW0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZXJnZVJlc291cmNlc1dpdGhCYXNlUmVzb3VyY2UocmVzb3VyY2U6IFJlc291cmNlRHRvKTogUmVzb3VyY2VEdG8ge1xyXG4gIGNvbnN0IGVudGl0aWVzOiBBcnJheTxbc3RyaW5nLCBBcHBsaWNhdGlvbkxvY2FsaXphdGlvblJlc291cmNlRHRvXT4gPSBPYmplY3Qua2V5cyhyZXNvdXJjZSkubWFwKGtleSA9PiB7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHJlY3Vyc2l2ZWx5TWVyZ2VCYXNlUmVzb3VyY2VzKGtleSwgcmVzb3VyY2UpO1xyXG4gICAgcmV0dXJuIFtrZXksIG5ld1ZhbHVlXTtcclxuICB9KTtcclxuICByZXR1cm4gZW50aXRpZXMucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4gKHsgLi4uYWNjLCBba2V5XTogdmFsdWUgfSksIHt9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gY29tYmluZUxlZ2FjeWFuZE5ld1Jlc291cmNlcyhcclxuICBsZWdhY3k6IExlZ2FjeUxhbmd1YWdlRHRvLFxyXG4gIHJlc291cmNlOiBSZXNvdXJjZUR0byxcclxuKTogTGVnYWN5TGFuZ3VhZ2VEdG8ge1xyXG4gIGNvbnN0IG1lcmdlZFJlc291cmNlID0gbWVyZ2VSZXNvdXJjZXNXaXRoQmFzZVJlc291cmNlKHJlc291cmNlKTtcclxuXHJcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG1lcmdlZFJlc291cmNlKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICByZXR1cm4geyAuLi5hY2MsIFtrZXldOiB2YWx1ZS50ZXh0cyB9O1xyXG4gIH0sIGxlZ2FjeSk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIExlZ2FjeUxhbmd1YWdlRHRvID0gUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj47XHJcbmV4cG9ydCB0eXBlIFJlc291cmNlRHRvID0gUmVjb3JkPHN0cmluZywgQXBwbGljYXRpb25Mb2NhbGl6YXRpb25SZXNvdXJjZUR0bz47XHJcbiJdfQ==
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { map, switchMap } from 'rxjs/operators';
|
|
3
|
+
import { AbpTenantService } from '../proxy/pages/abp/multi-tenancy';
|
|
4
|
+
import { TENANT_KEY } from '../tokens/tenant-key.token';
|
|
5
|
+
import { ConfigStateService } from './config-state.service';
|
|
6
|
+
import { RestService } from './rest.service';
|
|
7
|
+
import { SessionStateService } from './session-state.service';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "./rest.service";
|
|
10
|
+
import * as i2 from "./session-state.service";
|
|
11
|
+
import * as i3 from "../proxy/pages/abp/multi-tenancy";
|
|
12
|
+
import * as i4 from "./config-state.service";
|
|
13
|
+
class MultiTenancyService {
|
|
14
|
+
constructor(restService, sessionState, tenantService, configStateService, tenantKey) {
|
|
15
|
+
this.restService = restService;
|
|
16
|
+
this.sessionState = sessionState;
|
|
17
|
+
this.tenantService = tenantService;
|
|
18
|
+
this.configStateService = configStateService;
|
|
19
|
+
this.tenantKey = tenantKey;
|
|
20
|
+
this.domainTenant = null;
|
|
21
|
+
this.isTenantBoxVisible = true;
|
|
22
|
+
this.apiName = 'abp';
|
|
23
|
+
this.setTenantToState = (tenant) => {
|
|
24
|
+
this.sessionState.setTenant({ id: tenant.tenantId, name: tenant.name, isAvailable: true });
|
|
25
|
+
return this.configStateService.refreshAppState().pipe(map(_ => tenant));
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
setTenantByName(tenantName) {
|
|
29
|
+
return this.tenantService
|
|
30
|
+
.findTenantByName(tenantName)
|
|
31
|
+
.pipe(switchMap(this.setTenantToState));
|
|
32
|
+
}
|
|
33
|
+
setTenantById(tenantId) {
|
|
34
|
+
return this.tenantService
|
|
35
|
+
.findTenantById(tenantId)
|
|
36
|
+
.pipe(switchMap(this.setTenantToState));
|
|
37
|
+
}
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: MultiTenancyService, deps: [{ token: i1.RestService }, { token: i2.SessionStateService }, { token: i3.AbpTenantService }, { token: i4.ConfigStateService }, { token: TENANT_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
39
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: MultiTenancyService, providedIn: 'root' }); }
|
|
40
|
+
}
|
|
41
|
+
export { MultiTenancyService };
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: MultiTenancyService, decorators: [{
|
|
43
|
+
type: Injectable,
|
|
44
|
+
args: [{ providedIn: 'root' }]
|
|
45
|
+
}], ctorParameters: function () { return [{ type: i1.RestService }, { type: i2.SessionStateService }, { type: i3.AbpTenantService }, { type: i4.ConfigStateService }, { type: undefined, decorators: [{
|
|
46
|
+
type: Inject,
|
|
47
|
+
args: [TENANT_KEY]
|
|
48
|
+
}] }]; } });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdGVuYW5jeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL211bHRpLXRlbmFuY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBS3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7OztBQUU5RCxNQUNhLG1CQUFtQjtJQVk5QixZQUNVLFdBQXdCLEVBQ3hCLFlBQWlDLEVBQ2pDLGFBQStCLEVBQy9CLGtCQUFzQyxFQUNuQixTQUFpQjtRQUpwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDbkIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQWhCOUMsaUJBQVksR0FBNEIsSUFBSSxDQUFDO1FBRTdDLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUUxQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRVIscUJBQWdCLEdBQUcsQ0FBQyxNQUEyQixFQUFFLEVBQUU7WUFDekQsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMzRixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUM7SUFRRSxDQUFDO0lBRUwsZUFBZSxDQUFDLFVBQWtCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLGFBQWE7YUFDdEIsZ0JBQWdCLENBQUMsVUFBVSxDQUFDO2FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQWdCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGFBQWE7YUFDdEIsY0FBYyxDQUFDLFFBQVEsQ0FBQzthQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs4R0E5QlUsbUJBQW1CLGtKQWlCcEIsVUFBVTtrSEFqQlQsbUJBQW1CLGNBRE4sTUFBTTs7U0FDbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFrQjdCLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQWJwVGVuYW50U2VydmljZSB9IGZyb20gJy4uL3Byb3h5L3BhZ2VzL2FicC9tdWx0aS10ZW5hbmN5JztcclxuaW1wb3J0IHtcclxuICBDdXJyZW50VGVuYW50RHRvLFxyXG4gIEZpbmRUZW5hbnRSZXN1bHREdG8sXHJcbn0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9tdWx0aS10ZW5hbmN5L21vZGVscyc7XHJcbmltcG9ydCB7IFRFTkFOVF9LRVkgfSBmcm9tICcuLi90b2tlbnMvdGVuYW50LWtleS50b2tlbic7XHJcbmltcG9ydCB7IENvbmZpZ1N0YXRlU2VydmljZSB9IGZyb20gJy4vY29uZmlnLXN0YXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4vcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblN0YXRlU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi1zdGF0ZS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aVRlbmFuY3lTZXJ2aWNlIHtcclxuICBkb21haW5UZW5hbnQ6IEN1cnJlbnRUZW5hbnREdG8gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgaXNUZW5hbnRCb3hWaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgYXBpTmFtZSA9ICdhYnAnO1xyXG5cclxuICBwcml2YXRlIHNldFRlbmFudFRvU3RhdGUgPSAodGVuYW50OiBGaW5kVGVuYW50UmVzdWx0RHRvKSA9PiB7XHJcbiAgICB0aGlzLnNlc3Npb25TdGF0ZS5zZXRUZW5hbnQoeyBpZDogdGVuYW50LnRlbmFudElkLCBuYW1lOiB0ZW5hbnQubmFtZSwgaXNBdmFpbGFibGU6IHRydWUgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdGF0ZVNlcnZpY2UucmVmcmVzaEFwcFN0YXRlKCkucGlwZShtYXAoXyA9PiB0ZW5hbnQpKTtcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzZXNzaW9uU3RhdGU6IFNlc3Npb25TdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRlbmFudFNlcnZpY2U6IEFicFRlbmFudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ1N0YXRlU2VydmljZTogQ29uZmlnU3RhdGVTZXJ2aWNlLFxyXG4gICAgQEluamVjdChURU5BTlRfS0VZKSBwdWJsaWMgdGVuYW50S2V5OiBzdHJpbmcsXHJcbiAgKSB7IH1cclxuXHJcbiAgc2V0VGVuYW50QnlOYW1lKHRlbmFudE5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMudGVuYW50U2VydmljZVxyXG4gICAgICAuZmluZFRlbmFudEJ5TmFtZSh0ZW5hbnROYW1lKVxyXG4gICAgICAucGlwZShzd2l0Y2hNYXAodGhpcy5zZXRUZW5hbnRUb1N0YXRlKSk7XHJcbiAgfVxyXG5cclxuICBzZXRUZW5hbnRCeUlkKHRlbmFudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnRlbmFudFNlcnZpY2VcclxuICAgICAgLmZpbmRUZW5hbnRCeUlkKHRlbmFudElkKVxyXG4gICAgICAucGlwZShzd2l0Y2hNYXAodGhpcy5zZXRUZW5hbnRUb1N0YXRlKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { ConfigStateService } from './config-state.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./config-state.service";
|
|
6
|
+
class PermissionService {
|
|
7
|
+
constructor(configState) {
|
|
8
|
+
this.configState = configState;
|
|
9
|
+
}
|
|
10
|
+
getGrantedPolicy$(key) {
|
|
11
|
+
return this.getStream().pipe(map(grantedPolicies => this.isPolicyGranted(key, grantedPolicies)));
|
|
12
|
+
}
|
|
13
|
+
getGrantedPolicy(key) {
|
|
14
|
+
const policies = this.getSnapshot();
|
|
15
|
+
return this.isPolicyGranted(key, policies);
|
|
16
|
+
}
|
|
17
|
+
filterItemsByPolicy(items) {
|
|
18
|
+
const policies = this.getSnapshot();
|
|
19
|
+
return items.filter(item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies));
|
|
20
|
+
}
|
|
21
|
+
filterItemsByPolicy$(items) {
|
|
22
|
+
return this.getStream().pipe(map(policies => items.filter(item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies))));
|
|
23
|
+
}
|
|
24
|
+
isPolicyGranted(key, grantedPolicies) {
|
|
25
|
+
if (!key)
|
|
26
|
+
return true;
|
|
27
|
+
const orRegexp = /\|\|/g;
|
|
28
|
+
const andRegexp = /&&/g;
|
|
29
|
+
// TODO: Allow combination of ANDs & ORs
|
|
30
|
+
if (orRegexp.test(key)) {
|
|
31
|
+
const keys = key.split('||').filter(Boolean);
|
|
32
|
+
if (keys.length < 2)
|
|
33
|
+
return false;
|
|
34
|
+
return keys.some(k => this.getPolicy(k.trim(), grantedPolicies));
|
|
35
|
+
}
|
|
36
|
+
else if (andRegexp.test(key)) {
|
|
37
|
+
const keys = key.split('&&').filter(Boolean);
|
|
38
|
+
if (keys.length < 2)
|
|
39
|
+
return false;
|
|
40
|
+
return keys.every(k => this.getPolicy(k.trim(), grantedPolicies));
|
|
41
|
+
}
|
|
42
|
+
return this.getPolicy(key, grantedPolicies);
|
|
43
|
+
}
|
|
44
|
+
getStream() {
|
|
45
|
+
return this.configState.getAll$().pipe(map(this.mapToPolicies));
|
|
46
|
+
}
|
|
47
|
+
getSnapshot() {
|
|
48
|
+
return this.mapToPolicies(this.configState.getAll());
|
|
49
|
+
}
|
|
50
|
+
mapToPolicies(applicationConfiguration) {
|
|
51
|
+
return applicationConfiguration?.auth?.grantedPolicies || {};
|
|
52
|
+
}
|
|
53
|
+
getPolicy(key, grantedPolicies) {
|
|
54
|
+
return grantedPolicies[key] || false;
|
|
55
|
+
}
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: PermissionService, deps: [{ token: i1.ConfigStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
57
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: PermissionService, providedIn: 'root' }); }
|
|
58
|
+
}
|
|
59
|
+
export { PermissionService };
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: PermissionService, decorators: [{
|
|
61
|
+
type: Injectable,
|
|
62
|
+
args: [{ providedIn: 'root' }]
|
|
63
|
+
}], ctorParameters: function () { return [{ type: i1.ConfigStateService }]; } });
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3Blcm1pc3Npb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBRTVELE1BQ2EsaUJBQWlCO0lBQzVCLFlBQXNCLFdBQStCO1FBQS9CLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtJQUFHLENBQUM7SUFFekQsaUJBQWlCLENBQUMsR0FBVztRQUMzQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQzFCLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBdUI7UUFDdEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELG1CQUFtQixDQUEwQixLQUFlO1FBQzFELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQ2pCLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FDcEYsQ0FBQztJQUNKLENBQUM7SUFFRCxvQkFBb0IsQ0FBMEIsS0FBZTtRQUMzRCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQzFCLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUNiLEtBQUssQ0FBQyxNQUFNLENBQ1YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUNwRixDQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFUyxlQUFlLENBQUMsR0FBdUIsRUFBRSxlQUF3QztRQUN6RixJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXRCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN6QixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFeEIsd0NBQXdDO1FBQ3hDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN0QixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUU3QyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUVsQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO1NBQ2xFO2FBQU0sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRTdDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBRWxDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7U0FDbkU7UUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFUyxTQUFTO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFUyxXQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVTLGFBQWEsQ0FBQyx3QkFBcUQ7UUFDM0UsT0FBTyx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsZUFBZSxJQUFJLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0lBRVMsU0FBUyxDQUFDLEdBQVcsRUFBRSxlQUF3QztRQUN2RSxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDdkMsQ0FBQzs4R0FyRVUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FESixNQUFNOztTQUNuQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbic7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0byB9IGZyb20gJy4uL3Byb3h5L3ZvbG8vYWJwL2FzcC1uZXQtY29yZS9tdmMvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbnMvbW9kZWxzJztcclxuaW1wb3J0IHsgQ29uZmlnU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWctc3RhdGUuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvblNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjb25maWdTdGF0ZTogQ29uZmlnU3RhdGVTZXJ2aWNlKSB7fVxyXG5cclxuICBnZXRHcmFudGVkUG9saWN5JChrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyZWFtKCkucGlwZShcclxuICAgICAgbWFwKGdyYW50ZWRQb2xpY2llcyA9PiB0aGlzLmlzUG9saWN5R3JhbnRlZChrZXksIGdyYW50ZWRQb2xpY2llcykpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEdyYW50ZWRQb2xpY3koa2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIGNvbnN0IHBvbGljaWVzID0gdGhpcy5nZXRTbmFwc2hvdCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaXNQb2xpY3lHcmFudGVkKGtleSwgcG9saWNpZXMpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVySXRlbXNCeVBvbGljeTxUIGV4dGVuZHMgQUJQLkhhc1BvbGljeT4oaXRlbXM6IEFycmF5PFQ+KSB7XHJcbiAgICBjb25zdCBwb2xpY2llcyA9IHRoaXMuZ2V0U25hcHNob3QoKTtcclxuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoXHJcbiAgICAgIGl0ZW0gPT4gIWl0ZW0ucmVxdWlyZWRQb2xpY3kgfHwgdGhpcy5pc1BvbGljeUdyYW50ZWQoaXRlbS5yZXF1aXJlZFBvbGljeSwgcG9saWNpZXMpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZpbHRlckl0ZW1zQnlQb2xpY3kkPFQgZXh0ZW5kcyBBQlAuSGFzUG9saWN5PihpdGVtczogQXJyYXk8VD4pIHtcclxuICAgIHJldHVybiB0aGlzLmdldFN0cmVhbSgpLnBpcGUoXHJcbiAgICAgIG1hcChwb2xpY2llcyA9PlxyXG4gICAgICAgIGl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgIGl0ZW0gPT4gIWl0ZW0ucmVxdWlyZWRQb2xpY3kgfHwgdGhpcy5pc1BvbGljeUdyYW50ZWQoaXRlbS5yZXF1aXJlZFBvbGljeSwgcG9saWNpZXMpLFxyXG4gICAgICAgICksXHJcbiAgICAgICksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGlzUG9saWN5R3JhbnRlZChrZXk6IHN0cmluZyB8IHVuZGVmaW5lZCwgZ3JhbnRlZFBvbGljaWVzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPikge1xyXG4gICAgaWYgKCFrZXkpIHJldHVybiB0cnVlO1xyXG5cclxuICAgIGNvbnN0IG9yUmVnZXhwID0gL1xcfFxcfC9nO1xyXG4gICAgY29uc3QgYW5kUmVnZXhwID0gLyYmL2c7XHJcblxyXG4gICAgLy8gVE9ETzogQWxsb3cgY29tYmluYXRpb24gb2YgQU5EcyAmIE9Sc1xyXG4gICAgaWYgKG9yUmVnZXhwLnRlc3Qoa2V5KSkge1xyXG4gICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KCd8fCcpLmZpbHRlcihCb29sZWFuKTtcclxuXHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA8IDIpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIHJldHVybiBrZXlzLnNvbWUoayA9PiB0aGlzLmdldFBvbGljeShrLnRyaW0oKSwgZ3JhbnRlZFBvbGljaWVzKSk7XHJcbiAgICB9IGVsc2UgaWYgKGFuZFJlZ2V4cC50ZXN0KGtleSkpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdCgnJiYnKS5maWx0ZXIoQm9vbGVhbik7XHJcblxyXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPCAyKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICByZXR1cm4ga2V5cy5ldmVyeShrID0+IHRoaXMuZ2V0UG9saWN5KGsudHJpbSgpLCBncmFudGVkUG9saWNpZXMpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5nZXRQb2xpY3koa2V5LCBncmFudGVkUG9saWNpZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldFN0cmVhbSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1N0YXRlLmdldEFsbCQoKS5waXBlKG1hcCh0aGlzLm1hcFRvUG9saWNpZXMpKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRTbmFwc2hvdCgpIHtcclxuICAgIHJldHVybiB0aGlzLm1hcFRvUG9saWNpZXModGhpcy5jb25maWdTdGF0ZS5nZXRBbGwoKSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbWFwVG9Qb2xpY2llcyhhcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb246IEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0bykge1xyXG4gICAgcmV0dXJuIGFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbj8uYXV0aD8uZ3JhbnRlZFBvbGljaWVzIHx8IHt9O1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldFBvbGljeShrZXk6IHN0cmluZywgZ3JhbnRlZFBvbGljaWVzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPikge1xyXG4gICAgcmV0dXJuIGdyYW50ZWRQb2xpY2llc1trZXldIHx8IGZhbHNlO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Injectable, NgZone } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import { InternalStore } from '../utils/internal-store-utils';
|
|
5
|
+
import { reloadRoute } from '../utils/route-utils';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/router";
|
|
8
|
+
class ReplaceableComponentsService {
|
|
9
|
+
get replaceableComponents$() {
|
|
10
|
+
return this.store.sliceState(state => state);
|
|
11
|
+
}
|
|
12
|
+
get replaceableComponents() {
|
|
13
|
+
return this.store.state;
|
|
14
|
+
}
|
|
15
|
+
get onUpdate$() {
|
|
16
|
+
return this.store.sliceUpdate(state => state);
|
|
17
|
+
}
|
|
18
|
+
constructor(ngZone, router) {
|
|
19
|
+
this.ngZone = ngZone;
|
|
20
|
+
this.router = router;
|
|
21
|
+
this.store = new InternalStore([]);
|
|
22
|
+
}
|
|
23
|
+
add(replaceableComponent, reload) {
|
|
24
|
+
const replaceableComponents = [...this.store.state];
|
|
25
|
+
const index = replaceableComponents.findIndex(component => component.key === replaceableComponent.key);
|
|
26
|
+
if (index > -1) {
|
|
27
|
+
replaceableComponents[index] = replaceableComponent;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
replaceableComponents.push(replaceableComponent);
|
|
31
|
+
}
|
|
32
|
+
this.store.set(replaceableComponents);
|
|
33
|
+
if (reload)
|
|
34
|
+
reloadRoute(this.router, this.ngZone);
|
|
35
|
+
}
|
|
36
|
+
get(replaceableComponentKey) {
|
|
37
|
+
return this.replaceableComponents.find(component => component.key === replaceableComponentKey);
|
|
38
|
+
}
|
|
39
|
+
get$(replaceableComponentKey) {
|
|
40
|
+
return this.replaceableComponents$.pipe(map(components => components.find(component => component.key === replaceableComponentKey)));
|
|
41
|
+
}
|
|
42
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ReplaceableComponentsService, deps: [{ token: i0.NgZone }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
43
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ReplaceableComponentsService, providedIn: 'root' }); }
|
|
44
|
+
}
|
|
45
|
+
export { ReplaceableComponentsService };
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ReplaceableComponentsService, decorators: [{
|
|
47
|
+
type: Injectable,
|
|
48
|
+
args: [{ providedIn: 'root' }]
|
|
49
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Router }]; } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZWFibGUtY29tcG9uZW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3JlcGxhY2VhYmxlLWNvbXBvbmVudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUVuRCxNQUNhLDRCQUE0QjtJQUd2QyxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsWUFBb0IsTUFBYyxFQUFVLE1BQWM7UUFBdEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDeEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGFBQWEsQ0FBQyxFQUFrRCxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELEdBQUcsQ0FBQyxvQkFBZ0UsRUFBRSxNQUFnQjtRQUNwRixNQUFNLHFCQUFxQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBELE1BQU0sS0FBSyxHQUFHLHFCQUFxQixDQUFDLFNBQVMsQ0FDM0MsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLG9CQUFvQixDQUFDLEdBQUcsQ0FDeEQsQ0FBQztRQUVGLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ2QscUJBQXFCLENBQUMsS0FBSyxDQUFDLEdBQUcsb0JBQW9CLENBQUM7U0FDckQ7YUFBTTtZQUNMLHFCQUFxQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUV0QyxJQUFJLE1BQU07WUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELEdBQUcsQ0FBQyx1QkFBK0I7UUFDakMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxJQUFJLENBQUMsdUJBQStCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FDckMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssdUJBQXVCLENBQUMsQ0FBQyxDQUMzRixDQUFDO0lBQ0osQ0FBQzs4R0E3Q1UsNEJBQTRCO2tIQUE1Qiw0QkFBNEIsY0FEZixNQUFNOztTQUNuQiw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFJlcGxhY2VhYmxlQ29tcG9uZW50cyB9IGZyb20gJy4uL21vZGVscy9yZXBsYWNlYWJsZS1jb21wb25lbnRzJztcclxuaW1wb3J0IHsgSW50ZXJuYWxTdG9yZSB9IGZyb20gJy4uL3V0aWxzL2ludGVybmFsLXN0b3JlLXV0aWxzJztcclxuaW1wb3J0IHsgcmVsb2FkUm91dGUgfSBmcm9tICcuLi91dGlscy9yb3V0ZS11dGlscyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgUmVwbGFjZWFibGVDb21wb25lbnRzU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZTogSW50ZXJuYWxTdG9yZTxSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnRbXT47XHJcblxyXG4gIGdldCByZXBsYWNlYWJsZUNvbXBvbmVudHMkKCk6IE9ic2VydmFibGU8UmVwbGFjZWFibGVDb21wb25lbnRzLlJlcGxhY2VhYmxlQ29tcG9uZW50W10+IHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlU3RhdGUoc3RhdGUgPT4gc3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlcGxhY2VhYmxlQ29tcG9uZW50cygpOiBSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBvblVwZGF0ZSQoKTogT2JzZXJ2YWJsZTxSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VVcGRhdGUoc3RhdGUgPT4gc3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgdGhpcy5zdG9yZSA9IG5ldyBJbnRlcm5hbFN0b3JlKFtdIGFzIFJlcGxhY2VhYmxlQ29tcG9uZW50cy5SZXBsYWNlYWJsZUNvbXBvbmVudFtdKTtcclxuICB9XHJcblxyXG4gIGFkZChyZXBsYWNlYWJsZUNvbXBvbmVudDogUmVwbGFjZWFibGVDb21wb25lbnRzLlJlcGxhY2VhYmxlQ29tcG9uZW50LCByZWxvYWQ/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCByZXBsYWNlYWJsZUNvbXBvbmVudHMgPSBbLi4udGhpcy5zdG9yZS5zdGF0ZV07XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSByZXBsYWNlYWJsZUNvbXBvbmVudHMuZmluZEluZGV4KFxyXG4gICAgICBjb21wb25lbnQgPT4gY29tcG9uZW50LmtleSA9PT0gcmVwbGFjZWFibGVDb21wb25lbnQua2V5LFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICByZXBsYWNlYWJsZUNvbXBvbmVudHNbaW5kZXhdID0gcmVwbGFjZWFibGVDb21wb25lbnQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXBsYWNlYWJsZUNvbXBvbmVudHMucHVzaChyZXBsYWNlYWJsZUNvbXBvbmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdG9yZS5zZXQocmVwbGFjZWFibGVDb21wb25lbnRzKTtcclxuXHJcbiAgICBpZiAocmVsb2FkKSByZWxvYWRSb3V0ZSh0aGlzLnJvdXRlciwgdGhpcy5uZ1pvbmUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0KHJlcGxhY2VhYmxlQ29tcG9uZW50S2V5OiBzdHJpbmcpOiBSZXBsYWNlYWJsZUNvbXBvbmVudHMuUmVwbGFjZWFibGVDb21wb25lbnQgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMucmVwbGFjZWFibGVDb21wb25lbnRzLmZpbmQoY29tcG9uZW50ID0+IGNvbXBvbmVudC5rZXkgPT09IHJlcGxhY2VhYmxlQ29tcG9uZW50S2V5KTtcclxuICB9XHJcblxyXG4gIGdldCQocmVwbGFjZWFibGVDb21wb25lbnRLZXk6IHN0cmluZyk6IE9ic2VydmFibGU8UmVwbGFjZWFibGVDb21wb25lbnRzLlJlcGxhY2VhYmxlQ29tcG9uZW50IHwgdW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXBsYWNlYWJsZUNvbXBvbmVudHMkLnBpcGUoXHJcbiAgICAgIG1hcChjb21wb25lbnRzID0+IGNvbXBvbmVudHMuZmluZChjb21wb25lbnQgPT4gY29tcG9uZW50LmtleSA9PT0gcmVwbGFjZWFibGVDb21wb25lbnRLZXkpKSxcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|