@ironcode/vas-lib 0.0.7 → 0.0.10

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 (77) hide show
  1. package/cjs/lib/entity/index.d.ts +4 -0
  2. package/cjs/lib/entity/index.d.ts.map +1 -1
  3. package/cjs/lib/entity/index.js +4 -0
  4. package/cjs/lib/entity/index.js.map +1 -1
  5. package/cjs/lib/entity/vas-account-object.model.d.ts +13 -0
  6. package/cjs/lib/entity/vas-account-object.model.d.ts.map +1 -0
  7. package/cjs/lib/entity/vas-account-object.model.js +19 -0
  8. package/cjs/lib/entity/vas-account-object.model.js.map +1 -0
  9. package/cjs/lib/entity/vas-branch.dto.d.ts +3 -3
  10. package/cjs/lib/entity/vas-branch.dto.d.ts.map +1 -1
  11. package/cjs/lib/entity/vas-branch.dto.js.map +1 -1
  12. package/cjs/lib/entity/vas-branch.model.d.ts +5 -4
  13. package/cjs/lib/entity/vas-branch.model.d.ts.map +1 -1
  14. package/cjs/lib/entity/vas-branch.model.js +9 -7
  15. package/cjs/lib/entity/vas-branch.model.js.map +1 -1
  16. package/cjs/lib/entity/vas-contact.dto.d.ts +2 -3
  17. package/cjs/lib/entity/vas-contact.dto.d.ts.map +1 -1
  18. package/cjs/lib/entity/vas-contact.dto.js.map +1 -1
  19. package/cjs/lib/entity/vas-contact.model.d.ts +23 -0
  20. package/cjs/lib/entity/vas-contact.model.d.ts.map +1 -0
  21. package/cjs/lib/entity/vas-contact.model.js +48 -0
  22. package/cjs/lib/entity/vas-contact.model.js.map +1 -0
  23. package/cjs/lib/entity/vas-control.model.d.ts +1 -1
  24. package/cjs/lib/entity/vas-control.model.js +1 -1
  25. package/cjs/lib/entity/vas-control.model.js.map +1 -1
  26. package/cjs/lib/entity/vas-form.dto.d.ts +1 -0
  27. package/cjs/lib/entity/vas-form.dto.d.ts.map +1 -1
  28. package/cjs/lib/entity/vas-form.dto.js.map +1 -1
  29. package/cjs/lib/entity/vas-form.model.d.ts +3 -1
  30. package/cjs/lib/entity/vas-form.model.d.ts.map +1 -1
  31. package/cjs/lib/entity/vas-form.model.js +5 -2
  32. package/cjs/lib/entity/vas-form.model.js.map +1 -1
  33. package/cjs/lib/entity/vas-job.model.d.ts +14 -27
  34. package/cjs/lib/entity/vas-job.model.d.ts.map +1 -1
  35. package/cjs/lib/entity/vas-job.model.js +74 -55
  36. package/cjs/lib/entity/vas-job.model.js.map +1 -1
  37. package/cjs/lib/entity/vas-job.model.spec-data.d.ts.map +1 -1
  38. package/cjs/lib/entity/vas-job.model.spec-data.js +1 -0
  39. package/cjs/lib/entity/vas-job.model.spec-data.js.map +1 -1
  40. package/cjs/lib/entity/vas-restricted-account-object.model.d.ts +14 -0
  41. package/cjs/lib/entity/vas-restricted-account-object.model.d.ts.map +1 -0
  42. package/cjs/lib/entity/vas-restricted-account-object.model.js +20 -0
  43. package/cjs/lib/entity/vas-restricted-account-object.model.js.map +1 -0
  44. package/cjs/lib/utils/get-value-by-path.d.ts +20 -0
  45. package/cjs/lib/utils/get-value-by-path.d.ts.map +1 -0
  46. package/cjs/lib/utils/get-value-by-path.js +68 -0
  47. package/cjs/lib/utils/get-value-by-path.js.map +1 -0
  48. package/cjs/package.json +1 -1
  49. package/esm2020/lib/entity/index.mjs +5 -1
  50. package/esm2020/lib/entity/vas-account-object.model.mjs +15 -0
  51. package/esm2020/lib/entity/vas-branch.dto.mjs +1 -1
  52. package/esm2020/lib/entity/vas-branch.model.mjs +64 -0
  53. package/esm2020/lib/entity/vas-contact.dto.mjs +1 -1
  54. package/esm2020/lib/entity/vas-contact.model.mjs +44 -0
  55. package/esm2020/lib/entity/vas-control.model.mjs +2 -2
  56. package/esm2020/lib/entity/vas-form.dto.mjs +1 -1
  57. package/esm2020/lib/entity/vas-form.model.mjs +6 -3
  58. package/esm2020/lib/entity/vas-job.model.mjs +75 -56
  59. package/esm2020/lib/entity/vas-restricted-account-object.model.mjs +16 -0
  60. package/esm2020/lib/utils/get-value-by-path.mjs +64 -0
  61. package/fesm2015/ironcode-vas-lib.mjs +279 -59
  62. package/fesm2015/ironcode-vas-lib.mjs.map +1 -1
  63. package/fesm2020/ironcode-vas-lib.mjs +279 -59
  64. package/fesm2020/ironcode-vas-lib.mjs.map +1 -1
  65. package/lib/entity/index.d.ts +4 -0
  66. package/lib/entity/vas-account-object.model.d.ts +12 -0
  67. package/lib/entity/vas-branch.dto.d.ts +3 -3
  68. package/lib/entity/vas-branch.model.d.ts +34 -0
  69. package/lib/entity/vas-contact.dto.d.ts +2 -3
  70. package/lib/entity/vas-contact.model.d.ts +22 -0
  71. package/lib/entity/vas-control.model.d.ts +1 -1
  72. package/lib/entity/vas-form.dto.d.ts +1 -0
  73. package/lib/entity/vas-form.model.d.ts +3 -1
  74. package/lib/entity/vas-job.model.d.ts +14 -27
  75. package/lib/entity/vas-restricted-account-object.model.d.ts +13 -0
  76. package/lib/utils/get-value-by-path.d.ts +19 -0
  77. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  import { UUID } from 'angular2-uuid';
2
2
  import { VasBaseModel } from './vas-base.model';
3
3
  import moment from 'moment';
4
+ import { getValueByPath } from '../utils/get-value-by-path';
4
5
  /**
5
6
  * JobModel
6
7
  */
@@ -47,8 +48,6 @@ export class VasJobModel extends VasBaseModel {
47
48
  * @return {VasJobModelDynamicInterface}
48
49
  */
49
50
  get $this() {
50
- // eslint-disable-next-line @typescript-eslint/no-this-alias
51
- const $this = this;
52
51
  return this;
53
52
  }
54
53
  /**
@@ -107,54 +106,33 @@ export class VasJobModel extends VasBaseModel {
107
106
  return fields;
108
107
  }
109
108
  /**
110
- * A very non sophisticated way to get values from the job via paths
111
- *
112
- * For example:
113
- *
114
- * getValueByPath(['foo', 'bar']);
115
- *
116
- * if job is
117
- * {
118
- * foo: {
119
- * bar: 'value'
120
- * }
121
- * }
122
- *
123
- * will return "value"
124
- *
109
+ * Will return an object whose keys are the names of all fields in the job but
110
+ * with the "fields." part removed. This method is similar to `getFields`
111
+ * except that this method will only return values that are set whereas
112
+ * `getFields` will return a property regardless (because it uses the form to
113
+ * drive the logic)
114
+ * @return {Record<string, VasFieldDtoValue>}
115
+ */
116
+ getFields2() {
117
+ let fields = {};
118
+ this.dynamicProperties
119
+ .forEach((groupName) => {
120
+ Object
121
+ .keys(this.$this[groupName])
122
+ .forEach(controlName => {
123
+ const controlNameShort = controlName.replace(/fields\./, '');
124
+ fields[controlNameShort] = this.getValueByPath([groupName, controlName]);
125
+ });
126
+ }, {});
127
+ return fields;
128
+ }
129
+ /**
130
+
125
131
  * @param {string[]} path path segments
126
132
  * @return {void}
127
133
  */
128
134
  getValueByPath(path = []) {
129
- switch (path.length) {
130
- case 0: {
131
- return;
132
- }
133
- case 1: {
134
- return (this.$this)[path[0]];
135
- }
136
- case 2: {
137
- const val0 = this.$this[path[0]];
138
- if (!val0) {
139
- return undefined;
140
- }
141
- return val0[path[1]];
142
- }
143
- case 3: {
144
- const val0 = this.$this[path[0]];
145
- if (!val0) {
146
- return undefined;
147
- }
148
- const val1 = val0[path[1]];
149
- if (!val1) {
150
- return undefined;
151
- }
152
- return val1[path[2]];
153
- }
154
- default: {
155
- throw Error('path has too many segments');
156
- }
157
- }
135
+ return getValueByPath(path, this.$this);
158
136
  }
159
137
  /**
160
138
  * A very non sophisticated way to set values in the job via paths
@@ -179,7 +157,7 @@ export class VasJobModel extends VasBaseModel {
179
157
  return;
180
158
  }
181
159
  case 1: {
182
- (this.$this)[path[0]] = value;
160
+ this[path[0]] = value;
183
161
  return;
184
162
  }
185
163
  case 2: {
@@ -203,14 +181,29 @@ export class VasJobModel extends VasBaseModel {
203
181
  * @return {VasJobDto}
204
182
  */
205
183
  toDto(staticOnly = false) {
206
- const dto = {};
207
- this.staticProperties
208
- .forEach(prop => (dto)[prop] = this.$this[prop]);
209
184
  if (staticOnly) {
210
- return dto;
185
+ return {
186
+ id: this.id,
187
+ created: this.created,
188
+ createdBy: this.createdBy,
189
+ modified: this.modified,
190
+ modifiedBy: this.modifiedBy,
191
+ serverCreated: this.serverCreated,
192
+ serverModified: this.serverModified,
193
+ account: this.account,
194
+ accessGroup: this.accessGroup,
195
+ reference: this.reference,
196
+ jobDate: this.jobDate,
197
+ jobStatus: this.jobStatus,
198
+ jobType: this.jobType,
199
+ assignee: this.assignee,
200
+ formId: this.formId,
201
+ timeZoneOffset: this.timeZoneOffset,
202
+ };
211
203
  }
212
- this.dynamicProperties
213
- .forEach(prop => dto[prop] = this.$this[prop]);
204
+ const dto = {};
205
+ [...this.staticProperties, ...this.dynamicProperties]
206
+ .forEach(prop => (dto)[prop] = this.$this[prop]);
214
207
  return dto;
215
208
  }
216
209
  /**
@@ -265,7 +258,33 @@ export class VasJobModel extends VasBaseModel {
265
258
  filterArg = (filterArg || '').trim();
266
259
  }
267
260
  const path = key.split('.');
268
- let result = (this.getValueByPath(path) || '').toString();
261
+ const objectKey = path.shift() || '';
262
+ let result = '';
263
+ if (objectKey === 'job') {
264
+ result = (this.getValueByPath(path) || '').toString();
265
+ }
266
+ else if (objectKey === 'fields') {
267
+ result = (getValueByPath(path, this.getFields2()) || '').toString();
268
+ }
269
+ else if (objectKey.length) {
270
+ if (options.objects) {
271
+ if (options.objects[objectKey] === undefined) {
272
+ console.debug(`objectKey ${objectKey} is not present in options.object`);
273
+ result = '';
274
+ }
275
+ else {
276
+ result = (getValueByPath(path, options.objects[objectKey]) || '')
277
+ .toString();
278
+ }
279
+ }
280
+ else {
281
+ console.debug(`objectKey ${objectKey} was used but options.object is not set`);
282
+ return '';
283
+ }
284
+ }
285
+ else {
286
+ return '';
287
+ }
269
288
  if (filterName && result) {
270
289
  switch (filterName) {
271
290
  case 'date': {
@@ -279,8 +298,8 @@ export class VasJobModel extends VasBaseModel {
279
298
  }
280
299
  }
281
300
  return result;
282
- });
301
+ }).trim();
283
302
  }
284
303
  ;
285
304
  }
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWpvYi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Zhcy1saWIvc3JjL2xpYi9lbnRpdHkvdmFzLWpvYi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFzQjVCOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVksU0FBUSxZQUFZO0lBQzNDOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNILFlBQ2tCLEVBQVUsRUFDVixPQUFlLEVBQ2YsYUFBcUIsRUFDckIsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsVUFBa0IsRUFDM0IsT0FBZSxFQUNmLFdBQW1CLEVBQ25CLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixTQUFpQixFQUNqQixPQUFlLEVBQ2YsUUFBZ0IsRUFDaEIsTUFBYyxFQUNkLGNBQXNCO1FBRTdCLEtBQUssQ0FDSCxFQUFFLEVBQ0YsT0FBTyxFQUNQLGFBQWEsRUFDYixTQUFTLEVBQ1QsUUFBUSxFQUNSLGNBQWMsRUFDZCxVQUFVLENBQ1gsQ0FBQztRQXpCYyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENB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QkFDNUI7b0JBQ0QsT0FBTyxDQUFDLENBQUM7d0JBQ1AsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsQ0FBQztxQkFDL0M7aUJBQ0Y7YUFDRjtZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUFBLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVVSUQgfSBmcm9tICdhbmd1bGFyMi11dWlkJztcbmltcG9ydCB7IFZhc0pvYkR0byB9IGZyb20gJy4vdmFzLWpvYi5kdG8nO1xuaW1wb3J0IHsgVmFzQmFzZU1vZGVsIH0gZnJvbSAnLi92YXMtYmFzZS5tb2RlbCc7XG5pbXBvcnQgeyBWYXNGaWVsZER0b1ZhbHVlIH0gZnJvbSAnLi92YXMtZmllbGQuZHRvJztcbmltcG9ydCB7IFZhc0Zvcm1Nb2RlbCB9IGZyb20gJy4vdmFzLWZvcm0ubW9kZWwnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG50eXBlIFZhc0pvYk1vZGVsS2V5cyA9IGtleW9mIHR5cGVvZiBWYXNKb2JNb2RlbDtcblxuZGVjbGFyZSB0eXBlIFZhc0pvYk1vZGVsVHlwZVR5cGUgPSB7XG4gIFtrZXkgaW4gVmFzSm9iTW9kZWxLZXlzXTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVmFzSm9iTW9kZWxEeW5hbWljSW50ZXJmYWNlIGV4dGVuZHMgVmFzSm9iTW9kZWxUeXBlVHlwZSB7XG4gIFtrZXk6IHN0cmluZ106IFZhc0ZpZWxkRHRvVmFsdWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VTeW50YXhPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoaXMgdmFsdWUgd2lsbCBiZSB1c2VkIHRvIGFkanVzdCBhbnkgZGF0ZXRpbWUgdmFsdWVzIHRoYXQgYXJlIHJlZmVyZW5jZWRcbiAgICogaW4gdGhlIHN5bnRheCBzdHJpbmcuIFNlZVxuICAgKiBodHRwczovL21vbWVudGpzY29tLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9tb21lbnQvMDMtbWFuaXB1bGF0aW5nLzA5LXV0Yy1vZmZzZXQvXG4gICAqIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvdyBgbW9tZW50YCB3aWxsIGhhbmRsZSB0aGUgdmFsdWUuXG4gICAqL1xuICB0aW1lWm9uZU9mZnNldDogbnVtYmVyXG59XG5cbi8qKlxuICogSm9iTW9kZWxcbiAqL1xuZXhwb3J0IGNsYXNzIFZhc0pvYk1vZGVsIGV4dGVuZHMgVmFzQmFzZU1vZGVsIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3JlYXRlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VydmVyQ3JlYXRlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3JlYXRlZEJ5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RpZmllZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VydmVyTW9kaWZpZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGlmaWVkQnlcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFjY291bnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFjY2Vzc0dyb3VwXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZlcmVuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGpvYkRhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGpvYlN0YXR1c1xuICAgKiBAcGFyYW0ge3N0cmluZ30gam9iVHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXNzaWduZWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZvcm1JZFxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZVpvbmVPZmZzZXRcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBvdmVycmlkZSBpZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlckNyZWF0ZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY3JlYXRlZEJ5OiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlck1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkQnk6IHN0cmluZyxcbiAgICBwdWJsaWMgYWNjb3VudDogc3RyaW5nLFxuICAgIHB1YmxpYyBhY2Nlc3NHcm91cDogc3RyaW5nLFxuICAgIHB1YmxpYyByZWZlcmVuY2U6IHN0cmluZyxcbiAgICBwdWJsaWMgam9iRGF0ZTogc3RyaW5nLFxuICAgIHB1YmxpYyBqb2JTdGF0dXM6IHN0cmluZyxcbiAgICBwdWJsaWMgam9iVHlwZTogc3RyaW5nLFxuICAgIHB1YmxpYyBhc3NpZ25lZTogc3RyaW5nLFxuICAgIHB1YmxpYyBmb3JtSWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgdGltZVpvbmVPZmZzZXQ6IG51bWJlclxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGlkLFxuICAgICAgY3JlYXRlZCxcbiAgICAgIHNlcnZlckNyZWF0ZWQsXG4gICAgICBjcmVhdGVkQnksXG4gICAgICBtb2RpZmllZCxcbiAgICAgIHNlcnZlck1vZGlmaWVkLFxuICAgICAgbW9kaWZpZWRCeVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGlzIHdpdGggdGhlIGR5bmFtaWMgaW50ZXJmYWNlXG4gICAqIEByZXR1cm4ge1Zhc0pvYk1vZGVsRHluYW1pY0ludGVyZmFjZX1cbiAgICovXG4gIGdldCAkdGhpcygpOiBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2Uge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuICAgIGNvbnN0ICR0aGlzID0gdGhpcztcbiAgICByZXR1cm4gdGhpcyBhcyB0eXBlb2YgJHRoaXMgJiBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgSm9iIGR5bmFtaWMgcHJvcGVydGllcyBpLmUuIHRob3NlIHRoYXQgYXJlIGFkZGVkIGJ5IHRoZVxuICAgKiBkeW5hbWljIGZvcm1zXG4gICAqL1xuICBnZXQgZHluYW1pY1Byb3BlcnRpZXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgY29uc3QgbmF0aXZlUHJvcHMgPSB0aGlzLnN0YXRpY1Byb3BlcnRpZXM7XG4gICAgcmV0dXJuIE9iamVjdFxuICAgICAgLmdldE93blByb3BlcnR5TmFtZXModGhpcylcbiAgICAgIC5maWx0ZXIocHJvcCA9PiAhbmF0aXZlUHJvcHMuaW5jbHVkZXMocHJvcCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIEpvYiBzdGF0aWMgcHJvcGVydGllcyBpLmUuIHRob3NlIHRoYXQgYXJlIGRlY2xhcmVkIGJ5XG4gICAqIHRoZSB0eXBlXG4gICAqL1xuICBnZXQgc3RhdGljUHJvcGVydGllcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoVmFzSm9iTW9kZWwuZW1wdHkoKSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7VmFzSm9iTW9kZWx9XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVtcHR5KCk6IFZhc0pvYk1vZGVsIHtcbiAgICByZXR1cm4gbmV3IFZhc0pvYk1vZGVsKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAgIFVVSUQuVVVJRCgpLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgIG1vbWVudCgpLnV0Y09mZnNldCgpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Zhc0pvYkR0b30gam9iRHRvXG4gICAqIEByZXR1cm4ge1Zhc0pvYk1vZGVsfVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRHRvKGpvYkR0bzogUGFydGlhbDxWYXNKb2JEdG8+KTogVmFzSm9iTW9kZWwge1xuICAgIGNvbnN0IG1vZGVsID0gbmV3IFZhc0pvYk1vZGVsKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAgIGpvYkR0by5pZCB8fCBVVUlELlVVSUQoKSxcbiAgICAgIGpvYkR0by5jcmVhdGVkIHx8ICcnLFxuICAgICAgam9iRHRvLnNlcnZlckNyZWF0ZWQgfHwgJycsXG4gICAgICBqb2JEdG8uY3JlYXRlZEJ5IHx8ICcnLFxuICAgICAgam9iRHRvLm1vZGlmaWVkIHx8ICcnLFxuICAgICAgam9iRHRvLnNlcnZlck1vZGlmaWVkIHx8ICcnLFxuICAgICAgam9iRHRvLm1vZGlmaWVkQnkgfHwgJycsXG4gICAgICBqb2JEdG8uYWNjb3VudCB8fCAnJyxcbiAgICAgIGpvYkR0by5hY2Nlc3NHcm91cCB8fCAnJyxcbiAgICAgIGpvYkR0by5yZWZlcmVuY2UgfHwgJycsXG4gICAgICBqb2JEdG8uam9iRGF0ZSB8fCAnJyxcbiAgICAgIGpvYkR0by5qb2JTdGF0dXMgfHwgJycsXG4gICAgICBqb2JEdG8uam9iVHlwZSB8fCAnJyxcbiAgICAgIGpvYkR0by5hc3NpZ25lZSB8fCAnJyxcbiAgICAgIGpvYkR0by5mb3JtSWQgfHwgJycsXG4gICAgICBqb2JEdG8udGltZVpvbmVPZmZzZXQgfHwgbW9tZW50KCkudXRjT2Zmc2V0KClcbiAgICApO1xuICAgIGNvbnN0IGVtcHR5S2V5cyA9IG1vZGVsLnN0YXRpY1Byb3BlcnRpZXM7XG4gICAgT2JqZWN0XG4gICAgICAua2V5cyhqb2JEdG8pXG4gICAgICAuZmlsdGVyKGtleSA9PiBlbXB0eUtleXMuaW5kZXhPZihrZXkpID09PSAtMSlcbiAgICAgIC5mb3JFYWNoKChrZXk6IHN0cmluZykgPT5cbiAgICAgICAgbW9kZWwuJHRoaXNba2V5XSA9IChqb2JEdG8gYXMgVmFzSm9iTW9kZWxEeW5hbWljSW50ZXJmYWNlKVtrZXldXG4gICAgICApO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Zhc0Zvcm1Nb2RlbH0gZm9ybU1vZGVsXG4gICAqIEByZXR1cm4ge1JlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+fVxuICAgKi9cbiAgZ2V0RmllbGRzKGZvcm1Nb2RlbDogVmFzRm9ybU1vZGVsKTogUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT4ge1xuICAgIGNvbnN0IGZpZWxkczoge1trZXk6IHN0cmluZ106IFZhc0ZpZWxkRHRvVmFsdWV9ID0ge307XG4gICAgZm9ybU1vZGVsLmdyb3Vwc1xuICAgICAgLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICBncm91cC5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICAgIChmaWVsZHMpW2NvbnRyb2wucmVwb3J0VGVtcGxhdGVOYW1lXSA9XG4gICAgICAgICAgICB0aGlzLmdldFZhbHVlQnlQYXRoKFtncm91cC5uYW1lLCBjb250cm9sLm5hbWVdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gZmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgdmVyeSBub24gc29waGlzdGljYXRlZCB3YXkgdG8gZ2V0IHZhbHVlcyBmcm9tIHRoZSBqb2IgdmlhIHBhdGhzXG4gICAqXG4gICAqIEZvciBleGFtcGxlOlxuICAgKlxuICAgKiBnZXRWYWx1ZUJ5UGF0aChbJ2ZvbycsICdiYXInXSk7XG4gICAqXG4gICAqIGlmIGpvYiBpc1xuICAgKiB7XG4gICAqICAgZm9vOiB7XG4gICAqICAgICBiYXI6ICd2YWx1ZSdcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogd2lsbCByZXR1cm4gXCJ2YWx1ZVwiXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGggcGF0aCBzZWdtZW50c1xuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgZ2V0VmFsdWVCeVBhdGg8VCBleHRlbmRzIFZhc0ZpZWxkRHRvVmFsdWU+KFxuICAgIHBhdGg6IHN0cmluZ1tdID0gW11cbiAgKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoIChwYXRoLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOiB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgMToge1xuICAgICAgICByZXR1cm4gKHRoaXMuJHRoaXMpW3BhdGhbMF1dIGFzIFQ7XG4gICAgICB9XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgY29uc3QgdmFsMCA9IHRoaXMuJHRoaXNbcGF0aFswXV0gYXMgUmVjb3JkPHN0cmluZywgb2JqZWN0PjtcbiAgICAgICAgaWYgKCF2YWwwKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsMFtwYXRoWzFdXSBhcyBUO1xuICAgICAgfVxuICAgICAgY2FzZSAzOiB7XG4gICAgICAgIGNvbnN0IHZhbDAgPSB0aGlzLiR0aGlzW3BhdGhbMF1dIGFzIFJlY29yZDxzdHJpbmcsIG9iamVjdD47XG4gICAgICAgIGlmICghdmFsMCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsMSA9IHZhbDBbcGF0aFsxXV0gYXMgUmVjb3JkPHN0cmluZywgb2JqZWN0PjtcbiAgICAgICAgaWYgKCF2YWwxKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsMVtwYXRoWzJdXSBhcyBUO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBFcnJvcigncGF0aCBoYXMgdG9vIG1hbnkgc2VnbWVudHMnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQSB2ZXJ5IG5vbiBzb3BoaXN0aWNhdGVkIHdheSB0byBzZXQgdmFsdWVzIGluIHRoZSBqb2IgdmlhIHBhdGhzXG4gICAqXG4gICAqIEZvciBleGFtcGxlOlxuICAgKlxuICAgKiBzZXRWYWx1ZUJ5UGF0aCgndmFsdWUnLCBbJ2ZvbycsICdiYXInXSk7XG4gICAqXG4gICAqIHdpbGwgbWFrZSByZXN1bHRzIGluIGpvYlxuICAgKiB7XG4gICAqICAgZm9vOiB7XG4gICAqICAgICBiYXI6ICd2YWx1ZSdcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IHZhbHVlIHRoZSB2YWx1ZSB0byBzZXRcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aCBwYXRoIHNlZ21lbnRzXG4gICAqL1xuICBzZXRWYWx1ZUJ5UGF0aCh2YWx1ZTogVmFzRmllbGREdG9WYWx1ZSwgcGF0aDogc3RyaW5nW10gPSBbXSk6IHZvaWQge1xuICAgIHN3aXRjaCAocGF0aC5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMDoge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgKHRoaXMuJHRoaXMpW3BhdGhbMF1dID0gdmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAodGhpcy4kdGhpc1twYXRoWzBdXSBhcyBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPilbcGF0aFsxXV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAzOiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICgodGhpcy4kdGhpc1twYXRoWzBdXSBhcyBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPilbcGF0aFsxXV0gYXMgUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT4pW3BhdGhbMl1dID0gdmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ3BhdGggaGFzIHRvbyBtYW55IHNlZ21lbnRzJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhdGljT25seSBpZiB0cnVlLCB3aWxsIG9ubHkgb3V0cHV0IHZhbHVlcyBmb3IgdGhlIHN0YXRpY1xuICAgKiBwcm9wZXJ0aWVzIGluIHRoZSBkdG9cbiAgICogQHJldHVybiB7VmFzSm9iRHRvfVxuICAgKi9cbiAgcHVibGljIHRvRHRvKHN0YXRpY09ubHkgPSBmYWxzZSk6IFZhc0pvYkR0byB7XG4gICAgY29uc3QgZHRvID0ge30gYXMgVmFzSm9iRHRvICYgUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT47XG4gICAgdGhpcy5zdGF0aWNQcm9wZXJ0aWVzXG4gICAgICAuZm9yRWFjaChwcm9wID0+XG4gICAgICAgIChkdG8pW3Byb3BdID0gdGhpcy4kdGhpc1twcm9wXSk7XG5cbiAgICBpZiAoc3RhdGljT25seSkge1xuICAgICAgcmV0dXJuIGR0bztcbiAgICB9XG5cbiAgICB0aGlzLmR5bmFtaWNQcm9wZXJ0aWVzXG4gICAgICAuZm9yRWFjaChwcm9wID0+XG4gICAgICAgIGR0b1twcm9wXSA9IHRoaXMuJHRoaXNbcHJvcF0pO1xuXG4gICAgcmV0dXJuIGR0bztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIHBhcnNlIGEgc3ludGF4IHRoYXQgYWxsb3dzIHVzIHRvIGJ1aWxkIHN0cmluZ3MgZnJvbSB0aGVcbiAgICogdmFsdWVzIG9mIGZyb20gdGhlIGpvYiBtb2RlbC4gRm9yIGV4YW1wbGUgaWYgdGhlIGpvYiBtb2RlbCB3YXM6XG4gICAqXG4gICAqIHtcbiAgICogICBmb286ICdiYXInXG4gICAqIH1cbiAgICpcbiAgICogYW5kIHdlIHBhc3MgXCJpIGFtIGZvbyB7Zm9vfVwiLCB0aGUgcmVzdWx0IHdvdWxkIGJlOlxuICAgKlxuICAgKiBcImkgYW0gZm9vIGJhclwiXG4gICAqXG4gICAqIHdlIGNhbiBhbHNvIHVzZSBtb21lbnQgdG8gcGFyc2UgZGF0ZXMsIGZvciBleGFtcGxlIGlmIHRoZSBqb2IgbW9kZWwgd2FzOlxuICAgKlxuICAgKiB7XG4gICAqICAgY3JlYXRlZDogXCIyMDIyLTAxLTAxVDAwOjAwOjAwKzAwMDBcIlxuICAgKiB9XG4gICAqXG4gICAqIGFuZCB3ZSBwYXNzIFwie2NyZWF0ZWR8ZGF0ZTpZWS1NTS1ERH1cIiwgdGhlIHJlc3VsdCB3b3VsZCBiZTpcbiAgICpcbiAgICogXCIyMDIyLTAxLTAxXCJcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIGEgc3RyaW5nIHdpdGggdGhlIHN5bnRheFxuICAgKiBAcGFyYW0ge1BhcnNlU3ludGF4T3B0aW9uc30gb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSByZXN1bHRzIG9mIHBhcnNpbmcgdGhlIHN5bnRheCBvbiB0aGlzIGpvYlxuICAgKi9cbiAgcGFyc2VTeW50YXgoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiBQYXJzZVN5bnRheE9wdGlvbnMgPSB7XG4gICAgICB0aW1lWm9uZU9mZnNldDogMFxuICAgIH1cbiAgKTogc3RyaW5nIHtcblxuICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvKHtbXn1dKn0pL2csIChtYXRjaDogc3RyaW5nLCB0b2tlbjogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzeW50YXggPSB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4ubGVuZ3RoIC0gMSk7XG5cbiAgICAgIGxldCBba2V5LCBmaWx0ZXJdID0gc3ludGF4LnNwbGl0KCd8Jyk7XG4gICAgICBrZXkgPSAoa2V5IHx8ICcnKS50cmltKCk7XG4gICAgICBmaWx0ZXIgPSAoZmlsdGVyIHx8ICcnKS50cmltKClcblxuICAgICAgbGV0IGZpbHRlck5hbWUsIGZpbHRlckFyZzogc3RyaW5nID0gJyc7XG4gICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgIGNvbnN0IHNwbGl0SW5kZXggPSBmaWx0ZXIuaW5kZXhPZignOicpO1xuICAgICAgICBpZiAoc3BsaXRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBmaWx0ZXJOYW1lID0gZmlsdGVyLnN1YnN0cmluZygwLCBzcGxpdEluZGV4KTtcbiAgICAgICAgICBmaWx0ZXJBcmcgPSBmaWx0ZXIuc3Vic3RyaW5nKHNwbGl0SW5kZXggKyAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWx0ZXJOYW1lID0gZmlsdGVyO1xuICAgICAgICAgIGZpbHRlckFyZyA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGZpbHRlck5hbWUgPSAoZmlsdGVyTmFtZSB8fCAnJykudHJpbSgpO1xuICAgICAgICBmaWx0ZXJBcmcgPSAoZmlsdGVyQXJnIHx8ICcnKS50cmltKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXRoID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgICBsZXQgcmVzdWx0ID0gKHRoaXMuZ2V0VmFsdWVCeVBhdGgocGF0aCkgfHwgJycpLnRvU3RyaW5nKCk7XG5cbiAgICAgIGlmIChmaWx0ZXJOYW1lICYmIHJlc3VsdCkge1xuICAgICAgICBzd2l0Y2ggKGZpbHRlck5hbWUpIHtcbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgcmV0dXJuIG1vbWVudChyZXN1bHQpXG4gICAgICAgICAgICAgIC51dGNPZmZzZXQob3B0aW9ucy50aW1lWm9uZU9mZnNldClcbiAgICAgICAgICAgICAgLmZvcm1hdChmaWx0ZXJBcmcgfHwgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ3Vua25vd24gZmlsdGVyICVzJywgZmlsdGVyTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG4gIH07XG59XG4iXX0=
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWpvYi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Zhcy1saWIvc3JjL2xpYi9lbnRpdHkvdmFzLWpvYi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBcUI1RDs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsWUFBWTtJQUMzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQkc7SUFDSCxZQUNrQixFQUFVLEVBQ1YsT0FBZSxFQUNmLGFBQXFCLEVBQ3JCLFNBQWlCLEVBQ2pCLFFBQWdCLEVBQ2hCLGNBQXNCLEVBQ3RCLFVBQWtCLEVBQzNCLE9BQWUsRUFDZixXQUFtQixFQUNuQixTQUFpQixFQUNqQixPQUFlLEVBQ2YsU0FBaUIsRUFDakIsT0FBZSxFQUNmLFFBQWdCLEVBQ2hCLE1BQWMsRUFDZCxjQUFzQjtRQUU3QixLQUFLLENBQ0gsRUFBRSxFQUNGLE9BQU8sRUFDUCxhQUFhLEVBQ2IsU0FBUyxFQUNULFFBQVEsRUFDUixjQUFjLEVBQ2QsVUFBVSxDQUNYLENBQUM7UUF6QmMsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIs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QixFQUFFLFVBQVUsQ0FBQyxDQUFDO3FCQUMvQztpQkFDRjthQUNGO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDWixDQUFDO0lBQUEsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVVVJRCB9IGZyb20gJ2FuZ3VsYXIyLXV1aWQnO1xuaW1wb3J0IHsgVmFzSm9iRHRvIH0gZnJvbSAnLi92YXMtam9iLmR0byc7XG5pbXBvcnQgeyBWYXNCYXNlTW9kZWwgfSBmcm9tICcuL3Zhcy1iYXNlLm1vZGVsJztcbmltcG9ydCB7IFZhc0ZpZWxkRHRvVmFsdWUgfSBmcm9tICcuL3Zhcy1maWVsZC5kdG8nO1xuaW1wb3J0IHsgVmFzRm9ybU1vZGVsIH0gZnJvbSAnLi92YXMtZm9ybS5tb2RlbCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBnZXRWYWx1ZUJ5UGF0aCB9IGZyb20gJy4uL3V0aWxzL2dldC12YWx1ZS1ieS1wYXRoJztcbmltcG9ydCB7IFZhc0Jhc2VEdG8gfSBmcm9tICcuL3Zhcy1iYXNlLmR0byc7XG5cbmRlY2xhcmUgaW50ZXJmYWNlIFZhc0pvYk1vZGVsRHluYW1pY0ludGVyZmFjZSB7XG4gIFtzOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZVN5bnRheE9wdGlvbnMge1xuICAvLyBUaGlzIHZhbHVlIHdpbGwgYmUgdXNlZCB0byBhZGp1c3QgYW55IGRhdGV0aW1lIHZhbHVlcyB0aGF0IGFyZSByZWZlcmVuY2VkXG4gIC8vIGluIHRoZSBzeW50YXggc3RyaW5nLiBTZWVcbiAgLy8gaHR0cHM6Ly9tb21lbnRqc2NvbS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvbW9tZW50LzAzLW1hbmlwdWxhdGluZy8wOS11dGMtb2Zmc2V0L1xuICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgYG1vbWVudGAgd2lsbCBoYW5kbGUgdGhlIHZhbHVlLlxuICB0aW1lWm9uZU9mZnNldDogbnVtYmVyLFxuICAvLyB0aGlzIGRpY3Rpb25hcnkgY2FuIGJlIHBhc3NlZCBpbiB0byBjb250YWluIG90aGVyIG9iamVjdHMgdG8gYmUgcmVmZXJlbmNlZFxuICAvLyBpbiB0aGUgc3ludGF4LiBGb3IgZXhhbXBsZSBpZiB3ZSBoYXZlIHtqb2IuZm9vfSB0aGlzIHdpbGwgcmVmZXJlbmNlIHRoZVxuICAvLyBqb2IncyBgZm9vYCBwcm9wZXJ0eSwgaG93ZXZlciBpZiB3ZSBoYXZlIFwicmVwb3J0TGF5b3V0LnRpdGxlXCIgdGhpcyB3aWxsXG4gIC8vIGV4cGVjdCB0byBmaW5kIGEgcHJvcGVydHkgb2YgYG9iamVjdHNgIGNhbGxlZCBgcmVwb3J0TGF5b3V0YCB3aGljaCB3aWxsXG4gIC8vIGhhdmUgYSBwcm9wZXJ0eSBjYWxsZWQgYHRpdGxlYFxuICBvYmplY3RzPzogUmVjb3JkPHN0cmluZywgUGFydGlhbDxWYXNCYXNlRHRvPiB8IFJlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+Pjtcbn1cblxuLyoqXG4gKiBKb2JNb2RlbFxuICovXG5leHBvcnQgY2xhc3MgVmFzSm9iTW9kZWwgZXh0ZW5kcyBWYXNCYXNlTW9kZWwge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjcmVhdGVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXJ2ZXJDcmVhdGVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjcmVhdGVkQnlcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGlmaWVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXJ2ZXJNb2RpZmllZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kaWZpZWRCeVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWNjb3VudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWNjZXNzR3JvdXBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZmVyZW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gam9iRGF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gam9iU3RhdHVzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBqb2JUeXBlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhc3NpZ25lZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybUlkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lWm9uZU9mZnNldFxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG92ZXJyaWRlIGlkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIGNyZWF0ZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2VydmVyQ3JlYXRlZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVkQnk6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbW9kaWZpZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2VydmVyTW9kaWZpZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbW9kaWZpZWRCeTogc3RyaW5nLFxuICAgIHB1YmxpYyBhY2NvdW50OiBzdHJpbmcsXG4gICAgcHVibGljIGFjY2Vzc0dyb3VwOiBzdHJpbmcsXG4gICAgcHVibGljIHJlZmVyZW5jZTogc3RyaW5nLFxuICAgIHB1YmxpYyBqb2JEYXRlOiBzdHJpbmcsXG4gICAgcHVibGljIGpvYlN0YXR1czogc3RyaW5nLFxuICAgIHB1YmxpYyBqb2JUeXBlOiBzdHJpbmcsXG4gICAgcHVibGljIGFzc2lnbmVlOiBzdHJpbmcsXG4gICAgcHVibGljIGZvcm1JZDogc3RyaW5nLFxuICAgIHB1YmxpYyB0aW1lWm9uZU9mZnNldDogbnVtYmVyXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgaWQsXG4gICAgICBjcmVhdGVkLFxuICAgICAgc2VydmVyQ3JlYXRlZCxcbiAgICAgIGNyZWF0ZWRCeSxcbiAgICAgIG1vZGlmaWVkLFxuICAgICAgc2VydmVyTW9kaWZpZWQsXG4gICAgICBtb2RpZmllZEJ5XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoaXMgd2l0aCB0aGUgZHluYW1pYyBpbnRlcmZhY2VcbiAgICogQHJldHVybiB7VmFzSm9iTW9kZWxEeW5hbWljSW50ZXJmYWNlfVxuICAgKi9cbiAgZ2V0ICR0aGlzKCk6IFZhc0pvYk1vZGVsRHluYW1pY0ludGVyZmFjZSB7XG4gICAgcmV0dXJuIHRoaXMgYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIEpvYiBkeW5hbWljIHByb3BlcnRpZXMgaS5lLiB0aG9zZSB0aGF0IGFyZSBhZGRlZCBieSB0aGVcbiAgICogZHluYW1pYyBmb3Jtc1xuICAgKi9cbiAgZ2V0IGR5bmFtaWNQcm9wZXJ0aWVzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IG5hdGl2ZVByb3BzID0gdGhpcy5zdGF0aWNQcm9wZXJ0aWVzO1xuICAgIHJldHVybiBPYmplY3RcbiAgICAgIC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpXG4gICAgICAuZmlsdGVyKHByb3AgPT4gIW5hdGl2ZVByb3BzLmluY2x1ZGVzKHByb3ApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBKb2Igc3RhdGljIHByb3BlcnRpZXMgaS5lLiB0aG9zZSB0aGF0IGFyZSBkZWNsYXJlZCBieVxuICAgKiB0aGUgdHlwZVxuICAgKi9cbiAgZ2V0IHN0YXRpY1Byb3BlcnRpZXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFZhc0pvYk1vZGVsLmVtcHR5KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge1Zhc0pvYk1vZGVsfVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBlbXB0eSgpOiBWYXNKb2JNb2RlbCB7XG4gICAgcmV0dXJuIG5ldyBWYXNKb2JNb2RlbChcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgICBVVUlELlVVSUQoKSxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICBtb21lbnQoKS51dGNPZmZzZXQoKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtWYXNKb2JEdG99IGpvYkR0b1xuICAgKiBAcmV0dXJuIHtWYXNKb2JNb2RlbH1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUR0byhqb2JEdG86IFBhcnRpYWw8VmFzSm9iRHRvPik6IFZhc0pvYk1vZGVsIHtcbiAgICBjb25zdCBtb2RlbCA9IG5ldyBWYXNKb2JNb2RlbChcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgICBqb2JEdG8uaWQgfHwgVVVJRC5VVUlEKCksXG4gICAgICBqb2JEdG8uY3JlYXRlZCB8fCAnJyxcbiAgICAgIGpvYkR0by5zZXJ2ZXJDcmVhdGVkIHx8ICcnLFxuICAgICAgam9iRHRvLmNyZWF0ZWRCeSB8fCAnJyxcbiAgICAgIGpvYkR0by5tb2RpZmllZCB8fCAnJyxcbiAgICAgIGpvYkR0by5zZXJ2ZXJNb2RpZmllZCB8fCAnJyxcbiAgICAgIGpvYkR0by5tb2RpZmllZEJ5IHx8ICcnLFxuICAgICAgam9iRHRvLmFjY291bnQgfHwgJycsXG4gICAgICBqb2JEdG8uYWNjZXNzR3JvdXAgfHwgJycsXG4gICAgICBqb2JEdG8ucmVmZXJlbmNlIHx8ICcnLFxuICAgICAgam9iRHRvLmpvYkRhdGUgfHwgJycsXG4gICAgICBqb2JEdG8uam9iU3RhdHVzIHx8ICcnLFxuICAgICAgam9iRHRvLmpvYlR5cGUgfHwgJycsXG4gICAgICBqb2JEdG8uYXNzaWduZWUgfHwgJycsXG4gICAgICBqb2JEdG8uZm9ybUlkIHx8ICcnLFxuICAgICAgam9iRHRvLnRpbWVab25lT2Zmc2V0IHx8IG1vbWVudCgpLnV0Y09mZnNldCgpXG4gICAgKTtcbiAgICBjb25zdCBlbXB0eUtleXMgPSBtb2RlbC5zdGF0aWNQcm9wZXJ0aWVzO1xuICAgIE9iamVjdFxuICAgICAgLmtleXMoam9iRHRvKVxuICAgICAgLmZpbHRlcihrZXkgPT4gZW1wdHlLZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTEpXG4gICAgICAuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+XG4gICAgICAgIG1vZGVsLiR0aGlzW2tleV0gPSAoam9iRHRvIGFzIFZhc0pvYk1vZGVsRHluYW1pY0ludGVyZmFjZSlba2V5XVxuICAgICAgKTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtWYXNGb3JtTW9kZWx9IGZvcm1Nb2RlbFxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPn1cbiAgICovXG4gIGdldEZpZWxkcyhmb3JtTW9kZWw6IFZhc0Zvcm1Nb2RlbCk6IFJlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+IHtcbiAgICBjb25zdCBmaWVsZHM6IHtba2V5OiBzdHJpbmddOiBWYXNGaWVsZER0b1ZhbHVlfSA9IHt9O1xuICAgIGZvcm1Nb2RlbC5ncm91cHNcbiAgICAgIC5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgICAgZ3JvdXAuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgICAgICAoZmllbGRzKVtjb250cm9sLnJlcG9ydFRlbXBsYXRlTmFtZV0gPVxuICAgICAgICAgICAgdGhpcy5nZXRWYWx1ZUJ5UGF0aChbZ3JvdXAubmFtZSwgY29udHJvbC5uYW1lXSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIGZpZWxkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIHJldHVybiBhbiBvYmplY3Qgd2hvc2Uga2V5cyBhcmUgdGhlIG5hbWVzIG9mIGFsbCBmaWVsZHMgaW4gdGhlIGpvYiBidXRcbiAgICogd2l0aCB0aGUgXCJmaWVsZHMuXCIgcGFydCByZW1vdmVkLiBUaGlzIG1ldGhvZCBpcyBzaW1pbGFyIHRvIGBnZXRGaWVsZHNgXG4gICAqIGV4Y2VwdCB0aGF0IHRoaXMgbWV0aG9kIHdpbGwgb25seSByZXR1cm4gdmFsdWVzIHRoYXQgYXJlIHNldCB3aGVyZWFzXG4gICAqIGBnZXRGaWVsZHNgIHdpbGwgcmV0dXJuIGEgcHJvcGVydHkgcmVnYXJkbGVzcyAoYmVjYXVzZSBpdCB1c2VzIHRoZSBmb3JtIHRvXG4gICAqIGRyaXZlIHRoZSBsb2dpYylcbiAgICogQHJldHVybiB7UmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT59XG4gICAqL1xuICBnZXRGaWVsZHMyKCk6IFJlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+IHtcbiAgICBsZXQgZmllbGRzOiB7W2tleTogc3RyaW5nXTogVmFzRmllbGREdG9WYWx1ZX0gPSB7fTtcbiAgICB0aGlzLmR5bmFtaWNQcm9wZXJ0aWVzXG4gICAgICAuZm9yRWFjaCgoZ3JvdXBOYW1lKSA9PiB7XG4gICAgICAgIE9iamVjdFxuICAgICAgICAgIC5rZXlzKHRoaXMuJHRoaXNbZ3JvdXBOYW1lXSlcbiAgICAgICAgICAuZm9yRWFjaChjb250cm9sTmFtZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sTmFtZVNob3J0ID0gY29udHJvbE5hbWUucmVwbGFjZSgvZmllbGRzXFwuLywgJycpO1xuICAgICAgICAgICAgZmllbGRzW2NvbnRyb2xOYW1lU2hvcnRdID0gdGhpcy5nZXRWYWx1ZUJ5UGF0aChcbiAgICAgICAgICAgICAgW2dyb3VwTmFtZSwgY29udHJvbE5hbWVdXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgIH0sIHt9KVxuICAgIHJldHVybiBmaWVsZHM7XG4gIH1cblxuICAvKipcblxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoIHBhdGggc2VnbWVudHNcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIGdldFZhbHVlQnlQYXRoPFQgZXh0ZW5kcyBWYXNGaWVsZER0b1ZhbHVlPihcbiAgICBwYXRoOiBzdHJpbmdbXSA9IFtdXG4gICk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXRWYWx1ZUJ5UGF0aChwYXRoLCB0aGlzLiR0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHZlcnkgbm9uIHNvcGhpc3RpY2F0ZWQgd2F5IHRvIHNldCB2YWx1ZXMgaW4gdGhlIGpvYiB2aWEgcGF0aHNcbiAgICpcbiAgICogRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqIHNldFZhbHVlQnlQYXRoKCd2YWx1ZScsIFsnZm9vJywgJ2JhciddKTtcbiAgICpcbiAgICogd2lsbCBtYWtlIHJlc3VsdHMgaW4gam9iXG4gICAqIHtcbiAgICogICBmb286IHtcbiAgICogICAgIGJhcjogJ3ZhbHVlJ1xuICAgKiAgIH1cbiAgICogfVxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsdWUgdGhlIHZhbHVlIHRvIHNldFxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoIHBhdGggc2VnbWVudHNcbiAgICovXG4gIHNldFZhbHVlQnlQYXRoKHZhbHVlOiBWYXNGaWVsZER0b1ZhbHVlLCBwYXRoOiBzdHJpbmdbXSA9IFtdKTogdm9pZCB7XG4gICAgc3dpdGNoIChwYXRoLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOiB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgMToge1xuICAgICAgICAodGhpcyBhcyBhbnkpW3BhdGhbMF1dID0gdmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAodGhpcy4kdGhpc1twYXRoWzBdXSBhcyBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPilbcGF0aFsxXV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAzOiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICgodGhpcy4kdGhpc1twYXRoWzBdXSBhcyBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPilbcGF0aFsxXV0gYXMgUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT4pW3BhdGhbMl1dID0gdmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ3BhdGggaGFzIHRvbyBtYW55IHNlZ21lbnRzJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhdGljT25seSBpZiB0cnVlLCB3aWxsIG9ubHkgb3V0cHV0IHZhbHVlcyBmb3IgdGhlIHN0YXRpY1xuICAgKiBwcm9wZXJ0aWVzIGluIHRoZSBkdG9cbiAgICogQHJldHVybiB7VmFzSm9iRHRvfVxuICAgKi9cbiAgcHVibGljIHRvRHRvKHN0YXRpY09ubHkgPSBmYWxzZSk6IFZhc0pvYkR0byB7XG5cbiAgICBpZiAoc3RhdGljT25seSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgIGNyZWF0ZWQ6IHRoaXMuY3JlYXRlZCxcbiAgICAgICAgY3JlYXRlZEJ5OiB0aGlzLmNyZWF0ZWRCeSxcbiAgICAgICAgbW9kaWZpZWQ6IHRoaXMubW9kaWZpZWQsXG4gICAgICAgIG1vZGlmaWVkQnk6IHRoaXMubW9kaWZpZWRCeSxcbiAgICAgICAgc2VydmVyQ3JlYXRlZDogdGhpcy5zZXJ2ZXJDcmVhdGVkLFxuICAgICAgICBzZXJ2ZXJNb2RpZmllZDogdGhpcy5zZXJ2ZXJNb2RpZmllZCxcbiAgICAgICAgYWNjb3VudDogdGhpcy5hY2NvdW50LFxuICAgICAgICBhY2Nlc3NHcm91cDogdGhpcy5hY2Nlc3NHcm91cCxcbiAgICAgICAgcmVmZXJlbmNlOiB0aGlzLnJlZmVyZW5jZSxcbiAgICAgICAgam9iRGF0ZTogdGhpcy5qb2JEYXRlLFxuICAgICAgICBqb2JTdGF0dXM6IHRoaXMuam9iU3RhdHVzLFxuICAgICAgICBqb2JUeXBlOiB0aGlzLmpvYlR5cGUsXG4gICAgICAgIGFzc2lnbmVlOiB0aGlzLmFzc2lnbmVlLFxuICAgICAgICBmb3JtSWQ6IHRoaXMuZm9ybUlkLFxuICAgICAgICB0aW1lWm9uZU9mZnNldDogdGhpcy50aW1lWm9uZU9mZnNldCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZHRvID0ge30gYXMgVmFzSm9iTW9kZWxEeW5hbWljSW50ZXJmYWNlO1xuICAgIFsuLi50aGlzLnN0YXRpY1Byb3BlcnRpZXMsIC4uLnRoaXMuZHluYW1pY1Byb3BlcnRpZXNdXG4gICAgICAuZm9yRWFjaChwcm9wID0+XG4gICAgICAgIChkdG8pW3Byb3BdID0gdGhpcy4kdGhpc1twcm9wXSk7XG5cbiAgICByZXR1cm4gZHRvIGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIHBhcnNlIGEgc3ludGF4IHRoYXQgYWxsb3dzIHVzIHRvIGJ1aWxkIHN0cmluZ3MgZnJvbSB0aGVcbiAgICogdmFsdWVzIG9mIGZyb20gdGhlIGpvYiBtb2RlbC4gRm9yIGV4YW1wbGUgaWYgdGhlIGpvYiBtb2RlbCB3YXM6XG4gICAqXG4gICAqIHtcbiAgICogICBmb286ICdiYXInXG4gICAqIH1cbiAgICpcbiAgICogYW5kIHdlIHBhc3MgXCJpIGFtIGZvbyB7Zm9vfVwiLCB0aGUgcmVzdWx0IHdvdWxkIGJlOlxuICAgKlxuICAgKiBcImkgYW0gZm9vIGJhclwiXG4gICAqXG4gICAqIHdlIGNhbiBhbHNvIHVzZSBtb21lbnQgdG8gcGFyc2UgZGF0ZXMsIGZvciBleGFtcGxlIGlmIHRoZSBqb2IgbW9kZWwgd2FzOlxuICAgKlxuICAgKiB7XG4gICAqICAgY3JlYXRlZDogXCIyMDIyLTAxLTAxVDAwOjAwOjAwKzAwMDBcIlxuICAgKiB9XG4gICAqXG4gICAqIGFuZCB3ZSBwYXNzIFwie2NyZWF0ZWR8ZGF0ZTpZWS1NTS1ERH1cIiwgdGhlIHJlc3VsdCB3b3VsZCBiZTpcbiAgICpcbiAgICogXCIyMDIyLTAxLTAxXCJcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIGEgc3RyaW5nIHdpdGggdGhlIHN5bnRheFxuICAgKiBAcGFyYW0ge1BhcnNlU3ludGF4T3B0aW9uc30gb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSByZXN1bHRzIG9mIHBhcnNpbmcgdGhlIHN5bnRheCBvbiB0aGlzIGpvYlxuICAgKi9cbiAgcGFyc2VTeW50YXgoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiBQYXJzZVN5bnRheE9wdGlvbnMgPSB7XG4gICAgICB0aW1lWm9uZU9mZnNldDogMFxuICAgIH1cbiAgKTogc3RyaW5nIHtcblxuICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvKHtbXn1dKn0pL2csIChtYXRjaDogc3RyaW5nLCB0b2tlbjogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzeW50YXggPSB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4ubGVuZ3RoIC0gMSk7XG5cbiAgICAgIGxldCBba2V5LCBmaWx0ZXJdID0gc3ludGF4LnNwbGl0KCd8Jyk7XG4gICAgICBrZXkgPSAoa2V5IHx8ICcnKS50cmltKCk7XG4gICAgICBmaWx0ZXIgPSAoZmlsdGVyIHx8ICcnKS50cmltKClcblxuICAgICAgbGV0IGZpbHRlck5hbWUsIGZpbHRlckFyZzogc3RyaW5nID0gJyc7XG4gICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgIGNvbnN0IHNwbGl0SW5kZXggPSBmaWx0ZXIuaW5kZXhPZignOicpO1xuICAgICAgICBpZiAoc3BsaXRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBmaWx0ZXJOYW1lID0gZmlsdGVyLnN1YnN0cmluZygwLCBzcGxpdEluZGV4KTtcbiAgICAgICAgICBmaWx0ZXJBcmcgPSBmaWx0ZXIuc3Vic3RyaW5nKHNwbGl0SW5kZXggKyAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWx0ZXJOYW1lID0gZmlsdGVyO1xuICAgICAgICAgIGZpbHRlckFyZyA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGZpbHRlck5hbWUgPSAoZmlsdGVyTmFtZSB8fCAnJykudHJpbSgpO1xuICAgICAgICBmaWx0ZXJBcmcgPSAoZmlsdGVyQXJnIHx8ICcnKS50cmltKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXRoID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgICBjb25zdCBvYmplY3RLZXkgPSBwYXRoLnNoaWZ0KCkgfHwgJyc7XG4gICAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgICBpZiAob2JqZWN0S2V5ID09PSAnam9iJykge1xuICAgICAgICByZXN1bHQgPSAodGhpcy5nZXRWYWx1ZUJ5UGF0aChwYXRoKSB8fCAnJykudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSBpZiAob2JqZWN0S2V5ID09PSAnZmllbGRzJykge1xuICAgICAgICByZXN1bHQgPSAoZ2V0VmFsdWVCeVBhdGgocGF0aCwgdGhpcy5nZXRGaWVsZHMyKCkpIHx8ICcnKS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChvYmplY3RLZXkubGVuZ3RoKSB7XG4gICAgICAgIGlmIChvcHRpb25zLm9iamVjdHMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5vYmplY3RzW29iamVjdEtleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhcbiAgICAgICAgICAgICAgYG9iamVjdEtleSAke29iamVjdEtleX0gaXMgbm90IHByZXNlbnQgaW4gb3B0aW9ucy5vYmplY3RgXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmVzdWx0ID0gJyc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IChnZXRWYWx1ZUJ5UGF0aChwYXRoLCBvcHRpb25zLm9iamVjdHNbb2JqZWN0S2V5XSkgfHwgJycpXG4gICAgICAgICAgICAgIC50b1N0cmluZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKFxuICAgICAgICAgICAgYG9iamVjdEtleSAke29iamVjdEtleX0gd2FzIHVzZWQgYnV0IG9wdGlvbnMub2JqZWN0IGlzIG5vdCBzZXRgXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuXG4gICAgICBpZiAoZmlsdGVyTmFtZSAmJiByZXN1bHQpIHtcbiAgICAgICAgc3dpdGNoIChmaWx0ZXJOYW1lKSB7XG4gICAgICAgICAgY2FzZSAnZGF0ZSc6IHtcbiAgICAgICAgICAgIHJldHVybiBtb21lbnQocmVzdWx0KVxuICAgICAgICAgICAgICAudXRjT2Zmc2V0KG9wdGlvbnMudGltZVpvbmVPZmZzZXQpXG4gICAgICAgICAgICAgIC5mb3JtYXQoZmlsdGVyQXJnIHx8ICcnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCd1bmtub3duIGZpbHRlciAlcycsIGZpbHRlck5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pLnRyaW0oKTtcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { VasAccountObjectModel } from './vas-account-object.model';
2
+ export class VasRestrictedAccountObjectModel extends VasAccountObjectModel {
3
+ constructor(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, account, accessGroup) {
4
+ super(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, account);
5
+ this.id = id;
6
+ this.created = created;
7
+ this.serverCreated = serverCreated;
8
+ this.createdBy = createdBy;
9
+ this.modified = modified;
10
+ this.serverModified = serverModified;
11
+ this.modifiedBy = modifiedBy;
12
+ this.account = account;
13
+ this.accessGroup = accessGroup;
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLXJlc3RyaWN0ZWQtYWNjb3VudC1vYmplY3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YXMtbGliL3NyYy9saWIvZW50aXR5L3Zhcy1yZXN0cmljdGVkLWFjY291bnQtb2JqZWN0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5FLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxxQkFBcUI7SUFDeEUsWUFDa0IsRUFBVSxFQUNWLE9BQWUsRUFDZixhQUFxQixFQUNyQixTQUFpQixFQUNqQixRQUFnQixFQUNoQixjQUFzQixFQUN0QixVQUFrQixFQUNsQixPQUFlLEVBQ3hCLFdBQW1CO1FBRTFCLEtBQUssQ0FDSCxFQUFFLEVBQ0YsT0FBTyxFQUNQLGFBQWEsRUFDYixTQUFTLEVBQ1QsUUFBUSxFQUNSLGNBQWMsRUFDZCxVQUFVLEVBQ1YsT0FBTyxDQUNSLENBQUM7UUFuQmMsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO0lBWTVCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhc0FjY291bnRPYmplY3RNb2RlbCB9IGZyb20gJy4vdmFzLWFjY291bnQtb2JqZWN0Lm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFZhc1Jlc3RyaWN0ZWRBY2NvdW50T2JqZWN0TW9kZWwgZXh0ZW5kcyBWYXNBY2NvdW50T2JqZWN0TW9kZWwge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgb3ZlcnJpZGUgaWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY3JlYXRlZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXJ2ZXJDcmVhdGVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIGNyZWF0ZWRCeTogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBtb2RpZmllZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXJ2ZXJNb2RpZmllZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBtb2RpZmllZEJ5OiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIGFjY291bnQ6IHN0cmluZyxcbiAgICBwdWJsaWMgYWNjZXNzR3JvdXA6IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGlkLFxuICAgICAgY3JlYXRlZCxcbiAgICAgIHNlcnZlckNyZWF0ZWQsXG4gICAgICBjcmVhdGVkQnksXG4gICAgICBtb2RpZmllZCxcbiAgICAgIHNlcnZlck1vZGlmaWVkLFxuICAgICAgbW9kaWZpZWRCeSxcbiAgICAgIGFjY291bnRcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,64 @@
1
+ /**
2
+ * A non sophisticated way to get values from the job via paths. For example:
3
+ *
4
+ * getValueByPath(
5
+ * ['foo', 'bar'],
6
+ * {
7
+ * foo: {
8
+ * bar: 'value'
9
+ * }
10
+ * }
11
+ * );
12
+ *
13
+ * will return "value"
14
+ * @param {string[]} path
15
+ * @param {Record<string, VasFieldDtoValue>} object
16
+ * @return {T | undefined}
17
+ */
18
+ export const getValueByPath = (path, object) => {
19
+ switch (path.length) {
20
+ case 0: {
21
+ return;
22
+ }
23
+ case 1: {
24
+ return (object)[path[0]];
25
+ }
26
+ case 2: {
27
+ const val0 = object[path[0]];
28
+ if (!val0) {
29
+ return undefined;
30
+ }
31
+ return val0[path[1]];
32
+ }
33
+ case 3: {
34
+ const val0 = object[path[0]];
35
+ if (!val0) {
36
+ return undefined;
37
+ }
38
+ const val1 = val0[path[1]];
39
+ if (!val1) {
40
+ return undefined;
41
+ }
42
+ return val1[path[2]];
43
+ }
44
+ case 4: {
45
+ const val0 = object[path[0]];
46
+ if (!val0) {
47
+ return undefined;
48
+ }
49
+ const val1 = val0[path[1]];
50
+ if (!val1) {
51
+ return undefined;
52
+ }
53
+ const val2 = val1[path[2]];
54
+ if (!val2) {
55
+ return undefined;
56
+ }
57
+ return val2[path[3]];
58
+ }
59
+ default: {
60
+ throw Error('path has too many segments');
61
+ }
62
+ }
63
+ };
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXZhbHVlLWJ5LXBhdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YXMtbGliL3NyYy9saWIvdXRpbHMvZ2V0LXZhbHVlLWJ5LXBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FDNUIsSUFBYyxFQUNkLE1BQTJFLEVBQzVELEVBQUU7SUFDakIsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ25CLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDTixPQUFPO1NBQ1I7UUFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ04sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBTSxDQUFDO1NBQy9CO1FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNOLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUM7WUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBTSxDQUFDO1NBQzNCO1FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNOLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUM7WUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUM7WUFDckQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBTSxDQUFDO1NBQzNCO1FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNOLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUM7WUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUM7WUFDckQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUM7WUFDckQsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBTSxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxDQUFDLENBQUM7WUFDUCxNQUFNLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1NBQzNDO0tBQ0Y7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYXNGaWVsZER0b1ZhbHVlIH0gZnJvbSAnLi4vZW50aXR5L3Zhcy1maWVsZC5kdG8nO1xuXG4vKipcbiAqIEEgbm9uIHNvcGhpc3RpY2F0ZWQgd2F5IHRvIGdldCB2YWx1ZXMgZnJvbSB0aGUgam9iIHZpYSBwYXRocy4gRm9yIGV4YW1wbGU6XG4gKlxuICogZ2V0VmFsdWVCeVBhdGgoXG4gKiAgWydmb28nLCAnYmFyJ10sXG4gKiAge1xuICogICBmb286IHtcbiAqICAgICBiYXI6ICd2YWx1ZSdcbiAqICAgfVxuICogIH1cbiAqICk7XG4gKlxuICogd2lsbCByZXR1cm4gXCJ2YWx1ZVwiXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRoXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+fSBvYmplY3RcbiAqIEByZXR1cm4ge1QgfCB1bmRlZmluZWR9XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWYWx1ZUJ5UGF0aCA9IDxUIGV4dGVuZHMgVmFzRmllbGREdG9WYWx1ZT4oXG4gIHBhdGg6IHN0cmluZ1tdLFxuICBvYmplY3Q6IFJlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWUgfCBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPj5cbik6IFQgfCB1bmRlZmluZWQgPT4ge1xuICBzd2l0Y2ggKHBhdGgubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNhc2UgMToge1xuICAgICAgcmV0dXJuIChvYmplY3QpW3BhdGhbMF1dIGFzIFQ7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgY29uc3QgdmFsMCA9IG9iamVjdFtwYXRoWzBdXSBhcyBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+O1xuICAgICAgaWYgKCF2YWwwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsMFtwYXRoWzFdXSBhcyBUO1xuICAgIH1cbiAgICBjYXNlIDM6IHtcbiAgICAgIGNvbnN0IHZhbDAgPSBvYmplY3RbcGF0aFswXV0gYXMgUmVjb3JkPHN0cmluZywgb2JqZWN0PjtcbiAgICAgIGlmICghdmFsMCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsMSA9IHZhbDBbcGF0aFsxXV0gYXMgUmVjb3JkPHN0cmluZywgb2JqZWN0PjtcbiAgICAgIGlmICghdmFsMSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbDFbcGF0aFsyXV0gYXMgVDtcbiAgICB9XG4gICAgY2FzZSA0OiB7XG4gICAgICBjb25zdCB2YWwwID0gb2JqZWN0W3BhdGhbMF1dIGFzIFJlY29yZDxzdHJpbmcsIG9iamVjdD47XG4gICAgICBpZiAoIXZhbDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbDEgPSB2YWwwW3BhdGhbMV1dIGFzIFJlY29yZDxzdHJpbmcsIG9iamVjdD47XG4gICAgICBpZiAoIXZhbDEpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbDIgPSB2YWwxW3BhdGhbMl1dIGFzIFJlY29yZDxzdHJpbmcsIG9iamVjdD47XG4gICAgICBpZiAoIXZhbDIpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWwyW3BhdGhbM11dIGFzIFQ7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHRocm93IEVycm9yKCdwYXRoIGhhcyB0b28gbWFueSBzZWdtZW50cycpO1xuICAgIH1cbiAgfVxufVxuIl19