@esolve/ng-esolve-connect 0.15.2 → 0.16.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 (58) hide show
  1. package/esm2020/lib/manufacturers/esolve-manufacturer-image-size.type.mjs +2 -0
  2. package/esm2020/lib/manufacturers/esolve-manufacturer.model.mjs +30 -13
  3. package/esm2020/lib/manufacturers/esolve-manufacturers.service.mjs +2 -2
  4. package/esm2020/lib/manufacturers/index.mjs +7 -2
  5. package/esm2020/lib/media/esolve-media.service.mjs +3 -3
  6. package/esm2020/lib/news/esolve-news-article-options.interface.mjs +1 -1
  7. package/esm2020/lib/news/esolve-news-article-record.interface.mjs +1 -1
  8. package/esm2020/lib/news/esolve-news-article.model.mjs +65 -13
  9. package/esm2020/lib/news/esolve-news.service.mjs +56 -46
  10. package/esm2020/lib/news/index.mjs +1 -3
  11. package/esm2020/lib/ranges/esolve-range.model.mjs +35 -14
  12. package/esm2020/lib/ranges/esolve-ranges.service.mjs +2 -2
  13. package/esm2020/lib/shared/assets/esolve-asset-list.type.mjs +2 -0
  14. package/esm2020/lib/shared/assets/esolve-asset-options.interface.mjs +2 -0
  15. package/esm2020/lib/shared/assets/esolve-asset-record.interface.mjs +2 -0
  16. package/esm2020/lib/shared/assets/esolve-asset.model.mjs +58 -0
  17. package/esm2020/lib/shared/assets/esolve-assets.service.mjs +93 -0
  18. package/esm2020/lib/shared/assets/index.mjs +11 -2
  19. package/esm2020/lib/stock/esolve-stock-item-base.model.mjs +5 -5
  20. package/esm2020/lib/tags/esolve-tag-options.interface.mjs +2 -0
  21. package/esm2020/lib/tags/esolve-tag-phrase-match-mode.type.mjs +2 -0
  22. package/esm2020/lib/tags/esolve-tag-record.interface.mjs +1 -1
  23. package/esm2020/lib/tags/esolve-tag.model.mjs +32 -6
  24. package/esm2020/lib/tags/esolve-tags.service.mjs +76 -0
  25. package/esm2020/lib/tags/index.mjs +9 -2
  26. package/esm2020/lib/topics/esolve-topic.model.mjs +12 -6
  27. package/esm2020/lib/topics/esolve-topic.service.mjs +2 -2
  28. package/fesm2015/esolve-ng-esolve-connect.mjs +1778 -1427
  29. package/fesm2015/esolve-ng-esolve-connect.mjs.map +1 -1
  30. package/fesm2020/esolve-ng-esolve-connect.mjs +1762 -1423
  31. package/fesm2020/esolve-ng-esolve-connect.mjs.map +1 -1
  32. package/lib/manufacturers/esolve-manufacturer-image-size.type.d.ts +1 -0
  33. package/lib/manufacturers/esolve-manufacturer.model.d.ts +4 -3
  34. package/lib/manufacturers/index.d.ts +2 -1
  35. package/lib/news/esolve-news-article-options.interface.d.ts +1 -0
  36. package/lib/news/esolve-news-article-record.interface.d.ts +8 -4
  37. package/lib/news/esolve-news-article.model.d.ts +13 -2
  38. package/lib/news/esolve-news.service.d.ts +2 -1
  39. package/lib/news/index.d.ts +0 -2
  40. package/lib/ranges/esolve-range.model.d.ts +2 -2
  41. package/lib/shared/assets/esolve-asset-list.type.d.ts +3 -0
  42. package/lib/shared/assets/esolve-asset-options.interface.d.ts +12 -0
  43. package/lib/shared/assets/esolve-asset-record.interface.d.ts +26 -0
  44. package/lib/shared/assets/esolve-asset.model.d.ts +28 -0
  45. package/lib/shared/assets/esolve-assets.service.d.ts +19 -0
  46. package/lib/shared/assets/index.d.ts +6 -1
  47. package/lib/tags/esolve-tag-options.interface.d.ts +6 -0
  48. package/lib/tags/esolve-tag-phrase-match-mode.type.d.ts +1 -0
  49. package/lib/tags/esolve-tag-record.interface.d.ts +1 -0
  50. package/lib/tags/esolve-tag.model.d.ts +14 -3
  51. package/lib/tags/esolve-tags.service.d.ts +22 -0
  52. package/lib/tags/index.d.ts +4 -1
  53. package/lib/topics/esolve-topic.model.d.ts +1 -1
  54. package/package.json +1 -1
  55. package/esm2020/lib/news/esolve-news-manufacturer-record.interface.mjs +0 -2
  56. package/esm2020/lib/news/esolve-news-range-record.interface.mjs +0 -2
  57. package/lib/news/esolve-news-manufacturer-record.interface.d.ts +0 -8
  58. package/lib/news/esolve-news-range-record.interface.d.ts +0 -9
@@ -0,0 +1 @@
1
+ export declare type EsolveManufacturerImageSize = 'small' | 'thumb' | 'tiny' | 'original';
@@ -1,5 +1,7 @@
1
1
  import { EsolveSeoInfo } from '../shared/seo/esolve-seo-info.model';
2
2
  import { EsolveSeoDetails } from '../shared/seo/esolve-seo-details.interface';
3
+ import { EsolveManufacturerRecord } from './esolve-manufacturer-record.interface';
4
+ import { EsolveManufacturerImageSize } from './esolve-manufacturer-image-size.type';
3
5
  export declare class EsolveManufacturer implements EsolveSeoDetails {
4
6
  id: number;
5
7
  manufacturer: string;
@@ -11,11 +13,10 @@ export declare class EsolveManufacturer implements EsolveSeoDetails {
11
13
  featured: boolean;
12
14
  image_name: string;
13
15
  seo_details: EsolveSeoInfo;
14
- private image_path;
15
16
  get original_image_src(): string;
16
17
  get small_image_src(): string;
17
18
  get thumbnail_image_src(): string;
18
19
  get tiny_image_src(): string;
19
- constructor(id: number, manufacturer: string, sef_manufacturer: string, title: string, article: string, sort_priority: number, is_active: boolean, featured: boolean, image_name: string, seo_title?: string, seo_keywords?: string, seo_description?: string);
20
- getImagePath(image_size: 'small' | 'thumb' | 'tiny' | 'original'): string;
20
+ constructor(record?: Partial<EsolveManufacturerRecord>);
21
+ getImagePath(image_size: EsolveManufacturerImageSize): string;
21
22
  }
@@ -1,4 +1,5 @@
1
- export * from './esolve-manufacturer.model';
1
+ export * from './esolve-manufacturer-image-size.type';
2
2
  export * from './esolve-manufacturer-record.interface';
3
3
  export * from './esolve-manufacturer-options.interface';
4
+ export * from './esolve-manufacturer.model';
4
5
  export * from './esolve-manufacturers.service';
@@ -8,4 +8,5 @@ export interface EsolveNewsArticleOptions {
8
8
  ranges_id?: number;
9
9
  from_date?: string;
10
10
  to_date?: string;
11
+ search_phrase?: string;
11
12
  }
@@ -1,6 +1,8 @@
1
+ import { EsolveTagRecord } from '../tags';
2
+ import { EsolveTopicRecord } from '../topics';
3
+ import { EsolveManufacturerRecord } from '../manufacturers';
4
+ import { EsolveRangeRecord } from '../ranges';
1
5
  import { EsolveNewsGroupRecord } from './esolve-news-group-record.interface';
2
- import { EsolveNewsRangeRecord } from './esolve-news-range-record.interface';
3
- import { EsolveNewsManufacturerRecord } from './esolve-news-manufacturer-record.interface';
4
6
  import { EsolveNewsArticleAuthorRecord } from './esolve-news-article-author-record.interface';
5
7
  export interface EsolveNewsArticleRecord {
6
8
  id: number;
@@ -11,9 +13,9 @@ export interface EsolveNewsArticleRecord {
11
13
  news_group_id: number;
12
14
  news_group: EsolveNewsGroupRecord;
13
15
  manufacturers_id: number;
14
- manufacturer: EsolveNewsManufacturerRecord;
16
+ manufacturer: EsolveManufacturerRecord;
15
17
  ranges_id: number;
16
- range: EsolveNewsRangeRecord;
18
+ range: EsolveRangeRecord;
17
19
  userid: number;
18
20
  user: EsolveNewsArticleAuthorRecord;
19
21
  article: string;
@@ -24,4 +26,6 @@ export interface EsolveNewsArticleRecord {
24
26
  image: string;
25
27
  featured: boolean;
26
28
  modified: string;
29
+ topics: EsolveTopicRecord[];
30
+ tags: EsolveTagRecord[];
27
31
  }
@@ -1,6 +1,12 @@
1
1
  import { EsolveSeoInfo } from '../shared/seo/esolve-seo-info.model';
2
2
  import { EsolveSeoDetails } from '../shared/seo/esolve-seo-details.interface';
3
+ import { EsolveTag } from '../tags';
4
+ import { EsolveTopic } from '../topics';
5
+ import { EsolveManufacturer } from '../manufacturers';
6
+ import { EsolveRange } from '../ranges';
7
+ import { EsolveNewsGroup } from './esolve-news-group.model';
3
8
  import { EsolveNewsArticleAuthor } from './esolve-news-article-author.model';
9
+ import { EsolveNewsArticleRecord } from './esolve-news-article-record.interface';
4
10
  export declare class EsolveNewsArticle implements EsolveSeoDetails {
5
11
  id: number;
6
12
  title: string;
@@ -11,7 +17,12 @@ export declare class EsolveNewsArticle implements EsolveSeoDetails {
11
17
  active: boolean;
12
18
  image: string;
13
19
  featured: boolean;
14
- author: EsolveNewsArticleAuthor;
20
+ topics: EsolveTopic[];
21
+ tags: EsolveTag[];
22
+ author?: EsolveNewsArticleAuthor;
23
+ group?: EsolveNewsGroup;
24
+ manufacturer?: EsolveManufacturer;
25
+ range?: EsolveRange;
15
26
  seo_details: EsolveSeoInfo;
16
- constructor(id: number, title: string, sef_title: string, article: string, short_description: string, txdate: string, active: boolean, image: string, featured: boolean, author: EsolveNewsArticleAuthor, seo_title?: string, seo_keywords?: string);
27
+ constructor(record?: Partial<EsolveNewsArticleRecord>);
17
28
  }
@@ -11,10 +11,11 @@ export declare class EsolveNewsService {
11
11
  private http;
12
12
  constructor(config: EsolveConnectConfig, http: HttpClient);
13
13
  getNewsArticle(identifier: string): Observable<EsolveNewsArticle>;
14
- getNewsArticles(options: EsolveNewsArticleOptions): Observable<EsolveNewsArticleList>;
14
+ getNewsArticles(options?: EsolveNewsArticleOptions): Observable<EsolveNewsArticleList>;
15
15
  getNewsGroups(): Observable<EsolveNewsGroup[]>;
16
16
  private processNewsArticle;
17
17
  private getNewsRecords;
18
+ private parseOptions;
18
19
  static ɵfac: i0.ɵɵFactoryDeclaration<EsolveNewsService, never>;
19
20
  static ɵprov: i0.ɵɵInjectableDeclaration<EsolveNewsService>;
20
21
  }
@@ -6,6 +6,4 @@ export * from './esolve-news-article-list.model';
6
6
  export * from './esolve-news-article-author.model';
7
7
  export * from './esolve-news-article-author-record.interface';
8
8
  export * from './esolve-news-article-options.interface';
9
- export * from './esolve-news-range-record.interface';
10
- export * from './esolve-news-manufacturer-record.interface';
11
9
  export * from './esolve-news.service';
@@ -1,5 +1,6 @@
1
1
  import { EsolveSeoInfo } from '../shared/seo/esolve-seo-info.model';
2
2
  import { EsolveSeoDetails } from '../shared/seo/esolve-seo-details.interface';
3
+ import { EsolveRangeRecord } from './esolve-range-record.interface';
3
4
  export declare class EsolveRange implements EsolveSeoDetails {
4
5
  id: number;
5
6
  range: string;
@@ -12,8 +13,7 @@ export declare class EsolveRange implements EsolveSeoDetails {
12
13
  sort_priority: number;
13
14
  image_name: string;
14
15
  seo_details: EsolveSeoInfo;
15
- private image_path;
16
16
  get image_src(): string;
17
- constructor(id: number, range: string, sef_range: string, manufacturers_id: number, title: string, article: string, is_active: boolean, featured: boolean, sort_priority: number, image_name: string, seo_title?: string, seo_keywords?: string, seo_description?: string);
17
+ constructor(record?: Partial<EsolveRangeRecord>);
18
18
  getImagePath(): string;
19
19
  }
@@ -0,0 +1,3 @@
1
+ import { EsolveList } from '../esolve-list.model';
2
+ import { EsolveAsset } from './esolve-asset.model';
3
+ export declare type EsolveAssetList = EsolveList<EsolveAsset>;
@@ -0,0 +1,12 @@
1
+ import { EsolveAssetType } from './esolve-asset-type.type';
2
+ export interface EsolveAssetOptions {
3
+ category_id?: string;
4
+ subcategory_id?: number;
5
+ manufacturers_id?: number;
6
+ ranges_id?: number;
7
+ asset_type?: EsolveAssetType;
8
+ asset_category?: string;
9
+ asset_sub_category?: string;
10
+ rows?: number;
11
+ page?: number;
12
+ }
@@ -0,0 +1,26 @@
1
+ import { EsolveCategoryTreeItemRecord } from '../../category-tree';
2
+ import { EsolveManufacturerRecord } from '../../manufacturers';
3
+ import { EsolveRangeRecord } from '../../ranges';
4
+ import { EsolveTagRecord } from '../../tags';
5
+ import { EsolveTopicRecord } from '../../topics';
6
+ import { EsolveAssetType } from './esolve-asset-type.type';
7
+ export interface EsolveAssetRecord {
8
+ id: number;
9
+ src: string;
10
+ name: string;
11
+ type: EsolveAssetType;
12
+ description: string;
13
+ document_number?: string;
14
+ document_type?: string;
15
+ area_of_application?: string;
16
+ asset_category?: string;
17
+ asset_sub_category?: string;
18
+ sort_priority?: number;
19
+ created?: string;
20
+ category?: EsolveCategoryTreeItemRecord;
21
+ subcategory?: EsolveCategoryTreeItemRecord;
22
+ manufacturer?: EsolveManufacturerRecord;
23
+ range?: EsolveRangeRecord;
24
+ topics?: EsolveTopicRecord[];
25
+ tags?: EsolveTagRecord[];
26
+ }
@@ -0,0 +1,28 @@
1
+ import { EsolveCategoryTreeItem } from '../../category-tree';
2
+ import { EsolveManufacturer } from '../../manufacturers';
3
+ import { EsolveRange } from '../../ranges';
4
+ import { EsolveTag } from '../../tags';
5
+ import { EsolveTopic } from '../../topics';
6
+ import { EsolveAssetType } from './esolve-asset-type.type';
7
+ import { EsolveAssetRecord } from './esolve-asset-record.interface';
8
+ export declare class EsolveAsset {
9
+ id: number;
10
+ src: string;
11
+ name: string;
12
+ type?: EsolveAssetType;
13
+ description: string;
14
+ document_number: string;
15
+ document_type: string;
16
+ area_of_application: string;
17
+ asset_category: string;
18
+ asset_sub_category: string;
19
+ sort_priority: number;
20
+ created?: string;
21
+ category?: EsolveCategoryTreeItem;
22
+ subcategory?: EsolveCategoryTreeItem;
23
+ manufacturer?: EsolveManufacturer;
24
+ range?: EsolveRange;
25
+ topics: EsolveTopic[];
26
+ tags: EsolveTag[];
27
+ constructor(record: EsolveAssetRecord);
28
+ }
@@ -0,0 +1,19 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import { EsolveConnectConfig } from '../../esolve-connect.config';
4
+ import { EsolveAssetOptions } from './esolve-asset-options.interface';
5
+ import { EsolveAsset } from './esolve-asset.model';
6
+ import { EsolveAssetList } from './esolve-asset-list.type';
7
+ import * as i0 from "@angular/core";
8
+ export declare class EsolveAssetsService {
9
+ private config;
10
+ private http;
11
+ constructor(config: EsolveConnectConfig, http: HttpClient);
12
+ getAsset(id: number): Observable<EsolveAsset>;
13
+ getAssets(options?: EsolveAssetOptions): Observable<EsolveAssetList>;
14
+ private processAsset;
15
+ private parseOptions;
16
+ private getAssetRecords;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsolveAssetsService, never>;
18
+ static ɵprov: i0.ɵɵInjectableDeclaration<EsolveAssetsService>;
19
+ }
@@ -1,3 +1,8 @@
1
+ export * from './esolve-asset-list.type';
2
+ export * from './esolve-asset-type.type';
1
3
  export * from './esolve-linked-asset-record.interface';
4
+ export * from './esolve-asset-options.interface';
5
+ export * from './esolve-asset-record.interface';
2
6
  export * from './esolve-linked-asset.model';
3
- export * from './esolve-asset-type.type';
7
+ export * from './esolve-asset.model';
8
+ export * from './esolve-assets.service';
@@ -0,0 +1,6 @@
1
+ import { EsolveTagPhraseMatchMode } from './esolve-tag-phrase-match-mode.type';
2
+ export interface EsolveTagOptions {
3
+ tags_id?: number | number[];
4
+ phrase?: string;
5
+ phrase_match_mode?: EsolveTagPhraseMatchMode;
6
+ }
@@ -0,0 +1 @@
1
+ export declare type EsolveTagPhraseMatchMode = 'contains' | 'not_equals' | 'equals';
@@ -3,4 +3,5 @@ export interface EsolveTagRecord {
3
3
  tag_phrase: string;
4
4
  tag_weight: number;
5
5
  description: string;
6
+ image_name: string;
6
7
  }
@@ -1,7 +1,18 @@
1
+ import { EsolveTagRecord } from './esolve-tag-record.interface';
1
2
  export declare class EsolveTag {
2
3
  id: number;
3
- tag_phrase: string;
4
- tag_weight: number;
4
+ phrase: string;
5
+ weight: number;
5
6
  description: string;
6
- constructor(id: number, tag_phrase: string, tag_weight: number, description: string);
7
+ image_name: string;
8
+ /**
9
+ * @deprecated To be removed in the future. Use `EsolveTag.phrase` instead
10
+ */
11
+ get tag_phrase(): string;
12
+ /**
13
+ * @deprecated To be removed in the future. Use `EsolveTag.weight` instead
14
+ */
15
+ get tag_weight(): number;
16
+ constructor(record?: Partial<EsolveTagRecord>);
17
+ getImagePath(): string;
7
18
  }
@@ -0,0 +1,22 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import { EsolveConnectConfig } from '../esolve-connect.config';
4
+ import { EsolveTag } from './esolve-tag.model';
5
+ import { EsolveTagOptions } from './esolve-tag-options.interface';
6
+ import * as i0 from "@angular/core";
7
+ export declare class EsolveTagsService {
8
+ private config;
9
+ private http;
10
+ constructor(config: EsolveConnectConfig, http: HttpClient);
11
+ /**
12
+ * Retrieves active topics from the list of topic ID's. Note that inactive or expired
13
+ * topics will not be retrieved.
14
+ *
15
+ * @param options Tag filters
16
+ */
17
+ getTags(options?: EsolveTagOptions): Observable<EsolveTag[]>;
18
+ private parseOptions;
19
+ private processTags;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsolveTagsService, never>;
21
+ static ɵprov: i0.ɵɵInjectableDeclaration<EsolveTagsService>;
22
+ }
@@ -1,2 +1,5 @@
1
- export * from './esolve-tag.model';
1
+ export * from './esolve-tag-phrase-match-mode.type';
2
2
  export * from './esolve-tag-record.interface';
3
+ export * from './esolve-tag-options.interface';
4
+ export * from './esolve-tag.model';
5
+ export * from './esolve-tags.service';
@@ -3,5 +3,5 @@ export declare class EsolveTopic {
3
3
  name: string;
4
4
  short_description: string;
5
5
  sort_priority: number;
6
- constructor(id: number, name: string, short_description: string, sort_priority: number);
6
+ constructor(record?: Partial<EsolveTopic>);
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esolve/ng-esolve-connect",
3
- "version": "0.15.2",
3
+ "version": "0.16.0",
4
4
  "description": "An Angular library that speaks to an eSolve instance's API",
5
5
  "peerDependencies": {
6
6
  "@angular/common": ">=12.0.0",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLW5ld3MtbWFudWZhY3R1cmVyLXJlY29yZC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL25ld3MvZXNvbHZlLW5ld3MtbWFudWZhY3R1cmVyLXJlY29yZC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRXNvbHZlTmV3c01hbnVmYWN0dXJlclJlY29yZCB7XHJcbiAgICBpZDogbnVtYmVyO1xyXG4gICAgbWFudWZhY3R1cmVyOiBzdHJpbmc7XHJcbiAgICBzZWZfbWFudWZhY3R1cmVyOiBzdHJpbmc7XHJcbiAgICBzb3J0X3ByaW9yaXR5OiBudW1iZXI7XHJcbiAgICBpc19hY3RpdmU6IGJvb2xlYW47XHJcbiAgICBmZWF0dXJlZDogYm9vbGVhbjtcclxufVxyXG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLW5ld3MtcmFuZ2UtcmVjb3JkLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvbmV3cy9lc29sdmUtbmV3cy1yYW5nZS1yZWNvcmQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEVzb2x2ZU5ld3NSYW5nZVJlY29yZCB7XHJcbiAgICBpZDogbnVtYmVyO1xyXG4gICAgcmFuZ2U6IHN0cmluZztcclxuICAgIHNlZl9yYW5nZTogc3RyaW5nO1xyXG4gICAgbWFudWZhY3R1cmVyc19pZDogbnVtYmVyO1xyXG4gICAgc29ydF9wcmlvcml0eTogbnVtYmVyO1xyXG4gICAgaXNfYWN0aXZlOiBib29sZWFuO1xyXG4gICAgZmVhdHVyZWQ6IGJvb2xlYW47XHJcbn1cclxuIl19
@@ -1,8 +0,0 @@
1
- export interface EsolveNewsManufacturerRecord {
2
- id: number;
3
- manufacturer: string;
4
- sef_manufacturer: string;
5
- sort_priority: number;
6
- is_active: boolean;
7
- featured: boolean;
8
- }
@@ -1,9 +0,0 @@
1
- export interface EsolveNewsRangeRecord {
2
- id: number;
3
- range: string;
4
- sef_range: string;
5
- manufacturers_id: number;
6
- sort_priority: number;
7
- is_active: boolean;
8
- featured: boolean;
9
- }