@aneoconsultingfr/armonik.api.angular 3.11.0-edge.89.ab31d7c → 3.11.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 (55) hide show
  1. package/README.md +1 -1
  2. package/esm2022/lib/generated/applications-common.pb.mjs +22 -618
  3. package/esm2022/lib/generated/applications-fields.pb.mjs +231 -0
  4. package/esm2022/lib/generated/applications-filters.pb.mjs +349 -0
  5. package/esm2022/lib/generated/applications-service.pb.mjs +1 -1
  6. package/esm2022/lib/generated/applications-service.pbsc.mjs +6 -36
  7. package/esm2022/lib/generated/events-common.pb.mjs +19 -3
  8. package/esm2022/lib/generated/filters-common.pb.mjs +642 -0
  9. package/esm2022/lib/generated/partitions-common.pb.mjs +25 -433
  10. package/esm2022/lib/generated/partitions-fields.pb.mjs +233 -0
  11. package/esm2022/lib/generated/partitions-filters.pb.mjs +431 -0
  12. package/esm2022/lib/generated/partitions-service.pb.mjs +1 -1
  13. package/esm2022/lib/generated/partitions-service.pbsc.mjs +10 -10
  14. package/esm2022/lib/generated/results-common.pb.mjs +33 -565
  15. package/esm2022/lib/generated/results-fields.pb.mjs +234 -0
  16. package/esm2022/lib/generated/results-filters.pb.mjs +546 -0
  17. package/esm2022/lib/generated/results-service.pb.mjs +1 -1
  18. package/esm2022/lib/generated/results-service.pbsc.mjs +39 -39
  19. package/esm2022/lib/generated/sessions-common.pb.mjs +104 -822
  20. package/esm2022/lib/generated/sessions-fields.pb.mjs +504 -0
  21. package/esm2022/lib/generated/sessions-filters.pb.mjs +602 -0
  22. package/esm2022/lib/generated/sessions-service.pb.mjs +1 -1
  23. package/esm2022/lib/generated/sessions-service.pbsc.mjs +24 -24
  24. package/esm2022/lib/generated/tasks-common.pb.mjs +166 -900
  25. package/esm2022/lib/generated/tasks-fields.pb.mjs +513 -0
  26. package/esm2022/lib/generated/tasks-filters.pb.mjs +602 -0
  27. package/esm2022/lib/generated/tasks-service.pb.mjs +1 -1
  28. package/esm2022/lib/generated/tasks-service.pbsc.mjs +36 -36
  29. package/esm2022/lib/index.mjs +22 -12
  30. package/fesm2022/aneoconsultingfr-armonik.api.angular.mjs +11857 -10006
  31. package/fesm2022/aneoconsultingfr-armonik.api.angular.mjs.map +1 -1
  32. package/lib/generated/applications-common.pb.d.ts +11 -388
  33. package/lib/generated/applications-fields.pb.d.ts +153 -0
  34. package/lib/generated/applications-filters.pb.d.ts +222 -0
  35. package/lib/generated/applications-service.pbsc.d.ts +5 -21
  36. package/lib/generated/events-common.pb.d.ts +5 -0
  37. package/lib/generated/filters-common.pb.d.ts +408 -0
  38. package/lib/generated/partitions-common.pb.d.ts +15 -260
  39. package/lib/generated/partitions-fields.pb.d.ts +155 -0
  40. package/lib/generated/partitions-filters.pb.d.ts +240 -0
  41. package/lib/generated/partitions-service.pbsc.d.ts +9 -9
  42. package/lib/generated/results-common.pb.d.ts +24 -295
  43. package/lib/generated/results-fields.pb.d.ts +156 -0
  44. package/lib/generated/results-filters.pb.d.ts +315 -0
  45. package/lib/generated/results-service.pbsc.d.ts +38 -38
  46. package/lib/generated/sessions-common.pb.d.ts +76 -489
  47. package/lib/generated/sessions-fields.pb.d.ts +318 -0
  48. package/lib/generated/sessions-filters.pb.d.ts +327 -0
  49. package/lib/generated/sessions-service.pbsc.d.ts +19 -19
  50. package/lib/generated/tasks-common.pb.d.ts +139 -561
  51. package/lib/generated/tasks-fields.pb.d.ts +327 -0
  52. package/lib/generated/tasks-filters.pb.d.ts +327 -0
  53. package/lib/generated/tasks-service.pbsc.d.ts +31 -31
  54. package/lib/index.d.ts +21 -11
  55. package/package.json +2 -2
@@ -0,0 +1,234 @@
1
+ import { BinaryReader, BinaryWriter } from 'google-protobuf';
2
+ export var ResultRawEnumField;
3
+ (function (ResultRawEnumField) {
4
+ ResultRawEnumField[ResultRawEnumField["RESULT_RAW_ENUM_FIELD_UNSPECIFIED"] = 0] = "RESULT_RAW_ENUM_FIELD_UNSPECIFIED";
5
+ ResultRawEnumField[ResultRawEnumField["RESULT_RAW_ENUM_FIELD_SESSION_ID"] = 1] = "RESULT_RAW_ENUM_FIELD_SESSION_ID";
6
+ ResultRawEnumField[ResultRawEnumField["RESULT_RAW_ENUM_FIELD_NAME"] = 2] = "RESULT_RAW_ENUM_FIELD_NAME";
7
+ ResultRawEnumField[ResultRawEnumField["RESULT_RAW_ENUM_FIELD_OWNER_TASK_ID"] = 3] = "RESULT_RAW_ENUM_FIELD_OWNER_TASK_ID";
8
+ ResultRawEnumField[ResultRawEnumField["RESULT_RAW_ENUM_FIELD_STATUS"] = 4] = "RESULT_RAW_ENUM_FIELD_STATUS";
9
+ ResultRawEnumField[ResultRawEnumField["RESULT_RAW_ENUM_FIELD_CREATED_AT"] = 5] = "RESULT_RAW_ENUM_FIELD_CREATED_AT";
10
+ ResultRawEnumField[ResultRawEnumField["RESULT_RAW_ENUM_FIELD_COMPLETED_AT"] = 6] = "RESULT_RAW_ENUM_FIELD_COMPLETED_AT";
11
+ ResultRawEnumField[ResultRawEnumField["RESULT_RAW_ENUM_FIELD_RESULT_ID"] = 7] = "RESULT_RAW_ENUM_FIELD_RESULT_ID";
12
+ })(ResultRawEnumField || (ResultRawEnumField = {}));
13
+ /**
14
+ * Message implementation for armonik.api.grpc.v1.results.ResultRawField
15
+ */
16
+ export class ResultRawField {
17
+ static { this.id = 'armonik.api.grpc.v1.results.ResultRawField'; }
18
+ /**
19
+ * Deserialize binary data to message
20
+ * @param instance message instance
21
+ */
22
+ static deserializeBinary(bytes) {
23
+ const instance = new ResultRawField();
24
+ ResultRawField.deserializeBinaryFromReader(instance, new BinaryReader(bytes));
25
+ return instance;
26
+ }
27
+ /**
28
+ * Check all the properties and set default protobuf values if necessary
29
+ * @param _instance message instance
30
+ */
31
+ static refineValues(_instance) {
32
+ _instance.field = _instance.field || 0;
33
+ }
34
+ /**
35
+ * Deserializes / reads binary message into message instance using provided binary reader
36
+ * @param _instance message instance
37
+ * @param _reader binary reader instance
38
+ */
39
+ static deserializeBinaryFromReader(_instance, _reader) {
40
+ while (_reader.nextField()) {
41
+ if (_reader.isEndGroup())
42
+ break;
43
+ switch (_reader.getFieldNumber()) {
44
+ case 1:
45
+ _instance.field = _reader.readEnum();
46
+ break;
47
+ default:
48
+ _reader.skipField();
49
+ }
50
+ }
51
+ ResultRawField.refineValues(_instance);
52
+ }
53
+ /**
54
+ * Serializes a message to binary format using provided binary reader
55
+ * @param _instance message instance
56
+ * @param _writer binary writer instance
57
+ */
58
+ static serializeBinaryToWriter(_instance, _writer) {
59
+ if (_instance.field) {
60
+ _writer.writeEnum(1, _instance.field);
61
+ }
62
+ }
63
+ /**
64
+ * Message constructor. Initializes the properties and applies default Protobuf values if necessary
65
+ * @param _value initial values object or instance of ResultRawField to deeply clone from
66
+ */
67
+ constructor(_value) {
68
+ _value = _value || {};
69
+ this.field = _value.field;
70
+ ResultRawField.refineValues(this);
71
+ }
72
+ get field() {
73
+ return this._field;
74
+ }
75
+ set field(value) {
76
+ this._field = value;
77
+ }
78
+ /**
79
+ * Serialize message to binary data
80
+ * @param instance message instance
81
+ */
82
+ serializeBinary() {
83
+ const writer = new BinaryWriter();
84
+ ResultRawField.serializeBinaryToWriter(this, writer);
85
+ return writer.getResultBuffer();
86
+ }
87
+ /**
88
+ * Cast message to standard JavaScript object (all non-primitive values are deeply cloned)
89
+ */
90
+ toObject() {
91
+ return {
92
+ field: this.field
93
+ };
94
+ }
95
+ /**
96
+ * Convenience method to support JSON.stringify(message), replicates the structure of toObject()
97
+ */
98
+ toJSON() {
99
+ return this.toObject();
100
+ }
101
+ /**
102
+ * Cast message to JSON using protobuf JSON notation: https://developers.google.com/protocol-buffers/docs/proto3#json
103
+ * Attention: output differs from toObject() e.g. enums are represented as names and not as numbers, Timestamp is an ISO Date string format etc.
104
+ * If the message itself or some of descendant messages is google.protobuf.Any, you MUST provide a message pool as options. If not, the messagePool is not required
105
+ */
106
+ toProtobufJSON(
107
+ // @ts-ignore
108
+ options) {
109
+ return {
110
+ field: ResultRawEnumField[this.field === null || this.field === undefined ? 0 : this.field]
111
+ };
112
+ }
113
+ }
114
+ /**
115
+ * Message implementation for armonik.api.grpc.v1.results.ResultField
116
+ */
117
+ export class ResultField {
118
+ static { this.id = 'armonik.api.grpc.v1.results.ResultField'; }
119
+ /**
120
+ * Deserialize binary data to message
121
+ * @param instance message instance
122
+ */
123
+ static deserializeBinary(bytes) {
124
+ const instance = new ResultField();
125
+ ResultField.deserializeBinaryFromReader(instance, new BinaryReader(bytes));
126
+ return instance;
127
+ }
128
+ /**
129
+ * Check all the properties and set default protobuf values if necessary
130
+ * @param _instance message instance
131
+ */
132
+ static refineValues(_instance) { }
133
+ /**
134
+ * Deserializes / reads binary message into message instance using provided binary reader
135
+ * @param _instance message instance
136
+ * @param _reader binary reader instance
137
+ */
138
+ static deserializeBinaryFromReader(_instance, _reader) {
139
+ while (_reader.nextField()) {
140
+ if (_reader.isEndGroup())
141
+ break;
142
+ switch (_reader.getFieldNumber()) {
143
+ case 1:
144
+ _instance.resultRawField = new ResultRawField();
145
+ _reader.readMessage(_instance.resultRawField, ResultRawField.deserializeBinaryFromReader);
146
+ break;
147
+ default:
148
+ _reader.skipField();
149
+ }
150
+ }
151
+ ResultField.refineValues(_instance);
152
+ }
153
+ /**
154
+ * Serializes a message to binary format using provided binary reader
155
+ * @param _instance message instance
156
+ * @param _writer binary writer instance
157
+ */
158
+ static serializeBinaryToWriter(_instance, _writer) {
159
+ if (_instance.resultRawField) {
160
+ _writer.writeMessage(1, _instance.resultRawField, ResultRawField.serializeBinaryToWriter);
161
+ }
162
+ }
163
+ /**
164
+ * Message constructor. Initializes the properties and applies default Protobuf values if necessary
165
+ * @param _value initial values object or instance of ResultField to deeply clone from
166
+ */
167
+ constructor(_value) {
168
+ this._field = ResultField.FieldCase.none;
169
+ _value = _value || {};
170
+ this.resultRawField = _value.resultRawField
171
+ ? new ResultRawField(_value.resultRawField)
172
+ : undefined;
173
+ ResultField.refineValues(this);
174
+ }
175
+ get resultRawField() {
176
+ return this._resultRawField;
177
+ }
178
+ set resultRawField(value) {
179
+ if (value !== undefined && value !== null) {
180
+ this._field = ResultField.FieldCase.resultRawField;
181
+ }
182
+ this._resultRawField = value;
183
+ }
184
+ get field() {
185
+ return this._field;
186
+ }
187
+ /**
188
+ * Serialize message to binary data
189
+ * @param instance message instance
190
+ */
191
+ serializeBinary() {
192
+ const writer = new BinaryWriter();
193
+ ResultField.serializeBinaryToWriter(this, writer);
194
+ return writer.getResultBuffer();
195
+ }
196
+ /**
197
+ * Cast message to standard JavaScript object (all non-primitive values are deeply cloned)
198
+ */
199
+ toObject() {
200
+ return {
201
+ resultRawField: this.resultRawField
202
+ ? this.resultRawField.toObject()
203
+ : undefined
204
+ };
205
+ }
206
+ /**
207
+ * Convenience method to support JSON.stringify(message), replicates the structure of toObject()
208
+ */
209
+ toJSON() {
210
+ return this.toObject();
211
+ }
212
+ /**
213
+ * Cast message to JSON using protobuf JSON notation: https://developers.google.com/protocol-buffers/docs/proto3#json
214
+ * Attention: output differs from toObject() e.g. enums are represented as names and not as numbers, Timestamp is an ISO Date string format etc.
215
+ * If the message itself or some of descendant messages is google.protobuf.Any, you MUST provide a message pool as options. If not, the messagePool is not required
216
+ */
217
+ toProtobufJSON(
218
+ // @ts-ignore
219
+ options) {
220
+ return {
221
+ resultRawField: this.resultRawField
222
+ ? this.resultRawField.toProtobufJSON(options)
223
+ : null
224
+ };
225
+ }
226
+ }
227
+ (function (ResultField) {
228
+ let FieldCase;
229
+ (function (FieldCase) {
230
+ FieldCase[FieldCase["none"] = 0] = "none";
231
+ FieldCase[FieldCase["resultRawField"] = 1] = "resultRawField";
232
+ })(FieldCase = ResultField.FieldCase || (ResultField.FieldCase = {}));
233
+ })(ResultField || (ResultField = {}));
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy1maWVsZHMucGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmVvY29uc3VsdGluZ2ZyL2FybW9uaWsuYXBpLmFuZ3VsYXIvc3JjL2xpYi9nZW5lcmF0ZWQvcmVzdWx0cy1maWVsZHMucGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQWMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxNQUFNLENBQU4sSUFBWSxrQkFTWDtBQVRELFdBQVksa0JBQWtCO0lBQzVCLHFIQUFxQyxDQUFBO0lBQ3JDLG1IQUFvQyxDQUFBO0lBQ3BDLHVHQUE4QixDQUFBO0lBQzlCLHlIQUF1QyxDQUFBO0lBQ3ZDLDJHQUFnQyxDQUFBO0lBQ2hDLG1IQUFvQyxDQUFBO0lBQ3BDLHVIQUFzQyxDQUFBO0lBQ3RDLGlIQUFtQyxDQUFBO0FBQ3JDLENBQUMsRUFUVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBUzdCO0FBQ0Q7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYzthQUNsQixPQUFFLEdBQUcsNENBQTRDLENBQUM7SUFFekQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQWlCO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDdEMsY0FBYyxDQUFDLDJCQUEyQixDQUN4QyxRQUFRLEVBQ1IsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQ3hCLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUF5QjtRQUMzQyxTQUFTLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLDJCQUEyQixDQUNoQyxTQUF5QixFQUN6QixPQUFx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ZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELE9BQU8sTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPO1lBQ0wsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO2dCQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2hDLENBQUMsQ0FBQyxTQUFTO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGNBQWM7SUFDWixhQUFhO0lBQ2IsT0FBK0I7UUFFL0IsT0FBTztZQUNMLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztnQkFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztnQkFDN0MsQ0FBQyxDQUFDLElBQUk7U0FDVCxDQUFDO0lBQ0osQ0FBQzs7QUFFSCxXQUFjLFdBQVc7SUFjdkIsSUFBWSxTQUdYO0lBSEQsV0FBWSxTQUFTO1FBQ25CLHlDQUFRLENBQUE7UUFDUiw2REFBa0IsQ0FBQTtJQUNwQixDQUFDLEVBSFcsU0FBUyxHQUFULHFCQUFTLEtBQVQscUJBQVMsUUFHcEI7QUFDSCxDQUFDLEVBbEJhLFdBQVcsS0FBWCxXQUFXLFFBa0J4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gQHRzLW5vY2hlY2tcbi8vXG4vLyBUSElTIElTIEEgR0VORVJBVEVEIEZJTEVcbi8vIERPIE5PVCBNT0RJRlkgSVQhIFlPVVIgQ0hBTkdFUyBXSUxMIEJFIExPU1RcbmltcG9ydCB7XG4gIEdycGNNZXNzYWdlLFxuICBSZWN1cnNpdmVQYXJ0aWFsLFxuICBUb1Byb3RvYnVmSlNPTk9wdGlvbnNcbn0gZnJvbSAnQG5neC1ncnBjL2NvbW1vbic7XG5pbXBvcnQgeyBCaW5hcnlSZWFkZXIsIEJpbmFyeVdyaXRlciwgQnl0ZVNvdXJjZSB9IGZyb20gJ2dvb2dsZS1wcm90b2J1Zic7XG5leHBvcnQgZW51bSBSZXN1bHRSYXdFbnVtRmllbGQge1xuICBSRVNVTFRfUkFXX0VOVU1fRklFTERfVU5TUEVDSUZJRUQgPSAwLFxuICBSRVNVTFRfUkFXX0VOVU1fRklFTERfU0VTU0lPTl9JRCA9IDEsXG4gIFJFU1VMVF9SQVdfRU5VTV9GSUVMRF9OQU1FID0gMixcbiAgUkVTVUxUX1JBV19FTlVNX0ZJRUxEX09XTkVSX1RBU0tfSUQgPSAzLFxuICBSRVNVTFRfUkFXX0VOVU1fRklFTERfU1RBVFVTID0gNCxcbiAgUkVTVUxUX1JBV19FTlVNX0ZJRUxEX0NSRUFURURfQVQgPSA1LFxuICBSRVNVTFRfUkFXX0VOVU1fRklFTERfQ09NUExFVEVEX0FUID0gNixcbiAgUkVTVUxUX1JBV19FTlVNX0ZJRUxEX1JFU1VMVF9JRCA9IDdcbn1cbi8qKlxuICogTWVzc2FnZSBpbXBsZW1lbnRhdGlvbiBmb3IgYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdFJhd0ZpZWxkXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXN1bHRSYXdGaWVsZCBpbXBsZW1lbnRzIEdycGNNZXNzYWdlIHtcbiAgc3RhdGljIGlkID0gJ2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRSYXdGaWVsZCc7XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplIGJpbmFyeSBkYXRhIHRvIG1lc3NhZ2VcbiAgICogQHBhcmFtIGluc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZUJpbmFyeShieXRlczogQnl0ZVNvdXJjZSkge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFJlc3VsdFJhd0ZpZWxkKCk7XG4gICAgUmVzdWx0UmF3RmllbGQuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKFxuICAgICAgaW5zdGFuY2UsXG4gICAgICBuZXcgQmluYXJ5UmVhZGVyKGJ5dGVzKVxuICAgICk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGFsbCB0aGUgcHJvcGVydGllcyBhbmQgc2V0IGRlZmF1bHQgcHJvdG9idWYgdmFsdWVzIGlmIG5lY2Vzc2FyeVxuICAgKiBAcGFyYW0gX2luc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyByZWZpbmVWYWx1ZXMoX2luc3RhbmNlOiBSZXN1bHRSYXdGaWVsZCkge1xuICAgIF9pbnN0YW5jZS5maWVsZCA9IF9pbnN0YW5jZS5maWVsZCB8fCAwO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplcyAvIHJlYWRzIGJpbmFyeSBtZXNzYWdlIGludG8gbWVzc2FnZSBpbnN0YW5jZSB1c2luZyBwcm92aWRlZCBiaW5hcnkgcmVhZGVyXG4gICAqIEBwYXJhbSBfaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gX3JlYWRlciBiaW5hcnkgcmVhZGVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKFxuICAgIF9pbnN0YW5jZTogUmVzdWx0UmF3RmllbGQsXG4gICAgX3JlYWRlcjogQmluYXJ5UmVhZGVyXG4gICkge1xuICAgIHdoaWxlIChfcmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgICBpZiAoX3JlYWRlci5pc0VuZEdyb3VwKCkpIGJyZWFrO1xuXG4gICAgICBzd2l0Y2ggKF9yZWFkZXIuZ2V0RmllbGROdW1iZXIoKSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgX2luc3RhbmNlLmZpZWxkID0gX3JlYWRlci5yZWFkRW51bSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIF9yZWFkZXIuc2tpcEZpZWxkKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgUmVzdWx0UmF3RmllbGQucmVmaW5lVmFsdWVzKF9pbnN0YW5jZSk7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplcyBhIG1lc3NhZ2UgdG8gYmluYXJ5IGZvcm1hdCB1c2luZyBwcm92aWRlZCBiaW5hcnkgcmVhZGVyXG4gICAqIEBwYXJhbSBfaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gX3dyaXRlciBiaW5hcnkgd3JpdGVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIoXG4gICAgX2luc3RhbmNlOiBSZXN1bHRSYXdGaWVsZCxcbiAgICBfd3JpdGVyOiBCaW5hcnlXcml0ZXJcbiAgKSB7XG4gICAgaWYgKF9pbnN0YW5jZS5maWVsZCkge1xuICAgICAgX3dyaXRlci53cml0ZUVudW0oMSwgX2luc3RhbmNlLmZpZWxkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maWVsZDogUmVzdWx0UmF3RW51bUZpZWxkO1xuXG4gIC8qKlxuICAgKiBNZXNzYWdlIGNvbnN0cnVjdG9yLiBJbml0aWFsaXplcyB0aGUgcHJvcGVydGllcyBhbmQgYXBwbGllcyBkZWZhdWx0IFByb3RvYnVmIHZhbHVlcyBpZiBuZWNlc3NhcnlcbiAgICogQHBhcmFtIF92YWx1ZSBpbml0aWFsIHZhbHVlcyBvYmplY3Qgb3IgaW5zdGFuY2Ugb2YgUmVzdWx0UmF3RmllbGQgdG8gZGVlcGx5IGNsb25lIGZyb21cbiAgICovXG4gIGNvbnN0cnVjdG9yKF92YWx1ZT86IFJlY3Vyc2l2ZVBhcnRpYWw8UmVzdWx0UmF3RmllbGQuQXNPYmplY3Q+KSB7XG4gICAgX3ZhbHVlID0gX3ZhbHVlIHx8IHt9O1xuICAgIHRoaXMuZmllbGQgPSBfdmFsdWUuZmllbGQ7XG4gICAgUmVzdWx0UmF3RmllbGQucmVmaW5lVmFsdWVzKHRoaXMpO1xuICB9XG4gIGdldCBmaWVsZCgpOiBSZXN1bHRSYXdFbnVtRmllbGQge1xuICAgIHJldHVybiB0aGlzLl9maWVsZDtcbiAgfVxuICBzZXQgZmllbGQodmFsdWU6IFJlc3VsdFJhd0VudW1GaWVsZCkge1xuICAgIHRoaXMuX2ZpZWxkID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGFcbiAgICogQHBhcmFtIGluc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICovXG4gIHNlcmlhbGl6ZUJpbmFyeSgpIHtcbiAgICBjb25zdCB3cml0ZXIgPSBuZXcgQmluYXJ5V3JpdGVyKCk7XG4gICAgUmVzdWx0UmF3RmllbGQuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhc3QgbWVzc2FnZSB0byBzdGFuZGFyZCBKYXZhU2NyaXB0IG9iamVjdCAoYWxsIG5vbi1wcmltaXRpdmUgdmFsdWVzIGFyZSBkZWVwbHkgY2xvbmVkKVxuICAgKi9cbiAgdG9PYmplY3QoKTogUmVzdWx0UmF3RmllbGQuQXNPYmplY3Qge1xuICAgIHJldHVybiB7XG4gICAgICBmaWVsZDogdGhpcy5maWVsZFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29udmVuaWVuY2UgbWV0aG9kIHRvIHN1cHBvcnQgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSksIHJlcGxpY2F0ZXMgdGhlIHN0cnVjdHVyZSBvZiB0b09iamVjdCgpXG4gICAqL1xuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9PYmplY3QoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXN0IG1lc3NhZ2UgdG8gSlNPTiB1c2luZyBwcm90b2J1ZiBKU09OIG5vdGF0aW9uOiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9wcm90b2NvbC1idWZmZXJzL2RvY3MvcHJvdG8zI2pzb25cbiAgICogQXR0ZW50aW9uOiBvdXRwdXQgZGlmZmVycyBmcm9tIHRvT2JqZWN0KCkgZS5nLiBlbnVtcyBhcmUgcmVwcmVzZW50ZWQgYXMgbmFtZXMgYW5kIG5vdCBhcyBudW1iZXJzLCBUaW1lc3RhbXAgaXMgYW4gSVNPIERhdGUgc3RyaW5nIGZvcm1hdCBldGMuXG4gICAqIElmIHRoZSBtZXNzYWdlIGl0c2VsZiBvciBzb21lIG9mIGRlc2NlbmRhbnQgbWVzc2FnZXMgaXMgZ29vZ2xlLnByb3RvYnVmLkFueSwgeW91IE1VU1QgcHJvdmlkZSBhIG1lc3NhZ2UgcG9vbCBhcyBvcHRpb25zLiBJZiBub3QsIHRoZSBtZXNzYWdlUG9vbCBpcyBub3QgcmVxdWlyZWRcbiAgICovXG4gIHRvUHJvdG9idWZKU09OKFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcHRpb25zPzogVG9Qcm90b2J1ZkpTT05PcHRpb25zXG4gICk6IFJlc3VsdFJhd0ZpZWxkLkFzUHJvdG9idWZKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGQ6XG4gICAgICAgIFJlc3VsdFJhd0VudW1GaWVsZFtcbiAgICAgICAgICB0aGlzLmZpZWxkID09PSBudWxsIHx8IHRoaXMuZmllbGQgPT09IHVuZGVmaW5lZCA/IDAgOiB0aGlzLmZpZWxkXG4gICAgICAgIF1cbiAgICB9O1xuICB9XG59XG5leHBvcnQgbW9kdWxlIFJlc3VsdFJhd0ZpZWxkIHtcbiAgLyoqXG4gICAqIFN0YW5kYXJkIEphdmFTY3JpcHQgb2JqZWN0IHJlcHJlc2VudGF0aW9uIGZvciBSZXN1bHRSYXdGaWVsZFxuICAgKi9cbiAgZXhwb3J0IGludGVyZmFjZSBBc09iamVjdCB7XG4gICAgZmllbGQ6IFJlc3VsdFJhd0VudW1GaWVsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm90b2J1ZiBKU09OIHJlcHJlc2VudGF0aW9uIGZvciBSZXN1bHRSYXdGaWVsZFxuICAgKi9cbiAgZXhwb3J0IGludGVyZmFjZSBBc1Byb3RvYnVmSlNPTiB7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgfVxufVxuXG4vKipcbiAqIE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gZm9yIGFybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRGaWVsZFxuICovXG5leHBvcnQgY2xhc3MgUmVzdWx0RmllbGQgaW1wbGVtZW50cyBHcnBjTWVzc2FnZSB7XG4gIHN0YXRpYyBpZCA9ICdhcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0RmllbGQnO1xuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZSBiaW5hcnkgZGF0YSB0byBtZXNzYWdlXG4gICAqIEBwYXJhbSBpbnN0YW5jZSBtZXNzYWdlIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgZGVzZXJpYWxpemVCaW5hcnkoYnl0ZXM6IEJ5dGVTb3VyY2UpIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBSZXN1bHRGaWVsZCgpO1xuICAgIFJlc3VsdEZpZWxkLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihpbnN0YW5jZSwgbmV3IEJpbmFyeVJlYWRlcihieXRlcykpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBhbGwgdGhlIHByb3BlcnRpZXMgYW5kIHNldCBkZWZhdWx0IHByb3RvYnVmIHZhbHVlcyBpZiBuZWNlc3NhcnlcbiAgICogQHBhcmFtIF9pbnN0YW5jZSBtZXNzYWdlIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgcmVmaW5lVmFsdWVzKF9pbnN0YW5jZTogUmVzdWx0RmllbGQpIHt9XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplcyAvIHJlYWRzIGJpbmFyeSBtZXNzYWdlIGludG8gbWVzc2FnZSBpbnN0YW5jZSB1c2luZyBwcm92aWRlZCBiaW5hcnkgcmVhZGVyXG4gICAqIEBwYXJhbSBfaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gX3JlYWRlciBiaW5hcnkgcmVhZGVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKFxuICAgIF9pbnN0YW5jZTogUmVzdWx0RmllbGQsXG4gICAgX3JlYWRlcjogQmluYXJ5UmVhZGVyXG4gICkge1xuICAgIHdoaWxlIChfcmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgICBpZiAoX3JlYWRlci5pc0VuZEdyb3VwKCkpIGJyZWFrO1xuXG4gICAgICBzd2l0Y2ggKF9yZWFkZXIuZ2V0RmllbGROdW1iZXIoKSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgX2luc3RhbmNlLnJlc3VsdFJhd0ZpZWxkID0gbmV3IFJlc3VsdFJhd0ZpZWxkKCk7XG4gICAgICAgICAgX3JlYWRlci5yZWFkTWVzc2FnZShcbiAgICAgICAgICAgIF9pbnN0YW5jZS5yZXN1bHRSYXdGaWVsZCxcbiAgICAgICAgICAgIFJlc3VsdFJhd0ZpZWxkLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlclxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgX3JlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBSZXN1bHRGaWVsZC5yZWZpbmVWYWx1ZXMoX2luc3RhbmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIGEgbWVzc2FnZSB0byBiaW5hcnkgZm9ybWF0IHVzaW5nIHByb3ZpZGVkIGJpbmFyeSByZWFkZXJcbiAgICogQHBhcmFtIF9pbnN0YW5jZSBtZXNzYWdlIGluc3RhbmNlXG4gICAqIEBwYXJhbSBfd3JpdGVyIGJpbmFyeSB3cml0ZXIgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBzZXJpYWxpemVCaW5hcnlUb1dyaXRlcihcbiAgICBfaW5zdGFuY2U6IFJlc3VsdEZpZWxkLFxuICAgIF93cml0ZXI6IEJpbmFyeVdyaXRlclxuICApIHtcbiAgICBpZiAoX2luc3RhbmNlLnJlc3VsdFJhd0ZpZWxkKSB7XG4gICAgICBfd3JpdGVyLndyaXRlTWVzc2FnZShcbiAgICAgICAgMSxcbiAgICAgICAgX2luc3RhbmNlLnJlc3VsdFJhd0ZpZWxkIGFzIGFueSxcbiAgICAgICAgUmVzdWx0UmF3RmllbGQuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzdWx0UmF3RmllbGQ/OiBSZXN1bHRSYXdGaWVsZDtcblxuICBwcml2YXRlIF9maWVsZDogUmVzdWx0RmllbGQuRmllbGRDYXNlID0gUmVzdWx0RmllbGQuRmllbGRDYXNlLm5vbmU7XG5cbiAgLyoqXG4gICAqIE1lc3NhZ2UgY29uc3RydWN0b3IuIEluaXRpYWxpemVzIHRoZSBwcm9wZXJ0aWVzIGFuZCBhcHBsaWVzIGRlZmF1bHQgUHJvdG9idWYgdmFsdWVzIGlmIG5lY2Vzc2FyeVxuICAgKiBAcGFyYW0gX3ZhbHVlIGluaXRpYWwgdmFsdWVzIG9iamVjdCBvciBpbnN0YW5jZSBvZiBSZXN1bHRGaWVsZCB0byBkZWVwbHkgY2xvbmUgZnJvbVxuICAgKi9cbiAgY29uc3RydWN0b3IoX3ZhbHVlPzogUmVjdXJzaXZlUGFydGlhbDxSZXN1bHRGaWVsZC5Bc09iamVjdD4pIHtcbiAgICBfdmFsdWUgPSBfdmFsdWUgfHwge307XG4gICAgdGhpcy5yZXN1bHRSYXdGaWVsZCA9IF92YWx1ZS5yZXN1bHRSYXdGaWVsZFxuICAgICAgPyBuZXcgUmVzdWx0UmF3RmllbGQoX3ZhbHVlLnJlc3VsdFJhd0ZpZWxkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgUmVzdWx0RmllbGQucmVmaW5lVmFsdWVzKHRoaXMpO1xuICB9XG4gIGdldCByZXN1bHRSYXdGaWVsZCgpOiBSZXN1bHRSYXdGaWVsZCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc3VsdFJhd0ZpZWxkO1xuICB9XG4gIHNldCByZXN1bHRSYXdGaWVsZCh2YWx1ZTogUmVzdWx0UmF3RmllbGQgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fZmllbGQgPSBSZXN1bHRGaWVsZC5GaWVsZENhc2UucmVzdWx0UmF3RmllbGQ7XG4gICAgfVxuICAgIHRoaXMuX3Jlc3VsdFJhd0ZpZWxkID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGZpZWxkKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgbWVzc2FnZSB0byBiaW5hcnkgZGF0YVxuICAgKiBAcGFyYW0gaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKi9cbiAgc2VyaWFsaXplQmluYXJ5KCkge1xuICAgIGNvbnN0IHdyaXRlciA9IG5ldyBCaW5hcnlXcml0ZXIoKTtcbiAgICBSZXN1bHRGaWVsZC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICAgIHJldHVybiB3cml0ZXIuZ2V0UmVzdWx0QnVmZmVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FzdCBtZXNzYWdlIHRvIHN0YW5kYXJkIEphdmFTY3JpcHQgb2JqZWN0IChhbGwgbm9uLXByaW1pdGl2ZSB2YWx1ZXMgYXJlIGRlZXBseSBjbG9uZWQpXG4gICAqL1xuICB0b09iamVjdCgpOiBSZXN1bHRGaWVsZC5Bc09iamVjdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3VsdFJhd0ZpZWxkOiB0aGlzLnJlc3VsdFJhd0ZpZWxkXG4gICAgICAgID8gdGhpcy5yZXN1bHRSYXdGaWVsZC50b09iamVjdCgpXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdG8gc3VwcG9ydCBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSwgcmVwbGljYXRlcyB0aGUgc3RydWN0dXJlIG9mIHRvT2JqZWN0KClcbiAgICovXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b09iamVjdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhc3QgbWVzc2FnZSB0byBKU09OIHVzaW5nIHByb3RvYnVmIEpTT04gbm90YXRpb246IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3Byb3RvY29sLWJ1ZmZlcnMvZG9jcy9wcm90bzMjanNvblxuICAgKiBBdHRlbnRpb246IG91dHB1dCBkaWZmZXJzIGZyb20gdG9PYmplY3QoKSBlLmcuIGVudW1zIGFyZSByZXByZXNlbnRlZCBhcyBuYW1lcyBhbmQgbm90IGFzIG51bWJlcnMsIFRpbWVzdGFtcCBpcyBhbiBJU08gRGF0ZSBzdHJpbmcgZm9ybWF0IGV0Yy5cbiAgICogSWYgdGhlIG1lc3NhZ2UgaXRzZWxmIG9yIHNvbWUgb2YgZGVzY2VuZGFudCBtZXNzYWdlcyBpcyBnb29nbGUucHJvdG9idWYuQW55LCB5b3UgTVVTVCBwcm92aWRlIGEgbWVzc2FnZSBwb29sIGFzIG9wdGlvbnMuIElmIG5vdCwgdGhlIG1lc3NhZ2VQb29sIGlzIG5vdCByZXF1aXJlZFxuICAgKi9cbiAgdG9Qcm90b2J1ZkpTT04oXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9wdGlvbnM/OiBUb1Byb3RvYnVmSlNPTk9wdGlvbnNcbiAgKTogUmVzdWx0RmllbGQuQXNQcm90b2J1ZkpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICByZXN1bHRSYXdGaWVsZDogdGhpcy5yZXN1bHRSYXdGaWVsZFxuICAgICAgICA/IHRoaXMucmVzdWx0UmF3RmllbGQudG9Qcm90b2J1ZkpTT04ob3B0aW9ucylcbiAgICAgICAgOiBudWxsXG4gICAgfTtcbiAgfVxufVxuZXhwb3J0IG1vZHVsZSBSZXN1bHRGaWVsZCB7XG4gIC8qKlxuICAgKiBTdGFuZGFyZCBKYXZhU2NyaXB0IG9iamVjdCByZXByZXNlbnRhdGlvbiBmb3IgUmVzdWx0RmllbGRcbiAgICovXG4gIGV4cG9ydCBpbnRlcmZhY2UgQXNPYmplY3Qge1xuICAgIHJlc3VsdFJhd0ZpZWxkPzogUmVzdWx0UmF3RmllbGQuQXNPYmplY3Q7XG4gIH1cblxuICAvKipcbiAgICogUHJvdG9idWYgSlNPTiByZXByZXNlbnRhdGlvbiBmb3IgUmVzdWx0RmllbGRcbiAgICovXG4gIGV4cG9ydCBpbnRlcmZhY2UgQXNQcm90b2J1ZkpTT04ge1xuICAgIHJlc3VsdFJhd0ZpZWxkOiBSZXN1bHRSYXdGaWVsZC5Bc1Byb3RvYnVmSlNPTiB8IG51bGw7XG4gIH1cbiAgZXhwb3J0IGVudW0gRmllbGRDYXNlIHtcbiAgICBub25lID0gMCxcbiAgICByZXN1bHRSYXdGaWVsZCA9IDFcbiAgfVxufVxuIl19