@snabcentr/client-core 2.63.0 → 2.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/esm2022/catalog/tokens/sc-count-first-discounted-products.mjs +5 -3
  2. package/esm2022/guards/catalog-seo.guard.mjs +71 -0
  3. package/esm2022/guards/index.mjs +2 -1
  4. package/esm2022/guards/sc-id-or-slug.guard.mjs +3 -3
  5. package/esm2022/httpInterceptors/tokens/sc-guest-endpoints.mjs +5 -3
  6. package/esm2022/httpInterceptors/tokens/sc-guest-parameter-name.mjs +5 -3
  7. package/esm2022/pagination/services/sc-pagination.service.mjs +3 -3
  8. package/esm2022/pipes/sc-id-or-slug.pipe.mjs +2 -2
  9. package/esm2022/providers/index.mjs +2 -4
  10. package/esm2022/providers/sc-category.providers.mjs +40 -0
  11. package/esm2022/providers/ssr.providers.mjs +7 -4
  12. package/esm2022/services/sc-seo.service.mjs +28 -2
  13. package/esm2022/tokens/index.mjs +7 -3
  14. package/esm2022/tokens/notification-options.mjs +5 -3
  15. package/esm2022/tokens/sc-api-keys.mjs +1 -1
  16. package/esm2022/tokens/sc-cache-lifetime.mjs +1 -1
  17. package/esm2022/tokens/sc-company-info.mjs +6 -0
  18. package/esm2022/tokens/sc-configurator-components.mjs +1 -1
  19. package/esm2022/tokens/sc-configurator-settings.mjs +1 -1
  20. package/esm2022/tokens/sc-date-format.mjs +3 -3
  21. package/esm2022/tokens/sc-default-page-meta.mjs +7 -3
  22. package/esm2022/tokens/sc-error-handler.mjs +6 -0
  23. package/esm2022/tokens/sc-feedback-api.mjs +3 -3
  24. package/esm2022/tokens/sc-id-or-slug-in-route.mjs +8 -0
  25. package/esm2022/tokens/sc-linear-values-token.mjs +5 -3
  26. package/esm2022/tokens/sc-product-pagination-options.mjs +22 -0
  27. package/esm2022/tokens/sc-release.mjs +1 -1
  28. package/esm2022/tokens/sc-update-interval.mjs +1 -1
  29. package/esm2022/tokens/sc-urls.mjs +1 -1
  30. package/esm2022/user/tokens/sc-user-providers.mjs +7 -6
  31. package/esm2022/warehouse/services/sc-warehouse.service.mjs +2 -2
  32. package/fesm2022/snabcentr-client-core.mjs +543 -394
  33. package/fesm2022/snabcentr-client-core.mjs.map +1 -1
  34. package/guards/catalog-seo.guard.d.ts +14 -0
  35. package/guards/index.d.ts +1 -0
  36. package/httpInterceptors/tokens/sc-guest-endpoints.d.ts +2 -1
  37. package/httpInterceptors/tokens/sc-guest-parameter-name.d.ts +2 -1
  38. package/package.json +1 -1
  39. package/pagination/services/sc-pagination.service.d.ts +4 -2
  40. package/providers/index.d.ts +1 -3
  41. package/providers/sc-category.providers.d.ts +11 -0
  42. package/services/sc-seo.service.d.ts +14 -0
  43. package/tokens/index.d.ts +6 -2
  44. package/tokens/notification-options.d.ts +2 -1
  45. package/tokens/sc-api-keys.d.ts +1 -1
  46. package/tokens/sc-cache-lifetime.d.ts +1 -1
  47. package/tokens/sc-configurator-components.d.ts +2 -1
  48. package/tokens/sc-configurator-settings.d.ts +1 -1
  49. package/tokens/sc-default-page-meta.d.ts +7 -2
  50. package/tokens/sc-error-handler.d.ts +11 -0
  51. package/{providers → tokens}/sc-id-or-slug-in-route.d.ts +1 -1
  52. package/tokens/sc-linear-values-token.d.ts +2 -1
  53. package/tokens/sc-release.d.ts +1 -1
  54. package/tokens/sc-update-interval.d.ts +1 -1
  55. package/tokens/sc-urls.d.ts +1 -1
  56. package/esm2022/providers/sc-company-info.mjs +0 -6
  57. package/esm2022/providers/sc-id-or-slug-in-route.mjs +0 -6
  58. package/esm2022/providers/sc-product-pagination-options.mjs +0 -19
  59. /package/{providers → tokens}/sc-company-info.d.ts +0 -0
  60. /package/{providers → tokens}/sc-product-pagination-options.d.ts +0 -0
@@ -0,0 +1,14 @@
1
+ import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
2
+ import { Observable } from 'rxjs';
3
+ /**
4
+ * Устанавливает SEO-теги для страницы продукта.
5
+ */
6
+ export declare const productSeoGuard: ({ paramMap }: ActivatedRouteSnapshot, state: RouterStateSnapshot) => false | Observable<boolean>;
7
+ /**
8
+ * Устанавливает SEO-теги для страницы виртуальной категории.
9
+ */
10
+ export declare const virtualCategorySeoGuard: ({ paramMap }: ActivatedRouteSnapshot, state: RouterStateSnapshot) => false | Observable<boolean>;
11
+ /**
12
+ * Устанавливает SEO-теги для страницы категории.
13
+ */
14
+ export declare const categorySeoGuard: ({ paramMap }: ActivatedRouteSnapshot, state: RouterStateSnapshot) => false | Observable<boolean>;
package/guards/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
+ export * from './catalog-seo.guard';
1
2
  export * from './sc-auth-as-client.guard';
2
3
  export * from './sc-id-or-slug.guard';
@@ -1,4 +1,5 @@
1
+ import { InjectionToken } from '@angular/core';
1
2
  /**
2
3
  * Токен списка URL, которые нужно кешировать для гостя.
3
4
  */
4
- export declare const SC_GUEST_ENDPOINTS_TOKEN: import("@angular/core").InjectionToken<string[]>;
5
+ export declare const SC_GUEST_ENDPOINTS_TOKEN: InjectionToken<string[]>;
@@ -1,4 +1,5 @@
1
+ import { InjectionToken } from '@angular/core';
1
2
  /**
2
3
  * Токен имени параметра, при котором кешируются запросы у гостя.
3
4
  */
4
- export declare const SC_GUEST_PARAMETER_NAME_TOKEN: import("@angular/core").InjectionToken<string>;
5
+ export declare const SC_GUEST_PARAMETER_NAME_TOKEN: InjectionToken<string>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snabcentr/client-core",
3
- "version": "2.63.0",
3
+ "version": "2.64.0",
4
4
  "author": "Snabcentr Ltd.",
5
5
  "repository": "https://gitlab.snabcentr.met/web/angular/snabcentr-client-core-lib",
6
6
  "license": "Commercial",
@@ -1,7 +1,9 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
- import { ScCatalogService, ScProduct } from '../../catalog';
4
- import { ScIPaginate, ScIPaginationParams } from '../dto';
3
+ import { ScProduct } from '../../catalog/dto/sc-product';
4
+ import { ScCatalogService } from '../../catalog/services/sc-catalog.service';
5
+ import { ScIPaginate } from '../dto/sc-i-paginate';
6
+ import { ScIPaginationParams } from '../dto/sc-i-pagination-params';
5
7
  import * as i0 from "@angular/core";
6
8
  /**
7
9
  * Сервис пагинации.
@@ -1,9 +1,7 @@
1
1
  export * from './interfaces';
2
- export * from './sc-id-or-slug-in-route';
3
- export * from './sc-product-pagination-options';
2
+ export * from './sc-category.providers';
4
3
  export * from './terminal.providers';
5
4
  export * from './search-term.providers';
6
5
  export * from './ssr.providers';
7
6
  export * from './types/sc-provider';
8
7
  export * from './virtual-category.providers';
9
- export * from './sc-company-info';
@@ -0,0 +1,11 @@
1
+ import { InjectionToken, Provider } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { ScCategory } from '../catalog/dto/sc-category';
4
+ /**
5
+ * Токен потока данных о категории.
6
+ */
7
+ export declare const CATEGORY_INFO: InjectionToken<Observable<ScCategory | null>>;
8
+ /**
9
+ * Провайдеры потока данных о категории.
10
+ */
11
+ export declare const CATEGORY_PROVIDERS: Provider[];
@@ -38,6 +38,14 @@ export declare class ScSeoService {
38
38
  * Объект {@link Document}, предоставляющий доступ к DOM страницы.
39
39
  */
40
40
  private readonly document;
41
+ /**
42
+ * Фабрика для создания экземпляров {@link Renderer2}.
43
+ */
44
+ private readonly rendererFactory;
45
+ /**
46
+ * Экземпляр {@link Renderer2} для безопасной работы с DOM.
47
+ */
48
+ private readonly renderer;
41
49
  /**
42
50
  * Название компании.
43
51
  */
@@ -116,6 +124,12 @@ export declare class ScSeoService {
116
124
  * @param defaultKeyWords Ключевые слова страницы используемые в случае отсутствия ключевых слов в SEO-ресурсе.
117
125
  */
118
126
  getGenerateSeoResource(seo: ScISeo | undefined, defaultTitle: string, defaultDescription?: string, defaultKeyWords?: string): ScISeo;
127
+ /**
128
+ * Устанавливает тег канонической страницы <link rel="canonical" href="..." />.
129
+ *
130
+ * @param url URL который необходимо использовать в качестве ссылки.
131
+ */
132
+ setCanonicalLink(url: string): void;
119
133
  /**
120
134
  * Устанавливает title-заголовок страницы.
121
135
  *
package/tokens/index.d.ts CHANGED
@@ -1,15 +1,19 @@
1
1
  export * from './notification-options';
2
2
  export * from './sc-api-keys';
3
3
  export * from './sc-cache-lifetime';
4
+ export * from './sc-company-info';
4
5
  export * from './sc-company-name';
5
6
  export * from './sc-configurator-components';
6
- export * from './sc-configurator-settings';
7
+ export * from './sc-date-format';
7
8
  export * from './sc-default-page-meta';
9
+ export * from './sc-error-handler';
10
+ export * from './sc-configurator-settings';
11
+ export * from './sc-id-or-slug-in-route';
8
12
  export * from './sc-is-hidden-error-alert';
9
13
  export * from './sc-linear-values-token';
10
14
  export * from './sc-path-image-not-found';
15
+ export * from './sc-product-pagination-options';
11
16
  export * from './sc-release';
12
17
  export * from './sc-update-interval';
13
18
  export * from './sc-urls';
14
19
  export * from './sc-feedback-api';
15
- export * from './sc-date-format';
@@ -1,3 +1,4 @@
1
+ import { InjectionToken } from '@angular/core';
1
2
  /**
2
3
  * Параметры авторизации под клиентом.
3
4
  */
@@ -18,4 +19,4 @@ export declare const SC_AUTH_AS_CLIENT_DEFAULT_OPTIONS: ScAuthAsClientOptions;
18
19
  /**
19
20
  * Параметры авторизации под клиентом.
20
21
  */
21
- export declare const SC_AUTH_AS_CLIENT_OPTIONS: import("@angular/core").InjectionToken<ScAuthAsClientOptions>;
22
+ export declare const SC_AUTH_AS_CLIENT_OPTIONS: InjectionToken<ScAuthAsClientOptions>;
@@ -1,5 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- import { ScIApiKeys } from '../config';
2
+ import { ScIApiKeys } from '../config/sc-i-api-keys';
3
3
  /**
4
4
  * Токен внедрения заголовков ключей доступа к API.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- import { ScICacheLifetime } from '../config';
2
+ import { ScICacheLifetime } from '../config/sc-i-cache-lifetime';
3
3
  /**
4
4
  * Токен внедрения времени жизни данных.
5
5
  */
@@ -1,5 +1,6 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- import { ScIConfiguratorBase, ScTypeByKey } from '../configurator';
2
+ import { ScIConfiguratorBase } from '../configurator/dto/sc-i-configurator-base';
3
+ import { ScTypeByKey } from '../configurator/types/sc-type-by-key';
3
4
  /**
4
5
  * Токен внедрения компонентов конфигураторов по их названию.
5
6
  */
@@ -1,5 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- import { ScIConfiguratorSettingsBase } from '../configurator';
2
+ import { ScIConfiguratorSettingsBase } from '../configurator/dto/sc-i-configurator-settings-base';
3
3
  import { ScTypeByKey } from '../configurator/types/sc-type-by-key';
4
4
  /**
5
5
  * Токен внедрения моделей настроек конфигураторов по их названию.
@@ -1,5 +1,10 @@
1
- import { ScIDefaultPageMeta } from '../config';
1
+ import { InjectionToken } from '@angular/core';
2
+ import { ScIDefaultPageMeta } from '../config/sc-i-default-page-meta';
2
3
  /**
3
4
  * Токен внедрения мета-данных страницы по умолчанию.
4
5
  */
5
- export declare const SC_DEFAULT_PAGE_META: import("@angular/core").InjectionToken<ScIDefaultPageMeta>;
6
+ export declare const SC_DEFAULT_PAGE_META: InjectionToken<ScIDefaultPageMeta>;
7
+ /**
8
+ * Токен внедрения мета-данных страницы каталога.
9
+ */
10
+ export declare const SC_CATALOG_PAGE_META: InjectionToken<ScIDefaultPageMeta>;
@@ -0,0 +1,11 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ /**
3
+ * Тип функции для установки кода ошибки.
4
+ *
5
+ * @param code Код ошибки.
6
+ */
7
+ export type SetCodeNumberType = (code: number) => void;
8
+ /**
9
+ * Токен внедрения обработчика ошибок.
10
+ */
11
+ export declare const ERROR_HANDLER: InjectionToken<SetCodeNumberType>;
@@ -2,4 +2,4 @@ import { InjectionToken } from '@angular/core';
2
2
  /**
3
3
  * Токен определяющий, идентификатор или символьное обозначение (slug) используется для роутинга и маршрутизации.
4
4
  */
5
- export declare const SC_ID_OR_SLUG_IN_ROUTE: InjectionToken<'id' | 'slug'>;
5
+ export declare const SC_ID_OR_SLUG_IN_ROUTE: InjectionToken<"id" | "slug">;
@@ -1,3 +1,4 @@
1
+ import { InjectionToken } from '@angular/core';
1
2
  /**
2
3
  * Единицы измерения линейной величины по умолчанию.
3
4
  */
@@ -5,4 +6,4 @@ export declare const SC_LINEAR_VALUES: string[];
5
6
  /**
6
7
  * Токен единиц измерения линейной величины по умолчанию.
7
8
  */
8
- export declare const SC_LINEAR_VALUES_TOKEN: import("@angular/core").InjectionToken<string[]>;
9
+ export declare const SC_LINEAR_VALUES_TOKEN: InjectionToken<string[]>;
@@ -1,5 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- import { ScIAppRelease } from '../config';
2
+ import { ScIAppRelease } from '../config/sc-i-app-release';
3
3
  /**
4
4
  * Токен внедрения информации о релизе.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- import { ScIUpdateInterval } from '../config';
2
+ import { ScIUpdateInterval } from '../config/sc-i-update-interval';
3
3
  /**
4
4
  * Токен внедрения интервалов обновления данных.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- import { ScIUrls } from '../config';
2
+ import { ScIUrls } from '../config/sc-i-urls';
3
3
  /**
4
4
  * Токен внедрения списка ссылок приложения.
5
5
  */
@@ -1,6 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- /**
3
- * Токен для получения полной информации о компании.
4
- */
5
- export const SC_COMPANY_INFO = new InjectionToken('SC_COMPANY_INFO');
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29tcGFueS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9wcm92aWRlcnMvc2MtY29tcGFueS1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQXVDLElBQUksY0FBYyxDQUFxQixpQkFBaUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2NJQ29tcGFueUJhc2VJbmZvIH0gZnJvbSAnLi4vY29uZmlnL3NjLWktY29tcGFueS1iYXNlLWluZm8nO1xuXG4vKipcbiAqINCi0L7QutC10L0g0LTQu9GPINC/0L7Qu9GD0YfQtdC90LjRjyDQv9C+0LvQvdC+0Lkg0LjQvdGE0L7RgNC80LDRhtC40Lgg0L4g0LrQvtC80L/QsNC90LjQuC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNDX0NPTVBBTllfSU5GTzogSW5qZWN0aW9uVG9rZW48U2NJQ29tcGFueUJhc2VJbmZvPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTY0lDb21wYW55QmFzZUluZm8+KCdTQ19DT01QQU5ZX0lORk8nKTtcbiJdfQ==
@@ -1,6 +0,0 @@
1
- import { tuiCreateToken } from '@taiga-ui/cdk';
2
- /**
3
- * Токен определяющий, идентификатор или символьное обозначение (slug) используется для роутинга и маршрутизации.
4
- */
5
- export const SC_ID_OR_SLUG_IN_ROUTE = tuiCreateToken('id');
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaWQtb3Itc2x1Zy1pbi1yb3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvcHJvdmlkZXJzL3NjLWlkLW9yLXNsdWctaW4tcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFrQyxjQUFjLENBQWdCLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHR1aUNyZWF0ZVRva2VuIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5cbi8qKlxuICog0KLQvtC60LXQvSDQvtC/0YDQtdC00LXQu9GP0Y7RidC40LksINC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCDRgdC40LzQstC+0LvRjNC90L7QtSDQvtCx0L7Qt9C90LDRh9C10L3QuNC1IChzbHVnKSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQu9GPINGA0L7Rg9GC0LjQvdCz0LAg0Lgg0LzQsNGA0YjRgNGD0YLQuNC30LDRhtC40LguXG4gKi9cbmV4cG9ydCBjb25zdCBTQ19JRF9PUl9TTFVHX0lOX1JPVVRFOiBJbmplY3Rpb25Ub2tlbjwnaWQnIHwgJ3NsdWcnPiA9IHR1aUNyZWF0ZVRva2VuPCdpZCcgfCAnc2x1Zyc+KCdpZCcpO1xuIl19
@@ -1,19 +0,0 @@
1
- import { EventEmitter } from '@angular/core';
2
- import { tuiCreateToken } from '@taiga-ui/cdk';
3
- /**
4
- * Значения пагинации списка товаров категории по умолчанию.
5
- */
6
- export const SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS = {
7
- perPage: 20,
8
- paginate: true,
9
- page: 0,
10
- };
11
- /**
12
- * Токен значений пагинации списка товаров в каталоге по умолчанию.
13
- */
14
- export const SC_PRODUCT_PAGINATION_OPTIONS = tuiCreateToken(SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS);
15
- /**
16
- * Токен {@link EventEmitter} событие нажатия на кнопку "Показать следующие позиции категории".
17
- */
18
- export const SC_NEXT_PAGE_PAGINATION_CLICK = tuiCreateToken(new EventEmitter());
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZHVjdC1wYWdpbmF0aW9uLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3Byb3ZpZGVycy9zYy1wcm9kdWN0LXBhZ2luYXRpb24tb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQXdCO0lBQ3RFLE9BQU8sRUFBRSxFQUFFO0lBQ1gsUUFBUSxFQUFFLElBQUk7SUFDZCxJQUFJLEVBQUUsQ0FBQztDQUNWLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUF3QyxjQUFjLENBQUMscUNBQXFDLENBQUMsQ0FBQztBQUV4STs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUF1QyxjQUFjLENBQUMsSUFBSSxZQUFZLEVBQVEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHVpQ3JlYXRlVG9rZW4gfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcblxuaW1wb3J0IHsgU2NJUGFnaW5hdGlvblBhcmFtcyB9IGZyb20gJy4uL3BhZ2luYXRpb24vZHRvL3NjLWktcGFnaW5hdGlvbi1wYXJhbXMnO1xuXG4vKipcbiAqINCX0L3QsNGH0LXQvdC40Y8g0L/QsNCz0LjQvdCw0YbQuNC4INGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7QsiDQutCw0YLQtdCz0L7RgNC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gKi9cbmV4cG9ydCBjb25zdCBTQ19QUk9EVUNUX1BBR0lOQVRJT05fREVGQVVMVF9PUFRJT05TOiBTY0lQYWdpbmF0aW9uUGFyYW1zID0ge1xuICAgIHBlclBhZ2U6IDIwLFxuICAgIHBhZ2luYXRlOiB0cnVlLFxuICAgIHBhZ2U6IDAsXG59O1xuXG4vKipcbiAqINCi0L7QutC10L0g0LfQvdCw0YfQtdC90LjQuSDQv9Cw0LPQuNC90LDRhtC40Lgg0YHQv9C40YHQutCwINGC0L7QstCw0YDQvtCyINCyINC60LDRgtCw0LvQvtCz0LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gKi9cbmV4cG9ydCBjb25zdCBTQ19QUk9EVUNUX1BBR0lOQVRJT05fT1BUSU9OUzogSW5qZWN0aW9uVG9rZW48U2NJUGFnaW5hdGlvblBhcmFtcz4gPSB0dWlDcmVhdGVUb2tlbihTQ19QUk9EVUNUX1BBR0lOQVRJT05fREVGQVVMVF9PUFRJT05TKTtcblxuLyoqXG4gKiAg0KLQvtC60LXQvSB7QGxpbmsgRXZlbnRFbWl0dGVyfSDRgdC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCf0L7QutCw0LfQsNGC0Ywg0YHQu9C10LTRg9GO0YnQuNC1INC/0L7Qt9C40YbQuNC4INC60LDRgtC10LPQvtGA0LjQuFwiLlxuICovXG5leHBvcnQgY29uc3QgU0NfTkVYVF9QQUdFX1BBR0lOQVRJT05fQ0xJQ0s6IEluamVjdGlvblRva2VuPEV2ZW50RW1pdHRlcjx2b2lkPj4gPSB0dWlDcmVhdGVUb2tlbihuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCkpO1xuIl19
File without changes