ng2-rest 18.0.24 → 19.0.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 (50) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/firedev.jsonc +44 -0
  3. package/package.json +2 -2
  4. package/taon.jsonc +52 -0
  5. package/tmp-environment.json +24 -3
  6. package/browser/esm2022/lib/content-type.mjs +0 -13
  7. package/browser/esm2022/lib/cookie.mjs +0 -29
  8. package/browser/esm2022/lib/helpers.mjs +0 -24
  9. package/browser/esm2022/lib/index.mjs +0 -13
  10. package/browser/esm2022/lib/mapping.mjs +0 -250
  11. package/browser/esm2022/lib/models.mjs +0 -172
  12. package/browser/esm2022/lib/other/simple-resource.mjs +0 -118
  13. package/browser/esm2022/lib/params.mjs +0 -279
  14. package/browser/esm2022/lib/request-cache.mjs +0 -101
  15. package/browser/esm2022/lib/resource-service.mjs +0 -220
  16. package/browser/esm2022/lib/rest-headers.mjs +0 -129
  17. package/browser/esm2022/lib/rest-request.mjs +0 -325
  18. package/browser/esm2022/lib/rest.class.mjs +0 -120
  19. package/browser/esm2022/ng2-rest.mjs +0 -5
  20. package/browser/esm2022/public-api.mjs +0 -2
  21. package/client/esm2022/lib/content-type.mjs +0 -13
  22. package/client/esm2022/lib/cookie.mjs +0 -29
  23. package/client/esm2022/lib/helpers.mjs +0 -24
  24. package/client/esm2022/lib/index.mjs +0 -13
  25. package/client/esm2022/lib/mapping.mjs +0 -250
  26. package/client/esm2022/lib/models.mjs +0 -172
  27. package/client/esm2022/lib/other/simple-resource.mjs +0 -118
  28. package/client/esm2022/lib/params.mjs +0 -279
  29. package/client/esm2022/lib/request-cache.mjs +0 -101
  30. package/client/esm2022/lib/resource-service.mjs +0 -220
  31. package/client/esm2022/lib/rest-headers.mjs +0 -129
  32. package/client/esm2022/lib/rest-request.mjs +0 -325
  33. package/client/esm2022/lib/rest.class.mjs +0 -120
  34. package/client/esm2022/ng2-rest.mjs +0 -5
  35. package/client/esm2022/public-api.mjs +0 -2
  36. package/websql/esm2022/lib/content-type.mjs +0 -13
  37. package/websql/esm2022/lib/cookie.mjs +0 -29
  38. package/websql/esm2022/lib/helpers.mjs +0 -24
  39. package/websql/esm2022/lib/index.mjs +0 -13
  40. package/websql/esm2022/lib/mapping.mjs +0 -250
  41. package/websql/esm2022/lib/models.mjs +0 -172
  42. package/websql/esm2022/lib/other/simple-resource.mjs +0 -118
  43. package/websql/esm2022/lib/params.mjs +0 -279
  44. package/websql/esm2022/lib/request-cache.mjs +0 -101
  45. package/websql/esm2022/lib/resource-service.mjs +0 -220
  46. package/websql/esm2022/lib/rest-headers.mjs +0 -129
  47. package/websql/esm2022/lib/rest-request.mjs +0 -325
  48. package/websql/esm2022/lib/rest.class.mjs +0 -120
  49. package/websql/esm2022/ng2-rest.mjs +0 -5
  50. package/websql/esm2022/public-api.mjs +0 -2
@@ -1,172 +0,0 @@
1
- import { Cookie } from './cookie';
2
- import { Mapping } from './mapping';
3
- import { Models as HelpersModels } from 'typescript-class-helpers/browser';
4
- import { JSON10 } from 'json10/browser';
5
- import { RequestCache } from './request-cache';
6
- import { _ } from 'tnp-core/browser';
7
- import { Helpers } from 'tnp-core/browser';
8
- /* */
9
- /* */
10
- export var Models;
11
- (function (Models) {
12
- Models.MethodConfig = HelpersModels.MethodConfig;
13
- Models.ClassConfig = HelpersModels.ClassConfig;
14
- Models.ParamConfig = HelpersModels.ParamConfig;
15
- [];
16
- class BaseBody {
17
- toJSON(data, isJSONArray = false) {
18
- let r = isJSONArray ? [] : {};
19
- if (typeof data === 'string') {
20
- try {
21
- r = JSON.parse(data);
22
- }
23
- catch (e) { }
24
- }
25
- else if (typeof data === 'object') {
26
- return data;
27
- }
28
- return r;
29
- }
30
- }
31
- Models.BaseBody = BaseBody;
32
- class HttpBody extends BaseBody {
33
- constructor(responseText, isArray = false, entity, circular) {
34
- super();
35
- this.responseText = responseText;
36
- this.isArray = isArray;
37
- this.entity = entity;
38
- this.circular = circular;
39
- }
40
- get blob() {
41
- return this.responseText;
42
- }
43
- get booleanValue() {
44
- if (!Helpers.isBlob(this.responseText)) {
45
- return ['ok', 'true'].includes(this.responseText.trim());
46
- }
47
- }
48
- get numericValue() {
49
- if (!Helpers.isBlob(this.responseText)) {
50
- return Number(this.responseText?.trim());
51
- }
52
- }
53
- get rawJson() {
54
- if (!Helpers.isBlob(this.responseText)) {
55
- let res = this.toJSON(this.responseText, this.isArray);
56
- if (this.circular && Array.isArray(this.circular)) {
57
- res = JSON10.parse(JSON.stringify(res), this.circular);
58
- }
59
- return res;
60
- }
61
- }
62
- get json() {
63
- const isBlob = Helpers.isBlob(this.responseText);
64
- if (isBlob) {
65
- return void 0;
66
- }
67
- if (this.entity && typeof this.entity === 'function') {
68
- return this.entity(); // @LAST
69
- }
70
- if (this.entity && typeof this.entity === 'object') {
71
- const json = this.toJSON(this.responseText, this.isArray);
72
- return Mapping.encode(json, this.entity, this.circular);
73
- }
74
- let res = this.toJSON(this.responseText, this.isArray);
75
- if (this.circular && Array.isArray(this.circular)) {
76
- res = JSON10.parse(JSON.stringify(res), this.circular);
77
- }
78
- return res;
79
- }
80
- /**
81
- * undefined when blob
82
- */
83
- get text() {
84
- if (!Helpers.isBlob(this.responseText)) {
85
- return this.responseText
86
- .replace(/^\"/, '')
87
- .replace(/\"$/, '');
88
- }
89
- }
90
- }
91
- Models.HttpBody = HttpBody;
92
- class ErrorBody extends BaseBody {
93
- constructor(data) {
94
- super();
95
- this.data = data;
96
- }
97
- get json() {
98
- return this.toJSON(this.data);
99
- }
100
- get text() {
101
- return this.data;
102
- }
103
- }
104
- Models.ErrorBody = ErrorBody;
105
- class BaseResponse {
106
- static { this.cookies = Cookie.Instance; }
107
- get cookies() {
108
- return BaseResponse.cookies;
109
- }
110
- constructor(responseText, headers, statusCode, isArray = false) {
111
- this.responseText = responseText;
112
- this.headers = headers;
113
- this.statusCode = statusCode;
114
- this.isArray = isArray;
115
- }
116
- }
117
- Models.BaseResponse = BaseResponse;
118
- class HttpResponse extends BaseResponse {
119
- constructor(sourceRequest, responseText, headers, statusCode, entity, circular, jobid, isArray = false) {
120
- super(responseText, headers, statusCode, isArray);
121
- this.sourceRequest = sourceRequest;
122
- this.responseText = responseText;
123
- this.headers = headers;
124
- this.statusCode = statusCode;
125
- this.entity = entity;
126
- this.circular = circular;
127
- this.jobid = jobid;
128
- this.isArray = isArray;
129
- this.init();
130
- }
131
- init() {
132
- if (typeof this.entity === 'string') {
133
- let entityJSON = this.headers?.getAll(this.entity);
134
- if (!!entityJSON) {
135
- this.entity = JSON.parse(entityJSON.join());
136
- }
137
- }
138
- if (typeof this.circular === 'string') {
139
- let circuralJSON = this.headers?.getAll(this.circular);
140
- if (!!circuralJSON) {
141
- this.circular = JSON.parse(circuralJSON.join());
142
- }
143
- }
144
- this.body = new HttpBody(this.responseText, this.isArray, this.entity, this.circular);
145
- }
146
- get cache() {
147
- if (_.isUndefined(this.rq)) {
148
- this.rq = new RequestCache(this);
149
- }
150
- return new RequestCache(this);
151
- }
152
- }
153
- Models.HttpResponse = HttpResponse;
154
- class HttpResponseError extends BaseResponse {
155
- constructor(message, responseText, headers, statusCode, jobid) {
156
- super(responseText, headers, statusCode);
157
- this.message = message;
158
- this.jobid = jobid;
159
- this.body = new ErrorBody(responseText);
160
- }
161
- }
162
- Models.HttpResponseError = HttpResponseError;
163
- /* */
164
- /* */
165
- /* */
166
- /* */
167
- /* */
168
- /* */
169
- })(Models || (Models = {}));
170
- ;
171
- ({}); // @--end-of-file-for-module=ng2-rest lib/models.ts
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxNQUFNLElBQUksYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDM0UsT0FBTyxFQUFFLE1BQU0sRUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLEtBQUs7QUFDTCxLQUFLO0FBSUwsTUFBTSxLQUFXLE1BQU0sQ0E0VHRCO0FBNVRELFdBQWlCLE1BQU07SUFJUCxtQkFBWSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDMUMsa0JBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQ3hDLGtCQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQztJQTBHdEQsRUFBRSxDQUFDO0lBRUgsTUFBc0IsUUFBUTtRQUNsQixNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsR0FBRyxLQUFLO1lBQ3hDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDO29CQUNILENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2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QUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7QUFFTCxDQUFDLEVBNVRnQixNQUFNLEtBQU4sTUFBTSxRQTRUdEI7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG1EQUFtRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2csIExldmVsIH0gZnJvbSAnbmcyLWxvZ2dlci9icm93c2VyJztcbmltcG9ydCB7IFJlc3RIZWFkZXJzIH0gZnJvbSAnLi9yZXN0LWhlYWRlcnMnO1xuaW1wb3J0IHsgUmVzdCB9IGZyb20gJy4vcmVzdC5jbGFzcyc7XG5pbXBvcnQgeyBDb29raWUgfSBmcm9tICcuL2Nvb2tpZSc7XG5pbXBvcnQgeyBNYXBwaW5nIH0gZnJvbSAnLi9tYXBwaW5nJztcbmltcG9ydCB7IEF4aW9zUmVzcG9uc2UgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBNb2RlbHMgYXMgSGVscGVyc01vZGVscyB9IGZyb20gJ3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9icm93c2VyJztcbmltcG9ydCB7IEpTT04xMCwgQ2lyYyB9IGZyb20gJ2pzb24xMC9icm93c2VyJztcbmltcG9ydCB7IFJlcXVlc3RDYWNoZSB9IGZyb20gJy4vcmVxdWVzdC1jYWNoZSc7XG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBDb3JlTW9kZWxzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG4vKiAqL1xuLyogKi9cbiAgXG5cblxuZXhwb3J0IG5hbWVzcGFjZSBNb2RlbHMge1xuICBleHBvcnQgaW1wb3J0IEh0dHBNZXRob2QgPSBDb3JlTW9kZWxzLkh0dHBNZXRob2Q7XG4gIGV4cG9ydCBpbXBvcnQgUGFyYW1UeXBlID0gQ29yZU1vZGVscy5QYXJhbVR5cGU7XG5cbiAgZXhwb3J0IGltcG9ydCBNZXRob2RDb25maWcgPSBIZWxwZXJzTW9kZWxzLk1ldGhvZENvbmZpZztcbiAgZXhwb3J0IGltcG9ydCBDbGFzc0NvbmZpZyA9IEhlbHBlcnNNb2RlbHMuQ2xhc3NDb25maWc7XG4gIGV4cG9ydCBpbXBvcnQgUGFyYW1Db25maWcgPSBIZWxwZXJzTW9kZWxzLlBhcmFtQ29uZmlnO1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSGFuZGxlUmVzdWx0T3B0aW9ucyB7XG4gICAgcmVzOiBNb2RlbHMuTW9ja1Jlc3BvbnNlO1xuICAgIG1ldGhvZDogTW9kZWxzLkh0dHBNZXRob2Q7XG4gICAgam9iaWQ/OiBudW1iZXI7XG4gICAgaXNBcnJheT86IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEhhbmRsZVJlc3VsdFNvdXJjZVJlcXVlc3RPcHRpb25zIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBtZXRob2Q6IE1vZGVscy5IdHRwTWV0aG9kO1xuXG4gICAgYm9keTogYW55O1xuICAgIGlzQXJyYXk6IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgdHlwZSBCYWNrZW5kRXJyb3IgPSB7XG4gICAgbXNnPzogc3RyaW5nO1xuICAgIHN0YWNrPzogc3RyaW5nW107XG4gICAgZGF0YTogYW55O1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIE1ldGFSZXF1ZXN0ID0ge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBlbmRwb2ludDogc3RyaW5nO1xuICAgIGVudGl0eTogTWFwcGluZy5NYXBwaW5nO1xuICAgIGNpcmN1bGFyOiBDaXJjW107XG4gIH07XG4gIGV4cG9ydCB0eXBlIEh0dHBDb2RlID0gMjAwIHwgNDAwIHwgNDAxIHwgNDA0IHwgNTAwO1xuXG4gIGV4cG9ydCB0eXBlIFByb21pc2VPYnNlcnZhYmxlTWl4PFQ+ID0gUHJvbWlzZTxUPiAmIHtcbiAgICBjYWNoZT86IFJlcXVlc3RDYWNoZTtcbiAgICBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFQ+O1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIE1ldGhvZFdpdGhvdXRCb2R5PEUsIFQsIFIgPSBQcm9taXNlT2JzZXJ2YWJsZU1peDxFPj4gPSAoXG4gICAgcGFyYW1zPzogVXJsUGFyYW1zW10sXG4gICAgZG9Ob3RTZXJpYWxpemVQYXJhbXM/OiBib29sZWFuLFxuICApID0+IFI7XG4gIGV4cG9ydCB0eXBlIE1ldGhvZFdpdGhCb2R5PEUsIFQsIFIgPSBQcm9taXNlT2JzZXJ2YWJsZU1peDxFPj4gPSAoXG4gICAgaXRlbT86IFQsXG4gICAgcGFyYW1zPzogVXJsUGFyYW1zW10sXG4gICAgZG9Ob3RTZXJpYWxpemVQYXJhbXM/OiBib29sZWFuLFxuICApID0+IFI7XG4gIGV4cG9ydCB0eXBlIFJlcGxheURhdGEgPSB7XG4gICAgc3ViamVjdDogU3ViamVjdDxhbnk+O1xuICAgIGRhdGE6IHsgdXJsOiBzdHJpbmc7IGJvZHk6IHN0cmluZzsgaGVhZGVyczogUmVzdEhlYWRlcnM7IGlzQXJyYXk6IGJvb2xlYW4gfTtcbiAgICAvKipcbiAgICAgKiBqb2JpZFxuICAgICAqL1xuICAgIGlkOiBudW1iZXI7XG4gIH07XG4gIGV4cG9ydCB0eXBlIFJlcVBhcmFtcyA9IHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBtZXRob2Q6IENvcmVNb2RlbHMuSHR0cE1ldGhvZDtcbiAgICBoZWFkZXJzPzogUmVzdEhlYWRlcnM7XG4gICAgYm9keT86IGFueTtcbiAgICBqb2JpZDogbnVtYmVyO1xuICAgIGlzQXJyYXk6IGJvb2xlYW47XG4gIH07XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZU1vZGVsPEEsIFRBPiB7XG4gICAgbW9kZWw6IChwYXRoTW9kZWxzPzogT2JqZWN0LCByZXNwb25zZU9iamVjdFR5cGU/OiBGdW5jdGlvbikgPT4gUmVzdDxBLCBUQT47XG4gICAgcmVwbGF5OiAobWV0aG9kOiBDb3JlTW9kZWxzLkh0dHBNZXRob2QpID0+IHZvaWQ7XG4gICAgaGVhZGVyczogUmVzdEhlYWRlcnM7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIE5nMlJlc3RNZXRob2RzPEUsIFQ+IHtcbiAgICBnZXQ6IE1ldGhvZFdpdGhvdXRCb2R5PEUsIFQ+O1xuICAgIHBvc3Q6IE1ldGhvZFdpdGhCb2R5PEUsIFQ+O1xuICAgIHB1dDogTWV0aG9kV2l0aEJvZHk8RSwgVD47XG4gICAgcGF0Y2g6IE1ldGhvZFdpdGhCb2R5PEUsIFQ+O1xuICAgIGhlYWQ6IE1ldGhvZFdpdGhvdXRCb2R5PEUsIFQ+O1xuICAgIGRlbGV0ZTogTWV0aG9kV2l0aG91dEJvZHk8RSwgVD47XG4gICAganNvbnA6IE1ldGhvZFdpdGhvdXRCb2R5PEUsIFQ+O1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgTW9ja0NvbnRyb2xsZXIgPSAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgbWV0aG9kOiBDb3JlTW9kZWxzLkh0dHBNZXRob2QsXG4gICAgaGVhZGVycz86IFJlc3RIZWFkZXJzLFxuICAgIGJvZHk/OiBhbnksXG4gICkgPT4gTW9ja1Jlc3BvbnNlO1xuXG4gIGV4cG9ydCB0eXBlIE1vY2tIdHRwID0gTW9ja1Jlc3BvbnNlIHwgTW9ja0NvbnRyb2xsZXI7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBGbk1ldGhvZHNIdHRwPFQsIFRBPlxuICAgIGV4dGVuZHMgTmcyUmVzdE1ldGhvZHM8SHR0cFJlc3BvbnNlPFQ+LCBUPiB7XG4gICAgYXJyYXk6IE5nMlJlc3RNZXRob2RzPEh0dHBSZXNwb25zZTxUQT4sIFRBPjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgRm5NZXRob2RzSHR0cFdpdGhNb2NrPFQsIFRBPlxuICAgIGV4dGVuZHMgTmcyUmVzdE1ldGhvZHM8SHR0cFJlc3BvbnNlPFQ+LCBUPiB7XG4gICAgYXJyYXk6IE5nMlJlc3RNZXRob2RzPEh0dHBSZXNwb25zZTxUQT4sIFRBPjtcbiAgICBtb2NrKG1vY2s6IE1vY2tIdHRwLCBjb2RlOiBIdHRwQ29kZSk6IEZuTWV0aG9kc0h0dHA8VCwgVEE+O1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBOZXN0ZWRQYXJhbXMge1xuICAgIFtwYXJhbXM6IHN0cmluZ106IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgVXJsUGFyYW1zIHtcbiAgICBbdXJsTW9kZWxOYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVnRXhwIHwgT2JqZWN0O1xuICAgIHJlZ2V4PzogUmVnRXhwO1xuICB9XG4gIFtdO1xuXG4gIGV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQm9keSB7XG4gICAgcHJvdGVjdGVkIHRvSlNPTihkYXRhLCBpc0pTT05BcnJheSA9IGZhbHNlKSB7XG4gICAgICBsZXQgciA9IGlzSlNPTkFycmF5ID8gW10gOiB7fTtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHIgYXMgYW55O1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBIdHRwQm9keTxUPiBleHRlbmRzIEJhc2VCb2R5IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgcmVzcG9uc2VUZXh0OiBzdHJpbmcgfCBCbG9iLFxuICAgICAgcHJpdmF0ZSBpc0FycmF5ID0gZmFsc2UsXG4gICAgICBwcml2YXRlIGVudGl0eTogTWFwcGluZy5NYXBwaW5nLFxuICAgICAgcHJpdmF0ZSBjaXJjdWxhcjogQ2lyY1tdLFxuICAgICkge1xuICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJsb2IoKTogQmxvYiB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNwb25zZVRleHQgYXMgQmxvYjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJvb2xlYW5WYWx1ZSgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgIGlmICghSGVscGVycy5pc0Jsb2IodGhpcy5yZXNwb25zZVRleHQpKSB7XG4gICAgICAgIHJldHVybiBbJ29rJywgJ3RydWUnXS5pbmNsdWRlcygodGhpcy5yZXNwb25zZVRleHQgYXMgc3RyaW5nKS50cmltKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbnVtZXJpY1ZhbHVlKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAoIUhlbHBlcnMuaXNCbG9iKHRoaXMucmVzcG9uc2VUZXh0KSkge1xuICAgICAgICByZXR1cm4gTnVtYmVyKHRoaXMucmVzcG9uc2VUZXh0Py50cmltKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmF3SnNvbigpOiBQYXJ0aWFsPFQ+IHtcbiAgICAgIGlmICghSGVscGVycy5pc0Jsb2IodGhpcy5yZXNwb25zZVRleHQpKSB7XG4gICAgICAgIGxldCByZXMgPSB0aGlzLnRvSlNPTih0aGlzLnJlc3BvbnNlVGV4dCwgdGhpcy5pc0FycmF5KTtcbiAgICAgICAgaWYgKHRoaXMuY2lyY3VsYXIgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmNpcmN1bGFyKSkge1xuICAgICAgICAgIHJlcyA9IEpTT04xMC5wYXJzZShKU09OLnN0cmluZ2lmeShyZXMpLCB0aGlzLmNpcmN1bGFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBqc29uKCk6IFQge1xuXG4gICAgICBjb25zdCBpc0Jsb2IgPSBIZWxwZXJzLmlzQmxvYih0aGlzLnJlc3BvbnNlVGV4dCk7XG4gICAgICBpZiAoaXNCbG9iKSB7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5lbnRpdHkgJiYgdHlwZW9mIHRoaXMuZW50aXR5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eSgpOyAvLyBATEFTVFxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZW50aXR5ICYmIHR5cGVvZiB0aGlzLmVudGl0eSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QganNvbiA9IHRoaXMudG9KU09OKHRoaXMucmVzcG9uc2VUZXh0LCB0aGlzLmlzQXJyYXkpO1xuICAgICAgICByZXR1cm4gTWFwcGluZy5lbmNvZGUoanNvbiwgdGhpcy5lbnRpdHksIHRoaXMuY2lyY3VsYXIpIGFzIGFueTtcbiAgICAgIH1cbiAgICAgIGxldCByZXMgPSB0aGlzLnRvSlNPTih0aGlzLnJlc3BvbnNlVGV4dCwgdGhpcy5pc0FycmF5KTtcbiAgICAgIGlmICh0aGlzLmNpcmN1bGFyICYmIEFycmF5LmlzQXJyYXkodGhpcy5jaXJjdWxhcikpIHtcbiAgICAgICAgcmVzID0gSlNPTjEwLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcyksIHRoaXMuY2lyY3VsYXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB1bmRlZmluZWQgd2hlbiBibG9iXG4gICAgICovXG4gICAgcHVibGljIGdldCB0ZXh0KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAoIUhlbHBlcnMuaXNCbG9iKHRoaXMucmVzcG9uc2VUZXh0KSkge1xuICAgICAgICByZXR1cm4gKHRoaXMucmVzcG9uc2VUZXh0IGFzIHN0cmluZylcbiAgICAgICAgICAucmVwbGFjZSgvXlxcXCIvLCAnJylcbiAgICAgICAgICAucmVwbGFjZSgvXFxcIiQvLCAnJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIEVycm9yQm9keSBleHRlbmRzIEJhc2VCb2R5IHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGEpIHtcbiAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBqc29uKCk6IE9iamVjdCB7XG4gICAgICByZXR1cm4gdGhpcy50b0pTT04odGhpcy5kYXRhKTtcbiAgICB9XG4gICAgcHVibGljIGdldCB0ZXh0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVJlc3BvbnNlPFQ+IHtcbiAgICBwcm90ZWN0ZWQgc3RhdGljIHJlYWRvbmx5IGNvb2tpZXMgPSBDb29raWUuSW5zdGFuY2U7XG5cbiAgICBwdWJsaWMgZ2V0IGNvb2tpZXMoKSB7XG4gICAgICByZXR1cm4gQmFzZVJlc3BvbnNlLmNvb2tpZXM7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHVibGljIHJlc3BvbnNlVGV4dD86IHN0cmluZyB8IEJsb2IsXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVycz86IFJlc3RIZWFkZXJzLFxuICAgICAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NvZGU/OiBIdHRwQ29kZSB8IG51bWJlcixcbiAgICAgIHB1YmxpYyBpc0FycmF5ID0gZmFsc2UsXG4gICAgKSB7fVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIEh0dHBSZXNwb25zZTxUPiBleHRlbmRzIEJhc2VSZXNwb25zZTxUPiB7XG4gICAgcHVibGljIGJvZHk6IEh0dHBCb2R5PFQ+O1xuXG5cblxuXG4gICAgcnE6IFJlcXVlc3RDYWNoZTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgIHB1YmxpYyBzb3VyY2VSZXF1ZXN0OiBNb2RlbHMuSGFuZGxlUmVzdWx0U291cmNlUmVxdWVzdE9wdGlvbnMsXG4gICAgICBwdWJsaWMgcmVzcG9uc2VUZXh0Pzogc3RyaW5nIHwgQmxvYixcbiAgICAgIHB1YmxpYyBoZWFkZXJzPzogUmVzdEhlYWRlcnMsXG4gICAgICBwdWJsaWMgc3RhdHVzQ29kZT86IEh0dHBDb2RlIHwgbnVtYmVyLFxuICAgICAgcHVibGljIGVudGl0eT86IE1hcHBpbmcuTWFwcGluZyB8IEZ1bmN0aW9uLFxuICAgICAgcHVibGljIGNpcmN1bGFyPzogQ2lyY1tdLFxuICAgICAgcHVibGljIGpvYmlkPzogbnVtYmVyLFxuICAgICAgcHVibGljIGlzQXJyYXkgPSBmYWxzZSxcbiAgICApIHtcblxuXG5cbiAgICAgIHN1cGVyKHJlc3BvbnNlVGV4dCwgaGVhZGVycywgc3RhdHVzQ29kZSwgaXNBcnJheSk7XG5cbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0KCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmVudGl0eSA9PT0gJ3N0cmluZycpIHtcblxuICAgICAgICBsZXQgZW50aXR5SlNPTiA9IHRoaXMuaGVhZGVycz8uZ2V0QWxsKHRoaXMuZW50aXR5KTtcbiAgICAgICAgaWYgKCEhZW50aXR5SlNPTikge1xuICAgICAgICAgIHRoaXMuZW50aXR5ID0gSlNPTi5wYXJzZShlbnRpdHlKU09OLmpvaW4oKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jaXJjdWxhciA9PT0gJ3N0cmluZycpIHtcblxuICAgICAgICBsZXQgY2lyY3VyYWxKU09OID0gdGhpcy5oZWFkZXJzPy5nZXRBbGwodGhpcy5jaXJjdWxhcik7XG4gICAgICAgIGlmICghIWNpcmN1cmFsSlNPTikge1xuICAgICAgICAgIHRoaXMuY2lyY3VsYXIgPSBKU09OLnBhcnNlKGNpcmN1cmFsSlNPTi5qb2luKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmJvZHkgPSBuZXcgSHR0cEJvZHkoXG4gICAgICAgIHRoaXMucmVzcG9uc2VUZXh0LFxuICAgICAgICB0aGlzLmlzQXJyYXksXG4gICAgICAgIHRoaXMuZW50aXR5LFxuICAgICAgICB0aGlzLmNpcmN1bGFyLFxuICAgICAgKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgZ2V0IGNhY2hlKCkge1xuICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5ycSkpIHtcbiAgICAgICAgdGhpcy5ycSA9IG5ldyBSZXF1ZXN0Q2FjaGUodGhpcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFJlcXVlc3RDYWNoZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgSHR0cFJlc3BvbnNlRXJyb3IgZXh0ZW5kcyBCYXNlUmVzcG9uc2U8YW55PiB7XG4gICAgcHJpdmF0ZSBib2R5OiBFcnJvckJvZHk7XG5cblxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwdWJsaWMgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgcmVzcG9uc2VUZXh0Pzogc3RyaW5nLFxuICAgICAgaGVhZGVycz86IFJlc3RIZWFkZXJzLFxuICAgICAgc3RhdHVzQ29kZT86IEh0dHBDb2RlIHwgbnVtYmVyLFxuICAgICAgcHVibGljIGpvYmlkPzogbnVtYmVyLFxuICAgICkge1xuICAgICAgc3VwZXIocmVzcG9uc2VUZXh0LCBoZWFkZXJzLCBzdGF0dXNDb2RlKTtcbiAgICAgIHRoaXMuYm9keSA9IG5ldyBFcnJvckJvZHkocmVzcG9uc2VUZXh0KTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIE1vY2tSZXNwb25zZSB7XG4gICAgZGF0YT86IGFueTtcbiAgICBjb2RlPzogSHR0cENvZGU7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgaGVhZGVycz86IFJlc3RIZWFkZXJzO1xuICAgIGpvYmlkPzogbnVtYmVyO1xuICAgIGlzQXJyYXk6IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgdHlwZSBSZXNwb25zZVR5cGVBeGlvcyA9XG4gICAgfCAnYmxvYidcbiAgICB8ICd0ZXh0J1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPW5nMi1yZXN0IGxpYi9tb2RlbHMudHMiXX0=
@@ -1,118 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { Resource } from '../resource-service';
3
- /**
4
- *
5
- * @export
6
- * @abstract
7
- * @class SimpleResource
8
- * @extends {Resource<T, A, TA>}
9
- * @template E Endpoint type
10
- * @template A Single modle type
11
- * @template TA Array Model Type
12
- * @template RP rest url parameters type
13
- * @template QP query parameter type
14
- */
15
- class ExtendedResource {
16
- static { this.doNotSerializeQueryParams = false; }
17
- static { this.handlers = []; }
18
- constructor(endpoint, path_model) {
19
- this.endpoint = endpoint;
20
- this.path_model = path_model;
21
- /**
22
- * Get model by rest params
23
- */
24
- this.model = (restParams) => {
25
- return {
26
- get: (queryPrams) => {
27
- return Observable.create((observer) => {
28
- ExtendedResource.handlers.push(this.rest.model(restParams)
29
- .get([queryPrams], ExtendedResource.doNotSerializeQueryParams)
30
- .observable
31
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
32
- });
33
- },
34
- patch: (item, queryParams) => {
35
- return Observable.create((observer) => {
36
- ExtendedResource.handlers.push(this.rest.model(restParams)
37
- .put(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)
38
- .observable
39
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
40
- });
41
- },
42
- head: (queryPrams) => {
43
- return Observable.create((observer) => {
44
- ExtendedResource.handlers.push(this.rest.model(restParams)
45
- .head([queryPrams], ExtendedResource.doNotSerializeQueryParams)
46
- .observable
47
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
48
- });
49
- },
50
- query: (queryPrams) => {
51
- return Observable.create((observer) => {
52
- ExtendedResource.handlers.push(this.rest.model(restParams).
53
- array
54
- .get([queryPrams], ExtendedResource.doNotSerializeQueryParams)
55
- .observable
56
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
57
- });
58
- },
59
- post: (item, queryParams) => {
60
- return Observable.create((observer) => {
61
- ExtendedResource.handlers.push(this.rest.model(restParams)
62
- .post(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)
63
- .observable
64
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
65
- });
66
- },
67
- put: (item, queryParams) => {
68
- return Observable.create((observer) => {
69
- ExtendedResource.handlers.push(this.rest.model(restParams)
70
- .put(item, [queryParams], ExtendedResource.doNotSerializeQueryParams)
71
- .observable
72
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
73
- });
74
- },
75
- delete: (queryPrams) => {
76
- return Observable.create((observer) => {
77
- ExtendedResource.handlers.push(this.rest.model(restParams)
78
- .delete([queryPrams], ExtendedResource.doNotSerializeQueryParams)
79
- .observable
80
- .subscribe(data => observer.next(data.body.json), err => observer.error(err), () => observer.complete()));
81
- });
82
- }
83
- };
84
- };
85
- this.rest = Resource.create(endpoint, path_model);
86
- }
87
- }
88
- /**
89
- *
90
- * @export
91
- * @class SimpleResource
92
- * @template A single model type
93
- * @template TA array model type
94
- * @template RP rest parameters type
95
- * @template QP query parameters type
96
- */
97
- export class SimpleResource {
98
- static { this._isSetQueryParamsSerialization = false; }
99
- static set doNotSerializeQueryParams(value) {
100
- if (!SimpleResource._isSetQueryParamsSerialization) {
101
- SimpleResource._isSetQueryParamsSerialization = true;
102
- ExtendedResource.doNotSerializeQueryParams = value;
103
- return;
104
- }
105
- console.warn(`Query params serialization already set as
106
- ${ExtendedResource.doNotSerializeQueryParams},`);
107
- }
108
- static __destroy() {
109
- ExtendedResource.handlers.forEach(h => h.unsubscribe());
110
- }
111
- constructor(endpoint, model) {
112
- let rest = new ExtendedResource(endpoint, model);
113
- this.model = rest.model;
114
- }
115
- }
116
- ;
117
- ({}); // @--end-of-file-for-module=ng2-rest lib/other/simple-resource.ts
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXJlc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvbmcyLXJlc3QvcHJvamVjdHMvbmcyLXJlc3Qvc3JjL2xpYi9vdGhlci9zaW1wbGUtcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtsQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFxQi9DOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxnQkFBZ0I7YUFDTiw4QkFBeUIsR0FBRyxLQUFLLEFBQVIsQ0FBUzthQUNsQyxhQUFRLEdBQW1CLEVBQUUsQUFBckIsQ0FBc0I7SUE2RzVDLFlBQTJCLFFBQW9CLEVBQVUsVUFBa0I7UUFBaEQsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVE7UUF6RzNFOztVQUVFO1FBQ0YsVUFBSyxHQUF5QixDQUFDLFVBQWUsRUFBRSxFQUFFO1lBRWhELE9BQU87Z0JBRUwsR0FBRyxFQUFFLENBQUMsVUFBZSxFQUFFLEVBQUU7b0JBQ3ZCLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQXFCLEVBQUUsRUFBRTt3QkFDakQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7NkJBQ3ZELEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDOzZCQUM3RCxVQUFVOzZCQUNWLFNBQVMsQ0FDUixJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDckMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUMxQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFBO29CQUNqQyxDQUFDLENBQUMsQ0FBQTtnQkFDSixDQUFDO2dCQUVELEtBQUssRUFBRSxDQUFDLElBQU8sRUFBRSxXQUFnQixFQUFFLEVBQUU7b0JBQ25DLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQXFCLEVBQUUsRUFBRTt3QkFDakQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7NkJBQ3ZELEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQzs2QkFDcEUsVUFBVTs2QkFDVixTQUFTLENBQ1IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDMUIsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtvQkFDakMsQ0FBQyxDQUFDLENBQUE7Z0JBRUosQ0FBQztnQkFFRCxJQUFJLEVBQUUsQ0FBQyxVQUFlLEVBQUUsRUFBRTtvQkFDeEIsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBcUIsRUFBRSxFQUFFO3dCQUNqRCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzs2QkFDdkQsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7NkJBQzlELFVBQVU7NkJBQ1YsU0FBUyxDQUNSLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUNyQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQzFCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7b0JBQ2pDLENBQUMsQ0FBQyxDQUFBO2dCQUNKLENBQUM7Z0JBRUQsS0FBSyxFQUFFLENBQUMsVUFBZSxFQUFFLEVBQUU7b0JBQ3pCLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQXNCLEVBQUUsRUFBRTt3QkFDbEQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7NEJBQ3hELEtBQUs7NkJBQ0osR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7NkJBQzdELFVBQVU7NkJBQ1YsU0FBUyxDQUNSLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUNyQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQzFCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7b0JBQ2pDLENBQUMsQ0FBQyxDQUFBO2dCQUNKLENBQUM7Z0JBR0QsSUFBSSxFQUFFLENBQUMsSUFBTyxFQUFFLFdBQWdCLEVBQUUsRUFBRTtvQkFDbEMsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBcUIsRUFBRSxFQUFFO3dCQUNqRCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzs2QkFDdkQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDOzZCQUNyRSxVQUFVOzZCQUNWLFNBQVMsQ0FDUixJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDckMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUMxQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFBO29CQUNqQyxDQUFDLENBQUMsQ0FBQTtnQkFFSixDQUFDO2dCQUdELEdBQUcsRUFBRSxDQUFDLElBQU8sRUFBRSxXQUFnQixFQUFFLEVBQUU7b0JBQ2pDLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQXFCLEVBQUUsRUFBRTt3QkFDakQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7NkJBQ3ZELEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQzs2QkFDcEUsVUFBVTs2QkFDVixTQUFTLENBQ1IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDMUIsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtvQkFDakMsQ0FBQyxDQUFDLENBQUE7Z0JBRUosQ0FBQztnQkFHRCxNQUFNLEVBQUUsQ0FBQyxVQUFlLEVBQUUsRUFBRTtvQkFDMUIsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBcUIsRUFBRSxFQUFFO3dCQUNqRCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzs2QkFDdkQsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7NkJBQ2hFLFVBQVU7NkJBQ1YsU0FBUyxDQUNSLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUNyQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQzFCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7b0JBQ2pDLENBQUMsQ0FBQyxDQUFBO2dCQUNKLENBQUM7YUFHRixDQUFBO1FBQ0gsQ0FBQyxDQUFBO1FBTUMsSUFBSSxDQUFDLElBQUksR0FBUSxRQUFRLENBQUMsTUFBTSxDQUFhLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUVyRSxDQUFDOztBQU1IOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7YUFJVixtQ0FBOEIsR0FBRyxLQUFLLENBQUM7SUFDL0MsTUFBTSxLQUFLLHlCQUF5QixDQUFDLEtBQUs7UUFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1lBQ25ELGNBQWMsQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUM7WUFDckQsZ0JBQWdCLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFBO1lBQ2xELE9BQU87UUFDVCxDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQztVQUNQLGdCQUFnQixDQUFDLHlCQUF5QixHQUFHLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVM7UUFDckIsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxZQUFZLFFBQWdCLEVBQUUsS0FBYTtRQUN6QyxJQUFJLElBQUksR0FBRyxJQUFJLGdCQUFnQixDQUEwQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzFCLENBQUM7O0FBSUYsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrRUFBa0UiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPYnNlcnZlciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuLi9yZXNvdXJjZS1zZXJ2aWNlJztcblxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdFByb21pc2VzPEEsIFRBLCBRUCBleHRlbmRzIE1vZGVscy5VcmxQYXJhbXM+IHtcbiAgZ2V0OiAocXVlcnlQYXJhbXM/OiBRUCkgPT4gT2JzZXJ2YWJsZTxNb2RlbHMuSHR0cFJlc3BvbnNlPEE+PjtcbiAgaGVhZDogKHF1ZXJ5UGFyYW1zPzogUVApID0+IE9ic2VydmFibGU8TW9kZWxzLkh0dHBSZXNwb25zZTxBPj47XG4gIHF1ZXJ5OiAocXVlcnlQYXJhbXM/OiBRUCkgPT4gT2JzZXJ2YWJsZTxNb2RlbHMuSHR0cFJlc3BvbnNlPFRBPj47XG4gIHB1dDogKGl0ZW0/OiBBLCBxdWVyeVBhcmFtcz86IFFQKSA9PiBPYnNlcnZhYmxlPE1vZGVscy5IdHRwUmVzcG9uc2U8QT4+O1xuICBwYXRjaDogKGl0ZW0/OiBBLCBxdWVyeVBhcmFtcz86IFFQKSA9PiBPYnNlcnZhYmxlPE1vZGVscy5IdHRwUmVzcG9uc2U8QT4+O1xuICBwb3N0OiAoaXRlbT86IEEsIHF1ZXJ5UGFyYW1zPzogUVApID0+IE9ic2VydmFibGU8TW9kZWxzLkh0dHBSZXNwb25zZTxBPj47XG4gIGRlbGV0ZTogKHF1ZXJ5UGFyYW1zPzogUVApID0+IE9ic2VydmFibGU8TW9kZWxzLkh0dHBSZXNwb25zZTxBPiB8IGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWw8QSwgVEEsIFJQIGV4dGVuZHMgT2JqZWN0LCBRUCBleHRlbmRzIE1vZGVscy5VcmxQYXJhbXM+IHtcbiAgKHJlc3RQYXJhbXM/OiBSUCk6IFJlc3RQcm9taXNlczxBLCBUQSwgUVA+O1xufVxuXG5cblxuXG4vKipcbiAqXG4gKiBAZXhwb3J0XG4gKiBAYWJzdHJhY3RcbiAqIEBjbGFzcyBTaW1wbGVSZXNvdXJjZVxuICogQGV4dGVuZHMge1Jlc291cmNlPFQsIEEsIFRBPn1cbiAqIEB0ZW1wbGF0ZSBFICBFbmRwb2ludCB0eXBlXG4gKiBAdGVtcGxhdGUgQSBTaW5nbGUgbW9kbGUgdHlwZVxuICogQHRlbXBsYXRlIFRBIEFycmF5IE1vZGVsIFR5cGVcbiAqIEB0ZW1wbGF0ZSBSUCByZXN0IHVybCBwYXJhbWV0ZXJzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBRUCBxdWVyeSBwYXJhbWV0ZXIgdHlwZVxuICovXG5jbGFzcyBFeHRlbmRlZFJlc291cmNlPEUsIEEsIFRBLCBSUCBleHRlbmRzIE9iamVjdCwgUVAgZXh0ZW5kcyBNb2RlbHMuVXJsUGFyYW1zPiAge1xuICBwdWJsaWMgc3RhdGljIGRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMgPSBmYWxzZTtcbiAgcHVibGljIHN0YXRpYyBoYW5kbGVyczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICByZXN0OiBNb2RlbHMuUmVzb3VyY2VNb2RlbDxBLCBUQT47XG5cbiAgLyoqXG4gICAqIEdldCBtb2RlbCBieSByZXN0IHBhcmFtc1xuICAqL1xuICBtb2RlbDogTW9kZWw8QSwgVEEsIFJQLCBRUD4gPSAocmVzdFBhcmFtcz86IFJQKSA9PiB7XG5cbiAgICByZXR1cm4ge1xuXG4gICAgICBnZXQ6IChxdWVyeVByYW1zPzogUVApID0+IHtcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcjogT2JzZXJ2ZXI8QT4pID0+IHtcbiAgICAgICAgICBFeHRlbmRlZFJlc291cmNlLmhhbmRsZXJzLnB1c2godGhpcy5yZXN0Lm1vZGVsKHJlc3RQYXJhbXMpXG4gICAgICAgICAgICAuZ2V0KFtxdWVyeVByYW1zXSwgRXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKVxuICAgICAgICAgICAgLm9ic2VydmFibGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIGRhdGEgPT4gb2JzZXJ2ZXIubmV4dChkYXRhLmJvZHkuanNvbiksXG4gICAgICAgICAgICAgIGVyciA9PiBvYnNlcnZlci5lcnJvcihlcnIpLFxuICAgICAgICAgICAgICAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpKSlcbiAgICAgICAgfSlcbiAgICAgIH0sXG5cbiAgICAgIHBhdGNoOiAoaXRlbTogQSwgcXVlcnlQYXJhbXM/OiBRUCkgPT4ge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyOiBPYnNlcnZlcjxBPikgPT4ge1xuICAgICAgICAgIEV4dGVuZGVkUmVzb3VyY2UuaGFuZGxlcnMucHVzaCh0aGlzLnJlc3QubW9kZWwocmVzdFBhcmFtcylcbiAgICAgICAgICAgIC5wdXQoaXRlbSwgW3F1ZXJ5UGFyYW1zXSwgRXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKVxuICAgICAgICAgICAgLm9ic2VydmFibGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIGRhdGEgPT4gb2JzZXJ2ZXIubmV4dChkYXRhLmJvZHkuanNvbiksXG4gICAgICAgICAgICAgIGVyciA9PiBvYnNlcnZlci5lcnJvcihlcnIpLFxuICAgICAgICAgICAgICAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpKSlcbiAgICAgICAgfSlcblxuICAgICAgfSxcblxuICAgICAgaGVhZDogKHF1ZXJ5UHJhbXM/OiBRUCkgPT4ge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyOiBPYnNlcnZlcjxBPikgPT4ge1xuICAgICAgICAgIEV4dGVuZGVkUmVzb3VyY2UuaGFuZGxlcnMucHVzaCh0aGlzLnJlc3QubW9kZWwocmVzdFBhcmFtcylcbiAgICAgICAgICAgIC5oZWFkKFtxdWVyeVByYW1zXSwgRXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKVxuICAgICAgICAgICAgLm9ic2VydmFibGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIGRhdGEgPT4gb2JzZXJ2ZXIubmV4dChkYXRhLmJvZHkuanNvbiksXG4gICAgICAgICAgICAgIGVyciA9PiBvYnNlcnZlci5lcnJvcihlcnIpLFxuICAgICAgICAgICAgICAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpKSlcbiAgICAgICAgfSlcbiAgICAgIH0sXG5cbiAgICAgIHF1ZXJ5OiAocXVlcnlQcmFtcz86IFFQKSA9PiB7XG4gICAgICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPFRBPikgPT4ge1xuICAgICAgICAgIEV4dGVuZGVkUmVzb3VyY2UuaGFuZGxlcnMucHVzaCh0aGlzLnJlc3QubW9kZWwocmVzdFBhcmFtcykuXG4gICAgICAgICAgICBhcnJheVxuICAgICAgICAgICAgLmdldChbcXVlcnlQcmFtc10sIEV4dGVuZGVkUmVzb3VyY2UuZG9Ob3RTZXJpYWxpemVRdWVyeVBhcmFtcylcbiAgICAgICAgICAgIC5vYnNlcnZhYmxlXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBkYXRhID0+IG9ic2VydmVyLm5leHQoZGF0YS5ib2R5Lmpzb24pLFxuICAgICAgICAgICAgICBlcnIgPT4gb2JzZXJ2ZXIuZXJyb3IoZXJyKSxcbiAgICAgICAgICAgICAgKCkgPT4gb2JzZXJ2ZXIuY29tcGxldGUoKSkpXG4gICAgICAgIH0pXG4gICAgICB9LFxuXG5cbiAgICAgIHBvc3Q6IChpdGVtOiBBLCBxdWVyeVBhcmFtcz86IFFQKSA9PiB7XG4gICAgICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPEE+KSA9PiB7XG4gICAgICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5oYW5kbGVycy5wdXNoKHRoaXMucmVzdC5tb2RlbChyZXN0UGFyYW1zKVxuICAgICAgICAgICAgLnBvc3QoaXRlbSwgW3F1ZXJ5UGFyYW1zXSwgRXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKVxuICAgICAgICAgICAgLm9ic2VydmFibGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIGRhdGEgPT4gb2JzZXJ2ZXIubmV4dChkYXRhLmJvZHkuanNvbiksXG4gICAgICAgICAgICAgIGVyciA9PiBvYnNlcnZlci5lcnJvcihlcnIpLFxuICAgICAgICAgICAgICAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpKSlcbiAgICAgICAgfSlcblxuICAgICAgfSxcblxuXG4gICAgICBwdXQ6IChpdGVtOiBBLCBxdWVyeVBhcmFtcz86IFFQKSA9PiB7XG4gICAgICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPEE+KSA9PiB7XG4gICAgICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5oYW5kbGVycy5wdXNoKHRoaXMucmVzdC5tb2RlbChyZXN0UGFyYW1zKVxuICAgICAgICAgICAgLnB1dChpdGVtLCBbcXVlcnlQYXJhbXNdLCBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAub2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgZGF0YSA9PiBvYnNlcnZlci5uZXh0KGRhdGEuYm9keS5qc29uKSxcbiAgICAgICAgICAgICAgZXJyID0+IG9ic2VydmVyLmVycm9yKGVyciksXG4gICAgICAgICAgICAgICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpKVxuICAgICAgICB9KVxuXG4gICAgICB9LFxuXG5cbiAgICAgIGRlbGV0ZTogKHF1ZXJ5UHJhbXM/OiBRUCkgPT4ge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyOiBPYnNlcnZlcjxBPikgPT4ge1xuICAgICAgICAgIEV4dGVuZGVkUmVzb3VyY2UuaGFuZGxlcnMucHVzaCh0aGlzLnJlc3QubW9kZWwocmVzdFBhcmFtcylcbiAgICAgICAgICAgIC5kZWxldGUoW3F1ZXJ5UHJhbXNdLCBFeHRlbmRlZFJlc291cmNlLmRvTm90U2VyaWFsaXplUXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAub2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgZGF0YSA9PiBvYnNlcnZlci5uZXh0KGRhdGEuYm9keS5qc29uKSxcbiAgICAgICAgICAgICAgZXJyID0+IG9ic2VydmVyLmVycm9yKGVyciksXG4gICAgICAgICAgICAgICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpKVxuICAgICAgICB9KVxuICAgICAgfVxuXG5cbiAgICB9XG4gIH1cblxuXG5cblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBlbmRwb2ludDogRSB8IHN0cmluZywgcHJpdmF0ZSBwYXRoX21vZGVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc3QgPSA8YW55PlJlc291cmNlLmNyZWF0ZTxBLCBUQT4oPGFueT5lbmRwb2ludCwgcGF0aF9tb2RlbCk7XG5cbiAgfVxuXG59XG5cblxuXG4vKipcbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgU2ltcGxlUmVzb3VyY2VcbiAqIEB0ZW1wbGF0ZSBBIHNpbmdsZSBtb2RlbCB0eXBlXG4gKiBAdGVtcGxhdGUgVEEgYXJyYXkgbW9kZWwgdHlwZVxuICogQHRlbXBsYXRlIFJQIHJlc3QgcGFyYW1ldGVycyB0eXBlXG4gKiBAdGVtcGxhdGUgUVAgcXVlcnkgcGFyYW1ldGVycyB0eXBlXG4gKi9cbmV4cG9ydCBjbGFzcyBTaW1wbGVSZXNvdXJjZTxBLCBUQT4ge1xuICBtb2RlbDogTW9kZWw8QSwgVEEsIE9iamVjdCwgTW9kZWxzLlVybFBhcmFtcz47XG5cblxuICBwcml2YXRlIHN0YXRpYyBfaXNTZXRRdWVyeVBhcmFtc1NlcmlhbGl6YXRpb24gPSBmYWxzZTtcbiAgcHVibGljIHN0YXRpYyBzZXQgZG9Ob3RTZXJpYWxpemVRdWVyeVBhcmFtcyh2YWx1ZSkge1xuICAgIGlmICghU2ltcGxlUmVzb3VyY2UuX2lzU2V0UXVlcnlQYXJhbXNTZXJpYWxpemF0aW9uKSB7XG4gICAgICBTaW1wbGVSZXNvdXJjZS5faXNTZXRRdWVyeVBhcmFtc1NlcmlhbGl6YXRpb24gPSB0cnVlO1xuICAgICAgRXh0ZW5kZWRSZXNvdXJjZS5kb05vdFNlcmlhbGl6ZVF1ZXJ5UGFyYW1zID0gdmFsdWVcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS53YXJuKGBRdWVyeSBwYXJhbXMgc2VyaWFsaXphdGlvbiBhbHJlYWR5IHNldCBhc1xuICAgICAgICAke0V4dGVuZGVkUmVzb3VyY2UuZG9Ob3RTZXJpYWxpemVRdWVyeVBhcmFtc30sYCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIF9fZGVzdHJveSgpIHtcbiAgICBFeHRlbmRlZFJlc291cmNlLmhhbmRsZXJzLmZvckVhY2goaCA9PiBoLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZW5kcG9pbnQ6IHN0cmluZywgbW9kZWw6IHN0cmluZykge1xuICAgIGxldCByZXN0ID0gbmV3IEV4dGVuZGVkUmVzb3VyY2U8c3RyaW5nLCBBLCBUQSwgT2JqZWN0LCBNb2RlbHMuVXJsUGFyYW1zPihlbmRwb2ludCwgbW9kZWwpO1xuICAgIHRoaXMubW9kZWwgPSByZXN0Lm1vZGVsO1xuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPW5nMi1yZXN0IGxpYi9vdGhlci9zaW1wbGUtcmVzb3VyY2UudHMiXX0=